javascript - Att skicka en sträng för att ställa in standardspråket fungerar inte
Jag arbetar för närvarande på en app som utför översättningsarbete. Engelska språket bör användas som standardinställning. Den faktiska översättningen görs av ngx-translate. Den lagras tillfälligt i variabeln translateService, som deklareras i konstruktorn.
konstruktören:
constructor(private translateService: TranslateService, private platform: Platform, private globalization: Globalization, private storage: Storage)
Variabeln defaultLang tilldelas strängen 'en', som står för engelska. translateService tar nu emot variabeln defaultLang. Men ändå tas inte engelska som standardspråk. Vad är anledningen till detta?
async initialize() {
if (this.isInitialized) { return Promise.resolve(); } if (this.initializeListeners.length > 0) { // a parallel call has already been started
return new Promise(success => { this.initializeListeners.push(success); });
} return new Promise(async success => {
let defaultLang = 'en'; this.translateService.setDefaultLang(defaultLang); this.initializeListeners.push(success); await this.platform.ready(); let lang = await this.storage.get(LanguageService.STORAGE_KEY); if (!lang && checkAvailability(Globalization.getPluginRef(), null, Globalization.getPluginName()) === true) {
// no previous language found -> get device language
try {
let preferredLanguage = await this.globalization.getPreferredLanguage(); if (preferredLanguage && preferredLanguage.value) {
lang = preferredLanguage.value; if (lang.indexOf('-') > -1) { lang = lang.split('-')[0]; } if (lang.indexOf('_') > -1) { lang = lang.split('_')[0]; } lang = lang.toLowerCase(); if (this.availableLanguages.indexOf(lang) == -1) {
// detected language is not available
lang = null;
}
}
} catch (e) { }
} if (!lang) { lang = defaultLang; } this.textDirection = this.rtlLanguages.indexOf(lang) >= 0 ? 'rtl' : 'ltr';
this.platform.setDir(this.rtlLanguages.indexOf(lang) >= 0 ? 'rtl' : 'ltr', true); await this.translateService.use(lang); setTimeout(() => {
// use timeout to let language switch propagate
this.isInitialized = true; this.initializeListeners.map(success => { success(); }); this.initializeListeners = null;
}, 100);
});
}
Jag antog att deklarationen av en variabel som skickar motsvarande sträng skulle vara tillräcklig.