angularjs中的gettext模块不会在控制器中转换gettextCatalog.getString()

r2g*_*get 2 translation gettext angularjs angular-gettext

我使用gettext模块进行角度处理我的翻译。这几乎完美。文字

现在我有2个控制器。每个视图分别称为1和basecontroller。所以将基本控制器附加到html标记,并使用ngRoutes将不同的控制器附加到每个视图。

现在在基本控制器中,我将语言设置如下:

    //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();
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好。当用户单击NL时,它将转换为NL;当用户单击EN时,它将文本转换为eng。

问题是每个控制器我也有字符串。这些是在javascript中,所以在searchcontroller中,例如,我有:

    $rootScope.stepText = gettextCatalog.getString("step_1_header");
Run Code Online (Sandbox Code Playgroud)

这些翻译是针对全局性的,例如标题,每个控制器都会更改。

这也可以正常工作,但现在的问题是开关。当我切换到英语时,所有文本都会被翻译,但$ rootScope.stepText = gettextCatalog.getString(“ step_1_header”);不会被翻译。

我认为这是因为我在基本控制器中进行了切换。有谁知道解决这个问题?

Rub*_*sch 5

范围内的任何东西都不应该使用gettextCatalog.getString

使用这样的东西:

$rootScope.stepText = gettext("My step 1 title");
Run Code Online (Sandbox Code Playgroud)

并在视图中:

<h1>{{stepText | translate}}</h1>
Run Code Online (Sandbox Code Playgroud)