Поддержка разных регионов с помощью Rails i18n - PullRequest
1 голос
/ 08 июня 2010

Я использую стандартный Rails I18n API для локализации некоторых наших представлений. Это работает очень хорошо, но теперь у нас есть несколько вариантов использования региональных изменений для en локали.

Руководство по API упоминает, что это не поддерживается напрямую, и следует использовать другие плагины. Однако мне интересно, есть ли более простой способ сделать это.

У меня уже есть en.yml, поэтому теоретически я мог бы просто создать en-AU.yml и en-US.yml, которые фактически являются клонами en.yml, но с несколькими региональными изменениями. Затем я мог бы добавить дополнительные параметры English - American и English - Australian в нашу конфигурацию, которые бы отображали новые региональные настройки и позволяли пользователям использовать региональные настройки.

Единственная проблема, с которой я могу подумать, это то, что это не СУХОЙ - у меня были бы дублированные переводы для всех распространенных английских слов. Я не могу обойти это.

Есть ли другие недостатки у этого подхода, или я должен просто укусить пулю и погрузиться в один из плагинов, таких как Globalize2 вместо этого?

Ответы [ 3 ]

6 голосов
/ 16 января 2013

Помощник rails-i18n-translation-наследования-старости сейчас немного устарел, так что вот мой подход к проекту Rails 3.2.

Если вы храните en-US и en-AU в одном и том же файле en.yml, вы можете использовать повторяющийся узел yml для создания секции super en:

Например:

en: &en
  errors:
    messages:
      expired: "has expired, please request a new one"
      not_found: "not found"

en-US
  <<: *en

en-AU
  <<: *en
  errors:
    messages:
      not_found: "tis not found"
2 голосов
/ 12 марта 2013

В более новых версиях Rails / i18n они добавили функцию отката. Работает аналогично устаревшей translation inheritance helper жемчужине

см. Этот ответ для получения дополнительной информации: Возврат к языку по умолчанию, если перевод отсутствует

2 голосов
/ 08 июня 2010
...