i18n Translate.instant 带参数

Usr*_*Usr 6 internationalization ngx-translate angular

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

MY_STRING: "Welcome {{user}}"
Run Code Online (Sandbox Code Playgroud)

在我的组件中,我这样做:

translateService.instant(MY_STRING, {user: 'Nick'})
Run Code Online (Sandbox Code Playgroud)

我从中得到的是:

Welcome {{user}}
Run Code Online (Sandbox Code Playgroud)

参数 user 没有内插。我究竟做错了什么?

Zet*_*aPR 7

要使用该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});
Run Code Online (Sandbox Code Playgroud)

  • 我只是想知道,也许这与钥匙有关。我总是用双引号“MY_STRING”设置我的密钥。然后 `translateService.instant('MY_STRING', {user: 'Nick'})` (2认同)