diff --git a/admin/public/offline.html b/admin/public/offline.html new file mode 100644 index 00000000..f8f52de1 --- /dev/null +++ b/admin/public/offline.html @@ -0,0 +1,41 @@ + + + + + Offline + + + + +
+

You’re Offline

+

+ Please check your internet connection.
+ The app will work again once you're online. +

+
+ + diff --git a/admin/public/service-worker.js b/admin/public/service-worker.js new file mode 100644 index 00000000..02d8a7de --- /dev/null +++ b/admin/public/service-worker.js @@ -0,0 +1,44 @@ +const CACHE_NAME = "saralseva-cache-v1"; + +const ASSETS_TO_CACHE = [ + "/", + "/index.html", + "/offline.html", +]; + +// Install event – cache essential files +self.addEventListener("install", (event) => { + event.waitUntil( + caches.open(CACHE_NAME).then((cache) => { + return cache.addAll(ASSETS_TO_CACHE); + }) + ); + self.skipWaiting(); +}); + +// Activate event – clean old caches +self.addEventListener("activate", (event) => { + event.waitUntil( + caches.keys().then((cacheNames) => + Promise.all( + cacheNames.map((cache) => { + if (cache !== CACHE_NAME) { + return caches.delete(cache); + } + }) + ) + ) + ); + self.clients.claim(); +}); + +// Fetch event – serve cached content when offline +self.addEventListener("fetch", (event) => { + event.respondWith( + fetch(event.request).catch(() => + caches.match(event.request).then((response) => { + return response || caches.match("/offline.html"); + }) + ) + ); +}); diff --git a/admin/src/main.jsx b/admin/src/main.jsx index b1b8067b..f7616ff0 100644 --- a/admin/src/main.jsx +++ b/admin/src/main.jsx @@ -1,4 +1,5 @@ import React from "react"; +import ReactDOM from "react-dom/client"; import { HelmetProvider } from "react-helmet-async"; import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; @@ -6,7 +7,6 @@ import App from "./App.jsx"; import "./index.css"; import { AdminProvider } from "./components/context/adminContext.jsx"; - createRoot(document.getElementById("root")).render( @@ -16,3 +16,17 @@ createRoot(document.getElementById("root")).render( ); + +if ("serviceWorker" in navigator) { + window.addEventListener("load", () => { + navigator.serviceWorker + .register("/service-worker.js") + .then((registration) => { + console.log("Service Worker registered:", registration); + }) + .catch((error) => { + console.error("Service Worker registration failed:", error); + }); + }); +} + diff --git a/employee/public/offline.html b/employee/public/offline.html new file mode 100644 index 00000000..f8f52de1 --- /dev/null +++ b/employee/public/offline.html @@ -0,0 +1,41 @@ + + + + + Offline + + + + +
+

You’re Offline

+

+ Please check your internet connection.
+ The app will work again once you're online. +

