diff --git a/assets/translations/strings_ar.i18n.json b/assets/translations/strings_ar.i18n.json index e30527d0..d6c00773 100644 --- a/assets/translations/strings_ar.i18n.json +++ b/assets/translations/strings_ar.i18n.json @@ -3,8 +3,8 @@ "appTitle": "Hiddify", "reset": "إعادة تعيين", "toggle": { - "enabled": "ممكّن", - "disabled": "معطل" + "enabled": "مُفعّل", + "disabled": "غير مُفعّل" }, "state": { "disable": "تعطيل" @@ -12,139 +12,139 @@ "sort": "فرز", "sortBy": "فرز حسب", "addToClipboard": "إضافة إلى الحافظة", - "notSet": "غير مضبوط", - "agree": "موافق", + "notSet": "غير مُحدد", + "agree": "موافقة", "decline": "رفض", "unknown": "غير معروف", - "hidden": "مخفي", + "hidden": "مُخفي", "timeout": "انتهاء الوقت", - "clipboardExportSuccessMsg": "أضيف إلى الحافظة", - "showMore": "إظهار المزيد", - "showLess": "إظهار أقل", + "clipboardExportSuccessMsg": "تمت إضافة البيانات إلى الحافظة", + "showMore": "عرض المزيد", + "showLess": "عرض أقل", "openAppSettings": "فتح إعدادات التطبيق", "grantPermission": "منح الإذن" }, "intro": { - "termsAndPolicyCaution(rich)": "بالمتابعة توافق على ${tap(@:about.termsAndConditions)}", - "start": "بدء" + "termsAndPolicyCaution(rich)": "بمواصلة استخدامك، فإنك توافق على ${tap(@:about.termsAndConditions)}", + "start": "ابدأ" }, "home": { - "pageTitle": "الرئيسية", - "emptyProfilesMsg": "ابدأ بإضافة ملف اشتراك", - "noActiveProfileMsg": "اختر ملفًا" + "pageTitle": "الصفحة الرئيسية", + "emptyProfilesMsg": "ابدأ بإضافة ملف تعريف اشتراك", + "noActiveProfileMsg": "اختر ملف تعريف" }, "stats": { "traffic": "حركة المرور", - "trafficLive": "حركة المرور المباشرة", + "trafficLive": "حركة المرور الحية", "trafficTotal": "إجمالي حركة المرور", - "uplink": "الرفع", - "downlink": "التنزيل", + "uplink": "الصعود", + "downlink": "الهبوط", "connection": "الاتصال", "speed": "السرعة", - "totalTransferred": "إجمالي المنقول" + "totalTransferred": "إجمالي البيانات المنقولة" }, "profile": { - "overviewPageTitle": "الملفات", - "detailsPageTitle": "ملف", - "activeProfileNameSemanticLabel": "اسم الملف النشط: \"${name}\".", - "activeProfileBtnSemanticLabel": "عرض جميع الملفات", - "nonActiveProfileBtnSemanticLabel": "اختر \"${name}\" كملف نشط", + "overviewPageTitle": "الملفات الشخصية", + "detailsPageTitle": "ملف التعريف", + "activeProfileNameSemanticLabel": "اسم ملف التعريف النشط: \"${name}\".", + "activeProfileBtnSemanticLabel": "عرض جميع ملفات التعريف", + "nonActiveProfileBtnSemanticLabel": "اختر \"${name}\" كملف تعريف نشط", "subscription": { "traffic": "حركة المرور", - "updatedTimeAgo": "تم التحديث منذ ${timeago}", - "remainingDuration": "متبقي ${duration} أيام", - "remainingTrafficSemanticLabel": "تم استهلاك ${consumed} من أصل ${total}", + "updatedTimeAgo": "تم التحديث قبل ${timeago}", + "remainingDuration": "تبقى ${duration} يومًا", + "remainingTrafficSemanticLabel": "استُهلك ${consumed} من أصل ${total} حركة مرور", "expired": "منتهي الصلاحية", - "noTraffic": "نفذت الحصة", - "upload": "رفع", - "download": "تنزيل", + "noTraffic": "غير متاح", + "upload": "التحميل", + "download": "التنزيل", "total": "إجمالي حركة المرور", - "expireDate": "تاريخ الانتهاء" + "expireDate": "تاريخ انتهاء الصلاحية" }, "sortBy": { - "lastUpdate": "محدث حديثًا", + "lastUpdate": "تم التحديث مؤخرًا", "name": "أبجديًا" }, "add": { - "buttonText": "ملف جديد", - "shortBtnTxt": "ملف جديد", + "buttonText": "ملف تعريف جديد", + "shortBtnTxt": "ملف تعريف جديد", "fromClipboard": "إضافة من الحافظة", "scanQr": "مسح رمز الاستجابة السريعة", "qrScanner": { - "permissionDeniedError": "الإذن مرفوض", - "unexpectedError": "حدث خطأ غير متوقع", - "torchSemanticLabel": "ضوء الفلاش", + "permissionDeniedError": "تم رفض الإذن", + "unexpectedError": "حدث خطأ ما", + "torchSemanticLabel": "ضوء فلاش", "facingSemanticLabel": "اتجاه الكاميرا", - "permissionRequest": "الإذن بالكاميرا لمسح رمز الاستجابة السريعة" + "permissionRequest": "الإذن للكاميرا لمسح رمز الاستجابة السريعة" }, "manually": "إدخال يدوي", - "addingProfileMsg": "يتم إضافة الملف", - "failureMsg": "فشل في إضافة الملف" + "addingProfileMsg": "إضافة ملف التعريف", + "failureMsg": "فشل في إضافة ملف التعريف" }, "update": { "buttonTxt": "تحديث", - "tooltip": "تحديث الملف", + "tooltip": "تحديث ملف التعريف", "updateSubscriptions": "تحديث الاشتراكات", - "failureMsg": "فشل في تحديث الملف", - "successMsg": "تم تحديث الملف بنجاح", + "failureMsg": "فشل في تحديث ملف التعريف", + "successMsg": "تم تحديث ملف التعريف بنجاح", "namedFailureMsg": "فشل في تحديث \"${name}\"", "namedSuccessMsg": "تم تحديث \"${name}\" بنجاح" }, "share": { "buttonText": "مشاركة", - "exportToClipboardSuccess": "تم التصدير إلى الحافظة", + "exportToClipboardSuccess": "تم تصدير البيانات إلى الحافظة", "exportSubLinkToClipboard": "تصدير رابط الاشتراك إلى الحافظة", "subLinkQrCode": "رمز الاستجابة السريعة لرابط الاشتراك", "exportConfigToClipboard": "تصدير التكوين إلى الحافظة", "exportConfigToClipboardSuccess": "تم نسخ التكوين إلى الحافظة" }, "edit": { - "buttonTxt": "تعديل", - "selectActiveTxt": "اختر الملف النشط" + "buttonTxt": "تحرير", + "selectActiveTxt": "اختر ملف التعريف النشط" }, "delete": { "buttonTxt": "حذف", - "confirmationMsg": "حذف الملف نهائيًا؟", - "successMsg": "تم حذف الملف بنجاح" + "confirmationMsg": "حذف ملف التعريف نهائياً؟", + "successMsg": "تم حذف ملف التعريف بنجاح" }, "save": { "buttonText": "حفظ", - "successMsg": "تم حفظ الملف بنجاح", - "failureMsg": "فشل في حفظ الملف" + "successMsg": "تم حفظ ملف التعريف بنجاح", + "failureMsg": "فشل في حفظ ملف التعريف" }, "detailsForm": { "nameLabel": "الاسم", - "nameHint": "اسم الملف", - "urlLabel": "الرابط", - "urlHint": "الرابط الكامل للتكوين", + "nameHint": "اسم ملف التعريف", + "urlLabel": "العنوان", + "urlHint": "عنوان URL للتكوين الكامل", "emptyNameMsg": "الاسم مطلوب", - "invalidUrlMsg": "رابط غير صالح", + "invalidUrlMsg": "عنوان URL غير صالح", "lastUpdate": "آخر تحديث", - "updateInterval": "تحديث تلقائي", - "updateIntervalDialogTitle": "فاصل التحديث التلقائي (بالساعات)" + "updateInterval": "التحديث التلقائي", + "updateIntervalDialogTitle": "مُدة التحديث التلقائي (بالساعات)" } }, "proxies": { - "pageTitle": "الوكلاء", - "emptyProxiesMsg": "لا يوجد وكلاء متاحين", + "pageTitle": "الخوادم الوكيلية", + "emptyProxiesMsg": "لا توجد خوادم وكيلية متاحة", "delayTestTooltip": "اختبار التأخير", - "sortTooltip": "فرز الوكلاء", - "checkIp": "تحقق من IP", - "unknownIp": "IP غير معروف", + "sortTooltip": "فرز الخوادم الوكيلية", + "checkIp": "تحقق من عنوان IP", + "unknownIp": "عنوان IP غير معروف", "sortOptions": { "unsorted": "افتراضي", "name": "أبجديًا", "delay": "حسب التأخير" }, - "activeProxySemanticLabel": "الوكيل النشط", + "activeProxySemanticLabel": "الخادم الوكيل النشط", "delaySemantics": { - "result": "التأخير: ${delay}مللي ثانية", - "timeout": "مهلة اختبار التأخير", - "testing": "التأخير: يتم الاختبار..." + "result": "التأخير: ${delay} مللي ثانية", + "timeout": "انتهاء الوقت في اختبار التأخير", + "testing": "التأخير: قيد الاختبار..." }, "ipInfoSemantics": { "address": "عنوان IP", - "country": "البلد" + "country": "الدولة" } }, "logs": { @@ -159,18 +159,18 @@ }, "settings": { "pageTitle": "الإعدادات", - "requiresRestartMsg": "لنفاذ هذا التغيير، أعد تشغيل التطبيق", + "requiresRestartMsg": "لتطبيق هذه التغييرات، أعد تشغيل التطبيق", "experimental": "تجريبي", - "experimentalMsg": "الميزات التي تحمل العلم التجريبي لا تزال قيد التطوير وقد تسبب مشاكل.", + "experimentalMsg": "الميزات ذات العلامة التجريبية لا تزال قيد التطوير وقد تسبب مشاكل.", "exportOptions": "تصدير الخيارات إلى الحافظة", - "exportAllOptions": "تصدير جميع الخيارات إلى الحافظة (تصحيح)", + "exportAllOptions": "تصدير جميع الخيارات إلى الحافظة (تصحيح الأخطاء)", "importOptions": "استيراد الخيارات من الحافظة", - "importOptionsMsg": "سيتم إعادة كتابة جميع خيارات التكوين بالقيم المقدمة. هل أنت متأكد؟", + "importOptionsMsg": "سيؤدي هذا إلى إعادة كتابة جميع خيارات التكوين بالقيم المحددة. هل أنت متأكد؟", "general": { "sectionTitle": "عام", "locale": "اللغة", "region": "المنطقة", - "regionMsg": "يساعد في ضبط الخيارات الافتراضية لتجاوز العناوين المحلية", + "regionMsg": "يساعد على تعيين الخيارات الافتراضية لتجاوز العناوين المحلية", "regions": { "ir": "إيران (ir)", "cn": "الصين (cn)", @@ -186,45 +186,228 @@ "black": "الوضع الأسود" }, "enableAnalytics": "تمكين التحليلات", - "enableAnalyticsMsg": "امنح الإذن لجمع التحليلات وإرسال تقارير الأعطال لتحسين التطبيق", - "autoStart": "بدء عند تسجيل الدخول", - "silentStart": "بدء مصغر", + "enableAnalyticsMsg": "منح الإذن بجمع التحليلات وإرسال تقارير الأعطال لتحسين التطبيق", + "autoStart": "بدء التشغيل عند تسجيل الدخول", + "silentStart": "بدء التشغيل مُصغر", "openWorkingDir": "فتح دليل العمل", - "ignoreBatteryOptimizations": "تعطيل تحسين البطارية", - "ignoreBatteryOptimizationsMsg": "إزالة القيود لأداء VPN الأمثل", + "ignoreBatteryOptimizations": "تعطيل تحسينات البطارية", + "ignoreBatteryOptimizationsMsg": "إزالة القيود للحصول على أفضل أداء VPN", "dynamicNotification": "عرض السرعة في الإشعار", - "hapticFeedback": "تغذية مرتدة لمسية", - "autoIpCheck": "التحقق التلقائي من IP الاتصال" + "hapticFeedback": "ردود فعل اللمس", + "autoIpCheck": "التحقق من عنوان IP للاتصال تلقائيًا" }, "advanced": { "sectionTitle": "متقدم", - "debugMode": "وضع التصحيح", + "debugMode": "وضع تصحيح الأخطاء", "debugModeMsg": "أعد تشغيل التطبيق لتطبيق هذا التغيير", "memoryLimit": "حد الذاكرة", - "memoryLimitMsg": "فعّل إذا كنت تواجه أخ - -طاء تفيض الذاكرة. القيمة الافتراضية 0. يرجى الإشارة إلى القيمة بالميجابايت.", - "ping": "الأمر ping", - "pingMsg": "القيمة الافتراضية 1.0.0.1.", - "alwaysOn": "تفعيل دائمًا", - "disableScv": "تعطيل SCV", - "v2FlyService": "خدمة v2Fly", - "disableV2FlyServiceMsg": "تعطيل خدمة v2Fly", - "allowInsecureConnections": "السماح بالاتصالات غير الآمنة", - "trustedCertificates": "شهادات موثوقة" + "memoryLimitMsg": "قم بتمكين هذه الميزة إذا كنت تواجه أخطاء «عدم كفاية الذاكرة» أو تعطل التطبيق بشكل متكرر", + "resetTunnel": "إعادة تعيين ملف تعريف VPN" + }, + "network": { + "perAppProxyPageTitle": "الوكيل لكل تطبيق", + "perAppProxyModes": { + "off": "الكل", + "offMsg": "وكيل جميع التطبيقات", + "include": "وكيل", + "includeMsg": "وكيل التطبيقات المحددة فقط", + "exclude": "تجاوز", + "excludeMsg": "لا تستخدم الوكيل للتطبيقات المحددة" + }, + "showSystemApps": "عرض تطبيقات النظام", + "hideSystemApps": "إخفاء تطبيقات النظام", + "clearSelection": "مسح الاختيار" + }, + "geoAssets": { + "pageTitle": "أصول التوجيه", + "geoip": "GeoIP", + "geosite": "GeoSite", + "version": "الإصدار ${version}", + "fileMissing": "الملف مفقود", + "update": "تحديث", + "download": "تنزيل", + "failureMsg": "فشل في تحديث الأصل", + "successMsg": "تم تحديث الأصل بنجاح", + "addRecommended": "إضافة الأصول الموصى بها", + "missingGeoAssetsMsg": "ملفات أصول التوجيه المحددة مفقودة. قم بتنزيلها أو اختر ملفات موجودة" } }, - "help": { - "pageTitle": "المساعدة", - "documentation": "التوثيق", - "tutorial": "الدروس التعليمية", - "contact": "اتصل بنا" - }, "about": { - "pageTitle": "حول.\nتعريب:م. ابراهيم قاسم", - "termsAndConditions": "الشروط والأحكام", + "pageTitle": "حول\nتعريب:م. ابراهيم قاسم", + "version": "الإصدار", + "sourceCode": "رمز المصدر", + "telegramChannel": "قناة Telegram", + "checkForUpdate": "التحقق من وجود تحديث", "privacyPolicy": "سياسة الخصوصية", - "softwareLicenses": "تراخيص البرمجيات", - "version": "الإصدار ${version}" + "termsAndConditions": "الشروط والأحكام" + }, + "appUpdate": { + "notAvailableMsg": "أنت تستخدم أحدث إصدار بالفعل", + "dialogTitle": "تحديث متاح", + "updateMsg": "إصدار جديد من @:general.appTitle متاح. هل تريد التحديث الآن؟", + "currentVersionLbl": "الإصدار الحالي", + "newVersionLbl": "الإصدار الجديد", + "updateNowBtnTxt": "تحديث الآن", + "laterBtnTxt": "لاحقًا", + "ignoreBtnTxt": "تجاهل" + }, + "tray": { + "dashboard": "لوحة التحكم", + "quit": "إنهاء", + "open": "فتح", + "status": { + "connect": "الاتصال", + "connecting": "جار الاتصال", + "disconnect": "فصم الاتصال", + "disconnecting": "جار فصم الاتصال" + } + }, + "failure": { + "unexpected": "خطأ غير متوقع", + "clash": { + "unexpected": "خطأ غير متوقع", + "core": "خطأ في Clash ${reason}" + }, + "singbox": { + "unexpected": "خطأ في الخدمة غير متوقع", + "serviceNotRunning": "الخدمة غير قيد التشغيل", + "missingPrivilege": "غياب الامتياز", + "missingPrivilegeMsg": "وضع VPN يتطلب امتيازات المسؤول. أعد تشغيل التطبيق كمسؤول أو غيّر وضع الخدمة.", + "missingGeoAssets": "أصول Geo مفقودة", + "missingGeoAssetsMsg": "أصول Geo مفقودة. فكر في تغيير الأصل النشط أو تنزيل الأصل المحدد في الإعدادات.", + "invalidConfigOptions": "خيارات التكوين غير صحيحة", + "invalidConfig": "تكوين غير صالح", + "create": "خطأ في إنشاء الخدمة", + "start": "خطأ في بدء تشغيل الخدمة" + }, + "connectivity": { + "unexpected": "فشل غير متوقع", + "missingVpnPermission": "غياب إذن VPN", + "missingNotificationPermission": "غياب إذن الإشعارات", + "core": "خطأ في النواة" + }, + "profiles": { + "unexpected": "خطأ غير متوقع", + "notFound": "لم يتم العثور على ملف التعريف", + "invalidConfig": "تكوينات غير صحيحة", + "invalidUrl": "عنوان URL غير صالح" + }, + "connection": { + "unexpected": "خطأ في الاتصال غير متوقع", + "timeout": "انتهاء الوقت في الاتصال", + "badResponse": "استجابة سيئة", + "connectionError": "خطأ في الاتصال", + "badCertificate": "شهادة غير صالحة" + }, + "geoAssets": { + "unexpected": "خطأ غير متوقع", + "notUpdate": "لا يوجد تحديث متاح", + "activeNotFound": "لم يتم العثور على أصل Geo النشط" + } + }, + "play": { + "title": "Hiddify (معاينة)", + "short_description": "Auto, SSH, VLESS, VMess, Trojan, Reality, Sing-Box, Clash, XRay, Shadowsocks", + "full_description": "الهدف الرئيسي لـ Hiddify هو توفير عميل نفق آمن وسهل الاستخدام وكفاءة. يمكّنك من توجيه جميع حركة المرور أو حركة المرور من التطبيق المحدد إلى خادم بعيد من اختيارك، باستخدام إذن VPN-Service. \n\nملاحظة: لا نوفر أي خادم، ويتعين على المستخدمين ضمان بقاء أنشطتهم عبر الإنترنت خاصة باستخدام خادمهم المخصص أو الخوادم الموثوقة. \n \nندعم الخوادم مع:\n- رابط اشتراك V2Ray/XRay عادي \n- رابط اشتراك Clash \n- رابط اشتراك Sing-Box \n\nما هي ميزاتنا الفريدة؟\n - سهل الاستخدام \n - مُحسّن وسريع \n - اختيار أدنى Ping تلقائيًا \n - عرض معلومات استخدام المستخدم \n - استيراد sublink بسهولة بنقرة واحدة باستخدام deeplinking \n - مجاني وخالي من الإعلانات \n - تبديل sublinks بسهولة \n - المزيد والمزيد \n\nالدعم:\n- جميع البروتوكولات التي تدعمها Sing-Box \n- VLESS + XTLS Reality, Vision \n- VMess \n- Trojan \n- ShoadowSocks \n- Reality \n- WireGuard \n- V2Ray \n- Hysteria2 \n- TUICv5 \n- SSH \n- ShadowTLS \n\n\nرمز المصدر موجود في https://github.com/hiddify/Hiddify-Next \nتعتمد نواة التطبيق على Sing-Box مفتوحة المصدر.\n\nوصف الإذن:\n- VPN Service: نظرًا لأن هدف هذا التطبيق هو توفير عميل نفق آمن وسهل الاستخدام وكفاءة، نحتاج إلى هذا الإذن لنتمكن من توجيه حركة المرور عبر النفق إلى الخادم البعيد. \n- QUERY ALL PACKAGES: يستخدم هذا الإذن للسماح للمستخدمين بتضمين أو استبعاد تطبيقات محددة للأنفاق. \n- RECEIVE BOOT COMPLETED: يمكن تمكين أو تعطيل هذا الإذن من إعدادات التطبيق لتنشيط هذا التطبيق عند تشغيل الجهاز. \n- POST NOTIFICATIONS: هذا الإذن ضروري لأننا نستخدم خدمة المقدمة لضمان تشغيل خدمة VPN بشكل مستمر. \n- هذا التطبيق خالي من الإعلانات. يتم جمع التحليلات وبيانات الأعطال فقط بموافقة صريحة من المستخدم في أول استخدام للتطبيق." + }, + "connection": { + "tapToConnect": "انقر للاتصال", + "connecting": "جار الاتصال", + "disconnecting": "جار فصم الاتصال", + "connected": "متصل", + "reconnect": "أعد الاتصال", + "connectAnyWay": "اتصل", + "experimentalNotice": "ميزات تجريبية قيد الاستخدام", + "experimentalNoticeMsg": "لقد قمت بتمكين بعض الميزات التجريبية التي قد تؤثر على جودة الاتصال وتسبب أخطاء غير متوقعة. يمكنك دائمًا تغيير هذه الخيارات أو إعادة تعيينها من صفحة خيارات التكوين.", + "disableExperimentalNotice": "لا تعرض مرة أخرى", + "reconnectMsg": "أعد الاتصال ليتم تطبيق التغييرات" + }, + "config": { + "resetBtn": "إعادة تعيين الخيارات", + "serviceMode": "وضع الخدمة", + "quickSettings": "الإعدادات السريعة", + "setupWarp": "إعداد WARP", + "allOptions": "جميع خيارات التكوين", + "serviceModes": { + "proxy": "خدمة الوكيل فقط", + "systemProxy": "تعيين وكيل النظام", + "tun": "VPN", + "tunService": "خدمة VPN" + }, + "shortServiceModes": { + "proxy": "وكيل", + "systemProxy": "وكيل النظام", + "tun": "VPN", + "tunService": "خدمة VPN" + }, + "section": { + "route": "خيارات التوجيه", + "dns": "خيارات DNS", + "inbound": "خيارات الوارد", + "mux": "MultiPlexer", + "outbound": "خيارات الخارج", + "tlsTricks": "حيل TLS", + "warp": "خيارات WARP", + "misc": "خيارات متنوعة" + }, + "warpConsent": { + "title": "موافقة Cloudflare WARP", + "description(rich)": "Cloudflare WARP هو مزود VPN مجاني لـ WireGuard. بتمكين هذا الخيار، فإنك توافق على ${tos(Terms of Service)} و ${privacy(Privacy Policy)} لـ Cloudflare WARP." + }, + "generateWarpConfig": "إنشاء تكوين WARP", + "missingWarpConfig": "تكوين WARP مفقود", + "warpConfigGenerated": "تم إنشاء تكوين WARP", + "pageTitle": "خيارات التكوين", + "logLevel": "مستوى السجل", + "resolveDestination": "حل الوجهة", + "ipv6Mode": "توجيه IPv6", + "ipv6Modes": { + "disable": "تعطيل", + "enable": "تمكين", + "prefer": "مُفضل", + "only": "حصري" + }, + "remoteDnsAddress": "DNS البعيد", + "remoteDnsDomainStrategy": "استراتيجية مجال DNS البعيد", + "directDnsAddress": "DNS المباشر", + "directDnsDomainStrategy": "استراتيجية مجال DNS المباشر", + "mixedPort": "منفذ مُختلط", + "tproxyPort": "منفذ الوكيل الشفاف", + "localDnsPort": "منفذ DNS المحلي", + "allowConnectionFromLan": "مشاركة VPN على الشبكة المحلية", + "tunImplementation": "تنفيذ TUN", + "mtu": "MTU", + "connectionTestUrl": "عنوان URL لاختبار الاتصال", + "urlTestInterval": "مُدة اختبار عنوان URL", + "enableClashApi": "تمكين Clash API", + "clashApiPort": "منفذ Clash API", + "enableTun": "تمكين TUN", + "setSystemProxy": "تعيين وكيل النظام", + "enableDnsRouting": "تمكين توجيه DNS", + "enableFakeDns": "تمكين DNS المزيف", + "bypassLan": "تجاوز LAN", + "strictRoute": "توجيه صارم", + "enableTlsFragment": "تمكين تجزئة TLS", + "tlsFragmentSize": "حجم تجزئة TLS", + "tlsFragmentSleep": "وقت تعليق تجزئة TLS", + "enableTlsMixedSniCase": "تمكين خلط حالات SNI في TLS", + "enableTlsPadding": "تمكين حشو TLS", + "tlsPaddingSize": "حشو TLS", + "enableMux": "تمكين Mux", + "muxProtocol": "بروتوكول Mux", + "muxMaxStreams": "أقصى عدد من التدفقات المتزامنة", + "enableWarp": "تمكين WARP", + "warpDetourMode": "وضع التفاف", + "warpDetourModes": { + "proxyOverWarp": "لف الخوادم الوكيلية عبر WARP", + "warpOverProxy": "لف WARP عبر الخوادم الوكيلية", + "inbound": "لف WARP عبر الخوادم الوكيلية", + "outbound": "لف الخوادم الوكيلية عبر WARP" + }, + "warpLicenseKey": "مفتاح الترخيص", + "warpCleanIp": "عنوان IP نظيف", + "warpPort": "المنفذ", + "warpNoise": "عدد الضوضاء", + "warpNoiseDelay": "تأخير الضوضاء" } } diff --git a/lib/core/localization/locale_extensions.dart b/lib/core/localization/locale_extensions.dart index 2c8c1768..417d7ba7 100644 --- a/lib/core/localization/locale_extensions.dart +++ b/lib/core/localization/locale_extensions.dart @@ -6,6 +6,7 @@ extension AppLocaleX on AppLocale { this == AppLocale.fa ? FontFamily.shabnam : FontFamily.emoji; String get localeName => switch (flutterLocale.toString()) { + "ar" => "العربية", "en" => "English", "fa" => "فارسی", "ru" => "Русский", diff --git a/project.inlang/settings.json b/project.inlang/settings.json index 79bf5db7..ebc5edb5 100644 --- a/project.inlang/settings.json +++ b/project.inlang/settings.json @@ -2,6 +2,7 @@ "$schema": "https://inlang.com/schema/project-settings", "sourceLanguageTag": "en", "languageTags": [ + "ar", "en", "ckb-KUR", "es", diff --git a/windows/packaging/exe/make_config.yaml b/windows/packaging/exe/make_config.yaml index 4f9e2e93..96fccaae 100644 --- a/windows/packaging/exe/make_config.yaml +++ b/windows/packaging/exe/make_config.yaml @@ -8,6 +8,7 @@ create_desktop_icon: true install_dir_name: "{autopf64}\\hiddify" setup_icon_file: ..\..\windows\runner\resources\app_icon.ico locales: + - ar - en - fa - ru