i18n: Fix support for ES5 and above
This commit is contained in:
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
},
|
},
|
||||||
"extends": "eslint:recommended",
|
"extends": "eslint:recommended",
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 2018,
|
"ecmaVersion": 5,
|
||||||
"sourceType": "module"
|
"sourceType": "module"
|
||||||
},
|
},
|
||||||
"rules": {
|
"rules": {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Internationalization Class for JavaScript
|
Internationalization Class for JavaScript
|
||||||
Copyright (C) 2018 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
Copyright (C) 2018 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
||||||
@@ -273,44 +275,50 @@ class I18n {
|
|||||||
language = this._sanitizeLanguage(language);
|
language = this._sanitizeLanguage(language);
|
||||||
this._verifyData(data);
|
this._verifyData(data);
|
||||||
|
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
try {
|
// Decode data from various forms.
|
||||||
let json_data;
|
let decodePromise;
|
||||||
|
if ((data instanceof File) || (data instanceof Blob)) {
|
||||||
// Decode File, Blob and string to JSON object.
|
decodePromise = new Promise((fileResolve, fileReject) => {
|
||||||
if ((data instanceof File) || (data instanceof Blob)) {
|
|
||||||
let freader = new FileReader();
|
let freader = new FileReader();
|
||||||
await new Promise((resolve2, reject2) => {
|
freader.onload(() => {
|
||||||
freader.onload(() => {
|
fileResolve(JSON.parse(freader.result));
|
||||||
resolve2();
|
|
||||||
});
|
|
||||||
freader.onabort((ev) => {
|
|
||||||
reject2(ev);
|
|
||||||
});
|
|
||||||
freader.onerror((ev) => {
|
|
||||||
reject2(ev);
|
|
||||||
});
|
|
||||||
freader.readAsText(data, encoding);
|
|
||||||
});
|
});
|
||||||
json_data = JSON.parse(freader.result);
|
freader.onabort((ev) => {
|
||||||
} else if (typeof (data) == 'string') {
|
fileReject(ev);
|
||||||
json_data = JSON.parse(data);
|
});
|
||||||
} else if (typeof (data) == 'object') {
|
freader.onerror((ev) => {
|
||||||
json_data = data;
|
fileReject(ev);
|
||||||
}
|
});
|
||||||
|
freader.readAsText(data, encoding);
|
||||||
|
});
|
||||||
|
} else if (typeof(data) == 'string') {
|
||||||
|
decodePromise = new Promise((parseResolve, parseReject) => {
|
||||||
|
parseReject;
|
||||||
|
parseResolve(JSON.parse(data));
|
||||||
|
});
|
||||||
|
} else if (typeof(data) == 'object') {
|
||||||
|
decodePromise = new Promise((passResolve, passReject) => {
|
||||||
|
passReject;
|
||||||
|
passResolve(data);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
reject('invalid data');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load Data
|
||||||
|
decodePromise.then((result) => {
|
||||||
let language_map = new Map();
|
let language_map = new Map();
|
||||||
for (let key in json_data) {
|
for (let key in result) {
|
||||||
language_map.set(key, json_data[key]);
|
language_map.set(key, result[key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.languages.set(language, language_map);
|
this.languages.set(language, language_map);
|
||||||
this.dirtyTs = performance.now();
|
this.dirtyTs = performance.now();
|
||||||
resolve(language);
|
resolve(language);
|
||||||
} catch (e) {
|
}, (reason) => {
|
||||||
reject(e);
|
reject(reason);
|
||||||
return;
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user