react node i18n example docs javascript internationalization

node - ¿Cómo funciona la internacionalización en JavaScript?



intl js (4)

Algunos de ellos son nativos, el resto está disponible a través de bibliotecas.

Por ejemplo, Datejs es una buena biblioteca internacional de fechas.

Por lo demás, se trata solo de la traducción de idiomas, y JavaScript es nativamente compatible con Unicode (así como con todos los principales navegadores).

Me pregunto cómo tratar la internacionalización en JavaScript. Busqué en Google pero no obtengo respuestas convincentes para:

  • ¿JavaScript tiene soporte nativo para la internacionalización?
  • ¿Qué es i18n en JavaScript?
  • ¿Cómo lidiar con calendarios, monedas, fechas, etc.?

Ya leí Internacionalización dentro de JavaScript .


El soporte de localización en navegadores heredados es pobre. Originalmente, esto se debió a las frases en el lenguaje de ECMAScript 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 de host. Esta función depende de la implementación, y es permisible, pero no recomendable, que devuelva lo mismo que a String .

Cada método de localización definido en la especificación se define como "dependiente de la implementación", lo que genera muchas inconsistencias. En este caso, Chrome Opera y Safari devolverían lo mismo que .toString() . Firefox e IE devolverán cadenas con formato de localización, e IE incluso incluye un separador de miles (perfecto para cadenas de moneda). Chrome se actualizó recientemente para devolver una cadena separada en miles, aunque sin un decimal fijo.

Para entornos modernos , la especificación de la API de ECMAScript Internationalization , un nuevo estándar que complementa las especificaciones del lenguaje ECMAScript, proporciona una compatibilidad 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 here . Las implementaciones están disponibles en:

  • Chrome 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 todavía 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 simplemente 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 tiene el formato de JavaScript, puede pasarse a los constructores de la API de internacionalización, que seleccionará automáticamente la mejor configuración regional (o la primera compatible).

En resumen, usted debe realizar una gran parte del trabajo usted mismo, o usar un here , 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.


Mozilla lanzó recientemente el increíble L20n o localización 2.0. En sus propias palabras L20n es

un lenguaje de scripting de fuente abierta y localización específica usado para procesar género, plurales, conjugaciones y la mayoría de los otros elementos estrafalarios del lenguaje natural.

Su implementación de js está en el repositorio github L20n.


También puede probar con otra biblioteca: https://github.com/wikimedia/jquery.i18n .

Además de la sustitución de parámetros y múltiples formas plurales, tiene soporte para el género, una característica bastante única de las reglas gramaticales personalizadas que necesitan algunos idiomas.