2012-04-19 12 views
21

私は2つの異なる方法で私のコードのvariusの部分で翻訳することができる1つの文字列を持っています。 異なる翻訳の同じ文字列

は今使用ジャンゴ管理者makemessagesの節では、それが

私はこのdjango.poで取得-l場合:

#: pingapi/ping.py:17 pingapi/nots.py:10 
msgid "may" 
msgstr "maggio" 

しかし、私は二つの異なる翻訳たい:私は場合

#: pingapi/ping.py:17 
msgid "may" 
msgstr "posso" 

#: pingapi/nots.py:10 
msgid "may" 
msgstr "maggio" 

を翻訳ファイルのdjango-adminコンパイルメッセージを掲載しました。

Error: errors happened while running msgmerge 
error 'duplicate message definition' 

ヒント?私はDjangoを使用しています。

+2

[this](https://docs.djangoproject.com/en/dev/topics/i18n/translation/#contextual-markers)は役に立ちますか? – dgel

+0

@dgel:残念なことではありません。 –

+0

ああ...そうだ。 'pgettext'は翻訳者に役立つコンテキスト文字列を提供します。 – dgel

答えて

24

gettextのコンテキストを使用することができます。次のコード例について

::Djangoは(テンプレートの)1.3(コードで)リリース1.4にそのためのサポートを追加しました、https://docs.djangoproject.com/en/dev/topics/i18n/translation/#contextual-markers

の更新を参照してください

from django.utils.translation import pgettext, ugettext 

month = pgettext("month name", "May") 
month = pgettext("fifth month", "May") 
month = ugettext("May") 

はに変換します

#: foo/views.py:4 
msgctxt "month name" 
msgid "May" 
msgstr "" 

#: foo/views.py:5 
msgctxt "fifth month" 
msgid "May" 
msgstr "" 

#: foo/views.py:6 
msgid "May" 
msgstr "" 

それぞれのメッセージは異なっていて、別々に翻訳することができます。

+0

あなたは質問にコメントを読まれましたか? –

+5

はい、しかしpgettextは翻訳者に情報を提供するだけでなく、gettextのメッセージを区別して別のメッセージにします。 –

関連する問題