Existe-t-il un moyen d'obtenir la langue actuellement utilisée dans un contrôleur (sans $translateProvider
)?
Je n'ai rien trouvé dans le $translate
service.
Existe-t-il un moyen d'obtenir la langue actuellement utilisée dans un contrôleur (sans $translateProvider
)?
Je n'ai rien trouvé dans le $translate
service.
Réponses:
$translate.use()
est un getter et un setter.
Voir cette démo trouvée dans les liens des documents:
$translate.use()
est la voie à suivre. De plus, 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 pas encore chargée.
$translate.use()
pas été définie. $translate.proposedLanguage()
m'a donné la langue correcte.
$translate.proposedLanguage()
dans app.config? Je n'ai que $ translateProvider et je dois trouver le résultat de cette fonction dans la configuration, pas plus tard dans le contrôleur. Avez-vous une idée ? Merci beaucoup
proposedLanguage()
Lors de l'utilisation de angular-translate-loader-static-files, j'ai remarqué que $translate.proposedLanguage()
renvoyé undefined
lors de l'utilisation de la langue par défaut tout $translate.use()
en retournant toujours la langue proposée.
Par conséquent, je l'ai corrigé en utilisant:
var currentLang = $translate.proposedLanguage() || $translate.use();
Le $translate
service a une méthode appelée preferredLanguage()
qui renvoie ce que vous voulez. Le retour de cette fonction est la chaîne de la langue, comme «en».
Ici, je vous 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();
};
}])
Je pense que c'est la meilleure façon 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 courante 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;
}
}
{ "LANG_CODE": "en" }
et à utiliser letranslate
filtre dans le voir comme d'habitude, comme:<video controls poster="img/poster-{{ 'LANG_CODE' | translate }}.png"> […] </video>