0

我添加了人性化货币访问器,如下所述:Decimals and commas when enter a number into a Ruby on Rails form

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

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

4

2 回答 2

3

这取决于I18ngem 的内部 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"

重要提示:这仅在内存中完成。当您重新部署/重新启动服务器时,需要一些持久性或重新生成机制来防止这些消失。

于 2018-03-21T02:34:42.223 回答
2

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

于 2013-06-12T18:45:17.693 回答