Каков рекомендуемый путь рельсов до I18n в Rails 3 - PullRequest
5 голосов
/ 30 марта 2012

Сначала подтвердите, что я не собираюсь предоставлять что-либо в базу данных на нескольких языках.Я просто говорю о тексте на странице.

Я немного озадачен заявлением в Руководство по Rails :

Библиотека i18n занимаетпрагматический подход к ключам локали (после некоторого обсуждения), включая только часть локали («язык»), например: en,: pl, а не часть региона, например: en-US или: en-GB, которые традиционно используются дляразделяя «языки» и «региональные настройки» или «диалекты».Во многих международных приложениях используется только языковой элемент локали, такой как: cs,: th или: es (для чешского, тайского и испанского языков).Однако существуют также региональные различия в разных языковых группах, которые могут быть важными.Например, в локали: en-US у вас будет символ $ в качестве символа валюты, а в: en-GB - £.Ничто не мешает вам разделить региональные и другие настройки таким образом: вам просто нужно указать полную локализацию «Английский - Великобритания» в словаре: en-GB.

Предположим, я хотел бы получитьполный набор английских локализаций, который содержит часть США и часть ГБ.

Так что мне нужно иметь en.yml, en-US.yml и en-GB.yml, 3 файла в папке локали,

-- Rails Root
  |-- config
    |-- locale
      |
      |-- en.yml
      |-- en-US.yml
      |-- en-GB.yml 

и когда я установлю I18n.locale = 'en-US', он будет использовать перевод текста в en-US.yml.Это рекомендуемый способ сделать I18n в рельсах 3?

И хорошо ли, что я сохраняю идентичную часть в en.yml (как в понедельник вторник, они одинаковы в США и Великобритании) и сохраняюразные вещи (что-то вроде знака валюты) в отдельных файлах en-US.yml и en-GB.yml?Возможно ли, чтобы рельсы могли автоматически находить идентичные детали в en.yml?Как я проверял, он не поддерживается из коробки

1 Ответ

5 голосов
/ 25 июня 2014

Во избежание дублирования всех переводов, которые имеют общие en-US и en-GB, вы можете определить собственные резервные маршруты для разных переводов.

I18n.fallbacks.map(:"en-GB" => :"en")

или

I18n.fallbacks[:"en-GB"] # => [:"en-US", :en]

Так что, если en-GB не имеет определенного перевода, вы можете вернуться к en.yml или en-US.yml. Таким образом, вы можете сохранить специфичные для региона переводы в en-US.yml и en-GB.yml, в то время как все, что у них общего, может быть в en, и эти два отступят на en, когда вы не сможете найти специальный перевод в en-US.yml или en-GB.yml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...