【问题标题】:Rails adding translations to a running rails environmentRails 将翻译添加到正在运行的 rails 环境
【发布时间】:2017-03-09 20:34:08
【问题描述】:

有没有办法通过 Rails 控制台手动注入翻译?

假设我在开发环境中工作,并且我想在生产控制台中测试一些代码(例如,测试一些真实数据的统计数据)。问题是,我要测试的代码依赖于新的翻译在生产环境中存在(或已更改)。

所以我的代码返回了很多translation_missing

我可以注入缺少的翻译吗?通过哈希或 YML 文件?

I18n.load_translations(hash_or_file) 

【问题讨论】:

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


    【解决方案1】:

    通常,服务于 http 请求的应用程序实例(例如在 Unicorn/Puma 下运行)不能通过 Rails 控制台使用。当有人登录生产服务器并输入$RAILS_ENV=production rails c 时,它会启动另一个应用程序进程。翻译字典是一种内存缓存,通常不可能为/从另一个进程更改该缓存(通常)。您只能为由 Rails 控制台启动的应用程序实例重新加载翻译,而不能为正在运行的服务器重新加载翻译。

    热重载翻译的唯一一种方法是在应用程序的源代码中添加一种钩子以重新读取 YAML 文件,但最好重启应用程序服务器。

    更新:出于测试目的,I18n 缓存可以修改如下:

    I18n.backend.send(:translations)[:en][:date][:formats][:default] = "%Y-%Z"
    

    【讨论】:

    • 谢谢,我不是在谈论正在运行的服务器上的实时修改,而是真正在 Rails 控制台中。您的更新行涵盖了它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多