181 lines
10 KiB
TypeScript
181 lines
10 KiB
TypeScript
|
|
import React, { createContext, useContext, useState, useEffect } from 'react';
|
|
|
|
type Language = 'en' | 'ne';
|
|
|
|
interface LanguageContextType {
|
|
language: Language;
|
|
setLanguage: (lang: Language) => void;
|
|
t: (key: string, defaultText: string) => string;
|
|
}
|
|
|
|
const LanguageContext = createContext<LanguageContextType | undefined>(undefined);
|
|
|
|
export const LanguageProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
const [language, setLanguage] = useState<Language>(() => {
|
|
return (localStorage.getItem('rudraksha_lang') as Language) || 'en';
|
|
});
|
|
|
|
useEffect(() => {
|
|
localStorage.setItem('rudraksha_lang', language);
|
|
}, [language]);
|
|
|
|
const t = (key: string, defaultText: string) => {
|
|
if (language === 'en') return defaultText;
|
|
|
|
const dictionary: Record<string, string> = {
|
|
// Navigation & Layout
|
|
"Dashboard": "ड्यासबोर्ड",
|
|
"ACADEMIC": "शैक्षिक",
|
|
"Academic": "शैक्षिक",
|
|
"Rudra AI": "रुद्र एआई",
|
|
"Guru AI": "रुद्र एआई",
|
|
"Assignments": "गृहकार्य",
|
|
"Analytics": "तथ्याङ्क",
|
|
"Culture": "संस्कृति",
|
|
"Calendar": "पात्रो",
|
|
"Community": "समुदाय",
|
|
"Network": "सञ्जाल",
|
|
"Wellness": "कल्याण",
|
|
"FTL Rescue": "उद्धार",
|
|
"E-Library": "ई-पुस्तकालय",
|
|
"Plan": "योजना",
|
|
"Map & Provinces": "नक्सा र प्रदेश",
|
|
"Kitchen": "भान्छा",
|
|
"Health": "स्वास्थ्य",
|
|
"Safety": "सुरक्षा",
|
|
"Karma Bazaar": "कर्म बजार",
|
|
"Arcade": "आर्केड",
|
|
"Chat": "कुराकानी",
|
|
"Settings": "सेटिङ्स",
|
|
"Good Morning": "शुभ प्रभात",
|
|
"Good Afternoon": "शुभ दिन",
|
|
"Good Evening": "शुभ सन्ध्या",
|
|
"Karma": "कर्म",
|
|
"Level": "स्तर",
|
|
|
|
// AI Guru Features
|
|
"Text Chat": "पाठ कुराकानी",
|
|
"Live Voice": "प्रत्यक्ष आवाज",
|
|
"Video Insight": "भिडियो विश्लेषण",
|
|
"Visual Scan": "दृष्टि स्क्यान",
|
|
"Quiz Game": "हाजिरीजवाफ",
|
|
"Voice Interface": "आवाज इन्टरफेस",
|
|
"Conversational AI with Gemini 2.5 Native Audio.": "जेमिनी २.५ नेटिभ अडियोको साथ संवादात्मक एआई।",
|
|
"Video Analyst": "भिडियो विश्लेषक",
|
|
"Visual Scanner": "दृष्टि स्क्यानर",
|
|
"Ask Rudra AI anything...": "रुद्र एआईलाई केहि सोध्नुहोस्...",
|
|
"Ask Guru AI anything...": "रुद्र एआईलाई केहि सोध्नुहोस्...",
|
|
"Extracting Wisdom...": "ज्ञान निकाल्दै...",
|
|
"Insight Dossier": "अन्तर्दृष्टि डोसियर",
|
|
"No Intel yet": "अझै कुनै जानकारी छैन",
|
|
"Upload Lesson": "पाठ अपलोड गर्नुहोस्",
|
|
"Upload Video": "भिडियो अपलोड गर्नुहोस्",
|
|
"QUICK SCAN": "द्रुत स्क्यान",
|
|
"Ask short questions about the video...": "भिडियोको बारेमा छोटो प्रश्नहरू सोध्नुहोस्...",
|
|
"What should Guru AI focus on?": "रुद्र एआईले केमा ध्यान दिनुपर्छ?",
|
|
"Paste text to summarize...": "सारांश गर्न पाठ टाँस्नुहोस्...",
|
|
"SCAN & ANALYZE": "स्क्यान र विश्लेषण",
|
|
"SUMMARIZE INTEL": "जानकारी सारांश",
|
|
"Result Extraction": "परिणाम निष्कर्षण",
|
|
"Cam": "क्यामेरा",
|
|
"Library": "पुस्तकालय",
|
|
"Clear": "स्पष्ट",
|
|
"Clear Chat": "संवाद मेटाउनुहोस्",
|
|
"Session Feed": "वर्तमान सत्र",
|
|
"Test your heritage knowledge and earn karma points from Guru AI.": "आफ्नो सम्पदा ज्ञान परीक्षण गर्नुहोस् र रुद्र एआईबाट कर्म अंकहरू कमाउनुहोस्।",
|
|
"ENTER CHALLENGE": "चुनौतीमा प्रवेश",
|
|
"Syncing Intel...": "जानकारी सिंक गर्दै...",
|
|
"Ritual Progress": "प्रगति",
|
|
"Wisdom Note": "ज्ञान नोट",
|
|
"CONTINUE": "जारी राख्नुहोस्",
|
|
"Mission Cleared": "मिशन पुरा",
|
|
"Final Score": "अन्तिम स्कोर",
|
|
"RESTART RITUAL": "पुनः सुरु",
|
|
"CONNECT TO": "जडान गर्नुहोस्",
|
|
"Voice Persona Selection": "आवाज व्यक्तित्व चयन",
|
|
"Voice Tuning": "आवाज ट्युनिङ",
|
|
"Voice Speed": "आवाजको गति",
|
|
"Voice Pitch": "आवाजको उतारचढाव",
|
|
|
|
// Wellness & Health
|
|
"Wellness Centre": "स्वास्थ्य केन्द्र",
|
|
"Environment": "वातावरण",
|
|
"Daily Log": "दैनिक लग",
|
|
"Yoga Flow": "योग प्रवाह",
|
|
"Yoga": "योग",
|
|
"Wisdom": "ज्ञान",
|
|
"Sapana": "सपना",
|
|
"Climate Tracker": "जलवायु ट्रयाकर",
|
|
"Personal Health": "व्यक्तिगत स्वास्थ्य",
|
|
"Air Quality Index": "वायु गुणस्तर सूचकांक",
|
|
"Mask Advice": "मास्क सुझाव",
|
|
"Pollutants": "प्रदूषकहरू",
|
|
"Feels Like": "महसुस हुने",
|
|
"Humidity": "आर्द्रता",
|
|
"Wind": "हावा",
|
|
"Daily Wellness Wisdom": "दैनिक स्वास्थ्य ज्ञान",
|
|
"Hydration Track": "पानीको ट्रयाक",
|
|
"Mood Ritual": "मनस्थिति विधि",
|
|
"Recovery Sleep": "निद्रा र आराम",
|
|
"Happy": "खुसी",
|
|
"Neutral": "सामान्य",
|
|
"Stressed": "तनाव",
|
|
"Tired": "थकित",
|
|
"Yog Flow & Vitality": "योग र प्राण शक्ति",
|
|
"Benefits": "फाइदाहरू",
|
|
"Movement Guide": "अभ्यास मार्गदर्शक",
|
|
"Ayurvedic Rituals": "आयुर्वेदिक विधिहरू",
|
|
"Longevity Secrets": "दीर्घायुको रहस्य",
|
|
"Active Lifestyle": "सक्रिय जीवनशैली",
|
|
"Sattvic Diet": "सात्त्विक आहार",
|
|
"Social Connection": "सामाजिक सम्बन्ध",
|
|
"Consistent Sleep": "नियमित निद्रा",
|
|
"Community Health Secret": "सामुदायिक स्वास्थ्य रहस्य",
|
|
"Sapana Interpreter": "सपना व्याख्याता",
|
|
"Unlock the hidden messages of your subconscious through the lens of ancient Nepali folklore and modern psychology.": "प्राचीन नेपाली लोककथा र आधुनिक मनोविज्ञानको माध्यमबाट आफ्नो अवचेतन मनका लुकेका सन्देशहरू बुझ्नुहोस्।",
|
|
"Describe your dream here... (e.g. I saw a snake in a temple)": "तपाईंको सपना यहाँ वर्णन गर्नुहोस्... (जस्तै: मैले मन्दिरमा सर्प देखेँ)",
|
|
"REVEAL MEANING": "अर्थ खोल्नुहोस्",
|
|
"Traditional Folklore": "परम्परागत लोकविश्वास",
|
|
"Psychological View": "मनोवैज्ञानिक दृष्टिकोण",
|
|
|
|
// Safety & FTL
|
|
"Find The Lost": "हराएकाको खोजी",
|
|
"Report Loss": "हराएको जानकारी",
|
|
"I Found Something": "मैले केहि भेट्टाएँ",
|
|
"Report Eye-Witness": "प्रत्यक्षदर्शी जानकारी",
|
|
"Active Feed": "प्रत्यक्ष अपडेट",
|
|
"My Rescue Logs": "मेरा रिपोर्टहरू",
|
|
"Rescue Tags": "सुरक्षा ट्यागहरू",
|
|
"Community Vault": "सामुदायिक भल्ट",
|
|
"Find My Item": "मेरो सामान खोजनुहोस्",
|
|
"Nepal Police": "नेपाल प्रहरी",
|
|
"Ambulance": "एम्बुलेन्स",
|
|
"Fire Brigade": "दमकल",
|
|
"MISSION COMMAND": "मिशन कमान्ड",
|
|
|
|
// Common
|
|
"Loading...": "लोड हुँदैछ...",
|
|
"Save Changes": "परिवर्तनहरू सुरक्षित गर्नुहोस्",
|
|
"Cancel": "रद्द गर्नुहोस्",
|
|
"Close": "बन्द गर्नुहोस्",
|
|
"Edit": "सम्पादन",
|
|
"Delete": "हटाउनुहोस्",
|
|
"Search": "खोज्नुहोस्",
|
|
};
|
|
return dictionary[key] || defaultText;
|
|
};
|
|
|
|
return (
|
|
<LanguageContext.Provider value={{ language, setLanguage, t }}>
|
|
{children}
|
|
</LanguageContext.Provider>
|
|
);
|
|
};
|
|
|
|
export const useLanguage = () => {
|
|
const context = useContext(LanguageContext);
|
|
if (!context) throw new Error("useLanguage must be used within a LanguageProvider");
|
|
return context;
|
|
};
|