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

标签 django internationalization translation

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

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

我在django.po中获得了这个:

#: 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 compilemessage,则会得到:
Error: errors happened while running msgmerge
 error 'duplicate message definition' 

有什么提示吗?我正在使用Django。

最佳答案

您可以为此使用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 ""

每个消息都是不同的,可以翻译成不同的形式。

关于django - 相同的字符串具有不同的翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235822/

相关文章:

php - Yii2:如何翻译模块内的小部件

python - 用另一个文件中的单词替换替换单词

python - 将数据导入 MySQL 时提高性能?

django - pip install dj-database-url 给出了权限被拒绝的错误

Django i18n : makemessages only on site level possible?

ruby-on-rails - rails : Remove missing translation errors

Django CMS 和 Rosetta : Can't get template messages translated

c# - 将 ASP.Net 网站翻译成另一种语言

javascript - 通过 Ajax 向 Django 发送复选框列表

python - 基于局部变量的Django条件过滤器