mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-25 13:57:47 +00:00
improve language handling
This commit is contained in:
@@ -1,30 +0,0 @@
|
|||||||
import { getAllSessions } from "@/lib/cookies";
|
|
||||||
import { listSessions } from "@/lib/zitadel";
|
|
||||||
import { Session } from "@zitadel/proto/zitadel/session/v2/session_pb";
|
|
||||||
import { NextRequest, NextResponse } from "next/server";
|
|
||||||
|
|
||||||
async function loadSessions(ids: string[]): Promise<Session[]> {
|
|
||||||
const response = await listSessions(
|
|
||||||
ids.filter((id: string | undefined) => !!id),
|
|
||||||
);
|
|
||||||
|
|
||||||
return response?.sessions ?? [];
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function GET(request: NextRequest) {
|
|
||||||
const sessionCookies = await getAllSessions();
|
|
||||||
const ids = sessionCookies.map((s) => s.id);
|
|
||||||
let sessions: Session[] = [];
|
|
||||||
if (ids && ids.length) {
|
|
||||||
sessions = await loadSessions(ids);
|
|
||||||
}
|
|
||||||
|
|
||||||
const responseHeaders = new Headers();
|
|
||||||
responseHeaders.set("Access-Control-Allow-Origin", "*");
|
|
||||||
responseHeaders.set("Access-Control-Allow-Headers", "*");
|
|
||||||
|
|
||||||
return NextResponse.json(
|
|
||||||
{ sessions },
|
|
||||||
{ status: 200, headers: responseHeaders },
|
|
||||||
);
|
|
||||||
}
|
|
@@ -1,12 +1,28 @@
|
|||||||
import { LANGUAGE_COOKIE_NAME } from "@/lib/i18n";
|
import { LANGS, LANGUAGE_COOKIE_NAME, LANGUAGE_HEADER_NAME } from "@/lib/i18n";
|
||||||
import deepmerge from "deepmerge";
|
import deepmerge from "deepmerge";
|
||||||
import { getRequestConfig } from "next-intl/server";
|
import { getRequestConfig } from "next-intl/server";
|
||||||
import { cookies } from "next/headers";
|
import { cookies, headers } from "next/headers";
|
||||||
|
|
||||||
export default getRequestConfig(async () => {
|
export default getRequestConfig(async () => {
|
||||||
const fallback = "en";
|
const fallback = "en";
|
||||||
const cookiesList = await cookies();
|
const cookiesList = await cookies();
|
||||||
const locale: string = cookiesList.get(LANGUAGE_COOKIE_NAME)?.value ?? "en";
|
|
||||||
|
let locale: string = fallback;
|
||||||
|
|
||||||
|
const languageHeader = await (await headers()).get(LANGUAGE_HEADER_NAME);
|
||||||
|
if (languageHeader) {
|
||||||
|
const headerLocale = languageHeader.split(",")[0].split("-")[0]; // Extract the language code
|
||||||
|
if (LANGS.map((l) => l.code).includes(headerLocale)) {
|
||||||
|
locale = headerLocale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const languageCookie = cookiesList?.get(LANGUAGE_COOKIE_NAME);
|
||||||
|
if (languageCookie && languageCookie.value) {
|
||||||
|
if (LANGS.map((l) => l.code).includes(languageCookie.value)) {
|
||||||
|
locale = languageCookie.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const userMessages = (await import(`../../locales/${locale}.json`)).default;
|
const userMessages = (await import(`../../locales/${locale}.json`)).default;
|
||||||
const fallbackMessages = (await import(`../../locales/${fallback}.json`))
|
const fallbackMessages = (await import(`../../locales/${fallback}.json`))
|
||||||
|
@@ -23,3 +23,4 @@ export const LANGS: Lang[] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export const LANGUAGE_COOKIE_NAME = "NEXT_LOCALE";
|
export const LANGUAGE_COOKIE_NAME = "NEXT_LOCALE";
|
||||||
|
export const LANGUAGE_HEADER_NAME = "accept-language";
|
||||||
|
Reference in New Issue
Block a user