"use client"; // Stellt Sprache + Wörterbuch für Client-Komponenten bereit. Wird einmal // im Root-Layout mit dem serverseitig aus dem Cookie gelesenen Locale // instanziiert; Client-Komponenten lesen darüber via useDict()/useLocale(). import { createContext, useContext, useMemo } from "react"; import { formatMessage } from "@/lib/i18n/shared"; import type { Dict, Locale } from "@/lib/i18n/shared"; interface LocaleContextValue { locale: Locale; dict: Dict; } const LocaleContext = createContext(null); export function LocaleProvider({ locale, dict, children, }: LocaleContextValue & { children: React.ReactNode }) { const value = useMemo(() => ({ locale, dict }), [locale, dict]); return ( {children} ); } function useLocaleContext(): LocaleContextValue { const ctx = useContext(LocaleContext); if (!ctx) throw new Error("useDict/useLocale muss innerhalb von LocaleProvider verwendet werden."); return ctx; } export function useDict(): Dict { return useLocaleContext().dict; } export function useLocale(): Locale { return useLocaleContext().locale; } /** t("Text mit {var}", { var: "Wert" }) für Platzhalter in Übersetzungen. */ export function useFormatMessage() { return formatMessage; }