Чи є спосіб отримати поточну вживану мову в контролері (без $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>