Question

se référant à

[1] Ceci Internationalisation des rails :i18n recherche avec les répertoires de paramètres régionaux imbriqués

[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.

Était-ce utile?

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

  1. la clé avec le "."Aka paresseux lève les yeux qui indiquent quels .yml c'est dans
  2. La clé avec le nom du fichier à l'avant montre que la clé partagée ainsi que l'emplacement
  3. 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 :(

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top