很难想象,那么多的Rails应用程序都将它们的翻译存储在yml文件中,或者每个开发人员都编写自己的后端!
您是否了解可行的解决方案?在yml中存储多行文本真的让我感到沮丧!;)
谢谢和问候,
乔
很难想象,那么多的Rails应用程序都将它们的翻译存储在yml文件中,或者每个开发人员都编写自己的后端!
您是否了解可行的解决方案?在yml中存储多行文本真的让我感到沮丧!;)
谢谢和问候,
乔
在迁移中使用以下代码创建一个表:
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
关于这个主题的一些讨论正在进行中,可以在google i18n用户组中找到:
http://groups.google.com/group/rails-i18n/browse_thread/thread/6b7ba3c401890a7e
问题已经解决,感谢I18n Sven Fuchs先生! ;)
我们使用fast_gettext的经验非常好。
它具有基于数据库的后端,配备了一个控制器,可以通过Web进行翻译。 缓存是内置的,尽管我们不得不在启动时编写预加载所有翻译的代码(这比使用缓存逐个获取它们要快得多)。