如何使用ng转换从控制器解析的变量

How to use ng-translate with variables resolved from controller?

本文关键字:变量 控制器 何使用 ng 转换      更新时间:2023-09-26

我将ng-tranlate用于i18n

我想将转换后的标签与从控制器绑定解析的变量组合在一起。如何实现以下目标?

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

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

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}"

我相信translate指令用翻译替换了元素的所有内容。

在这种情况下,您可能需要使用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)