Internacionalización con la API Intl
El objeto global Intl es la API nativa de JavaScript para formatear números, monedas, fechas, horas y textos según las convenciones culturales y lingüísticas de cada país (locales), eliminando la necesidad de librerías externas pesadas (como moment.js o numeral.js).
1. Formateo de Monedas y Números con Intl.NumberFormat #
Permite formatear cifras decimales, porcentajes y monedas con los símbolos, separadores de miles y decimales exactos del idioma del usuario:
1const precio = 12450.75; 2 3// Formato en Euros para España 4const formatoES = new Intl.NumberFormat("es-ES", { 5 style: "currency", 6 currency: "EUR", 7}).format(precio); 8 9// Formato en Dólares para Estados Unidos 10const formatoUS = new Intl.NumberFormat("en-US", { 11 style: "currency", 12 currency: "USD", 13}).format(precio); 14 15console.log("España:", formatoES); 16console.log("USA:", formatoUS);Salida de consola España: 12.450,75 € USA: $12,450.75
2. Formateo de Fechas y Horas con Intl.DateTimeFormat #
Formatea fechas de forma declarativa y localizada:
1const fechaActual = new Date("2026-08-25T14:30:00Z"); 2 3const formateadorFecha = new Intl.DateTimeFormat("es-ES", { 4 dateStyle: "full", 5 timeStyle: "short", 6 timeZone: "Europe/Madrid", 7}); 8 9console.log(formateadorFecha.format(fechaActual));Salida de consola martes, 25 de agosto de 2026, 16:30
3. Fechas Relativas con Intl.RelativeTimeFormat #
Genera descripciones temporales dinámicas ("hace 5 minutos", "en 3 días", "ayer"):
1const tiempoRelativo = new Intl.RelativeTimeFormat("es-ES", { numeric: "auto" }); 2 3console.log(tiempoRelativo.format(-1, "day")); // "ayer" 4console.log(tiempoRelativo.format(-15, "minute")); // "hace 15 minutos" 5console.log(tiempoRelativo.format(2, "month")); // "dentro de 2 meses"Salida de consola ayer hace 15 minutos dentro de 2 meses
4. Listas Localizadas con Intl.ListFormat #
Une elementos de listas aplicando las conjunciones gramaticales correctas ("y", "o", "and", "or"):
1const lenguajes = ["JavaScript", "Python", "TypeScript"]; 2 3const formatoLista = new Intl.ListFormat("es-ES", { style: "long", type: "conjunction" }); 4console.log(formatoLista.format(lenguajes));Salida de consola JavaScript, Python y TypeScript
Resumen del tema
Conceptos clave #
- API
Intl: estándar ECMAScript de internacionalización sin dependencias externas. Intl.NumberFormat: formato de monedas (currency), porcentajes (percent) y unidades con separadores locales.Intl.DateTimeFormat: formato flexible de fechas y horas (dateStyle,timeStyle,timeZone).Intl.RelativeTimeFormat: cálculo de textos relativos ("hace X tiempo").Intl.ListFormat: unión gramatical de listas con conectores idiomáticos ("A, B y C").
Qué debes recordar #
Utiliza el objeto nativo Intl para todas las necesidades de formato de moneda, números y fechas según la configuración regional del usuario.