【问题标题】:i18n Translate.instant with parametersi18n Translate.instant 带参数
【发布时间】:2020-05-13 19:56:50
【问题描述】:

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

MY_STRING: "Welcome {{user}}"

在我的组件中我这样做:

translateService.instant(MY_STRING, {user: 'Nick'})

我从中得到的是:

Welcome {{user}}

参数 user 没有被插值。我做错了什么?

【问题讨论】:

    标签: angular internationalization ngx-translate


    【解决方案1】:

    对于使用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});
    

    【讨论】:

    • 嗨,谢谢,这样就可以了。我唯一的疑问是,我确定翻译文件已经加载,因为我使用按钮手动触发操作,并且页面区域中的所有其他翻译都已经加载。为什么会这样?
    • 我只是想知道,也许它与钥匙有关。我总是用双引号 "MY_STRING" 设置我的密钥。然后translateService.instant('MY_STRING', {user: 'Nick'})
    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 2022-11-14
    • 2013-05-16
    相关资源
    最近更新 更多