有没有办法在控制器中获得当前使用的语言(没有$translateProvider
)?
在$translate
服务中找不到任何内容。
$translate.use()
是一个getter和setter。
请参阅文档链接中的演示:
http://jsfiddle.net/PascalPrecht/eUGWJ/7/
$translate.use()
就是我们要走的路。此外,当执行异步加载程序时,您可能希望使用$translate.proposedLanguage()
,它返回当前加载但尚未完成加载的语言的语言键。
当使用角度翻译加载程序静态文件时,我注意到$translate.proposedLanguage()
在使用默认语言时返回undefined
,而$translate.use()
始终返回建议的语言。
因此,我使用修复了它
var currentLang = $translate.proposedLanguage() || $translate.use();
$translate.use()
似乎无法在应用程序的初始加载中工作,无法从存储中获取最后选择的语言:$translate.storage().get( $translate.storageKey() )
或者只是$translate.proposedLanguage();
$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();
};
}])
translate.currentLang用于检查i18n 中当前选择的语言
我认为这是确定语言的更好方法-
$window.navigator.language || $window.navigator.userLanguage
也许没有关联,但可能有用。在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;
}
}
import { TranslateService } from '@ngx-translate/core';
export class MyComponent implements OnInit {
constructor(private translate: TranslateService)
{
translate.setDefaultLang('en');
}