我正在开发 Rails 应用程序中的一项功能,该功能取决于特定于语言环境的信息。在测试中,我想表明某些行为取决于语言环境包含的内容。
如何动态添加或编辑要I18n.t
在测试中使用的翻译?
我正在开发 Rails 应用程序中的一项功能,该功能取决于特定于语言环境的信息。在测试中,我想表明某些行为取决于语言环境包含的内容。
如何动态添加或编辑要I18n.t
在测试中使用的翻译?
# Will add a key or overwrite the existing value
I18n.backend.store_translations("en", {cat: "cat"})
I18n.backend.store_translations("es", {cat: "gato"})
I18n.t(:cat, locale: "en") # => "cat"
I18n.t(:cat, locale: "es") # => "gato"
请注意,您不能以这种方式为任意语言环境添加键;你会得到I18n::InvalidLocale
。要确定可用的语言环境,您可以使用:
existing_locales = I18n.config.available_locales
new_locales = existing_locales + Set.new(["es", :es])
I18n.config.available_locales = new_locales
最后,请注意,如果您为测试进行这样的全局更改,您可能希望在测试后将其更改回清理,以便其他测试不受影响。