Python django i18n翻译中的性别问题

Python django i18n翻译中的性别问题,python,django,localization,internationalization,Python,Django,Localization,Internationalization,我需要解决一个性别翻译问题,Django似乎还没有实现 我需要翻译英文: <p>Welcome, {{ username }}</p> 欢迎,{{username} 西班牙语有两种形式,男女各一种。如果用户是男性: <p>Bienvenido, {{ username }}</p> Bienvenido,{{username} 如果是女性: <p>Bienvenida, {{ username }}</p> Bie

我需要解决一个性别翻译问题,Django似乎还没有实现

我需要翻译英文:

<p>Welcome, {{ username }}</p>
欢迎,{{username}

西班牙语有两种形式,男女各一种。如果用户是男性:

<p>Bienvenido, {{ username }}</p>
Bienvenido,{{username}

如果是女性:

<p>Bienvenida, {{ username }}</p>
Bienvenida,{{username}

注意区别(bienvenido/bienvenida)

有什么办法可以做到这一点吗

谢谢


H.

Django只是Python,因此如果需要,您可以直接使用Python gettext绑定,我看不出您有任何理由不能编写{%gender\u trans[gender]}标记。

在等待支持上下文时,一个简单的替代方法是稍微改变西班牙语的句子,并使用一种问候语,这种问候语不会因一个人的性别而有所不同。例如,您可以使用“hola”或其他等效术语。

我解决这个问题的方法是:

{% if profile.male %}
{% blocktrans with profile.name as male %}Welcome, {{ male }}{% endblocktrans %}
{% else %}
{% blocktrans with profile.name as female %}Welcome, {{ female }}{% endblocktrans %}
{% endif %}

“gender_trans”可能不是标记的完美命名:-)Python gettext库不支持上下文,请参阅。Babel在这里也没有帮助,因为msgctx支持计划用于1.0版本,请参见OP示例,性别取决于变量的内容:因此,我们需要一种从“用户名”中提取“性别”的方法@zgoda Python 3.8终于支持了
pgettext
和采用上下文的类似函数:作为对本期的更新,Django 1.3现在支持上下文标记:它可能适用于西班牙语,但不适用于其他翻译语言(如果有…),Django现在支持上下文。