2

データベースにはISO 3166-1 alpha-2 国コードがあります。たとえば、英国は GB、アルゼンチンは AR です。現在、これらの国コード用の 1 つの列と、対応する英語の国名用の 1 つの列を含むデータベース テーブルを保持しています。

私たちはintl エクステニオン(ICU ライブラリのラッパー) を持つ PHP (5.4.x) で作業しているので、このソースから国名を取得したいと考えました。ドイツ語、フランス語、または将来的に必要なものの国名。

Locale::getDisplayRegion ( string $locale [, string $in_locale ] )ロケールから地域名を提供します。例えば

php > echo Locale::getDisplayRegion('en-US', 'de') . PHP_EOL;
Vereinigte Staaten
php > echo Locale::getDisplayRegion('en-US', 'en') . PHP_EOL;
United States

問題は、言語コードがなく、国コードしかないため、適切なロケールを構築する方法がわからないことです。

英語の場合は「en_」を前に付けるだけで地域名を取得できるようです。

php > echo Locale::getDisplayRegion('en-CH', 'en') . PHP_EOL;
Switzerland
php > echo Locale::getDisplayRegion('en-CN', 'en') . PHP_EOL;
China
php > echo Locale::getDisplayRegion('en-AR', 'en') . PHP_EOL;
Argentina

ただし、これはハックのように感じられ、本当に信頼できるかどうかはわかりません。

国コード(用語によっては地域/地域)とその国の有効な言語を使用してロケールを作成できないかと考えていましたが、少なくとも私が見つけた限りでは機能しないようです:

php > echo Locale::composeLocale( array('region' => 'CN') ) . PHP_EOL;

php >

これを行う方法に関する推奨事項はありますか?国名の独自のデータベースを維持したり、既に適切なソース (ICU) と思われる組み込みの拡張機能がある場合に、単に外部 PHP ライブラリを使用したりしたくありません。

よろしくお願いします!

4

1 に答える 1

2

und(不明な言語)を使用します。など'und_' . 'AR'など。

于 2014-01-22T15:48:42.890 に答える