summary refs log tree commit diff
path: root/src/api/middlewares/Translation.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/middlewares/Translation.ts')
-rw-r--r--src/api/middlewares/Translation.ts59
1 files changed, 19 insertions, 40 deletions
diff --git a/src/api/middlewares/Translation.ts b/src/api/middlewares/Translation.ts

index 0ddc56bb..60ff4ad7 100644 --- a/src/api/middlewares/Translation.ts +++ b/src/api/middlewares/Translation.ts
@@ -18,20 +18,11 @@ import fs from "fs"; import path from "path"; -import i18next, { TFunction } from "i18next"; -import i18nextBackend from "i18next-fs-backend"; +import i18next from "i18next"; +import i18nextMiddleware from "i18next-http-middleware"; +import i18nextBackend from "i18next-node-fs-backend"; import { Router } from "express"; -declare global { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace Express { - interface Request { - t: TFunction; - language?: string; - } - } -} - const ASSET_FOLDER_PATH = path.join(__dirname, "..", "..", "..", "assets"); export async function initTranslation(router: Router) { @@ -43,33 +34,21 @@ export async function initTranslation(router: Router) { .filter((x) => x.endsWith(".json")) .map((x) => x.slice(0, x.length - 5)); - await i18next.use(i18nextBackend).init({ - preload: languages, - // debug: true, - fallbackLng: "en", - ns, - backend: { - loadPath: - path.join(ASSET_FOLDER_PATH, "locales") + - "/{{lng}}/{{ns}}.json", - }, - load: "all", - }); - - router.use((req, res, next) => { - let lng = "en"; - if (req.headers["accept-language"]) { - lng = req.headers["accept-language"].split(",")[0]; - } - req.language = lng; + await i18next + .use(i18nextBackend) + .use(i18nextMiddleware.LanguageDetector) + .init({ + preload: languages, + // debug: true, + fallbackLng: "en", + ns, + backend: { + loadPath: + path.join(ASSET_FOLDER_PATH, "locales") + + "/{{lng}}/{{ns}}.json", + }, + load: "all", + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - req.t = (key: string | string[], options?: any) => { - return i18next.t(key, { - ...options, - lng, - }); - }; - next(); - }); + router.use(i18nextMiddleware.handle(i18next, {})); }