panel-web/apps/user/locales/request.ts
2024-11-14 01:22:43 +07:00

35 lines
1.4 KiB
TypeScript

import { getRequestConfig } from 'next-intl/server';
import { cookies, headers } from 'next/headers';
const locales = ['zh-CN', 'en-US'];
export default getRequestConfig(async () => {
const browserLocale = (await headers()).get('Accept-Language')?.split(',')?.[0] || '';
const defaultLocale = locales.includes(browserLocale) ? browserLocale : '';
const cookieLocale = (await cookies()).get('locale')?.value || '';
const locale =
cookieLocale || defaultLocale || process.env.NEXT_PUBLIC_DEFAULT_LANGUAGE || locales[0];
const messages = {
language: (await import(`./${locale}/language.json`)).default,
menu: (await import(`./${locale}/menu.json`)).default,
auth: (await import(`./${locale}/auth.json`)).default,
common: (await import(`./${locale}/common.json`)).default,
layout: (await import(`./${locale}/layout.json`)).default,
index: (await import(`./${locale}/index.json`)).default,
dashboard: (await import(`./${locale}/dashboard.json`)).default,
profile: (await import(`./${locale}/profile.json`)).default,
subscribe: (await import(`./${locale}/subscribe.json`)).default,
order: (await import(`./${locale}/order.json`)).default,
wallet: (await import(`./${locale}/wallet.json`)).default,
ticket: (await import(`./${locale}/ticket.json`)).default,
document: (await import(`./${locale}/document.json`)).default,
};
return {
locale,
messages,
};
});