From e30cbfa132264d9acb7e0383bf4a9672c6c28b17 Mon Sep 17 00:00:00 2001
From: ayrisdev
Date: Mon, 29 Jun 2026 20:29:41 +0300
Subject: [PATCH] langueages
---
app/{ => [locale]}/MenuClient.tsx | 45 +-
app/[locale]/layout.tsx | 58 ++
app/{ => [locale]}/page.tsx | 22 +-
app/admin/(dashboard)/categories/actions.ts | 2 +
app/admin/(dashboard)/products/actions.ts | 4 +
app/{ => admin}/layout.tsx | 2 +-
components/CategoryNav.tsx | 2 +-
i18n/request.ts | 17 +
i18n/routing.ts | 11 +
messages/de.json | 6 +
messages/en.json | 6 +
messages/ru.json | 6 +
messages/tr.json | 6 +
next.config.ts | 5 +-
package-lock.json | 734 +++++++++++++++++++-
package.json | 1 +
prisma/schema.prisma | 3 +
proxy.ts | 64 +-
scripts/migrate-i18n.ts | 60 ++
19 files changed, 1014 insertions(+), 40 deletions(-)
rename app/{ => [locale]}/MenuClient.tsx (84%)
create mode 100644 app/[locale]/layout.tsx
rename app/{ => [locale]}/page.tsx (65%)
rename app/{ => admin}/layout.tsx (97%)
create mode 100644 i18n/request.ts
create mode 100644 i18n/routing.ts
create mode 100644 messages/de.json
create mode 100644 messages/en.json
create mode 100644 messages/ru.json
create mode 100644 messages/tr.json
create mode 100644 scripts/migrate-i18n.ts
diff --git a/app/MenuClient.tsx b/app/[locale]/MenuClient.tsx
similarity index 84%
rename from app/MenuClient.tsx
rename to app/[locale]/MenuClient.tsx
index 1bdcfbe..bb21000 100644
--- a/app/MenuClient.tsx
+++ b/app/[locale]/MenuClient.tsx
@@ -1,10 +1,12 @@
"use client";
-import { useEffect, useState, useRef } from "react";
+import React, { useEffect, useState, useRef, Fragment } from "react";
import { motion, AnimatePresence } from "framer-motion";
import { MenuCategory, MenuItem as MenuItemType } from "@/data/menu";
import { CategoryNav } from "@/components/CategoryNav";
import { MenuItem } from "@/components/MenuItem";
+import { useTranslations, useLocale } from "next-intl";
+import { useRouter, usePathname } from "@/i18n/routing";
export const CATEGORY_ICONS: Record = {
"kahvaltiliklar": "🌅",
@@ -41,6 +43,10 @@ export default function MenuClient({ initialCategories, siteSettings }: { initia
);
const [selectedItem, setSelectedItem] = useState(null);
const sectionRefs = useRef<(HTMLElement | null)[]>([]);
+ const t = useTranslations("Menu");
+ const locale = useLocale();
+ const router = useRouter();
+ const pathname = usePathname();
useEffect(() => {
const observer = new IntersectionObserver(
@@ -120,8 +126,28 @@ export default function MenuClient({ initialCategories, siteSettings }: { initia
className="text-xs font-sans tracking-wide"
style={{ color: "rgba(255,218,168,0.5)" }}
>
- Akyaka'nın en keyifli menüsü
+ {t('subtitle')}
+
+
+ {['tr', 'en', 'ru', 'de'].map((l, index) => (
+
+
+ {index < 3 && (
+
+ )}
+
+ ))}
+
@@ -170,7 +196,7 @@ export default function MenuClient({ initialCategories, siteSettings }: { initia
{CATEGORY_ICONS[category.id] ?? "🍽️"}
{category.title}
@@ -217,8 +243,17 @@ export default function MenuClient({ initialCategories, siteSettings }: { initia
className="text-[11px] font-sans"
style={{ color: "rgba(120,90,60,0.5)" }}
>
- © 2026 Moy Beach. Tüm hakları saklıdır.
+ © 2026 {siteSettings.restaurantName}. {t('allRightsReserved')}
+
+ Created by ayris.tech
+
@@ -240,7 +275,7 @@ export default function MenuClient({ initialCategories, siteSettings }: { initia
onClick={(e) => e.stopPropagation()}
>
{selectedItem.image && (
-
+