在数据库中,我们有ISO 3166-1 alpha-2国家代码,例如英国的GB和阿根廷的AR。今天,我们保存了一个数据库表,其中一个列用于这些国家代码,另一个列用于相应的英文国家名称。
我们在PHP (5.4.x)中工作,它有intl延伸 (用于ICU库的包装器),因此我想从这个源代码中获取国家名称,这使得应用程序更易于维护和国际化,因为我可以轻松地用德语、法语或我们将来想要的任何东西获取国家名称。
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 >关于如何解决这个问题,有什么建议吗?我不想维护我自己的国家名称数据库,或者只是在有一个内置扩展时使用外部PHP库,这似乎已经是一个很好的源(ICU)。
提前谢谢!
发布于 2014-01-22 15:48:42
使用und (未知语言)。所以'und_' . 'AR'等等。
https://stackoverflow.com/questions/21239095
复制相似问题