+
+ + diff --git a/employee/public/service-worker.js b/employee/public/service-worker.js new file mode 100644 index 00000000..02d8a7de --- /dev/null +++ b/employee/public/service-worker.js @@ -0,0 +1,44 @@ +const CACHE_NAME = "saralseva-cache-v1"; + +const ASSETS_TO_CACHE = [ + "/", + "/index.html", + "/offline.html", +]; + +// Install event – cache essential files +self.addEventListener("install", (event) => { + event.waitUntil( + caches.open(CACHE_NAME).then((cache) => { + return cache.addAll(ASSETS_TO_CACHE); + }) + ); + self.skipWaiting(); +}); + +// Activate event – clean old caches +self.addEventListener("activate", (event) => { + event.waitUntil( + caches.keys().then((cacheNames) => + Promise.all( + cacheNames.map((cache) => { + if (cache !== CACHE_NAME) { + return caches.delete(cache); + } + }) + ) + ) + ); + self.clients.claim(); +}); + +// Fetch event – serve cached content when offline +self.addEventListener("fetch", (event) => { + event.respondWith( + fetch(event.request).catch(() => + caches.match(event.request).then((response) => { + return response || caches.match("/offline.html"); + }) + ) + ); +}); diff --git a/employee/src/main.jsx b/employee/src/main.jsx index 74c1a1df..ffe62be7 100644 --- a/employee/src/main.jsx +++ b/employee/src/main.jsx @@ -1,4 +1,5 @@ import React from "react"; +import ReactDOM from "react-dom/client"; import { HelmetProvider } from "react-helmet-async"; import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; @@ -15,3 +16,16 @@ createRoot(document.getElementById("root")).render( ); + +if ("serviceWorker" in navigator) { + window.addEventListener("load", () => { + navigator.serviceWorker + .register("/service-worker.js") + .then((registration) => { + console.log("Service Worker registered:", registration); + }) + .catch((error) => { + console.error("Service Worker registration failed:", error); + }); + }); +} diff --git a/user/i18n.js b/user/i18n.js index 25e44a9a..fe0de6d1 100644 --- a/user/i18n.js +++ b/user/i18n.js @@ -1,16 +1,23 @@ import i18n from "i18next"; import { initReactI18next } from "react-i18next"; -import en from "./locales/en.json"; -import hi from "./locales/hi.json"; + +import en from "../locales/en.json"; +import hi from "../locales/hi.json"; +import mr from "../locales/mr.json"; +import gu from "../locales/gu.json"; +import kn from "../locales/kn.json"; i18n.use(initReactI18next).init({ resources: { en: { translation: en }, hi: { translation: hi }, + mr: { translation: mr }, + gu: { translation: gu }, + kn: { translation: kn } }, - lng: localStorage.getItem("lang") || "en", + lng: "en", fallbackLng: "en", - interpolation: { escapeValue: false }, + interpolation: { escapeValue: false } }); export default i18n; diff --git a/user/locales/en.json b/user/locales/en.json index 9feec812..bfcb663a 100644 --- a/user/locales/en.json +++ b/user/locales/en.json @@ -1,10 +1,21 @@ { - "home": { - "welcome": "Welcome to SaralSeva", - "description": "Your one-stop solution for digital services.", + "navigation": { + "home": "Home", + "about": "About", + "schemes": "Schemes", + "askAI": "Ask AI", + "successStories": "Success Stories", + "dashboard": "Dashboard", + "grievances": "Grievances", + "contact": "Contact", "login": "Login", + "register": "Register", "logout": "Logout", - "language": "Language", - "contrast": "High Contrast Mode" + "myAccount": "My Account", + "profile": "Profile", + "schemeApplied": "Schemes Applied", + "grievancesApplied": "Grievances Applied", + "status": "Status", + "switchTheme": "Switch Theme" } } diff --git a/user/locales/gu.json b/user/locales/gu.json new file mode 100644 index 00000000..f6ee8643 --- /dev/null +++ b/user/locales/gu.json @@ -0,0 +1,21 @@ +{ + "navigation": { + "home": "મુખ્ય પેજ", + "about": "અમારા વિશે", + "schemes": "યોજનાઓ", + "askAI": "એઆઈને પૂછો", + "successStories": "સફળતાની વાર્તાઓ", + "dashboard": "ડેશબોર્ડ", + "grievances": "ફરિયાદો", + "contact": "સંપર્ક કરો", + "login": "લોગિન", + "register": "રજીસ્ટર", + "logout": "લોગઆઉટ", + "myAccount": "મારું ખાતું", + "profile": "પ્રોફાઇલ", + "schemeApplied": "લાગુ કરેલી યોજનાઓ", + "grievancesApplied": "નોંધાયેલ ફરિયાદો", + "status": "સ્થિતિ", + "switchTheme": "થીમ બદલો" + } +} diff --git a/user/locales/hi.json b/user/locales/hi.json index eb499119..6821d419 100644 --- a/user/locales/hi.json +++ b/user/locales/hi.json @@ -1,10 +1,21 @@ { - "home": { - "welcome": "सरलसेवा में आपका स्वागत है", - "description": "डिजिटल सेवाओं के लिए आपका एकमात्र समाधान।", + "navigation": { + "home": "होम", + "about": "हमारे बारे में", + "schemes": "योजनाएँ", + "askAI": "एआई से पूछें", + "successStories": "सफलता की कहानियाँ", + "dashboard": "डैशबोर्ड", + "grievances": "शिकायतें", + "contact": "संपर्क करें", "login": "लॉगिन", + "register": "रजिस्टर", "logout": "लॉगआउट", - "language": "भाषा", - "contrast": "हाई कॉन्ट्रास्ट मोड" + "myAccount": "मेरा खाता", + "profile": "प्रोफ़ाइल", + "schemeApplied": "लागू की गई योजनाएँ", + "grievancesApplied": "दर्ज की गई शिकायतें", + "status": "स्थिति", + "switchTheme": "थीम बदलें" } } diff --git a/user/locales/kn.json b/user/locales/kn.json new file mode 100644 index 00000000..33c160a2 --- /dev/null +++ b/user/locales/kn.json @@ -0,0 +1,21 @@ +{ + "navigation": { + "home": "ಮುಖಪುಟ", + "about": "ನಮ್ಮ ಬಗ್ಗೆ", + "schemes": "ಯೋಜನೆಗಳು", + "askAI": "ಎಐಗೆ ಕೇಳಿ", + "successStories": "ಯಶಸ್ಸಿನ ಕಥೆಗಳು", + "dashboard": "ಡ್ಯಾಶ್‌ಬೋರ್ಡ್", + "grievances": "ದೂರುಗಳು", + "contact": "ಸಂಪರ್ಕಿಸಿ", + "login": "ಲಾಗಿನ್", + "register": "ನೋಂದಣಿ", + "logout": "ಲಾಗ್‌ಔಟ್", + "myAccount": "ನನ್ನ ಖಾತೆ", + "profile": "ಪ್ರೊಫೈಲ್", + "schemeApplied": "ಅರ್ಜಿಸಿದ ಯೋಜನೆಗಳು", + "grievancesApplied": "ಅರ್ಜಿಸಿದ ದೂರುಗಳು", + "status": "ಸ್ಥಿತಿ", + "switchTheme": "ಥೀಮ್ ಬದಲಿಸಿ" + } +} diff --git a/user/locales/mr.json b/user/locales/mr.json new file mode 100644 index 00000000..e595bc82 --- /dev/null +++ b/user/locales/mr.json @@ -0,0 +1,21 @@ +{ + "navigation": { + "home": "मुख्यपृष्ठ", + "about": "आमच्याबद्दल", + "schemes": "योजना", + "askAI": "एआयला विचारा", + "successStories": "यशोगाथा", + "dashboard": "डॅशबोर्ड", + "grievances": "तक्रारी", + "contact": "संपर्क", + "login": "लॉगिन", + "register": "नोंदणी करा", + "logout": "लॉगआउट", + "myAccount": "माझे खाते", + "profile": "प्रोफाइल", + "schemeApplied": "अर्ज केलेल्या योजना", + "grievancesApplied": "नोंदवलेल्या तक्रारी", + "status": "स्थिती", + "switchTheme": "थीम बदला" + } +} diff --git a/user/public/offline.html b/user/public/offline.html new file mode 100644 index 00000000..f8f52de1 --- /dev/null +++ b/user/public/offline.html @@ -0,0 +1,41 @@ + + + + + Offline + + + + +
+

You’re Offline

+

+ Please check your internet connection.
+ The app will work again once you're online. +

