AngularJS/Gettext: 如何翻译属性中的文本

6
我有一个类似于这样的HTML代码。
<bar title="'My Title'"></bar>

现在,当我想要翻译它时,它看起来像这样。
<bar title="'My Title'|translate"></bar>

我没有使用{{和}}的原因是因为“bar”指令使用“=”将标题绑定到其作用域。
scope: {
    title: '=',
    ...
}

问题在于任务'nggettext_extract'没有提取这段文本,因为它只查找花括号之间的内容。我发现了一个解决这个问题的技巧:
<bar dummy="{{My Title'|translate}}" title="'My Title'|translate"></bar>

但我希望有更好的解决方案来解决这个问题?

更新:我现在实施的解决方法是将指令更改如下:

scope: true,
link: function(scope, element, attrs) {
    scope.title = attrs.title;
}

当然,如果有更好的解决方案,请告诉我!

bar 指令内进行翻译? - Davin Tryon
不行,那样行不通,该进程不够智能化以解析变量。 - Jeanluca Scaljeri
2
bar 指令内部:$filter('translate')(title)。请注意,需要注入过滤器依赖项。 - Beterraba
在提取阶段(nggettext_extract)中,这无法工作。 - Jeanluca Scaljeri
这种方法是否也会触发动态语言的更改? - artdias90
我不确定你的意思,能否详细解释一下你想要什么? - Jeanluca Scaljeri
1个回答

0
你可以像这样做:
// Inside your controller

$scope.lbl = gettextCatalog.getString('Some text');

// And inside your template you can use

<bar title={{lbl}} > </bar>

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