실제로 번거로운 i18n 접근 방식에 대한 대안이 있습니다. 해결책은 Tr8n이라고합니다.
위의 코드는 다음과 같습니다.
<%= tr("You have {num || kid}", num: 1) %>
그게 다야. 코드에서 키를 추출하여 리소스 번들로 유지할 필요가 없으며 각 언어에 대한 복수화 규칙을 구현할 필요가 없습니다. Tr8n은 모든 언어에 대한 숫자 컨텍스트 규칙과 함께 제공됩니다. 성별 규칙, 목록 규칙 및 언어 케이스도 함께 제공됩니다.
위 번역 키의 전체 정의는 실제로 다음과 같습니다.
<%= tr("You have {num:number || one: kid, other: kids}", num: 1) %>
그러나 공간과 시간을 절약하기 위해 num은 자동으로 숫자 규칙에 매핑되며 규칙 값에 대한 모든 옵션을 제공 할 필요가 없습니다. Tr8n에는 즉석에서 작업을 수행 할 복수형 및 인플 렉터가 함께 제공됩니다.
러시아어로 된 키의 번역은 다음과 같습니다.
"У вас есть {num || ребенок, ребенка, детей}"
그건 그렇고, 성별에 따른 규칙이있는 언어에서는 번역이 정확하지 않을 수 있습니다. 예를 들어, 히브리어에서 "당신"은 보는 사용자의 성별에 따라 달라 지므로 실제로는 2 개 이상의 번역을 지정해야합니다. Tr8n은 그것을 아주 잘 처리합니다. 다음은 히브리어 번역의 음역입니다.
"Yesh leha yeled ahad" with {context: {viewing_user: male, num: one}}
"Yesh leha {num} yeladim" with {context: {viewing_user: male, num: other}}
"Yesh lah yeled ahad" with {context: {viewing_user: female, num: one}}
"Yesh lah {num} yeladim" with {context: {viewing_user: female, num: other}}
따라서이 경우 단일 영어 키에는 4 개의 번역이 필요합니다. 모든 번역은 맥락에서 이루어집니다. 문장을 끊을 필요가 없습니다. Tr8n에는 언어와 문맥에 따라 하나의 키를 여러 번역에 매핑하는 메커니즘이 있습니다.
마지막 한가지. 카운트 부분을 굵게 만들어야한다면 어떨까요? 단순히 다음과 같습니다.
<%= tr("You have [bold: {num || kid}]", num: 1, bold: "<strong>{$0}</strong>") %>
나중에 "굵게"를 재정의하려는 경우-매우 쉬울 것입니다. 모든 YAML 파일을 검토하고 변경할 필요가 없습니다. 한곳에서 수행하면됩니다.
자세한 내용은 여기를 참조하십시오.
https://github.com/tr8n/tr8n_rails_clientsdk
공개 : 저는 Tr8n 프레임 워크와 모든 라이브러리의 개발자이자 유지 관리자입니다.
"#{....}"
위 코드에서 "보간 자"와 따옴표 는 필요하지 않습니다.