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 && ( -
+
{selectedItem.name}