Merge branch 'donaldzou:main' into thai

This commit is contained in:
Karorogunso 2025-02-27 16:25:57 +07:00 committed by GitHub
commit 43ac3dddf1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 645 additions and 13 deletions

View File

@ -27,7 +27,7 @@ import threading
from flask.json.provider import DefaultJSONProvider
DASHBOARD_VERSION = 'v4.1.3'
DASHBOARD_VERSION = 'v4.1.4'
CONFIGURATION_PATH = os.getenv('CONFIGURATION_PATH', '.')
DB_PATH = os.path.join(CONFIGURATION_PATH, 'db')
if not os.path.isdir(DB_PATH):
@ -351,15 +351,13 @@ class PeerJobs:
f"Peer {fp.id} from {c.Name} failed {job.Action}ed."
)
else:
JobLogger.log(job.JobID, s["status"],
JobLogger.log(job.JobID,False,
f"Somehow can't find this peer {job.Peer} from {c.Name} failed {job.Action}ed."
)
# needToDelete.append(job)
else:
JobLogger.log(job.JobID, s["status"],
JobLogger.log(job.JobID, False,
f"Somehow can't find this peer {job.Peer} from {job.Configuration} failed {job.Action}ed."
)
# needToDelete.append(job)
for j in needToDelete:
self.deleteJob(j)
@ -796,7 +794,7 @@ class WireguardConfiguration:
for i in listOfPublicKeys:
p = sqlSelect("SELECT * FROM '%s_restrict_access' WHERE id = ?" % self.Name, (i,)).fetchone()
if p is not None:
sqlUpdate("INSERT INTO '%s' SELECT * FROM %s_restrict_access WHERE id = ?"
sqlUpdate("INSERT INTO '%s' SELECT * FROM '%s_restrict_access' WHERE id = ?"
% (self.Name, self.Name,), (p['id'],))
sqlUpdate("DELETE FROM '%s_restrict_access' WHERE id = ?"
% self.Name, (p['id'],))
@ -830,7 +828,7 @@ class WireguardConfiguration:
try:
subprocess.check_output(f"wg set {self.Name} peer {pf.id} remove",
shell=True, stderr=subprocess.STDOUT)
sqlUpdate("INSERT INTO '%s_restrict_access' SELECT * FROM %s WHERE id = ?" %
sqlUpdate("INSERT INTO '%s_restrict_access' SELECT * FROM '%s' WHERE id = ?" %
(self.Name, self.Name,), (pf.id,))
sqlUpdate("UPDATE '%s_restrict_access' SET status = 'stopped' WHERE id = ?" %
(self.Name,), (pf.id,))
@ -1647,7 +1645,7 @@ def sqlSelect(statement: str, paramters: tuple = ()) -> sqlite3.Cursor:
try:
cursor = sqldb.cursor()
return cursor.execute(statement, paramters)
except Exception as e:
except Exception as error:
print("[WGDashboard] SQLite Error:" + str(error) + " | Statement: " + statement)
return []
@ -1661,7 +1659,7 @@ def sqlUpdate(statement: str, paramters: tuple = ()) -> sqlite3.Cursor:
s = f'BEGIN TRANSACTION;{statement};END TRANSACTION;'
cursor.execute(statement, paramters)
sqldb.commit()
except Exception as e:
except Exception as error:
print("[WGDashboard] SQLite Error:" + str(error) + " | Statement: " + statement)
return []

View File

@ -1,6 +1,6 @@
{
"name": "app",
"version": "4.1.3",
"version": "4.1.4",
"private": true,
"type": "module",
"scripts": {

View File

@ -1,4 +1,9 @@
[
{
"lang_id": "ar-sa",
"lang_name": "Arabic",
"lang_name_localized": "العربية"
},
{
"lang_id": "cs",
"lang_name": "Czech",
@ -29,6 +34,11 @@
"lang_name": "Italian",
"lang_name_localized": "Italiano"
},
{
"lang_id": "ko",
"lang_name": "Korean",
"lang_name_localized": "한국어"
},
{
"lang_id": "nl-nl",
"lang_name": "Dutch",
@ -74,4 +84,4 @@
"lang_name": "Polish",
"lang_name_localized": "Polski"
}
]
]

View File

@ -0,0 +1,312 @@
{
"Welcome to": "مرحبا بك في ",
"Username": "اسم المستخدم",
"Password": "كلمة المرور",
"OTP from your authenticator": "كلمة المرور لمرة واحدة من المصادق الخاص بك",
"Sign In": "تسجيل الدخول",
"Signing In\\.\\.\\.": "جاري تسجيل الدخول ...",
"Access Remote Server": "الوصول الي الخادم البعيد",
"Server": "الخادم",
"Click": "انقر",
"Pinging...": " .جاري فحص الاتصال ...",
"to add your server": "لاضافة خادمك",
"Server List": "قائمة الخوادم",
"Sorry, your username or password is incorrect.": "عذرا ، اسم المستخدم او كلمة المرور غير صحيحة",
"Home": "الصفحة الرئيسية",
"Settings": "الإعدادات",
"Tools": "الادوات",
"Sign Out": "تسجيل الخروج",
"Checking for update...": "جاري تسجيل الخروج",
"You're on the latest version": "انت تستخدم احدث اصدار",
"WireGuard Configurations": "تكوينات WireGuard",
"You don't have any WireGuard configurations yet. Please check the configuration folder or change it in Settings. By default the folder is /etc/wireguard.": "ليس لديك أي تكوينات WireGuard بعد. يرجى التحقق من مجلد التكوين أو تغييره في الإعدادات. المجلد الافتراضي هو /etc/wireguard.",
"Configuration": "التكوين",
"Configurations": "التكوينات",
"Peers Default Settings": "إعدادات النظراء الافتراضية",
"Dashboard Theme": "سمة لوحة التحكم",
"Light": "فاتح",
"Dark": "داكن",
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "سيتم تغيير هذا في كل الاعدادات وسيطبق على جميع رموز الاستجابة السريعة الخاصة بالنظراء وملفات التكوين.",
"WireGuard Configurations Settings": "إعدادات تكوينات WireGuard",
"Configurations Directory": "مسار التكوينات",
"Remember to remove / at the end of your path. e.g /etc/wireguard": "تذكر إزالة / في نهاية المسار الخاص بك. مثال: /etc/wireguard",
"WGDashboard Account Settings": "إعدادات حساب WGDashboard",
"Current Password": "كلمة المرور الحالية",
"New Password": "كلمة المرور الجديدة",
"Repeat New Password": "كرر كلمة المرور الجديدة",
"Update Password": "تحديث كلمة المرور",
"Multi-Factor Authentication \\(MFA\\)": "المصادقة متعددة العوامل (MFA)",
"Reset": "إعادة ضبط",
"Setup": "إعداد",
"API Keys": "مفاتيح API",
"API Key": "مفتاح API",
"Key": "مفتاح",
"Enabled": "مفعل",
"Disabled": "معطل",
"No WGDashboard API Key": "لا يوجد مفتاح API لـ WGDashboard",
"Expire At": "ينتهي في",
"Are you sure to delete this API key\\?": "هل انت متاكد ان تحذف هذا المفتاح للـAPI ",
"Create API Key": "إنشاء مفتاح API",
"When should this API Key expire\\?": "متي يجب ان ينتهي هذا المفتاح للـ API",
"Never Expire": "لا ينتهي أبدًا",
"Don't think that's a good idea": "لا أعتقد أن هذه فكرة جيدة",
"Creating\\.\\.\\.": "جاري الانشاء",
"Create": "إنشاء",
"Status": "الحالة",
"On": "مشغل",
"Off": "متوقف",
"Turning On\\.\\.\\.": "تشغيل",
"Turning Off\\.\\.\\.": "إيقاف",
"Address": "العنوان",
"Listen Port": "منفذ الاستماع",
"Public Key": "المفتاح العام",
"Connected Peers": "النظراء المتصلون",
"Total Usage": "الاستخدام الكلي",
"Total Received": "الإجمالي المستلم",
"Total Sent": "الإجمالي المرسل",
"Peers Data Usage": "استهلاك بيانات النظراء",
"Real Time Received Data Usage": "استهلاك البيانات المستلمة في الوقت الفعلي",
"Real Time Sent Data Usage": "استهلاك البيانات المرسلة في الوقت الفعلي",
"Peer": "نظير",
"Peers": "النظراء",
"Peer Settings": "إعدادات النظير",
"Download All": "تنزيل الكل",
"Search Peers\\.\\.\\.": "بحث في النظراء",
"Display": "عرض",
"Sort By": "فرز حسب",
"Refresh Interval": "فترة التحديث",
"Name": "الاسم",
"Allowed IPs": "عناوين IP المسموح بها",
"Restricted": "مقيد",
"(.*) Seconds": "$1 ثانية",
"(.*) Minutes": "$1 دقيقة",
"Configuration Settings": "إعدادات التكوين",
"Peer Jobs": "وظائف النظير",
"Active Jobs": "الوظائف النشطة",
"All Active Jobs": "جميع الوظائف النشطة",
"Logs": "السجلات",
"Private Key": "المفتاح الخاص",
"\\(Required for QR Code and Download\\)": " الزامي لرمز الاستجابة السريعة والتحميل",
"\\(Required\\)": "الزامي",
"Endpoint Allowed IPs": "عناوين IP المسموح بها لنقطة النهاية",
"DNS": "DNS",
"Optional Settings": "إعدادات اختيارية",
"Pre-Shared Key": "المفتاح المشترك مسبقًا",
"MTU": "MTU",
"Persistent Keepalive": "الاستمرار في الإبقاء على الاتصال",
"Reset Data Usage": "إعادة ضبط استهلاك البيانات",
"Total": "الإجمالي",
"Sent": "تم الإرسال",
"Received": "تم الاستلام",
"Revert": "إعادة",
"Save Peer": "حفظ النظير",
"QR Code": "رمز الاستجابة السريع",
"Schedule Jobs": "جدولة الوظائف",
"Job": "وظيفة",
"Job ID": "معرف الوظيفة",
"Unsaved Job": "وظيفة غير محفوظة",
"This peer does not have any job yet\\.": "هذا النظير ليس لدية وظيفة نشطة بعد",
"if": "إذا",
"is": "هو",
"then": "ثم",
"larger than": "أكبر من",
"Date": "التاريخ",
"Restrict Peer": "تقييد النظير",
"Delete Peer": "حذف النظير",
"Edit": "تعديل",
"Delete": "حذف",
"Deleting...": "جارٍ الحذف...",
"Cancel": "إلغاء",
"Save": "حفظ",
"No active job at the moment\\.": "لايوجد وظائف نشطة في الوقت الحالي",
"Jobs Logs": "سجلات الوظائف",
"Updated at": "تم التحديث في",
"Refresh": "تحديث",
"Filter": "تصفية",
"Success": "نجاح",
"Failed": "فشل",
"Log ID": "معرف السجل",
"Message": "رسالة",
"Share Peer": "مشاركة النظير",
"Currently the peer is not sharing": "النظير لا يشارك حاليًا",
"Sharing\\.\\.\\.": "جاري المشاركة",
"Start Sharing": "بدء المشاركة",
"Stop Sharing\\.\\.\\.": "جاري ايقاف المشاركة",
"Stop Sharing": "إيقاف المشاركة",
"Access Restricted": "الوصول مقيد",
"Restrict Access": "تقيد الوصول",
"Restricting\\.\\.\\.": "جاري التقيد ...",
"Allow Access": "السماح بالوصول",
"Allowing Access\\.\\.\\.": "جاري السماح بالوصول ...",
"Download \\& QR Code is not available due to no private key set for this peer": "التنزيل ورمز الاستجابة السريعة غير متاحين نظرًا لعدم تعيين مفتاح خاص لهذا القرين",
"Add Peers": "إضافة نظراء",
"Bulk Add": "إضافة بالجملة",
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "عند إضافة الأقران بشكل جماعي، سيتم إنشاء اسم كل قرين تلقائيًا، وسيتم تخصيص عنوان IP المسموح به إلى عنوان IP التالي المتاح",
"How many peers you want to add\\?": "كم عدد النظراء التي تريد اضافتها",
"You can add up to (.*) peers": "يمكنك إضافة ما يصل إلى $1 نظير",
"Use your own Private and Public Key": "استخدم المفتاح الخاص والعام الخاص بك",
"Enter IP Address/CIDR": "أدخل عنوان IP/CIDR",
"IP Address/CIDR": "عنوان IP/CIDR",
"or": "أو",
"Pick Available IP": "اختر عنوان IP متاحًا",
"No available IP containing": "لا يوجد عنوان IP متاح يحتوي على",
"Add": "إضافة",
"Adding\\.\\.\\.": "جاري الاضافة",
"Failed to check available update": "فشل في التحقق من التحديث المتاح",
"Nice to meet you!": "تشرفت بلقائك!",
"Please fill in the following fields to finish setup": "يرجى ملء الحقول التالية لإكمال الإعداد",
"Create an account": "إنشاء حساب",
"Enter an username you like": "أدخل اسم مستخدم يعجبك",
"Enter a password": "أدخل كلمة مرور",
"\\(At least 8 characters and make sure is strong enough!\\)": "(يجب أن تكون 8 أحرف على الأقل وتأكد من قوتها!)",
"Confirm password": "تأكيد كلمة المرور",
"Next": "التالي",
"Saving\\.\\.\\.": "جارٍ الحفظ...",
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "1\\. يرجى مسح رمز الاستجابة السريعة التالي لإنشاء كلمة مرور لمرة واحدة (TOTP) باستخدام تطبيق المصادقة الذي تختاره",
"Or you can click the link below:": "أو يمكنك النقر على الرابط أدناه:",
"2\\. Enter the TOTP generated by your authenticator to verify": "2\\. أدخل كلمة المرور لمرة واحدة (TOTP) التي تم إنشاؤها بواسطة تطبيق المصادقة للتحقق",
"TOTP verified!": "تم التحقق من كلمة المرور لمرة واحدة (TOTP) بنجاح!",
"I don't need MFA": "لا أحتاج إلى المصادقة متعددة العوامل (MFA).",
"Complete": "اكتمل",
"(v[0-9.]{1,}) is now available for update!": "$1 متاح الآن للتحديث!",
"Current Version:": "الإصدار الحالي:",
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "عذرًا... هذا الرابط إما منتهي الصلاحية أو غير صالح",
"Scan QR Code with the WireGuard App to add peer": "قم بمسح رمز الاستجابة السريعة باستخدام تطبيق WireGuard لإضافة قرين",
"or click the button below to download the ": "أو انقر على الزر أدناه لتحميل ",
" file": " الملف",
"FROM ": "من ",
"(.*) is on": "(.*) قيد التشغيل",
"(.*) is off": "(.*) متوقف",
"Allowed IPs is invalid": "عناوين IP المسموح بها غير صالحة",
"Peer created successfully": "تم إنشاء القرين بنجاح",
"Please fill in all required box": "يرجى ملء جميع الحقول المطلوبة",
"Please specify amount of peers you want to add": "يرجى تحديد عدد الأقران الذين ترغب في إضافتهم",
"No more available IP can assign": "لا توجد عناوين IP متاحة للتخصيص.",
"The maximum number of peers can add is (.*)": "الحد الأقصى لعدد الأقران الذين يمكن إضافتهم هو $1",
"Generating key pairs by bulk failed": "فشل إنشاء أزواج المفاتيح بشكل جماعي.",
"Failed to add peers in bulk": "فشل في إضافة الأقران بشكل جماعي.",
"This peer already exist": "هذا القرين موجود بالفعل.",
"This IP is not available: (.*)": "عنوان IP هذا غير متاح: $1",
"Configuration does not exist": "الإعداد غير موجود",
"Peer does not exist": "القرين غير موجود",
"Please provide a valid configuration name": "يرجى تقديم اسم إعداد صالح",
"Peer saved": "تم حفظ القرين.",
"Allowed IPs already taken by another peer": "عناوين IP المسموح بها مستخدمة بالفعل بواسطة قرين آخر",
"Endpoint Allowed IPs format is incorrect": "تنسيق عناوين IP المسموح بها للنقطة النهائية غير صحيح",
"DNS format is incorrect": "تنسيق DNS غير صحيح",
"MTU format is not correct": "تنسيق MTU غير صحيح",
"Persistent Keepalive format is not correct": "تنسيق الإبقاء النشط (Keepalive) غير صحيح",
"Private key does not match with the public key": "المفتاح الخاص لا يتطابق مع المفتاح العام",
"Update peer failed when updating Pre-Shared Key": "فشل تحديث القرين عند تحديث المفتاح المشترك مسبقًا",
"Update peer failed when updating Allowed IPs": "فشل تحديث القرين عند تحديث عناوين IP المسموح بها",
"Update peer failed when saving the configuration": "فشل تحديث القرين عند حفظ الإعداد",
"Peer data usage reset successfully": "تمت إعادة تعيين استخدام بيانات القرين بنجاح",
"Peer download started": "بدأ تنزيل القرين",
"Please specify one or more peers": "يرجى تحديد قرين واحد أو أكثر",
"Share link failed to create. Reason: (.*)": "فشل إنشاء رابط المشاركة. السبب: $1",
"Link expire date updated": "تم تحديث تاريخ انتهاء صلاحية الرابط.",
"Link expire date failed to update. Reason: (.*)": "فشل تحديث تاريخ انتهاء صلاحية الرابط. السبب: $1",
"Peer job saved": "تم حفظ وظيفة القرين",
"Please specify job": "يرجى تحديد الوظيفة.",
"Please specify peer and configuration": "يرجى تحديد القرين والإعداد",
"Peer job deleted": "تم حذف وظيفة القرين",
"API Keys function is successfully enabled": "تم تفعيل وظيفة مفاتيح API بنجاح",
"API Keys function is successfully disabled": "تم تعطيل وظيفة مفاتيح API بنجاح",
"API Keys function is failed to enable": "فشل تفعيل وظيفة مفاتيح API",
"API Keys function is failed to disable": "فشل تعطيل وظيفة مفاتيح API",
"WGDashboard API Keys function is disabled": "تم تعطيل وظيفة مفاتيح API في لوحة WGDashboard",
"WireGuard configuration path saved": "تم حفظ مسار إعداد WireGuard",
"API Key deleted": "تم حذف مفتاح API",
"API Key created": "تم إنشاء مفتاح API",
"Sign in session ended, please sign in again": "انتهت جلسة تسجيل الدخول، يرجى تسجيل الدخول مرة أخرى",
"Please specify an IP Address (v4/v6)": "يرجى تحديد عنوان IP (v4/v6)",
"Please provide ipAddress and count": "يرجى تقديم عنوان IP والعدد",
"Please provide ipAddress": "يرجى تقديم عنوان IP",
"Dashboard Language": "لغة لوحة التحكم",
"Dashboard language update failed": "فشل تحديث لغة لوحة التحكم",
"Peer Remote Endpoint": "النقطة الطرفية البعيدة للقرين",
"New Configuration": "إعداد جديد",
"Configuration Name": "اسم الإعداد",
"Configuration name is invalid. Possible reasons:": "اسم الإعداد غير صالح. الأسباب المحتملة:",
"Configuration name already exist\\.": "اسم الإعداد موجود بالفعل",
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "يمكن أن يحتوي اسم الإعداد على 15 حرفًا فقط، بما في ذلك الحروف الكبيرة/الصغيرة، الأرقام، الشرطة السفلية، علامة التساوي، علامة الزائد، النقطة والشرطة",
"Invalid Port": "المنفذ غير صالح",
"Save Configuration": "حفظ الإعداد",
"IP Address/CIDR is invalid": "عنوان IP/CIDR غير صالح",
"IP Address": "عنوان IP",
"Enter IP Address / Hostname": "أدخل عنوان IP / اسم المضيف",
"IP Address / Hostname": "عنوان IP / اسم المضيف",
"Dashboard IP Address \\& Listen Port": "عنوان IP لوحة التحكم ومنفذ الاستماع",
"Count": "العدد",
"Geolocation": "الموقع الجغرافي",
"Is Alive": "نشط",
"Average / Min / Max Round Trip Time": "متوسط / أدنى / أقصى وقت للرحلة الكاملة",
"Sent / Received / Lost Package": "الحزم المرسلة / المستلمة / المفقودة",
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "يتطلب إعادة تشغيل يدوي للوحة WGDashboard لتطبيق التغييرات على عنوان IP ومنفذ الاستماع",
"Restore Configuration": "استعادة الإعداد",
"Step (.*)": "الخطوة $1",
"Select a backup you want to restore": "حدد النسخة الاحتياطية التي تريد استعادتها",
"Click to change a backup": "انقر لتغيير النسخة الاحتياطية",
"Selected Backup": "النسخة الاحتياطية المحددة",
"You don't have any configuration to restore": "ليس لديك أي إعداد لاستعادته",
"Help": "مساعدة",
"Backup": "نسخة احتياطية",
"([0-9].*) Backups?": "$1 نسخة احتياطية؟",
"Yes": "نعم",
"No": "لا",
"Backup not selected": "لم يتم تحديد النسخة الاحتياطية",
"Confirm \\& edit restore information": "تأكيد وتحرير معلومات الاستعادة",
"(.*) Available IP Address": "عنوان IP متاح $1",
"Database File": "ملف قاعدة البيانات",
"Contain": "يحتوي على",
"Restricted Peers?": "الأقران المقيدون؟",
"Restore": "استعادة",
"Restoring": "جاري الاستعادة",
"WGDashboard Settings": "إعدادات WGDashboard",
"Peers Settings": "إعدادات الأقران",
"WireGuard Configuration Settings": "إعدادات تكوين WireGuard",
"Appearance": "المظهر",
"Theme": "السمة",
"Language": "اللغة",
"Account Settings": "إعدادات الحساب",
"Peer Default Settings": "الإعدادات الافتراضية للأقران",
"Toggle When Start Up": "التبديل عند بدء التشغيل",
"Other Settings": "إعدادات أخرى",
"Select Peers": "اختر الأقران",
"Backup & Restore": "النسخ الاحتياطي والاستعادة",
"Delete Configuration": "حذف الإعداد",
"Create Backup": "إنشاء نسخة احتياطية",
"No backup yet, click the button above to create backup\\.": "لا توجد نسخة احتياطية حتى الآن، انقر على الزر أعلاه لإنشاء نسخة احتياطية",
"Are you sure to delete this backup\\?": "هل أنت متأكد من حذف هذه النسخة الاحتياطية؟",
"Are you sure to restore this backup?\\": "هل أنت متأكد من استعادة هذه النسخة الاحتياطية؟",
"Backup Date": "تاريخ النسخة الاحتياطية",
"File": "الملف",
"Are you sure to delete this configuration\\?": "هل أنت متأكد من حذف هذا الإعداد؟",
"Once you deleted this configuration\\:": "بمجرد حذف هذا الإعداد:",
"All connected peers will get disconnected": "سيتم فصل جميع الأقران المتصلين",
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "سيتم حذف كل من ملف التكوين (.conf) وجدول قاعدة البيانات المرتبط بهذا التكوين",
"Checking backups...": "جارٍ التحقق من النسخ الاحتياطية...",
"This configuration have ([0-9].*) backups": "يحتوي هذا التكوين على $1 نسخة احتياطية",
"This configuration have no backup": "لا يحتوي هذا التكوين على نسخ احتياطية",
"If you're sure, please type in the configuration name below and click Delete": "إذا كنت متأكدًا، يرجى كتابة اسم الإعداد أدناه والنقر على حذف",
"Select All": "تحديد الكل",
"Clear Selection": "مسح التحديد",
"([0-9].*) Peers?": "$1 قرين؟",
"Downloading": "جاري التنزيل",
"Download Finished": "اكتمل التنزيل",
"Done": "تم",
"Are you sure to delete": "هل أنت متأكد من الحذف",
"Are you sure to delete this peer\\?": "هل أنت متأكد من حذف هذا القرين؟",
"Configuration deleted": "تم حذف الإعداد",
"Configuration saved": "تم حفظ الإعداد",
"WGDashboard language update failed": "فشل تحديث لغة لوحة WGDashboard",
"Configuration restored": "تم استعادة الإعداد",
"Allowed IP already taken by another peer": "عنوان IP المسموح به مستخدم بالفعل بواسطة قرين آخر",
"Failed to allow access of peer (.*)": "فشل السماح بوصول القرين $1",
"Failed to save configuration through WireGuard": "فشل حفظ الإعداد من خلال WireGuard",
"Allow access successfully": "تم السماح بالوصول بنجاح",
"Deleted ([0-9]{1,}) peer\\(s\\)": "تم حذف $1 قرين(قرين)",
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "تم حذف $1 قرين(قرين) بنجاح. فشل في حذف $2 قرين(قرين)",
"Restricted ([0-9]{1,}) peer\\(s\\)": "تم تقييد $1 قرين(قرين).",
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "تم تقييد $1 قرين(قرين) بنجاح. فشل في تقييد $2 قرين(قرين)."
}

View File

@ -308,5 +308,5 @@
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "Při hromadném importu bude jméno každého peera vygenerované automaticky, a povolená IP adresa bude nastavena na další v pořadí",
"How many peers you want to add\\?": "Kolik peerů chcete přidat?",
"Adding\\.\\.\\.": "Přidávám...",
"Dashboard IP Address \\& Listen Port": ""
}
"Dashboard IP Address \\& Listen Port": "Dashboard IP adresa a otevřený port"
}

312
src/static/locale/ko.json Normal file
View File

@ -0,0 +1,312 @@
{
"Welcome to": "환영합니다",
"Username": "사용자 이름",
"Password": "비밀번호",
"OTP from your authenticator": "인증기에서 생성된 OTP",
"Sign In": "로그인",
"Signing In\\.\\.\\.": "로그인하는 중...",
"Access Remote Server": "원격 서버 접속",
"Server": "서버",
"Click": "클릭",
"Pinging...": "핑 테스트 중...",
"to add your server": "서버를 추가하려면",
"Server List": "서버 목록",
"Sorry, your username or password is incorrect.": "죄송합니다. 사용자 이름 또는 비밀번호가 올바르지 않습니다.",
"Home": "홈",
"Settings": "설정",
"Tools": "도구",
"Sign Out": "로그아웃",
"Checking for update...": "업데이트 확인 중...",
"You're on the latest version": "최신 버전을 사용 중입니다",
"WireGuard Configurations": "WireGuard 구성",
"You don't have any WireGuard configurations yet. Please check the configuration folder or change it in Settings. By default the folder is /etc/wireguard.": "아직 WireGuard 구성이 없습니다. 구성 폴더를 확인하거나 설정에서 변경하세요. 기본 폴더는 /etc/wireguard 입니다.",
"Configuration": "구성",
"Configurations": "구성들",
"Peers Default Settings": "기본 피어 설정",
"Dashboard Theme": "대시보드 테마",
"Light": "밝은 테마",
"Dark": "어두운 테마",
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "이 설정은 전역적으로 변경되며, 모든 피어의 QR 코드 및 구성 파일에 적용됩니다.",
"WireGuard Configurations Settings": "WireGuard 구성 설정",
"Configurations Directory": "구성 디렉토리",
"Remember to remove / at the end of your path. e.g /etc/wireguard": "경로 끝의 '/'를 제거하세요. 예: /etc/wireguard",
"WGDashboard Account Settings": "WGDashboard 계정 설정",
"Current Password": "현재 비밀번호",
"New Password": "새 비밀번호",
"Repeat New Password": "새 비밀번호 확인",
"Update Password": "비밀번호 변경",
"Multi-Factor Authentication \\(MFA\\)": "다중 인증 (MFA)",
"Reset": "재설정",
"Setup": "설정",
"API Keys": "API 키",
"API Key": "API 키",
"Key": "키",
"Enabled": "활성화됨",
"Disabled": "비활성화됨",
"No WGDashboard API Key": "WGDashboard API 키가 없습니다",
"Expire At": "만료일",
"Are you sure to delete this API key\\?": "이 API 키를 삭제하시겠습니까?",
"Create API Key": "API 키 생성",
"When should this API Key expire\\?": "이 API 키는 언제 만료되나요?",
"Never Expire": "만료 없음",
"Don't think that's a good idea": "별로 좋은 생각이 아닌 것 같습니다",
"Creating\\.\\.\\.": "생성 중...",
"Create": "생성",
"Status": "상태",
"On": "켜짐",
"Off": "꺼짐",
"Turning On\\.\\.\\.": "켜는 중...",
"Turning Off\\.\\.\\.": "끄는 중...",
"Address": "주소",
"Listen Port": "수신 포트",
"Public Key": "공개 키",
"Connected Peers": "연결된 피어",
"Total Usage": "총 사용량",
"Total Received": "총 수신량",
"Total Sent": "총 송신량",
"Peers Data Usage": "피어 데이터 사용량",
"Real Time Received Data Usage": "실시간 수신 데이터 사용량",
"Real Time Sent Data Usage": "실시간 송신 데이터 사용량",
"Peer": "피어",
"Peers": "피어들",
"Peer Settings": "피어 설정",
"Download All": "전체 다운로드",
"Search Peers\\.\\.\\.": "피어 검색...",
"Display": "표시",
"Sort By": "정렬 기준",
"Refresh Interval": "새로고침 간격",
"Name": "이름",
"Allowed IPs": "허용된 IP",
"Restricted": "제한됨",
"(.*) Seconds": "$1 초",
"(.*) Minutes": "$1 분",
"Configuration Settings": "구성 설정",
"Peer Jobs": "피어 작업",
"Active Jobs": "활성 작업",
"All Active Jobs": "모든 활성 작업",
"Logs": "로그",
"Private Key": "개인 키",
"\\(Required for QR Code and Download\\)": "(QR 코드 및 다운로드에 필요)",
"\\(Required\\)": "(필수)",
"Endpoint Allowed IPs": "엔드포인트 허용된 IP",
"DNS": "DNS",
"Optional Settings": "선택적 설정",
"Pre-Shared Key": "사전 공유 키",
"MTU": "MTU",
"Persistent Keepalive": "Keepalive 지속 유지",
"Reset Data Usage": "데이터 사용량 초기화",
"Total": "총합",
"Sent": "전송됨",
"Received": "수신됨",
"Revert": "되돌리기",
"Save Peer": "피어 저장",
"QR Code": "QR 코드",
"Schedule Jobs": "작업 예약",
"Job": "작업",
"Job ID": "작업 ID",
"Unsaved Job": "저장되지 않은 작업",
"This peer does not have any job yet\\.": "이 피어에는 아직 작업이 없습니다.",
"if": "만약",
"is": "이다",
"then": "그러면",
"larger than": "보다 큼",
"Date": "날짜",
"Restrict Peer": "피어 제한",
"Delete Peer": "피어 삭제",
"Edit": "수정",
"Delete": "삭제",
"Deleting...": "삭제 중...",
"Cancel": "취소",
"Save": "저장",
"No active job at the moment\\.": "현재 활성 작업이 없습니다.",
"Jobs Logs": "작업 로그",
"Updated at": "업데이트된 날짜",
"Refresh": "새로고침",
"Filter": "필터",
"Success": "성공",
"Failed": "실패",
"Log ID": "로그 ID",
"Message": "메시지",
"Share Peer": "피어 공유",
"Currently the peer is not sharing": "현재 이 피어는 공유 중이 아닙니다",
"Sharing\\.\\.\\.": "공유 중...",
"Stop Sharing\\.\\.\\.": "공유 중지 중...",
"Start Sharing": "공유 시작",
"Stop Sharing": "공유 중지",
"Access Restricted": "접근 제한됨",
"Restrict Access": "접근 제한",
"Restricting\\.\\.\\.": "제한 중...",
"Allow Access": "접근 허용",
"Allowing Access\\.\\.\\.": "접근 허용 중...",
"Download \\& QR Code is not available due to no private key set for this peer": "이 피어에 대해 설정된 개인 키가 없기 때문에 다운로드 & QR 코드를 사용할 수 없습니다.",
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "피어를 일괄로 추가하면 각 피어의 이름이 자동으로 생성되고 허용된 IP는 사용 가능한 다음 IP에 할당됩니다.",
"Add Peers": "피어 추가",
"Bulk Add": "일괄 추가",
"How many peers you want to add\\?": "몇 개의 피어를 추가하시겠습니까?",
"You can add up to (.*) peers": "$1 개의 피어까지 추가할 수 있습니다",
"Use your own Private and Public Key": "자체 개인 및 공개 키 사용",
"Enter IP Address/CIDR": "IP 주소/CIDR 입력",
"IP Address/CIDR": "IP 주소/CIDR",
"or": "또는",
"Pick Available IP": "사용 가능한 IP 선택",
"No available IP containing": "포함된 사용 가능한 IP가 없습니다",
"Add": "추가",
"Adding\\.\\.\\.": "추가 중...",
"Failed to check available update": "사용 가능한 업데이트 확인 실패",
"Nice to meet you!": "만나서 반가워요!",
"Please fill in the following fields to finish setup": "설정을 완료하려면 아래 필드를 작성하세요",
"Create an account": "계정 생성",
"Enter an username you like": "원하는 사용자 이름 입력",
"Enter a password": "비밀번호 입력",
"\\(At least 8 characters and make sure is strong enough!\\)": "(최소 8자 이상이고 강력한 비밀번호여야 합니다!)",
"Confirm password": "비밀번호 확인",
"Next": "다음",
"Saving\\.\\.\\.": "저장 중...",
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "1. 다음 QR 코드를 스캔하여 선택한 인증기로 TOTP를 생성하세요",
"Or you can click the link below:": "또는 아래 링크를 클릭하세요",
"2\\. Enter the TOTP generated by your authenticator to verify": "2. 인증기에서 생성된 TOTP를 입력하여 확인하세요",
"TOTP verified!": "TOTP가 확인되었습니다!",
"I don't need MFA": "MFA가 필요 없습니다",
"Complete": "완료",
"(v[0-9.]{1,}) is now available for update!": "$1 업데이트가 가능합니다!",
"Current Version:": "현재 버전:",
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "앗... 이 링크는 만료되었거나 잘못되었습니다.",
"Scan QR Code with the WireGuard App to add peer": "WireGuard 앱으로 QR 코드를 스캔하여 피어를 추가하세요",
"or click the button below to download the ": "또는 아래 버튼을 클릭하여 다운로드하세요 ",
" file": " 파일",
"FROM ": "FROM ",
"(.*) is on": "$1 켜짐",
"(.*) is off": "$1 꺼짐",
"Allowed IPs is invalid": "허용된 IP가 올바르지 않습니다",
"Peer created successfully": "피어가 성공적으로 생성되었습니다",
"Please fill in all required box": "모든 필수 항목을 입력하세요",
"Please specify amount of peers you want to add": "추가할 피어의 수를 지정하세요",
"No more available IP can assign": "더 이상 할당 가능한 IP가 없습니다",
"The maximum number of peers can add is (.*)": "추가할 수 있는 피어의 최대 수는 $1 개입니다",
"Generating key pairs by bulk failed": "일괄 키 쌍 생성 실패",
"Failed to add peers in bulk": "일괄 피어 추가 실패",
"This peer already exist": "이 피어는 이미 존재합니다",
"This IP is not available: (.*)": "이 IP는 사용할 수 없습니다: $1",
"Configuration does not exist": "구성이 존재하지 않습니다",
"Peer does not exist": "피어가 존재하지 않습니다",
"Please provide a valid configuration name": "유효한 구성 이름을 입력하세요",
"Peer saved": "피어가 저장되었습니다",
"Allowed IPs already taken by another peer": "허용된 IP가 다른 피어에 의해 이미 사용 중입니다",
"Endpoint Allowed IPs format is incorrect": "엔드포인트 허용된 IP 형식이 올바르지 않습니다",
"DNS format is incorrect": "DNS 형식이 올바르지 않습니다",
"MTU format is not correct": "MTU 형식이 올바르지 않습니다",
"Persistent Keepalive format is not correct": "지속적 Keepalive 형식이 올바르지 않습니다",
"Private key does not match with the public key": "개인 키가 공개 키와 일치하지 않습니다",
"Update peer failed when updating Pre-Shared Key": "사전 공유 키 업데이트 중 피어 업데이트 실패",
"Update peer failed when updating Allowed IPs": "허용된 IP 업데이트 중 피어 업데이트 실패",
"Update peer failed when saving the configuration": "구성 저장 중 피어 업데이트 실패",
"Peer data usage reset successfully": "피어 데이터 사용량이 성공적으로 초기화되었습니다",
"Peer download started": "피어 다운로드가 시작되었습니다",
"Please specify one or more peers": "하나 이상의 피어를 지정하세요",
"Share link failed to create. Reason: (.*)": "공유 링크 생성에 실패했습니다. 이유: $1",
"Link expire date updated": "링크 만료 날짜가 업데이트되었습니다",
"Link expire date failed to update. Reason: (.*)": "링크 만료 날짜 업데이트에 실패했습니다. 이유: $1",
"Peer job saved": "피어 작업이 저장되었습니다",
"Please specify job": "작업을 지정하세요",
"Please specify peer and configuration": "피어와 구성을 지정하세요",
"Peer job deleted": "피어 작업이 삭제되었습니다",
"API Keys function is successfully enabled": "API 키 기능이 성공적으로 활성화되었습니다",
"API Keys function is successfully disabled": "API 키 기능이 성공적으로 비활성화되었습니다",
"API Keys function is failed to enable": "API 키 기능 활성화에 실패했습니다",
"API Keys function is failed to disable": "API 키 기능 비활성화에 실패했습니다",
"WGDashboard API Keys function is disabled": "WGDashboard API 키 기능이 비활성화되었습니다",
"WireGuard configuration path saved": "WireGuard 구성 경로가 저장되었습니다",
"API Key deleted": "API 키가 삭제되었습니다",
"API Key created": "API 키가 생성되었습니다",
"Sign in session ended, please sign in again": "로그인 세션이 종료되었습니다. 다시 로그인해주세요",
"Please specify an IP Address (v4/v6)": "IP 주소 (v4/v6)를 지정하세요",
"Please provide ipAddress and count": "ipAddress와 개수를 제공하세요",
"Please provide ipAddress": "ipAddress를 제공하세요",
"Dashboard Language": "대시보드 언어",
"Dashboard language update failed": "대시보드 언어 업데이트 실패",
"Peer Remote Endpoint": "피어 원격 엔드포인트",
"New Configuration": "새 구성",
"Configuration Name": "구성 이름",
"Configuration name is invalid. Possible reasons:": "구성 이름이 올바르지 않습니다. 가능한 원인:",
"Configuration name already exist\\.": "구성 이름이 이미 존재합니다.",
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "구성 이름은 15자 이하의 소문자/대문자 알파벳, 숫자, 밑줄, 등호, 더하기 기호, 마침표 및 하이픈만 포함할 수 있습니다.",
"Invalid Port": "유효하지 않은 포트",
"Save Configuration": "구성 저장",
"IP Address/CIDR is invalid": "IP 주소/CIDR이 올바르지 않습니다",
"IP Address": "IP 주소",
"Enter IP Address / Hostname": "IP 주소 / 호스트명 입력",
"IP Address / Hostname": "IP 주소 / 호스트명",
"Dashboard IP Address \\& Listen Port": "대시보드 IP 주소 & 수신 포트",
"Count": "개수",
"Geolocation": "위치",
"Is Alive": "활성 상태",
"Average / Min / Max Round Trip Time": "평균 / 최소 / 최대 왕복 시간",
"Sent / Received / Lost Package": "전송 / 수신 / 손실 패킷",
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "IP 주소 및 수신 포트 변경 사항을 적용하려면 WGDashboard를 수동으로 재시작해야 합니다",
"Restore Configuration": "구성 복원",
"Step (.*)": "단계 $1",
"Select a backup you want to restore": "복원할 백업을 선택하세요",
"Click to change a backup": "백업을 변경하려면 클릭하세요",
"Selected Backup": "선택된 백업",
"You don't have any configuration to restore": "복원할 구성이 없습니다",
"Help": "도움말",
"Backup": "백업",
"([0-9].*) Backups?": "$1 백업",
"Yes": "예",
"No": "아니오",
"Backup not selected": "백업이 선택되지 않았습니다",
"Confirm \\& edit restore information": "복원 정보 확인 & 편집",
"(.*) Available IP Address": "$1 사용 가능한 IP 주소",
"Database File": "데이터베이스 파일",
"Contain": "포함",
"Restricted Peers?": "제한된 피어?",
"Restore": "복원",
"Restoring": "복원 중...",
"WGDashboard Settings": "WGDashboard 설정",
"Peers Settings": "피어 설정",
"WireGuard Configuration Settings": "WireGuard 구성 설정",
"Appearance": "외관",
"Theme": "테마",
"Language": "언어",
"Account Settings": "계정 설정",
"Peer Default Settings": "피어 기본 설정",
"Toggle When Start Up": "시작 시 실행",
"Other Settings": "기타 설정",
"Select Peers": "피어 선택",
"Backup & Restore": "백업 & 복원",
"Delete Configuration": "구성 삭제",
"Create Backup": "백업 생성",
"No backup yet, click the button above to create backup\\.": "아직 백업이 없습니다. 위의 버튼을 클릭하여 백업을 생성하세요.",
"Are you sure to delete this backup\\?": "이 백업을 삭제하시겠습니까?",
"Are you sure to restore this backup?\\": "이 백업을 복원하시겠습니까?",
"Backup Date": "백업 날짜",
"File": "파일",
"Are you sure to delete this configuration\\?": "이 구성을 삭제하시겠습니까?",
"Once you deleted this configuration\\:": "이 구성을 삭제하면:",
"All connected peers will get disconnected": "연결된 모든 피어의 연결이 끊깁니다",
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "이 구성과 관련된 구성 파일 (.conf) 및 데이터베이스 테이블이 삭제됩니다",
"Checking backups...": "백업 확인 중...",
"This configuration have ([0-9].*) backups": "이 구성에는 $1 개의 백업이 있습니다",
"This configuration have no backup": "이 구성에는 백업이 없습니다",
"If you're sure, please type in the configuration name below and click Delete": "확실하다면, 아래에 구성 이름을 입력하고 삭제를 클릭하세요",
"Select All": "전체 선택",
"Clear Selection": "선택 해제",
"([0-9].*) Peers?": "$1 피어",
"Downloading": "다운로드 중",
"Download Finished": "다운로드 완료",
"Done": "완료",
"Are you sure to delete": "정말로 삭제하시겠습니까",
"Are you sure to delete this peer\\?": "정말로 이 피어를 삭제하시겠습니까",
"Configuration deleted": "구성이 삭제되었습니다",
"Configuration saved": "구성이 저장되었습니다",
"WGDashboard language update failed": "WGDashboard 언어 업데이트 실패",
"Configuration restored": "구성이 복원되었습니다",
"Allowed IP already taken by another peer": "허용된 IP가 다른 피어에 의해 이미 사용 중입니다",
"Failed to allow access of peer (.*)": "피어 (.*)의 접근 허용에 실패했습니다",
"Failed to save configuration through WireGuard": "WireGuard를 통한 구성 저장에 실패했습니다",
"Allow access successfully": "접근 허용에 성공했습니다",
"Deleted ([0-9]{1,}) peer\\(s\\)": "$1 피어가 삭제되었습니다",
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "$1 피어가 성공적으로 삭제되었습니다. $2 피어 삭제에 실패했습니다",
"Restricted ([0-9]{1,}) peer\\(s\\)": "$1 피어가 제한되었습니다",
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "$1 피어가 성공적으로 제한되었습니다. $2 피어 제한에 실패했습니다"
}