自 Angular 9 起,我们可以使用
$localize`Hello ${name}:name:`
对于TypeScript代码中的i18n,仍存在一些限制,因为ng xi18n
命令无法检测到字符串,但如果将这些文本手动添加到翻译文件中,则可以正常工作。
$localize
函数在源代码的JSDoc中有相当详细的文档,但它并未解释如何处理复数。我的意思是这样的(伪代码):
$localize`Hello {${count}, plural, =1 {reader} other {readers}}`
使用$localize
是否可行? 如果是,请问如何实现? 如果不行:Angular如何将这些HTML表达式编译成TypeScript代码?
这个问题能否用$localize
解决并不确定。如果可以,您需要在应用程序中将其启用,并在相关位置使用$localize
。
如果不行,Angular会使用i18n机制从标记中提取翻译消息,并将其保存在XLIFF文件中。在构建期间,这些消息将被提取并编译到应用程序代码中,以便在运行时进行本地化。
<span i18n>更新于{minutes, plural, =0 {刚刚} =1 {一分钟前} other {{minutes}}分钟前}}</span>
? 这在文档中有说明, 与您所需的非常相似. - Dave Pastor