Ruby on rails 向I18N动态添加翻译

Ruby on rails 向I18N动态添加翻译,ruby-on-rails,internationalization,ruby-on-rails-3.2,rails-i18n,Ruby On Rails,Internationalization,Ruby On Rails 3.2,Rails I18n,我添加了人性化的货币存取器,如下所述: 现在,对于相同类型的数据,我的模型中有两个属性:原始版本和人类可读版本。问题是:由于我使用的是activerecord translation yml文件,我必须为原始属性和人性化的_属性输入相同的翻译,因为我的表单显示了人性化的_属性的名称,但在验证错误时,会显示原始属性的名称 是否可以动态添加翻译?通过这种方式,我可以在调用人性化的\u accessor-class-method时为字段的人性化版本添加翻译,从yml文件中获取原始翻译字符串,而不是将这

我添加了人性化的货币存取器,如下所述:

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


是否可以动态添加翻译?通过这种方式,我可以在调用人性化的\u accessor-class-method时为字段的人性化版本添加翻译,从yml文件中获取原始翻译字符串,而不是将这两个字符串(具有相同的值)写入yml文件,只是为了更干燥。

您可能想要查看globalize3 gem。您有railscast教程。

您可能想查看globalize3 gem。您有railscast教程。

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

这个人为的例子说明:

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"

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

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

这个人为的例子说明:

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"
重要提示:这仅在内存中完成。在重新部署/重新启动服务器时,需要一些持久性或重新生成机制来防止这些机制消失