2009-12-11 4 views
8

gettext 사용 여러 숫자 변수가있는 문장을 어떻게 변환 할 수 있습니까? ngettext는 하나의 숫자 만 복수 매개 변수로 사용합니다.두 개의 복수 단어가있는 국제화 문장

아래 문장에서 허용되어야하는 순열은 "성인과 어린이", "성인과 어린이", "성인과 어린이"및 "성인과 어린이"입니다.

"#NUMADULTS 성인 및 #NUMCHILDREN 아이에 대한 #AVAILABILITYTO에 #AVAILABILITYFROM에서"

답변

8

문법 영어가 아닌 다른 언어로 매우 복잡 할 수 있으며, 당신이 사용 올바른 복잡한 문장을 생성하는 실제 불가능 알고 있어야합니다 당신의 접근 방식.

여러 변수와 장르 (남성/여성)도 많은 복잡성을 추가한다는 것을 기억하십시오.

해결 방법은 하나의 변수 만있는 간단한 문장 만 생성하는 것입니다. 이는 ngettext에 의해 지원되는 경우입니다.

ngettext가 훌륭한 점은 버그 소프트웨어 회사의 가장 상용 된 i18n 프레임 워크가 지원하지 않는 것임을 이해하십시오. 그럼에도 불구하고 자신의 한계가 있으므로 잠시 후 귀하의 질문에 대한 해결책은 하나의 변수를 사용하여 번역 할 수있는 몇 가지 간단한 문장으로 복잡한 문장을 분리하는 것입니다.

+0

단지 하나의 복수형이 있어도이 방법을 사용하면 4 개의 문자열이 필요합니다. 하나는 두 부분으로, 하나는 두 부분으로 복수로, 하나는 첫 번째 단수와 두 번째 복수로, 다른 하나는 주위에서 사용합니다. Gettext는 그것을 지원하지도 않으며, 사용하기에는 너무 복잡합니다. –

+0

그 대답은 아니지만 그것이 가능할 것이라고 생각했습니다 :) – dsas

+1

ICU가 사용하는 접근 방식은 메시지에 중첩의 여러 수준을 사용하여 쉽게 수행 할 수 있습니다. ngettext는 좋지 않습니다. 단 하나의 레벨 중첩 만 허용하므로 하나의 변수에서만 선택을 처리 할 수 ​​있기 때문에 불완전합니다. 문장을 여러 문장으로 나누는 것은 좋지 않지만 gettext를 사용하면 문장 하나만 만들 수 있습니다. 코드에서 A + B + C로 파트를 조인합니다. 그러나 대상 언어가 틀리며 C + A + B 또는 C 음영의 일부가 먼저 이어져야합니다. –