string HTTP::negotiateLanguage (
array $supported
, string $default = 'en_US'
)
Accept-Language HTTPヘッダーかユーザのホストアドレスによって、 ユーザのブラウザーと言語を協定します。 言語コードは一ヶ国で話される言語の形式「ll」か、 あるいは特別の国で話される言語では「ll-CC」になります。 例えば、米国の英語は「en-US」です。一方イギリス英語は「en-UK」です。 ポルトガルで話されるようなポルトガル語は「pt-PT」です。 一方ブラジルのポルトガル語は「pt-BR」です。 2文字の国コードはISO 3166標準で見つけられます。
Accept-Language:
ヘッダが多数の値をサポートする例
Accept-Language: en-UK;q=0.7, en-US;q=0.6, no;q=1.0, dk;q=0.8
使用例
<?php
require_once "HTTP.php";
$supported = array("de" => true, "en-US" => true);
echo HTTP::negotiateLanguage($supported);
?>
この例は、
言語のうちのどれかがユーザのシステム上で
サポートされる場合
、
ユーザーエージェントはネゴシエーションします。
ネゴシエーションが正の結果を持っている場合、
最も好ましい言語の言語コードが出力されます。
そうでなければ、デフォルト言語コード(en-US)が出力されます。
国際化された(それは複数の言語で利用可能な) ウェブサイトページを開発する場合は、 言語ネゴシエーションを可能にすることは大きな支援になります。 ユーザーはネゴシエーションを使用して、 常に好ましい言語でページを取得できるでしょう (それらはユーザーエージェントが適切に構成されていると仮定します)。
array $supported
-
アプリケーションに支援された言語コード(国コード)によって
インデックスを付けられた連想の配列。
値はTRUEでなければなりません。
string $default
-
他の言語のどれもネゴシエーションの間に見つからない場合に、
使用されるべきデフォルト言語。
string
- 言語コードです。
This function can be called statically.
返された言語はヒントだけです! クライアントによって容認された言語を送ることはオプションです。 ブラウザーの言語セッティングはユーザの母国語する必要はありません。 - 例えばスペインのインターネットカフェでドイツの旅行者が居る場合など。 Net_Geo パッケージの結果を組み合わせることにより、 結果を改善することができます。 それとは別に、 ユーザに手動で優先する言語メニューを選ぶ機会を与えるべきです。