C'è un modo per ottenere la lingua attualmente utilizzata in un controller (senza $translateProvider
)?
Impossibile trovare nulla nel $translate
servizio.
C'è un modo per ottenere la lingua attualmente utilizzata in un controller (senza $translateProvider
)?
Impossibile trovare nulla nel $translate
servizio.
Risposte:
$translate.use()
è un getter e setter.
Guarda questa demo trovata nei link dei documenti:
$translate.use()
è la strada da percorrere. Inoltre, quando viene eseguito un caricatore asincrono, potresti voler utilizzare $translate.proposedLanguage()
che restituisce la chiave della lingua della lingua attualmente caricata ma non ancora caricata.
$translate.use()
non era impostata. $translate.proposedLanguage()
mi ha dato la lingua corretta.
$translate.proposedLanguage()
in app.config? ho solo $ translateProvider e ho bisogno di trovare il risultato di questa funzione IN config, non più tardi nel controller. Hai un'idea ? Grazie mille
proposedLanguage()
Quando si utilizza angular-translate-loader-static-files ho notato che $translate.proposedLanguage()
restituiva undefined
quando si utilizzava la lingua predefinita mentre $translate.use()
restituiva sempre la lingua proposta.
Quindi l'ho risolto usando:
var currentLang = $translate.proposedLanguage() || $translate.use();
Il $translate
servizio ha un metodo chiamato preferredLanguage()
che restituisce ciò che desideri. Il ritorno di questa funzione è la stringa della lingua, come "en".
Qui ti ho scritto un esempio:
angular.module('traslateApp').controller('myController', ['$scope', '$translate', function($scope,$translate){
$scope.changeLanguage = function (langKey) {
$translate.use(langKey);
};
$scope.getCurrentLanguage = function () {
$translate.preferredLanguage();
};
}])
Penso che questo sia il modo migliore per determinare la lingua -
$window.navigator.language || $window.navigator.userLanguage
Forse non è correlato ma potrebbe essere utile. In angular2 + il modo per accedere alla lingua corrente è
...
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" }
E usare iltranslate
filtro nel visualizza come al solito, come:<video controls poster="img/poster-{{ 'LANG_CODE' | translate }}.png"> […] </video>