Есть ли способ получить текущий используемый язык в контроллере (без $translateProvider
)?
В $translate
сервисе ничего не нашел .
Есть ли способ получить текущий используемый язык в контроллере (без $translateProvider
)?
В $translate
сервисе ничего не нашел .
Ответы:
$translate.use()
является геттером и сеттером.
См. Эту демонстрацию в ссылках на документы:
$translate.use()
это путь. Кроме того, когда выполняется асинхронный загрузчик, вы можете использовать, $translate.proposedLanguage()
который возвращает ключ языка для языка, который в настоящее время загружен, но еще не завершен.
$translate.use()
не установил. $translate.proposedLanguage()
дал мне правильный язык.
$translate.proposedLanguage()
в app.config? У меня есть только $ translateProvider, и мне нужно найти результат этой функции В конфигурации, а не позже в контроллере. У тебя есть идея? Большое спасибо
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>