csvやデータベースなどのファイルに依存する多くの方法について聞いたことがありますが、それを行うために自分のサイトに追加のデータベースをアップロードするのは良い考えではないと思います.外部プロバイダーが外部サイトを使用していることに満足しています.サーバーが外部プロバイダーの応答を待機し、これによりサイトの速度が低下するため、良い方法ですか、それとも良くない方法ですか?
4 に答える
これを見てください:http ://www.rubyquiz.com/quiz139.html
とにかく、IPアドレスに基づいて言語を選択することは実際には良い考えではありません。私がドイツからブラウジングしているアメリカ人で、ドイツ語があまり話せない場合はどうなりますか?最も標準に準拠した方法(私は思う)は、WebリクエストのAccept-Languageヘッダーを解析し、それを使用してユーザーのデフォルトを設定することですが、常にデフォルトをオーバーライドして言語を選択する方法を提供します(次に、セッションまたはユーザー設定に保存します)
私の場合、この値sk,cs;q=0.8,en-us;q=0.5,en;q=0.3を保持する PHP 変数$_SERVER['HTTP_ACCEPT_LANGUAGE']を使用します。つまり、私のブラウザの言語は「スロバキア語」です。
このオプションの方が良いと思います。想像してみてください、あなたはイギリス人ですが、どこかで休暇をとっています。あちらでノートブックを使用しています...あなたのIPアドレスは、あなたがクロアチアにいて、その言語でコンテンツを取得したいことをサーバーに伝えます...しかし、ブラウザはまだあなたが英語を話す人だと言っています...違いです;)
I wouldn't use GeoIP for this - there are too many scenarios when it fails or produces the wrong results.
As @Paul says the HTTP Accept-Language header specifies the user's language preferences as defined in the browser. You can view what your browser is set to by visiting Browser Language Detection.
実際に機能する例については、Parse Accept-Language to detect a user's language を参照してください。
また、クローラーは Accept-Language を使用しないため、Accept-Language を使用できるようにするための戦略 (各言語コンテンツの URL など) を用意し、サイトマップに含めることが重要です。
コンテンツの選択については、 Apache モジュールの mod_negotiationも参照してください。