i18n(panel): migrate hardcoded panel strings to en-US and translate all locales

Surface ~400 hardcoded English labels, tooltips, placeholders, dt/divider
text, modal okText/cancelText, and Spin loading from the panel pages
(clients/groups/inbounds/nodes/settings/xray/sub/index) into
web/translation/en-US.json under existing pages.<page>.* namespaces, with
JSX swapped to t(...). Brand and protocol identifiers (TLS, MTU, SNI,
NordVPN, Cloudflare WARP, etc.) stay literal.

Sync all 12 non-English locales (ar-EG, es-ES, fa-IR, id-ID, ja-JP,
pt-BR, ru-RU, tr-TR, uk-UA, vi-VN, zh-CN, zh-TW) to match en-US's
structure and translate the 521 new key paths per locale. Every locale
file now has 1539 lines, mirroring en-US ordering.

Also remove a dead duplicate "info": "Info" key under pages.inbounds
that collided with the new pages.inbounds.info.* object.

Backend: bulk attach/detach errors in web/service/client.go now route
through logger.Warningf (so they appear under /panel/api/server/logs/)
instead of only living on the response payload.
This commit is contained in:
MHSanaei
2026-05-28 18:03:07 +02:00
parent 0829f1ecd4
commit 72b97efa8a
34 changed files with 6391 additions and 1125 deletions
+496 -79
View File
@@ -8,15 +8,22 @@
"save": "حفظ",
"logout": "تسجيل خروج",
"create": "إنشاء",
"add": "إضافة",
"remove": "إزالة",
"update": "تحديث",
"copy": "نسخ",
"copied": "اتنسخ",
"more": "المزيد",
"download": "تحميل",
"remark": "ملاحظة",
"enable": "مفعل",
"protocol": "بروتوكول",
"search": "بحث",
"filter": "فلترة",
"filter": "تصفية",
"all": "الكل",
"from": "من",
"to": "إلى",
"done": "تم",
"loading": "جاري التحميل...",
"refresh": "تحديث",
"clear": "مسح",
@@ -27,28 +34,28 @@
"check": "شيك",
"indefinite": "غير محدد",
"unlimited": "غير محدود",
"none": "مفيش",
"none": "لا شيء",
"qrCode": "كود QR",
"info": "معلومات أكتر",
"edit": عديل",
"edit": حرير",
"delete": "مسح",
"reset": "إعادة ضبط",
"reset": "إعادة تعيين",
"noData": "لا توجد بيانات.",
"copySuccess": "اتنسخ بنجاح",
"sure": "متأكد؟",
"encryption": "تشفير",
"useIPv4ForHost": "استخدم IPv4 للمضيف",
"transmission": "نقل",
"host": "المستضيف",
"path": "مسار",
"host": "المضيف",
"path": "المسار",
"camouflage": "تمويه",
"status": "الحالة",
"enabled": "مفعل",
"disabled": "معطل",
"depleted": "خلص",
"depletingSoon": "هينتهي قريب",
"offline": "أوفلاين",
"online": "أونلاين",
"offline": "غير متصل",
"online": "متصل",
"domainName": "اسم الدومين",
"monitor": "المسمع IP",
"certificate": "شهادة رقمية",
@@ -95,10 +102,11 @@
"dark": "داكن",
"ultraDark": "داكن جدًا",
"dashboard": "نظرة عامة",
"inbounds": "الإدخالات",
"inbounds": "الواردات",
"clients": "العملاء",
"groups": "المجموعات",
"nodes": "النودز",
"settings": "إعدادات البانل",
"settings": "إعدادات اللوحة",
"xray": "إعدادات Xray",
"apiDocs": "توثيق API",
"logout": "تسجيل خروج",
@@ -120,13 +128,13 @@
},
"index": {
"title": "نظرة عامة",
"cpu": "المعالج",
"cpu": "CPU",
"logicalProcessors": "المعالجات المنطقية",
"frequency": "التردد",
"swap": "Swap",
"storage": "تخزين",
"memory": "رام",
"threads": "خيوط المعالجة",
"memory": "RAM",
"threads": "خيوط",
"xrayStatus": "Xray",
"stopXray": "إيقاف",
"restartXray": "إعادة تشغيل",
@@ -143,7 +151,7 @@
"xrayStatusUnknown": "مش معروف",
"xrayStatusRunning": "شغالة",
"xrayStatusStop": "متوقفة",
"xrayStatusError": "فيها غلطة",
"xrayStatusError": "خطأ",
"xrayErrorPopoverTitle": "حصل خطأ أثناء تشغيل Xray",
"operationHours": "مدة التشغيل",
"systemHistoryTitle": "تاريخ النظام",
@@ -186,14 +194,14 @@
"customGeoTitle": "GeoSite / GeoIP مخصص",
"customGeoAdd": "إضافة",
"customGeoType": "النوع",
"customGeoAlias": "الاسم المستعار",
"customGeoAlias": "اسم مستعار",
"customGeoUrl": "URL",
"customGeoEnabled": "مفعّل",
"customGeoLastUpdated": "آخر تحديث",
"customGeoExtColumn": "التوجيه (ext:…)",
"customGeoToastUpdateAll": "تم تحديث جميع المصادر المخصصة",
"customGeoActions": "إجراءات",
"customGeoEdit": عديل",
"customGeoEdit": حرير",
"customGeoDelete": "حذف",
"customGeoDownload": "تحديث الآن",
"customGeoModalAdd": "إضافة geo مخصص",
@@ -228,7 +236,7 @@
"dontRefresh": "التثبيت شغال، متعملش Refresh للصفحة",
"logs": "السجلات",
"config": "الإعدادات",
"backup": "نسخة احتياطية",
"backup": "نسخ احتياطي",
"backupTitle": "نسخ احتياطي واستعادة",
"exportDatabase": "اخزن نسخة",
"exportDatabaseDesc": "اضغط عشان تحمل ملف .db يحتوي على نسخة احتياطية لقاعدة البيانات الحالية على جهازك.",
@@ -241,18 +249,18 @@
"getConfigError": "حدث خطأ أثناء استرجاع ملف الإعدادات"
},
"inbounds": {
"title": "الإدخالات",
"title": "الواردات",
"totalDownUp": "إجمالي المرسل/المستقبل",
"totalUsage": "إجمالي الاستخدام",
"inboundCount": "عدد الإدخالات",
"operate": "القائمة",
"enable": "مفعل",
"remark": "ملاحظة",
"node": "نود",
"node": "العقدة",
"deployTo": "نشر على",
"localPanel": "بانل محلي",
"fallbacks": {
"title": "الـ Fallbacks",
"title": "Fallbacks",
"help": "عند وصول اتصال إلى هذا الـ inbound لا يطابق أي عميل، يتم توجيهه إلى inbound آخر. اختر فرعًا أدناه وسيتم ملء حقول التوجيه (SNI / ALPN / Path / xver) تلقائيًا من نقل الفرع — في الغالب لا تحتاج إلى أي تعديل إضافي. يجب أن يستمع كل فرع على 127.0.0.1 مع security=none.",
"empty": "لا توجد fallbacks بعد",
"add": "إضافة fallback",
@@ -269,15 +277,15 @@
"defaultCatchAll": "افتراضي — يلتقط أي شيء آخر"
},
"protocol": "بروتوكول",
"port": "بورت",
"portMap": "خريطة البورت",
"traffic": "الترافيك",
"port": "المنفذ",
"portMap": "تعيين المنفذ",
"traffic": "حركة المرور",
"details": "تفاصيل",
"transportConfig": "نقل",
"transportConfig": "النقل",
"expireDate": "المدة",
"createdAt": "تاريخ الإنشاء",
"updatedAt": "تاريخ التحديث",
"resetTraffic": "إعادة ضبط الترافيك",
"resetTraffic": "إعادة تعيين حركة المرور",
"addInbound": "أضف إدخال",
"generalActions": "إجراءات عامة",
"modifyInbound": "تعديل الإدخال",
@@ -292,11 +300,29 @@
"delAllClients": "حذف جميع العملاء",
"delAllClientsConfirmTitle": "حذف جميع العملاء البالغ عددهم {count} من \"{remark}\"؟",
"delAllClientsConfirmContent": "يزيل كل عميل من هذا الإدخال ويحذف سجلات حركة المرور الخاصة بهم. يتم الاحتفاظ بالإدخال نفسه. لا يمكن التراجع عن هذا.",
"attachClients": "إرفاق عملاء بـ…",
"addClientsToGroup": "إضافة عملاء إلى مجموعة…",
"attachClientsTitle": "إرفاق عملاء من «{remark}»",
"attachClientsDesc": "يربط نفس {count} عميل (UUID/كلمة المرور وحركة المرور المشتركة) بالواردات المحددة. يبقون في هذا الوارد أيضاً.",
"attachClientsTargets": "الواردات الهدف",
"attachClientsNoTargets": "لا توجد واردات متوافقة أخرى للإرفاق.",
"attachClientsResult": "أُرفق {attached}، تم تخطي {skipped}.",
"attachClientsResultMixed": "أُرفق {attached}، تخطي {skipped}، أخطاء {errors}.",
"attachClientsSelectLabel": "العملاء للإرفاق",
"attachClientsSearchPlaceholder": "ابحث بالبريد أو التعليق",
"attachClientsStatusDisabled": "معطل",
"attachClientsSelectedCount": "{selected} من {total} محدد",
"detachClients": "فصل العملاء",
"detachClientsTitle": "فصل عملاء من «{remark}»",
"detachClientsDesc": "يزيل العميل (العملاء) المحدد من هذا الوارد فقط. تُحفظ سجلات العملاء (استخدم Delete للإزالة الكاملة). المصدر يحتوي على {count} عميل إجمالاً.",
"detachClientsResult": "فُصل {detached}، تم تخطي {skipped}.",
"detachClientsResultMixed": "فُصل {detached}، تخطي {skipped}، أخطاء {errors}.",
"detachClientsSelectLabel": "العملاء للفصل",
"exportLinksTitle": "تصدير روابط الإدخال",
"exportSubsTitle": "تصدير روابط الاشتراك",
"exportAllLinksTitle": "تصدير كل روابط الإدخالات",
"exportAllSubsTitle": "تصدير كل روابط الاشتراكات",
"inboundJsonTitle": "JSON الإدخال",
"inboundJsonTitle": "JSON الوارد",
"deleteClient": "حذف العميل",
"deleteClientContent": "متأكد إنك عايز تحذف العميل؟",
"resetTrafficContent": "متأكد إنك عايز تعيد ضبط الترافيك؟",
@@ -306,7 +332,7 @@
"destinationPort": "بورت الوجهة",
"targetAddress": "عنوان الهدف",
"monitorDesc": "سيبها فاضية لو عايز تستمع على كل الـ IPs",
"meansNoLimit": "= غير محدود. (الوحدة: جيجابايت)",
"meansNoLimit": "= غير محدود. (الوحدة: GB)",
"totalFlow": "إجمالي التدفق",
"leaveBlankToNeverExpire": "سيبها فاضية عشان ماتنتهيش",
"noRecommendKeepDefault": "ننصح باستخدام الافتراضي",
@@ -333,7 +359,7 @@
"delDepletedClients": "حذف العملاء اللي خلصت",
"delDepletedClientsTitle": "حذف العملاء اللي خلصت",
"delDepletedClientsContent": "متأكد إنك عايز تحذف كل العملاء اللي خلصت؟",
"email": "الإيميل",
"email": "البريد",
"emailDesc": "ادخل إيميل فريد.",
"IPLimit": "تحديد IP",
"IPLimitDesc": "بيعطل الإدخال لو العدد زاد عن القيمة المحددة. (0 = تعطيل)",
@@ -341,9 +367,10 @@
"IPLimitlogDesc": "سجل تاريخ الـ IPs. (عشان تفعل الإدخال بعد التعطيل، امسح السجل)",
"IPLimitlogclear": "امسح السجل",
"setDefaultCert": "استخدم شهادة البانل",
"streamTab": "الدفق",
"setDefaultCertEmpty": "لا توجد شهادة معدّة للوحة. عينّ واحدة من الإعدادات أولاً.",
"streamTab": "Stream",
"securityTab": "الأمان",
"sniffingTab": "الاستشعار",
"sniffingTab": "Sniffing",
"sniffingMetadataOnly": "البيانات الوصفية فقط",
"sniffingRouteOnly": "التوجيه فقط",
"sniffingIpsExcluded": "IP المستثناة",
@@ -361,15 +388,14 @@
"allHelp": "كائن الاتصال الوارد الكامل بكل الحقول في محرر واحد.",
"settings": "الإعدادات",
"settingsHelp": "غلاف كتلة settings في Xray:",
"sniffing": "الاستشعار",
"sniffing": "Sniffing",
"sniffingHelp": "غلاف كتلة sniffing في Xray:",
"stream": "الدفق",
"stream": "Stream",
"streamHelp": "غلاف كتلة stream في Xray:",
"jsonErrorPrefix": "JSON متقدم"
},
"telegramDesc": "ادخل ID شات Telegram. (استخدم '/id' في البوت) أو ({'@'}userinfobot)",
"subscriptionDesc": "عشان تلاقي رابط الاشتراك، ادخل على 'التفاصيل'. وكمان ممكن تستخدم نفس الاسم لعدة عملاء.",
"info": "معلومات",
"same": "نفسه",
"inboundData": "بيانات الإدخال",
"exportInbound": "تصدير الإدخال",
@@ -406,6 +432,139 @@
"getNewmldsa65Error": "حدث خطاء في الحصول على mldsa65.",
"getNewVlessEncError": "حدث خطأ أثناء الحصول على VlessEnc."
},
"form": {
"moveUp": "أعلى",
"moveDown": "أسفل",
"addAll": "إضافة الكل",
"addAllFallbackTooltip": "أضف صف fallback لكل وارد مؤهل لم يتم ربطه بعد",
"peers": "Peers",
"addPeer": "إضافة peer",
"keepAlive": "Keep-alive",
"autoSystemRoutesTooltip": "ويندوز فقط. تُضاف CIDR تلقائياً إلى جدول التوجيه ليمر المرور المطابق عبر TUN.",
"autoOutboundsInterface": "واجهة صادر تلقائية",
"autoOutboundsInterfaceTooltip": "الواجهة الفعلية لحركة المرور الصادرة. استخدم 'auto' للاكتشاف؛ يتم تفعيلها تلقائياً عند تعيين Auto system routes.",
"rewriteAddress": "إعادة كتابة العنوان",
"rewritePort": "إعادة كتابة المنفذ",
"allowedNetwork": "الشبكة المسموح بها",
"followRedirect": "اتبع إعادة التوجيه",
"accounts": "الحسابات",
"allowTransparent": "السماح بالشفاف",
"encryptionMethod": "طريقة التشفير",
"visionTestseed": "Vision testseed",
"version": "الإصدار",
"udpIdleTimeout": "UDP idle timeout (ثانية)",
"masquerade": "Masquerade",
"type": "النوع",
"upstreamUrl": "Upstream URL",
"rewriteHost": "إعادة كتابة Host",
"skipTlsVerify": "تخطي التحقق من TLS",
"directory": "الدليل",
"statusCode": "رمز الحالة",
"body": "Body",
"headers": "الترويسات",
"proxyProtocol": "Proxy Protocol",
"requestVersion": "إصدار الطلب",
"requestMethod": "طريقة الطلب",
"requestPath": "مسار الطلب",
"requestHeaders": "ترويسات الطلب",
"responseVersion": "إصدار الاستجابة",
"responseStatus": "حالة الاستجابة",
"responseReason": "سبب الاستجابة",
"responseHeaders": "ترويسات الاستجابة",
"heartbeatPeriod": "فترة Heartbeat",
"serviceName": "اسم الخدمة",
"authority": "Authority",
"multiMode": "Multi Mode",
"maxBufferedUpload": "الحد الأقصى للرفع المخزن",
"maxUploadSize": "حجم الرفع الأقصى (بايت)",
"streamUpServer": "Stream-Up Server",
"serverMaxHeaderBytes": "أقصى بايت ترويسة الخادم",
"paddingBytes": "بايتات Padding",
"uplinkHttpMethod": "Uplink HTTP method",
"paddingObfsMode": "وضع تشويش Padding",
"paddingKey": "Padding Key",
"paddingHeader": "Padding Header",
"paddingPlacement": "موضع Padding",
"paddingMethod": "طريقة Padding",
"sessionPlacement": "Session Placement",
"sessionKey": "Session Key",
"sequencePlacement": "Sequence Placement",
"sequenceKey": "Sequence Key",
"uplinkDataPlacement": "Uplink Data Placement",
"uplinkDataKey": "Uplink Data Key",
"noSseHeader": "بدون ترويسة SSE",
"ttiMs": "TTI (ms)",
"uplinkMbps": "رفع (MB/s)",
"downlinkMbps": "تنزيل (MB/s)",
"cwndMultiplier": "معامل CWND",
"maxSendingWindow": "أقصى نافذة إرسال",
"externalProxy": "وكيل خارجي",
"sniPlaceholder": "SNI (افتراضياً host)",
"fingerprint": "بصمة",
"defaultOption": "افتراضي",
"routeMark": "Route Mark",
"tcpKeepAliveInterval": "TCP Keep Alive Interval",
"tcpKeepAliveIdle": "TCP Keep Alive Idle",
"tcpMaxSeg": "TCP Max Seg",
"tcpUserTimeout": "TCP User Timeout",
"tcpWindowClamp": "TCP Window Clamp",
"tcpFastOpen": "TCP Fast Open",
"multipathTcp": "Multipath TCP",
"penetrate": "Penetrate",
"v6Only": "V6 فقط",
"tcpCongestion": "TCP Congestion",
"dialerProxy": "Dialer Proxy",
"trustedXForwardedFor": "X-Forwarded-For موثوق",
"addressPortStrategy": "استراتيجية العنوان+المنفذ",
"tryDelayMs": "تأخير المحاولة (ms)",
"prioritizeIPv6": "أولوية IPv6",
"interleave": "Interleave",
"maxConcurrentTry": "أقصى محاولات متزامنة",
"customSockopt": "sockopt مخصص",
"addCustomOption": "إضافة خيار مخصص",
"serverNameIndication": "SNI",
"cipherSuites": "Cipher Suites",
"autoOption": "تلقائي",
"minMaxVersion": "إصدار أدنى/أقصى",
"rejectUnknownSni": "رفض SNI غير معروف",
"disableSystemRoot": "تعطيل System Root",
"sessionResumption": "استئناف الجلسة",
"oneTimeLoading": "تحميل لمرة واحدة",
"usageOption": "خيار الاستخدام",
"buildChain": "بناء السلسلة",
"echKey": "ECH key",
"echConfig": "تكوين ECH",
"getNewEchCert": "احصل على شهادة ECH جديدة",
"show": "عرض",
"xver": "Xver",
"target": "الهدف",
"maxTimeDiff": "أقصى فرق زمن (ms)",
"minClientVer": "أدنى إصدار للعميل",
"maxClientVer": "أقصى إصدار للعميل",
"shortIds": "Short IDs",
"spiderX": "SpiderX",
"getNewCert": "احصل على شهادة جديدة",
"mldsa65Seed": "mldsa65 Seed",
"mldsa65Verify": "mldsa65 Verify",
"getNewSeed": "احصل على Seed جديد"
},
"info": {
"mode": "الوضع",
"grpcServiceName": "grpc serviceName",
"grpcMultiMode": "grpc multiMode",
"interfaceName": "اسم الواجهة",
"mtu": "MTU",
"gateway": "Gateway",
"dns": "DNS",
"outboundsInterface": "واجهة الصادر",
"autoSystemRoutes": "توجيهات نظام تلقائية",
"followRedirect": "FollowRedirect",
"auth": "Auth",
"noKernelTun": "TUN بدون نواة",
"keepAlive": "Keep alive",
"peerNumber": "Peer {n}",
"peerNumberConfig": "تكوين Peer {n}"
},
"stream": {
"general": {
"request": "طلب",
@@ -416,7 +575,7 @@
"tcp": {
"version": "نسخة",
"method": "طريقة",
"path": "مسار",
"path": "المسار",
"status": "الحالة",
"statusDescription": "وصف الحالة",
"requestHeader": "رأس الطلب",
@@ -456,6 +615,20 @@
"days": "يوم",
"renew": "تجديد تلقائي",
"renewDesc": "تجديد تلقائي بعد انتهاء الصلاحية. (0 = تعطيل) (الوحدة: يوم)",
"searchPlaceholder": "ابحث بالبريد، التعليق، sub ID، UUID، كلمة المرور، auth…",
"filterTitle": "تصفية العملاء",
"clearAllFilters": "مسح الكل",
"sortOldest": "الأقدم أولاً",
"sortNewest": "الأحدث أولاً",
"sortRecentlyUpdated": "محدّث مؤخراً",
"sortRecentlyOnline": "متصل مؤخراً",
"sortEmailAZ": "بريد A→Z",
"sortEmailZA": "بريد Z→A",
"sortMostTraffic": "الأكثر استهلاكاً",
"sortHighestRemaining": "الأعلى متبقياً",
"sortExpiringSoonest": "الأقرب انتهاءً",
"has": "يملك",
"hasNot": "لا يملك",
"title": "العملاء",
"actions": "الإجراءات",
"totalGB": "مجموع المرسل/المستقبل (جيجابايت)",
@@ -465,7 +638,10 @@
"password": "كلمة المرور",
"subId": "معرّف الاشتراك",
"online": "متصل",
"email": "البريد الإلكتروني",
"email": "البريد",
"group": "المجموعة",
"groupDesc": "تسمية منطقية لتجميع العملاء (مثل فريق، عميل، منطقة). يمكن تصفيتها من شريط الأدوات.",
"groupPlaceholder": "مثلاً customer-a",
"comment": "ملاحظة",
"traffic": "حركة المرور",
"offline": "غير متصل",
@@ -483,17 +659,51 @@
"selectInbound": "حدد اتصالاً واردًا واحدًا أو أكثر",
"noSubId": "هذا العميل ليس لديه subId، لا يوجد رابط قابل للمشاركة.",
"noLinks": "لا توجد روابط للمشاركة — قم بإرفاق هذا العميل بأحد الاتصالات الواردة الداعمة للبروتوكول أولاً.",
"link": "رابط",
"link": "الرابط",
"resetNotPossible": "قم بإرفاق هذا العميل بأحد الاتصالات الواردة أولاً.",
"general": "عام",
"resetAllTraffics": "إعادة ضبط حركة مرور كل العملاء",
"resetAllTrafficsTitle": "إعادة ضبط حركة مرور كل العملاء؟",
"resetAllTrafficsContent": "يُعاد ضبط عدّاد الإرسال/الاستقبال لكل عميل إلى الصفر. لا تتأثر الحصص ومواعيد الانتهاء. لا يمكن التراجع.",
"empty": "لا يوجد عملاء بعد — أضف واحدًا للبدء.",
"deleteConfirmTitle": "حذف العميل {email}؟",
"deleteConfirmContent": "سيؤدي هذا إلى إزالة العميل من جميع الاتصالات الواردة المرتبطة وحذف سجل حركة مروره. لا يمكن التراجع.",
"deleteSelected": "حذف ({count})",
"adjustSelected": "تعديل ({count})",
"subLinksSelected": "روابط الاشتراك ({count})",
"addToGroupTitle": "إضافة {count} عميل إلى مجموعة",
"addToGroupTooltip": "اختر مجموعة موجودة أو أدخل اسماً جديداً. استخدم Ungroup لإزالة العملاء من مجموعتهم الحالية.",
"addToGroupPlaceholder": "اسم المجموعة",
"addToGroupSuccessToast": "تمت إضافة {count} عميل إلى {group}",
"ungroupSuccessToast": "تم مسح المجموعة من {count} عميل",
"ungroup": "إزالة من المجموعة",
"ungroupConfirmTitle": "إزالة {count} عميل من مجموعتهم؟",
"ungroupConfirmContent": "يمسح تسمية المجموعة من كل عميل محدد. يُحفظ العملاء (استخدم Delete للإزالة الكاملة).",
"addToGroup": "إضافة إلى مجموعة",
"attach": "إرفاق",
"adjust": "ضبط",
"subLinks": "روابط الاشتراك",
"selectedCount": "{count} محدد",
"attachSelected": "إرفاق ({count})",
"attachToInboundsTitle": "إرفاق {count} عميل بالواردات",
"attachToInboundsDesc": "يربط {count} عميل المحدد (نفس UUID/كلمة المرور والمرور المشترك) بالواردات المختارة. يحتفظون بارتباطاتهم الحالية.",
"attachToInboundsTargets": "الواردات الهدف",
"attachToInboundsNoTargets": "لا توجد واردات متعددة المستخدمين للارتباط.",
"detachSelected": "فصل ({count})",
"detach": "فصل",
"detachFromInboundsTitle": "فصل {count} عميل من الواردات",
"detachFromInboundsDesc": "يزيل {count} عميل المحدد من الواردات المختارة. الأزواج التي لم يكن العميل مرتبطاً بها يتم تخطيها بصمت. تُحفظ سجلات العملاء (استخدم Delete للإزالة الكاملة).",
"detachFromInboundsTargets": "الواردات للفصل",
"detachFromInboundsNoTargets": "لا توجد واردات متعددة المستخدمين.",
"detachFromInboundsResult": "فُصل {detached}، تم تخطي {skipped}.",
"detachFromInboundsResultMixed": "فُصل {detached}، تخطي {skipped}، أخطاء {errors}.",
"subLinksTitle": "روابط الاشتراك ({count})",
"subLinkColumn": "رابط الاشتراك",
"subJsonLinkColumn": "رابط JSON للاشتراك",
"subLinksCopyAll": "نسخ الكل",
"subLinksCopiedAll": "تم نسخ {count} رابط",
"subLinksEmpty": "لا يحتوي أي من العملاء المحددين على معرف اشتراك.",
"subLinksDisabled": "خدمة الاشتراك معطلة.",
"subLinksDisabledHint": "فعّل الاشتراك من إعدادات اللوحة → الاشتراك لإنشاء الروابط.",
"bulkDeleteConfirmTitle": "حذف {count} عميل؟",
"bulkDeleteConfirmContent": "سيتم إزالة كل عميل محدد من جميع الاتصالات الواردة المرتبطة وحذف سجل حركة مروره. لا يمكن التراجع.",
"bulkAdjustTitle": "تعديل {count} عميل",
@@ -505,10 +715,11 @@
"delDepletedConfirmTitle": "حذف العملاء المنتهية حصصهم؟",
"delDepletedConfirmContent": "يُحذف كل عميل استُنفِدت حصة حركة مروره أو انتهت صلاحيته. لا يمكن التراجع.",
"auth": "Auth",
"hysteriaAuth": "Auth (Hysteria)",
"hysteriaAuth": "Hysteria Auth",
"uuid": "UUID",
"flow": "Flow",
"reverseTag": "Reverse tag",
"vmessSecurity": "أمان VMess",
"reverseTag": "وسم عكسي",
"reverseTagPlaceholder": "Reverse tag اختياري",
"telegramId": "معرّف مستخدم تلغرام",
"telegramIdPlaceholder": "معرّف مستخدم تلغرام رقمي (0 = لا شيء)",
@@ -528,13 +739,51 @@
"delDepleted": "تم حذف {count} عميل منتهٍ"
}
},
"groups": {
"title": "المجموعات",
"name": "الاسم",
"clientCount": "عملاء في المجموعة",
"totalGroups": "إجمالي المجموعات",
"totalGroupedClients": "العملاء بمجموعة",
"emptyGroups": "مجموعات فارغة",
"addGroup": "إضافة مجموعة",
"createSuccess": "تم إنشاء المجموعة «{name}».",
"rename": "إعادة تسمية",
"renameTitle": "إعادة تسمية {name}",
"renameCollision": "مجموعة باسم «{name}» موجودة بالفعل.",
"renameSuccess": "تمت إعادة تسمية المجموعة على {count} عميل.",
"deleteConfirmTitle": "حذف المجموعة {name}؟",
"deleteConfirmContent": "يحذف المجموعة ويمسح تسميتها من {count} عميل. العملاء أنفسهم لا يُحذفون.",
"deleteSuccess": "تم مسح المجموعة من {count} عميل.",
"resetTraffic": "إعادة تعيين حركة المرور",
"resetConfirmTitle": "إعادة تعيين حركة المرور للمجموعة {name}؟",
"resetConfirmContent": "يصفر up/down لجميع {count} عميل في هذه المجموعة.",
"resetSuccess": "تمت إعادة تعيين حركة المرور لـ {count} عميل.",
"adjustSuccess": "تم ضبط {count} عميل في {name}.",
"emptyForAction": "هذه المجموعة فارغة.",
"deleteGroupOnly": "حذف المجموعة (مع الاحتفاظ بالعملاء)",
"deleteClients": "حذف عملاء المجموعة",
"deleteClientsConfirmTitle": "حذف جميع العملاء في {name}؟",
"deleteClientsConfirmContent": "يحذف {count} عميل نهائياً مع سجلات حركة المرور. تُمسح تسمية المجموعة أيضاً. لا يمكن التراجع.",
"deleteClientsSuccess": "تم حذف {count} عميل.",
"deleteClientsMixed": "{ok} حُذف، {failed} تم تخطيه",
"addToGroup": "إضافة عملاء…",
"addToGroupTitle": "إضافة عملاء إلى المجموعة «{name}»",
"addToGroupDesc": "اختر العملاء لإضافتهم إلى هذه المجموعة. يحتفظون بارتباطات الواردات الحالية؛ تتغير تسمية المجموعة فقط. لا تُعرض العملاء الذين هم في هذه المجموعة بالفعل.",
"addToGroupEmpty": "لا يوجد عملاء آخرون للإضافة.",
"addToGroupResult": "تمت إضافة {count} عميل إلى {name}.",
"removeFromGroup": "إزالة عملاء…",
"removeFromGroupTitle": "إزالة عملاء من المجموعة «{name}»",
"removeFromGroupDesc": "اختر الأعضاء لإزالتهم من هذه المجموعة. يُحفظ العملاء (استخدم «حذف عملاء المجموعة» للإزالة الكاملة).",
"removeFromGroupResult": "تمت إزالة {count} عميل من {name}."
},
"nodes": {
"title": "النودز",
"addNode": "إضافة نود",
"editNode": عديل نود",
"editNode": حرير العقدة",
"totalNodes": "إجمالي النودز",
"onlineNodes": "أونلاين",
"offlineNodes": "أوفلاين",
"onlineNodes": "متصل",
"offlineNodes": "غير متصل",
"avgLatency": "متوسط الكمون",
"name": "الاسم",
"namePlaceholder": "مثال: de-frankfurt-1",
@@ -542,9 +791,9 @@
"remark": "ملاحظة",
"scheme": "البروتوكول",
"address": "العنوان",
"port": "البورت",
"port": "المنفذ",
"basePath": "المسار الأساسي",
"apiToken": "توكن API",
"apiToken": "رمز API",
"apiTokenPlaceholder": "التوكن من صفحة إعدادات البانل البعيد",
"apiTokenHint": "البانل البعيد بيعرض توكن API بتاعه في الإعدادات → توكن API.",
"regenerate": "تجديد التوكن",
@@ -553,7 +802,7 @@
"allowPrivateAddressHint": "التفعيل فقط للعقد على شبكة خاصة أو VPN.",
"enable": "مفعل",
"status": "الحالة",
"cpu": "المعالج",
"cpu": "CPU",
"mem": "الذاكرة",
"uptime": "مدة التشغيل",
"latency": "الكمون",
@@ -570,8 +819,8 @@
"deleteConfirmTitle": "تحذف النود \"{name}\"؟",
"deleteConfirmContent": "ده هيوقّف مراقبة النود. البانل البعيد نفسه مش هيتأثر.",
"statusValues": {
"online": "أونلاين",
"offline": "أوفلاين",
"online": "متصل",
"offline": "غير متصل",
"unknown": "غير معروف"
},
"toasts": {
@@ -590,7 +839,7 @@
"title": "إعدادات البانل",
"save": "حفظ",
"infoDesc": "كل تغيير هتعمله هنا لازم يتخزن. ياريت تعيد تشغيل البانل عشان التعديلات تتفعل.",
"restartPanel": "إعادة تشغيل البانل",
"restartPanel": "إعادة تشغيل اللوحة",
"restartPanelDesc": "متأكد إنك عايز تعيد تشغيل البانل؟ لو ماقدرتش تدخل بعد إعادة التشغيل، شوف سجل البانل على السيرفر.",
"restartPanelSuccess": "تم إعادة تشغيل اللوحة بنجاح",
"actions": "إجراءات",
@@ -604,7 +853,7 @@
"warnDefaultBasePath": "المسار الأساسي الافتراضي \"/\" معروف — غيّره إلى مسار عشوائي.",
"warnDefaultSubPath": "مسار الاشتراك الافتراضي \"/sub/\" معروف — قم بتغييره.",
"warnDefaultJsonPath": "مسار اشتراك JSON الافتراضي \"/json/\" معروف — قم بتغييره.",
"TGBotSettings": "بوت Telegram",
"TGBotSettings": "بوت تيليجرام",
"panelListeningIP": "IP الاستماع",
"panelListeningIPDesc": "عنوان IP للبانل. (سيبه فاضي عشان يستمع على كل الـ IPs)",
"panelListeningDomain": "دومين الاستماع",
@@ -619,6 +868,8 @@
"panelUrlPathDesc": "مسار URI للبانل. (يبدأ بـ '/' وبينتهي بـ '/')",
"pageSize": "حجم الصفحة",
"pageSizeDesc": "حدد حجم الصفحة لجدول الإدخالات. (0 = تعطيل)",
"panelProxy": "وكيل شبكة اللوحة",
"panelProxyDesc": "يوجه طلبات اللوحة الصادرة (تحديثات geo، فحص إصدارات Xray/اللوحة، تيليجرام) عبر هذا الوكيل لتجاوز فلترة GitHub/تيليجرام على الخادم. يقبل socks5:// أو http(s)://، مثل وارد SOCKS محلي لـ Xray. اتركه فارغاً للاتصال المباشر.",
"remarkModel": "نموذج الملاحظة وحرف الفصل",
"datepicker": "نوع التقويم",
"datepickerPlaceholder": "اختار التاريخ",
@@ -630,11 +881,11 @@
"newPassword": "الباسورد الجديد",
"telegramBotEnable": "تفعيل بوت Telegram",
"telegramBotEnableDesc": "يفعل بوت Telegram.",
"telegramToken": "توكن Telegram",
"telegramToken": "رمز تيليجرام",
"telegramTokenDesc": "توكن البوت اللي جبت من '{'@'}BotFather'.",
"telegramProxy": "بروكسي SOCKS",
"telegramProxy": "وكيل SOCKS",
"telegramProxyDesc": "يفعل بروكسي SOCKS5 للاتصال بـ Telegram. (اضبط الإعدادات حسب الدليل)",
"telegramAPIServer": "سيرفر Telegram API",
"telegramAPIServer": "خادم API لتيليجرام",
"telegramAPIServerDesc": "سيرفر Telegram API المستخدم. سيبه فاضي لاستخدام الافتراضي.",
"telegramChatId": "ID شات الأدمن",
"telegramChatIdDesc": "ID شات الأدمن في Telegram. (مفصول بفواصل)(تقدر تجيبه من {'@'}userinfobot) أو (استخدم '/id' في البوت)",
@@ -658,6 +909,8 @@
"subEnable": "تفعيل خدمة الاشتراك",
"subEnableDesc": "يفعل خدمة الاشتراك.",
"subJsonEnable": "تمكين/تعطيل نقطة نهاية اشتراك JSON بشكل مستقل.",
"subJsonEnableTitle": "اشتراك JSON",
"subClashEnableTitle": "اشتراك Clash / Mihomo",
"subTitle": "عنوان الاشتراك",
"subTitleDesc": "العنوان اللي هيظهر في عميل VPN",
"subSupportUrl": "رابط الدعم",
@@ -693,7 +946,7 @@
"subURI": "مسار البروكسي العكسي",
"subURIDesc": "مسار URI لرابط الاشتراك عشان تستخدمه ورا البروكسي.",
"externalTrafficInformEnable": "تنبيه الترافيك الخارجي",
"externalTrafficInformEnableDesc": "يبعت تنبيه لـ API خارجي مع كل تحديث للترافيك.",
"externalTrafficInformEnableDesc": "إخطار واجهة API خارجية بكل تحديث لحركة المرور.",
"externalTrafficInformURI": "مسار تنبيه الترافيك الخارجي",
"externalTrafficInformURIDesc": "تحديثات الترافيك هتتبعت للمسار ده.",
"restartXrayOnClientDisable": "إعادة تشغيل Xray بعد التعطيل التلقائي",
@@ -703,7 +956,55 @@
"fragmentSett": "إعدادات التجزئة",
"noisesDesc": "يفعل التشويش.",
"noisesSett": "إعدادات التشويش",
"mux": "MUX",
"trustedProxyCidrs": "CIDR وكلاء موثوقين",
"trustedProxyCidrsDesc": "IPs/CIDRs مفصولة بفواصل يُسمح لها بتعيين ترويسات host، proto و client IP المعاد توجيهها.",
"ldap": {
"enable": "تفعيل مزامنة LDAP",
"host": "مضيف LDAP",
"port": "منفذ LDAP",
"useTls": "استخدام TLS (LDAPS)",
"bindDn": "Bind DN",
"passwordConfigured": "مهيأة؛ اترك فارغاً للاحتفاظ بكلمة المرور الحالية.",
"passwordUnconfigured": "غير مهيأة.",
"passwordPlaceholder": "مهيأة — أدخل قيمة جديدة لاستبدالها",
"baseDn": "Base DN",
"userFilter": "مرشح المستخدم",
"userAttr": "خاصية المستخدم (username/email)",
"vlessField": "خاصية VLESS flag",
"flagField": "خاصية flag عامة (اختياري)",
"flagFieldDesc": "إذا تم تعيينها، تتجاوز VLESS flag — مثل shadowInactive.",
"truthyValues": "قيم Truthy",
"truthyValuesDesc": "مفصولة بفواصل؛ الافتراضي: true,1,yes,on",
"invertFlag": "عكس flag",
"invertFlagDesc": "فعّل عندما تعني الخاصية «معطل» (مثل shadowInactive).",
"syncSchedule": "جدول المزامنة",
"syncScheduleDesc": "سلسلة شبيهة بـ cron، مثل @every 1m",
"inboundTags": "وسوم الواردات",
"inboundTagsDesc": "الواردات التي يمكن لمزامنة LDAP إنشاء/حذف العملاء فيها تلقائياً.",
"noInbounds": "لم يتم العثور على واردات. أنشئ واحداً في الواردات أولاً.",
"autoCreate": "إنشاء عملاء تلقائياً",
"autoDelete": "حذف عملاء تلقائياً",
"defaultTotalGb": "الإجمالي الافتراضي (GB)",
"defaultExpiryDays": "الانتهاء الافتراضي (أيام)",
"defaultIpLimit": "حد IP الافتراضي"
},
"subFormats": {
"packets": "الحزم",
"length": "الطول",
"interval": "الفاصل",
"maxSplit": "أقصى تقسيم",
"noises": "الضوضاء",
"noiseItem": "ضوضاء №{n}",
"type": "النوع",
"packet": "حزمة",
"delayMs": "التأخير (ms)",
"applyTo": "تطبيق على",
"addNoise": "+ ضوضاء",
"concurrency": "التزامن",
"xudpConcurrency": "تزامن xudp",
"xudpUdp443": "xudp UDP 443"
},
"mux": "Mux",
"muxDesc": "ينقل أكثر من تيار بيانات مستقل خلال تيار بيانات واحد قائم.",
"muxSett": "إعدادات MUX",
"direct": "اتصال مباشر",
@@ -756,8 +1057,11 @@
"xray": {
"title": "إعدادات Xray",
"save": "احفظ",
"restart": "أعد تشغيل Xray",
"restart": "إعادة تشغيل Xray",
"restartSuccess": "تم إعادة تشغيل Xray بنجاح",
"restartOutputTitle": "مخرجات إعادة تشغيل Xray",
"restartConfirmTitle": "إعادة تشغيل xray؟",
"restartConfirmContent": "يعيد تحميل خدمة xray بالتكوين المحفوظ.",
"stopSuccess": "تم إيقاف Xray بنجاح",
"restartError": "حدث خطأ أثناء إعادة تشغيل Xray.",
"stopError": "حدث خطأ أثناء إيقاف Xray.",
@@ -765,7 +1069,7 @@
"advancedTemplate": "متقدم",
"generalConfigs": "إعدادات عامة",
"generalConfigsDesc": "الخيارات دي هتحدد التعديلات العامة.",
"logConfigs": "السجلات",
"logConfigs": "السجل",
"logConfigsDesc": "السجلات ممكن تأثر على كفاءة السيرفر. ننصح بتفعيلها بحكمة لما تكون محتاجها.",
"blockConfigsDesc": "الخيارات دي هتحجب الترافيك بناءً على بروتوكولات ومواقع محددة.",
"basicRouting": "توجيه أساسي",
@@ -790,10 +1094,12 @@
"outboundTestUrl": "رابط اختبار المخرج",
"outboundTestUrlDesc": "الرابط المستخدم عند اختبار اتصال المخرج",
"Torrent": "حظر بروتوكول التورنت",
"Inbounds": "الإدخالات",
"Inbounds": "الواردات",
"InboundsDesc": "قبول العملاء المعينين.",
"Outbounds": "المخرجات",
"Outbounds": "الصادرات",
"Balancers": "موازنات التحميل",
"balancerTagRequired": "الوسم مطلوب",
"balancerSelectorRequired": "اختر صادراً واحداً على الأقل",
"OutboundsDesc": "حدد مسار الترافيك الصادر.",
"Routings": "قواعد التوجيه",
"RoutingsDesc": "أولوية كل قاعدة مهمة جداً!",
@@ -832,6 +1138,73 @@
"edit": "عدل القاعدة",
"useComma": "عناصر مفصولة بفواصل"
},
"routing": {
"dragToReorder": "اسحب لإعادة الترتيب"
},
"ruleForm": {
"sourceIps": "IPs المصدر",
"sourcePort": "منفذ المصدر",
"vlessRoute": "مسار VLESS",
"attributes": "الخصائص",
"value": "القيمة",
"user": "المستخدم",
"inboundTags": "وسوم الواردات",
"outboundTag": "وسم الصادر",
"balancerTag": "وسم الموازن",
"balancerTagTooltip": "يوجه حركة المرور عبر أحد موازنات الحمل المهيأة"
},
"outboundForm": {
"tagDuplicate": "الوسم مستخدم بالفعل من قبل صادر آخر",
"tagRequired": "الوسم مطلوب",
"tagPlaceholder": "وسم-فريد",
"localIpPlaceholder": "IP محلي",
"addressRequired": "العنوان مطلوب",
"portRequired": "المنفذ مطلوب",
"optional": "اختياري",
"udpOverTcp": "UDP over TCP",
"uotVersion": "إصدار UoT",
"inboundTag": "وسم الوارد",
"inboundTagPlaceholder": "وسم الوارد المستخدم في قواعد التوجيه",
"responseType": "نوع الاستجابة",
"rewriteNetwork": "إعادة كتابة الشبكة",
"unchanged": "(دون تغيير)",
"unchangedAddress": "(دون تغيير) مثل 1.1.1.1",
"rules": "القواعد",
"ruleN": "القاعدة {n}",
"action": "الإجراء",
"redirect": "Redirect",
"fragment": "Fragment",
"finalRules": "القواعد النهائية",
"overrideXrayPrivateIp": "تجاوز حظر IP الخاص الافتراضي في Xray",
"blockDelay": "تأخير الحظر (ms)",
"reverseSniffing": "Sniffing عكسي",
"workers": "Workers",
"reserved": "محجوز",
"minUploadInterval": "أدنى فاصل رفع (ms)",
"maxUploadSizeBytes": "حجم الرفع الأقصى (بايت)",
"uplinkChunkSize": "حجم chunk الرفع",
"noGrpcHeader": "بدون ترويسة gRPC",
"maxConcurrency": "أقصى تزامن",
"maxConnections": "أقصى اتصالات",
"maxReuseTimes": "أقصى مرات إعادة استخدام",
"maxRequestTimes": "أقصى طلبات",
"maxReusableSecs": "أقصى ثوانٍ قابلة لإعادة الاستخدام",
"keepAlivePeriod": "فترة keep alive",
"authPassword": "كلمة مرور Auth",
"visionTestpre": "Vision testpre",
"serverNamePlaceholder": "اسم الخادم",
"verifyPeerName": "التحقق من اسم peer",
"pinnedSha256": "SHA256 مثبت",
"shortId": "Short ID",
"sockopts": "Sockopts",
"keepAliveInterval": "فاصل keep alive",
"markFwmark": "Mark (fwmark)",
"interface": "الواجهة",
"ipv6Only": "IPv6 فقط",
"acceptProxyProtocol": "قبول proxy protocol",
"tcpUserTimeoutMs": "TCP user timeout (ms)",
"tcpKeepAliveIdleS": "TCP keep-alive idle (ثانية)"
},
"outbound": {
"addOutbound": "أضف مخرج",
"addReverse": "أضف عكسي",
@@ -840,15 +1213,15 @@
"reverseTag": "وسم العكسي",
"reverseTagDesc": "وسم الخروج لبروكسي VLESS العكسي البسيط. اتركه فارغاً لتعطيله.",
"reverseTagPlaceholder": "وسم الخروج (اتركه فارغاً للتعطيل)",
"tag": "تاج",
"tag": "الوسم",
"tagDesc": "تاج فريد",
"address": "العنوان",
"reverse": "عكسي",
"domain": "دومين",
"domain": "النطاق",
"type": "النوع",
"bridge": "جسر",
"portal": "بوابة",
"link": "رابط",
"bridge": "Bridge",
"portal": "Portal",
"link": "الرابط",
"intercon": "تواصل",
"settings": "إعدادات",
"accountInfo": "معلومات الحساب",
@@ -860,6 +1233,8 @@
"testSuccess": "الاختبار ناجح",
"testFailed": "فشل الاختبار",
"testError": "فشل اختبار المخرج",
"testModeTooltip": "TCP: فحص dial سريع. HTTP: طلب كامل عبر xray.",
"testAll": "اختبار الكل",
"nordvpn": "NordVPN",
"accessToken": "رمز الوصول",
"country": "الدولة",
@@ -874,8 +1249,18 @@
"editBalancer": "عدل موازن التحميل",
"balancerStrategy": "استراتيجية الموازن",
"balancerSelectors": "المحددات",
"tag": "تاج",
"tag": "الوسم",
"tagDesc": "تاج فريد",
"tagDuplicate": "الوسم مستخدم بالفعل من قبل موازن آخر",
"tagPlaceholder": "وسم موازن فريد",
"selector": "المحدد",
"fallback": "Fallback",
"expected": "المتوقع",
"expectedPlaceholder": "العدد الأمثل للعقد",
"maxRtt": "أقصى RTT",
"tolerance": "التحمل",
"baselines": "Baselines",
"costs": "Costs",
"balancerDesc": "ماينفعش تستخدم balancerTag و outboundTag مع بعض. لو اتستخدموا مع بعض، outboundTag هو اللي هيشتغل."
},
"wireguard": {
@@ -892,6 +1277,38 @@
"userLevel": "مستوى المستخدم",
"userLevelDesc": "ستستخدم جميع الاتصالات المُرسلة عبر هذا الإدخال مستوى المستخدم هذا. القيمة الافتراضية هي 0"
},
"nord": {
"accessToken": "Access token",
"privateKey": "المفتاح الخاص",
"noServers": "لم يتم العثور على خوادم للدولة المحددة",
"noPublicKey": "الخادم المحدد لا يُعلن عن مفتاح NordLynx العام.",
"outboundAdded": "تمت إضافة صادر NordVPN",
"outboundUpdated": "تم تحديث صادر NordVPN"
},
"warp": {
"licenseError": "فشل تعيين رخصة WARP.",
"fetchFirst": "احصل على تكوين WARP أولاً.",
"createAccount": "إنشاء حساب WARP",
"accessToken": "Access token",
"deviceId": "معرف الجهاز",
"licenseKey": "مفتاح الرخصة",
"privateKey": "المفتاح الخاص",
"deleteAccount": "حذف الحساب",
"settings": "الإعدادات",
"licenseKeyLabel": "مفتاح رخصة WARP / WARP+",
"key": "المفتاح",
"keyPlaceholder": "مفتاح WARP+ مكوّن من 26 حرفاً",
"accountInfo": "معلومات الحساب",
"deviceName": "اسم الجهاز",
"deviceModel": "طراز الجهاز",
"deviceEnabled": "الجهاز مفعّل",
"accountType": "نوع الحساب",
"role": "الدور",
"warpPlusData": "بيانات WARP+",
"quota": "الحصة",
"usage": "الاستخدام",
"addOutbound": "إضافة صادر"
},
"dns": {
"enable": "فعل DNS",
"enableDesc": "فعل سيرفر DNS المدمج",
@@ -911,7 +1328,7 @@
"strategyDesc": "الاستراتيجية العامة لحل أسماء الدومين",
"add": "أضف سيرفر",
"edit": "عدل السيرفر",
"domains": "الدومينات",
"domains": "النطاقات",
"expectIPs": "العناوين المتوقعة",
"unexpectIPs": "عناوين IP غير متوقعة",
"useSystemHosts": "استخدام ملف Hosts الخاص بالنظام",
@@ -992,16 +1409,16 @@
"2faFailed": "فشل 2FA",
"report": "🕰 التقارير المجدولة: {{ .RunTime }}\r\n",
"datetime": "⏰ التاريخ والوقت: {{ .DateTime }}\r\n",
"hostname": "💻 السيرفر: {{ .Hostname }}\r\n",
"hostname": "💻 المضيف: {{ .Hostname }}\r\n",
"version": "🚀 نسخة 3X-UI: {{ .Version }}\r\n",
"xrayVersion": "📡 نسخة Xray: {{ .XrayVersion }}\r\n",
"ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
"ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
"ip": "🌐 IP: {{ .IP }}\r\n",
"ips": "🔢 عناوين IP:\r\n{{ .IPs }}\r\n",
"ips": "🔢 IPs:\r\n{{ .IPs }}\r\n",
"serverUpTime": "⏳ وقت التشغيل: {{ .UpTime }} {{ .Unit }}\r\n",
"serverLoad": "📈 تحميل النظام: {{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
"serverMemory": "📋 الرام: {{ .Current }}/{{ .Total }}\r\n",
"serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
"tcpCount": "🔹 TCP: {{ .Count }}\r\n",
"udpCount": "🔸 UDP: {{ .Count }}\r\n",
"traffic": "🚦 الترافيك: {{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
@@ -1009,17 +1426,17 @@
"username": "👤 اسم المستخدم: {{ .Username }}\r\n",
"reason": "❗️ السبب: {{ .Reason }}\r\n",
"time": "⏰ الوقت: {{ .Time }}\r\n",
"inbound": "📍 الإدخال: {{ .Remark }}\r\n",
"port": "🔌 البورت: {{ .Port }}\r\n",
"inbound": "📍 الوارد: {{ .Remark }}\r\n",
"port": "🔌 المنفذ: {{ .Port }}\r\n",
"expire": "📅 تاريخ الانتهاء: {{ .Time }}\r\n",
"expireIn": "📅 هيخلص بعد: {{ .Time }}\r\n",
"active": "💡 مفعل: {{ .Enable }}\r\n",
"enabled": "🚨 مفعل: {{ .Enable }}\r\n",
"online": "🌐 حالة الاتصال: {{ .Status }}\r\n",
"lastOnline": "🔙 آخر متصل: {{ .Time }}\r\n",
"email": "📧 الإيميل: {{ .Email }}\r\n",
"upload": "🔼 رفع: ↑{{ .Upload }}\r\n",
"download": "🔽 تنزيل: ↓{{ .Download }}\r\n",
"email": "📧 البريد: {{ .Email }}\r\n",
"upload": "🔼 الرفع: ↑{{ .Upload }}\r\n",
"download": "🔽 التنزيل: ↓{{ .Download }}\r\n",
"total": "📊 الإجمالي: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
"TGUser": "👤 مستخدم Telegram: {{ .TelegramID }}\r\n",
"exhaustedMsg": "🚨 نفذ {{ .Type }}:\r\n",
@@ -1030,7 +1447,7 @@
"backupTime": "🗄 وقت النسخة الاحتياطية: {{ .Time }}\r\n",
"refreshedOn": "\r\n📋🔄 اتحدّث في: {{ .Time }}\r\n\r\n",
"yes": "✅ أيوه",
"no": "❌ لأ",
"no": "❌ لا",
"received_id": "🔑📥 الـ ID اتحدث.",
"received_password": "🔑📥 الباسورد اتحدث.",
"received_email": "📧📥 الإيميل اتحدث.",
@@ -1042,7 +1459,7 @@
"inbound_client_data_id": "🔄 الدخول: {{ .InboundRemark }}\n\n🔑 المعرف: {{ .ClientId }}\n📧 البريد الإلكتروني: {{ .ClientEmail }}\n📊 الترافيك: {{ .ClientTraffic }}\n📅 تاريخ الانتهاء: {{ .ClientExp }}\n🌐 حدّ IP: {{ .IpLimit }}\n💬 تعليق: {{ .ClientComment }}\n\nدلوقتي تقدر تضيف العميل على الدخول!",
"inbound_client_data_pass": "🔄 الدخول: {{ .InboundRemark }}\n\n🔑 كلمة المرور: {{ .ClientPass }}\n📧 البريد الإلكتروني: {{ .ClientEmail }}\n📊 الترافيك: {{ .ClientTraffic }}\n📅 تاريخ الانتهاء: {{ .ClientExp }}\n🌐 حدّ IP: {{ .IpLimit }}\n💬 تعليق: {{ .ClientComment }}\n\nدلوقتي تقدر تضيف العميل على الدخول!",
"cancel": "❌ العملية اتلغت! \n\nممكن تبدأ من /start في أي وقت. 🔄",
"error_add_client": "⚠️ حصل خطأ:\n\n {{ .error }}",
"error_add_client": "⚠️ خطأ:\n\n {{ .error }}",
"using_default_value": "تمام، هشيل على القيمة الافتراضية. 😊",
"incorrect_input": "المدخلات مش صحيحة.\nالكلمات لازم تكون متصلة من غير فراغات.\nمثال صحيح: aaaaaa\nمثال غلط: aaa aaa 🚫",
"AreYouSure": "إنت متأكد؟ 🤔",
@@ -1087,11 +1504,11 @@
"submitDisable": "إرسال كمعطّل ☑️",
"submitEnable": "إرسال كمفعّل ✅",
"use_default": "🏷️ استخدام الإعدادات الافتراضية",
"change_id": "⚙️🔑 المعرّف",
"change_id": "⚙️🔑 ID",
"change_password": "⚙️🔑 كلمة السر",
"change_email": "⚙️📧 البريد الإلكتروني",
"change_email": "⚙️📧 البريد",
"change_comment": "⚙️💬 تعليق",
"change_flow": "⚙️🚦 التدفق",
"change_flow": "⚙️🚦 Flow",
"ResetAllTraffics": "إعادة ضبط جميع الترافيك",
"SortedTrafficUsageReport": "تقرير استخدام الترافيك المرتب"
},
@@ -1119,4 +1536,4 @@
"chooseInbound": "اختار الإدخال"
}
}
}
}