next-i18next
Version:
The easiest way to translate your NextJs apps.
48 lines (47 loc) • 1.81 kB
JavaScript
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
let i18next = require("i18next");
i18next = require_runtime.__toESM(i18next);
let fs = require("fs");
fs = require_runtime.__toESM(fs);
let i18next_resources_to_backend = require("i18next-resources-to-backend");
i18next_resources_to_backend = require_runtime.__toESM(i18next_resources_to_backend);
//#region src/pagesRouter/createClient/node.ts
function createFSBackend(config) {
return (0, i18next_resources_to_backend.default)((lng, ns) => {
const backend = config.backend;
let filePath;
if (typeof backend?.loadPath === "function") filePath = backend.loadPath(lng, ns);
else if (typeof backend?.loadPath === "string") filePath = backend.loadPath.replace("{{lng}}", lng).replace("{{ns}}", ns);
else filePath = `./public/locales/${lng}/${ns}.json`;
const content = fs.default.readFileSync(filePath, "utf-8");
return JSON.parse(content);
});
}
let globalInstance;
var node_default = (config) => {
if (config.ns === void 0) config.ns = [];
let instance;
if (!globalInstance) {
globalInstance = i18next.default.createInstance(config);
instance = globalInstance;
} else instance = globalInstance.cloneInstance({
...config,
initAsync: false,
initImmediate: false
});
let initPromise;
if (!instance.isInitialized) {
const plugins = config?.use?.filter(Boolean) ?? [];
if (!plugins.some((b) => b.type === "backend")) instance.use(createFSBackend(config));
plugins.forEach((x) => instance.use(x));
if (typeof config.onPreInitI18next === "function") config.onPreInitI18next(instance);
initPromise = instance.init(config);
} else initPromise = Promise.resolve(i18next.default.t);
return {
i18n: instance,
initPromise
};
};
//#endregion
module.exports = node_default;
//# sourceMappingURL=node.cjs.map