使用angular-translate获取当前语言

时间:2013-12-07 17:53:47

标签: angularjs angular-translate

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

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

8 个答案:

答案 0 :(得分:152)

$translate.use()是一个吸气者和设定者。

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

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

答案 1 :(得分:38)

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

答案 2 :(得分:36)

使用angular-translate-loader-static-files时,我注意到$translate.proposedLanguage()在使用默认语言时返回undefined,而$translate.use()始终返回建议的语言。

因此我使用以下方法修复了它:

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

答案 3 :(得分:8)

$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();
   };
}])

答案 4 :(得分:8)

$translate.use()似乎无法在初始加载应用时使用,以便从存储中获取最后选择的语言:$translate.storage().get( $translate.storageKey() ) 要不就 $translate.proposedLanguage();

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

也许无关,但可能有用。在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;
  }
 }

答案 7 :(得分:0)

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