在企业软件模型中扩展i18n翻译的最佳方法是什么?

时间:2015-09-26 18:11:55

标签: ruby-on-rails internationalization rails-i18n

假设我有一个非常简单的rails应用程序,可在一个1 app服务器上运行并支持一种语言(en_US)。

i18n gem效果很好,并提供从en.yml文件中读取的所有翻译。哇噢。

但是,假设我扩展了我的应用程序,它现在支持以下内容 -

  • 该应用的企业版,因此​​它可以在多个应用(和数据库)服务器上运行
  • en_US以外的多种语言(例如ja_JPms_MYen_GB等。)

我现在正在支持该应用的多个实例,每个实例都有几个*.yml个文件正在堆积起来。此外,应用程序变得越来越复杂,因此每个YML文件都变得越来越大,因为有很多翻译。

是否有一种干净的方法可以将这些YML文件和i18n翻译移出核心应用程序?我正在设想一个充当“i18n服务”的HTTP。每次应用启动时,它都会查询i18n服务并获取特定区域设置所需的所有翻译。

这是一种可扩展的方法吗?任何人都有使用不同设计模式的经验吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将一个大型yml文件分成几个,甚至可以在子目录中分发文件。

例如,您的本地化树可能如下所示:

locales/
  models/
    user_en.yml
    user_jp.yml
    product_en.yml
    product_jp.yml
  pages/
    index_en.yml
    index_jp.yml
  en.yml
  jp.yml

要包含此树中的所有yml文件,请相应地修改application.rb:

 config.i18n.load_path += Dir[File.join(Rails.root, 'config', 'locales', '**', '*.{rb,yml}')]