假设我有一个非常简单的rails应用程序,可在一个1 app服务器上运行并支持一种语言(en_US
)。
i18n
gem效果很好,并提供从en.yml
文件中读取的所有翻译。哇噢。
但是,假设我扩展了我的应用程序,它现在支持以下内容 -
en_US
以外的多种语言(例如ja_JP
,ms_MY
,en_GB
等。)我现在正在支持该应用的多个实例,每个实例都有几个*.yml
个文件正在堆积起来。此外,应用程序变得越来越复杂,因此每个YML文件都变得越来越大,因为有很多翻译。
是否有一种干净的方法可以将这些YML文件和i18n
翻译移出核心应用程序?我正在设想一个充当“i18n
服务”的HTTP。每次应用启动时,它都会查询i18n
服务并获取特定区域设置所需的所有翻译。
这是一种可扩展的方法吗?任何人都有使用不同设计模式的经验吗?
谢谢!
答案 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}')]