Dla jakiegoś czasu używam coś takiego dostać kraj mojego użytkownika (ISO-3166):Pierwsze regionu użytkownika z navigator.language
const region = navigator.language.split('-')[1]; // 'US'
Zawsze Zakłada łańcuch byłby podobny do en-US
- gdzie kraj posiadałby 2. pozycję tablicy.
Myślę, że to założenie jest nieprawidłowe. According to MDN docs, navigator.language
zwraca: "ciąg reprezentujący wersję językową zdefiniowaną w BCP 47."Reading BCP 47, podtęga języka podstawowego jest gwarantowana jako pierwsza (np. "En"), ale kod regionu nie jest gwarantowany jako drugi podtag. Mogą istnieć podtypy poprzedzające i podążające za podzakresem regionu.
Na przykład "sr-Latn-RS"
jest poprawnym BCP 47 język tag:
sr | Latn | RS
primary language | script subtag | region subtag
Czy wartość zwracana z navigator.language
podzbiór BCP 47 zawierające tylko język i region? Czy istnieje biblioteka lub wyrażenie regularne, które jest powszechnie używane do wyodrębniania podznacznika regionu ze znacznika języka?
dlaczego Regex, kiedy można po prostu użyć podziału jak poniżej: const parts = navigator.language.split ('-'); const region = parts [parts.length-1] –
region nie może mieć drugiej pozycji tablicy po podzieleniu. Zobacz powyższy przykład. – Jeff
To prawda. ale powyżej kodu, zawsze biorąc ostatni, niezależnie od jego aktualnej pozycji. prawda? –