5

ユーザーの言語で使用可能な言語をリストする言語セレクターを使用して、翻訳を追加しているdjango Webサイトがあります。ドロップダウンにネイティブのスペルも含めたいと思います。

現在、次のようになっています:
英語
オランダ語
簡体字中国語

中国語に切り替えると、次のようになります。
英语荷
兰语<br> 简体中文

私はそれを次のようにしようとしています:
英語/英語
オランダ語/オランダ語
簡体字中国語/简体中文

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に次のような別の項目を追加することでした:

LANGUAGES = (
    ('en', ugettext('English'), 'English'),
    ('nl', ugettext('Dutch'), 'Nederlands'),
    ('zh-ch', ugettext('Simplified Chinese'), '简体中文'),)

しかし、Django は LANGUAGES に 2 項目のタプルを期待しているようです。他のアイデアはありますか?

アレクサンダーのコメントごとに編集: 私はそれがより簡単な解決策かもしれないと思ったが、コードを変更した後:

        <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-简体中文&lt;/option>
        </select>
        <input type="submit" value="Go" />
    </form>  

ロシア語と中国語のスクリプトが疑問符として表示されます - ロシア語\???????、中国語-????

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> HTML にある他のロシア語と中国語のテキスト (このフォーム以外) は正常に表示されます。

4

2 に答える 2

6

これを試して:

LANGUAGES = (
    ('en',    '{}/{}'.format(ugettext('English'), 'English')),
    ('nl',    '{}/{}'.format(ugettext('Dutch'), 'Nederlands')),
    ('zh-cn', '{}/{}'.format(ugettext('Simplified Chinese'), '简体中文')),
)

次に、テンプレートでこれを使用できます。

{% for lang in LANGUAGES %}
    <option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
于 2012-07-19T02:20:25.443 に答える
1

アレクサンダーの提案を受けて、上記の編集のコードを適切に機能させることができました。<meta http-equiv="content-type" content="text/html;charset=UTF-8" /> 必要な「頭」領域内に行がありませんでした。それは私に????を与えていました。漢字があったはずの場所。

実際に動作しているのを見た後、2 つの言語セレクターがあるかもしれません。

また、言語リストをモジュールに入れて、LANGUAGES を取得するのと同様にテンプレートに渡します。

于 2012-07-19T21:07:58.610 に答える