1

有没有办法通过Rails控制台手动插入翻译?将翻译添加到运行的rails环境

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

所以我的代码返回了不少translation_missing

我可以注入缺少的翻译?通过散列或YML文件?

服务于HTTP请求(例如下独角兽/彪马运行)
I18n.load_translations(hash_or_file) 

回答

1

通常应用程序实例无法通过Rails的控制台可用。当某人登录到生产服务器并键入$RAILS_ENV=production rails c时,它会启动另一个应用程序进程。翻译字典是一种内存中缓存,通常不可能为另一个进程更改缓存(一般来说)。您只能为由Rails控制台启动的应用程序实例重新加载翻译,但不能用于运行服务器。

热重载翻译只有一种方法是在应用程序的源代码中添加一种钩子来重新读取YAML文件,但似乎更好的是重新启动应用程序服务器。

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

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

谢谢,我不是在谈论正在运行的服务器上实时更改,但真正的铁轨控制台中。你的更新行覆盖了它。 –