Rails para usar i18n preguiçoso olhar para cima, com estrutura de arquivo
-
20-12-2019 - |
Pergunta
referindo-se a
[1] Este Trilhos De Internacionalização:i18n olhar para cima, com aninhados localidades de diretórios
[2] http://guides.rubyonrails.org/i18n.html#organization-of-locale-files
Em que os trilhos de guia para mostrar como você pode estruturar-lo, mas ele corta depois.Ele não mencionou nada sobre como olhar para cima, com o dado estrutura de arquivo
Então eu queria saber se há qualquer forma de usar lazy olhar com a estrutura do arquivo
considere os seguintes diretórios
config/locales app/views
|locales |views
|-defaults |-fruits
|--en.yml |--apple
|--views |--banana
|---fruits |-meats
|----en.yml |--chicken
|---meat |--beef
|----en.yml
config/aplicação.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
Existe alguma maneira que eu possa fazer isso ?ou nada perto do que ??
Em views/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
Eu sei que o fato de que o código a seguir irá funcionar, mas desde que eu estou na apple diretório, deve haver uma maneira de usar o preguiçoso olhar para a chave única.
Em views/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
Eu acho que se isso é possível.Ele pode minimizar chaves duplicadas e se precisamos extra alias para ser adicionado, podemos adicioná-lo quando é necessário, pois acredito que a maioria das equipe de tradução cobrar por palavras
Solução
Eu descobri que os trilhos seria, na verdade, puxa todos os .yml arquivo selecionado aninhadas nível e combiná-los a um, mas que final .yml que acontece sob o capô e algo que não podemos ver (pelo menos eu não conseguia encontrar uma maneira de vê-lo);Em adicional, o .yml nome não importa, enquanto .yml dentro é estruturado e Preguiçoso procurar iria trabalhar.
No final eu fiz organizar a localidades como o seguinte maneira, eu acho que é uma maneira melhor de organizar.
|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/pt/pt.yml
en:
repeat_key:
market: "Market" <------- shared key across folders
Em views/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 convenção
- A chave com o "." aka Preguiçoso olhar este que indicam que .yml é em
- A chave com o nome do arquivo na frente mostram que a chave compartilhada, bem como sua localização
- A chave com um monte de repetir nas pastas pode ir em repeat_key e aqueles que estão presença no pt/pt.yml
Outras dicas
@AirWick219.
Se você gostaria de usar lazy pesquisa, eu acho que você precisa para preparar o arquivo config/locales/views/fruits/apple/en.yml
.
Se você deseja chave compartilhada dentro da pasta, que tal adicionar algo como isso, mas é um pouco redundante.
config/locales/views/shared/en.yml
,
en:
shared:
fruits:
produce: "Produce"
= t('shared.fruits.produce')
Ou desistir de usar lazy pesquisa :(