next-i18next
Version:
The easiest way to translate your NextJs apps.
44 lines (43 loc) • 1.51 kB
JavaScript
import i18n$1 from "i18next";
import fs from "fs";
import resourcesToBackend from "i18next-resources-to-backend";
//#region src/pagesRouter/createClient/node.ts
function createFSBackend(config) {
return resourcesToBackend((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.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 = i18n$1.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(i18n$1.t);
return {
i18n: instance,
initPromise
};
};
//#endregion
export { node_default as default };
//# sourceMappingURL=node.mjs.map