我正在寻找一个插件/gem 解决方案来扩展本机 rails i18n 以将我的翻译存储到我的数据库中。也许我使用了错误的搜索词,但我发现的只是信息,实际上可以更改后端以及描述如何编写我自己的后端的博客条目。
很难想象,所有这些 Rails 应用程序的翻译都存储在 yml 文件中,或者每个开发人员都编写了自己的后端!
你知道这方面的工作解决方案吗?在 yml 中存储多行文本真的让我很沮丧!;)
谢谢和问候,
乔
我正在寻找一个插件/gem 解决方案来扩展本机 rails i18n 以将我的翻译存储到我的数据库中。也许我使用了错误的搜索词,但我发现的只是信息,实际上可以更改后端以及描述如何编写我自己的后端的博客条目。
很难想象,所有这些 Rails 应用程序的翻译都存储在 yml 文件中,或者每个开发人员都编写了自己的后端!
你知道这方面的工作解决方案吗?在 yml 中存储多行文本真的让我很沮丧!;)
谢谢和问候,
乔
i18n 内置支持将数据库用作翻译后端。
在迁移中使用此代码创建表:
create_table :translations do |t|
t.string :locale
t.string :key
t.text :value
t.text :interpolations
t.boolean :is_proc, :default => false
end
然后在 config/initializers/i18n.rb 中添加一个初始化器,其内容为:
I18n.backend = I18n::Backend::ActiveRecord.new
最后...将翻译放在表中。就像是:
locale key value
en Cool Cool
es Cool Frio
en nav.Home home
es nav.Home casa
...
从 i18n 0.5.0 开始,我相信他们将这段代码移到了它自己的 gem 中……我忘记了那个 gem 叫什么。
在 Sven Fuchs 的帮助下,我终于找到了我想要的东西:
由 Dylan Stamat 开发的这个非常棒的插件完全符合其名称所指的功能,并且还处理了缓存!
Sven 还提到,i18n/active_record 的当前分支也提供了一个 ActiveRecord 后端:
http://github.com/svenfuchs/i18n/blob/active_record/lib/i18n/backend/active_record.rb
goolge i18n 用户组正在讨论这个主题:
http://groups.google.com/group/rails-i18n/browse_thread/thread/6b7ba3c401890a7e
问题已解决,感谢I18n Sven Fuchs 先生!;)
它有一个由数据库支持的后端,带有一个控制器来通过网络进行翻译。缓存是内置的,尽管我们必须在启动时对所有翻译的预加载进行编码(这比通过缓存一一获取要快得多)。