Rails Использовать I18n Lazy Seep Scred с файловой структурой
-
20-12-2019 - |
Вопрос
Ссылаясь на
[1] Это Rails Internationalizations: I18n посмотрите с вложенными катаниями местных мест
[2] Это http://guides.rubyonrails.org /i18n.html#organation-of-locale-files
, в котором руководство по рельсам только показать, как вы можете структурировать его, но после этого он отключается. Не упомянул ничего о том, как посмотреть с заданной структурой файла
Так мне было интересно, есть ли в любом случае использовать ленивый внешний вид с файловой структурой
Рассмотрим следующие каталоги
config/locales app/views
|locales |views
|-defaults |-fruits
|--en.yml |--apple
|--views |--banana
|---fruits |-meats
|----en.yml |--chicken
|---meat |--beef
|----en.yml
.
config / application.rb
config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/**/*.{rb,yml}"]
.
.yml
locales/views/fruits/en.yml| locales/views/meats/en.yml
|
en: | en:
produce: "Produce" | meat_section: "Meat Section" <--- shared key within folder
|
apple: | chicken:
red: "Red" | white_meat: "White Meat"
|
banana: | beef:
yellow: "Yellow" | red_meat: "Red Meat"
.
locales/defaults/en.yml
en:
repeat_key:
market: "Market" <------- shared key across folders
.
Есть ли способ, которым я могу это сделать? Или что-нибудь близкое к этому ??
в видах / фрукты / Apple.html.haml
= t('.red') <------- unique key in apple
= t('produce') <------- shared key within fruits folder
= t('repeat_key.maket') <------- repeat key across fruits and meat folders
.
Я знаю, что следующий код будет работать, но так как я в каталоге Apple, должен быть способ использовать ленивый поиск для уникального ключа.
в видах / фрукты / Apple.html.haml
= t('apple.red') <------- unique key in apple
= t('produce') <------- shared key within fruits folder
= t('repeat_key.maket') <------- repeat key across fruits and meat folders
.
Я думаю, что если это возможно. Он может минимизировать дублирующиеся ключи, и если нам нужен дополнительный псевдоним, мы можем добавить его, когда это необходимо, так как я считаю, что большинство командной команды перевода на слова
Решение
Я выяснил, что рельсы на самом деле будут вытащить весь файл .yml для выбранного вложенного уровня и объединить их на один, но этот последний .yml, который происходит под капотом и то, что мы не можем видеть (по крайней мере, я не могуt найти способ увидеть его);В дополнительном имени .yml не имеет значения, пока не имеет значения .yml внутри, и ленивый взгляд будет работать.
В конце я организовал локали, как следующим образом, я думаю, что это лучший способ организовать его.
|config
|-locales
|--en
|---en.yml
|---fruits.en.yml
|---meat.en.yml
.
.yml
locales/en/fruits.en.yml| locales/en/meats.en.yml
|
en: | en:
fruits: | meats:
produce: "Produce" | meat_section: "Meat Section" <-shared key within folder
|
apple: | chicken:
red: "Red" | white_meat: "White Meat"
|
banana: | beef:
yellow: "Yellow" | red_meat: "Red Meat"
.
Локальные / en / en.yml
en:
repeat_key:
market: "Market" <------- shared key across folders
.
в видах / фрукты / Apple.html.haml
= t('.red') <------- unique key in apple
= t('fruits.produce') <------- shared key within fruits folder
= t('repeat_key.maket') <------- repeat key across fruits and meat folders
.
настоящей Конвенцией
- ключ с "."aka ленивый смотрите это, что указывает на то, какой .yml это в
- ключ с именем файла спереди показывает, что общий ключ, а также местоположение
- Клавиша с большим количеством повторовных папок может идти под repeat_key, и это наличие в en / en.yml
Другие советы
@ airwick219.
Если вы хотите использовать ленивый поиск, я думаю, вам нужно подготовить файл config/locales/views/fruits/apple/en.yml
.
Если вы хотите общий ключ в папке, как насчет добавить что-то вроде этого, хотя это немного избыточно.
config/locales/views/shared/en.yml
,
en:
shared:
fruits:
produce: "Produce"
.
= t('shared.fruits.produce')
или отказаться, чтобы использовать ленивый поиск: (