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()
es un getter y setter.
Vea esta demostración que se encuentra en los enlaces de documentos:
$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();