获取当前的语言与angular度翻译
有没有办法获得当前使用的语言在控制器(没有$translateProvider
)?
在$translate
服务中找不到任何内容。
$translate.use()
是要走的路。 此外,执行asynchronous装载器时,可能要使用$translate.proposedLanguage()
,它将返回当前已加载但尚未完成加载的语言的语言键。
当使用angular-translate-loader-static-files时,我注意到$translate.proposedLanguage()
在使用默认语言时返回undefined
,而$translate.use()
总是返回build议的语言。
所以我使用下面的方法来解决
var currentLang = $translate.proposedLanguage() || $translate.use();
$translate.use()
似乎不适用于应用程序的初始加载,从存储中获取最后select的语言: $translate.storage().get( $translate.storageKey() )
或$translate.proposedLanguage();
$translate
服务有一个名为preferredLanguage()
的方法,返回你想要的。 这个函数的返回值是这个语言的string,比如'en'。
在这里我给你写了一个例子:
angular.module('traslateApp').controller('myController', ['$scope', '$translate', function($scope,$translate){ $scope.changeLanguage = function (langKey) { $translate.use(langKey); }; $scope.getCurrentLanguage = function () { $translate.preferredLanguage(); }; }])
我认为这是确定语言的更好方法 –
$window.navigator.language || $window.navigator.userLanguage