【发布时间】:2014-01-07 16:24:00
【问题描述】:
我们经常在我们的应用程序中偶然发现未翻译的模型属性。他们最常出现是因为属性被重命名或类似的东西。
当Model.human_attribute_name :field 找不到翻译时,让 I18n 引发错误真的很有帮助。有没有办法做到这一点?
更新:
似乎还有其他问题。这是我的 I18n 设置:
I18n.enforce_available_locales = false
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
config.i18n.default_locale = 'de-CH'
config.i18n.available_locales = ['de', 'de-CH', 'en']
config.i18n.locale = 'de-CH'
config.i18n.fallbacks = {'de-CH' => 'de', 'en-GB' => 'en'}
我无法设置fallbacks = false,因为我希望缺少de-CH 的翻译以优雅地委托给de,这通常看起来工作正常。但是对于我的state machine 属性human_to_state 方法,它似乎不起作用。这是导致问题的视图代码:
= f.input :state_event, collection: f.object.state_transitions,
label_method: :human_to_name # This causes the problem!
这在视图中打印为“状态事件”,当我添加以下 I18n 键时,它已成功转换为“状态”:
de: 类: 属性: 活动: state_event: 状态
所以确实有翻译缺失,但 I18n 并没有以任何方式抱怨。我还尝试使用自定义异常处理程序捕获异常,但这似乎没有引发:
I18n.exception_handler = lambda do |exception, locale, key, options|
binding.pry # This is never reached!
end
知道发生了什么吗?是状态机的问题吗?
【问题讨论】:
-
rails 中未按预期描述异常行为的问题:github.com/rails/rails/issues/6489
标签: ruby-on-rails state-machine rails-i18n