【问题标题】:How can I add keys to I18n for tests?如何将密钥添加到 I18n 进行测试?
【发布时间】:2015-08-27 16:00:24
【问题描述】:

我正在开发 Rails 应用程序中的一项功能,该功能取决于特定于语言环境的信息。在测试中,我想表明某些行为取决于语言环境包含的内容。

如何动态添加或编辑供I18n.t 在测试中使用的翻译?

【问题讨论】:

    标签: ruby-on-rails ruby rails-i18n i18n-gem


    【解决方案1】:

    I18n.backend.store_translations

    # 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
    

    最后,请注意,如果您为测试进行这样的全局更改,您可能希望在测试后将其更改回清理,以免影响其他测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 2017-04-01
      • 2019-07-07
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      相关资源
      最近更新 更多