我有一个像这样的HTML
<bar title="'My Title'"></bar>
Run Code Online (Sandbox Code Playgroud)
现在,当我想翻译它时,它看起来像这样
<bar title="'My Title'|translate"></bar>
Run Code Online (Sandbox Code Playgroud)
我没有{{和}}的原因是因为'bar'指令用'='将标题绑定到其范围
scope: {
title: '=',
...
}
Run Code Online (Sandbox Code Playgroud)
问题是任务'nggettext_extract'不提取此文本,因为它正在大括号之间查找内容.我找到了解决这个问题的黑客:
<bar dummy="{{My Title'|translate}}" title="'My Title'|translate"></bar>
Run Code Online (Sandbox Code Playgroud)
但我希望有更好的解决方案来解决这个问题?
更新:我现在实现的解决方法是我更改了指令如下
scope: true,
link: function(scope, element, attrs) {
scope.title = attrs.title;
}
Run Code Online (Sandbox Code Playgroud)
当然,如果有人知道更好的解决方案,请告诉我!
我使用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”);不会被翻译。
我认为这是因为我在基本控制器中进行了切换。有谁知道解决这个问题?
我在我的应用程序中使用了角度gettext.我现在有两种语言,并希望根据用户的喜好在UI中切换语言.我有两种语言的按钮 - DE和EN.
在控制器方法中,我设置了语言:
$scope.changeLang = function (lang) {
gettextCatalog.currentLanguage = lang;
gettextCatalog.debug = true;
};
Run Code Online (Sandbox Code Playgroud)
在这样做时,UI中的语言似乎没有变化.使用angular gettext在UI中动态更改语言的正确方法是什么?
提前致谢.