angular-gettext:插入 select 选项

angular-gettext: interpolate select options

我希望能够使用 angular-gettext 翻译 angular 生成的下拉选项中的内容。

我有两种不同的解决方案,其中 none 可行:

在这一个中,我使用 ng-repeat 并在 js 中使用文本键:

$scope.categories = ['category.Art', 'category.Automotive'];

<select class="form-control" ng-model="category" >
    <option value="{{category}}" ng-repeat="category in categories" translate="">category.{{category}}</option>
</select>

在这一个中,我在 ng-repeat 选项标签的选项中使用 category.{{category}}

$scope.categories = ['Art', 'Automotive'];

<select class="form-control" ng-model="category" >
    <option value="{{category}}" ng-repeat="category in categories" translate="">category.{{category}}</option>
</select>

结果是显示了 textKey 本身,但没有显示翻译。如果我更改语言,则会出现 [MISSING]。

根据 angular-gettext,最后一个应该有效:https://angular-gettext.rocketeer.be/dev-guide/annotate/ <- interpolation

这可能吗?如果是,怎么做?

我找到了答案:事先翻译 javascript:

中的文本
angular.module("myApp").controller("helloController", function (gettextCatalog) {
    var translated = gettextCatalog.getString("Hello");
});

或者只是这样:

<option value="{{category}}" ng-repeat="category in categories" translate="">{{category|translate}}</option>

或者,您可以编写一个过滤器来翻译一个值,但不会被 angular-gettext-tools 解析。我将我的过滤器命名为 post-translate,我所做的就是:

return getttext.getString(input);

然后我这样使用它:

<option value="{{category}}" ng-repeat="category in categories" translate="">{{category|postTranslate}}</option>

如果您使用标准翻译过滤器,您将在 po 文件中得到文字字符串 category 而不是内插值,这不是您想要的。