在我的AngularJS应用程序中,我使用angular translate来实现国际化。
但它不适用于ng-dropdown-multiselect
文本。
我尝试将翻译文本与$ scope变量关联起来并应用$ scope。$ watch等待更改,但它也没有用。
有人知道如何使它成为多语言?
<div
ng-dropdown-multiselect=""
options="myModelOptions"
selected-model="mySelectedItem"
extra-settings="mySettings"
translation-texts="{
'checkAll': myScopeVariable.selectAll,
'uncheckAll': myScopeVariable.selectNone,
'buttonDefaultText': myScopeVariable.selectZero,
'selectionCount': myScopeVariable.selectCount,
'dynamicButtonTextSuffix': myScopeVariable.selectSufix
}">
</div>
答案 0 :(得分:0)
您不需要观看范围,它们提供的translation-texts
属性仅在构建dom时有效。
每次更改语言时,都可以通过重建选择来使用技巧。
1-添加显示选择的条件,例如ng-if="!unready"
。
并直接使用translate
过滤器。
<div ng-if="!unready" ng-dropdown-multiselect="" options="cars" selected-model="selectedCar" extra-settings="mySettings" translation-texts="{
'checkAll': ('selectAll' | translate),
'uncheckAll': ('selectNone' | translate),
'buttonDefaultText': ('selectZero' | translate),
'selectionCount': ('selectCount' | translate),
'dynamicButtonTextSuffix': ('selectSufix' | translate)
}">
</div>
2-如果更改它的按钮不在同一控制器中,则捕获语言更改检测,并将变量设置为不显示选择,添加一点超时以再次显示它,以便重新呈现选择。 / p>
$rootScope.$on('$translateChangeSuccess', function(event, current, previous) {
// Language has changed
$scope.unready = true;
$timeout(function() {
$scope.unready = false;
}, 10);
});