【问题标题】:Cannot change locale in Rails无法在 Rails 中更改语言环境
【发布时间】:2021-05-06 19:59:09
【问题描述】:

由于某种原因,无法在我的应用中更改语言环境。我已经创建了config/locales/el.yml 并在application.rb 中设置了如下配置:

    config.i18n.default_locale = :en
    config.i18n.available_locales = [:en, :el, :zh]

如果我尝试在 Rails 控制台中更改语言环境,它不会改变。

[1] pry(main)> I18n.locale = :el
:el
[2] pry(main)> I18n.locale
:en

即使指定了另一个语言环境并且密钥存在于已翻译文件中,例如,翻译始终默认为英语

[3] pry(main)> I18n.t("hello", :el)
"Hello world"

en.yml:

en:
  hello: Hello world

el.yml:

el:
  hello: Hello Greek world

任何想法可能是什么问题?

【问题讨论】:

  • 不要使用I18n.locale = 更改语言环境。它不是线程安全的,可能会泄漏到后续请求中。而是使用I18n.with_localeguides.rubyonrails.org/…
  • 谢谢,但我认为这不能解决我的问题,因为即使我尝试设置语言环境,它也不会从 :en 改变。
  • 我认为真正深入了解这一点的唯一方法是创建一个重现行为的最小示例。您一切顺利,但我们需要知道 rails 版本以及重现它的确切步骤。我无法在 6.0.1 上重现此内容。
  • @max 我找到了一个解决方案(见下文),但无论如何都将您的建议纳入我的代码中。

标签: ruby-on-rails rails-i18n


【解决方案1】:

问题是我正在处理遗留代码,并且有一堆已经过时的剩余宝石——比如清理冰箱——我把它们从我的Gemfile 中扔掉了,现在它可以工作了!我丢弃的宝石是:

  • gettext_i18n_rails
  • 获取文本
  • i15r
  • i18n 任务
  • i18n-js

说实话,也许我只是不知道如何使用它们,但无论如何我不需要它们——所以现在它们已经消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多