I ran into this issue during testing and can’t seem to figure out why it is not working. When I run the following commands:
ionic serve
and test on chrome browser it works well but I have to subscribe to this event to this.translateService.onLangChange.subscribe((event: LangChangeEvent) => { let aboutus: string = this.translateService.instant("menu.mAbout") }
to get something like that to work correctly.
ionic cordova run ios
works on simulator.
ionic cordova run ios --device
does not work.
Using xcode to run also does not work on my iPhone.
My imports:
.....
import { TranslateModule } from 'ng2-translate/ng2-translate';
import { TranslateLoader, TranslateStaticLoader, TranslateService } from 'ng2-translate/src/translate.service';
import { Geolocation } from '@ionic-native/geolocation';
....
My createTranslateLoader
export function createTranslateLoader(http: Http) {
return new TranslateStaticLoader(http, '/assets/i18n', '.json');
}
imports: [
.....
TranslateModule.forRoot({
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [Http]
}),
.....
],
And finally where I did my initialization. It works already on the browser and on simulator with live reload but not on the device itself.
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
// setting the default language
this.translateService.setDefaultLang(defaultLanguage);
// if this is a cordova application
if ((<any>window).cordova) {
Globalization.getPreferredLanguage().then(result => {
let language = this.getSuitableLanguage(result.value);
//let language = navigator.language.split("-")[0];
console.log("This is the language selection from globalization: " + language);
this.translateService.use(language);
})
} else {
let browserLanguage = this.translateService.getBrowserLang() || defaultLanguage;
let language = this.getSuitableLanguage(browserLanguage);
this.translateService.use(language);
}
});
}
Thanks for your help in advance.