使用 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