国際化とローカル化¶
概要¶
国際化とローカル化の目的は、単一の Web アプリケーションが、閲覧者に合わせた言語や表示形式でコンテンツを提供できるようにすることです。
Django は テキスト翻訳 、日時と数字の表示形式 、タイムゾーン をフルサポートしています。
Django は、本質的には以下の2つを行います:
- 開発者やテンプレート作成者に、アプリケーションのどの部分がローカルな言語や文化に合わせて翻訳や表示形式の設定がされるべきかを指定できるようにします。
- 特定のユーザの言語設定に従って、彼らに対して Web アプリケーショ ンをローカル化するために、フックを使います。
当然ながら、翻訳は対象の言語により、表示形式は対象の国によります。これらの情報は、ブラウザによって Accept-Language
ヘッダにて提供されます。ただし、タイムゾーンは簡単には利用できません。
定義¶
「国際化 (internationalization) 」と「ローカル化 (localization) 」という言葉は混乱を招くことがあるため、ここで簡単に定義しておきます:
- 国際化 (internationalization)
- ソフトウェアをローカル化に備えさせることです。通常、開発者によって行われます。
- ローカル化 (localization)
- 翻訳およびローカルな表示形式を記述することです。通常、翻訳者によって行われます。
より詳しくは、W3C Web Internationalization FAQ、Wikipedia article、GNU gettext documentation をご覧ください。
警告
翻訳と表示形式は、それぞれ USE_I18N
と USE_L10N
設定によって制御されますが、どちらも国際化とローカル化を含んでいます。この設定名は Django の歴史における不幸な出来事の 1 つです。
その他、私たちが共通の言葉を使うにあたり、いくつかの専門用語が手助けとなるでしょう:
- ロケール名
- A locale name, either a language specification of the form
ll
or a combined language and country specification of the formll_CC
. Examples:it
,de_AT
,es
,pt_BR
. The language part is always in lowercase and the country part in upper case. The separator is an underscore. - 言語コード
- Represents the name of a language. Browsers send the names of the
languages they accept in the
Accept-Language
HTTP header using this format. Examples:it
,de-at
,es
,pt-br
. Language codes are generally represented in lowercase, but the HTTPAccept-Language
header is case-insensitive. The separator is a dash. - メッセージファイル
- メッセージファイルは一つの言語を表すプレーンテキストファイルです。この中では、利用可能な全ての 翻訳文字列 と、それらがその言語でどのように表されるかが記述されます。ファイル拡張子は
.po
です。 - 翻訳文字列
- 翻訳可能なリテラル文字列です。
- 表示形式ファイル
- 書式設定ファイルは Python モジュールで、対象のロケールに対するデータの表示形式を定義します。