是否可以同时使用2个I18n后端并仅使用第二个作为后备?

时间:2010-10-28 16:14:22

标签: ruby-on-rails internationalization

在我的Rails应用程序中,我想同时使用2个后端,第一个是在DB中存储翻译,第二个是默认的基于YML的后端。我觉得这个第二个后端用作后备后端,即如果在第一个后端找不到翻译,Rails会在第二个后端查找翻译。

有可能实现吗?

修改

我的动机是我不想在第一个后端存储默认的Rails翻译。我使用的第一个后端带有一个管理Web界面,显示后端包含的所有翻译,我不想让这个界面与这些默认翻译混乱。我希望不必在第一个后端导入它们,也不必在实现时更新它们。

1 个答案:

答案 0 :(得分:3)

i18n gem就是这样做的,并且与rails兼容。实际上建议使用它。

来自I18n :: Backend :: Chain:

的rdoc
  

后端链接多个其他后端并检查每个后端   何时需要查找翻译。这在你想要的时候非常有用   使用标准翻译与简单后端但存储自定义   应用程序翻译在数据库或其他后端。

     

使用Chain后端实例化它并将其设置为I18n模块。   您可以通过初始化程序或后端添加链接后端   存取器:

# preserves the existing Simple backend set to I18n.backend 
I18n.backend = I18n::Backend::Chain.new(I18n::Backend::ActiveRecord.new, I18n.backend)
     

该实现假定所有后端都添加到Chain   使用与Simple backend相同的API实现查找方法。