Internacionalización (i18n) en Moment.js
Moment.js tiene un sólido soporte para la internacionalización.
Puedes cargar varias configuraciones regionales y cambiar fácilmente entre ellas.
Además de asignar un locale global, puedes asignar una locale a un moment específico.
Cambiar el locale globalmente
De forma predeterminada, Moment.js viene con cadenas de configuración regional en inglés (Estados Unidos). Si necesitas otras configuraciones regionales, puedes cargarlas en Moment.js para usarlas más adelante.
Para cargar una configuración regional, pasa la clave y los valores de cadena a moment.locale
.
Se pueden encontrar más detalles sobre cada una de las partes del paquete local en la sección personalización.
Los detalles sobre week.dow
y week.doy
se pueden encontrar en la sección personalización.
Una vez que cargues una configuración regional, se convierte en la configuración regional activa. Para cambiar las configuraciones regionales activas, simplemente llama a moment.locale
con la clave de una configuración regional cargada.
A partir de 2.21.0, Moment anunciará mediante console.warn
si la configuración regional no está disponible.
A partir de 2.8.0, cambiar la configuración regional (locale) global no afecta las instancias existentes.
moment.locale
devuelve la configuración regional utilizada. Esto es útil porque Moment no cambiará las configuraciones regionales si no conoce la que tú especificas.
También puedes especificar una lista de configuraciones regionales y Moment usará la primera para la que tenga localizaciones.
Moment también probará las subcadenas del especificador de configuración regional (locale) desde la más específica hasta la menos específica hasta que encuentre una configuración regional que conozca. Esto es útil cuando se proporciona a Moment una cadena de configuración regional extraída del entorno del usuario, como window.navigator.language
.
Finalmente, Moment buscará de forma inteligente en una serie de configuraciones regionales y sus subcadenas.
La lógica funciona de la siguiente manera: se elige la siguiente configuración regional y se prueba tal como está. Si eso falla, el código normalmente intenta cortar el último bit (normalmente la designación del país) y vuelve a intentarlo. Sin embargo, si el siguiente elemento del array tiene el mismo prefijo o más largo que el que se va a probar, la iteración continúa.
Entonces, por ejemplo, si el array tiene la secuencia
luego se prueba primero “AA-BB”, luego una solución ingenua probaría “AA”, pero esta en cambio comprueba que “AA-CC” es en realidad más concreta que “AA”, por lo que prueba “AA-CC” a continuación, y sólo después de que falla (si falla), intenta “AA”, porque “XX-YY” no tiene “AA” como prefijo. Entonces, al final, se prueban las siguientes configuraciones regionales en este orden (asumiendo que todas fallan, se prueba con la siguiente):
Cambiar el locale localmente
Una configuración regional global puede ser problemática cuando se pasan moments que pueden necesitar ser formateados en una configuración regional diferente.
Si llamas a moment#locale
sin parámetros, obtendrás la configuración regional que se usaría en ese momento.
Si necesitas acceder a los datos locales por un moment, esta es la forma preferida de hacerlo.
A partir de 2.3.0, también puedes especificar una serie de identificadores locales. Funciona de la misma manera que en la configuración regional global.