多言語ウェブサイトを構築しています。PHPまたはJavascriptを使用して、特定の言語がユーザーのマシンにインストール/サポートされているかどうかを確認することはできますか? これを検出し、言語がサポートされていないかインストールされていない場合は、ユーザーにメッセージを表示したいと考えています。
ありがとう、マーク。
多言語ウェブサイトを構築しています。PHPまたはJavascriptを使用して、特定の言語がユーザーのマシンにインストール/サポートされているかどうかを確認することはできますか? これを検出し、言語がサポートされていないかインストールされていない場合は、ユーザーにメッセージを表示したいと考えています。
ありがとう、マーク。
どの言語がインストールされているかを検出することは、まったく不可能かもしれません...
... しかし、ユーザーが Web サイトから取得したいと考えている言語、つまり、ユーザーが理解できる言語を検出することはできます。
ほとんどのブラウザーは、" " という HTTP ヘッダーを送信します。これは、" "Accept-Language
などの値を持つことができます(これは、現在のブラウザーがアクセスしている Web サイトに送信するものです)。fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
$_SERVER
PHP 側では、これを配列で取得できます。
var_dump($_SERVER['HTTP_ACCEPT_LANGUAGE']);
出力します:
string 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3' (length=35)
ここでは、ウェブサイトからフランス語でコンテンツを送信してもらいたいことを示しています。しかし、私は英語も受け入れます(できれば米国英語ですが、プレーンなデフォルトの英語でも問題ありません)
これを PHP で解析する方法の例はたくさんあります。たとえば、Accept-Language を解析してユーザーの言語を検出します。
その記事で提供されているコードを使用して、次の言語の配列を取得します。
array
'fr' => int 1
'fr-fr' => string '0.8' (length=3)
'en-us' => string '0.5' (length=3)
'en' => string '0.3' (length=3)
すなわち:
ウェブサイトがそれらのいずれにも対応できない場合...まあ、私には選択肢があまりないと思います.送信したいものは何でも取得します...
通常、ブラウザーは Accept-Language ヘッダーを送信します。これにより、ユーザーが期待する言語についてのヒントが得られる場合があります。私の場合、ブラウザは次のヘッダーを stackoverflow.com に送信しました。
Accept-Language: en-us,en;q=0.5
サーバー側で PHP を使用していると仮定すると、$_SERVER 変数でこの情報を検索できます。
$_SERVER["HTTP_ACCEPT_LANGUAGE"]
Accept ヘッダーを調べることで、ユーザーの言語設定を知ることができます。<selfpromotion type="shameless"> 私はかなり前 (2000 年、なんてことだ! ) にこのテーマについて論文を書き、これといくつかの代替メカニズムを調査しました.</selfpromotion>
それ以来、かなりの数の興味深いリソースが出てきました。特に、PHP に対して実用的なアプローチを採用しているこの記事が気に入っています。
幸運を!
私は過去 10 年間、多言語の仕事をしてきましたが、私の印象では、あなたはそれをやり過ぎようとしているようです。あなたはそれを間違った方法で見ているのです。ユーザーのマシンにインストールされている言語 (OS またはブラウザーのいずれか) を気にする必要はありません。OS の言語は問題ではなく、最新のブラウザーは事実上すべての言語をサポートしています (そして、NN4 の終焉以来、すべての書き込みUnicode 標準で場所を見つけたシステム/アルファベット)。あなたが追求すべきことは、ユーザーが好む言語です。ユーザーは、「サポートされている」言語の数に関するボトルネックです。
Accept-Language ヘッダーは、適切な解決策になる可能性があります-それが機能する場合。私の経験では、そうではありません。今日の平均的なユーザーは、URL がホームページの検索フォームではなく、アドレス バーに表示されることを学ぶ必要があります。HTTP ヘッダーについて知っているのは、ネット人口の 1 ~ 2% を超えるとは思いません (はい、私は今夜は楽観的な気分です)。ユーザーは、ブラウザーが最初に要求するように設定された言語で喜んであなたの Web サイトにアクセスします。これには、世界中のサイバーカフェからの観光客、「構成を台無しにしない」という強力なポリシーを持つ企業のために海外で働く外国人、IT 対応の孫が奇妙なユーモアのセンスを持っている老人、共有マシンなどが含まれます。多くの場合、間違った推測をすることになります。
サポートされていない言語のメッセージを表示するという概念も疑わしいです。たとえば、パンジャブ語のブラウザを使用しているユーザーがサイトに移動できる場合、おそらくパンジャブ語を独自に提供していないことがわかります。メッセージでブラウジングを中断する必要はありません。
とはいえ、最も単純な解決策が最善の場合もあります。ユーザーに選択させることをお勧めします。利用可能な言語のリストを公開すれば、ユーザーはあなたのコードから当て推量を取り除いて喜んでくれるでしょう。そして、彼/彼女は毎回それを正しく理解します。