i18n Translate.instant带参数

12

我需要使用ngx-core中的TranslateService.instant并传递参数进行字符串插值。
到目前为止,我已经完成了:

MY_STRING: "Welcome {{user}}"

在我的组件中,我执行以下操作:
translateService.instant(MY_STRING, {user: 'Nick'})

我从中得到的是:

Welcome {{user}}

参数用户没有插值。我做错了什么?
1个回答

13

要使用instant方法,您必须确保已加载翻译,并且安全地使用它,否则它将失败。那可能是关键点。

解释很简单,您有三种加载翻译的方式:

  • 您确定翻译文件已经加载并且不需要更新:translate.instant('key')

  • 您不确定是否正在加载,并且不需要更新(返回一个可订阅的Observable):translate.get('key')

  • 您希望在用户更改语言时进行更新:
    translate.stream('key')

我认为您可以使用get选项,因为它是已知错误最少的选项:

let userName = 'Nick'     
translateService.get('MY_STRING', { user: this.userName }).subscribe((text:string) => {console.log(text});

嗨,谢谢,这样就可以了。我唯一的疑问是,我确定翻译文件已经加载,因为我手动通过按钮触发操作,并且页面区域中的所有其他翻译都已经加载。为什么会这样呢? - Usr
2
我只是在想,也许这与键有关。我总是用双引号 "MY_STRING" 设置我的键。然后使用 translateService.instant('MY_STRING', {user: 'Nick'}) 进行翻译。 - ZetaPR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接