ICU表达式* select *未检测到空值

时间:2019-04-18 14:50:44

标签: icu angular-i18n messageformat.js

我正在使用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

->翻译狗

其他->翻译猪

1 个答案:

答案 0 :(得分:1)

不幸的是,对于选择的每种翻译情况,键似乎都是字符串,而不是表达式,因此您的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 } }