Ruby on rails 钩入轨道';I18n

Ruby on rails 钩入轨道';I18n,ruby-on-rails,activerecord,ruby-on-rails-3.2,i18n-gem,Ruby On Rails,Activerecord,Ruby On Rails 3.2,I18n Gem,我已经编写了一个小库来保存模型属性中的翻译内容。您只需将以下内容添加到模型中: class Page < ActiveRecord::Base i18n_attributes :title, :content end 您也可以在表单中使用这些虚拟属性,但有一个缺点:表单生成器使用I18n获取标签并转换属性验证错误。如果在表单中使用title\u en,它当然会查找诸如activerecord.attributes.page.title\u en之类的键 在locales/en.yml

我已经编写了一个小库来保存模型属性中的翻译内容。您只需将以下内容添加到模型中:

class Page < ActiveRecord::Base
  i18n_attributes :title, :content
end
您也可以在表单中使用这些虚拟属性,但有一个缺点:表单生成器使用I18n获取标签并转换属性验证错误。如果在表单中使用
title\u en
,它当然会查找诸如
activerecord.attributes.page.title\u en
之类的键

locales/en.yml
etc文件中为每个可用的语言环境复制相同的翻译将非常麻烦:

activerecord:
  attributes:
    page:
      title_en: "Title"
      title_es: "Title"
      ...
我想做的是在Rails在引导过程中加载了所有区域设置之后执行一些代码,然后克隆这些键的翻译。有办法做到这一点吗?可能是从YAML文件加载翻译后调用的钩子?(当我的库加载时,翻译尚未加载。)

或者你有没有发现解决这个问题的其他方法?(我曾尝试使用别名I18n.translate,但我担心这可能会在将来引起严重的头痛。)


谢谢你的提示

虽然您放弃了这种方法,但请让我分享我的想法:

我不认为为特定的本地化向翻译文件中添加其他语言环境字符串是非常有用的。因为
config/locales/$locale.yml
通常以

英语本地化文件中不需要
activerecord.attributes.page.title\es
。我只是把它放在
es.yml
中作为
activerecord.attributes.page.title


我的意思是:这不是独立本地化文件的全部目的吗?(或者从开发人员/翻译人员的角度来看:我应该在哪个文件中搜索
.title_es
,在
en.yml
es.yml
或两者兼而有之?

尽管您放弃了这种方法,但请让我分享我的想法:

我不认为为特定的本地化向翻译文件中添加其他语言环境字符串是非常有用的。因为
config/locales/$locale.yml
通常以

英语本地化文件中不需要
activerecord.attributes.page.title\es
。我只是把它放在
es.yml
中作为
activerecord.attributes.page.title


我的意思是:这不是独立本地化文件的全部目的吗?(或者从开发者/翻译人员的角度来看:我应该在哪个文件中搜索
.title_es
,在
en.yml
es.yml
,或者两者都搜索?)

我放弃了这种方法,所以这个问题不再相关——至少对我来说不是。我放弃了这种方法,所以这个问题不再相关——至少对我来说不是。
activerecord:
  attributes:
    page:
      title_en: "Title"
      title_es: "Title"
      ...
$locale:
  ...