mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-29 22:55:24 +00:00
* fix(sso): send the PKCE verifier for GitHub login (#1534) * fix(remote-desktop): clip cursor overflow without disabling zoom (#1535) * test(remote-desktop): preserve sessions beyond one hour (#1536) * fix(hosts): expose controls for overflowing editor tabs (#1537) * fix(hosts): expose controls for overflowing editor tabs * test(hosts): mock resize observation in admin panel tests * fix(status): skip TCP probes while host sessions are active (#1538) * fix(database): batch session activity persistence (#1539) * docs(api): describe cookie and API key authentication (#1540) * fix(snippets): repair missing note column on SQLite upgrades (#1541) * fix(docker): retain stored SSH credential association (#1543) * fix(file-manager): render transfer toasts without plugin hooks (#1546) * feat(hosts): keep compact row actions inline (#1547) * fix(auth): allow retrying unavailable second-factor interfaces (#1549) * fix(auth): reject unresolved legacy identity provisioning (#1550) * fix(desktop): ship the plugin SDK inside Mac App Store builds (#1551) * fix(tmux): pass full session info to the terminal's session picker (#1552) The tmux.sessions service reduced detected sessions to bare names, but the picker reads session.name, so every entry rendered blank and selecting one sent an empty name, which created a new session instead of attaching. * fix(ssh): read force keyboard-interactive as a boolean when resolving hosts (#1553) The column holds the text "true"/"false", and the resolver passed it through as-is. The string "false" is truthy, so the password provider treated every saved host as forced keyboard-interactive and left the password out. Jump hops are built straight from the resolved host, so a password hop whose server doesn't offer keyboard-interactive failed with "All configured authentication methods failed". * fix(database): batch database saves for bulk host writes (#1554) * fix(database): yield to the event loop between database saves Each SQLite save serializes and encrypts the whole database into new buffers, which V8 only releases once the event loop turns. Boot migrations and bulk host import write plugin settings per host and per key in an awaited loop, so hundreds of full copies piled up and the container ran out of memory. * fix(database): save once per bulk host write instead of once per row On SQLite every repository write force-saves the whole database. Boot plugin data migrations, host defaults materialization and the bulk host routes write one row per host per setting, so they serialized and encrypted the full database hundreds of times in a row. DatabaseSaveTrigger.batched wraps a function so force saves made while it runs collapse into a single save when it finishes. Nested scopes fold into the outer one, and work that outlives its scope saves normally. * feat(hosts): add instance-wide predefined tag suggestions (#1548) * feat(hosts): add shared predefined tag suggestions * style(hosts): format tag catalog routes * test(database): advance fake timers past the save yield (#1555) * fix(i18n): complete Simplified Chinese core and plugin translations (#1542) * fix(i18n): complete Chinese onboarding and navigation labels * fix(i18n): translate remaining Chinese core and plugin interfaces * fix(i18n): translate host editor tab overflow controls * fix(i18n): use consistent Chinese fleet terminology * fix(i18n): localize hardcoded controls and plugin views * fix(i18n): translate built-in homepage widget catalog * test(homepage): follow translated timezone placeholder * fix(i18n): translate plugin-provided homepage widgets * fix(i18n): localize feature settings section titles * fix: 2.8 oidc accounts unable to sign in after upgrading (#1381) * fix: plugins losing the saved ssh login when copying a host (#1391) * fix: fleets, proxmox and automations not getting the host sudo password * fix: host imports running a defaults pass and metrics restart per host (#1384) * fix: high cpu from status probes and full database saves on every sample (#1300) * fix: user data export freezing the server (#1393) * fix: op:// secret references rejected as ssh keys on credentials (#1394) * fix: slow file deletes from the trash lookups on every delete (#1390) * fix: add openapi docs and error handling to host tag routes * test: compare download stream buffers directly so it stops timing out * chore: drop em dash from host row comment * chore: update release notes for 2.9.1 * fix: restore space to add host tags and redesign predefined tags editor * fix: host key silently accepted when the host is missing from the database (#1397) * fix: clearer host login failed status label and fix its translations (#1396) * chore: add host key and status label fixes to release notes * fix: sso and ldap provider dialogs overflowing the screen and using mismatched toggles * chore: increment ver * fix(audit): store plugin entries with no acting user as a null user_id (#1556) Plugin audit entries written outside a request used the literal "system" as user_id. That column references users.id, so the insert was refused (Postgres logs it as an FK violation) and the entry was silently dropped. Write null instead and keep "system" / plugin:<id> in username. * chore: add sso/ldap dialog and audit log fixes to release notes * fix: tunnels and host settings missing from shared hosts on desktop * fix: remote desktop logins missing from shared hosts on desktop * fix: simplify host status to online/offline and keep it live without a refresh * chore: sync Crowdin translations for 2.9.1 --------- Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
709 lines
38 KiB
JSON
709 lines
38 KiB
JSON
{
|
|
"mobileKeyboard": {
|
|
"addQuickKey": "إضافة",
|
|
"arrowDown": "Arrow Down",
|
|
"arrowLeft": "Arrow Left",
|
|
"arrowRight": "Arrow Right",
|
|
"arrowUp": "Arrow Up",
|
|
"backTab": "⇥",
|
|
"ctrl": "Ctrl",
|
|
"delete": "Del",
|
|
"done": "تم",
|
|
"editQuickKeys": "تحرير المفاتيح السريعة",
|
|
"end": "End",
|
|
"esc": "Esc",
|
|
"home": "Home",
|
|
"pageDown": "PgDn",
|
|
"pageUp": "PgUp",
|
|
"paste": "لصق",
|
|
"quickKeyPlaceholder": "مثال: sudo ",
|
|
"quickKeysDesc": "اضغط × للإزالة. يدعم حتى 8 أحرف.",
|
|
"quickKeysTitle": "المفاتيح السريعة",
|
|
"removeQuickKey": "إزالة",
|
|
"resetDefaults": "استعادة الإعدادات الافتراضية",
|
|
"shift": "Shift",
|
|
"tab": "Tab"
|
|
},
|
|
"terminal": {
|
|
"autoTmuxEnableFailed": "فشل تفعيل خاصية Auto-Tmux",
|
|
"autoTmuxEnabled": "تم تفعيل خاصية Auto-Tmux لـ {{host}}. وسيتم تطبيقها بدءًا من الاتصال التالي.",
|
|
"clipboardHttpWarning": "تعذر قراءة الحافظة. بعض المتصفحات تقيّد الوصول إلى الحافظة خارج بروتوكول HTTPS - جرّب Ctrl+V بدلاً من ذلك، أو شغّل Termix عبر HTTPS.",
|
|
"closeTab": "إغلاق",
|
|
"connecting": "جارٍ الاتصال...",
|
|
"connectionLost": "انقطع الاتصال",
|
|
"connectionRejected": "تم رفض الاتصال من قبل الخادم. يرجى التحقق من المصادقة وإعدادات الشبكة.",
|
|
"connectionTimeout": "انتهت مهلة الاتصال",
|
|
"enableAutoTmuxAction": "تمكين tmux التلقائي",
|
|
"hostKeyRejected": "تم رفض التحقق من مفتاح مضيف SSH. تم إلغاء الاتصال.",
|
|
"linkDialogCopy": "نسخ",
|
|
"linkDialogOpen": "فتح",
|
|
"linkDialogTitle": "فتح الرابط",
|
|
"maxReconnectAttemptsReached": "تم الوصول إلى الحد الأقصى لمحاولات إعادة الاتصال",
|
|
"noHostSelected": "لم يتم تحديد مضيف",
|
|
"passwordPromptFillTitle": "هل تريد ملء كلمة المرور المحفوظة في هذه النافذة؟",
|
|
"reconnect": "إعادة الاتصال",
|
|
"reconnected": "تمت إعادة الاتصال بنجاح",
|
|
"reconnecting": "جارٍ إعادة الاتصال... ({{attempt}}/{{max}})",
|
|
"autoReconnecting": "انقطع الاتصال، جارٍ إعادة الاتصال...",
|
|
"searchCaseSensitive": "علبة كبريت",
|
|
"searchClose": "إغلاق (الهروب)",
|
|
"searchNext": "المباراة التالية (إدخال)",
|
|
"searchNoResults": "لا توجد نتائج",
|
|
"searchPlaceholder": "يجد",
|
|
"searchPrevious": "المباراة السابقة (Shift+Enter)",
|
|
"searchRegex": "استخدم التعبير النمطي",
|
|
"searchResultCount": "{{index}} من {{count}}",
|
|
"searchWholeWord": "مطابقة الكلمة الكاملة",
|
|
"sessionExpiredNotice": "انتهت صلاحية جلستك السابقة على {{host}} بعد {{minutes}} دقيقة من قطع الاتصال؛ تم إغلاق نافذة الأوامر وأي شيء يعمل بداخلها. فعّل خاصية Auto-Tmux على هذا المضيف للحفاظ على استمرارية الجلسات.",
|
|
"sessionExpiredNoticeNoMinutes": "انتهت صلاحية جلستك السابقة على {{host}} أثناء انقطاع الاتصال؛ تم حذف واجهة سطر الأوامر وأي شيء كان يعمل بداخلها. فعّل خاصية Auto-Tmux على هذا المضيف للحفاظ على استمرارية الجلسات.",
|
|
"sessionTakenOver": "تم فتح الجلسة في علامة تبويب أخرى. جارٍ إعادة الاتصال...",
|
|
"tmuxAttached": "العملاء المتصلون",
|
|
"tmuxAttachedCount": "{{count}} متصل",
|
|
"tmuxCopyHint": "اضبط التحديد واضغط Enter للنسخ إلى الحافظة",
|
|
"tmuxCreateNew": "بدء جلسة جديدة",
|
|
"tmuxDetached": "تم الفصل من جلسة tmux",
|
|
"tmuxLastActivity": "آخر نشاط",
|
|
"tmuxSessionAttached": "تم الالتحاق بجلسة tmux: {{name}}",
|
|
"tmuxSessionCreated": "تم إنشاء جلسة tmux: {{name}}",
|
|
"tmuxSessionPickerDesc": "تم العثور على جلسات tmux موجودة على هذا المضيف. اختر واحدة لإعادة الاتصال أو أنشئ جلسة جديدة.",
|
|
"tmuxSessionPickerTitle": "جلسات tmux",
|
|
"tmuxTimeDays": "منذ {{count}}ي",
|
|
"tmuxTimeHours": "منذ {{count}}س",
|
|
"tmuxTimeJustNow": "الآن فقط",
|
|
"tmuxTimeMinutes": "منذ {{count}}د",
|
|
"tmuxUnavailable": "tmux غير مثبّت على المضيف البعيد، جارٍ الرجوع إلى الصدفة القياسية",
|
|
"tmuxWindowCount": "{{count}} نافذة",
|
|
"tmuxWindows": "النوافذ",
|
|
"unknownError": "حدث خطأ غير معروف",
|
|
"websocketAbnormalClose": "أُغلق الاتصال بشكل غير متوقع. قد يكون السبب مشكلة في الوكيل العكسي أو إعدادات SSL. يرجى مراجعة سجلات الخادم.",
|
|
"websocketError": "خطأ في اتصال WebSocket",
|
|
"clipboardReadFailed": "فشلت القراءة من الحافظة. تأكد من منح أذونات الحافظة.",
|
|
"clipboardWriteFailed": "فشل النسخ إلى الحافظة. تأكد من تقديم الصفحة عبر HTTPS أو localhost.",
|
|
"connected": "متصل",
|
|
"totpCodeLabel": "رمز التحقق",
|
|
"duplicateTab": "علامة تبويب مكررة",
|
|
"imageChooseFile": "اختر ملف صورة",
|
|
"imageUploaded": "تم تحميل الصورة: {{path}}",
|
|
"imageClipboardUnavailable": "لا يستطيع هذا المتصفح قراءة الصور من الحافظة",
|
|
"imageClipboardEmpty": "لم يتم العثور على أي صورة في الحافظة",
|
|
"localShell": "واجهة سطر الأوامر المحلية",
|
|
"autocompleteHintComplete": "اضغط على زر Tab أو Enter لإكمال العملية",
|
|
"autocompleteHintNavigate": "↑↓ للتنقل",
|
|
"autocompleteHintClose": "اضغط على زر Esc للإغلاق"
|
|
},
|
|
"terminalToolbar": {
|
|
"detachTmux": "افصل tmux",
|
|
"detachTmuxDescription": "فصل جلسة tmux",
|
|
"dismissError": "تجاهل خطأ الصورة",
|
|
"hideToolbar": "إخفاء شريط الأدوات",
|
|
"image": "إجراءات الصور (للصور فقط)",
|
|
"imageActionFailed": "فشلت عملية معالجة الصورة",
|
|
"layout": "وضع عرض شريط الأدوات",
|
|
"layoutExpanded": "تم توسيعه بمقاييس",
|
|
"layoutIcon": "أيقونة فقط",
|
|
"layoutLabeled": "الرموز والملصقات",
|
|
"moveToolbar": "نقل شريط الأدوات",
|
|
"moveToolbarHint": "اسحب لإعادة وضع شريط الأدوات",
|
|
"paste": "لصق الصورة",
|
|
"pasteImage": "لصق الصورة من الحافظة (الصور فقط)",
|
|
"retry": "إعادة المحاولة",
|
|
"showToolbar": "توسيع شريط الأدوات",
|
|
"upload": "تحميل صورة",
|
|
"uploadImage": "قم بتحميل صورة إلى المضيف",
|
|
"uploadingImage": "جارٍ الرفع..."
|
|
},
|
|
"history": {
|
|
"noTerminalSelected": "لا توجد طرفية محددة",
|
|
"noTerminalSelectedHint": "افتح علامة تبويب طرفية SSH لعرض سجل الأوامر الخاص بها",
|
|
"searchPlaceholder": "ابحث في السجل...",
|
|
"clearAll": "مسح الكل",
|
|
"noHistoryEntries": "لا توجد مدخلات سجل",
|
|
"trackingDisabled": "تتبع السجل معطل",
|
|
"trackingDisabledHint": "قم بتشغيل سجل الأوامر في علامة تبويب SSH Terminal الخاصة بهذا المضيف.",
|
|
"commandCount_one": "الأمر {{count}}",
|
|
"commandCount_other": "{{count}} أوامر"
|
|
},
|
|
"touchInput": {
|
|
"enabled": "تفعيل إدخال اللمس",
|
|
"enabledDesc": "السماح بالتمرير بلمسة إصبع واحدة في المحطات الطرفية",
|
|
"momentumEnabled": "تفعيل الزخم",
|
|
"momentumEnabledDesc": "استمر في التمرير لفترة وجيزة بعد التمرير السريع",
|
|
"advanced": "متقدم",
|
|
"resetDefaults": "استعادة الإعدادات الافتراضية",
|
|
"dragThreshold": "عتبة السحب",
|
|
"maxWheelDelta": "أقصى دلتا للعجلة",
|
|
"momentumSampleWindow": "نافذة عينة الزخم",
|
|
"releaseGracePeriod": "فترة السماح للإفراج",
|
|
"minimumVelocity": "الحد الأدنى للسرعة",
|
|
"maximumVelocity": "أقصى سرعة",
|
|
"maximumDuration": "أقصى مدة",
|
|
"maximumTravel": "أقصى قدر من السفر",
|
|
"decayTime": "وقت التحلل",
|
|
"pixelsPerTick": "بكسل لكل نبضة",
|
|
"maximumFrameInterval": "أقصى فاصل زمني بين الإطارات",
|
|
"maximumTicksPerFrame": "الحد الأقصى للنبضات لكل إطار"
|
|
},
|
|
"imageStorage": {
|
|
"instanceId": "معرّف مثيل جلسة الطرفية",
|
|
"instanceIdDesc": "معرف مثيل إحدى علامات تبويب الطرفية المتصلة، المستخدمة لاختبار الرؤية.",
|
|
"selectedModeUnavailable": "غير متاح",
|
|
"test": "اختبار",
|
|
"testing": "جارٍ الاختبار...",
|
|
"testFailed": "فشل اختبار تخزين الصور",
|
|
"testConnected": "تم الاتصال بجلسة الطرفية.",
|
|
"testNotConnected": "لا توجد جلسة طرفية متصلة بهذا المعرف.",
|
|
"testSelectedMode": "سيتم استخدام الأمر التالي للتحميل: {{mode}}",
|
|
"testLocalVisible": "الدليل المحلي مرئي من الجهاز المضيف المتصل.",
|
|
"testLocalNotVisible": "الدليل المحلي غير مرئي من الجهاز المضيف المتصل."
|
|
},
|
|
"settings": {
|
|
"admin": {
|
|
"group": {
|
|
"touch": "إدخال اللمس",
|
|
"images": "تخزين الصور",
|
|
"sessions": "الجلسات",
|
|
"newHosts": "مضيفون جدد"
|
|
},
|
|
"sessionTimeoutMinutes": {
|
|
"label": "استمرار جلسة الطرفية",
|
|
"description": "مدة بقاء طرفية غير متصلة على الخادم قبل إغلاقها. الحد الأدنى دقيقة واحدة، والحد الأقصى 1440 دقيقة. بالنسبة للجلسات التي يجب أن تستمر لفترة أطول من ذلك، فعّل خاصية Auto-Tmux على المضيف."
|
|
},
|
|
"commandHistoryEnabled": {
|
|
"label": "سجل الأوامر",
|
|
"description": "السماح بتسجيل سجل الأوامر. عند التعطيل، لا يتم حفظ السجل بغض النظر عن إعدادات كل جهاز."
|
|
},
|
|
"commandHistoryForNewHosts": {
|
|
"label": "سجل الأوامر للمضيفين الجدد",
|
|
"description": "هل تبدأ الأجهزة المضيفة الجديدة بخاصية تفعيل سجل الأوامر؟"
|
|
},
|
|
"imageStorageMode": {
|
|
"label": "وضع التخزين",
|
|
"description": "يتم حفظ الصور الطرفية الملصقة والمرفوعة في هذا المكان. يتم تثبيت عمليات الاختيار التلقائي حسب الاتصال، سواء كان محليًا أو عن بُعد (SFTP).",
|
|
"auto": "تلقائي",
|
|
"local": "محلي",
|
|
"remoteSftp": "عن بعد (SFTP)"
|
|
},
|
|
"imageLocalDir": {
|
|
"label": "الدليل المحلي",
|
|
"description": "المسار المطلق في نظام Termix الخلفي حيث يتم كتابة الصور في الوضع المحلي. لا يظهر هذا المسار بعد الحفظ. يستخدم المسار الفارغ TERMIX_IMAGE_DIR."
|
|
},
|
|
"imageHostPath": {
|
|
"label": "مسار المضيف",
|
|
"description": "عرض الدليل المحلي من جانب المضيف الذي تتلقاه وكلاء المحطة الطرفية."
|
|
},
|
|
"imageTtlMs": {
|
|
"label": "مدة البقاء (بالمللي ثانية)",
|
|
"description": "مدة الاحتفاظ بالصورة المرفوعة، بالمللي ثانية. يستخدم الخيار الفارغ قيمة TERMIX_IMAGE_TTL_MS أو ساعة واحدة."
|
|
},
|
|
"imageMaxCount": {
|
|
"label": "الحد الأقصى لعدد الصور",
|
|
"description": "يتم الاحتفاظ بمعظم الصور دفعة واحدة. يستخدم الوضع الفارغ TERMIX_MAX_IMAGE_COUNT أو 100."
|
|
},
|
|
"imageMaxBytes": {
|
|
"label": "الحد الأقصى لحجم التخزين بالبايت",
|
|
"description": "يتم الاحتفاظ بمعظم بايتات الصور دفعة واحدة. يستخدم الملف الفارغ TERMIX_MAX_IMAGE_STORAGE_BYTES أو 5 جيجابايت."
|
|
},
|
|
"sessionPersistence": {
|
|
"label": "حافظ على جلساتك منفصلة",
|
|
"description": "أبقِ نافذة طرفية غير متصلة بالخادم مفتوحة للمدة المذكورة أعلاه، بحيث يؤدي إعادة فتح علامة التبويب الخاصة بها إلى استئناف العمل من حيث توقفت."
|
|
},
|
|
"newHostAutoTmux": {
|
|
"label": "Auto-Tmux",
|
|
"description": "قم بتشغيل طرفيات المضيفين الجدد داخل tmux حتى تستمر الجلسات في حالة انقطاع الاتصال (يتطلب tmux على المضيف)."
|
|
},
|
|
"newHostTheme": {
|
|
"label": "قالب للمضيفين الجدد",
|
|
"description": "السمة الطرفية التي يبدأ بها المضيف الجديد."
|
|
},
|
|
"newHostFontFamily": {
|
|
"label": "خط المضيفين الجدد",
|
|
"description": "خط الطرفية الذي يبدأ به المضيف الجديد."
|
|
},
|
|
"newHostFontSize": {
|
|
"label": "حجم الخط للمضيفين الجدد",
|
|
"description": "حجم خط الطرفية الذي يبدأ به المضيف الجديد، بالبكسل."
|
|
},
|
|
"newHostCursorStyle": {
|
|
"label": "نمط المؤشر للمضيفين الجدد"
|
|
},
|
|
"newHostCursorBlink": {
|
|
"label": "مؤشر وامض للمضيفين الجدد"
|
|
}
|
|
},
|
|
"host": {
|
|
"enableTerminalToolbar": {
|
|
"label": "تفعيل شريط أدوات الطرفية",
|
|
"description": "اعرض شريط أدوات سريع الوصول مثبتًا على الطرفية النشطة لأدوات هذا المضيف وإحصائياته المباشرة."
|
|
},
|
|
"terminalToolbarPosition": {
|
|
"label": "موضع شريط الأدوات",
|
|
"description": "مكان وجود شريط الأدوات في الطرفية. لا يزال بإمكانك سحبه من هناك.",
|
|
"bottom": "أسفل المنتصف",
|
|
"bottomLeft": "أسفل اليسار",
|
|
"bottomRight": "أسفل اليمين",
|
|
"top": "أعلى المنتصف",
|
|
"topLeft": "أعلى اليسار",
|
|
"topRight": "أعلى اليمين"
|
|
},
|
|
"terminalToolbarStartState": {
|
|
"label": "حالة بدء شريط الأدوات",
|
|
"description": "سواء تم فتح شريط الأدوات موسعًا أو مصغرًا عند اتصال الجهاز الطرفي",
|
|
"expanded": "موسع",
|
|
"collapsed": "مُصغّر"
|
|
},
|
|
"terminalToolbarDisplay": {
|
|
"label": "وضع عرض شريط الأدوات",
|
|
"description": "كيفية عرض أزرار شريط الأدوات. آخر استخدام يحفظ ما تم تحديده في شريط الأدوات.",
|
|
"remember": "آخر استخدام",
|
|
"icon": "أيقونة فقط",
|
|
"labeled": "الرموز والملصقات",
|
|
"expanded": "مُوسّع بالإحصائيات"
|
|
},
|
|
"terminalToolbarShowStatus": {
|
|
"label": "عرض الإحصائيات المباشرة",
|
|
"description": "عرض إحصائيات المضيف المباشرة أعلى أزرار شريط الأدوات في الوضع الموسع"
|
|
},
|
|
"terminalToolbarFade": {
|
|
"label": "يتلاشى عند الخمول",
|
|
"description": "قم بإخفاء شريط الأدوات حتى تُمرر مؤشر الماوس فوقه"
|
|
},
|
|
"enableCommandHistory": {
|
|
"label": "سجل الأوامر",
|
|
"description": "تسجيل الأوامر المنفذة في هذه الطرفية للسجل والإكمال التلقائي"
|
|
},
|
|
"enableTerminal": {
|
|
"label": "تفعيل الطرفية",
|
|
"description": "قم بتوفير طرفية SSH لهذا المضيف."
|
|
},
|
|
"inheritAppearance": {
|
|
"label": "استخدم الإعدادات الافتراضية للمستخدم"
|
|
},
|
|
"theme": {
|
|
"label": "المظهر"
|
|
},
|
|
"cursorBlink": {
|
|
"label": "مؤشر وامض"
|
|
},
|
|
"cursorStyle": {
|
|
"label": "نمط المؤشر"
|
|
},
|
|
"fontSize": {
|
|
"label": "حجم الخط"
|
|
},
|
|
"fontFamily": {
|
|
"label": "نوع الخط"
|
|
},
|
|
"scrollback": {
|
|
"label": "ارجع للخلف"
|
|
},
|
|
"letterSpacing": {
|
|
"label": "تباعد الأحرف"
|
|
},
|
|
"lineHeight": {
|
|
"label": "ارتفاع السطر"
|
|
},
|
|
"bellStyle": {
|
|
"label": "جرس"
|
|
},
|
|
"minimumContrastRatio": {
|
|
"label": "نسبة التباين الدنيا"
|
|
},
|
|
"backgroundImage": {
|
|
"label": "صورة الخلفية"
|
|
},
|
|
"backgroundImageOpacity": {
|
|
"label": "شفافية صورة الخلفية"
|
|
},
|
|
"customThemeColors": {
|
|
"label": "ألوان مخصصة للثيم"
|
|
},
|
|
"rightClickSelectsWord": {
|
|
"label": "النقر بزر الماوس الأيمن يحدد الكلمة"
|
|
},
|
|
"macOptionIsMeta": {
|
|
"label": "الخيار هو ميتا"
|
|
},
|
|
"fastScrollModifier": {
|
|
"label": "مفتاح التمرير السريع"
|
|
},
|
|
"fastScrollSensitivity": {
|
|
"label": "سرعة تمرير سريعة"
|
|
},
|
|
"backspaceMode": {
|
|
"label": "مسافة للخلف"
|
|
},
|
|
"autoMosh": {
|
|
"label": "أوتو موش"
|
|
},
|
|
"moshCommand": {
|
|
"label": "أمر موش"
|
|
},
|
|
"autoTmux": {
|
|
"label": "tmux تلقائي"
|
|
},
|
|
"useSSHTitle": {
|
|
"label": "استخدم عنوان SSH"
|
|
},
|
|
"syntaxHighlighting": {
|
|
"label": "تمييز بناء الجملة"
|
|
},
|
|
"syntaxHighlightingOptions": {
|
|
"label": "فئات تمييز بناء الجملة"
|
|
},
|
|
"linkClickBehavior": {
|
|
"label": "انقر على الرابط"
|
|
},
|
|
"localEcho": {
|
|
"label": "صدى محلي"
|
|
},
|
|
"passwordPromptAutoFill": {
|
|
"label": "عرض المساعدة في ملء خانات إدخال كلمة المرور"
|
|
},
|
|
"sudoPasswordAutoFill": {
|
|
"label": "املأ مطالبات sudo"
|
|
},
|
|
"autoReconnect": {
|
|
"label": "إعادة الاتصال تلقائياً"
|
|
}
|
|
},
|
|
"user": {
|
|
"commandAutocomplete": {
|
|
"label": "الإكمال التلقائي للأوامر",
|
|
"description": "إظهار الإكمال التلقائي أثناء الكتابة عند الضغط على زر Tab"
|
|
},
|
|
"localEcho": {
|
|
"label": "صدى محلي",
|
|
"description": "تقليل زمن استجابة الإدخال المُدرك باستخدام التنبؤ الآمن المحلي بضغطات المفاتيح"
|
|
},
|
|
"linkClickBehavior": {
|
|
"label": "سلوك النقر على الروابط في الطرفية",
|
|
"description": "السلوك الافتراضي عند النقر على الروابط في الطرفية"
|
|
},
|
|
"customThemes": {
|
|
"label": "السمات المحفوظة"
|
|
}
|
|
}
|
|
},
|
|
"palette": {
|
|
"localTerminal": "المحطة المحلية"
|
|
},
|
|
"permissions": {
|
|
"sessions": {
|
|
"title": "استخدم جلسات طرفية مباشرة",
|
|
"description": "يتيح ذلك لميزات أخرى، مثل مشاركة الجلسات وتسجيلها، الوصول إلى جلسات طرفية مباشرة."
|
|
},
|
|
"history": {
|
|
"title": "قراءة سجل الأوامر",
|
|
"description": "يتيح ذلك لميزات أخرى، مثل مساعد الذكاء الاصطناعي، قراءة سجل أوامرك."
|
|
}
|
|
},
|
|
"hosts": {
|
|
"tabTerminal": "الطرفية",
|
|
"addHost": "إضافة مضيف",
|
|
"applyGlobalThemeTooltip": "قم بتطبيق هذا القالب",
|
|
"backgroundImageDesc": "رابط اختياري لصورة خلفية الطرفية",
|
|
"backgroundImageLabel": "رابط صورة الخلفية",
|
|
"backgroundImageOpacityLabel": "شفافية صورة الخلفية",
|
|
"backspaceMode": "نمط الحذف",
|
|
"backspaceModeControlH": "التحكم-H (BS)",
|
|
"backspaceModeLabel": "وضع المسح الخلفي",
|
|
"backspaceModeNormal": "عادي (حذف)",
|
|
"behaviorAndAdvanced": "السلوك والمتقدم",
|
|
"bellStyle": "نمط الجرس",
|
|
"bellStyleBoth": "كلاهما",
|
|
"bellStyleLabel": "نمط الجرس",
|
|
"bellStyleNone": "لا شيء",
|
|
"bellStyleSound": "صوت",
|
|
"bellStyleVisual": "مرئي",
|
|
"colorTheme": "نظام الألوان",
|
|
"cursorBlink": "وميض المؤشر",
|
|
"cursorBlinking": "وميض المؤشر",
|
|
"cursorBlinkingDesc": "تمكين تأثير وميض المؤشر في الطرفية",
|
|
"cursorStyle": "نمط المؤشر",
|
|
"cursorStyleBar": "حاجِز",
|
|
"cursorStyleBlock": "حاجز",
|
|
"cursorStyleLabel": "نمط المؤشر",
|
|
"cursorStyleUnderline": "ضع خطاً تحته",
|
|
"customThemeAnsiColors": "ألوان ANSI",
|
|
"customThemeBackground": "الخلفية",
|
|
"customThemeBlack": "أسود",
|
|
"customThemeBlue": "أزرق",
|
|
"customThemeBrightBlack": "أسود ساطع",
|
|
"customThemeBrightBlue": "أزرق ساطع",
|
|
"customThemeBrightCyan": "سماوي ساطع",
|
|
"customThemeBrightGreen": "أخضر ساطع",
|
|
"customThemeBrightMagenta": "ماجنتا ساطع",
|
|
"customThemeBrightRed": "أحمر ساطع",
|
|
"customThemeBrightWhite": "أبيض ساطع",
|
|
"customThemeBrightYellow": "أصفر ساطع",
|
|
"customThemeColors": "ألوان مخصصة",
|
|
"customThemeCursor": "المؤشر",
|
|
"customThemeCursorAccent": "تمييز المؤشر",
|
|
"customThemeCyan": "سماوي",
|
|
"customThemeForeground": "المقدمة",
|
|
"customThemeGreen": "أخضر",
|
|
"customThemeMagenta": "ماجنتا",
|
|
"customThemeRed": "أحمر",
|
|
"customThemeResetTooltip": "إعادة تعيين إلى الإعدادات الافتراضية",
|
|
"customThemeSelection": "التحديد",
|
|
"customThemeWhite": "أبيض",
|
|
"customThemeYellow": "أصفر",
|
|
"deleteGlobalThemeTooltip": "احذف هذا القالب",
|
|
"docsLink": "عرض المستندات",
|
|
"enableAutoMosh": "تمكين Mosh التلقائي",
|
|
"enableAutoMoshDesc": "تفضيل Mosh على SSH إذا كان متاحاً",
|
|
"enableAutoTmux": "تمكين tmux التلقائي",
|
|
"enableAutoTmuxDesc": "حافظ على تشغيل shell وأي شيء يعمل بداخله أثناء انقطاع الاتصال وإعادة تشغيل المتصفح عن طريق التشغيل داخل tmux (يجب تثبيت tmux على المضيف).",
|
|
"fastScrollModifier": "مُعدِّل التمرير السريع",
|
|
"fastScrollModifierAlt": "Alt",
|
|
"fastScrollModifierCtrl": "Ctrl",
|
|
"fastScrollModifierLabel": "مفتاح التمرير السريع",
|
|
"fastScrollModifierShift": "Shift",
|
|
"fastScrollSensitivity": "حساسية التمرير السريع",
|
|
"fastScrollSensitivityLabel": "حساسية التمرير السريع",
|
|
"fontFamily": "عائلة الخط",
|
|
"fontFamilyCustomHint": "اختر خطًا مُضمّنًا، أو اختر \"مخصص\" واكتب الاسم الدقيق لخط مُثبّت مُسبقًا على نظامك (مثل MesloLGS NF أو Noto Sans Mono). لا يُمكن لبرنامج Termix تثبيت الخطوط نيابةً عنك، لذا ثبّته على نظام التشغيل أولًا.",
|
|
"fontFamilyCustomOption": "مخصص...",
|
|
"fontFamilyCustomPlaceholder": "اسم الخط بالضبط، على سبيل المثال MesloLGS NF",
|
|
"fontFamilyLabel": "عائلة الخط",
|
|
"fontSize": "حجم الخط",
|
|
"fontSizeLabel": "حجم الخط",
|
|
"hostNotFound": "المضيف غير موجود",
|
|
"letterSpacing": "تباعد الأحرف",
|
|
"letterSpacingPx": "تباعد الأحرف (بكسل)",
|
|
"lineHeight": "ارتفاع السطر",
|
|
"lineHeightLabel": "ارتفاع السطر",
|
|
"linkClickBehaviorConfirm": "إظهار نافذة منبثقة للفتح أو النسخ",
|
|
"linkClickBehaviorDesc": "يتحكم في ما يحدث عند النقر على رابط في الطرفية. استخدم 'افتراضي' لاتباع إعداد التطبيق العام.",
|
|
"linkClickBehaviorDirect": "فتح مباشرةً",
|
|
"linkClickBehaviorLabel": "سلوك النقر على الرابط",
|
|
"loadingHost": "جارٍ تحميل المضيف...",
|
|
"localEchoAuto": "معادلة",
|
|
"localEchoDesc": "توقع ضغطات المفاتيح الآمنة القابلة للطباعة محليًا على الاتصالات البطيئة. لا يتم عرض مطالبات كلمة المرور أو مدخلات التحكم على الشاشة.",
|
|
"localEchoLabel": "صدى محلي",
|
|
"localEchoOff": "غير مفعلة",
|
|
"localEchoOn": "متصل دائمًا",
|
|
"macOptionIsMetaLabel": "مفتاح الخيار يرسل البيانات الوصفية",
|
|
"macOptionIsMetaShortDesc": "تعطيل كتابة الأحرف الخاصة (مثل @ أو |) باستخدام مفتاح Option/Alt على نظام macOS بدلاً من إرسال Meta",
|
|
"moshCommand": "أمر MOSH",
|
|
"moshCommandLabel": "أمر Mosh",
|
|
"noSavedThemes": "لم يتم حفظ أي سمات بعد",
|
|
"none": "لا يوجد",
|
|
"passwordPromptAutoFillDesc": "اعرض إدخال كلمة المرور المحفوظة عندما يطلبها الجهاز. قم بإيقاف تشغيل هذه الخاصية لمنع إدخال أي كلمة مرور تلقائيًا على هذا الجهاز.",
|
|
"passwordPromptAutoFillLabel": "عرض خاصية التعبئة التلقائية لكلمة المرور",
|
|
"autoReconnectLabel": "إعادة الاتصال التلقائي",
|
|
"autoReconnectDesc": "يُعيد الاتصال تلقائيًا عند انقطاع اتصال SSH، كما يحدث بعد انقطاع مؤقت في الشبكة أو وضع السكون. ويحتفظ بسجل التمرير.",
|
|
"rightClickSelectsWord": "النقر باليمين يحدد الكلمة",
|
|
"rightClickSelectsWordLabel": "تحديد الكلمة بالنقر الأيمن",
|
|
"rightClickSelectsWordShortDesc": "تحديد الكلمة تحت المؤشر عند النقر بالزر الأيمن",
|
|
"saveAsGlobalTheme": "حفظ كقالب عام",
|
|
"saveGlobalThemeError": "فشل حفظ السمة",
|
|
"saveGlobalThemeNamePrompt": "أدخل اسمًا لهذا القالب",
|
|
"saveGlobalThemeSuccess": "حفظ السمة",
|
|
"savedThemesLabel": "السمات المحفوظة",
|
|
"scrollbackBufferLabel": "مخزن التمرير المؤقت",
|
|
"scrollbackMaxLines": "الحد الأقصى لعدد الأسطر المحفوظة في السجل",
|
|
"sudoPasswordAutoFill": "التعبئة التلقائية لكلمة مرور Sudo",
|
|
"sudoPasswordAutoFillDesc": "تخزين كلمة مرور sudo لتشغيل مقاييس المضيف ومطالبات الطرفية وغيرها من الأوامر المميزة تلقائياً.",
|
|
"sudoPasswordAutoFillLabel": "الملء التلقائي لكلمة مرور sudo",
|
|
"syntaxCategoryIpAddresses": "عناوين IP",
|
|
"syntaxCategoryIpAddressesDesc": "192.168.1.1, 10.0.0.1:8080",
|
|
"syntaxCategoryLogLevels": "مستويات السجل",
|
|
"syntaxCategoryLogLevelsDesc": "خطأ، تحذير، معلومات، تنقيح، فادح",
|
|
"syntaxCategoryNumbers": "أرقام معنونة",
|
|
"syntaxCategoryNumbersDesc": "port 8080, exit 1, status 404",
|
|
"syntaxCategoryPaths": "مسارات الملفات",
|
|
"syntaxCategoryPathsDesc": "/usr/share/doc, ~/file.txt",
|
|
"syntaxCategoryTimestamps": "الطوابع الزمنية",
|
|
"syntaxCategoryTimestampsDesc": "[12:34:56], 2024-01-15",
|
|
"syntaxCategoryUrls": "عناوين URL",
|
|
"syntaxCategoryUrlsDesc": "https://example.com",
|
|
"syntaxHighlightingDesc": "تلوين مخرجات الطرفية (الأخطاء، المسارات، عناوين IP، الطوابع الزمنية)",
|
|
"syntaxHighlightingLabel": "تمييز الصيغة",
|
|
"terminalAppearance": "مظهر الطرفية",
|
|
"theme": "السمة",
|
|
"themePreview": "معاينة السمة",
|
|
"useSSHTitleDesc": "تحديث عنوان التبويب من عنوان نافذة الصدفة بدلاً من اسم المضيف",
|
|
"useSSHTitleLabel": "استخدام عنوان نافذة SSH",
|
|
"enableTunnel": "تمكين النفق",
|
|
"enableFileManager": "تمكين مدير الملفات",
|
|
"enableDocker": "تمكين Docker",
|
|
"startupSnippet": "مقتطف بدء التشغيل",
|
|
"quickActions": "إجراءات سريعة",
|
|
"proxmoxLastSyncStatus": {
|
|
"success": "نجاح"
|
|
},
|
|
"proxmoxResultSkippedNoIp": "تم تخطي {{count}} (لم يتم العثور على عنوان IP)",
|
|
"proxmoxStatsUrlCopied": "تم نسخ رابط إحصائيات Proxmox إلى الحافظة",
|
|
"rdpUrlCopied": "تم نسخ رابط RDP",
|
|
"vncUrlCopied": "تم نسخ رابط VNC",
|
|
"filterAuthStepca": "الخطوة ج",
|
|
"guac": {
|
|
"noCredential": "لا توجد بيانات اعتماد (بيانات اعتماد مباشرة أدناه)",
|
|
"authTypeDirect": "مباشر",
|
|
"authTypeCredential": "بيانات الاعتماد",
|
|
"authTypeNone": "لا شيء",
|
|
"recordingPath": "مسار التسجيل",
|
|
"recordingName": "اسم التسجيل",
|
|
"saveHostFirst": "احفظ المضيف أولاً.",
|
|
"sharingOptionsAfterSave": "خيارات المشاركة متاحة بعد حفظ المضيف.",
|
|
"permissionLevel": "مستوى الصلاحية",
|
|
"typeHeader": "النوع",
|
|
"targetHeader": "الهدف",
|
|
"permissionHeader": "الصلاحية",
|
|
"cancelBtn": "إلغاء",
|
|
"savingBtn": "جارٍ الحفظ...",
|
|
"updateHostBtn": "تحديث المضيف",
|
|
"addHostBtn": "إضافة مضيف"
|
|
},
|
|
"filterAuthVault": "قبو"
|
|
},
|
|
"nav": {
|
|
"history": "السجل",
|
|
"localTerminal": "المحطة المحلية",
|
|
"sshTools": "أدوات SSH",
|
|
"terminal": "الطرفية",
|
|
"macros": "وحدات الماكرو"
|
|
},
|
|
"sshTools": {
|
|
"broadcastInputPlaceholder": "اكتب هنا لبث ضغطات المفاتيح...",
|
|
"copyOnSelect": "يتم نسخ النص المحدد تلقائيًا",
|
|
"enableRightClickCopyPaste": "تمكين النسخ واللصق بالزر الأيمن",
|
|
"fillPassword": "املأ كلمة المرور",
|
|
"fillPasswordMissing": "لا توجد كلمة مرور محفوظة لـ {{count}} طرفية محددة",
|
|
"fillPasswordSuccess": "تم ملء كلمة المرور في {{count}} طرفية",
|
|
"keyRecordingTitle": "تسجيل المفاتيح",
|
|
"noTerminalTabsOpen": "لا توجد علامات تبويب طرفية مفتوحة",
|
|
"recordToTerminals": "التسجيل إلى الطرفيات",
|
|
"selectAll": "الكل",
|
|
"selectNone": "لا شيء",
|
|
"selectTerminalsAbove": "اختر الطرفيات أعلاه",
|
|
"settingsTitle": "الإعدادات",
|
|
"startRecording": "بدء التسجيل",
|
|
"stopRecording": "إيقاف التسجيل"
|
|
},
|
|
"keybindings": {
|
|
"copy": "تحديد النص",
|
|
"paste": "لصق",
|
|
"sendControlCode": "إرسال إشارة Ctrl+حرف",
|
|
"sendText": "أرسل رسالة نصية",
|
|
"controlCodeLabel": "خطاب",
|
|
"textLabel": "نص لإرساله",
|
|
"appendEnterLabel": "اضغط على زر الإدخال بعد الإرسال",
|
|
"clipboardPermissionNote": "قد يطلب منك بعض المتصفحات منح إذن الوصول إلى الحافظة عند الاستخدام الأول.",
|
|
"textRequired": "أدخل النص المراد إرساله",
|
|
"controlCodeRequired": "أدخل حرفًا واحدًا لرمز التحكم",
|
|
"builtIn": {
|
|
"copyCtrlC": "نسخ التحديد (Ctrl+C، فقط عند تحديد نص)",
|
|
"copyCtrlShiftC": "نسخ التحديد (Ctrl+Shift+C)",
|
|
"copyCmdC": "نسخ التحديد (Cmd+C)",
|
|
"pasteCtrlShiftV": "لصق من الحافظة (Ctrl+Shift+V)",
|
|
"ctrlW": "إرسال Ctrl+W إلى سطر الأوامر (محظور من إغلاق علامة تبويب المتصفح)",
|
|
"ctrlT": "إرسال Ctrl+T إلى سطر الأوامر (محظور من فتح علامة تبويب المتصفح)",
|
|
"ctrlN": "أرسل Ctrl+N إلى سطر الأوامر (محظور من فتح نافذة المتصفح)",
|
|
"ctrlQ": "أرسل Ctrl+Q إلى سطر الأوامر (تم منعك من إغلاق المتصفح)"
|
|
}
|
|
},
|
|
"macros": {
|
|
"title": "وحدات الماكرو",
|
|
"description": "قم بتشغيل سلسلة من الأوامر المحفوظة في طرفية، وتفاعل مع ما يرسله الخادم.",
|
|
"target": "الهدف",
|
|
"noTerminal": "لا يوجد طرفية مفتوحة",
|
|
"empty": "لا توجد وحدات ماكرو حتى الآن",
|
|
"emptyHint": "أنشئ ماكرو لأتمتة تدفق طرفية، مثل تسجيل الدخول أو إعادة تشغيل خدمة أو الإجابة على المطالبات.",
|
|
"create": "ماكرو جديد",
|
|
"back": "العودة إلى وحدات الماكرو",
|
|
"name": "الاسم",
|
|
"namePlaceholder": "أعد تشغيل خادم الويب",
|
|
"nameRequired": "قم بتسمية الماكرو قبل حفظه",
|
|
"descriptionLabel": "الوصف",
|
|
"descriptionPlaceholder": "ما يفعله هذا الماكرو (اختياري)",
|
|
"unsaved": "تغييرات غير محفوظة",
|
|
"save": "حفظ",
|
|
"saved": "تم حفظ الماكرو",
|
|
"saveFailed": "تعذر حفظ الماكرو",
|
|
"delete": "حذف",
|
|
"deleteTitle": "هل تريد حذف هذا الماكرو؟",
|
|
"deleteBody": "سيتم حذف \"{{name}}\" نهائياً. لا يمكن التراجع عن هذا الإجراء.",
|
|
"deleted": "تم حذف الماكرو",
|
|
"cancel": "إلغاء",
|
|
"run": "تشغيل",
|
|
"stop": "التوقف",
|
|
"running": "جري...",
|
|
"completed": "اللمسة النهائية الدقيقة",
|
|
"failed": "فشل الماكرو",
|
|
"loadFailed": "تعذر تحميل وحدات الماكرو",
|
|
"needTerminal": "افتح وقم بتوصيل طرفية أولاً",
|
|
"noSteps": "لا يحتوي هذا الماكرو على أي خطوات حتى الآن. أضف خطوة واحدة أدناه.",
|
|
"addStep": "خطوات إضافية",
|
|
"stepNumber": "الخطوة {{number}}",
|
|
"removeStep": "خطوة الإزالة",
|
|
"confirmRunTitle": "هل تريد تشغيل هذا الماكرو؟",
|
|
"confirmRunBody": "\"{{name}}\" سيرسل أوامر إلى {{host}}.",
|
|
"confirmRunAction": "تشغيل الماكرو",
|
|
"stepTypes": {
|
|
"send": {
|
|
"label": "إرسال الأمر",
|
|
"help": "يكتب النص في الطرفية، تمامًا كما لو كنت أنت من كتبته."
|
|
},
|
|
"wait": {
|
|
"label": "انتظر حتى يتم إخراج البيانات",
|
|
"help": "يتوقف مؤقتًا حتى يقوم الخادم بطباعة النص الذي تحدده، مثل مطالبة كلمة المرور."
|
|
},
|
|
"delay": {
|
|
"label": "يوقف",
|
|
"help": "ينتظر فترة زمنية محددة قبل الخطوة التالية."
|
|
},
|
|
"if": {
|
|
"label": "إذا احتوى الناتج",
|
|
"help": "يقوم بفحص كل ما طبعه الخادم حتى الآن، ثم يقوم بتشغيل أحد الفرعين."
|
|
},
|
|
"repeat": {
|
|
"label": "يكرر",
|
|
"help": "يقوم بتنفيذ الخطوات الموجودة بداخله لعدد محدد من المرات."
|
|
}
|
|
},
|
|
"send": {
|
|
"text": "أمر أو نص",
|
|
"textPlaceholder": "systemctl restart nginx",
|
|
"pressEnter": "اضغط على زر الإدخال بعد الإرسال",
|
|
"pressEnterHelp": "قم بإيقاف تشغيل هذا الخيار لكتابة نص دون إرساله."
|
|
},
|
|
"wait": {
|
|
"pattern": "انتظر حتى يحتوي الناتج على",
|
|
"patternPlaceholder": "كلمة مرور:",
|
|
"timeout": "الاستسلام بعد",
|
|
"onTimeout": "إذا لم يظهر أبداً",
|
|
"stop": "أوقف الماكرو",
|
|
"continue": "استمر على أي حال"
|
|
},
|
|
"delay": {
|
|
"duration": "انتظر"
|
|
},
|
|
"ifStep": {
|
|
"pattern": "إذا احتوى الناتج",
|
|
"patternPlaceholder": "نشط: نشط (قيد التشغيل)",
|
|
"then": "ثم افعل هذا",
|
|
"else": "وإلا فافعل هذا",
|
|
"emptyBranch": "لا توجد"
|
|
},
|
|
"repeat": {
|
|
"count": "عدد المرات",
|
|
"times": "أوقات"
|
|
},
|
|
"match": {
|
|
"useRegex": "مطابقة مع تعبير نمطي",
|
|
"useRegexHelp": "اترك هذا الخيار فارغًا لمطابقة النص تمامًا كما هو مكتوب.",
|
|
"invalidRegex": "هذا ليس تعبيرًا نمطيًا صالحًا، وسيتم مطابقته كنص عادي."
|
|
},
|
|
"seconds": "ثوانٍ",
|
|
"secondsShort": "{{count}}s"
|
|
},
|
|
"errors": {
|
|
"remoteServerRequired": "يلزم وجود خادم بعيد. قم بتوصيل خادم بعيد في الإعدادات لاستخدام نوع الاتصال هذا."
|
|
},
|
|
"plugin": {
|
|
"name": "SSH Terminal"
|
|
}
|
|
}
|