我使用 Angular 的 gettext 模块来处理我的翻译。这几乎是完美的作品。 gettext
现在我有 2 个 Controller 。 1 称为基本 Controller ,其他 Controller 为每个 View 。因此基本 Controller 附加到 html 标签,并使用 ngRoutes 我将不同的 Controller 附加到每个 View 。
现在在基本 Controller 中我设置如下语言:
//set lang
$rootScope.selectedLang = 'NL';
//Switch language
$scope.setLang = function(type,lang) {
if (type == 'select') {
ngDialog.open({
template: 'views/popups/set-language.php',
className: 'ngdialog-theme-flat',
controller: 'BaseCtrl'
});
}
if (type == 'set') {
if (lang == 'nl') {
gettextCatalog.setCurrentLanguage('nl');
$rootScope.selectedLang = 'NL';
}
if (lang == 'en') {
gettextCatalog.setCurrentLanguage('en');
$rootScope.selectedLang = 'EN';
}
ngDialog.closeAll();
}
}
这工作正常。当用户点击 NL 时,它会翻译为 NL,当用户点击 EN 时,它会将文本翻译为 eng。
问题是每个 Controller 我也有字符串。这些是在 javascript 中的,所以在 searchcontroller 中,例如我有:
$rootScope.stepText = gettextCatalog.getString("step_1_header");
这些翻译适用于全局事物,例如标题标题,每个 Controller 都会发生变化。
这也可以正常工作,但现在问题是开关。当我切换到英语时,所有文本都会被翻译,但 $rootScope.stepText = gettextCatalog.getString("step_1_header");
我认为这是因为我在基本 Controller 中进行了切换。有人有办法解决这个问题吗?
最佳答案
范围内的任何内容都不应使用 gettextCatalog.getString
。
使用这样的东西:
$rootScope.stepText = gettext("My step 1 title");
在 View 中:
<h1>{{stepText | translate}}</h1>
关于angularjs - angularjs 中的 gettext 模块不会翻译 Controller 中的 gettextCatalog.getString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292000/