Od Angulara 9 możemy korzystać
$localize`Hello ${name}:name:`
Dla i18n w kodzie maszynowym. To wciąż ma pewne ograniczenia, ponieważ ng xi18n
polecenie nie wykrywa ciągów, ale jeśli te teksty zostaną dodane ręcznie do pliku tłumaczenia, zadziała.
$localize
Funkcja jest dość dobrze udokumentowane w JSDoc w źródle , jednak nie wyjaśnia, w jaki sposób pracować z liczby mnogiej. Mam na myśli coś takiego (pseudo-kod):
$localize`Hello {${count}, plural, =1 {reader} other {readers}}`
Czy to jest możliwe $localize
? Jeśli tak: jak? Jeśli nie: Jak Angular kompiluje takie wyrażenia z HTML do TypeScript?
angular
angular-i18n
Jankes
źródło
źródło
<span i18n>Updated {minutes, plural, =0 {just now} =1 {one minute ago} other {{{minutes}} minutes ago}}</span>
? To jest w dokumentach. Całkiem podobny do tego, czego chceszOdpowiedzi:
Na razie nie jest możliwe korzystanie z ICU
$localize
, jak omówiono w tym numerze github . Z ostatnich komentarzy wygląda na to, że zespół kątowy rozważa to, jeśli pozostaje lekki.Tymczasem sugerowanym obejściem jest utworzenie własnej metody pomocniczej, która zwraca poprawne tłumaczenie na podstawie parametru count.
źródło
Właśnie przeczytałem problem https://github.com/angular/angular/issues/35912 i myślę, że
intl-messageformat
może zrobić to, czego potrzebujesz.Zobacz https://github.com/formatjs/formatjs/tree/master/packages/intl-messageformat .
źródło