В течение некоторого времени я использовал что-то вроде этого, чтобы получить свою пользовательскую страну (ISO-3166):
const region = navigator.language.split('-')[1]; // 'US'
Я всегда предполагаемый строка будет похожа на en-US
- где страна будет удерживать вторую позицию массива.
Я думаю, что это предположение неверно. Согласно документам MDN, строка navigator.language
возвращает: ", представляющую версию языка, как определено в BCP 47." Чтение BCP 47, первый языковой subtag гарантированно будет первым (например, 'en'), но региональный код не гарантированно будет 2-й подтекст. Могут быть субтаги, которые предшествуют и следуют за областью.
Например, "sr-Latn-RS"
является допустимым тегом языка BCP 47:
sr | Latn | RS
primary language | script subtag | region subtag
Является ли значение, возвращаемое из navigator.language
подмножеством BCP 47, содержащим только язык и регион? Или существует библиотека или регулярное выражение, которое обычно используется для извлечения субтегопа области из языкового тега?