diff --git a/apps/login/package.json b/apps/login/package.json
index d1cf31d7d18..9617300a2ed 100644
--- a/apps/login/package.json
+++ b/apps/login/package.json
@@ -42,6 +42,7 @@
"@zitadel/proto": "workspace:*",
"clsx": "1.2.1",
"copy-to-clipboard": "^3.3.3",
+ "deepmerge": "^4.3.1",
"moment": "^2.29.4",
"next": "14.2.14",
"next-intl": "^3.20.0",
diff --git a/apps/login/src/app/(login)/layout.tsx b/apps/login/src/app/(login)/layout.tsx
index e3f54f235b6..700de5561ac 100644
--- a/apps/login/src/app/(login)/layout.tsx
+++ b/apps/login/src/app/(login)/layout.tsx
@@ -54,7 +54,7 @@ export default async function RootLayout({
) : (
-
+ {locale && }
)}
diff --git a/apps/login/src/i18n/request.ts b/apps/login/src/i18n/request.ts
index 123f52e2a78..5571eb2229f 100644
--- a/apps/login/src/i18n/request.ts
+++ b/apps/login/src/i18n/request.ts
@@ -1,14 +1,20 @@
+import deepmerge from "deepmerge";
import { getRequestConfig } from "next-intl/server";
import { cookies } from "next/headers";
export default getRequestConfig(async () => {
+ const fallback = "en";
const cookiesList = cookies();
const locale: string = cookiesList.get("NEXT_LOCALE")?.value ?? "en";
+ const userMessages = (await import(`../../locales/${locale}.json`)).default;
+ const fallbackMessages = (await import(`../../locales/${fallback}.json`))
+ .default;
+
console.log("i18nRequest", locale);
return {
locale,
- messages: (await import(`../../locales/${locale}.json`)).default,
+ messages: deepmerge(fallbackMessages, userMessages),
};
});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 45eadb617ce..1a2f4ff98aa 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -77,6 +77,9 @@ importers:
copy-to-clipboard:
specifier: ^3.3.3
version: 3.3.3
+ deepmerge:
+ specifier: ^4.3.1
+ version: 4.3.1
moment:
specifier: ^2.29.4
version: 2.30.1
@@ -1934,6 +1937,10 @@ packages:
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
define-data-property@1.1.4:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
@@ -6317,6 +6324,8 @@ snapshots:
deep-is@0.1.4: {}
+ deepmerge@4.3.1: {}
+
define-data-property@1.1.4:
dependencies:
es-define-property: 1.0.0