angularjs 中的 gettext 模块不翻译控制器中的 gettextCatalog.getString()

gettext module in angularjs does does not translate gettextCatalog.getString() in controller

我正在使用 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();
    }
}

这很好用。当用户点击 NL 时,它会翻译成 NL,当用户点击 EN 时,它会将文本翻译成英语。

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

    $rootScope.stepText = gettextCatalog.getString("step_1_header");

这些翻译适用于全球事物,例如 header 标题,因控制器而异。

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

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

范围内的任何内容都不应使用 gettextCatalog.getString

使用这样的东西:

$rootScope.stepText = gettext("My step 1 title");

并且在视图中:

<h1>{{stepText | translate}}</h1>