具有不同翻译的相同字符串

bed*_*dre 25 django translation internationalization

我有一个字符串,可以用两种不同的方式在我的代码的varius部分进行翻译.

现在如果使用django-admin makemessages -l it

我进入django.po这个:

#: pingapi/ping.py:17 pingapi/nots.py:10
msgid "may"
msgstr "maggio"
Run Code Online (Sandbox Code Playgroud)

但我想要两种不同的翻译:

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

#: pingapi/nots.py:10
msgid "may"
msgstr "maggio"
Run Code Online (Sandbox Code Playgroud)

如果我运行django-admin compilemessage并发布翻译文件,我会得到:

Error: errors happened while running msgmerge
 error 'duplicate message definition' 
Run Code Online (Sandbox Code Playgroud)

任何提示?我正在使用Django.

Mic*_*hař 29

您可以使用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")
Run Code Online (Sandbox Code Playgroud)

翻译为:

#: 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 ""
Run Code Online (Sandbox Code Playgroud)

每条消息都不同,可以不同方式翻译.

  • 是的,但是pgettext不仅仅是为翻译提供信息,它还区分了gettext的消息并使它们成为不同的消息. (5认同)