Aller au contenu principal

5 articles tagués avec « Intl »

Voir tous les tags

`Intl.DisplayNames`

· 4 minutes de lecture
Shu-yu Guo ([@_shu](https://twitter.com/_shu)) et Frank Yung-Fong Tang

Les applications Web destinées à un public mondial doivent afficher les noms des langues, des régions, des écritures et des devises dans de nombreuses langues. Les traductions de ces noms nécessitent des données disponibles dans le Unicode CLDR. L'intégration de ces données dans l'application engendre un coût en temps de développement. Les utilisateurs préfèrent généralement des traductions cohérentes des noms de langues et de régions, et la mise à jour de ces données en fonction des événements géopolitiques mondiaux nécessite un entretien constant.

`Intl.NumberFormat`

· 5 minutes de lecture
Mathias Bynens ([@mathias](https://twitter.com/mathias)) et Shane F. Carr

Vous connaissez peut-être déjà l’API Intl.NumberFormat, car elle est prise en charge dans les environnements modernes depuis un certain temps.

Dans sa forme la plus basique, Intl.NumberFormat vous permet de créer une instance de formateur réutilisable qui prend en charge le formatage des nombres adapté à la langue locale. Tout comme les autres API Intl.*Format, une instance de formateur prend en charge les méthodes format et formatToParts :

`Intl.ListFormat`

· 4 minutes de lecture
Mathias Bynens ([[@mathias](https://twitter.com/mathias)) et Frank Yung-Fong Tang

Les applications web modernes utilisent souvent des listes composées de données dynamiques. Par exemple, une application de visualisation de photos peut afficher quelque chose comme :

Cette photo inclut Ada, Edith, et Grace.

Un jeu basé sur du texte peut avoir un type de liste différent :

Choisissez votre superpuissance : invisibilité, psychokinésie, ou empathie.

Étant donné que chaque langue a des conventions de formatage de liste différentes, ainsi que des mots différents, la mise en œuvre d'un formateur de liste localisée est complexe. Non seulement cela nécessite une liste de tous les mots (comme « et » ou « ou » dans les exemples ci-dessus) pour chaque langue que vous souhaitez prendre en charge — mais il faut également coder les conventions de formatage exactes pour toutes ces langues ! Le CLDR Unicode fournit ces données, mais pour les utiliser en JavaScript, elles doivent être intégrées et embarquées avec les autres codes de la bibliothèque. Cela augmente malheureusement la taille du bundle pour de telles bibliothèques, ce qui a des impacts négatifs sur les temps de chargement, les coûts de parse/compilation, et la consommation de mémoire.

`Intl.RelativeTimeFormat`

· 5 minutes de lecture
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Les applications web modernes utilisent souvent des phrases comme « hier », « il y a 42 secondes », ou « dans 3 mois » au lieu de dates complètes et de marques temporelles. Ces valeurs formatées en temps relatif sont devenues si courantes que plusieurs bibliothèques populaires implémentent des fonctions utilitaires pour les formater de manière localisée. (Des exemples incluent Moment.js, Globalize, et date-fns.)

`Intl.PluralRules`

· 4 minutes de lecture
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Iñtërnâtiônàlizætiøn est difficile. La gestion des pluriels est l'un des nombreux problèmes qui peuvent sembler simples, jusqu'à ce que vous réalisiez que chaque langue a ses propres règles de pluralisation.

Pour la pluralisation en anglais, il n'y a que deux résultats possibles. Prenons le mot « chat » comme exemple :

  • 1 chat, c'est-à-dire la forme 'one', connue comme le singulier en anglais
  • 2 chats, mais aussi 42 chats, 0,5 chats, etc., c'est-à-dire la forme 'other' (la seule autre), connue comme le pluriel en anglais.

La toute nouvelle API Intl.PluralRules vous indique quelle forme s'applique dans une langue de votre choix en fonction d'un nombre donné.

const pr = new Intl.PluralRules('en-US');
pr.select(0); // 'other' (par ex. '0 chats')
pr.select(0.5); // 'other' (par ex. '0,5 chats')
pr.select(1); // 'one' (par ex. '1 chat')
pr.select(1.5); // 'other' (par ex. '0,5 chats')
pr.select(2); // 'other' (par ex. '0,5 chats')