Mam stronę django Dodaję tłumaczenia do z selektorem języków, który wymienia dostępne języki w języku użytkownika. Chciałbym, aby lista zawierała również pisownię natywną.Selektor języka Django w języku lokalnym i ojczym
Obecnie wygląda to tak:
English
holenderski
chiński uproszczony
Kiedy przełączyć na chińskim wygląda:
英语
荷兰语
简体 中文
jestem próbując sprawić, aby wyglądało:
Angielski/angielski
Holenderski/Nederlands
Uproszczony Chiński/简体 中文
settings.py zawiera:
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>
Moja myśl była, aby dodać kolejny element do języków, które jest język ojczysty, na przykład:
LANGUAGES = (
('en', ugettext('English'), 'English'),
('nl', ugettext('Dutch'), 'Nederlands'),
('zh-ch', ugettext('Simplified Chinese'), '简体中文'),)
Jednak Django wydaje się oczekiwać 2-krotnej krotki dla JĘZYKÓW. Jakieś inne pomysły?
EDIT na komentarz Aleksandra: Myślałem, że może być prostsze rozwiązanie, ale po zmianie kodu:
<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>
skrypty rosyjskich i chińskich są wyświetlane jako znaki zapytania - Rosyjski \ ?? ?????, Chiński-????
Mam <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
w html, inny tekst rosyjski i chiński (poza tym formularzem) wygląda dobrze.
Nie zawracaliśmy sobie głowy takim problemem: zakodowano jedną część w szablonie i to wszystko. –
Musisz przełączać/ustawiać języki i wyliczyć je wszystkie, aby wygenerować wszystkie możliwe natywne tłumaczenia dla każdej nazwy języka. O wiele łatwiej jest po prostu osadzić predefiniowany dyktat nazw z pisownią natywną dla każdego języka i przekazać go do szablonu. – astevanovic