diff --git a/src/app/admin/import/page.tsx b/src/app/admin/import/page.tsx index dab2153f..ee84ae8d 100644 --- a/src/app/admin/import/page.tsx +++ b/src/app/admin/import/page.tsx @@ -1,29 +1,31 @@ +import { getTranslations } from "next-intl/server"; import { BadgeCheck, Cat, Copy, Dumbbell, Puzzle, Shirt, Wrench } from "lucide-react"; import Link from "next/link"; import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -const SECTIONS = [ - { href: "/admin/import/badges", label: "Badges", icon: BadgeCheck, description: "Import and manage badge assets from external sources." }, - { href: "/admin/import/furni", label: "Furni", icon: Puzzle, description: "Import furniture definitions, SWF files, and icons." }, - { href: "/admin/import/clothing", label: "Clothing", icon: Shirt, description: "Import clothing and wearables for avatars." }, - { href: "/admin/import/effects", label: "Effects", icon: Dumbbell, description: "Import avatar effects and animations." }, - { href: "/admin/import/pets", label: "Pets", icon: Cat, description: "Import pet data and icons." }, - { href: "/admin/import/clone", label: "Clone", icon: Copy, description: "Clone existing items from one source to another." }, - { href: "/admin/import/repair", label: "Repair", icon: Wrench, description: "Audit and repair imported assets." }, -] as const; - export default async function ImportPage() { + const t = await getTranslations("pages.admin.import"); const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.ASSETS_IMPORT, session.user.rank)) { redirect("/admin"); } + const SECTIONS = [ + { href: "/admin/import/badges", label: t("badges"), icon: BadgeCheck, description: t("badgesDescription") }, + { href: "/admin/import/furni", label: t("furni"), icon: Puzzle, description: t("furniDescription") }, + { href: "/admin/import/clothing", label: t("clothing"), icon: Shirt, description: t("clothingDescription") }, + { href: "/admin/import/effects", label: t("effects"), icon: Dumbbell, description: t("effectsDescription") }, + { href: "/admin/import/pets", label: t("pets"), icon: Cat, description: t("petsDescription") }, + { href: "/admin/import/clone", label: t("clone"), icon: Copy, description: t("cloneDescription") }, + { href: "/admin/import/repair", label: t("repair"), icon: Wrench, description: t("repairDescription") }, + ] as const; + return (
-

Import

-

Import assets from external sources into your hotel.

+

{t("title")}

+

{t("subtitle")}

diff --git a/src/app/admin/translations/translations-tabs.tsx b/src/app/admin/translations/translations-tabs.tsx index 3dafa82c..696a91d6 100644 --- a/src/app/admin/translations/translations-tabs.tsx +++ b/src/app/admin/translations/translations-tabs.tsx @@ -1,28 +1,30 @@ "use client"; +import { useTranslations } from "next-intl"; import { Gamepad2, Globe, Server } from "lucide-react"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { cn } from "@/lib/utils"; -const TABS = [ - { href: "/admin/translations/cms", label: "CMS", icon: Globe }, - { href: "/admin/translations/client", label: "Client (Nitro)", icon: Gamepad2 }, - { href: "/admin/translations/emulator", label: "Emulator", icon: Server }, -] as const; - export function TranslationsTabs() { + const t = useTranslations("pages.admin.translations.tabs"); const pathname = usePathname(); + const TABS = [ + { href: "/admin/translations/cms", label: t("cms"), icon: Globe }, + { href: "/admin/translations/client", label: t("client"), icon: Gamepad2 }, + { href: "/admin/translations/emulator", label: t("emulator"), icon: Server }, + ] as const; + return (
- {TABS.map((t) => { - const active = pathname === t.href || pathname.startsWith(`${t.href}/`); - const Icon = t.icon; + {TABS.map((tab) => { + const active = pathname === tab.href || pathname.startsWith(`${tab.href}/`); + const Icon = tab.icon; return ( - {t.label} + {tab.label} ); })} diff --git a/src/messages/en.json b/src/messages/en.json index 7448d604..5d805493 100644 --- a/src/messages/en.json +++ b/src/messages/en.json @@ -2007,6 +2007,33 @@ "save": "Save as favicon" } }, + "import": { + "title": "Import", + "subtitle": "Import assets from external sources into your hotel.", + "badges": "Badges", + "badgesDescription": "Import and manage badge assets from external sources.", + "furni": "Furni", + "furniDescription": "Import furniture definitions, SWF files, and icons.", + "clothing": "Clothing", + "clothingDescription": "Import clothing and wearables for avatars.", + "effects": "Effects", + "effectsDescription": "Import avatar effects and animations.", + "pets": "Pets", + "petsDescription": "Import pet data and icons.", + "clone": "Clone", + "cloneDescription": "Clone existing items from one source to another.", + "repair": "Repair", + "repairDescription": "Audit and repair imported assets." + }, + "translations": { + "title": "Translations", + "subtitle": "Translate your hotel into multiple languages.", + "tabs": { + "cms": "CMS", + "client": "Client (Nitro)", + "emulator": "Emulator" + } + }, "settings": { "title": "CMS Settings", "subtitle": "Manage key/value CMS configuration",