cleaned up function and added test in case no file should be loaded

This commit is contained in:
Felix Wiedenbach 2021-01-29 22:25:49 +01:00
parent 94bb8e6c03
commit db24f20289
2 changed files with 34 additions and 18 deletions

View File

@ -311,29 +311,27 @@ var Module = Class.extend({
* *
* @param {Function} callback Function called when done. * @param {Function} callback Function called when done.
*/ */
loadTranslations: function (callback) { loadTranslations(callback) {
var self = this; const translations = this.getTranslations() || {};
var translations = this.getTranslations(); const language = config.language.toLowerCase();
var lang = config.language.toLowerCase();
// The variable `first` will contain the first const languages = Object.keys(translations);
// defined translation after the following line. const fallbackLanguage = languages[0];
for (var first in translations) {
break;
}
if (translations) { if (languages.length > 0) {
var translationFile = translations[lang] || undefined; const translationFile = translations[language];
var translationsFallbackFile = translations[first]; const translationsFallbackFile = translations[fallbackLanguage];
// If a translation file is set, load it and then also load the fallback translation file. if (translationFile) {
// Otherwise only load the fallback translation file. Translator.load(this, translationFile, false, () => {
if (translationFile !== undefined && translationFile !== translationsFallbackFile) { if (translationFile !== translationsFallbackFile) {
Translator.load(self, translationFile, false, function () { Translator.load(this, translationsFallbackFile, true, callback);
Translator.load(self, translationsFallbackFile, true, callback); } else {
callback();
}
}); });
} else { } else {
Translator.load(self, translationsFallbackFile, true, callback); Translator.load(this, translationsFallbackFile, true, callback);
} }
} else { } else {
callback(); callback();

View File

@ -106,6 +106,24 @@ describe("Translations", function () {
done(); done();
}; };
}); });
it("should load no file", (done) => {
dom.window.onload = async function () {
const { Translator, Module } = dom.window;
Translator.load = sinon.stub();
Module.register("name", {});
const MMM = Module.create("name");
const loaded = sinon.stub();
MMM.loadTranslations(loaded);
expect(loaded.callCount).to.equal(1);
expect(Translator.load.callCount).to.equal(0);
done();
};
});
}); });
const mmm = { const mmm = {