でユーザーの地域を取得する(ISO-3166):が、私は私のユーザーの国を取得するには、このようなものを使用してきたいくつかの時間のためにnavigator.language
const region = navigator.language.split('-')[1]; // 'US'
私はいつもは文字列を想定しましたen-US
に似ています - 国が第2位の配列を保持します。
私はこの仮定が間違っていると考えています。 According to MDN docs、navigator.language
戻り値:"BCP 47で定義されている言語バージョンを表す文字列。Reading BCP 47の場合、第1言語サブタグは最初に(例えば 'en')保証されるが、リージョンコードは第2サブタグであることが保証されない。リージョンのサブタグに先行して従うサブタグがあります。たとえば"sr-Latn-RS"
については
は有効なBCP 47言語タグである:
sr | Latn | RS
primary language | script subtag | region subtag
navigator.language
のみ言語と地域を含むBCP 47のサブセットから返された値はありますか?または、言語タグから地域サブタグを抽出するためによく使用されるライブラリまたは正規表現がありますか?
Regexはなぜちょうど以下のような分割を使用することができるのか: const part = navigator.language.split( ' - '); const region = parts [parts.length-1] –
領域は、分割後に配列の2番目の位置にあるとは限りません。上記の例を参照してください。 – Jeff
そうです。実際の位置に関係なく常に最後のコードを取るコードを上回っています。ではない? –