Угловой i18n - Интерполяция - PullRequest
       12

Угловой i18n - Интерполяция

0 голосов
/ 10 октября 2018

Я следую инструкции Angular i18n: https://angular.io/guide/i18n

Я получил, как правильно интерполировать " String + Variable ".

<trans-unit id="interpolated-persons" datatype="html">
        <source>Persons: <x id="INTERPOLATION" equiv-text="{{number-of-people}}"/></source>
        <target>Personas: <x id="INTERPOLATION" equiv-text="{{number-of-people}}"/></target>
</trans-unit>

<span i18n="@@interpolated-persons">Persons: {{persons}}</span>

Однако,Я не понимаю, как интерполировать " String + Plural ".

<trans-unit id="interpolated-time" datatype="html">
        <source>Time: <x id="ICU" equiv-text="{tempo, plural, other {...}}"/></source>
        <target>Tiempo: {tempo, plural, =60 {una hora} =1440 {un día} =10080 {una semana} other {mucho tiempo}}</target>
</trans-unit>

<span i18n="@@interpolated-time">Time: {minutes, plural, other {{{minutes}} elapsed}}</span><br>

Я пробовал несколько вещей.Единственный способ заставить его работать - это изменить темп на жестко закодированное значение или минут непосредственно в переменной.Однако, если я это сделаю, я не смогу повторно использовать этот перевод на другой странице.

Можно ли интерполировать String + Plural ?

1 Ответ

0 голосов
/ 11 октября 2018

Угловое разбиение выражения «String + Plural» на 2 более простых выражения.

Множественное внутреннее выражение получает случайный идентификатор, и оно должно соответствовать транс-единице «id» в файле messages.xlf, чтобыработа.

Точное Перевести вложенное выражение пример в https://angular.io/guide/i18n должно быть так:

<trans-unit id="interpolated-time" datatype="html">
    <source>Updated: <x id="ICU" equiv-text="{minutes, plural, =0 {...} =1 {...} other {...}}"/></source>
    <target>Actualizado: <x id="ICU" equiv-text="{minutes, plural, =0 {...} =1 {...} other {...}}"/></target>
  </trans-unit>
  <trans-unit id="7151c2e67748b726f0864fc443861d45df21d706" datatype="html">
    <source>{VAR_PLURAL, plural, =0 {just now} =1 {one minute ago} other {<x id="INTERPOLATION" equiv-text="{{minutes}}"/> minutes ago by {VAR_SELECT, select, male {male} female {female} other {other} }} }</source>
    <target>{VAR_PLURAL, plural, =0 {justo ahora} =1 {hace 1 minuto} other {hace <x id="INTERPOLATION" equiv-text="{{minutes}}"/> minutos por {VAR_SELECT, select, male {un hombre} female {una dama} other {otro} }} }</target>
  </trans-unit>

Идентификатор 7151c2e67748b726f0864fc443861d45df21d706 должен быть получен из вывода компиляции:

Missing translation for message "7151c2e67748b726f0864fc443861d45df21d706"
...