Rieles para usar I18N Lazy Leay Up con la estructura de archivos
-
20-12-2019 - |
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
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
- la clave con la "".AKA Lazy mira esto que indica qué .yml está en
- La clave con el nombre del archivo en Front Show que compartió la clave, así como la ubicación
- 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: (