feat: implement internationalization support by updating locale files and adding language switch component

This commit is contained in:
2025-06-08 09:25:38 +03:30
parent 2ae57940f0
commit 12775285ec
19 changed files with 148 additions and 333 deletions
+35
View File
@@ -0,0 +1,35 @@
import '@/app/globals.css';
import { notFound } from 'next/navigation';
import { NextIntlClientProvider } from 'next-intl';
import type { ILayoutLocaleParams } from '@/models/layout.d';
// export const metadata: Metadata = {
// title: 'Create Next App',
// description: 'Generated by create next app',
// };
export default async function RootLayout({
children,
params,
}: Readonly<{
children: React.ReactNode;
params: ILayoutLocaleParams;
}>) {
const locale = params.locale;
let messages;
try {
messages = (await import(`../../../messages/${locale}.json`)).default;
} catch (error) {
notFound();
}
return (
<html lang={locale} dir={locale === 'fa' ? 'rtl' : 'ltr'}>
<body className="min-h-svh w-full overflow-x-hidden">
<NextIntlClientProvider locale={locale} messages={messages}>
{children}
</NextIntlClientProvider>
</body>
</html>
);
}
+1 -1
View File
@@ -13,7 +13,7 @@ export default async function NotFound({
const routes = routeFactory(t, params.locale);
return (
<div className="container mx-auto my-32 flex flex-col items-center justify-center gap-6">
<div className="container mx-auto flex h-svh flex-col items-center justify-center gap-6">
<h2 className="text-center text-4xl md:text-[5rem]">
{t('pages_notFound_title')}
</h2>
+3 -5
View File
@@ -18,15 +18,13 @@ export default async function RootLayout({
params: ILayoutLocaleParams;
}>) {
const locale = params.locale;
console.log(locale);
let messages;
try {
console.log(await import(`../../../messages/en.json`));
messages = (await import(`../../../messages/en.json`)).default;
messages = (await import(`../../../messages/${locale}.json`)).default;
console.log('locale');
console.log(locale);
} catch (error) {
console.log(error);
notFound();
}