将PHP Accept-Language转换为更易读的格式

时间:2012-03-17 16:21:25

标签: php format converter

PHP以“en-US”,“en”,“de-AT”等格式返回Accept-Languages($ _SERVER ['HTTP_ACCEPT_LANGUAGE'])。如何将它们转换为更易读的格式?

"en-US" -> "English USA"
"de-AT" -> "Österreichisch"

是否有共同的方式/功能或者我是否需要寻找数据库(这种格式的名称是什么 - 它是带有可选区域的ISO 639-1?)?

2 个答案:

答案 0 :(得分:5)

如果您使用的是PHP 5.3.0或更高版本且已安装国际化扩展,则可以使用Locale类或相应的过程函数:

$dispname = Locale::getDisplayName('en-US');
echo $dispname;

将输出

English (United States)

(Inlt扩展名:http://pecl.php.net/package/intl

答案 1 :(得分:1)

正如您可能已经发现的那样,您使用的代码是ISO-3166,最简单的方法似乎是从这样的Web服务进行转换:

<?php

$str = file_get_contents('http://opencountrycodes.appspot.com/xml/');
$xml = new SimpleXMLElement($str);
$out = '$countries'." = array(\n";
foreach ($xml->country as $country)
{
    $out .= "'{$country['code']}' => \"{$country['name']}\",\n";
}
$out .= ");";

file_put_contents('country_names.php', $out);

?>

我在http://dragffy.com/blog/posts/creating-a-php-array-of-iso-3166-1-country-codes

上找到了此代码