2012-03-17 6 views
4

PHPはAccept-Languages($ _SERVER ['HTTP_ACCEPT_LANGUAGE'])を "en-US"、 "en"、 "de-AT"のような形式で返します。もっと読みやすい形式に変換するにはどうしたらいいですか?PHP Accept-Languageをより読みやすい形式に変換する

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

一般的な方法/機能はありますか私は、データベースを探す必要がない(いただきました。この形式の名前は - それは?!オプションの領域とISO 639-1ですか)?

+0

私は翻訳とあなたのためのリストを持っていないが、たAccept-Languageヘッダは、エンコードとは何の関係もありません。これは文字通りクライアントが好む言語です。 – Evert

+0

私はそれを知っています - 私はクライアントの好みの言語を見せたいですが、読みやすい形式です! – NaN

答えて

5
にこのコードを見つけました

PHP 5.3.0以上を使用していて、国際化拡張機能をインストールしている場合は、Localeクラスまたは対応する手続き型関数を使用できます。

意志出力

English (United States) 

(Inlt拡張子:http://pecl.php.net/package/intl

+0

すばらしい答え!できます。 – NaN

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

関連する問題