设计在Rails 4.0.2上寻找错误的语言环境

时间:2013-12-04 15:52:16

标签: ruby-on-rails devise internationalization locale deprecated

我刚刚更新到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

提前致谢

1 个答案:

答案 0 :(得分:1)

将devise-i18n添加到您的Gemfile以获取Devise字符串的pt-BR语言环境文件。这解决了生产问题。

至于为什么你没有在开发中看到这个问题,可能是因为你没有触发特定的I18n.t查找 - 你需要缩小范围。一些Devise字符串触发了这个,我怀疑它不会导致错误,直到该字符串被查找。您需要缩小导致问题的确切操作集。如果它在启动时失败,可能会有一些生产急切加载,从而触发问题。