使用angular-translate获取当前语言

jvi*_*tti 80 angularjs angular-translate

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

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

cha*_*tfl 153

$translate.use() 是一个吸气者和二传手.

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

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

  • 这并没有给我当前的语言,但默认的语言.$ translate.proposedLanguage()根据问题给出了控制器中当前使用的语言 (5认同)

Pas*_*cht 40

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

  • 可以在app.config中使用这个``$ translate.proposedLanguage()``吗?我只有$ translateProvider,我需要找到这个函数IN配置的结果,而不是稍后在控制器中.你有好主意吗 ?非常感谢 (3认同)
  • 在翻译加载之前我试图确定语言但是没有设置`$ translate.use()`.`$ translate.proposedLanguage()`给了我正确的语言. (2认同)
  • +为`proposedLanguage()` (2认同)

Joa*_*uez 36

当使用角转换-架静态文件,我已经注意到,$translate.proposedLanguage()返回undefined使用默认的语言时,而$translate.use()总是返回所提出的语言.

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

var currentLang = $translate.proposedLanguage() || $translate.use();
Run Code Online (Sandbox Code Playgroud)

  • 这是我获得所有情况下获得当前语言的唯一方法. (3认同)

Ira*_*yes 8

$translate服务有一个名为preferredLanguage()return 的方法返回你想要的.此函数的返回是语言的字符串,如'en'.

我给你写了一个例子:

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

  • 这将为您提供"首选"语言,而不一定是所选的"当前"语言.如果你在语言之间切换,我的理解是,这不是同样的. (2认同)
  • var currentLanguage = $ translate.use(); 根据charlietfl的回答确实会改变 (2认同)

小智 8

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