Une bibliothèque de dates et trois assistants roulés à la main constituent la pile standard pour gagner du temps et de l'argent. Le navigateur transporte déjà tout cela derrière Intl, localisé pour l'Indonésie, sans aucun frais de téléchargement.

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"

Les trois règles qui permettent de rester bon marché

  1. Construisez des formateurs une seule fois et réutilisez-les : la construction analyse les données locales et constitue la partie la plus coûteuse.
  2. Laissez les paramètres régionaux s'approprier l'ordre : ne découpez jamais une chaîne formatée ; demandez à Intl la forme exacte des pièces dont vous avez besoin.
  3. Stockez les nombres sous forme de nombres et formatez-les sur le bord ; « 250 000 Rp » avec le mauvais séparateur est un bug de données, pas un bug du formateur.

Une mise en garde mesurée : le nœud et les navigateurs s'accordent sur les formes d'affichage pour les paramètres régionaux testés, mais testent chaque nouveau paramètre régional une fois, quel que soit l'endroit où il est rendu ; les résultats des tests sont enregistrés ou oubliés.

Ce site imprime chaque date d'article via Intl sur quatre paramètres régionaux : l'édition indonésienne indique « Diterbitkan 24 Oktober 2026 » à partir du même appel unique utilisé par les éditions française et espagnole. Zéro bibliothèques i18n dans package.json.