Spaces:
Running
Running
| /** | |
| * 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<Language, { label: string; native: string; flag: string }> = { | |
| en: { label: "English", native: "English", flag: "🇬🇧" }, | |
| hi: { label: "Hindi", native: "हिंदी", flag: "🇮🇳" }, | |
| mr: { label: "Marathi", native: "मराठी", flag: "🇮🇳" }, | |
| }; | |
| // ─── UI translations ────────────────────────────────────────────────────────── | |
| export const T: Record<Language, Record<string, string>> = { | |
| 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<LanguageState>()( | |
| persist( | |
| (set, get) => ({ | |
| language: "en", | |
| setLanguage: (l) => set({ language: l }), | |
| t: (key) => T[get().language][key] ?? T["en"][key] ?? key, | |
| }), | |
| { name: "bb_language" } | |
| ) | |
| ); | |