Rails pour utiliser la recherche paresseuse i18n avec la structure des fichiers
-
20-12-2019 - |
Question
se référant à
[2] ceci http://guides.rubyonrails.org/i18n.html#organization-of-locale-files
Dans lequel le guide des rails montre uniquement comment vous pouvez le structurer, mais il est ensuite coupé.Il n'a rien mentionné sur la façon de rechercher la structure de fichier donnée.
Je me demandais donc s'il était possible d'utiliser un look paresseux avec la structure des fichiers.
considérez les répertoires suivants
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
Y a-t-il un moyen de faire ça ?ou quelque chose de proche de ça ??
Dans vues/fruits/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
Je sais que le code suivant fonctionnera, mais comme je suis dans le répertoire Apple, il doit y avoir un moyen d'utiliser la recherche paresseuse pour la clé unique.
Dans vues/fruits/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
Je pense que si c'est possible.Cela peut minimiser les clés en double et si nous avons besoin d'ajouter un alias supplémentaire, nous pouvons l'ajouter lorsque cela est nécessaire car je pense que la plupart des équipes de traduction facturent par mots.
La solution
J'ai découvert que les rails tire réellement tout le fichier .yml pour un niveau imbriqué sélectionné et les combineraient à un, mais que la dernière .yml qui arrive sous le capot et quelque chose que nous ne pouvons pas voir (au moins je ne pouvais pas voirt trouver un moyen de le voir);En outre, le nom .yml n'a pas d'importance tant que le .yml à l'intérieur est structuré et que la look paresseux fonctionnerait.
À la fin, j'ai organisé les locaux comme la manière suivante, je pense que c'est un meilleur moyen de l'organiser.
|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"
local / fr.yml
en:
repeat_key:
market: "Market" <------- shared key across folders
dans les vues / fruits / pomme.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
par la présente convention
- la clé avec le "."Aka paresseux lève les yeux qui indiquent quels .yml c'est dans
- La clé avec le nom du fichier à l'avant montre que la clé partagée ainsi que l'emplacement
- La clé avec beaucoup de répétition sur les dossiers peut aller sous la répétition_key et celles-ci sont présentes dans l'EN / EN.YML
Autres conseils
@AirWick219.
Si vous souhaitez utiliser la recherche paresseuse, je pense que vous devez préparer le fichier config/locales/views/fruits/apple/en.yml
.
Si vous voulez une clé partagée dans le dossier, que diriez-vous d'ajouter quelque chose comme ceci, même si c'est un peu redondant.
config/locales/views/shared/en.yml
,
en:
shared:
fruits:
produce: "Produce"
= t('shared.fruits.produce')
Ou abandonnez l'utilisation de la recherche paresseuse :(