Fix translation fallbacks
This commit is contained in:
parent
58bfb6f51d
commit
631399991e
|
@ -32,7 +32,7 @@ export default new class LocaleManager {
|
||||||
newStrings = Locales[this.defaultLocale];
|
newStrings = Locales[this.defaultLocale];
|
||||||
}
|
}
|
||||||
this.locale = newLocale;
|
this.locale = newLocale;
|
||||||
Utilities.extend(this.strings, newStrings);
|
Utilities.extendTruthy(this.strings, newStrings);
|
||||||
Events.emit("strings-updated");
|
Events.emit("strings-updated");
|
||||||
}
|
}
|
||||||
};
|
};
|
|
@ -192,6 +192,35 @@ export default class Utilities {
|
||||||
return extendee;
|
return extendee;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deep extends an object with a set of other objects. Objects later in the list
|
||||||
|
* of `extenders` have priority, that is to say if one sets a key to be a primitive,
|
||||||
|
* it will be overwritten with the next one with the same key. If it is an object,
|
||||||
|
* and the keys match, the object is extended. This happens recursively.
|
||||||
|
* @param {object} extendee - Object to be extended
|
||||||
|
* @param {...object} extenders - Objects to extend with
|
||||||
|
* @returns {object} - A reference to `extendee`
|
||||||
|
*/
|
||||||
|
static extendTruthy(extendee, ...extenders) {
|
||||||
|
for (let i = 0; i < extenders.length; i++) {
|
||||||
|
for (const key in extenders[i]) {
|
||||||
|
if (extenders[i].hasOwnProperty(key)) {
|
||||||
|
if (typeof extendee[key] === "object" && typeof extenders[i][key] === "object") {
|
||||||
|
this.extendTruthy(extendee[key], extenders[i][key]);
|
||||||
|
}
|
||||||
|
else if (typeof extenders[i][key] === "object") {
|
||||||
|
extendee[key] = {};
|
||||||
|
this.extendTruthy(extendee[key], extenders[i][key]);
|
||||||
|
}
|
||||||
|
else if (extenders[i][key]) {
|
||||||
|
extendee[key] = extenders[i][key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return extendee;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format strings with placeholders (`{{placeholder}}`) into full strings.
|
* Format strings with placeholders (`{{placeholder}}`) into full strings.
|
||||||
* Quick example: `PluginUtilities.formatString("Hello, {{user}}", {user: "Zerebos"})`
|
* Quick example: `PluginUtilities.formatString("Hello, {{user}}", {user: "Zerebos"})`
|
||||||
|
|
Loading…
Reference in New Issue