ngx angularjs angular-translate

angularjs - ngx - translate in angular 5



Obtenga el lenguaje actual con angular-translate (6)

¿Hay alguna forma de obtener el idioma actual utilizado en un controlador (sin $translateProvider )?

No se pudo encontrar nada en el servicio $translate .


Creo que esta es la mejor manera de determinar el idioma:

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


Cuando uso angular-translate-loader-static-files me di cuenta de que $translate.proposedLanguage() undefined cuando se usaba el idioma predeterminado, mientras que $translate.use() siempre devolvía el idioma propuesto.

Por lo tanto lo arreglé usando:

var currentLang = $translate.proposedLanguage() || $translate.use();


El servicio $translate tiene un método llamado preferredLanguage() que devuelve lo que desea. El retorno de esta función es la cadena del idioma, como ''en''.

Aquí te escribí un ejemplo:

angular.module(''traslateApp'').controller(''myController'', [''$scope'', ''$translate'', function($scope,$translate){ $scope.changeLanguage = function (langKey) { $translate.use(langKey); }; $scope.getCurrentLanguage = function () { $translate.preferredLanguage(); }; }])


$translate.use() es el camino a seguir. Además, cuando se ejecuta un cargador asíncrono, es posible que desee usar $translate.proposedLanguage() que devuelve la clave de idioma del idioma que está actualmente cargado pero que todavía no se ha cargado.



$translate.use() parece no funcionar en la carga inicial de la aplicación, para obtener el último idioma seleccionado del almacenamiento: $translate.storage().get( $translate.storageKey() ) o solo $translate.proposedLanguage();