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

时间:2015-09-29 15:17:08

标签: javascript angularjs angular-translate

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

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

所以而不是

{{ 'TD_ID' | translate }}

我需要像

这样的东西
{{ 'TD_ID' | translate:'{"language": invoice_language}' }}

4 个答案:

答案 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