Desde Angular 9, podemos usar
$localize`Hello ${name}:name:`
Para i18n no código datilografado. Isso ainda tem algumas limitações, pois o ng xi18n
comando não detecta as strings, mas se esses textos forem adicionados manualmente ao arquivo de tradução, ele funcionará.
A $localize
função está muito bem documentada no JSDoc na fonte , no entanto, não explica como trabalhar com plurais. O que quero dizer é algo assim (pseudo-código):
$localize`Hello {${count}, plural, =1 {reader} other {readers}}`
Isso é possível com $localize
? Se sim: como? Se não: como o Angular compila essas expressões do HTML para o TypeScript?
angular
angular-i18n
ianque
fonte
fonte
<span i18n>Updated {minutes, plural, =0 {just now} =1 {one minute ago} other {{{minutes}} minutes ago}}</span>
? Isso está nos documentos. Bem parecido com o que você querRespostas:
Por enquanto, não é possível usar UTIs
$localize
, como discutido nesta edição do github . Desde os últimos comentários, parece que a equipe angular está considerando isso se permanecer leve.Enquanto isso, a solução sugerida é criar seu próprio método auxiliar que retorne a tradução correta com base no parâmetro count.
fonte
Acabei de ler a edição https://github.com/angular/angular/issues/35912 e acho que isso
intl-messageformat
pode fazer o que você precisa.Consulte https://github.com/formatjs/formatjs/tree/master/packages/intl-messageformat .
fonte