动态添加到I18N的翻译

我添加了人工资金访问器,如下所述: 在Ruby on Rails表单中输入数字时的小数和逗号

现在,我的模型中有两个属性用于相同类型的数据:原始版本和人类可读版本。 问题:由于我使用的是activerecord-translation-yml-files,我必须为原始属性和humanized_attribute添加相同的翻译,因为我的表单显示了humanized_attribute的名称,但是在validation错误时,原始名称属性显示。

是否可以动态添加翻译? 这样我可以在调用humanized_accessor-class-method时为字段的人性化版本添加翻译,从yml文件中获取原始翻译字符串,而不是将它们(具有相同的值)写入yml -file,只是为了让DRY更多。

您可能想要查看globalize3 gem。 你有railscast教程http://railscasts.com/episodes/338-globalize3?view=asciicast 。

这取决于I18n gem的内部API没有改变,但可以使用I18n.backend.store_translations

这个人为的例子表明:

 I18n.with_locale(:fake_locale) { I18n.t('some_word') } => "translation missing: fake_locale.some_word" I18n.backend.store_translations(:fake_locale, some_word: 'fake translation') I18n.with_locale(:fake_locale) { I18n.t('some_word') } => "fake translation" 

重要提示:这只在内存中完成。 在重新部署/重新启动服务器时,必须使用某种持久性或重新生成机制来防止这些机制消失。