2009-08-25 4 views
10

мне нужно решить проблему гендерного перевода, и Django, кажется, не имеют gettext contexts реализованы еще ...Пол проблема в Джанго i18n перевод

Мне нужно перевести с английского:

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

В двух формах испанский, по одному для каждого пола. Если пользователь является мужчина:

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

и если это женщина:

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

примечания разницы (Бьенвенидо/Bienvenida)

Есть ли способ получить это сделано?

Спасибо,

H.

+0

Так как обновление к этому вопросу, контекстные маркеры теперь поддерживаются в Django 1.3: HTTP: //docs.djangoproject.com/en/dev/themes/i18n/интернационализация/# контекстуальные маркеры –

ответ

4

Django является только Python, так что вы можете использовать GetText привязок Python непосредственно, если вам нужно, я не вижу никаких причин, вы не могли бы написать {% gender_trans [gender]%}.

+25

«gender_trans» не может быть идеальным наименованием для тега :-) –

+0

Python gettext library не поддерживает контексты, см. http://bugs.python.org/issue2504. Babel здесь тоже не помогает, поскольку поддержка msgctx запланирована на выпуск 1.0, см. Http://babel.edgewall.org/milestone/1.0 – zgoda

+0

В примере OP пол зависит от содержимого переменной: так что нам нужно способ извлечь «пол» из «имени пользователя»! – Don

2

Ожидая, что контексты будут поддерживаться, легкой альтернативой было бы небольшое изменение испанского предложения и использование приветствия, которое не меняется в зависимости от пола человека. Например, вы можете использовать «hola» или какой-либо другой эквивалентный термин.

+0

Он может работать на испанский, но не для других переведенных языков (если есть ...) – Don

9

Путь, который я решил это:

{% if profile.male %} 
{% blocktrans with profile.name as male %}Welcome, {{ male }}{% endblocktrans %} 
{% else %} 
{% blocktrans with profile.name as female %}Welcome, {{ female }}{% endblocktrans %} 
{% endif %} 
Смежные вопросы