我添加了人工资金访问者,如下所述:Decimals and commas when entering a number into a Ruby on Rails form
现在我的模型中有两个属性用于相同类型的数据:原始版本和人类可读版本。问题:由于我使用的是activerecord-translation-yml-files,我必须为原始属性和humanized_attribute添加相同的翻译,因为我的表单显示了humanized_attribute的名称,但是在验证错误时,原始名称属性显示。
是否可以动态添加翻译?这样我可以在调用humanized_accessor-class-method时为字段的人性化版本添加翻译,从yml文件中获取原始翻译字符串,而不是将它们(具有相同的值)写入yml -file,只是为了让DRY更多。
答案 0 :(得分:1)
您可能想查看globalize3 gem。你有railscast教程http://railscasts.com/episodes/338-globalize3?view=asciicast。
答案 1 :(得分:0)
这取决于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"
重要提示:这只在内存中完成。当您重新部署/重新启动服务器时,需要一些持久性或重新生成机制来防止它们消失。