【发布时间】:2013-12-04 15:52:15
【问题描述】:
我刚刚更新到 Rails 4.0.2,收到了弃用警告:
[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.
为了摆脱警告,我决定设置:
I18n.config.enforce_available_locales = true
在我的 config/application.rb 文件中。
它在开发中运行得很好,所有测试都通过了,我很高兴......然后我将我的工作部署在一个临时服务器中,它崩溃了!
Devise 正在寻找语言环境 :pt。我只有一个语言环境:pt-BR。我在我的 application.rb 中设置它:
config.i18n.default_locale = 'pt-BR'
我不知道为什么设计只寻找 :pt。我在 config 文件夹中的语言环境是:pt-BR.yml 和 devise.pt-BR.yml。
我尝试将文件名从 devise.pt-BR.yml 更改为 devise.pt.yml (内部从 pt-BR 更改为 pt)并且它工作。
我不得不回去设置:
I18n.config.enforce_available_locales = false
让它工作。
我有两个问题:
1 - 为什么在测试和开发中没有发生这种情况?
2 - 如果我在配置中将默认语言环境设置为 :pt-BR,为什么 Devise 要求输入 :pt?
提前致谢
【问题讨论】:
-
您是同时使用 devise-i18n 还是仅仅使用 devise?可能是设计正在寻找未在您的语言环境文件中定义的字符串,因此从 pt-BR 回退到 pt,从而触发了错误。 devise-i18n 包含 pt-BR,因此假设它已完成,将其添加到您的 Gemfile 将避免此问题。
-
效果很好!我添加了宝石,它起作用了。谢谢!但我仍然不知道为什么它没有出现在开发模式中......有什么想法吗?
-
刚刚发布了我的想法作为答案,以及我之前评论的内容。
标签: ruby-on-rails devise internationalization locale deprecated