diff --git a/src/i18n/i18n.config.ts b/src/i18n/i18n.config.ts index 37937f99..1b07e80d 100644 --- a/src/i18n/i18n.config.ts +++ b/src/i18n/i18n.config.ts @@ -9,6 +9,7 @@ import ko from './locales/ko.json'; import es from './locales/es.json'; import ptbr from './locales/pt-BR.json'; import tr from './locales/tr.json'; +import bn from './locales/bn.json'; export default defineI18nConfig(() => ({ legacy: false, @@ -25,5 +26,6 @@ export default defineI18nConfig(() => ({ es, 'pt-BR': ptbr, tr, + bn, }, })); diff --git a/src/i18n/locales/bn.json b/src/i18n/locales/bn.json new file mode 100644 index 00000000..e8868342 --- /dev/null +++ b/src/i18n/locales/bn.json @@ -0,0 +1,240 @@ +{ + "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": "আপনি 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": "যেদিন ক্লায়েন্ট নিষ্ক্রিয় হবে। স্থায়ী করতে ফাঁকা রাখুন", + "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 সংযোগ স্থাপন করা হয়েছে" + }, + "dialog": { + "change": "পরিবর্তন করুন", + "cancel": "বাতিল করুন", + "create": "তৈরি করুন" + }, + "toast": { + "success": "সফলতা", + "saved": "সংরক্ষিত", + "error": "ত্রুটি" + }, + "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": "WireGuard ব্যবহার করবে এমন MTU", + "portDesc": "UDP পোর্ট WireGuard শুনবে (আপনি সম্ভবত কনফিগ পোর্টও পরিবর্তন করতে চাইবেন)", + "changeCidr": "CIDR পরিবর্তন করুন", + "restart": "ইন্টারফেস রিস্টার্ট করুন", + "restartDesc": "WireGuard ইন্টারফেস রিস্টার্ট করুন", + "restartWarn": "আপনি কি নিশ্চিতভাবে ইন্টারফেস রিস্টার্ট করতে চান? এতে সব ক্লায়েন্ট সংযোগ বিচ্ছিন্ন হবে।", + "restartSuccess": "ইন্টারফেস রিস্টার্ট হয়েছে" + }, + "introText": "অ্যাডমিন প্যানেলে স্বাগতম।\n\nএখানে আপনি সাধারণ সেটিংস, কনফিগারেশন, ইন্টারফেস সেটিংস এবং হুকস পরিচালনা করতে পারবেন।\n\nসাইডবার থেকে একটি বিভাগ নির্বাচন করে শুরু করুন।" + }, + "zod": { + "generic": { + "required": "{0} আবশ্যক", + "validNumber": "{0} একটি বৈধ সংখ্যা হতে হবে", + "validString": "{0} একটি বৈধ স্ট্রিং হতে হবে", + "validBoolean": "{0} একটি বৈধ বুলিয়ান হতে হবে", + "validArray": "{0} একটি বৈধ অ্যারে হতে হবে", + "stringMin": "{0} কমপক্ষে {1} অক্ষর হতে হবে", + "numberMin": "{0} কমপক্ষে {1} হতে হবে" + }, + "client": { + "id": "ক্লায়েন্ট আইডি", + "name": "নাম", + "expiresAt": "মেয়াদ শেষ", + "address4": "IPv4 ঠিকানা", + "address6": "IPv6 ঠিকানা", + "serverAllowedIps": "সার্ভার অনুমোদিত IPs" + }, + "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" + } +} diff --git a/src/nuxt.config.ts b/src/nuxt.config.ts index b63e1c18..c582e1dd 100644 --- a/src/nuxt.config.ts +++ b/src/nuxt.config.ts @@ -83,6 +83,11 @@ export default defineNuxtConfig({ language: 'tr-TR', name: 'Türkçe', }, + { + code: 'bn', + language: 'bn-BD', + name: 'বাংলা', + }, ], defaultLocale: 'en', vueI18n: './i18n.config.ts',