【问题标题】:ngx/translate - translate only part of a stringngx/translate - 只翻译字符串的一部分
【发布时间】:2018-03-30 10:51:47
【问题描述】:

我需要使用 ngx/translate 翻译来自服务器的字符串。

当我需要翻译一个字符串时它可以正常工作,但在某些情况下我只需要翻译部分字符串。

例如: “你好谢伊”或“你好约翰”

我只需要翻译“你好”并保持原样。 我试过了:

this.i18n.instant('hello {Shay}')

在 en.json 文件中: "你好 {var}": "你好 {var}"

但没有成功。 有什么想法可以做到吗?

【问题讨论】:

    标签: angular ngx-translate


    【解决方案1】:

    您正在寻找参数化的翻译。您不需要翻译键中的该参数。试试这样:

    en.json:

    "hello_name": "Hello {{name}}"
    

    控制器:

    this.i18n.instant('hello_name', {name: 'Shay'});
    

    或在模板中:

    {{ 'hello_name' | translate: {name: 'Shay'} }}
    

    https://github.com/ngx-translate/core#3-define-the-translations

    【讨论】:

    • Adamek 感谢您的回复。你的建议只适用于我的双括号,但不能解决我的问题。关键是来自服务器的密钥包含名称,所以我没有像“hello_name”这样的永久密钥。当然我可以使用 'hello_shay'.split('_') 但我正在寻找一种更清洁的方法来做到这一点。
    • 这两个东西需要分开,你不应该把它作为一个字符串从你的服务器端返回。你应该按照我的建议去做,绝对是最好的做法......
    • 我不知道您的用例,但您的服务器应该只返回值(如名称),它不应该关心“hello”部分,这是前端的工作。
    • 或者如果你真的需要,你应该从你的服务器返回类似{message: 'hello_name', name: 'Shay'}的东西并使用this.i18n.instant(res.message, {name: res.name});
    • 我无法控制服务器,所以我想我只会在客户端拆分字符串。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多