我有两个翻译我的应用程序,英语和德语,但我需要我的发票模块使用单独的语言设置。
有没有办法强制开发票页面上的标签使用我在invoice_language
变量中设置的语言?
而不是
{{ 'TD_ID' | translate }}
我需要类似的东西
{{ 'TD_ID' | translate:'{"language": invoice_language}' }}
在您执行此操作之前,在控制器中将TD_ID绑定一次仅交换语言。
在您看来,而不是:
{{ 'TD_ID' | translate }}
只需绑定没有翻译过滤器:
{{ 'TD_ID' }}
并在您的控制器中:
function setInvoiceTranslations(key){
var invoice_language = 'de';
currentLang = $translate.use();
$translate.use(invoice_language);
var translateText;
$translate(key).then(function (translatedtext) {
$scope[key] = translatedtext;
$translate.use(currentLang);
});
}
setInvoiceTranslations('TD_ID');
要看到这一点,请参阅this plunker(适应the "How it works" example from angular-translate.github.io)。
有关此技术的信息,请参阅this page on angular-translate's docs(请阅读"Things to keep in mind" on that page)。
(确保将$ translate注入您的控制器,或者您最终放置setInvoiceTranslations()函数)
您可以创建自定义过滤器(例如“wordKey”| translateTo:languageKey)并调用$ translate服务:
.filter('translateTo', function ($translate) {
return function (key, lang) {
return $translate.instant(key, {}, undefined, lang);
}; });
您可以在不修改全局语言的情况下强制翻译单词。
https://angular-translate.github.io/docs/#/api/pascalprecht.translate。$翻译
请遵循以下文档:https://angular-translate.github.io/docs/#/api/pascalprecht.translate。$ translate您可以使用forceLanguage
param将文本翻译为特定语言;例如:
$translate('PUSH_NOTIFICATION.NEW_RATING', {}, undefined, undefined, 'ar').then(function (translatedText) {
if(translatedText){
..do something
});
//'PUSH_NOTIFICATION.NEW_RATING' is Translate KEY in your language file
// {} for dynamic values
// 'ar' a specific language
另一种方法是使用translate-language
指令中内置的angular-translate作为:
<div translate-language="{{ invoice_language }}">
{{ 'TD_ID' | translate }}
</div>
无需在控制器中创建自定义或执行任何操作。
https://angular-translate.github.io/docs/#/api/pascalprecht.translate.directive:translateLanguage