86

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

$translate在服务中找不到任何东西。

4

8 回答 8

156

$translate.use()是 getter 和 setter。

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

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

于 2013-12-07T18:48:03.770 回答
41

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

于 2014-05-26T09:43:18.990 回答
38

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

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

var currentLang = $translate.proposedLanguage() || $translate.use();
于 2015-03-06T16:53:23.937 回答
8

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

于 2014-04-20T20:18:45.360 回答
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();
   };
}])
于 2014-02-18T13:33:07.253 回答
1

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

于 2019-04-08T09:01:06.273 回答
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;
  }
 }
于 2018-11-08T09:35:22.060 回答
0

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

$window.navigator.language || $window.navigator.userLanguage
于 2017-07-02T15:10:25.940 回答