Pregunta

refiriéndose a

[1] Este Rieles Internacionalización: I18N Buscan los directorios locales anidados

[2] Esta http://guides.rubyonrails.org /i18n.html#organization-of-locale-files

En el que la guía de los Rails solo muestra cómo podría estructurarlo, pero se corta después de eso. No mencionó nada sobre cómo buscar la estructura de archivos dada

Así que me preguntaba si hay que usar un aspecto perezoso con la estructura de archivos

Considerar los siguientes directorios

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 

¿Hay alguna forma de que pueda hacer esto? ¿O algo cerca de eso?

en vistas / frutas / 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

Sé que el hecho de que el siguiente código funcione, pero como estoy en el directorio de Apple, debe haber una manera de usar la búsqueda perezosa para la clave única.

en vistas / frutas / 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 

Creo que si esto es posible. Puede minimizar las claves duplicadas y, si necesitamos alias adicionales que se agregarán, podemos agregarlo cuando sea necesario, ya que creo que la mayoría del equipo de traducción cobra por palabras

¿Fue útil?

Solución

Descubrí que los rieles en realidad retirarían todo el archivo .yml para un nivel anidado seleccionado y combinarlos a uno, pero ese .Yml final que sucede bajo la capucha y algo que no podemos ver (al menos yo pude "T Encuentra una forma de verlo);En adicional, el nombre de .YML no importa, siempre y cuando el interior del interior esté estructurado y la búsqueda perezosa funcione.

Al final, organizé los locales como la siguiente manera, creo que es una mejor manera de organizarlo.

|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"

LOCALES / EN / EN.YML

en:
  repeat_key:
    market: "Market"     <------- shared key across folders 

en vistas / frutas / 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

por esta convención

  1. la clave con la "".AKA Lazy mira esto que indica qué .yml está en
  2. La clave con el nombre del archivo en Front Show que compartió la clave, así como la ubicación
  3. La clave con una gran cantidad de repetición a través de las carpetas puede ir debajo de repetición y esas son presencia en el EN / EN.YML

Otros consejos

@ Airwick219.

Si desea usar la búsqueda perezosa, creo que necesita preparar el archivo config/locales/views/fruits/apple/en.yml.

Si desea una clave compartida dentro de la carpeta, cómo a punto de agregar algo como esto, aunque es un poco redundante.

config/locales/views/shared/en.yml,

en:
  shared:
    fruits:
      produce: "Produce" 

= t('shared.fruits.produce')

o renunciar a la búsqueda perezosa: (

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top