Gibt es eine Möglichkeit, die aktuell verwendete Sprache in einem Controller (ohne $translateProvider) abzurufen?
Konnte nichts im $translateService finden.
Gibt es eine Möglichkeit, die aktuell verwendete Sprache in einem Controller (ohne $translateProvider) abzurufen?
Konnte nichts im $translateService finden.
Antworten:
$translate.use() ist ein Getter und Setter.
Diese Demo finden Sie in den Links der Dokumente:
$translate.use()ist der Weg zu gehen. Wenn ein asynchroner Loader ausgeführt wird, möchten Sie möglicherweise $translate.proposedLanguage()den Sprachschlüssel der Sprache zurückgeben, die gerade geladen, aber noch nicht vollständig geladen ist.
$translate.use()war aber nicht festgelegt. $translate.proposedLanguage()gab mir die richtige lang.
$translate.proposedLanguage()in app.config zu verwenden? Ich habe nur $ translateProvider und ich muss das Ergebnis dieser Funktion IN config finden, nicht später in Controller. Haben sie eine Idee ? Vielen Dank
proposedLanguage()
Bei der Verwendung von Winkeln übersetzen-loader-static-Dateien , die ich habe bemerkt , dass $translate.proposedLanguage()zurückgegeben , undefinedwenn die Standardsprache verwenden , während $translate.use()immer die vorgeschlagene Sprache zurückgegeben.
Deshalb habe ich es behoben mit:
var currentLang = $translate.proposedLanguage() || $translate.use();
Der $translateDienst hat eine Methode namenspreferredLanguage() , die zurückgibt, was Sie wollen. Die Rückgabe dieser Funktion ist die Zeichenfolge der Sprache wie 'en'.
Hier habe ich dir ein Beispiel geschrieben:
angular.module('traslateApp').controller('myController', ['$scope', '$translate', function($scope,$translate){
$scope.changeLanguage = function (langKey) {
$translate.use(langKey);
};
$scope.getCurrentLanguage = function () {
$translate.preferredLanguage();
};
}])
Ich denke, dies ist der bessere Weg, um die Sprache zu bestimmen -
$window.navigator.language || $window.navigator.userLanguage
Vielleicht ist nicht verwandt, könnte aber nützlich sein. In angle2 + ist der Weg zum Zugriff auf die aktuelle Sprache
...
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" }dentranslateFilter in der Ansicht wie gewohnt, wie:<video controls poster="img/poster-{{ 'LANG_CODE' | translate }}.png"> […] </video>