1

我正在使用 i18n angular 7 翻译我的应用程序,但我遇到了 ICU 表达式select的问题。问题是我希望条件能够识别并清空这样的值:animal: string

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

我试过使用

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

但它没有用

当动物是:

(空字符串、null 或未定义) -> 翻译 Cat

-> 翻译狗

其他-> 翻译猪

4

1 回答 1

3

不幸的是,似乎选择的每个翻译案例的键都被视为一个字符串,而不是一个表达式,所以你undefined有 as"undefined"EMPTYas "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 } }

于 2019-06-04T21:10:07.910 回答