From 415d794147f6fa5683fe1c660feee3e0fc2304b9 Mon Sep 17 00:00:00 2001 From: baslani Date: Wed, 15 Apr 2026 12:40:43 +0330 Subject: [PATCH] [wip] implementing multi language --- messages/en.json | 5 +++++ src/app/{ => [locale]}/layout.tsx | 27 ++++++++++++++++++++++----- src/app/{ => [locale]}/page.tsx | 4 +++- src/i18n/direction.ts | 10 ++++++++++ src/i18n/navigation.ts | 4 ++++ src/i18n/request.ts | 15 +++++++++++++++ src/i18n/routing.ts | 8 ++++++++ src/i18n/useDirection.ts | 9 +++++++++ src/lib/utils.ts | 6 ++++++ src/proxy.ts | 8 ++++++++ 10 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 messages/en.json rename src/app/{ => [locale]}/layout.tsx (52%) rename src/app/{ => [locale]}/page.tsx (66%) create mode 100644 src/i18n/direction.ts create mode 100644 src/i18n/navigation.ts create mode 100644 src/i18n/request.ts create mode 100644 src/i18n/routing.ts create mode 100644 src/i18n/useDirection.ts create mode 100644 src/lib/utils.ts create mode 100644 src/proxy.ts diff --git a/messages/en.json b/messages/en.json new file mode 100644 index 0000000..5fa1a11 --- /dev/null +++ b/messages/en.json @@ -0,0 +1,5 @@ +{ + "Home": { + "title": "Title" + } +} diff --git a/src/app/layout.tsx b/src/app/[locale]/layout.tsx similarity index 52% rename from src/app/layout.tsx rename to src/app/[locale]/layout.tsx index bc0a13e..0e0ca91 100644 --- a/src/app/layout.tsx +++ b/src/app/[locale]/layout.tsx @@ -1,18 +1,33 @@ +import { getDirection } from '@/i18n/direction' +import { routing } from '@/i18n/routing' import { ClientAppProvider } from '@/providers/ClientAppProvider' import '@/styles/globals.css' import type { Metadata } from 'next' +import { hasLocale, NextIntlClientProvider } from 'next-intl' +import { getMessages } from 'next-intl/server' +import { notFound } from 'next/navigation' export const metadata: Metadata = { title: 'Theater of dreams', } -export default function RootLayout({ +export default async function RootLayout({ children, -}: { + params, +}: Readonly<{ children: React.ReactNode -}) { + params: Promise<{ locale: string }> +}>) { + const { locale } = await params + if (!hasLocale(routing.locales, locale)) { + notFound() + } + + const messages = await getMessages() + const dir = getDirection(locale) + return ( - + {/* Prevent theme flicker before hydration */}