2015-09-26 6 views
0

Предположим, у меня действительно простое приложение для рельсов, которое работает на одном сервере приложений и поддерживает один язык (en_US).Каков наилучший способ масштабирования переводов i18n в корпоративной программной модели?

Драгоценный камень i18n отлично работает и предоставляет все переводы, считанные с моего файла en.yml. Woohoo.

Но давайте говорить, что я масштабировать мое приложение и теперь он поддерживает следующие -

  • Enterprise версии приложения, так что он работает на нескольких приложений (и БД) серверы
  • Несколько языков, кроме en_US (например ja_JP, ms_MY, en_GB, и т.д ..)

Я теперь поддерживает несколько экземпляров приложения, каждый с несколькими *.yml файлами, которые начинают накапливаться вверх. Кроме того, приложение становится более сложным, поэтому каждый YML-файл становится огромным, потому что есть много переводов.

Есть ли чистый способ перемещения этих файлов YML и i18n переводы из основного приложения? Я рассматриваю HTTP, который функционирует как услуга «i18n». Каждый раз, когда приложение запускается, он запрашивает службу i18n и получает все переводы, необходимые для конкретной локали.

Является ли это масштабируемым способом приблизиться к этому? У кого-нибудь есть опыт использования другого шаблона дизайна?

Спасибо!

ответ

1

Вы можете разбить один большой файл 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}')] 
Смежные вопросы