gpt4 book ai didi

ruby-on-rails - Rails i18n : Can I turn off "translation missing" errors?

转载 作者:行者123 更新时间:2023-12-04 00:57:38 27 4
gpt4 key购买 nike

我有一个 Multi-Tenancy 应用程序,我正在尝试使用 i18n gem 来允许我们的每个客户根据自己的喜好自定义系统、更改各个页面上的文本、自定义电子邮件等。诚然,我没有使用 i18n,因为我实际上并没有翻译不同的“语言”,所有内容都是英文的,但如果有道理的话,每个客户都有不同的英文。

尽管如此,我还是在 i18n gem 中遇到了我认为非常糟糕的设计决策:如果翻译不存在,而不是简单地不进行翻译并打印出正常情况下的任何内容,它会引发错误。例如,

<%= distance_of_time_in_words_to_now @press_release.submitted_at %>

出来作为
translation missing: en, datetime, distance_in_words, x_days

我的意思是,来吧!我什至不想翻译。

我知道发生这种情况的原因是因为我没有加载默认翻译,但我使用 ActiveRecord 作为后端,我想保持它干净。 “解决方案”是将所有 yaml 翻译文件导入我的数据库翻译存储,但这似乎不是一个好主意。如果我将来升级 rails 会怎样?我将不得不担心让所有这些翻译保持同步。

同样,我无法理解为什么这是默认行为。 ANYBODY 什么时候希望出现那个时髦的错误消息,而不是只使用默认的“3 天前”?

无论如何,我的问题是,如果翻译不存在,有没有办法让它自动关闭翻译并使用未翻译的消息?谢谢!

最佳答案

这似乎可以解决问题。

require 'i18n' # without this, the gem will be loaded in the server but not in the console, for whatever reason

# store translations in the database's translations table
I18n.backend = I18n::Backend::ActiveRecord.new

# for translations that don't exist in the database, fallback to the Simple Backend which loads the default English Rails YAML files
I18nSimpleBackend = I18n::Backend::Simple.new
I18n.exception_handler = lambda do |exception, locale, key, options|
case exception
when I18n::MissingTranslationData
I18nSimpleBackend.translate(:en, key, options || {})
else
raise exception
end
end

关于ruby-on-rails - Rails i18n : Can I turn off "translation missing" errors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3061504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com