Comment afficher les noms complets des devises au lieu des symboles ?

Utilisez l'option currencyDisplay pour afficher 'dollars américains' au lieu de '$'

Introduction

Les symboles monétaires créent de l'ambiguïté dans les applications internationales. Le symbole dollar $ représente les dollars américains, les dollars canadiens, les dollars australiens, et les devises de plus d'une douzaine d'autres pays. Les utilisateurs ne peuvent pas déterminer quelle devise vous désignez à partir du symbole seul.

Les noms complets des devises éliminent cette confusion. Au lieu d'afficher $1,234.56, vous affichez 1,234.56 dollars américains. La devise devient explicite et les utilisateurs comprennent exactement ce qu'ils voient.

JavaScript propose deux approches pour afficher les noms complets des devises. Vous pouvez formater les montants avec les noms en utilisant Intl.NumberFormat, ou obtenir les noms de devises autonomes en utilisant Intl.DisplayNames.

Formater les montants avec les noms complets des devises

L'option currencyDisplay dans Intl.NumberFormat contrôle comment les devises apparaissent dans les montants formatés. Définissez-la sur "name" pour afficher le nom complet de la devise.

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencyDisplay: 'name'
});

console.log(formatter.format(1234.56));
// Résultat : 1,234.56 US dollars

Le formateur inclut le nom complet de la devise après le montant. Le nom suit les règles grammaticales de la locale que vous spécifiez.

Les valeurs de l'option currencyDisplay

L'option currencyDisplay accepte quatre valeurs qui déterminent comment la devise apparaît.

symbol (par défaut)

Affiche un symbole monétaire localisé.

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencyDisplay: 'symbol'
});

console.log(formatter.format(100));
// Résultat : $100.00

code

Affiche le code de devise ISO 4217 à trois lettres.

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencyDisplay: 'code'
});

console.log(formatter.format(100));
// Résultat : USD 100.00

name

Affiche le nom complet localisé de la devise.

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencyDisplay: 'name'
});

console.log(formatter.format(100));
// Résultat : 100.00 US dollars

narrowSymbol

Affiche un format de symbole compact sans distinction de pays.

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencyDisplay: 'narrowSymbol'
});

console.log(formatter.format(100));
// Output: $100.00

L'option narrowSymbol produit $ au lieu de US$ pour les dollars américains. Utilisez cette option lorsque le contexte rend la devise évidente.

Comment la locale affecte les noms de devises

La locale que vous transmettez à Intl.NumberFormat détermine la langue et la grammaire du nom de la devise.

const usdollar = 1234.56;

// Anglais
const enFormatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencyDisplay: 'name'
});
console.log(enFormatter.format(usdollar));
// Output: 1,234.56 US dollars

// Français
const frFormatter = new Intl.NumberFormat('fr-FR', {
  style: 'currency',
  currency: 'USD',
  currencyDisplay: 'name'
});
console.log(frFormatter.format(usdollar));
// Output: 1 234,56 dollars des États-Unis

// Japonais
const jaFormatter = new Intl.NumberFormat('ja-JP', {
  style: 'currency',
  currency: 'USD',
  currencyDisplay: 'name'
});
console.log(jaFormatter.format(usdollar));
// Output: 1,234.56 米ドル

Chaque locale fournit sa propre traduction du nom de la devise. Le format des nombres change également selon les conventions de la locale.

Obtenir les noms de devises sans montants

Utilisez Intl.DisplayNames lorsque vous avez besoin du nom de la devise seul sans formater un montant.

const currencyNames = new Intl.DisplayNames('en-US', {
  type: 'currency'
});

console.log(currencyNames.of('USD'));
// Output: US Dollar

console.log(currencyNames.of('EUR'));
// Output: Euro

console.log(currencyNames.of('JPY'));
// Output: Japanese Yen

Transmettez les codes de devise ISO 4217 à la méthode of(). La méthode renvoie le nom de la devise localisé.

Vous pouvez obtenir les noms de devises dans n'importe quelle locale.

// Obtenir les noms de devises en français
const frCurrencyNames = new Intl.DisplayNames('fr-FR', {
  type: 'currency'
});

console.log(frCurrencyNames.of('USD'));
// Output: dollar des États-Unis

console.log(frCurrencyNames.of('EUR'));
// Output: euro

Quand utiliser les noms complets des devises

Utilisez les noms complets des devises dans ces situations.

Rapports et relevés financiers

Affichez les noms complets dans les documents financiers où la précision est importante.

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencyDisplay: 'name'
});

console.log(`Total revenue: ${formatter.format(1500000)}`);
// Output: Total revenue: 1,500,000.00 US dollars

Applications multi-devises

Affichez les noms complets lorsque les utilisateurs travaillent simultanément avec plusieurs devises.

const currencies = [
  { code: 'USD', amount: 1000 },
  { code: 'EUR', amount: 850 },
  { code: 'GBP', amount: 750 }
];

currencies.forEach(item => {
  const formatter = new Intl.NumberFormat('en-US', {
    style: 'currency',
    currency: item.code,
    currencyDisplay: 'name'
  });
  console.log(formatter.format(item.amount));
});
// Output:
// 1,000.00 US dollars
// 850.00 euros
// 750.00 British pounds

Interfaces de sélection de devises

Affichez les noms des devises dans les menus déroulants ou les listes de sélection.

const currencies = ['USD', 'EUR', 'GBP', 'JPY', 'CAD'];
const displayNames = new Intl.DisplayNames('en-US', {
  type: 'currency'
});

const options = currencies.map(code => ({
  value: code,
  label: displayNames.of(code)
}));

console.log(options);
// Output:
// [
//   { value: 'USD', label: 'US Dollar' },
//   { value: 'EUR', label: 'Euro' },
//   { value: 'GBP', label: 'British Pound' },
//   { value: 'JPY', label: 'Japanese Yen' },
//   { value: 'CAD', label: 'Canadian Dollar' }
// ]

Accessibilité

Les lecteurs d'écran annoncent les noms complets des devises plus clairement que les symboles. Les utilisateurs ayant des déficiences visuelles comprennent mieux 100.00 US dollars que $100.00.

Utilisez les symboles de devise pour les affichages compacts où des contraintes d'espace existent et où le contexte rend la devise claire. Utilisez les noms complets lorsque la clarté et l'accessibilité sont prioritaires.