使用ng2-translate带参数

8

我尝试在模板中使用带参数的ng2-translate:

{{ test | translation:{value:param} }}

它完美地运作。我想在我的TypeScript中构建我的翻译,我看到了这个函数:

get(key: string|Array<string>, interpolateParams?: Object): Observable<string|Object>

但是我不知道如何使用它。

你们有任何示例吗?

我的情况是:

en.json:

{ "test":"the level of {value1} and {value2} is low."}

类型脚本:

let message:string = "";
let parametres = ["1", "2"];
this._translateService.get("test", parametres).subscribe((res:string) => {
    message += res;
});

我想要的是:1和2级别很低。

非常感谢。


你实际上在使用一个 translation 管道吗?难道不应该是 translate 吗? - superjos
2个回答

21

在 en_US.json 文件中,按照以下格式包含 x 和 y(它们是我们想要用数字替换的参数)。

{"Showing": "Showing {{x}} of {{y}}"}

在component.ts中,min和max将是我们填充的变量。

  min: number;
  max: number;

以下内容将成为 component.html 的一部分。

<span> {{ 'Showing' | translate:{x: min, y: max} }} </span>

1
@AJQarshi j Q 给我返回了以下错误:未捕获的错误:模板解析错误: 解析器错误:表达式结尾缺少预期的} [{{'XXXXXXX' | translate:{ minValue: 50, maxValue: 100 }}}] - Hany
3
@Hany 你缺少一个空格,这是问题所在。使用[{{'student.certificateInfo.grade.range' | translate:{ minValue: 50, maxValue: 100 } }}]。请注意末尾的空格} }}] - A J Qarshi
1
@AJQarshi j Q 哦!...成功了!...错误的原因出乎意料,谢谢。 - Hany

6
当您提供键/值作为参数而不是数组时,它可以正常工作。
typescript:
let message:string = "";
let parametres = {value1: "1", value2: "2"};
this._translateService.get("test", parametres).subscribe((res:string) => {
    message += res;
});

根据文档,您应该使用双花括号声明占位符。

en.json:

{ "test": "the level of {{value1}} and {{value2}} is low." }

你还应该检查一下通过 get 方法返回的 Observable 是否挂起。在我的情况下,翻译没有完全加载,Observable 没有返回任何内容。 - Anton Biller
我尝试将它放入一个映射中,但是不起作用。我将直接尝试在对象中操作。非常感谢。 - Julien Moreau

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