エリア設定データ

同時に message catalogs アプリケーション内の任意のメッセージをローカル化することができ、多くのアプリケーションで使用される多くの文字列がいつでも翻訳を得ることができます。

例えば、ユーザが選択可能な国/地域リストを有し、ユーザが好きな言語でこれらの国/地域の名前を表示することを希望すると仮定する。Babelに付随する地域設定データを使用して、アプリケーションでこれらすべての国/地域の名前を自分で翻訳するのではなく、これらのデータに基づいて翻訳することができます。 Common Locale Data Repository (CLDR)Unicode Consortium それがそうです。

♪the Locale クラス

通常、あなたは通過することができます Locale Babelが提供したクラス:

>>> from babel import Locale
>>> locale = Locale('en', 'US')
>>> locale.territories['US']
u'United States'
>>> locale = Locale('es', 'MX')
>>> locale.territories['US']
u'Estados Unidos'

国/地域名のほかに、地域設定データは、言語、スクリプト、変形、タイムゾーンなどの名前へのアクセスを提供します。いくつかのデータは数字と日付フォーマットと密接に関連している。

ほとんどが対応しています Locale 属性は辞書に戻り、キーはISO国/地域および言語コードのようなコードである。関連仕様の参照については、APIドキュメントを参照してください。

可能サブラベル

処理領域設定時に、領域設定フラグが完全に記述されていない場合がある。例えば一般的には zh_TW しかし,この識別子はCLDRがカバーする領域設定として解析できない.この場合、Babelの領域設定識別子解析器は、所望の領域設定を得るために、最も可能なサブタグの解析を試みる。

>>> from babel import Locale
>>> Locale.parse('zh_TW')
Locale('zh', territory='TW', script='Hant')

これはまた、ある地域の最適な領域設定を探すために使用されてもよい。この場合,領域コードの前にプレフィックスを付加する必要がある. und (未知言語識別子):

>>> Locale.parse('und_AZ')
Locale('az', territory='AZ', script='Latn')
>>> Locale.parse('und_DE')
Locale('de', territory='DE')

Babelは現在ファジィ領域設定(データファイルが完全にサポートされていない領域設定)を扱うことができないため,CLDRデータで完全にサポートされている領域設定のみを受ける.これは未来に変わるだろうが、現在この制限は適切だ。

エリア設定表示名

言語環境自体は,言語環境自体や他の言語環境を記述するために用いることができる.これは、主に、言語環境オブジェクトが与えられ、その仕様の表示名、言語名、および他の情報を提供することを要求することができることを意味する。領域設定は互いに交差参照しているため、CLDRでサポートされている任意の言語の領域設定名を要求することができます。

>>> l = Locale.parse('de_DE')
>>> l.get_display_name('en_US')
u'German (Germany)'
>>> l.get_display_name('fr_FR')
u'allemand (Allemagne)'

表示名は、通常、あなたが望むものではない領域設定(言語、領域、スクリプト、および変形)を識別するすべての情報を含む。一部の情報の提供を要求することもできます。

>>> l.get_language_name('de_DE')
u'Deutsch'
>>> l.get_language_name('it_IT')
u'tedesco'
>>> l.get_territory_name('it_IT')
u'Germania'
>>> l.get_territory_name('pt_PT')
u'Alemanha'

カレンダー表示名

♪the Locale クラスは、平日や月の名前など、カレンダー表示に関連する多くの領域に表示名を設定するアクセスを提供します。

これらの表示名は、もちろん日付フォーマットのために使用されるが、例えば、ユーザの好ましい言語で月リストをユーザに表示するために使用されてもよい。

>>> locale = Locale('es')
>>> month_names = locale.months['format']['wide'].items()
>>> for idx, name in sorted(month_names):
...     print name
enero
febrero
marzo
abril
mayo
junio
julio
agosto
septiembre
octubre
noviembre
diciembre