我正在ng-tranlate
使用i18n
。
我希望将已翻译的标签与从控制器绑定中解析的变量组合在一起。我怎样才能实现以下目标?
<div translate="my.lang.text">some more: {{controller.attribute}}</div>
这不起作用,ng-translate忽略div之间的任何内容。为什么呢?
答案 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所建议的那样)