Depuis Angular 9, nous pouvons utiliser
$localize`Hello ${name}:name:`
Pour i18n en code tapuscrit. Cela a encore quelques limitations car la ng xi18n
commande ne détecte pas les chaînes, mais si ces textes sont ajoutés manuellement au fichier de traduction, cela fonctionne.
La $localize
fonction est assez bien documentée dans le JSDoc dans la source , mais elle n'explique pas comment travailler avec des pluriels. Ce que je veux dire, c'est quelque chose comme ça (pseudo-code):
$localize`Hello {${count}, plural, =1 {reader} other {readers}}`
Est-ce possible avec $localize
? Si oui: comment? Si non: comment Angular compile-t-il de telles expressions de HTML vers TypeScript?
angular
angular-i18n
yankee
la source
la source
<span i18n>Updated {minutes, plural, =0 {just now} =1 {one minute ago} other {{{minutes}} minutes ago}}</span>
? C'est dans les documents. Assez similaire à ce que vous voulezRéponses:
Pour l'instant, il n'est pas possible d'utiliser des ICU avec
$localize
, comme discuté dans ce numéro de github . D'après les derniers commentaires, il semble que l'équipe angulaire l'envisage si elle reste légère.Pendant ce temps, la solution de contournement suggérée consiste à créer votre propre méthode d'assistance qui renvoie la traduction correcte en fonction du paramètre count.
la source
Je viens de lire le numéro https://github.com/angular/angular/issues/35912 et je pense que cela
intl-messageformat
peut faire ce dont vous avez besoin.Voir https://github.com/formatjs/formatjs/tree/master/packages/intl-messageformat .
la source