Начиная с Angular 9 мы можем использовать
$localize`Hello ${name}:name:`
Для i18n в машинописном коде. Это все еще имеет некоторые ограничения, так как ng xi18n
команда не обнаруживает строки, но если эти тексты добавляются вручную в файл перевода, это работает.
$localize
Функция достаточно хорошо документированы в JSDoc в источнике , однако это не объясняет , как работать с существительных. Я имею в виду что-то вроде этого (псевдокод):
$localize`Hello {${count}, plural, =1 {reader} other {readers}}`
Это возможно с $localize
? Если да, то как? Если нет: как Angular компилирует такие выражения из HTML в TypeScript?
angular
angular-i18n
янки
источник
источник
<span i18n>Updated {minutes, plural, =0 {just now} =1 {one minute ago} other {{{minutes}} minutes ago}}</span>
? Это в документах. Очень похоже на то, что вы хотитеОтветы:
На данный момент невозможно использовать ICU с
$localize
, как обсуждалось в этом выпуске github . Из последних комментариев похоже, что угловая команда рассматривает вопрос, останется ли он легким.Между тем, предлагаемым обходным решением является создание собственного вспомогательного метода, который возвращает правильный перевод на основе параметра count.
источник
Я только что прочитал выпуск https://github.com/angular/angular/issues/35912 и думаю, что
intl-messageformat
может сделать то, что вам нужно.См. Https://github.com/formatjs/formatjs/tree/master/packages/intl-messageformat .
источник