El soporte de localización en navegadores heredados es deficiente. Originalmente, esto se debió a frases en la ECMAScript
especificación del lenguaje que se ven así:
Number.prototype.toLocaleString ()
Produce un valor de cadena que representa el valor del Número formateado de acuerdo con las convenciones de la configuración regional actual del entorno host. Esta función depende de la implementación, y es permisible, pero no recomendable, que devuelva lo mismo que toString .
Cada método de localización definido en la especificación se define como "dependiente de la implementación", lo que resulta en muchas inconsistencias. En este caso, Chrome Opera y Safari devolverían lo mismo que .toString()
. Firefox e IE devolverán cadenas con formato local, e IE incluso incluye un separador de mil (perfecto para cadenas de divisas). Chrome se actualizó recientemente para devolver una cadena separada por miles, aunque sin un decimal fijo.
Para entornos modernos , la especificación de API de internacionalización ECMAScript , un nuevo estándar que complementa la especificación del lenguaje ECMAScript, proporciona un soporte mucho mejor para la comparación de cadenas, el formato de números y el formato de fecha y hora; También corrige las funciones correspondientes en la especificación de idioma. Una introducción se puede encontrar aquí . Las implementaciones están disponibles en:
- Cromo 24
- Firefox 29
- Internet Explorer 11
- Opera 15
También hay una implementación de compatibilidad, Intl.js , que proporcionará la API en entornos donde aún no existe.
Determinar el idioma preferido del usuario sigue siendo un problema, ya que no hay especificaciones para obtener el idioma actual. Cada navegador implementa un método para obtener una cadena de idioma, pero esto podría basarse en el idioma del sistema operativo del usuario o solo en el idioma del navegador:
// navigator.userLanguage for IE, navigator.language for others
var lang = navigator.language || navigator.userLanguage;
Una buena solución para esto es volcar el encabezado Accept-Language del servidor al cliente. Si se formatea como JavaScript, se puede pasar a los constructores de API de internacionalización, que elegirán automáticamente la mejor configuración regional (o la primera admitida).
En resumen, debe realizar una gran parte del trabajo usted mismo o utilizar un marco / biblioteca , porque no puede confiar en que el navegador lo haga por usted.
Varias bibliotecas y complementos para localización:
Siéntase libre de agregar / editar.