有没有办法在控制器中获取当前使用的语言(没有$translateProvider
)?
在$translate
服务中找不到任何内容。
答案 0 :(得分:152)
答案 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中当前选择的语言