23

ユーザーのロケール(場所ではない)を検出したい。問題は、どの方法も信頼できないように見えることです。

Accept-Languageヘッダー

長所

  1. ブラウザがデフォルトで別のものに変更された場合に真のロケールを明らかにできる値のリストを取得することを目的としています。
  2. IEではデフォルトで正確に見えますか?
  3. デフォルトでIEで正確とは、デフォルトでWindowsのFFで正確であることを意味しますか?(つまり、mozilla.orgから正しいバージョンをダウンロードします)
  4. Windows上のOperaの#3と同じですか?

短所

  1. サーバー側のオーバーヘッドとキャッシュ(または追加のXHR)への干渉。
  2. ローカル辞書をインストールして一番上にドラッグしない限り、英語のすべてのシステムのChromeではデフォルトで「en-us」になります。
  3. Safariから送信されていませんか?
  4. SafariとChromeのデフォルトが正しくないということは、http://mozilla.orghttp://opera.comがユーザーに間違ったダウンロードを指示し、それら自体の「en-us」バージョンもインストールすることを意味します。

結論

  • すべてのブラウザがデフォルトで間違っているため、OSXでは完全に信頼できません。ただし、WindowsのIEおよびFFでは正確である必要があります。

window.navigator.language / userLanguage

長所

  1. これの最良の部分は、それが素晴らしい軽量のクライアントサイドソリューションであるということです。
  2. IEではデフォルトで正確に見えますか?
  3. デフォルトでは、WindowsのFFでは正確に見えますか?

短所

  1. すべてのシステムのSafariでは、デフォルトで常に「en-us」です。
  2. ローカル辞書をインストールして一番上にドラッグしない限り、英語のすべてのシステムのChromeではデフォルトで「en-us」になります。
  3. Operaでは常に「en」だけです。

結論

  • Accept-Languageよりもさらに信頼性が低い。

IPジオロケーション

長所

  1. ブラウザやOSの言語設定とは独立して動作します。

短所

  1. ブラウザやOSの言語設定とは独立して動作します。
  2. パフォーマンス、価格設定、最新の状態に保つことなどについてはいつものことです。

結論

  • これが実際に機能するかどうかは、ユーザーのロケールを検出しようとしている理由によって異なります。このメソッドは、i18nの意味でのロケールと同じではないユーザーのロケールを提供します。

HTML5ジオロケーション

長所

  1. 一般的に、サーバーのオーバーヘッドなしでIPジオロケーションと同じくらい正確です。

短所

  1. ユーザーに自分の場所へのアクセスを許可する必要があります。
  2. ブラウザのサポート(実際のサポートはかなり良さそうです)。

結論

  • 許可を求めなければならないことは、一般的に取引のブレーカーです。また、IPジオロケーションと同じ結論。

概要

現在、ユーザーのロケールの検出はこれまでになく困難になっているようですが、物理的な場所の検出は容易になっています。大きな犯罪者はSafariであり、少なくともOSXのデフォルトではOS設定を反映しているはずですが、Chromeも例を設定していません。ローカル辞書をChromeにインストールしたとしても、リストの一番上にドラッグするのではないかと思います。

他のブラウザがダウンロードページに誤って報告したことでMozillaとOperaが引きずり込まれたことを非難することはできません。ただし、おそらくAccept-Languageを見る代わりに、ダウンロードページをジオロケーションを使用するように切り替えると、問題が軽減されます。

しかし、実際には、IEがもはや支配的ではなくなった今、ユーザーのロケールを検出するためにどのようなオプションが残されていますか?何か残っていますか?

4

1 に答える 1

2

これは、「ユーザーのロケール」が何を意味するかによって異なります。質問に記載されている可能性は、「ユーザーのロケール」のさまざまな意味を反映しています。それらのどれも、現代のローカリゼーションにおける適切な意味、つまりユーザーが好む一連の文化的慣習を反映していません (好みの順に人間の言語のリストを含む)。それを見つける方法は、ユーザーにそれらについて尋ねることです。

当然のことながら、コンテキスト内で本当に重要な規則についてのみ質問する必要があります。また、ユーザーによって設定された設定を Cookie、HTML5 ストレージ、ユーザー データベース、または別の場所に保存することを検討することもできます。

ブラウザでは、通常、ユーザーは優先言語のリストを指定して、Accept-Languageヘッダーで送信できます。ただし、これはロケールの概念の 1 つの側面にのみ関連しており、ほとんどのユーザーには知られていません。また、デフォルトが間違っていることが非常に多いことが知られています。

于 2012-09-19T05:42:55.560 に答える