API ドキュメント
I18Nv2 の提供する API の詳細については、PEAR の
API
ドキュメントを参照ください。
ロケールの設定
Un*x と Windows とでは使用しているロケールコードが異なるので、
PHP の setLocale() を安易に使用することはできません。
I18Nv2::setLocale()
がこの相違を吸収します。
I18Nv2 を用いれば、Linux と Windows のどちらでも
'en_US' のような標準的なロケールコードが使用できます。
しかし、コードのリストはまだ完全なものではありません。
もしまだ (I18Nv2::_main() の I18Nv2::$locales で)
カバーできていないロケールを見つけた場合は、
そのコードおよび対応する Win32 のコードを開発者にメールで教えてください。
例 50-1I18Nv2::setLocale() require_once 'I18Nv2.php';
foreach (array('en_US', 'de', 'fr_CN') as $locale) {
if (!$syslocale = I18Nv2::setLocale($locale)) {
echo "ロケール '$locale' は使用できません!\n";
} else {
echo "'$locale' に対応するシステムのロケール: '$syslocale'\n";
}
} |
|
ロケールの規約の取得
I18Nv2 は、localeConv() から返されるロケール固有の規約をスタティックに保持します。
そのため、
I18Nv2::getInfo()
を使用して簡単にアクセスすることが可能となります。
使用可能な情報については、PHP マニュアルの
localeConv()
の情報を参照ください。
例 50-2I18Nv2::getInfo() require_once 'I18Nv2.php';
I18Nv2::setLocale('fr');
$dec_point = I18Nv2::getInfo('decimal_point');
echo "フランス語ロケールの小数点は '$dec_point' です。\n";
echo "パラメータを指定せずに I18Nv2::getInfo() をコールすると、すべての情報を返します。\n";
print_r(I18Nv2::getInfo()); |
|
I18Nv2_Locale の使用
I18Nv2_Locale は、日付や時刻、数値および金額を
ロケール固有の規約にもとづいた書式になおす機能を持つオブジェクトです。
例 50-4I18Nv2_Locale require_once 'I18Nv2.php';
$locale = &I18Nv2::createLocale('de_AT');
echo "金額 2000: ",
$locale->formatCurrency(2000, I18Nv2_CURRENCY_INTERNATIONAL), "\n";
echo "今日の日付: ",
$locale->formatDate(null, I18Nv2_DATETIME_FULL), "\n";
echo "現在の時刻: ",
$locale->formatTime(null, I18Nv2_DATETIME_SHORT), "\n"; |
|
I18Nv2_Negotiator の使用
I18Nv2 には、言語や文字セットおよびロケールに関する
HTTP ネゴシエーション機能が含まれています。
例 50-5I18Nv2_Negotiator require_once 'I18Nv2/Negotiator.php';
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'en-US,en-GB,en;q=0.5,de';
$_SERVER['HTTP_ACCEPT_CHARSET'] = 'utf-8,iso-8859-1;q=0.5';
$neg = &new I18Nv2_Negotiator;
echo "ユーザエージェントが望んでいる言語: ",
$lang = $neg->getLanguageMatch(), "\n";
echo "ユーザエージェント '$lang' に対して望んでいる地域: ",
$neg->getCountryMatch($lang), "\n";
echo "ユーザエージェントが望んでいるロケール: ",
$neg->getLocaleMatch(), "\n";
echo "ユーザエージェントが望んでいる文字セット: ",
$neg->getCharsetMatch(), "\n"; |
|
I18Nv2_Language の使用
I18Nv2 は、ISO 言語コードの変換リストを保持しています。
例 50-6I18Nv2_Language require_once 'I18Nv2/Language.php';
$lang = &new I18Nv2_Language('it', 'iso-8859-1');
echo "English をイタリア語で言うと: ",
$lang->getName('en'), "\n";
echo "French をイタリア語で言うと: ",
$lang->getName('fr'), "\n"; |
|
I18Nv2_Country の使用
I18Nv2 は、ISO 国名コードの変換リストを保持しています。
例 50-7I18Nv2_Country require_once 'I18Nv2/Country.php';
$country = &new I18Nv2_Country('de', 'iso-8859-1');
echo "United States をドイツ語で言うと: ",
$country->getName('us'), "\n";
echo "Italia をドイツ語で言うと: ",
$country->getName('it'), "\n"; |
|
I18Nv2_Country の使用
I18Nv2 には、言語と国名の両方を扱うためのデコレートされたクラスがあります。
例 50-8I18Nv2_DecoratedList require_once 'I18Nv2/Country.php';
require_once 'I18Nv2/DecoratedList/HtmlSelect.php';
require_once 'I18Nv2/DecoratedList/HtmlEntities.php';
$c = &new I18Nv2_Country('it', 'iso-8859-1');
$e = &new I18Nv2_DecoratedList_HtmlEntities($c);
$s = &new I18Nv2_DecoratedList_HtmlSelect($e);
// 属性を設定します
$s->attributes['select']['name'] = 'CountrySelect';
$s->attributes['select']['onchange'] = 'this.form.submit()';
// エントリを選択します
$s->selected['DE'] = true;
// HTML 選択ボックスを表示します
echo $s->getAllCodes(); |
|
例 50-9I18Nv2_CommonList::toDecoratedList() require_once 'I18Nv2/Country.php';
$c = &new I18Nv2_Country('it', 'iso-8859-1');
$s = &$c->toDecoratedList('HtmlSelect');
// 属性を設定します
$s->attributes['select']['name'] = 'CountrySelect';
$s->attributes['select']['onchange'] = 'this.form.submit()';
// エントリを選択します
$s->selected['IT'] = true;
// HTML 選択ボックスを表示します
echo $s->getAllCodes(); |
|