Bankbot / frontend /src /lib /stores /languageStore.ts
mohsin-devs's picture
feat: remove Documents nav + add in-app Documentation page + BANKBOT_DOCUMENTATION.txt
88fa3b1
Raw
History Blame Contribute Delete
10.8 kB
/**
* 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" }
)
);