/** * Language store — EN / HI / MR with persistence. */ import { create } from "zustand"; import { persist } from "zustand/middleware"; export type Language = "en" | "hi" | "mr"; export const LANGUAGES: Record = { en: { label: "English", native: "English", flag: "🇬🇧" }, hi: { label: "Hindi", native: "हिंदी", flag: "🇮🇳" }, mr: { label: "Marathi", native: "मराठी", flag: "🇮🇳" }, }; // ─── UI translations ────────────────────────────────────────────────────────── export const T: Record> = { en: { // Nav overview: "Overview", transactions: "Transactions", payments: "Payments", analytics: "Analytics", simulator: "Simulator", loans: "Loans", goals: "Goals", ai_assistant: "AI Assistant", security: "Security", system_status: "System Status", settings: "Settings", docs: "Documentation", sign_out: "Sign Out", ai_shield: "AI Shield Active", all_normal: "All systems normal", // Dashboard good_morning: "Good morning", good_afternoon: "Good afternoon", good_evening: "Good evening", financial_overview: "Here's your financial overview for today.", backend_offline: "Backend offline", showing_cached: "showing cached data.", retry: "Retry", ai_daily_briefing: "AI Daily Briefing —", health_score: "Health score:", no_fraud_alerts: "No fraud alerts", total_balance: "Total Balance", monthly_income: "Monthly Income", monthly_spend: "Monthly Spend", savings_rate: "Savings Rate", vs_target: "vs target", vs_last_month: "vs last month", cash_flow: "Cash Flow", income_vs_expenses: "Income vs Expenses vs Savings", income: "Income", expenses: "Expenses", savings: "Savings", spending_breakdown: "Spending Breakdown", this_month_by_category: "This month by category", recent_transactions: "Recent Transactions", latest_activity: "Your latest activity", view_all: "View all", fraud_shield_active: "AI Fraud Shield active", alerts_require_attention: "alert(s) require your attention.", all_monitored: "All transactions monitored in real-time. No suspicious activity detected.", review: "Review", // Documents upload_doc: "Upload Document", doc_analyzer: "Document Analyzer", ask_doc: "Ask about this document...", analyzing: "Analyzing...", no_docs: "No documents yet", drop_here: "Drop files here or click to upload", supported: "PDF, DOCX, TXT, CSV — max 10 MB", // Chat chat_placeholder: "Ask about your finances...", // Settings theme_dark: "Dark Mode", theme_light: "Light Mode", language: "Language", save: "Save", cancel: "Cancel", fraud_alerts: "Fraud Alerts", }, hi: { // Nav overview: "अवलोकन", transactions: "लेनदेन", payments: "भुगतान", analytics: "विश्लेषण", simulator: "सिमुलेटर", loans: "ऋण", goals: "लक्ष्य", ai_assistant: "AI सहायक", security: "सुरक्षा", system_status: "सिस्टम स्थिति", settings: "सेटिंग्स", docs: "दस्तावेज़ीकरण", sign_out: "साइन आउट", ai_shield: "AI शील्ड सक्रिय", all_normal: "सभी सिस्टम सामान्य", // Dashboard good_morning: "शुभ प्रभात", good_afternoon: "शुभ दोपहर", good_evening: "शुभ संध्या", financial_overview: "यहाँ आज के लिए आपका वित्तीय अवलोकन है।", backend_offline: "बैकएंड ऑफ़लाइन", showing_cached: "कैश डेटा दिखा रहा है।", retry: "पुनः प्रयास करें", ai_daily_briefing: "AI दैनिक ब्रीफिंग —", health_score: "स्वास्थ्य स्कोर:", no_fraud_alerts: "कोई धोखाधड़ी अलर्ट नहीं", total_balance: "कुल शेष", monthly_income: "मासिक आय", monthly_spend: "मासिक खर्च", savings_rate: "बचत दर", vs_target: "लक्ष्य बनाम", vs_last_month: "पिछले महीने बनाम", cash_flow: "नकद प्रवाह", income_vs_expenses: "आय बनाम खर्च बनाम बचत", income: "आय", expenses: "खर्च", savings: "बचत", spending_breakdown: "खर्च विवरण", this_month_by_category: "इस महीने श्रेणी के अनुसार", recent_transactions: "हाल के लेनदेन", latest_activity: "आपकी नवीनतम गतिविधि", view_all: "सभी देखें", fraud_shield_active: "AI धोखाधड़ी शील्ड सक्रिय", alerts_require_attention: "अलर्ट को आपके ध्यान की आवश्यकता है।", all_monitored: "सभी लेनदेन वास्तविक समय में मॉनिटर किए जाते हैं। कोई संदिग्ध गतिविधि नहीं मिली।", review: "समीक्षा करें", // Documents upload_doc: "दस्तावेज़ अपलोड करें", doc_analyzer: "दस्तावेज़ विश्लेषक", ask_doc: "इस दस्तावेज़ के बारे में पूछें...", analyzing: "विश्लेषण हो रहा है...", no_docs: "अभी तक कोई दस्तावेज़ नहीं", drop_here: "फ़ाइलें यहाँ छोड़ें या अपलोड करने के लिए क्लिक करें", supported: "PDF, DOCX, TXT, CSV — अधिकतम 10 MB", // Chat chat_placeholder: "अपने वित्त के बारे में पूछें...", // Settings theme_dark: "डार्क मोड", theme_light: "लाइट मोड", language: "भाषा", save: "सहेजें", cancel: "रद्द करें", fraud_alerts: "धोखाधड़ी अलर्ट", }, mr: { // Nav overview: "आढावा", transactions: "व्यवहार", payments: "देयके", analytics: "विश्लेषण", simulator: "सिम्युलेटर", loans: "कर्ज", goals: "उद्दिष्टे", ai_assistant: "AI सहाय्यक", security: "सुरक्षा", system_status: "सिस्टम स्थिती", settings: "सेटिंग्ज", docs: "दस्तऐवजीकरण", sign_out: "साइन आउट", ai_shield: "AI शील्ड सक्रिय", all_normal: "सर्व प्रणाली सामान्य", // Dashboard good_morning: "शुभ प्रभात", good_afternoon: "शुभ दुपार", good_evening: "शुभ संध्याकाळ", financial_overview: "येथे आजसाठी तुमचा आर्थिक आढावा आहे.", backend_offline: "बॅकएंड ऑफलाइन", showing_cached: "कॅश केलेला डेटा दर्शवित आहे.", retry: "पुन्हा प्रयत्न करा", ai_daily_briefing: "AI दैनिक ब्रीफिंग —", health_score: "आरोग्य स्कोअर:", no_fraud_alerts: "कोणतेही फसवणूक अलर्ट नाहीत", total_balance: "एकूण शिल्लक", monthly_income: "मासिक उत्पन्न", monthly_spend: "मासिक खर्च", savings_rate: "बचत दर", vs_target: "लक्ष्याविरुद्ध", vs_last_month: "गेल्या महिन्याच्या तुलनेत", cash_flow: "रोख प्रवाह", income_vs_expenses: "उत्पन्न विरुद्ध खर्च विरुद्ध बचत", income: "उत्पन्न", expenses: "खर्च", savings: "बचत", spending_breakdown: "खर्च विभागणी", this_month_by_category: "या महिन्यात श्रेणीनुसार", recent_transactions: "अलीकडील व्यवहार", latest_activity: "तुमची नवीनतम क्रियाकलाप", view_all: "सर्व पहा", fraud_shield_active: "AI फसवणूक शील्ड सक्रिय", alerts_require_attention: "अलर्ट्सकडे तुमचे लक्ष वेधणे आवश्यक आहे.", all_monitored: "सर्व व्यवहार रिअल-टाइममध्ये मॉनिटर केले जातात. कोणतीही संशयास्पद क्रिया आढळली नाही.", review: "पुनरावलोकन करा", // Documents upload_doc: "कागदपत्र अपलोड करा", doc_analyzer: "कागदपत्र विश्लेषक", ask_doc: "या कागदपत्राबद्दल विचारा...", analyzing: "विश्लेषण होत आहे...", no_docs: "अद्याप कोणतेही कागदपत्र नाही", drop_here: "फाइल्स येथे टाका किंवा अपलोड करण्यासाठी क्लिक करा", supported: "PDF, DOCX, TXT, CSV — कमाल 10 MB", // Chat chat_placeholder: "तुमच्या वित्ताबद्दल विचारा...", // Settings theme_dark: "डार्क मोड", theme_light: "लाइट मोड", language: "भाषा", save: "जतन करा", cancel: "रद्द करा", fraud_alerts: "फसवणूक अलर्ट", }, }; interface LanguageState { language: Language; setLanguage: (l: Language) => void; t: (key: string) => string; } export const useLanguageStore = create()( persist( (set, get) => ({ language: "en", setLanguage: (l) => set({ language: l }), t: (key) => T[get().language][key] ?? T["en"][key] ?? key, }), { name: "bb_language" } ) );