Tengo un sitio web django. Estoy agregando traducciones a con un selector de idioma que enumera los idiomas disponibles en el idioma del usuario. Me gustaría que el menú desplegable incluya la ortografía nativa también.Django Language Selector en el idioma local y nativo
Actualmente se tiene el siguiente aspecto:
Inglés
holandesa
Chino simplificado
Cuando cambio a china que parece:
英语
荷兰语
简体 中文
soy tratando de que se vea como:
Inglés/Inglés
holandesa/Nederlands
chino simplificado/简体 中文
settings.py incluye:
ugettext = lambda s: s
LANGUAGES = (
('en', ugettext('English')),
('nl', ugettext('Dutch')),
('zh-cn', ugettext('Simplified Chinese')),
)
base.html:
{% load i18n %}
{% get_available_languages as LANGUAGES %}
<form action="/i18n/setlang/" method="post">{% csrf_token %}
<input name="next" type="hidden" value="/" />
{% csrf_token %}
<select name="language">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
Mi idea era añadir otro elemento a idiomas que es el idioma nativo, como:
LANGUAGES = (
('en', ugettext('English'), 'English'),
('nl', ugettext('Dutch'), 'Nederlands'),
('zh-ch', ugettext('Simplified Chinese'), '简体中文'),)
Pero Django parece esperar una tupla de 2 elementos para IDIOMAS. ¿Alguna otra idea?
EDITAR por el comentario de Alexander: pensé que podría ser una solución más simple, pero después de cambiar el código:
<form action="/i18n/setlang/" method="post">{% csrf_token %}
<input name="next" type="hidden" value="/" />
<select name="language">
<option value="en">English</option>
<option value="nl">Dutch\Nederlands</option>
<option value="ru">Russian\Русский</option>
<option value="zh-cn">Simplified Chinese-简体中文</option>
</select>
<input type="submit" value="Go" />
</form>
Las secuencias de comandos rusos y chinos se están presentando como signos de interrogación - \ rusa ?? ?????, chino - ????
Tengo <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
en el html, otro texto en ruso y chino (fuera de este formulario) parece estar bien.
No nos molestamos con un problema así: una parte codificada en la plantilla y eso es todo. –
Tendría que cambiar/establecer idiomas y enumerarlos a través de todos ellos para generar todas las traducciones nativas posibles de cada nombre de idioma. Es mucho más fácil incluir un dict de nombres predefinido con ortografía nativa para cada idioma que desee y pasarlo a la plantilla. – astevanovic