私はdjangoのウェブサイトを持っています。私は、利用者の言語で利用可能な言語をリストする言語セレクタを翻訳に追加しています。ドロップダウンにもネイティブのスペルを含めるようにしたいと思います。Django言語セレクタ(現地語と母国語)
現在のところ、それは次のようになります。
英語
オランダ
簡体字中国語
私は中国に切り替えると、それは次のようになります。
私は
中文 英语
荷兰语
简体それを次のようにしようとしています:
オランダ/オランダ
簡体字中国語/简体中文
settings.pyは含まれています:
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>
私の考えはあるものの言語に別の項目を追加しました
LANGUAGES = (
('en', ugettext('English'), 'English'),
('nl', ugettext('Dutch'), 'Nederlands'),
('zh-ch', ugettext('Simplified Chinese'), '简体中文'),)
のような母国語3210
しかし、DjangoはLANGUAGESの2項目タプルを期待しているようです。他のアイデア?アレクサンダーさんのコメントあたり
EDIT: 私はそれが簡単な解決策かもしれないと思ったが、コードの変更後:
<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>
をロシアと中国のスクリプトは疑問符として表示されている - ロシアの\を?? ?????、中国語 - ????
私は<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
をhtmlに、他のロシア語および中国語のテキスト(このフォームの外)は問題なく表示されます。
私たちは、このような問題を抱えていませんでした。テンプレートにハードコーディングされた部分がありました。 –
各言語名の可能なすべてのネイティブ翻訳を生成するには、言語を切り替えて設定し、すべてを列挙しなければなりません。あなたが望む言語ごとにネイティブのスペルで名前の事前定義されたdictを埋め込み、それをテンプレートに渡す方がはるかに簡単です。 – astevanovic