我刚刚更新到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 ?
提前致谢
答案 0 :(得分:1)
将devise-i18n添加到您的Gemfile以获取Devise字符串的pt-BR语言环境文件。这解决了生产问题。
至于为什么你没有在开发中看到这个问题,可能是因为你没有触发特定的I18n.t查找 - 你需要缩小范围。一些Devise字符串触发了这个,我怀疑它不会导致错误,直到该字符串被查找。您需要缩小导致问题的确切操作集。如果它在启动时失败,可能会有一些生产急切加载,从而触发问题。