Cómo utilizar angular 9 $ localizar con plurales?

Yankee:

Desde angular 9 podemos utilizar

$localize`Hello ${name}:name:`

Para i18n en el código de texto mecanografiado. Esto todavía tiene algunas limitaciones que el ng xi18ncomando no detecta las cuerdas, pero si estos textos se añaden manualmente al archivo de traducción funciona.

La $localizefunción está bastante bien documentado en la jsdoc en la fuente , sin embargo, no explica cómo trabajar con los plurales. Lo que quiero decir es algo como esto (pseudo-código):

$localize`Hello {${count}, plural, =1 {reader} other {readers}}`

¿Es esto posible con $localize? En caso afirmativo: ¿Cómo? En caso negativo: ¿Cómo se compila angular tales expresiones de HTML a texto mecanografiado?

David:

Por ahora, no es posible utilizar unidades de cuidados intensivos con $localize, como se explica en este tema GitHub . A partir de los últimos comentarios, parece que el equipo angular es teniendo en cuenta que si se mantiene ligero.

Mientras tanto, la solución sugerida es crear su propio método de ayuda que devuelve la traducción correcta en función del parámetro de recuento.

    title = $localize `Hi ${this.name}! You have ${
        plural(this.users.length. {
          0: $localize `no users`,
          1: $localize `one user`,
          other: $localize`${this.users.length} users`,
    }.`

    function plural(value, options) {
      // Handle 0, 1, ... cases
      const directResult = options[value];
      if (directResult !== undefined) { return directResult; }
      // handle zero, one, two, few, many
      // ...
      return options.other;
    } 

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=369315&siteId=1
Recomendado
Clasificación