Una biblioteca de fechas más tres ayudantes enrollados a mano es la pila estándar para ahorrar dinero y tiempo. El navegador ya lo incluye todo detrás de Intl, localizado para Indonesia, sin ningún costo de descarga.

new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR" })
  .format(250000); // "Rp 250.000"

new Intl.DateTimeFormat("id-ID", { dateStyle: "long" })
  .format(new Date()); // "26 Oktober 2026"

new Intl.RelativeTimeFormat("id-ID")
  .format(-3, "day"); // "3 hari yang lalu"

Las tres reglas que lo mantienen barato

  1. Cree formateadores una vez y reutilícelos: la construcción analiza los datos locales y es la parte costosa.
  2. Deje que la configuración regional sea dueña del orden: nunca corte una cadena formateada; Pregunte a Intl por la forma exacta de las piezas que necesita.
  3. Almacene números como números y formatee en el borde; 'Rp 250.000' con el separador incorrecto es un error de datos, no un error de formateador.

Una advertencia mesurada: el nodo y los navegadores acuerdan las formas de visualización para las configuraciones regionales probadas, pero prueban cada nueva configuración regional una vez dondequiera que se represente; Los resultados de las pruebas se registran o se olvidan.

Este sitio imprime la fecha de cada artículo a través de Intl en cuatro lugares: la edición indonesia dice 'Diterbitkan 24 de octubre de 2026' de la misma llamada única que utilizan las ediciones en francés y español. Cero bibliotecas i18n en package.json.