+
+ + diff --git a/user/public/service-worker.js b/user/public/service-worker.js new file mode 100644 index 00000000..02d8a7de --- /dev/null +++ b/user/public/service-worker.js @@ -0,0 +1,44 @@ +const CACHE_NAME = "saralseva-cache-v1"; + +const ASSETS_TO_CACHE = [ + "/", + "/index.html", + "/offline.html", +]; + +// Install event – cache essential files +self.addEventListener("install", (event) => { + event.waitUntil( + caches.open(CACHE_NAME).then((cache) => { + return cache.addAll(ASSETS_TO_CACHE); + }) + ); + self.skipWaiting(); +}); + +// Activate event – clean old caches +self.addEventListener("activate", (event) => { + event.waitUntil( + caches.keys().then((cacheNames) => + Promise.all( + cacheNames.map((cache) => { + if (cache !== CACHE_NAME) { + return caches.delete(cache); + } + }) + ) + ) + ); + self.clients.claim(); +}); + +// Fetch event – serve cached content when offline +self.addEventListener("fetch", (event) => { + event.respondWith( + fetch(event.request).catch(() => + caches.match(event.request).then((response) => { + return response || caches.match("/offline.html"); + }) + ) + ); +}); diff --git a/user/src/i18n/locales/gu.json b/user/src/i18n/locales/gu.json new file mode 100644 index 00000000..9d84b561 --- /dev/null +++ b/user/src/i18n/locales/gu.json @@ -0,0 +1,197 @@ +{ + "navigation": { + "home": "હોમ", + "about": "અમારા વિશે", + "schemes": "યોજનાઓ", + "askAI": "એઆઈને પૂછો", + "successStories": "સફળતાની કહાનીઓ", + "dashboard": "ડેશબોર્ડ", + "grievances": "ફરિયાદો", + "contact": "સંપર્ક કરો", + "profile": "પ્રોફાઇલ", + "schemeApplied": "લાગુ કરેલી યોજના", + "status": "સ્થિતિ", + "logout": "લોગઆઉટ", + "login": "લોગિન", + "register": "નોંધણી કરો", + "myAccount": "મારું ખાતું", + "switchTheme": "થીમ બદલો" + }, + "auth": { + "loginTitle": "લોગિન", + "registerTitle": "નોંધણી કરો", + "email": "ઇમેલ", + "password": "પાસવર્ડ", + "confirmPassword": "પાસવર્ડની પુષ્ટિ કરો", + "submitBtn": "સબમિટ કરો", + "loginBtn": "લોગિન કરો", + "registerBtn": "નોંધણી કરો", + "forgotPassword": "પાસવર્ડ ભૂલ્યા?", + "noAccount": "ખાતું નથી?", + "haveAccount": "પહેલેથી ખાતું છે?", + "verifyOtp": "OTP ચકાસો", + "otpSent": "OTP તમારા ઇમેલ પર મોકલવામાં આવ્યો છે" + }, + "schemes": { + "allSchemes": "બધી યોજનાઓ", + "schemeDetails": "યોજનાની વિગતો", + "eligibility": "પાત્રતા માપદંડ", + "benefits": "લાભ", + "applyNow": "હવે અરજી કરો", + "requirements": "આવશ્યકતાઓ", + "appliedSchemes": "લાગુ કરેલી યોજનાઓ", + "noSchemes": "કોઈ યોજના ઉપલબ્ધ નથી", + "searchSchemes": "યોજનાઓ શોધો" + }, + "dashboard": { + "title": "ડેશબોર્ડ", + "myApplications": "મારી અરજીઓ", + "appliedSchemes": "લાગુ યોજનાઓ", + "pendingApplications": "લંબિત અરજીઓ", + "approvedSchemes": "મંજૂર યોજનાઓ", + "rejectedSchemes": "નકારી કાઢેલી યોજનાઓ", + "viewDetails": "વિગતો જુઓ" + }, + "grievances": { + "title": "ફરિયાદો", + "registerGrievance": "ફરિયાદ નોંધાવો", + "myGrievances": "મારી ફરિયાદો", + "grievanceDescription": "ફરિયાદનું વર્ણન", + "attachments": "જોડાણ ફાઈલો", + "status": "સ્થિતિ", + "resolution": "સમાધાન", + "submit": "સબમિટ કરો", + "pending": "લંબિત", + "resolved": "સમાધાન થયું", + "rejected": "નકારી કાઢ્યું" + }, + "profile": { + "title": "પ્રોફાઇલ", + "editProfile": "પ્રોફાઇલ સંપાદિત કરો", + "personalInfo": "વ્યક્તિગત માહિતી", + "contactInfo": "સંપર્ક માહિતી", + "address": "સરનામું", + "phone": "ફોન", + "firstName": "પ્રથમ નામ", + "lastName": "અંતિમ નામ", + "dateOfBirth": "જન્મ તારીખ", + "gender": "લિંગ", + "state": "રાજ્ય", + "city": "શહેર", + "pincode": "પિનકોડ", + "save": "સાચવો", + "cancel": "રદ કરો", + "edit": "સંપાદિત કરો", + "delete": "કાઢી નાખો" + }, + "footer": { + "quickLinks": "ઝડપી લિંક્સ", + "resources": "સંસાધનો", + "legal": "કાનૂની", + "contact": "સંપર્ક કરો", + "about": "અમારા વિશે", + "privacy": "ગોપનીયતા નીતિ", + "terms": "શરતો અને નિયમો", + "copyright": "© 2024 SaralSeva. સર્વ અધિકારો સુરક્ષિત.", + "newsletter": { + "title": "અપડેટ રહો", + "subtitle": "વિશેષ ઓફરો અને અપડેટ માટે અમારા ન્યૂઝલેટર માટે સબસ્ક્રાઇબ કરો", + "emailPlaceholder": "તમારો ઇમેલ સરનામું દાખલ કરો", + "subscribeBtn": "સબસ્ક્રાઇબ કરો", + "noThanksBtn": "નહીં, આભાર", + "termsPrefix": "સબસ્ક્રાઇબ કરીને, તમે અમારી", + "termsLink": "સેવા શરતો", + "privacyLink": "ગોપનીયતા નીતિ", + "successMessage": "સબસ્ક્રાઇબ કરવા બદલ આભાર!", + "errorMessage": "સબસ્ક્રિપ્શન નિષ્ફળ. કૃપા કરીને ફરી પ્રયાસ કરો.", + "invalidEmail": "કૃપા કરીને માન્ય ઇમેલ સરનામું દાખલ કરો", + "alreadySubscribed": "આ ઇમેલ પહેલેથી જ સબસ્ક્રાઇબ છે" + } + }, + "common": { + "loading": "લોડ થઈ રહ્યું છે...", + "error": "ભૂલ", + "success": "સફળતા", + "warning": "ચેતવણી", + "yes": "હા", + "no": "ના", + "ok": "ઠીક છે", + "close": "બંધ કરો", + "back": "પાછળ", + "next": "આગળ", + "previous": "પાછળનું", + "search": "શોધો", + "filter": "ફિલ્ટર", + "sort": "ક્રમમાં ગોઠવો", + "date": "તારીખ", + "status": "સ્થિતિ", + "action": "ક્રિયા", + "download": "ડાઉનલોડ", + "upload": "અપલોડ", + "delete": "કાઢી નાખો", + "edit": "સંપાદિત કરો", + "view": "જુઓ", + "noData": "ડેટા ઉપલબ્ધ નથી", + "language": "ભાષા", + "selectLanguage": "ભાષા પસંદ કરો", + "english": "English", + "hindi": "હિન્દી" + }, + "messages": { + "welcome": "SaralSeva માં આપનું સ્વાગત છે", + "loginSuccess": "લોગિન સફળ", + "logoutSuccess": "લોગઆઉટ સફળ", + "registerSuccess": "નોંધણી સફળ", + "updateSuccess": "સફળતાપૂર્વક અપડેટ થયું", + "deleteSuccess": "સફળતાપૂર્વક કાઢી નાખ્યું", + "errorOccurred": "એક ભૂલ આવી", + "pleaseLogin": "કૃપા કરીને આગળ વધવા માટે લોગિન કરો", + "invalidEmail": "અમાન્ય ઇમેલ સરનામું", + "passwordMismatch": "પાસવર્ડ મેળ ખાતા નથી", + "requiredField": "આ ફીલ્ડ જરૂરી છે" + }, + "aiRecommender": { + "title": "SaralSeva ને પૂછો", + "subtitle": "એઆઈ આધારિત યોજના ભલામણકર્તા", + "aiBeta": "એઆઈ બીટા", + "aiAssistant": "એઆઈ સહાયક", + "greeting": "નમસ્તે! હું SaralSeva એઆઈ સહાયક છું.", + "tellAbout": "તમારા વિશે જણાવો — ઉંમર, વ્યવસાય, સ્થાન અથવા જરૂરિયાત", + "typePlaceholder": "તમારો પ્રશ્ન અહીં લખો...", + "send": "મોકલો", + "reset": "રીસેટ કરો", + "suggestion1": "હું મહારાષ્ટ્રથી 45 વર્ષનો ખેડૂત છું", + "suggestion2": "શિક્ષણ સ્કોલરશીપ શોધી રહ્યો છું", + "suggestion3": "સ્ટાર્ટઅપ માટે વ્યવસાય લોન જોઈએ છે", + "suggestion4": "હું નિવૃત્ત નાગરિક છું", + "matchPercentage": "મેચ", + "category": "શ્રેણી", + "applyNow": "હવે અરજી કરો", + "explanation": "આ યોજના કેમ મેળ ખાતી છે", + "proTips": "વધુ સારી ભલામણ માટે સૂચનો:", + "tip1": "ઉંમર, વ્યવસાય અને સ્થાન જણાવો", + "tip2": "જરૂરી સહાય જણાવો", + "tip3": "આવક વિગતો ઉમેરો", + "tip4": "વિગતવાર માહિતી આપો", + "privacyNotice": "આ એઆઈ સહાયક સ્થાનિક NLP પ્રોસેસિંગનો ઉપયોગ કરે છે.", + "exampleQueries": "ઉદાહરણ પ્રશ્નો", + "clickToTry": "પ્રયત્ન કરવા માટે ક્લિક કરો", + "example1": "મહારાષ્ટ્રનો 45 વર્ષનો ખેડૂત", + "example2": "કોલેજમાં ભણતી દીકરી માટે સ્કોલરશીપ", + "example3": "મહિલા ઉદ્યોગસાહસિક વ્યવસાય શરૂ કરવા માંગે છે", + "example4": "60 વર્ષથી ઉપરના નાગરિકો માટે પેન્શન યોજના", + "example5": "કૌશલ્ય વિકાસ તાલીમ જોઈએ છે", + "example6": "નિમ્ન આવક ધરાવતા પરિવાર માટે આરોગ્ય વિમા", + "foundSchemes": "તમારી પ્રોફાઇલ સાથે મેળ ખાતી {count} યોજનાઓ મળી:", + "foundScheme": "તમારી પ્રોફાઇલ સાથે મેળ ખાતી {count} યોજના મળી:", + "noMatchingSchemes": "કોઈ મેળ ખાતી યોજના મળી નથી", + "noDataAvailable": "ડેટા ઉપલબ્ધ નથી", + "tryRephrasing": "વધુ સ્પષ્ટ માહિતી સાથે ફરી પ્રયાસ કરો", + "moreInfoSuggestion1": "યોજનાની વધુ માહિતી બતાવો", + "moreInfoSuggestion2": "પાત્રતા વિશે જણાવો", + "moreInfoSuggestion3": "હું કેવી રીતે અરજી કરું?", + "fallbackSuggestion1": "ખેડૂતો માટે સબસિડી", + "fallbackSuggestion2": "વિદ્યાર્થીઓ માટે સ્કોલરશીપ", + "fallbackSuggestion3": "વ્યવસાય લોન" + } +} diff --git a/user/src/i18n/locales/kn.json b/user/src/i18n/locales/kn.json new file mode 100644 index 00000000..b54f0279 --- /dev/null +++ b/user/src/i18n/locales/kn.json @@ -0,0 +1,197 @@ +{ + "navigation": { + "home": "ಮುಖಪುಟ", + "about": "ನಮ್ಮ ಬಗ್ಗೆ", + "schemes": "ಯೋಜನೆಗಳು", + "askAI": "ಎಐಗೆ ಕೇಳಿ", + "successStories": "ಯಶಸ್ಸಿನ ಕಥೆಗಳು", + "dashboard": "ಡ್ಯಾಶ್‌ಬೋರ್ಡ್", + "grievances": "ದೂರುಗಳು", + "contact": "ಸಂಪರ್ಕಿಸಿ", + "profile": "ಪ್ರೊಫೈಲ್", + "schemeApplied": "ಅರ್ಜಿಸಿದ ಯೋಜನೆ", + "status": "ಸ್ಥಿತಿ", + "logout": "ಲಾಗ್‌ಔಟ್", + "login": "ಲಾಗಿನ್", + "register": "ನೋಂದಣಿ ಮಾಡಿ", + "myAccount": "ನನ್ನ ಖಾತೆ", + "switchTheme": "ಥೀಮ್ ಬದಲಿಸಿ" + }, + "auth": { + "loginTitle": "ಲಾಗಿನ್", + "registerTitle": "ನೋಂದಣಿ ಮಾಡಿ", + "email": "ಇಮೇಲ್", + "password": "ಪಾಸ್‌ವರ್ಡ್", + "confirmPassword": "ಪಾಸ್‌ವರ್ಡ್ ದೃಢೀಕರಿಸಿ", + "submitBtn": "ಸಲ್ಲಿಸಿ", + "loginBtn": "ಲಾಗಿನ್ ಮಾಡಿ", + "registerBtn": "ನೋಂದಣಿ ಮಾಡಿ", + "forgotPassword": "ಪಾಸ್‌ವರ್ಡ್ ಮರೆತಿರಾ?", + "noAccount": "ಖಾತೆ ಇಲ್ಲವೇ?", + "haveAccount": "ಈಗಾಗಲೇ ಖಾತೆ ಇದೆಯೇ?", + "verifyOtp": "OTP ಪರಿಶೀಲಿಸಿ", + "otpSent": "OTP ನಿಮ್ಮ ಇಮೇಲ್‌ಗೆ ಕಳುಹಿಸಲಾಗಿದೆ" + }, + "schemes": { + "allSchemes": "ಎಲ್ಲಾ ಯೋಜನೆಗಳು", + "schemeDetails": "ಯೋಜನೆ ವಿವರಗಳು", + "eligibility": "ಅರ್ಹತಾ ಮಾನದಂಡ", + "benefits": "ಲಾಭಗಳು", + "applyNow": "ಈಗ ಅರ್ಜಿ ಸಲ್ಲಿಸಿ", + "requirements": "ಅವಶ್ಯಕತೆಗಳು", + "appliedSchemes": "ಅರ್ಜಿಸಿದ ಯೋಜನೆಗಳು", + "noSchemes": "ಯಾವುದೇ ಯೋಜನೆ ಲಭ್ಯವಿಲ್ಲ", + "searchSchemes": "ಯೋಜನೆಗಳನ್ನು ಹುಡುಕಿ" + }, + "dashboard": { + "title": "ಡ್ಯಾಶ್‌ಬೋರ್ಡ್", + "myApplications": "ನನ್ನ ಅರ್ಜಿಗಳು", + "appliedSchemes": "ಅರ್ಜಿಸಿದ ಯೋಜನೆಗಳು", + "pendingApplications": "ಬಾಕಿ ಇರುವ ಅರ್ಜಿಗಳು", + "approvedSchemes": "ಅನುಮೋದಿತ ಯೋಜನೆಗಳು", + "rejectedSchemes": "ನಿರಾಕರಿಸಿದ ಯೋಜನೆಗಳು", + "viewDetails": "ವಿವರಗಳನ್ನು ನೋಡಿ" + }, + "grievances": { + "title": "ದೂರುಗಳು", + "registerGrievance": "ದೂರು ದಾಖಲಿಸಿ", + "myGrievances": "ನನ್ನ ದೂರುಗಳು", + "grievanceDescription": "ದೂರು ವಿವರಣೆ", + "attachments": "ಲಗತ್ತಿಸಿದ ಕಡತಗಳು", + "status": "ಸ್ಥಿತಿ", + "resolution": "ಪರಿಹಾರ", + "submit": "ಸಲ್ಲಿಸಿ", + "pending": "ಬಾಕಿ", + "resolved": "ಪರಿಹರಿಸಲಾಗಿದೆ", + "rejected": "ನಿರಾಕರಿಸಲಾಗಿದೆ" + }, + "profile": { + "title": "ಪ್ರೊಫೈಲ್", + "editProfile": "ಪ್ರೊಫೈಲ್ ಸಂಪಾದಿಸಿ", + "personalInfo": "ವೈಯಕ್ತಿಕ ಮಾಹಿತಿ", + "contactInfo": "ಸಂಪರ್ಕ ಮಾಹಿತಿ", + "address": "ವಿಳಾಸ", + "phone": "ಫೋನ್", + "firstName": "ಮೊದಲ ಹೆಸರು", + "lastName": "ಕೊನೆಯ ಹೆಸರು", + "dateOfBirth": "ಜನ್ಮ ದಿನಾಂಕ", + "gender": "ಲಿಂಗ", + "state": "ರಾಜ್ಯ", + "city": "ನಗರ", + "pincode": "ಪಿನ್ ಕೋಡ್", + "save": "ಉಳಿಸಿ", + "cancel": "ರದ್ದುಮಾಡಿ", + "edit": "ಸಂಪಾದಿಸಿ", + "delete": "ಅಳಿಸಿ" + }, + "footer": { + "quickLinks": "ತ್ವರಿತ ಲಿಂಕ್‌ಗಳು", + "resources": "ಸಂಪನ್ಮೂಲಗಳು", + "legal": "ಕಾನೂನು", + "contact": "ಸಂಪರ್ಕಿಸಿ", + "about": "ನಮ್ಮ ಬಗ್ಗೆ", + "privacy": "ಗೌಪ್ಯತಾ ನೀತಿ", + "terms": "ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳು", + "copyright": "© 2024 SaralSeva. ಎಲ್ಲಾ ಹಕ್ಕುಗಳು ಕಾಯ್ದಿರಿಸಲಾಗಿದೆ.", + "newsletter": { + "title": "ಅಪ್ಡೇಟ್ ಆಗಿರಿರಿ", + "subtitle": "ವಿಶೇಷ ಆಫರ್‌ಗಳು ಮತ್ತು ಅಪ್ಡೇಟ್‌ಗಳಿಗಾಗಿ ನಮ್ಮ ನ್ಯೂಸ್‌ಲೆಟರ್‌ಗೆ ಚಂದಾದಾರರಾಗಿ", + "emailPlaceholder": "ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ", + "subscribeBtn": "ಚಂದಾದಾರರಾಗಿ", + "noThanksBtn": "ಇಲ್ಲ ಧನ್ಯವಾದಗಳು", + "termsPrefix": "ಚಂದಾದಾರರಾಗುವ ಮೂಲಕ, ನೀವು ನಮ್ಮ", + "termsLink": "ಸೇವಾ ಷರತ್ತುಗಳು", + "privacyLink": "ಗೌಪ್ಯತಾ ನೀತಿ", + "successMessage": "ಚಂದಾದಾರರಾದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು!", + "errorMessage": "ಚಂದಾದಾರಿಕೆ ವಿಫಲವಾಗಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.", + "invalidEmail": "ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ", + "alreadySubscribed": "ಈ ಇಮೇಲ್ ಈಗಾಗಲೇ ಚಂದಾದಾರವಾಗಿದೆ" + } + }, + "common": { + "loading": "ಲೋಡ್ ಆಗುತ್ತಿದೆ...", + "error": "ದೋಷ", + "success": "ಯಶಸ್ಸು", + "warning": "ಎಚ್ಚರಿಕೆ", + "yes": "ಹೌದು", + "no": "ಇಲ್ಲ", + "ok": "ಸರಿ", + "close": "ಮುಚ್ಚಿ", + "back": "ಹಿಂದೆ", + "next": "ಮುಂದೆ", + "previous": "ಹಿಂದಿನದು", + "search": "ಹುಡುಕಿ", + "filter": "ಫಿಲ್ಟರ್", + "sort": "ವಿಂಗಡಿಸಿ", + "date": "ದಿನಾಂಕ", + "status": "ಸ್ಥಿತಿ", + "action": "ಕ್ರಿಯೆ", + "download": "ಡೌನ್‌ಲೋಡ್", + "upload": "ಅಪ್‌ಲೋಡ್", + "delete": "ಅಳಿಸಿ", + "edit": "ಸಂಪಾದಿಸಿ", + "view": "ನೋಡಿ", + "noData": "ಡೇಟಾ ಲಭ್ಯವಿಲ್ಲ", + "language": "ಭಾಷೆ", + "selectLanguage": "ಭಾಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "english": "English", + "hindi": "ಹಿಂದಿ" + }, + "messages": { + "welcome": "SaralSeva ಗೆ ಸ್ವಾಗತ", + "loginSuccess": "ಲಾಗಿನ್ ಯಶಸ್ವಿಯಾಗಿದೆ", + "logoutSuccess": "ಲಾಗ್‌ಔಟ್ ಯಶಸ್ವಿಯಾಗಿದೆ", + "registerSuccess": "ನೋಂದಣಿ ಯಶಸ್ವಿಯಾಗಿದೆ", + "updateSuccess": "ಯಶಸ್ವಿಯಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ", + "deleteSuccess": "ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ", + "errorOccurred": "ಒಂದು ದೋಷ ಉಂಟಾಗಿದೆ", + "pleaseLogin": "ಮುಂದುವರಿಯಲು ದಯವಿಟ್ಟು ಲಾಗಿನ್ ಮಾಡಿ", + "invalidEmail": "ಅಮಾನ್ಯ ಇಮೇಲ್ ವಿಳಾಸ", + "passwordMismatch": "ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ", + "requiredField": "ಈ ಕ್ಷೇತ್ರ ಅಗತ್ಯವಿದೆ" + }, + "aiRecommender": { + "title": "SaralSeva ಗೆ ಕೇಳಿ", + "subtitle": "ಎಐ ಚಾಲಿತ ಯೋಜನೆ ಶಿಫಾರಸು ವ್ಯವಸ್ಥೆ", + "aiBeta": "ಎಐ ಬೀಟಾ", + "aiAssistant": "ಎಐ ಸಹಾಯಕ", + "greeting": "ನಮಸ್ಕಾರ! ನಾನು SaralSeva ಎಐ ಸಹಾಯಕನು.", + "tellAbout": "ನಿಮ್ಮ ಬಗ್ಗೆ ತಿಳಿಸಿ — ವಯಸ್ಸು, ಉದ್ಯೋಗ, ಸ್ಥಳ ಅಥವಾ ಅಗತ್ಯ", + "typePlaceholder": "ನಿಮ್ಮ ಪ್ರಶ್ನೆಯನ್ನು ಇಲ್ಲಿ ಟೈಪ್ ಮಾಡಿ...", + "send": "ಕಳುಹಿಸಿ", + "reset": "ಮರುಹೊಂದಿಸಿ", + "suggestion1": "ನಾನು ಮಹಾರಾಷ್ಟ್ರದಿಂದ 45 ವರ್ಷದ ರೈತನು", + "suggestion2": "ಶಿಕ್ಷಣ ವಿದ್ಯಾರ್ಥಿವೇತನ ಹುಡುಕುತ್ತಿದ್ದೇನೆ", + "suggestion3": "ಸ್ಟಾರ್ಟ್‌ಅಪ್‌ಗಾಗಿ ವ್ಯವಹಾರ ಸಾಲ ಬೇಕು", + "suggestion4": "ನಾನು ನಿವೃತ್ತ ನಾಗರಿಕನು", + "matchPercentage": "ಹೊಂದಿಕೆ", + "category": "ವರ್ಗ", + "applyNow": "ಈಗ ಅರ್ಜಿ ಸಲ್ಲಿಸಿ", + "explanation": "ಈ ಯೋಜನೆ ಯಾಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ", + "proTips": "ಉತ್ತಮ ಶಿಫಾರಸುಗಳಿಗೆ ಸಲಹೆಗಳು:", + "tip1": "ವಯಸ್ಸು, ಉದ್ಯೋಗ ಮತ್ತು ಸ್ಥಳವನ್ನು ಉಲ್ಲೇಖಿಸಿ", + "tip2": "ನೀವು ಬೇಕಾದ ಸಹಾಯವನ್ನು ತಿಳಿಸಿ", + "tip3": "ಆದಾಯ ವಿವರಗಳನ್ನು ಸೇರಿಸಿ", + "tip4": "ನಿಮ್ಮ ಸ್ಥಿತಿಯನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ತಿಳಿಸಿ", + "privacyNotice": "ಈ ಎಐ ಸಹಾಯಕ ಸ್ಥಳೀಯ NLP ಪ್ರಕ್ರಿಯೆಯನ್ನು ಬಳಸುತ್ತದೆ.", + "exampleQueries": "ಉದಾಹರಣೆ ಪ್ರಶ್ನೆಗಳು", + "clickToTry": "ಪ್ರಯತ್ನಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ", + "example1": "ಮಹಾರಾಷ್ಟ್ರದ 45 ವರ್ಷದ ರೈತನು", + "example2": "ಕಾಲೇಜಿನಲ್ಲಿ ಓದುತ್ತಿರುವ ಮಗಳಿಗೆ ವಿದ್ಯಾರ್ಥಿವೇತನ", + "example3": "ಮಹಿಳಾ ಉದ್ಯಮಿ ವ್ಯವಹಾರ ಆರಂಭಿಸಲು ಬಯಸುತ್ತಾರೆ", + "example4": "60 ವರ್ಷ ಮೇಲ್ಪಟ್ಟ ಹಿರಿಯ ನಾಗರಿಕರ ಪಿಂಚಣಿ ಯೋಜನೆಗಳು", + "example5": "ನಾನು ನಿರುದ್ಯೋಗಿಯಾಗಿದ್ದು ಕೌಶಲ್ಯ ತರಬೇತಿ ಬೇಕು", + "example6": "ಕಡಿಮೆ ಆದಾಯದ ಕುಟುಂಬಕ್ಕೆ ಆರೋಗ್ಯ ವಿಮೆ ಬೇಕು", + "foundSchemes": "ನಿಮ್ಮ ಪ್ರೊಫೈಲ್‌ಗೆ ಹೊಂದುವ {count} ಯೋಜನೆಗಳು ದೊರಕಿವೆ:", + "foundScheme": "ನಿಮ್ಮ ಪ್ರೊಫೈಲ್‌ಗೆ ಹೊಂದುವ {count} ಯೋಜನೆ ದೊರಕಿದೆ:", + "noMatchingSchemes": "ಕ್ಷಮಿಸಿ, ಹೊಂದುವ ಯೋಜನೆಗಳು ದೊರಕಿಲ್ಲ", + "noDataAvailable": "ಡೇಟಾ ಲಭ್ಯವಿಲ್ಲ", + "tryRephrasing": "ದಯವಿಟ್ಟು ಹೆಚ್ಚು ಸ್ಪಷ್ಟ ಮಾಹಿತಿಯೊಂದಿಗೆ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ", + "moreInfoSuggestion1": "ಯೋಜನೆಗಳ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿ ತೋರಿಸಿ", + "moreInfoSuggestion2": "ಅರ್ಹತೆ ಕುರಿತು ತಿಳಿಸಿ", + "moreInfoSuggestion3": "ನಾನು ಹೇಗೆ ಅರ್ಜಿ ಸಲ್ಲಿಸಬೇಕು?", + "fallbackSuggestion1": "ರೈತರಿಗೆ ಸಬ್ಸಿಡಿ", + "fallbackSuggestion2": "ವಿದ್ಯಾರ್ಥಿಗಳ ವಿದ್ಯಾರ್ಥಿವೇತನ", + "fallbackSuggestion3": "ವ್ಯವಹಾರ ಸಾಲ" + } +} diff --git a/user/src/i18n/locales/mr.json b/user/src/i18n/locales/mr.json new file mode 100644 index 00000000..74c2adb8 --- /dev/null +++ b/user/src/i18n/locales/mr.json @@ -0,0 +1,197 @@ +{ + "navigation": { + "home": "मुख्यपृष्ठ", + "about": "आमच्याबद्दल", + "schemes": "योजना", + "askAI": "एआयला विचारा", + "successStories": "यशोगाथा", + "dashboard": "डॅशबोर्ड", + "grievances": "तक्रारी", + "contact": "संपर्क करा", + "profile": "प्रोफाइल", + "schemeApplied": "लागू केलेली योजना", + "status": "स्थिती", + "logout": "लॉगआउट", + "login": "लॉगिन", + "register": "नोंदणी करा", + "myAccount": "माझे खाते", + "switchTheme": "थीम बदला" + }, + "auth": { + "loginTitle": "लॉगिन", + "registerTitle": "नोंदणी करा", + "email": "ईमेल", + "password": "पासवर्ड", + "confirmPassword": "पासवर्डची पुष्टी करा", + "submitBtn": "सबमिट करा", + "loginBtn": "लॉगिन करा", + "registerBtn": "नोंदणी करा", + "forgotPassword": "पासवर्ड विसरलात?", + "noAccount": "खाते नाही?", + "haveAccount": "आधीच खाते आहे?", + "verifyOtp": "OTP पडताळा", + "otpSent": "OTP तुमच्या ईमेलवर पाठवण्यात आला आहे" + }, + "schemes": { + "allSchemes": "सर्व योजना", + "schemeDetails": "योजना तपशील", + "eligibility": "पात्रता निकष", + "benefits": "लाभ", + "applyNow": "आता अर्ज करा", + "requirements": "आवश्यकता", + "appliedSchemes": "लागू केलेल्या योजना", + "noSchemes": "कोणतीही योजना उपलब्ध नाही", + "searchSchemes": "योजना शोधा" + }, + "dashboard": { + "title": "डॅशबोर्ड", + "myApplications": "माझे अर्ज", + "appliedSchemes": "लागू योजना", + "pendingApplications": "प्रलंबित अर्ज", + "approvedSchemes": "मंजूर योजना", + "rejectedSchemes": "नाकारलेल्या योजना", + "viewDetails": "तपशील पहा" + }, + "grievances": { + "title": "तक्रारी", + "registerGrievance": "तक्रार नोंदवा", + "myGrievances": "माझ्या तक्रारी", + "grievanceDescription": "तक्रारीचे वर्णन", + "attachments": "संलग्न फायली", + "status": "स्थिती", + "resolution": "निराकरण", + "submit": "सबमिट करा", + "pending": "प्रलंबित", + "resolved": "निराकरण झाले", + "rejected": "नाकारले" + }, + "profile": { + "title": "प्रोफाइल", + "editProfile": "प्रोफाइल संपादित करा", + "personalInfo": "वैयक्तिक माहिती", + "contactInfo": "संपर्क माहिती", + "address": "पत्ता", + "phone": "फोन", + "firstName": "पहिले नाव", + "lastName": "आडनाव", + "dateOfBirth": "जन्मतारीख", + "gender": "लिंग", + "state": "राज्य", + "city": "शहर", + "pincode": "पिनकोड", + "save": "जतन करा", + "cancel": "रद्द करा", + "edit": "संपादित करा", + "delete": "हटवा" + }, + "footer": { + "quickLinks": "जलद दुवे", + "resources": "संसाधने", + "legal": "कायदेशीर", + "contact": "संपर्क करा", + "about": "आमच्याबद्दल", + "privacy": "गोपनीयता धोरण", + "terms": "अटी व शर्ती", + "copyright": "© 2024 SaralSeva. सर्व हक्क राखीव.", + "newsletter": { + "title": "अपडेट राहा", + "subtitle": "विशेष ऑफर आणि अपडेटसाठी आमच्या न्यूजलेटरची सदस्यता घ्या", + "emailPlaceholder": "तुमचा ईमेल पत्ता प्रविष्ट करा", + "subscribeBtn": "सदस्यता घ्या", + "noThanksBtn": "नको धन्यवाद", + "termsPrefix": "सदस्यता घेतल्याने, आपण आमच्या", + "termsLink": "सेवा अटी", + "privacyLink": "गोपनीयता धोरण", + "successMessage": "सदस्यता घेतल्याबद्दल धन्यवाद!", + "errorMessage": "सदस्यता अयशस्वी. कृपया पुन्हा प्रयत्न करा.", + "invalidEmail": "कृपया वैध ईमेल पत्ता प्रविष्ट करा", + "alreadySubscribed": "हा ईमेल आधीच सदस्य आहे" + } + }, + "common": { + "loading": "लोड होत आहे...", + "error": "त्रुटी", + "success": "यश", + "warning": "इशारा", + "yes": "होय", + "no": "नाही", + "ok": "ठीक आहे", + "close": "बंद करा", + "back": "मागे", + "next": "पुढे", + "previous": "मागील", + "search": "शोधा", + "filter": "फिल्टर", + "sort": "क्रमवारी", + "date": "तारीख", + "status": "स्थिती", + "action": "क्रिया", + "download": "डाउनलोड", + "upload": "अपलोड", + "delete": "हटवा", + "edit": "संपादित करा", + "view": "पहा", + "noData": "डेटा उपलब्ध नाही", + "language": "भाषा", + "selectLanguage": "भाषा निवडा", + "english": "English", + "hindi": "हिंदी" + }, + "messages": { + "welcome": "SaralSeva मध्ये आपले स्वागत आहे", + "loginSuccess": "लॉगिन यशस्वी", + "logoutSuccess": "लॉगआउट यशस्वी", + "registerSuccess": "नोंदणी यशस्वी", + "updateSuccess": "यशस्वीपणे अद्यतनित", + "deleteSuccess": "यशस्वीपणे हटवले", + "errorOccurred": "त्रुटी आली", + "pleaseLogin": "कृपया पुढे जाण्यासाठी लॉगिन करा", + "invalidEmail": "अवैध ईमेल पत्ता", + "passwordMismatch": "पासवर्ड जुळत नाहीत", + "requiredField": "हे फील्ड आवश्यक आहे" + }, + "aiRecommender": { + "title": "SaralSeva ला विचारा", + "subtitle": "एआय-आधारित योजना शिफारसकर्ता", + "aiBeta": "एआय बीटा", + "aiAssistant": "एआय-सहाय्यक", + "greeting": "नमस्कार! मी SaralSeva AI सहाय्यक आहे.", + "tellAbout": "तुमच्याबद्दल सांगा — वय, व्यवसाय, स्थान किंवा गरज", + "typePlaceholder": "तुमचा प्रश्न येथे लिहा...", + "send": "पाठवा", + "reset": "रीसेट", + "suggestion1": "मी महाराष्ट्रातील 45 वर्षांचा शेतकरी आहे", + "suggestion2": "शिक्षण शिष्यवृत्ती शोधत आहे", + "suggestion3": "स्टार्टअपसाठी व्यवसाय कर्ज हवे आहे", + "suggestion4": "मी निवृत्त नागरिक आहे", + "matchPercentage": "जुळणं", + "category": "वर्ग", + "applyNow": "आता अर्ज करा", + "explanation": "ही योजना का जुळते", + "proTips": "चांगल्या शिफारसीसाठी टिप्स:", + "tip1": "वय, व्यवसाय आणि स्थान नमूद करा", + "tip2": "आवश्यक मदत सांगा", + "tip3": "उत्पन्न तपशील जोडा", + "tip4": "तपशीलवार माहिती द्या", + "privacyNotice": "हा एआय सहाय्यक स्थानिक NLP वापरतो.", + "exampleQueries": "उदाहरण प्रश्न", + "clickToTry": "प्रयत्न करण्यासाठी क्लिक करा", + "example1": "महाराष्ट्रातील 45 वर्षांचा शेतकरी", + "example2": "कॉलेजमध्ये शिकणाऱ्या मुलीसाठी शिष्यवृत्ती", + "example3": "महिला उद्योजक व्यवसाय सुरू करू इच्छिते", + "example4": "60+ नागरिकांसाठी पेन्शन योजना", + "example5": "कौशल्य प्रशिक्षण हवे आहे", + "example6": "कमी उत्पन्न कुटुंबासाठी आरोग्य विमा", + "foundSchemes": "{count} योजना सापडल्या:", + "foundScheme": "{count} योजना सापडली:", + "noMatchingSchemes": "कोणतीही जुळणारी योजना नाही", + "noDataAvailable": "डेटा उपलब्ध नाही", + "tryRephrasing": "कृपया अधिक तपशील द्या", + "moreInfoSuggestion1": "अधिक माहिती दाखवा", + "moreInfoSuggestion2": "पात्रता सांगा", + "moreInfoSuggestion3": "अर्ज कसा करायचा?", + "fallbackSuggestion1": "शेतकऱ्यांसाठी सबसिडी", + "fallbackSuggestion2": "विद्यार्थी शिष्यवृत्ती", + "fallbackSuggestion3": "व्यवसाय कर्ज" + } +} diff --git a/user/src/index.css b/user/src/index.css index d8a964a1..e265242f 100644 --- a/user/src/index.css +++ b/user/src/index.css @@ -152,4 +152,23 @@ .active { @apply h-10 px-4 bg-gradient-to-r from-[#f8b2a] to-[#e86a33] text-white rounded-md font-semibold shadow-md; } -} \ No newline at end of file +} + +/* ========================================================================== + CSS FOR LONG TEXT IN DIFFERENT LANGUAGES +========================================================================== */ + +nav, +.navbar { + flex-wrap: wrap; +} + +button { + min-width: max-content; + white-space: nowrap; +} + +a { + white-space: nowrap; +} + diff --git a/user/src/main.jsx b/user/src/main.jsx index b695d3cf..6e6d0fa0 100644 --- a/user/src/main.jsx +++ b/user/src/main.jsx @@ -1,4 +1,5 @@ import React from "react"; +import ReactDOM from "react-dom/client"; import { HelmetProvider } from "react-helmet-async"; import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; @@ -9,6 +10,7 @@ import { SchemeProvider } from "./components/context/SchemaContext.jsx"; import { UserProvider } from "./components/context/UserContext.jsx"; import { GoogleOAuthProvider } from "@react-oauth/google"; import './i18n/config.js'; // ✅ Import i18next configuration +import "./src/i18n.js"; // ✅ Import i18next configuration createRoot(document.getElementById("root")).render( @@ -25,3 +27,16 @@ createRoot(document.getElementById("root")).render( ); + +if ("serviceWorker" in navigator) { + window.addEventListener("load", () => { + navigator.serviceWorker + .register("/service-worker.js") + .then((registration) => { + console.log("Service Worker registered:", registration); + }) + .catch((error) => { + console.error("Service Worker registration failed:", error); + }); + }); +}