import type { Metadata } from "next" import { getTranslations, getMessages, setRequestLocale } from "next-intl/server" import { Link } from "@/i18n/navigation" import { DocHeader } from "@/components/ui/doc-header" export async function generateMetadata({ params, }: { params: Promise<{ locale: string }> }): Promise { const { locale } = await params const t = await getTranslations({ locale, namespace: "docs.backupRestore.glossary.meta" }) return { title: t("title"), description: t("description"), keywords: [ "proxmenux backup glossary", "proxmox backup terminology", "pbs recovery envelope", "pbs keyfile passphrase", "backup vocabulary", ], alternates: { canonical: "https://proxmenux.com/docs/backup-restore/glossary" }, openGraph: { title: t("ogTitle"), description: t("ogDescription"), type: "article", url: "https://proxmenux.com/docs/backup-restore/glossary", }, twitter: { card: "summary_large_image", title: t("twitterTitle"), description: t("twitterDescription"), }, } } type Entry = { id: string; term: string; also?: string; def: string } type Group = { title: string; intro: string; entries: Entry[] } type WhereNextItem = { label: string; href: string; tail: string } export default async function GlossaryPage({ params, }: { params: Promise<{ locale: string }> }) { const { locale } = await params setRequestLocale(locale) const t = await getTranslations({ locale, namespace: "docs.backupRestore.glossary" }) const messages = (await getMessages({ locale })) as unknown as { docs: { backupRestore: { glossary: { groups: Group[] whereNext: { items: WhereNextItem[] } } } } } const gl = messages.docs.backupRestore.glossary const groups = gl.groups const whereNextItems = gl.whereNext.items return (

{t("intro.body")}

{groups.map((group, idx) => (

{group.title}

{group.intro}

{group.entries.map((entry) => (
{entry.term} {entry.also ? ( ({entry.also}) ) : null}
))}
))}

{t("whereNext.heading")}

    {whereNextItems.map((item) => (
  • {item.label} {item.tail}
  • ))}
) }