使用angular-translate强制翻译成某种语言

问题描述 投票:2回答:4

我有两个翻译我的应用程序,英语和德语,但我需要我的发票模块使用单独的语言设置。

有没有办法强制开发票页面上的标签使用我在invoice_language变量中设置的语言?

而不是

{{ 'TD_ID' | translate }}

我需要类似的东西

{{ 'TD_ID' | translate:'{"language": invoice_language}' }}
javascript angularjs angular-translate
4个回答
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
投票

您可以创建自定义过滤器(例如“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。$翻译


0
投票

请遵循以下文档: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

0
投票

另一种方法是使用translate-language指令中内置的angular-translate作为:

<div translate-language="{{ invoice_language }}">
    {{ 'TD_ID' | translate }}
</div>

无需在控制器中创建自定义或执行任何操作。

https://angular-translate.github.io/docs/#/api/pascalprecht.translate.directive:translateLanguage

© www.soinside.com 2019 - 2024. All rights reserved.