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

现在如果使用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相关问答推荐

Django没有显示变量

如何从列中捕获数据并将其添加到下拉菜单中,以便表单填充另一个表

Django REST序列化程序TO_REATION失败

Django Form标签和action属性

从url参数过滤的Django日期范围返回空查询集

获取 Django Rest API 的第一个和最后一个相关对象

Django ORM:子查询上的文本聚合器

如何将数据库中的 None 序列化为空对象?

Django RESTful API - django-piston vs. django-tastypie

django 在 ubuntu 中安装在哪里

获取 Django 中的缓存键列表

测试 Django ModelForm 是否有实例

在 virtualenv Ubuntu 12.10 中使用 pip 安装 lxml 错误:command 'gcc' failed with exit status 4

django:TypeError:'tuple'对象不可调用

Table doesn't exist表不存在

将 jQuery 脚本添加到 Django 管理界面

ProgrammingError: 安装 Psycopg2 后,关系django_session不存在错误

Django Admin - save_model 方法 - 如何检测字段是否已更改?

为整个结果集向 Django Rest Framework 结果添加额外数据

如何使用 Django/nginx 部署仅限 HTTPS 的站点?