Выражение ICU * выберите * не обнаруживает пустое значение - PullRequest
0 голосов
/ 18 апреля 2019

Я перевожу свое приложение, используя i18n angular 7, и у меня возникают проблемы с выражением ICU , выбирающим .Проблема в том, что я хочу, чтобы условие распознавало и очищало значение следующим образом: animal: string

<div i18n="@@example> 
    { animal, select, EMPTY { Cat } dog { Dog } other { Pig } }
</div>

Я пытался использовать

{ animal, select, undefined { Cat } dog { Dog } other { Pig } }

, но оно не работало

когда животное:

(пустая строка, ноль или неопределенное значение) -> перевести Cat

собака -> перевести собака

другое -> переводить Свинья

1 Ответ

1 голос
/ 05 июня 2019

К сожалению, похоже, что ключ для каждого случая перевода выбора выбирается как строка, а не как выражение, поэтому ваш undefined там принимается как "undefined", а EMPTY как "EMPTY".

В качестве обходного пути вы можете оценить animal + "" как выбранное условие.undefined + "" === "undefined", и он будет соответствовать "undefined" в выбранных вами случаях:

{ animal + "", select, undefined { Cat } dog { Dog } other { Pig } }

При этом вы можете преобразовать undefined в любое строковое значение, которое, по вашему мнению, на самом деле не будетпоявляются в переменной animal для того же результата:

{ animal === undefined? "geranium" : animal , select, geranium { Cat } dog { Dog } other { Pig } }

...