Obsługa lokalizacji w starszych przeglądarkach jest słaba. Pierwotnie było to spowodowane wyrażeniami w ECMAScript
specyfikacji języka, które wyglądały następująco:
Number.prototype.toLocaleString ()
Tworzy ciąg znaków, który reprezentuje wartość Number sformatowaną zgodnie z konwencjami bieżących ustawień regionalnych środowiska hosta. Ta funkcja jest zależna od implementacji i jest dozwolona, ale nie zalecana, aby zwracała to samo, co toString .
Każda metoda lokalizacji zdefiniowana w specyfikacji jest definiowana jako „zależna od implementacji”, co skutkuje wieloma niespójnościami. W tym przypadku Chrome Opera i Safari zwróciłyby to samo, co .toString()
. Firefox i IE zwrócą ciągi sformatowane dla ustawień regionalnych, a IE zawiera nawet separator tysięcy (idealny dla ciągów walutowych). Przeglądarka Chrome została niedawno zaktualizowana, aby zwracać ciąg znaków oddzielonych tysiącami, ale bez stałego miejsca po przecinku.
W nowoczesnych środowiskach specyfikacja ECMAScript Internationalization API , nowy standard uzupełniający specyfikację języka ECMAScript, zapewnia znacznie lepszą obsługę porównywania ciągów, formatowania liczb oraz formatowania daty i godziny; naprawia również odpowiednie funkcje w specyfikacji języka. Wprowadzenie można znaleźć tutaj . Wdrożenia są dostępne w:
- Chrome 24
- Firefox 29
- Internet Explorer 11
- Opera 15
Istnieje również implementacja zgodności, Intl.js , która zapewni API w środowiskach, w których jeszcze nie istnieje.
Określenie preferowanego języka użytkownika pozostaje problemem, ponieważ nie ma specyfikacji umożliwiającej uzyskanie bieżącego języka. Każda przeglądarka implementuje metodę uzyskiwania ciągu językowego, ale może to być oparte na języku systemu operacyjnego użytkownika lub po prostu na języku przeglądarki:
// navigator.userLanguage for IE, navigator.language for others
var lang = navigator.language || navigator.userLanguage;
Dobrym rozwiązaniem tego problemu jest zrzucenie nagłówka Accept-Language z serwera do klienta. Jeśli jest sformatowany jako JavaScript, można go przekazać do konstruktorów interfejsu API internacjonalizacji, które automatycznie wybiorą najlepsze (lub pierwsze obsługiwane) ustawienie regionalne.
Krótko mówiąc, musisz włożyć dużo pracy samodzielnie lub skorzystać z frameworka / biblioteki , ponieważ nie możesz polegać na przeglądarce, aby zrobiła to za Ciebie.
Różne biblioteki i wtyczki do lokalizacji:
Zapraszam do dodawania / edytowania.