2012-10-25 2 views
2

우리 코드에는 번역을 위해 단 하나의 단어로 표시된 "Photo"라는 단어가 있습니다. 코드의 다른 위치에서, 우리는, 복수로 번역 "사진"/ "사진"에서이 단어가 너무 liek :복수형과 단수 형태로 한 단어의 장고 번역의 이상한 행동

1 {% trans 'Photo' %} 
2 {% trans 'Photos' %} 

가능성이

{{ x }} {% blocktrans count counter=x %}Photo{% plural %}Photos{% endblocktrans %} 

을, 우리는 우리의 카운터 변수 X를 사용해야합니다 안에 번역 문자열. 그러나, 나는 문서에서 이러한 요구 사항에 대해 아무것도 찾을 수 없습니다. 어쨌든, 우리의 코드로, 우리는 우리의 PO 파일에 얻을 모든은 다음과 같습니다

msgid "Photos" 
msgstr "" 

msgid "Photo" 
msgid_plural "Photos" 
msgstr[0] "" 
msgstr[1] "" 

실제 번역 문자열이 존재하지 않기 때문에 더 MSGID는 "사진"전혀 번역되지 않은 결과 "사진"에 ​​대한 없습니다 - * n * gettext에서 사용되었지만 {% trans 'Photo'%}에서는 사용되지 않은 경우.

여기 뭔가 잘못 되었나요? 장고 버그입니까?

답변

6

장고에서 버그가 아닙니다. 두 개의 다른 장소에서 "사진"이라는 용어를 두 가지 방법으로 번역하려고합니다. 한 번은 평범한 (수를 불가지론하는) 용어로, 한 번은 수를 인식하는 용어로 사용됩니다. msgid "Photo"가있는 항목을 하나만 가질 수있는 PO 파일에서이를 표현할 방법이 없습니다.

는 (지금까지 gettext에 관한 한, 그것은 한 번 번역되어 있기 때문에 "사진"일반 용어로, 귀하의 경우 다른 방식으로 처리되어 있습니다.)

복수 형태의 언어에서 매우 다를 수 있습니다, 이 경우 단일 명사 "사진"을 지역화하려는 것이 아닙니다. 대신, 각 언어의 단 복수형에 대해 "x 사진 (들)"이라는 용어를 현지화해야합니다.

영어로는 "사진 1 장"과 "사진 1 장"이 될 수 있지만 다른 언어로는 2 장 이상일 수 있으며 번호 자체는 " 당신이 당신의 템플릿에서 전체 용어)

을 지역화 할 이유 사진 ", 다음, 당신은해야합니다

msgid "%(count)s Photo" 
msgid_plural "%(count)s Photos" 
msgstr[0] "" 
msgstr[1] "" 
:

{% blocktrans count counter=x %}{{ count }} Photo{% plural %}{{ count }} Photos{% endblocktrans %} 

그런 다음 PO 파일은 다음과 같은 라인을 포함해야

그리고 msgstr[0] (단례) 및 각 언어에 대해 msgstr[1] (복수)을 현지화 할 수 있습니다. 일부 언어는 [0]과 [1] 이상을 요구할 것입니다.하지만 gettext는 해당 언어의 PO 파일을 생성 할 때 gettext가 대신 처리해야합니다.

+0

설명 주셔서 감사합니다. :) 나는 방금 숫자가 대상 뒤에 배치되는 중국어 버전에서이를 깨달았습니다. –