32

コードのさまざまな部分で 2 つの異なる方法で翻訳できる文字列が 1 つあります。

django-admin makemessages -l it を使用する場合

私はこれをdjango.poに入れます:

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

しかし、私は2つの異なる翻訳が必要です:

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

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

投稿された翻訳ファイルで django-admin compilemessage を実行すると、次のようになります。

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

ヒントはありますか?私はジャンゴを使用しています。

4

1 に答える 1

35

そのために 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 ""

各メッセージは異なり、異なる方法で翻訳できます。

于 2012-04-23T11:18:13.200 に答える