MOBILE-2383 lang: Load parent lang if found

main
Pau Ferrer Ocaña 2018-10-02 15:26:19 +02:00
parent 4d37865068
commit bb23a319c8
3 changed files with 27 additions and 3 deletions

View File

@ -1412,6 +1412,7 @@
"core.openinbrowser": "local_moodlemobileapp",
"core.othergroups": "group",
"core.pagea": "moodle",
"core.parentlanguage": "langconfig",
"core.paymentinstant": "moodle",
"core.percentagenumber": "local_moodlemobileapp",
"core.phone": "moodle",

View File

@ -174,6 +174,7 @@
"openinbrowser": "Open in browser",
"othergroups": "Other groups",
"pagea": "Page {{$a}}",
"parentlanguage": "",
"paymentinstant": "Use the button below to pay and be enrolled within minutes!",
"percentagenumber": "{{$a}}%",
"phone": "Phone",

View File

@ -40,8 +40,7 @@ export class CoreLangProvider {
platform.ready().then(() => {
this.getCurrentLanguage().then((language) => {
translate.use(language);
moment.locale(language);
this.changeCurrentLanguage(language);
});
});
@ -97,7 +96,30 @@ export class CoreLangProvider {
// Change the language, resolving the promise when we receive the first value.
promises.push(new Promise((resolve, reject): void => {
const subscription = this.translate.use(language).subscribe((data) => {
resolve(data);
// It's a language override, load the original one first.
const fallbackLang = this.translate.instant('core.parentlanguage');
if (fallbackLang != '' && fallbackLang != language) {
const fallbackSubs = this.translate.use(fallbackLang).subscribe((fallbackData) => {
data = Object.assign(fallbackData, data);
resolve(data);
// Data received, unsubscribe. Use a timeout because we can receive a value immediately.
setTimeout(() => {
fallbackSubs.unsubscribe();
});
}, (error) => {
// Resolve with the original language.
resolve(data);
// Error received, unsubscribe. Use a timeout because we can receive a value immediately.
setTimeout(() => {
fallbackSubs.unsubscribe();
});
});
} else {
resolve(data);
}
// Data received, unsubscribe. Use a timeout because we can receive a value immediately.
setTimeout(() => {