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);
+ });
+ });
+}