Поддержка локализации в старых браузерах оставляет желать лучшего. Первоначально это было связано с фразами на языке ECMAScript спецификации, которые выглядят так:
Number.prototype.toLocaleString()
Создает строковое значение, представляющее значение числа отформатированные в соответствии с соглашения текущей локали среды хоста. Эта функция зависит от реализации, и допустимо, но не рекомендуется, чтобы она возвращала то же самое, что и toString.
Каждый метод локализации, определенный в спецификации, определяется как «зависящий от реализации», что приводит к множеству несоответствий. В этом случае Chrome Opera и Safari вернут то же самое, что и .toString()
. Firefox и IE возвращают строки, форматированные по языку, и IE даже включает разделитель тысяч (идеально подходит для строк валюты). Недавно Chrome был обновлен, чтобы вернуть строку, разделенную тысячами, хотя без фиксированного десятичного знака.
Для современных условий, то ECMAScript Internationalization API spec, новый стандарт, который дополняет спецификацию ECMAScript языка, обеспечивает гораздо лучшую поддержку для сравнения строк, форматирование чисел, дату и время форматирования; он также фиксирует соответствующие функции в Spec Language. Введение можно найти here. Реализации доступны в:
- Chrome 24
- Firefox 29
- Internet Explorer 11
- Opera 15
Существует также реализация совместимости, Intl.js, который обеспечит API в где он еще не существует.
Определение предпочтительного языка пользователя остается проблемой, поскольку нет спецификации для получения текущего языка.Каждый браузер реализует метод, чтобы получить строку языка, но это может быть основано на языке операционной системы пользователя или только язык браузера:
// navigator.userLanguage for IE, navigator.language for others
var lang = navigator.language || navigator.userLanguage;
Хороший обходной путь для этого является дамп заголовок Accept-Language от сервера к клиенту. Если он отформатирован как JavaScript, он может быть передан конструкторам API интернационализации, которые автоматически выбирают наилучшую (или поддерживаемую) локаль.
Одним словом, вы должны выполнить большую часть работы самостоятельно или использовать framework/library, потому что вы не можете полагаться на браузер, чтобы сделать это за вас.
Различные библиотеки и плагины для локализации:
Не стесняйтесь добавлять/редактировать.
Microsoft недавно выпустила плагин JQuery глобализации. Подробности [здесь] (http://weblogs.asp.net/scottgu/archive/2010/06/10/jquery-globalization-plugin-from-microsoft.aspx) – Adeel