【发布时间】: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_locale。 guides.rubyonrails.org/… -
谢谢,但我认为这不能解决我的问题,因为即使我尝试设置语言环境,它也不会从
:en改变。 -
我认为真正深入了解这一点的唯一方法是创建一个重现行为的最小示例。您一切顺利,但我们需要知道 rails 版本以及重现它的确切步骤。我无法在 6.0.1 上重现此内容。
-
@max 我找到了一个解决方案(见下文),但无论如何都将您的建议纳入我的代码中。