【问题标题】:Devise looking for wrong locale on Rails 4.0.2设计在 Rails 4.0.2 上寻找错误的语言环境
【发布时间】: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.ymldevise.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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多