diff --git a/src/i18n/i18n.config.ts b/src/i18n/i18n.config.ts index 7fabfe39..b6ee1d47 100644 --- a/src/i18n/i18n.config.ts +++ b/src/i18n/i18n.config.ts @@ -18,6 +18,7 @@ import id from './locales/id.json'; import nl from './locales/nl.json'; import nb from './locales/nb.json'; import bg from './locales/bg.json'; +import hi from './locales/hi.json'; import gl from './locales/gl.json'; import cs from './locales/cs.json'; import vi from './locales/vi.json'; @@ -46,6 +47,7 @@ export default defineI18nConfig(() => ({ nl, nb, bg, + hi, gl, cs, vi, diff --git a/src/i18n/locales/hi.json b/src/i18n/locales/hi.json new file mode 100644 index 00000000..2d9efdaf --- /dev/null +++ b/src/i18n/locales/hi.json @@ -0,0 +1,297 @@ +{ + "pages": { + "me": "खाता", + "clients": "क्लाइंट", + "admin": { + "panel": "एडमिन पैनल", + "general": "सामान्य", + "config": "कॉन्फ़िगरेशन", + "interface": "इंटरफ़ेस", + "hooks": "हुक्स" + } + }, + "user": { + "email": "ई-मेल" + }, + "me": { + "currentPassword": "वर्तमान पासवर्ड", + "enable2fa": "दो-कारक प्रमाणीकरण सक्षम करें", + "enable2faDesc": "अपने प्रमाणक ऐप से QR कोड स्कैन करें या कुंजी मैन्युअल रूप से दर्ज करें।", + "2faKey": "TOTP कुंजी", + "2faCodeDesc": "अपने प्रमाणक ऐप से कोड दर्ज करें।", + "disable2fa": "दो-कारक प्रमाणीकरण अक्षम करें", + "disable2faDesc": "दो-कारक प्रमाणीकरण अक्षम करने के लिए अपना पासवर्ड दर्ज करें।" + }, + "general": { + "name": "नाम", + "username": "उपयोगकर्ता नाम", + "password": "पासवर्ड", + "newPassword": "नया पासवर्ड", + "updatePassword": "पासवर्ड अपडेट करें", + "mtu": "MTU", + "allowedIps": "अनुमत IPs", + "dns": "DNS", + "persistentKeepalive": "स्थायी कीपअलाइव", + "logout": "लॉगआउट", + "continue": "जारी रखें", + "host": "होस्ट", + "port": "पोर्ट", + "yes": "हाँ", + "no": "नहीं", + "confirmPassword": "पासवर्ड की पुष्टि करें", + "loading": "लोड हो रहा है...", + "2fa": "दो-कारक प्रमाणीकरण", + "2faCode": "TOTP कोड" + }, + "setup": { + "welcome": "wg-easy की प्रारंभिक सेटअप में आपका स्वागत है", + "welcomeDesc": "आपने किसी भी Linux होस्ट पर WireGuard इंस्टॉल और प्रबंधित करने का सबसे आसान तरीका खोज लिया है", + "existingSetup": "क्या आपके पास पहले से कोई सेटअप है?", + "createAdminDesc": "कृपया पहले एडमिन उपयोगकर्ता नाम और एक मज़बूत सुरक्षित पासवर्ड दर्ज करें। इस जानकारी का उपयोग प्रशासन पैनल में लॉग इन करने के लिए किया जाएगा।", + "setupConfigDesc": "कृपया होस्ट और पोर्ट जानकारी दर्ज करें। इसका उपयोग उनके डिवाइस पर WireGuard सेटअप करते समय क्लाइंट कॉन्फ़िगरेशन के लिए किया जाएगा।", + "setupMigrationDesc": "यदि आप अपने पिछले wg-easy संस्करण से डेटा माइग्रेट करना चाहते हैं तो कृपया बैकअप फ़ाइल प्रदान करें।", + "upload": "अपलोड", + "migration": "बैकअप से पुनर्स्थापित करें:", + "createAccount": "खाता बनाएं", + "successful": "सेटअप सफल रहा", + "hostDesc": "सार्वजनिक होस्टनाम जिससे क्लाइंट कनेक्ट होंगे", + "portDesc": "सार्वजनिक UDP पोर्ट जिससे क्लाइंट कनेक्ट होंगे और WireGuard सुनेगा" + }, + "update": { + "updateAvailable": "एक अपडेट उपलब्ध है!", + "update": "अपडेट करें" + }, + "theme": { + "dark": "डार्क थीम", + "light": "लाइट थीम", + "system": "सिस्टम थीम" + }, + "layout": { + "toggleCharts": "चार्ट दिखाएं/छिपाएं", + "donate": "दान करें" + }, + "login": { + "signIn": "साइन इन", + "rememberMe": "मुझे याद रखें", + "rememberMeDesc": "ब्राउज़र बंद करने के बाद भी लॉग इन रहें", + "insecure": "आप असुरक्षित कनेक्शन से लॉग इन नहीं कर सकते। HTTPS का उपयोग करें।", + "2faRequired": "दो-कारक प्रमाणीकरण आवश्यक है", + "2faWrong": "दो-कारक प्रमाणीकरण गलत है" + }, + "client": { + "empty": "अभी तक कोई क्लाइंट नहीं है।", + "newShort": "नया", + "sort": "क्रमबद्ध करें", + "create": "क्लाइंट बनाएं", + "created": "क्लाइंट बनाया गया", + "new": "नया क्लाइंट", + "name": "नाम", + "expireDate": "समाप्ति तिथि", + "expireDateDesc": "वह तिथि जिसके बाद क्लाइंट अक्षम हो जाएगा। स्थायी के लिए खाली छोड़ें", + "delete": "हटाएं", + "deleteClient": "क्लाइंट हटाएं", + "deleteDialog1": "क्या आप वाकई हटाना चाहते हैं", + "deleteDialog2": "यह क्रिया पूर्ववत नहीं की जा सकती।", + "enabled": "सक्षम", + "address": "पता", + "serverAllowedIps": "सर्वर द्वारा अनुमत IPs", + "otlDesc": "छोटा एकबारगी लिंक उत्पन्न करें", + "permanent": "स्थायी", + "createdOn": "बनाया गया ", + "lastSeen": "अंतिम बार देखा गया ", + "totalDownload": "कुल डाउनलोड: ", + "totalUpload": "कुल अपलोड: ", + "newClient": "नया क्लाइंट", + "disableClient": "क्लाइंट अक्षम करें", + "enableClient": "क्लाइंट सक्षम करें", + "noPrivKey": "इस क्लाइंट की कोई ज्ञात निजी कुंजी नहीं है। कॉन्फ़िगरेशन नहीं बना सकते।", + "showQR": "QR कोड दिखाएं", + "downloadConfig": "कॉन्फ़िगरेशन डाउनलोड करें", + "allowedIpsDesc": "कौन से IPs VPN के माध्यम से रूट होंगे (वैश्विक कॉन्फ़िगरेशन को ओवरराइड करता है)", + "serverAllowedIpsDesc": "कौन से IPs सर्वर क्लाइंट को रूट करेगा", + "mtuDesc": "VPN टनल के लिए अधिकतम ट्रांसमिशन इकाई (पैकेट आकार) सेट करता है", + "persistentKeepaliveDesc": "कीप-अलाइव पैकेट के लिए अंतराल (सेकंड में) सेट करता है। 0 इसे अक्षम करता है", + "hooks": "हुक्स", + "hooksDescription": "हुक्स केवल wg-quick के साथ काम करते हैं", + "hooksLeaveEmpty": "केवल wg-quick के लिए। अन्यथा, खाली छोड़ें", + "dnsDesc": "DNS सर्वर जिसे क्लाइंट उपयोग करेंगे (वैश्विक कॉन्फ़िगरेशन को ओवरराइड करता है)", + "notConnected": "क्लाइंट कनेक्ट नहीं है", + "endpoint": "एंडपॉइंट", + "endpointDesc": "क्लाइंट का IP पता जहाँ से WireGuard कनेक्शन स्थापित होता है", + "search": "क्लाइंट खोजें...", + "config": "कॉन्फ़िगरेशन", + "viewConfig": "कॉन्फ़िगरेशन देखें", + "firewallIps": "फ़ायरवॉल द्वारा अनुमत IPs", + "firewallIpsDesc": "गंतव्य IPs/CIDRs जिन तक यह क्लाइंट पहुँच सकता है (सर्वर-साइड नियंत्रण)। अनुमत IPs उपयोग करने के लिए खाली छोड़ें। वैकल्पिक पोर्ट और प्रोटोकॉल फ़िल्टरिंग का समर्थन करता है। सिंटैक्स के लिए दस्तावेज़ देखें।", + "downloadPng": "PNG डाउनलोड करें", + "copyPng": "PNG कॉपी करें" + }, + "dialog": { + "change": "बदलें", + "cancel": "रद्द करें", + "create": "बनाएं" + }, + "toast": { + "success": "सफल", + "saved": "सहेजा गया", + "error": "त्रुटि", + "unknown": "अज्ञात त्रुटि। अधिक जानकारी के लिए कंसोल देखें" + }, + "form": { + "actions": "क्रियाएं", + "save": "सहेजें", + "revert": "पूर्ववत करें", + "sectionGeneral": "सामान्य", + "sectionAdvanced": "उन्नत", + "noItems": "कोई आइटम नहीं", + "nullNoItems": "कोई आइटम नहीं। वैश्विक कॉन्फ़िगरेशन उपयोग में है", + "add": "जोड़ें" + }, + "admin": { + "general": { + "sessionTimeout": "सत्र समय समाप्ति", + "sessionTimeoutDesc": "रिमेम्बर मी के लिए सत्र अवधि (सेकंड में)", + "metrics": "मेट्रिक्स", + "metricsPassword": "पासवर्ड", + "metricsPasswordDesc": "मेट्रिक्स एंडपॉइंट के लिए बियरर पासवर्ड (पासवर्ड या argon2 हैश)", + "json": "JSON", + "jsonDesc": "JSON फ़ॉर्मेट में मेट्रिक्स का मार्ग", + "prometheus": "Prometheus", + "prometheusDesc": "Prometheus मेट्रिक्स का मार्ग" + }, + "config": { + "connection": "कनेक्शन", + "hostDesc": "सार्वजनिक होस्टनाम जिससे क्लाइंट कनेक्ट होंगे (कॉन्फ़िगरेशन को अमान्य करता है)", + "portDesc": "सार्वजनिक UDP पोर्ट जिससे क्लाइंट कनेक्ट होंगे (कॉन्फ़िगरेशन को अमान्य करता है, शायद आप इंटरफ़ेस पोर्ट भी बदलना चाहें)", + "allowedIpsDesc": "क्लाइंट द्वारा उपयोग किए जाने वाले अनुमत IPs (वैश्विक कॉन्फ़िगरेशन)", + "dnsDesc": "क्लाइंट द्वारा उपयोग किया जाने वाला DNS सर्वर (वैश्विक कॉन्फ़िगरेशन)", + "mtuDesc": "क्लाइंट द्वारा उपयोग किया जाने वाला MTU (केवल नए क्लाइंट के लिए)", + "persistentKeepaliveDesc": "सर्वर को कीपअलाइव भेजने का अंतराल सेकंड में। 0 = अक्षम (केवल नए क्लाइंट के लिए)", + "suggest": "सुझाएं", + "suggestDesc": "होस्ट फ़ील्ड के लिए IP पता या होस्टनाम चुनें" + }, + "interface": { + "cidrSuccess": "CIDR बदला गया", + "device": "डिवाइस", + "deviceDesc": "ईथरनेट डिवाइस जिसके माध्यम से WireGuard ट्रैफ़िक फ़ॉरवर्ड किया जाना चाहिए", + "mtuDesc": "MTU जिसे WireGuard उपयोग करेगा", + "portDesc": "UDP पोर्ट जिस पर WireGuard सुनेगा (शायद आप कॉन्फ़िग पोर्ट भी बदलना चाहें)", + "changeCidr": "CIDR बदलें", + "restart": "इंटरफ़ेस रीस्टार्ट करें", + "restartDesc": "WireGuard इंटरफ़ेस को रीस्टार्ट करें", + "restartWarn": "क्या आप वाकई इंटरफ़ेस रीस्टार्ट करना चाहते हैं? इससे सभी क्लाइंट डिस्कनेक्ट हो जाएंगे।", + "restartSuccess": "इंटरफ़ेस रीस्टार्ट हो गया", + "firewall": "ट्रैफ़िक फ़िल्टरिंग", + "firewallEnabled": "प्रति-क्लाइंट फ़ायरवॉल सक्षम करें", + "firewallEnabledDesc": "iptables का उपयोग करके क्लाइंट ट्रैफ़िक को विशिष्ट गंतव्य IPs तक सीमित करें। सक्षम होने पर, प्रत्येक क्लाइंट को अनुमत गंतव्यों के साथ कॉन्फ़िगर किया जा सकता है।" + }, + "introText": "एडमिन पैनल में आपका स्वागत है।\n\nयहाँ आप सामान्य सेटिंग्स, कॉन्फ़िगरेशन, इंटरफ़ेस सेटिंग्स और हुक्स प्रबंधित कर सकते हैं।\n\nसाइडबार में किसी एक अनुभाग को चुनकर शुरू करें।" + }, + "zod": { + "generic": { + "required": "{0} आवश्यक है", + "validNumber": "{0} एक वैध संख्या होनी चाहिए", + "validNumberRange": "{0} एक वैध संख्या या संख्या श्रेणी होनी चाहिए", + "validString": "{0} एक वैध स्ट्रिंग होनी चाहिए", + "validBoolean": "{0} एक वैध बूलियन होना चाहिए", + "validArray": "{0} एक वैध ऐरे होना चाहिए", + "stringMin": "{0} कम से कम {1} अक्षर का होना चाहिए", + "numberMin": "{0} कम से कम {1} होना चाहिए" + }, + "client": { + "id": "क्लाइंट ID", + "name": "नाम", + "expiresAt": "समाप्ति तिथि", + "address4": "IPv4 पता", + "address6": "IPv6 पता", + "serverAllowedIps": "सर्वर द्वारा अनुमत IPs", + "firewallIps": "फ़ायरवॉल द्वारा अनुमत IPs", + "firewallIpsInvalid": "अमान्य फ़ायरवॉल IP प्रविष्टि। समर्थित सिंटैक्स के लिए दस्तावेज़ देखें।" + }, + "user": { + "username": "उपयोगकर्ता नाम", + "password": "पासवर्ड", + "remember": "याद रखें", + "name": "नाम", + "email": "ई-मेल", + "emailInvalid": "ई-मेल एक वैध ईमेल होनी चाहिए", + "passwordMatch": "पासवर्ड मेल खाने चाहिए", + "totpEnable": "TOTP सक्षम करें", + "totpEnableTrue": "TOTP सक्षम सत्य होना चाहिए", + "totpCode": "TOTP कोड" + }, + "userConfig": { + "host": "होस्ट" + }, + "general": { + "sessionTimeout": "सत्र समय समाप्ति", + "metricsEnabled": "मेट्रिक्स", + "metricsPassword": "मेट्रिक्स पासवर्ड" + }, + "interface": { + "cidr": "CIDR", + "device": "डिवाइस", + "cidrValid": "CIDR वैध होना चाहिए" + }, + "otl": "एकबारगी लिंक", + "stringMalformed": "स्ट्रिंग विकृत है", + "body": "बॉडी एक वैध ऑब्जेक्ट होनी चाहिए", + "hook": "हुक", + "enabled": "सक्षम", + "mtu": "MTU", + "port": "पोर्ट", + "persistentKeepalive": "स्थायी कीपअलाइव", + "address": "IP पता", + "dns": "DNS", + "allowedIps": "अनुमत IPs", + "file": "फ़ाइल" + }, + "hooks": { + "preUp": "PreUp", + "postUp": "PostUp", + "preDown": "PreDown", + "postDown": "PostDown" + }, + "copy": { + "notSupported": "कॉपी समर्थित नहीं है", + "copied": "कॉपी हो गया!", + "failed": "कॉपी विफल रहा", + "copy": "कॉपी करें" + }, + "awg": { + "jCLabel": "जंक पैकेट गणना (Jc)", + "jCDescription": "भेजे जाने वाले जंक पैकेट की संख्या (1-128, अनुशंसित: 4-12)", + "jMinLabel": "जंक पैकेट न्यूनतम आकार (Jmin)", + "jMinDescription": "जंक पैकेट का न्यूनतम आकार (0-1279*, अनुशंसित: 8, Jmax से कम होना चाहिए)", + "jMaxLabel": "जंक पैकेट अधिकतम आकार (Jmax)", + "jMaxDescription": "जंक पैकेट का अधिकतम आकार (1-1280*, अनुशंसित: 80, Jmin से अधिक होना चाहिए)", + "s1Label": "इनिट पैकेट जंक आकार (S1)", + "s1Description": "इनिट पैकेट जंक आकार (0-1132[1280* - 148 = 1132], अनुशंसित: 15-150, S1+56 ≠ S2)", + "s2Label": "रिस्पॉन्स पैकेट जंक आकार (S2)", + "s2Description": "रिस्पॉन्स पैकेट जंक आकार (0-1188[1280* - 92 = 1188], अनुशंसित: 15-150)", + "s3Label": "कुकी रिप्लाई पैकेट जंक आकार (S3)", + "s3Description": "कुकी रिप्लाई पैकेट जंक आकार", + "s4Label": "ट्रांसपोर्ट पैकेट जंक आकार (S4)", + "s4Description": "ट्रांसपोर्ट पैकेट जंक आकार", + "h1Label": "इनिट मैजिक हेडर (H1)", + "h1Description": "इनिट पैकेट हेडर मान या श्रेणी (X या X-Y, जहाँ X", + "i2Label": "विशेष जंक पैकेट 2 (I2)", + "i2Description": "hex फ़ॉर्मेट में प्रोटोकॉल मिमिक पैकेट: ", + "i3Label": "विशेष जंक पैकेट 3 (I3)", + "i3Description": "hex फ़ॉर्मेट में प्रोटोकॉल मिमिक पैकेट: ", + "i4Label": "विशेष जंक पैकेट 4 (I4)", + "i4Description": "hex फ़ॉर्मेट में प्रोटोकॉल मिमिक पैकेट: ", + "i5Label": "विशेष जंक पैकेट 5 (I5)", + "i5Description": "hex फ़ॉर्मेट में प्रोटोकॉल मिमिक पैकेट: ", + "mtuNote": "मान MTU पर निर्भर करते हैं", + "obfuscationParameters": "AmneziaWG ऑबफस्केशन पैरामीटर" + } +} diff --git a/src/nuxt.config.ts b/src/nuxt.config.ts index 94516d1d..ca593b9b 100644 --- a/src/nuxt.config.ts +++ b/src/nuxt.config.ts @@ -136,6 +136,11 @@ export default defineNuxtConfig({ language: 'bg-BG', name: 'Български', }, + { + code: 'hi', + language: 'hi-IN', + name: 'हिन्दी', + }, { code: 'gl', language: 'gl-ES',