@intlayer/core
Version:
Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.
39 lines (37 loc) • 1.58 kB
JavaScript
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
const require_interpreter_getDictionary = require('./getDictionary.cjs');
let _intlayer_config_client = require("@intlayer/config/client");
let _intlayer_config_built = require("@intlayer/config/built");
_intlayer_config_built = require_rolldown_runtime.__toESM(_intlayer_config_built);
let _intlayer_dictionaries_entry = require("@intlayer/dictionaries-entry");
//#region src/interpreter/getIntlayer.ts
/**
* Creates a Recursive Proxy that returns the path of the accessed key
* stringified. This prevents the app from crashing on undefined access.
*/
const createSafeFallback = (path = "") => {
return new Proxy(() => path, {
get: (_target, prop) => {
if (prop === "toJSON" || prop === Symbol.toPrimitive || prop === "toString") return () => path;
if (prop === "then") return;
return createSafeFallback(path ? `${path}.${String(prop)}` : String(prop));
},
apply: () => {
return path;
}
});
};
const getIntlayer = (key, locale, plugins) => {
const dictionary = (0, _intlayer_dictionaries_entry.getDictionaries)()[key];
if (!dictionary) {
(0, _intlayer_config_client.getAppLogger)(_intlayer_config_built.default)(`Dictionary "${key}" was not found. Using fallback proxy.`, {
level: "warn",
isVerbose: true
});
if (process.env.NODE_ENV === "development") return createSafeFallback(key);
}
return require_interpreter_getDictionary.getDictionary(dictionary, locale, plugins);
};
//#endregion
exports.getIntlayer = getIntlayer;
//# sourceMappingURL=getIntlayer.cjs.map