使用 angular-translate 强制翻译成某种语言
Force translation into certain language with angular-translate
我的应用程序有两种翻译版本,英语和德语,但我需要我的发票模块使用单独的语言设置。
有没有办法强制发票页面上的标签使用我在 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 (which adapts the "How it works" example from angular-translate.github.io)。
参见 this page on angular-translate's docs for information about this technique (please read "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.$translate
让我们关注这个文档: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
另一种方法是使用 angular-translate 内置的 translate-language
指令:
<div translate-language="{{ invoice_language }}">
{{ 'TD_ID' | translate }}
</div>
无需创建自定义控制器或在控制器中执行任何操作。
https://angular-translate.github.io/docs/#/api/pascalprecht.translate.directive:translateLanguage
我的应用程序有两种翻译版本,英语和德语,但我需要我的发票模块使用单独的语言设置。
有没有办法强制发票页面上的标签使用我在 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 (which adapts the "How it works" example from angular-translate.github.io)。
参见 this page on angular-translate's docs for information about this technique (please read "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.$translate
让我们关注这个文档: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
另一种方法是使用 angular-translate 内置的 translate-language
指令:
<div translate-language="{{ invoice_language }}">
{{ 'TD_ID' | translate }}
</div>
无需创建自定义控制器或在控制器中执行任何操作。
https://angular-translate.github.io/docs/#/api/pascalprecht.translate.directive:translateLanguage