Підтримка локалізації в застарілих браузерах погана. Спочатку це було пов’язано з фразами в ECMAScript
мовній специфікації, які виглядають приблизно так:
Number.prototype.toLocaleString () Получає
значення рядка, що представляє значення числа, відформатованого відповідно до умов поточного локального середовища хост-середовища. Ця функція залежить від реалізації, і це дозволяється, але не рекомендується, щоб вона повертала те саме, що і дляString .
Кожен метод локалізації, визначений у специфікації, визначається як "залежний від реалізації", що призводить до безлічі невідповідностей. У цьому випадку Chrome Opera і Safari повернуть те саме, що і .toString()
. Firefox та IE повернуть рядки, відформатовані локально, а IE навіть містить роздільник тисячі (ідеально підходить для валютних рядків). Нещодавно Chrome було оновлено, щоб повернути відокремлений тисячами рядок, хоча без фіксованої десяткової точки.
Для сучасних умов , то API специфікація ECMAScript Інтернаціоналізації , новий стандарт , який доповнює ECMAScript мову специфікація, забезпечує набагато кращу підтримку для порівняння рядків, форматування чисел, а також дата і час форматування; він також фіксує відповідні функції в Spec. Вступ можна знайти тут . Реалізація доступна на:
- Chrome 24
- Firefox 29
- Internet Explorer 11
- Опера 15
Існує також реалізація сумісності, Intl.js , яка надаватиме API у середовищах, де його ще не існує.
Визначення бажаної мови користувача залишається проблемою, оскільки немає специфікації для отримання поточної мови. Кожен браузер реалізує метод отримання мовного рядка, але це може базуватися на мові операційної системи користувача або просто на мові браузера:
// navigator.userLanguage for IE, navigator.language for others
var lang = navigator.language || navigator.userLanguage;
Хорошим рішенням для цього є скидання заголовка Accept-Language з сервера на клієнта. Якщо він відформатований у вигляді JavaScript, він може бути переданий конструкторам інтернаціоналізації API, які автоматично виберуть найкращий (або першу підтримку).
Коротше кажучи, вам доведеться самостійно вкласти багато робіт або використовувати рамку / бібліотеку , тому що ви не можете розраховувати на браузер, щоб зробити це за вас.
Різні бібліотеки та плагіни для локалізації:
Не соромтеся додавати / редагувати.