我需要解决性别翻译问题,而 Django 似乎还没有实现 gettext contexts...
我需要翻译成英文:
<p>Welcome, {{ username }}</p>
西班牙语有两种形式,每种性别各一种。如果用户是男性:
<p>Bienvenido, {{ username }}</p>
如果是女性:
<p>Bienvenida, {{ username }}</p>
注意区别(bienvenido/bienvenida)
有什么办法可以做到这一点吗?
谢谢,
H.
我解决这个问题的方法是:
{% if profile.male %}
{% blocktrans with profile.name as male %}Welcome, {{ male }}{% endblocktrans %}
{% else %}
{% blocktrans with profile.name as female %}Welcome, {{ female }}{% endblocktrans %}
{% endif %}
Django 只是 Python,因此如果需要,您可以直接使用 Python gettext 绑定,我不认为您有任何理由不能编写 {% sex_trans [gender] %} 标记。
在等待上下文支持时,一个简单的选择是稍微改变西班牙语句子并使用不因人的性别而异的问候语。例如,您可以使用“hola”或其他等效术语。
Django 翻译支持上下文标记。
问题是你需要使用pgettext,而不是gettext。使用示例:
from django.utils.translation import pgettext
pgettext("feminine", "Dear %(name)s")
pgettext("masculine", "Dear %(name)s")
然后您可以在 .po 文件中添加上下文翻译:
#: path/to/file.py:4
msgctxt "masculine"
msgid "Welcome, %(name)s"
msgstr "Welcome, %(name)s"
#: path/to/file.py:5
msgctxt "feminine"
msgid "Welcome, %(name)s"
msgstr "Welcome, %(name)s"