質問: ブラウザ内でユーザーのロケールを判断する最良の方法 数十の言語にローカライズされたwebサイト(flash)があり、コンテンツにアクセスする手順を最小限に抑えるために、ユーザーのブラウザー設定に応じてデフォルト値を自動定義したい。参考までに、プロキシの制限のためにサーバースクリプトを使用できないため、問題を解決するにはjavascriptまたはactionscriptが適切だと思います。質問: ユーザーのロケールを「推測」する最良の方法は何でしょうか? 私を助けることができる既存の単純なクラス/関数はありますか(複雑なローカリゼーションバンドルはありません)?特に、すべての可能な言語をスマートな方法でより小さな数(私が持っている翻訳)に分解するために。 そのようなソリューションはどの時点まで信頼できますか? 他の回避策や提案はありますか?
回答: ブラウザがユーザーの言語を保存するために使用している複数の方法を組み合わせて、この関数を取得します。const getnavigatorlanguage = () => { if (navigator.languages && navigator.languages.length) { return navigator.languages[0]; } else { return navigator.userlanguage || navigator.language || navigator.browserlanguage || 'en'; } } 最初にnavigator.languages配列の最初の要素を確認します。 その後、navigator.userlanguageまたはnavigator.languageを取得します。 これが失敗すると、navigator.browserlanguageが返されます。 最後に、他のすべてが失敗した場合は、'en'に設定します。そして、これがセクシーなワンライナー:const getnavigatorlanguage = () => (navigator.languages && navigator.languages.length) ? navigator.languages[0] : navigator.userlanguage || navigator.language || navigator.browserlanguage || 'en';