3

PHP/javascript から現在のクライアント OS 言語を取得する方法はありますか。使用しようとしまし$_SERVER["HTTP_ACCEPT_LANGUAGE"]たが、間違った言語になることがあります。たとえば、Google Chrome では次のようになります。

  1. 私のOS: Windows 7
  2. 言語: 英語

を使用する$_SERVER["HTTP_ACCEPT_LANGUAGE"]と、次の結果が得られました。

HTTP_ACCEPT_LANGUAGE: zh,en-US;q=0.8,en;q=0.6

「zh」が私の第一言語だと書いてありました。

クライアント OS 言語を取得する他の方法はありますか? ブラウザの言語設定ではなく、それが私が望んでいたことだからです。ありがとう

4

3 に答える 3

2

IE で JavaScript 経由で送信しますか?

  • navigator.browserLanguage: ブラウザ言語
  • navigator.systemLanguage: Windows システム言語
  • navigator.userLanguage: Windows ユーザー固有の言語

おかげで:JavaScriptを使用してOS言語を検出する方法はありますか?

クライアントOSの言語を取得するためにあなたが言及した以外の唯一の方法です。PHPはサーバーによって実行され、他には何もありません。

PHP ソート関数を作成します。

HTTP_ACCEPT_LANGUAGE: zh,en-US;q=0.8,en;q=0.6

zhen-US同じ値を共有しq=ます。つまり、2 つの言語で品質が同じ場合は、言語の値が最も高い順に並べ替え、デフォルトを en-US にすることができます。

@Quentin が私の編集の 1 分前にコメント セクションでこれについて言及したことに気付きました。

モックアップ:

$languages = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$default = 'en-US';
/*
 * magic split and structure the language into a array sorted by quality
 *
 * $languages_sorted_by_quality = array(0.8 => ('zh', 'en-US'));
 */
$top_languages = max($languages_sorted_by_quality);
if (isset($top_languages[$default])) {
    $language = $default;
else
    $language = $top_languages[0];
于 2013-05-07T13:19:03.307 に答える
0

have your tried http_negotiate_language

于 2013-05-07T13:19:59.510 に答える