2009-08-25 15 views
10

Necesito resolver un problema de traducción de género, y Django no parecen tener gettext contexts aplicado todavía ...problema de género en la traducción de Django i18n

Necesito traducir del Inglés:

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

En dos formas de español, una para cada género. Si el usuario es un varón:

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

y si es una hembra:

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

nota la diferencia (bienvenido/bienvenida)

¿Hay alguna forma de conseguir este hecho?

Gracias,

H.

+0

Así como una actualización de este tema, marcadores contextuales son ahora soportados en Django 1.3: http: //docs.djangoproject.com/en/dev/topics/i18n/internationalization/# context-markers –

Respuesta

4

Django Python es sólo lo que puede utilizar los enlaces de gettext Python directamente si es necesario, no veo ninguna razón por la que no se podía escribir {% gender_trans etiqueta [gender]%}

+25

"gender_trans" puede no ser el nombre perfecto para la etiqueta :-) –

+0

La biblioteca de Python gettext no admite contextos, consulte http://bugs.python.org/issue2504. Babel no ayuda aquí también, ya que la compatibilidad con msgctx está planificada para la versión 1.0, consulte http://babel.edgewall.org/milestone/1.0 – zgoda

+0

En el ejemplo de OP, el género depende del contenido de una variable: por lo tanto, necesitamos una forma de extraer 'gender' de 'username'! – Don

2

Mientras se esperan los contextos para ser apoyados, una alternativa fácil sería cambiar ligeramente la oración en español y usar un saludo que no varíe de acuerdo con el género de una persona. Por ejemplo, puede usar "hola" u otro término equivalente.

+0

Puede funcionar para español, pero no para otros idiomas traducidos (si hay alguno ...) – Don

9

La forma en que he resuelto esto es:

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