通过角度翻译获取当前语言



有没有办法在控制器中获得当前使用的语言(没有$translateProvider)?

$translate服务中找不到任何内容。

$translate.use()是一个getter和setter。

请参阅文档链接中的演示:

http://jsfiddle.net/PascalPrecht/eUGWJ/7/

$translate.use()就是我们要走的路。此外,当执行异步加载程序时,您可能希望使用$translate.proposedLanguage(),它返回当前加载但尚未完成加载的语言的语言键。

当使用角度翻译加载程序静态文件时,我注意到$translate.proposedLanguage()在使用默认语言时返回undefined,而$translate.use()始终返回建议的语言。

因此,我使用修复了它

var currentLang = $translate.proposedLanguage() || $translate.use();

$translate.use()似乎无法在应用程序的初始加载中工作,无法从存储中获取最后选择的语言:$translate.storage().get( $translate.storageKey() )或者只是$translate.proposedLanguage();

$translate服务有一个名为preferredLanguage()的方法,它返回您想要的内容。此函数的返回是该语言的字符串,如"en"。

我给你写了一个例子:

angular.module('traslateApp').controller('myController', ['$scope', '$translate', function($scope,$translate){
   $scope.changeLanguage = function (langKey) {
      $translate.use(langKey);
   };
   $scope.getCurrentLanguage = function () {
       $translate.preferredLanguage();
   };
}])

translate.currentLang用于检查i18n 中当前选择的语言

我认为这是确定语言的更好方法-

$window.navigator.language || $window.navigator.userLanguage

也许没有关联,但可能有用。在angular2+中,访问当前语言的方式是

...
import { TranslateService } from '@ngx-translate/core';
export class MyComponent implements OnInit {
  constructor(private translate: TranslateService) {}
  ngOnInit() {
   translate.use('it');
   const currentLang = this.translate.currentLang;
  }
 }
import { TranslateService } from '@ngx-translate/core';
export class MyComponent implements OnInit {
  constructor(private translate: TranslateService)
 {
  translate.setDefaultLang('en');
}

最新更新