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
而不是内插值,这不是您想要的。
我希望能够使用 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
而不是内插值,这不是您想要的。