import { usePage } from '@inertiajs/react'; // Type definitions for our translations interface Translations { nav: { 'about-us': string; art: string; products: string; bespoke: string; faq: string; contact: string; }; footer: { desc: { title: string; company: string; address: string; phone: string; email: string; }; // Add other translation sections as needed }; } interface PageProps { locale: string; translations: Translations; [key: string]: any; } /** * Translation function */ export function t( translations: any, key: string, replacements: Record = {}, ): string { if (!translations) { console.warn('No translations provided'); return key; } const keys = key.split('.'); let value: any = translations; for (const k of keys) { if (value && typeof value === 'object' && k in value) { value = value[k]; } else { console.warn(`Translation key not found: ${key}`); return key; } } if (typeof value !== 'string') { return key; } let text = value; Object.entries(replacements).forEach(([k, v]) => { text = text.replace(new RegExp(`:${k}`, 'g'), v); }); return text; } /** * React hook for translations */ export function useTranslations() { const { translations } = usePage().props; const translate = ( key: string, replacements: Record = {}, ) => { return t(translations, key, replacements); }; return { t: translate, translations }; } /** * Hook to get current locale */ export function useLocale() { const { locale } = usePage().props; return locale; }