有没有办法在控制器中获取当前使用的语言(不带$translateProvider
)?
在$translate
服务中找不到任何内容。
有没有办法在控制器中获取当前使用的语言(不带$translateProvider
)?
在$translate
服务中找不到任何内容。
Answers:
$translate.use()
是要走的路。同样,当执行异步加载程序时,您可能想使用$translate.proposedLanguage()
它返回当前已加载但尚未完成加载的语言的语言键。
$translate.use()
但未设置。$translate.proposedLanguage()
给了我正确的语言
$translate.proposedLanguage()
在app.config中使用它?我只有$ translateProvider,我需要在config中找到此函数的结果,而不是稍后在控制器中。你有想法吗 ?非常感谢
proposedLanguage()
当我使用angular-translate-loader-static-files时,我注意到在使用默认语言的同时$translate.proposedLanguage()
返回undefined
$translate.use()
总是返回所提出的语言。
因此,我使用以下方法修复了该问题:
var currentLang = $translate.proposedLanguage() || $translate.use();
该$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();
};
}])
我认为这是确定语言的更好方法-
$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;
}
}
{ "LANG_CODE": "en" }
并translate
在像往常一样查看:<video controls poster="img/poster-{{ 'LANG_CODE' | translate }}.png"> […] </video>