From 681b116e09ec8a6ab6f2ab8e76aeb7b7954b2ab5 Mon Sep 17 00:00:00 2001 From: Raj Nandan Sharma Date: Thu, 12 Mar 2026 14:03:19 +0530 Subject: [PATCH] bug fix --- Dockerfile | 3 +++ src/lib/server/i18n.ts | 22 +++++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3f4b9d0f..c136d4cb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -164,6 +164,9 @@ COPY --chown=node:node --from=builder /app/src/lib/server/db/seedMonitorData.ts COPY --chown=node:node --from=builder /app/src/lib/server/db/seedPagesData.ts ./src/lib/server/db/seedPagesData.ts COPY --chown=node:node --from=builder /app/src/lib/server/templates/general ./src/lib/server/templates/general +# Locale JSON files (read at runtime by server-side i18n) +COPY --chown=node:node --from=builder /app/src/lib/locales ./src/lib/locales + # Build output (SvelteKit client/server + esbuild main.js) — changes most often COPY --chown=node:node --from=builder /app/build ./build diff --git a/src/lib/server/i18n.ts b/src/lib/server/i18n.ts index 3b9052ca..b5117cb2 100644 --- a/src/lib/server/i18n.ts +++ b/src/lib/server/i18n.ts @@ -1,12 +1,24 @@ /** * Server-side i18n helper for translating strings outside of Svelte components. - * Reads locale JSON files eagerly via Vite's import.meta.glob. + * Reads locale JSON files from disk using Node.js fs (compatible with both + * Vite dev server and esbuild production bundle). */ -const localeModules = import.meta.glob("/src/lib/locales/*.json", { - eager: true, - import: "default", -}) as Record }>; +import { readdirSync, readFileSync } from "fs"; +import { join } from "path"; + +const localeModules: Record }> = {}; + +const localesDir = join(process.cwd(), "src", "lib", "locales"); +try { + const files = readdirSync(localesDir).filter((f) => f.endsWith(".json")); + for (const file of files) { + const key = `/src/lib/locales/${file}`; + localeModules[key] = JSON.parse(readFileSync(join(localesDir, file), "utf-8")); + } +} catch { + console.warn("Could not load locale files from", localesDir); +} const localeCache = new Map>();