web-dev-qa-db-fra.com

Obtenir la langue actuelle avec angular-translate

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.

76
jviotti

$translate.use() est un getter et un setter.

Voir cette démo trouvée dans les liens de la documentation:

http://jsfiddle.net/PascalPrecht/eUGWJ/7/

149
charlietfl

$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é.

38
Pascal Precht

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();
36

$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();

8
xac

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();
   };
}])
8
Iran Reyes

translate.currentLang est utilisé pour vérifier la langue actuellement sélectionnée dans i18n

0
Jack

Je pense que c'est le meilleur moyen de déterminer la langue - 

$window.navigator.language || $window.navigator.userLanguage
0

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;
  }
 }
0
Emanuele Fricano