Existe-t-il un moyen d’obtenir la langue actuellement utilisée dans un contrôleur (sans $translateProvider
)?
Impossible de trouver quoi que ce soit dans le service $translate
.
$translate.use()
est un getter et un setter.
Voir cette démo trouvée dans les liens de la documentation:
$translate.use()
est le chemin à parcourir. De même, lorsqu'un chargeur asynchrone est exécuté, vous pouvez utiliser $translate.proposedLanguage()
qui renvoie la clé de langue de la langue actuellement chargée mais not final est chargé.
Lors de l'utilisation de angular-translate-loader-static-files, j'ai remarqué que $translate.proposedLanguage()
renvoyait undefined
en utilisant la langue par défaut alors que $translate.use()
renvoyait toujours la langue proposée.
Par conséquent, je l'ai corrigé en utilisant:
var currentLang = $translate.proposedLanguage() || $translate.use();
$translate.use()
ne semble pas fonctionner avec le chargement initial de l'application, pour obtenir la dernière langue sélectionnée de la mémoire: $translate.storage().get( $translate.storageKey() )
.__ ou juste $translate.proposedLanguage();
Le service $translate
a une méthode appelée preferredLanguage()
qui retourne ce que vous voulez. Le retour de cette fonction est la chaîne de la langue, comme 'en'.
Ici je t'ai écrit un exemple:
angular.module('traslateApp').controller('myController', ['$scope', '$translate', function($scope,$translate){
$scope.changeLanguage = function (langKey) {
$translate.use(langKey);
};
$scope.getCurrentLanguage = function () {
$translate.preferredLanguage();
};
}])
translate.currentLang est utilisé pour vérifier la langue actuellement sélectionnée dans i18n
Je pense que c'est le meilleur moyen de déterminer la langue -
$window.navigator.language || $window.navigator.userLanguage
Peut-être n'est pas lié mais pourrait être utile. Dans angular2 +, le moyen d'accéder à la langue actuelle est
...
import { TranslateService } from '@ngx-translate/core';
export class MyComponent implements OnInit {
constructor(private translate: TranslateService) {}
ngOnInit() {
translate.use('it');
const currentLang = this.translate.currentLang;
}
}