Django i18n 翻译中的性别问题

12 投票
4 回答
1953 浏览
提问于 2025-04-15 13:51

我需要解决一个性别翻译的问题,但Django似乎还没有实现gettext上下文...

我需要从英语翻译:

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

在西班牙语中有两种形式,分别对应每个性别。如果用户是男性:

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

如果是女性:

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

注意这个区别(bienvenido/bienvenida)

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

谢谢,

H.

4 个回答

2

在等待上下文支持的同时,一个简单的替代方法是稍微修改西班牙语句子,使用一个不受性别影响的问候语。比如,你可以用“hola”或者其他类似的词。

10

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

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

Django其实就是用Python写的,所以如果你需要的话,可以直接使用Python的gettext功能。我觉得你完全可以写一个{% gender_trans [gender] %}这样的标签。

撰写回答