ホームページ >バックエンド開発 >Python チュートリアル >Django は中国語の設定方法をサポートします
今日、現在の Django 1.9.6 を使用して Django プロジェクトを作成しました。プロジェクトを作成した後、settings.py で中国語表示のサポートを設定し (管理インターフェイスのデフォルトの英語を中国語に変更するなど、最も簡単です)、
TIME_ZONE = 'Asia/Shanghai' LANGUAGE_CODE = 'zh-cn'を定義します。
もちろん、TIME_ZONE はタイムゾーンを指定するだけであり、中国語表示とは関係ありません。ここではデフォルト値が変更されます。その結果、プロジェクトの実行時に次のようなエラーが発生しました:
django IOError: No translation files found for default language zh-cn
つまり、zh-cn に対応するローカリゼーション ファイルが見つかりませんでした。一般的に、zh-cn エンコーディングに対応するローカライゼーション フォルダーは zh_CN です。django のインストール ディレクトリに移動して zh_CN を検索しましたが、その結果は contrib サブディレクトリの下にある一連のサブディレクトリの中に見つかりませんでした。 django のインストール ディレクトリには zh_CN はありませんが、zh_Hans があります。このバージョンの Django に zh_CN フォルダーがない理由はわかりません。バグかもしれません。インターネット上の誰かが、zh_Hans ディレクトリ全体をコピーして zh_CN という名前を付けると解決できると述べました。試してみたところ、管理インターフェイスに中国語が表示されました。この比較的模倣的な方法に隠れた危険性があるかどうかについては、まだわかりません。それについては後で説明します。
とはいえ、実際には次のような国際化ファイルを生成するオーソドックスな方法があります:
django-admin.py makemessages -l zh_CN
ただし、これには gettext コンポーネントが必要です。Windows で開発している場合は、このコンポーネントを自分で
にインストールする必要があります。 http://ftp.gnome.org/pub/gnome/binaries/win32/dependency/最新バージョンの gettext-runtime-X.zip および gettext-tools-X.zip をダウンロードします (注: X はバージョン番号です)。それを解凍すると、2 つの bin ディレクトリをマージしてシステム環境変数に入れることができます。ただし、この方法は検証していませんので、興味のある方は試してみてください。
後でもう一度考えたのですが、django の古いバージョンには zh_CN があり、これがバグであると言うのは、おそらく比較的低レベルであり、そうではないはずです。そこで再度確認したところ、zh_Hans が zh_CN を置き換えた可能性があることがわかりました。 Han は中国語の文字、s は簡体字を意味します。いずれにせよ、LANGUAGE_CODE = 'zh-hans' に設定すると、通常通り中国語が表示されます。
zh-cn は Django1.9 で期限切れになります。新しい形式は zh-hans ですが、drf3.1.0 はこのタイプの言語をサポートしていません。
上記は、django1.9 では zh-cn の期限が切れていることを意味します。代わりに zh-hans を使用できますが、Django の一部のサードパーティ モジュールはこの変更に対応していない可能性があります。
要するに、仁は仁を見て、智は智を見て、実はこんなふうに勉強する必要はないんです、急に興味が湧いたのでちょっと勉強してみました。
追記: LANGUAGE_CODE = 'zh-cn' の書き方はインターネット上に色々あり、zh_CN、zh-CN など様々な書き方があります。また、これこれの書き方しか使えない、などという人もいます。とにかく、すべてを試しましたが、違いがわかりません。
余談ですが、私は次の段落を見るまで、settings.py の USE_I18N と USE_L10N が何を意味するのか知りませんでした:
Web サービスがセットアップされると、世界中のさまざまな国のユーザーからのアクセスを受信できるようになります。このため、開発者はソフトウェアをさまざまな言語に適合させる、つまり国際化とローカリゼーションを調整する必要があります。国際化
-- 国際化。i と n の間には 18 文字があり、I18N と呼ばれます。ローカリゼーション -- ローカリゼーション。l と n の間には 10 文字があり、L10N と略されます。国際化とは、プログラム開発者にとって、Web
製品がどこにでも適用できる可能性があることを意味し、ローカリゼーションとは、翻訳者にとって、国際的なプログラムを特定の地域で使用するために実際に翻訳するプロセスを指します。
以上がDjango は中国語の設定方法をサポートしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。