如何使用ng-translate与从控制器解析的变量?

时间:2015-10-29 16:06:56

标签: javascript angularjs

我正在ng-tranlate使用i18n

我希望将已翻译的标签与从控制器绑定中解析的变量组合在一起。我怎样才能实现以下目标?

<div translate="my.lang.text">some more: {{controller.attribute}}</div>

这不起作用,ng-translate忽略div之间的任何内容。为什么呢?

2 个答案:

答案 0 :(得分:2)

translate指令将使用您传递给它的翻译替换元素的内容。

您描述的用例看起来像参数化翻译。如果要继续使用该指令,可以通过translate-values指令传递变量:

<div translate="my.lang.text"
     translate-values="{value: 'some more: ' + controller.attribute}"></div>

您必须指定您的翻译参数化:

<强> JSON

"my.lang.text": "This is a parameterized string {value}"

答案 1 :(得分:1)

我相信translate指令会将所有元素的内容替换为翻译。

在这种情况下,您可能希望使用翻译过滤器。

<div>{{'my.lang.text' | translate}} some more: {{controller.attribute}}</div>

作为替代方案,您也可以通过将翻译后的值作为自己的元素来避免此问题。

<div><span translate="my.lang.text"></span> some more: {{controller.attribute}}</div>

如果翻译总是打算附加一个值,那么使用参数化翻译可能是最好的解决方案(正如Michael https://stackoverflow.com/a/33419608/90305所建议的那样)