diff --git a/src/i18n/messages/ar.json b/src/i18n/messages/ar.json
index d691776c8a..a4d8e220ad 100644
--- a/src/i18n/messages/ar.json
+++ b/src/i18n/messages/ar.json
@@ -5,7 +5,7 @@
"delete": "حذف",
"loading": "جار التحميل...",
"error": "حدث خطأ",
- "success": "النجاح",
+ "success": "نجاح",
"confirm": "هل أنت متأكد؟",
"refresh": "تحديث",
"close": "إغلاق",
@@ -23,13 +23,13 @@
"active": "نشط",
"inactive": "غير نشط",
"noData": "لا توجد بيانات متاحة",
- "nothingHere": "Nothing here yet",
+ "nothingHere": "لا شيء هنا بعد",
"configure": "تكوين",
"manage": "إدارة",
"name": "الاسم",
"actions": "الإجراءات",
"status": "الحالة",
- "type": "اكتب",
+ "type": "النوع",
"model": "نموذج",
"models": "نماذج",
"provider": "مزود",
@@ -37,14 +37,14 @@
"time": "الوقت",
"details": "التفاصيل",
"created": "تم إنشاؤها",
- "lastUsed": "Last Refreshed",
+ "lastUsed": "آخر استخدام",
"loadMore": "تحميل المزيد",
"noResults": "لم يتم العثور على نتائج",
"reloadPage": "إعادة تحميل الصفحة",
"connected": "متصل",
"disconnected": "غير متصل",
"notConfigured": "لم يتم تكوينه",
- "testConnection": "اتصال الاختبار",
+ "testConnection": "اختبار الاتصال",
"enable": "تمكين",
"disable": "تعطيل",
"columns": "أعمدة",
@@ -54,14 +54,14 @@
"none": "لا شيء",
"yes": "نعم",
"no": "لا",
- "on": "__MISSING__:ON",
- "off": "__MISSING__:OFF",
+ "on": "تشغيل",
+ "off": "إيقاف",
"warning": "تحذير",
"note": "ملاحظة",
"free": "مجاني",
"skipToContent": "انتقل إلى المحتوى",
- "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.",
- "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...",
+ "maintenanceServerIssues": "يواجه الخادم مشكلات. قد تكون بعض الميزات غير متوفرة.",
+ "maintenanceServerUnreachable": "الخادم غير قابل للوصول. جارٍ إعادة الاتصال...",
"accept": "قبول",
"accountId": "معرف الحساب",
"alias": "الاسم المستعار",
@@ -99,12 +99,12 @@
"blacklist": "القائمة السوداء",
"resolve": "حل",
"force": "القوة",
- "base64url": "عنوان URL Base64",
- "hex": "عرافة",
+ "base64url": "Base64 URL",
+ "hex": "سداسي عشري",
"range": "النطاق",
"component": "مكون",
"redirect_uri": "إعادة توجيه URI",
- "idempotency-key": "مفتاح العجز",
+ "idempotency-key": "مفتاح عدم التكرار",
"error_description": "وصف الخطأ",
"code": "الكود",
"compatible": "متوافق",
@@ -114,552 +114,552 @@
"crypto": "تشفير",
"hours": "ساعات",
"selfsigned": "موقعة ذاتيا",
- "proxy_id": "معرف الوكيل",
- "proxyId": "معرف الوكيل",
+ "proxy_id": "معرف البروكسي",
+ "proxyId": "معرف البروكسي",
"connectionId": "معرف الاتصال",
"resolveConnectionId": "حل معرف الاتصال",
"resolve_connection_id": "حل معرف الاتصال",
"scope_id": "معرف النطاق",
"scopeId": "معرف النطاق",
- "jwtSecret": "JWT سر",
- "keytar": "كيتار",
- "better-sqlite3": "أفضل-sqlite3",
+ "jwtSecret": "JWT Secret",
+ "keytar": "Keytar",
+ "better-sqlite3": "better-sqlite3",
"undici": "undici",
"builder-id": "معرف البناء",
"musicDesc": "وصف الموسيقى",
- "musicGeneration": "جيل الموسيقى",
- "idc": "آي دي سي",
+ "musicGeneration": "توليد الموسيقى",
+ "idc": "IDC",
"cloud-status-changed": "تغيرت حالة السحابة",
"where_used": "حيث تستخدم",
"windowMs": "النافذة (مللي ثانية)",
- "social-github": "جيثب",
- "social-google": "جوجل",
+ "social-github": "Github",
+ "social-google": "Google",
"TOOL_ALLOWLIST": "القائمة المسموح بها للأداة",
"TOOL_DENYLIST": "قائمة رفض الأداة",
"Failed to save pricing": "فشل حفظ الأسعار",
"Failed to reset pricing": "فشل في إعادة تعيين التسعير",
"apikey": "مفتاح واجهة برمجة التطبيقات",
"http": "HTTP",
- "goToDashboard": "Go to Dashboard",
- "checkSystemStatus": "Check System Status",
- "selectModel": "Select Model",
- "combos": "Combos",
- "noModelsFound": "No models found",
- "clear": "Clear",
- "done": "Done",
- "errorOccurred": "Error Occurred",
- "comboDeleted": "Combo Deleted",
- "hide": "Hide",
- "creating": "Creating",
- "comboCreated": "Combo Created",
- "swapFormats": "Swap Formats",
- "daysAgo": "Days Ago",
- "retries": "Retries",
- "errorDuringRestore": "Error During Restore",
- "eventsAppearHint": "Events Appear Hint",
- "noLockouts": "No Lockouts",
- "webSearchDesc": "Web Search Desc",
- "audioProvidersHeading": "Audio Providers Heading",
+ "goToDashboard": "انتقل إلى لوحة المعلومات",
+ "checkSystemStatus": "التحقق من حالة النظام",
+ "selectModel": "حدد النموذج",
+ "combos": "المجموعات",
+ "noModelsFound": "لم يتم العثور على نماذج",
+ "clear": "مسح",
+ "done": "تم",
+ "errorOccurred": "حدث خطأ",
+ "comboDeleted": "تم حذف المجموعة",
+ "hide": "إخفاء",
+ "creating": "جارٍ الإنشاء...",
+ "comboCreated": "تم إنشاء المجموعة",
+ "swapFormats": "تبديل التنسيقات",
+ "daysAgo": "منذ أيام",
+ "retries": "إعادات المحاولة",
+ "errorDuringRestore": "حدث خطأ أثناء الاستعادة",
+ "eventsAppearHint": "تظهر الأحداث هنا أثناء تدفق الطلبات عبر OmniRoute.",
+ "noLockouts": "لا توجد عمليات إغلاق",
+ "webSearchDesc": "بحث موحّد على الويب عبر عدة مزودين مع تجاوز الفشل والتخزين المؤقت تلقائيًا",
+ "audioProvidersHeading": "موفرو الصوت",
"cloudAgentProviders": "موفرو الوكيل السحابي",
- "minutesAgo": "Minutes Ago",
+ "minutesAgo": "منذ دقائق",
"a": "A",
- "liveAutoRefreshing": "Live Auto Refreshing",
- "webSearch": "Web Search",
- "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder",
- "addModelToCombo": "Add Model To Combo",
- "failedToLoad": "Failed To Load",
- "categoryMedia": "Category Media",
- "enableCloud": "Enable Cloud",
- "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon",
- "retry": "Retry",
- "embeddings": "Embeddings",
- "errorCount": "Error Count",
- "backupReasonManual": "Backup Reason Manual",
- "safeSearchModerate": "Safe Search Moderate",
- "activeLimiters": "Active Limiters",
- "a2aCardTitle": "A2A Card Title",
- "cloudWorkerUnreachable": "Cloud Worker Unreachable",
- "testFailed": "Test Failed",
- "compatibleBaseUrlHint": "Compatible Base Url Hint",
- "usageTracking": "Usage Tracking",
- "disableCloudTitle": "Disable Cloud Title",
- "noConnections": "No Connections",
- "providerHealth": "Provider Health",
- "confirmDbImport": "Confirm Db Import",
- "notAvailableSymbol": "Not Available Symbol",
- "backupsAvailable": "Backups Available",
- "providerAuto": "Provider Auto",
- "newProviderNamePlaceholder": "New Provider Name Placeholder",
- "a2aQuickStartStep2": "A2A Quick Start Step2",
- "ok": "Ok",
- "available": "Available",
- "noBackupYet": "No Backup Yet",
- "more": "More",
- "noCompatibleYet": "No Compatible Yet",
- "multiProvider": "Multi Provider",
- "repairEnvHint": "Repair Env Hint",
- "disablingCloud": "Disabling Cloud",
- "testBench": "Test Bench",
- "valid": "Valid",
- "cloudBenefitShare": "Cloud Benefit Share",
- "mcpCardTitle": "Mcp Card Title",
- "disableConfirm": "Disable Confirm",
- "filters": "Filters",
- "expirationBannerExpiredDesc": "Expiration Banner Expired Desc",
- "saveComboDefaults": "Save Combo Defaults",
- "cloudConnectedVerified": "Cloud Connected Verified",
- "uptime": "Uptime",
- "compatibleProdPlaceholder": "Compatible Prod Placeholder",
- "fallbackChainsTitle": "Fallback Chains Title",
- "oauthLabel": "Oauth Label",
- "a2aCardDescription": "A2A Card Description",
- "okShort": "Ok Short",
- "maintenance": "Maintenance",
- "formatConverter": "Format Converter",
- "zedImportNetworkError": "Zed Import Network Error",
- "apiKeyLabel": "Api Key Label",
- "noModelsForProvider": "No Models For Provider",
- "mcpCardDescription": "Mcp Card Description",
- "apiTypeLabel": "Api Type Label",
- "configuredProvidersLabel": "Configured Providers Label",
- "maxRetriesLabel": "Max Retries Label",
- "title": "Title",
- "output": "Output",
- "prefixHint": "Prefix Hint",
- "skipWizard": "Skip Wizard",
- "failedCount": "Failed Count",
- "confirmDbImportDesc": "Confirm Db Import Desc",
- "entries": "Entries",
- "until": "Until",
- "disableCombo": "Disable Combo",
- "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix",
- "runningCount": "Running Count",
- "noActiveConnectionsInGroup": "No Active Connections In Group",
- "savedSuccessfully": "Saved Successfully",
- "systemStorage": "System Storage",
- "videoDesc": "Video Desc",
- "maxResults": "Max Results",
- "timeRangeMonth": "Time Range Month",
- "testSummary": "Test Summary",
- "failedSetPassword": "Failed Set Password",
- "audio": "Audio",
- "restore": "Restore",
- "disableWarning": "Disable Warning",
- "moderationsDesc": "Moderations Desc",
- "providerHealthStatusAria": "Provider Health Status Aria",
- "modelNamePlaceholder": "Model Name Placeholder",
- "mcpQuickStartStep2": "Mcp Quick Start Step2",
- "quickStart": "Quick Start",
- "fullExportFailedWithError": "Full Export Failed With Error",
- "loadingBackups": "Loading Backups",
- "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder",
- "description": "Description",
- "noProviderFound": "No Provider Found",
- "auto": "Auto",
- "protocolsDescription": "Protocols Description",
- "cloudSessionNote": "Cloud Session Note",
- "advancedSettings": "Advanced Settings",
- "defaultStrategy": "Default Strategy",
- "purgeExpiredLogs": "Purge Expired Logs",
- "justNow": "Just Now",
- "providerTestFailed": "Provider Test Failed",
- "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder",
- "image": "Image",
- "failedCreateChain": "Failed Create Chain",
- "importDatabase": "Import Database",
- "allDataLocal": "All Data Local",
- "sectionTitle": "Section Title",
- "failedToggle": "Failed Toggle",
- "editCombo": "Edit Combo",
- "testResults": "Test Results",
- "searchQuery": "Search Query",
- "addCcCompatible": "Add Cc Compatible",
- "duplicate": "Duplicate",
- "createCombo": "Create Combo",
- "searchTypeWeb": "Search Type Web",
- "addChain": "Add Chain",
- "prefixLabel": "Prefix Label",
- "listModelsDesc": "List Models Desc",
- "databaseSize": "Database Size",
- "chainCreated": "Chain Created",
- "providerTestTimeout": "Provider Test Timeout",
- "routingStrategy": "Routing Strategy",
- "translateAction": "Translate Action",
- "exportFailed": "Export Failed",
- "connectedVerificationPending": "Connected Verification Pending",
- "a2aQuickStartTitle": "A2A Quick Start Title",
- "couldNotTest": "Could Not Test",
- "testAllCompatible": "Test All Compatible",
- "anthropicCompatibleName": "Anthropic Compatible Name",
- "disabling": "Disabling",
- "failedEnable": "Failed Enable",
- "categoryUtility": "Category Utility",
- "customUrlOptional": "Custom Url Optional",
- "localProviders": "Local Providers",
- "comboNamePlaceholder": "Combo Name Placeholder",
- "memoryRss": "Memory Rss",
- "disableProvider": "Disable Provider",
- "welcomeDesc": "Welcome Desc",
- "nameLabel": "Name Label",
- "allOperational": "All Operational",
- "backupNow": "Backup Now",
- "providerMaxRetriesAria": "Provider Max Retries Aria",
- "textToSpeechDesc": "Text To Speech Desc",
- "machineId": "Machine Id",
- "globalProxy": "Global Proxy",
- "hitsMisses": "Hits Misses",
- "testDesc": "Test Desc",
- "chatDesc": "Chat Desc",
- "importSuccess": "Import Success",
- "chat": "Chat",
- "a2aQuickStartStep1": "A2A Quick Start Step1",
- "importFailed": "Import Failed",
- "inputPlaceholder": "Input Placeholder",
- "providerModelsTitle": "Provider Models Title",
- "lastBackup": "Last Backup",
- "yourEndpoint": "Your Endpoint",
- "autoDisableThresholdDesc": "Auto Disable Threshold Desc",
- "rerankDesc": "Rerank Desc",
- "modelsPathPlaceholder": "Models Path Placeholder",
- "noCombosYet": "No Combos Yet",
- "connectedVerificationPendingWithError": "Connected Verification Pending With Error",
- "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1",
- "enableCloudTitle": "Enable Cloud Title",
- "configuredProvidersHint": "Configured Providers Hint",
- "paused": "Paused",
- "llmProviders": "Llm Providers",
- "enableCombo": "Enable Combo",
- "removeProviderOverrideAria": "Remove Provider Override Aria",
- "nodeVersion": "Node Version",
- "openai": "Openai",
- "exportFailedWithError": "Export Failed With Error",
- "proxyConfigured": "Proxy Configured",
- "concurrencyPerModel": "Concurrency Per Model",
- "protocolTasksLabel": "Protocol Tasks Label",
- "oauthProviders": "Oauth Providers",
- "lockedCount": "Locked Count",
- "deleteChainConfirm": "Delete Chain Confirm",
- "recentTranslations": "Recent Translations",
- "zedImportButton": "Zed Import Button",
- "responsesDesc": "Responses Desc",
- "testedCount": "Tested Count",
- "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder",
- "signatureDefaults": "Signature Defaults",
- "errorCreating": "Error Creating",
- "timeRangeYear": "Time Range Year",
- "compatibleLabel": "Compatible Label",
- "cloudDisabledSuccess": "Cloud Disabled Success",
- "deleteConfirm": "Delete Confirm",
- "check": "Check",
- "safeSearch": "Safe Search",
- "protocolLastActivity": "Protocol Last Activity",
- "openMcpDashboard": "Open Mcp Dashboard",
- "testBenchTab": "Test Bench Tab",
- "chatPathLabel": "Chat Path Label",
- "retryDelay": "Retry Delay",
- "errorUpdating": "Error Updating",
- "ideCliIntegrations": "Ide Cli Integrations",
- "imageGeneration": "Image Generation",
- "apiKeyRequired": "Api Key Required",
- "resetAllTitle": "Reset All Title",
- "connectionError": "Connection Error",
- "modelName": "Model Name",
- "apiKeyForCheck": "Api Key For Check",
- "cloudRequestTimeout": "Cloud Request Timeout",
- "showConfiguredOnly": "Show Configured Only",
+ "liveAutoRefreshing": "مباشر — تحديث تلقائي",
+ "webSearch": "بحث الويب",
+ "anthropicPrefixPlaceholder": "ac-prod",
+ "addModelToCombo": "إضافة نموذج إلى المجموعة",
+ "failedToLoad": "فشل التحميل",
+ "categoryMedia": "الوسائط المتعددة",
+ "enableCloud": "تمكين السحابة",
+ "expirationBannerExpiringSoon": "ستنتهي الصلاحية قريبًا",
+ "retry": "أعد المحاولة",
+ "embeddings": "التضمينات",
+ "errorCount": "عدد الأخطاء",
+ "backupReasonManual": "يدوي",
+ "safeSearchModerate": "معتدل",
+ "activeLimiters": "المحددات النشطة",
+ "a2aCardTitle": "خادم A2A",
+ "cloudWorkerUnreachable": "عامل السحابة غير قابل للوصول",
+ "testFailed": "فشل الاختبار",
+ "compatibleBaseUrlHint": "عنوان URL الأساسي لواجهة API المتوافقة",
+ "usageTracking": "تتبع الاستخدام",
+ "disableCloudTitle": "تعطيل الوكيل السحابي",
+ "noConnections": "لا اتصالات",
+ "providerHealth": "حالة المزود",
+ "confirmDbImport": "تأكيد استيراد قاعدة البيانات",
+ "notAvailableSymbol": "—",
+ "backupsAvailable": "النسخ الاحتياطية المتاحة",
+ "providerAuto": "تلقائي",
+ "newProviderNamePlaceholder": "مثال: Google أو OpenAI",
+ "a2aQuickStartStep2": "أرسل طلبات JSON-RPC باستخدام message/send أو message/stream.",
+ "ok": "حسنًا",
+ "available": "متاح",
+ "noBackupYet": "لا توجد نسخة احتياطية حتى الآن",
+ "more": "المزيد",
+ "noCompatibleYet": "لم تتم إضافة أي مزود متوافق حتى الآن",
+ "multiProvider": "متعدد المزودين",
+ "repairEnvHint": "استعادة قيم OAuth الافتراضية المفقودة دون استبدال القيم الموجودة",
+ "disablingCloud": "جارٍ تعطيل السحابة...",
+ "testBench": "بيئة الاختبار",
+ "valid": "صالح",
+ "cloudBenefitShare": "مشاركة نقطة النهاية مع فريقك بسهولة",
+ "mcpCardTitle": "خادم MCP",
+ "disableConfirm": "هل أنت متأكد أنك تريد تعطيل الوكيل السحابي؟",
+ "filters": "عوامل التصفية",
+ "expirationBannerExpiredDesc": "انتهت الصلاحية؛ جدّد بيانات الاعتماد لاستعادة الوصول",
+ "saveComboDefaults": "حفظ الإعدادات الافتراضية للمجموعة",
+ "cloudConnectedVerified": "تم التحقق من الاتصال بالسحابة",
+ "uptime": "الجهوزية",
+ "compatibleProdPlaceholder": "متوافق (إنتاج)",
+ "fallbackChainsTitle": "سلاسل التجاوز الاحتياطي",
+ "oauthLabel": "OAuth",
+ "a2aCardDescription": "نقطة نهاية Agent2Agent بتنسيق JSON-RPC",
+ "okShort": "حسنًا",
+ "maintenance": "الصيانة",
+ "formatConverter": "محول التنسيق",
+ "zedImportNetworkError": "خطأ في شبكة استيراد Zed",
+ "apiKeyLabel": "مفتاح API",
+ "noModelsForProvider": "لا توجد نماذج للموفر",
+ "mcpCardDescription": "بروتوكول سياق النموذج عبر stdio",
+ "apiTypeLabel": "نوع واجهة API",
+ "configuredProvidersLabel": "المزودون المكوّنون",
+ "maxRetriesLabel": "الحد الأقصى لمحاولات إعادة المحاولة",
+ "title": "العنوان",
+ "output": "الإخراج",
+ "prefixHint": "مطلوب؛ بادئة فريدة لأسماء النماذج",
+ "skipWizard": "تخطي المعالج",
+ "failedCount": "عدد حالات الفشل",
+ "confirmDbImportDesc": "سيؤدي ذلك إلى استبدال جميع البيانات الحالية وإنشاء نسخة احتياطية تلقائيًا",
+ "entries": "إدخالات",
+ "until": "حتى",
+ "disableCombo": "تعطيل المجموعة",
+ "liveMonitorDescriptionPrefix": "يعرض أحداث البث أثناء تدفق استدعاءات API عبر OmniRoute.",
+ "runningCount": "قيد التشغيل",
+ "noActiveConnectionsInGroup": "لا توجد اتصالات نشطة في المجموعة",
+ "savedSuccessfully": "تم الحفظ بنجاح",
+ "systemStorage": "النظام والتخزين",
+ "videoDesc": "إنشاء مقاطع فيديو باستخدام نماذج الذكاء الاصطناعي",
+ "maxResults": "الحد الأقصى للنتائج",
+ "timeRangeMonth": "الشهر الماضي",
+ "testSummary": "ملخص الاختبار",
+ "failedSetPassword": "فشل تعيين كلمة المرور",
+ "audio": "الصوت",
+ "restore": "استعادة",
+ "disableWarning": "تعطيل التحذير",
+ "moderationsDesc": "الإشراف على المحتوى وتصنيف السلامة",
+ "providerHealthStatusAria": "حالة المزود الصحية",
+ "modelNamePlaceholder": "مثال: claude-sonnet-4",
+ "mcpQuickStartStep2": "اضبط عميل MCP للاتصال عبر نقل stdio.",
+ "quickStart": "بداية سريعة",
+ "fullExportFailedWithError": "فشل التصدير الكامل مع وجود خطأ",
+ "loadingBackups": "تحميل النسخ الاحتياطية",
+ "anthropicBaseUrlPlaceholder": "عنوان URL الأساسي لـ Anthropic",
+ "description": "الوصف",
+ "noProviderFound": "لم يتم العثور على موفر",
+ "auto": "تلقائي",
+ "protocolsDescription": "نقاط نهاية MCP وA2A مع مراقبة وضوابط مخصصة",
+ "cloudSessionNote": "تحتفظ السحابة بجلسة المصادقة ليوم واحد وتحذفها تلقائيًا إن لم تُستخدم.",
+ "advancedSettings": "الإعدادات المتقدمة",
+ "defaultStrategy": "الإستراتيجية الافتراضية",
+ "purgeExpiredLogs": "تطهير السجلات منتهية الصلاحية",
+ "justNow": "الآن فقط",
+ "providerTestFailed": "فشل اختبار الموفر",
+ "openaiBaseUrlPlaceholder": "عنوان URL الأساسي لـ OpenAI",
+ "image": "صورة",
+ "failedCreateChain": "فشل إنشاء السلسلة",
+ "importDatabase": "استيراد قاعدة البيانات",
+ "allDataLocal": "جميع البيانات محلية",
+ "sectionTitle": "سطح التكامل",
+ "failedToggle": "فشل تبديل حالة المجموعة",
+ "editCombo": "تحرير المجموعة",
+ "testResults": "نتائج الاختبار",
+ "searchQuery": "استعلام البحث",
+ "addCcCompatible": "إضافة مزود متوافق مع Claude Code",
+ "duplicate": "نسخة مكررة",
+ "createCombo": "إنشاء مجموعة",
+ "searchTypeWeb": "الويب",
+ "addChain": "أضف سلسلة",
+ "prefixLabel": "البادئة",
+ "listModelsDesc": "عرض جميع النماذج المتاحة عبر المزودين المتصلين",
+ "databaseSize": "حجم قاعدة البيانات",
+ "chainCreated": "تم إنشاء السلسلة",
+ "providerTestTimeout": "مهلة اختبار الموفر",
+ "routingStrategy": "استراتيجية التوجيه",
+ "translateAction": "ترجمة",
+ "exportFailed": "فشل التصدير",
+ "connectedVerificationPending": "التحقق المتصل معلق",
+ "a2aQuickStartTitle": "البدء السريع",
+ "couldNotTest": "لا يمكن الاختبار",
+ "testAllCompatible": "اختبار جميع الاتصالات المتوافقة",
+ "anthropicCompatibleName": "متوافق مع Anthropic",
+ "disabling": "جارٍ التعطيل...",
+ "failedEnable": "فشل التمكين",
+ "categoryUtility": "الأدوات والإدارة",
+ "customUrlOptional": "عنوان URL المخصص اختياري",
+ "localProviders": "مقدمو الخدمات المحليون",
+ "comboNamePlaceholder": "مجموعتي",
+ "memoryRss": "الذاكرة (RSS)",
+ "disableProvider": "تعطيل الموفر",
+ "welcomeDesc": "OmniRoute وكيل محلي لواجهات AI يوفّر موازنة الحمل وتجاوز الفشل وتتبع الاستخدام.",
+ "nameLabel": "الاسم",
+ "allOperational": "جميع الأنظمة قيد التشغيل",
+ "backupNow": "النسخ الاحتياطي الآن",
+ "providerMaxRetriesAria": "الحد الأقصى لمحاولات إعادة المحاولة للمزود",
+ "textToSpeechDesc": "تحويل النص إلى كلام طبيعي",
+ "machineId": "معرف الجهاز",
+ "globalProxy": "البروكسي العالمي",
+ "hitsMisses": "الإصابات / الإخفاقات",
+ "testDesc": "تحقق من أن اتصال المزود يعمل",
+ "chatDesc": "دردشة متدفقة وغير متدفقة عبر جميع المزودين",
+ "importSuccess": "نجاح الاستيراد",
+ "chat": "الدردشة",
+ "a2aQuickStartStep1": "اكتشف بطاقة الوكيل في /.well-known/agent.json.",
+ "importFailed": "فشل الاستيراد",
+ "inputPlaceholder": "الصق نص الطلب هنا أو اختر قالبًا أدناه...",
+ "providerModelsTitle": "نماذج المزود",
+ "lastBackup": "النسخ الاحتياطي الأخير",
+ "yourEndpoint": "نقطة النهاية الخاصة بك",
+ "autoDisableThresholdDesc": "عدد إشارات الحظر المتتالية المطلوبة قبل التعطيل الدائم",
+ "rerankDesc": "إعادة ترتيب المستندات حسب صلتها بالاستعلام",
+ "modelsPathPlaceholder": "/models",
+ "noCombosYet": "لا توجد مجموعات حتى الآن",
+ "connectedVerificationPendingWithError": "التحقق المتصل معلق مع وجود خطأ",
+ "comboDefaultsGuideHint1": "استخدم عددًا قليلًا من المحاولات للتدفقات ذات زمن الوصول المنخفض، وزد المهلة لمهام التوليد الطويلة فقط.",
+ "enableCloudTitle": "تمكين الوكيل السحابي",
+ "configuredProvidersHint": "المزودون الذين حُفظت بيانات اعتمادهم، بصرف النظر عن حالة التشغيل",
+ "paused": "متوقف مؤقتًا",
+ "llmProviders": "مزودو LLM",
+ "enableCombo": "تمكين المجموعة",
+ "removeProviderOverrideAria": "إزالة تجاوز إعدادات المزود",
+ "nodeVersion": "إصدار Node",
+ "openai": "OpenAI",
+ "exportFailedWithError": "فشل التصدير مع وجود خطأ",
+ "proxyConfigured": "تم تكوين البروكسي",
+ "concurrencyPerModel": "التزامن لكل نموذج",
+ "protocolTasksLabel": "المهام",
+ "oauthProviders": "مزودو OAuth",
+ "lockedCount": "عدد العناصر المقفلة",
+ "deleteChainConfirm": "تأكيد حذف السلسلة",
+ "recentTranslations": "الترجمات الأخيرة",
+ "zedImportButton": "استيراد من Zed",
+ "responsesDesc": "واجهة Responses من OpenAI لتدفقات Codex والتنفيذ المتقدم",
+ "testedCount": "عدد العناصر المختبرة",
+ "providersCommaSeparatedPlaceholder": "Anthropic، OpenAI، Gemini",
+ "signatureDefaults": "افتراضيات التوقيع",
+ "errorCreating": "خطأ في الإنشاء",
+ "timeRangeYear": "العام الماضي",
+ "compatibleLabel": "متوافق",
+ "cloudDisabledSuccess": "تم تعطيل السحابة بنجاح",
+ "deleteConfirm": "تأكيد الحذف",
+ "check": "تحقق",
+ "safeSearch": "البحث الآمن",
+ "protocolLastActivity": "آخر نشاط",
+ "openMcpDashboard": "فتح إدارة MCP",
+ "testBenchTab": "علامة تبويب بيئة الاختبار",
+ "chatPathLabel": "مسار نقطة نهاية الدردشة",
+ "retryDelay": "تأخير إعادة المحاولة",
+ "errorUpdating": "حدث خطأ أثناء التحديث",
+ "ideCliIntegrations": "تكاملات IDE وCLI",
+ "imageGeneration": "توليد الصور",
+ "apiKeyRequired": "مفتاح API مطلوب",
+ "resetAllTitle": "إعادة ضبط الكل",
+ "connectionError": "خطأ في الاتصال",
+ "modelName": "اسم النموذج",
+ "apiKeyForCheck": "مفتاح API للتحقق",
+ "cloudRequestTimeout": "انتهت مهلة الطلب السحابي",
+ "showConfiguredOnly": "إظهار العناصر المكوّنة فقط",
"showFreeOnly": "مجاني فقط",
"addFirstProvider": "أضف مزودك الأول",
"addFirstProviderDesc": "قم بتوصيل مزود الذكاء الاصطناعي لبدء توجيه الطلبات من خلال OmniRoute. يمكنك استخدام موفري الخدمات المجانيين، أو مفاتيح API، أو حسابات OAuth.",
"learnMore": "تعلم المزيد",
- "includeDomains": "Include Domains",
- "promptCache": "Prompt Cache",
- "cloudConnected": "Cloud Connected",
- "deleteChain": "Delete Chain",
- "chatPathPlaceholder": "Chat Path Placeholder",
- "databasePath": "Database Path",
- "usingLocalServer": "Using Local Server",
- "globalComboConfig": "Global Combo Config",
- "backupFailed": "Backup Failed",
- "tabProtocols": "Tab Protocols",
- "continue": "Continue",
- "categorySearch": "Category Search",
- "rateLimitStatus": "Rate Limit Status",
- "repairEnvSuccess": "Repair Env Success",
- "nameRequired": "Name Required",
- "country": "Country",
- "trackMetricsDesc": "Track Metrics Desc",
- "durationSecondsShort": "Duration Seconds Short",
- "formatConverterDescription": "Format Converter Description",
- "cloudBenefitAccess": "Cloud Benefit Access",
- "maxRetries": "Max Retries",
- "queueTimeout": "Queue Timeout",
- "addProvider": "Add Provider",
- "realtime": "Realtime",
- "totalTranslations": "Total Translations",
- "protocolActiveStreamsLabel": "Protocol Active Streams Label",
- "repairEnv": "Repair Env",
- "modelsCount": "Models Count",
- "viewBackups": "View Backups",
- "responsesApi": "Responses Api",
- "copyComboName": "Copy Combo Name",
- "failures": "Failures",
- "failedUpdate": "Failed Update",
- "imageDesc": "Image Desc",
- "failedCreate": "Failed Create",
- "remainingOfLimit": "Remaining Of Limit",
- "protocolsTitle": "Protocols Title",
- "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc",
- "source": "Source",
- "failed": "Failed",
- "apiKeyMgmt": "Api Key Mgmt",
- "mcpQuickStartStep1": "Mcp Quick Start Step1",
- "runTest": "Run Test",
- "loadingFallbackChains": "Loading Fallback Chains",
- "healthy": "Healthy",
- "version": "Version",
- "saveBlockWeighted": "Save Block Weighted",
- "zedImportNone": "Zed Import None",
- "noBackupsYet": "No Backups Yet",
- "noGlobalProxy": "No Global Proxy",
- "noModels": "No Models",
- "stickyLimit": "Sticky Limit",
- "passedCount": "Passed Count",
- "zedImportFailed": "Zed Import Failed",
- "saving": "Saving",
- "testAll": "Test All",
- "globalProxyDesc": "Global Proxy Desc",
- "latencyP99": "Latency P99",
- "connectingToCloud": "Connecting To Cloud",
- "responses": "Responses",
- "errorDeleting": "Error Deleting",
- "openaiPrefixPlaceholder": "Openai Prefix Placeholder",
- "enterPassword": "Enter Password",
- "openA2aDashboard": "Open A2A Dashboard",
- "enableProvider": "Enable Provider",
- "modeTest": "Mode Test",
- "failedDeleteChain": "Failed Delete Chain",
- "providerDesc": "Provider Desc",
- "templateLoadHint": "Template Load Hint",
- "lastFailure": "Last Failure",
- "moveDown": "Move Down",
- "providerLabel": "Provider Label",
- "clearCacheFailed": "Clear Cache Failed",
- "imagesGenerations": "Images Generations",
- "repairEnvWorking": "Repair Env Working",
- "millisecondsShort": "Milliseconds Short",
- "globalLabel": "Global Label",
- "failuresPlural": "Failures Plural",
- "completionsLegacyDesc": "Completions Legacy Desc",
- "searchProviders": "Search Providers",
- "chatPathHint": "Chat Path Hint",
- "defaultStrategyDesc": "Default Strategy Desc",
- "latencyP95": "Latency P95",
- "textToSpeech": "Text To Speech",
- "searchType": "Search Type",
- "messages": "Messages",
- "aggregatorsGateways": "Aggregators Gateways",
- "comboStrategyAria": "Combo Strategy Aria",
- "input": "Input",
- "testingConnection": "Testing Connection",
- "excludeDomains": "Exclude Domains",
- "webCookieProviders": "Web Cookie Providers",
- "allTestsPassed": "All Tests Passed",
- "openaiCompatibleName": "Openai Compatible Name",
- "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing",
- "comboDefaultsGuideTitle": "Combo Defaults Guide Title",
- "hoursAgo": "Hours Ago",
- "notAvailable": "Not Available",
- "skipAndContinue": "Skip And Continue",
- "moderations": "Moderations",
- "proxyConfig": "Proxy Config",
- "upstreamProxyProviders": "Upstream Proxy Providers",
- "exportAll": "Export All",
- "queuedCount": "Queued Count",
- "resetAll": "Reset All",
- "noTranslations": "No Translations",
- "avgLatency": "Avg Latency",
- "throttleStatus": "Throttle Status",
- "backupRetentionDesc": "Backup Retention Desc",
- "noCBData": "No Cb Data",
- "chainDeleted": "Chain Deleted",
- "timeLeft": "Time Left",
- "expirationBannerExpired": "Expiration Banner Expired",
- "language": "Language",
- "invalidFileType": "Invalid File Type",
- "monitoredProviders": "Monitored Providers",
- "errors": "Errors",
- "heap": "Heap",
- "chatCompletions": "Chat Completions",
- "exampleTemplatesHint": "Example Templates Hint",
- "retryDelayLabel": "Retry Delay Label",
- "audioTranscription": "Audio Transcription",
- "fallbackChainsDesc": "Fallback Chains Desc",
- "exampleTemplates": "Example Templates",
- "connectionsCount": "Connections Count",
- "modelsPathLabel": "Models Path Label",
- "activeProvidersHint": "Active Providers Hint",
- "activeLockouts": "Active Lockouts",
- "invalid": "Invalid",
- "skipPassword": "Skip Password",
- "moveUp": "Move Up",
- "timeRange": "Time Range",
- "stickyLimitDesc": "Sticky Limit Desc",
- "cloudBenefitEdge": "Cloud Benefit Edge",
- "custom": "Custom",
- "verifying": "Verifying",
- "baseUrlLabel": "Base Url Label",
- "setPassword": "Set Password",
- "safeSearchStrict": "Safe Search Strict",
- "noChangesSinceBackup": "No Changes Since Backup",
- "modelsPathHint": "Models Path Hint",
- "audioTranscriptions": "Audio Transcriptions",
- "testCombo": "Test Combo",
- "mcpQuickStartTitle": "Mcp Quick Start Title",
- "comboUpdated": "Combo Updated",
- "weighted": "Weighted",
- "providers": "Providers",
- "ccCompatibleLabel": "Cc Compatible Label",
- "noFallbackChainsDesc": "No Fallback Chains Desc",
- "yesImport": "Yes Import",
- "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint",
- "tabApis": "Tab Apis",
- "sectionDescription": "Section Description",
- "filter": "Filter",
- "purgeLogsFailed": "Purge Logs Failed",
- "latency": "Latency",
- "testAllOAuth": "Test All O Auth",
- "mcpQuickStartStep3": "Mcp Quick Start Step3",
- "repairEnvFailed": "Repair Env Failed",
- "zedImportHint": "Zed Import Hint",
- "modelsAcrossEndpoints": "Models Across Endpoints",
- "autoDisableBannedAccounts": "Auto Disable Banned Accounts",
- "securityDesc": "Security Desc",
- "listModels": "List Models",
- "backupRestore": "Backup Restore",
- "target": "Target",
- "zedImportSuccess": "Zed Import Success",
- "lastHeaderUpdate": "Last Header Update",
- "categoryCore": "Category Core",
- "noFallbackChains": "No Fallback Chains",
- "noSearchProviders": "No Search Providers",
- "autoBalance": "Auto Balance",
- "noModelsYet": "No Models Yet",
- "signatureFamily": "Signature Family",
- "externalApiCalls": "External Api Calls",
- "providerOverridesDesc": "Provider Overrides Desc",
- "signatureTool": "Signature Tool",
- "connectionFailed": "Connection Failed",
- "activeLimitersPlural": "Active Limiters Plural",
- "doneDesc": "Done Desc",
- "down": "Down",
- "noDataYet": "No Data Yet",
- "activeProviders": "Active Providers",
- "nameInvalid": "Name Invalid",
- "skip": "Skip",
- "createChain": "Create Chain",
- "audioSpeech": "Audio Speech",
- "cacheCleared": "Cache Cleared",
- "searchTypeNews": "Search Type News",
- "durationMillisecondsShort": "Duration Milliseconds Short",
- "addOpenAICompatible": "Add Open Ai Compatible",
- "chatTesterTab": "Chat Tester Tab",
- "queued": "Queued",
- "domainPlaceholder": "Domain Placeholder",
- "durationMinutesShort": "Duration Minutes Short",
- "verifyingConnection": "Verifying Connection",
- "imageProviders": "Image Providers",
- "protocolToolsLabel": "Protocol Tools Label",
- "queryPlaceholder": "Query Placeholder",
- "videoGeneration": "Video Generation",
- "timeRangeWeek": "Time Range Week",
- "limitExhausted": "Limit Exhausted",
- "failedDisable": "Failed Disable",
- "inMemoryNote": "In Memory Note",
- "compatibleHint": "Compatible Hint",
- "errorShort": "Error Short",
- "advancedHint": "Advanced Hint",
- "restoreFailed": "Restore Failed",
- "searchProvidersHeading": "Search Providers Heading",
- "comboName": "Combo Name",
- "autoDisableDescription": "Auto Disable Description",
- "embeddingsDesc": "Embeddings Desc",
- "operational": "Operational",
- "testAllApiKey": "Test All Api Key",
- "backupCreated": "Backup Created",
- "errorDuringImport": "Error During Import",
- "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2",
- "connecting": "Connecting",
- "fillModelAndProviders": "Fill Model And Providers",
- "syncing": "Syncing",
- "resetConfirm": "Reset Confirm",
- "trackMetrics": "Track Metrics",
- "successful": "Successful",
- "recovering": "Recovering",
- "autoDisableThreshold": "Auto Disable Threshold",
+ "includeDomains": "تضمين النطاقات",
+ "promptCache": "ذاكرة التخزين المؤقت للمطالبات",
+ "cloudConnected": "السحابة متصلة",
+ "deleteChain": "حذف السلسلة",
+ "chatPathPlaceholder": "/chat/completions",
+ "databasePath": "مسار قاعدة البيانات",
+ "usingLocalServer": "استخدام الخادم المحلي",
+ "globalComboConfig": "الإعداد العام للمجموعات",
+ "backupFailed": "فشل النسخ الاحتياطي",
+ "tabProtocols": "البروتوكولات",
+ "continue": "متابعة",
+ "categorySearch": "البحث والاكتشاف",
+ "rateLimitStatus": "حالة حد المعدل",
+ "repairEnvSuccess": "تم إصلاح ملف البيئة بنجاح",
+ "nameRequired": "الاسم مطلوب",
+ "country": "البلد",
+ "trackMetricsDesc": "تسجيل مقاييس الطلب لكل مجموعة",
+ "durationSecondsShort": "ث",
+ "formatConverterDescription": "اكتشاف تنسيق الطلب وتحويله تلقائيًا بين OpenAI وClaude وGemini وResponses API",
+ "cloudBenefitAccess": "الوصول إلى المزايا السحابية",
+ "maxRetries": "الحد الأقصى لمحاولات إعادة المحاولة",
+ "queueTimeout": "مهلة قائمة الانتظار",
+ "addProvider": "إضافة موفر",
+ "realtime": "الوقت الحقيقي",
+ "totalTranslations": "إجمالي الترجمات",
+ "protocolActiveStreamsLabel": "عمليات البث النشطة",
+ "repairEnv": "إصلاح البيئة",
+ "modelsCount": "عدد النماذج",
+ "viewBackups": "عرض النسخ الاحتياطية",
+ "responsesApi": "واجهة Responses API",
+ "copyComboName": "نسخ اسم المجموعة",
+ "failures": "الفشل",
+ "failedUpdate": "فشل التحديث",
+ "imageDesc": "إنشاء صور من مطالبات نصية",
+ "failedCreate": "فشل الإنشاء",
+ "remainingOfLimit": "المتبقي من الحد",
+ "protocolsTitle": "البروتوكولات",
+ "expirationBannerExpiringSoonDesc": "ستنتهي الصلاحية قريبًا؛ جدّد بيانات الاعتماد لتجنب انقطاع الخدمة",
+ "source": "المصدر",
+ "failed": "فشل",
+ "apiKeyMgmt": "إدارة مفتاح واجهة برمجة التطبيقات",
+ "mcpQuickStartStep1": "شغّل خادم MCP باستخدام omniroute --mcp.",
+ "runTest": "تشغيل الاختبار",
+ "loadingFallbackChains": "تحميل السلاسل الاحتياطية",
+ "healthy": "صحي",
+ "version": "الإصدار",
+ "saveBlockWeighted": "حفظ الكتلة المرجحة",
+ "zedImportNone": "لا شيء لاستيراده من Zed",
+ "noBackupsYet": "لا توجد نسخ احتياطية حتى الآن",
+ "noGlobalProxy": "لا يوجد بروكسي عالمي",
+ "noModels": "لا نماذج",
+ "stickyLimit": "الحد اللزج",
+ "passedCount": "عدد الاختبارات الناجحة",
+ "zedImportFailed": "فشل استيراد Zed",
+ "saving": "جارٍ الحفظ...",
+ "testAll": "اختبار الكل",
+ "globalProxyDesc": "تكوين بروكسي خارجي عام لجميع استدعاءات API مع إمكانية التجاوز لكل مزود أو مجموعة أو مفتاح",
+ "latencyP99": "زمن الوصول P99",
+ "connectingToCloud": "الاتصال بالسحابة",
+ "responses": "الردود",
+ "errorDeleting": "خطأ في الحذف",
+ "openaiPrefixPlaceholder": "oc-prod",
+ "enterPassword": "أدخل كلمة المرور",
+ "openA2aDashboard": "افتح لوحة معلومات A2A",
+ "enableProvider": "تمكين الموفر",
+ "modeTest": "اختبار الوضع",
+ "failedDeleteChain": "فشل حذف السلسلة",
+ "providerDesc": "وصّل أول مزود ذكاء اصطناعي؛ ويمكنك إضافة المزيد لاحقًا.",
+ "templateLoadHint": "يحمّل القالب الطلب بالتنسيق المحدد؛ غيّر تنسيق المصدر لتحميله بتنسيق آخر.",
+ "lastFailure": "الفشل الأخير",
+ "moveDown": "تحرك للأسفل",
+ "providerLabel": "المزود",
+ "clearCacheFailed": "فشل مسح ذاكرة التخزين المؤقت",
+ "imagesGenerations": "عمليات توليد الصور",
+ "repairEnvWorking": "جارٍ الإصلاح...",
+ "millisecondsShort": "مللي ثانية",
+ "globalLabel": "عام",
+ "failuresPlural": "حالات الفشل",
+ "completionsLegacyDesc": "إكمالات OpenAI النصية القديمة بصيغة سلسلة أو مصفوفة رسائل",
+ "searchProviders": "مزودو البحث",
+ "chatPathHint": "مسار دردشة مخصص للمزودين ذوي واجهات API غير القياسية",
+ "defaultStrategyDesc": "تُطبَّق على المجموعات الجديدة التي لا تحدد استراتيجية صراحةً",
+ "latencyP95": "زمن الوصول P95",
+ "textToSpeech": "تحويل النص إلى كلام",
+ "searchType": "نوع البحث",
+ "messages": "الرسائل",
+ "aggregatorsGateways": "بوابات المجمعات",
+ "comboStrategyAria": "استراتيجية المجموعة",
+ "input": "الإدخال",
+ "testingConnection": "اتصال الاختبار",
+ "excludeDomains": "استبعاد المجالات",
+ "webCookieProviders": "مزودو ملفات تعريف الارتباط على الويب",
+ "allTestsPassed": "مرت جميع الاختبارات",
+ "openaiCompatibleName": "متوافق مع OpenAI",
+ "warningCostOptimizedPartialPricing": "تحذير من تكلفة التسعير الجزئي الأمثل",
+ "comboDefaultsGuideTitle": "ضبط الإعدادات الافتراضية للمجموعات",
+ "hoursAgo": "منذ ساعات",
+ "notAvailable": "غير متوفر",
+ "skipAndContinue": "تخطي ومتابعة",
+ "moderations": "الإشراف على المحتوى",
+ "proxyConfig": "تكوين بروكسي",
+ "upstreamProxyProviders": "موفرو بروكسي المنبع",
+ "exportAll": "تصدير الكل",
+ "queuedCount": "عدد في قائمة الانتظار",
+ "resetAll": "إعادة ضبط الكل",
+ "noTranslations": "لا ترجمات",
+ "avgLatency": "متوسط زمن الوصول",
+ "throttleStatus": "حالة التقييد",
+ "backupRetentionDesc": "تُنشأ لقطات قاعدة البيانات تلقائيًا مع الاحتفاظ بنسخ دورية",
+ "noCBData": "لا تتوفر بيانات لقواطع الدائرة بعد",
+ "chainDeleted": "تم حذف السلسلة",
+ "timeLeft": "الوقت المتبقي",
+ "expirationBannerExpired": "انتهت صلاحية بيانات الاعتماد",
+ "language": "اللغة",
+ "invalidFileType": "نوع الملف غير صالح",
+ "monitoredProviders": "المزودون الخاضعون للمراقبة",
+ "errors": "أخطاء",
+ "heap": "كومة",
+ "chatCompletions": "استكمالات الدردشة",
+ "exampleTemplatesHint": "انقر لتحميل قالب مثال",
+ "retryDelayLabel": "تأخير إعادة المحاولة (مللي ثانية)",
+ "audioTranscription": "النسخ الصوتي",
+ "fallbackChainsDesc": "تحديد ترتيب تجاوز الفشل بين المزودين لكل نموذج",
+ "exampleTemplates": "قوالب أمثلة",
+ "connectionsCount": "عدد الاتصالات",
+ "modelsPathLabel": "مسار نقطة نهاية النماذج",
+ "activeProvidersHint": "المزودون المكوّنون والممكّنون حاليًا لطلبات التوجيه",
+ "activeLockouts": "عمليات الإغلاق النشطة",
+ "invalid": "غير صالح",
+ "skipPassword": "تخطي كلمة المرور",
+ "moveUp": "تحرك لأعلى",
+ "timeRange": "النطاق الزمني",
+ "stickyLimitDesc": "عدد الاستدعاءات لكل حساب قبل التبديل",
+ "cloudBenefitEdge": "شبكة طرفية عالمية سريعة",
+ "custom": "مخصص",
+ "verifying": "جارٍ التحقق...",
+ "baseUrlLabel": "عنوان URL الأساسي",
+ "setPassword": "تعيين كلمة المرور",
+ "safeSearchStrict": "بحث آمن صارم",
+ "noChangesSinceBackup": "لا توجد تغييرات منذ النسخ الاحتياطي",
+ "modelsPathHint": "مسار نقطة النهاية التي تعرض النماذج",
+ "audioTranscriptions": "النسخ الصوتية",
+ "testCombo": "اختبار المجموعة",
+ "mcpQuickStartTitle": "البدء السريع",
+ "comboUpdated": "تم تحديث المجموعة",
+ "weighted": "مرجح",
+ "providers": "المزودون",
+ "ccCompatibleLabel": "متوافق مع Claude Code",
+ "noFallbackChainsDesc": "لا توجد سلاسل احتياطية",
+ "yesImport": "نعم استيراد",
+ "lockoutsAutoRefreshHint": "يتم تحديث عمليات الإغلاق تلقائيًا",
+ "tabApis": "واجهات API",
+ "sectionDescription": "تفاصيل القسم",
+ "filter": "تصفية",
+ "purgeLogsFailed": "فشل تطهير السجلات",
+ "latency": "زمن الوصول",
+ "testAllOAuth": "اختبار جميع اتصالات OAuth",
+ "mcpQuickStartStep3": "تحقق من اتصال عميل MCP وابدأ استخدام الأدوات.",
+ "repairEnvFailed": "فشل إصلاح البيئة",
+ "zedImportHint": "استيراد إعدادات المزودين من Zed",
+ "modelsAcrossEndpoints": "النماذج عبر نقاط النهاية",
+ "autoDisableBannedAccounts": "تعطيل الحسابات المحظورة تلقائيًا",
+ "securityDesc": "إعدادات الأمان والمصادقة",
+ "listModels": "عرض النماذج",
+ "backupRestore": "استعادة النسخة الاحتياطية",
+ "target": "الهدف",
+ "zedImportSuccess": "تم الاستيراد من Zed بنجاح",
+ "lastHeaderUpdate": "آخر تحديث للترويسة",
+ "categoryCore": "الأساسيات",
+ "noFallbackChains": "لا سلاسل احتياطية",
+ "noSearchProviders": "لا يوجد مزودون للبحث",
+ "autoBalance": "التوازن التلقائي",
+ "noModelsYet": "لا توجد نماذج حتى الآن",
+ "signatureFamily": "عائلة التوقيع",
+ "externalApiCalls": "مكالمات واجهة برمجة التطبيقات الخارجية",
+ "providerOverridesDesc": "إعدادات خاصة تتجاوز الإعدادات الافتراضية لكل مزود",
+ "signatureTool": "أداة التوقيع",
+ "connectionFailed": "فشل الاتصال",
+ "activeLimitersPlural": "المحددات النشطة",
+ "doneDesc": "اكتمل الإعداد",
+ "down": "أسفل",
+ "noDataYet": "لا توجد بيانات حتى الآن",
+ "activeProviders": "مقدمو الخدمات النشطون",
+ "nameInvalid": "الاسم غير صالح",
+ "skip": "تخطي",
+ "createChain": "إنشاء سلسلة",
+ "audioSpeech": "تحويل النص إلى كلام",
+ "cacheCleared": "تم مسح ذاكرة التخزين المؤقت",
+ "searchTypeNews": "الأخبار",
+ "durationMillisecondsShort": "مللي ثانية",
+ "addOpenAICompatible": "إضافة مزود متوافق مع OpenAI",
+ "chatTesterTab": "علامة تبويب اختبار الدردشة",
+ "queued": "في قائمة الانتظار",
+ "domainPlaceholder": "example.com",
+ "durationMinutesShort": "د",
+ "verifyingConnection": "التحقق من الاتصال",
+ "imageProviders": "مزودو الصور",
+ "protocolToolsLabel": "الأدوات المطلوبة",
+ "queryPlaceholder": "أدخل استعلام البحث...",
+ "videoGeneration": "توليد الفيديو",
+ "timeRangeWeek": "الأسبوع الماضي",
+ "limitExhausted": "انتهى الحد",
+ "failedDisable": "فشل التعطيل",
+ "inMemoryNote": "تُخزَّن الأحداث في الذاكرة وتُمسح عند إعادة تشغيل الخادم.",
+ "compatibleHint": "استخدم الخيارات أعلاه لإضافة نقاط نهاية متوافقة مع OpenAI أو Anthropic",
+ "errorShort": "خطأ",
+ "advancedHint": "اتركه فارغًا لاستخدام الإعدادات العامة؛ هذه القيم تتجاوزها لكل مزود.",
+ "restoreFailed": "فشلت الاستعادة",
+ "searchProvidersHeading": "مزودو البحث",
+ "comboName": "اسم المجموعة",
+ "autoDisableDescription": "تعطيل اتصالات المزود نهائيًا عند تكرار إشارات الحظر الطرفية",
+ "embeddingsDesc": "تضمينات نصية للبحث ومسارات RAG",
+ "operational": "قيد التشغيل",
+ "testAllApiKey": "اختبار جميع اتصالات مفتاح API",
+ "backupCreated": "تم إنشاء النسخة الاحتياطية",
+ "errorDuringImport": "حدث خطأ أثناء الاستيراد",
+ "comboDefaultsGuideHint2": "استخدم تجاوزات المزود عندما يحتاج مزود إلى مهلة أو محاولات مختلفة عن الإعدادات العامة.",
+ "connecting": "جارٍ الاتصال...",
+ "fillModelAndProviders": "يرجى إدخال اسم النموذج والمزودين",
+ "syncing": "جارٍ المزامنة...",
+ "resetConfirm": "هل تريد إعادة التعيين؟",
+ "trackMetrics": "تتبع المقاييس",
+ "successful": "ناجح",
+ "recovering": "يتعافى",
+ "autoDisableThreshold": "عتبة التعطيل التلقائي",
"anthropic": "Anthropic",
- "syncingData": "Syncing Data",
- "cloudBenefitPorts": "Cloud Benefit Ports",
- "compatibleProviders": "Compatible Providers",
- "freeTierProviders": "مقدمي الطبقة الحرة",
+ "syncingData": "مزامنة البيانات",
+ "cloudBenefitPorts": "لا حاجة إلى فتح المنافذ أو ضبط جدار الحماية",
+ "compatibleProviders": "المزودون المتوافقون",
+ "freeTierProviders": "مزودو الطبقة المجانية",
"freeTierLabel": "الطبقة المجانية متاحة",
"freeTierProvidersDesc": "مقدمو الخدمة الذين لديهم طبقات مجانية - بعضهم يتطلب تسجيل مفتاح API، والبعض الآخر لا يحتاج إلى بيانات اعتماد على الإطلاق.",
- "clearCache": "Clear Cache",
- "reqs": "Reqs",
- "addAnthropicCompatible": "Add Anthropic Compatible",
- "apiKeyProviders": "Api Key Providers",
- "tabsAria": "Tabs Aria",
- "resetting": "Resetting",
- "millisecondsAbbr": "Milliseconds Abbr",
- "backupReasonPreRestore": "Backup Reason Pre Restore",
- "disableCloud": "Disable Cloud",
- "newProviderNameAria": "New Provider Name Aria",
- "passwordsMismatch": "Passwords Mismatch",
- "a2aQuickStartStep3": "A2A Quick Start Step3",
- "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix",
- "failedAddProvider": "Failed Add Provider",
- "addAtLeastOneProvider": "Add At Least One Provider",
- "reasonSeparator": "Reason Separator",
- "zedImporting": "Zed Importing",
- "confirmPasswordPlaceholder": "Confirm Password Placeholder",
- "whatYouGet": "What You Get",
- "signatureSession": "Signature Session",
- "errorCountNoCode": "Error Count No Code",
- "testing": "Testing",
- "providersCommaSeparated": "Providers Comma Separated",
- "exportDatabase": "Export Database",
- "hitRate": "Hit Rate",
- "completionsLegacy": "Completions Legacy",
- "removeModel": "Remove Model",
- "timeRangeDay": "Time Range Day",
- "cloudRequestFailed": "Cloud Request Failed",
- "updatedAt": "Updated At",
- "monitoredProvidersHint": "Monitored Providers Hint",
- "connectionSuccessful": "Connection Successful",
- "latencyP50": "Latency P50",
- "logsDeleted": "Logs Deleted",
- "chatTester": "Chat Tester",
- "safeSearchOff": "Safe Search Off",
- "nameHint": "Name Hint",
- "debugToggle": "Debug Toggle",
- "embedding": "Embedding",
- "issuesLabel": "Issues Label",
- "optionAny": "Option Any",
- "maxNestingDepth": "Max Nesting Depth",
- "rerank": "Rerank",
- "checking": "Checking",
- "getStarted": "Get Started",
- "restoreSuccess": "Restore Success",
- "issuesDetected": "Issues Detected",
- "signatureCache": "Signature Cache",
- "modelLockouts": "Model Lockouts",
- "usingCloudProxy": "Using Cloud Proxy",
- "loadingHealth": "Loading Health",
- "providerOverrides": "Provider Overrides",
- "audioTranscriptionDesc": "Audio Transcription Desc",
- "learnedFromHeaders": "Learned From Headers",
- "totalRequests": "Total Requests",
- "cloudUnstableNote": "Cloud Unstable Note",
- "gamificationAdmin": "مشرف اللعب",
+ "clearCache": "مسح ذاكرة التخزين المؤقت",
+ "reqs": "الطلبات",
+ "addAnthropicCompatible": "إضافة مزود متوافق مع Anthropic",
+ "apiKeyProviders": "مزودو مفاتيح API",
+ "tabsAria": "أقسام نقطة النهاية",
+ "resetting": "إعادة الضبط",
+ "millisecondsAbbr": "مللي ثانية",
+ "backupReasonPreRestore": "قبل الاستعادة",
+ "disableCloud": "تعطيل السحابة",
+ "newProviderNameAria": "اسم المزود الجديد",
+ "passwordsMismatch": "عدم تطابق كلمات المرور",
+ "a2aQuickStartStep3": "تتبّع المهام وتحكّم فيها باستخدام tasks/get وtasks/cancel.",
+ "liveMonitorDescriptionSuffix": "أو استخدم استدعاءات API خارجية لإنشاء الأحداث.",
+ "failedAddProvider": "فشل إضافة موفر",
+ "addAtLeastOneProvider": "أضف موفرًا واحدًا على الأقل",
+ "reasonSeparator": "—",
+ "zedImporting": "جارٍ الاستيراد من Zed...",
+ "confirmPasswordPlaceholder": "تأكيد كلمة المرور",
+ "whatYouGet": "ما تحصل عليه",
+ "signatureSession": "جلسة التوقيع",
+ "errorCountNoCode": "عدد الأخطاء",
+ "testing": "جارٍ الاختبار...",
+ "providersCommaSeparated": "المزودون (مفصولون بفواصل حسب الأولوية)",
+ "exportDatabase": "تصدير قاعدة البيانات",
+ "hitRate": "معدل نجاح الذاكرة المؤقتة",
+ "completionsLegacy": "الإكمالات (قديمة)",
+ "removeModel": "إزالة النموذج",
+ "timeRangeDay": "اليوم الماضي",
+ "cloudRequestFailed": "فشل طلب السحابة",
+ "updatedAt": "تم التحديث في",
+ "monitoredProvidersHint": "المزودون الذين تتابعهم حاليًا مراقبات صحة قواطع الدائرة",
+ "connectionSuccessful": "تم الاتصال بنجاح",
+ "latencyP50": "زمن الوصول P50",
+ "logsDeleted": "تم حذف السجلات",
+ "chatTester": "اختبار الدردشة",
+ "safeSearchOff": "البحث الآمن معطل",
+ "nameHint": "مطلوب؛ اسم وصفي لهذا الاتصال",
+ "debugToggle": "تبديل التصحيح",
+ "embedding": "التضمين",
+ "issuesLabel": "المشكلات المكتشفة",
+ "optionAny": "أي",
+ "maxNestingDepth": "أقصى عمق التعشيش",
+ "rerank": "إعادة الترتيب",
+ "checking": "جارٍ التحقق...",
+ "getStarted": "ابدأ",
+ "restoreSuccess": "تمت الاستعادة بنجاح",
+ "issuesDetected": "تم اكتشاف المشكلات",
+ "signatureCache": "ذاكرة التخزين المؤقت للتوقيع",
+ "modelLockouts": "عمليات إغلاق النماذج",
+ "usingCloudProxy": "باستخدام بروكسي السحابة",
+ "loadingHealth": "تحميل الصحة",
+ "providerOverrides": "تجاوزات إعدادات المزود",
+ "audioTranscriptionDesc": "تحويل الملفات الصوتية إلى نص",
+ "learnedFromHeaders": "مستنتج من الترويسات",
+ "totalRequests": "إجمالي الطلبات",
+ "cloudUnstableNote": "قد يكون اتصال Claude Code OAuth عبر السحابة غير مستقر حاليًا.",
+ "gamificationAdmin": "مشرف التحفيزات",
"monitorAnomaliesAndHealth": "مراقبة الحالات الشاذة وصحة النظام",
"flaggedAnomalies": "الحالات الشاذة التي تم وضع علامة عليها",
"noAnomaliesDetected": "لم يتم اكتشاف أي حالات شاذة",
@@ -674,7 +674,7 @@
"tokensRecipientApiKeyId": "معرف مفتاح واجهة برمجة التطبيقات للمستلم",
"tokensRecipientApiKeyIdPlaceholder": "أدخل معرف مفتاح API للمستلم",
"tokensReasonOptional": "السبب (اختياري)",
- "tokensReasonPlaceholder": "على سبيل المثال مكافأة، مكافأة",
+ "tokensReasonPlaceholder": "على سبيل المثال مكافأة، جائزة",
"tokensTransactionHistory": "تاريخ المعاملات",
"tokensNoTransactionsYet": "لا توجد معاملات حتى الآن",
"tokensInviteCodes": "رموز الدعوة",
@@ -691,7 +691,7 @@
"batchDetailWindow": "نافذة",
"batchDetailCreated": "تم إنشاؤها",
"providerTopologyEmpty": "لا يوجد مقدمي خدمات متصلين حتى الآن",
- "badgeToastUnlocked": "شارة مقفلة!",
+ "badgeToastUnlocked": "تم فتح شارة جديدة!",
"batchListSearchPlaceholder": "البحث حسب المعرف ونقطة النهاية والطراز...",
"batchListDeleteAllCompletedTitle": "حذف كافة الدفعات المكتملة",
"batchListBatchesTable": "دفعات",
@@ -708,138 +708,138 @@
"batchFilesListSearchPlaceholder": "البحث حسب المعرف أو اسم الملف...",
"batchFilesListFilesTable": "ملفات",
"batchPageLoadingMore": "جارٍ تحميل المزيد…",
- "recommended": "__MISSING__:Recommended",
- "batchConceptTitle": "Batch processing",
- "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.",
- "batchConceptHowItWorks": "How it works",
- "batchConceptBenefit50pct": "50% discount on input + output tokens",
- "batchConceptAsync24h": "Async with a 24h completion window",
- "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings",
- "filesConceptTitle": "Batch files",
- "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.",
- "filesConceptInput": "Input — your JSONL with one request per line",
- "filesConceptOutput": "Output — results from completed requests",
- "filesConceptError": "Errors — requests that failed",
- "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)",
- "wizardTitle": "New batch",
- "wizardClose": "Close",
- "wizardNext": "Next",
- "wizardBack": "Back",
- "wizardCancel": "Cancel",
- "wizardCreate": "Create batch",
- "wizardCreating": "Creating…",
- "wizardStep1Destination": "Destination",
- "wizardStep2Input": "Input",
- "wizardStep3Validate": "Validate",
- "wizardStep4Cost": "Cost & create",
- "wizardProviderLabel": "Provider",
- "wizardEndpointLabel": "Endpoint",
- "wizardModelLabel": "Model",
+ "recommended": "موصى به",
+ "batchConceptTitle": "معالجة الدفعات",
+ "batchConceptSubtitle": "معالجة آلاف الطلبات بشكل غير متزامن بنسبة 50% تقريبًا من التكلفة (نافذة 24 ساعة). مثالية للتقييمات والتصنيف والتضمين.",
+ "batchConceptHowItWorks": "كيف يعمل",
+ "batchConceptBenefit50pct": "خصم 50% على رموز الإدخال والإخراج",
+ "batchConceptAsync24h": "غير متزامن مع نافذة إكمال لمدة 24 ساعة",
+ "batchConceptUseCases": "الأفضل للتصنيف المجمع والتقييمات والتضمينات",
+ "filesConceptTitle": "ملفات دفعة",
+ "filesConceptSubtitle": "ملفات JSONL المستخدمة بواسطة الدفعات: طلبات الإدخال والنتائج والأخطاء.",
+ "filesConceptInput": "الإدخال - JSONL الخاص بك مع طلب واحد في كل سطر",
+ "filesConceptOutput": "الإخراج - نتائج الطلبات المكتملة",
+ "filesConceptError": "الأخطاء — الطلبات التي فشلت",
+ "filesConceptRetention": "الاحتفاظ: 30 يومًا افتراضيًا (Anthropic: 29 يومًا)",
+ "wizardTitle": "دفعة جديدة",
+ "wizardClose": "إغلاق",
+ "wizardNext": "التالي",
+ "wizardBack": "العودة",
+ "wizardCancel": "إلغاء",
+ "wizardCreate": "إنشاء دفعة",
+ "wizardCreating": "جارٍ الإنشاء…",
+ "wizardStep1Destination": "الوجهة",
+ "wizardStep2Input": "الإدخال",
+ "wizardStep3Validate": "التحقق",
+ "wizardStep4Cost": "تكلفة وإنشاء",
+ "wizardProviderLabel": "مزود",
+ "wizardEndpointLabel": "نقطة النهاية",
+ "wizardModelLabel": "نموذج",
"wizardInputKindJsonl": "JSONL",
- "wizardInputKindCsv": "CSV (we'll convert)",
- "wizardDropOrPick": "Drop a file or click to pick",
- "wizardCsvMappingTitle": "Map CSV columns → request fields",
- "wizardCsvMappingAddField": "Add field",
- "wizardValidationOk": "All lines valid",
- "wizardValidationErrors": "Validation errors",
- "wizardValidationPreview": "Preview (first 5 requests)",
- "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.",
- "wizardCostSync": "Sync cost",
- "wizardCostBatch": "Batch cost (-50%)",
- "wizardCostSavings": "Savings",
- "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.",
- "wizardErrorUpload": "Failed to upload file. Try again.",
- "wizardErrorCreate": "Failed to create batch. Try again.",
- "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.",
- "uploadModalTitle": "Upload batch file",
- "uploadModalDropOrPick": "Drop a .jsonl file or click to pick",
- "uploadModalUpload": "Upload",
- "uploadModalCancel": "Cancel",
- "uploadModalError": "Upload failed. Try again.",
- "uploadModalSuccess": "Uploaded",
- "uploadModalSizeLimit": "Max 512 MB",
- "batchListNewButton": "New batch",
- "batchListAutoRefresh": "Auto-refresh 30s",
- "batchListCostColumn": "Cost",
- "batchActionCancel": "Cancel",
- "batchActionDownloadOutput": "Download output",
- "batchActionDownloadErrors": "Download errors",
- "batchActionRetry": "Retry failed",
- "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.",
- "expirationBadgeCritical": "Critical",
- "expirationBadgeWarning": "Soon",
- "expirationBadgeNormal": "Pending",
- "expirationBadgeExpired": "Expired",
- "filesListUploadButton": "Upload",
- "filesListUsedByColumn": "Used by",
- "filesListUsedByNone": "None",
- "filesListDelete": "Delete",
- "filesListDownload": "Download",
- "batchDetailActionCancel": "Cancel batch",
- "batchDetailActionRetry": "Retry failed requests",
- "batchDetailCancelling": "Cancelling…",
- "batchDetailRetrying": "Preparing retry…",
- "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.",
- "batchActionCancelError": "Failed to cancel batch. Try again.",
- "batchActionRetryError": "Failed to retry failed requests. Try again.",
- "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)",
- "filesListUsedByRoleInput": "input",
- "filesListUsedByRoleOutput": "output",
- "filesListUsedByRoleError": "error",
- "batchListProgressPartial": "(partial)",
- "filesListSizeColumn": "Size",
- "batchListProviderColumn": "Provider",
+ "wizardInputKindCsv": "CSV (سوف نقوم بالتحويل)",
+ "wizardDropOrPick": "قم بإسقاط ملف أو انقر للاختيار",
+ "wizardCsvMappingTitle": "قم بتعيين أعمدة CSV → حقول الطلب",
+ "wizardCsvMappingAddField": "إضافة حقل",
+ "wizardValidationOk": "جميع الأسطر صالحة",
+ "wizardValidationErrors": "أخطاء التحقق من الصحة",
+ "wizardValidationPreview": "معاينة (أول 5 طلبات)",
+ "wizardValidationSamplingNote": "الملف كبير - تم التحقق من صحته عن طريق أخذ العينات (أول 1000 + آخر 100 سطر). يعمل التحقق الكامل من جانب الخادم.",
+ "wizardCostSync": "تكلفة المزامنة",
+ "wizardCostBatch": "تكلفة الدفعة (-50%)",
+ "wizardCostSavings": "التوفير",
+ "wizardCostEstimatedNotice": "التكلفة المقدرة - قد تختلف الفواتير الفعلية.",
+ "wizardErrorUpload": "فشل تحميل الملف. حاول ثانية.",
+ "wizardErrorCreate": "فشل في إنشاء الدفعة. حاول ثانية.",
+ "wizardEmptyProviders": "وصّل مزودًا يدعم الدفعات (OpenAI أو Anthropic أو Gemini) لإنشاء دفعة.",
+ "uploadModalTitle": "تحميل ملف دفعي",
+ "uploadModalDropOrPick": "قم بإسقاط ملف .jsonl أو انقر للاختيار",
+ "uploadModalUpload": "تحميل",
+ "uploadModalCancel": "إلغاء",
+ "uploadModalError": "فشل التحميل. حاول ثانية.",
+ "uploadModalSuccess": "تم الرفع",
+ "uploadModalSizeLimit": "الحد الأقصى 512 ميجابايت",
+ "batchListNewButton": "دفعة جديدة",
+ "batchListAutoRefresh": "التحديث التلقائي 30 ثانية",
+ "batchListCostColumn": "التكلفة",
+ "batchActionCancel": "إلغاء",
+ "batchActionDownloadOutput": "تحميل الإخراج",
+ "batchActionDownloadErrors": "تنزيل الأخطاء",
+ "batchActionRetry": "إعادة محاولة الطلبات الفاشلة",
+ "batchActionRetryConfirm": "هل تريد إعادة محاولة {n} من الطلبات الفاشلة؟ تعتمد التكلفة النهائية على عدد الرموز المستهلكة فعليًا.",
+ "expirationBadgeCritical": "حرجة",
+ "expirationBadgeWarning": "قريبا",
+ "expirationBadgeNormal": "في انتظار",
+ "expirationBadgeExpired": "انتهت صلاحيتها",
+ "filesListUploadButton": "تحميل",
+ "filesListUsedByColumn": "يستخدم من قبل",
+ "filesListUsedByNone": "لا شيء",
+ "filesListDelete": "حذف",
+ "filesListDownload": "تحميل",
+ "batchDetailActionCancel": "إلغاء الدفعة",
+ "batchDetailActionRetry": "أعد محاولة الطلبات الفاشلة",
+ "batchDetailCancelling": "جارٍ الإلغاء…",
+ "batchDetailRetrying": "جارٍ التحضير لإعادة المحاولة...",
+ "batchDetailCancelConfirm": "هل تريد إلغاء هذه الدفعة؟ ستتوقف الطلبات قيد التقدم.",
+ "batchActionCancelError": "فشل في إلغاء الدفعة. حاول ثانية.",
+ "batchActionRetryError": "فشلت إعادة محاولة الطلبات الفاشلة. حاول ثانية.",
+ "batchConceptRetentionNote": "يتم الاحتفاظ بالنتائج وملفات الأخطاء لمدة 30 يومًا (Anthropic: 29 يومًا)",
+ "filesListUsedByRoleInput": "إدخال",
+ "filesListUsedByRoleOutput": "الإخراج",
+ "filesListUsedByRoleError": "خطأ",
+ "batchListProgressPartial": "(جزئي)",
+ "filesListSizeColumn": "الحجم",
+ "batchListProviderColumn": "مزود",
"batchListProviderUnknown": "—",
- "batchListBatchCreated": "Batch {id} created — refreshing list…",
- "batchListBatchCreatedDismiss": "Dismiss",
- "batchListRefreshing": "Refreshing…",
- "batchListRefresh": "Refresh",
- "uploadFileModalRemove": "Remove",
- "uploadFileModalUploading": "Uploading…",
- "wizardInputReading": "Reading file…",
- "wizardInputReady": "Ready",
- "wizardInputLargeFileLabel": "Large file — sampling validation",
- "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.",
- "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.",
- "wizardCostWindow24h": "24h completion window",
- "wizardValidationFieldsOk": "required fields valid",
- "batchListProviderOther": "Other",
- "batchListTitle": "Batches",
- "batchListCount": "{count} batches",
- "batchListRemovingCompleted": "Removing…",
- "batchListRemoveCompleted": "Remove completed",
- "batchListTableStatus": "Status",
- "batchListTableId": "ID",
- "batchListTableEndpoint": "Endpoint",
- "batchListTableModel": "Model",
- "batchListTableProgress": "Progress",
- "batchListTableCreated": "Created",
- "batchListTableExpires": "Expires",
- "batchListLoading": "Loading…",
- "batchListEmpty": "No batches found",
- "batchListValidating": "Validating…",
- "batchStatusAll": "All statuses",
- "batchStatusInProgress": "In progress",
- "batchStatusValidating": "Validating",
- "batchStatusFinalizing": "Finalizing",
- "batchStatusCompleted": "Completed",
- "batchStatusFailed": "Failed",
- "batchStatusCancelled": "Cancelled",
- "batchStatusCancelling": "Cancelling",
- "batchStatusExpired": "Expired",
- "batchStatusCompletedWithFailures": "completed with failures",
- "batchStatusInProgressWithFailures": "in progress (with failures)",
- "batchStatusFinalizingWithFailures": "finalizing (with failures)",
- "batchStatusCancelledWithFailures": "cancelled with failures",
- "batchStatusExpiredWithFailures": "expired (partial)",
- "wizardCostEstimating": "Estimating cost…",
- "wizardCostRequests": "Requests",
- "wizardCostInputTok": "input tok",
- "wizardCostOutputTok": "output tok",
- "wizardCostWindow": "Window",
- "wizardDestinationSelectProvider": "Select a provider…",
- "wizardDestinationSelectModel": "Select a model…",
- "wizardDestinationConnectProvider": "Connect a provider"
+ "batchListBatchCreated": "تم إنشاء الدفعة {id} — تحديث القائمة...",
+ "batchListBatchCreatedDismiss": "استبعاد",
+ "batchListRefreshing": "جارٍ التحديث…",
+ "batchListRefresh": "تحديث",
+ "uploadFileModalRemove": "إزالة",
+ "uploadFileModalUploading": "جارٍ التحميل…",
+ "wizardInputReading": "قراءة الملف...",
+ "wizardInputReady": "جاهز",
+ "wizardInputLargeFileLabel": "ملف كبير — التحقق بأخذ عينات",
+ "wizardInputCsvJsonlReady": "تم إنشاء JSONL - جاهز للتحقق من الصحة.",
+ "wizardInputLargeFileWarning": "تم اكتشاف ملف كبير - يتم التحقق من الصحة عن طريق أخذ العينات (أول 5 ميجا بايت + آخر 100 كيلو بايت). يحدث التحقق الكامل من جانب الخادم.",
+ "wizardCostWindow24h": "نافذة إكمال 24 ساعة",
+ "wizardValidationFieldsOk": "الحقول المطلوبة صالحة",
+ "batchListProviderOther": "أخرى",
+ "batchListTitle": "دفعات",
+ "batchListCount": "{count} دفعة",
+ "batchListRemovingCompleted": "جارٍ الإزالة...",
+ "batchListRemoveCompleted": "إزالة الدفعات المكتملة",
+ "batchListTableStatus": "الحالة",
+ "batchListTableId": "معرف",
+ "batchListTableEndpoint": "نقطة النهاية",
+ "batchListTableModel": "نموذج",
+ "batchListTableProgress": "التقدم",
+ "batchListTableCreated": "تم إنشاؤها",
+ "batchListTableExpires": "تنتهي",
+ "batchListLoading": "جارٍ التحميل…",
+ "batchListEmpty": "لم يتم العثور على دفعات",
+ "batchListValidating": "جارٍ التحقق…",
+ "batchStatusAll": "جميع الحالات",
+ "batchStatusInProgress": "قيد التقدم",
+ "batchStatusValidating": "جارٍ التحقق",
+ "batchStatusFinalizing": "وضع اللمسات النهائية",
+ "batchStatusCompleted": "مكتمل",
+ "batchStatusFailed": "فشل",
+ "batchStatusCancelled": "تم الإلغاء",
+ "batchStatusCancelling": "جارٍ الإلغاء",
+ "batchStatusExpired": "انتهت صلاحيتها",
+ "batchStatusCompletedWithFailures": "اكتملت مع وجود حالات فشل",
+ "batchStatusInProgressWithFailures": "قيد التقدم (مع حالات فشل)",
+ "batchStatusFinalizingWithFailures": "قيد الإنهاء (مع حالات فشل)",
+ "batchStatusCancelledWithFailures": "أُلغيت مع وجود حالات فشل",
+ "batchStatusExpiredWithFailures": "منتهية الصلاحية (جزئيًا)",
+ "wizardCostEstimating": "جارٍ تقدير التكلفة…",
+ "wizardCostRequests": "الطلبات",
+ "wizardCostInputTok": "رموز الإدخال",
+ "wizardCostOutputTok": "رموز الإخراج",
+ "wizardCostWindow": "نافذة",
+ "wizardDestinationSelectProvider": "اختر مزودًا…",
+ "wizardDestinationSelectModel": "اختر نموذجًا…",
+ "wizardDestinationConnectProvider": "وصّل مزودًا"
},
"sidebar": {
"home": "الصفحة الرئيسية",
@@ -857,12 +857,12 @@
"settings": "الإعدادات",
"translator": "مترجم",
"playground": "ملعب النماذج",
- "searchTools": "Search Tools",
+ "searchTools": "أدوات البحث",
"agents": "وكلاء",
"cloudAgents": "وكلاء السحابة",
- "memory": "Memory",
- "skills": "Skills",
- "omniSkills": "أومنيسكيلز",
+ "memory": "الذاكرة",
+ "skills": "المهارات",
+ "omniSkills": "OmniSkills",
"agentSkills": "مهارات الوكيل",
"docs": "المستندات",
"issues": "القضايا",
@@ -877,7 +877,7 @@
"webhooksSubtitle": "الحصول على إخطار من الأحداث",
"combosSubtitle": "موفري المجموعة لتجاوز الفشل",
"batchSubtitle": "معالجة طلبات متعددة",
- "contextCavemanSubtitle": "الضغط الفوري",
+ "contextCavemanSubtitle": "ضغط السياق Caveman",
"contextRtkSubtitle": "تصفية الإخراج",
"auditLog": "سجل التدقيق",
"shutdown": "إيقاف التشغيل",
@@ -888,192 +888,192 @@
"debug": "تصحيح",
"system": "النظام",
"help": "مساعدة",
- "primarySection": "Main",
- "cliSection": "CLI",
- "debugSection": "Debug",
- "systemSection": "System",
- "helpSection": "Help",
+ "primarySection": "الرئيسية",
+ "cliSection": "سطر الأوامر",
+ "debugSection": "تصحيح",
+ "systemSection": "النظام",
+ "helpSection": "مساعدة",
"serverDisconnected": "تم قطع اتصال الخادم",
"serverDisconnectedMsg": "تم إيقاف الخادم الوكيل أو يتم إعادة تشغيله.",
"expandSidebar": "قم بتوسيع الشريط الجانبي",
"collapseSidebar": "طي الشريط الجانبي",
- "themes": "المواضيع",
+ "themes": "السمات",
"presetColors": "الألوان الشائعة",
"createTheme": "إنشاء سمة",
"chooseColor": "لون واحد",
- "themeCoral": "قدرة الشُّعَب المرجانية",
+ "themeCoral": "مرجاني",
"themeBlue": "أزرق",
"themeRed": "أحمر",
"themeGreen": "أخضر",
"themeViolet": "بنفسجي ساحر",
- "themeOrange": "أورانج (Orange)",
- "themeCyan": "كيان",
+ "themeOrange": "برتقالي",
+ "themeCyan": "سماوي",
"cliToolsShort": "أدوات",
- "cache": "Cache",
- "cacheShort": "Cache",
- "batch": "Batch Jobs",
- "themeSystem": "Theme System",
- "whitelabelingDesc": "Whitelabeling Desc",
- "switchThemes": "Switch Themes",
- "themeAccentDesc": "Theme Accent Desc",
- "uploadFavicon": "Upload Favicon",
- "themeDark": "Theme Dark",
- "customLogoDesc": "Custom Logo Desc",
- "sidebarVisibilityToggle": "Sidebar Visibility Toggle",
- "themeAccent": "Theme Accent",
- "resetFavicon": "Reset Favicon",
- "whitelabeling": "Whitelabeling",
- "darkMode": "Dark Mode",
- "uploadLogo": "Upload Logo",
- "themeLight": "Theme Light",
- "appName": "App Name",
- "appNameDesc": "App Name Desc",
- "resetLogo": "Reset Logo",
- "customFavicon": "Custom Favicon",
- "hideHealthLogs": "Hide Health Logs",
- "customLogo": "Custom Logo",
- "appearance": "Appearance",
- "themeSelectionAria": "Theme Selection Aria",
- "themeCreate": "Theme Create",
- "customFaviconDesc": "Custom Favicon Desc",
- "logoPreview": "Logo Preview",
- "themeCustom": "Theme Custom",
- "hideHealthLogsDesc": "Hide Health Logs Desc",
- "faviconPreview": "Favicon Preview",
- "changelog": "Changelog",
- "contextSection": "Context & Cache",
+ "cache": "ذاكرة التخزين المؤقت",
+ "cacheShort": "ذاكرة التخزين المؤقت",
+ "batch": "المهام الدفعية",
+ "themeSystem": "سمة النظام",
+ "whitelabelingDesc": "تخصيص الهوية البصرية",
+ "switchThemes": "تبديل السمات",
+ "themeAccentDesc": "وصف اللون المميّز",
+ "uploadFavicon": "تحميل الأيقونة المفضلة",
+ "themeDark": "السمة الداكنة",
+ "customLogoDesc": "شعار مخصص للتطبيق",
+ "sidebarVisibilityToggle": "تبديل ظهور الشريط الجانبي",
+ "themeAccent": "اللون المميّز",
+ "resetFavicon": "إعادة تعيين الأيقونة المفضلة",
+ "whitelabeling": "تخصيص الهوية البصرية",
+ "darkMode": "الوضع الداكن",
+ "uploadLogo": "تحميل الشعار",
+ "themeLight": "السمة الفاتحة",
+ "appName": "اسم التطبيق",
+ "appNameDesc": "الاسم الظاهر للتطبيق",
+ "resetLogo": "إعادة تعيين الشعار",
+ "customFavicon": "أيقونة مفضلة مخصصة",
+ "hideHealthLogs": "إخفاء سجلات الصحة",
+ "customLogo": "شعار مخصص",
+ "appearance": "المظهر",
+ "themeSelectionAria": "اختيار السمة",
+ "themeCreate": "إنشاء سمة",
+ "customFaviconDesc": "أيقونة مفضلة مخصصة للتطبيق",
+ "logoPreview": "معاينة الشعار",
+ "themeCustom": "سمة مخصصة",
+ "hideHealthLogsDesc": "إخفاء سجلات فحوصات الصحة",
+ "faviconPreview": "معاينة الأيقونة المفضلة",
+ "changelog": "سجل التغيير",
+ "contextSection": "السياق وذاكرة التخزين المؤقت",
"contextCaveman": "Caveman",
"contextRtk": "RTK",
- "contextCombos": "Engine Combos",
+ "contextCombos": "مجموعات المحركات",
"contextLite": "Lite",
- "contextAggressive": "Aggressive",
+ "contextAggressive": "مكثّف",
"contextUltra": "Ultra",
"contextOmniglyph": "OmniGlyph",
- "contextSettings": "Compression Settings",
- "contextHeadroom": "Headroom",
- "contextSessionDedup": "Session Dedup",
+ "contextSettings": "إعدادات الضغط",
+ "contextHeadroom": "هامش السعة",
+ "contextSessionDedup": "إزالة تكرار الجلسات",
"contextCcr": "CCR",
"contextLlmlingua": "LLMLingua",
- "combosLive": "Combo Studio",
- "compressionStudio": "Compression Studio",
- "routingSection": "Routing",
- "protocolsSection": "Protocols",
- "agentsAiSection": "Agents & AI",
- "cacheContextSection": "Cache & Context",
- "analyticsSection": "Analytics",
- "costsSection": "Costs",
- "monitoringSection": "Monitoring",
- "auditSecuritySection": "Audit & Security",
- "devtoolsSection": "Dev Tools",
- "configurationSection": "Configuration",
- "aiFeaturesSection": "AI Features",
+ "combosLive": "استوديو المجموعات",
+ "compressionStudio": "استوديو الضغط",
+ "routingSection": "التوجيه",
+ "protocolsSection": "البروتوكولات",
+ "agentsAiSection": "الوكلاء والذكاء الاصطناعي",
+ "cacheContextSection": "ذاكرة التخزين المؤقت والسياق",
+ "analyticsSection": "التحليلات",
+ "costsSection": "التكاليف",
+ "monitoringSection": "المراقبة",
+ "auditSecuritySection": "التدقيق والأمن",
+ "devtoolsSection": "أدوات التطوير",
+ "configurationSection": "التكوين",
+ "aiFeaturesSection": "ميزات الذكاء الاصطناعي",
"mcp": "MCP",
"a2a": "A2A",
- "apiEndpoints": "API Endpoints",
- "batchFiles": "Files",
- "analyticsEvals": "Evals",
- "analyticsSearch": "Search",
- "analyticsUtilization": "Utilization",
- "analyticsComboHealth": "Combo Health",
- "analyticsCompression": "Compression",
- "costsBudget": "Budget",
- "costsQuotaShare": "Quota Sharing",
- "costsPricing": "Pricing",
- "logsProxy": "Proxy Logs",
- "logsConsole": "Console",
- "logsActivity": "Activity",
- "auditMcp": "MCP Audit",
+ "apiEndpoints": "نقاط نهاية API",
+ "batchFiles": "الملفات",
+ "analyticsEvals": "التقييمات",
+ "analyticsSearch": "البحث",
+ "analyticsUtilization": "الاستخدام",
+ "analyticsComboHealth": "صحة المجموعة",
+ "analyticsCompression": "الضغط",
+ "costsBudget": "الميزانية",
+ "costsQuotaShare": "مشاركة الحصص",
+ "costsPricing": "التسعير",
+ "logsProxy": "سجلات بروكسي",
+ "logsConsole": "وحدة التحكم",
+ "logsActivity": "النشاط",
+ "auditMcp": "تدقيق MCP",
"auditA2a": "تدقيق A2A",
- "settingsGeneral": "General",
- "settingsAppearance": "Appearance",
- "settingsAi": "AI Settings",
- "settingsSecurity": "Security",
+ "settingsGeneral": "عام",
+ "settingsAppearance": "المظهر",
+ "settingsAi": "إعدادات الذكاء الاصطناعي",
+ "settingsSecurity": "الأمان",
"settingsFeatureFlags": "أعلام مميزة",
- "settingsAuthz": "__MISSING__:Authz",
- "settingsRouting": "Routing",
- "settingsResilience": "Resilience",
- "settingsAdvanced": "Advanced",
+ "settingsAuthz": "التخويل",
+ "settingsRouting": "التوجيه",
+ "settingsResilience": "المرونة",
+ "settingsAdvanced": "متقدم",
"omniProxySection": "OmniProxy",
- "quotaTracker": "Provider Quota",
- "providerQuota": "Provider Quota",
- "runtime": "Runtime",
- "consoleLogs": "Console Logs",
- "globalRouting": "Global Routing",
- "mitmProxy": "MITM Proxy",
+ "quotaTracker": "حصة المزود",
+ "providerQuota": "حصة المزود",
+ "runtime": "وقت التشغيل",
+ "consoleLogs": "سجلات وحدة التحكم",
+ "globalRouting": "التوجيه العام",
+ "mitmProxy": "بروكسي MITM",
"oneProxy": "1Proxy",
- "agenticFeaturesSection": "Agentic Features",
- "otherFeaturesSection": "Other Features",
- "compressionContextGroup": "Compression Context",
- "gamificationGroup": "Gamification",
- "toolsGroup": "Tools",
- "integrationsGroup": "Integrations",
- "proxyGroup": "Proxy",
- "costsParametersGroup": "Costs Parameters",
- "auditGroup": "Audit",
- "batchGroup": "Batch",
- "homeSubtitle": "Dashboard overview",
- "providersSubtitle": "Manage AI providers",
- "quotaTrackerSubtitle": "Track usage limits",
- "providerQuotaSubtitle": "Track provider usage limits",
- "runtimeSubtitle": "Realtime resilience & sessions",
- "contextCombosSubtitle": "Combine compression engines",
- "cliToolsSubtitle": "Configure CLI runtimes",
- "agentsSubtitle": "Manage local agents",
- "cloudAgentsSubtitle": "Manage cloud-based agents",
- "apiEndpointsSubtitle": "Expose custom endpoints",
- "proxySubtitle": "HTTP proxy settings",
- "mitmProxySubtitle": "MITM interception",
- "oneProxySubtitle": "Public proxy gateway",
- "leaderboard": "Leaderboard",
- "profile": "Profile",
- "tokens": "Tokens",
- "leaderboardSubtitle": "Rankings and achievements",
- "profileSubtitle": "Account and preferences",
- "tokensSubtitle": "Token usage and budgets",
- "usageSubtitle": "Traffic and usage stats",
- "analyticsComboHealthSubtitle": "Combo target reliability",
- "analyticsUtilizationSubtitle": "Provider utilization",
- "costsSubtitle": "Spend breakdown",
- "cacheSubtitle": "Cache hit rates",
- "analyticsCompressionSubtitle": "Token savings stats",
- "analyticsSearchSubtitle": "Search tool analytics",
- "analyticsEvalsSubtitle": "Eval suite results",
- "logsSubtitle": "Application logs",
- "logsProxySubtitle": "Proxy traffic logs",
- "consoleLogsSubtitle": "Console output",
- "logsActivitySubtitle": "User activity log",
- "healthSubtitle": "System health check",
- "costsPricingSubtitle": "Per-model pricing rules",
- "costsBudgetSubtitle": "Budget limits",
- "costsQuotaShareSubtitle": "Share provider quotas across keys",
- "auditLogSubtitle": "Authorization audit",
- "auditMcpSubtitle": "MCP server audit",
- "auditA2aSubtitle": "A2A protocol audit",
- "translatorSubtitle": "Format conversion",
- "playgroundSubtitle": "Test prompts live",
- "searchToolsSubtitle": "Search tool registry",
- "memorySubtitle": "Persistent agent memory",
- "omniSkillsSubtitle": "Sandbox skill registry",
- "agentSkillsSubtitle": "A2A skill registry",
- "mcpSubtitle": "MCP server controls",
- "a2aSubtitle": "A2A protocol server",
- "mediaSubtitle": "Cached media files",
- "batchFilesSubtitle": "Batch input/output files",
- "settingsSubtitle": "All settings",
- "settingsGeneralSubtitle": "App basics",
- "settingsAppearanceSubtitle": "Theme and layout",
- "settingsAiSubtitle": "AI behavior defaults",
- "globalRoutingSubtitle": "Global routing rules",
- "settingsResilienceSubtitle": "Retries and breakers",
- "settingsAdvancedSubtitle": "Power user options",
- "settingsSecuritySubtitle": "Auth and encryption",
+ "agenticFeaturesSection": "ميزات الوكلاء",
+ "otherFeaturesSection": "ميزات أخرى",
+ "compressionContextGroup": "ضغط السياق",
+ "gamificationGroup": "التلعيب",
+ "toolsGroup": "الأدوات",
+ "integrationsGroup": "التكاملات",
+ "proxyGroup": "مجموعة بروكسيات",
+ "costsParametersGroup": "معلمات التكلفة",
+ "auditGroup": "التدقيق",
+ "batchGroup": "الدُفعات",
+ "homeSubtitle": "نظرة عامة على لوحة القيادة",
+ "providersSubtitle": "إدارة موفري الذكاء الاصطناعي",
+ "quotaTrackerSubtitle": "تتبع حدود الاستخدام",
+ "providerQuotaSubtitle": "تتبع حدود استخدام الموفر",
+ "runtimeSubtitle": "المرونة والجلسات في الوقت الحقيقي",
+ "contextCombosSubtitle": "الجمع بين محركات الضغط",
+ "cliToolsSubtitle": "تكوين أوقات تشغيل CLI",
+ "agentsSubtitle": "إدارة الوكلاء المحليين",
+ "cloudAgentsSubtitle": "إدارة الوكلاء المستندين إلى السحابة",
+ "apiEndpointsSubtitle": "إتاحة نقاط نهاية مخصصة",
+ "proxySubtitle": "إعدادات بروكسي HTTP",
+ "mitmProxySubtitle": "اعتراض MITM",
+ "oneProxySubtitle": "بوابة بروكسي عامة",
+ "leaderboard": "لوحة المتصدرين",
+ "profile": "الملف الشخصي",
+ "tokens": "الرموز",
+ "leaderboardSubtitle": "التصنيفات والإنجازات",
+ "profileSubtitle": "الحساب والتفضيلات",
+ "tokensSubtitle": "استخدام الرموز والميزانيات",
+ "usageSubtitle": "إحصاءات حركة المرور والاستخدام",
+ "analyticsComboHealthSubtitle": "موثوقية أهداف المجموعة",
+ "analyticsUtilizationSubtitle": "استخدام المزود",
+ "costsSubtitle": "تفاصيل الإنفاق",
+ "cacheSubtitle": "معدلات إصابة ذاكرة التخزين المؤقت",
+ "analyticsCompressionSubtitle": "إحصاءات توفير الرموز",
+ "analyticsSearchSubtitle": "تحليلات أداة البحث",
+ "analyticsEvalsSubtitle": "نتائج حزم التقييم",
+ "logsSubtitle": "سجلات التطبيق",
+ "logsProxySubtitle": "سجلات حركة بروكسي",
+ "consoleLogsSubtitle": "مخرجات وحدة التحكم",
+ "logsActivitySubtitle": "سجل نشاط المستخدم",
+ "healthSubtitle": "فحص صحة النظام",
+ "costsPricingSubtitle": "قواعد التسعير لكل نموذج",
+ "costsBudgetSubtitle": "حدود الميزانية",
+ "costsQuotaShareSubtitle": "مشاركة حصص المزود عبر المفاتيح",
+ "auditLogSubtitle": "تدقيق التخويل",
+ "auditMcpSubtitle": "تدقيق خادم MCP",
+ "auditA2aSubtitle": "تدقيق بروتوكول A2A",
+ "translatorSubtitle": "تحويل التنسيقات",
+ "playgroundSubtitle": "اختبار المطالبات مباشرةً",
+ "searchToolsSubtitle": "سجل أدوات البحث",
+ "memorySubtitle": "ذاكرة دائمة للوكيل",
+ "omniSkillsSubtitle": "سجل مهارات وضع الحماية",
+ "agentSkillsSubtitle": "سجل مهارات A2A",
+ "mcpSubtitle": "عناصر تحكم خادم MCP",
+ "a2aSubtitle": "خادم بروتوكول A2A",
+ "mediaSubtitle": "ملفات الوسائط المخزنة مؤقتًا",
+ "batchFilesSubtitle": "ملفات إدخال وإخراج الدُفعات",
+ "settingsSubtitle": "جميع الإعدادات",
+ "settingsGeneralSubtitle": "أساسيات التطبيق",
+ "settingsAppearanceSubtitle": "السمة والتخطيط",
+ "settingsAiSubtitle": "سلوك الذكاء الاصطناعي الافتراضي",
+ "globalRoutingSubtitle": "قواعد التوجيه العامة",
+ "settingsResilienceSubtitle": "إعادات المحاولة وقواطع الدائرة",
+ "settingsAdvancedSubtitle": "خيارات المستخدم المتقدم",
+ "settingsSecuritySubtitle": "المصادقة والتشفير",
"settingsFeatureFlagsSubtitle": "تبديل قدرات النظام",
- "settingsSidebar": "Sidebar",
- "settingsSidebarSubtitle": "Customize sidebar layout",
- "settingsAuthzSubtitle": "__MISSING__:Route inventory and bypass policy",
- "docsSubtitle": "Documentation",
- "issuesSubtitle": "Report a bug",
- "changelogSubtitle": "Release notes"
+ "settingsSidebar": "الشريط الجانبي",
+ "settingsSidebarSubtitle": "تخصيص تخطيط الشريط الجانبي",
+ "settingsAuthzSubtitle": "قائمة المسارات وسياسة التجاوز",
+ "docsSubtitle": "التوثيق",
+ "issuesSubtitle": "الإبلاغ عن خطأ",
+ "changelogSubtitle": "ملاحظات الإصدار"
},
"webhooks": {
"title": "خطافات الويب",
@@ -1103,7 +1103,7 @@
"refresh": "تحديث",
"loading": "جارٍ تحميل خطافات الويب...",
"never": "أبدا",
- "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}",
+ "failureCount": "حالات الفشل: {count, plural, =0 {لا توجد حالات فشل} one {حالة فشل واحدة} other {# حالات فشل}}",
"testWebhook": "إرسال الاختبار",
"testSuccess": "تم إرسال اختبار الرد التلقائي على الويب بنجاح.",
"testFailed": "فشل اختبار الرد التلقائي على الويب.",
@@ -1121,91 +1121,91 @@
"signatureTitle": "توقيعات الويب هوك",
"signatureDescription": "يتضمن كل تسليم رأس X-Webhook-Signature موقعًا بـ HMAC-SHA256 باستخدام سر webhook. تحقق من التوقيع قبل الوثوق بالحمولة.",
"wizard": {
- "cancel": "__MISSING__:Cancel",
- "step1Title": "__MISSING__:Select Integration",
- "step2Title": "__MISSING__:Configure Target",
- "step3Title": "__MISSING__:Events & Test",
- "back": "__MISSING__:Back",
- "next": "__MISSING__:Next",
- "finish": "__MISSING__:Finish",
- "step1Desc": "__MISSING__:Select the target integration system for this webhook."
+ "cancel": "إلغاء",
+ "step1Title": "حدد التكامل",
+ "step2Title": "تكوين الهدف",
+ "step3Title": "الأحداث والاختبار",
+ "back": "العودة",
+ "next": "التالي",
+ "finish": "إنهاء",
+ "step1Desc": "حدد نظام التكامل المستهدف لخطاف الويب هذا."
},
"howItWorks": {
- "step1": "__MISSING__:Choose an integration provider (e.g. Slack, Discord, custom webhook) and set up the connection details.",
- "step2": "__MISSING__:Configure system events to subscribe to (e.g. completion errors, model fallbacks, or usage limits).",
- "step3": "__MISSING__:Verify the configuration by sending a test payload to make sure the endpoint receives it.",
- "step4": "__MISSING__:Secure your endpoint by validating the X-Webhook-Signature HMAC-SHA256 header using the webhook's secret.",
- "title": "__MISSING__:How Webhooks Work",
- "customOnly": "__MISSING__:Only applicable for custom endpoint integrations.",
- "hmacRecipeTitle": "__MISSING__:HMAC Verification Recipe",
- "hmacRecipe": "__MISSING__:To verify webhook payloads in Node.js, compute the HMAC-SHA256 of the raw request body using your secret key. Compare it to the X-Webhook-Signature header using timingSafeEqual.",
- "timeoutNote": "__MISSING__:Webhook deliveries have a timeout of 10 seconds.",
- "retryNote": "__MISSING__:Failed deliveries are retried up to 5 times with exponential backoff.",
- "docsLink": "__MISSING__:Read the full Webhooks developer guide",
- "hmacRecipePython": "__MISSING__:Python HMAC verification: hmac.new(secret, body, hashlib.sha256).hexdigest()",
- "hmacRecipeBash": "__MISSING__:Bash HMAC verification: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\""
+ "step1": "اختر موفر التكامل (مثل Slack وDiscord وخطاف الويب المخصص) وقم بإعداد تفاصيل الاتصال.",
+ "step2": "قم بتكوين أحداث النظام للاشتراك فيها (على سبيل المثال، أخطاء الإكمال، أو النماذج الاحتياطية، أو حدود الاستخدام).",
+ "step3": "تحقق من التكوين عن طريق إرسال حمولة اختبارية للتأكد من أن نقطة النهاية تستقبلها.",
+ "step4": "قم بتأمين نقطة النهاية الخاصة بك عن طريق التحقق من صحة رأس X-Webhook-Signature HMAC-SHA256 باستخدام سر webhook.",
+ "title": "كيف تعمل خطافات الويب",
+ "customOnly": "ينطبق فقط على عمليات تكامل نقطة النهاية المخصصة.",
+ "hmacRecipeTitle": "طريقة التحقق باستخدام HMAC",
+ "hmacRecipe": "للتحقق من حمولات خطاف الويب في Node.js، احسب HMAC-SHA256 لنص الطلب الأصلي باستخدام مفتاحك السري. قارنه بترويسة X-Webhook-Signature باستخدام timingSafeEqual.",
+ "timeoutNote": "مهلة تسليم خطاف الويب 10 ثوانٍ.",
+ "retryNote": "تُعاد محاولة عمليات التسليم الفاشلة حتى 5 مرات مع تراجع أُسّي.",
+ "docsLink": "اقرأ دليل مطوري Webhooks الكامل",
+ "hmacRecipePython": "التحقق من HMAC باستخدام Python: hmac.new(secret, body, hashlib.sha256).hexdigest()",
+ "hmacRecipeBash": "التحقق من HMAC باستخدام Bash: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\""
},
"deliveries": {
- "title": "__MISSING__:Delivery Logs",
- "loadFailed": "__MISSING__:Failed to load webhook delivery logs.",
- "empty": "__MISSING__:No deliveries recorded yet. Trigger an event or send a test payload.",
- "status": "__MISSING__:Status",
- "event": "__MISSING__:Event",
- "latency": "__MISSING__:Latency",
- "at": "__MISSING__:Sent At"
+ "title": "سجلات التسليم",
+ "loadFailed": "فشل تحميل سجلات تسليم خطافات الويب.",
+ "empty": "لم تُسجّل أي عمليات تسليم حتى الآن. شغّل حدثًا أو أرسل حمولة اختبارية.",
+ "status": "الحالة",
+ "event": "الحدث",
+ "latency": "زمن الاستجابة",
+ "at": "وقت الإرسال"
},
"kinds": {
- "comingSoon": "__MISSING__:Coming Soon",
- "slack": "__MISSING__:Slack",
- "slackDesc": "__MISSING__:Post system events directly into a Slack channel",
- "telegram": "__MISSING__:Telegram",
- "telegramDesc": "__MISSING__:Send event messages using a Telegram bot",
- "discord": "__MISSING__:Discord",
- "discordDesc": "__MISSING__:Deliver real-time updates directly to a Discord server",
- "custom": "__MISSING__:Custom Webhook",
- "customDesc": "__MISSING__:Deliver system event payloads to any HTTPS endpoint",
- "email": "__MISSING__:Email Notification",
- "emailDesc": "__MISSING__:Receive summary updates via email",
- "pagerduty": "__MISSING__:PagerDuty",
- "pagerdutyDesc": "__MISSING__:Trigger alerts on PagerDuty for critical system issues",
- "teams": "__MISSING__:Microsoft Teams",
- "teamsDesc": "__MISSING__:Forward system notifications to Microsoft Teams channels"
+ "comingSoon": "قريبًا",
+ "slack": "Slack",
+ "slackDesc": "نشر أحداث النظام مباشرةً في قناة Slack",
+ "telegram": "Telegram",
+ "telegramDesc": "إرسال رسائل الأحداث باستخدام بوت Telegram",
+ "discord": "Discord",
+ "discordDesc": "إرسال التحديثات الفورية مباشرةً إلى خادم Discord",
+ "custom": "خطاف ويب مخصص",
+ "customDesc": "تسليم حمولات أحداث النظام إلى أي نقطة نهاية HTTPS",
+ "email": "إشعار البريد الإلكتروني",
+ "emailDesc": "تلقي تحديثات موجزة عبر البريد الإلكتروني",
+ "pagerduty": "PagerDuty",
+ "pagerdutyDesc": "قم بتشغيل التنبيهات على PagerDuty بشأن مشكلات النظام الهامة",
+ "teams": "Microsoft Teams",
+ "teamsDesc": "إعادة توجيه إشعارات النظام إلى قنوات Microsoft Teams"
},
- "testPayloadSent": "__MISSING__:Test Payload Sent",
- "testResponse": "__MISSING__:Test Response",
+ "testPayloadSent": "تم إرسال حمولة الاختبار",
+ "testResponse": "استجابة الاختبار",
"validateUrl": {
- "checking": "__MISSING__:Checking URL...",
- "ok": "__MISSING__:URL is valid",
- "blockedPrivate": "__MISSING__:URL is a blocked private address",
- "invalidUrl": "__MISSING__:Invalid URL format"
+ "checking": "جارٍ التحقق من عنوان URL...",
+ "ok": "عنوان URL صالح",
+ "blockedPrivate": "عنوان URL هو عنوان خاص محظور",
+ "invalidUrl": "تنسيق عنوان URL غير صالح"
},
"custom": {
- "endpointUrl": "__MISSING__:Endpoint URL",
- "endpointUrlPlaceholder": "__MISSING__:https://api.yourdomain.com/webhook",
- "secretKey": "__MISSING__:Secret Key",
- "secretKeyPlaceholder": "__MISSING__:Enter secret key or leave blank to auto-generate",
- "secretKeyHint": "__MISSING__:Used to sign the payload header for authentication."
+ "endpointUrl": "عنوان URL لنقطة النهاية",
+ "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook",
+ "secretKey": "المفتاح السري",
+ "secretKeyPlaceholder": "أدخل المفتاح السري أو اتركه فارغًا للإنشاء التلقائي",
+ "secretKeyHint": "يستخدم للتوقيع على رأس الحمولة للمصادقة."
},
"discord": {
- "webhookUrl": "__MISSING__:Discord Webhook URL",
- "webhookUrlPlaceholder": "__MISSING__:https://discord.com/api/webhooks/...",
- "webhookUrlHint": "__MISSING__:The webhook URL copied from your Discord channel integration settings.",
- "tutorial": "__MISSING__:How to create a Discord webhook:"
+ "webhookUrl": "عنوان URL لـ Discord Webhook",
+ "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...",
+ "webhookUrlHint": "عنوان URL للخطاف على الويب الذي تم نسخه من إعدادات تكامل قناة Discord الخاصة بك.",
+ "tutorial": "كيفية إنشاء خطاف ويب Discord:"
},
"slack": {
- "webhookUrl": "__MISSING__:Slack Webhook URL",
- "webhookUrlPlaceholder": "__MISSING__:https://hooks.slack.com/services/...",
- "webhookUrlHint": "__MISSING__:The webhook URL copied from your Slack Incoming Webhooks integration.",
- "tutorial": "__MISSING__:How to create a Slack webhook:"
+ "webhookUrl": "عنوان URL لـ Slack Webhook",
+ "webhookUrlPlaceholder": "https://hooks.slack.com/services/...",
+ "webhookUrlHint": "تم نسخ عنوان URL الخاص بخطاف الويب من تكامل Slack Incoming Webhooks.",
+ "tutorial": "كيفية إنشاء خطاف ويب Slack:"
},
"telegram": {
- "botToken": "__MISSING__:Telegram Bot Token",
- "botTokenPlaceholder": "__MISSING__:123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
- "botTokenHint": "__MISSING__:The HTTP API token received from @BotFather when creating your bot.",
- "chatId": "__MISSING__:Telegram Chat ID / Channel",
- "chatIdPlaceholder": "__MISSING__:-100123456789 or @channelname",
- "chatIdHint": "__MISSING__:The unique numerical identifier or public username of the chat/channel.",
- "tutorial": "__MISSING__:How to configure Telegram webhook:"
+ "botToken": "رمز بوت Telegram",
+ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
+ "botTokenHint": "رمز HTTP API المستلم من @BotFather عند إنشاء البوت.",
+ "chatId": "معرّف دردشة Telegram أو القناة",
+ "chatIdPlaceholder": "-100123456789 أو @channelname",
+ "chatIdHint": "المعرّف الرقمي الفريد أو اسم المستخدم العام للدردشة أو القناة.",
+ "tutorial": "كيفية تكوين خطاف ويب Telegram:"
}
},
"compliance": {
@@ -1263,8 +1263,8 @@
"a2aShowingTasks": "عرض {count} من {total} المهام",
"a2aSkill": "مهارة",
"a2aSkillPlaceholder": "التصفية حسب اسم المهارة",
- "a2aState": "الدولة",
- "a2aAllStates": "جميع الولايات",
+ "a2aState": "الحالة",
+ "a2aAllStates": "جميع الحالات",
"a2aStateSubmitted": "تم الإرسال",
"a2aStateWorking": "العمل",
"a2aStateCompleted": "مكتمل",
@@ -1272,7 +1272,7 @@
"a2aStateCancelled": "تم الإلغاء",
"a2aTaskId": "معرف المهمة",
"a2aEvents": "الأحداث",
- "a2aArtifacts": "التحف",
+ "a2aArtifacts": "المخرجات",
"a2aNoTasks": "لم يتم تسجيل أي مهام A2A.",
"a2aLoadingTasks": "جارٍ تحميل مهام A2A..."
},
@@ -1300,63 +1300,63 @@
"cliToolsDescription": "تكوين أدوات CLI",
"home": "الصفحة الرئيسية",
"homeDescription": "مرحبًا بك في OmniRoute",
- "endpoint": "Endpoints",
- "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints",
+ "endpoint": "نقاط النهاية",
+ "endpointDescription": "إدارة نقاط نهاية الوكيل ونقاط نهاية MCP وA2A وAPI",
"mcp": "MCP",
- "mcpDescription": "Model Context Protocol server management and tools",
+ "mcpDescription": "إدارة خادم بروتوكول السياق النموذجي وأدواته",
"a2a": "A2A",
- "a2aDescription": "Agent-to-Agent protocol tasks and observability",
+ "a2aDescription": "مهام بروتوكول وكيل إلى وكيل وإمكانية الملاحظة",
"settings": "الإعدادات",
"settingsDescription": "إدارة تفضيلاتك",
"openaiCompatible": "متوافق مع OpenAI",
"anthropicCompatible": "متوافق مع Anthropic",
- "media": "الإعلام",
+ "media": "الوسائط",
"mediaDescription": "إنشاء الصور ومقاطع الفيديو والموسيقى",
"themes": "المواضيع",
"themesDescription": "اختر سمة لون للوحة المعلومات بأكملها",
- "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers",
- "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.",
- "limitsDescription": "Configure rate limits and quotas per API key and provider",
- "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts",
- "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance",
- "batchDescription": "Process large volumes of requests asynchronously with batched API calls",
- "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.",
- "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.",
- "contextCombosDescription": "Define how engines are combined for different routing scenarios.",
- "changelogDescription": "Stay up to date with the latest platform features and announcements.",
- "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents",
- "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval",
- "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing",
- "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution",
- "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration",
- "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini",
- "playgroundDescription": "Test prompts interactively with live provider responses and format inspection",
- "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking",
- "logsDescription": "Real-time request logs, error traces, and streaming event inspector",
- "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events",
- "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications",
- "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database",
- "proxyDescription": "Configure upstream proxy settings for outbound provider connections",
- "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides",
- "batchFilesDescription": "Browse and manage batch job output files and results",
- "analyticsEvalsDescription": "Model evaluation results and performance benchmarks",
- "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking",
- "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning",
- "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations",
- "analyticsCompressionDescription": "Context compression analytics and token savings",
- "costsBudgetDescription": "Budget limits and spending alerts per API key and provider",
- "costsPricingDescription": "Custom pricing configuration for token cost calculations",
- "logsProxyDescription": "Upstream proxy request logs and traffic inspection",
- "logsConsoleDescription": "Application console output and debug logs",
- "logsActivityDescription": "Audit trail of user actions and system events",
- "auditMcpDescription": "MCP tool invocation audit trail and compliance records",
+ "costsDescription": "تتبع الإنفاق، وحلل الاتجاهات، وقم بإدارة ميزانية الذكاء الاصطناعي الخاصة بك عبر جميع مقدمي الخدمة",
+ "cacheDescription": "مراقبة كفاءة ذاكرة التخزين المؤقت السريعة للموفر وإعادة استخدام الاستجابة الدلالية المحلية.",
+ "limitsDescription": "قم بتكوين حدود الأسعار والحصص لكل مفتاح API وموفر",
+ "runtimeDescription": "إمكانية المراقبة المباشرة لوقت التشغيل - قواطع الدائرة، وفترات التهدئة، وإغلاق النماذج، والجلسات، وتنبيهات الحصص",
+ "apiManagerDescription": "إدارة مفاتيح API والتحكم في الوصول لمثيل OmniRoute الخاص بك",
+ "batchDescription": "معالجة كميات كبيرة من الطلبات بشكل غير متزامن من خلال استدعاءات واجهة برمجة التطبيقات (API) المجمعة",
+ "contextCavemanDescription": "ضغط الرسائل المستند إلى القواعد وحزم اللغات والتحليلات وعناصر التحكم في وضع الإخراج.",
+ "contextRtkDescription": "ضغط مدرك للأوامر لمخرجات الأداة والسجلات الطرفية ونتائج البناء.",
+ "contextCombosDescription": "حدد كيفية دمج المحركات لسيناريوهات التوجيه المختلفة.",
+ "changelogDescription": "ابق على اطلاع بأحدث ميزات وإعلانات النظام الأساسي.",
+ "agentsDescription": "إدارة وتكوين أدوات وكيل الذكاء الاصطناعي: Codex وDevin وJules والوكلاء المخصصون",
+ "cloudAgentsDescription": "قم بتنسيق وكلاء الذكاء الاصطناعي المستندين إلى السحابة من خلال التتبع المباشر للمهام والموافقة على الخطة",
+ "memoryDescription": "ذاكرة محادثة ثابتة مع البحث الدلالي وفهرسة النص الكامل FTS5",
+ "skillsDescription": "تثبيت وإدارة مهارات وضع الحماية للتنفيذ الفوري والتنفيذ الآلي للأداة",
+ "agentSkillsDescription": "كتالوج المهارات الجاهز للوكيل مع نسخة عنوان URL بنقرة واحدة لتكامل عميل الذكاء الاصطناعي",
+ "translatorDescription": "ترجمة واختبار المطالبات عبر تنسيقات واجهة برمجة التطبيقات: OpenAI ↔ Claude ↔ Gemini",
+ "playgroundDescription": "يطالب الاختبار بشكل تفاعلي مع استجابات الموفر المباشرة وفحص التنسيق",
+ "searchToolsDescription": "تحليلات البحث، وتفاصيل الموفر، ومعدلات الوصول إلى ذاكرة التخزين المؤقت، وتتبع التكلفة",
+ "logsDescription": "سجلات الطلبات في الوقت الفعلي، وتتبعات الأخطاء، ومفتش الأحداث المتدفقة",
+ "auditDescription": "مسار تدقيق الامتثال لاستخدام مفتاح واجهة برمجة التطبيقات (API) واستدعاءات أداة MCP وأحداث السياسة",
+ "webhooksDescription": "قم بتكوين نقاط نهاية خطاف الويب لتلقي إشعارات الأحداث في الوقت الفعلي",
+ "healthDescription": "نظرة عامة على صحة النظام: مقدمو الخدمة، وقواطع الدائرة، وحدود المعدلات، وقاعدة البيانات",
+ "proxyDescription": "قم بتكوين إعدادات البروكسي الأولية لاتصالات الموفر الصادرة",
+ "apiEndpointsDescription": "إدارة تكوينات نقطة نهاية API المخصصة وتجاوزات التوجيه",
+ "batchFilesDescription": "تصفح وإدارة ملفات ونتائج مخرجات المهام المجمعة",
+ "analyticsEvalsDescription": "نتائج التقييم النموذجي ومعايير الأداء",
+ "analyticsSearchDescription": "تحليلات استعلام البحث، ومعدلات ضربات ذاكرة التخزين المؤقت، وتتبع التكلفة",
+ "analyticsUtilizationDescription": "مقاييس استخدام المزود وتخطيط القدرات",
+ "analyticsComboHealthDescription": "الحالة والأداء في الوقت الفعلي لإعدادات توجيه المجموعات",
+ "analyticsCompressionDescription": "تحليلات ضغط السياق وتوفير الرمز المميز",
+ "costsBudgetDescription": "حدود الميزانية وتنبيهات الإنفاق لكل مفتاح API وموفر",
+ "costsPricingDescription": "تكوين التسعير المخصص لحسابات تكلفة الرمز المميز",
+ "logsProxyDescription": "سجلات طلبات البروكسي الأولية وتفتيش حركة المرور",
+ "logsConsoleDescription": "إخراج وحدة تحكم التطبيق وسجلات التصحيح",
+ "logsActivityDescription": "مسار التدقيق لإجراءات المستخدم وأحداث النظام",
+ "auditMcpDescription": "مسار تدقيق استدعاء أداة MCP وسجلات الامتثال",
"auditA2a": "تدقيق A2A",
"auditA2aDescription": "مسار تدقيق تنفيذ مهمة A2A، وانتقالات الحالة، وسجلات استدعاء المهارات",
- "settingsGeneralDescription": "Storage, database, and general instance configuration",
- "settingsAppearanceDescription": "Theme, branding, and visual customization",
- "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings",
- "settingsSecurityDescription": "Authentication, authorization, and access control settings",
- "featureFlags": "أعلام مميزة",
+ "settingsGeneralDescription": "التخزين وقاعدة البيانات وتكوين المثيل العام",
+ "settingsAppearanceDescription": "الموضوع والعلامة التجارية والتخصيص المرئي",
+ "settingsAiDescription": "سلوكيات الذكاء الاصطناعي وميزانيات التفكير وإعدادات الرؤية والذاكرة",
+ "settingsSecurityDescription": "إعدادات المصادقة والترخيص والتحكم في الوصول",
+ "featureFlags": "الميزات تجريبية",
"featureFlagsDescription": "قدرات نظام التحكم والميزات التجريبية",
"featureFlagsActive": "{count} نشط",
"featureFlagsInactive": "{count} غير نشط",
@@ -1369,9 +1369,9 @@
"featureFlagsCategoryRuntime": "وقت التشغيل",
"featureFlagsCategoryCli": "سطر الأوامر",
"featureFlagsCategoryHealth": "الصحة",
- "featureFlagsSourceDb": "ديسيبل",
- "featureFlagsSourceEnv": "بيئى",
- "featureFlagsSourceDefault": "مدافع",
+ "featureFlagsSourceDb": "قاعدة البيانات",
+ "featureFlagsSourceEnv": "ENV",
+ "featureFlagsSourceDefault": "الافتراضي",
"featureFlagsReset": "إعادة تعيين",
"featureFlagsResetAll": "إعادة تعيين كافة التجاوزات",
"featureFlagsResetAllConfirm": "هل أنت متأكد أنك تريد إعادة تعيين جميع تجاوزات علامات الميزات؟ سيؤدي هذا إلى إرجاع جميع العلامات إلى قيم ENV أو القيم الافتراضية.",
@@ -1379,22 +1379,22 @@
"featureFlagsNoResults": "لا توجد أعلام تطابق بحثك",
"featureFlagsSaved": "تم تحديث العلم",
"featureFlagsError": "فشل تحديث العلم",
- "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings",
- "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration",
- "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings",
- "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging",
- "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining"
+ "settingsRoutingDescription": "قواعد التوجيه وأسماء النماذج البديلة وإعدادات المجموعات الافتراضية وخفض المستوى",
+ "settingsResilienceDescription": "قاطع الدائرة، وإعادة المحاولة، والتكوين الاحتياطي",
+ "settingsAdvancedDescription": "قواعد الحمولة المتقدمة وحدود الطلب وإعدادات واجهة برمجة تطبيقات الوكيل",
+ "mitmProxyDescription": "قم بتكوين إعدادات بروكسي MITM لفحص حركة المرور وتصحيح الأخطاء",
+ "oneProxyDescription": "قم بتكوين إعدادات 1Proxy لتسلسل البروكسي المتقدم"
},
"home": {
"quickStart": "بداية سريعة",
"quickStartDesc": "ابدأ خلال 4 خطوات: وصّل المزوّدين، فعّل توجيه النماذج، وراقب كل شيء.",
"fullDocs": "التوثيق الكامل",
"step1Title": "1. إنشاء مفتاح API",
- "step1Desc": "انتقل إلى Endpoint -> Registered Keys. أنشئ مفتاحًا واحدًا لكل بيئة.",
+ "step1Desc": "انتقل إلى نقاط النهاية ← المفاتيح المسجلة، ثم أنشئ مفتاحًا رئيسيًا لكل بيئة.",
"step2Title": "2. ربط مقدمي الخدمات",
- "step2Desc": "أضف الحسابات في Providers. يدعم OAuth وAPI Key والخطط المجانية.",
+ "step2Desc": "أضف بيانات الاعتماد في المزوّدون. يدعم OAuth ومفاتيح API والباقات المجانية.",
"step3Title": "3. اضبط عميلك",
- "step3Desc": "عيّن عنوان Base URL إلى {url} في IDE أو عميل API لديك.",
+ "step3Desc": "عيّن عنوان URL الأساسي إلى {url} في IDE أو عميل API لديك.",
"step4Title": "4. المراقبة والتحسين",
"step4Desc": "تتبّع الرموز والتكلفة والأخطاء في سجلات الطلبات والتحليلات.",
"providersOverview": "نظرة عامة على مقدمي الخدمة",
@@ -1428,83 +1428,83 @@
},
"analytics": {
"title": "التحليلات",
- "usageAnalyticsTitle": "__MISSING__:Usage Analytics",
+ "usageAnalyticsTitle": "تحليلات الاستخدام",
"diversityScoreTitle": "تنوع مقدمي الخدمة",
- "diversityScoreDesc": "__MISSING__:Provider concentration snapshot for the recent traffic window.",
- "diversityShannonEntropy": "__MISSING__:Shannon entropy",
- "diversityWindow": "__MISSING__:Window: {count} reqs · Last {mins} mins",
- "diversityHealthy": "__MISSING__:Healthy Distribution",
- "diversityRiskHigh": "__MISSING__:High Vendor Lock-in Risk",
- "diversityRiskModerate": "__MISSING__:Moderate Distribution",
- "diversityScoreLabel": "__MISSING__:score",
- "diversityHigherExplanation": "__MISSING__:Higher values mean traffic is spread across multiple providers.",
- "diversityNoData": "__MISSING__:No recent usage data available.",
- "chartRequests": "__MISSING__:Requests",
- "chartInput": "__MISSING__:Input",
- "chartOutput": "__MISSING__:Output",
- "chartTotal": "__MISSING__:Total",
- "chartCost": "__MISSING__:Cost",
- "chartShare": "__MISSING__:Share",
- "chartServiceTier": "__MISSING__:Service Tier",
- "chartServiceTierSplit": "__MISSING__:Fast / Standard cost split",
- "chartCostPct": "__MISSING__:{pct}% of cost",
- "chartUsageDetail": "__MISSING__:Usage Detail",
- "chartCacheRead": "__MISSING__:Cache read",
- "chartCostByProvider": "__MISSING__:Cost by Provider",
- "chartNoCostData": "__MISSING__:No cost data",
- "chartModelUsageOverTime": "__MISSING__:Model Usage Over Time",
- "chartNoData": "__MISSING__:No data",
- "chartWeekly": "__MISSING__:Weekly",
- "chartModelBreakdown": "__MISSING__:Model Breakdown",
- "chartModel": "__MISSING__:Model",
- "chartProvider": "__MISSING__:Provider",
- "chartProviderBreakdown": "__MISSING__:Provider Breakdown",
- "chartDate": "__MISSING__:Date",
- "chartRequestsByProviderDate": "__MISSING__:Requests by Provider & Date",
- "filterAllKeys": "__MISSING__:All Keys",
- "filterSearchKeys": "__MISSING__:Search keys…",
- "filterNoKeysMatch": "__MISSING__:No keys match",
- "filterOneKey": "__MISSING__:1 key",
- "filterMultipleKeys": "__MISSING__:{count} keys",
- "rangeToday": "__MISSING__:Today",
- "rangeYesterday": "__MISSING__:Yesterday",
- "rangeLast3Days": "__MISSING__:Last 3 days",
- "rangeThisWeek": "__MISSING__:This week",
- "rangeLast14Days": "__MISSING__:Last 14 days",
- "rangeThisMonth": "__MISSING__:This month",
- "rangeQuickSelect": "__MISSING__:Quick Select",
- "rangeStart": "__MISSING__:Start",
- "rangeEnd": "__MISSING__:End",
- "rangeCancel": "__MISSING__:Cancel",
- "rangeApply": "__MISSING__:Apply",
- "rangeErrorInvalid": "__MISSING__:Start must be before end",
- "period1D": "__MISSING__:1D",
- "period7D": "__MISSING__:7D",
- "period30D": "__MISSING__:30D",
- "period90D": "__MISSING__:90D",
- "periodYTD": "__MISSING__:YTD",
- "periodAll": "__MISSING__:All",
- "totalTokens": "__MISSING__:Total Tokens",
- "inputTokens": "__MISSING__:Input Tokens",
- "outputTokens": "__MISSING__:Output Tokens",
- "estCost": "__MISSING__:Est. Cost",
- "infraTitle": "__MISSING__:Infrastructure",
- "infraAccounts": "__MISSING__:Accounts",
- "infraProviders": "__MISSING__:Providers",
- "infraApiKeys": "__MISSING__:API Keys",
- "infraModels": "__MISSING__:Models",
- "perfTitle": "__MISSING__:Performance",
- "perfAvgTokens": "__MISSING__:Avg Tokens/Req",
- "perfCostReq": "__MISSING__:Cost/Req",
- "perfIoRatio": "__MISSING__:I/O Ratio",
- "perfFastReq": "__MISSING__:Fast Requests",
- "highlightsTitle": "__MISSING__:Highlights",
- "highlightsTopModel": "__MISSING__:Top Model",
- "highlightsTopProvider": "__MISSING__:Top Provider",
- "highlightsBusiestDay": "__MISSING__:Busiest Day",
- "highlightsDiversity": "__MISSING__:Diversity",
- "highlightsFallbackRate": "__MISSING__:Fallback Rate",
- "customRange": "__MISSING__:Custom",
+ "diversityScoreDesc": "لقطة تركيز الموفر لنافذة حركة المرور الأخيرة.",
+ "diversityShannonEntropy": "إنتروبيا شانون",
+ "diversityWindow": "النافذة: {count} طلب · آخر {mins} دقيقة",
+ "diversityHealthy": "توزيع صحي",
+ "diversityRiskHigh": "مخاطر عالية للارتهان إلى مزود واحد",
+ "diversityRiskModerate": "توزيع متوسط",
+ "diversityScoreLabel": "النتيجة",
+ "diversityHigherExplanation": "تعني القيم الأعلى أن حركة المرور موزعة على عدة مزودين.",
+ "diversityNoData": "لا تتوفر بيانات استخدام حديثة.",
+ "chartRequests": "الطلبات",
+ "chartInput": "الإدخال",
+ "chartOutput": "الإخراج",
+ "chartTotal": "الإجمالي",
+ "chartCost": "التكلفة",
+ "chartShare": "الحصة",
+ "chartServiceTier": "فئة الخدمة",
+ "chartServiceTierSplit": "تقسيم تكلفة الفئتين السريعة والقياسية",
+ "chartCostPct": "{pct}% من التكلفة",
+ "chartUsageDetail": "تفاصيل الاستخدام",
+ "chartCacheRead": "قراءة ذاكرة التخزين المؤقت",
+ "chartCostByProvider": "التكلفة حسب المزود",
+ "chartNoCostData": "لا توجد بيانات تكلفة",
+ "chartModelUsageOverTime": "استخدام النماذج بمرور الوقت",
+ "chartNoData": "لا توجد بيانات",
+ "chartWeekly": "أسبوعيًا",
+ "chartModelBreakdown": "تفصيل النماذج",
+ "chartModel": "النموذج",
+ "chartProvider": "المزود",
+ "chartProviderBreakdown": "تفصيل المزودين",
+ "chartDate": "التاريخ",
+ "chartRequestsByProviderDate": "الطلبات حسب الموفر والتاريخ",
+ "filterAllKeys": "جميع المفاتيح",
+ "filterSearchKeys": "مفاتيح البحث...",
+ "filterNoKeysMatch": "لا توجد مفاتيح متطابقة",
+ "filterOneKey": "1 مفتاح",
+ "filterMultipleKeys": "مفاتيح {count}",
+ "rangeToday": "اليوم",
+ "rangeYesterday": "أمس",
+ "rangeLast3Days": "آخر 3 أيام",
+ "rangeThisWeek": "هذا الأسبوع",
+ "rangeLast14Days": "آخر 14 يومًا",
+ "rangeThisMonth": "هذا الشهر",
+ "rangeQuickSelect": "تحديد سريع",
+ "rangeStart": "البداية",
+ "rangeEnd": "النهاية",
+ "rangeCancel": "إلغاء",
+ "rangeApply": "تطبيق",
+ "rangeErrorInvalid": "يجب أن تكون البداية قبل النهاية",
+ "period1D": "1D",
+ "period7D": "7D",
+ "period30D": "30D",
+ "period90D": "90D",
+ "periodYTD": "YTD",
+ "periodAll": "الكل",
+ "totalTokens": "إجمالي الرموز",
+ "inputTokens": "رموز الإدخال",
+ "outputTokens": "رموز الإخراج",
+ "estCost": "التكلفة التقديرية",
+ "infraTitle": "البنية التحتية",
+ "infraAccounts": "الحسابات",
+ "infraProviders": "المزودون",
+ "infraApiKeys": "مفاتيح API",
+ "infraModels": "النماذج",
+ "perfTitle": "الأداء",
+ "perfAvgTokens": "متوسط الرموز/طلب",
+ "perfCostReq": "التكلفة/الطلب",
+ "perfIoRatio": "نسبة I/O",
+ "perfFastReq": "الطلبات السريعة",
+ "highlightsTitle": "أبرز النتائج",
+ "highlightsTopModel": "النموذج الأبرز",
+ "highlightsTopProvider": "المزود الأبرز",
+ "highlightsBusiestDay": "اليوم الأكثر ازدحامًا",
+ "highlightsDiversity": "التنوع",
+ "highlightsFallbackRate": "معدل التبديل الاحتياطي",
+ "customRange": "مخصص",
"overviewDescription": "راقب أنماط استخدام واجهة برمجة التطبيقات (API) واستهلاك الرمز المميز والتكاليف واتجاهات النشاط عبر جميع مقدمي الخدمات والنماذج.",
"evalsDescription": "قم بتشغيل مجموعات التقييم لاختبار نقاط نهاية LLM الخاصة بك والتحقق من صحتها. مقارنة جودة النموذج، واكتشاف الانحدارات، وقياس وقت الاستجابة.",
"overview": "نظرة عامة",
@@ -1517,8 +1517,8 @@
"modelStatusError": "خطأ",
"comboHealth": "صحة المجموعة",
"comboHealthDescription": "الحصة على مستوى المجموعة وتوزيع الاستخدام ومقاييس الأداء",
- "compressionAnalyticsTitle": "Compression Analytics",
- "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.",
+ "compressionAnalyticsTitle": "تحليلات الضغط",
+ "compressionAnalyticsDescription": "تحليلات الضغط - توفير الرموز المميزة، وانهيار الوضع، وإحصائيات المزود.",
"autoRoutingTotalAutoRequests": "إجمالي الطلبات التلقائية",
"autoRoutingAvgSelectionScore": "متوسط نقاط الاختيار",
"autoRoutingExplorationRate": "معدل الاستكشاف",
@@ -1537,8 +1537,8 @@
"comboHealthSuccess": "النجاح",
"comboHealthLatency": "الكمون",
"comboHealthQuota": "الحصة النسبية",
- "comboHealthTitle": "صحة التحرير والسرد",
- "comboHealthUnableToLoad": "غير قادر على تحميل صحة التحرير والسرد",
+ "comboHealthTitle": "حالة المجموعات",
+ "comboHealthUnableToLoad": "تعذر تحميل حالة المجموعات",
"comboHealthGettingStarted": "البدء",
"compressionAnalyticsTotalRequests": "إجمالي الطلبات",
"compressionAnalyticsTokensSaved": "الرموز المحفوظة",
@@ -1546,7 +1546,7 @@
"compressionAnalyticsAvgDuration": "متوسط المدة",
"compressionAnalyticsReceipts": "الإيصالات",
"compressionAnalyticsFallbacks": "احتياطيات",
- "compressionAnalyticsPromptTokens": "الرموز الفورية",
+ "compressionAnalyticsPromptTokens": "الرموز المطالبة",
"compressionAnalyticsCompletionTokens": "رموز الإكمال",
"compressionAnalyticsTotalTokens": "مجموع الرموز",
"compressionAnalyticsCacheTokens": "رموز ذاكرة التخزين المؤقت",
@@ -1602,14 +1602,14 @@
"neverUsed": "لم تستخدم قط",
"deleteConfirm": "هل تريد حذف مفتاح واجهة برمجة التطبيقات هذا؟",
"usageTips": "نصائح الاستخدام",
- "tipAuth": "استخدم مفاتيح API في رأس التفويض كحامل YOUR_KEY",
+ "tipAuth": "استخدم مفتاح API في ترويسة Authorization بالقيمة Bearer YOUR_KEY",
"tipSecure": "يتم عرض المفاتيح مرة واحدة فقط أثناء الإنشاء — قم بتخزينها بشكل آمن",
"tipSeparate": "قم بإنشاء مفاتيح منفصلة لعملاء أو بيئات مختلفة",
"tipRestrict": "قم بتقييد المفاتيح لنماذج محددة لتحسين الأمان والتحكم في التكلفة",
"keyName": "اسم المفتاح",
"keyNamePlaceholder": "على سبيل المثال، مفتاح الإنتاج، مفتاح التطوير",
"keyNameDesc": "اختر اسمًا وصفيًا لتحديد غرض هذا المفتاح",
- "managementAccessDesc": "السماح لمفتاح API هذا بإدارة إعدادات OmniRoute.",
+ "managementAccessDesc": "يسمح لمفتاح API هذا بإدارة إعدادات OmniRoute.",
"selfServiceVisibility": "رؤية الخدمة الذاتية",
"selfServiceVisibilityDesc": "التحكم فيما يمكن لهذا المفتاح رؤيته عن استخدامه الخاص وحصة المنبع المشتركة.",
"ownUsageVisibility": "تكلفة واستخدام الرموز الخاصان",
@@ -1621,36 +1621,36 @@
"keyCreatedNote": "انسخ هذا المفتاح وقم بتخزينه الآن - لن يتم عرضه مرة أخرى.",
"done": "تم",
"savePermissions": "حفظ الأذونات",
- "endpointRestrictions": "Allowed Endpoints",
- "allEndpointsAllowed": "This key can access all API endpoints.",
- "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.",
- "autoResolve": "Auto-Resolve",
- "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.",
- "keyActive": "Key Active",
- "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.",
- "accessSchedule": "Access Schedule",
- "accessScheduleDesc": "Restrict access to specific hours and days of the week.",
- "scheduleFrom": "From",
- "scheduleUntil": "Until",
- "scheduleDays": "Days",
- "scheduleTimezone": "Timezone",
- "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin",
- "scheduleActive": "Schedule",
- "disabled": "Disabled",
- "daySun": "Sun",
- "dayMon": "Mon",
- "dayTue": "Tue",
- "dayWed": "Wed",
- "dayThu": "Thu",
- "dayFri": "Fri",
- "daySat": "Sat",
+ "endpointRestrictions": "نقاط النهاية المسموح بها",
+ "allEndpointsAllowed": "يمكن لهذا المفتاح الوصول إلى جميع نقاط نهاية API.",
+ "endpointsRestricted": "مقيّد بـ {count} من نقاط النهاية.",
+ "autoResolve": "الحل التلقائي",
+ "autoResolveDesc": "حل أسماء النماذج الغامضة تلقائيًا للموفر الأصلي لمفتاح واجهة برمجة التطبيقات (API) هذا.",
+ "keyActive": "مفتاح نشط",
+ "keyActiveDesc": "تمكين أو تعطيل مفتاح API هذا. يتم رفض المفاتيح المعطلة على الفور برقم 403.",
+ "accessSchedule": "جدول الوصول",
+ "accessScheduleDesc": "تقييد الوصول إلى ساعات وأيام محددة من الأسبوع.",
+ "scheduleFrom": "من",
+ "scheduleUntil": "حتى",
+ "scheduleDays": "أيام",
+ "scheduleTimezone": "المنطقة الزمنية",
+ "scheduleTimezoneHint": "استخدم أسماء المناطق الزمنية في IANA، مثل America/New_York وEurope/Berlin.",
+ "scheduleActive": "الجدول الزمني",
+ "disabled": "معطل",
+ "daySun": "الأحد",
+ "dayMon": "الاثنين",
+ "dayTue": "الثلاثاء",
+ "dayWed": "الأربعاء",
+ "dayThu": "الخميس",
+ "dayFri": "الجمعة",
+ "daySat": "السبت",
"allowAll": "السماح للكل",
"restrict": "تقييد",
"allowAllInfo": "يمكن لهذا المفتاح الوصول إلى كافة الموديلات المتاحة.",
"restrictInfo": "يمكن لهذا المفتاح الوصول إلى {selected} من طرازات {total}.",
"selected": "تم تحديد {count}",
"all": "الكل",
- "clear": "واضح",
+ "clear": "مسح",
"searchModels": "نماذج البحث بالاسم أو المزود...",
"noModelsFound": "لم يتم العثور على نماذج",
"keyNameRequired": "اسم المفتاح مطلوب",
@@ -1668,8 +1668,8 @@
"failedUpdatePermissionsRetry": "فشل تحديث الأذونات. يرجى المحاولة مرة أخرى.",
"unknownProvider": "غير معروف",
"copyMaskedKey": "انسخ المفتاح المقنع",
- "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key",
- "modelsCount": "{count, plural, one {# model} other {# models}}",
+ "keyOnlyAvailableAtCreation": "المفتاح الكامل متاح فقط في وقت الإنشاء — انسخه عند إنشاء المفتاح لأول مرة",
+ "modelsCount": "النماذج: {count, plural, one {نموذج واحد} other {# نماذج}}",
"lastUsedOn": "الأخير: {date}",
"editPermissions": "تحرير الأذونات",
"deleteKey": "حذف المفتاح",
@@ -1684,40 +1684,40 @@
"restrictDesc": "يمكن لهذا المفتاح الوصول إلى {selectedCount} من طرازات {totalModels}.",
"selectedCount": "تم تحديد {count}",
"maxActiveSessions": "الحد الأقصى للجلسات النشطة",
- "apiManagerCustomRateLimits": "حدود الأسعار المخصصة",
+ "apiManagerCustomRateLimits": "حدود معدل الطلبات المخصصة لمدير الـ API",
"apiManagerCustomRateLimitsDesc": "تجاوز الحدود الافتراضية العالمية. اتركه فارغًا لاستخدام الإعدادات الافتراضية.",
"apiManagerRateLimitRequestsPlaceholder": "الطلبات",
"apiManagerRateLimitReqPer": "الطلب /",
"apiManagerRateLimitSecondsPlaceholder": "ثواني",
"apiManagerRemoveLimitTitle": "إزالة الحد",
- "apiManagerTimezonePlaceholder": "أمريكا/ساو باولو",
+ "apiManagerTimezonePlaceholder": "America/Sao_Paulo",
"noLogPayloadPrivacy": "خصوصية الحمولة بدون سجل",
"bannedStatus": "حالة محظورة",
"managementApiAccess": "الوصول إلى واجهة برمجة تطبيقات الإدارة",
"expirationDate": "تاريخ انتهاء الصلاحية",
"managementAccess": "الوصول إلى الإدارة",
"allowedConnections": "الاتصالات المسموح بها",
- "searchPlaceholder": "__MISSING__:Search by name or token...",
- "activeOnly": "__MISSING__:Active only",
- "filterStatus": "__MISSING__:STATUS",
- "filterType": "__MISSING__:TYPE",
- "filterAll": "__MISSING__:All",
- "filterStatusActive": "__MISSING__:Active",
- "filterStatusDisabled": "__MISSING__:Disabled",
- "filterStatusBanned": "__MISSING__:Banned",
- "filterStatusExpired": "__MISSING__:Expired",
- "filterTypeStandard": "__MISSING__:Standard",
- "filterTypeManage": "__MISSING__:Manage",
- "filterTypeRestricted": "__MISSING__:Restricted",
- "shownOf": "__MISSING__:{shown} of {total} shown",
- "emptyFilterTitle": "__MISSING__:No keys match your filters",
- "emptyFilterClear": "__MISSING__:Clear filters"
+ "searchPlaceholder": "البحث بالاسم أو الرمز...",
+ "activeOnly": "نشط فقط",
+ "filterStatus": "الحالة",
+ "filterType": "النوع",
+ "filterAll": "الكل",
+ "filterStatusActive": "نشط",
+ "filterStatusDisabled": "معطل",
+ "filterStatusBanned": "محظور",
+ "filterStatusExpired": "انتهت صلاحيتها",
+ "filterTypeStandard": "قياسي",
+ "filterTypeManage": "إدارة",
+ "filterTypeRestricted": "مقيد",
+ "shownOf": "تم عرض {shown} من {total}",
+ "emptyFilterTitle": "لا توجد مفاتيح تتطابق مع المرشحات الخاصة بك",
+ "emptyFilterClear": "مسح المرشحات"
},
"auditLog": {
"title": "سجل التدقيق",
"searchPlaceholder": "إجراءات البحث...",
"action": "العمل",
- "actor": "ممثل",
+ "actor": "الفاعل",
"target": "الهدف",
"ipAddress": "عنوان IP",
"timestamp": "الطابع الزمني",
@@ -1738,137 +1738,137 @@
"media": {
"title": "استوديو الوسائط",
"subtitle": "أنشئ صورًا وفيديوهات وموسيقى",
- "model": "Model",
- "prompt": "Prompt",
+ "model": "نموذج",
+ "prompt": "المطالبة",
"generate": "إنشاء",
- "generating": "Generating...",
- "loadingModels": "Loading available models...",
- "noModels": "No models available. Configure providers with media capabilities first.",
- "error": "Generation Failed",
- "result": "Result",
- "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.",
- "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.",
- "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.",
+ "generating": "جارٍ الإنشاء...",
+ "loadingModels": "جارٍ تحميل النماذج المتوفرة...",
+ "noModels": "لا توجد نماذج متاحة. قم بتكوين موفري الخدمة ذوي إمكانيات الوسائط أولاً.",
+ "error": "فشل الإنشاء",
+ "result": "النتيجة",
+ "imageDescription": "قم بإنشاء صور من المطالبات النصية باستخدام OpenAI وxAI وTogether وHyperbolic وSD WebUI وComfyUI والمزيد.",
+ "videoDescription": "أنشئ مقاطع فيديو باستخدام AnimateDiff أو Stable Video Diffusion عبر ComfyUI أو SD WebUI.",
+ "musicDescription": "قم بتأليف الموسيقى باستخدام Stable Audio Open أو MusicGen عبر ComfyUI.",
"kinds": {
- "embedding": "__MISSING__:Embedding",
- "image": "__MISSING__:Image",
- "imageToText": "__MISSING__:Image to Text",
- "tts": "__MISSING__:Text to Speech",
- "stt": "__MISSING__:Speech to Text",
- "webSearch": "__MISSING__:Web Search",
- "webFetch": "__MISSING__:Web Fetch",
- "video": "__MISSING__:Video",
- "music": "__MISSING__:Music"
+ "embedding": "التضمين",
+ "image": "صورة",
+ "imageToText": "صورة إلى نص",
+ "tts": "تحويل النص إلى كلام",
+ "stt": "الكلام إلى النص",
+ "webSearch": "بحث الويب",
+ "webFetch": "جلب الويب",
+ "video": "فيديو",
+ "music": "موسيقى"
},
- "noProviders": "__MISSING__:No providers configured for this kind yet.",
- "addConnection": "__MISSING__:Add Connection",
- "backToProviders": "__MISSING__:Back to Providers",
- "connections": "__MISSING__:{count} Connections",
- "noConnections": "__MISSING__:No connections yet — add one from the provider page.",
- "loading": "__MISSING__:Loading..."
+ "noProviders": "لم يتم تكوين أي موفري لهذا النوع حتى الآن.",
+ "addConnection": "إضافة اتصال",
+ "backToProviders": "العودة إلى مقدمي الخدمة",
+ "connections": "اتصالات {count}",
+ "noConnections": "لا توجد اتصالات حتى الآن - قم بإضافة واحد من صفحة المزود.",
+ "loading": "جار التحميل..."
},
"search": {
- "searchQuery": "Search Query",
- "searchResults": "Search Results",
- "cachedResult": "Cached",
- "searchCost": "Cost",
- "searchTools": "Search Tools",
- "searchToolsDesc": "Advanced search testing with provider comparison",
- "compareProviders": "Compare Providers",
- "rerankResults": "Rerank Results",
- "searchHistory": "Search History",
- "urlOverlap": "URL Overlap",
- "noSearchProviders": "No search providers configured. Add providers in Settings.",
- "noRerankModels": "No rerank model available",
- "webSearch": "Web Search",
- "provider": "Provider",
- "searchType": "Search Type",
- "maxResults": "Max Results",
- "filters": "Filters",
- "country": "Country",
- "language": "Language",
- "timeRange": "Time Range",
- "includeDomains": "Include Domains",
- "excludeDomains": "Exclude Domains",
- "safeSearch": "Safe Search",
- "safeSearchOff": "Off",
- "safeSearchModerate": "Moderate",
- "safeSearchStrict": "Strict",
- "queryPlaceholder": "Enter search query...",
- "providerAuto": "auto (cheapest)",
- "searchTypeWeb": "web",
- "searchTypeNews": "news",
- "optionAny": "any",
- "timeRangeDay": "Past day",
- "timeRangeWeek": "Past week",
- "timeRangeMonth": "Past month",
- "timeRangeYear": "Past year",
+ "searchQuery": "استعلام البحث",
+ "searchResults": "نتائج البحث",
+ "cachedResult": "مخزّنة مؤقتًا",
+ "searchCost": "التكلفة",
+ "searchTools": "أدوات البحث",
+ "searchToolsDesc": "اختبار البحث المتقدم مع مقارنة المزود",
+ "compareProviders": "قارن مقدمي الخدمة",
+ "rerankResults": "إعادة ترتيب النتائج",
+ "searchHistory": "سجل البحث",
+ "urlOverlap": "تداخل عنوان URL",
+ "noSearchProviders": "لم يتم تكوين أي موفري بحث. أضف مقدمي الخدمة في الإعدادات.",
+ "noRerankModels": "لا يوجد نموذج إعادة ترتيب متاح",
+ "webSearch": "بحث الويب",
+ "provider": "مزود",
+ "searchType": "نوع البحث",
+ "maxResults": "الحد الأقصى للنتائج",
+ "filters": "عوامل التصفية",
+ "country": "البلد",
+ "language": "اللغة",
+ "timeRange": "النطاق الزمني",
+ "includeDomains": "تضمين النطاقات",
+ "excludeDomains": "استبعاد النطاقات",
+ "safeSearch": "البحث الآمن",
+ "safeSearchOff": "إيقاف",
+ "safeSearchModerate": "معتدل",
+ "safeSearchStrict": "صارم",
+ "queryPlaceholder": "أدخل استعلام البحث...",
+ "providerAuto": "تلقائي (الأرخص)",
+ "searchTypeWeb": "الويب",
+ "searchTypeNews": "الأخبار",
+ "optionAny": "أي",
+ "timeRangeDay": "اليوم الماضي",
+ "timeRangeWeek": "الأسبوع الماضي",
+ "timeRangeMonth": "الشهر الماضي",
+ "timeRangeYear": "العام الماضي",
"domainPlaceholder": "example.com",
- "requestTimedOut": "Request timed out ({seconds}s)",
- "networkError": "Network error",
- "formatted": "Formatted",
+ "requestTimedOut": "انتهت مهلة الطلب ({seconds}s)",
+ "networkError": "خطأ في الشبكة",
+ "formatted": "منسّق",
"rawJson": "JSON",
- "cacheMiss": "cache miss",
- "cacheHit": "cache hit",
- "latency": "Latency",
- "cost": "Cost",
- "results": "Results",
- "rerank": "Rerank",
- "rerankModel": "Rerank Model",
- "positionDelta": "Position Change",
- "emptyState": "Send a search query to see results",
+ "cacheMiss": "إخفاق ذاكرة التخزين المؤقت",
+ "cacheHit": "إصابة ذاكرة التخزين المؤقت",
+ "latency": "زمن الاستجابة",
+ "cost": "التكلفة",
+ "results": "النتائج",
+ "rerank": "إعادة الترتيب",
+ "rerankModel": "نموذج إعادة الترتيب",
+ "positionDelta": "تغيّر الموضع",
+ "emptyState": "أرسل استعلام بحث لرؤية النتائج",
"copy": "نسخ",
"resetToDefault": "إعادة التعيين إلى الوضع الافتراضي",
- "tabSearch": "Search",
- "tabScrape": "Scrape",
- "tabCompare": "Compare",
- "modalitiesGuide": "Modalities guide",
- "searchConceptTitle": "Search",
- "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)",
- "scrapeConceptTitle": "Scrape",
- "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)",
- "compareConceptTitle": "Compare",
- "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap",
- "rerankConceptTitle": "Rerank",
- "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query",
- "autoConceptTitle": "Auto (cheapest)",
- "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials",
- "providerCatalogTitle": "Provider Catalog",
- "kindSearch": "Search",
- "kindFetch": "Fetch/Scrape",
- "statusConfigured": "Configured",
- "statusMissing": "No credential",
- "statusRateLimited": "Rate limited",
- "configureProvider": "Configure in Providers",
- "loadingProviders": "Loading providers…",
- "failedToLoadProviders": "Failed to load providers",
- "costPerQuery": "Cost/query",
- "freeQuota": "Free quota/mo",
- "scrapeUrl": "URL to scrape",
+ "tabSearch": "البحث",
+ "tabScrape": "الاستخراج",
+ "tabCompare": "المقارنة",
+ "modalitiesGuide": "دليل الأنماط",
+ "searchConceptTitle": "البحث",
+ "searchConceptDesc": "البحث = جلب قائمة بنتائج الويب (العنوان، عنوان URL، المقتطف، درجة الصلة)",
+ "scrapeConceptTitle": "الاستخراج",
+ "scrapeConceptDesc": "الاستخراج = استخراج المحتوى الكامل لعنوان URL (Markdown أو نص أو HTML)",
+ "compareConceptTitle": "المقارنة",
+ "compareConceptDesc": "المقارنة = تشغيل الاستعلام نفسه عبر N من المزودين جنبًا إلى جنب لمقارنة زمن الاستجابة والتكلفة وتداخل النتائج",
+ "rerankConceptTitle": "إعادة الترتيب",
+ "rerankConceptDesc": "إعادة الترتيب = إعادة ترتيب النتائج عبر LLM لتحسين الصلة بالاستعلام",
+ "autoConceptTitle": "تلقائي (الأرخص)",
+ "autoConceptDesc": "تلقائي (الأرخص) = اختيار أرخص مزود متاح لديه بيانات اعتماد مكوّنة تلقائيًا",
+ "providerCatalogTitle": "دليل المزودين",
+ "kindSearch": "بحث",
+ "kindFetch": "جلب/استخراج",
+ "statusConfigured": "مكوّن",
+ "statusMissing": "بيانات الاعتماد مفقودة",
+ "statusRateLimited": "مقيّد بمعدل الطلبات",
+ "configureProvider": "التكوين ضمن المزودين",
+ "loadingProviders": "جارٍ تحميل المزودين…",
+ "failedToLoadProviders": "فشل تحميل المزودين",
+ "costPerQuery": "التكلفة/استعلام",
+ "freeQuota": "الحصة المجانية/شهر",
+ "scrapeUrl": "عنوان URL للاستخراج",
"scrapeUrlPlaceholder": "https://example.com",
- "scrapeExtract": "Extract",
- "scrapeExtracting": "Extracting…",
- "scrapeFullPage": "Full page",
- "scrapeFormat": "Format",
- "formatMarkdown": "Markdown",
+ "scrapeExtract": "استخراج",
+ "scrapeExtracting": "استخراج…",
+ "scrapeFullPage": "صفحة كاملة",
+ "scrapeFormat": "التنسيق",
+ "formatMarkdown": "ترميز Markdown",
"formatHtml": "HTML",
- "formatText": "Text",
- "scrapePreview": "Preview",
- "scrapeRaw": "Raw",
- "scrapeContentTruncated": "(truncated, view raw)",
- "scrapeMetadata": "Metadata",
- "scrapeProvider": "Provider",
- "scrapeSize": "Size",
- "compareRun": "Compare",
- "compareRunning": "Comparing…",
- "autoProvider": "Auto (cheapest)",
- "configuredStatus": "Configured",
- "rateLimitedStatus": "Rate limited",
- "noCredential": "No credential",
- "searchTypeLabel": "Type",
- "rerankModelLabel": "Rerank model",
- "noneOption": "None",
- "size": "Size"
+ "formatText": "نص",
+ "scrapePreview": "معاينة",
+ "scrapeRaw": "خام",
+ "scrapeContentTruncated": "(تم اقتطاع المحتوى، اعرض النسخة الخام)",
+ "scrapeMetadata": "البيانات الوصفية",
+ "scrapeProvider": "المزوّد",
+ "scrapeSize": "الحجم",
+ "compareRun": "مقارنة",
+ "compareRunning": "جارٍ إجراء المقارنة…",
+ "autoProvider": "تلقائي (الأرخص)",
+ "configuredStatus": "مكوّن",
+ "rateLimitedStatus": "مقيّد بالمعدل",
+ "noCredential": "لا توجد بيانات اعتماد",
+ "searchTypeLabel": "النوع",
+ "rerankModelLabel": "نموذج إعادة الترتيب",
+ "noneOption": "لا شيء",
+ "size": "الحجم"
},
"cliTools": {
"title": "أدوات سطر الأوامر",
@@ -1890,11 +1890,11 @@
"lastSavedAt": "آخر حفظ: {date}",
"never": "أبدا",
"justNow": "الآن فقط",
- "minutesAgoShort": "{count} منذ",
- "hoursAgoShort": "{count}h منذ",
- "daysAgoShort": "{count}d منذ",
- "monthsAgoShort": "{count}قبل شهر",
- "yearsAgoShort": "{count}قبل عام",
+ "minutesAgoShort": "منذ {count} دقيقة",
+ "hoursAgoShort": " منذ{count} ساعة",
+ "daysAgoShort": "منذ {count} يوم",
+ "monthsAgoShort": "{count} قبل شهر",
+ "yearsAgoShort": "{count} قبل عام",
"runtimeCheckFailed": "فشل التحقق من وقت التشغيل",
"yourApiKeyPlaceholder": "مفتاح API الخاص بك",
"modelPlaceholder": "معرف الموفر/النموذج",
@@ -1942,15 +1942,15 @@
"antigravityStep2Prefix": "2. أضف",
"antigravityStep2Suffix": "إلى ملف المضيفين الخاص بك كـ 127.0.0.1.",
"antigravityStep3": "3. سيتم فتح Antigravity والطلبات بالوكالة.",
- "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.",
- "mitmStep1": "1. Start MITM to route requests through OmniRoute.",
- "mitmStep2Prefix": "2. Add",
- "mitmStep2Suffix": "to your hosts file as 127.0.0.1.",
- "mitmStep3": "3. Open {toolName} and requests will be proxied.",
- "sudoPasswordRequiredTitle": "كلمة مرور سودو مطلوبة",
+ "mitmHowWorksDesc": "يرسل {toolName} الطلبات إلى نقطة نهاية المزوّد. يعترضها MITM ويعيد توجيهها إلى OmniRoute.",
+ "mitmStep1": "1. ابدأ MITM لتوجيه الطلبات عبر OmniRoute.",
+ "mitmStep2Prefix": "2. أضف",
+ "mitmStep2Suffix": "إلى ملف hosts لديك بالقيمة 127.0.0.1.",
+ "mitmStep3": "3. افتح {toolName} وستمر الطلبات عبر الوكيل.",
+ "sudoPasswordRequiredTitle": "كلمة مرور Sudo مطلوبة",
"sudoPasswordHint": "كلمة مرور المسؤول مطلوبة لتعديل ملف المضيفين وإعدادات وكيل النظام.",
- "enterSudoPassword": "أدخل كلمة مرور سودو",
- "sudoPasswordRequiredError": "كلمة مرور سودو مطلوبة.",
+ "enterSudoPassword": "أدخل كلمة مرور Sudo",
+ "sudoPasswordRequiredError": "كلمة مرور Sudo مطلوبة.",
"cancel": "إلغاء",
"confirm": "تأكيد",
"settingsApplied": "تم تطبيق الإعدادات بنجاح!",
@@ -1960,11 +1960,11 @@
"backupRestored": "تمت استعادة النسخة الاحتياطية!",
"failedRestore": "فشل في الاستعادة",
"checkingCli": "جارٍ التحقق من {tool} CLI...",
- "cliNotRunnable": "{tool} تم تثبيت واجهة سطر الأوامر (CLI) ولكنها غير قابلة للتشغيل",
+ "cliNotRunnable": "{tool} تم تثبيت واجهة سطر الأوامر ولكنها غير قابلة للتشغيل",
"cliNotInstalled": "{tool} واجهة سطر الأوامر غير مثبتة",
"cliNotDetected": "{tool} لم يتم اكتشاف واجهة سطر الأوامر",
- "cliDetectedReady": "{tool} تم اكتشاف واجهة سطر الأوامر (CLI) وهي جاهزة",
- "cliFoundFailedHealthcheck": "{tool} تم العثور على واجهة سطر الأوامر (CLI) ولكن فشل التحقق من سلامة وقت التشغيل{reason}.",
+ "cliDetectedReady": "{tool} تم اكتشاف واجهة سطر الأوامر وهي جاهزة",
+ "cliFoundFailedHealthcheck": "{tool} تم العثور على واجهة سطر الأوامر ولكن فشل التحقق من سلامة وقت التشغيل{reason}.",
"installCliPrompt": "الرجاء تثبيت {tool} CLI لاستخدام هذه الميزة.",
"installCodexPrompt": "الرجاء تثبيت Codex CLI لاستخدام ميزة التطبيق التلقائي.",
"hide": "إخفاء",
@@ -2010,15 +2010,15 @@
"deleteProfile": "حذف الملف الشخصي",
"profileNamePlaceholder": "اسم الملف الشخصي (مثل الحساب الشخصي)",
"saveCurrent": "حفظ الحالي",
- "codexAuthNotePrefix": "يستخدم الدستور الغذائي",
+ "codexAuthNotePrefix": "استخدامات Codex",
"codexAuthNoteMiddle": "مع",
"codexAuthNoteSuffix": "انقر فوق \"تطبيق\" للتكوين التلقائي.",
- "claudeManualConfiguration": "كلود CLI - التكوين اليدوي",
+ "claudeManualConfiguration": "Claude CLI - التكوين اليدوي",
"codexManualConfiguration": "Codex CLI - التكوين اليدوي",
"droidManualConfiguration": "Factory Droid - التكوين اليدوي",
- "openClawManualConfiguration": "فتح المخلب - التكوين اليدوي",
- "clineManualConfiguration": "التكوين اليدوي لكلين",
- "kiloManualConfiguration": "التكوين اليدوي للكيلو كود",
+ "openClawManualConfiguration": "OpenClaw - التكوين اليدوي",
+ "clineManualConfiguration": "التكوين اليدوي Cline",
+ "kiloManualConfiguration": "التكوين اليدوي Kilo code",
"whenToUseLabel": "متى تستخدم",
"openToolDocs": "افتح مستندات الأداة",
"toolUseCases": {
@@ -2032,40 +2032,40 @@
"continue": "استخدمه عند تشغيل متابعة في IDEs وتحتاج إلى تكوين موفر محمول يستند إلى JSON.",
"opencode": "استخدمه عندما تفضل تشغيل الوكيل الأصلي للمحطة والأتمتة النصية عبر OpenCode.",
"kiro": "يُستخدم عند دمج Kiro والتحكم في توجيه النموذج مركزيًا من OmniRoute.",
- "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.",
+ "windsurf": "استخدمه عندما تريد بيئة تطوير متكاملة مبنية للذكاء الاصطناعي مع توجيه نماذج Codeium/Windsurf عبر OmniRoute.",
"antigravity": "يُستخدم عندما يجب اعتراض حركة مرور Antigravity/Kiro عبر MITM وتوجيهها إلى OmniRoute.",
"copilot": "استخدمه عندما تريد UX بأسلوب دردشة Copilot أثناء فرض مفاتيح OmniRoute وقواعد التوجيه.",
- "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.",
- "qwen": "Use when you want Qwen Code CLI with OmniRoute-managed provider settings and multi-provider model access.",
+ "amp": "استخدمه عندما تريد توجيه Amp CLI عبر OmniRoute بأسماء مستعارة مختصرة ثابتة وإعداد متوافق مع OpenAI.",
+ "qwen": "استخدمه عندما تريد Qwen Code CLI مع إعدادات مزوّد يديرها OmniRoute ووصول إلى نماذج متعددة المزوّدين.",
"hermes": "استخدمه عندما تحتاج إلى مساعد AI خفيف الوزن ومعتمد على الأجهزة الطرفية للقيام بالمهام السريعة.",
- "hermes-agent": "__MISSING__:Use when you need Hermes Agent (by Nousresearch) with default, delegation, vision and auxiliary models routed through OmniRoute.",
+ "hermes-agent": "استخدمه عندما تحتاج إلى Hermes Agent من Nousresearch مع توجيه نماذج الوضع الافتراضي والتفويض والرؤية والنماذج المساعدة عبر OmniRoute.",
"custom": "يستخدم لتطبيقات الأدوات المخصصة أو التكوينات العامة المتوافقة مع OpenAI."
},
"toolDescriptions": {
- "antigravity": "جوجل مكافحة الجاذبية IDE مع MITM",
- "claude": "الأنثروبي كلود كود CLI",
- "codex": "OpenAI Codex CLI",
- "droid": "مساعد مصنع الروبوت AI",
- "openclaw": "افتح مساعد Claw AI",
- "cline": "Cline AI Coding Assistant CLI",
+ "antigravity": "Google Antigravity IDE مع MITM",
+ "claude": "Anthropic Claude code CLI",
+ "codex": "واجهة OpenAI Codex لسطر الأوامر",
+ "droid": "مساعد Factory Droid AI",
+ "openclaw": "Openمساعد Claw AI",
+ "cline": "مساعد Cline للبرمجة بالذكاء الاصطناعي عبر سطر الأوامر",
"kilo": "كيلو كود AI مساعد CLI",
- "cursor": "محرر كود المؤشر AI",
- "continue": "تابع مساعد الذكاء الاصطناعي",
- "opencode": "OpenCode AI coding agent (Terminal)",
- "kiro": "Amazon Kiro — AI-powered IDE",
- "windsurf": "Windsurf AI Code Editor",
- "copilot": "GitHub Copilot AI Assistant",
- "qwen": "Alibaba Qwen Code CLI",
- "amp": "Sourcegraph Amp coding assistant CLI",
- "hermes": "هيرميس AI مساعد المحطة",
- "hermes-agent": "__MISSING__:Hermes Agent (by Nousresearch) - Advanced terminal AI with multi-model support (delegation, vision, compression, etc.)",
+ "cursor": "محرر كود Cursor AI",
+ "continue": "Continue مساعد الذكاء الاصطناعي",
+ "opencode": "وكيل OpenCode للبرمجة بالذكاء الاصطناعي عبر الطرفية",
+ "kiro": "Amazon Kiro — بيئة تطوير متكاملة مدعومة بالذكاء الاصطناعي",
+ "windsurf": "محرر الشيفرة Windsurf المدعوم بالذكاء الاصطناعي",
+ "copilot": "مساعد GitHub Copilot بالذكاء الاصطناعي",
+ "qwen": "واجهة Alibaba Qwen Code لسطر الأوامر",
+ "amp": "مساعد Sourcegraph Amp للبرمجة عبر سطر الأوامر",
+ "hermes": "Hermes AI مساعد المحطة",
+ "hermes-agent": "Hermes Agent من Nousresearch — ذكاء اصطناعي متقدم للطرفية يدعم نماذج متعددة والتفويض والرؤية والضغط وغيرها",
"custom": "مولد تكوين CLI أو SDK عام متوافق مع OpenAI"
},
"guides": {
"cursor": {
"notes": {
"0": "يتطلب حساب Cursor Pro لاستخدام هذه الميزة.",
- "1": "يقوم المؤشر بتوجيه الطلبات من خلال الخادم الخاص به، لذلك لا يتم دعم نقطة النهاية المحلية. يرجى تمكين Cloud Endpoint في الإعدادات."
+ "1": "يقوم Cursor بتوجيه الطلبات من خلال الخادم الخاص به، لذلك لا يتم دعم نقطة النهاية المحلية. يرجى تمكين Cloud Endpoint في الإعدادات."
},
"steps": {
"1": {
@@ -2115,22 +2115,22 @@
"opencode": {
"steps": {
"1": {
- "title": "Install OpenCode",
- "desc": "Install via npm: npm install -g opencode-ai"
+ "title": "تثبيت OpenCode",
+ "desc": "ثبّته عبر npm: npm install -g opencode-ai"
},
"2": {
- "title": "API Key"
+ "title": "مفتاح API"
},
"3": {
- "title": "Set Base URL",
- "desc": "opencode config set baseUrl {baseUrl}"
+ "title": "تعيين عنوان URL الأساسي",
+ "desc": "نفّذ الأمر opencode config set baseUrl {baseUrl}"
},
"4": {
- "title": "Select Model"
+ "title": "اختيار النموذج"
},
"5": {
- "title": "Use Thinking Variant",
- "desc": "For thinking models, run with --variant high/low/max (example command below)."
+ "title": "استخدام متغير التفكير",
+ "desc": "لنماذج التفكير، شغّلها باستخدام --variant high/low/max (يتوفر مثال للأمر أدناه)."
}
},
"notes": {
@@ -2141,56 +2141,56 @@
"kiro": {
"steps": {
"1": {
- "title": "Open Kiro Settings",
- "desc": "Go to Settings → AI Provider"
+ "title": "فتح إعدادات Kiro",
+ "desc": "انتقل إلى الإعدادات ← مزوّد الذكاء الاصطناعي"
},
"2": {
- "title": "Base URL",
- "desc": "Paste your OmniRoute endpoint URL"
+ "title": "عنوان URL الأساسي",
+ "desc": "الصق عنوان URL لنقطة نهاية OmniRoute"
},
"3": {
- "title": "API Key"
+ "title": "مفتاح API"
},
"4": {
- "title": "Select Model"
+ "title": "اختيار النموذج"
}
},
"notes": {
- "0": "يتطلب كيرو حساب أمازون."
+ "0": "يتطلب Kiro حساب Amazon."
}
},
"windsurf": {
"steps": {
"1": {
- "title": "Open AI Settings",
- "desc": "Click the AI Settings icon in Windsurf or go to Settings"
+ "title": "فتح إعدادات الذكاء الاصطناعي",
+ "desc": "انقر على أيقونة إعدادات الذكاء الاصطناعي في Windsurf أو انتقل إلى الإعدادات"
},
"2": {
- "title": "Add Custom Provider",
- "desc": "Select \"Add custom provider\" (OpenAI-compatible)"
+ "title": "إضافة مزوّد مخصص",
+ "desc": "اختر «إضافة مزوّد مخصص» متوافق مع OpenAI"
},
"3": {
- "title": "Base URL",
+ "title": "عنوان URL الأساسي",
"desc": "http://127.0.0.1:20128/v1"
},
"4": {
- "title": "API Key",
- "desc": "Select your OmniRoute API key"
+ "title": "مفتاح API",
+ "desc": "اختر مفتاح OmniRoute API الخاص بك"
},
"5": {
- "title": "Select Model",
- "desc": "Choose a model from the dropdown"
+ "title": "اختيار النموذج",
+ "desc": "اختر نموذجًا من القائمة المنسدلة"
}
}
}
},
- "autoConfiguredTab": "Auto Configured Tab",
- "toolCategoriesDesc": "Tool Categories Desc",
- "allToolsTab": "All Tools Tab",
- "guidedClientsTab": "Guided Clients Tab",
- "mitmClientsTab": "Mitm Clients Tab",
+ "autoConfiguredTab": "علامة تبويب المكوّن تلقائيًا",
+ "toolCategoriesDesc": "وصف فئات الأدوات",
+ "allToolsTab": "علامة تبويب جميع الأدوات",
+ "guidedClientsTab": "علامة تبويب العملاء الموجّهين",
+ "mitmClientsTab": "علامة تبويب عملاء MITM",
"customCliTab": "سطر الأوامر المخصص",
- "toolCategories": "Tool Categories",
+ "toolCategories": "فئات الأدوات",
"visibleToolsCount": "{count} من الأدوات المتاحة",
"customCliBuilderTitle": "منشئ CLI المتوافق مع OpenAI",
"customCliBuilderDescription": "قم بإنشاء env vars ومقتطفات JSON لأي CLI أو SDK يقبل عنوان URL الأساسي المتوافق مع OpenAI ومفتاح API ومعرف النموذج.",
@@ -2210,7 +2210,7 @@
"customCliEndpointHint": "قم بتوجيه أي عميل متوافق مع OpenAI إلى عنوان URL الأساسي لـ OmniRoute /v1. نقطة نهاية عمليات إكمال الدردشة الأولية هي {endpoint}. استخدم كتلة JSON عندما تريد الأداة كائن موفر، أو استخدم البرنامج النصي env عندما يقرأ متغيرات OPENAI_*.",
"customCliEnvBlockTitle": "مقتطف Env / Shell",
"customCliJsonBlockTitle": "كتلة موفر JSON",
- "copilotConfigGenerator": "جيثب مساعد الطيار التكوين المولد",
+ "copilotConfigGenerator": "Github Copilot التكوين المولد",
"copilotApiKey": "مفتاح واجهة برمجة التطبيقات",
"copilotFilterModelsPlaceholder": "نماذج التصفية...",
"copilotMaxInputTokens": "الحد الأقصى لرموز الإدخال",
@@ -2219,110 +2219,110 @@
"copilotPasteInto": "لصق في:",
"wireApiChatCompletions": "مكتملات الدردشة (/chat/مكتملات)",
"wireApiResponses": "واجهة برمجة تطبيقات الاستجابات (/ الاستجابات)",
- "reasoningEffort": "__MISSING__:Reasoning effort for {model}",
- "reasoningEffortDefault": "__MISSING__:Default",
- "reasoningEffortHint": "__MISSING__:Default preserves the reasoning effort sent by the agent",
+ "reasoningEffort": "جهد الاستدلال للنموذج {model}",
+ "reasoningEffortDefault": "افتراضي",
+ "reasoningEffortHint": "يحافظ الخيار الافتراضي على جهد الاستدلال الذي يرسله الوكيل",
"reasoningEffortTier": {
- "none": "__MISSING__:None",
- "low": "__MISSING__:Low",
- "medium": "__MISSING__:Medium",
- "high": "__MISSING__:High",
- "xhigh": "__MISSING__:XHigh"
+ "none": "بدون جهد",
+ "low": "منخفض",
+ "medium": "متوسط",
+ "high": "عالية",
+ "xhigh": "مرتفع جدًا"
}
},
"combos": {
"title": "المجموعات",
- "description": "قم بإنشاء مجموعات نماذج باستخدام التوجيه المرجح والدعم الاحتياطي",
+ "description": "أنشئ مجموعات نماذج باستخدام التوجيه المرجّح والتبديل الاحتياطي",
"autoCatalogTitle": "كتالوج التوجيه التلقائي",
- "autoCatalogTemplateCount": "{count} القوالب",
- "autoCatalogDescription": "يتم حل المجموعات التلقائية/* المضمنة ديناميكيًا من موفري الخدمة المتصلين. استخدم أيًا من هذه المعرفات كحقل النموذج - لا حاجة إلى أي إعداد.",
- "autoCatalogExpand": "قم بتوسيع كتالوج التوجيه التلقائي",
+ "autoCatalogTemplateCount": "{count} قالبًا",
+ "autoCatalogDescription": "تُحل مجموعات auto/* المضمّنة ديناميكيًا من المزوّدين المتصلين. استخدم أيًا من هذه المعرّفات في حقل النموذج، دون حاجة إلى إعداد.",
+ "autoCatalogExpand": "توسيع كتالوج التوجيه التلقائي",
"autoCatalogCollapse": "طي كتالوج التوجيه التلقائي",
- "createCombo": "إنشاء التحرير والسرد",
- "editCombo": "تحرير التحرير والسرد",
- "deleteCombo": "حذف التحرير والسرد",
- "noModels": "لا نماذج",
+ "createCombo": "إنشاء مجموعة",
+ "editCombo": "تحرير المجموعة",
+ "deleteCombo": "حذف المجموعة",
+ "noModels": "لا توجد نماذج",
"noModelsYet": "لم تتم إضافة أي نماذج حتى الآن",
"addModel": "إضافة نموذج",
- "addModelToCombo": "إضافة نموذج إلى التحرير والسرد",
+ "addModelToCombo": "إضافة نموذج إلى المجموعة",
"routingStrategy": "استراتيجية التوجيه",
- "maxRetries": "ماكس إعادة المحاولة",
+ "maxRetries": "الحد الأقصى لمحاولات الإعادة",
"timeout": "المهلة (مللي ثانية)",
- "healthcheck": "فحص الصحة",
+ "healthcheck": "فحص السلامة",
"priority": "الأولوية",
- "fallback": "احتياطي",
- "roundRobin": "جولة روبن",
+ "fallback": "تبديل احتياطي",
+ "roundRobin": "التوزيع الدوري",
"random": "عشوائي",
- "leastLatency": "الكمون الأقل",
- "comboName": "اسم التحرير والسرد",
- "comboNamePlaceholder": "بلدي التحرير والسرد",
- "deleteConfirm": "هل تريد حذف هذا التحرير والسرد؟",
- "noCombosYet": "لا المجموعات بعد",
- "comboCreated": "تم إنشاء التحرير والسرد بنجاح",
- "comboUpdated": "تم تحديث التحرير والسرد بنجاح",
- "comboDeleted": "تم حذف التحرير والسرد",
- "failedCreate": "فشل إنشاء التحرير والسرد",
- "failedUpdate": "فشل تحديث التحرير والسرد",
- "errorCreating": "حدث خطأ أثناء إنشاء التحرير والسرد",
- "errorUpdating": "حدث خطأ أثناء تحديث التحرير والسرد",
- "errorDeleting": "حدث خطأ أثناء حذف التحرير والسرد",
+ "leastLatency": "أقل زمن استجابة",
+ "comboName": "اسم المجموعة",
+ "comboNamePlaceholder": "مجموعتي",
+ "deleteConfirm": "هل تريد حذف هذه المجموعة؟",
+ "noCombosYet": "لا توجد مجموعات بعد",
+ "comboCreated": "تم إنشاء المجموعة بنجاح",
+ "comboUpdated": "تم تحديث المجموعة بنجاح",
+ "comboDeleted": "تم حذف المجموعة",
+ "failedCreate": "تعذر إنشاء المجموعة",
+ "failedUpdate": "تعذر تحديث المجموعة",
+ "errorCreating": "حدث خطأ أثناء إنشاء المجموعة",
+ "errorUpdating": "حدث خطأ أثناء تحديث المجموعة",
+ "errorDeleting": "حدث خطأ أثناء حذف المجموعة",
"testFailed": "فشل طلب الاختبار",
- "failedToggle": "فشل تبديل التحرير والسرد",
+ "failedToggle": "تعذر تبديل حالة المجموعة",
"testResults": "نتائج الاختبار — {name}",
- "resolvedBy": "تم الحل بواسطة:",
+ "resolvedBy": "تم التوجيه عبر:",
"more": "+{count} المزيد",
- "reqs": "طلبات",
+ "reqs": "الطلبات",
"success": "النجاح",
- "proxyConfigured": "تم تكوين الوكيل",
- "copyComboName": "انسخ اسم التحرير والسرد",
- "enableCombo": "تمكين التحرير والسرد",
- "disableCombo": "تعطيل التحرير والسرد",
- "testCombo": "التحرير والسرد الاختبار",
- "duplicate": "مكررة",
- "proxyConfig": "تكوين الوكيل",
+ "proxyConfigured": "تم تكوين بروكسي",
+ "copyComboName": "نسخ اسم المجموعة",
+ "enableCombo": "تمكين المجموعة",
+ "disableCombo": "تعطيل المجموعة",
+ "testCombo": "اختبار المجموعة",
+ "duplicate": "تكرار",
+ "proxyConfig": "تكوين بروكسي",
"nameRequired": "الاسم مطلوب",
"nameInvalid": "فقط الحروف والأرقام، -، _، / و . مسموح به",
"nameHint": "الحروف والأرقام، -، _، / و . مسموح به",
- "priorityDesc": "التراجع المتسلسل: تجربة النموذج 1 أولاً، ثم 2، وما إلى ذلك.",
- "weightedDesc": "يوزع حركة المرور حسب نسبة الوزن مع التراجع",
+ "priorityDesc": "تبديل احتياطي تسلسلي: يُجرَّب النموذج 1 أولًا، ثم 2، وهكذا.",
+ "weightedDesc": "يوزّع حركة المرور حسب الأوزان مع التبديل الاحتياطي.",
"roundRobinDesc": "التوزيع الدائري: ينتقل كل طلب إلى النموذج التالي بالتناوب",
- "contextRelay": "Context Relay",
- "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate",
+ "contextRelay": "نقل السياق",
+ "contextRelayDesc": "يحافظ على استمرارية الجلسة بملخصات تسليم عند تدوير الحسابات",
"randomDesc": "اختيار عشوائي موحد، ثم الرجوع إلى النماذج المتبقية",
"leastUsedDesc": "يختار النموذج الذي يحتوي على أقل عدد من الطلبات، مع موازنة الحمل مع مرور الوقت",
- "costOptimizedDesc": "الطرق إلى النموذج الأرخص تعتمد أولاً على التسعير",
- "resetAware": "إعادة تعيين واعية RR",
- "resetAwareDesc": "قم بموازنة الحصة المتبقية مقابل 5 ساعات وعمليات إعادة التعيين الأسبوعية، ثم قم بتدوير النتائج المماثلة",
- "strictRandom": "Strict Random",
- "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling",
+ "costOptimizedDesc": "يوجّه أولًا إلى النموذج الأقل تكلفة استنادًا إلى الأسعار",
+ "resetAware": "توزيع دوري مراعي لإعادة التعيين",
+ "resetAwareDesc": "يوازن الحصة المتبقية بين نافذتي إعادة التعيين لخمس ساعات ولأسبوع، ثم يناوب بين النتائج المتقاربة",
+ "strictRandom": "عشوائي صارم",
+ "strictRandomDesc": "يخلط الترتيب ويستخدم كل نموذج مرة واحدة قبل إعادة الخلط",
"models": "نماذج",
"autoBalance": "التوازن التلقائي",
"advancedSettings": "الإعدادات المتقدمة",
"retryDelay": "تأخير إعادة المحاولة (ملي ثانية)",
"concurrencyPerModel": "التزامن/النموذج",
"queueTimeout": "مهلة قائمة الانتظار (مللي ثانية)",
- "contextRelayHandoffThreshold": "Handoff Threshold",
- "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.",
- "contextRelayMaxMessages": "Max Messages For Summary",
- "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.",
- "contextRelaySummaryModel": "Summary Model",
- "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.",
- "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.",
- "advancedHint": "اتركه فارغًا لاستخدام الإعدادات الافتراضية العامة. تتجاوز هذه الإعدادات لكل موفر.",
+ "contextRelayHandoffThreshold": "عتبة التسليم",
+ "contextRelayHandoffThresholdHelp": "عندما يصل استخدام الحصة إلى هذه العتبة، ينشئ OmniRoute ملخص تسليم منظمًا قبل استنفاد الحساب النشط.",
+ "contextRelayMaxMessages": "الحد الأقصى للرسائل في الملخص",
+ "contextRelayMaxMessagesHelp": "يحد من مقدار السجل الحديث المضمّن في ملخص نقل السياق.",
+ "contextRelaySummaryModel": "نموذج التلخيص",
+ "contextRelaySummaryModelHelp": "نموذج تجاوز اختياري يُستخدم فقط لإنشاء ملخص التسليم. اتركه فارغًا لإعادة استخدام نموذج المجموعة النشط.",
+ "contextRelayProviderNote": "ينشئ نقل السياق حاليًا عمليات تسليم عند تدوير حسابات Codex. استخدمه مع عدة حسابات للمزود نفسه لتحقيق أفضل استمرارية.",
+ "advancedHint": "اتركها فارغة لاستخدام الإعدادات العامة الافتراضية. تتجاوز هذه القيم إعدادات كل مزوّد.",
"failoverBeforeRetry": "تجاوز الفشل قبل إعادة المحاولة",
- "maxSetRetries": "الحد الأقصى لعدد مرات إعادة المحاولة",
- "setRetryDelayMs": "تعيين تأخير إعادة المحاولة (مللي ثانية)",
- "moveUp": "تحرك للأعلى",
- "moveDown": "تحرك للأسفل",
+ "maxSetRetries": "الحد الأقصى لمحاولات إعادة المجموعة",
+ "setRetryDelayMs": "تأخير إعادة محاولة المجموعة (مللي ثانية)",
+ "moveUp": "نقل لأعلى",
+ "moveDown": "نقل لأسفل",
"removeModel": "إزالة",
"saving": "جارٍ الحفظ...",
"weighted": "مرجح",
"leastUsed": "الأقل استخدامًا",
- "costOpt": "تكلفة الاختيار",
+ "costOpt": "الأقل تكلفة",
"strategyGuideTitle": "كيفية استخدام هذه الاستراتيجية",
"strategyGuideWhen": "متى تُستخدم؟",
- "strategyGuideAvoid": "تجنب متى",
- "strategyGuideExample": "ﻣﺜﺎل",
+ "strategyGuideAvoid": "متى تُتجنب؟",
+ "strategyGuideExample": "مثال",
"strategyGuide": {
"priority": {
"when": "لديك نموذج مفضل واحد وتريد فقط التراجع عن الفشل.",
@@ -2332,7 +2332,7 @@
"weighted": {
"when": "تحتاج إلى تقسيم حركة المرور المتحكم فيها عبر النماذج.",
"avoid": "لا يمكنك الحفاظ على أوزان دقيقة بمرور الوقت.",
- "example": "80 ٪ نموذج مستقر + 20 ٪ طرح نموذج الكناري."
+ "example": "80 ٪ نموذج مستقر + 20 ٪ طرح نموذج Canary."
},
"round-robin": {
"when": "تريد توزيعًا يمكن التنبؤ به ومتساويًا.",
@@ -2360,24 +2360,24 @@
"example": "تفضل إعادة ضبط الحساب الأسبوعي بنسبة 60% غدًا على إعادة ضبط الحساب بنسبة 80% لاحقًا."
},
"strict-random": {
- "when": "Use when you want perfectly even spread — each model used once before repeating.",
- "avoid": "Avoid when models have different quality or latency and order matters.",
- "example": "Example: Multiple accounts of the same model to distribute usage evenly."
+ "when": "استخدمها عندما تريد توزيعًا متساويًا تمامًا؛ يُستخدم كل نموذج مرة واحدة قبل التكرار.",
+ "avoid": "تجنبها عندما تختلف جودة النماذج أو زمن استجابتها ويكون الترتيب مهمًا.",
+ "example": "مثال: عدة حسابات للنموذج نفسه لتوزيع الاستخدام بالتساوي."
},
"p2c": {
- "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.",
- "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.",
- "example": "Example: High-throughput inference across 4+ equivalent model endpoints."
+ "when": "استخدمها عندما تريد اختيارًا منخفض زمن الاستجابة باستخدام خوارزمية Power-of-Two-Choices.",
+ "avoid": "تجنبها للمجموعات الصغيرة التي تضم نموذجين أو أقل؛ فلن تتفوق على التوزيع الدوري.",
+ "example": "مثال: استدلال عالي الإنتاجية عبر أكثر من 4 نقاط نهاية لنماذج متكافئة."
},
"context-relay": {
- "when": "Use when long sessions must survive account rotation without losing the working context.",
- "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.",
- "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion."
+ "when": "استخدمها عندما يجب أن تستمر الجلسات الطويلة عبر تدوير الحسابات دون فقدان سياق العمل.",
+ "avoid": "تجنبها عندما يكون تبديل الحساب نادرًا أو لا تريد طلبات تلخيص إضافية.",
+ "example": "مثال: جلسات Codex التي تتناوب بين عدة حسابات عند اقتراب استنفاد الحصة."
},
"fill-first": {
"when": "استخدمه عندما تريد استنفاد حصة مزود الخدمة بالكامل قبل الانتقال إلى المزود التالي.",
"avoid": "تجنب ذلك عندما تحتاج إلى موازنة التحميل على مستوى الطلب عبر مقدمي الخدمة.",
- "example": "مثال: استخدم جميع أرصدة Deepgram بقيمة 200 دولار قبل العودة إلى Groq."
+ "example": "مثال: استخدم جميع أرصدة Deepgram 200 دولار قبل العودة إلى Groq."
},
"auto": {
"when": "استخدمه عندما تحتاج إلى توجيه تسجيل متعدد العوامل استنادًا إلى التكلفة وزمن الوصول والجودة.",
@@ -2400,167 +2400,167 @@
"retryDelay": "الانتظار الأولي بين المحاولات. القيم الأعلى تقلل من ضغط الاندفاع.",
"timeout": "الحد الأقصى لمدة الطلب قبل الإلغاء.",
"healthcheck": "يتخطى النماذج/مقدمي الخدمات غير الصحيين من قرارات التوجيه.",
- "concurrencyPerModel": "الحد الأقصى للطلبات المتزامنة المسموح بها لكل نموذج في جولة روبن.",
+ "concurrencyPerModel": "الحد الأقصى للطلبات المتزامنة المسموح بها لكل نموذج في التوزيع الدوري.",
"queueTimeout": "كم من الوقت يمكن أن ينتظر الطلب في قائمة الانتظار قبل انتهاء المهلة.",
- "failoverBeforeRetry": "عند التمكين، يؤدي أي خطأ في المنبع إلى تشغيل تجاوز الفشل الفوري إلى هدف التحرير والسرد التالي، وتخطي جميع المحاولات وعناوين URL الاحتياطية.",
- "maxSetRetries": "عدد مرات إعادة محاولة تحديد الهدف بالكامل عند فشل كل هدف. 0 = لا توجد إعادة محاولة على المستوى المحدد.",
- "setRetryDelayMs": "التأخير بين محاولات إعادة المحاولة على المستوى المحدد، مما يمنح المشكلات العابرة وقتًا لحلها."
+ "failoverBeforeRetry": "عند التمكين، يؤدي أي خطأ في المنبع إلى تبديل احتياطي فوري إلى الهدف التالي في المجموعة، مع تخطي جميع المحاولات وعناوين URL الاحتياطية.",
+ "maxSetRetries": "عدد مرات إعادة محاولة المجموعة كاملة بعد فشل جميع أهدافها. 0 = لا توجد إعادة محاولة على مستوى المجموعة.",
+ "setRetryDelayMs": "التأخير بين محاولات إعادة المجموعة، لإتاحة وقت لحل المشكلات العابرة."
},
"templatesTitle": "قوالب سريعة",
- "templatesDescription": "تطبيق ملف تعريف البدء، ثم ضبط النماذج والتكوين.",
- "templateApply": "قالب التطبيق",
+ "templatesDescription": "طبّق قالب بداية، ثم اضبط النماذج والإعدادات.",
+ "templateApply": "تطبيق القالب",
"templateHighAvailability": "الإتاحة العالية",
- "templateHighAvailabilityDesc": "أولوية التوجيه مع الفحوصات الصحية والمحاولات الآمنة.",
+ "templateHighAvailabilityDesc": "توجيه حسب الأولوية مع فحوصات السلامة وإعادة المحاولة الآمنة.",
"templateCostSaver": "موفر للتكاليف",
- "templateCostSaverDesc": "التوجيه الأمثل من حيث التكلفة لأعباء العمل ذات الميزانية الأولى.",
- "templateBalanced": "حمل موازن",
- "templateBalancedDesc": "التوجيه الأقل استخدامًا لنشر الطلب بمرور الوقت.",
- "usageGuideHide": "مخفي",
+ "templateCostSaverDesc": "توجيه محسّن للتكلفة لأحمال العمل ذات الميزانية المحدودة.",
+ "templateBalanced": "توازن الأحمال",
+ "templateBalancedDesc": "يوجّه إلى النموذج الأقل استخدامًا لتوزيع الطلبات بمرور الوقت.",
+ "usageGuideHide": "إخفاء",
"usageGuideDontShowAgain": "يرجى عدم العرض مرة أخرى",
- "usageGuideShow": "دليل البرنامج",
- "quickTestTitle": "التحرير والسرد جاهز للتحقق",
- "quickTestDescription": "قم بإجراء اختبار الآن لتأكيد سلوك التراجع والكمون.",
- "testNow": "\"اختبر الآن\"،",
+ "usageGuideShow": "عرض الدليل",
+ "quickTestTitle": "المجموعة جاهزة للاختبار",
+ "quickTestDescription": "شغّل اختبارًا الآن للتحقق من التبديل الاحتياطي وزمن الاستجابة.",
+ "testNow": "اختبر الآن",
"pricingCoverage": "تغطية التسعير",
- "pricingCoverageHint": "يعمل تحسين التكلفة بشكل أفضل عندما يكون لجميع طرازات التحرير والسرد أسعار.",
- "pricingAvailable": "التسعير متاح",
- "pricingMissing": "لا يوجد تسعير",
- "pricingAvailableShort": "غالي, عالي السعر",
- "pricingMissingShort": "رسم",
- "warningRoundRobinSingleModel": "يعتبر Round - robin أكثر فائدة مع طرازين على الأقل.",
+ "pricingCoverageHint": "يعمل تحسين التكلفة بشكل أفضل عند توفر أسعار لجميع نماذج المجموعة.",
+ "pricingAvailable": "الأسعار متوفرة",
+ "pricingMissing": "الأسعار غير متوفرة",
+ "pricingAvailableShort": "متوفر",
+ "pricingMissingShort": "مفقود",
+ "warningRoundRobinSingleModel": "يكون التوزيع الدوري أكثر فائدة مع نموذجين على الأقل.",
"warningCostOptimizedPartialPricing": "فقط {priced} من طرازات {total} لها أسعار. قد يكون التوجيه مدركًا جزئيًا للتكلفة.",
"warningCostOptimizedNoPricing": "لم يتم العثور على بيانات تسعير لهذه المجموعة. قد يتم توجيه التكلفة المحسّنة بشكل غير متوقع.",
- "filterAll": "All",
- "filterIntelligent": "Intelligent",
- "filterDeterministic": "Deterministic",
- "filterEmptyTitle": "No combos match this strategy filter.",
- "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.",
- "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.",
+ "filterAll": "الكل",
+ "filterIntelligent": "ذكي",
+ "filterDeterministic": "حتمي",
+ "filterEmptyTitle": "لا توجد مجموعات تطابق عامل تصفية الاستراتيجية هذا.",
+ "filterEmptyIntelligentDescription": "أنشئ مجموعة تلقائية أو LKGP لملء لوحة معلومات التوجيه الذكي.",
+ "filterEmptyDeterministicDescription": "لا توجد حاليًا إلا مجموعات تلقائية وLKGP. عُد إلى عرض الكل أو أنشئ مجموعة حتمية.",
"readinessTitle": "هل أنت مستعد للحفظ؟",
- "readinessDescription": "قم بمراجعة قائمة التحقق قبل إنشاء هذا التحرير والسرد أو تحديثه.",
- "readinessCheckName": "اسم التحرير والسرد صالح",
+ "readinessDescription": "راجع قائمة التحقق قبل إنشاء هذه المجموعة أو تحديثها.",
+ "readinessCheckName": "اسم المجموعة صالح",
"readinessCheckModels": "تم تحديد نموذج واحد على الأقل",
"readinessCheckWeights": "الإجمالي المرجح هو 100%",
"readinessCheckWeightsOptional": "قاعدة الوزن غير مطلوبة",
"readinessCheckPricing": "بيانات التسعير متاحة",
"readinessCheckPricingOptional": "قاعدة التسعير غير مطلوبة",
"saveBlockedTitle": "تم حظر الحفظ حتى يتم إصلاح العناصر التالية:",
- "saveBlockName": "تحديد اسم التحرير والسرد.",
+ "saveBlockName": "حدّد اسم المجموعة.",
"saveBlockModels": "أضف نموذجًا واحدًا على الأقل.",
"saveBlockWeighted": "اضبط الأوزان على 100% (الحالي: {total}%).",
"saveBlockPricing": "أضف أسعارًا لنموذج واحد على الأقل أو اختر استراتيجية مختلفة.",
- "recommendationsLabel": "Recommended setup",
- "applyRecommendations": "Apply recommendations",
- "recommendationsUpdated": "Recommendations updated for {strategy}.",
- "recommendationsApplied": "Recommendations applied to this combo.",
- "intelligentPanelTitle": "Intelligent Routing Dashboard",
- "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.",
- "configOnlyStatus": "__MISSING__:Configuration View",
- "configOnlyHint": "__MISSING__:This panel shows routing inputs only. Live breaker state is available on the Health page.",
- "routingInputs": "__MISSING__:Routing Inputs",
- "routingInputsHint": "__MISSING__:Mode pack and weighting stay here; breaker runtime state stays on the Health page.",
- "emailVisibilityHint": "__MISSING__:Account emails here follow the global privacy toggle.",
- "emailVisibilityTooltip": "__MISSING__:Use the eye icon to reveal or hide account emails globally across combos, providers and quota screens.",
- "manualModel": "__MISSING__:Manual model",
- "manualModelInvalid": "__MISSING__:Enter a model as provider/model.",
- "manualModelUnknownProvider": "__MISSING__:Unknown provider prefix.",
- "builderDynamicAccountShort": "__MISSING__:Dynamic account",
- "builderNeedValidName": "__MISSING__:Define a valid combo name before continuing.",
- "statusOverview": "Status Overview",
- "normalOperation": "Normal Operation",
- "allProvidersHealthy": "Providers are reporting healthy routing conditions.",
- "incidentMode": "Incident Mode",
- "highCircuitBreakerRate": "High circuit breaker trip rate detected.",
- "activeModePack": "Active Mode Pack",
- "modePackUpdated": "Mode pack updated to {pack}.",
- "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.",
- "providerScores": "Provider Scores",
- "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.",
- "excludedProviders": "Excluded Providers",
- "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.",
- "noExcludedProviders": "No providers are currently excluded.",
- "cooldownMinutes": "Cooldown: {minutes}m",
- "builderIntelligentTitle": "Intelligent Routing Configuration",
- "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.",
- "candidatePoolLabel": "Candidate Pool",
- "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.",
- "candidatePoolEmpty": "No active providers available yet.",
- "candidatePoolAllProviders": "All providers",
- "modePackLabel": "Mode Pack",
- "routerStrategyLabel": "Router Strategy",
- "strategyRules": "Rules (6-Factor Scoring)",
- "explorationRateLabel": "Exploration Rate",
- "explorationRateHint": "{percent}% of requests can explore non-optimal providers.",
- "budgetCapLabel": "Budget Cap (USD / request)",
- "budgetCapPlaceholder": "No limit",
- "advancedWeightsTitle": "Advanced: Scoring Weights",
- "weightQuota": "Quota",
- "weightHealth": "Health",
- "weightCostInv": "Cost",
- "weightLatencyInv": "Latency",
- "weightTaskFit": "Task Fit",
- "weightStability": "Stability",
- "weightTierPriority": "Tier",
- "reviewIntelligentTitle": "Intelligent Routing Config",
+ "recommendationsLabel": "الإعداد الموصى به",
+ "applyRecommendations": "تطبيق التوصيات",
+ "recommendationsUpdated": "تم تحديث التوصيات لـ {strategy}.",
+ "recommendationsApplied": "طُبّقت التوصيات على هذه المجموعة.",
+ "intelligentPanelTitle": "لوحة معلومات التوجيه الذكي",
+ "intelligentPanelDesc": "النتائج الفورية والحالة الصحية لمجموعة التوجيه التلقائي هذه.",
+ "configOnlyStatus": "عرض التكوين",
+ "configOnlyHint": "تعرض هذه اللوحة مدخلات التوجيه فقط. تتوفر حالة قاطع الدائرة المباشرة في صفحة الصحة.",
+ "routingInputs": "مدخلات التوجيه",
+ "routingInputsHint": "تبقى حزمة الوضع والترجيح هنا، وتبقى حالة قاطع الدائرة وقت التشغيل في صفحة الصحة.",
+ "emailVisibilityHint": "يتبع عرض البريد الإلكتروني للحساب هنا إعداد الخصوصية العام.",
+ "emailVisibilityTooltip": "استخدم رمز العين لإظهار رسائل البريد الإلكتروني للحسابات أو إخفائها في جميع شاشات المجموعات والمزودين والحصص.",
+ "manualModel": "نموذج يدوي",
+ "manualModelInvalid": "أدخل النموذج بالصيغة provider/model.",
+ "manualModelUnknownProvider": "بادئة المزود غير معروفة.",
+ "builderDynamicAccountShort": "حساب ديناميكي",
+ "builderNeedValidName": "حدّد اسمًا صالحًا للمجموعة قبل المتابعة.",
+ "statusOverview": "نظرة عامة على الحالة",
+ "normalOperation": "تشغيل طبيعي",
+ "allProvidersHealthy": "يفيد المزوّدون بأن ظروف التوجيه سليمة.",
+ "incidentMode": "وضع الحوادث",
+ "highCircuitBreakerRate": "اكتُشف معدل مرتفع لتفعيل قاطع الدائرة.",
+ "activeModePack": "حزمة الوضع النشطة",
+ "modePackUpdated": "تم تحديث حزمة الوضع إلى {pack}.",
+ "modePackHint": "بدّل الإعدادات المسبقة لتوجيه محرك التوجيه دون إعادة بناء المجموعة.",
+ "providerScores": "درجات المزوّدين",
+ "allProvidersEvaluated": "لم تُحدد مجموعة مرشحين؛ سيُقيّم جميع المزوّدين النشطين في وقت التشغيل.",
+ "excludedProviders": "المزوّدون المستبعدون",
+ "excludedProvidersHint": "يُستبعد مؤقتًا من التوجيه المزوّدون الذين لديهم قاطع دائرة مفتوح.",
+ "noExcludedProviders": "لا يوجد مزوّدون مستبعدون حاليًا.",
+ "cooldownMinutes": "فترة التهدئة: {minutes}m",
+ "builderIntelligentTitle": "تكوين التوجيه الذكي",
+ "builderIntelligentDesc": "كوّن محرك التقييم متعدد العوامل لمجموعة التوجيه التلقائي هذه.",
+ "candidatePoolLabel": "مجموعة المرشحين",
+ "candidatePoolHint": "اختر المزوّدين الذين سيقيّمهم المحرك. اترك الحقل فارغًا لاستخدام جميع المزوّدين النشطين.",
+ "candidatePoolEmpty": "لا يتوفر مزوّدون نشطون حتى الآن.",
+ "candidatePoolAllProviders": "جميع المزوّدين",
+ "modePackLabel": "حزمة الوضع",
+ "routerStrategyLabel": "استراتيجية التوجيه",
+ "strategyRules": "قواعد التقييم (6 عوامل)",
+ "explorationRateLabel": "معدل الاستكشاف",
+ "explorationRateHint": "{percent}٪ من الطلبات يمكن أن تستكشف موفري الخدمات غير الأمثل.",
+ "budgetCapLabel": "سقف الميزانية (دولار أمريكي / طلب)",
+ "budgetCapPlaceholder": "بلا حد",
+ "advancedWeightsTitle": "متقدم: أوزان التقييم",
+ "weightQuota": "الحصة",
+ "weightHealth": "الصحة",
+ "weightCostInv": "التكلفة",
+ "weightLatencyInv": "الكمون",
+ "weightTaskFit": "تناسب المهمة",
+ "weightStability": "الاستقرار",
+ "weightTierPriority": "الطبقة",
+ "reviewIntelligentTitle": "تكوين التوجيه الذكي",
"strategyRecommendations": {
"priority": {
- "title": "Fail-safe baseline",
- "description": "Use one primary model and keep fallback chain short and reliable.",
- "tip1": "Put your most reliable model first.",
- "tip2": "Keep 1-2 backup models with similar quality.",
- "tip3": "Use safe retries to absorb transient provider failures."
+ "title": "خط أساس آمن من الفشل",
+ "description": "استخدم نموذجًا أساسيًا واحدًا واجعل السلسلة الاحتياطية قصيرة وموثوقة.",
+ "tip1": "ضع النموذج الأكثر موثوقية لديك أولاً.",
+ "tip2": "احتفظ بنموذج أو نموذجين احتياطيين بجودة مماثلة.",
+ "tip3": "استخدم عمليات إعادة المحاولة الآمنة لاستيعاب حالات فشل الموفر العابر."
},
"weighted": {
- "title": "Controlled traffic split",
- "description": "Great for canary rollouts and gradual migration between models.",
- "tip1": "Start with conservative split like 90/10.",
- "tip2": "Keep the total at 100% and auto-balance after changes.",
- "tip3": "Monitor success and latency before increasing canary weight."
+ "title": "تقسيم متحكم به لحركة المرور",
+ "description": "مناسب لعمليات الطرح التجريبي والانتقال التدريجي بين النماذج.",
+ "tip1": "ابدأ بتقسيم محافظ مثل 90/10.",
+ "tip2": "حافظ على الإجمالي عند 100% وقم بالموازنة التلقائية بعد التغييرات.",
+ "tip3": "راقب النجاح وزمن الاستجابة قبل زيادة وزن النموذج التجريبي."
},
"round-robin": {
- "title": "Predictable load sharing",
- "description": "Best when models are equivalent and you need smooth distribution.",
- "tip1": "Use at least 2 models.",
- "tip2": "Set concurrency limits to avoid burst overload.",
- "tip3": "Use queue timeout to fail fast under saturation."
+ "title": "مشاركة متوقعة للحمل",
+ "description": "الأفضل عندما تكون النماذج متكافئة وتحتاج إلى توزيع سلس.",
+ "tip1": "استخدم نموذجين على الأقل.",
+ "tip2": "عيّن حدود التزامن لتجنب الحمل الزائد المفاجئ.",
+ "tip3": "استخدم مهلة قائمة الانتظار للفشل سريعًا عند التشبع."
},
"random": {
- "title": "Quick spread with low setup",
- "description": "Use when you need simple distribution without strict guarantees.",
- "tip1": "Use models with similar latency profiles.",
- "tip2": "Keep retries enabled to absorb random misses.",
- "tip3": "Prefer this for experimentation, not strict SLAs."
+ "title": "توزيع سريع بإعداد بسيط",
+ "description": "استخدمه عندما تحتاج إلى توزيع بسيط دون ضمانات صارمة.",
+ "tip1": "استخدم نماذج ذات أنماط زمن استجابة متشابهة.",
+ "tip2": "أبقِ إعادة المحاولة ممكّنة للتعامل مع الإخفاقات العشوائية.",
+ "tip3": "فضّله للتجربة، لا لاتفاقيات مستوى الخدمة الصارمة."
},
"least-used": {
- "title": "Adaptive balancing",
- "description": "Routes to less-used models to reduce hotspots over time.",
- "tip1": "Works better under continuous traffic.",
- "tip2": "Combine with health checks for safer balancing.",
- "tip3": "Track per-model usage to validate distribution gains."
+ "title": "موازنة تكيفية",
+ "description": "يوجّه إلى النماذج الأقل استخدامًا لتقليل نقاط الاختناق بمرور الوقت.",
+ "tip1": "يعمل بشكل أفضل مع حركة المرور المستمرة.",
+ "tip2": "ادمجه مع فحوصات الصحة لموازنة أكثر أمانًا.",
+ "tip3": "تتبّع الاستخدام لكل نموذج للتحقق من مكاسب التوزيع."
},
"cost-optimized": {
- "title": "Budget-first routing",
- "description": "Routes to lower-cost models when pricing metadata is available.",
- "tip1": "Ensure pricing coverage for all selected models.",
- "tip2": "Keep a quality fallback for hard prompts.",
- "tip3": "Use for batch/background jobs where cost is the main KPI."
+ "title": "التوجيه وفق الميزانية أولًا",
+ "description": "يوجّه إلى النماذج الأقل تكلفة عند توفر بيانات التسعير.",
+ "tip1": "تأكد من تغطية أسعار جميع النماذج المحددة.",
+ "tip2": "احتفظ بخيار احتياطي عالي الجودة للمطالبات الصعبة.",
+ "tip3": "استخدمه للمهام الدفعية أو الخلفية عندما تكون التكلفة مؤشر الأداء الرئيسي."
},
"reset-aware": {
- "title": "إعادة تعيين دوران الحساب",
+ "title": "تدوير الحساب وفق إعادة التعيين",
"description": "يوازن حصة الموفر المتبقية مقابل توقيت إعادة التعيين.",
"tip1": "استخدم خطوات حساب واضحة أو توجيه علامة الحساب لموفري الخدمة الذين لديهم قياس الحصص عن بعد.",
"tip2": "قم بضبط الجلسة مقابل الأوزان الأسبوعية عندما يكون الإرهاق قصير المدى أكثر خطورة.",
- "tip3": "أبقِ رباط العنق صغيرًا حتى تظل الحسابات المكافئة تدور بشكل عادل."
+ "tip3": "أبقِ هامش التعادل صغيرًا لتدور الحسابات المتكافئة بعدل."
},
"strict-random": {
- "title": "Shuffle deck distribution",
- "description": "Each model is used exactly once per cycle before reshuffling.",
- "tip1": "Use at least 2 models for meaningful distribution.",
- "tip2": "Works best with equivalent-performance models.",
- "tip3": "Ideal for load balancing across multiple API accounts."
+ "title": "توزيع بالخلط دون تكرار",
+ "description": "يُستخدم كل نموذج مرة واحدة بالضبط في كل دورة قبل إعادة الخلط.",
+ "tip1": "استخدم نموذجين على الأقل لتحقيق توزيع مفيد.",
+ "tip2": "يعمل بشكل أفضل مع نماذج متكافئة الأداء.",
+ "tip3": "مثالي لموازنة الحمل عبر عدة حسابات API."
},
"fill-first": {
- "description": "حصص مزود العادم بالتسلسل قبل التراجع.",
+ "description": "استنفاد حصص المزوّد بالتسلسل قبل التراجع.",
"tip1": "يُستخدم للتوجيه المستند إلى الحصص مع سلاسل احتياطية واضحة.",
"tip2": "قم بتعيين الحصص بدقة لتجنب التراجع المبكر.",
"tip3": "يعمل بشكل أفضل مع مقدمي الخدمات الذين يقدمون طبقات مجانية أو مجموعات ائتمانية.",
@@ -2602,115 +2602,115 @@
"title": "قوة الاختيارين"
}
},
- "templateFreeStack": "Free Stack ($0)",
- "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.",
- "auto": "Auto Combo",
- "autoDesc": "Self-healing smart routing pool (Performance optimized)",
- "lkgp": "LKGP Mode",
- "lkgpDesc": "Last Known Good Provider (Predictable resilience)",
- "wizardGuideTitle": "Getting Started with Combos",
- "wizardGuideDesc": "Create model combos to route AI traffic intelligently",
- "wizardGuideHint": "or click + Create Combo above",
- "createFirstCombo": "Create Your First Combo",
- "wizardStep1Title": "Name Your Combo",
- "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules",
- "wizardStep2Title": "Add Models",
- "wizardStep2Desc": "Select AI models and arrange their fallback priority order",
- "wizardStep3Title": "Choose Strategy",
- "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available",
- "wizardStep4Title": "Review & Save",
- "wizardStep4Desc": "Review your configuration and activate the combo",
- "emailVisibilityStateOn": "On",
- "emailVisibilityStateOff": "Off",
- "reorderHandle": "Drag to reorder",
- "failedReorder": "Failed to reorder models",
- "builderFlowTitle": "Combo Builder Flow",
+ "templateFreeStack": "مكدس مجاني ($0)",
+ "templateFreeStackDesc": "توزيع دوري عبر جميع المزودين المجانيين: Kiro (Claude) وQoder (5 نماذج) وQwen (4 نماذج). بلا تكلفة ولا توقف عن البرمجة.",
+ "auto": "مجموعة تلقائية",
+ "autoDesc": "مجموعة توجيه ذكية ذاتية الإصلاح (محسّنة للأداء)",
+ "lkgp": "وضع LKGP",
+ "lkgpDesc": "آخر مزود معروف بسلامته (مرونة متوقعة)",
+ "wizardGuideTitle": "بدء استخدام المجموعات",
+ "wizardGuideDesc": "أنشئ مجموعات نماذج لتوجيه حركة الذكاء الاصطناعي بذكاء",
+ "wizardGuideHint": "أو انقر على + إنشاء مجموعة أعلاه",
+ "createFirstCombo": "إنشاء مجموعتك الأولى",
+ "wizardStep1Title": "تسمية المجموعة",
+ "wizardStep1Desc": "امنح مجموعتك اسمًا فريدًا لتمييزها في قواعد التوجيه",
+ "wizardStep2Title": "إضافة النماذج",
+ "wizardStep2Desc": "حدّد نماذج الذكاء الاصطناعي ورتّب أولوية التبديل الاحتياطي بينها",
+ "wizardStep3Title": "اختيار الاستراتيجية",
+ "wizardStep3Desc": "اختر كيفية توزيع الطلبات على نماذجك؛ تتوفر 13 استراتيجية",
+ "wizardStep4Title": "المراجعة والحفظ",
+ "wizardStep4Desc": "راجع التكوين وفعّل المجموعة",
+ "emailVisibilityStateOn": "تشغيل",
+ "emailVisibilityStateOff": "إيقاف",
+ "reorderHandle": "اسحب لإعادة الترتيب",
+ "failedReorder": "فشل إعادة ترتيب النماذج",
+ "builderFlowTitle": "مراحل إنشاء المجموعة",
"builderStage": {
"basics": {
- "label": "Basics",
- "description": "Name and starting template"
+ "label": "الأساسيات",
+ "description": "الاسم ونموذج البداية"
},
"steps": {
- "label": "Steps",
- "description": "Provider, model, and account selection"
+ "label": "خطوات",
+ "description": "اختيار الموفر والنموذج والحساب"
},
"strategy": {
- "label": "Strategy",
- "description": "Routing behavior and advanced settings"
+ "label": "استراتيجية",
+ "description": "سلوك التوجيه والإعدادات المتقدمة"
},
"intelligent": {
- "label": "Smart Routing",
- "description": "Auto-routing candidate pool, presets, and scoring"
+ "label": "التوجيه الذكي",
+ "description": "التوجيه التلقائي لتجمع المرشحين، والإعدادات المسبقة، والتسجيل"
},
"review": {
- "label": "Review",
- "description": "Final validation before saving"
+ "label": "مراجعة",
+ "description": "التحقق النهائي قبل الحفظ"
}
},
- "builderStageVisited": "Stage completed",
- "builderStageCurrent": "Current stage",
- "builderStagePending": "Pending",
- "builderStageLocked": "Locked — complete previous stage first",
- "builderTitle": "Build a Combo",
- "builderBrowseCatalog": "Browse catalog",
- "builderProvider": "Provider",
- "builderLoadingProviders": "Loading providers...",
- "builderSelectProvider": "Select provider",
- "builderModel": "Model",
- "builderSelectModel": "Select model",
- "builderProviderFirst": "Pick provider first",
- "builderAccount": "Account",
- "builderPreview": "Preview",
- "builderAddStep": "Add step",
- "builderDuplicateExact": "هذه الخطوة الدقيقة للموفر/النموذج/الحساب موجودة بالفعل في التحرير والسرد.",
- "builderComboRef": "Combo Ref",
- "builderAddComboRef": "Add combo reference",
- "builderComboRefStep": "Add combo reference",
- "builderPinnedAccount": "Pinned Account",
- "builderLegacyEntry": "Legacy entry",
- "reviewName": "Name",
- "reviewStrategy": "Strategy",
- "reviewSteps": "Steps",
- "reviewAccounts": "Accounts",
- "reviewProviders": "Providers",
- "reviewComboRefs": "Combo References",
- "reviewAdvanced": "Advanced Settings",
- "reviewAgentFlags": "Agent Flags",
- "reviewSequence": "Model Sequence",
- "reviewNoSteps": "No steps configured",
- "builderStagesDescription": "أكمل كل مرحلة من أجل تحديد المجموعات وبناء الخطوات وتحديد استراتيجية التوجيه ومراجعة النتائج.",
- "builderStepsDescription": "أنشئ كل خطوة من خطوات التحرير والسرد بالترتيب: الموفر، ثم النموذج، ثم الحساب. وهذا يسمح بإعادة استخدام نفس الموفر والنموذج عبر حسابات مختلفة.",
- "selectProvider": "حدد الموفر",
- "selectProviderPlaceholder": "حدد مزودًا",
- "selectModel": "حدد النموذج",
- "selectModelPlaceholder": "حدد مزودًا أولاً",
- "selectAccount": "حدد الحساب",
- "selectComboToReference": "حدد التحرير والسرد للرجوع إليها",
- "comboReference": "مرجع التحرير والسرد",
- "addComboReference": "إضافة مرجع التحرير والسرد",
+ "builderStageVisited": "اكتملت المرحلة",
+ "builderStageCurrent": "المرحلة الحالية",
+ "builderStagePending": "في انتظار",
+ "builderStageLocked": "مقفل — أكمل المرحلة السابقة أولاً",
+ "builderTitle": "إنشاء مجموعة",
+ "builderBrowseCatalog": "تصفح الدليل",
+ "builderProvider": "المزود",
+ "builderLoadingProviders": "جارٍ تحميل المزوّدين...",
+ "builderSelectProvider": "اختر المزود",
+ "builderModel": "النموذج",
+ "builderSelectModel": "اختر النموذج",
+ "builderProviderFirst": "اختر المزود أولًا",
+ "builderAccount": "الحساب",
+ "builderPreview": "معاينة",
+ "builderAddStep": "إضافة خطوة",
+ "builderDuplicateExact": "هذه الخطوة نفسها للمزوّد والنموذج والحساب موجودة بالفعل في المجموعة.",
+ "builderComboRef": "مرجع المجموعة",
+ "builderAddComboRef": "إضافة مرجع مجموعة",
+ "builderComboRefStep": "إضافة مرجع مجموعة",
+ "builderPinnedAccount": "الحساب المثبّت",
+ "builderLegacyEntry": "إدخال قديم",
+ "reviewName": "الاسم",
+ "reviewStrategy": "الاستراتيجية",
+ "reviewSteps": "الخطوات",
+ "reviewAccounts": "الحسابات",
+ "reviewProviders": "المزودون",
+ "reviewComboRefs": "مراجع المجموعات",
+ "reviewAdvanced": "الإعدادات المتقدمة",
+ "reviewAgentFlags": "خيارات الوكيل",
+ "reviewSequence": "تسلسل النماذج",
+ "reviewNoSteps": "لم يتم تكوين أي خطوات",
+ "builderStagesDescription": "أكمل المراحل لتسمية المجموعة وبناء خطواتها واختيار استراتيجية التوجيه ومراجعة النتيجة.",
+ "builderStepsDescription": "أنشئ خطوات المجموعة بالترتيب: المزوّد، ثم النموذج، ثم الحساب. يتيح ذلك إعادة استخدام المزوّد والنموذج نفسيهما عبر حسابات مختلفة.",
+ "selectProvider": "اختر المزوّد",
+ "selectProviderPlaceholder": "اختر مزوّدًا",
+ "selectModel": "اختر النموذج",
+ "selectModelPlaceholder": "اختر مزوّدًا أولًا",
+ "selectAccount": "اختر الحساب",
+ "selectComboToReference": "اختر المجموعة المراد الرجوع إليها",
+ "comboReference": "مرجع المجموعة",
+ "addComboReference": "إضافة مرجع للمجموعة",
"addStepBeforeContinue": "يرجى إضافة خطوة واحدة على الأقل قبل الانتقال إلى المرحلة التالية.",
"previewNextStep": "معاينة الخطوة التالية",
- "autoSelectAccount": "تحديد الحساب تلقائيًا في وقت التشغيل",
+ "autoSelectAccount": "اختيار الحساب تلقائيًا في وقت التشغيل",
"modePackBalanced": "متوازن",
"modePackBudget": "الميزانية",
"modePackPerformance": "الأداء",
"modePackCustom": "مخصص",
- "browseLegacyCatalog": "تصفح كتالوج التحرير والسرد القديم",
- "agentFeaturesTitle": "مميزات الوكيل",
- "agentFeaturesDescription": "تمكين الميزات المتقدمة للوكلاء الذين يستخدمون هذا التحرير والسرد",
+ "browseLegacyCatalog": "تصفح دليل المجموعات القديم",
+ "agentFeaturesTitle": "ميزات الوكيل",
+ "agentFeaturesDescription": "تمكين الميزات المتقدمة للوكلاء الذين يستخدمون هذه المجموعة",
"agentFeaturesSystemMessageOverride": "تجاوز رسالة النظام",
- "agentFeaturesSystemMessagePlaceholder": "أنت مساعد خبير..",
- "agentFeaturesSystemMessageHint": "تجاوز رسالة النظام للوكلاء",
- "agentFeaturesToolFilterRegex": "/نمط التعبير العادي/",
- "agentFeaturesToolFilterHint": "التعبير العادي لمرشح الأداة للوكلاء",
- "agentFeaturesContextCacheHint": "تمكين ذاكرة التخزين المؤقت في السياق لأدوات الوكيل",
- "agentFeaturesContextCacheProtection": "حماية ذاكرة التخزين المؤقت من طفرات أداة الوكيل",
+ "agentFeaturesSystemMessagePlaceholder": "أنت مساعد خبير...",
+ "agentFeaturesSystemMessageHint": "تخصيص رسالة النظام للوكلاء",
+ "agentFeaturesToolFilterRegex": "/نمط regex/",
+ "agentFeaturesToolFilterHint": "نمط regex لتصفية أدوات الوكلاء",
+ "agentFeaturesContextCacheHint": "تمكين التخزين المؤقت للسياق لأدوات الوكيل",
+ "agentFeaturesContextCacheProtection": "حماية التخزين المؤقت للسياق من طفرات استدعاءات الأدوات",
"agentFeaturesContextLength": "طول السياق",
"agentFeaturesContextLengthPlaceholder": "على سبيل المثال 128000",
- "agentFeaturesContextLengthHint": "يحدد نافذة السياق لهذا التحرير والسرد في /v1/models.",
+ "agentFeaturesContextLengthHint": "يحدد نافذة السياق لهذه المجموعة في /v1/models.",
"agentFeaturesContextLengthErrorInteger": "يجب أن يكون طول السياق عددًا صحيحًا صالحًا",
"agentFeaturesContextLengthErrorRange": "يجب أن يتراوح طول السياق بين 1000 و2000000",
- "compressionOverride": "تجاوز الضغط",
+ "compressionOverride": "تخصيص الضغط",
"modePack": "حزمة الوضع"
},
"costs": {
@@ -2726,26 +2726,26 @@
"range7d": "7 أيام",
"range30d": "30 يوما",
"range90d": "90 يوما",
- "range180d": "180 Days",
- "range365d": "365 Days",
+ "range180d": "180 يوما",
+ "range365d": "365 يوما",
"rangeAll": "كل الوقت",
- "spend30d": "Spend30D",
- "activeModels": "Active Models",
- "selectedWindow": "Selected Window",
- "activeProviders": "Active Providers",
- "overviewTitle": "Overview Title",
- "spend7d": "Spend7D",
- "avgCostPerRequest": "Avg Cost Per Request",
- "noCostDataDescription": "No Cost Data Description",
- "spendToday": "Spend Today",
- "overviewLoadFailed": "Overview Load Failed",
- "overviewDescription": "Overview Description",
- "providerShare": "Provider Share",
- "topProviders": "Top Providers",
- "costTrend": "Cost Trend",
- "noCostDataTitle": "No Cost Data Title",
- "topModels": "Top Models",
- "requestsInWindow": "Requests In Window",
+ "spend30d": "أنفق30 د",
+ "activeModels": "نماذج نشطة",
+ "selectedWindow": "النافذة المحددة",
+ "activeProviders": "مقدمو الخدمات النشطون",
+ "overviewTitle": "عنوان نظرة عامة",
+ "spend7d": "أنفق7D",
+ "avgCostPerRequest": "متوسط التكلفة لكل طلب",
+ "noCostDataDescription": "لا يوجد وصف لبيانات التكلفة",
+ "spendToday": "أنفق اليوم",
+ "overviewLoadFailed": "فشل تحميل النظرة العامة",
+ "overviewDescription": "وصف نظرة عامة",
+ "providerShare": "مشاركة المزود",
+ "topProviders": "كبار مقدمي الخدمات",
+ "costTrend": "اتجاه التكلفة",
+ "noCostDataTitle": "لا يوجد عنوان لبيانات التكلفة",
+ "topModels": "أعلى النماذج",
+ "requestsInWindow": "الطلبات في النافذة",
"tokenUsage": "استخدام الرمز المميز",
"totalTokens": "مجموع الرموز",
"inputTokens": "رموز الإدخال",
@@ -2778,7 +2778,7 @@
"currentPeriod": "النصف الحالي",
"exportCSV": "تصدير كملف CSV",
"exportJSON": "تصدير كـ JSON",
- "legacyFreeLabel": "__MISSING__:Legacy / Free",
+ "legacyFreeLabel": "تراث / مجاني",
"costExplorerTitle": "مستكشف التكاليف",
"costExplorerDescription": "استكشف الإنفاق حسب المزوّد أو النموذج أو مفتاح API أو الحساب أو مستوى الخدمة.",
"groupProvider": "المزوّد",
@@ -2786,14 +2786,14 @@
"groupApiKey": "مفتاح API",
"groupAccount": "الحساب",
"groupServiceTier": "مستوى الخدمة",
- "serviceTierFast": "__MISSING__:Fast",
- "serviceTierFlex": "__MISSING__:Flex",
- "serviceTierStandard": "__MISSING__:Standard",
- "serviceTierBreakdownTitle": "__MISSING__:Service Tier",
- "serviceTierBreakdownSubtitle": "__MISSING__:Fast / Flex / Standard split",
- "serviceTierUsageSaved": "__MISSING__:usage saved",
- "serviceTierCostSaved": "__MISSING__:saved",
- "serviceTierCostShareSuffix": "__MISSING__:of cost",
+ "serviceTierFast": "سريع",
+ "serviceTierFlex": "فليكس",
+ "serviceTierStandard": "قياسي",
+ "serviceTierBreakdownTitle": "طبقة الخدمة",
+ "serviceTierBreakdownSubtitle": "تقسيم سريع / مرن / قياسي",
+ "serviceTierUsageSaved": "تم حفظ الاستخدام",
+ "serviceTierCostSaved": "تم الحفظ",
+ "serviceTierCostShareSuffix": "من التكلفة",
"dimension": "البعد",
"share": "الحصة",
"legacyOrFree": "قديم / مجاني",
@@ -2807,7 +2807,7 @@
"endpoint": {
"title": "نقطة نهاية واجهة برمجة التطبيقات",
"available": "نقاط النهاية المتاحة",
- "cloudProxy": "الوكيل السحابي",
+ "cloudProxy": "بروكسي السحابي",
"disableConfirm": "هل أنت متأكد أنك تريد تعطيل الوكيل السحابي؟",
"baseUrl": "عنوان URL الأساسي",
"apiKeyLabel": "مفتاح واجهة برمجة التطبيقات",
@@ -2815,13 +2815,13 @@
"chatCompletions": "استكمالات الدردشة",
"responses": "الردود",
"listModels": "نماذج القائمة",
- "usingCloudProxy": "باستخدام وكيل السحابة",
+ "usingCloudProxy": "باستخدام بروكسي السحابة",
"usingLocalServer": "باستخدام الخادم المحلي",
"machineId": "معرف الجهاز: {id}...",
"disableCloud": "تعطيل السحابة",
"enableCloud": "تمكين السحابة",
"modelsAcrossEndpoints": "نماذج {models} عبر نقاط النهاية {endpoints}",
- "loadingModels": "Loading available models...",
+ "loadingModels": "جارٍ تحميل النماذج المتوفرة...",
"chatDesc": "الدردشة المتدفقة وغير المتدفقة مع جميع مقدمي الخدمة",
"embeddings": "التضمين",
"embeddingsDesc": "تضمينات نصية للبحث وخطوط أنابيب RAG",
@@ -2833,22 +2833,22 @@
"audioTranscriptionDesc": "نسخ الملفات الصوتية إلى نص (Whisper)",
"textToSpeech": "تحويل النص إلى كلام",
"textToSpeechDesc": "تحويل النص إلى كلام يبدو طبيعيا",
- "musicGeneration": "Music Generation",
- "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)",
- "moderations": "الاعتدالات",
+ "musicGeneration": "توليد الموسيقى",
+ "musicDesc": "إنشاء موسيقى ومسارات صوتية عبر ComfyUI (Stable Audio وMusicGen)",
+ "moderations": "الإشراف على المحتوى",
"moderationsDesc": "الإشراف على المحتوى وتصنيف السلامة",
- "responsesDesc": "واجهة Responses من OpenAI لـ Codex وسير العمل الوكيلية المتقدمة",
- "listModelsDesc": "قائمة جميع النماذج المتاحة عبر جميع المزودين المتصلين",
- "settingsApiDesc": "قراءة وتعديل إعدادات OmniRoute عبر API",
- "settingsApi": "Settings API",
+ "responsesDesc": "واجهة Responses من OpenAI لـ Codex وسير عمل الوكلاء المتقدم",
+ "listModelsDesc": "عرض جميع النماذج المتاحة عبر المزودين المتصلين",
+ "settingsApiDesc": "قراءة إعدادات OmniRoute وتعديلها عبر API",
+ "settingsApi": "واجهة API للإعدادات",
"categoryCore": "واجهات API الأساسية",
- "categoryMedia": "الوسائط والمتعدد الوسائط",
- "categorySearch": "Search & Discovery",
- "categoryUtility": "أدوات فرعية وإدارة",
- "webSearch": "Web Search",
- "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching",
- "searchProvider": "Search Provider",
- "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.",
+ "categoryMedia": "الوسائط المتعددة",
+ "categorySearch": "البحث والاكتشاف",
+ "categoryUtility": "الأدوات والإدارة",
+ "webSearch": "بحث الويب",
+ "webSearchDesc": "بحث موحد على الويب عبر عدة مزودين مع تجاوز تلقائي للفشل وتخزين مؤقت",
+ "searchProvider": "مزود البحث",
+ "searchProviderDesc": "يُستخدم هذا المزود للبحث على الويب عبر POST /v1/search. لا يلزم تكوين نموذج؛ يصبح مزودو البحث جاهزين للاستخدام بمجرد توصيل مفتاح API.",
"enableCloudTitle": "تمكين الوكيل السحابي",
"whatYouGet": "ما سوف تحصل عليه",
"cloudBenefitAccess": "الوصول إلى API الخاص بك من أي مكان في العالم",
@@ -2856,7 +2856,7 @@
"cloudBenefitPorts": "لا حاجة لفتح المنافذ أو تكوين جدار الحماية",
"cloudBenefitEdge": "شبكة حافة عالمية سريعة",
"cloudSessionNote": "ستحتفظ السحابة بجلسة المصادقة الخاصة بك لمدة يوم واحد. إذا لم يتم استخدامه، سيتم حذفه تلقائيا.",
- "cloudUnstableNote": "السحابة غير مستقرة حاليًا مع Claude Code OAuth في بعض الحالات.",
+ "cloudUnstableNote": "قد يكون اتصال Claude Code OAuth عبر السحابة غير مستقر حاليًا في بعض الحالات.",
"cloudConnected": "الوكيل السحابي متصل!",
"connectingToCloud": "جارٍ الاتصال بالسحابة...",
"verifyingConnection": "جارٍ التحقق من الاتصال...",
@@ -2869,7 +2869,7 @@
"disablingCloud": "جارٍ تعطيل السحابة...",
"syncing": "جارٍ المزامنة...",
"disabling": "جارٍ التعطيل...",
- "cloudConnectedVerified": "تم توصيل Cloud Proxy والتحقق منه!",
+ "cloudConnectedVerified": "تم الاتصال بالوكيل السحابي والتحقق منه!",
"connectedVerificationPending": "متصل - التحقق معلق",
"connectedVerificationPendingWithError": "متصل — التحقق معلق: {error}",
"cloudDisabledSuccess": "تم تعطيل السحابة بنجاح",
@@ -2878,35 +2878,35 @@
"failedEnable": "فشل في تمكين السحابة",
"cloudRequestTimeout": "انتهت مهلة الطلب السحابي",
"cloudRequestFailed": "فشل طلب السحابة",
- "cloudWorkerUnreachable": "لا يمكن الوصول إلى عامل السحابة. تأكد من تشغيل الخدمة السحابية (npm run dev in /cloud).",
+ "cloudWorkerUnreachable": "لا يمكن الوصول إلى عامل السحابة. تأكد من تشغيل الخدمة السحابية (`npm run dev` داخل `/cloud`).",
"connectionFailed": "فشل الاتصال",
"syncFailed": "فشلت مزامنة البيانات السحابية",
- "cloudflaredTitle": "Cloudflare Quick Tunnel",
- "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.",
- "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.",
- "cloudflaredEnable": "Enable Tunnel",
- "cloudflaredInstallAndEnable": "Install & Enable",
- "cloudflaredDisable": "Stop Tunnel",
- "cloudflaredRunning": "Running",
- "cloudflaredStarting": "Starting",
- "cloudflaredStoppedState": "Stopped",
- "cloudflaredNotInstalled": "Not installed",
- "cloudflaredUnsupported": "Unsupported",
- "cloudflaredError": "Error",
- "cloudflaredStarted": "Cloudflare tunnel started",
- "cloudflaredStopped": "Cloudflare tunnel stopped",
- "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel",
- "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.",
- "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.",
- "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.",
- "cloudflaredLastError": "Last error: {error}",
+ "cloudflaredTitle": "نفق Cloudflare السريع",
+ "cloudflaredDescription": "أنشئ نفق Cloudflare سريعًا لنقطة النهاية هذه لإتاحتها عبر الإنترنت دون تكوين DNS.",
+ "cloudflaredUrlNotice": "ينشئ نفق Cloudflare سريعًا مؤقتًا. تتغير عناوين URL بعد إعادة التشغيل.",
+ "cloudflaredEnable": "تمكين النفق",
+ "cloudflaredInstallAndEnable": "التثبيت والتمكين",
+ "cloudflaredDisable": "إيقاف النفق",
+ "cloudflaredRunning": "قيد التشغيل",
+ "cloudflaredStarting": "جارٍ البدء",
+ "cloudflaredStoppedState": "متوقف",
+ "cloudflaredNotInstalled": "غير مثبت",
+ "cloudflaredUnsupported": "غير مدعوم",
+ "cloudflaredError": "خطأ",
+ "cloudflaredStarted": "بدأ تشغيل نفق Cloudflare",
+ "cloudflaredStopped": "توقف نفق Cloudflare",
+ "cloudflaredRequestFailed": "فشل تحديث نفق Cloudflare",
+ "cloudflaredTemporaryNote": "تعد عناوين URL الخاصة بالنفق السريع مؤقتة وستتغير بعد إعادة التشغيل.",
+ "cloudflaredUnsupportedNote": "هذا النظام الأساسي غير مدعوم للتثبيت المُدار.",
+ "cloudflaredIdleNote": "قم بإنشاء نفق Cloudflare السريع المؤقت لنقطة النهاية هذه.",
+ "cloudflaredLastError": "الخطأ الأخير: {error}",
"providerModelsTitle": "{provider} — النماذج",
"noModelsForProvider": "لا توجد نماذج متاحة لهذا المزود.",
"chat": "الدردشة",
"embedding": "التضمين",
"image": "صورة",
"custom": "مخصص",
- "modelsCount": "{count, plural, one {# model} other {# models}}",
+ "modelsCount": "النماذج: {count, plural, one {نموذج واحد} other {# نماذج}}",
"sectionTitle": "سطح التكامل",
"sectionDescription": "واجهات برمجة التطبيقات المتوافقة مع OpenAI ونقاط نهاية البروتوكول التشغيلية",
"tabApis": "واجهات برمجة تطبيقات متوافقة مع OpenAI",
@@ -2931,10 +2931,10 @@
"mcpQuickStartStep3": "استدعاء أدوات مثل `omniroute_get_health` و `omniroute_list_combos`.",
"a2aQuickStartTitle": "البدء السريع",
"a2aQuickStartStep1": "اكتشف بطاقة الوكيل على `/.well-known/agent.json`.",
- "a2aQuickStartStep2": "إرسال طلبات JSON - RPC إلى@@ PH0 @@ باستخدام @@PH1 @@ أو `message/stream`.",
+ "a2aQuickStartStep2": "أرسل طلبات JSON-RPC إلى `POST /a2a` باستخدام `message/send` أو `message/stream`.",
"a2aQuickStartStep3": "تتبع المهام والتحكم فيها باستخدام `tasks/get` و `tasks/cancel`.",
- "completionsLegacy": "Completions (Legacy)",
- "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format",
+ "completionsLegacy": "الإكمالات (القديمة)",
+ "completionsLegacyDesc": "عمليات إكمال نص OpenAI القديمة - تقبل كلاً من تنسيق سلسلة الرسائل ومصفوفة الرسائل",
"messagesApi": "الرسائل",
"messagesApiDesc": "تنسيق واجهة برمجة التطبيقات للرسائل الإنسانية الأصلية لمقدمي الخدمات المتوافقين مع Claude",
"imageEdits": "تعديلات الصور",
@@ -2943,43 +2943,43 @@
"batchApiDesc": "معالجة مجموعات كبيرة من الطلبات بشكل غير متزامن (متوافق مع OpenAI)",
"filesApi": "واجهة برمجة التطبيقات للملفات",
"filesApiDesc": "تحميل وإدارة الملفات لمعالجة الدفعات",
- "videoGeneration": "Video Generation",
- "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.",
- "tailscaleRequestFailed": "Failed to load Tailscale status",
- "tailscaleEnableFailed": "Failed to enable Tailscale Funnel",
- "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.",
- "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login",
- "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.",
- "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled",
- "tailscaleStarted": "Tailscale Funnel enabled",
- "tailscaleDisableFailed": "Failed to disable Tailscale Funnel",
- "tailscaleStopped": "Tailscale Funnel disabled",
- "tailscaleInstallFailed": "Failed to install Tailscale",
- "tailscaleInstallProgress": "Working...",
- "tailscaleInstalled": "Tailscale installed successfully",
- "tailscaleRunning": "Running",
- "tailscaleNeedsLogin": "Needs Login",
- "tailscaleStoppedState": "Stopped",
- "tailscaleNotInstalled": "Not installed",
- "tailscaleUnsupported": "Unsupported",
- "tailscaleError": "Error",
- "tailscaleDisable": "Stop Funnel",
- "tailscaleInstallAndEnable": "Install & Enable",
- "tailscaleLoginAndEnable": "Login & Enable",
- "tailscaleEnable": "Enable Funnel",
- "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.",
+ "videoGeneration": "توليد الفيديو",
+ "videoDesc": "أنشئ مقاطع فيديو باستخدام نماذج الذكاء الاصطناعي مثل ComfyUI وStable Video Diffusion.",
+ "tailscaleRequestFailed": "فشل تحميل حالة Tailscale",
+ "tailscaleEnableFailed": "فشل في تمكين Tailscale Funnel",
+ "tailscaleWaitingForLogin": "أكمل تسجيل الدخول إلى Tailscale في علامة تبويب المتصفح المفتوحة. سيعيد OmniRoute المحاولة تلقائيًا.",
+ "tailscaleLoginTimedOut": "انتهت مهلة انتظار تسجيل الدخول إلى Tailscale",
+ "tailscaleWaitingForFunnel": "فعّل Funnel لهذا الجهاز في علامة تبويب المتصفح المفتوحة. سيواصل OmniRoute التحقق.",
+ "tailscaleFunnelTimedOut": "انتهت مهلة انتظار تمكين Tailscale Funnel",
+ "tailscaleStarted": "تم تمكين Tailscale Funnel",
+ "tailscaleDisableFailed": "فشل تعطيل Tailscale Funnel",
+ "tailscaleStopped": "تم تعطيل Tailscale Funnel",
+ "tailscaleInstallFailed": "فشل تثبيت Tailscale",
+ "tailscaleInstallProgress": "جارٍ العمل...",
+ "tailscaleInstalled": "تم تثبيت Tailscale بنجاح",
+ "tailscaleRunning": "قيد التشغيل",
+ "tailscaleNeedsLogin": "يتطلب تسجيل الدخول",
+ "tailscaleStoppedState": "متوقف",
+ "tailscaleNotInstalled": "غير مثبت",
+ "tailscaleUnsupported": "غير مدعوم",
+ "tailscaleError": "خطأ",
+ "tailscaleDisable": "إيقاف Funnel",
+ "tailscaleInstallAndEnable": "التثبيت والتمكين",
+ "tailscaleLoginAndEnable": "تسجيل الدخول والتمكين",
+ "tailscaleEnable": "تمكين Funnel",
+ "tailscaleUrlNotice": "يستخدم عنوان Tailscale بلاحقة .ts.net. قد يلزم تسجيل الدخول والموافقة على Funnel عند الاستخدام الأول.",
"tailscaleTitle": "Tailscale Funnel",
- "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.",
- "tailscaleBinaryPath": "Binary: {path}",
- "tailscaleLastError": "Last error: {error}",
- "tailscaleInstallTitle": "Install Tailscale",
- "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.",
- "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.",
- "tailscaleSudoPlaceholder": "Optional sudo password",
- "tailscaleInstalling": "Installing",
+ "tailscaleNeedsLoginHint": "صادِق هذا الجهاز باستخدام Tailscale، ثم فعّل Funnel.",
+ "tailscaleBinaryPath": "الملف التنفيذي: {path}",
+ "tailscaleLastError": "الخطأ الأخير: {error}",
+ "tailscaleInstallTitle": "تثبيت Tailscale",
+ "tailscaleInstallIntro": "يقوم بتثبيت Tailscale على هذا الجهاز وإعداد OmniRoute لتمكين Funnel.",
+ "tailscaleInstallPasswordHint": "في نظامي التشغيل macOS وLinux، قد يكون الأمر sudo مطلوبًا لتثبيت الحزمة وبدء تشغيل البرنامج الخفي.",
+ "tailscaleSudoPlaceholder": "كلمة مرور Sudo اختيارية",
+ "tailscaleInstalling": "التثبيت",
"tailscaleSudoLabel": "كلمة مرور Sudo (مطلوبة على نظام التشغيل macOS/Linux)",
- "ngrokTitle": "نفق نغروك",
- "ngrokRunning": "الجري",
+ "ngrokTitle": "Ngrok",
+ "ngrokRunning": "قيد التشغيل",
"ngrokStarting": "البدء",
"ngrokStoppedState": "توقف",
"ngrokNeedsAuth": "يحتاج إلى مصادقة",
@@ -2988,12 +2988,12 @@
"ngrokError": "خطأ",
"ngrokEnable": "تمكين النفق",
"ngrokDisable": "توقف النفق",
- "ngrokUrlNotice": "إنشاء نفق نجروك عام.",
- "ngrokAuthTokenLabel": "رمز المصادقة (مطلوب إذا لم يتم تعيين NGROK_AUTHTOKEN)",
+ "ngrokUrlNotice": "إنشاء نفق Ngrok عام.",
+ "ngrokAuthTokenLabel": "رمز المصادقة (مطلوب إذا لم يكن NGROK_AUTHTOKEN معيّنًا)",
"ngrokAuthTokenPlaceholder": "أدخل رمز مصادقة ngrok الخاص بك",
"ngrokLastError": "الخطأ الأخير: {error}",
- "ngrokStarted": "بدأ نفق نجروك",
- "ngrokStopped": "توقف نفق نجروك",
+ "ngrokStarted": "بدأ نفق Ngrok",
+ "ngrokStopped": "توقف نفق Ngrok",
"ngrokRequestFailed": "فشل في تحديث نفق ngrok",
"tokenSaverSubtitle": "أنفق عددًا أقل من الرموز على كل طلب.",
"tokenSaverToolOutput": "إخراج الأداة",
@@ -3004,24 +3004,24 @@
"apiEndpointsRequiresAuth": "يتطلب المصادقة",
"apiEndpointsNoMatch": "لا توجد نقاط نهاية تتطابق مع الفلتر الخاص بك",
"localServer": "الخادم المحلي",
- "cloudOmniroute": "Cloud OmniRoute",
+ "cloudOmniroute": "سحابة OmniRoute",
"copyUrl": "انسخ عنوان URL",
- "badgeLoopbackTooltip": "__MISSING__:This endpoint is only accessible locally (loopback only)",
- "badgeAlwaysProtectedTooltip": "__MISSING__:This endpoint is always protected and requires authorization",
- "badgeInternalTooltip": "__MISSING__:This is an internal system endpoint",
- "tierAll": "__MISSING__:All",
- "tierAuth": "__MISSING__:Authenticated",
- "tierLoopback": "__MISSING__:Loopback",
- "tierAlwaysProtected": "__MISSING__:Always Protected",
- "tierPublic": "__MISSING__:Public",
- "hideInternal": "__MISSING__:Hide Internal",
- "showInternal": "__MISSING__:Show Internal",
- "customSystemPromptTitle": "Custom System Prompt",
- "customSystemPromptDescription": "Inject a custom system prompt into every model request",
- "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak..."
+ "badgeLoopbackTooltip": "لا يمكن الوصول إلى نقطة النهاية هذه إلا محليًا (حلقة الرجوع فقط)",
+ "badgeAlwaysProtectedTooltip": "نقطة النهاية هذه محمية دائمًا وتتطلب التخويل",
+ "badgeInternalTooltip": "هذه نقطة نهاية داخلية للنظام",
+ "tierAll": "الكل",
+ "tierAuth": "يتطلب المصادقة",
+ "tierLoopback": "حلقة الرجوع",
+ "tierAlwaysProtected": "محمي دائمًا",
+ "tierPublic": "عام",
+ "hideInternal": "إخفاء النقاط الداخلية",
+ "showInternal": "إظهار النقاط الداخلية",
+ "customSystemPromptTitle": "موجه نظام مخصص",
+ "customSystemPromptDescription": "حقن موجه نظام مخصص في كل طلب نموذج",
+ "customSystemPromptPlaceholder": "مثال: أجب دائمًا بأسلوب القراصنة..."
},
"endpoints": {
- "tabProxy": "Endpoint Proxy",
+ "tabProxy": "بروكسي نقطة النهاية",
"tabApiEndpoints": "نقاط نهاية API",
"apiEndpointsTitle": "نقاط نهاية API",
"apiEndpointsDescription": "نقاط نهاية API الخلفية التي يمكن أن تستهلكها التطبيقات والخدمات الأخرى.",
@@ -3034,8 +3034,8 @@
},
"mcpDashboard": {
"loading": "جارٍ تحميل لوحة تحكم MCP...",
- "activate": "ينشط",
- "deactivate": "إيقاف نشاطإلغاء تنشيط",
+ "activate": "تفعيل",
+ "deactivate": "إلغاء التنشيط",
"confirmSwitchCombo": "تأكيد مجموعة {action} \"{combo}\"؟",
"switchComboFailed": "فشل تبديل حالة التحرير والسرد.",
"switchComboSuccess": "تم تحديث المجموعة \"{combo}\".",
@@ -3046,23 +3046,23 @@
"resetBreakersFailed": "فشل إعادة ضبط قواطع الدائرة.",
"resetBreakersSuccess": "إعادة ضبط قواطع الدائرة.",
"processStatus": "حالة المعالجة",
- "online": "الويب",
+ "online": "متصل",
"offline": "غير متصل",
- "disableLabel": "__MISSING__:Disable {label}",
- "enableLabel": "__MISSING__:Enable {label}",
- "transportMode": "__MISSING__:Transport Mode",
- "transportStdioDesc": "__MISSING__:Local — IDE spawns process via omniroute --mcp",
- "transportSseDesc": "__MISSING__:Remote — Server-Sent Events over HTTP",
- "transportStreamableHttpDesc": "__MISSING__:Remote — Modern bidirectional HTTP",
- "copy": "__MISSING__:Copy",
+ "disableLabel": "تعطيل {label}",
+ "enableLabel": "تمكين {label}",
+ "transportMode": "وضع النقل",
+ "transportStdioDesc": "محلي — تشغّل بيئة التطوير العملية عبر omniroute --mcp",
+ "transportSseDesc": "بعيد — أحداث يرسلها الخادم عبر HTTP",
+ "transportStreamableHttpDesc": "بعيد — اتصال HTTP حديث ثنائي الاتجاه",
+ "copy": "نسخ",
"mcpDashboardCopyUrl": "انسخ عنوان URL",
- "mcpDisabledTitle": "__MISSING__:MCP is disabled",
- "mcpDisabledDesc": "__MISSING__:Enable MCP above to configure transport mode and view server telemetry.",
- "mcpIntro": "__MISSING__:Model Context Protocol — {tools} tools across {scopes} scopes, {transports} transports (stdio / SSE / Streamable HTTP).",
- "mcpStep1": "__MISSING__:Run via {code}",
- "mcpStep2": "__MISSING__:Configure your MCP client to connect over stdio transport.",
- "mcpStep3": "__MISSING__:Invoke tools like {code1} and {code2}.",
- "pid": "معرف المشروع",
+ "mcpDisabledTitle": "MCP معطّل",
+ "mcpDisabledDesc": "فعّل MCP أعلاه لتكوين وضع النقل وعرض قياسات الخادم.",
+ "mcpIntro": "بروتوكول سياق النموذج — {tools} أداة ضمن {scopes} نطاق وباستخدام {transports} وسيلة نقل (stdio / SSE / HTTP قابل للبث).",
+ "mcpStep1": "شغّل عبر {code}",
+ "mcpStep2": "كوّن عميل MCP للاتصال عبر نقل stdio.",
+ "mcpStep3": "استدعِ أدوات مثل {code1} و{code2}.",
+ "pid": "معرّف العملية (PID)",
"sessionUptime": "وقت تشغيل الدورة",
"lastHeartbeat": "آخر نبضة قلب",
"activity24h": "النشاط (24 ساعة)",
@@ -3075,7 +3075,7 @@
"transport": "النقل",
"scopesEnforced": "النطاقات التي تم فرضها",
"yes": "نعم",
- "no": "عددي",
+ "no": "لا",
"lastCall": "آخر مكالمة",
"heartbeatPath": "مسار نبضات القلب",
"operationalControls": "الضوابط التشغيلية",
@@ -3086,23 +3086,23 @@
"deactivateCombo": "إلغاء تنشيط التحرير والسرد",
"applyResilienceProfile": "تطبيق ملف المرونة",
"profileAggressive": "عدواني",
- "profileBalanced": "متوازن, في حالة إتزان, متعادل",
- "profileConservative": "محافظ, واق, مقاوم للتغيير, معتدل",
- "applyProfile": "تطبيق الطور",
+ "profileBalanced": "متوازن",
+ "profileConservative": "محافظ",
+ "applyProfile": "تطبيق الملف",
"resetCircuitBreakers": "إعادة تعيين قواطع الدائرة",
"resetCircuitBreakersHelp": "مسح حالة القاطع الحالي وعدادات الأعطال لمقدمي الخدمات.",
"resetAllBreakers": "إعادة تعيين جميع القواطع",
"toolsAndScopes": "الأدوات والنطاقات",
"tableTool": "الأداة",
- "tableScopes": "مناظير",
+ "tableScopes": "النطاقات",
"tablePhase": "المرحلة",
"tableAudit": "المراجعة",
"auditLog": "سجل التدقيق",
- "auditSummary": "المكالمات: {total} | page {page} of {totalPages}",
- "allTools": "فتح جميع الأدوات",
+ "auditSummary": "المكالمات: {total} | الصفحة {page} من {totalPages}",
+ "allTools": "جميع الأدوات",
"allResults": "عرض كل النتائج",
"success": "ناجحة",
- "failure": "Failure",
+ "failure": "فشل",
"apiKeyIdPlaceholder": "apiKeyId",
"loadingAuditEntries": "جارٍ تحميل إدخالات التدقيق...",
"noAuditEntriesForFilters": "لم يتم العثور على إدخالات تدقيق لعوامل التصفية الحالية.",
@@ -3113,26 +3113,26 @@
"failed": "فشل",
"previous": "السابق",
"next": "التالي",
- "apiKeyId": "Api Key Id",
- "offset": "Offset",
- "limit": "Limit",
- "tool": "Tool"
+ "apiKeyId": "معرّف مفتاح API",
+ "offset": "الإزاحة",
+ "limit": "الحد",
+ "tool": "الأداة"
},
"a2aDashboard": {
"loading": "جارٍ تحميل لوحة معلومات A2A...",
"confirmCancelTask": "هل تريد إلغاء المهمة {taskId}؟",
"cancelTaskFailed": "فشل إلغاء المهمة.",
"cancelTaskSuccess": "تم إلغاء المهمة {taskId}.",
- "smokeSendFailed": "فشل إرسال/إرسال اختبار الدخان.",
+ "smokeSendFailed": "فشل إرسال أختبار الأولي.",
"smokeSendSuccessWithTask": "رسالة/أرسل موافق (المهمة {taskId}).",
"smokeSendSuccess": "أرسل رسالة/أرسل موافق.",
- "smokeStreamFailed": "فشل اختبار دخان الرسالة/الدفق.",
+ "smokeStreamFailed": "فشل تدفق أختبار الأولي.",
"smokeStreamSuccessWithTask": "الرسالة/الدفق موافق (المهمة{taskId}{stateSuffix}).",
"smokeStreamNoTaskId": "انتهت الرسالة/الدفق بدون معرف المهمة.",
"health": "الصحة",
- "ok": "ok",
+ "ok": "حسنًا",
"totalTasks": "إجمالي المهام",
- "activeStreams": "لا يوجد بث نشط...",
+ "activeStreams": "عمليات البث النشطة",
"lastTask": "آخر مهمة",
"taskStateOverview": "نظرة عامة على حالة المهمة",
"state": {
@@ -3143,24 +3143,24 @@
"cancelled": "تم الإلغاء"
},
"agentCard": "بطاقة الوكيل",
- "agentCardPath": "__MISSING__:/.well-known/agent.json",
+ "agentCardPath": "/.well-known/agent.json",
"version": "الإصدار",
"url": "الرابط الالكتروني",
"capabilities": "القدرات",
"agentCardNotAvailable": "بطاقة الوكيل غير متوفرة.",
"quickValidation": "التحقق السريع",
- "quickValidationDescription": "ينفذ مكالمات الدخان من خلال نقطة النهاية الحية@@PH0 @@.",
+ "quickValidationDescription": "ينفّذ استدعاءات فحص أولية عبر نقطة النهاية الحية `/a2a`.",
"runMessageSend": "تشغيل الرسالة/إرسالها",
"runMessageStream": "تشغيل الرسالة/الدفق",
"taskManagement": "إدارة المهام",
- "taskSummary": "{total} tasks | page {page} of {totalPages}",
+ "taskSummary": "مهام {total} | صفحة {page} من {totalPages}",
"allStates": "الجميع",
"allSkills": "جميع المهارات",
"loadingTasks": "تحميل المهام",
"noTasksForFilters": "لم يتم العثور على مهام لعوامل التصفية الحالية.",
"tableTask": "المهمة",
"tableSkill": "مهارة",
- "tableState": "الولاية",
+ "tableState": "الحالة",
"tableUpdated": "تم التحديث",
"tableActions": "الإجراءات",
"view": "عرض",
@@ -3170,55 +3170,55 @@
"taskDetail": "تفاصيل المهمة",
"close": "إغلاق",
"metadata": "البيانات الوصفية",
- "events": "الأحداث والفعاليات",
- "artifacts": "الأدلة الجنائية",
- "tablePhase": "Table Phase",
- "offset": "Offset",
- "limit": "Limit",
- "skill": "Skill",
- "rpcEndpoint": "مشاركة /a2a",
+ "events": "الأحداث",
+ "artifacts": "المخرجات",
+ "tablePhase": "المرحلة",
+ "offset": "إزاحة",
+ "limit": "الحد",
+ "skill": "مهارة",
+ "rpcEndpoint": "نقطة نهاية /a2a",
"rpcMethodSend": "رسالة/إرسال",
"rpcMethodStream": "رسالة/دفق",
"rpcMethodGet": "المهام/الحصول على",
"rpcMethodCancel": "المهام/إلغاء",
- "serviceLabel": "أ2أ",
- "online": "__MISSING__:Online",
- "offline": "__MISSING__:Offline",
- "disableLabel": "__MISSING__:Disable {label}",
- "enableLabel": "__MISSING__:Enable {label}",
- "a2aDisabledTitle": "__MISSING__:A2A is disabled",
- "a2aDisabledDesc": "__MISSING__:Enable A2A above to view task telemetry, agent details, and validation tools.",
- "a2aIntro": "__MISSING__:Agent2Agent JSON-RPC 2.0 endpoint — send tasks, stream responses, cancel in-flight jobs.",
- "a2aStep1": "__MISSING__:Discover the agent card at {code}.",
- "a2aStep2": "__MISSING__:Send JSON-RPC to {code1} using {code2} or {code3}.",
- "a2aStep3": "__MISSING__:Track and cancel tasks with {code1} and {code2}."
+ "serviceLabel": "A2A",
+ "online": "متصل",
+ "offline": "غير متصل",
+ "disableLabel": "تعطيل {label}",
+ "enableLabel": "تمكين {label}",
+ "a2aDisabledTitle": "تم تعطيل A2A",
+ "a2aDisabledDesc": "قم بتمكين A2A أعلاه لعرض قياس المهام عن بعد وتفاصيل الوكيل وأدوات التحقق من الصحة.",
+ "a2aIntro": "نقطة نهاية Agent2Agent JSON-RPC 2.0 — إرسال المهام، وتدفق الاستجابات، وإلغاء المهام أثناء الرحلة.",
+ "a2aStep1": "اكتشف بطاقة الوكيل في {code}.",
+ "a2aStep2": "أرسل JSON-RPC إلى {code1} باستخدام {code2} أو {code3}.",
+ "a2aStep3": "تتبع المهام وقم بإلغائها باستخدام {code1} و{code2}."
},
"memory": {
- "title": "Memory Management",
- "description": "View and manage stored memory entries",
- "memories": "Memories",
- "totalEntries": "Total Entries",
- "tokensUsed": "Tokens Used",
- "hitRate": "Hit Rate",
- "loading": "Loading memories...",
- "noMemories": "No memories found",
- "search": "Search memories...",
- "allTypes": "All Types",
- "export": "Export",
- "import": "Import",
- "addMemory": "Add Memory",
- "type": "Type",
- "key": "Key",
- "content": "Content",
- "created": "Created",
- "actions": "Actions",
- "delete": "Delete",
- "factual": "Factual",
- "episodic": "Episodic",
- "procedural": "Procedural",
- "semantic": "Semantic",
+ "title": "إدارة الذاكرة",
+ "description": "عرض وإدارة إدخالات الذاكرة المخزنة",
+ "memories": "ذكريات",
+ "totalEntries": "إجمالي الإدخالات",
+ "tokensUsed": "الرموز المستخدمة",
+ "hitRate": "معدل الإصابة",
+ "loading": "جارٍ تحميل الذكريات...",
+ "noMemories": "لم يتم العثور على ذكريات",
+ "search": "بحث في الذكريات...",
+ "allTypes": "جميع الأنواع",
+ "export": "تصدير",
+ "import": "استيراد",
+ "addMemory": "أضف الذاكرة",
+ "type": "النوع",
+ "key": "مفتاح",
+ "content": "المحتوى",
+ "created": "تاريخ الإنشاء",
+ "actions": "الإجراءات",
+ "delete": "حذف",
+ "factual": "واقعي",
+ "episodic": "عرضي",
+ "procedural": "إجرائي",
+ "semantic": "دلالي",
"a": "A",
- "pipelineOk": "خط الأنابيب موافق ({latencyMs}ms)",
+ "pipelineOk": "مسار معالجة موافق ({latencyMs}ms)",
"pipelineError": "خطأ في خط الأنابيب",
"healthUnknown": "الصحة غير معروفة",
"checkingHealth": "جارٍ التحقق…",
@@ -3232,71 +3232,71 @@
"contentPlaceholder": "القيمة أو محتوى JSON الذي يجب تذكره"
},
"skills": {
- "title": "Skills",
- "description": "Manage and monitor AI skills",
- "skillsTab": "Skills",
- "executionsTab": "Executions",
- "sandboxTab": "Sandbox",
- "loading": "Loading skills...",
- "noSkills": "No skills found",
- "noExecutions": "No executions found",
- "enabled": "Enabled",
- "disabled": "Disabled",
- "version": "Version",
- "tableDescription": "Description",
- "skill": "Skill",
- "status": "Status",
- "duration": "Duration",
- "time": "Time",
- "sandboxConfig": "Sandbox Configuration",
- "cpuLimit": "CPU Limit",
- "cpuLimitDesc": "Maximum execution time per skill",
- "memoryLimit": "Memory Limit",
- "memoryLimitDesc": "Maximum memory allocation",
- "timeout": "Timeout",
- "timeoutDesc": "Maximum wait time for response",
- "networkAccess": "Network Access",
- "networkAccessDesc": "Allow outbound network requests",
- "mode": "Mode",
+ "title": "المهارات",
+ "description": "إدارة ومراقبة مهارات الذكاء الاصطناعي",
+ "skillsTab": "المهارات",
+ "executionsTab": "عمليات التنفيذ",
+ "sandboxTab": "بيئة العزل",
+ "loading": "تحميل المهارات...",
+ "noSkills": "لم يتم العثور على المهارات",
+ "noExecutions": "لم يتم العثور على عمليات تنفيذ",
+ "enabled": "ممكّن",
+ "disabled": "معطل",
+ "version": "الإصدار",
+ "tableDescription": "الوصف",
+ "skill": "مهارة",
+ "status": "الحالة",
+ "duration": "المدة",
+ "time": "الوقت",
+ "sandboxConfig": "تكوين وضع الحماية",
+ "cpuLimit": "حد وحدة المعالجة المركزية",
+ "cpuLimitDesc": "الحد الأقصى لوقت التنفيذ لكل مهارة",
+ "memoryLimit": "حد الذاكرة",
+ "memoryLimitDesc": "الحد الأقصى لتخصيص الذاكرة",
+ "timeout": "المهلة",
+ "timeoutDesc": "الحد الأقصى لوقت الانتظار للرد",
+ "networkAccess": "الوصول إلى الشبكة",
+ "networkAccessDesc": "السماح بطلبات الشبكة الصادرة",
+ "mode": "الوضع",
"q": "Q",
"filterSkillsPlaceholder": "تصفية المهارات حسب الاسم أو الوصف أو العلامة",
"allModes": "جميع الأوضاع",
- "totalSkills": "__MISSING__:Total Skills",
- "enabledSkills": "__MISSING__:Enabled",
- "totalExecutions": "__MISSING__:Executions",
- "successRate": "__MISSING__:Success Rate",
- "marketplaceTab": "__MISSING__:Marketplace",
- "applyFilters": "__MISSING__:Apply filters",
- "popularDefaultsLabel": "__MISSING__:Popular by default for selected provider:",
- "onMode": "__MISSING__:ON",
- "offMode": "__MISSING__:OFF",
- "autoMode": "__MISSING__:AUTO",
- "installSkillButton": "__MISSING__:Install Skill",
- "installSkillModalTitle": "__MISSING__:Install Skill",
- "installJsonPlaceholder": "__MISSING__:Paste skill manifest JSON here...",
- "installing": "__MISSING__:Installing...",
- "installSuccess": "__MISSING__:Skill installed ({id})",
- "installError": "__MISSING__:Install failed",
- "invalidJson": "__MISSING__:Invalid JSON",
- "searchMarketplacePlaceholder": "__MISSING__:Search skills...",
- "searchMarketplace": "__MISSING__:Search Marketplace",
- "marketplaceEmpty": "__MISSING__:No skills found in marketplace",
- "marketplaceError": "__MISSING__:Search failed",
- "installingFromMarketplace": "__MISSING__:Installing from marketplace...",
- "popularSkills": "__MISSING__:Popular Skills",
+ "totalSkills": "المهارات الإجمالية",
+ "enabledSkills": "ممكّن",
+ "totalExecutions": "إجمالي عمليات التنفيذ",
+ "successRate": "معدل النجاح",
+ "marketplaceTab": "السوق",
+ "applyFilters": "تطبيق المرشحات",
+ "popularDefaultsLabel": "شائع بشكل افتراضي للمزود المحدد:",
+ "onMode": "تشغيل",
+ "offMode": "إيقاف",
+ "autoMode": "تلقائي",
+ "installSkillButton": "تثبيت المهارة",
+ "installSkillModalTitle": "تثبيت المهارة",
+ "installJsonPlaceholder": "لصق بيان المهارة JSON هنا...",
+ "installing": "جارٍ التثبيت...",
+ "installSuccess": "تم تثبيت المهارة ({id})",
+ "installError": "فشل التثبيت",
+ "invalidJson": "تنسيق JSON غير صالح",
+ "searchMarketplacePlaceholder": "البحث عن مهارات...",
+ "searchMarketplace": "بحث السوق",
+ "marketplaceEmpty": "لا توجد مهارات موجودة في السوق",
+ "marketplaceError": "فشل البحث",
+ "installingFromMarketplace": "التثبيت من السوق...",
+ "popularSkills": "المهارات الشائعة",
"skillsMarketplace": "سوق المهارات",
- "searching": "__MISSING__:Searching...",
- "pageInfo": "__MISSING__:Page {page} of {totalPages} ({total} total)",
- "previous": "__MISSING__:Previous",
- "next": "__MISSING__:Next",
- "activeProvider": "__MISSING__:Active provider:",
- "changeInSettings": "__MISSING__:Change this in Settings → Memory & Skills.",
- "installs": "__MISSING__:installs",
- "marketplaceSkillsMpHint": "__MISSING__:Configure your SkillsMP API key in Settings to browse the marketplace.",
- "marketplaceSkillsShHint": "__MISSING__:Search the skills.sh open directory to discover and install agent skills.",
- "installSkillModalDesc": "__MISSING__:Paste a skill manifest JSON or upload a .json file.",
- "uploadJson": "__MISSING__:Upload JSON",
- "cancel": "__MISSING__:Cancel",
+ "searching": "جارٍ البحث...",
+ "pageInfo": "صفحة {page} من {totalPages} (إجمالي {total})",
+ "previous": "السابق",
+ "next": "التالي",
+ "activeProvider": "المزود النشط:",
+ "changeInSettings": "قم بتغيير هذا في الإعدادات → الذاكرة والمهارات.",
+ "installs": "مرات التثبيت",
+ "marketplaceSkillsMpHint": "قم بتكوين مفتاح SkillsMP API الخاص بك في الإعدادات لتصفح السوق.",
+ "marketplaceSkillsShHint": "ابحث في دليل Skills.sh المفتوح لاكتشاف مهارات الوكيل وتثبيتها.",
+ "installSkillModalDesc": "الصق بيان المهارات JSON أو قم بتحميل ملف .json.",
+ "uploadJson": "تحميل JSON",
+ "cancel": "إلغاء",
"installSkill": "تثبيت المهارة"
},
"health": {
@@ -3307,7 +3307,7 @@
"down": "أسفل",
"uptime": "الجهوزية",
"memory": "الذاكرة",
- "memoryRss": "الذاكرة (آر إس إس)",
+ "memoryRss": "الذاكرة (RSS)",
"heap": "كومة",
"cpu": "وحدة المعالجة المركزية",
"database": "قاعدة البيانات",
@@ -3349,9 +3349,9 @@
"providers": "مقدمي الخدمات",
"configuredProvidersLabel": "تم تكوينه في لوحة القيادة",
"configuredProvidersHint": "الموفرون الذين لديهم بيانات اعتماد محفوظة في /dashboard/providers، بغض النظر عن حالة وقت التشغيل.",
- "activeProviders": "{count} active",
+ "activeProviders": "{count} نشط",
"activeProvidersHint": "الموفرون الذين تم تكوينهم ممكّنون حاليًا لطلبات التوجيه.",
- "monitoredProviders": "{count} monitored",
+ "monitoredProviders": "مراقبة {count}",
"monitoredProvidersHint": "يتم تتبع مقدمي الخدمة حاليًا بواسطة مراقبي صحة قاطع الدائرة.",
"healthyCount": "{count} صحي",
"nodeVersion": "العقدة {version}",
@@ -3372,47 +3372,47 @@
"resetting": "إعادة الضبط...",
"resetAll": "إعادة ضبط الكل",
"until": "حتى {time}",
- "limitExhausted": "Exhausted",
- "learnedFromHeaders": "Learned from headers",
- "remainingOfLimit": "{remaining}/{limit} remaining",
- "throttleStatus": "Throttle: {value}",
- "lastHeaderUpdate": "Header update: {age}",
+ "limitExhausted": "منهك",
+ "learnedFromHeaders": "تعلمت من الرؤوس",
+ "remainingOfLimit": "{remaining}/{limit} المتبقية",
+ "throttleStatus": "تقييد: {value}",
+ "lastHeaderUpdate": "تحديث الرأس: {age}",
"databaseHealth": "صحة قاعدة البيانات",
"stickyBoundSessions": "جلسات ملزمة لزجة",
"sessionsByApiKey": "الجلسات عن طريق مفتاح API",
"noActiveSessionsTracked": "لم يتم تتبع أي جلسات نشطة حتى الآن.",
"noSessionQuotaMonitorsActive": "لا توجد أجهزة مراقبة حصة الجلسة نشطة.",
- "gracefulDegradationStatus": "حالة التدهور رشيقة",
+ "gracefulDegradationStatus": "حالة التدهور السلس",
"additionalModels": "+{count} المزيد من النماذج",
- "providerHealthMatrixTitle": "__MISSING__:Provider Health Matrix",
- "providerHealthMatrixDescription": "__MISSING__:Provider × account × model states from breakers, cooldowns, lockouts and logs.",
- "healthMatrixRange": "__MISSING__:Health matrix range",
- "providerFilter": "__MISSING__:Provider filter",
- "onlyIssues": "__MISSING__:Only issues",
- "refresh": "__MISSING__:Refresh",
- "accounts": "__MISSING__:Accounts",
- "models": "__MISSING__:Models",
- "issues": "__MISSING__:Issues",
- "loadingProviderHealthMatrix": "__MISSING__:Loading provider health matrix...",
- "failedProviderHealthMatrix": "__MISSING__:Failed to load Provider Health Matrix: {error}",
- "noProvidersMatchedFilters": "__MISSING__:No providers matched the current filters.",
- "modelPillSummary": "__MISSING__:{requests} req · {successRate} success · {latency} avg",
- "modelLockoutSummary": "__MISSING__:{reason} · {duration} left",
- "locked": "__MISSING__:locked",
- "inferred": "__MISSING__:inferred",
- "inactive": "__MISSING__:Inactive",
- "noConnectionId": "__MISSING__:no connection id",
- "accountModelSummary": "__MISSING__:{connectionId} · {count} models",
- "cooldown": "__MISSING__:cooldown",
- "durationRemaining": "__MISSING__:{duration} remaining",
- "noSyncedModelsOrTraffic": "__MISSING__:No synced models or recent traffic yet.",
- "providerRowSummary": "__MISSING__:{active}/{total} active accounts · {requests} req · {successRate} success · {latency} avg",
- "cooldownCount": "__MISSING__:{count} cooldown",
- "lockoutCount": "__MISSING__:{count} lockouts",
- "issueCount": "__MISSING__:{count} issues",
- "score": "__MISSING__:Score",
- "lastRequest": "__MISSING__:Last request",
- "lastError": "__MISSING__:Last error"
+ "providerHealthMatrixTitle": "مصفوفة صحة المزود",
+ "providerHealthMatrixDescription": "الموفر × الحساب × حالات النموذج من الكسارات وفترات التهدئة والإغلاق والسجلات.",
+ "healthMatrixRange": "نطاق المصفوفة الصحية",
+ "providerFilter": "مرشح الموفر",
+ "onlyIssues": "القضايا فقط",
+ "refresh": "تحديث",
+ "accounts": "الحسابات",
+ "models": "نماذج",
+ "issues": "القضايا",
+ "loadingProviderHealthMatrix": "جارٍ تحميل مصفوفة صحة الموفر...",
+ "failedProviderHealthMatrix": "فشل تحميل مصفوفة صحة الموفر: {error}",
+ "noProvidersMatchedFilters": "لم يتطابق أي مقدمي خدمات مع عوامل التصفية الحالية.",
+ "modelPillSummary": "طلب {requests} · نجاح {successRate} · متوسط {latency}",
+ "modelLockoutSummary": "{reason} · {duration} متبقٍ",
+ "locked": "مغلق",
+ "inferred": "استنتاج",
+ "inactive": "غير نشط",
+ "noConnectionId": "لا يوجد معرف اتصال",
+ "accountModelSummary": "{connectionId} · نماذج {count}",
+ "cooldown": "فترة التهدئة",
+ "durationRemaining": "باقي {duration}",
+ "noSyncedModelsOrTraffic": "لا توجد نماذج متزامنة أو حركة مرور حديثة حتى الآن.",
+ "providerRowSummary": "{active}/{total} الحسابات النشطة · {requests} req · نجاح {successRate} · متوسط {latency}",
+ "cooldownCount": "{count} فترة التهدئة",
+ "lockoutCount": "عمليات تأمين {count}",
+ "issueCount": "قضايا {count}",
+ "score": "النتيجة",
+ "lastRequest": "الطلب الأخير",
+ "lastError": "الخطأ الأخير"
},
"telemetry": {
"title": "القياس عن بعد للنظام",
@@ -3445,7 +3445,7 @@
"port": "منفذ الوكيل",
"apiKey": "مفتاح API لجهاز التوجيه",
"apiKeyPlaceholder": "اختياري؛ يعود إلى المفتاح المحلي",
- "sudoPassword": "كلمة مرور سودو",
+ "sudoPassword": "كلمة مرور Sudo",
"cachedPassword": "مخبأة لهذه العملية",
"saveSettings": "حفظ الإعدادات",
"settingsSaved": "تم حفظ إعدادات MITM.",
@@ -3489,9 +3489,9 @@
"dailyLimit": "الحد اليومي"
},
"logs": {
- "title": "سجلات",
+ "title": "السجلات",
"requestLogs": "سجلات الطلب",
- "proxyLogs": "سجلات الوكيل",
+ "proxyLogs": "سجلات البروكسي",
"auditLog": "سجل التدقيق",
"console": "وحدة التحكم",
"auditLogDesc": "الإجراءات الإدارية والأحداث الأمنية",
@@ -3508,8 +3508,8 @@
"showing": "عرض {count} إدخالات (الإزاحة {offset})",
"search": "بحث",
"timestamp": "الطابع الزمني",
- "action": "العمل",
- "actor": "ممثل",
+ "action": "الإجراء",
+ "actor": "الفاعل",
"target": "الهدف",
"details": "التفاصيل",
"ipAddress": "عنوان IP",
@@ -3517,56 +3517,56 @@
"noEntries": "لم يتم العثور على إدخالات سجل التدقيق",
"previous": "السابق",
"next": "التالي",
- "providerWarningTitle": "Provider Warning Title",
- "viewDetails": "View Details",
- "eventMetadata": "Event Metadata",
- "eventPayload": "Event Payload",
- "requestId": "Request Id",
- "providerWarningDesc": "Provider Warning Desc",
+ "providerWarningTitle": "تحذير بشأن المزوّد",
+ "viewDetails": "عرض التفاصيل",
+ "eventMetadata": "البيانات التعريفية للحدث",
+ "eventPayload": "حمولة الحدث",
+ "requestId": "معرف الطلب",
+ "providerWarningDesc": "حدث تحذير متعلق بالمزوّد.",
"a": "A",
- "offset": "Offset",
- "limit": "Limit",
- "status": "Status",
- "resourceType": "Resource Type",
- "totalEntries": "Total Entries",
- "tab": "Tab",
- "auditModalSubtitle": "Audit Modal Subtitle",
- "close": "Close",
- "runningRequests": "Active Requests",
- "runningRequestsDesc": "Real-time view of currently running upstream requests",
+ "offset": "إزاحة",
+ "limit": "الحد",
+ "status": "الحالة",
+ "resourceType": "نوع المورد",
+ "totalEntries": "إجمالي الإدخالات",
+ "tab": "علامة التبويب",
+ "auditModalSubtitle": "تفاصيل حدث التدقيق",
+ "close": "إغلاق",
+ "runningRequests": "الطلبات النشطة",
+ "runningRequestsDesc": "عرض في الوقت الحقيقي للطلبات الأولية الجاري تشغيلها حاليًا",
"clearAll": "مسح الكل",
"confirmClearActiveRequests": "هل تريد مسح جميع الطلبات النشطة؟",
- "model": "Model",
- "provider": "Provider",
- "account": "Account",
- "elapsed": "Elapsed",
- "activeStage": "__MISSING__:Stage",
- "activeStageUnknown": "__MISSING__:Not sent to upstream yet",
- "activeStageRegistered": "__MISSING__:Registered",
- "activeStagePayloadPrepared": "__MISSING__:Payload prepared",
- "activeStageWaitingAccountSlot": "__MISSING__:Waiting for account slot",
- "activeStageWaitingRateLimit": "__MISSING__:Waiting for rate limiter",
- "activeStageRateLimitSlotAcquired": "__MISSING__:Rate limit slot acquired",
- "activeStageSendingToProvider": "__MISSING__:Sending to upstream",
- "activeStageProviderResponseStarted": "__MISSING__:Upstream response started",
- "count": "Count",
- "payloads": "Payloads",
- "viewPayloads": "View",
- "activeCount": "{count} active",
- "clientPayload": "Client Request Payload",
- "upstreamPayload": "Upstream Provider Payload",
- "upstreamNotSentYet": "Not sent to upstream yet",
- "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}",
- "export": "Export",
- "exporting": "Exporting...",
- "exportFailed": "Export failed",
- "timeRange": "Time Range",
- "lastNHours": "Last {hours}",
- "defaultRange": "default",
+ "model": "نموذج",
+ "provider": "مزود",
+ "account": "الحساب",
+ "elapsed": "انقضى",
+ "activeStage": "المرحلة",
+ "activeStageUnknown": "لم يتم إرسالها إلى المنبع بعد",
+ "activeStageRegistered": "مسجل",
+ "activeStagePayloadPrepared": "الحمولة جاهزة",
+ "activeStageWaitingAccountSlot": "بانتظار تخصيص مقعد الحساب",
+ "activeStageWaitingRateLimit": "بانتظار تحديث قيود الطلبات",
+ "activeStageRateLimitSlotAcquired": "تم الحصول تحديث قيود الطلبات",
+ "activeStageSendingToProvider": "إرسال إلى المنبع",
+ "activeStageProviderResponseStarted": "بدأت استجابة المنبع",
+ "count": "العدد",
+ "payloads": "الحمولات",
+ "viewPayloads": "عرض",
+ "activeCount": "{count} نشط",
+ "clientPayload": "حمولة طلب العميل",
+ "upstreamPayload": "حمولة موفر المنبع",
+ "upstreamNotSentYet": "لم يتم إرسالها إلى المنبع بعد",
+ "runningRequestDetailMeta": "الحساب: {account} - المنقضي: {elapsed}",
+ "export": "تصدير",
+ "exporting": "جارٍ التصدير...",
+ "exportFailed": "فشل التصدير",
+ "timeRange": "النطاق الزمني",
+ "lastNHours": "آخر {hours}",
+ "defaultRange": "افتراضي",
"consoleViewer": {
- "fetchFailed": "Failed to fetch logs",
- "copyFailed": "Failed to copy log entry",
- "copyLogEntry": "Copy log entry"
+ "fetchFailed": "فشل جلب السجلات",
+ "copyFailed": "فشل نسخ إدخال السجل",
+ "copyLogEntry": "نسخ إدخال السجل"
}
},
"onboarding": {
@@ -3631,9 +3631,9 @@
"apiKeyMgmt": "إدارة مفتاح واجهة برمجة التطبيقات (API)"
},
"providers": {
- "title": "مقدمي الخدمات",
- "allProviders": "جميع مقدمي الخدمات",
- "audioProviders": "موفري الصوت",
+ "title": "المزودون",
+ "allProviders": "جميع المزودين",
+ "audioProviders": "مزودو الصوت",
"showFreeOnly": "مجاني فقط",
"addProvider": "إضافة موفر",
"addFirstProvider": "أضف مزودك الأول",
@@ -3641,8 +3641,8 @@
"learnMore": "تعلم المزيد",
"editProvider": "تحرير الموفر",
"deleteProvider": "حذف الموفر",
- "noProviders": "لم يتم تكوين أي مقدمي خدمات",
- "modelAvailability": "توفر النموذج",
+ "noProviders": "لم يُضبط أي مزود",
+ "modelAvailability": "توفر النماذج",
"accounts": "الحسابات",
"newAccount": "حساب جديد",
"deleteConfirm": "هل أنت متأكد أنك تريد حذف هذا الموفر؟",
@@ -3659,10 +3659,10 @@
"chat": "الدردشة",
"responses": "الردود",
"messages": "الرسائل",
- "oauthProviders": "موفري OAuth",
- "freeProviders": "مقدمي الخدمة المجانية",
- "apiKeyProviders": "موفري مفاتيح API",
- "compatibleProviders": "مقدمو خدمات API المتوافقون",
+ "oauthProviders": "مزودو OAuth",
+ "freeProviders": "المزودون المجانيون",
+ "apiKeyProviders": "مزودو مفاتيح API",
+ "compatibleProviders": "مزودو API المتوافقون",
"testAll": "اختبار الكل",
"reorderByAvailability": "إعادة الترتيب",
"reorderByAvailabilityTitle": "إعادة ترتيب الاتصالات حسب التوفر",
@@ -3676,53 +3676,53 @@
"errorCountNoCode": "{count} خطأ",
"warningCount": "{count} تحذير",
"noConnections": "لا اتصالات",
- "expiredBadge": "Expired",
- "expiringSoonBadge": "Expiring Soon",
+ "expiredBadge": "منتهي الصلاحية",
+ "expiringSoonBadge": "ستنتهي صلاحيته قريبًا",
"freeTier": "الطبقة الحرة",
"freeTierAvailable": "الطبقة المجانية متاحة",
- "hasFreeTooltip": "__MISSING__:Free tier available",
- "noAuthLabel": "__MISSING__:No Auth",
- "noAuthProviders": "__MISSING__:No Auth Providers",
- "upstreamProxyLabel": "__MISSING__:Upstream Proxy",
- "freeAggregated": "__MISSING__:All providers with free tier (also shown in their native category)",
+ "hasFreeTooltip": "تتوفر طبقة مجانية",
+ "noAuthLabel": "بدون مصادقة",
+ "noAuthProviders": "مزوّدون بلا مصادقة",
+ "upstreamProxyLabel": "بروكسي المنبع",
+ "freeAggregated": "جميع المزوّدين ذوي الطبقة المجانية (يظهرون أيضًا ضمن فئاتهم الأصلية)",
"deprecated": "مهمل",
"deprecatedProvider": "لقد تم إهمال هذا المزود",
"riskNotice": {
- "title": "__MISSING__:Before continuing",
- "tooltip": "__MISSING__:Provider with usage caveats — click for details",
- "oauth": "__MISSING__:This provider uses your official product session/OAuth, which is not authorized for proxy/router use. We don't recommend intensive autonomous agent usage (OpenCloud-style, long multi-step flows, large batches) — the upstream may react by restricting or banning the account. Use at your own risk.",
- "webCookie": "__MISSING__:This provider authenticates through your web session cookies. The upstream service may invalidate the session at any time, requiring you to log in again. Not recommended for long unattended operations. Use at your own risk.",
- "deprecated": "__MISSING__:This provider was discontinued by its upstream and may stop working without notice. Existing connections may continue working until the upstream fully removes access. Consider alternatives.",
- "dontShowAgain": "__MISSING__:Don't show this again for this provider",
- "understand": "__MISSING__:I understand, continue",
- "cancel": "__MISSING__:Cancel"
+ "title": "قبل المتابعة",
+ "tooltip": "مزوّد له محاذير استخدام — انقر لعرض التفاصيل",
+ "oauth": "يستخدم هذا المزوّد جلسة المنتج الرسمية أو OAuth، وهي غير مصرّح بها للاستخدام مع الوكيل أو الموجّه. لا نوصي بالاستخدام المكثف للوكلاء المستقلين (مثل OpenCloud والتدفقات الطويلة متعددة الخطوات والدُفعات الكبيرة)، فقد يقيّد مزوّد المنبع الحساب أو يحظره. استخدمه على مسؤوليتك.",
+ "webCookie": "يصادق هذا المزوّد عبر ملفات تعريف ارتباط جلسة الويب. قد تُبطل خدمة المنبع الجلسة في أي وقت، ما يتطلب تسجيل الدخول مجددًا. لا يُنصح به للعمليات الطويلة غير المراقبة. استخدمه على مسؤوليتك.",
+ "deprecated": "أوقف مزوّد المنبع هذه الخدمة وقد تتوقف عن العمل دون إشعار. قد تستمر الاتصالات الحالية حتى يزيل المنبع الوصول بالكامل. فكّر في البدائل.",
+ "dontShowAgain": "لا تعرض هذا مجددًا لهذا المزوّد",
+ "understand": "أنا أفهم، استمر",
+ "cancel": "إلغاء"
},
"disabled": "معطل",
"enableProvider": "تمكين المزود",
"disableProvider": "تعطيل المزود",
"testResults": "نتائج الاختبار",
- "noCompatibleYet": "لم تتم إضافة أي مقدمي خدمات متوافقين حتى الآن",
- "compatibleHint": "استخدم الأزرار أعلاه لإضافة نقاط نهاية متوافقة مع OpenAI أو Anthropic",
- "addOpenAICompatible": "إضافة متوافق مع OpenAI",
- "addAnthropicCompatible": "أضف متوافقًا مع الأنثروبولوجيا",
+ "noCompatibleYet": "لم يُضف أي مزود متوافق بعد",
+ "compatibleHint": "استخدم الخيارات أعلاه لإضافة نقاط نهاية متوافقة مع OpenAI أو Anthropic",
+ "addOpenAICompatible": "إضافة مزود متوافق مع OpenAI",
+ "addAnthropicCompatible": "إضافة مزود متوافق مع Anthropic",
"addNewProvider": "إضافة مزود جديد",
- "backToProviders": "العودة إلى مقدمي الخدمة",
- "configureNewProvider": "قم بتكوين موفر AI جديد لاستخدامه مع تطبيقاتك.",
- "providerLabel": "مزود",
- "selectProvider": "حدد مزودًا",
- "selectedProvider": "المزود المختار",
+ "backToProviders": "العودة إلى المزودين",
+ "configureNewProvider": "اضبط مزود ذكاء اصطناعي جديدًا لاستخدامه مع تطبيقاتك.",
+ "providerLabel": "المزود",
+ "selectProvider": "اختر مزودًا",
+ "selectedProvider": "المزود المحدد",
"authMethod": "طريقة المصادقة",
- "apiKeyLabel": "مفتاح واجهة برمجة التطبيقات",
- "apiKeyRequired": "مطلوب مفتاح API",
- "selectProviderRequired": "الرجاء اختيار مزود",
- "enterApiKey": "أدخل مفتاح API الخاص بك",
- "apiKeySecure": "سيتم تشفير مفتاح API الخاص بك وتخزينه بشكل آمن.",
- "oauth2Connect": "تواصل مع OAuth2",
+ "apiKeyLabel": "مفتاح API",
+ "apiKeyRequired": "مفتاح API مطلوب",
+ "selectProviderRequired": "يرجى اختيار مزود",
+ "enterApiKey": "أدخل مفتاح API",
+ "apiKeySecure": "سيُشفّر مفتاح API ويُخزّن بأمان.",
+ "oauth2Connect": "الاتصال عبر OAuth2",
"oauth2Label": "OAuth2",
- "oauth2Desc": "قم بتوصيل حسابك باستخدام مصادقة OAuth2.",
+ "oauth2Desc": "اربط حسابك باستخدام مصادقة OAuth2.",
"displayName": "اسم العرض",
- "displayNamePlaceholder": "على سبيل المثال، واجهة برمجة تطبيقات الإنتاج، وبيئة التطوير",
- "displayNameHint": "اختياري. اسم مألوف لتعريف هذا التكوين.",
+ "displayNamePlaceholder": "مثال: الإنتاج أو التطوير",
+ "displayNameHint": "اختياري؛ اسم يسهل تمييز هذا الاتصال.",
"active": "نشط",
"activeDescription": "قم بتمكين هذا الموفر للاستخدام في تطبيقاتك",
"cancel": "إلغاء",
@@ -3730,37 +3730,37 @@
"failedCreate": "فشل في إنشاء الموفر",
"errorOccurred": "حدث خطأ. يرجى المحاولة مرة أخرى.",
"modelStatus": "حالة النموذج",
- "showConfiguredOnly": "Configured only",
- "allModelsOperational": "جميع الموديلات شغالة",
- "modelsWithIssues": "{count} الطراز (النماذج) الذي به مشكلات",
- "allModelsNormal": "جميع النماذج تستجيب بشكل طبيعي.",
- "cooldownCleared": "تم مسح فترة التهدئة لـ {model}",
- "failedClearCooldown": "فشل في مسح فترة التهدئة",
- "loadingAvailability": "جارٍ تحميل مدى توفر الطراز...",
- "clearCooldown": "واضح",
- "clearing": "المقاصة...",
+ "showConfiguredOnly": "المكوّنة فقط",
+ "allModelsOperational": "جميع النماذج تعمل",
+ "modelsWithIssues": "نماذج بها مشكلات: {count}",
+ "allModelsNormal": "جميع النماذج تستجيب بصورة طبيعية.",
+ "cooldownCleared": "مُسحت فترة التهدئة لـ {model}",
+ "failedClearCooldown": "فشل مسح فترة التهدئة",
+ "loadingAvailability": "جارٍ تحميل توفر النماذج...",
+ "clearCooldown": "مسح فترة التهدئة",
+ "clearing": "جارٍ المسح...",
"until": "حتى {time}",
- "providerTestFailed": "فشل اختبار الموفر",
- "providerTestTimeout": "Provider test timed out — too many connections to test at once",
- "modeTest": "{mode} اختبار",
- "passedCount": "تم {count}",
- "failedCount": "فشل {count}",
- "testedCount": "تم اختبار {count}",
+ "providerTestFailed": "فشل اختبار المزود",
+ "providerTestTimeout": "انتهت مهلة اختبار المزود — عدد الاتصالات المطلوب اختبارها دفعة واحدة كبير جدًا",
+ "modeTest": "اختبار {mode}",
+ "passedCount": "ناجح: {count}",
+ "failedCount": "فاشل: {count}",
+ "testedCount": "اختُبر: {count}",
"millisecondsAbbr": "{value}ms",
"okShort": "حسنًا",
"errorShort": "خطأ",
- "noActiveConnectionsInGroup": "لم يتم العثور على اتصالات نشطة لهذه المجموعة.",
- "allTestsPassed": "تم اجتياز جميع اختبارات {total}",
- "testSummary": "تم اجتياز {passed}/{total}، وفشل {failed}",
+ "noActiveConnectionsInGroup": "لا توجد اتصالات نشطة لهذه المجموعة.",
+ "allTestsPassed": "نجحت الاختبارات كلها ({total})",
+ "testSummary": "نجح {passed}/{total}، وفشل {failed}",
"nameLabel": "الاسم",
- "prefixLabel": "بادئة",
+ "prefixLabel": "البادئة",
"baseUrlLabel": "عنوان URL الأساسي",
- "apiTypeLabel": "نوع واجهة برمجة التطبيقات",
- "prefixHint": "مطلوب. بادئة فريدة لأسماء النماذج.",
- "nameHint": "مطلوب. تسمية ودية لهذه العقدة.",
- "baseUrlHint": "مطلوب. عنوان URL الأساسي لواجهة برمجة تطبيقات الموفر.",
- "anthropicPrefixPlaceholder": "ac-منتج",
- "openaiPrefixPlaceholder": "oc-منتج",
+ "apiTypeLabel": "نوع API",
+ "prefixHint": "مطلوب؛ بادئة فريدة لأسماء النماذج.",
+ "nameHint": "مطلوب؛ اسم واضح لهذا الاتصال.",
+ "baseUrlHint": "مطلوب؛ عنوان URL الأساسي لواجهة API الخاصة بالمزود.",
+ "anthropicPrefixPlaceholder": "ac-prod",
+ "openaiPrefixPlaceholder": "oc-prod",
"anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1",
"openaiBaseUrlPlaceholder": "https://api.openai.com/v1",
"validateConnection": "التحقق من صحة الاتصال",
@@ -3774,38 +3774,38 @@
"deleteConnectionConfirmNamed": "هل أنت متأكد أنك تريد حذف {name}؟ لا يمكن التراجع عن هذا الإجراء.",
"batchDeleteSelected": "حذف المحدد ({count})",
"batchDeleteConfirm": "هل تريد حذف {count} اتصال(ات)؟ لا يمكن التراجع عن هذا الإجراء.",
- "batchDeleteSuccess": "تم حذف {count} اتصال(ات)",
- "batchActivateSelected": "__MISSING__:Activate",
- "batchDeactivateSelected": "__MISSING__:Deactivate",
- "batchRetestSelected": "__MISSING__:Retest",
- "batchActivateSuccess": "__MISSING__:Activated {count} connection(s)",
- "batchDeactivateSuccess": "__MISSING__:Deactivated {count} connection(s)",
- "batchUpdatePartial": "__MISSING__:{count} updated, {skipped} skipped (no longer exist)",
- "batchUpdateNone": "__MISSING__:No connections were updated (they may no longer exist)",
- "batchRetestLimit": "__MISSING__:Retest up to {max} connections at a time",
- "noConnectionsToTest": "__MISSING__:No matching connections to test",
+ "batchDeleteSuccess": "تم حذف {count} اتصالات",
+ "batchActivateSelected": "تفعيل",
+ "batchDeactivateSelected": "إلغاء التنشيط",
+ "batchRetestSelected": "إعادة الاختبار",
+ "batchActivateSuccess": "اتصال (اتصالات) {count} المنشط",
+ "batchDeactivateSuccess": "تم إلغاء تنشيط اتصال (اتصالات) {count}",
+ "batchUpdatePartial": "تم تحديث {count}، وتم تخطي {skipped} (لم يعد موجودًا)",
+ "batchUpdateNone": "لم يتم تحديث أي اتصالات (ربما لم تعد موجودة)",
+ "batchRetestLimit": "أعد اختبار ما يصل إلى اتصالات {max} في المرة الواحدة",
+ "noConnectionsToTest": "لا توجد اتصالات مطابقة للاختبار",
"failedSetAlias": "فشل في تعيين الاسم المستعار",
"failedSaveConnection": "فشل حفظ الاتصال",
"failedSaveConnectionRetry": "فشل حفظ الاتصال. يرجى المحاولة مرة أخرى.",
"failedRetestConnection": "فشل في إعادة اختبار الاتصال",
"deleteCompatibleNodeConfirm": "هل تريد حذف العقدة المتوافقة {type} هذه؟",
- "anthropicCompatibleDetails": "تفاصيل متوافقة الأنثروبي",
- "openaiCompatibleDetails": "تفاصيل متوافقة مع OpenAI",
- "messagesApi": "واجهة برمجة تطبيقات الرسائل",
- "responsesApi": "واجهة برمجة التطبيقات للردود",
- "embeddings": "Embeddings",
- "audioTranscriptions": "Audio Transcriptions",
- "audioSpeech": "Audio Speech",
- "imagesGenerations": "Images Generations",
- "chatCompletions": "استكمالات الدردشة",
+ "anthropicCompatibleDetails": "تفاصيل التوافق مع Anthropic",
+ "openaiCompatibleDetails": "تفاصيل التوافق مع OpenAI",
+ "messagesApi": "واجهة Messages API",
+ "responsesApi": "واجهة Responses API",
+ "embeddings": "التضمينات",
+ "audioTranscriptions": "النسخ الصوتي",
+ "audioSpeech": "تحويل النص إلى كلام",
+ "imagesGenerations": "توليد الصور",
+ "chatCompletions": "إكمالات الدردشة",
"importingModels": "جارٍ الاستيراد...",
- "importFromModels": "الاستيراد من / النماذج",
- "modelsImported": "{count} models imported",
+ "importFromModels": "استيراد من /models",
+ "modelsImported": "تم استيراد {count} نموذج",
"allModelsAlreadyImported": "جميع النماذج مستوردة بالفعل",
- "noNewModelsToImport": "لا توجد نماذج جديدة للاستيراد — جميع النماذج موجودة بالفعل في السجل أو قائمة النماذج المخصصة",
- "skippingExistingModels": "تخطي {count} نماذج موجودة",
+ "noNewModelsToImport": "لا توجد نماذج جديدة لاستيرادها — جميعها موجودة في السجل أو قائمة النماذج المخصصة",
+ "skippingExistingModels": "تخطي {count} نموذج موجود",
"autoSync": "المزامنة التلقائية",
- "autoSyncTooltip": "تحديث قائمة النماذج تلقائيًا كل 24 ساعة (قابلة للتكوين عبر MODEL_SYNC_INTERVAL_HOURS)",
+ "autoSyncTooltip": "تحديث قائمة النماذج كل 24 ساعة (يمكن ضبطه عبر MODEL_SYNC_INTERVAL_HOURS)",
"autoSyncEnabled": "تم تمكين المزامنة التلقائية — سيتم تحديث النماذج بشكل دوري",
"autoSyncDisabled": "تم تعطيل المزامنة التلقائية",
"autoSyncToggleFailed": "فشل في تبديل المزامنة التلقائية",
@@ -3822,71 +3822,71 @@
"importFailed": "فشل الاستيراد",
"noNewModelsAdded": "لم تتم إضافة نماذج جديدة.",
"adding": "جارٍ الإضافة...",
- "close": "Close",
+ "close": "إغلاق",
"importingModelsTitle": "استيراد النماذج",
- "copyModel": "نموذج النسخ",
+ "copyModel": "نسخ النموذج",
"filterModels": "تصفية النماذج…",
- "modelsActive": "نشط",
+ "modelsActive": "نشطة",
"showModel": "إظهار النموذج",
"hideModel": "إخفاء النموذج",
"removeModel": "إزالة النموذج",
"rateLimitProtected": "محمي",
- "rateLimitUnprotected": "غير محمية",
- "enableRateLimitProtection": "انقر لتمكين حماية حدود المعدل",
- "disableRateLimitProtection": "انقر لتعطيل حماية حد المعدل",
+ "rateLimitUnprotected": "غير محمي",
+ "enableRateLimitProtection": "انقر لتمكين الحماية من تجاوز حد المعدل",
+ "disableRateLimitProtection": "انقر لتعطيل الحماية من تجاوز حد المعدل",
"productionKey": "مفتاح الإنتاج",
"enterNewApiKey": "أدخل مفتاح API الجديد",
- "codexApplyModalTitle": "تنطبق على الدستور الغذائي المحلي",
+ "codexApplyModalTitle": "تطبيقه على Codex المحلي",
"codexApplyTargetLabel": "مسار الهدف",
- "codexApplyBackupLabel": "النسخ الاحتياطية",
- "codexApplyWarning": "سيحل هذا محل auth.json الموجود. يكمل؟",
- "codexApplyConfirmCheckbox": "أؤكد أنني أريد استبدال ملف auth.json الحالي",
+ "codexApplyBackupLabel": "النسخة الاحتياطية",
+ "codexApplyWarning": "سيستبدل هذا ملف auth.json الحالي. هل تريد المتابعة؟",
+ "codexApplyConfirmCheckbox": "أقرّ باستبدال ملف auth.json الحالي",
"codexApply": "تطبيق",
"bulkTabSingle": "واحد",
"bulkTabBulkAdd": "إضافة بالجملة",
"bulkAddFormatHint": "مفتاح واحد لكل سطر. التنسيق: الاسم|apiKey أو مجرد apiKey (يتم تسميته تلقائيًا بواسطة الفهرس).",
"bulkValidateKeys": "التحقق من صحة كل مفتاح قبل الحفظ (أبطأ)",
"bulkAddAllKeys": "إضافة كافة المفاتيح",
- "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}",
- "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}",
+ "bulkAddedCount": "المفاتيح المضافة: {count, plural, one {أُضيف مفتاح واحد} other {أُضيف # من المفاتيح}}",
+ "bulkFailedCount": "العناصر الفاشلة: {count, plural, one {عنصر واحد فاشل} other {# عناصر فاشلة}}",
"optional": "اختياري",
- "anthropicCompatibleName": "متوافق مع الأنثروبولوجيا",
+ "anthropicCompatibleName": "متوافق مع Anthropic",
"openaiCompatibleName": "متوافق مع OpenAI",
"failedImportModels": "فشل استيراد النماذج",
"noModelsReturnedFromEndpoint": "لم يتم إرجاع أي نماذج من نقطة النهاية /models.",
"importingModelsProgress": "جارٍ استيراد {current} من طرازات {total}...",
"foundModelsStartingImport": "تم العثور على نماذج {count}. جارٍ بدء الاستيراد...",
"importingModelById": "جارٍ استيراد {modelId}...",
- "importSuccessCount": "تم استيراد {count, plural, one {# model} other {# models}} بنجاح!",
+ "importSuccessCount": "تم استيراد {count, plural, one {نموذج واحد} other {# نماذج}} بنجاح!",
"noNewModelsAddedExisting": "لم تتم إضافة أي نماذج جديدة (كلها موجودة بالفعل).",
- "importDoneCount": "✓ تم! {count, plural, one {# model imported.} other {# models imported.}}",
+ "importDoneCount": "✓ تم! {count, plural, one {استُورد نموذج واحد.} other {استُورد # من النماذج.}}",
"unexpectedErrorOccurred": "حدث خطأ غير متوقع",
- "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}",
+ "connectionCountLabel": "عدد الاتصالات: {count, plural, one {اتصال واحد} other {# اتصالات}}",
"messagesPath": "الرسائل",
"responsesPath": "الردود",
"chatCompletionsPath": "الدردشة/الإكمال",
"add": "أضف",
"edit": "تحرير",
"delete": "حذف",
- "anthropic": "أنثروبي",
+ "anthropic": "Anthropic",
"openai": "OpenAI",
"singleConnectionPerCompatible": "يُسمح باتصال واحد فقط لكل عقدة متوافقة. أضف عقدة أخرى إذا كنت بحاجة إلى المزيد من الاتصالات.",
"connections": "اتصالات",
- "providerProxyTitleConfigured": "وكيل الموفر: {host}",
+ "providerProxyTitleConfigured": "بروكسي الموفر: {host}",
"configured": "تم تكوينه",
- "providerProxyConfigureHint": "قم بتكوين الوكيل لجميع اتصالات هذا الموفر",
- "providerProxy": "وكيل الموفر",
- "repairEnv": "Repair env",
- "repairEnvWorking": "Repairing...",
- "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.",
- "repairEnvSuccess": "OAuth defaults restored",
- "repairEnvFailed": "Failed to repair .env",
+ "providerProxyConfigureHint": "قم بتكوين بروكسي لجميع اتصالات هذا الموفر",
+ "providerProxy": "بروكسي الموفر",
+ "repairEnv": "إصلاح ملف البيئة",
+ "repairEnvWorking": "جارٍ الإصلاح...",
+ "repairEnvHint": "استعد قيم OAuth الافتراضية المفقودة إلى .env دون استبدال القيم الموجودة.",
+ "repairEnvSuccess": "تمت استعادة قيم OAuth الافتراضية",
+ "repairEnvFailed": "فشل إصلاح ملف .env",
"noConnectionsYet": "لا توجد اتصالات حتى الآن",
"addFirstConnectionHint": "أضف اتصالك الأول للبدء",
"addConnection": "إضافة اتصال",
"availableModels": "النماذج المتاحة",
- "builtInModels": "Built-in models",
- "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.",
+ "builtInModels": "النماذج المضمّنة",
+ "builtInModelsHint": "نماذج السجل لهذا المزوّد. استخدم رمز القلم لتعيين خيارات التوافق.",
"pageAutoRefresh": "سيتم تحديث الصفحة تلقائيا...",
"statusDisabled": "معطل",
"statusConnected": "متصل",
@@ -3898,7 +3898,7 @@
"statusUnavailable": "غير متاح",
"statusFailed": "فشل",
"statusError": "خطأ",
- "oauthAccount": "حساب أووث",
+ "oauthAccount": "حساب OAuth",
"errorTypeRuntime": "وقت التشغيل المحلي",
"errorTypeUpstreamAuth": "مصادقة المنبع",
"errorTypeMissingCredential": "بيانات الاعتماد مفقودة",
@@ -3912,47 +3912,47 @@
"proxySourceGlobal": "عالمي",
"proxySourceProvider": "مزود",
"proxySourceKey": "مفتاح",
- "proxyConfiguredBySource": "الوكيل ({source}): {host}",
+ "proxyConfiguredBySource": "بروكسي ({source}): {host}",
"autoPriority": "تلقائي: {priority}",
- "proxy": "وكيل",
+ "proxy": "بروكسي",
"retestAuthentication": "إعادة اختبار المصادقة",
"retest": "إعادة الاختبار",
"disableConnection": "تعطيل الاتصال",
"enableConnection": "تمكين الاتصال",
"reauthenticateConnection": "إعادة مصادقة هذا الاتصال",
- "proxyConfig": "تكوين الوكيل",
+ "proxyConfig": "تكوين بروكسي",
"aliasExistsAlert": "الاسم المستعار \"{alias}\" موجود بالفعل. الرجاء استخدام نموذج مختلف أو تعديل الاسم المستعار الموجود.",
- "aliasInputPlaceholder": "alias name",
- "clickToSetAlias": "Click to set alias",
- "clickToEditAlias": "Alias: {alias} (click to edit)",
- "openRouterAnyModelHint": "يدعم OpenRouter أي طراز. إضافة نماذج وإنشاء أسماء مستعارة للوصول السريع.",
- "modelIdFromOpenRouter": "معرف النموذج (من OpenRouter)",
- "openRouterModelPlaceholder": "أنثروبي/كلود-3-أوبوس",
+ "aliasInputPlaceholder": "اسم الاسم المستعار",
+ "clickToSetAlias": "انقر لتعيين اسم مستعار",
+ "clickToEditAlias": "الاسم المستعار: {alias} (انقر للتحرير)",
+ "openRouterAnyModelHint": "يدعم OpenRouter أي نموذج. أضف النماذج وأنشئ أسماء مستعارة للوصول السريع.",
+ "modelIdFromOpenRouter": "معرّف النموذج (من OpenRouter)",
+ "openRouterModelPlaceholder": "anthropic/claude-3-opus",
"customModels": "نماذج مخصصة",
"customModelsHint": "قم بإضافة معرفات النماذج غير الموجودة في القائمة الافتراضية. ستكون هذه متاحة للتوجيه.",
- "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)",
- "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)",
- "compatAdjustmentsTitle": "Compatibility",
- "compatButtonLabel": "Compatibility",
- "compatToolIdShort": "Tool ID 9",
- "compatDeveloperShort": "Developer role",
- "compatDoNotPreserveDeveloper": "Do not preserve developer role",
- "compatBadgeNoPreserve": "No preserve",
- "compatProtocolLabel": "Client request protocol",
- "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).",
- "compatProtocolOpenAI": "OpenAI Chat Completions",
- "compatProtocolOpenAIResponses": "OpenAI Responses API",
- "compatProtocolClaude": "Anthropic Messages",
- "compatUpstreamHeadersLabel": "Extra upstream headers",
- "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.",
- "compatUpstreamHeaderName": "Header name",
- "compatUpstreamHeaderValue": "Value",
- "compatUpstreamAddRow": "Add header",
- "compatUpstreamRemoveRow": "Remove row",
- "compatBadgeUpstreamHeaders": "Headers",
- "perModelQuotaLabel": "Per Model Quota Label",
- "perModelQuotaDescription": "Per Model Quota Description",
- "perModelQuotaToggle": "تبديل الحصص لكل نموذج",
+ "normalizeToolCallIdLabel": "توحيد معرّفات استدعاء الأدوات إلى 9 أحرف (مثل Mistral)",
+ "preserveDeveloperRoleLabel": "الحفاظ على دور المطوّر في استجابات OpenAI (دون تحويله إلى دور النظام)",
+ "compatAdjustmentsTitle": "التوافق",
+ "compatButtonLabel": "التوافق",
+ "compatToolIdShort": "معرّف الأداة: 9 أحرف",
+ "compatDeveloperShort": "دور المطوّر",
+ "compatDoNotPreserveDeveloper": "عدم الحفاظ على دور المطوّر",
+ "compatBadgeNoPreserve": "دون حفظ",
+ "compatProtocolLabel": "بروتوكول طلب العميل",
+ "compatProtocolHint": "تنطبق هذه الخيارات عندما يكتشف OmniRoute شكل الطلب هذا (OpenAI Chat، أو Responses API، أو الرسائل البشرية).",
+ "compatProtocolOpenAI": "استكمالات الدردشة OpenAI",
+ "compatProtocolOpenAIResponses": "واجهة برمجة تطبيقات استجابات OpenAI",
+ "compatProtocolClaude": "رسائل Anthropic",
+ "compatUpstreamHeadersLabel": "ترويسات المنبع الإضافية",
+ "compatUpstreamHeadersHint": "إعداد عالي الصلاحيات — يعامل معاملة بيانات اعتماد API الخاصة بالمزود، لذا لا ينبغي استخدامه إلا من مسؤولين موثوقين. تُدمج الترويسات بعد أن يضيف OmniRoute المصادقة. إذا استخدمت ترويسة مخصصة الاسم نفسه لترويسة موجودة (مثل Authorization)، فستستبدل قيمتك الترويسة المنشأة تلقائيًا بالكامل، بما فيها رمز Bearer. قد يؤدي الإعداد الخاطئ إلى خطأ 401 أو تعطّل مصادقة المنبع. أضف ترويسة واحدة في كل صف. تُحفظ القيمة عند فقدان التركيز أو إغلاق اللوحة.",
+ "compatUpstreamHeaderName": "اسم الترويسة",
+ "compatUpstreamHeaderValue": "القيمة",
+ "compatUpstreamAddRow": "إضافة ترويسة",
+ "compatUpstreamRemoveRow": "إزالة الصف",
+ "compatBadgeUpstreamHeaders": "الترويسات",
+ "perModelQuotaLabel": "حصة لكل نموذج",
+ "perModelQuotaDescription": "تحديد حصة مستقلة لكل نموذج",
+ "perModelQuotaToggle": "تفعيل الحصة لكل نموذج",
"modelId": "معرف النموذج",
"customModelPlaceholder": "على سبيل المثال جي بي تي-4.5-توربو",
"loading": "جار التحميل...",
@@ -3968,7 +3968,7 @@
"modelRemovedSuccess": "تمت إزالة النموذج بنجاح",
"failedDeleteModelTryAgain": "فشل في حذف النموذج. يرجى المحاولة مرة أخرى.",
"compatibleModelsDescription": "قم بإضافة نماذج متوافقة مع {type} يدويًا أو قم باستيرادها من نقطة النهاية /models.",
- "anthropicCompatibleModelPlaceholder": "كلود-3-أوبوس-20240229",
+ "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229",
"openaiCompatibleModelPlaceholder": "gpt-4o",
"apiKeyValidationFailed": "فشل التحقق من صحة مفتاح API. يرجى التحقق من المفتاح الخاص بك والمحاولة مرة أخرى.",
"addProviderApiKeyTitle": "أضف {provider} مفتاح واجهة برمجة التطبيقات",
@@ -3987,54 +3987,54 @@
"email": "البريد الإلكتروني",
"healthCheckMinutes": "فحص الصحة (دقيقة)",
"healthCheckHint": "الفاصل الزمني لتحديث الرمز المميز. 0 = معطل.",
- "selectAllModels": "Select all",
- "deselectAllModels": "Deselect all",
- "modelsActiveCount": "{active}/{total} active",
- "noModelsMatch": "No models match \"{filter}\"",
- "groupLabel": "Environment",
- "groupPlaceholder": "e.g. eKaizen, Personal",
+ "selectAllModels": "حدد الكل",
+ "deselectAllModels": "قم بإلغاء تحديد الكل",
+ "modelsActiveCount": "{active}/{total} نشط",
+ "noModelsMatch": "لا توجد نماذج مطابقة \"{filter}\"",
+ "groupLabel": "البيئة",
+ "groupPlaceholder": "على سبيل المثال كايزن، شخصي",
"failedTestConnection": "فشل في اختبار الاتصال",
"failed": "فشل",
"leaveBlankKeepCurrentApiKey": "اتركه فارغًا للاحتفاظ بمفتاح API الحالي.",
"editCompatibleTitle": "تحرير {type} متوافق",
- "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.",
+ "compatibleBaseUrlHint": "عنوان URL الجذر لواجهة برمجة التطبيقات المتوافقة مع {type}. استخدم الإعدادات المتقدمة لمسارات نقطة النهاية المخصصة.",
"apiKeyForCheck": "مفتاح API (للفحص)",
"compatibleProdPlaceholder": "{type} متوافق (المنتج)",
- "tokenRefreshed": "Token refreshed successfully",
- "tokenRefreshFailed": "Token refresh failed",
- "applyCodexAuthLocal": "Apply auth",
- "exportCodexAuthFile": "Export auth",
- "applyClaudeAuthLocal": "تطبيق المصادقة",
- "exportClaudeAuthFile": "مصادقة التصدير",
- "importClaudeAuth": "مصادقة الاستيراد",
- "claudeApplyModalTitle": "تنطبق على رمز كلود المحلي",
+ "tokenRefreshed": "تم تحديث الرمز المميز بنجاح",
+ "tokenRefreshFailed": "فشل تحديث الرمز المميز",
+ "applyCodexAuthLocal": "تطبيق المصادقة",
+ "exportCodexAuthFile": "تصدير المصادقة",
+ "applyClaudeAuthLocal": "تطبيق مصادقة Claude",
+ "exportClaudeAuthFile": "تصدير مصادقة Claude",
+ "importClaudeAuth": "استيراد مصادقة Claude",
+ "claudeApplyModalTitle": "تطبيقه على Claude Code المحلي",
"claudeApplyTargetLabel": "مسار الهدف",
- "claudeApplyBackupLabel": "النسخ الاحتياطية",
- "claudeApplyMcpHint": "سيتم الحفاظ على حالة MCP OAuth الحالية.",
- "claudeApplyWarning": "سيحل هذا محل قسم claudeAiOauth الموجود. يكمل؟",
- "claudeApplyConfirmCheckbox": "أؤكد أنني أرغب في استبدال قسم claudeAiOauth الموجود",
+ "claudeApplyBackupLabel": "النسخة الاحتياطية",
+ "claudeApplyMcpHint": "سيُحتفظ بحالة MCP OAuth الحالية.",
+ "claudeApplyWarning": "سيستبدل هذا قسم claudeAiOauth الحالي. هل تريد المتابعة؟",
+ "claudeApplyConfirmCheckbox": "أقرّ باستبدال قسم claudeAiOauth الحالي",
"claudeApply": "تطبيق",
- "claudeAuthAppliedLocal": "يتم تطبيق مصادقة كلود محليًا",
- "claudeAuthApplyFailed": "فشل في تطبيق مصادقة كلود محليًا",
- "claudeAuthExported": "تم تصدير ملف مصادقة كلود",
- "claudeAuthExportFailed": "فشل تصدير ملف مصادقة كلود",
- "claudeImportModalTitle": "استيراد كلود أوث",
- "claudeImportTabSingle": "واحد",
- "claudeImportTabBulk": "السائبة",
- "claudeImportTabUpload": "تحميل الملف",
- "claudeImportTabPaste": "لصق جسون",
+ "claudeAuthAppliedLocal": "طُبقت مصادقة Claude محليًا",
+ "claudeAuthApplyFailed": "فشل تطبيق مصادقة Claude محليًا",
+ "claudeAuthExported": "تم تصدير ملف مصادقة Claude",
+ "claudeAuthExportFailed": "فشل تصدير ملف مصادقة Claude",
+ "claudeImportModalTitle": "استيراد مصادقة Claude",
+ "claudeImportTabSingle": "مفرد",
+ "claudeImportTabBulk": "مجمع",
+ "claudeImportTabUpload": "رفع ملف",
+ "claudeImportTabPaste": "لصق JSON",
"claudeImportFileLabel": "اختر .credentials.json",
"claudeImportPasteLabel": "الصق محتوى JSON",
"claudeImportEmailLabel": "البريد الإلكتروني للحساب",
"claudeImportNameLabel": "اسم الاتصال (اختياري)",
"claudeImportOverwriteLabel": "استبدل الاتصال الحالي إذا كان الحساب موجودًا بالفعل",
"claudeImportSubmit": "استيراد",
- "claudeImportSuccess": "تم استيراد اتصال كلود بنجاح",
+ "claudeImportSuccess": "تم استيراد اتصال Claude بنجاح",
"claudeImportInvalidJson": "تعذر تحليل الملف بتنسيق JSON",
"claudeImportInvalidShape": "الملف ليس .credentials.json صالحًا",
"claudeImportDuplicate": "الحساب موجود بالفعل - قم بتمكين \"استبدال الحساب الموجود\" للكتابة فوقه",
"claudeImportIdentityUnverified": "تعذر على Bootstrap التحقق من الحساب. قم بتمكين \"استبدال الموجود\" أو قم بتقديم بريد إلكتروني.",
- "claudeImportFailed": "فشل استيراد مصادقة كلود",
+ "claudeImportFailed": "فشل استيراد مصادقة Claude",
"claudeImportBulkModeUpload": "تحميل الملفات",
"claudeImportBulkModePaste": "لصق مجموعة JSON",
"claudeImportBulkModeZip": "تحميل الرمز البريدي",
@@ -4042,31 +4042,31 @@
"claudeImportBulkPasteHint": "لصق مصفوفة من الكائنات: [{ json, name?, email? }، ...]",
"claudeImportBulkZipHint": "ملف مضغوط يحتوي على إدخالات .json. الحد الأقصى 50 إدخالاً، ومساحة 10 ميجابايت مفتوحة.",
"claudeImportBulkSubmit": "استيراد الكل",
- "claudeImportBulkSuccess": "تم استيراد {count} اتصالات كلود",
+ "claudeImportBulkSuccess": "تم استيراد {count} من اتصالات Claude",
"claudeImportBulkFailed": "فشل استيراد بعض الإدخالات",
"claudeImportBulkZipExtracting": "جارٍ استخراج الرمز البريدي...",
"claudeImportBulkZipError": "فشل في استخراج الرمز البريدي",
- "geminiAuthAppliedLocal": "يتم تطبيق مصادقة الجوزاء محليًا",
- "geminiAuthApplyFailed": "فشل تطبيق مصادقة الجوزاء محليًا",
- "geminiAuthExported": "تم تصدير ملف مصادقة الجوزاء",
+ "geminiAuthAppliedLocal": "طُبقت مصادقة Gemini محليًا",
+ "geminiAuthApplyFailed": "فشل تطبيق مصادقة Gemini محليًا",
+ "geminiAuthExported": "تم تصدير ملف مصادقة Gemini",
"geminiAuthExportFailed": "فشل تصدير ملف مصادقة Gemini",
- "geminiImportModalTitle": "استيراد مصادقة الجوزاء",
- "geminiImportTabSingle": "واحد",
- "geminiImportTabBulk": "السائبة",
- "geminiImportTabUpload": "تحميل الملف",
- "geminiImportTabPaste": "لصق جسون",
+ "geminiImportModalTitle": "استيراد مصادقة Gemini",
+ "geminiImportTabSingle": "مفرد",
+ "geminiImportTabBulk": "مجمع",
+ "geminiImportTabUpload": "رفع ملف",
+ "geminiImportTabPaste": "لصق JSON",
"geminiImportFileLabel": "اختر oauth_creds.json",
"geminiImportPasteLabel": "الصق محتوى JSON",
"geminiImportEmailLabel": "البريد الإلكتروني للحساب",
"geminiImportNameLabel": "اسم الاتصال (اختياري)",
"geminiImportOverwriteLabel": "استبدل الاتصال الحالي إذا كان الحساب موجودًا بالفعل",
"geminiImportSubmit": "استيراد",
- "geminiImportSuccess": "تم استيراد اتصال الجوزاء بنجاح",
+ "geminiImportSuccess": "تم استيراد اتصال Gemini بنجاح",
"geminiImportInvalidJson": "تعذر تحليل الملف بتنسيق JSON",
"geminiImportInvalidShape": "الملف ليس oauth_creds.json صالحًا",
"geminiImportDuplicate": "الحساب موجود بالفعل - قم بتمكين \"استبدال الحساب الموجود\" للكتابة فوقه",
"geminiImportIdentityUnverified": "تعذر التحقق من الهوية من id_token. قم بتمكين \"استبدال الموجود\" أو قم بتقديم بريد إلكتروني.",
- "geminiImportFailed": "فشل استيراد مصادقة الجوزاء",
+ "geminiImportFailed": "فشل استيراد مصادقة Gemini",
"geminiImportBulkModeUpload": "تحميل الملفات",
"geminiImportBulkModePaste": "لصق مجموعة JSON",
"geminiImportBulkModeZip": "تحميل الرمز البريدي",
@@ -4074,20 +4074,20 @@
"geminiImportBulkPasteHint": "لصق مصفوفة من الكائنات: [{ json, name?, email? }، ...]",
"geminiImportBulkZipHint": "ملف مضغوط يحتوي على إدخالات oauth_creds.json. الحد الأقصى 50 إدخالاً، ومساحة 10 ميجابايت مفتوحة.",
"geminiImportBulkSubmit": "استيراد الكل",
- "geminiImportBulkSuccess": "استيراد {count} اتصالات الجوزاء",
+ "geminiImportBulkSuccess": "تم استيراد {count} من اتصالات Gemini",
"geminiImportBulkFailed": "فشل استيراد بعض الإدخالات",
"geminiImportBulkZipExtracting": "جارٍ استخراج الرمز البريدي...",
"geminiImportBulkZipError": "فشل في استخراج الرمز البريدي",
- "codexAuthAppliedLocal": "Codex auth.json applied locally",
- "codexAuthApplyFailed": "Failed to apply Codex auth.json locally",
- "codexAuthExported": "Codex auth.json exported",
- "codexAuthExportFailed": "Failed to export Codex auth.json",
- "importCodexAuth": "مصادقة الاستيراد",
- "codexImportModalTitle": "استيراد مصادقة الدستور الغذائي",
- "codexImportTabSingle": "واحد",
- "codexImportTabBulk": "السائبة",
- "codexImportTabUpload": "تحميل الملف",
- "codexImportTabPaste": "لصق جسون",
+ "codexAuthAppliedLocal": "تم تطبيق auth.json الخاص بـ Codex محليًا",
+ "codexAuthApplyFailed": "فشل تطبيق auth.json الخاص بـ Codex محليًا",
+ "codexAuthExported": "تم تصدير auth.json الخاص بـ Codex",
+ "codexAuthExportFailed": "فشل تصدير auth.json الخاص بـ Codex",
+ "importCodexAuth": "استيراد مصادقة Codex",
+ "codexImportModalTitle": "استيراد مصادقة Codex",
+ "codexImportTabSingle": "مفرد",
+ "codexImportTabBulk": "مجمع",
+ "codexImportTabUpload": "رفع ملف",
+ "codexImportTabPaste": "لصق JSON",
"codexImportFileLabel": "اختر auth.json",
"codexImportFileHint": "حدد ملف auth.json الذي تم تصديره من Codex أو من OmniRoute.",
"codexImportPasteLabel": "الصق محتوى JSON",
@@ -4115,202 +4115,202 @@
"codexImportBulkFailed": "فشل {count}",
"codexImportBulkZipExtracting": "جارٍ استخراج الرمز البريدي...",
"codexImportBulkZipError": "فشل في استخراج الرمز البريدي",
- "advancedSettings": "Advanced Settings",
- "chatPathLabel": "Chat Endpoint Path",
+ "advancedSettings": "الإعدادات المتقدمة",
+ "chatPathLabel": "مسار نقطة نهاية الدردشة",
"chatPathPlaceholder": "/chat/completions",
- "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)",
- "modelsPathLabel": "Models Endpoint Path",
+ "chatPathHint": "مسار دردشة مخصص للمزوّدين ذوي واجهات API غير القياسية (مثل /v4/chat/completions)",
+ "modelsPathLabel": "مسار نقطة نهاية النماذج",
"modelsPathPlaceholder": "/models",
- "modelsPathHint": "Custom models path for validation (e.g. /v4/models)",
- "statusDeactivated": "Deactivated (Manual)",
- "statusBanned": "Banned / Sandbox Violation",
- "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted",
- "showEmails": "Show all emails",
- "hideEmails": "Hide all emails",
+ "modelsPathHint": "مسار النماذج المخصصة للتحقق من صحتها (على سبيل المثال /v4/models)",
+ "statusDeactivated": "معطل (يدوي)",
+ "statusBanned": "محظور / انتهاك وضع الحماية",
+ "statusCreditsExhausted": "رصيد غير كافي / الحصة استنفدت",
+ "showEmails": "إظهار كافة رسائل البريد الإلكتروني",
+ "hideEmails": "إخفاء كافة رسائل البريد الإلكتروني",
"a": "A",
- "accountConcurrencyCapHint": "Account Concurrency Cap Hint",
- "accountConcurrencyCapLabel": "Account Concurrency Cap Label",
- "accountIdHint": "Account Id Hint",
- "accountIdLabel": "Account Id Label",
- "accountIdPlaceholder": "Account Id Placeholder",
- "addAnotherApiKey": "Add another API key or paste multiple keys",
- "addCcCompatible": "Add Cc Compatible",
- "aggregatorsGateways": "Aggregators Gateways",
- "enterpriseCloud": "المؤسسة والسحابة",
- "apiFormatLabel": "Api Format Label",
- "apiKeyOptionalHint": "Api Key Optional Hint",
- "apiKeyOptionalLabel": "Api Key Optional Label",
- "apiRegionChina": "Api Region China",
- "apiRegionHint": "Api Region Hint",
- "apiRegionInternational": "Api Region International",
- "apiRegionLabel": "Api Region Label",
- "apikey": "Apikey",
- "audio": "Audio",
- "audioProvidersHeading": "Audio Providers Heading",
- "cloudAgentProviders": "موفرو الوكيل السحابي",
- "audioShortLabel": "Audio Short Label",
- "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint",
- "bailianBaseUrlHint": "Bailian Base Url Hint",
- "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.",
+ "accountConcurrencyCapHint": "الحد الأقصى للطلبات المتزامنة لهذا الحساب",
+ "accountConcurrencyCapLabel": "حد تزامن الحساب",
+ "accountIdHint": "معرّف الحساب لدى المزود",
+ "accountIdLabel": "معرّف الحساب",
+ "accountIdPlaceholder": "معرّف الحساب",
+ "addAnotherApiKey": "أضف مفتاح API آخر أو الصق عدة مفاتيح",
+ "addCcCompatible": "إضافة مزود متوافق مع Claude Code",
+ "aggregatorsGateways": "المجمّعات والبوابات",
+ "enterpriseCloud": "المؤسسات والسحابة",
+ "apiFormatLabel": "تنسيق API",
+ "apiKeyOptionalHint": "اتركه فارغًا إذا لم يكن مفتاح API مطلوبًا",
+ "apiKeyOptionalLabel": "مفتاح API (اختياري)",
+ "apiRegionChina": "الصين",
+ "apiRegionHint": "اختر منطقة API",
+ "apiRegionInternational": "دولي",
+ "apiRegionLabel": "منطقة API",
+ "apikey": "مفتاح API",
+ "audio": "الصوت",
+ "audioProvidersHeading": "مزودو الصوت",
+ "cloudAgentProviders": "مزودو الوكلاء السحابيين",
+ "audioShortLabel": "الصوت",
+ "azureOpenAiBaseUrlHint": "عنوان URL الأساسي لـ Azure OpenAI",
+ "bailianBaseUrlHint": "عنوان URL الأساسي لـ Bailian",
+ "claudeWebCookieHint": "افتح claude.ai ← أدوات المطوّر ← التطبيق ← ملفات تعريف الارتباط ← claude.ai، ثم انسخ قيمة sessionKey. تحتاج أيضًا إلى cf_clearance و__cf_bm و_cfuvid الخاصة بـ Cloudflare.",
"claudeWebCookiePlaceholder": "sessionKey=sk-ant-...",
- "blackboxWebCookieHint": "Blackbox Web Cookie Hint",
- "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder",
- "t3ChatWebCookieHint": "افتح t3.chat → DevTools → التطبيق → التخزين المحلي → https://t3.chat، انسخ \"convex-session-id\". ثم افتح DevTools → Network، وانسخ رأس ملف تعريف الارتباط الكامل من أي طلب دردشة. قم بلصق كلا القيمتين في الحقول أدناه.",
- "t3ChatWebCookiePlaceholder": "معرف الجلسة المحدبة=abc123...",
- "blockClaudeExtraUsageDescription": "Block Claude Extra Usage Description",
- "blockClaudeExtraUsageLabel": "Block Claude Extra Usage Label",
- "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}",
- "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}",
- "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.",
- "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint",
- "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder",
- "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint",
- "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description",
- "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label",
- "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.",
- "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta",
- "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.",
- "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display",
- "ccCompatibleDetailsTitle": "Cc Compatible Details Title",
- "ccCompatibleLabel": "Cc Compatible Label",
- "ccCompatibleModelsDescription": "Cc Compatible Models Description",
- "ccCompatibleNameHint": "Cc Compatible Name Hint",
- "ccCompatibleNamePlaceholder": "Cc Compatible Name Placeholder",
- "ccCompatiblePrefixHint": "Cc Compatible Prefix Hint",
- "ccCompatiblePrefixPlaceholder": "Cc Compatible Prefix Placeholder",
- "ccCompatibleValidationHint": "Cc Compatible Validation Hint",
- "claudeExtraUsageShort": "Claude Extra Usage Short",
- "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title",
- "codex5hToggleTitle": "Codex5H Toggle Title",
- "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.",
- "codexFastServiceTierLabel": "Codex fast service tier",
- "codexWeeklyToggleTitle": "Codex Weekly Toggle Title",
- "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder",
- "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder",
- "compatible": "Compatible",
- "configuredCount": "Configured Count",
- "consoleApiKeyOracleHint": "Console Api Key Oracle Hint",
- "consoleApiKeyOracleLabel": "Console Api Key Oracle Label",
- "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder",
+ "blackboxWebCookieHint": "ألصق ملف تعريف ارتباط جلسة Blackbox Web",
+ "blackboxWebCookiePlaceholder": "ملف تعريف ارتباط Blackbox Web",
+ "t3ChatWebCookieHint": "افتح t3.chat ← DevTools ← Application ← Local Storage ← https://t3.chat، ثم انسخ \"convex-session-id\". بعد ذلك افتح DevTools ← Network وانسخ ترويسة Cookie كاملة من أي طلب دردشة. ألصق القيمتين في الحقلين أدناه.",
+ "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...",
+ "blockClaudeExtraUsageDescription": "امنع استخدام رصيد Claude الإضافي بعد استنفاد الحصة المضمّنة",
+ "blockClaudeExtraUsageLabel": "حظر استخدام Claude الإضافي",
+ "bulkPasteAdded": "المفاتيح المضافة: {count, plural, one {أُضيف مفتاح واحد} other {أُضيف # من المفاتيح}}",
+ "bulkPasteDuplicatesIgnored": "التكرارات المتجاهلة: {count, plural, one {تُخطي تكرار واحد} other {تُخطي # من التكرارات}}",
+ "bulkPasteHint": "ألصق مفتاح API واحدًا في كل سطر. تُتجاهل الأسطر الفارغة والمفاتيح المكررة.",
+ "ccCompatibleBaseUrlHint": "عنوان URL الأساسي للمزود المتوافق مع Claude Code",
+ "ccCompatibleBaseUrlPlaceholder": "عنوان URL الأساسي للمزود",
+ "ccCompatibleChatPathHint": "مسار الدردشة للمزود المتوافق مع Claude Code",
+ "ccCompatibleContext1mDescription": "تمكين نافذة سياق بمليون رمز للمزود المتوافق مع Claude Code",
+ "ccCompatibleContext1mLabel": "سياق مليون رمز",
+ "ccCompatibleRedactThinkingDescription": "يضيف ترويسة الإصدار التجريبي redact-thinking لخدمات المنبع المتوافقة مع Claude Code التي تتطلب إخفاء تدفقات تفكير Claude.",
+ "ccCompatibleRedactThinkingLabel": "تمكين redact-thinking التجريبي",
+ "ccCompatibleSummarizeThinkingDescription": "يضيف `display: \"summarized\"` إلى طلبات التفكير المتوافقة مع Claude Code لكي تبث نماذج Claude المدعومة أجزاء التفكير المرئية.",
+ "ccCompatibleSummarizeThinkingLabel": "تمكين عرض التفكير الملخّص",
+ "ccCompatibleDetailsTitle": "تفاصيل التوافق مع Claude Code",
+ "ccCompatibleLabel": "متوافق مع Claude Code",
+ "ccCompatibleModelsDescription": "أضف نماذج متوافقة مع Claude Code",
+ "ccCompatibleNameHint": "اسم واضح لهذا المزود المتوافق",
+ "ccCompatibleNamePlaceholder": "مثال: Claude Code Production",
+ "ccCompatiblePrefixHint": "بادئة فريدة لأسماء النماذج",
+ "ccCompatiblePrefixPlaceholder": "cc-prod",
+ "ccCompatibleValidationHint": "يُتحقق من الاتصال باستخدام عنوان URL والمفتاح المحددين",
+ "claudeExtraUsageShort": "استخدام Claude الإضافي",
+ "claudeExtraUsageToggleTitle": "تبديل استخدام Claude الإضافي",
+ "codex5hToggleTitle": "تبديل حصة Codex لخمس ساعات",
+ "codexFastServiceTierDescription": "استخدم طبقة الخدمة ذات الأولوية لطلبات Codex عندما تكون متاحة.",
+ "codexFastServiceTierLabel": "طبقة Codex السريعة",
+ "codexWeeklyToggleTitle": "تبديل حصة Codex الأسبوعية",
+ "compatUpstreamHeaderNamePlaceholder": "اسم الترويسة",
+ "compatUpstreamHeaderValuePlaceholder": "قيمة الترويسة",
+ "compatible": "متوافق",
+ "configuredCount": "عدد العناصر المكوّنة",
+ "consoleApiKeyOracleHint": "مفتاح Console API الخاص بـ Oracle",
+ "consoleApiKeyOracleLabel": "مفتاح Oracle Console API",
+ "consoleApiKeyOraclePlaceholder": "ألصق مفتاح Oracle Console API",
"newApiUserIdLabel": "معرّف مستخدم New-API",
"newApiUserIdPlaceholder": "مثال: 12345",
- "newApiUserIdHint": "قيمة رأس New-Api-User الخاص بـ AgentRouter، تُستخدم مع مفتاح API لوحة التحكم لجلب رصيد الحصة.",
- "cpaModeDisabledTitle": "Cpa Mode Disabled Title",
- "cpaModeEnabledTitle": "Cpa Mode Enabled Title",
- "customUserAgentHint": "Custom User Agent Hint",
- "customUserAgentLabel": "Custom User Agent Label",
- "databricksBaseUrlHint": "Databricks Base Url Hint",
- "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.",
- "defaultThinkingStrengthLabel": "Default thinking strength",
- "deleteAllExtraApiKeys": "Delete all",
- "excludedModelsHint": "Excluded Models Hint",
- "excludedModelsLabel": "Excluded Models Label",
- "excludedModelsPlaceholder": "Excluded Models Placeholder",
- "expirationBannerExpired": "Expiration Banner Expired",
- "expirationBannerExpiredDesc": "Expiration Banner Expired Desc",
- "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon",
- "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc",
- "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}",
- "extraApiKeysHint": "Extra Api Keys Hint",
- "extraApiKeysLabel": "Extra Api Keys Label",
- "apiKeyHealthLabel": "API Key Health",
- "apiKeyStatusActive": "Active",
- "apiKeyStatusWarning": "Warning ({count} failures)",
- "apiKeyStatusInvalid": "Invalid",
- "primaryKey": "Primary Key",
- "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.",
- "apiKeyInvalidAlertTitle": "API Key Health Alert",
- "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.",
- "apiKeyWarningAlertTitle": "API Key Warning",
- "googlePseInfo": "Google Pse Info",
- "antigravityProjectIdHint": "تجاوز اختياري لطلبات Antigravity Cloud Code. اتركه فارغًا لاستخدام المشروع الذي تم اكتشافه أثناء Google OAuth.",
- "antigravityClientProfileLabel": "__MISSING__:Client profile",
- "antigravityClientProfileHint": "__MISSING__:Choose which Antigravity client identity OmniRoute presents to the API.",
- "antigravityClientProfileIde": "__MISSING__:IDE",
- "antigravityClientProfileHarness": "__MISSING__:Harness / CLI",
- "codexFastTierActiveChip": "__MISSING__:Codex Fast tier is active",
- "tierFast": "__MISSING__:Fast",
- "antigravityProjectIdLabel": "معرف مشروع جوجل السحابي",
- "antigravityProjectIdPlaceholder": "معرف مشروع gcp الخاص بي",
- "grokWebCookieHint": "Grok Web Cookie Hint",
- "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder",
- "herokuBaseUrlHint": "Heroku Base Url Hint",
- "hideEmail": "Hide Email",
- "imageProviders": "Image Providers",
- "videoProviders": "توليد الفيديو",
+ "newApiUserIdHint": "قيمة New-Api-User الخاص بـ AgentRouter، وبالتالي مع مفتاح API لوحة التحكم لجلب رصيد الحصة.",
+ "cpaModeDisabledTitle": "وضع CPA معطل",
+ "cpaModeEnabledTitle": "وضع CPA مفعّل",
+ "customUserAgentHint": "اتركه فارغًا لاستخدام وكيل المستخدم الافتراضي",
+ "customUserAgentLabel": "وكيل المستخدم المخصص",
+ "databricksBaseUrlHint": "عنوان URL الأساسي لـ Databricks",
+ "defaultThinkingStrengthHint": "يُستخدم عندما لا يحدد الطلب جهد الاستدلال.",
+ "defaultThinkingStrengthLabel": "قوة التفكير الافتراضية",
+ "deleteAllExtraApiKeys": "حذف الكل",
+ "excludedModelsHint": "نماذج لا ينبغي عرضها أو توجيه الطلبات إليها",
+ "excludedModelsLabel": "النماذج المستبعدة",
+ "excludedModelsPlaceholder": "نموذج واحد في كل سطر",
+ "expirationBannerExpired": "انتهت الصلاحية",
+ "expirationBannerExpiredDesc": "انتهت صلاحية بيانات الاعتماد؛ جدّدها لاستعادة الوصول",
+ "expirationBannerExpiringSoon": "ستنتهي الصلاحية قريبًا",
+ "expirationBannerExpiringSoonDesc": "ستنتهي صلاحية بيانات الاعتماد قريبًا؛ جدّدها لتجنب انقطاع الخدمة",
+ "extraApiKeyMasked": "المفتاح {index}: {prefix}••••{suffix}",
+ "extraApiKeysHint": "مفاتيح إضافية تُستخدم بالتناوب",
+ "extraApiKeysLabel": "مفاتيح API إضافية",
+ "apiKeyHealthLabel": "صحة مفتاح API",
+ "apiKeyStatusActive": "نشط",
+ "apiKeyStatusWarning": "تحذير (فشل {count})",
+ "apiKeyStatusInvalid": "غير صالح",
+ "primaryKey": "المفتاح الأساسي",
+ "apiKeyInvalidAlert": "تم وضع علامة على مفتاح (مفاتيح) {count} API على أنها غير صالحة بسبب فشل المصادقة في الاتصالات: {connections}. سيتم تخطيهم بالتناوب. انقر للمراجعة.",
+ "apiKeyInvalidAlertTitle": "تنبيه صحة مفتاح API",
+ "apiKeyWarningAlert": "مفتاح (مفاتيح) واجهة برمجة التطبيقات {count} في حالة التحذير بسبب ارتفاع معدل الفشل في الاتصالات: {connections}. مراجعة لمنع مشاكل التناوب.",
+ "apiKeyWarningAlertTitle": "تحذير مفتاح واجهة برمجة التطبيقات",
+ "googlePseInfo": "معلومات Google PSE",
+ "antigravityProjectIdHint": "تجاوز اختياري لطلبات Antigravity Cloud Code. اتركه بالكامل لاستخدام المشروع الذي تم اكتشافه أثناء Google OAuth.",
+ "antigravityClientProfileLabel": "الملف الشخصي للعميل",
+ "antigravityClientProfileHint": "اختر هوية عميل Antigravity التي يقدمها OmniRoute إلى واجهة برمجة التطبيقات.",
+ "antigravityClientProfileIde": "بيئة تطوير متكاملة",
+ "antigravityClientProfileHarness": "أداة التشغيل / CLI",
+ "codexFastTierActiveChip": "طبقة Codex السريعة نشطة",
+ "tierFast": "سريع",
+ "antigravityProjectIdLabel": "معرّف مشروع Google Cloud",
+ "antigravityProjectIdPlaceholder": "my-gcp-project-id",
+ "grokWebCookieHint": "ألصق ملف تعريف ارتباط جلسة Grok",
+ "grokWebCookiePlaceholder": "ملف تعريف ارتباط Grok",
+ "herokuBaseUrlHint": "عنوان URL الأساسي لـ Heroku",
+ "hideEmail": "إخفاء البريد الإلكتروني",
+ "imageProviders": "مزودو الصور",
+ "videoProviders": "مزودو الفيديو",
"embeddingRerankProviders": "التضمين وإعادة الترتيب",
- "imagesShortLabel": "Images Short Label",
- "llmProviders": "Llm Providers",
- "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint",
- "localProviderBaseUrlHint": "Local Provider Base Url Hint",
- "localProviders": "Local Providers",
- "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error",
- "museSparkWebCookieHint": "Muse Spark Web Cookie Hint",
- "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder",
- "oauth": "Oauth",
- "openCliTools": "Open Cli Tools",
- "openSettings": "Open Settings",
- "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.",
- "openaiResponsesStoreLabel": "OpenAI Responses store",
- "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info",
- "perplexityWebCookieHint": "Perplexity Web Cookie Hint",
- "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder",
- "personalAccessTokenLabel": "Personal Access Token Label",
- "qoderPatHint": "Qoder Pat Hint",
- "qoderPatPlaceholder": "Qoder Pat Placeholder",
- "refreshOauthTokenTitle": "Refresh Oauth Token Title",
- "regionHint": "Region Hint",
- "regionLabel": "Region Label",
- "removeThisKey": "Remove This Key",
- "routingTagsHint": "Routing Tags Hint",
- "routingTagsLabel": "Routing Tags Label",
- "routingTagsPlaceholder": "Routing Tags Placeholder",
- "search": "Search",
- "searchEngineIdHint": "Search Engine Id Hint",
- "searchEngineIdLabel": "Search Engine Id Label",
- "searchEngineIdRequired": "Search Engine Id Required",
- "searchProvider": "Search Provider",
- "searchProviderDesc": "Search Provider Desc",
- "searchProviders": "البحث عن موفري الخدمة...",
- "searchProvidersHeading": "Search Providers Heading",
- "searxngBaseUrlHint": "Searxng Base Url Hint",
- "searxngInfo": "Searxng Info",
- "sessionCookieLabel": "Session Cookie Label",
- "showEmail": "Show Email",
- "snowflakeBaseUrlHint": "Snowflake Base Url Hint",
- "supportedEndpointAudio": "Supported Endpoint Audio",
- "supportedEndpointChat": "Supported Endpoint Chat",
- "supportedEndpointEmbeddings": "Supported Endpoint Embeddings",
- "supportedEndpointImages": "Supported Endpoint Images",
- "supportedEndpointsLabel": "Supported Endpoints Label",
- "tagGroupHint": "Tag Group Hint",
- "tagGroupLabel": "Tag Group Label",
- "tagGroupPlaceholder": "Tag Group Placeholder",
- "testModel": "Test Model",
- "testingModel": "Testing Model",
- "toggleOffShort": "Toggle Off Short",
- "toggleOnShort": "Toggle On Short",
- "tokenExpiredBadge": "Token Expired Badge",
- "tokenExpiredTitle": "Token Expired Title",
- "tokenExpiresSoonTitle": "Token Expires Soon Title",
- "tokenShort": "Token Short",
- "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}",
- "unhideModel": "Unhide Model",
- "upstreamProxyProviders": "Upstream Proxy Providers",
- "validationModelIdHint": "Validation Model Id Hint",
- "validationModelIdLabel": "Validation Model Id Label",
- "validationModelIdPlaceholder": "Validation Model Id Placeholder",
- "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token",
- "webCookieProviders": "Web Cookie Providers",
- "weeklyShort": "Weekly Short",
- "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint",
- "zedImportButton": "Zed Import Button",
- "zedImportFailed": "Zed Import Failed",
- "zedImportHint": "Zed Import Hint",
- "zedImportNetworkError": "Zed Import Network Error",
- "zedImportNone": "Zed Import None",
- "zedImportSuccess": "Zed Import Success",
- "zedImporting": "Zed Importing",
+ "imagesShortLabel": "الصور",
+ "llmProviders": "مزودو LLM",
+ "localProviderApiKeyOptionalHint": "مفتاح API اختياري للمزود المحلي",
+ "localProviderBaseUrlHint": "عنوان URL الأساسي للمزود المحلي",
+ "localProviders": "المزودون المحليون",
+ "maxConcurrentWholeNumberError": "يجب أن يكون الحد الأقصى للتزامن عددًا صحيحًا",
+ "museSparkWebCookieHint": "ألصق ملف تعريف ارتباط جلسة Muse Spark",
+ "museSparkWebCookiePlaceholder": "ملف تعريف ارتباط Muse Spark",
+ "oauth": "OAuth",
+ "openCliTools": "افتح أدوات CLI",
+ "openSettings": "افتح الإعدادات",
+ "openaiResponsesStoreDescription": "السماح لطلبات Responses API المتوافقة بالاحتفاظ بحالة الاستجابة المخزنة.",
+ "openaiResponsesStoreLabel": "تخزين استجابات OpenAI",
+ "perplexitySearchSharedKeyInfo": "معلومات مفتاح Perplexity Search المشترك",
+ "perplexityWebCookieHint": "ألصق ملف تعريف ارتباط جلسة Perplexity",
+ "perplexityWebCookiePlaceholder": "ملف تعريف ارتباط Perplexity",
+ "personalAccessTokenLabel": "رمز الوصول الشخصي",
+ "qoderPatHint": "ألصق رمز الوصول الشخصي لـ Qoder",
+ "qoderPatPlaceholder": "رمز Qoder PAT",
+ "refreshOauthTokenTitle": "تحديث رمز OAuth",
+ "regionHint": "اختر المنطقة",
+ "regionLabel": "المنطقة",
+ "removeThisKey": "إزالة هذا المفتاح",
+ "routingTagsHint": "علامات اختيارية لتصفية التوجيه",
+ "routingTagsLabel": "علامات التوجيه",
+ "routingTagsPlaceholder": "مثال: production, eu",
+ "search": "بحث",
+ "searchEngineIdHint": "معرّف محرك البحث القابل للبرمجة",
+ "searchEngineIdLabel": "معرّف محرك البحث",
+ "searchEngineIdRequired": "معرّف محرك البحث مطلوب",
+ "searchProvider": "مزود البحث",
+ "searchProviderDesc": "مزود البحث المستخدم للطلبات",
+ "searchProviders": "البحث في المزودين...",
+ "searchProvidersHeading": "مزودو البحث",
+ "searxngBaseUrlHint": "عنوان URL الأساسي لـ SearXNG",
+ "searxngInfo": "معلومات SearXNG",
+ "sessionCookieLabel": "ملف تعريف ارتباط الجلسة",
+ "showEmail": "إظهار البريد الإلكتروني",
+ "snowflakeBaseUrlHint": "عنوان URL الأساسي لـ Snowflake",
+ "supportedEndpointAudio": "يدعم الصوت",
+ "supportedEndpointChat": "يدعم الدردشة",
+ "supportedEndpointEmbeddings": "يدعم التضمينات",
+ "supportedEndpointImages": "يدعم الصور",
+ "supportedEndpointsLabel": "نقاط النهاية المدعومة",
+ "tagGroupHint": "مجموعة اختيارية لتنظيم العلامات",
+ "tagGroupLabel": "مجموعة العلامات",
+ "tagGroupPlaceholder": "مثال: production",
+ "testModel": "نموذج الاختبار",
+ "testingModel": "جارٍ اختبار النموذج",
+ "toggleOffShort": "إيقاف",
+ "toggleOnShort": "تشغيل",
+ "tokenExpiredBadge": "منتهي الصلاحية",
+ "tokenExpiredTitle": "انتهت صلاحية الرمز",
+ "tokenExpiresSoonTitle": "ستنتهي صلاحية الرمز قريبًا",
+ "tokenShort": "الرمز",
+ "totalKeysRotating": "المفاتيح قيد التدوير: {count, plural, one {مفتاح واحد قيد التدوير} other {# مفاتيح قيد التدوير}}",
+ "unhideModel": "إظهار النموذج",
+ "upstreamProxyProviders": "مزودو بروكسي المنبع",
+ "validationModelIdHint": "النموذج المستخدم للتحقق من الاتصال",
+ "validationModelIdLabel": "معرّف نموذج التحقق",
+ "validationModelIdPlaceholder": "مثال: gpt-4o-mini",
+ "vertexServiceAccountPlaceholder": "ألصق JSON لحساب الخدمة ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) أو OAuth access_token",
+ "webCookieProviders": "مزودو ملفات تعريف ارتباط الويب",
+ "weeklyShort": "أسبوعي",
+ "xiaomiMimoBaseUrlHint": "عنوان URL الأساسي لـ Xiaomi MiMo",
+ "zedImportButton": "استيراد من Zed",
+ "zedImportFailed": "فشل الاستيراد من Zed",
+ "zedImportHint": "استيراد إعدادات المزودين من Zed",
+ "zedImportNetworkError": "خطأ في الشبكة أثناء الاستيراد من Zed",
+ "zedImportNone": "لا شيء لاستيراده من Zed",
+ "zedImportSuccess": "تم الاستيراد من Zed بنجاح",
+ "zedImporting": "جارٍ الاستيراد من Zed...",
"freeTierProviders": "مقدمي الطبقة الحرة",
"freeTierLabel": "الطبقة المجانية متاحة",
"freeTierProvidersDesc": "مقدمو الخدمة الذين لديهم طبقات مجانية - بعضهم يتطلب تسجيل مفتاح API، والبعض الآخر لا يحتاج إلى بيانات اعتماد على الإطلاق.",
@@ -4318,38 +4318,38 @@
"ideProviders": "مقدمي IDE",
"ideProvidersDesc": "المحررين مع اشتراك الذكاء الاصطناعي المدمج. استخدم صفحة الموفر لاستيراد بيانات الاعتماد مباشرةً من سلسلة مفاتيح IDE.",
"noIdeProviders": "لا يتطابق أي من موفري IDE مع عوامل التصفية الحالية.",
- "providerDetailFastTierTooltip": "قم بتطبيق طبقة Codex Fast على جميع اتصالات Codex بشكل افتراضي",
+ "providerDetailFastTierTooltip": "تطبيق طبقة Codex Fast افتراضيًا على جميع اتصالات Codex",
"providerDetailFastDefaultLabel": "افتراضي سريع",
"providerDetailBrowserManualConnect": "متصفح/الاتصال اليدوي",
"providerDetailAuthUrl": "عنوان URL للمصادقة",
"providerDetailCallbackUrl": "عنوان URL لرد الاتصال",
- "providerDetailValidClaudeCredentialsFile": "ملف بيانات اعتماد كلود صالح",
+ "providerDetailValidClaudeCredentialsFile": "ملف بيانات اعتماد Claude صالح",
"providerDetailPathAutoDetectedAllOs": "يتم اكتشاف المسار تلقائيًا لكل نظام تشغيل (Linux/Mac/Windows).",
- "providerDetailMyClaudeAccountPlaceholder": "حسابي كلود",
+ "providerDetailMyClaudeAccountPlaceholder": "حسابي Claude",
"providerDetailPathAutoDetected": "يتم اكتشاف المسار تلقائيًا لكل نظام تشغيل (Linux/Mac).",
- "webFetch": "__MISSING__:Web Fetch",
- "webFetchTooltip": "__MISSING__:Providers that extract content from web URLs (HTML → Markdown, scrape, screenshot)",
- "webFetchProvidersHeading": "__MISSING__:Web Fetch Providers",
- "compatibleProvidersDesc": "__MISSING__:OpenAI-compatible and Anthropic-compatible endpoints you host or configure. Point any OpenAI SDK to your own URL and route requests here.",
- "oauthProvidersDesc": "__MISSING__:Providers authenticated via OAuth — sign in once and OmniRoute handles token rotation automatically.",
+ "webFetch": "جلب الويب",
+ "webFetchTooltip": "الموفرون الذين يستخرجون المحتوى من عناوين URL على الويب (HTML → Markdown، Scrape، Screenshot)",
+ "webFetchProvidersHeading": "موفري جلب الويب",
+ "compatibleProvidersDesc": "نقاط نهاية متوافقة مع OpenAI أو Anthropic تستضيفها أو تضبطها بنفسك. وجّه أي OpenAI SDK إلى عنوان URL لديك لتوجيه الطلبات هنا.",
+ "oauthProvidersDesc": "الموفرون الذين تمت مصادقتهم عبر OAuth - قم بتسجيل الدخول مرة واحدة وسيتعامل OmniRoute مع تدوير الرمز المميز تلقائيًا.",
"webCookieProvidersDesc": "يستخدم هؤلاء الموفرون جلسات الويب للمتصفح أو ملفات تعريف الارتباط أو رموز الويب المميزة بدلاً من مفاتيح API. افتح موفرًا لإضافة بيانات اعتماد الجلسة المطلوبة.",
- "apiKeyProvidersDesc": "__MISSING__:Standard API key providers. Add your key once and OmniRoute routes, retries, and rate-limits on your behalf.",
- "noAuthProvidersDesc": "__MISSING__:Open endpoints that require no credentials — ready to use immediately without any sign-up.",
- "upstreamProxyProvidersDesc": "__MISSING__:Route outbound traffic through an upstream proxy before it reaches the provider. Useful for corporate networks or traffic inspection.",
- "webFetchProvidersDesc": "__MISSING__:Providers that fetch and extract content from web URLs. Use them to ground prompts with live web data.",
- "aggregatorsGatewaysDesc": "__MISSING__:Multi-provider aggregators and AI gateways that expose a single unified API across dozens of underlying models.",
- "enterpriseCloudDesc": "__MISSING__:Enterprise-tier and cloud-hosted models with enhanced SLAs, compliance certifications, and dedicated capacity.",
- "cloudAgentProvidersDesc": "__MISSING__:Autonomous cloud agents that execute long-running tasks with plan approval and live status tracking.",
- "localProvidersDesc": "__MISSING__:Self-hosted models running on your own hardware. No data leaves your infrastructure.",
- "searchProvidersDesc": "__MISSING__:Web and document search providers. Attach them to LLM calls for Retrieval-Augmented Generation.",
- "audioProvidersDesc": "__MISSING__:Text-to-speech and speech-to-text providers for voice I/O and audio transcription pipelines.",
- "embeddingRerankProvidersDesc": "__MISSING__:Vector embedding and reranking providers for semantic search, RAG pipelines, and similarity scoring.",
- "imageProvidersDesc": "__MISSING__:Image generation and vision providers — create images from text or analyse existing ones.",
- "videoProvidersDesc": "__MISSING__:Video generation providers. Create short video clips from text prompts or images.",
+ "apiKeyProvidersDesc": "موفري مفاتيح API القياسية. قم بإضافة مفتاحك مرة واحدة ومسارات OmniRoute، وإعادة المحاولة، وحدود الأسعار نيابةً عنك.",
+ "noAuthProvidersDesc": "نقاط نهاية مفتوحة لا تتطلب أي بيانات اعتماد - جاهزة للاستخدام على الفور دون أي تسجيل.",
+ "upstreamProxyProvidersDesc": "قم بتوجيه حركة المرور الصادرة من خلال بروكسي المنبع قبل أن تصل إلى الموفر. مفيد لشبكات الشركات أو فحص حركة المرور.",
+ "webFetchProvidersDesc": "الموفرون الذين يقومون بجلب المحتوى واستخراجه من عناوين URL على الويب. استخدمها لتوجيه المطالبات باستخدام بيانات الويب المباشرة.",
+ "aggregatorsGatewaysDesc": "مجمعات متعددة الموفرين وبوابات الذكاء الاصطناعي التي تعرض واجهة برمجة تطبيقات واحدة موحدة عبر العشرات من النماذج الأساسية.",
+ "enterpriseCloudDesc": "النماذج على مستوى المؤسسات والنماذج المستضافة على السحابة مع اتفاقيات مستوى الخدمة المحسنة وشهادات الامتثال والسعة المخصصة.",
+ "cloudAgentProvidersDesc": "وكلاء السحابة المستقلون الذين ينفذون المهام طويلة الأمد من خلال الموافقة على الخطة وتتبع الحالة المباشرة.",
+ "localProvidersDesc": "نماذج مستضافة ذاتيًا تعمل على أجهزتك الخاصة. لا توجد بيانات تترك البنية التحتية الخاصة بك.",
+ "searchProvidersDesc": "مزودو خدمات البحث على الويب والمستندات. قم بإرفاقهم بمكالمات LLM من أجل إنشاء الاسترجاع المعزز.",
+ "audioProvidersDesc": "موفري خدمات تحويل النص إلى كلام وتحويل الكلام إلى نص للصوت I/O وخطوط أنابيب النسخ الصوتي.",
+ "embeddingRerankProvidersDesc": "مزودو خدمات تضمين المتجهات وإعادة ترتيبها للبحث الدلالي وخطوط أنابيب RAG وتسجيل نقاط التشابه.",
+ "imageProvidersDesc": "موفرو توليد الصور والرؤية - إنشاء صور من النص أو تحليل الصور الموجودة.",
+ "videoProvidersDesc": "مزودو توليد الفيديو. قم بإنشاء مقاطع فيديو قصيرة من المطالبات النصية أو الصور.",
"onboardingWizard": "معالج تأهيل الموفر",
"onboardingWizardShort": "معالج الإعداد",
- "onboardingWizardDescription": "قم بتوصيل مفتاح API والمتوافق المخصص وموفري OAuth من خلال التحقق من الصحة والثبات واختبار الاتصال الفوري.",
- "onboardingStepType": "اكتب",
+ "onboardingWizardDescription": "وصّل موفري مفاتيح API والموفرين المتوافقين المخصصين وموفري OAuth عبر التحقق من الصحة والحفظ واختبار الاتصال فورًا.",
+ "onboardingStepType": "النوع",
"onboardingStepProvider": "مزود",
"onboardingStepCredentials": "أوراق الاعتماد",
"onboardingStepResult": "النتيجة",
@@ -4374,7 +4374,7 @@
"onboardingTestFailed": "فشل الاختبار",
"onboardingOpenProviderDetails": "افتح تفاصيل المزود",
"onboardingTryInPlayground": "حاول في الملعب",
- "onboardingDefaultConnectionName": "{provider} الابتدائية",
+ "onboardingDefaultConnectionName": "{provider} الأساسي",
"onboardingTestingConnection": "جارٍ اختبار اتصال الموفر…",
"onboardingValidatingCredentials": "جارٍ التحقق من صحة بيانات الاعتماد...",
"onboardingSavingConnection": "جارٍ حفظ اتصال الموفر…",
@@ -4395,15 +4395,15 @@
"onboardingSearchCx": "ابحث عن معرف CX / المحرك",
"onboardingProviderSpecificIdPlaceholder": "معرف اختياري خاص بالمزود",
"onboardingCustomUserAgent": "وكيل المستخدم المخصص",
- "onboardingWorking": "العمل…",
+ "onboardingWorking": "جارٍ العمل…",
"onboardingValidateSaveTest": "التحقق من صحة وحفظ واختبار",
"onboardingBack": "العودة",
"onboardingCreateCustomCompatibleProvider": "إنشاء مزود متوافق مخصص",
"onboardingCreateCustomCompatibleDescription": "يقوم المعالج بإنشاء عقدة موفر أولاً، ثم يقوم بتخزين واختبار اتصال مفتاح API الخاص بها.",
"onboardingProtocol": "بروتوكول",
"onboardingOpenAiCompatible": "متوافق مع OpenAI",
- "onboardingAnthropicCompatible": "متوافق مع الأنثروبولوجيا",
- "onboardingClaudeCodeCompatible": "متوافق مع كود كلود",
+ "onboardingAnthropicCompatible": "متوافق مع Anthropic",
+ "onboardingClaudeCodeCompatible": "متوافق مع Claude Code",
"onboardingProviderPrefix": "بادئة الموفر",
"onboardingProviderPrefixHint": "يستخدم لإنشاء معرف الموفر المُدار.",
"onboardingChatPath": "مسار الدردشة",
@@ -4443,12 +4443,12 @@
"filterError": "خطأ",
"filterBanned": "محظور",
"filterCreditsExhausted": "نفدت الأرصدة",
- "contextWindowOverrideLabel": "__MISSING__:Context Window Override",
- "contextWindowOverridePlaceholder": "__MISSING__:e.g. 131072",
- "contextWindowOverrideHint": "__MISSING__:Manually set this model's real context window (tokens) when the provider misreports it. Wins over auto-detected/catalog values and prevents combo routing from dropping the model.",
- "contextWindowOverrideInvalid": "__MISSING__:Context window override must be a positive whole number of tokens",
- "visionCapableLabel": "__MISSING__:Vision capable",
- "visionCapableHint": "__MISSING__:Manually flag this model as vision-capable when the provider's discovery metadata doesn't report an image input modality (common for self-hosted/local backends).",
+ "contextWindowOverrideLabel": "تجاوز نافذة السياق",
+ "contextWindowOverridePlaceholder": "مثال: 131072",
+ "contextWindowOverrideHint": "عيّن يدويًا نافذة السياق الحقيقية لهذا النموذج (بالرموز) عندما يبلغ المزوّد عنها بصورة خاطئة. تتغلب هذه القيمة على القيم المكتشفة تلقائيًا أو الواردة في الكتالوج، وتمنع توجيه المجموعات من إسقاط النموذج.",
+ "contextWindowOverrideInvalid": "يجب أن يكون تجاوز نافذة السياق عددًا صحيحًا موجبًا من الرموز",
+ "visionCapableLabel": "يدعم الرؤية",
+ "visionCapableHint": "علّم هذا النموذج يدويًا بأنه يدعم الرؤية عندما لا تذكر بيانات اكتشاف المزوّد إدخال الصور (وهو شائع في الواجهات الخلفية المحلية أو المستضافة ذاتيًا).",
"kimiOfficialSupporterBadge": "Official Supporter",
"kimiOfficialSupporterTooltip": "Kimi (Moonshot AI) is an official OmniRoute launch partner"
},
@@ -4461,179 +4461,179 @@
"cache": "ذاكرة التخزين المؤقت",
"resilience": "المرونة",
"routingSettingsIntro": "يتحكم في كيفية توجيه طلباتك وتحويلها وإرسالها إلى موفري الذكاء الاصطناعي.",
- "routingOpDropParagraphContainsLabel": "__MISSING__:Drop paragraph (contains)",
- "routingOpDropParagraphStartsWithLabel": "__MISSING__:Drop paragraph (starts with)",
- "routingOpReplaceTextLabel": "__MISSING__:Replace text",
- "routingOpReplaceRegexLabel": "__MISSING__:Replace regex",
- "routingOpDropBlockContainsLabel": "__MISSING__:Drop block (contains)",
- "routingOpPrependSystemBlockLabel": "__MISSING__:Prepend system block",
- "routingOpAppendSystemBlockLabel": "__MISSING__:Append system block",
- "routingOpInjectBillingHeaderLabel": "__MISSING__:Inject billing header",
- "routingOpObfuscateWordsLabel": "__MISSING__:Obfuscate words (ZWJ)",
- "routingOpDropParagraphContainsDesc": "__MISSING__:Removes any paragraph (text block split on blank lines) inside the system prompt whose text contains ANY of the listed substrings. Use to strip third-party client fingerprints like 'github.com/anomalyco/opencode' or 'docs.openwebui.com' that Anthropic's classifier flags.",
- "routingOpDropParagraphStartsWithDesc": "__MISSING__:Removes any paragraph that STARTS WITH one of the listed prefixes. Use for identity lines like 'You are OpenCode' or 'You are Open WebUI' that announce the calling client.",
- "routingOpReplaceTextDesc": "__MISSING__:Replaces a literal substring with another literal substring. Use for known trigger phrases — e.g. rewrite 'Here is some useful information about the environment you are running in:' to 'Environment context you are running in:' (an empirically-validated trigger phrase).",
- "routingOpReplaceRegexDesc": "__MISSING__:Replaces text matching a regular expression. Use when you need patterns (character classes, optional whitespace, anchors) instead of literal substrings. A malformed pattern is caught at runtime when the op runs.",
- "routingOpDropBlockContainsDesc": "__MISSING__:Removes ENTIRE system blocks (not just paragraphs) whose text contains any of the listed substrings. Use when a whole block is fingerprint-bearing and you want it gone — e.g. an injected MCP-server description.",
- "routingOpPrependSystemBlockDesc": "__MISSING__:Inserts a new text block at the FRONT of the system array. Use to add the SDK identity 'You are a Claude agent, built on Anthropic's Claude Agent SDK.' that Anthropic's classifier expects.",
- "routingOpAppendSystemBlockDesc": "__MISSING__:Inserts a new text block at the END of the system array. Use for cosmetic additions that don't need to be at position [0].",
- "routingOpInjectBillingHeaderDesc": "__MISSING__:Prepends the special 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' text block that Anthropic's classifier validates. Required for CC bridge relay endpoints; for the native claude provider OmniRoute already injects its own billing line so this op is usually redundant there.",
- "routingOpObfuscateWordsDesc": "__MISSING__:Inserts a Zero-Width-Joiner character after the first letter of each listed word, so 'opencode' becomes 'opencode'. Reads identical to humans but bypasses classifier word matches. Targets system blocks, user/assistant messages, and tool descriptions.",
- "routingNeedlesHint": "__MISSING__:List of substrings. A paragraph matches if it contains ANY one of them. Add one per line via 'Add entry'.",
- "routingPrefixesHint": "__MISSING__:List of strings. A paragraph matches if it starts with any one of them (leading whitespace is trimmed before matching).",
- "routingCaseSensitiveHint": "__MISSING__:When ON, 'OpenCode' and 'opencode' are different strings. When OFF (default), the comparison ignores case.",
- "routingMatchLiteralHint": "__MISSING__:Exact literal substring to find. No regex syntax — special chars like . * ? are treated as themselves.",
- "routingReplacementTextHint": "__MISSING__:Replacement string. Leave blank to delete the match. The output preserves surrounding text.",
- "routingAllOccurrencesHint": "__MISSING__:When ON (default), every instance is replaced. When OFF, only the first match is replaced.",
- "routingPatternHint": "__MISSING__:JavaScript regex source. Don't wrap in slashes — just 'foo(.*)bar'. Server rejects patterns that fail to compile.",
- "routingRegexFlagsHint": "__MISSING__:JavaScript regex flags (g = all matches, i = case-insensitive, s = dot matches newline, m = multiline). Default 'g'.",
- "routingBlockTextHint": "__MISSING__:Full text of the new system block. Use a literal string; the system block stores text only.",
- "routingIdempotencyKeyHint": "__MISSING__:Optional. If set, the op skips when a block whose text starts with this key is already present. Prevents double-prepend on retries.",
- "routingBillingEntrypointHint": "__MISSING__:Value injected as 'cc_entrypoint='. Anthropic accepts 'sdk-cli' (Agent SDK), 'cli' (Claude Code CLI), or other documented values.",
- "routingBillingVersionFormatHint": "__MISSING__:How the 3-char build hash after cc_version= is computed. 'ex-machina' = sha256 of CCH_SALT+chars-from-first-user-msg+version (per-message). 'omniroute-daystamp' = sha256 of YYYY-MM-DD+version (stable per-day).",
- "routingBillingCchAlgoHint": "__MISSING__:How the 5-char cch= token is computed. 'sha256-first-user' = sha256 of first user message text. 'xxhash64-body' = body-level signing fills it later. 'static-zero' = literal '00000' placeholder.",
- "routingObfuscateWordsHint": "__MISSING__:Lowercase words to obfuscate. ZWJ insertion is applied case-insensitively, so 'opencode' also matches 'OpenCode' and 'OPENCODE'.",
- "routingObfuscateTargetsHint": "__MISSING__:Which body regions to scan for the words: system blocks, user/assistant messages, and/or tool descriptions.",
- "routingObfuscateTargetsLabel": "__MISSING__:Targets",
- "routingSummarizeDropParagraphContains": "__MISSING__:drop paragraphs containing: {items}",
- "routingSummarizeDropParagraphStartsWith": "__MISSING__:drop paragraphs starting with: {items}",
- "routingSummarizeReplaceText": "__MISSING__:replace \"{match}\" → \"{replacement}\"",
- "routingSummarizeReplaceRegex": "__MISSING__:regex /{pattern}/{flags} → \"{replacement}\"",
- "routingSummarizeDropBlockContains": "__MISSING__:drop blocks containing: {items}",
- "routingSummarizePrependSystemBlock": "__MISSING__:prepend block: \"{text}\"",
- "routingSummarizeAppendSystemBlock": "__MISSING__:append block: \"{text}\"",
- "routingSummarizeInjectBillingHeader": "__MISSING__:inject billing header (entrypoint={entrypoint}, version={versionFormat}, cch={cchAlgo})",
- "routingSummarizeObfuscateWords": "__MISSING__:obfuscate {count} word(s) via ZWJ in {targets}",
- "routingDefaultAutoVariantLKGP": "__MISSING__:Last Known Good Provider",
- "routingDefaultAutoVariantLKGPDesc": "__MISSING__:Last Known Good Provider",
- "routingDefaultAutoVariantCoding": "__MISSING__:Quality-first for code",
- "routingDefaultAutoVariantCodingDesc": "__MISSING__:Quality-first for code",
- "routingDefaultAutoVariantFast": "__MISSING__:Low-latency routing",
- "routingDefaultAutoVariantFastDesc": "__MISSING__:Low-latency routing",
- "routingDefaultAutoVariantCheap": "__MISSING__:Cost-optimized",
- "routingDefaultAutoVariantCheapDesc": "__MISSING__:Cost-optimized",
- "routingDefaultAutoVariantOffline": "__MISSING__:High availability",
- "routingDefaultAutoVariantOfflineDesc": "__MISSING__:High availability",
- "routingDefaultAutoVariantSmart": "__MISSING__:Best discovery (10% explore)",
- "routingDefaultAutoVariantSmartDesc": "__MISSING__:Best discovery (10% explore)",
- "routingOpSummaryCount": "__MISSING__:{count, plural, =0 {no ops} one {# op} other {# ops}}",
- "routingOpEnabled": "__MISSING__:enabled",
- "routingOpDisabled": "__MISSING__:disabled",
- "routingOpStatusSeparator": "__MISSING__: ·",
+ "routingOpDropParagraphContainsLabel": "إسقاط فقرة (تحتوي على)",
+ "routingOpDropParagraphStartsWithLabel": "إسقاط فقرة (تبدأ بـ)",
+ "routingOpReplaceTextLabel": "استبدال نص",
+ "routingOpReplaceRegexLabel": "استبدال Regex",
+ "routingOpDropBlockContainsLabel": "إسقاط كتلة (تحتوي على)",
+ "routingOpPrependSystemBlockLabel": "إضافة كتلة نظام في البداية",
+ "routingOpAppendSystemBlockLabel": "إضافة كتلة نظام في النهاية",
+ "routingOpInjectBillingHeaderLabel": "حقن ترويسة الفوترة",
+ "routingOpObfuscateWordsLabel": "تمويه الكلمات (ZWJ)",
+ "routingOpDropParagraphContainsDesc": "يزيل أي فقرة (كتلة نصية تفصلها أسطر فارغة) داخل موجه النظام إذا احتوى نصها على أي سلسلة فرعية مدرجة. استخدمه لإزالة بصمات عملاء الجهات الخارجية مثل github.com/anomalyco/opencode أو docs.openwebui.com التي يصنّفها Anthropic.",
+ "routingOpDropParagraphStartsWithDesc": "يزيل أي فقرة تبدأ بإحدى البادئات المدرجة. استخدمه لأسطر الهوية مثل You are OpenCode أو You are Open WebUI التي تعلن هوية العميل المتصل.",
+ "routingOpReplaceTextDesc": "يستبدل سلسلة فرعية حرفية بأخرى. استخدمه لعبارات التشغيل المعروفة؛ مثل إعادة صياغة Here is some useful information about the environment you are running in: إلى Environment context you are running in:، وهي عبارة تشغيل مثبتة تجريبيًا.",
+ "routingOpReplaceRegexDesc": "يستبدل النص المطابق للتعبير العادي. استخدمها عندما تحتاج إلى أنماط (فئات الأحرف، والمسافات البيضاء الاختيارية، ونقاط الارتساء) بدلاً من السلاسل الفرعية الحرفية. يتم اكتشاف نمط مشوه في وقت التشغيل عند تشغيل العملية.",
+ "routingOpDropBlockContainsDesc": "يزيل كتل النظام بأكملها (وليس الفقرات فقط) التي يحتوي نصها على أي من السلاسل الفرعية المدرجة. يُستخدم عندما تكون الكتلة بأكملها تحمل بصمة الإصبع وتريد إزالتها - على سبيل المثال. وصف خادم MCP المحقون.",
+ "routingOpPrependSystemBlockDesc": "إدراج كتلة نصية جديدة في مقدمة مصفوفة النظام. استخدمه لإضافة هوية SDK: \"أنت وكيل Claude، مبني على Anthropic's Claude Agent SDK.\" التي يتوقعها مصنّف Anthropic.",
+ "routingOpAppendSystemBlockDesc": "إدراج كتلة نصية جديدة في نهاية مصفوفة النظام. يُستخدم للإضافات التجميلية التي لا يلزم أن تكون في الموضع [0].",
+ "routingOpInjectBillingHeaderDesc": "يضيف كتلة نصية تبدأ بالترويسة 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' التي يتحقق منها مصنّف Anthropic. يلزم ذلك لنقاط نهاية ترحيل جسر Claude Code؛ أما مزود Claude الأصلي فيضيف OmniRoute له ترويسة الفوترة بالفعل، لذا تكون هذه العملية زائدة عادةً.",
+ "routingOpObfuscateWordsDesc": "يُدرج حرف Zero-Width Joiner بعد الحرف الأول من كل كلمة مدرجة، بحيث تصبح \"opencode\" \"opencode\". تبدو مطابقة للبشر لكنها تتجاوز مطابقة الكلمات المصنّفة. يستهدف كتل النظام ورسائل user/assistant وأوصاف الأدوات.",
+ "routingNeedlesHint": "قائمة السلاسل الفرعية. تتطابق الفقرة إذا كانت تحتوي على أي منها. أضف واحدًا في كل سطر عبر \"إضافة إدخال\".",
+ "routingPrefixesHint": "قائمة السلاسل. تتطابق الفقرة إذا كانت تبدأ بأي منها (يتم قطع المسافة البيضاء البادئة قبل المطابقة).",
+ "routingCaseSensitiveHint": "عند التشغيل، تكون \"OpenCode\" و\"opencode\" سلسلتين مختلفتين. عند إيقاف التشغيل (الافتراضي)، تتجاهل المقارنة حالة الأحرف.",
+ "routingMatchLiteralHint": "بالضبط سلسلة فرعية حرفية للعثور عليها. لا توجد صيغة regex - أحرف خاصة مثل . * ؟ يعاملون على أنهم أنفسهم.",
+ "routingReplacementTextHint": "سلسلة الاستبدال. اتركه فارغًا لحذف المباراة. يحافظ الإخراج على النص المحيط.",
+ "routingAllOccurrencesHint": "عند تشغيل (افتراضي)، يتم استبدال كل مثيل. عند إيقاف التشغيل، يتم استبدال المباراة الأولى فقط.",
+ "routingPatternHint": "مصدر JavaScript Regex. لا تضع خطوطًا مائلة — فقط 'foo(.*)bar'. يرفض الخادم الأنماط التي يفشل تجميعها.",
+ "routingRegexFlagsHint": "أعلام JavaScript regex (g = جميع التطابقات، i = غير حساس لحالة الأحرف، s = dot يطابق السطر الجديد، m = متعدد الأسطر). الافتراضي \"ز\".",
+ "routingBlockTextHint": "النص الكامل لكتلة النظام الجديد. استخدم سلسلة حرفية؛ تقوم كتلة النظام بتخزين النص فقط.",
+ "routingIdempotencyKeyHint": "اختياري. إذا تم ضبطه، فسيتم تخطي العملية عندما تكون الكتلة التي يبدأ نصها بهذا المفتاح موجودة بالفعل. يمنع الإضافة المزدوجة عند إعادة المحاولة.",
+ "routingBillingEntrypointHint": "تم إدخال القيمة كـ 'cc_entrypoint='. يقبل Anthropic \"sdk-cli\" (Agent SDK)، أو \"cli\" (Claude Code CLI)، أو القيم الموثقة الأخرى.",
+ "routingBillingVersionFormatHint": "كيفية حساب تجزئة البناء المكوّنة من 3 أحرف بعد cc_version=. 'ex-machina' = sha256 لـ CCH_SALT+chars-from-first-user-msg+version (لكل رسالة). 'omniroute-daystamp' = sha256 لإصدار+YYYY-MM-DD (ثابت يوميًا).",
+ "routingBillingCchAlgoHint": "كيفية حساب رمز cch= المكوّن من 5 أحرف. 'sha256-first-user' = sha256 لنص أول رسالة مستخدم. 'xxhash64-body' = يملؤه لاحقًا توقيع على مستوى النص. 'static-zero' = القيمة الحرفية '00000'.",
+ "routingObfuscateWordsHint": "كلمات صغيرة لتمويهها. يُدرج ZWJ دون حساسية لحالة الأحرف، لذا تطابق \"opencode\" أيضًا \"OpenCode\" و\"OPENCODE\".",
+ "routingObfuscateTargetsHint": "مناطق النص المراد فحصها: كتل النظام، ورسائل user/assistant، وأوصاف الأدوات.",
+ "routingObfuscateTargetsLabel": "الأهداف",
+ "routingSummarizeDropParagraphContains": "قم بإسقاط الفقرات التي تحتوي على: {items}",
+ "routingSummarizeDropParagraphStartsWith": "قم بإسقاط الفقرات التي تبدأ بـ: {items}",
+ "routingSummarizeReplaceText": "استبدل \"{match}\" ← \"{replacement}\"",
+ "routingSummarizeReplaceRegex": "التعبير العادي /{pattern}/{flags} → \"{replacement}\"",
+ "routingSummarizeDropBlockContains": "كتل إسقاط تحتوي على: {items}",
+ "routingSummarizePrependSystemBlock": "كتلة الإضافة المسبقة: \"{text}\"",
+ "routingSummarizeAppendSystemBlock": "كتلة الإلحاق: \"{text}\"",
+ "routingSummarizeInjectBillingHeader": "إدخال ترويسة الفوترة (نقطة الإدخال={entrypoint}، الإصدار={versionFormat}، cch={cchAlgo})",
+ "routingSummarizeObfuscateWords": "تشويش الكلمات (الكلمات) {count} عبر ZWJ في {targets}",
+ "routingDefaultAutoVariantLKGP": "آخر مزود جيد معروف",
+ "routingDefaultAutoVariantLKGPDesc": "آخر مزود جيد معروف",
+ "routingDefaultAutoVariantCoding": "الجودة أولاً للكود",
+ "routingDefaultAutoVariantCodingDesc": "الجودة أولاً للكود",
+ "routingDefaultAutoVariantFast": "توجيه الكمون المنخفض",
+ "routingDefaultAutoVariantFastDesc": "توجيه الكمون المنخفض",
+ "routingDefaultAutoVariantCheap": "الأمثل من حيث التكلفة",
+ "routingDefaultAutoVariantCheapDesc": "الأمثل من حيث التكلفة",
+ "routingDefaultAutoVariantOffline": "توافر عالية",
+ "routingDefaultAutoVariantOfflineDesc": "توافر عالية",
+ "routingDefaultAutoVariantSmart": "أفضل اكتشاف (10% استكشاف)",
+ "routingDefaultAutoVariantSmartDesc": "أفضل اكتشاف (10% استكشاف)",
+ "routingOpSummaryCount": "عمليات التوجيه: {count, plural, =0 {لا توجد عمليات} one {عملية واحدة} other {# عمليات}}",
+ "routingOpEnabled": "ممكّن",
+ "routingOpDisabled": "معطل",
+ "routingOpStatusSeparator": "·",
"resilienceSettingsIntro": "إعادة المحاولة التلقائية، والتهدئة، والرجوع عند فشل مقدمي الخدمة.",
"aiSettingsIntro": "إعدادات خاصة بالذكاء الاصطناعي لميزانية التفكير وسلوك النموذج والضغط.",
"systemPrompt": "موجه النظام",
"thinkingBudget": "ميزانية التفكير",
- "proxy": "وكيل",
- "httpProxy": "HTTP Proxy",
+ "proxy": "بروكسي",
+ "httpProxy": "بروكسي HTTP",
"1proxy": "1proxy",
- "proxySubTabsAria": "Proxy sections",
- "requestBodyLimitTitle": "Request Body Limit",
- "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.",
- "requestBodyLimitInputLabel": "Request body limit in MB",
- "requestBodyLimitEmptyError": "Enter a limit in MB",
- "requestBodyLimitWholeNumberError": "Use a whole number",
- "requestBodyLimitMinimumError": "Minimum is {min} MB",
- "requestBodyLimitMaximumError": "Maximum is {max} MB",
- "requestBodyLimitLoadFailed": "Failed to load request limit settings",
- "requestBodyLimitSaveSuccess": "Request body limit saved",
- "requestBodyLimitSaveFailed": "Failed to save request body limit",
- "requestBodyLimitSaving": "Saving...",
- "requestBodyLimitSave": "Save",
- "requestBodyLimitCurrent": "Current: {value}",
- "mitmProxy": "وكيل MITM",
+ "proxySubTabsAria": "أقسام بروكسي",
+ "requestBodyLimitTitle": "حد حجم نص الطلب",
+ "requestBodyLimitDescription": "أقصى حجم مقبول لحمولة API قبل تحليل نص الطلب. تحتفظ مسارات الرفع المخصصة بحدها المضمّن البالغ 100 ميجابايت على الأقل.",
+ "requestBodyLimitInputLabel": "حد نص الطلب (ميجابايت)",
+ "requestBodyLimitEmptyError": "أدخل الحد بالميجابايت",
+ "requestBodyLimitWholeNumberError": "استخدم عددًا صحيحًا",
+ "requestBodyLimitMinimumError": "الحد الأدنى هو {min} ميغابايت",
+ "requestBodyLimitMaximumError": "الحد الأقصى هو {max} ميغابايت",
+ "requestBodyLimitLoadFailed": "فشل تحميل إعدادات حد الطلب",
+ "requestBodyLimitSaveSuccess": "تم حفظ حد الطلب",
+ "requestBodyLimitSaveFailed": "فشل حفظ الحد الأقصى لنص الطلب",
+ "requestBodyLimitSaving": "جارٍ الحفظ...",
+ "requestBodyLimitSave": "حفظ",
+ "requestBodyLimitCurrent": "الحالي: {value}",
+ "mitmProxy": "بروكسي MITM",
"pricing": "التسعير",
"storage": "التخزين",
"policies": "السياسات",
"ipFilter": "مرشح IP",
- "comboDefaults": "افتراضيات التحرير والسرد",
+ "comboDefaults": "إعدادات المجموعات الافتراضية",
"fallbackChains": "سلاسل احتياطية",
"changePassword": "تغيير كلمة المرور",
"enablePassword": "تمكين كلمة المرور",
"darkMode": "الوضع المظلم",
- "lightMode": "وضع الضوء",
- "memoryTitle": "Memory",
- "memoryDesc": "Persistent cross-session conversational memory",
- "memoryEnabled": "Enable Memory",
- "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.",
- "maxTokens": "Max Tokens",
- "retentionDays": "Retention",
- "recent": "Recent",
- "recentDesc": "Chronological window",
- "semantic": "Semantic",
- "semanticDesc": "Vector search",
- "hybrid": "Hybrid",
- "hybridDesc": "Recent + Semantic",
- "skillsTitle": "Skills",
- "skillsDesc": "Tools for models",
- "skillsEnabled": "Enable Skills",
- "skillsEnabledDesc": "Allows agents to trigger functions.",
- "skillsComingSoon": "Skills marketplace coming soon.",
- "memorySkillsTitle": "Memory & Skills",
- "memorySkillsDesc": "Persistent context & capabilities",
- "modelsDevTitle": "Model Database",
- "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev",
- "modelsDevEnabled": "Enable models.dev Sync",
- "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database",
- "modelsDevInterval": "Sync Interval",
- "syncNow": "Sync Now",
- "syncing": "Syncing...",
- "lastSync": "Last sync",
- "never": "Never",
- "justNow": "الآن فقط",
- "modelsDevStats": "Sync Statistics",
- "modelsDevStatsDesc": "Current models.dev data coverage",
- "providers": "مقدمي الخدمات",
- "modelsWithPricing": "Models with Pricing",
- "capabilities": "Capabilities",
- "lastSyncCount": "Last Sync Count",
- "lastSyncFull": "Last full sync",
- "modelsDevInfo": "How It Works",
- "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.",
- "modelsDevInfoResolution": "Pricing resolution order (highest priority first):",
- "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default",
+ "lightMode": "الوضع الفاتح",
+ "memoryTitle": "الذاكرة",
+ "memoryDesc": "ذاكرة محادثة مستمرة عبر الجلسات",
+ "memoryEnabled": "تمكين الذاكرة",
+ "memoryEnabledDesc": "عند التمكين، يضيف OmniRoute السياق السابق ذي الصلة.",
+ "maxTokens": "الحد الأقصى للرموز",
+ "retentionDays": "مدة الاحتفاظ",
+ "recent": "الأحدث",
+ "recentDesc": "نافذة زمنية",
+ "semantic": "دلالي",
+ "semanticDesc": "بحث متجهي",
+ "hybrid": "هجين",
+ "hybridDesc": "زمني + دلالي",
+ "skillsTitle": "المهارات",
+ "skillsDesc": "أدوات للنماذج",
+ "skillsEnabled": "تمكين المهارات",
+ "skillsEnabledDesc": "يسمح للوكلاء بتشغيل الوظائف.",
+ "skillsComingSoon": "سوق المهارات قريبا.",
+ "memorySkillsTitle": "الذاكرة والمهارات",
+ "memorySkillsDesc": "السياق والقدرات المستمرة",
+ "modelsDevTitle": "قاعدة بيانات النماذج",
+ "modelsDevDesc": "مزامنة الأسعار والإمكانات والمواصفات تلقائيًا من models.dev",
+ "modelsDevEnabled": "تمكين مزامنة models.dev",
+ "modelsDevEnabledDesc": "اجلب أسعار النماذج وإمكاناتها ومواصفاتها من قاعدة بيانات models.dev مفتوحة المصدر",
+ "modelsDevInterval": "الفاصل الزمني للمزامنة",
+ "syncNow": "مزامنة الآن",
+ "syncing": "جارٍ المزامنة...",
+ "lastSync": "آخر مزامنة",
+ "never": "أبدًا",
+ "justNow": "الآن",
+ "modelsDevStats": "إحصاءات المزامنة",
+ "modelsDevStatsDesc": "تغطية بيانات models.dev الحالية",
+ "providers": "المزودون",
+ "modelsWithPricing": "نماذج ذات أسعار",
+ "capabilities": "الإمكانات",
+ "lastSyncCount": "عدد عناصر آخر مزامنة",
+ "lastSyncFull": "آخر مزامنة كاملة",
+ "modelsDevInfo": "آلية العمل",
+ "modelsDevInfoDesc": "models.dev قاعدة بيانات مفتوحة المصدر لمواصفات نماذج الذكاء الاصطناعي، يديرها فريق SST/OpenCode. توفر الأسعار والإمكانات وحدود السياق والوسائط لأكثر من 4000 نموذج من أكثر من 100 مزود.",
+ "modelsDevInfoResolution": "ترتيب مصادر التسعير حسب الأولوية:",
+ "modelsDevInfoOrder": "تجاوز المستخدم → models.dev → LiteLLM → القيمة الافتراضية المضمّنة",
"systemTheme": "موضوع النظام",
- "debugToggle": "Enable Debug Mode",
- "sidebarVisibilityToggle": "Show Sidebar Items",
+ "debugToggle": "تمكين وضع التصحيح",
+ "sidebarVisibilityToggle": "إظهار عناصر الشريط الجانبي",
"enableCache": "تمكين ذاكرة التخزين المؤقت",
"cacheTTL": "ذاكرة التخزين المؤقت TTL",
"maxCacheSize": "الحد الأقصى لحجم ذاكرة التخزين المؤقت",
"clearCache": "مسح ذاكرة التخزين المؤقت",
- "cacheCleared": "Cache cleared successfully",
- "clearCacheFailed": "Failed to clear cache",
- "cacheHits": "زيارات ذاكرة التخزين المؤقت",
- "cacheMisses": "يفتقد ذاكرة التخزين المؤقت",
+ "cacheCleared": "تم مسح ذاكرة التخزين المؤقت بنجاح",
+ "clearCacheFailed": "فشل في مسح ذاكرة التخزين المؤقت",
+ "cacheHits": "إصابات ذاكرة التخزين المؤقت",
+ "cacheMisses": "إخفاقات ذاكرة التخزين المؤقت",
"hitRate": "معدل الإصابة",
"cacheEntries": "إدخالات ذاكرة التخزين المؤقت",
- "cacheSettings": "Cache Settings",
- "semanticCache": "Semantic Cache",
- "maxEntries": "Max Entries",
- "ttlMinutes": "TTL (minutes)",
- "promptCache": "ذاكرة التخزين المؤقت الفوري",
- "strategy": "Strategy",
- "preserveClientCache": "Preserve Client Cache",
- "enabled": "Enabled",
- "loading": "Loading...",
+ "cacheSettings": "إعدادات ذاكرة التخزين المؤقت",
+ "semanticCache": "ذاكرة التخزين المؤقت الدلالية",
+ "maxEntries": "الحد الأقصى للإدخالات",
+ "ttlMinutes": "TTL (بالدقائق)",
+ "promptCache": "ذاكرة تخزين المطالبات",
+ "strategy": "الاستراتيجية",
+ "preserveClientCache": "الحفاظ على ذاكرة العميل المؤقتة",
+ "enabled": "ممكّن",
+ "loading": "جارٍ التحميل...",
"saving": "جارٍ الحفظ...",
- "save": "Save",
- "circuitBreaker": "قواطع دوائر",
- "retryPolicy": "إعادة محاولة السياسة",
- "maxRetries": "ماكس إعادة المحاولة",
- "retryDelay": "إعادة المحاولة تأخير",
+ "save": "حفظ",
+ "circuitBreaker": "قاطع الدائرة",
+ "retryPolicy": "سياسة إعادة المحاولة",
+ "maxRetries": "الحد الأقصى للمحاولات",
+ "retryDelay": "تأخير إعادة المحاولة",
"timeoutMs": "المهلة (مللي ثانية)",
"enableSystemPrompt": "تمكين موجه النظام",
"systemPromptText": "نص موجه النظام",
- "autoDisableBannedAccounts": "Auto-Disable Banned Accounts",
- "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.",
- "autoDisableThreshold": "Ban Threshold",
- "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.",
- "resilienceStructureTitle": "Resilience Structure",
+ "autoDisableBannedAccounts": "التعطيل التلقائي للحسابات المحظورة",
+ "autoDisableDescription": "قم بوضع علامة على اتصالات الموفر على أنها معطلة بشكل دائم إذا أعادت إشارات حظر طرفية محددة (على سبيل المثال، HTTP 403 \"التحقق من حسابك\"). يؤدي هذا إلى إزالتها من دوران التحرير والسرد.",
+ "autoDisableThreshold": "عتبة الحظر",
+ "autoDisableThresholdDesc": "إشارات الحظر المتتالية مطلوبة قبل التعطيل الدائم.",
+ "resilienceStructureTitle": "هيكل المرونة",
"resilienceStructureDesc": "تقوم هذه الصفحة بتكوين السلوك فقط. تظهر حالة الكسارة المباشرة على صفحة الصحة. تظل إعادة المحاولة الخاصة بالتحرير والسرد والتحكم في الفتحة الدائرية في إعدادات التحرير والسرد.",
"enableThinking": "تمكين التفكير",
- "maxThinkingTokens": "رموز التفكير ماكس",
- "enableProxy": "تمكين الوكيل",
- "proxyUrl": "عنوان URL الوكيل",
- "pricingRates": "تنسيق أسعار التسعير",
+ "maxThinkingTokens": "الحد الأقصى لرموز التفكير",
+ "enableProxy": "تمكين بروكسي",
+ "proxyUrl": "عنوان URL للبروكسي",
+ "pricingRates": "معدلات التسعير",
"currentPricing": "نظرة عامة على الأسعار الحالية",
"loadingPricing": "جارٍ تحميل بيانات الأسعار...",
"noPricing": "لا توجد بيانات التسعير المتاحة",
@@ -4652,30 +4652,30 @@
"clearDataConfirm": "سيؤدي هذا إلى حذف جميع البيانات بشكل دائم. هل أنت متأكد؟",
"enableRequestLogs": "تمكين سجلات الطلب",
"logRetention": "الاحتفاظ بالسجل",
- "ipWhitelist": "القائمة البيضاء للملكية الفكرية",
- "ipBlacklist": "القائمة السوداء للملكية الفكرية",
- "addIP": "أضف IP",
+ "ipWhitelist": "قائمة IP المسموح بها",
+ "ipBlacklist": "قائمة IP المحظورة",
+ "addIP": "إضافة عنوان IP",
"savedSuccessfully": "تم حفظ الإعدادات بنجاح",
- "ai": "منظمة العفو الدولية",
+ "ai": "الذكاء الاصطناعي",
"advanced": "متقدم",
"localMode": "الوضع المحلي — كافة البيانات المخزنة على جهازك",
"settingsSectionsAria": "أقسام الإعدادات",
"switchThemes": "التبديل بين السمات الفاتحة والداكنة",
- "themeSelectionAria": "اختيار الموضوع",
- "themeLight": "ضوء",
- "themeDark": "الظلام",
+ "themeSelectionAria": "اختيار السمة",
+ "themeLight": "فاتح",
+ "themeDark": "داكن",
"themeSystem": "النظام",
"endpointTunnelVisibility": "رؤية نفق نقطة النهاية",
"endpointTunnelVisibilityDesc": "إخفاء عناصر التحكم في النفق من صفحة نقطة النهاية دون تغيير حالة النفق.",
- "showCloudflareTunnel": "نفق Cloudflare السريع",
- "showCloudflareTunnelDesc": "إظهار عناصر تحكم Cloudflare Quick Tunnel على صفحة نقطة النهاية.",
- "showTailscaleFunnel": "قمع الذيل",
- "showTailscaleFunnelDesc": "إظهار عناصر التحكم في Tailscale Funnel في صفحة نقطة النهاية.",
- "showNgrokTunnel": "نفق نغروك",
+ "showCloudflareTunnel": "Cloudflare Quick Tunnel",
+ "showCloudflareTunnelDesc": "إظهار عناصر تحكم Cloudflare Quick Tunnel في صفحة نقطة النهاية.",
+ "showTailscaleFunnel": "Tailscale Funnel",
+ "showTailscaleFunnelDesc": "إظهار عناصر تحكم Tailscale Funnel في صفحة نقطة النهاية.",
+ "showNgrokTunnel": "ngrok Tunnel",
"showNgrokTunnelDesc": "إظهار عناصر تحكم ngrok Tunnel في صفحة نقطة النهاية.",
- "sidebarVisibility": "Hide sidebar items",
- "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.",
- "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...",
+ "sidebarVisibility": "إخفاء عناصر الشريط الجانبي",
+ "sidebarVisibilityDesc": "قم بإخفاء أي إدخال للتنقل في الشريط الجانبي لتقليل الفوضى المرئية.",
+ "sidebarVisibilityHint": "يتم إخفاء أي قسم من الشريط الجانبي تلقائيًا عند...",
"hideHealthLogs": "إخفاء سجلات التحقق من الصحة",
"hideHealthLogsDesc": "عند التشغيل، قم بمنع رسائل [HealthCheck] في وحدة تحكم الخادم",
"themeAccent": "لون السمة",
@@ -4688,51 +4688,51 @@
"themeViolet": "بنفسجي",
"themeOrange": "برتقالي",
"themeCyan": "سماوي",
- "whitelabeling": "Branding",
- "whitelabelingDesc": "Customize the application name and logo",
- "appName": "Application Name",
- "appNameDesc": "Display name shown in sidebar and browser tab",
- "customLogo": "Custom Logo URL",
- "customLogoDesc": "URL to your custom logo image",
- "uploadLogo": "Upload Logo",
- "resetLogo": "Reset to Default",
- "logoPreview": "Preview",
- "customFavicon": "Browser Favicon",
- "customFaviconDesc": "URL to your custom favicon (shown in browser tab)",
- "uploadFavicon": "Upload Favicon",
- "resetFavicon": "Reset Favicon",
- "faviconPreview": "Favicon Preview",
+ "whitelabeling": "العلامة التجارية",
+ "whitelabelingDesc": "تخصيص اسم التطبيق والشعار",
+ "appName": "اسم التطبيق",
+ "appNameDesc": "يظهر الاسم المعروض في الشريط الجانبي وعلامة تبويب المتصفح",
+ "customLogo": "عنوان URL للشعار المخصص",
+ "customLogoDesc": "عنوان URL لصورة الشعار المخصص الخاص بك",
+ "uploadLogo": "تحميل الشعار",
+ "resetLogo": "إعادة التعيين إلى الافتراضي",
+ "logoPreview": "معاينة",
+ "customFavicon": "أيقونة المتصفح المفضلة",
+ "customFaviconDesc": "عنوان URL للأيقونة المفضلة المخصصة لديك (كما هو موضح في علامة تبويب المتصفح)",
+ "uploadFavicon": "تحميل الأيقونة المفضلة",
+ "resetFavicon": "إعادة تعيين الأيقونة المفضلة",
+ "faviconPreview": "معاينة المفضلة",
"flushCache": "مسح ذاكرة التخزين المؤقت",
- "flushing": "فلاشينغ…",
+ "flushing": "تفريغ…",
"size": "الحجم",
"hits": "الزيارات",
"evictions": "عمليات الإخلاء",
"loadingCacheStats": "جارٍ تحميل إحصائيات ذاكرة التخزين المؤقت…",
- "globalProxy": "الوكيل العالمي",
- "globalProxyDesc": "قم بتكوين وكيل خارجي عالمي لجميع مكالمات API. يمكن للموفرين الفرديين والمجموعات والمفاتيح تجاوز هذا.",
- "noGlobalProxy": "لم يتم تكوين وكيل عالمي",
- "bulkHealthcheck": "Bulk Healthcheck",
- "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.",
- "healthcheckTesting": "Testing...",
- "healthcheckAll": "Healthcheck All",
- "healthcheckFailed": "Failed to run healthcheck",
- "healthcheckTestingAll": "Testing all proxies in parallel...",
- "healthcheckTotal": "Total",
- "healthcheckWorking": "Working",
- "healthcheckFailedLabel": "Failed",
- "healthcheckStatus": "Status",
- "healthcheckProxyUrl": "Proxy URL",
- "healthcheckLatency": "Latency",
+ "globalProxy": "بروكسي العالمي",
+ "globalProxyDesc": "قم بتكوين بروكسي خارجي عالمي لجميع مكالمات API. يمكن للموفرين الفرديين والمجموعات والمفاتيح تجاوز هذا.",
+ "noGlobalProxy": "لم يتم تكوين بروكسي عالمي",
+ "bulkHealthcheck": "الفحص الصحي بالجملة",
+ "bulkHealthcheckDesc": "اختبر جميع الوكلاء الذين تم تكوينهم مقابل عنوان URL المستهدف للعثور على الوكلاء الذين يعملون.",
+ "healthcheckTesting": "اختبار...",
+ "healthcheckAll": "فحص الصحة الكل",
+ "healthcheckFailed": "فشل تشغيل الفحص الصحي",
+ "healthcheckTestingAll": "اختبار جميع الوكلاء بالتوازي ...",
+ "healthcheckTotal": "المجموع",
+ "healthcheckWorking": "العمل",
+ "healthcheckFailedLabel": "فشل",
+ "healthcheckStatus": "الحالة",
+ "healthcheckProxyUrl": "عنوان URL بروكسي",
+ "healthcheckLatency": "زمن الاستجابة",
"globalLabel": "عالمي",
"configure": "تكوين",
"globalSystemPrompt": "موجه النظام العالمي",
"saved": "تم الحفظ",
- "beforePromptLabel": "__MISSING__:Before Prompt",
- "beforePromptDesc": "__MISSING__:Injected before agent/provider system instructions",
- "beforePromptPlaceholder": "__MISSING__:Instructions inserted before agent/provider prompt...",
- "afterPromptLabel": "__MISSING__:After Prompt",
- "afterPromptDesc": "__MISSING__:Injected after agent/provider system instructions",
- "afterPromptPlaceholder": "__MISSING__:Instructions inserted after agent/provider prompt...",
+ "beforePromptLabel": "قبل الموجه",
+ "beforePromptDesc": "يُحقن قبل تعليمات نظام الوكيل أو المزوّد",
+ "beforePromptPlaceholder": "تعليمات تُدرج قبل موجه الوكيل أو المزوّد...",
+ "afterPromptLabel": "بعد الموجه",
+ "afterPromptDesc": "يُحقن بعد تعليمات نظام الوكيل أو المزوّد",
+ "afterPromptPlaceholder": "تعليمات تُدرج بعد موجه الوكيل أو المزوّد...",
"chars": "{count} حرف",
"thinkingBudgetTitle": "ميزانية التفكير",
"thinkingBudgetDesc": "التحكم في استخدام الرمز المميز لاستدلال الذكاء الاصطناعي عبر جميع الطلبات",
@@ -4773,20 +4773,20 @@
"authModelClient": "تتطلب نقاط نهاية واجهة برمجة تطبيقات العميل (/v1/*، /chat/*، /responses/*، /codex/*، /messages/*) مفتاح Bearer API.",
"authModelManagement": "تتطلب نقاط نهاية الإدارة (/dashboard، /api/*) جلسة لوحة معلومات أو بيانات اعتماد إدارية.",
"authModelPublic": "تكون مسارات تسجيل الدخول والصحة والتمهيد فقط عامة.",
- "bruteForceProtection": "تسجيل الدخول حماية القوة الغاشمة",
+ "bruteForceProtection": "Brute Force Protection",
"bruteForceProtectionDesc": "خنق وقفل /api/auth/login بعد الفشل المتكرر من نفس IP.",
- "corsAllowedOrigins": "CORS المسموح بها الأصول",
+ "corsAllowedOrigins": "CORS Allowed Origins",
"corsAllowedOriginsDesc": "قائمة مفصولة بفواصل لأصول المتصفح المسموح لها بالاتصال بهذا الخادم. القائمة الفارغة = لا يوجد وصول إلى CORS للمتصفح (لا يزال خادم إلى خادم يعمل). استخدم CORS_ALLOW_ALL=true env var للتطوير فقط.",
"blockedProviders": "مقدمي الخدمات المحظورين",
"blockedProvidersDesc": "إخفاء موفري خدمات محددين من استجابة /v1/models. لن يظهر مقدمو الخدمات المحظورون في قوائم النماذج.",
"providersBlocked": "{count} تم حظر الموفر (المزودين) من /models",
"blockProviderTitle": "كتلة {provider}",
"unblockProviderTitle": "قم بإلغاء حظر {provider}",
- "cliFingerprint": "CLI Fingerprint Matching",
- "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.",
- "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active",
- "enableFingerprintTitle": "Enable fingerprint for {provider}",
- "disableFingerprintTitle": "Disable fingerprint for {provider}",
+ "cliFingerprint": "مطابقة بصمة CLI",
+ "cliFingerprintDesc": "طابق تواقيع برامج CLI الأصلية عند تمرير الطلبات عبر الوكيل. يعيد ترتيب الترويسات وحقول النص لتبدو مطابقة لأدوات CLI الرسمية، مع الحفاظ على عنوان IP للوكيل.",
+ "cliFingerprintEnabled": "المزوّدون ذوو بصمة CLI النشطة: {count}",
+ "enableFingerprintTitle": "تمكين البصمة لـ {provider}",
+ "disableFingerprintTitle": "تعطيل البصمة لـ {provider}",
"systemTransforms": "كتلة النظام تحويل خط الأنابيب",
"systemTransformsDesc": "يتم تطبيق خط أنابيب التحويلات المطلوب لكل مزود على نص الطلب قبل إعادة التوجيه. يدعم أي معرف مزود.",
"systemTransformsAddProvider": "إضافة مزود",
@@ -4798,30 +4798,30 @@
"systemTransformsOpMoveDown": "تحرك للأسفل",
"systemTransformsOpDelete": "حذف المرجع",
"routingStrategy": "استراتيجية التوجيه",
- "routingAdvancedGuideTitle": "توجيه التوجيه المتقدم",
- "routingAdvancedGuideHint1": "استخدمFill First للحصول على الأولوية التي يمكن التنبؤ بها، وRound Robin للعدالة، وP2C لمرونة زمن الاستجابة.",
- "routingAdvancedGuideHint2": "إذا اختلف مقدمو الخدمة من حيث الجودة/التكلفة، فابدأ بـ Cost Opt للعمل في الخلفية والأقل استخدامًا للارتداء المتوازن.",
- "fillFirst": "املأ أولاً",
- "fillFirstDesc": "استخدم الحسابات بترتيب الأولوية",
- "roundRobin": "جولة روبن",
- "roundRobinDesc": "التنقل بين جميع الحسابات",
+ "routingAdvancedGuideTitle": "دليل التوجيه المتقدم",
+ "routingAdvancedGuideHint1": "استخدم Fill First لأولوية متوقعة، وRound Robin للتوزيع العادل، وP2C لتحسين زمن الاستجابة.",
+ "routingAdvancedGuideHint2": "إذا اختلف المزودون في الجودة أو التكلفة، فابدأ بـ Cost Opt للمهام الخلفية أو Least Used لتوزيع الاستخدام بالتساوي.",
+ "fillFirst": "الأول فالأول",
+ "fillFirstDesc": "استخدام الحسابات حسب ترتيب الأولوية",
+ "roundRobin": "التناوب الدوري",
+ "roundRobinDesc": "التناوب بين جميع الحسابات",
"p2c": "P2C",
- "p2cDesc": "اختر 2 عشوائيًا، واستخدم الأكثر صحة",
+ "p2cDesc": "اختيار حسابين عشوائيًا واستخدام الأفضل صحةً",
"random": "عشوائي",
"randomDesc": "حساب عشوائي لكل طلب",
"leastUsed": "الأقل استخدامًا",
- "leastUsedDesc": "اختر الحساب الأقل استخدامًا مؤخرًا",
- "costOpt": "خيار التكلفة",
- "costOptDesc": "تفضل أرخص حساب متاح",
- "resetAware": "إعادة تعيين واعية RR",
- "resetAwareDesc": "تفضل الحسابات ذات الحصة المتبقية السليمة وعمليات إعادة التعيين الأقرب",
- "strictRandom": "Strict Random",
- "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling",
- "stickyLimit": "الحد اللزج",
+ "leastUsedDesc": "اختيار الحساب الأقل استخدامًا مؤخرًا",
+ "costOpt": "الأقل تكلفة",
+ "costOptDesc": "تفضيل أرخص حساب متاح",
+ "resetAware": "تناوب دوري واعٍ بإعادة الضبط",
+ "resetAwareDesc": "تفضيل الحسابات ذات الحصة السليمة المتبقية وأقرب وقت لإعادة الضبط",
+ "strictRandom": "عشوائي صارم",
+ "strictRandomDesc": "يخلط المجموعة ويستخدم كل حساب مرة قبل إعادة الخلط",
+ "stickyLimit": "حد الرسائل المثبتة",
"stickyLimitDesc": "المكالمات لكل حساب قبل التبديل",
"modelAliases": "الأسماء المستعارة النموذجية",
"modelAliasesTitle": "أسماء بديلة للنماذج",
- "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.",
+ "modelAliasesDesc": "أعد تعيين أسماء النماذج باستخدام مطابقات تامة أو أنماط أحرف بدل.",
"addCustomAlias": "إضافة اسم بديل مخصص",
"deprecatedModelId": "معرف النموذج المهمل",
"newModelId": "معرف النموذج الجديد",
@@ -4837,8 +4837,8 @@
"cheapModel": "نموذج رخيص",
"detectionPatterns": "أنماط الكشف",
"newPattern": "مثال: \"أنشئ عنوانًا\"",
- "aliasPatternPlaceholder": "كلود السوناتة-*",
- "aliasTargetPlaceholder": "كلود السوناتة-4-20250514",
+ "aliasPatternPlaceholder": "claude-sonnet-*",
+ "aliasTargetPlaceholder": "claude-sonnet-4-20250514",
"pattern": "نمط",
"targetModel": "نموذج الهدف",
"add": "+ أضف",
@@ -4881,9 +4881,9 @@
"fallbackChainsDesc": "تحديد الترتيب الاحتياطي للموفر لكل نموذج",
"addChain": "+ إضافة سلسلة",
"modelName": "اسم النموذج",
- "modelNamePlaceholder": "كلود السوناتة-4-20250514",
- "providersCommaSeparated": "مقدمو الخدمة (مفصولون بفواصل، حسب ترتيب الأولوية)",
- "providersCommaSeparatedPlaceholder": "أنثروبي، أوبيناي، الجوزاء",
+ "modelNamePlaceholder": "claude-sonnet-4-20250514",
+ "providersCommaSeparated": "المزودون (مفصولون بفواصل حسب الأولوية)",
+ "providersCommaSeparatedPlaceholder": "Anthropic، OpenAI، Gemini",
"createChain": "إنشاء سلسلة",
"noFallbackChains": "لا سلاسل احتياطية",
"noFallbackChainsDesc": "قم بإنشاء سلسلة لتحديد الترتيب الاحتياطي للموفر للنموذج.",
@@ -4896,19 +4896,19 @@
"deleteChain": "حذف السلسلة",
"fillModelAndProviders": "يرجى ملء اسم النموذج ومقدمي الخدمات",
"addAtLeastOneProvider": "قم بإضافة مزود واحد على الأقل",
- "comboDefaultsTitle": "افتراضيات التحرير والسرد",
- "comboDefaultsGuideTitle": "كيفية ضبط إعدادات التحرير والسرد الافتراضية",
- "comboDefaultsGuideHint1": "اجعل عمليات إعادة المحاولة منخفضة في التدفقات ذات زمن الوصول المنخفض؛ زيادة المهلة فقط لمهام الجيل الطويل.",
- "comboDefaultsGuideHint2": "استخدم تجاوزات الموفر عندما يحتاج أحد الموفرين إلى سلوك مهلة/إعادة محاولة مختلف عن الإعدادات الافتراضية العامة.",
- "globalComboConfig": "تكوين التحرير والسرد العالمي",
- "defaultStrategy": "الإستراتيجية الافتراضية",
- "defaultStrategyDesc": "يتم تطبيقه على المجموعات الجديدة بدون استراتيجية واضحة",
- "comboStrategyAria": "استراتيجية التحرير والسرد",
+ "comboDefaultsTitle": "إعدادات المجموعات الافتراضية",
+ "comboDefaultsGuideTitle": "ضبط إعدادات المجموعات الافتراضية",
+ "comboDefaultsGuideHint1": "استخدم عددًا قليلًا من المحاولات للتدفقات منخفضة الكمون، وزد المهلة لمهام التوليد الطويلة فقط.",
+ "comboDefaultsGuideHint2": "استخدم تجاوزات المزود عندما يحتاج مزود إلى مهلة أو عدد محاولات مختلف عن الإعدادات العامة.",
+ "globalComboConfig": "الإعداد العام للمجموعات",
+ "defaultStrategy": "الاستراتيجية الافتراضية",
+ "defaultStrategyDesc": "تُطبق على المجموعات الجديدة التي لا تحدد استراتيجية صراحةً",
+ "comboStrategyAria": "استراتيجية المجموعة",
"priority": "الأولوية",
"weighted": "مرجح",
- "contextRelay": "Context Relay",
- "contextRelayDesc": "Hands off context between providers with automatic summarization",
- "maxRetriesLabel": "ماكس إعادة المحاولة",
+ "contextRelay": "ترحيل السياق",
+ "contextRelayDesc": "يسلّم السياق بين المزوّدين مع التلخيص التلقائي",
+ "maxRetriesLabel": "الحد الأقصى لإعادات المحاولة",
"retryDelayLabel": "تأخير إعادة المحاولة (ملي ثانية)",
"timeoutLabel": "المهلة (مللي ثانية)",
"healthCheck": "فحص الصحة",
@@ -4920,37 +4920,37 @@
"providerMaxRetriesAria": "{provider} الحد الأقصى لعدد مرات إعادة المحاولة",
"providerTimeoutAria": "{provider} المهلة مللي ثانية",
"removeProviderOverrideAria": "قم بإزالة تجاوز {provider}",
- "newProviderNamePlaceholder": "على سبيل المثال جوجل، افتحي...",
+ "newProviderNamePlaceholder": "مثال: Google أو OpenAI...",
"newProviderNameAria": "اسم المزود الجديد",
"retries": "إعادة المحاولة",
"ms": "مللي",
- "saveComboDefaults": "حفظ إعدادات التحرير والسرد الافتراضية",
+ "saveComboDefaults": "حفظ إعدادات المجموعات الافتراضية",
"maxNestingDepth": "أقصى عمق التعشيش",
"concurrencyPerModel": "التزامن/النموذج",
"queueTimeout": "مهلة قائمة الانتظار (مللي ثانية)",
- "contextRelayHandoffThreshold": "Handoff Threshold",
- "contextRelayMaxMessages": "Max Messages For Summary",
- "contextRelaySummaryModel": "Summary Model",
- "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.",
+ "contextRelayHandoffThreshold": "عتبة التسليم",
+ "contextRelayMaxMessages": "الحد الأقصى لرسائل الملخص",
+ "contextRelaySummaryModel": "نموذج التلخيص",
+ "contextRelayProviderNote": "ينشئ ترحيل السياق حاليًا عمليات تسليم لحسابات Codex ويستخدم هذه القيم كإعدادات عامة افتراضية للمجموعات الجديدة أو غير المكوّنة.",
"providerProfiles": "ملفات تعريف المزود",
"providerProfilesDesc": "إعدادات مرونة منفصلة لموفري OAuth (القائم على الجلسة) ومفتاح API (المقيّد). لدى موفري OAuth حدود أكثر صرامة بسبب انخفاض حدود الأسعار.",
- "oauthProviders": "موفري OAuth",
- "apiKeyProviders": "موفري مفاتيح API",
- "transientCooldown": "فترة التهدئة العابرة",
- "rateLimitCooldown": "حد معدل التهدئة",
- "maxBackoffLevel": "الحد الأقصى لمستوى التراجع",
- "cbThreshold": "عتبة CB",
- "cbResetTime": "وقت إعادة ضبط CB",
- "rateLimiting": "الحد من المعدل",
- "rateLimitingDesc": "يتم تحديد معدل موفري API Key تلقائيًا باستخدام الإعدادات الافتراضية الآمنة. يتم تعلم الحدود من رؤوس الاستجابة وتكييفها بمرور الوقت.",
+ "oauthProviders": "مزودو OAuth",
+ "apiKeyProviders": "مزودو مفاتيح API",
+ "transientCooldown": "فترة تهدئة عابرة",
+ "rateLimitCooldown": "فترة تهدئة حد المعدل",
+ "maxBackoffLevel": "أقصى مستوى للتراجع",
+ "cbThreshold": "عتبة قاطع الدائرة",
+ "cbResetTime": "وقت إعادة ضبط قاطع الدائرة",
+ "rateLimiting": "تحديد المعدل",
+ "rateLimitingDesc": "تُحدد معدلات مزودي مفاتيح API تلقائيًا بإعدادات افتراضية آمنة. تُستنتج الحدود من ترويسات الاستجابة وتتكيف بمرور الوقت.",
"defaultSafetyNet": "شبكة الأمان الافتراضية",
- "rpm": "دورة في الدقيقة",
- "minGap": "مين جاب",
- "maxConcurrent": "ماكس المتزامنة",
- "activeLimiters": "المحددات النشطة",
- "noActiveLimiters": "لا توجد محددات معدل نشطة حتى الآن.",
- "reservoir": "الخزان",
- "running": "الجري",
+ "rpm": "طلب/دقيقة",
+ "minGap": "أدنى فاصل",
+ "maxConcurrent": "أقصى تزامن",
+ "activeLimiters": "محددات المعدل النشطة",
+ "noActiveLimiters": "لا توجد محددات معدل نشطة بعد.",
+ "reservoir": "السعة المتبقية",
+ "running": "قيد التشغيل",
"queued": "في قائمة الانتظار",
"circuitBreakers": "قواطع الدائرة",
"breakerStateClosed": "مغلق",
@@ -5012,7 +5012,7 @@
"daysAgo": "{count}d منذ",
"backupReasonManual": "دليل",
"backupReasonPreRestore": "استعادة مسبقة",
- "connectionsCount": "{count, plural, one {# connection} other {# connections}}",
+ "connectionsCount": "عدد الاتصالات: {count, plural, one {اتصال واحد} other {# اتصالات}}",
"noChangesSinceBackup": "لا توجد تغييرات منذ النسخ الاحتياطي الأخير",
"backupFailed": "فشل النسخ الاحتياطي",
"restoreFailed": "فشلت عملية الاستعادة",
@@ -5062,85 +5062,85 @@
"editPricing": "تحرير التسعير",
"viewFullDetails": "عرض التفاصيل الكاملة",
"themeCoral": "مرجاني",
- "adaptiveVolumeRouting": "Adaptive Volume Routing",
- "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.",
- "lkgpToggleTitle": "Last Known Good Provider (LKGP)",
- "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.",
- "clearLkgpCache": "Clear LKGP Cache",
- "lkgpCacheCleared": "LKGP cache cleared successfully",
- "lkgpCacheClearFailed": "Failed to clear LKGP cache",
- "days": "Days",
- "lkgp": "LKGP Mode",
- "lkgpDesc": "Last Known Good Provider (Predictable resilience)",
- "maintenance": "Maintenance",
- "purgeExpiredLogs": "Purge Expired Logs",
- "purgeLogsFailed": "Failed to purge logs",
- "contextOpt": "Context Optimized",
- "contextOptDesc": "Routes based on context window requirements and conversation length",
- "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on",
- "weightedDesc": "Distributes traffic by percentage weights across providers",
- "modelRoutingTitle": "Model Routing Rules",
- "modelRoutingDesc": "Automatically route models to specific combos using glob patterns",
- "addRule": "Add Rule",
- "routeToCombo": "Route to Combo",
- "selectCombo": "Select combo...",
- "priorityHint": "Higher = checked first. Use 10+ for specific patterns.",
- "patternHint": "Use * for any chars, ? for single char. Case-insensitive.",
- "noRoutingRules": "No routing rules configured. Requests use the global combo by default.",
- "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.",
- "deleteRoutingRule": "Delete this model routing rule?",
- "exactMatchMode": "Exact Match",
- "wildcardPatternMode": "Wildcard Pattern",
- "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.",
- "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.",
- "noExactAliasesConfigured": "No exact-match aliases configured.",
- "wildcardRulesTitle": "Wildcard Rules",
- "noWildcardAliasesConfigured": "No wildcard aliases configured.",
- "overview": "Overview",
- "unknownError": "Unknown Error",
- "pricingSourceLiteLLM": "Pricing Source Lite Llm",
- "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm",
- "clearSyncedPricingFailed": "Clear Synced Pricing Failed",
- "pricingSourceUser": "Pricing Source User",
- "pageDescription": "Page Description",
- "pricingSyncStatus": "Pricing Sync Status",
- "whitelist": "Whitelist",
- "syncDisabled": "Sync Disabled",
- "pricingLoadFailed": "Pricing Load Failed",
- "pricingSyncDescription": "Pricing Sync Description",
- "clearSyncedPricingSuccess": "Clear Synced Pricing Success",
- "clearSyncedPricingFailedWithReason": "فشل مسح التسعير: {reason}",
- "pricingSourceDefault": "Pricing Source Default",
- "pricingSyncSuccess": "Pricing Sync Success",
- "enableSyncError": "Enable Sync Error",
- "syncEnabled": "Sync Enabled",
- "blacklist": "Blacklist",
- "pricingSourceModelsDev": "Pricing Source Models Dev",
- "syncedModels": "Synced Models",
- "budget": "Budget",
- "pricingSyncTitle": "Pricing Sync Title",
+ "adaptiveVolumeRouting": "توجيه الحجم التكيفي",
+ "adaptiveVolumeRoutingDesc": "وسّع الاتصالات ديناميكيًا بناءً على حجم الحمولة وضغط الإنتاجية.",
+ "lkgpToggleTitle": "آخر مزوّد ناجح معروف (LKGP)",
+ "lkgpToggleDesc": "عند التمكين، يتذكر الموجّه آخر مزوّد قدّم استجابة ناجحة ويجرّبه أولًا في الطلبات اللاحقة.",
+ "clearLkgpCache": "مسح ذاكرة LKGP المؤقتة",
+ "lkgpCacheCleared": "تم مسح ذاكرة LKGP المؤقتة بنجاح",
+ "lkgpCacheClearFailed": "فشل مسح ذاكرة LKGP المؤقتة",
+ "days": "أيام",
+ "lkgp": "وضع LKGP",
+ "lkgpDesc": "آخر مزوّد ناجح معروف (مرونة قابلة للتنبؤ)",
+ "maintenance": "الصيانة",
+ "purgeExpiredLogs": "حذف السجلات منتهية الصلاحية",
+ "purgeLogsFailed": "فشل حذف السجلات",
+ "contextOpt": "محسّن للسياق",
+ "contextOptDesc": "يوجّه استنادًا إلى متطلبات نافذة السياق وطول المحادثة",
+ "priorityDesc": "تراجع تسلسلي: يجرّب المزوّد الأول، ثم الثاني، وهكذا",
+ "weightedDesc": "يوزّع حركة المرور بين المزوّدين حسب أوزان نسبية",
+ "modelRoutingTitle": "قواعد توجيه النماذج",
+ "modelRoutingDesc": "وجّه النماذج تلقائيًا إلى مجموعات محددة باستخدام أنماط glob",
+ "addRule": "إضافة قاعدة",
+ "routeToCombo": "توجيه إلى مجموعة",
+ "selectCombo": "اختر مجموعة...",
+ "priorityHint": "أعلى = تم التحقق أولاً. استخدم 10+ لأنماط محددة.",
+ "patternHint": "استخدم * لأي حرف، ؟ لحرف واحد. غير حساسة لحالة الأحرف.",
+ "noRoutingRules": "لا توجد قواعد توجيه مكوّنة. تستخدم الطلبات المجموعة العامة افتراضيًا.",
+ "routingRuleHint": "أضف قاعدة مثل claude-opus* -> frontier-combo لتوجيه الطلبات تلقائيًا.",
+ "deleteRoutingRule": "هل تريد حذف قاعدة توجيه النموذج هذه؟",
+ "exactMatchMode": "المطابقة التامة",
+ "wildcardPatternMode": "نمط البدل",
+ "exactMatchModeDesc": "استخدم الأسماء المستعارة الدقيقة لمعرفات النماذج المهملة أو المعاد تسميتها.",
+ "wildcardPatternModeDesc": "استخدم الأسماء المستعارة لأحرف البدل مع * و؟ عندما يجب على مجموعة من النماذج تعيين هدف واحد.",
+ "noExactAliasesConfigured": "لم يتم تكوين أي أسماء مستعارة للمطابقة التامة.",
+ "wildcardRulesTitle": "قواعد البدل",
+ "noWildcardAliasesConfigured": "لم يتم تكوين أي أسماء مستعارة لأحرف البدل.",
+ "overview": "نظرة عامة",
+ "unknownError": "خطأ غير معروف",
+ "pricingSourceLiteLLM": "LiteLLM",
+ "clearSyncedPricingConfirm": "هل تريد مسح جميع الأسعار المتزامنة؟",
+ "clearSyncedPricingFailed": "فشل مسح الأسعار المتزامنة",
+ "pricingSourceUser": "المستخدم",
+ "pageDescription": "إدارة إعدادات OmniRoute وتفضيلاته",
+ "pricingSyncStatus": "حالة مزامنة الأسعار",
+ "whitelist": "القائمة البيضاء",
+ "syncDisabled": "المزامنة معطلة",
+ "pricingLoadFailed": "فشل تحميل الأسعار",
+ "pricingSyncDescription": "مزامنة أسعار النماذج من المصادر الخارجية",
+ "clearSyncedPricingSuccess": "مُسحت الأسعار المتزامنة بنجاح",
+ "clearSyncedPricingFailedWithReason": "فشل مسح الأسعار: {reason}",
+ "pricingSourceDefault": "الافتراضي",
+ "pricingSyncSuccess": "تمت مزامنة الأسعار بنجاح",
+ "enableSyncError": "فشل تمكين المزامنة",
+ "syncEnabled": "المزامنة مفعلة",
+ "blacklist": "القائمة السوداء",
+ "pricingSourceModelsDev": "models.dev",
+ "syncedModels": "النماذج المتزامنة",
+ "budget": "الميزانية",
+ "pricingSyncTitle": "مزامنة الأسعار",
"pricingResetFailedWithReason": "فشلت إعادة تعيين التسعير: {reason}",
- "tab": "Tab",
+ "tab": "علامة التبويب",
"pricingSavedProvider": "تم حفظ السعر لـ {provider}",
- "pricingSyncFailed": "Pricing Sync Failed",
+ "pricingSyncFailed": "فشلت مزامنة التسعير",
"pricingSaveFailedWithReason": "فشل حفظ الأسعار: {reason}",
"pricingResetProvider": "إعادة ضبط الأسعار لـ {provider}",
- "nextSync": "Next Sync",
+ "nextSync": "المزامنة التالية",
"pricingSyncFailedWithReason": "فشلت مزامنة التسعير: {reason}",
- "clearSyncedPricing": "Clear Synced Pricing",
- "compressionTitle": "Prompt Compression",
- "compressionDesc": "Reduce token usage by compressing prompts before sending to providers",
- "compressionMode": "Compression Mode",
- "compressionModeOff": "Off",
- "compressionModeOffDesc": "No compression applied",
- "compressionModeLite": "Lite",
- "compressionModeLiteDesc": "Whitespace and blank line reduction",
- "compressionModeStandard": "Standard (Caveman)",
- "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs",
- "compressionModeAggressive": "Aggressive",
- "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings",
- "compressionModeUltra": "Ultra",
- "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication",
+ "clearSyncedPricing": "مسح التسعير المتزامن",
+ "compressionTitle": "ضغط السياق",
+ "compressionDesc": "يمكنك تقليل استخدام الرمز المميز عن طريق ضغط المطالبات قبل إرسالها إلى مقدمي الخدمة",
+ "compressionMode": "وضع الضغط",
+ "compressionModeOff": "إيقاف",
+ "compressionModeOffDesc": "لم يتم تطبيق أي ضغط",
+ "compressionModeLite": "لايت",
+ "compressionModeLiteDesc": "المسافة البيضاء وتقليل الأسطر الفارغة",
+ "compressionModeStandard": "قياسي (Caveman)",
+ "compressionModeStandardDesc": "الضغط المستند إلى القواعد مع أكثر من 30 نمطًا، يحافظ على كتل التعليمات البرمجية وعناوين URL",
+ "compressionModeAggressive": "عدوانية",
+ "compressionModeAggressiveDesc": "التلخيص + ضغط نتائج الأداة + التقادم التدريجي لتحقيق أقصى قدر من التوفير",
+ "compressionModeUltra": "الترا",
+ "compressionModeUltraDesc": "أقصى قدر من الضغط مع جميع التقنيات بما في ذلك إلغاء البيانات المكررة الدلالية",
"compressionAggressiveConfig": "تكوين المحرك العدواني",
"compressionAggressiveConfigDesc": "تلخيص دقيق، وضغط الأدوات، وعتبات التقادم",
"compressionUltraConfig": "تكوين المحرك الفائق",
@@ -5152,102 +5152,102 @@
"compressionSummarizerEnabled": "تمكين الملخص",
"compressionMaxTokensPerMessage": "الحد الأقصى من الرموز لكل رسالة",
"compressionMinSavings": "الحد الأدنى لعتبة الادخار",
- "compressionAgingThresholds": "عتبات الشيخوخة",
+ "compressionAgingThresholds": "حدود تقادم البيانات",
"compressionAgingThresholdsDesc": "عدد الرسائل الحديثة المحفوظة في كل طبقة تقادم (أعلى = أكثر حفظًا)",
"compressionToolStrategies": "استراتيجيات نتيجة الأداة",
"compressionToolStrategiesDesc": "تبديل إستراتيجيات الضغط لأنواع نتائج الأدوات المختلفة",
- "compressionGeneral": "General Settings",
- "compressionAutoTrigger": "Auto-Trigger Threshold",
- "compressionCacheTTL": "Cache TTL",
- "compressionPreserveSystem": "Preserve System Prompt",
- "compressionCavemanConfig": "Caveman Engine Configuration",
- "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine",
- "compressionRoles": "Compress Message Roles",
- "compressionRoleUser": "User",
- "compressionRoleAssistant": "Assistant",
- "compressionRoleSystem": "System",
- "compressionMinLength": "Minimum Message Length",
- "compressionSkipRules": "Skip Compression Rules",
- "compressionSkipRulesDesc": "Click rules to skip them during compression",
- "compressionPreservePatterns": "Preserve Patterns",
- "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)",
- "compressionLogTitle": "Compression Log",
- "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.",
+ "compressionGeneral": "الإعدادات العامة",
+ "compressionAutoTrigger": "عتبة التشغيل التلقائي",
+ "compressionCacheTTL": "ذاكرة التخزين المؤقت TTL",
+ "compressionPreserveSystem": "الحفاظ على موجه النظام",
+ "compressionCavemanConfig": "تكوين محرك Caveman",
+ "compressionCavemanConfigDesc": "ضبط محرك الضغط القائم على القواعد",
+ "compressionRoles": "ضغط أدوار الرسالة",
+ "compressionRoleUser": "المستخدم",
+ "compressionRoleAssistant": "مساعد",
+ "compressionRoleSystem": "النظام",
+ "compressionMinLength": "الحد الأدنى لطول الرسالة",
+ "compressionSkipRules": "تخطي قواعد الضغط",
+ "compressionSkipRulesDesc": "انقر فوق القواعد لتخطيها أثناء الضغط",
+ "compressionPreservePatterns": "الحفاظ على الأنماط",
+ "compressionPreservePatternsDesc": "أنماط Regex التي لا يتم ضغطها أبدًا (واحد لكل سطر)",
+ "compressionLogTitle": "سجل الضغط",
+ "compressionLogEmpty": "لا توجد طلبات مضغوطة حتى الآن. ستظهر إحصائيات الضغط هنا عند معالجة الطلبات مع تمكين الضغط.",
"minutes": "دقائق",
- "compressionModeRtk": "RTK",
- "compressionModeRtkDesc": "Command-aware tool output filtering",
- "compressionModeStacked": "Stacked",
- "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression",
- "qdrantTitle": "Qdrant (Vector memory)",
- "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.",
- "qdrantStatusActive": "Active",
- "qdrantStatusError": "Error",
- "qdrantStatusDisabled": "Disabled",
- "qdrantEnable": "Enable Qdrant",
- "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.",
- "qdrantTesting": "Testing...",
- "qdrantTestConnection": "Test connection",
- "qdrantSaved": "Configuration saved",
- "qdrantSaveError": "Failed to save configuration",
- "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant",
- "qdrantPort": "Port",
- "qdrantPortHint": "Qdrant default: 6333",
- "qdrantCollectionHint": "Where memory points will be stored.",
- "qdrantEmbeddingModel": "Embedding model",
- "qdrantHelpTitle": "Quick setup help",
- "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)",
- "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.",
- "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.",
- "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.",
- "qdrantHelpStep4": "4. Save, test connection, then test search.",
- "qdrantEmbeddingQuickSelect": "Quick select from discovered models...",
+ "compressionModeRtk": "رتك",
+ "compressionModeRtkDesc": "تصفية مخرجات الأداة المدركة للأوامر",
+ "compressionModeStacked": "مكدسة",
+ "compressionModeStackedDesc": "تصفية مخرجات أداة RTK متبوعة بضغط رسائل Caveman",
+ "qdrantTitle": "Qdrant (الذاكرة المتجهة)",
+ "qdrantDesc": "اختياري. يفهرس الذكريات الدلالية في قاعدة بيانات متجهة خارجية لاسترجاعها بشكل أسرع.",
+ "qdrantStatusActive": "نشط",
+ "qdrantStatusError": "خطأ",
+ "qdrantStatusDisabled": "معطل",
+ "qdrantEnable": "تمكين Qdrant",
+ "qdrantEnableDesc": "عند التمكين، يمكن لاستراتيجية semantic/hybrid استخدام Qdrant لاستعادة الذكريات.",
+ "qdrantTesting": "اختبار...",
+ "qdrantTestConnection": "اتصال الاختبار",
+ "qdrantSaved": "تم حفظ التكوين",
+ "qdrantSaveError": "فشل حفظ التكوين",
+ "qdrantHostHint": "بدون منفذ. مثال: 127.0.0.1 أو http://qdrant",
+ "qdrantPort": "المنفذ",
+ "qdrantPortHint": "Qdrant الافتراضي: 6333",
+ "qdrantCollectionHint": "حيث سيتم تخزين نقاط الذاكرة.",
+ "qdrantEmbeddingModel": "نموذج التضمين",
+ "qdrantHelpTitle": "مساعدة في الإعداد السريع",
+ "qdrantHelpQuickTitle": "الإعداد السريع (Qdrant + OpenRouter)",
+ "qdrantHelpStep1": "1. المضيف: Qdrant IP/URL، المنفذ: 6333، المجموعة: omniroute_memory.",
+ "qdrantHelpStep2": "2. في حالة استخدام nvidia/llama-nemotron-embed-vl-1b-v2:free، استخدم بُعد المجموعة 2048.",
+ "qdrantHelpStep3": "3. مجال النموذج: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.",
+ "qdrantHelpStep4": "4. احفظ، واختبر الاتصال، ثم اختبر البحث.",
+ "qdrantEmbeddingQuickSelect": "اختر سريعًا من النماذج المكتشفة...",
"qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small",
- "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.",
- "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)",
- "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)",
- "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.",
- "qdrantSearchTestTitle": "Search test",
- "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.",
- "qdrantSearchPlaceholder": "Example: user preferences, history, etc",
- "qdrantNoResults": "No results (or Qdrant is not configured).",
- "qdrantCleanupTitle": "Retention and cleanup",
- "qdrantCleanupDesc": "Removes expired and old points based on",
- "searching": "Searching...",
- "cleaning": "Cleaning...",
- "cleanNow": "Clean now",
+ "qdrantEmbeddingHint": "التنسيق: Provider/model. يجب تكوين بيانات اعتماد الموفر.",
+ "qdrantApiKeyPlaceholderKeep": "(اتركه فارغًا للاحتفاظ بالمفتاح الحالي)",
+ "qdrantApiKeyPlaceholderOptional": "(اتركه فارغا في حالة عدم استخدامه)",
+ "qdrantSaveHint": "نصيحة: قم بتحرير host/port/collection/model وانقر فوق \"حفظ\". مفتاح API اختياري.",
+ "qdrantSearchTestTitle": "اختبار البحث",
+ "qdrantSearchTestDesc": "يولد التضمين والبحث في Qdrant.",
+ "qdrantSearchPlaceholder": "على سبيل المثال: تفضيلات المستخدم، والتاريخ، وما إلى ذلك",
+ "qdrantNoResults": "لا توجد نتائج (أو لم يتم تكوين Qdrant).",
+ "qdrantCleanupTitle": "الاحتفاظ والتنظيف",
+ "qdrantCleanupDesc": "يزيل النقاط منتهية الصلاحية والقديمة على أساس",
+ "searching": "جارٍ البحث...",
+ "cleaning": "تنظيف...",
+ "cleanNow": "تنظيف الآن",
"optional": "اختياري",
"current": "الحالي",
"remove": "إزالة",
"search": "بحث",
- "oneproxyTitle": "1proxy سوق الوكيل المجاني",
- "oneproxyTotalProxies": "مجموع الوكلاء",
+ "oneproxyTitle": "1proxy سوق بروكسي المجاني",
+ "oneproxyTotalProxies": "مجموع بروكسيات",
"oneproxyAvgQuality": "متوسط الجودة",
"resilienceScope": "النطاق:",
- "resilienceTrigger": "الزناد:",
+ "resilienceTrigger": "المشغّل:",
"resilienceEffect": "التأثير:",
- "resilienceRequestQueueTitle": "Request Queue & Rate",
- "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers",
- "resilienceRequestsPerMinute": "Requests per minute",
- "resilienceMinTimeBetweenRequests": "Minimum time between requests",
- "resilienceConcurrentRequests": "Concurrent requests",
+ "resilienceRequestQueueTitle": "قائمة انتظار الطلبات ومعدلها",
+ "resilienceAutoEnableApiKeyProviders": "تمكين تلقائي لموفري مفاتيح API",
+ "resilienceRequestsPerMinute": "الطلبات في الدقيقة",
+ "resilienceMinTimeBetweenRequests": "الحد الأدنى من الوقت بين الطلبات",
+ "resilienceConcurrentRequests": "الطلبات المتزامنة",
"resilienceMaxQueueWaitTime": "الحد الأقصى لوقت الانتظار في قائمة الانتظار",
- "resilienceBaseCooldown": "Base cooldown",
- "resilienceUseUpstreamRetryHints": "Use upstream retry hints",
- "resilienceDefaultPerProvider": "Default (per provider)",
- "resilienceAlwaysOn": "Always on",
- "resilienceAlwaysOff": "Always off",
+ "resilienceBaseCooldown": "التهدئة الأساسية",
+ "resilienceUseUpstreamRetryHints": "استخدم تلميحات إعادة المحاولة الأولية",
+ "resilienceDefaultPerProvider": "الافتراضي (لكل مزود)",
+ "resilienceAlwaysOn": "مفعّل دائمًا",
+ "resilienceAlwaysOff": "معطّل دائمًا",
"routingRemoveEntry": "إزالة الإدخال",
- "routingNeedlesSubstrings": "الإبر (سلاسل فرعية لتتناسب)",
- "routingCaseSensitive": "حساسة لحالة الأحرف",
+ "routingNeedlesSubstrings": "السلاسل المطلوب مطابقتها",
+ "routingCaseSensitive": "حساس لحالة الأحرف",
"routingPrefixes": "البادئات",
- "routingMatch": "مباراة",
- "routingReplacement": "استبدال",
- "routingReplaceAllOccurrences": "استبدال كافة الأحداث",
- "routingPatternRegex": "النمط (التعبير العادي)",
- "routingFlags": "أعلام",
- "routingNeedles": "الإبر",
- "routingBlockText": "حظر النص",
- "routingIdempotencyKey": "مفتاح العجز",
+ "routingMatch": "النص المطابق",
+ "routingReplacement": "الاستبدال",
+ "routingReplaceAllOccurrences": "استبدال جميع التطابقات",
+ "routingPatternRegex": "النمط (Regex)",
+ "routingFlags": "العلامات",
+ "routingNeedles": "سلاسل البحث",
+ "routingBlockText": "نص الكتلة",
+ "routingIdempotencyKey": "مفتاح عدم التكرار",
"routingEntrypoint": "نقطة الدخول",
"routingVersionFormat": "تنسيق الإصدار",
"routingCchAlgorithm": "خوارزمية CCH",
@@ -5279,9 +5279,9 @@
"oneproxyAllProtocols": "جميع البروتوكولات",
"oneproxyCountryCodePlaceholder": "رمز البلد (مثل الولايات المتحدة)",
"oneproxyMinQualityPlaceholder": "الحد الأدنى من الجودة",
- "oneproxyLoadingProxies": "جارٍ تحميل الوكلاء...",
+ "oneproxyLoadingProxies": "جارٍ تحميل بروكسيات...",
"oneproxyLastSyncLabel": "آخر مزامنة:",
- "oneproxyProxiesFetched": "تم جلب الوكلاء:",
+ "oneproxyProxiesFetched": "تم جلب بروكسيات:",
"oneproxyConsecutiveFailures": "الإخفاقات المتتالية:",
"oneproxyErrorLabel": "خطأ:",
"oneproxyNever": "أبدا",
@@ -5289,52 +5289,52 @@
"oneproxySuccess": "النجاح",
"oneproxyFailed": "فشل",
"routingAntigravitySignatureTitle": "وضع ذاكرة التخزين المؤقت للتوقيع المضاد للجاذبية",
- "routingAntigravitySignatureDesc": "__MISSING__:Control whether OmniRoute reuses only stored Gemini thought signatures or accepts validated client-provided signatures in Antigravity-compatible tool-call flows.",
- "routingAntigravitySignatureEnabledLabel": "__MISSING__:Enabled",
- "routingAntigravitySignatureEnabledDesc": "__MISSING__:Current behavior. Ignore client-provided signatures and keep using the stored OmniRoute flow.",
- "routingAntigravitySignatureBypassLabel": "__MISSING__:Bypass",
- "routingAntigravitySignatureBypassDesc": "__MISSING__:Accept client-provided signatures after lightweight validation and fall back to the stored signature when invalid.",
- "routingAntigravitySignatureBypassStrictLabel": "__MISSING__:Bypass Strict",
- "routingAntigravitySignatureBypassStrictDesc": "__MISSING__:Require full protobuf validation before accepting a client-provided signature.",
- "routingHeaderFingerprintTitle": "بصمة الرأس (لكل مزود)",
+ "routingAntigravitySignatureDesc": "التحكم فيما إذا كان OmniRoute يعيد استخدام التوقيعات الفكرية المخزنة فقط في Gemini أو يقبل التوقيعات المقدمة من العميل والتي تم التحقق من صحتها في تدفقات استدعاء الأدوات المتوافقة مع Antigravity.",
+ "routingAntigravitySignatureEnabledLabel": "ممكّن",
+ "routingAntigravitySignatureEnabledDesc": "السلوك الحالي. تجاهل التوقيعات المقدمة من العميل واستمر في استخدام تدفق OmniRoute المخزن.",
+ "routingAntigravitySignatureBypassLabel": "تجاوز",
+ "routingAntigravitySignatureBypassDesc": "اقبل التوقيعات المقدمة من العميل بعد التحقق الخفيف ثم ارجع إلى التوقيع المخزن عندما يكون غير صالح.",
+ "routingAntigravitySignatureBypassStrictLabel": "تجاوز صارمة",
+ "routingAntigravitySignatureBypassStrictDesc": "يتطلب التحقق الكامل من صحة protobuf قبل قبول التوقيع المقدم من العميل.",
+ "routingHeaderFingerprintTitle": "بصمة الترويسة (لكل مزود)",
"routingServerRejectedSave": "⚠ تم رفض الخادم حفظ:",
"routingAddTransformOp": "أضف عملية تحويل",
"routingClientCacheControlTitle": "التحكم في ذاكرة التخزين المؤقت للعميل",
- "routingClientCacheControlDesc": "__MISSING__:Configure whether OmniRoute preserves client-provided cache_control markers",
- "routingClientCacheControlAutoDesc": "__MISSING__:For deterministic Claude-compatible flows, preserve client-provided cache_control as-is. If the request has no cache_control, OmniRoute does not inject any bridge-owned markers for CC-compatible third-party proxy compatibility.",
- "routingClientCacheControlAlwaysLabel": "__MISSING__:Always Preserve",
- "routingClientCacheControlAlwaysDesc": "__MISSING__:Always forward client-provided cache_control headers to upstream providers as-is.",
- "routingClientCacheControlNeverLabel": "__MISSING__:Never Preserve",
- "routingClientCacheControlNeverDesc": "__MISSING__:Always remove client cache_control headers and let OmniRoute manage caching where native provider flows support it.",
+ "routingClientCacheControlDesc": "قم بتكوين ما إذا كان OmniRoute يحتفظ بعلامات التحكم في ذاكرة التخزين المؤقت المقدمة من قبل العميل",
+ "routingClientCacheControlAutoDesc": "بالنسبة للتدفقات الحتمية المتوافقة مع Claude، احتفظ بوحدة التحكم في ذاكرة التخزين المؤقت المقدمة من العميل كما هي. إذا لم يكن للطلب أي تحكم في ذاكرة التخزين المؤقت، فلن يقوم OmniRoute بإدخال أي علامات مملوكة للجسر من أجل توافق وكيل الطرف الثالث المتوافق مع CC.",
+ "routingClientCacheControlAlwaysLabel": "الحفاظ دائما",
+ "routingClientCacheControlAlwaysDesc": "قم دائمًا بإعادة توجيه رؤوس ذاكرة التخزين المؤقت المقدمة من العميل إلى موفري الخدمة الأولية كما هي.",
+ "routingClientCacheControlNeverLabel": "لا تحفظ أبدًا",
+ "routingClientCacheControlNeverDesc": "قم دائمًا بإزالة رؤوس ذاكرة التخزين المؤقت للعميل والسماح لـ OmniRoute بإدارة التخزين المؤقت حيث تدعمها تدفقات الموفر الأصلي.",
"routingZeroConfigTitle": "التوجيه التلقائي بدون تكوين",
- "routingZeroConfigDesc": "__MISSING__:Enable automatic provider selection using the auto/ prefix. When enabled, requests to auto, auto/coding, auto/fast, etc. will dynamically route across all connected providers.",
+ "routingZeroConfigDesc": "تمكين التحديد التلقائي للموفر باستخدام البادئة/التلقائية. عند التمكين، سيتم توجيه طلبات auto وauto/coding وauto/fast وما إلى ذلك ديناميكيًا عبر جميع مقدمي الخدمة المتصلين.",
"routingDefaultAutoVariant": "البديل التلقائي الافتراضي",
"visionBridge": "جسر الرؤية",
- "visionBridgeDesc": "__MISSING__:Run an automatic vision-to-text fallback before routing image requests to text-only models.",
- "visionBridgeEnabledLabel": "__MISSING__:Enabled",
- "visionBridgeEnabledDesc": "__MISSING__:Toggle the pre-call bridge that replaces image parts with extracted text.",
+ "visionBridgeDesc": "قم بتشغيل احتياطي تلقائي لرؤية النص قبل توجيه طلبات الصور إلى النماذج النصية فقط.",
+ "visionBridgeEnabledLabel": "ممكّن",
+ "visionBridgeEnabledDesc": "قم بتبديل جسر الاتصال المسبق الذي يستبدل أجزاء الصورة بالنص المستخرج.",
"visionBridgeModel": "نموذج الجسر",
"visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
- "visionBridgeModelHint": "__MISSING__:Any OmniRoute model ID that supports vision can be used here.",
+ "visionBridgeModelHint": "يمكن هنا استخدام أي معرف لنموذج OmniRoute يدعم الرؤية.",
"visionBridgePrompt": "موجه الجسر",
"visionBridgePromptPlaceholder": "صف هذه الصورة بإيجاز.",
- "visionBridgePromptHint": "__MISSING__:Sent to the vision model before the extracted description is injected back into the original request.",
+ "visionBridgePromptHint": "يتم إرساله إلى نموذج الرؤية قبل إعادة إدخال الوصف المستخرج في الطلب الأصلي.",
"visionBridgeTimeoutMs": "المهلة (مللي ثانية)",
"visionBridgeMaxImagesPerRequest": "ماكس الصور لكل طلب",
- "resilienceMaxBackoffSteps": "Max backoff steps",
- "resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
- "resilienceFailureThreshold": "Failure threshold",
- "resilienceDegradationThreshold": "Degradation threshold",
+ "resilienceMaxBackoffSteps": "أقصى خطوات التراجع",
+ "resilienceProviderBreakerTitle": "قواطع دوائر لكل مزود",
+ "resilienceFailureThreshold": "عتبة الفشل",
+ "resilienceDegradationThreshold": "عتبة التدهور",
"resilienceResetTimeout": "إعادة تعيين المهلة",
"resilienceFailureThresholdLabel": "عتبة الفشل",
"resilienceResetTimeoutLabel": "إعادة تعيين المهلة",
- "resilienceConnectionCooldownTitle": "Connection Cooldown",
+ "resilienceConnectionCooldownTitle": "تهدئة الاتصال",
"resilienceUseUpstreamRetryHintsLabel": "استخدم تلميحات إعادة المحاولة الأولية",
"resilienceUseUpstream429BreakerLabel": "استخدم تلميحات المنبع 429 (الكسارة)",
"resilienceMaxBackoffStepsLabel": "أقصى خطوات التراجع",
"resilienceYes": "نعم",
"resilienceNo": "لا",
- "resilienceDefault": "Default",
+ "resilienceDefault": "الافتراضي",
"storageDatabaseBackupRetention": "الاحتفاظ بالنسخة الاحتياطية لقاعدة البيانات",
"storagePurgeData": "تطهير البيانات",
"retentionQuotaSnapshots": "لقطات الحصص (بالأيام)",
@@ -5343,23 +5343,23 @@
"retentionCallLogs": "سجلات المكالمات (أيام)",
"retentionUsageHistory": "تاريخ الاستخدام (بالأيام)",
"retentionMemoryEntries": "إدخالات الذاكرة (أيام)",
- "storageAutoVacuumMode": "وضع الفراغ التلقائي",
- "storageScheduledVacuum": "فراغ مجدول",
- "storageVacuumHour": "ساعة الفراغ (0-23)",
+ "storageAutoVacuumMode": "وضع التنظيف التلقائي",
+ "storageScheduledVacuum": "تنظيف مجدول",
+ "storageVacuumHour": "ساعة التنظيف (0-23)",
"storagePageSize": "حجم الصفحة (بايت)",
"storageDatabaseSize": "حجم قاعدة البيانات",
"storagePageCount": "عدد الصفحات",
- "storageFreelistCount": "عدد القائمة الحرة",
- "storageLastVacuum": "الفراغ الأخير",
- "storageLastOptimization": "التحسين الأخير",
- "storageIntegrityCheck": "التحقق من النزاهة",
+ "storageFreelistCount": "عدد الصفحات الحرة",
+ "storageLastVacuum": "آخر تنظيف",
+ "storageLastOptimization": "آخر تحسين",
+ "storageIntegrityCheck": "فحص السلامة",
"storageIntegrityOk": "✓ موافق",
"storageIntegrityError": "✗ خطأ",
"storageUsageTokenBuffer": "المخزن المؤقت لرمز الاستخدام",
"compressionSettingsAutoTriggerMode": "وضع الزناد التلقائي",
"compressionSettingsMcpDescriptionCompression": "ضغط وصف MCP",
- "compressionSettingsCavemanIntensity": "شدة رجل الكهف",
- "compressionSettingsCavemanOutputMode": "وضع إخراج رجل الكهف",
+ "compressionSettingsCavemanIntensity": "شدة Caveman",
+ "compressionSettingsCavemanOutputMode": "وضع إخراج Caveman",
"compressionSettingsOutputIntensity": "كثافة الإخراج",
"compressionSettingsAutoClarityBypass": "تجاوز الوضوح التلقائي",
"resilienceWaitForCooldown": "انتظر فترة التهدئة",
@@ -5371,112 +5371,112 @@
"memorySkillsApiKey": "مفتاح واجهة برمجة التطبيقات",
"memorySkillsActiveSkillsProvider": "مزود المهارات النشطة",
"cliproxyapiFallback": "CLIProxyAPI الاحتياطي",
- "cliproxyapiEnableFallback": "تمكين خيار CLIPProxyAPI الاحتياطي",
+ "cliproxyapiEnableFallback": "استخدم خيار CLIPProxyAPI الاحتياطي",
"cliproxyapiUrl": "عنوان URL لـ CLIProxyAPI",
- "cliproxyapiStatus": "حالة كليبروكسيابي",
+ "cliproxyapiStatus": "حالة cli بروكسيابي",
"cliproxyapiNotDetected": "لم يتم الكشف عنها",
"payloadRulesTitle": "قواعد الحمولة",
- "payloadRulesDesc": "__MISSING__:Configure request payload mutations by model and protocol. Changes are persisted in settings and hot reloaded into the runtime immediately after save.",
- "payloadRuleDefaultTitle": "__MISSING__:default",
- "payloadRuleDefaultDesc": "__MISSING__:Applies params only when the target path is missing from the outgoing payload.",
- "payloadRuleOverrideTitle": "__MISSING__:override",
- "payloadRuleOverrideDesc": "__MISSING__:Forces values onto the payload, replacing anything already present at that path.",
- "payloadRuleFilterTitle": "__MISSING__:filter",
- "payloadRuleFilterDesc": "__MISSING__:Removes blocked params from the payload before the upstream request is sent.",
- "payloadRuleDefaultRawTitle": "__MISSING__:defaultRaw",
- "payloadRuleDefaultRawDesc": "__MISSING__:Like default, but string values are parsed as JSON first when possible. The legacy input alias default-raw is also accepted on save.",
- "payloadEditorTitle": "__MISSING__:Editor",
- "payloadEditorDesc": "__MISSING__:Use the runtime schema shape: default, override, filter, defaultRaw. The API also accepts the legacy input key default-raw.",
- "payloadEditorReady": "__MISSING__:Ready",
- "payloadResetInfo": "__MISSING__:Editor reset to the neutral template. Save to apply it.",
- "payloadSaveSuccess": "__MISSING__:Payload rules saved and hot reloaded.",
- "payloadJsonParseError": "__MISSING__:JSON parse error: {error}",
- "payloadMustBeObject": "__MISSING__:Payload rules must be a JSON object.",
- "payloadInvalidJson": "__MISSING__:Invalid JSON payload.",
- "payloadValidJsonRequired": "__MISSING__:Payload rules must be valid JSON before saving.",
- "savePayloadRules": "__MISSING__:Save Payload Rules",
- "requestLimitsTitle": "__MISSING__:Request Limits",
- "requestLimitsDesc": "__MISSING__:Configure global request limits and concurrency guards.",
- "maxRequestSizeLabel": "__MISSING__:Max Request Size (MB)",
- "maxRequestSizeDesc": "__MISSING__:Maximum allowed size for incoming API requests.",
- "maxResponseSizeLabel": "__MISSING__:Max Response Size (MB)",
- "maxResponseSizeDesc": "__MISSING__:Maximum allowed size for outgoing API responses.",
- "maxRequestTokensLabel": "__MISSING__:Max Request Tokens",
- "maxRequestTokensDesc": "__MISSING__:Maximum total tokens allowed in a single request.",
- "maxResponseTokensLabel": "__MISSING__:Max Response Tokens",
- "maxResponseTokensDesc": "__MISSING__:Maximum total tokens allowed in a single response.",
+ "payloadRulesDesc": "تكوين طفرات حمولة الطلب حسب النموذج والبروتوكول. تستمر التغييرات في الإعدادات ويتم إعادة تحميلها في وقت التشغيل مباشرة بعد الحفظ.",
+ "payloadRuleDefaultTitle": "افتراضي (default)",
+ "payloadRuleDefaultDesc": "يتم تطبيق المعلمات فقط عندما يكون المسار الهدف مفقودًا من الحمولة الصادرة.",
+ "payloadRuleOverrideTitle": "تجاوز",
+ "payloadRuleOverrideDesc": "يفرض القيم على الحمولة، ليحل محل أي شيء موجود بالفعل في هذا المسار.",
+ "payloadRuleFilterTitle": "مرشح",
+ "payloadRuleFilterDesc": "يزيل المعلمات المحظورة من الحمولة قبل إرسال طلب المنبع.",
+ "payloadRuleDefaultRawTitle": "افتراضي خام (defaultRaw)",
+ "payloadRuleDefaultRawDesc": "مثل الوضع الافتراضي، لكن تُحلّل قيم السلاسل بوصفها JSON أولًا متى أمكن. يُقبل أيضًا الاسم القديم default-raw عند الحفظ.",
+ "payloadEditorTitle": "المحرر",
+ "payloadEditorDesc": "استخدم مخطط وقت التشغيل: default وoverride وfilter وdefaultRaw. تقبل API أيضًا مفتاح الإدخال القديم default-raw.",
+ "payloadEditorReady": "جاهز",
+ "payloadResetInfo": "إعادة تعيين المحرر إلى القالب المحايد. حفظ لتطبيقه.",
+ "payloadSaveSuccess": "تم حفظ قواعد الحمولة وإعادة تحميلها بسرعة.",
+ "payloadJsonParseError": "خطأ في تحليل JSON: {error}",
+ "payloadMustBeObject": "يجب أن تكون قواعد الحمولة كائن JSON.",
+ "payloadInvalidJson": "حمولة JSON غير صالحة.",
+ "payloadValidJsonRequired": "يجب أن تكون قواعد الحمولة صالحة بتنسيق JSON قبل الحفظ.",
+ "savePayloadRules": "حفظ قواعد الحمولة",
+ "requestLimitsTitle": "حدود الطلب",
+ "requestLimitsDesc": "تكوين حدود الطلب العالمية وحراس التزامن.",
+ "maxRequestSizeLabel": "الحد الأقصى لحجم الطلب (ميجابايت)",
+ "maxRequestSizeDesc": "الحد الأقصى للحجم المسموح به لطلبات واجهة برمجة التطبيقات الواردة.",
+ "maxResponseSizeLabel": "الحد الأقصى لحجم الاستجابة (ميجابايت)",
+ "maxResponseSizeDesc": "الحد الأقصى للحجم المسموح به لاستجابات واجهة برمجة التطبيقات الصادرة.",
+ "maxRequestTokensLabel": "الحد الأقصى لرموز الطلب",
+ "maxRequestTokensDesc": "الحد الأقصى لإجمالي الرموز المسموح بها في طلب واحد.",
+ "maxResponseTokensLabel": "الحد الأقصى لرموز الاستجابة",
+ "maxResponseTokensDesc": "الحد الأقصى لإجمالي الرموز المسموح بها في استجابة واحدة.",
"modelCooldownsTitle": "نماذج في فترة التهدئة",
"modelCooldownsEmpty": "لا توجد نماذج في فترة التهدئة الآن.",
- "codexFastTierTitle": "طبقة الدستور الغذائي السريعة",
- "codexFastTierDesc": "قم بإدخال Service_tier=priority عالميًا لطلبات OpenAI Codex.",
- "codexFastTierHint": "عند التمكين، يضيف OmniRoute خدمة_الطبقة=الأولوية إلى طلبات Codex الصادرة للاتصالات التي لا تحدد طبقة بالفعل. تتطلب طبقة الأولوية مفتاح OpenAI Enterprise API أو مسار ChatGPT-auth Codex؛ ستتلقى أنواع المفاتيح الأخرى خطأ متعلقًا بالطبقة من OpenAI. تكون الأولوية لإعدادات كل اتصال في صفحة موفر Codex.",
- "codexFastTierSaveError": "فشل في تحديث إعداد Codex Fast Tier",
- "codexFastTierTierLabel": "__MISSING__:Service tier",
- "codexFastTierTierPriority": "__MISSING__:Priority",
- "codexFastTierTierFlex": "__MISSING__:Flex",
- "codexFastTierTierDefault": "__MISSING__:Default",
- "codexFastTierModelsLabel": "__MISSING__:Fast-tier models",
- "codexFastTierModelsHint": "__MISSING__:Only checked models receive service_tier when Fast Tier is enabled.",
- "codexFastTierModelCheckbox": "__MISSING__:Enable Fast Tier for {model}",
- "claudeFastModeTitle": "كلود الوضع السريع",
- "claudeFastModeDesc": "قم باختيار طلبات Claude المحددة في الوضع الأنثروبي السريع (السرعة: \"سريع\").",
- "claudeFastModeHint": "لا يدعم Anthropic الوضع السريع رسميًا لعملاء نمط SDK. عند التمكين، يقوم OmniRoute بإعادة توجيه رأس X-CPA-Force-Fast-Mode حتى يتمكن إصدار CLIProxyAPI المقترن من الاشتراك في محاكاة ساخرة لنقطة الدخول. يتم فحص نماذج Opus المدرجة فقط من خلال فحص جانب العميل الخاص بـ Anthropic. لا تزال طبقة الاشتراك وخطة Max والرصيد الائتماني للوضع السريع مفروضة من جانب الخادم - قد تقوم Anthropic بإرجاع out_of_credits حتى عندما يكون التبديل قيد التشغيل.",
+ "codexFastTierTitle": "طبقة Codex السريعة",
+ "codexFastTierDesc": "إضافة service_tier=priority عالميًا إلى طلبات OpenAI Codex.",
+ "codexFastTierHint": "عند التمكين، يضيف OmniRoute service_tier=priority إلى طلبات Codex الصادرة للاتصالات التي لا تحدد طبقة بالفعل. تتطلب طبقة الأولوية مفتاح OpenAI Enterprise API أو مسار ChatGPT-auth Codex؛ أما أنواع المفاتيح الأخرى فقد تتلقى خطأ متعلقًا بالطبقة من OpenAI. تتقدم إعدادات كل اتصال في صفحة مزود Codex على هذا الإعداد.",
+ "codexFastTierSaveError": "فشل تحديث إعداد طبقة Codex السريعة",
+ "codexFastTierTierLabel": "طبقة الخدمة",
+ "codexFastTierTierPriority": "الأولوية",
+ "codexFastTierTierFlex": "مرنة",
+ "codexFastTierTierDefault": "افتراضية",
+ "codexFastTierModelsLabel": "نماذج الطبقة السريعة",
+ "codexFastTierModelsHint": "لا تتلقى service_tier عند تمكين الطبقة السريعة إلا النماذج المحددة.",
+ "codexFastTierModelCheckbox": "تمكين الطبقة السريعة للنموذج {model}",
+ "claudeFastModeTitle": "وضع Claude السريع",
+ "claudeFastModeDesc": "تشغيل طلبات Claude المحددة في وضع Anthropic السريع (speed: \"fast\").",
+ "claudeFastModeHint": "لا يدعم Anthropic الوضع السريع رسميًا لعملاء SDK. عند التمكين، يعيد OmniRoute توجيه الترويسة X-CPA-Force-Fast-Mode كي يتمكن إصدار CLIProxyAPI المقترن من تفعيل محاكاة نقطة الدخول. لا يجتاز فحص Anthropic من جانب العميل إلا نماذج Opus المدرجة. تظل طبقة الاشتراك وخطة Max ورصيد الوضع السريع مفروضة من الخادم؛ وقد يعيد Anthropic الخطأ out_of_credits حتى مع تشغيل الخيار.",
"claudeFastModeModelsLabel": "يتم تطبيقه على النماذج ({count})",
"claudeFastModeModelCheckbox": "تمكين الوضع السريع لـ {model}",
"claudeFastModeSaveError": "فشل في تحديث إعداد Claude Fast Mode",
"authz": {
- "title": "__MISSING__:Authorization Inventory",
- "description": "__MISSING__:5-tier route classification with live bypass policy. Read shows the full taxonomy; mutations re-prompt for the management password.",
- "loading": "__MISSING__:Loading inventory…",
- "loadError": "__MISSING__:Failed to load authz inventory",
+ "title": "مخزون التفويض",
+ "description": "تصنيف للمسارات من خمس طبقات مع سياسة تجاوز مباشرة. تعرض القراءة التصنيف الكامل، بينما تطلب عمليات التعديل كلمة مرور الإدارة مجددًا.",
+ "loading": "جارٍ تحميل المخزون…",
+ "loadError": "فشل تحميل مخزون التفويض",
"tier": {
- "LOCAL_ONLY": "__MISSING__:Local only",
- "ALWAYS_PROTECTED": "__MISSING__:Always protected",
- "MANAGEMENT": "__MISSING__:Management",
- "CLIENT_API": "__MISSING__:Client API",
- "PUBLIC": "__MISSING__:Public"
+ "LOCAL_ONLY": "محلي فقط",
+ "ALWAYS_PROTECTED": "محمي دائمًا",
+ "MANAGEMENT": "الإدارة",
+ "CLIENT_API": "واجهة API للعميل",
+ "PUBLIC": "عام"
},
"bypass": {
- "section": "__MISSING__:Manage-scope bypass",
+ "section": "تجاوز نطاق الإدارة",
"kill_switch": {
- "label": "__MISSING__:Bypass kill-switch",
- "desc": "__MISSING__:Master toggle. When off, no LOCAL_ONLY prefix is reachable from non-loopback regardless of the per-prefix list."
+ "label": "مفتاح إيقاف التجاوز",
+ "desc": "تبديل رئيسي. عند إيقاف التشغيل، لا يمكن الوصول إلى أي بادئة LOCAL_ONLY من خلال نظام عدم الاسترجاع بغض النظر عن القائمة الخاصة بكل بادئة."
},
"prefix": {
- "label": "__MISSING__:Bypassable prefixes",
- "desc": "__MISSING__:LOCAL_ONLY prefixes that manage-scope API keys (or dashboard sessions) may reach from non-loopback hosts.",
- "add": "__MISSING__:Add prefix",
- "placeholder": "__MISSING__:/api/mcp/v2/",
- "empty": "__MISSING__:No prefixes configured. Bypass effectively off."
+ "label": "البادئات التي يمكن تجاوزها",
+ "desc": "LOCAL_ONLY البادئات التي قد تصل إليها مفاتيح واجهة برمجة التطبيقات لإدارة النطاق (أو جلسات لوحة المعلومات) من المضيفين الذين لا يتمتعون بالاسترجاع.",
+ "add": "أضف بادئة",
+ "placeholder": "/api/mcp/v2/",
+ "empty": "لم يتم تكوين أي بادئات. تجاوز بشكل فعال."
},
- "cli_tools_runtime_note": "__MISSING__:Spawn-capable prefix. Compile-time deny; cannot be made bypassable. Shown read-only."
+ "cli_tools_runtime_note": "بادئة قادرة على النشر. رفض وقت الترجمة؛ لا يمكن تجاوزه. تظهر للقراءة فقط."
},
"password": {
"prompt": {
- "label": "__MISSING__:Current password",
- "desc": "__MISSING__:Re-confirm to apply security-impacting changes."
+ "label": "كلمة المرور الحالية",
+ "desc": "أعد التأكيد لتطبيق التغييرات المؤثرة على الأمان."
},
- "placeholder": "__MISSING__:Current management password",
- "cancel": "__MISSING__:Cancel",
- "submit": "__MISSING__:Apply"
+ "placeholder": "كلمة مرور الإدارة الحالية",
+ "cancel": "إلغاء",
+ "submit": "تطبيق"
},
- "save": "__MISSING__:Save changes",
- "saved": "__MISSING__:Authz settings updated",
- "pending": "__MISSING__:Unsaved changes",
+ "save": "حفظ التغييرات",
+ "saved": "تم تحديث إعدادات Authz",
+ "pending": "التغييرات غير المحفوظة",
"badge": {
- "bypassable": "__MISSING__:Bypassable via manage scope",
- "strict": "__MISSING__:Strict loopback",
- "auth_required": "__MISSING__:Auth required",
- "public": "__MISSING__:Public",
- "always_protected": "__MISSING__:Always protected",
- "spawn_capable": "__MISSING__:Spawn-capable"
+ "bypassable": "يمكن تجاوزه عبر إدارة النطاق",
+ "strict": "استرجاع صارم",
+ "auth_required": "المصادقة مطلوبة",
+ "public": "عام",
+ "always_protected": "محمية دائما",
+ "spawn_capable": "قادرة على تفرخ"
},
"error": {
- "PASSWORD_REQUIRED": "__MISSING__:Current password required to apply these changes.",
- "PASSWORD_MISMATCH": "__MISSING__:Current password is incorrect.",
- "INSUFFICIENT_SCOPE": "__MISSING__:API key lacks the manage scope.",
- "BYPASS_PREFIX_NOT_ALLOWED": "__MISSING__:One or more prefixes target spawn-capable routes and cannot be bypassed.",
- "GENERIC": "__MISSING__:Failed to update authz settings."
+ "PASSWORD_REQUIRED": "كلمة المرور الحالية مطلوبة لتطبيق هذه التغييرات.",
+ "PASSWORD_MISMATCH": "كلمة المرور الحالية غير صحيحة.",
+ "INSUFFICIENT_SCOPE": "يفتقر مفتاح API إلى نطاق الإدارة.",
+ "BYPASS_PREFIX_NOT_ALLOWED": "تستهدف بادئة واحدة أو أكثر المسارات القادرة على النشر ولا يمكن تجاوزها.",
+ "GENERIC": "فشل في تحديث إعدادات authz."
}
},
"resilienceBaseCooldownLabel": "التهدئة الأساسية",
@@ -5513,11 +5513,11 @@
"resilienceEnableServerWaitDesc": "عند تمكينه، ينتظر OmniRoute انتهاء فترة التهدئة الأولى ويعيد المحاولة تلقائيًا.",
"resilienceMaxAttempts": "الحد الأقصى للمحاولات",
"resilienceMaxWaitPerAttempt": "الحد الأقصى للانتظار لكل محاولة",
- "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.",
- "forcedFingerprintBadge": "Required",
- "codexSessionAffinityTitle": "تقارب جلسة الدستور الغذائي",
- "codexSessionAffinityDesc": "يحتفظ بمحادثة Codex واحدة على نفس الحساب لعدة ثوانٍ. 0 تعطيله.",
- "codexSessionAffinityTtl": "تقارب TTL (بالثواني)",
+ "forcedFingerprintTitle": "مُمكّن دائمًا لـ {provider} — مطلوب لسلامة حساب OAuth؛ لا يمكن إيقاف تشغيله.",
+ "forcedFingerprintBadge": "مطلوب",
+ "codexSessionAffinityTitle": "تقارب جلسة Codex",
+ "codexSessionAffinityDesc": "يُبقي محادثة Codex على الحساب نفسه لعدة ثوانٍ. استخدم 0 لتعطيله.",
+ "codexSessionAffinityTtl": "مدة التقارب TTL (بالثواني)",
"resetAwareQuotaCacheTitle": "إعادة ضبط ذاكرة التخزين المؤقت للحصص النسبية",
"resetAwareQuotaCacheDesc": "يقوم بتخزين قياس الحصص عن بعد مؤقتًا للطلب الذي يتم إعادة تعيينه فقط. لا يزال الاختبار المبدئي للحصة يحمي الطلبات. 0/0 يستمر في الجلب المباشر.",
"resetAwareQuotaCacheTtl": "TTL الطازجة (ثواني)",
@@ -5525,45 +5525,45 @@
"qdrantCleanupSuccess": "حسنًا: تمت إزالة {count} نقطة (نقاط) (الاحتفاظ: {days} يوم)",
"qdrantCleanupFailed": "فشلت عملية التنظيف",
"qdrantCleanupError": "خطأ: {error}",
- "vercelRelaySuccess": "__MISSING__:Vercel Relay deployed successfully",
- "vercelRelayButton": "__MISSING__:Deploy Vercel Relay",
- "vercelRelayModalTitle": "__MISSING__:Deploy Vercel Relay",
- "vercelRelayWarning": "__MISSING__:Warning: A Vercel deployment token is required. This token will only be used to create the serverless relay and will never be stored by OmniRoute.",
- "vercelRelayTokenLabel": "__MISSING__:Vercel Access Token",
- "vercelRelayProjectNameLabel": "__MISSING__:Vercel Project Name",
- "vercelRelayFreeTierNote": "__MISSING__:Relays are lightweight proxy endpoints deployed on Vercel's free tier to bypass local network/region limitations.",
- "vercelRelayDeploying": "__MISSING__:Deploying...",
- "vercelRelayDeploy": "__MISSING__:Deploy",
- "homePinProviderQuotaToHome": "Pin Information to Home Page",
- "homeProviderQuotaLimits": "Provider Quota Limits",
- "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.",
- "homeQuickStart": "Quick Start",
- "homeQuickStartDesc": "Show the Quick Start panel on the Home page.",
- "homeProviderTopology": "Provider Topology",
- "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.",
- "codexAutoPingTitle": "Codex Quota Auto-Ping",
- "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.",
- "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.",
- "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting",
- "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}"
+ "vercelRelaySuccess": "تم نشر Vercel Relay بنجاح",
+ "vercelRelayButton": "نشر Vercel Relay",
+ "vercelRelayModalTitle": "نشر Vercel Relay",
+ "vercelRelayWarning": "تحذير: يلزم رمز نشر Vercel. سيُستخدم الرمز فقط لإنشاء المرحّل عديم الخادم ولن يخزّنه OmniRoute.",
+ "vercelRelayTokenLabel": "رمز وصول Vercel",
+ "vercelRelayProjectNameLabel": "اسم مشروع Vercel",
+ "vercelRelayFreeTierNote": "المرحّلات نقاط نهاية وكيلة خفيفة تُنشر على طبقة Vercel المجانية لتجاوز قيود الشبكة المحلية/المنطقة.",
+ "vercelRelayDeploying": "جارٍ النشر...",
+ "vercelRelayDeploy": "نشر",
+ "homePinProviderQuotaToHome": "تثبيت المعلومات على الصفحة الرئيسية",
+ "homeProviderQuotaLimits": "حدود حصة المزود",
+ "homeProviderQuotaLimitsDesc": "قم بتثبيت حاوية حالة Provider Quota (مع زر تحديث الكل) في أعلى الصفحة الرئيسية.",
+ "homeQuickStart": "بداية سريعة",
+ "homeQuickStartDesc": "إظهار لوحة البدء السريع على الصفحة الرئيسية.",
+ "homeProviderTopology": "طوبولوجيا الموفر",
+ "homeProviderTopologyDesc": "إظهار طوبولوجيا الموفر على الصفحة الرئيسية.",
+ "codexAutoPingTitle": "اختبار حصة Codex تلقائيًا",
+ "codexAutoPingDesc": "خيار لكل اتصال: يرسل طلبًا صغيرًا مباشرةً بعد إعادة ضبط نافذة جلسة Codex كي يكون الاتصال جاهزًا عند الحاجة.",
+ "codexAutoPingWarning": "يستهلك كل اختبار قدرًا صغيرًا من حصة Codex الفعلية. الخيار معطل افتراضيًا؛ فعّله فقط للاتصالات التي تعتمد عليها.",
+ "codexAutoPingSaveError": "فشل تحديث إعداد Codex Auto-Ping",
+ "codexAutoPingToggleAria": "تبديل اختبار حصة Codex التلقائي للاتصال {connection}"
},
"contextRtk": {
- "title": "RTK Engine",
- "description": "Command-aware compression for tool output, terminal logs and build results.",
- "enabled": "Enabled",
- "intensity": "Intensity",
- "intensityMinimal": "Minimal",
- "intensityStandard": "Standard",
- "intensityAggressive": "Aggressive",
- "toolResults": "Tool results",
- "assistantMessages": "Assistant messages",
- "codeBlocks": "Code blocks",
+ "title": "محرك آر تي كيه",
+ "description": "ضغط مدرك للأوامر لمخرجات الأداة والسجلات الطرفية ونتائج البناء.",
+ "enabled": "ممكّن",
+ "intensity": "الشدة",
+ "intensityMinimal": "الحد الأدنى",
+ "intensityStandard": "قياسي",
+ "intensityAggressive": "عدوانية",
+ "toolResults": "نتائج الأداة",
+ "assistantMessages": "رسائل المساعد",
+ "codeBlocks": "كتل التعليمات البرمجية",
"filterCatalog": "كتالوج التصفية",
"filterCatalogDesc": "مرشحات الإخراج المتاحة حسب الفئة",
"guidedConfig": "التكوين",
"guidedConfigDesc": "اضبط كيفية قيام RTK بتصفية مخرجات المحطة الطرفية",
- "maxLines": "Max lines",
- "maxChars": "Max chars",
+ "maxLines": "خطوط ماكس",
+ "maxChars": "ماكس الأحرف",
"deduplicateThreshold": "عتبة إلغاء التكرار",
"customFilters": "مرشحات مخصصة",
"detectedType": "النوع المكتشف",
@@ -5575,22 +5575,22 @@
"rawOutputFailures": "الفشل",
"rawOutputAlways": "دائما",
"rawOutputMaxBytes": "الحد الأقصى للإخراج الخام",
- "filterTesting": "Filter Testing",
- "pasteOutput": "Paste tool output to test filtering...",
+ "filterTesting": "اختبار التصفية",
+ "pasteOutput": "لصق مخرجات الأداة لاختبار التصفية...",
"presetHigh": "عدوانية",
"presetLow": "ضوء",
"presetMaxChars": "الحد الأقصى لأحرف الإخراج",
"presetMaxLines": "الحد الأقصى لخطوط الإخراج",
"presetMedium": "قياسي",
- "run": "Run",
- "result": "Result",
- "previewEmpty": "Run a sample to preview RTK output.",
- "detected": "Detected",
- "masterSwitchOffAlert": "__MISSING__:Token Saver master switch is OFF — these settings will not affect requests until you turn it on from the Endpoint page.",
- "tokensFiltered": "Tokens filtered",
- "filtersActive": "Filters active",
- "requests": "Requests",
- "avgSavings": "Avg savings",
+ "run": "تشغيل",
+ "result": "النتيجة",
+ "previewEmpty": "قم بتشغيل عينة لمعاينة إخراج RTK.",
+ "detected": "تم الكشف عنها",
+ "masterSwitchOffAlert": "تم إيقاف تشغيل المفتاح الرئيسي لـ Token Saver - لن تؤثر هذه الإعدادات على الطلبات حتى تقوم بتشغيله من صفحة نقطة النهاية.",
+ "tokensFiltered": "تمت تصفية الرموز المميزة",
+ "filtersActive": "المرشحات نشطة",
+ "requests": "الطلبات",
+ "avgSavings": "متوسط المدخرات",
"simpleMode": "بسيط",
"advancedMode": "متقدم",
"searchFilters": "مرشحات البحث...",
@@ -5599,59 +5599,59 @@
"tooltipMaxLines": "الحد الأقصى للأسطر التي يجب الاحتفاظ بها من إخراج الأمر. يتم اقتطاع الزائدة."
},
"contextCombos": {
- "title": "Compression Combos",
- "description": "Define how engines are combined for different routing scenarios.",
- "createCombo": "Create Compression Combo",
- "editCombo": "Edit",
- "deleteCombo": "Delete",
- "deleteConfirm": "Delete this compression combo?",
- "pipeline": "Pipeline",
- "addStep": "Add Step",
- "removeStep": "Remove",
- "name": "Name",
- "descriptionField": "Description",
- "languagePacks": "Language Packs",
- "outputMode": "Output Mode",
- "assignToRouting": "Assign to Routing Combos",
- "noAssignments": "No routing combos available",
- "default": "Default",
- "setAsDefault": "Set as Default",
- "save": "Save",
- "cancel": "Cancel",
- "enabled": "Enabled"
+ "title": "مجموعات الضغط",
+ "description": "حدد كيفية دمج المحركات لسيناريوهات التوجيه المختلفة.",
+ "createCombo": "إنشاء مجموعة ضغط",
+ "editCombo": "تحرير",
+ "deleteCombo": "حذف",
+ "deleteConfirm": "هل تريد حذف مجموعة الضغط هذه؟",
+ "pipeline": "خط أنابيب",
+ "addStep": "أضف خطوة",
+ "removeStep": "إزالة",
+ "name": "الاسم",
+ "descriptionField": "الوصف",
+ "languagePacks": "حزم اللغات",
+ "outputMode": "وضع الإخراج",
+ "assignToRouting": "تعيين لمجموعات التوجيه",
+ "noAssignments": "لا توجد مجموعات التوجيه المتاحة",
+ "default": "الافتراضي",
+ "setAsDefault": "تعيين كافتراضي",
+ "save": "حفظ",
+ "cancel": "إلغاء",
+ "enabled": "ممكّن"
},
"contextCaveman": {
- "title": "Caveman Engine",
- "description": "Rule-based message compression, language packs, analytics and output mode controls.",
+ "title": "محرك Caveman",
+ "description": "ضغط الرسائل المستند إلى القواعد وحزم اللغات والتحليلات وعناصر التحكم في وضع الإخراج.",
"advancedConfig": "التكوين المتقدم",
"advancedConfigDesc": "ضبط سلوك الضغط",
"aggressiveSettings": "الإعدادات العدوانية",
"aggressiveSettingsDesc": "الحد الأقصى من الضغط مع مقايضات الجودة المحتملة",
- "requests": "Requests",
- "tokensSaved": "Tokens saved",
- "savingsPercent": "Savings %",
- "avgLatency": "Avg latency",
- "languagePacks": "Language Packs",
- "languagePacksDesc": "Enable compression rules for specific languages.",
+ "requests": "الطلبات",
+ "tokensSaved": "تم حفظ الرموز",
+ "savingsPercent": "نسبة التوفير",
+ "avgLatency": "متوسط زمن الوصول",
+ "languagePacks": "حزم اللغات",
+ "languagePacksDesc": "تمكين قواعد الضغط للغات محددة.",
"labelAutoTrigger": "الضغط التلقائي عندما يتجاوز السياق",
"labelCompressionRate": "قوة الضغط",
"labelMaxTokens": "الرموز المستهدفة لكل رسالة",
"labelMinLength": "الحد الأدنى لطول الرسالة",
"labelMinSavings": "الحد الأدنى من الرموز للحفظ",
- "enabled": "Enabled",
- "autoDetect": "Auto-detect language",
- "rulesCount": "{count} rules",
- "inputCompressionTitle": "__MISSING__:Input compression",
- "inputCompressionDesc": "__MISSING__:Rewrite chat history with shorter wording. Reduces input tokens by ~50%.",
- "analyticsTitle": "Compression Analytics",
- "noAnalytics": "No compression analytics yet.",
+ "enabled": "ممكّن",
+ "autoDetect": "اكتشاف اللغة تلقائيًا",
+ "rulesCount": "عدد القواعد: {count}",
+ "inputCompressionTitle": "ضغط الإدخال",
+ "inputCompressionDesc": "أعد صياغة سجل الدردشة بعبارات أقصر لتقليل رموز الإدخال بنحو 50٪.",
+ "analyticsTitle": "تحليلات الضغط",
+ "noAnalytics": "لا توجد تحليلات ضغط حتى الآن.",
"outputMode": "وضع الإخراج",
- "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.",
- "outputModeTitle": "Output Mode",
+ "outputModeDesc": "يوجّه LLM للرد بصيغة موجزة ومضغوطة.",
+ "outputModeTitle": "وضع الإخراج",
"quickSettings": "الإعدادات السريعة",
"quickSettingsDesc": "إعدادات الضغط الأساسية للبدء",
- "autoClarity": "Auto-Clarity Bypass",
- "bypassConditions": "Bypass conditions",
+ "autoClarity": "تجاوز الوضوح التلقائي",
+ "bypassConditions": "شروط التجاوز",
"bypassConditionsList": "الأمن، لا رجعة فيه، والتوضيح، وحساسة للنظام",
"simpleMode": "بسيط",
"advancedMode": "متقدم",
@@ -5663,9 +5663,9 @@
"ultraSettings": "إعدادات الترا",
"ultraSettingsDesc": "الضغط الدلالي الذي يعمل بنظام SLM",
"preview": {
- "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.",
- "full": "Respond terse and compact. Preserve all technical substance.",
- "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols."
+ "lite": "أجب بإيجاز. حافظ على المصطلحات التقنية والشيفرة والأخطاء وعناوين URL والمعرّفات.",
+ "full": "أجب باقتضاب وبصيغة مضغوطة مع الحفاظ على كامل المضمون التقني.",
+ "ultra": "أجب بأقصى إيجاز باستخدام الاختصارات التقنية الشائعة، وحافظ على الرموز كما هي."
}
},
"translator": {
@@ -5891,7 +5891,7 @@
"usage": {
"title": "الاستخدام",
"loggerTab": "المسجل",
- "proxyTab": "وكيل",
+ "proxyTab": "بروكسي",
"budgetManagement": "إدارة الميزانية",
"budgetSaved": "تم حفظ حدود الميزانية",
"budgetSaveFailed": "فشل في حفظ الميزانية",
@@ -5927,7 +5927,7 @@
"circuitBreakers": "قواطع الدائرة",
"lockedIPs": "عناوين IP المقفلة",
"lockoutsAutoRefreshHint": "أقفال حد المعدل لكل طراز • التحديث التلقائي لمدة 10 ثوانٍ",
- "lockedCount": "{count, plural, one {# locked} other {# locked}}",
+ "lockedCount": "العناصر المقفلة: {count, plural, one {عنصر واحد مقفل} other {# عناصر مقفلة}}",
"timeLeft": "{time} اليسار",
"howItWorks": "كيف يعمل",
"howItWorksSubtitle": "تعرف على كيفية التحقق من صحة التقييمات من استجابات LLM الخاصة بك",
@@ -5937,19 +5937,19 @@
"runStepDescription": "قم بتنفيذ حالات الاختبار على نقاط نهاية LLM الخاصة بك من خلال OmniRoute. يتم إرسال كل حالة كطلب API حقيقي.",
"evaluate": "تقييم",
"evaluateStepDescription": "تتم مقارنة الاستجابات بالمعايير المتوقعة. راجع النجاح/الفشل لكل حالة باستخدام مقاييس زمن الاستجابة والتعليقات التفصيلية.",
- "evalsStrategyContainsLabel": "__MISSING__:Contains",
- "evalsStrategyExactLabel": "__MISSING__:Exact Match",
- "evalsStrategyRegexLabel": "__MISSING__:Regex",
- "evalsStrategyCustomLabel": "__MISSING__:Custom Logic",
- "evalsStrategyContainsDescription": "__MISSING__:Checks if the LLM output contains the expected substring.",
- "evalsStrategyExactDescription": "__MISSING__:Checks if the LLM output exactly matches the expected value.",
- "evalsStrategyRegexDescription": "__MISSING__:Validates the LLM output against a regular expression pattern.",
- "evalsStrategyCustomDescription": "__MISSING__:Custom evaluation logic (configured via JSON).",
- "historyColumnSuiteName": "__MISSING__:Suite Name",
- "historyColumnTarget": "__MISSING__:Target",
- "historyColumnPassRate": "__MISSING__:Pass Rate",
- "historyColumnAvgLatencyMs": "__MISSING__:Avg Latency",
- "historyColumnCreatedAt": "__MISSING__:Executed",
+ "evalsStrategyContainsLabel": "يحتوي على",
+ "evalsStrategyExactLabel": "مطابقة تامة",
+ "evalsStrategyRegexLabel": "Regex",
+ "evalsStrategyCustomLabel": "منطق مخصص",
+ "evalsStrategyContainsDescription": "يتحقق مما إذا كان إخراج LLM يحتوي على السلسلة الفرعية المتوقعة.",
+ "evalsStrategyExactDescription": "يتحقق من مطابقة إخراج LLM للقيمة المتوقعة تمامًا.",
+ "evalsStrategyRegexDescription": "يتحقق من إخراج LLM باستخدام نمط تعبير عادي.",
+ "evalsStrategyCustomDescription": "منطق تقييم مخصص (يُكوّن عبر JSON).",
+ "historyColumnSuiteName": "اسم الحزمة",
+ "historyColumnTarget": "الهدف",
+ "historyColumnPassRate": "معدل النجاح",
+ "historyColumnAvgLatencyMs": "متوسط زمن الاستجابة",
+ "historyColumnCreatedAt": "وقت التنفيذ",
"evalSuites": "أجنحة التقييم",
"evalSuitesHint": "انقر فوق مجموعة لعرض حالات الاختبار، ثم قم بالتشغيل لتقييم نقاط نهاية LLM الخاصة بك",
"evalsLoading": "جارٍ تحميل مجموعات التقييم...",
@@ -5971,12 +5971,12 @@
"modelsUnderTest": "نماذج تحت الاختبار",
"searchSuitesPlaceholder": "أجنحة البحث...",
"passSuffix": "تمرير",
- "casesCount": "{count, plural, one {# case} other {# cases}}",
+ "casesCount": "الحالات: {count, plural, one {حالة واحدة} other {# حالات}}",
"runEval": "تشغيل التقييم",
"runAllSuites": "تشغيل الكل",
"runAllRunning": "تشغيل الكل...",
"runAllProgress": "تشغيل {current}/{total}: {name}",
- "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}",
+ "runAllFailedSuites": "الحزم الفاشلة: {count, plural, one {حزمة واحدة فاشلة} other {# حزم فاشلة}}",
"runAllCompleted": "تم تشغيل {suites} مجموعة — تم نجاح {passed}، وفشل {failed}",
"runAllCompletedWithFailures": "تم تشغيل {completed} من الأجنحة؛ فشل إكمال {failedSuites}",
"runningProgress": "جارٍ تشغيل {current}/{total}...",
@@ -6026,14 +6026,14 @@
"providerLimits": "حدود المزود",
"noProviders": "لا يوجد مقدمي خدمات متصلين",
"connectProvidersForQuota": "اتصل بموفري خدمة OAuth لتتبع حدود حصص واجهة برمجة التطبيقات (API) واستخدامها.",
- "accountsCount": "{count, plural, one {# account} other {# accounts}}",
+ "accountsCount": "الحسابات: {count, plural, one {حساب واحد} other {# حسابات}}",
"filteredFromCount": "(تمت التصفية من {count})",
"autoRefresh": "التحديث التلقائي",
"refreshAll": "تحديث الكل",
"loadingQuotas": "جار التحميل...",
"account": "الحساب",
"modelQuotas": "الحصص النموذجية",
- "lastUsed": "Last Refreshed",
+ "lastUsed": "آخر تحديث",
"actions": "الإجراءات",
"refreshQuota": "تحديث الحصة",
"today": "اليوم",
@@ -6044,12 +6044,12 @@
"rawPlanWithValue": "الخطة الأولية: {plan}",
"noPlanFromProvider": "لا توجد خطة من المزود",
"noQuotaData": "لا توجد بيانات الحصص",
- "cardExpand": "__MISSING__:Expand",
- "cardCollapse": "__MISSING__:Collapse",
- "moreQuotas": "__MISSING__:+{count} more",
- "ungrouped": "Ungrouped",
- "viewFlat": "Flat",
- "viewByEnvironment": "By Environment",
+ "cardExpand": "توسيع",
+ "cardCollapse": "طي",
+ "moreQuotas": "+{count} إضافية",
+ "ungrouped": "غير مجمّعة",
+ "viewFlat": "عرض مسطح",
+ "viewByEnvironment": "حسب البيئة",
"noQuotaDataAvailable": "لا توجد بيانات الحصص المتاحة",
"noAccountsForTierFilter": "لم يتم العثور على حسابات لمرشح الطبقة",
"tierAll": "الكل",
@@ -6060,26 +6060,26 @@
"tierPro": "برو",
"tierPlus": "زائد",
"tierFree": "مجاني",
- "tierLite": "__MISSING__:Lite",
+ "tierLite": "لايت",
"tierUnknown": "غير معروف",
- "statTotal": "__MISSING__:Total",
- "statCritical": "__MISSING__:Critical",
- "statAlert": "__MISSING__:Alert",
- "statHealthy": "__MISSING__:Healthy",
- "filterPurchaseTypeLabel": "__MISSING__:Type",
- "filterTierLabel": "__MISSING__:Tier",
- "purchaseAll": "__MISSING__:All",
- "purchaseOauthSub": "__MISSING__:Subscription",
- "purchaseOauthFree": "__MISSING__:OAuth Free",
- "purchaseApiKey": "__MISSING__:API Key",
- "creditsLabel": "__MISSING__:Credits",
- "creditBalanceHint": "__MISSING__:Remaining balance",
- "unlimitedLabel": "__MISSING__:Unlimited",
- "refreshing": "__MISSING__:Refreshing",
- "resetsIn": "__MISSING__:Resets in",
+ "statTotal": "المجموع",
+ "statCritical": "حرجة",
+ "statAlert": "تنبيه",
+ "statHealthy": "صحي",
+ "filterPurchaseTypeLabel": "النوع",
+ "filterTierLabel": "الفئة",
+ "purchaseAll": "الكل",
+ "purchaseOauthSub": "اشتراك OAuth",
+ "purchaseOauthFree": "OAuth مجاني",
+ "purchaseApiKey": "مفتاح API",
+ "creditsLabel": "الرصيد",
+ "creditBalanceHint": "الرصيد المتبقي",
+ "unlimitedLabel": "غير محدود",
+ "refreshing": "جارٍ التحديث",
+ "resetsIn": "إعادة التعيين خلال",
"editCutoffs": "تحرير القطع",
"forceRefresh": "قم بالتحديث الآن",
- "suiteBuilderSaveFailed": "Failed to save suite",
+ "suiteBuilderSaveFailed": "فشل حفظ المجموعة",
"clone": "استنساخ",
"exportSuite": "تصدير",
"importSuite": "استيراد",
@@ -6090,103 +6090,103 @@
"suiteImportInvalid": "مجموعة التقييم JSON غير صالحة",
"suiteBuilderCloneSuffix": "نسخة",
"suiteBuilderImportedSuite": "جناح مستورد",
- "scorecardTitle": "Scorecard",
- "evalApiKey": "API Key",
- "scorecardPassRate": "Pass Rate",
- "targetTypeModel": "Model",
- "actualOutputLabel": "Actual Output",
- "evalTargetHint": "Select a model or combo to evaluate.",
- "suiteBuilderDeleted": "Suite deleted successfully",
- "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.",
- "nextResetUtc": "Next reset (UTC)",
- "scorecardHint": "Aggregated pass rates across all evaluation suites.",
- "suiteLatestRunsHint": "Most recent evaluation runs for this suite.",
- "saving": "Saving",
- "suiteBuilderCaseModelLabel": "Model (optional)",
- "evalControlsTitle": "Evaluation Controls",
- "suiteBuilderEditTitle": "Edit Eval Suite",
- "suiteBuilderCaseStrategyLabel": "Validation Strategy",
- "notifySelectDifferentCompareTarget": "Please select a different target for comparison",
- "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.",
- "evalCompareHint": "Optionally compare results against a second target.",
- "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.",
- "historyEmpty": "No evaluation history yet",
- "suiteBuilderUpdated": "Suite updated successfully",
- "resetInterval": "Reset Interval",
- "suiteBuilderCreateTitle": "Create Eval Suite",
- "activePeriodSpend": "Active Period Spend",
- "evalApiKeyHint": "Select which API key to use for evaluation requests.",
- "evalCompareOptional": "Compare (optional)",
- "suiteBuilderDeleteFailed": "Failed to delete suite",
- "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...",
- "scorecardCases": "Cases",
- "runCompletedWithScore": "Evaluation completed — {score}% pass rate",
- "suiteBuilderCustomBadge": "Custom",
- "targetSuiteDefaults": "Suite defaults",
- "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.",
- "suiteBuilderNameLabel": "Suite Name",
- "scorecardSuites": "Suites",
- "evalCompareTarget": "Compare Target",
- "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini",
- "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.",
- "recentRunsTitle": "Recent Runs",
- "suiteBuilderCaseSystemPromptLabel": "System Prompt",
- "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci",
+ "scorecardTitle": "بطاقة النتائج",
+ "evalApiKey": "مفتاح API",
+ "scorecardPassRate": "معدل النجاح",
+ "targetTypeModel": "نموذج",
+ "actualOutputLabel": "المخرجات الفعلية",
+ "evalTargetHint": "حدّد نموذجًا أو مجموعة لتقييمها.",
+ "suiteBuilderDeleted": "تم حذف حزمة التقييم بنجاح",
+ "suiteBuilderCaseCardHint": "حدّد موجه الإدخال ومعايير المخرجات المتوقعة.",
+ "nextResetUtc": "إعادة التعيين التالية (UTC)",
+ "scorecardHint": "معدلات النجاح المجمعة عبر جميع حزم التقييم.",
+ "suiteLatestRunsHint": "أحدث عمليات تشغيل التقييم لهذه الحزمة.",
+ "saving": "جارٍ الحفظ",
+ "suiteBuilderCaseModelLabel": "النموذج (اختياري)",
+ "evalControlsTitle": "عناصر تحكم التقييم",
+ "suiteBuilderEditTitle": "تحرير حزمة التقييم",
+ "suiteBuilderCaseStrategyLabel": "استراتيجية التحقق",
+ "notifySelectDifferentCompareTarget": "يرجى تحديد هدف مختلف للمقارنة",
+ "recentRunsHint": "يعرض أحدث عمليات التقييم. انقر على عملية تشغيل للاطلاع على النتائج التفصيلية.",
+ "evalCompareHint": "يمكنك اختياريًا مقارنة النتائج بهدف ثانٍ.",
+ "suiteBuilderCaseInvalid": "تحتوي هذه الحالة على أخطاء تحقق. أصلحها قبل الحفظ.",
+ "historyEmpty": "لا يوجد سجل تقييم حتى الآن",
+ "suiteBuilderUpdated": "تم تحديث حزمة التقييم بنجاح",
+ "resetInterval": "فاصل إعادة التعيين",
+ "suiteBuilderCreateTitle": "إنشاء حزمة تقييم",
+ "activePeriodSpend": "إنفاق الفترة النشطة",
+ "evalApiKeyHint": "حدّد مفتاح API المستخدم لطلبات التقييم.",
+ "evalCompareOptional": "المقارنة (اختياري)",
+ "suiteBuilderDeleteFailed": "فشل حذف حزمة التقييم",
+ "suiteBuilderCaseSystemPromptPlaceholder": "تعليمات نظام اختيارية...",
+ "scorecardCases": "الحالات",
+ "runCompletedWithScore": "اكتمل التقييم — معدل النجاح {score}%",
+ "suiteBuilderCustomBadge": "مخصص",
+ "targetSuiteDefaults": "إعدادات الحزمة الافتراضية",
+ "suiteBuilderDeleteConfirm": "هل أنت متأكد أنك تريد حذف حزمة التقييم هذه؟ لا يمكن التراجع عن هذا الإجراء.",
+ "suiteBuilderNameLabel": "اسم الحزمة",
+ "scorecardSuites": "الحزم",
+ "evalCompareTarget": "هدف المقارنة",
+ "suiteBuilderCaseModelPlaceholder": "على سبيل المثال gpt-4o-mini",
+ "evalControlsHint": "قم بتكوين هدف التقييم ومفتاح واجهة برمجة التطبيقات (API)، ثم قم بتشغيل المجموعات للتحقق من جودة النموذج.",
+ "recentRunsTitle": "عمليات التشغيل الأخيرة",
+ "suiteBuilderCaseSystemPromptLabel": "موجه النظام",
+ "suiteBuilderCaseExpectedPlaceholder": "مثال: def fibonacci",
"suiteBuilderCaseExpectedPlaceholderContains": "على سبيل المثال ديف فيبوناتشي",
"suiteBuilderCaseExpectedPlaceholderExact": "الصق الاستجابة المتوقعة بالضبط",
"suiteBuilderCaseExpectedPlaceholderRegex": "على سبيل المثال ^\\\\s*\\\\{.*\\\\}\\\\s*$",
- "suiteBuilderCaseExpectedHintRegex": "استخدم تعبير جافا سكريبت العادي دون التفاف الخطوط المائلة.",
- "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite",
- "suiteBuilderAddCase": "Add Case",
- "cancel": "Cancel",
- "evalTarget": "Target",
- "suiteBuilderCaseNameLabel": "Case Name",
- "weeklyLimitUsd": "Weekly Limit (USD)",
- "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python",
- "suiteBuilderNameRequired": "Suite name is required",
- "suiteBuilderCaseUserPromptLabel": "User Prompt",
- "daily": "Daily",
- "resultErrorLabel": "Error",
- "suiteBuilderBuiltInBadge": "Built-in",
- "suiteBuilderCaseCardTitle": "Test Case",
+ "suiteBuilderCaseExpectedHintRegex": "استخدم تعبير JavaScript العادي دون التفاف الخطوط المائلة.",
+ "suiteBuilderNamePlaceholder": "مثال: حزمة جودة البرمجة",
+ "suiteBuilderAddCase": "إضافة حالة",
+ "cancel": "إلغاء",
+ "evalTarget": "الهدف",
+ "suiteBuilderCaseNameLabel": "اسم الحالة",
+ "weeklyLimitUsd": "الحد الأسبوعي (USD)",
+ "suiteBuilderCaseUserPromptPlaceholder": "مثال: اكتب دالة fibonacci بلغة Python",
+ "suiteBuilderNameRequired": "اسم الحزمة مطلوب",
+ "suiteBuilderCaseUserPromptLabel": "موجه المستخدم",
+ "daily": "يوميا",
+ "resultErrorLabel": "خطأ",
+ "suiteBuilderBuiltInBadge": "مدمج",
+ "suiteBuilderCaseCardTitle": "حالة الاختبار",
"suiteBuilderDuplicateCase": "مكررة",
"weeklyLimitPlaceholder": "e.g. 50.00",
- "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.",
- "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}",
- "weekly": "Weekly",
- "runEvalRunning": "Running evaluation...",
- "delete": "Delete",
- "resetTimeUtc": "Reset Time (UTC)",
- "evalApiKeyAuto": "Auto (use default)",
- "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...",
- "targetComparisonTitle": "Target Comparison",
- "save": "Save",
- "suiteBuilderCreated": "Suite created successfully",
- "suiteLatestRuns": "Latest Runs",
- "suiteBuilderCaseExpectedLabel": "Expected Value",
- "historyLatency": "Latency",
- "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python",
- "targetTypeCombo": "Combo",
- "scorecardPassed": "Passed",
- "suiteBuilderCaseTagsLabel": "Tags",
- "suiteBuilderNewSuite": "New Suite",
- "notifyEvalLoadFailed": "Failed to load evaluation data",
- "notConfigured": "Not Configured",
- "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test",
- "intervalLabel": "Interval",
- "suiteBuilderCreateAction": "Create Suite",
- "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.",
- "suiteBuilderUpdatedAt": "Updated",
- "errorBadge": "Error",
- "suiteBuilderCasesTitle": "Test Cases",
- "edit": "Edit",
- "monthly": "Monthly",
- "suiteBuilderCasesRequired": "At least one test case is required",
- "weeklyLimitSummary": "Weekly budget limit summary",
- "suiteBuilderDescriptionLabel": "Description",
- "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.",
- "compareCompletedWithScore": "Comparison completed — {score}% pass rate",
- "staleQuotaTooltip": "Last refresh failed — showing cached data",
+ "suiteBuilderCaseTagsHint": "علامات مفصولة بفواصل لتنظيم حالات الاختبار.",
+ "notifyEvalRunFailedWithReason": "فشل التقييم: {reason}",
+ "weekly": "أسبوعيا",
+ "runEvalRunning": "جارٍ التقييم...",
+ "delete": "حذف",
+ "resetTimeUtc": "إعادة ضبط الوقت (التوقيت العالمي المنسق)",
+ "evalApiKeyAuto": "تلقائي (استخدم الافتراضي)",
+ "suiteBuilderDescriptionPlaceholder": "وصف اختياري لما تختبره هذه الحزمة...",
+ "targetComparisonTitle": "مقارنة الأهداف",
+ "save": "حفظ",
+ "suiteBuilderCreated": "تم إنشاء حزمة التقييم بنجاح",
+ "suiteLatestRuns": "أحدث عمليات التشغيل",
+ "suiteBuilderCaseExpectedLabel": "القيمة المتوقعة",
+ "historyLatency": "زمن الاستجابة",
+ "suiteBuilderCaseTagsPlaceholder": "مثال: coding, python",
+ "targetTypeCombo": "مجموعة",
+ "scorecardPassed": "الناجحة",
+ "suiteBuilderCaseTagsLabel": "العلامات",
+ "suiteBuilderNewSuite": "حزمة جديدة",
+ "notifyEvalLoadFailed": "فشل تحميل بيانات التقييم",
+ "notConfigured": "غير مكوّن",
+ "suiteBuilderCaseNamePlaceholder": "مثال: اختبار fibonacci بلغة Python",
+ "intervalLabel": "الفاصل الزمني",
+ "suiteBuilderCreateAction": "إنشاء الحزمة",
+ "suiteBuilderCasesHint": "ترسل كل حالة مطالبة وتتحقق من الاستجابة.",
+ "suiteBuilderUpdatedAt": "آخر تحديث",
+ "errorBadge": "خطأ",
+ "suiteBuilderCasesTitle": "حالات الاختبار",
+ "edit": "تحرير",
+ "monthly": "شهريا",
+ "suiteBuilderCasesRequired": "مطلوب حالة اختبار واحدة على الأقل",
+ "weeklyLimitSummary": "ملخص حدود الميزانية الأسبوعية",
+ "suiteBuilderDescriptionLabel": "الوصف",
+ "targetComparisonHint": "مقارنة نتائج التقييم بين الأهداف جنباً إلى جنب.",
+ "compareCompletedWithScore": "اكتملت المقارنة — معدل النجاح {score}%",
+ "staleQuotaTooltip": "فشل التحديث الأخير — عرض البيانات المخزنة مؤقتًا",
"quotaThresholdLabel": "مين اليسار",
"quotaCutoffsColumnHelp": "قم بإيقاف الطلبات عندما تنخفض الحصة المتبقية إلى هذه النسبة أو أقل.",
"quotaCutoffsButtonDefault": "الافتراضي",
@@ -6225,10 +6225,10 @@
"quotaAlerts": "تنبيهات الحصص",
"quotaTableRefreshing": "⟳ منعش...",
"noSpendLast30Days": "لا يوجد إنفاق في آخر 30 يومًا",
- "updatedShort": "__MISSING__:Updated",
- "lastRefreshed": "__MISSING__:Last refreshed",
- "providerQuota": "__MISSING__:Provider Quota",
- "providerQuotaHomeHint": "__MISSING__:Live status across connected accounts"
+ "updatedShort": "تم التحديث",
+ "lastRefreshed": "آخر تحديث",
+ "providerQuota": "حصة المزود",
+ "providerQuotaHomeHint": "الحالة المباشرة عبر الحسابات المتصلة"
},
"modals": {
"waitingAuth": "في انتظار التصريح",
@@ -6240,14 +6240,14 @@
"chooseAuthMethod": "اختر طريقة المصادقة الخاصة بك:",
"awsBuilderId": "معرف منشئ AWS",
"awsIamIdentity": "مركز هوية AWS IAM",
- "googleAccount": "حساب جوجل",
- "githubAccount": "حساب جيثب",
+ "googleAccount": "حساب Google",
+ "githubAccount": "حساب Github",
"importToken": "رمز الاستيراد",
"pasteToken": "قم بلصق رمز التحديث من Kiro IDE.",
"awsRegion": "منطقة أوس",
"autoDetecting": "الكشف التلقائي عن الرموز...",
- "readingFromCache": "القراءة من ذاكرة التخزين المؤقت لـ AWS SSO",
- "readingFromCursor": "القراءة من قاعدة بيانات المؤشر IDE",
+ "readingFromCache": "القراءة من الذاكرة المؤقتة لـ AWS SSO",
+ "readingFromCursor": "القراءة من قاعدة بيانات Cursor IDE",
"initializing": "جارٍ التهيئة...",
"pricingConfig": "تكوين التسعير",
"loadingPricing": "جارٍ تحميل بيانات الأسعار...",
@@ -6265,11 +6265,11 @@
"modelAZ": "الموديل أ-ي",
"modelZA": "الموديل Z-A",
"loadingLogs": "جارٍ تحميل السجلات...",
- "loadingProxyLogs": "جارٍ تحميل سجلات الوكيل...",
+ "loadingProxyLogs": "جارٍ تحميل سجلات بروكسي...",
"noLogEntries": "لم يتم العثور على إدخالات السجل",
"noPayloadData": "لا توجد بيانات حمولة متاحة لإدخال السجل هذا.",
- "proxyEvent": "حدث الوكيل",
- "proxy": "وكيل",
+ "proxyEvent": "حدث بروكسي",
+ "proxy": "بروكسي",
"level": "المستوى",
"directNative": "مباشر (وطني)",
"combo": "كومبو",
@@ -6301,8 +6301,8 @@
"signIn": "تسجيل الدخول",
"enterPassword": "أدخل كلمة المرور الخاصة بك للمتابعة",
"password": "كلمة المرور",
- "unifiedProxy": "وكيل API موحّد للذكاء الاصطناعي",
- "unifiedAiApiProxy": "وكيل API موحّد للذكاء الاصطناعي",
+ "unifiedProxy": "بروكسي API موحّد للذكاء الاصطناعي",
+ "unifiedAiApiProxy": "بروكسي API موحّد للذكاء الاصطناعي",
"unifiedAiApiProxyDesc": "توجيه الطلبات إلى موفري الذكاء الاصطناعي المتعددين من خلال نقطة نهاية واحدة. موازنة التحميل وتجاوز الفشل وتتبع الاستخدام المدمج.",
"passwordNotEnabled": "لم يتم تمكين الحماية بكلمة المرور",
"loading": "جار التحميل...",
@@ -6321,7 +6321,7 @@
"accessDeniedDescription": "ليس لديك إذن للوصول إلى هذا المورد. تحقق من مفتاح API الخاص بك أو اتصل بالمسؤول.",
"goToDashboard": "انتقل إلى لوحة المعلومات",
"featureMultiProviderTitle": "متعدد الموفر",
- "featureMultiProviderDesc": "OpenAI، وAnthropic، وGoogle، والمزيد",
+ "featureMultiProviderDesc": "OpenAI، وAnthropic، وGoogle، تنمية",
"featureLoadBalancingTitle": "موازنة التحميل",
"featureLoadBalancingDesc": "توزيع الطلبات بذكاء",
"featureUsageTrackingTitle": "تتبع الاستخدام",
@@ -6347,19 +6347,19 @@
"restartServerWithNewPassword": "أعد تشغيل الخادم وسيتم استخدام كلمة المرور الجديدة",
"backToLogin": "العودة إلى تسجيل الدخول",
"forgotPassword": "هل نسيت كلمة المرور؟",
- "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)",
+ "defaultPasswordHint": "كلمة المرور الافتراضية: CHANGEME (ما لم يتم تعيين INITIAL_PASSWORD)",
"Authorization": "إذن",
"Content-Disposition": "التصرف في المحتوى",
"waitingForAuthorization": "في انتظار الترخيص...",
"waitingForGoogleAuthorization": "في انتظار إذن Google...",
"waitingForOpenAIAuthorization": "في انتظار ترخيص OpenAI...",
- "waitingForAntigravityAuthorization": "في انتظار تصريح مكافحة الجاذبية...",
+ "waitingForAntigravityAuthorization": "في انتظار تصريح Antigravity...",
"waitingForQoderAuthorization": "في انتظار ترخيص Qoder...",
"exchangingCodeForTokens": "استبدال الكود بالرموز...",
- "nodeIncompatibleTitle": "Incompatible Node.js Version",
- "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.",
- "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release",
- "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended."
+ "nodeIncompatibleTitle": "إصدار Node.js غير متوافق",
+ "nodeIncompatibleDesc": "تستخدم Node.js بالإصدار {version}، وهو خارج سياسة وقت التشغيل الآمن المدعومة في OmniRoute. استخدم إصدارًا مصححًا من Node.js 20.x أو 22.x LTS.",
+ "nodeIncompatibleFixLabel": "الإصلاح: ثبّت إصدار Node.js 22 LTS مصححًا",
+ "nodeIncompatibleHint": "يتطلب OmniRoute الإصدار Node.js 22.22.2+ (ضمن 22.x LTS) أو 24.0.0+ (ضمن 24.x LTS). يُوصى بـ Node 24 LTS."
},
"landing": {
"brandName": "OmniRoute",
@@ -6367,13 +6367,13 @@
"toggleMenu": "تبديل القائمة",
"featuresLink": "الميزات",
"docsLink": "المستندات",
- "github": "جيثب",
+ "github": "Github",
"versionLive": "الإصدار 1.0 أصبح الآن مباشرًا",
"oneEndpoint": "نقطة نهاية واحدة ل",
"allProviders": "جميع مقدمي الذكاء الاصطناعي",
"heroDescription": "وكيل نقطة النهاية AI مع لوحة تحكم الويب - منفذ JavaScript لـ CLIProxyAPI. يعمل بسلاسة مع Claude Code وOpenAI Codex وCline وRooCode وأدوات CLI الأخرى.",
"getStarted": "ابدأ",
- "viewOnGithub": "عرض على جيثب",
+ "viewOnGithub": "عرض على Github",
"powerfulFeatures": "ميزات قوية",
"featuresSubtitle": "كل ما تحتاجه لإدارة البنية الأساسية للذكاء الاصطناعي لديك في مكان واحد، مصمم خصيصًا للتوسع.",
"featureUnifiedEndpointTitle": "نقطة النهاية الموحدة",
@@ -6429,14 +6429,14 @@
"mitLicense": "رخصة معهد ماساتشوستس للتكنولوجيا",
"footerTagline": "نقطة النهاية الموحدة لتوليد الذكاء الاصطناعي. يمكنك الاتصال بموفري خدمات الذكاء الاصطناعي وتوجيههم وإدارتهم بسهولة.",
"copyright": "© {year} أومنيروتي. جميع الحقوق محفوظة.",
- "flowToolClaudeCode": "كلود كود",
+ "flowToolClaudeCode": "Claude كود",
"flowToolOpenAICodex": "مخطوطة OpenAI",
"flowToolCline": "كلاين",
- "flowToolCursor": "المؤشر",
+ "flowToolCursor": "Cursor",
"flowProviderOpenAI": "OpenAI",
"flowProviderAnthropic": "أنثروبي",
"flowProviderGemini": "الجوزاء",
- "flowProviderGithubCopilot": "جيثب مساعد الطيار",
+ "flowProviderGithubCopilot": "Github Copilot",
"interactiveDiagram": "رسم تخطيطي تفاعلي مرئي على سطح المكتب",
"ctaTitle": "هل أنت مستعد لتبسيط البنية الأساسية للذكاء الاصطناعي لديك؟",
"ctaDescription": "انضم إلى المطورين الذين يقومون بتبسيط عمليات تكامل الذكاء الاصطناعي الخاصة بهم مع OmniRoute. مفتوح المصدر ومجاني للبدء.",
@@ -6454,8 +6454,8 @@
"clientCompatibility": "توافق العميل",
"protocolsToc": "البروتوكولات",
"apiReference": "مرجع واجهة برمجة التطبيقات",
- "managementApiReference": "Management API Reference",
- "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.",
+ "managementApiReference": "مرجع واجهة API للإدارة",
+ "managementApiDescription": "نقاط نهاية للأتمتة خاصة بسجل الوكلاء وتعيينات النطاق وترحيل الوكلاء القدامى.",
"method": "الطريقة",
"path": "المسار",
"notes": "ملاحظات",
@@ -6469,7 +6469,7 @@
"docsHeroDescription": "بوابة الذكاء الاصطناعي لبرامج LLM متعددة الموفرين. نقطة نهاية واحدة لـ OpenAI وAnthropic وGemini وGitHub Copilot وClaude Code وCursor وأكثر من 20 مزودًا آخر.",
"openDashboard": "افتح لوحة المعلومات",
"endpointPage": "صفحة نقطة النهاية",
- "github": "جيثب",
+ "github": "Github",
"reportIssue": "تقرير المشكلة",
"onThisPage": "في هذه الصفحة",
"documentationVersion": "التوثيق - v{version}",
@@ -6496,7 +6496,7 @@
"deployPwaTitle": "PWA",
"deployPwaText": "قم بتثبيت OmniRoute كتطبيق ويب تقدمي على متصفحات Android وiOS ومتصفحات سطح المكتب.",
"deployTermuxTitle": "Termux (Android)",
- "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.",
+ "deployTermuxText": "شغّل OmniRoute دون واجهة على Android عبر Termux، وادخل إلى لوحة المعلومات من متصفح هاتفك.",
"featureRoutingTitle": "التوجيه متعدد الموفرين",
"featureRoutingText": "توجيه الطلبات إلى أكثر من 30 من موفري خدمات الذكاء الاصطناعي من خلال نقطة نهاية واحدة متوافقة مع OpenAI. يدعم واجهات برمجة التطبيقات للدردشة والاستجابات والصوت والصورة.",
"featureCombosTitle": "المجموعات والموازنة",
@@ -6535,11 +6535,11 @@
"clientCodexBullet3": "وتستمر النماذج غير التابعة للدستور الغذائي",
"clientCursorTitle": "بيئة تطوير متكاملة للمؤشر",
"clientCursorBullet1": "استخدم",
- "clientCursorBullet1Suffix": "بادئة لنماذج المؤشر.",
+ "clientCursorBullet1Suffix": "بادئة لنماذج Cursor.",
"clientCursorBullet2": "اتصال OAuth - قم بتسجيل الدخول من صفحة مقدمي الخدمة.",
- "clientClaudeTitle": "كلود كود / مضاد الجاذبية",
+ "clientClaudeTitle": "Claude كود / مضاد الجاذبية",
"clientClaudeBullet1Prefix": "استخدم",
- "clientClaudeBullet1Middle": "(كلود) أو",
+ "clientClaudeBullet1Middle": "(Claude) أو",
"clientClaudeBullet1Suffix": "(مضاد الجاذبية) البادئة.",
"clientWindsurfTitle": "ركوب الأمواج",
"clientWindsurfBullet1": "استخدم OmniRoute كعنوان URL أساسي متوافق مع OpenAI واحتفظ ببادئات الموفر الصريحة للتوجيه الحتمي.",
@@ -6563,8 +6563,8 @@
"protocolA2aTitle": "A2A (Agent2Agent)",
"protocolA2aDesc": "استخدم A2A JSON - RPC لإرسال المهام بشكل متزامن أو عبر بث SSE.",
"protocolA2aStep1": "اقرأ `/.well-known/agent.json` لاكتشاف الوكيل.",
- "protocolA2aStep2": "إرسال طلبات @@PH0 @@ أو `message/stream` إلى `POST /a2a`.",
- "protocolA2aStep3": "إدارة دورة حياة المهمة باستخدام @@PH0 @@ و `tasks/cancel`.",
+ "protocolA2aStep2": "أرسل طلبات `message/send` أو `message/stream` إلى `POST /a2a`.",
+ "protocolA2aStep3": "أدر دورة حياة المهمة باستخدام `tasks/get` و`tasks/cancel`.",
"protocolTroubleshootingTitle": "استكشاف أخطاء البروتوكول وإصلاحها",
"protocolTroubleshooting1": "إذا كانت حالة MCP غير متصلة بالإنترنت، فتحقق من تشغيل عملية stdio وتحديث ملف نبضات القلب.",
"protocolTroubleshooting2": "إذا بقيت مهام A2A في `working`، فافحص `/api/a2a/tasks/:id` ودفق الأحداث للحالة الطرفية.",
@@ -6579,13 +6579,13 @@
"endpointRewriteChatNote": "إعادة كتابة المساعد للعملاء بدون /v1.",
"endpointRewriteResponsesNote": "أعد كتابة المساعد للاستجابات بدون /v1.",
"endpointRewriteModelsNote": "أعد كتابة المساعد لاكتشاف النموذج بدون /v1.",
- "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).",
- "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.",
- "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.",
- "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.",
- "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.",
- "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.",
- "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.",
+ "mgmtProxiesListNote": "اعرض عناصر سجل الوكلاء المحفوظة (مع دعم ترقيم الصفحات).",
+ "mgmtProxiesCreateNote": "أنشئ عنصر وكيل قابلًا لإعادة الاستخدام في السجل.",
+ "mgmtProxiesHealthNote": "احصل على مقاييس السلامة المتحركة ولآخر 24 ساعة لكل وكيل محفوظ من سجلات الوكيل.",
+ "mgmtProxiesBulkAssignNote": "عيّن وكيلًا واحدًا أو امسحه عبر عدة معرّفات نطاق في طلب واحد.",
+ "mgmtAssignmentsListNote": "اعرض تعيينات الوكيل حسب النطاق أو scope_id أو proxy_id.",
+ "mgmtAssignmentsUpdateNote": "عيّن الوكيل أو امسحه لنطاق عام أو مزوّد أو حساب أو مجموعة.",
+ "mgmtLegacyMigrationNote": "استورد خرائط proxyConfig القديمة إلى تعيينات السجل.",
"modelPrefixesDescriptionStart": "استخدم بادئة الموفر قبل اسم الطراز للتوجيه إلى موفر محدد. مثال:",
"modelPrefixesDescriptionEnd": "طرق إلى GitHub Copilot.",
"provider": "مزود",
@@ -6630,8 +6630,8 @@
"mcpToolsCacheDesc": "عرض إحصائيات ذاكرة التخزين المؤقت ومسح ذاكرة التخزين المؤقت الدلالية أو التوقيع.",
"mcpToolsCompressionTitle": "محركات الضغط",
"mcpToolsCompressionDesc": "قم بتكوين ضغط RTK/Brotli ومحركات التبديل وفحص تحليلات الضغط من خلال التحرير والسرد.",
- "mcpToolsOneProxyTitle": "1 الوكيل / الأنفاق",
- "mcpToolsOneProxyDesc": "إدارة الوكلاء الصادرين، وتدوير عناوين IP السكنية، وفحص صحة الوكيل.",
+ "mcpToolsOneProxyTitle": "1 بروكسي / الأنفاق",
+ "mcpToolsOneProxyDesc": "إدارة الوكلاء الصادرين، وتدوير عناوين IP السكنية، وفحص صحة بروكسي.",
"mcpToolsMemoryTitle": "الذاكرة",
"mcpToolsMemoryDesc": "البحث عن إدخالات ذاكرة المحادثة المستمرة وإضافتها ومسحها.",
"mcpToolsSkillsTitle": "المهارات",
@@ -6672,7 +6672,7 @@
"policyLastUpdatedDate": "13 فبراير 2026",
"listSeparator": "-",
"questionsVisit": "أسئلة؟ قم بزيارة موقعنا",
- "githubRepository": "مستودع جيثب",
+ "githubRepository": "مستودع Github",
"privacySection1Title": "1. العمارة المحلية الأولى",
"privacySection1Text": "تم تصميم OmniRoute كتطبيق محلي أولاً. تتم جميع عمليات معالجة البيانات وتخزينها بالكامل على جهازك. لا يوجد خادم مركزي يجمع معلوماتك.",
"privacySection2Title": "2. البيانات التي نقوم بتخزينها",
@@ -6687,7 +6687,7 @@
"privacySection4Text": "عند إجراء استدعاءات واجهة برمجة التطبيقات من خلال OmniRoute، تتم إعادة توجيه طلباتك إلى موفري الذكاء الاصطناعي الذين قمت بتكوينهم (على سبيل المثال: OpenAI، وAnthropic، وGoogle). لدى هؤلاء المزودين سياسات خصوصية خاصة بهم تحكم كيفية تعاملهم مع بياناتك. يرجى مراجعة:",
"privacyOpenAiPolicy": "سياسة خصوصية OpenAI",
"privacyAnthropicPolicy": "سياسة الخصوصية الإنسانية",
- "privacyGooglePolicy": "سياسة خصوصية جوجل",
+ "privacyGooglePolicy": "سياسة خصوصية Google",
"privacySection5Title": "5. المزامنة السحابية (اختياري)",
"privacySection5Text": "إذا قمت بتمكين ميزة المزامنة السحابية الاختيارية، فقد يتم نقل تكوينات الموفر ومفاتيح API إلى نقطة نهاية سحابية تم تكوينها. يتم تعطيل هذه الميزة افتراضيًا وتتطلب الاشتراك الصريح.",
"privacySection6Title": "6. التسجيل",
@@ -6713,55 +6713,55 @@
"termsSection6Text": "OmniRoute هو برنامج مفتوح المصدر. ولك الحرية في فحصه وتعديله وتوزيعه بموجب شروط ترخيصه."
},
"agents": {
- "title": "CLI Agents",
- "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.",
- "refresh": "Refresh",
- "installed": "Installed",
- "notFound": "Not Found",
- "builtIn": "Built-in",
- "custom": "Custom",
- "remove": "Remove",
- "addCustomAgent": "Add Custom Agent",
- "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.",
- "agentName": "Agent Name",
- "binaryName": "Binary Name",
- "versionCommand": "Version Command",
- "spawnArgs": "Spawn Args",
- "addAgent": "Add Agent",
- "scanning": "Scanning system for CLI agents...",
- "opencodeIntegration": "OpenCode Integration",
- "opencodeDetected": "opencode {version} detected",
- "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.",
- "downloadConfig": "Download {file}",
- "downloaded": "Downloaded!",
- "setupGuideTitle": "Setup guide",
- "openCliTools": "Open CLI Tools",
- "setupGuideDetectCliTitle": "Detect installed CLIs",
- "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.",
- "setupGuideCustomAgentTitle": "Register custom binary",
- "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.",
- "setupGuideCommandMissingTitle": "Fix 'command not found'",
- "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.",
- "cliToolsRedirectTitle": "Cli Tools Redirect Title",
- "cliToolsRedirectDesc": "Cli Tools Redirect Desc",
- "spawnArgsPlaceholder": "Spawn Args Placeholder",
- "binaryNamePlaceholder": "Binary Name Placeholder",
- "versionCommandPlaceholder": "Version Command Placeholder",
- "architectureTitle": "Architecture Title",
- "flowLocalBinary": "Flow Local Binary",
- "flowOmniRoute": "Flow Omni Route",
- "agentNamePlaceholder": "Agent Name Placeholder",
- "architectureDescription": "Architecture Description",
- "flowExecute": "Flow Execute",
- "flowSpawn": "Flow Spawn",
- "cliToolsRedirectCta": "Cli Tools Redirect Cta",
+ "title": "وكلاء CLI",
+ "description": "اكتشف وكلاء CLI المثبتين على نظامك، وأضف وكلاء مخصصين للاكتشاف التلقائي.",
+ "refresh": "تحديث",
+ "installed": "مثبّت",
+ "notFound": "غير موجود",
+ "builtIn": "مدمج",
+ "custom": "مخصص",
+ "remove": "إزالة",
+ "addCustomAgent": "إضافة وكيل مخصص",
+ "addCustomAgentDesc": "قم بتسجيل أي أداة CLI للكشف. سيتم فحصه تلقائيًا عند التحديث.",
+ "agentName": "اسم الوكيل",
+ "binaryName": "الاسم الثنائي",
+ "versionCommand": "أمر الإصدار",
+ "spawnArgs": "معاملات التشغيل",
+ "addAgent": "إضافة وكيل",
+ "scanning": "جارٍ فحص النظام بحثًا عن وكلاء CLI...",
+ "opencodeIntegration": "تكامل OpenCode",
+ "opencodeDetected": "تم اكتشاف OpenCode {version}",
+ "opencodeDesc": "قم بإنشاء {configFile} جاهز للاستخدام باستخدام عنوان URL الأساسي لـ OmniRoute وجميع النماذج المتاحة - قم بإفلاته في جذر المشروع الخاص بك وقم بتشغيل {command}.",
+ "downloadConfig": "تحميل {file}",
+ "downloaded": "تم التنزيل!",
+ "setupGuideTitle": "دليل الإعداد",
+ "openCliTools": "افتح أدوات سطر الأوامر",
+ "setupGuideDetectCliTitle": "كشف CLIs المثبتة",
+ "setupGuideDetectCliDesc": "انقر فوق تحديث بعد تثبيت واجهة سطر الأوامر أو تحديثها حتى يتمكن OmniRoute من إعادة فحص الثنائيات والإصدارات.",
+ "setupGuideCustomAgentTitle": "تسجيل ثنائي مخصص",
+ "setupGuideCustomAgentDesc": "استخدم إضافة وكيل مخصص عندما لا يكون سطر الأوامر الخاص بك موجودًا في القائمة المضمنة. قم بتوفير الاسم الثنائي وأمر الإصدار.",
+ "setupGuideCommandMissingTitle": "إصلاح \"لم يتم العثور على الأمر\"",
+ "setupGuideCommandMissingDesc": "تأكد من وجود أمر CLI في PATH، وافتح جلسة طرفية جديدة، وأعد تشغيل التحديث.",
+ "cliToolsRedirectTitle": "إعداد أدوات CLI",
+ "cliToolsRedirectDesc": "انتقل إلى صفحة أدوات CLI لإعداد التكامل.",
+ "spawnArgsPlaceholder": "مثال: --model gpt-4o",
+ "binaryNamePlaceholder": "مثال: codex",
+ "versionCommandPlaceholder": "مثال: --version",
+ "architectureTitle": "بنية النظام",
+ "flowLocalBinary": "البرنامج الثنائي المحلي",
+ "flowOmniRoute": "تدفق OmniRoute",
+ "agentNamePlaceholder": "مثال: وكيل مخصص",
+ "architectureDescription": "مسار التنفيذ بين OmniRoute ووكلاء CLI المحليين",
+ "flowExecute": "تنفيذ",
+ "flowSpawn": "تشغيل العملية",
+ "cliToolsRedirectCta": "الانتقال إلى أدوات CLI",
"comparisonTitle": "أدوات CLI مقابل أهداف الوكيل - ما الفرق؟",
"comparisonCliToolsLabel": "صفحة أدوات CLI",
"comparisonCliToolsTitle": "يرسل IDE الخاص بك الطلبات عبر OmniRoute",
"comparisonCliToolsDesc": "قم بتكوين Claude Code وCodex وCursor وIDEs الأخرى لاستخدام OmniRoute كعنوان URL الأساسي لواجهة برمجة التطبيقات (API) الخاصة بهم. يعمل OmniRoute كوكيل، حيث يقوم بتوجيه الطلبات إلى موفري الخدمة الذين تم تكوينهم.",
"comparisonAgentsLabel": "هذه الصفحة (أهداف الوكيل)",
"comparisonAgentsTitle": "يرسل OmniRoute الطلبات إلى أدوات CLI المحلية",
- "comparisonAgentsDesc": "يمكن لـ OmniRoute إنتاج ثنائيات CLI المحلية (كلود، كودكس، أوزة) كواجهات خلفية للتنفيذ. تقوم أداة CLI بمعالجة الطلب باستخدام المصادقة الخاصة بها وإرجاع النتيجة.",
+ "comparisonAgentsDesc": "يمكن لـ OmniRoute إنتاج ثنائيات CLI المحلية (Claude، Codex، Goose) كواجهات خلفية للتنفيذ. تقوم أداة CLI بمعالجة الطلب باستخدام المصادقة الخاصة بها وإرجاع النتيجة.",
"comparisonSummary": "باختصار: أدوات CLI = تقوم بتكوين الأدوات للإشارة إلى OmniRoute. أهداف الوكيل = يستخدم OmniRoute الأدوات كنقاط النهاية الخاصة به.",
"agentUseCaseHint": "يمكن استخدامه كهدف تنفيذ عبر بروتوكول ACP",
"flowDiagramClient": "تطبيق العميل",
@@ -6780,17 +6780,17 @@
"copyUrl": "انسخ عنوان URL",
"startHere": "ابدأ هنا",
"badgeNew": "جديد",
- "viewOnGithub": "عرض على جيثب",
+ "viewOnGithub": "عرض على Github",
"howToUse": "كيفية الاستخدام",
"browseAllSkillsOnGithub": "تصفح جميع المهارات على GitHub",
"apiSkills": "مهارات واجهة برمجة التطبيقات",
"cliSkills": "مهارات CLI",
- "apiSkillsSubtitle": "__MISSING__:{count} skills — control OmniRoute via REST / HTTP",
- "cliSkillsSubtitle": "__MISSING__:{count} skills — control OmniRoute via the omniroute terminal binary",
- "howToUseStep1": "__MISSING__:Click {copyUrl} on the skill you want your agent to know about.",
- "howToUseStep2": "__MISSING__:In your AI agent (Claude, Cursor, Cline…), say:",
- "howToUseStep2Code": "__MISSING__:Use the skill at [pasted-url]",
- "howToUseStep3": "__MISSING__:The agent fetches the SKILL.md and learns OmniRoute's API or CLI — no manual docs needed."
+ "apiSkillsSubtitle": "{count} مهارة — تحكّم في OmniRoute عبر REST / HTTP",
+ "cliSkillsSubtitle": "{count} مهارة — تحكّم في OmniRoute عبر برنامج omniroute في الطرفية",
+ "howToUseStep1": "انقر على {copyUrl} في المهارة التي تريد أن يعرفها وكيلك.",
+ "howToUseStep2": "في وكيل الذكاء الاصطناعي لديك (Claude أو Cursor أو Cline وغيرها)، قل:",
+ "howToUseStep2Code": "استخدم المهارة الموجودة في [pasted-url]",
+ "howToUseStep3": "يجلب الوكيل ملف SKILL.md ويتعلم واجهة API أو CLI الخاصة بـ OmniRoute دون الحاجة إلى مستندات يدوية."
},
"cloudAgents": {
"title": "وكلاء السحابة",
@@ -6809,28 +6809,28 @@
"tasks": "المهام",
"taskDetail": "تفاصيل المهمة",
"noTasks": "لا توجد مهام حتى الآن. قم بإنشاء واحدة للبدء.",
- "noTasksTitle": "__MISSING__:No tasks yet",
- "noTasksDesc": "__MISSING__:Create your first task to get started.",
- "tasksTab": "__MISSING__:Tasks",
- "agentsTab": "__MISSING__:Agents",
- "settingsTab": "__MISSING__:Settings",
- "agentsEnabled": "__MISSING__:Enabled",
- "agentsDisabled": "__MISSING__:Disabled",
- "filterAllProviders": "__MISSING__:All Providers",
- "filterAll": "__MISSING__:All",
- "autoRefreshing": "__MISSING__:Auto-refreshing",
- "viewPR": "__MISSING__:View Pull Request",
- "connected": "__MISSING__:Connected",
- "notConnected": "__MISSING__:Not connected",
- "configure": "__MISSING__:Configure",
- "settingsTitle": "__MISSING__:Cloud Agent Settings",
- "settingsDesc": "__MISSING__:Configure local preferences for cloud agents.",
- "settingEnableAgents": "__MISSING__:Enable cloud agents",
- "settingEnableAgentsDesc": "__MISSING__:Allow OmniRoute to orchestrate autonomous coding agents.",
- "settingAutoPR": "__MISSING__:Auto-create PR",
- "settingAutoPRDesc": "__MISSING__:When a task is completed, automatically create a Pull Request with the changes.",
- "settingRequireApproval": "__MISSING__:Require plan approval",
- "settingRequireApprovalDesc": "__MISSING__:Always wait for manual approval before an agent executes a proposed plan.",
+ "noTasksTitle": "لا توجد مهام بعد",
+ "noTasksDesc": "أنشئ مهمتك الأولى للبدء.",
+ "tasksTab": "المهام",
+ "agentsTab": "الوكلاء",
+ "settingsTab": "الإعدادات",
+ "agentsEnabled": "ممكّنون",
+ "agentsDisabled": "معطّلون",
+ "filterAllProviders": "جميع المزوّدين",
+ "filterAll": "الكل",
+ "autoRefreshing": "تحديث تلقائي",
+ "viewPR": "عرض طلب السحب",
+ "connected": "متصل",
+ "notConnected": "غير متصل",
+ "configure": "تكوين",
+ "settingsTitle": "إعدادات وكلاء السحابة",
+ "settingsDesc": "كوّن التفضيلات المحلية لوكلاء السحابة.",
+ "settingEnableAgents": "تمكين وكلاء السحابة",
+ "settingEnableAgentsDesc": "اسمح لـ OmniRoute بتنسيق وكلاء البرمجة المستقلين.",
+ "settingAutoPR": "إنشاء طلب سحب تلقائيًا",
+ "settingAutoPRDesc": "عند اكتمال المهمة، أنشئ تلقائيًا طلب سحب يتضمن التغييرات.",
+ "settingRequireApproval": "اشتراط الموافقة على الخطة",
+ "settingRequireApprovalDesc": "انتظر دائمًا الموافقة اليدوية قبل أن ينفّذ الوكيل الخطة المقترحة.",
"untitledTask": "مهمة بلا عنوان",
"created": "تم إنشاؤها",
"conversation": "محادثة",
@@ -6901,101 +6901,101 @@
}
},
"cache": {
- "title": "Cache Management",
- "description": "Monitor and manage semantic response cache, hit rates, and token savings.",
- "refresh": "Refresh",
- "clearAll": "Clear All",
- "memoryEntries": "Memory Entries",
- "memoryEntriesSub": "In-memory LRU",
- "dbEntries": "DB Entries",
- "dbEntriesSub": "Persisted (SQLite)",
- "cacheHits": "Cache Hits",
- "cacheHitsSub": "of {total} total",
- "tokensSaved": "Tokens Saved",
- "tokensSavedSub": "Estimated from hits",
- "hitRate": "Hit Rate",
- "performance": "Cache Performance",
- "autoRefresh": "Auto-refreshes every {seconds}s",
- "hits": "Hits",
- "misses": "Misses",
- "total": "Total",
- "behavior": "Cache Behavior",
- "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.",
- "behaviorBypass": "Bypass with header {header}.",
- "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).",
- "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.",
- "idempotency": "Idempotency Layer",
- "activeDedupKeys": "Active Dedup Keys",
- "dedupWindow": "Dedup Window",
- "clearSuccess": "Cache cleared. {count} expired entries removed.",
- "clearError": "Failed to clear cache.",
- "unavailable": "Cache unavailable",
- "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.",
- "loadingCacheAria": "__MISSING__:Loading cache",
- "promptCache": "Prompt Cache (Provider-Side)",
- "semanticCache": "Semantic Cache",
- "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.",
- "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.",
- "cachedRequests": "Cached Requests",
- "cachedRequests24h": "Cached Requests (24h)",
- "cacheHitRate": "Cache Hit Rate",
- "cacheRate": "Cache Rate",
- "cacheRateDesc": "of total requests",
- "cachedTokens": "Cached Tokens",
- "cacheCreationTokens": "Cache Creation Tokens",
- "cacheMetrics": "Prompt Cache Metrics",
- "withCacheControl": "With Cache Control",
- "cachedTokensRead": "Cached Tokens (Read)",
- "cacheCreationWrite": "Cache Creation (Write)",
- "cacheReuseRatio": "Cache Reuse Ratio",
- "cacheReuseRatioDesc": "Cached tokens / Total input tokens",
- "estCostSaved": "Est. Cost Saved",
- "lastUpdated": "Last updated",
- "hoursTracked": "hours tracked",
- "busiestHour": "Busiest Hour",
- "peakCacheRate": "Peak Cache Rate",
- "trendHour": "Hour",
- "activityVolume": "Activity",
- "requestsShort": "reqs",
- "inputShort": "In",
- "cachedShort": "Cached",
- "writeShort": "Write",
- "resetting": "Resetting...",
- "resetMetrics": "Reset Metrics",
- "byProvider": "Breakdown by Provider",
- "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.",
- "provider": "Provider",
- "requests": "Requests",
- "inputTokens": "Input Tokens",
- "cachedTokensCol": "Cached",
- "cacheCreation": "Creation",
- "trend24h": "Cache Trend (24h)",
- "peakCached": "Peak cached",
- "cached": "Cached",
- "overview": "Overview",
- "tableProvider": "__MISSING__:Provider",
- "tableModel": "__MISSING__:Model",
- "performanceTitle": "__MISSING__:Performance",
- "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.",
- "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.",
- "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.",
- "searchEntries": "Search entries...",
- "search": "Search",
- "loading": "Loading...",
- "entriesLoadError": "Failed to load semantic cache entries.",
- "noEntries": "No cache entries found",
- "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.",
- "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.",
- "signature": "Signature",
- "model": "Model",
- "created": "Created",
- "expires": "Expires",
- "actions": "Actions",
- "deduplicatedRequests": "Deduplicated Requests",
- "savedCalls": "Saved API Calls",
- "totalProcessed": "Total Requests Processed",
- "disabled": "Disabled",
- "totalRequests": "Total Requests",
+ "title": "إدارة ذاكرة التخزين المؤقت",
+ "description": "راقب ذاكرة التخزين المؤقت الدلالية للاستجابات وأدرها، إلى جانب معدلات الإصابة وتوفير الرموز.",
+ "refresh": "تحديث",
+ "clearAll": "مسح الكل",
+ "memoryEntries": "إدخالات الذاكرة",
+ "memoryEntriesSub": "LRU في الذاكرة",
+ "dbEntries": "إدخالات قاعدة البيانات",
+ "dbEntriesSub": "مستمرة (SQLite)",
+ "cacheHits": "إصابات ذاكرة التخزين المؤقت",
+ "cacheHitsSub": "من إجمالي {total}",
+ "tokensSaved": "الرموز الموفَّرة",
+ "tokensSavedSub": "تقدير استنادًا إلى الإصابات",
+ "hitRate": "معدل الإصابة",
+ "performance": "أداء ذاكرة التخزين المؤقت",
+ "autoRefresh": "تحديث تلقائي كل {seconds}s",
+ "hits": "الإصابات",
+ "misses": "الإخفاقات",
+ "total": "الإجمالي",
+ "behavior": "سلوك ذاكرة التخزين المؤقت",
+ "behaviorDeterministic": "تُخزّن مؤقتًا الطلبات غير المتدفقة ذات temperature=0 فقط.",
+ "behaviorBypass": "تجاوز التخزين المؤقت باستخدام الترويسة {header}.",
+ "behaviorTwoTier": "تخزين من مستويين: LRU في الذاكرة (سريع) + SQLite (مستمر عبر عمليات إعادة التشغيل).",
+ "behaviorTtl": "مدة TTL الافتراضية: 30 دقيقة. اضبطها عبر {envVar}.",
+ "idempotency": "طبقة منع التكرار",
+ "activeDedupKeys": "مفاتيح إزالة التكرار النشطة",
+ "dedupWindow": "نافذة إزالة التكرار",
+ "clearSuccess": "تم مسح ذاكرة التخزين المؤقت. تمت إزالة إدخالات {count} منتهية الصلاحية.",
+ "clearError": "فشل في مسح ذاكرة التخزين المؤقت.",
+ "unavailable": "ذاكرة التخزين المؤقت غير متوفرة",
+ "unavailableDesc": "تعذر جلب إحصائيات ذاكرة التخزين المؤقت. تأكد من تشغيل الخادم.",
+ "loadingCacheAria": "جارٍ تحميل ذاكرة التخزين المؤقت",
+ "promptCache": "ذاكرة التخزين المؤقت للمطالبات (لدى المزود)",
+ "semanticCache": "ذاكرة التخزين المؤقت الدلالية",
+ "promptCacheSectionDesc": "يعرض نشاط تخزين المطالبات مؤقتًا لدى المزود من سجل الاستخدام، لتعرف أين ينشط التحكم في التخزين المؤقت ومقدار إعادة استخدام الإدخال.",
+ "promptTrendDesc": "حجم الطلبات كل ساعة، وتغطية التخزين المؤقت، وحجم القراءة منه خلال آخر 24 ساعة.",
+ "cachedRequests": "الطلبات المخزنة مؤقتًا",
+ "cachedRequests24h": "الطلبات المخزنة مؤقتًا (24 ساعة)",
+ "cacheHitRate": "معدل إصابة ذاكرة التخزين المؤقت",
+ "cacheRate": "معدل التخزين المؤقت",
+ "cacheRateDesc": "من إجمالي الطلبات",
+ "cachedTokens": "الرموز المخزنة مؤقتًا",
+ "cacheCreationTokens": "رموز إنشاء ذاكرة التخزين المؤقت",
+ "cacheMetrics": "مقاييس ذاكرة تخزين المطالبات",
+ "withCacheControl": "مع التحكم في ذاكرة التخزين المؤقت",
+ "cachedTokensRead": "الرموز المخزنة مؤقتًا (قراءة)",
+ "cacheCreationWrite": "إنشاء ذاكرة التخزين المؤقت (كتابة)",
+ "cacheReuseRatio": "نسبة إعادة استخدام ذاكرة التخزين المؤقت",
+ "cacheReuseRatioDesc": "الرموز المخزنة مؤقتًا / إجمالي رموز الإدخال",
+ "estCostSaved": "التكلفة التقديرية الموفَّرة",
+ "lastUpdated": "آخر تحديث",
+ "hoursTracked": "ساعات متتبعة",
+ "busiestHour": "الساعة الأكثر ازدحامًا",
+ "peakCacheRate": "أعلى معدل للتخزين المؤقت",
+ "trendHour": "الساعة",
+ "activityVolume": "النشاط",
+ "requestsShort": "طلبات",
+ "inputShort": "إدخال",
+ "cachedShort": "مخزّن",
+ "writeShort": "كتابة",
+ "resetting": "إعادة الضبط...",
+ "resetMetrics": "إعادة ضبط المقاييس",
+ "byProvider": "التفصيل حسب المزود",
+ "providerCacheRateDesc": "يعرض كل مزود إجمالي رموز الإدخال ورموز القراءة من ذاكرة التخزين المؤقت والكتابة إليها، لتتمكن من التحقق من نسبة إعادة الاستخدام مقابل الإجماليات الأولية.",
+ "provider": "المزود",
+ "requests": "الطلبات",
+ "inputTokens": "رموز الإدخال",
+ "cachedTokensCol": "مخزّنة مؤقتًا",
+ "cacheCreation": "الإنشاء",
+ "trend24h": "اتجاه ذاكرة التخزين المؤقت (24 ساعة)",
+ "peakCached": "أعلى حجم مخزّن",
+ "cached": "مخزّن مؤقتًا",
+ "overview": "نظرة عامة",
+ "tableProvider": "المزود",
+ "tableModel": "النموذج",
+ "performanceTitle": "الأداء",
+ "semanticCacheSectionDesc": "ذاكرة التخزين المؤقت للاستجابة الحتمية الخاصة بـ OmniRoute. عند التمكين، يمكن تقديم طلبات درجة الحرارة غير المتدفقة المتكررة = 0 محليًا دون الاتصال بمزود الخدمة الرئيسي.",
+ "semanticCacheDisabledDesc": "تم تعطيل ذاكرة التخزين المؤقت الدلالية. سوف يتخطى OmniRoute إعادة استخدام الاستجابة المحلية حتى تقوم بتشغيلها مرة أخرى في الإعدادات.",
+ "semanticEntriesDesc": "سجلات ذاكرة التخزين المؤقت الدلالية المستمرة المخزنة حاليًا في SQLite. لم يتم إدراج نشاط ذاكرة التخزين المؤقت للمطالبة من جانب الموفر هنا.",
+ "searchEntries": "إدخالات البحث...",
+ "search": "بحث",
+ "loading": "جار التحميل...",
+ "entriesLoadError": "فشل تحميل إدخالات ذاكرة التخزين المؤقت الدلالية.",
+ "noEntries": "لم يتم العثور على إدخالات ذاكرة التخزين المؤقت",
+ "noPromptCacheData": "لم يُسجّل أي نشاط لتخزين المطالبات مؤقتًا لدى المزود حتى الآن.",
+ "noTrendData": "لم يُسجّل أي نشاط لتخزين المطالبات مؤقتًا خلال آخر 24 ساعة.",
+ "signature": "التوقيع",
+ "model": "النموذج",
+ "created": "تاريخ الإنشاء",
+ "expires": "تاريخ الانتهاء",
+ "actions": "الإجراءات",
+ "deduplicatedRequests": "الطلبات منزوعة التكرار",
+ "savedCalls": "استدعاءات API الموفَّرة",
+ "totalProcessed": "إجمالي الطلبات المعالجة",
+ "disabled": "معطّل",
+ "totalRequests": "إجمالي الطلبات",
"reasoningCache": "إعادة التفكير",
"reasoningCacheDesc": "يحافظ على التفكير النموذجي لتدفقات استدعاء الأدوات متعددة المنعطفات",
"reasoningEntries": "الإدخالات النشطة",
@@ -7027,12 +7027,12 @@
"cachePerformanceP95Latency": "الكمون p95 (مللي ثانية)",
"retry": "أعد المحاولة",
"reasoningAvgChars": "متوسط الأحرف",
- "tableShare": "__MISSING__:Share",
- "justNow": "__MISSING__:just now",
- "minutesAgo": "__MISSING__:{minutes}m ago",
- "hoursAgo": "__MISSING__:{hours}h ago",
- "daysAgo": "__MISSING__:{days}d ago",
- "entries": "Entries"
+ "tableShare": "الحصة",
+ "justNow": "الآن",
+ "minutesAgo": "منذ {minutes}m",
+ "hoursAgo": "منذ {hours}h",
+ "daysAgo": "منذ {days}d",
+ "entries": "إدخالات"
},
"proxyConfigModal": {
"levelGlobal": "عالمي",
@@ -7045,10 +7045,10 @@
"loading": "جارٍ تحميل تكوين الوكيل...",
"inheritingFrom": "يرث من",
"source": "المصدر",
- "savedProxy": "الوكيل المحفوظ",
+ "savedProxy": "بروكسي المحفوظ",
"custom": "مخصص",
- "selectSavedProxyPlaceholder": "حدد الوكيل المحفوظ...",
- "proxyType": "نوع الوكيل",
+ "selectSavedProxyPlaceholder": "حدد بروكسي المحفوظ...",
+ "proxyType": "نوع بروكسي",
"host": "المضيف",
"hostPlaceholder": "1.2.3.4 أو proxy.example.com",
"port": "ميناء",
@@ -7064,12 +7064,12 @@
"clear": "واضح",
"cancel": "إلغاء",
"save": "حفظ",
- "errorSelectSavedProxy": "الرجاء تحديد الوكيل المحفوظ أولاً.",
- "errorSelectProxyFirst": "الرجاء تحديد الوكيل أولاً.",
- "errorProxyNotFound": "لم يتم العثور على الوكيل المحدد.",
- "errorClearSavedProxy": "فشل في مسح الوكيل المحفوظ",
- "errorSaveProxy": "فشل حفظ تكوين الوكيل",
- "errorClearProxy": "فشل في مسح تكوين الوكيل",
+ "errorSelectSavedProxy": "الرجاء تحديد بروكسي المحفوظ أولاً.",
+ "errorSelectProxyFirst": "الرجاء تحديد بروكسي أولاً.",
+ "errorProxyNotFound": "لم يتم العثور على بروكسي المحدد.",
+ "errorClearSavedProxy": "فشل في مسح بروكسي المحفوظ",
+ "errorSaveProxy": "فشل حفظ تكوين بروكسي",
+ "errorClearProxy": "فشل في مسح تكوين بروكسي",
"errorSocks5Hidden": "تم تكوين SOCKS5 ولكنه مخفي لأن NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=خطأ."
},
"oauthModal": {
@@ -7097,9 +7097,9 @@
"tryAgain": "حاول مرة أخرى"
},
"cursorAuthModal": {
- "title": "ربط IDE المؤشر",
+ "title": "ربط IDE Cursor",
"autoDetecting": "الكشف التلقائي عن الرموز...",
- "readingFromCursor": "القراءة من المؤشر IDE أو وكيل المؤشر",
+ "readingFromCursor": "القراءة من Cursor IDE أو وكيل Cursor",
"tokensAutoDetected": "تم اكتشاف الرموز المميزة تلقائيًا من Cursor IDE!",
"cursorNotDetected": "لم يتم الكشف عن IDE للمؤشر. يرجى لصق الرمز المميز الخاص بك يدويًا.",
"accessToken": "رمز الوصول",
@@ -7137,28 +7137,28 @@
"errorResetFailed": "فشل في إعادة تعيين التسعير"
},
"proxyRegistry": {
- "title": "Title",
- "description": "Description",
- "importLegacy": "Import Legacy",
- "bulkAssign": "Bulk Assign",
- "addProxy": "Add Proxy",
- "loading": "Loading",
- "noProxies": "No Proxies",
- "tableName": "Table Name",
- "tableEndpoint": "Table Endpoint",
- "tableStatus": "Table Status",
- "tableHealth": "Table Health",
- "tableUsage": "Table Usage",
- "tableActions": "Table Actions",
- "test": "Test",
- "edit": "Edit",
- "delete": "Delete",
- "modalCreateTitle": "Modal Create Title",
- "modalEditTitle": "Modal Edit Title",
- "labelName": "Label Name",
- "labelType": "اكتب",
+ "title": "سجل بروكسيات",
+ "description": "إدارة الوكلاء المحفوظين وتعييناتهم وحالتهم.",
+ "importLegacy": "استيراد الإعدادات القديمة",
+ "bulkAssign": "تعيين جماعي",
+ "addProxy": "إضافة بروكسي",
+ "loading": "جارٍ التحميل",
+ "noProxies": "لا توجد بروكسيات",
+ "tableName": "الاسم",
+ "tableEndpoint": "نقطة النهاية",
+ "tableStatus": "الحالة",
+ "tableHealth": "السلامة",
+ "tableUsage": "الاستخدام",
+ "tableActions": "الإجراءات",
+ "test": "اختبار",
+ "edit": "تحرير",
+ "delete": "حذف",
+ "modalCreateTitle": "إنشاء بروكسي",
+ "modalEditTitle": "تحرير بروكسي",
+ "labelName": "اسم التسمية",
+ "labelType": "النوع",
"labelHost": "المضيف",
- "labelPort": "ميناء",
+ "labelPort": "المنفذ",
"labelUsername": "اسم المستخدم",
"labelPassword": "كلمة المرور",
"labelRegion": "المنطقة",
@@ -7172,36 +7172,36 @@
"save": "حفظ",
"bulkModalTitle": "تعيين الوكيل بالجملة",
"bulkLabelScope": "النطاق",
- "bulkLabelProxy": "وكيل",
- "bulkClearAssignment": "(مهمة واضحة)",
+ "bulkLabelProxy": "بروكسي",
+ "bulkClearAssignment": "(مسح التعيين)",
"bulkLabelScopeIds": "معرفات النطاق (مفصولة بفاصلة أو سطر جديد)",
- "bulkScopeIdsPlaceholder": "مزود openai، مزود الأنثروبي",
+ "bulkScopeIdsPlaceholder": "مزود OpenAI، مزود Athropic",
"bulkApply": "تطبيق",
- "labelScope": "__MISSING__:Scope",
- "labelProxy": "__MISSING__:Proxy",
- "scopeGlobal": "__MISSING__:global",
- "scopeProvider": "__MISSING__:provider",
- "scopeAccount": "__MISSING__:account",
- "scopeCombo": "__MISSING__:combo",
+ "labelScope": "النطاق",
+ "labelProxy": "بروكسي",
+ "scopeGlobal": "عالمي",
+ "scopeProvider": "مزود",
+ "scopeAccount": "حساب",
+ "scopeCombo": "مجموعة",
"bulkImportErrorMissingName": "الاسم مفقود",
"bulkImportErrorMissingHost": "المضيف مفقود",
"bulkImportErrorInvalidPort": "منفذ غير صالح (يجب أن يكون 1-65535)",
- "bulkImportErrorInvalidType": "TYPE غير صالح (استخدم http، أو https، أو socks5)",
+ "bulkImportErrorInvalidType": "TYPE غير صالح (استخدم http، أو https، أوocks5)",
"bulkImportErrorInvalidStatus": "حالة غير صالحة (استخدام نشط أو غير نشط)",
- "errorLoadFailed": "Error Load Failed",
- "errorNameHostRequired": "Error Name Host Required",
- "errorSaveFailed": "Error Save Failed",
- "errorDeleteFailed": "Error Delete Failed",
- "errorForceDeleteConfirm": "Error Force Delete Confirm",
- "errorMigrateFailed": "Error Migrate Failed",
- "errorBulkFailed": "Error Bulk Failed",
+ "errorLoadFailed": "فشل تحميل الوكلاء",
+ "errorNameHostRequired": "الاسم والمضيف مطلوبان",
+ "errorSaveFailed": "فشل حفظ الوكيل",
+ "errorDeleteFailed": "فشل حذف الوكيل",
+ "errorForceDeleteConfirm": "تعذر تأكيد الحذف القسري",
+ "errorMigrateFailed": "فشل ترحيل الإعدادات القديمة",
+ "errorBulkFailed": "فشل التعيين الجماعي",
"success": "✓",
"failure": "✗",
- "failed": "Failed",
+ "failed": "فشل",
"successRate": "{rate}% نجاح",
"avgLatency": "{latency} مللي ثانية في المتوسط",
"assignmentsCount": "{count} المهام",
- "noData": "No Data",
+ "noData": "لا توجد بيانات",
"testSuccess": "✓ {ip}",
"testLatency": "{latency}ms",
"testFailure": "✗ {error}",
@@ -7219,514 +7219,514 @@
"bulkImportErrorLine": "السطر {line}: {reason}",
"bulkImportMaxExceeded": "الحد الأقصى 100 وكيل لكل عملية استيراد",
"bulkImportPreview": "معاينة",
- "clearAssignment": "(مهمة واضحة)",
- "bulkProxyAssignment": "تعيين الوكيل بالجملة"
+ "clearAssignment": "(مسح التعيين)",
+ "bulkProxyAssignment": "تعيين بروكسي بالجملة"
},
"playground": {
- "title": "Title",
- "description": "Description",
- "endpoint": "Endpoint",
- "provider": "Provider",
- "model": "Model",
- "accountKey": "Account Key",
+ "title": "العنوان",
+ "description": "الوصف",
+ "endpoint": "نقطة النهاية",
+ "provider": "مزود",
+ "model": "نموذج",
+ "accountKey": "مفتاح الحساب",
"autoAccounts": "تلقائي ({count} حسابات)",
- "noAccounts": "No Accounts",
- "send": "Send",
- "cancel": "Cancel",
- "audioFile": "Audio File",
- "attachImages": "Attach Images",
- "multipartFormData": "Multipart Form Data",
- "upToImages": "Up To Images",
- "selectAudioFile": "Select Audio File",
- "clearAll": "Clear All",
- "request": "Request",
- "response": "Response",
- "transcription": "Transcription",
- "copy": "Copy",
- "resetToDefault": "Reset To Default",
- "downloadAudio": "Download Audio",
- "copyText": "Copy Text",
- "transcriptionHint": "Transcription Hint",
+ "noAccounts": "لا توجد حسابات",
+ "send": "إرسال",
+ "cancel": "إلغاء",
+ "audioFile": "ملف صوتي",
+ "attachImages": "إرفاق صور",
+ "multipartFormData": "بيانات نموذج متعدد الأجزاء",
+ "upToImages": "الحد الأقصى للصور",
+ "selectAudioFile": "اختيار ملف صوتي",
+ "clearAll": "مسح الكل",
+ "request": "الطلب",
+ "response": "الاستجابة",
+ "transcription": "النسخ الصوتي",
+ "copy": "نسخ",
+ "resetToDefault": "إعادة التعيين إلى الافتراضي",
+ "downloadAudio": "تنزيل الصوت",
+ "copyText": "نسخ النص",
+ "transcriptionHint": "إرشادات النسخ",
"imagesGenerated": "تم إنشاء {count} من الصور",
"generatedImage": "الصورة المولدة {index}",
- "save": "Save",
+ "save": "حفظ",
"endpointOptions": {
- "chat": "Chat",
- "responses": "Responses",
- "images": "Images",
- "embeddings": "Embeddings",
- "speech": "Speech",
- "transcription": "Transcription",
- "video": "Video",
- "music": "Music",
- "rerank": "Rerank",
- "search": "Search"
+ "chat": "الدردشة",
+ "responses": "الردود",
+ "images": "الصور",
+ "embeddings": "التضمين",
+ "speech": "تحويل النص إلى كلام",
+ "transcription": "النسخ الصوتي",
+ "video": "الفيديو",
+ "music": "الموسيقى",
+ "rerank": "إعادة الترتيب",
+ "search": "البحث"
},
"conversationalChat": "الدردشة الحوارية",
"clearChat": "مسح الدردشة",
"typeMessagePlaceholder": "اكتب رسالة... (Shift+Enter للسطر الجديد)",
- "tabChat": "Chat",
- "tabCompare": "Compare",
+ "tabChat": "الدردشة",
+ "tabCompare": "المقارنة",
"tabApi": "API",
- "tabBuild": "Build",
- "configPane": "Config",
- "systemPrompt": "System prompt",
- "systemPromptPlaceholder": "You are a helpful assistant.",
- "modelPlaceholder": "e.g. openai/gpt-4o",
- "endpointLabel": "Endpoint",
- "parametersLabel": "Parameters",
- "collapseConfig": "Collapse config pane",
- "expandConfig": "Expand config pane",
- "temperature": "Temperature",
- "maxTokens": "Max tokens",
+ "tabBuild": "الإنشاء",
+ "configPane": "التكوين",
+ "systemPrompt": "موجه النظام",
+ "systemPromptPlaceholder": "أنت مساعد مفيد.",
+ "modelPlaceholder": "مثال: openai/gpt-4o",
+ "endpointLabel": "نقطة النهاية",
+ "parametersLabel": "المعلمات",
+ "collapseConfig": "طي لوحة التكوين",
+ "expandConfig": "توسيع لوحة التكوين",
+ "temperature": "درجة الحرارة",
+ "maxTokens": "الحد الأقصى للرموز",
"topP": "Top-p",
- "presencePenalty": "Presence penalty",
- "frequencyPenalty": "Frequency penalty",
- "seedPlaceholder": "Random (leave empty)",
- "presetsLabel": "Presets",
- "loadPreset": "Load preset",
- "savePreset": "Save preset",
- "noPresets": "No presets",
- "presetNamePlaceholder": "Preset name",
- "savingPreset": "Saving…",
- "nameRequired": "Name is required",
- "failedToSavePreset": "Failed to save preset",
- "improvePrompt": "Improve prompt",
- "improvingPrompt": "Improving…",
- "improvePromptTitle": "Improve your prompt with AI",
- "setModelFirst": "Set a model first",
- "improveQuotaWarning": "This will consume quota from the model configured in Config.",
- "improveConfirm": "Improve",
- "exportCode": "Export code",
- "exportCodeTitle": "Export Code",
- "noStateToExport": "No playground state available to export.",
- "copyCode": "Copy",
- "copiedCode": "Copied!",
- "addModel": "+ Add model",
- "runAll": "Run all",
- "cancelAll": "Cancel all",
- "maxColumnsReached": "Maximum {max} columns",
- "modelPlaceholderCompare": "Model (Cmd+K)…",
+ "presencePenalty": "عقوبة الحضور",
+ "frequencyPenalty": "عقوبة التكرار",
+ "seedPlaceholder": "عشوائي (اتركه فارغًا)",
+ "presetsLabel": "الإعدادات المسبقة",
+ "loadPreset": "تحميل الإعداد المسبق",
+ "savePreset": "حفظ الإعداد المسبق",
+ "noPresets": "لا توجد إعدادات مسبقة",
+ "presetNamePlaceholder": "اسم الإعداد المسبق",
+ "savingPreset": "جارٍ الحفظ…",
+ "nameRequired": "الاسم مطلوب",
+ "failedToSavePreset": "فشل حفظ الإعداد المسبق",
+ "improvePrompt": "تحسين المطالبة",
+ "improvingPrompt": "جارٍ التحسين…",
+ "improvePromptTitle": "حسّن مطالبتك باستخدام الذكاء الاصطناعي",
+ "setModelFirst": "حدّد نموذجًا أولًا",
+ "improveQuotaWarning": "سيستهلك هذا من حصة النموذج المحدد في التكوين.",
+ "improveConfirm": "تحسين",
+ "exportCode": "تصدير الرمز",
+ "exportCodeTitle": "تصدير الرمز",
+ "noStateToExport": "لا توجد حالة لبيئة الاختبار لتصديرها.",
+ "copyCode": "نسخ",
+ "copiedCode": "تم النسخ!",
+ "addModel": "+ إضافة نموذج",
+ "runAll": "تشغيل الكل",
+ "cancelAll": "إلغاء الكل",
+ "maxColumnsReached": "الحد الأقصى {max} أعمدة",
+ "modelPlaceholderCompare": "النموذج (Cmd+K)…",
"ttft": "TTFT",
"tps": "TPS",
- "metricsDisclaimer": "client-side estimate",
- "tokensLabel": "Tokens",
- "costLabel": "Cost",
- "costEstimated": "(estimated)",
- "toolsLabel": "Tools",
- "addTool": "Add tool",
- "toolNamePlaceholder": "Function name",
- "toolDescPlaceholder": "Description (optional)",
- "toolParamsInvalid": "Parameters must be valid JSON",
- "structuredOutputLabel": "Structured Output",
- "enableJsonMode": "Enable JSON mode",
- "disableJsonMode": "Disable JSON mode",
- "invalidJson": "Invalid JSON",
- "running": "Running…",
- "runLabel": "Run",
- "enterToolResult": "Enter tool result…"
+ "metricsDisclaimer": "تقدير من جانب العميل",
+ "tokensLabel": "الرموز",
+ "costLabel": "التكلفة",
+ "costEstimated": "(تقديري)",
+ "toolsLabel": "الأدوات",
+ "addTool": "إضافة أداة",
+ "toolNamePlaceholder": "اسم الدالة",
+ "toolDescPlaceholder": "الوصف (اختياري)",
+ "toolParamsInvalid": "يجب أن تكون المعلمات JSON صالحة",
+ "structuredOutputLabel": "المخرجات المنظّمة",
+ "enableJsonMode": "تمكين وضع JSON",
+ "disableJsonMode": "تعطيل وضع JSON",
+ "invalidJson": "JSON غير صالح",
+ "running": "جارٍ التشغيل…",
+ "runLabel": "تشغيل",
+ "enterToolResult": "أدخل نتيجة الأداة..."
},
"miniPlayground": {
- "endpoint": "__MISSING__:Endpoint",
- "apiKey": "__MISSING__:API Key",
- "model": "__MISSING__:Model",
- "voice": "__MISSING__:Voice",
- "speed": "__MISSING__:Speed",
- "input": "__MISSING__:Input",
- "url": "__MISSING__:URL",
- "format": "__MISSING__:Format",
- "depth": "__MISSING__:Depth",
- "copyCurl": "__MISSING__:Copy cURL",
- "copied": "__MISSING__:Copied!",
- "run": "__MISSING__:Run",
- "running": "__MISSING__:Running...",
- "response": "__MISSING__:Response",
- "tunnel": "__MISSING__:Tunnel",
- "send": "__MISSING__:Send",
- "selectKey": "__MISSING__:Select key",
- "testLabel": "__MISSING__:Test",
- "expandTest": "__MISSING__:Expand test",
- "collapseTest": "__MISSING__:Collapse test",
- "revealKey": "__MISSING__:Reveal key",
- "hideKey": "__MISSING__:Hide key",
- "download": "__MISSING__:Download",
- "play": "__MISSING__:Play",
- "query": "__MISSING__:Query",
- "numResults": "__MISSING__:Max results",
- "prompt": "__MISSING__:Prompt",
- "size": "__MISSING__:Size",
- "duration": "__MISSING__:Duration",
- "question": "__MISSING__:Question",
- "audioFile": "__MISSING__:Audio file",
- "noKeysFound": "__MISSING__:No API keys found. Add one in the Keys section.",
- "exampleLabel": "__MISSING__:Example",
- "latency": "__MISSING__:{ms}ms",
- "statsLine": "__MISSING__:{ms}ms · {tokensIn} in / {tokensOut} out tokens"
+ "endpoint": "نقطة النهاية",
+ "apiKey": "مفتاح واجهة برمجة التطبيقات",
+ "model": "نموذج",
+ "voice": "صوت",
+ "speed": "السرعة",
+ "input": "الإدخال",
+ "url": "عنوان URL",
+ "format": "التنسيق",
+ "depth": "العمق",
+ "copyCurl": "نسخ cURL",
+ "copied": "منسوخ!",
+ "run": "تشغيل",
+ "running": "جارٍ...",
+ "response": "الاستجابة",
+ "tunnel": "نفق",
+ "send": "إرسال",
+ "selectKey": "اختر مفتاحًا",
+ "testLabel": "اختبار",
+ "expandTest": "توسيع الاختبار",
+ "collapseTest": "طي الاختبار",
+ "revealKey": "كشف المفتاح",
+ "hideKey": "إخفاء المفتاح",
+ "download": "تنزيل",
+ "play": "تشغيل",
+ "query": "الاستعلام",
+ "numResults": "الحد الأقصى للنتائج",
+ "prompt": "موجه",
+ "size": "الحجم",
+ "duration": "المدة",
+ "question": "سؤال",
+ "audioFile": "ملف صوتي",
+ "noKeysFound": "لم يتم العثور على مفاتيح API. أضف واحدًا في قسم المفاتيح.",
+ "exampleLabel": "مثال",
+ "latency": "{ms}ms",
+ "statsLine": "{ms}ms · {tokensIn} إدخال / {tokensOut} إخراج"
},
"requestLogger": {
- "recording": "Recording",
- "paused": "Paused",
- "pipelineLogsOn": "Pipeline logs on",
- "pipelineLogsOff": "Pipeline logs off",
- "updatingPipelineLogs": "Updating pipeline logs...",
- "updatePipelineFailed": "Failed to update pipeline logging",
- "capturePipeline": "Capture pipeline payloads for new requests",
- "searchPlaceholder": "Search models, providers, accounts, API keys, combos...",
- "allProviders": "All providers",
- "allModels": "All models",
- "allAccounts": "All accounts",
- "allApiKeys": "All API keys",
- "total": "Total",
- "ok": "Success",
- "err": "Error",
- "combo": "Combo",
- "keys": "Keys",
- "shown": "Shown",
- "sortNewest": "Newest",
- "sortOldest": "Oldest",
- "sortTokensDesc": "Tokens ↓",
- "sortTokensAsc": "Tokens ↑",
- "sortDurationDesc": "Duration ↓",
- "sortDurationAsc": "Duration ↑",
- "sortStatusDesc": "Status ↓",
- "sortStatusAsc": "Status ↑",
- "sortModelAsc": "Model A-Z",
- "sortModelDesc": "Model Z-A",
- "sortLogs": "Sort logs",
- "refresh": "Refresh",
- "columnsLabel": "Columns",
- "cacheSem": "SEM",
- "cacheUp": "UP",
- "semantic": "Semantic",
- "upstream": "Upstream",
- "semanticCacheHit": "Semantic cache hit (served by OmniRoute)",
- "upstreamResponse": "Upstream provider response",
- "noApiKey": "No API key",
- "requestedRoutedTitle": "Requested {requested}, routed as {routed}",
+ "recording": "التسجيل",
+ "paused": "متوقف مؤقتًا",
+ "pipelineLogsOn": "سجلات مسار المعالجة مفعّلة",
+ "pipelineLogsOff": "سجلات مسار المعالجة معطّلة",
+ "updatingPipelineLogs": "جارٍ تحديث سجلات مسارات المعالجة...",
+ "updatePipelineFailed": "فشل في تحديث تسجيل مسار المعالجة",
+ "capturePipeline": "التقاط حمولات مسارات المعالجة للطلبات الجديدة",
+ "searchPlaceholder": "نماذج البحث ومقدمو الخدمات والحسابات ومفاتيح واجهة برمجة التطبيقات والمجموعات...",
+ "allProviders": "جميع مقدمي الخدمة",
+ "allModels": "جميع الموديلات",
+ "allAccounts": "جميع الحسابات",
+ "allApiKeys": "جميع مفاتيح API",
+ "total": "المجموع",
+ "ok": "النجاح",
+ "err": "خطأ",
+ "combo": "كومبو",
+ "keys": "مفاتيح",
+ "shown": "معروض",
+ "sortNewest": "الأحدث",
+ "sortOldest": "الأقدم",
+ "sortTokensDesc": "الرموز ↓",
+ "sortTokensAsc": "الرموز ↑",
+ "sortDurationDesc": "المدة ↓",
+ "sortDurationAsc": "المدة ↑",
+ "sortStatusDesc": "الحالة ↓",
+ "sortStatusAsc": "الحالة ↑",
+ "sortModelAsc": "النموذج أ-ي",
+ "sortModelDesc": "النموذج ي-أ",
+ "sortLogs": "فرز السجلات",
+ "refresh": "تحديث",
+ "columnsLabel": "أعمدة",
+ "cacheSem": "دلالي",
+ "cacheUp": "منبع",
+ "semantic": "الدلالي",
+ "upstream": "المنبع",
+ "semanticCacheHit": "نتيجة ذاكرة التخزين المؤقت الدلالية (يتم تقديمها بواسطة OmniRoute)",
+ "upstreamResponse": "استجابة مزود المنبع",
+ "noApiKey": "لا يوجد مفتاح API",
+ "requestedRoutedTitle": "تم طلب {requested}، وتم توجيهه كـ {routed}",
"statusFilters": {
- "all": "All",
- "error": "Errors",
- "success": "Success",
- "combo": "Combo"
+ "all": "الكل",
+ "error": "أخطاء",
+ "success": "النجاح",
+ "combo": "كومبو"
},
"columns": {
- "status": "Status",
- "cacheSource": "Cache Source",
- "model": "Model",
- "requested": "Requested",
- "provider": "Provider",
- "protocol": "Request Protocol",
- "account": "Account",
- "apiKey": "API Key",
- "combo": "Combo",
- "tokens": "Tokens",
+ "status": "الحالة",
+ "cacheSource": "مصدر ذاكرة التخزين المؤقت",
+ "model": "نموذج",
+ "requested": "مطلوب",
+ "provider": "مزود",
+ "protocol": "بروتوكول الطلب",
+ "account": "الحساب",
+ "apiKey": "مفتاح واجهة برمجة التطبيقات",
+ "combo": "كومبو",
+ "tokens": "الرموز",
"compressed": "ضغط",
"tps": "TPS",
- "duration": "Duration",
- "time": "Time"
+ "duration": "المدة",
+ "time": "الوقت"
},
- "loadingLogs": "Loading logs...",
- "noLogs": "No logs yet. Make some API calls to see them here.",
- "noMatchingLogs": "No logs matching current filters.",
- "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}."
+ "loadingLogs": "جارٍ تحميل السجلات...",
+ "noLogs": "لا توجد سجلات حتى الآن. قم بإجراء بعض استدعاءات واجهة برمجة التطبيقات (API) لرؤيتها هنا.",
+ "noMatchingLogs": "لا توجد سجلات تطابق عوامل التصفية الحالية.",
+ "callLogsInfo": "يتم أيضًا حفظ سجلات المكالمات كملفات JSON في {dataDir} ويتم تدويرها بناءً على {retentionDays} و{maxEntries}."
},
"proxyLogger": {
- "filterAll": "All",
- "filterErrors": "Errors",
- "filterSuccess": "Success",
- "filterTimeout": "Timeout",
- "colStatus": "Status",
- "colProxy": "Proxy",
+ "filterAll": "الكل",
+ "filterErrors": "أخطاء",
+ "filterSuccess": "النجاح",
+ "filterTimeout": "المهلة",
+ "colStatus": "الحالة",
+ "colProxy": "بروكسي",
"colTls": "TLS",
- "colType": "Type",
- "colLevel": "Level",
- "colProvider": "Provider",
- "colTarget": "Target",
- "colLatency": "Latency",
- "colClientIp": "Client IP",
- "colTime": "Time",
- "recording": "Recording",
- "paused": "Paused",
- "searchPlaceholder": "Search host, provider, target, IP...",
- "allTypes": "All Types",
- "allLevels": "All Levels",
- "allProviders": "All Providers",
- "total": "total",
- "ok": "OK",
- "err": "ERR",
- "timeoutShort": "TMO",
- "direct": "direct",
- "newest": "Newest",
- "oldest": "Oldest",
- "latencyDesc": "Latency ↓",
- "latencyAsc": "Latency ↑",
- "refresh": "Refresh",
- "columns": "Columns",
- "loadingProxyLogs": "Loading proxy logs...",
- "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.",
- "noMatchingLogs": "No logs match the current filters.",
- "tlsFingerprint": "Chrome 124 TLS Fingerprint"
+ "colType": "النوع",
+ "colLevel": "المستوى",
+ "colProvider": "مزود",
+ "colTarget": "الهدف",
+ "colLatency": "الكمون",
+ "colClientIp": "عنوان IP الخاص بالعميل",
+ "colTime": "الوقت",
+ "recording": "التسجيل",
+ "paused": "متوقف مؤقتًا",
+ "searchPlaceholder": "البحث عن المضيف، المزود، الهدف، IP...",
+ "allTypes": "جميع الأنواع",
+ "allLevels": "جميع المستويات",
+ "allProviders": "جميع مقدمي الخدمات",
+ "total": "المجموع",
+ "ok": "حسنًا",
+ "err": "خطأ",
+ "timeoutShort": "مهلة",
+ "direct": "مباشر",
+ "newest": "الأحدث",
+ "oldest": "الأقدم",
+ "latencyDesc": "الكمون ↓",
+ "latencyAsc": "الكمون ↑",
+ "refresh": "تحديث",
+ "columns": "أعمدة",
+ "loadingProxyLogs": "جارٍ تحميل سجلات بروكسي...",
+ "noProxyLogs": "لا توجد سجلات بروكسي حتى الآن. كوّن البروكسيات وأجرِ استدعاءات API لعرضها هنا.",
+ "noMatchingLogs": "لا توجد سجلات تتطابق مع عوامل التصفية الحالية.",
+ "tlsFingerprint": "بصمة TLS لـ Chrome 124"
},
"endpointOptions": {
- "speech": "Speech",
- "search": "Search",
- "images": "Images",
- "chat": "Chat",
- "music": "Music",
- "responses": "Responses",
- "rerank": "Rerank",
- "video": "Video",
- "embeddings": "Embeddings",
- "transcription": "Transcription"
+ "speech": "تحويل النص إلى كلام",
+ "search": "بحث",
+ "images": "الصور",
+ "chat": "الدردشة",
+ "music": "موسيقى",
+ "responses": "الردود",
+ "rerank": "إعادة الترتيب",
+ "video": "فيديو",
+ "embeddings": "التضمينات",
+ "transcription": "النسخ الصوتي"
},
"toolDescriptions": {
"cline": "Cline",
- "openclaw": "Openclaw",
+ "openclaw": "OpenClaw",
"droid": "Droid",
"codex": "Codex",
"claude": "Claude",
"kilo": "Kilo"
},
"runtime": {
- "title": "Runtime",
- "description": "Realtime observability — 3-layer resilience + sessions + quota alerts",
- "pause": "Pause",
- "resume": "Resume",
- "refreshNow": "Refresh now",
- "kpiSessions": "Sessions",
- "kpiCircuits": "Circuits",
- "kpiCooldowns": "Cooldowns",
- "kpiLockouts": "Lockouts",
- "hintStickyBound": "{count} sticky-bound",
- "hintRecovering": "{count} recovering",
- "hintAllHealthy": "all healthy",
- "hintOpen": "open",
- "hintConnsCooling": "connections cooling",
- "hintModelsBlocked": "models blocked",
- "resilienceTitle": "3-Layer Resilience",
- "resilienceSubtitle": "Mirrors the documented resilience model",
- "providersHealthy": "{percent}% providers healthy",
- "layer": "Layer {n}",
- "layer1Title": "Provider Circuit Breakers",
- "layer1Desc": "Stop traffic to providers failing at the upstream level",
- "layer2Title": "Connection Cooldowns",
- "layer2Desc": "Skip one bad account/key; other connections keep serving",
- "layer3Title": "Model Lockouts",
- "layer3Desc": "Per-model rate-limit locks; same connection still serves other models",
- "badgeAffectedOf": "{affected} of {total} affected",
- "badgeCooling": "{count} cooling",
- "badgeLocked": "{count} locked",
- "emptyCircuits": "No circuit breakers active yet",
- "emptyCooldowns": "No connection cooldowns active",
- "emptyLockouts": "No model lockouts",
- "moreCooldowns": "+{count} more cooldowns",
- "moreLockouts": "+{count} more lockouts",
- "feedTitle": "Live Feed",
- "feedSubtitle": "Last {count} events",
- "feedFilterAll": "All",
- "feedFilterCircuits": "Circuits",
- "feedFilterCooldowns": "Cooldowns",
- "feedFilterLockouts": "Lockouts",
- "feedFilterSessions": "Sessions",
- "feedFilterQuotas": "Quotas",
- "feedClear": "Clear",
- "feedEmptyWaiting": "Waiting for events... (polled every 5s)",
- "feedEmptyFiltered": "No events match this filter",
- "sessionsTitle": "Active Sessions",
- "sessionsSubtitle": "Sticky-bound request fingerprints (live)",
- "sessionsActive": "{count} active",
- "sessionsEmptyTitle": "No active sessions",
- "sessionsEmptyHint": "Sessions appear as requests flow through the proxy",
- "tblSession": "Session",
- "tblAge": "Age",
- "tblIdle": "Idle",
- "tblReqs": "Reqs",
- "tblBoundTo": "Bound to",
- "topApiKeys": "Top API keys",
- "quotaMonitorsTitle": "Quota Monitors",
- "quotaMonitorsSubtitle": "Live quota state per account window",
- "openQuota": "Open Quota",
- "allQuotasHealthy": "All quotas healthy",
- "statusExhausted": "EXHAUSTED",
- "statusAlerting": "ALERTING",
- "statusError": "ERROR",
- "moreSuffix": "+{count} more"
+ "title": "وقت التشغيل",
+ "description": "إمكانية المراقبة في الوقت الفعلي — مرونة 3 طبقات + الجلسات + تنبيهات الحصص",
+ "pause": "إيقاف مؤقت",
+ "resume": "استئناف",
+ "refreshNow": "قم بالتحديث الآن",
+ "kpiSessions": "الجلسات",
+ "kpiCircuits": "الدوائر",
+ "kpiCooldowns": "فترات التهدئة",
+ "kpiLockouts": "عمليات الإغلاق",
+ "hintStickyBound": "{count} لاصقة",
+ "hintRecovering": "{count} يتعافى",
+ "hintAllHealthy": "كل شيء صحي",
+ "hintOpen": "مفتوح",
+ "hintConnsCooling": "تبريد الاتصالات",
+ "hintModelsBlocked": "النماذج المحظورة",
+ "resilienceTitle": "3-طبقة المرونة",
+ "resilienceSubtitle": "يعكس نموذج المرونة الموثق",
+ "providersHealthy": "{percent}٪ مقدمو الخدمة يتمتعون بصحة جيدة",
+ "layer": "طبقة {n}",
+ "layer1Title": "مزود قواطع الدائرة",
+ "layer1Desc": "إيقاف حركة المرور إلى مقدمي الخدمات الفاشلين على مستوى المنبع",
+ "layer2Title": "فترات تهدئة الاتصال",
+ "layer2Desc": "تخطي حساب سيء واحد/key; اتصالات أخرى تستمر في الخدمة",
+ "layer3Title": "عمليات الإغلاق النموذجية",
+ "layer3Desc": "أقفال حد المعدل لكل نموذج؛ نفس الاتصال لا يزال يخدم نماذج أخرى",
+ "badgeAffectedOf": "{affected} من {total} تتأثر",
+ "badgeCooling": "تبريد {count}",
+ "badgeLocked": "{count} مقفل",
+ "emptyCircuits": "لا توجد قواطع دوائر نشطة حتى الآن",
+ "emptyCooldowns": "لا توجد فترات تهدئة للاتصال نشطة",
+ "emptyLockouts": "لا يوجد تأمين النموذج",
+ "moreCooldowns": "+{count} المزيد من فترات التهدئة",
+ "moreLockouts": "+{count} المزيد من عمليات الإغلاق",
+ "feedTitle": "تغذية حية",
+ "feedSubtitle": "آخر أحداث {count}",
+ "feedFilterAll": "الكل",
+ "feedFilterCircuits": "الدوائر",
+ "feedFilterCooldowns": "فترات التهدئة",
+ "feedFilterLockouts": "عمليات الإغلاق",
+ "feedFilterSessions": "الجلسات",
+ "feedFilterQuotas": "الحصص",
+ "feedClear": "واضح",
+ "feedEmptyWaiting": "في انتظار الأحداث... (يتم التصويت عليه كل 5 ثوانٍ)",
+ "feedEmptyFiltered": "لا توجد أحداث تتطابق مع هذا الفلتر",
+ "sessionsTitle": "الجلسات النشطة",
+ "sessionsSubtitle": "بصمات الطلب الملتصقة (مباشرة)",
+ "sessionsActive": "{count} نشط",
+ "sessionsEmptyTitle": "لا توجد جلسات نشطة",
+ "sessionsEmptyHint": "تظهر الجلسات أثناء تدفق الطلبات عبر الوكيل",
+ "tblSession": "جلسة",
+ "tblAge": "العمر",
+ "tblIdle": "خامل",
+ "tblReqs": "المتطلبات",
+ "tblBoundTo": "ملزمة ل",
+ "topApiKeys": "أهم مفاتيح API",
+ "quotaMonitorsTitle": "مراقبو الحصص",
+ "quotaMonitorsSubtitle": "حالة الحصة المباشرة لكل نافذة حساب",
+ "openQuota": "فتح الحصة",
+ "allQuotasHealthy": "جميع الحصص صحية",
+ "statusExhausted": "منهك",
+ "statusAlerting": "تنبيه",
+ "statusError": "خطأ",
+ "moreSuffix": "+{count} المزيد"
},
"quotaShare": {
- "title": "Quota Sharing",
- "description": "Share provider quotas across API keys with % limits",
- "newPool": "New pool",
- "betaTitle": "Beta — UI preview.",
- "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.",
- "kpiActivePools": "Active pools",
- "kpiKeysAllocated": "Keys allocated",
- "kpiAvgUnallocated": "Avg unallocated",
- "kpiProvidersWithQuota": "Providers w/ quota",
- "emptyTitle": "No pools configured",
- "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.",
- "loading": "Loading…",
- "removePool": "Remove pool",
- "removeConfirm": "Remove this pool?",
- "pool": "Pool",
- "used": "used",
- "allocationsCount": "Allocations ({count})",
- "allocatedFree": "{allocated}% allocated · {free}% free",
- "noAllocations": "No keys allocated yet",
- "capLabel": "cap {value}",
- "notTrackedYet": "(not tracked yet)",
- "policy": "Policy",
- "policyHard": "hard",
- "policySoft": "soft",
- "policyBurst": "burst",
- "policyHardHint": "Block when key exhausts allocation",
- "policySoftHint": "Allow overflow, alert only",
- "policyBurstHint": "Allow burst into free pool",
- "editAllocations": "Edit allocations",
- "newPoolTitle": "New quota pool",
- "providerConnection": "Provider connection (account)",
- "selectConnection": "Select a connection…",
- "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.",
- "quotaWindow": "Quota window",
- "selectWindow": "Select a window…",
- "alreadyUsedSuffix": "(already used)",
- "windowReset": "Reset",
- "duplicatePoolError": "A pool for this connection + window already exists",
- "cancel": "Cancel",
- "createPool": "Create pool",
- "editTitle": "Edit allocations",
- "noKeysAdded": "No keys allocated. Add one below.",
- "totalLabel": "Total: {percent}%",
- "totalExceeded": "⚠ exceeds 100%",
- "addKey": "+ Add key…",
- "equalSplit": "Equal split",
- "save": "Save allocations",
+ "title": "تقاسم الحصص",
+ "description": "مشاركة حصص الموفر عبر مفاتيح واجهة برمجة التطبيقات (API) بحدود %",
+ "newPool": "تجمع جديد",
+ "betaTitle": "بيتا - معاينة واجهة المستخدم.",
+ "betaDescription": "يُحفظ التكوين في localStorage (ولم يُحفظ بعد على الخادم). لم يُربط بعد تطبيق الحد الأقصى لكل طلب بمسار الوكيل. تتيح لك هذه الشاشة تصميم تقسيم الحصص ومعاينته؛ وسيُضاف التنفيذ الفعلي لاحقًا مع التخزين في قاعدة البيانات واعتراض الاستدعاءات الأولية.",
+ "kpiActivePools": "التجمعات النشطة",
+ "kpiKeysAllocated": "المفاتيح المخصصة",
+ "kpiAvgUnallocated": "متوسط الحصة غير المخصصة",
+ "kpiProvidersWithQuota": "المزودون ذوو الحصص",
+ "emptyTitle": "لا توجد تجمعات مكوّنة",
+ "emptyDescription": "أنشئ تجمعًا لتخصيص مفاتيح API لمشاركة نافذة حصة المزود وفق نسب محددة.",
+ "loading": "جارٍ التحميل…",
+ "removePool": "إزالة التجمع",
+ "removeConfirm": "هل تريد إزالة هذا التجمع؟",
+ "pool": "التجمع",
+ "used": "المستخدم",
+ "allocationsCount": "المخصصات ({count})",
+ "allocatedFree": "مخصّص {allocated}% · متاح {free}%",
+ "noAllocations": "لم يتم تخصيص مفاتيح حتى الآن",
+ "capLabel": "الحد {value}",
+ "notTrackedYet": "(لم يتم تعقبها بعد)",
+ "policy": "السياسة",
+ "policyHard": "صارم",
+ "policySoft": "مرن",
+ "policyBurst": "تجاوز مؤقت",
+ "policyHardHint": "الحظر عند استنفاد المفتاح حصته المخصصة",
+ "policySoftHint": "السماح بالتجاوز مع إصدار تنبيه فقط",
+ "policyBurstHint": "السماح باستخدام الحصة غير المخصصة",
+ "editAllocations": "تحرير التخصيصات",
+ "newPoolTitle": "تجمع الحصص الجديد",
+ "providerConnection": "اتصال المزود (الحساب)",
+ "selectConnection": "حدد اتصال…",
+ "noEligibleConnections": "لا توجد اتصالات مع بيانات الحصص. قم بالتحديث من /dashboard/quota أولاً.",
+ "quotaWindow": "نافذة الحصص",
+ "selectWindow": "اختر نافذة…",
+ "alreadyUsedSuffix": "(مستخدمة بالفعل)",
+ "windowReset": "إعادة تعيين",
+ "duplicatePoolError": "يوجد تجمع بالفعل لهذا الاتصال والنافذة",
+ "cancel": "إلغاء",
+ "createPool": "إنشاء تجمع",
+ "editTitle": "تحرير التخصيصات",
+ "noKeysAdded": "لم يتم تخصيص مفاتيح. أضف واحدة أدناه.",
+ "totalLabel": "الإجمالي: {percent}%",
+ "totalExceeded": "⚠ يتجاوز 100%",
+ "addKey": "+ إضافة مفتاح...",
+ "equalSplit": "توزيع بالتساوي",
+ "save": "حفظ المخصصات",
"betaPreviewLabel": "بيتا - معاينة واجهة المستخدم.",
"betaConfigSavedPrefix": "يتم حفظ التكوين في",
- "betaConfigSavedSuffix": "(لم يستمر بعد على الخادم). لم يتم بعد ربط تطبيق الحد الأقصى لكل طلب في مسار الوكيل. تتيح لك هذه الشاشة تصميم وتصور تقسيم الحصص؛ سيتم التنفيذ الحقيقي في التكرار المستقبلي مع استمرار قاعدة البيانات واعتراض المكالمات الأولية.",
+ "betaConfigSavedSuffix": "(ولم يُحفظ بعد على الخادم). لم يُربط بعد تطبيق الحد الأقصى لكل طلب بمسار الوكيل. تتيح لك هذه الشاشة تصميم تقسيم الحصص ومعاينته؛ وسيُضاف التنفيذ الفعلي لاحقًا مع التخزين في قاعدة البيانات واعتراض الاستدعاءات الأولية.",
"policyLabel": "السياسة:",
"resetIn": "إعادة تعيين في",
"quotaTotal": "المجموع"
},
"plugins": {
- "title": "Plugins",
- "description": "Install and manage plugins for extending OmniRoute functionality",
- "loading": "Loading plugins...",
- "scanning": "Scanning...",
- "scanForPlugins": "Scan for Plugins",
- "noPlugins": "No plugins installed",
- "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.",
- "activate": "Activate",
- "deactivate": "Deactivate",
- "uninstall": "Uninstall",
- "uninstallConfirm": "Uninstall plugin \"{name}\"?",
- "pluginScanComplete": "Plugin scan complete",
- "pluginScanFailed": "Plugin scan failed",
- "activated": "{name} activated",
- "deactivated": "{name} deactivated",
- "activateFailed": "Failed to activate {name}",
- "deactivateFailed": "Failed to deactivate {name}",
- "uninstalled": "{name} uninstalled",
- "uninstallFailed": "Failed to uninstall {name}",
- "configure": "Configure: {name}",
- "configurePlugin": "Configure",
- "noConfigSettings": "This plugin has no configurable settings.",
- "saving": "Saving...",
- "saveConfiguration": "Save Configuration",
- "configurationSaved": "Configuration saved",
- "saveConfigurationFailed": "Failed to save configuration",
- "pluginNotFound": "Plugin not found",
- "version": "Version",
- "author": "Author",
- "description_label": "Description",
- "status": "Status",
- "enabled": "Enabled",
- "disabled": "Disabled",
- "hooks": "Hooks"
+ "title": "الإضافات",
+ "description": "قم بتثبيت المكونات الإضافية وإدارتها لتوسيع وظائف OmniRoute",
+ "loading": "جارٍ تحميل المكونات الإضافية...",
+ "scanning": "جارٍ المسح...",
+ "scanForPlugins": "البحث عن المكونات الإضافية",
+ "noPlugins": "لم يتم تثبيت أي مكونات إضافية",
+ "noPluginsDescription": "ضع مجلدات الإضافات في ~/.omniroute/plugins/ ثم انقر على «البحث عن المكونات الإضافية».",
+ "activate": "تفعيل",
+ "deactivate": "إلغاء التنشيط",
+ "uninstall": "إلغاء التثبيت",
+ "uninstallConfirm": "إلغاء تثبيت البرنامج المساعد \"{name}\"؟",
+ "pluginScanComplete": "اكتمل فحص البرنامج المساعد",
+ "pluginScanFailed": "فشل فحص البرنامج المساعد",
+ "activated": "تم تفعيل {name}",
+ "deactivated": "تم إلغاء تنشيط {name}",
+ "activateFailed": "فشل في تفعيل {name}",
+ "deactivateFailed": "فشل في إلغاء تنشيط {name}",
+ "uninstalled": "تم إلغاء تثبيت {name}",
+ "uninstallFailed": "فشل في إلغاء تثبيت {name}",
+ "configure": "التكوين: {name}",
+ "configurePlugin": "تكوين",
+ "noConfigSettings": "لا يحتوي هذا البرنامج المساعد على إعدادات قابلة للتكوين.",
+ "saving": "جارٍ الحفظ...",
+ "saveConfiguration": "حفظ التكوين",
+ "configurationSaved": "تم حفظ التكوين",
+ "saveConfigurationFailed": "فشل حفظ التكوين",
+ "pluginNotFound": "لم يتم العثور على البرنامج المساعد",
+ "version": "الإصدار",
+ "author": "المؤلف",
+ "description_label": "الوصف",
+ "status": "الحالة",
+ "enabled": "ممكّن",
+ "disabled": "معطل",
+ "hooks": "نقاط الربط البرمجية"
},
"reasoningRouting": {
- "title": "Reasoning routing policies",
- "apiKeyTitle": "Reasoning routing for this API key",
- "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.",
- "loadError": "Reasoning rules could not be loaded.",
- "saveError": "The rule is invalid or could not be saved.",
- "saved": "Reasoning rule saved.",
- "deleteConfirm": "Delete this reasoning rule?",
- "deleteError": "The reasoning rule could not be deleted.",
- "empty": "No matching reasoning rules configured.",
- "all": "All",
- "any": "Any",
- "enabled": "Enabled",
- "disabled": "Disabled",
- "filterSearch": "Search rules",
- "filterScope": "Filter by scope",
- "filterStatus": "Filter by status",
- "allModels": "all models",
- "keepModel": "Keep model",
- "otherModel": "Other model",
- "combo": "Combo",
- "priorityShort": "priority {value}",
- "toggleAria": "Enable {name}",
- "edit": "Edit",
- "delete": "Delete",
- "name": "Name",
- "description": "Description",
- "scopeLabel": "Scope",
- "apiKey": "API key",
- "sourceCombo": "Source combo",
- "connection": "Connection",
- "sourceModel": "Source model or wildcard",
- "sourceModelOptional": "Empty = all models",
- "sourceModelExample": "e.g. gpt-5*",
- "sourceEffort": "Source effort",
- "missing": "Not specified",
- "signalOnly": "Non-discrete reasoning signal",
- "requestTags": "Request tags",
- "requestTagsExample": "coding, internal",
- "tagMode": "Tag matching",
- "effortMode": "Effort mode",
- "targetEffort": "Target effort",
- "routingTarget": "Routing target",
- "targetModel": "Target model",
- "targetCombo": "Target combo",
- "budgetAction": "Thinking budget",
- "budgetTokens": "Budget tokens",
- "priority": "Priority",
- "saveChanges": "Save changes",
- "add": "Add rule",
- "cancel": "Cancel",
- "simulateTitle": "Simulate rule",
- "model": "Model",
- "effort": "Effort",
- "transport": "Transport",
- "simulate": "Simulate without upstream",
- "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.",
- "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.",
- "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.",
+ "title": "سياسات توجيه التفكير",
+ "apiKeyTitle": "توجيه التفكير لمفتاح API هذا",
+ "subtitle": "إعادة توجيه النماذج وجهد التفكير دون الحاجة لدعم من العميل. تبقى الطلبات دون تغيير عند عدم تطابق أي قاعدة.",
+ "loadError": "تعذر تحميل قواعد التفكير.",
+ "saveError": "القاعدة غير صالحة أو تعذر حفظها.",
+ "saved": "تم حفظ قاعدة التفكير.",
+ "deleteConfirm": "هل تريد حذف قاعدة التفكير هذه؟",
+ "deleteError": "تعذر حذف قاعدة التفكير.",
+ "empty": "لم يتم إعداد أي قواعد تفكير متطابقة.",
+ "all": "الكل",
+ "any": "أي",
+ "enabled": "مفعل",
+ "disabled": "معطل",
+ "filterSearch": "البحث في القواعد",
+ "filterScope": "تصفية حسب النطاق",
+ "filterStatus": "تصفية حسب الحالة",
+ "allModels": "جميع النماذج",
+ "keepModel": "الإبقاء على النموذج",
+ "otherModel": "نموذج آخر",
+ "combo": "المزيج",
+ "priorityShort": "الأولوية {value}",
+ "toggleAria": "تفعيل {name}",
+ "edit": "تعديل",
+ "delete": "حذف",
+ "name": "الاسم",
+ "description": "الوصف",
+ "scopeLabel": "النطاق",
+ "apiKey": "مفتاح API",
+ "sourceCombo": "المزيج المصدر",
+ "connection": "الاتصال",
+ "sourceModel": "النموذج المصدر أو حرف البدل",
+ "sourceModelOptional": "فارغ = جميع النماذج",
+ "sourceModelExample": "مثال: gpt-5*",
+ "sourceEffort": "الجهد المصدر",
+ "missing": "غير محدد",
+ "signalOnly": "إشارة تفكير غير منفصلة",
+ "requestTags": "وسوم الطلب",
+ "requestTagsExample": "برمجة، داخلي",
+ "tagMode": "مطابقة الوسوم",
+ "effortMode": "وضع الجهد",
+ "targetEffort": "الجهد المستهدف",
+ "routingTarget": "هدف التوجيه",
+ "targetModel": "النموذج المستهدف",
+ "targetCombo": "المزيج المستهدف",
+ "budgetAction": "ميزانية التفكير",
+ "budgetTokens": "رموز الميزانية (Tokens)",
+ "priority": "الأولوية",
+ "saveChanges": "حفظ التغييرات",
+ "add": "إضافة قاعدة",
+ "cancel": "إلغاء",
+ "simulateTitle": "محاكاة القاعدة",
+ "model": "النموذج",
+ "effort": "الجهد",
+ "transport": "النقل",
+ "simulate": "محاكاة بدون المنبع (Upstream)",
+ "extendedComboWarning": "يتم التحقق من صحة Max/Ultra بشكل منفصل لكل مزيج مستهدف أثناء التوجيه.",
+ "extendedUnknownWarning": "أدخل نموذجاً مستهدفاً للتحقق من دعم Max/Ultra.",
+ "extendedUnsupportedWarning": "من المعروف أن Max/Ultra مدعوم فقط بواسطة نماذج Codex GPT-5.6 المناسبة. يقبل الخادم النماذج المخصصة غير المعروفة مع إظهار تحذير.",
"scope": {
- "global": "Global",
- "apiKey": "API key",
- "combo": "Combo",
- "model": "Model",
- "connection": "Connection"
+ "global": "عام",
+ "apiKey": "مفتاح API",
+ "combo": "مزيج",
+ "model": "النموذج",
+ "connection": "الاتصال"
},
"mode": {
- "inherit": "Inherit client",
- "default": "Use default",
- "force": "Force"
+ "inherit": "توريث من العميل",
+ "default": "استخدام الافتراضي",
+ "force": "فرض"
},
"budget": {
- "preserve": "Preserve",
- "remove": "Remove",
- "set": "Set fixed value"
+ "preserve": "إبقاء",
+ "remove": "إزالة",
+ "set": "تعيين قيمة ثابتة"
}
},
"freeProviderRankingsPage": {
- "typeAll": "__MISSING__:All Types",
- "typeNoauth": "__MISSING__:No Signup",
- "typeOauth": "__MISSING__:OAuth Login",
- "typeApikey": "__MISSING__:API Key",
- "sortTypeFirst": "__MISSING__:Easiest first",
- "sortTypeFirstHelp": "__MISSING__:Group by signup effort (No Signup → OAuth Login → API Key), keeping quality order within each group",
- "typeLegend": "__MISSING__:No Signup = zero setup · OAuth Login = sign in with your own account · API Key = bring your own key or that provider's free tier"
+ "typeAll": "جميع الأنواع",
+ "typeNoauth": "من دون تسجيل",
+ "typeOauth": "تسجيل دخول OAuth",
+ "typeApikey": "مفتاح واجهة برمجة التطبيقات",
+ "sortTypeFirst": "الأسهل أولاً",
+ "sortTypeFirstHelp": "التجميع حسب سهولة البدء (من دون تسجيل ← تسجيل دخول OAuth ← مفتاح API)، مع الحفاظ على ترتيب الجودة داخل كل مجموعة",
+ "typeLegend": "من دون تسجيل = لا إعداد مطلوب · تسجيل دخول OAuth = سجّل الدخول بحسابك · مفتاح API = استخدم مفتاحك أو الخطة المجانية للمزود"
}
}