diff --git a/package-lock.json b/package-lock.json index f362c3e..8935e4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,10 +8,14 @@ "name": "my-project", "version": "0.0.0", "dependencies": { + "i18next": "^23.15.1", + "i18next-browser-languagedetector": "^8.0.0", + "i18next-http-backend": "^2.6.1", "lucide-react": "^0.446.0", "prop-types": "^15.8.1", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-i18next": "^15.0.2", "react-router-dom": "^6.26.2" }, "devDependencies": { @@ -310,6 +314,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", @@ -1932,6 +1948,15 @@ "dev": true, "license": "MIT" }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3116,6 +3141,56 @@ "node": ">= 0.4" } }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/i18next": { + "version": "23.15.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.15.1.tgz", + "integrity": "sha512-wB4abZ3uK7EWodYisHl/asf8UYEhrI/vj/8aoSsrj/ZDxj4/UXPOa1KvFt1Fq5hkUHquNqwFlDprmjZ8iySgYA==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.0.tgz", + "integrity": "sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/i18next-http-backend": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.6.1.tgz", + "integrity": "sha512-rCilMAnlEQNeKOZY1+x8wLM5IpYOj10guGvEpeC59tNjj6MMreLIjIW8D1RclhD3ifLwn6d/Y9HEM1RUE6DSog==", + "license": "MIT", + "dependencies": { + "cross-fetch": "4.0.0" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3889,6 +3964,26 @@ "dev": true, "license": "MIT" }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", @@ -4458,6 +4553,28 @@ "react": "^18.3.1" } }, + "node_modules/react-i18next": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.0.2.tgz", + "integrity": "sha512-z0W3/RES9Idv3MmJUcf0mDNeeMOUXe+xoL0kPfQPbDoZHmni/XsIoq5zgT2MCFUiau283GuBUK578uD/mkAbLQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 23.2.3", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -4551,6 +4668,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -5182,6 +5305,12 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -5403,6 +5532,31 @@ } } }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 5a43022..340f251 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,14 @@ "preview": "vite preview" }, "dependencies": { + "i18next": "^23.15.1", + "i18next-browser-languagedetector": "^8.0.0", + "i18next-http-backend": "^2.6.1", "lucide-react": "^0.446.0", "prop-types": "^15.8.1", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-i18next": "^15.0.2", "react-router-dom": "^6.26.2" }, "devDependencies": { diff --git a/public/locales/bn/translation.json b/public/locales/bn/translation.json new file mode 100644 index 0000000..f907983 --- /dev/null +++ b/public/locales/bn/translation.json @@ -0,0 +1,41 @@ +{ + "appName": "সমন্বিত PACS কিষাণ সমাধান", + "username": "ব্যবহারকারীর নাম", + "pacsName": "PACS নাম", + "userType": "ব্যবহারকারীর ধরন", + "moduleName": "মডিউলের নাম", + "date": "তারিখ", + "home": "হোম", + "moduleList": "মডিউল তালিকা", + "enquiry": "অনুসন্ধান", + "lockerOperation": "লকার অপারেশন", + "reports": "রিপোর্ট", + "worklist": "কাজের", + "userManagement": "ব্যবহারকারী ব্যবস্থাপনা", + "logout": "প্রস্থান", + "kcc": "কেসিসি", + "trading": "বাণিজ্য", + "asset": "সম্পদ", + "locker": "লকার", + "pacsTeller": "PACS টেলার", + "authoriser": "অনুমোদনকারী", + "cashOfficer": "নগদ কর্মকর্তা", + "selfHelpGroup": "স্বনির্ভর গোষ্ঠী", + "deposit": "আমানত", + "loan": "ঋণ", + "share": "শেয়ার", + "lockerEnquiry": "লকার অনুসন্ধান", + "accountEnquiry": "অ্যাকাউন্ট অনুসন্ধান", + "accountCreation": "অ্যাকাউন্ট তৈরি", + "cabinetMaintenance": "ক্যাবিনেট রক্ষণাবেক্ষণ", + "lockerMaintenance": "লকার রক্ষণাবেক্ষণ", + "rentPenaltyCollection": "ভাড়া / জরিমানা সংগ্রহ", + "chargeManagement": "চার্জ ব্যবস্থাপনা", + "checkInOutManagement": "চেক ইন/আউট ব্যবস্থাপনা", + "accountSurrender": "অ্যাকাউন্ট সমর্পণ", + "myIntimation": "আমার বিজ্ঞপ্তি", + "changePassword": "পাসওয়ার্ড পরিবর্তন", + "resetLogin": "লগইন স্ট্যাটাস রিসেট করুন", + "currentDate" : "{{val, datetime}}" + +} diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json new file mode 100644 index 0000000..fbf1c70 --- /dev/null +++ b/public/locales/en/translation.json @@ -0,0 +1,41 @@ +{ + "appName": "Integrated PACS Kisan Solution", + "username": "Username", + "pacsName": "PACS Name", + "userType": "User Type", + "moduleName": "Module Name", + "languageSelect": "Language", + "date": "Date", + "home": "Home", + "moduleList": "Module List", + "enquiry": "Enquiry", + "lockerOperation": "Locker Operation", + "reports": "Reports", + "worklist": "Worklist", + "userManagement": "User Management", + "logout": "Logout", + "kcc": "KCCP", + "trading": "Trading", + "asset": "Asset", + "selfHelpGroup": "Self Help Group", + "deposit": "Deposit", + "loan": "Loan", + "share": "Share", + "locker": "Locker", + "pacsTeller": "PACS Teller", + "authoriser": "Authoriser", + "cashOfficer": "Cash Officer", + "lockerEnquiry": "Locker Enquiry", + "accountEnquiry": "Account Enquiry", + "accountCreation": "Account Creation", + "cabinetMaintenance": "Cabinet Maintenance", + "lockerMaintenance": "Locker Maintenance", + "rentPenaltyCollection": "Rent / Penalty Collection", + "chargeManagement": "Charge Management", + "checkInOutManagement": "Check in/out Management", + "accountSurrender": "Account Surrender", + "myIntimation": "My Intimation", + "changePassword": "Change Password", + "resetLogin": "Reset Login Status", + "currentDate" : "{{val, datetime}}" +} \ No newline at end of file diff --git a/public/locales/hi/translation.json b/public/locales/hi/translation.json new file mode 100644 index 0000000..390e60c --- /dev/null +++ b/public/locales/hi/translation.json @@ -0,0 +1,41 @@ +{ + "appName": "समन्वित PACS किसान समाधान", + "username": "उपयोगकर्ता नाम", + "pacsName": "PACS नाम", + "userType": "उपयोगकर्ता प्रकार", + "moduleName": "मॉड्यूल नाम", + "languageSelect": "भाषा", + "date": "तारीख", + "home": "होम", + "moduleList": "मॉड्यूल सूची", + "enquiry": "पूछताछ", + "lockerOperation": "लॉकर ऑपरेशन", + "reports": "रिपोर्ट", + "worklist": "कार्य सूची", + "userManagement": "उपयोगकर्ता प्रबंधन", + "logout": "लॉगआउट", + "kcc": "केसीसी", + "trading": "व्यापार", + "asset": "संपत्ति", + "selfHelpGroup": "स्वयं सहायता समूह", + "deposit": "जमा", + "loan": "ऋण", + "share": "शेयर", + "locker": "लॉकर", + "pacsTeller": "PACS टेलर", + "authoriser": "PACS अधिकृत", + "cashOfficer": "कैश अधिकारी", + "lockerEnquiry": "लॉकर पूछताछ", + "accountEnquiry": "खाता पूछताछ", + "accountCreation": "खाता निर्माण", + "cabinetMaintenance": "कैबिनेट रखरखाव", + "lockerMaintenance": "लॉकर रखरखाव", + "rentPenaltyCollection": "किराया / जुर्माना संग्रह", + "chargeManagement": "शुल्क प्रबंधन", + "checkInOutManagement": "चेक इन/आउट प्रबंधन", + "accountSurrender": "खाता समर्पण", + "myIntimation": "मेरा सूचितकरण", + "changePassword": "पासवर्ड बदलें", + "resetLogin": "लॉगिन स्थिति रीसेट करें", + "currentDate" : "{{val, datetime}}" +} \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx index b4fe2da..664e468 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,5 +1,6 @@ import { Outlet } from "react-router-dom" import Header from "./components/Header" +import Footer from "./components/Footer" function App() { return