파일 구조에 i18n 게으른 조회를 사용하는 레일
-
20-12-2019 - |
문제
참조
[1] 이 레일즈 국제화:i18n은 중첩된 로케일 디렉토리를 조회합니다.
[2] 이 http://guides.rubyonrails.org/i18n.html#organization-of-locale-files
레일 가이드에서는 구성 방법만 보여주지만 그 이후에는 잘립니다.주어진 파일 구조를 찾는 방법에 대해서는 아무 것도 언급하지 않았습니다.
그래서 어쨌든 파일 구조에 게으른 모양을 사용할 수 있는지 궁금합니다.
다음 디렉토리를 고려하십시오
config/locales app/views
|locales |views
|-defaults |-fruits
|--en.yml |--apple
|--views |--banana
|---fruits |-meats
|----en.yml |--chicken
|---meat |--beef
|----en.yml
구성/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
내가 이것을 할 수 있는 방법이 있나요?아니면 그에 가까운 것 ??
views/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
다음 코드가 작동할 것이라는 사실을 알고 있지만 현재 Apple 디렉토리에 있으므로 고유 키에 대해 게으른 조회를 사용하는 방법이 있어야 합니다.
views/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
이것이 가능하다면라고 생각합니다.중복 키를 최소화할 수 있으며 별칭을 추가해야 하는 경우 대부분의 번역 팀이 단어당 비용을 청구한다고 믿기 때문에 필요할 때 추가할 수 있습니다.
해결책
RAILS가 실제로 선택한 중첩 된 레벨의 모든. 흑백 파일을 끌어 당겨서 하나씩 결합하지만 우리가 볼 수없는 것에 일어나는 마지막. 니즘은 (적어도 내가 couldn 't 그것을 볼 수있는 방법을 찾는다);추가로 .yml 이름은 내부의 .yml가 구조화되고 게으른 모양이 일어나는 한 중요한 것은 중요하지 않습니다.
결국 나는 다음과 같은 로케일을 조직했는데, 나는 그것이 그것을 정리하는 더 좋은 방법이라고 생각합니다.
|config
|-locales
|--en
|---en.yml
|---fruits.en.yml
|---meat.en.yml
.
.mll
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"
.
로켈 / en / en.yml
en:
repeat_key:
market: "Market" <------- shared key across folders
.
views / fruits / 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
.
이 협약
- "."키일명 게으른 모양이 에 있는지 나타냅니다.
- 앞에있는 파일 이름이있는 키는 공유 키뿐만 아니라 위치
- 폴더에 걸쳐 많은 반복이있는 열쇠는 requey_key로 이동할 수 있으며 en / en.yml 에 존재합니다.
다른 팁
@에어윅219.
Lazy Lookup을 사용하시려면 파일을 준비하셔야 할 것 같습니다 config/locales/views/fruits/apple/en.yml
.
폴더 내에서 공유 키를 원한다면 약간 중복되기는 하지만 이와 같은 것을 추가하는 것은 어떻습니까?
config/locales/views/shared/en.yml
,
en:
shared:
fruits:
produce: "Produce"
= t('shared.fruits.produce')
아니면 게으른 조회 사용을 포기하세요 :(