Programmer's Reference Guide
| 導入 |
Zend_Locale の使用法
Zend_Locale は、各ロケールについての情報も、
自分自身のロケールに合わせた形式で提供します。
たとえば他のロケールの名前や曜日名、月名などがこれにあたります。
ロケールオブジェクトのコピー、クローン作成およびシリアライズ
» オブジェクトのクローンを作成し、
ロケールオブジェクトを正確かつ効率的に複製することができます。
ロケール対応のメソッドのほとんどは、$locale->toString()
が返す文字列表現のロケールを受け付けます。
例1 clone
<?php
require_once 'Zend/Locale.php';
$locale = new Zend_Locale('ar');
// $locale オブジェクトをシリアライズして保存します
$serializedLocale = $locale->serialize();
// もとのオブジェクトを再度作成します
$localeObject = unserialize($serializedLocale);
// ロケールの文字列表記を取得します
$stringLocale = $locale->toString();
// $local オブジェクトの複製を作成します
$copiedLocale = clone $locale;
print "copied: ", $copiedLocale->toString();
print "copied: ", $copiedLocale; // PHP は、__toString() 経由で自動的に toString() をコールします
等式
Zend_Locale は、
二つのロケールを比較するための便利な関数も提供しています。
ロケール対応のクラスはすべて、これと同等の同一性チェック機能を提供しなければなりません。
例2 ロケールが同一かどうかの調査
<?php
require_once 'Zend/Locale.php';
$locale = new Zend_Locale();
$mylocale = new Zend_Locale('en_US');
// ロケールが同一かどうかを調べます
if ($locale->equals($mylocale)) {
print "これらのロケールは同一です";
}
デフォルトのロケール
getDefault() メソッドは、関連するロケールの配列を返します。
これは、ユーザのウェブブラウザからの情報 (取得できる場合)、
ホストサーバの環境変数および ZF の設定をもとに取得します。
Zend_Locale のコンストラクタの最初のパラメータで、
(BROWSER、ENVIRONMENT あるいは FRAMEWORK のうちの)
どの情報を優先するかを選択します。
二番目のパラメータでは、マッチしたロケールをすべて返すのか
あるいは最初にマッチした/一番マッチしたものを返すのかを指定します。
ロケール対応のコンポーネントは、通常は最初のロケールのみを使用します。
優先度が指定されている場合は、それも考慮します。
例3 デフォルトロケールの取得
<?php
require_once 'Zend/Locale.php';
$locale = new Zend_Locale();
// すべてのデフォルトロケールを返します
$found = $locale->getDefault();
print_r($found);
// ブラウザのロケールのみを返します
$found2 = $locale->getDefault(Zend_Locale::BROWSER,TRUE);
print_r($found2);
BROWSER、ENVIRONMENT あるいは FRAMEWORK
のいずれかに対応するデフォルトロケールを取得するには、
それぞれ対応するメソッドを使用します。
-
getEnvironment() -
getBrowser() -
getLocale()
新しいロケールの設定
新しいロケールを設定するには、関数 setLocale()
を使用します。この関数は、ロケール文字列をパラメータとして受け取ります。
ロケールを省略した場合は、ロケールが
自動的に選択
されます。Zend_Locale オブジェクトは "light"
なので、このメソッドは既存のインスタンスを参照しているすべてのコードに影響をおよぼします。
例4 setLocale
<?php
require_once 'Zend/Locale.php';
$locale = new Zend_Locale();
// 実際のロケール
print $locale->toString();
// 新しいロケール
$locale->setLocale('aa_DJ');
print $locale->toString();
言語および地域の取得
getLanguage() を使用して、二文字の言語コード文字列を
ロケール識別文字列から取得します。また、
getRegion() を使用して、二文字の地域コード文字列を
ロケール識別文字列から取得します。
例5 getLanguage および getRegion
<?php
require_once 'Zend/Locale.php';
$locale = new Zend_Locale();
// ロケールが 'ja_JP' の場合は、'ja' が言語として返されます
print $locale->getLanguage();
// ロケールが 'ja_JP' の場合は、地域として 'JP' が返されます
print $locale->getRegion();
地域化された文字列の取得
getTranslationList() を使用すると、地域化された情報を利用することができます。
これらの情報は、各地域に特化したデータを顧客に対して提供する際に
翻訳の必要がなくなるので便利です。
これらはすでに使用可能となっています。
情報の一覧は、常に連想配列形式で返されます。 複数の値を明示的な型に渡したい場合は、複数の値ではなく配列を渡す必要があります。
例6 getTranslationList
<?php
require_once 'Zend/Locale.php';
$locale = new Zend_Locale('de_AT');
$list = $locale->getTranslationList('language');
print_r ($list);
// キーと値の組み合わせの例...
// [de] -> Deutsch
// [en] -> Englisch
// これらのキーのいずれかを getTranslation() メソッドで使用します
print $locale->getTranslation('de', 'language', 'zh');
// これは、言語 'de' を中国語で表した文字列を返します
すべての言語についてこの情報を取得できます。しかし、 言語によってはすべての情報が提供されているわけではないものもあります。 これらの型のいくつかについては、その型に特化した関数を用意して簡単に使用できるようにしています。 詳細はこの一覧を参照ください。
| 型 | 説明 |
|---|---|
| Language |
地域化された全言語の一覧を返します。
ロケールの言語部分がキー、そしてその翻訳が値となります。
利便性のために
getLanguageTranslationList()
メソッドも使用することが可能です。
|
| Script |
地域化された全文字の一覧を返します。
ロケールの文字部分がキー、そしてその翻訳が値となります。
利便性のために
getScriptTranslationList()
メソッドも使用することが可能です。
|
| Territory |
地域化された全領域の一覧を返します。
ここに含まれるのは国と大陸、領域です。
領域と大陸のみを取得するには値として '1' を使用します。
国のみを取得するには値として '2' を使用します。
可能な場合、ロケールの国部分をキーとして使用します。
それ以外の場合は、この領域が使用している公式 ISO コードをキーとして使用します。
領域を翻訳したものが値となります。利便性のために、
すべての国を取得する getCountryTranslationList()
メソッドとすべての領域 (国以外) を取得する
getTerritoryTranslationList() メソッドが用意されています。
値を省略した場合は、両方の一覧を取得します。
|
| Variant | 地域化された文字変化形の一覧を返します。 変化形がキー、そしてその翻訳が値となります。 |
| Key | 地域化されたキーの一覧を帰します。 このキーは、翻訳に使用する一般的な値となります。 通常はカレンダーや文字照合、通貨などです。 キーが配列のキー、そしてその翻訳が値となります。 |
| Type | 翻訳されたキーの型の一覧を返します。 これらは、カレンダーの表現や文字列照合方式を表します。 値として 'collation' を使用すると、文字列照合方式の一覧を取得します。 値として 'calendar' を使用すると、カレンダーの型の一覧を取得します。 値を省略した場合は、両方の一覧を取得します。 型がキー、そしてその翻訳が値となります。 |
| Layout | 特別なテキスト部分の書式を決めるルールの一覧を返します。 |
| Characters | このロケールで使用できる文字の一覧を返します。 |
| Delimiters | このロケールで使用できるクォート文字の一覧を返します。 |
| Measurement | 単位の値の一覧を返します。この一覧は廃止予定です。 |
| Months | このロケールにおけるすべての月の表現の一覧を返します。 異なる表現方式がある場合は配列として返されます。 値を省略すると、グレゴリオ暦におけるすべての月の一覧を返します。 値として、既知の暦の名前を指定することができます。 その場合は指定した暦における月の一覧を返します。 単純に行うには Zend_Date を使用します。 |
| Month | このロケールにおけるすべての月名の一覧を返します。 値を省略すると、グレゴリオ暦で通常使用する完全な月名を返します。 各月の数値がキー、そして月名の翻訳が値となります。 値として配列を指定すると、さまざまな暦や書式に対応する月を取得できます。 配列の最初のエントリが暦、2 番目は使用するコンテキスト、 そして 3 番目が返す幅となります。 単純に行うには Zend_Date を使用します。 |
| Days | このロケールにおけるすべての曜日の表現の一覧を返します。 異なる表現方式がある場合は配列として返されます。 値を省略すると、グレゴリオ暦におけるすべての曜日の一覧を返します。 値として、既知の暦の名前を指定することができます。 その場合は指定した暦における曜日の一覧を返します。 単純に行うには Zend_Date を使用します。 |
| Day | このロケールにおけるすべての曜日名の一覧を返します。 値を省略すると、グレゴリオ暦で通常使用する完全な曜日名を返します。 英語の各曜日名の略称がキー、そして曜日名の翻訳が値となります。 値として配列を指定すると、さまざまな暦や書式に対応する曜日を取得できます。 配列の最初のエントリが暦、2 番目は使用するコンテキスト、 そして 3 番目が返す幅となります。 単純に行うには Zend_Date を使用します。 |
| Week | ロケール内で週の計算を適切に行うための値の一覧を返します。 単純に行うには Zend_Date を使用します。 |
| Quarters | このロケールにおけるすべての四半期の表現の一覧を返します。 異なる表現方式がある場合は配列として返されます。 値を省略すると、グレゴリオ暦におけるすべての四半期の一覧を返します。 値として、既知の暦の名前を指定することができます。 その場合は指定した暦における四半期の一覧を返します。 |
| Quarter | このロケールにおけるすべての四半期名の一覧を返します。 値を省略すると、グレゴリオ暦で通常使用する完全な四半期名を返します。 四半期番号がキー、そして四半期名の翻訳が値となります。 値として配列を指定すると、さまざまな暦や書式に対応する四半期を取得できます。 配列の最初のエントリが暦、2 番目は使用するコンテキスト、 そして 3 番目が返す幅となります。 |
| Eras | このロケールにおけるすべての紀元の表現の一覧を返します。 値を省略すると、グレゴリオ暦におけるすべての紀元の一覧を返します。 値として、既知の暦の名前を指定することができます。 その場合は指定した暦における紀元の一覧を返します。 |
| Era | このロケールにおけるすべての紀元名の一覧を返します。 値を省略すると、グレゴリオ暦で通常使用する完全な紀元名を返します。 紀元番号がキー、そして紀元名の翻訳が値となります。 値として配列を指定すると、さまざまな暦や書式に対応する紀元を取得できます。 配列の最初のエントリが暦、 そして 2 番目が返す幅となります。 |
| Date | このロケールにおけるすべての日付フォーマットの一覧を返します。 使用する日付フォーマットの名前がキー、そしてフォーマットそのものが値となります。 値を省略すると、グレゴリオ暦における日付フォーマットの一覧を返します。 暦の名前を指定すると、さまざまな暦に対応する日付フォーマットを取得できます。 単純に行うには Zend_Date を使用します。 |
| Time | このロケールにおけるすべての時刻フォーマットの一覧を返します。 使用する時刻フォーマットの名前がキー、そしてフォーマットそのものが値となります。 値を省略すると、グレゴリオ暦における時刻フォーマットの一覧を返します。 暦の名前を指定すると、さまざまな暦に対応する時刻フォーマットを取得できます。 単純に行うには Zend_Date を使用します。 |
| DateTime | このロケールにおけるすべての日付-時刻フォーマットの一覧を返します。 使用する日付-時刻フォーマットの名前がキー、そしてフォーマットそのものが値となります。 値を省略すると、グレゴリオ暦における日付-時刻フォーマットの一覧を返します。 暦の名前を指定すると、さまざまな暦に対応する日付-時刻フォーマットを取得できます。 単純に行うには Zend_Date を使用します。 |
| Field | 地域化した日付フィールドの一覧を返します。 これは、カレンダーや日付で 'month' や 'year' といった文字列を各国語で表示する際に使用します。 値を省略すると、グレゴリオ暦における一覧を返します。 暦の名前を指定すると、さまざまな暦に対応する一覧を取得できます。 |
| Relative | 地域化した相対日付の一覧を返します。 'yesterday' や 'tomorrow' といった文字列を各国語で表示する際に使用します。 値を省略すると、グレゴリオ暦における一覧を返します。 暦の名前を指定すると、さまざまな暦に対応する一覧を取得できます。 |
| Symbols | 数値表現に使用する文字の地域化した一覧を返します。 |
| NameToCurrency | 地域化した通貨名の一覧を返します。 通貨がキー、そして通貨名の翻訳が値となります。 Zend_Currency を使用します。 |
| CurrencyToName | 地域化した通貨名に対応する通貨の一覧を返します。 通貨名の翻訳がキー、そして通貨が値となります。 単純に行うには Zend_Currency を使用します。 |
| CurrencySymbol | 通貨に対応する地域化した通貨記号の一覧を返します。 通貨がキー、そして記号が値となります。 単純に行うには Zend_Currency を使用します。 |
| Question | 肯定 ('yes') および否定 ('no') に対応する地域化した文字列の一覧を返します。 単純に行うには Zend_Locale の getQuestion メソッド を使用します。 |
| CurrencyFraction | 通貨に対応する小数部の桁数を返します。 通貨がキー、そして小数部の桁数が値となります。 単純に行うには Zend_Currency を使用します。 |
| CurrencyRounding | 通貨に対応する丸め方式の一覧を返します。 通貨がキー、そして丸め方式が値となります。 単純に行うには Zend_Currency を使用します。 |
| CurrencyToRegion | その地域で使用する通貨の一覧を返します。 ISO3166 の値 ('region') が配列のキー、そして ISO4217 の値 ('currency') が配列の値となります。 単純に行うには Zend_Currency を使用します。 |
| RegionToCurrency | その通貨を使用している地域の一覧を返します。 ISO4217 の値 ('currency') が配列のキー、そして ISO3166 の値 ('region') が配列の値となります。 通貨が複数の地域で使用されている場合は、 空白で区切った形式になります。 単純に行うには Zend_Currency を使用します。 |
| RegionToTerritory | その国の領域一覧あるいはその領域に含まれるサブ領域の一覧を返します。 その通貨を使用している地域と領域の一覧を返します。 ISO の領域コード ('currency') が配列のキー、そして ISO3166 の値 ('region') が配列の値となります。 領域が複数の地域を含む場合は、 空白で区切った形式になります。 |
| TerritoryToRegion | 地域とその地域が存在する領域の一覧を返します。 ISO3166 のコード ('region') が配列のキー、 そして ISO の領域コード ('territory') が配列の値となります。 地域が複数の領域にまたがる場合は、 空白で区切った形式になります。 |
| ScriptToLanguage | その国で使用する文字の一覧を返します。 言語コードが配列のキー、そして文字コードが配列の値となります。 言語が複数の文字を含む場合は、 空白で区切った形式になります。 |
| LanguageToScript | ある文字を使用する言語の一覧を返します。 文字コードが配列のキー、そして言語コードが配列の値となります。 文字が複数の言語で用いられる場合は、 空白で区切った形式になります。 |
| TerritoryToLanguage | ある言語を使用する国の一覧を返します。 国コードが配列のキー、そして言語コードが配列の値となります。 言語が複数の国で用いられる場合は、 空白で区切った形式になります。 |
| LanguageToTerritory | 国と、その国で話されている言語の一覧を返します。 国コードが配列のキー、そして言語コードが配列の値となります。 領域が複数の言語を使用する場合は、 空白で区切った形式になります。 |
| TimezoneToWindows | Windows のタイムゾーンと、関連する ISO タイムゾーンの一覧を返します。 Windows のタイムゾーンが配列のキー、 そして ISO タイムゾーンが配列の値となります。 |
| WindowsToTimezone | ISO タイムゾーンと、関連する Windows のタイムゾーンの一覧を返します。 ISO タイムゾーンが配列のキー、 そして Windows のタイムゾーンが配列の値となります。 |
| TerritoryToTimezone | 地域あるいは領域と、関連する ISO タイムゾーンの一覧を返します。 ISO タイムゾーンが配列のキー、そして領域コードが配列の値となります。 |
| TimezoneToTerritory | タイムゾーンと、関連する地域あるいは領域コードの一覧を返します。 地域コードあるいは領域コードが配列のキー、 そして ISO タイムゾーンが配列の値となります。 |
| CityToTimezone | 地域化した都市名の一覧を返します。 これを用いて、関連するタイムゾーンの翻訳を行います。 すべてのタイムゾーンが翻訳できるわけではありませんが、 ユーザにとっては ISO タイムゾーン名よりも 母国語で書かれた都市名のほうがわかりやすいでしょう。 ISO タイムゾーンが配列のキー、そして都市名の翻訳が配列の値となります。 |
| TimezoneToCity | 地域化した都市名に対応するタイムゾーンの一覧を返します。 地域化した都市名が配列のキー、 そして ISO タイムゾーンが配列の値となります。 |
単一の翻訳データがほしい場合は、getTranslation() を使用します。
この関数は常に文字列を返しますが、getTranslationList()
メソッドよりも多くの型を使用することができます。
また、値についても一点を除いて同じです。
取得したい値について、詳細を指定する必要があります。
注意: ほとんどすべての場合について値を指定する必要があるので、 このパラメータを最初に指定するようになっています。 この点は
getTranslationList()メソッドと異なります。
詳細な情報は、次の表を参照ください。
| 型 | 説明 |
|---|---|
| Language |
言語の翻訳を返します。
希望通りの翻訳を選択するために、言語コードを値として指定する必要があります。
利便性のために
getLanguageTranslation($value)
メソッドも使用することが可能です。
|
| Script |
文字の翻訳を返します。
希望通りの翻訳を選択するために、文字コードを値として指定する必要があります。
利便性のために
getScriptTranslation($value)
メソッドも使用することが可能です。
|
| Territory あるいは Country |
領域の翻訳を返します。
これは国、大陸および領域のいずれかとなります。
希望通りの翻訳を選択するために、領域コードを値として指定する必要があります。
利便性のために
getCountryTranslation($value)
メソッドも使用することが可能です。
|
| Variant | 文字の変化形の翻訳を返します。 希望通りの翻訳を選択するために、変化形コードを値として指定する必要があります。 |
| Key | 既知のキーの翻訳を返します。 このキーは、翻訳で使用する一般的な値です。 通常はカレンダーや文字照合、通貨などです。 希望通りのキーを選択するために、キーコードを値として指定する必要があります。 |
| DateChars | 日付の表示に使用するすべての文字を含む文字テーブルを返します。 |
| DefaultCalendar | 指定したロケールにおけるデフォルトの暦を返します。 ほとんどのロケールでは、これは 'gregorian' (グレゴリオ暦) となります。 単純に行うには Zend_Date を使用します。 |
| MonthContext | 指定した暦で用いる月のデフォルトコンテキストを返します。 値を省略した場合はグレゴリオ暦を使用します。 単純に行うには Zend_Date を使用します。 |
| DefaultMonth | 指定した暦で用いる月のデフォルトフォーマットを返します。 値を省略した場合はグレゴリオ暦を使用します。 単純に行うには Zend_Date を使用します。 |
| Month |
月の翻訳を返します。
月を表す数値を値として指定する必要があります。
これは 1 から 12 までの数値となります。
他の暦、コンテキスト、フォーマットのデータを取得したい場合は、
値として整数値ではなく配列を指定します。
この配列の形式は
array(
'calendar', 'context', 'format', 'month number')
となります。整数値のみを指定した場合のデフォルトは、
暦が 'gregorian'、コンテキストが 'format'
そしてフォーマットが 'wide' となります。
単純に行うには
Zend_Date
を使用します。
|
| DayContext | 指定した暦で用いる日のデフォルトコンテキストを返します。 値を省略した場合はグレゴリオ暦を使用します。 単純に行うには Zend_Date を使用します。 |
| DefaultDay | 指定した暦で用いる曜日のデフォルトフォーマットを返します。 値を省略した場合はグレゴリオ暦を使用します。 単純に行うには Zend_Date を使用します。 |
| Day |
曜日の翻訳を返します。
英語での曜日の省略名 ('sun', 'mon', など)
を値として指定する必要があります。
他の暦、コンテキスト、フォーマットのデータを取得したい場合は、
値として文字列ではなく配列を指定します。
この配列の形式は
array('calendar', 'context', 'format', 'day abbreviation')
となります。文字列のみを指定した場合のデフォルトは、
暦が 'gregorian'、コンテキストが 'format'
そしてフォーマットが 'wide' となります。
単純に行うには
Zend_Date
を使用します。
|
| Quarter |
四半期の翻訳を返します。
四半期を表す数値を値として指定する必要があります。
これは 1 から 4 までの数値となります。
他の暦、コンテキスト、フォーマットのデータを取得したい場合は、
値として数値ではなく配列を指定します。
この配列の形式は
array('calendar', 'context', 'format', 'quarter number')
となります。文字列のみを指定した場合のデフォルトは、
暦が 'gregorian'、コンテキストが 'format'
そしてフォーマットが 'wide' となります。
|
| Am | そのロケールにおける 'AM' の翻訳を返します。 他の暦の値を取得したい場合は、その暦を文字列で指定します。 値を省略した場合はグレゴリオ暦を使用します。 単純に行うには Zend_Date を使用します。 |
| Pm | そのロケールにおける 'PM' の翻訳を返します。 他の暦の値を取得したい場合は、その暦を文字列で指定します。 値を省略した場合はグレゴリオ暦を使用します。 単純に行うには Zend_Date を使用します。 |
| Era |
そのロケールにおける紀元の翻訳を返します。
紀元番号を文字列あるいは整数値で指定します。
他の暦やフォーマットの値を取得したい場合は、
値として数値ではなく配列を指定します。
この配列の形式は
array('calendar', 'format', 'era number')
となります。文字列のみを指定した場合のデフォルトは、
暦が 'gregorian'、コンテキストが 'format'
そしてフォーマットが 'wide' となります。
|
| DefaultDate | 指定した暦で用いる日のデフォルトフォーマットを返します。 値を省略した場合はグレゴリオ暦を使用します。 単純に行うには Zend_Date を使用します。 |
| Date |
そのロケールにおける、指定した暦あるいはフォーマットでの日のフォーマットを返します。
値を省略した場合は、暦が 'gregorian'、フォーマットが
'medium' となります。
文字列を指定した場合は、暦が 'gregorian'
でフォーマットが指定したものとなります。
array('calendar', 'format')
のような配列を指定することもできます。
単純に行うには
Zend_Date
を使用します。
|
| DefaultTime | 指定した暦で用いる時刻のデフォルトフォーマットを返します。 値を省略した場合はグレゴリオ暦を使用します。 単純に行うには Zend_Date を使用します。 |
| Time |
そのロケールにおける、指定した暦あるいはフォーマットでの時刻のフォーマットを返します。
値を省略した場合は、暦が 'gregorian'、フォーマットが
'medium' となります。
文字列を指定した場合は、暦が 'gregorian'
でフォーマットが指定したものとなります。
array('calendar', 'format')
のような配列を指定することもできます。
単純に行うには
Zend_Date
を使用します。
|
| DateTime | そのロケールにおける日付、時刻のフォーマットを返します。 これは、指定した暦において日付と時刻を表示する方法を示すものです。 値を省略した場合はグレゴリオ暦を使用します。 単純に行うには Zend_Date を使用します。 |
| Field |
日付フィールドの翻訳を返します。
これは、カレンダーや日付で 'month' や 'year'
といった文字列を各国語で表示する際に使用します。
返したいフィールドを文字列で指定する必要があります。
この場合はグレゴリオ暦を使用します。
他の暦におけるフィールドを取得するには、
array('calendar', 'date field')
のような配列を指定します。
|
| Relative |
相対日付の翻訳を返します。
'yesterday' や 'tomorrow'
といった文字列を各国語で表示する際に使用します。
返したい日付を表す数値 (明日を基準とした相対値) を指定する必要があります。
昨日はら '-1'、明日なら '1' といったようになります。
この場合はグレゴリオ暦を使用します。
他の暦における相対日を取得するには、
array('calendar', 'relative days')
のような配列を指定します。
単純に行うには
Zend_Date
を使用します。
|
| DecimalNumber | 指定したロケールにおける十進数値のフォーマットを返します。 単純に行うには Zend_Locale_Format を使用します。 |
| ScientificNumber | 指定したロケールにおける科学記法の数値フォーマットを返します。 |
| PercentNumber | 指定したロケールにおけるパーセンテージの数値フォーマットを返します。 |
| CurrencyNumber | 指定したロケールにおける通貨の数値フォーマットを返します。 単純に行うには Zend_Currency を使用します。 |
| NameToCurrency | 指定した通貨の翻訳を返します。 通貨は ISO フォーマットで指定する必要があります。 たとえば、通貨 'euro' を表すには 'EUR' と指定します。 単純に行うには Zend_Currency を使用します。 |
| CurrencyToName | 指定した地域化名に対応する通貨を返します。 単純に行うには Zend_Currency を使用します。 |
| CurrencySymbol | 指定したロケールにおいて使用する通貨記号を返します。 すべての通貨に記号が存在するわけではありません。 単純に行うには Zend_Currency を使用します。 |
| Question | 肯定 ('yes') および否定 ('no') に対応する地域化した文字列を返します。 'yes' あるいは 'no' を値として指定すると、対応する文字列を取得できます。 単純に行うには Zend_Locale の getQuestion メソッド を使用します。 |
| CurrencyFraction | 指定した通貨で使用する小数点以下の桁数を返します。 通貨は ISO 形式で指定する必要があります。 単純に行うには Zend_Currency を使用します。 |
| CurrencyRounding | 指定した通貨の丸め方式を返します。 通貨は ISO 形式で指定する必要があります。 通貨を省略した場合は、デフォルトの丸め規則を返します。 単純に行うには Zend_Currency を使用します。 |
| CurrencyToRegion | 指定した地域の通貨を返します。 地域コードは ISO3166 形式で指定する必要があります。 たとえばオーストリアは 'AT' となります。 単純に行うには Zend_Currency を使用します。 |
| RegionToCurrency | その通貨を使用している地域を返します。 通貨は ISO4217 のコードで指定する必要があります。 たとえばユーロは 'EUR' となります。 その通貨が複数の地域で用いられている場合は、 空白で区切った形式になります。 単純に行うには Zend_Currency を使用します。 |
| RegionToTerritory | 指定した領域の地域を返します。 領域は ISO4217 形式の文字列で指定する必要があります。 たとえば '001' は世界を現します。 この領域内の地域が空白区切り形式となります。 |
| TerritoryToRegion | 指定した地域が存在する領域を返します。 地域は ISO3166 形式の文字列で指定する必要があります。 たとえばオーストリアは 'AT' となります。 その地域が複数の領域にまたがる場合は、 空白で区切った形式になります。 |
| ScriptToLanguage | 指定した言語で用いる文字を返します。 言語は ISO 言語コードで指定する必要があります。 たとえば英語は 'en' となります。 その言語で複数の文字が用いられる場合は、 空白で区切った形式になります。 |
| LanguageToScript | 指定した文字が用いられている言語を返します。 文字は ISO 文字コードで指定する必要があります。 たとえばラテン文字は 'Latn' となります。 その文字が複数の言語で用いられている場合は、 空白で区切った形式になります。 |
| TerritoryToLanguage | 指定した言語が用いられている領域を返します。 言語は ISO 言語コードで指定する必要があります。 たとえば英語は 'en' となります。 その言語が複数の領域で用いられる場合は、 空白で区切った形式になります。 |
| LanguageToTerritory | 指定した領域で用いられている言語の一覧を返します。 領域は ISO3166 形式のコードで指定する必要があります。 たとえばイタリアは 'IT' となります。 その言語が複数の領域で用いられる場合は、 空白で区切った形式になります。 |
| TimezoneToWindows | 指定した Windows タイムゾーンに対応する ISO タイムゾーンを返します。 |
| WindowsToTimezone | 指定した ISO タイムゾーンに対応する Windows タイムゾーンを返します。 |
| TerritoryToTimezone | 指定した ISO タイムゾーンに対応する領域を返します。 |
| TimezoneToTerritory | 指定した領域に対応する ISO タイムゾーンを返します。 |
| CityToTimezone | 指定した ISO タイムゾーンに対応する地域化した都市名を返します。 すべてのタイムゾーンが都市名に変換できるわけではありません。 |
| TimezoneToCity | 指定した地域化都市名に対応する ISO タイムゾーンを返します。 すべての都市名がタイムゾーンに対応しているわけではありません。 |
注意: Zend Framework 1.5 では、いくつかの古い型の名前が変わりました。 新しい型が追加されたこと、スペルが間違ったいたこと、 そして使いやすさを考慮したことなどが理由です。 変更内容は以下の表でご確認ください。
| 古い型 | 新しい型 |
|---|---|
| Country | Territory (値 '2') |
| Calendar | Type (値 'calendar') |
| Month_Short | Month (値 array('gregorian', 'format', 'abbreviated') |
| Month_Narrow | Month (値 array('gregorian', 'stand-alone', 'narrow') |
| Month_Complete | Months |
| Day_Short | Day (値 array('gregorian', 'format', 'abbreviated') |
| Day_Narrow | Day (値 array('gregorian', 'stand-alone', 'narrow') |
| DateFormat | Date |
| TimeFormat | Time |
| Timezones | CityToTimezone |
| Currency | NameToCurrency |
| Currency_Sign | CurrencySymbol |
| Currency_Detail | CurrencyToRegion |
| Territory_Detail | TerritoryToRegion |
| Language_Detail | LanguageToTerritory |
以下の例は、さまざまな言語でのものの名前を取得する方法を示すものです。
例7 getTranslationList
<?php
require_once 'Zend/Locale.php';
$locale = new Zend_Locale('en_US');
// すべての国名をドイツ語で表示します
print_r($locale->getTranslationList('country', 'de'));
次の例は、ある言語の名前を別の言語でどのようにいうのかを、 二文字の ISO 国コードを知らない場合に調べるものです。
例8 国の名前を、ある言語から別の言語に変換する
<?php
require 'Zend/Locale.php';
$locale = new Zend_Locale('en_US');
$code2name = $locale->getLanguageTranslationList();
$name2code = array_flip($code2name);
$frenchCode = $name2code['French'];
echo $locale->getLanguageTranslation($frenchCode, 'de_AT');
// 出力は、「フランス語」を表すドイツ語の名前になります
何ができるのかをもう少し詳しく知るには、次の例の出力を確認してみましょう。
例9 使用できるすべての翻訳
<?php
// すべての翻訳の一覧を取得します
$lists = $locale->getTranslationList();
// 使用できるすべての翻訳を表示します (大量に出力されます。すべて英語で表示されます)
foreach ($lists as $list) {
echo "List $list = ";
print_r($locale->getTranslationList($list));
}
Zend_Locale で使用できるすべての言語の一覧を、それぞれの言語での表記で取得するには、
以下の例をウェブページで使用してみましょう。
同様に getCountryTranslationList() および
getCountryTranslation() を使用すると、
あなたのネイティブ言語での地域名と別の言語での地域名の対応表を作成できます。
try .. catch ブロックで、
存在しないロケールを使用した場合の例外を処理するようにしましょう。
すべての言語がすべてのロケールに対応しているわけではありません。
この例では、例外を無視することで、
スクリプトが途中で終わってしまうことを防いでいます。
例10 すべての言語を、その国のネイティブ言語で書き出す
<?php
require_once 'Zend/Locale.php';
$sourceLanguage = null; // あなたのネイティブ言語のコードを設定します
$locale = new Zend_Locale($sourceLanguage);
$list = $locale->getLanguageTranslationList();
foreach($list as $language => $content) {
try {
$output = $locale->getLanguageTranslation($language, $language);
if (is_string($output)) {
print "\n<br>[".$language."] ".$output;
}
} catch (Exception $e) {
continue;
}
}
"yes" および "no" に対応する翻訳の取得
プログラム上で、ユーザに "はい" あるいは "いいえ"
で答えてもらうことがよくあります。
getQuestion() を使用すると、
ユーザに問い合わせるときに使用する単語あるいは正規表現文字列を含む配列を、
特定の $locale (デフォルトは、そのオブジェクトのロケール)
にあわせて返します。
返される配列の中身は次のようになります。
-
yes および no: yes および no に対応する一般的な文字列表現です。 これは、yesarray および noarray の最初の要素でもあり、もっとも一般的な内容です。
yesarray および noarray: yes および no に対応する内容をすべて含む配列です。 言語によっては単に「はい」「いいえ」以外の返答を持つものもあります。 一般に、これは完全な文字列とその省略形になります。
yesexpr および noexpr: 正規表現で、ユーザの回答から yes か no かを判定できるようにします。
これらのすべての情報は当然地域化されており、 設定されているロケールによって変化します。 以下の例で、どのような情報が取得できるのかを確認してみましょう。
例11 getQuestion()
<?php
require_once 'Zend/Locale.php';
$locale = new Zend_Locale();
// 設問の文字列
print_r($locale->getQuestion('de'));
- - - 出力 - - -
Array
(
[yes] => ja
[no] => nein
[yesarray] => Array
(
[0] => ja
[1] => j
)
[noarray] => Array
(
[0] => nein
[1] => n
)
[yesexpr] => ^([jJ][aA]?)|([jJ]?)
[noexpr] => ^([nN]([eE][iI][nN])?)|([nN]?)
)
注意: 1.0.3 までは、yesabbr もロケールデータから取得可能でした。 1.5 以降、この情報は単体では存在しません。しかし、同じ情報を yesarray から取得できます。
既知のロケールの一覧の取得
すべての既知のロケールの一覧を取得したいこともあるでしょう。
たとえば、ロケール選択用の select 要素を作成する場合などに必要となるはずです。
このようなときには、静的メソッド
getLocaleList() を使用します。
このメソッドは、すべての既知のロケールの一覧を返します。
例12 getLocaleList()
<?php
require_once 'Zend/Locale.php';
$localelist = Zend_Locale::getLocaleList();
注意: 返された配列のキーがロケール名となっていることに注意しましょう。 キーに対応する値は、常に true です。
| 導入 |
