国際化とローカライズ¶
概要¶
国際化とローカライズの目的は、単一の Web アプリケーションが、閲覧者に合わせた言語や表示形式でコンテンツを提供できるようにすることです。
Django は テキスト翻訳 、日時と数字の表示形式 、タイムゾーン をフルサポートしています。
Django は、本質的には以下の2つを行います:
- 開発者やテンプレート作成者に、アプリケーションのどの部分がローカルな言語や文化に合わせて翻訳や表示形式の設定がされるべきかを指定できるようにします。
- 特定のユーザの言語設定に従って、彼らに対して Web アプリケーションをローカライズするために、フックを使います。
翻訳は対象の言語により、表示形式は対象の国によります。これらの情報は、ブラウザによって Accept-Language
ヘッダにて提供されます。ただし、タイムゾーンは簡単には利用できません。
定義¶
「国際化 (internationalization) 」と「ローカライズ (localization) 」という言葉は混乱を招くことがあるため、ここで簡単に定義しておきます:
- 国際化 (internationalization)¶
- ソフトウェアをローカライズに備えさせることです。通常、開発者によって行われます。
- ローカライズ (localization)¶
- 翻訳およびローカルな表示形式を記述することです。通常、翻訳者によって行われます。
より詳しくは、W3C Web Internationalization FAQ、Wikipedia article、GNU gettext documentation をご覧ください。
警告
翻訳は USE_I18N
設定によって制御されます。しかし、これは国際化とローカライズを含んでいます。この設定の名前は Django の不幸な歴史の結果です。
その他、私たちが共通の言葉を使うにあたり、いくつかの専門用語が手助けとなるでしょう:
- ロケール名¶
- ロケール名は
ll
形式の言語指定、またはll_CC
形式の言語と国を組み合わせた指定です。たとえばit
,de_AT
,es
,pt_BR
,sr_Latn
. 言語部分は常に小文字です。国名部分は2文字以上の場合はタイトルケース、それ以外は大文字です。区切り文字はアンダースコアです。 - 言語コード¶
- 言語名を表します。ブラウザは
Accept-Language
HTTPヘッダの中でこの表示形式を使って表示可能な言語名を通知します。 例えばit
、de-at
、es
、pt-br
が該当します。言語コードは、一般的に小文字で表されますが、HTTP のAccept-Language
ヘッダーは大文字・小文字を区別しません。区切り文字はダッシュ (-) です。 - メッセージファイル¶
- メッセージファイルは一つの言語を表すプレーンテキストファイルです。この中では、利用可能な全ての 翻訳文字列 と、それらがその言語でどのように表されるかが記述されます。ファイル拡張子は
.po
です。 - 翻訳文字列¶
- 翻訳可能なリテラル文字列です。
- 表示形式ファイル¶
- 書式設定ファイルは Python モジュールで、対象のロケールに対するデータの表示形式を定義します。