【问题标题】:Rails: store translations in databaseRails:将翻译存储在数据库中
【发布时间】:2010-11-23 17:36:37
【问题描述】:

我正在寻找一个插件/gem 解决方案来扩展本机 rails i18n 以将我的翻译存储到我的数据库中。也许我使用了错误的搜索词,但我发现的只是信息,即更改后端实际上是可能的,而这个 blog entry 描述了如何编写我自己的后端。

很难想象,所有这些 Rails 应用程序都将其翻译存储在 yml 文件中,或者每个开发人员都编写了自己的后端!

您知道这方面的有效解决方案吗?在 yml 中存储多行文本真的让我很沮丧! ;)

谢谢你,

乔

【问题讨论】:

    标签: ruby-on-rails database internationalization backend


    【解决方案1】:

    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 叫什么。

    【讨论】:

    【解决方案2】:

    在 Sven Fuchs 的帮助下,我终于找到了我想要的东西:

    http://github.com/dylanz/i18n_backend_database/tree/master

    这个由 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 先生! ;)

    【讨论】:

    • 不错!很高兴听到你有一个很好的解决方案。也谢谢分享。
    【解决方案3】:

    【讨论】:

    • 你好 Aram,好的,globalize 可以很容易地翻译模型相关的内容,但是所有的静态内容,如印记、关于、电子邮件内容等呢?
    • 我想你将不得不编写自己的后端。你到底想做什么?
    • 我当前的项目必须处理大量的描述文本 - 但因为它会在未来变得更加动态,我们决定从一开始就使用 Rails。现在我们的 yml 文件已经超过 1000 行了!也许我会创建一个模型并在其中存储序列化的键值对。一点都不漂亮,但妥协..
    【解决方案4】:

    我们对fast_gettext 有很好的体验

    它有一个由数据库支持的后端,带有一个控制器,用于在网络上进行翻译。 缓存是内置的,尽管我们必须在启动时对所有翻译的预加载进行编码(这比通过缓存一个一个地获取要快得多)。

    【讨论】:

    • 可以分享一下fast_gettext wiki的预加载,让其他人重复使用吗?
    猜你喜欢
    • 1970-01-01
    • 2011-12-05
    • 2011-02-09
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多