32 lines
955 B
JavaScript
32 lines
955 B
JavaScript
import { cookies, headers } from "next/headers";
|
|
import { getRequestConfig } from "next-intl/server";
|
|
import fs from "fs";
|
|
import path from "path";
|
|
|
|
export default getRequestConfig(async () => {
|
|
const cookieStore = await cookies();
|
|
|
|
const dictionaryPath = path.join(process.cwd(), "dictionary");
|
|
const supportedLocales = fs.readdirSync(dictionaryPath)
|
|
.filter(file => file.endsWith(".json"))
|
|
.map(file => file.replace(".json", ""));
|
|
|
|
let locale = cookieStore.get("locale")?.value;
|
|
|
|
if (!locale) {
|
|
const headersList = await headers();
|
|
const acceptLanguage = headersList.get("accept-language");
|
|
const browserLang = acceptLanguage?.split(",")[0]?.split("-")[0] || "en";
|
|
|
|
locale = supportedLocales.includes(browserLang) ? browserLang : "en";
|
|
}
|
|
|
|
if (!supportedLocales.includes(locale)) {
|
|
locale = "en";
|
|
}
|
|
|
|
return {
|
|
locale,
|
|
messages: (await import(`../dictionary/${locale}.json`)).default
|
|
};
|
|
}); |