/** * Server Component für i18n-Texte * Nutzt Directus mit Fallback auf next-intl/JSON */ import { getLocalizedMessage, getLocalizedContent } from '@/lib/i18n-loader'; interface I18nTextProps { msgKey: string; locale: 'en' | 'de'; fallback?: string; // Falls Key nicht in Directus AND nicht in JSON } /** * Zeigt einen kurzen, lokalisierten Text. * Directus > next-intl/JSON > Fallback > Key selbst. */ export async function I18nText({ msgKey, locale, fallback, }: I18nTextProps) { const text = await getLocalizedMessage(msgKey, locale); return <>{text || fallback || msgKey}; } interface I18nContentProps { slug: string; locale: 'en' | 'de'; fallback?: React.ReactNode; } /** * Zeigt ein längeres, lokalisiertes Inhaltsblöck. * Nur Directus, kein JSON-Fallback. */ export async function I18nContent({ slug, locale, fallback, }: I18nContentProps) { const page = await getLocalizedContent(slug, locale); if (!page?.content) { return <>{fallback || null}; } // Wenn content ein String ist (Markdown/Plain Text): if (typeof page.content === 'string') { return
{page.content}
; } // Wenn content ein JSON-Objekt ist (Rich Text Editor): return (
{JSON.stringify(page.content)}
); }