我的应用程序有两种翻译,英语和德语,但我需要使用发票模块来使用单独的语言设置。
有没有办法强制开票页面上的标签使用我在invoice_language
变量中设置的语言?
所以而不是
{{ 'TD_ID' | translate }}
我需要像
这样的东西{{ 'TD_ID' | translate:'{"language": invoice_language}' }}
答案 0 :(得分:3)
在您的控制器中将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()函数)
答案 1 :(得分:1)
您可以创建自定义过滤器(例如" 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。$翻译
答案 2 :(得分:0)
请遵循以下文档:https://angular-translate.github.io/docs/#/api/pascalprecht.translate。$ translate
您可以使用forceLanguage
参数将文本翻译成特定的语言;
例如:
$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
答案 3 :(得分:0)
另一种实现方法是按如下方式使用angular-translate内置的translate-language
指令:
<div translate-language="{{ invoice_language }}">
{{ 'TD_ID' | translate }}
</div>
无需创建自定义控件或在控制器中执行任何操作。
https://angular-translate.github.io/docs/#/api/pascalprecht.translate.directive:translateLanguage