@zainulbr/i18n-webpack-plugin
Version:
Rewrite original embed localization into your bundle with support webpack 5
55 lines (46 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/**
* Convert the localization object into a function in case we need to support nested keys.
*
* @param {Object} localization the language object,
* @param {Boolean} nested
*
* @returns {Function}
*/
function makeLocalizeFunction(localization, nested) {
return function localizeFunction(key) {
return nested ? byString(localization, key) : localization[key];
};
}
/**
* Find the key if the key is a path expressed with dots
*
* e.g.
* Code: __("errors.connectionError")
* Lang: {"errors": {"connectionError": "There was an error connecting."}}
* New Code: "There was an error connecting."
*
* @param {Object} localization
* @param {String} nestedKey The original key
*
* @returns {*}
*/
function byString(plocalization, nestedKey) {
// remove a leading dot and split by dot
var keys = nestedKey.replace(/^\./, '').split('.');
var localization = plocalization; // loop through the keys to find the nested value
for (var i = 0, length = keys.length; i < length; ++i) {
var key = keys[i];
if (!(key in localization)) {
return;
}
localization = localization[key];
}
return localization;
}
var _default = makeLocalizeFunction;
exports.default = _default;