const translation = {
  common: {
    undo: 'تراجع',
    redo: 'إعادة',
    editing: 'تعديل',
    autoSaved: 'تم الحفظ تلقائيًا',
    unpublished: 'غير منشور',
    published: 'منشور',
    publish: 'نشر',
    update: 'تحديث',
    publishUpdate: 'نشر التحديث',
    run: 'تشغيل',
    running: 'جارٍ التشغيل',
    listening: 'الاستماع',
    chooseStartNodeToRun: 'اختر عقدة البداية للتشغيل',
    runAllTriggers: 'تشغيل جميع المشغلات',
    inRunMode: 'في وضع التشغيل',
    inPreview: 'في المعاينة',
    inPreviewMode: 'في وضع المعاينة',
    preview: 'معاينة',
    viewRunHistory: 'عرض سجل التشغيل',
    runHistory: 'سجل التشغيل',
    goBackToEdit: 'العودة إلى المحرر',
    conversationLog: 'سجل المحادثة',
    features: 'الميزات',
    featuresDescription: 'تحسين تجربة مستخدم تطبيق الويب',
    ImageUploadLegacyTip: 'يمكنك الآن إنشاء متغيرات نوع الملف في نموذج البداية. لن ندعم ميزة تحميل الصور في المستقبل. ',
    fileUploadTip: 'تم ترقية ميزات تحميل الصور إلى تحميل الملفات. ',
    featuresDocLink: 'تعرف على المزيد',
    debugAndPreview: 'معاينة',
    restart: 'إعادة تشغيل',
    currentDraft: 'المسودة الحالية',
    currentDraftUnpublished: 'المسودة الحالية غير منشورة',
    latestPublished: 'آخر منشور',
    publishedAt: 'تم النشر في',
    restore: 'استعادة',
    versionHistory: 'سجل الإصدارات',
    exitVersions: 'خروج من الإصدارات',
    runApp: 'تشغيل التطبيق',
    batchRunApp: 'تشغيل التطبيق دفعة واحدة',
    openInExplore: 'فتح في الاستكشاف',
    accessAPIReference: 'الوصول إلى مرجع API',
    embedIntoSite: 'تضمين في الموقع',
    addTitle: 'إضافة عنوان...',
    addDescription: 'إضافة وصف...',
    noVar: 'لا يوجد متغير',
    searchVar: 'بحث عن متغير',
    variableNamePlaceholder: 'اسم المتغير',
    setVarValuePlaceholder: 'تعيين متغير',
    needConnectTip: 'هذه الخطوة غير متصلة بأي شيء',
    maxTreeDepth: 'الحد الأقصى لـ {{depth}} عقد لكل فرع',
    needAdd: 'يجب إضافة عقدة {{node}}',
    needOutputNode: 'يجب إضافة عقدة الإخراج',
    needStartNode: 'يجب إضافة عقدة بدء واحدة على الأقل',
    needAnswerNode: 'يجب إضافة عقدة الإجابة',
    workflowProcess: 'عملية سير العمل',
    notRunning: 'لم يتم التشغيل بعد',
    previewPlaceholder: 'أدخل المحتوى في المربع أدناه لبدء تصحيح أخطاء Chatbot',
    effectVarConfirm: {
      title: 'إزالة المتغير',
      content: 'يتم استخدام المتغير في عقد أخرى. هل ما زلت تريد إزالته؟',
    },
    insertVarTip: 'اضغط على مفتاح \'/\' للإدراج بسرعة',
    processData: 'معالجة البيانات',
    input: 'إدخال',
    output: 'إخراج',
    jinjaEditorPlaceholder: 'اكتب \'/\' أو \'{\' لإدراج متغير',
    viewOnly: 'عرض فقط',
    showRunHistory: 'عرض سجل التشغيل',
    enableJinja: 'تمكين دعم قالب Jinja',
    learnMore: 'تعرف على المزيد',
    copy: 'نسخ',
    duplicate: 'تكرار',
    addBlock: 'إضافة عقدة',
    pasteHere: 'لصق هنا',
    pointerMode: 'وضع المؤشر',
    handMode: 'وضع اليد',
    exportImage: 'تصدير صورة',
    exportPNG: 'تصدير كـ PNG',
    exportJPEG: 'تصدير كـ JPEG',
    exportSVG: 'تصدير كـ SVG',
    currentView: 'العرض الحالي',
    currentWorkflow: 'سير العمل الحالي',
    moreActions: 'المزيد من الإجراءات',
    model: 'النموذج',
    workflowAsTool: 'سير العمل كأداة',
    configureRequired: 'التكوين مطلوب',
    configure: 'تكوين',
    manageInTools: 'إدارة في الأدوات',
    workflowAsToolTip: 'التكوين المطلوب للأداة بعد تحديث سير العمل.',
    workflowAsToolDisabledHint: 'انشر أحدث سير عمل وتأكد من وجود عقدة إدخال مستخدم متصلة قبل تكوينها كأداة.',
    viewDetailInTracingPanel: 'عرض التفاصيل',
    syncingData: 'مزامنة البيانات، بضع ثوان فقط.',
    importDSL: 'استيراد DSL',
    importDSLTip: 'سيتم استبدال المسودة الحالية.\nقم بتصدير سير العمل كنسخة احتياطية قبل الاستيراد.',
    backupCurrentDraft: 'نسخ احتياطي للمسودة الحالية',
    chooseDSL: 'اختر ملف DSL',
    overwriteAndImport: 'استبدال واستيراد',
    importFailure: 'فشل الاستيراد',
    importWarning: 'تحذير',
    importWarningDetails: 'قد يؤثر اختلاف إصدار DSL على ميزات معينة',
    importSuccess: 'تم الاستيراد بنجاح',
    parallelTip: {
      click: {
        title: 'نقرة',
        desc: ' للإضافة',
      },
      drag: {
        title: 'سحب',
        desc: ' للتوصيل',
      },
      limit: 'يقتصر التوازي على {{num}} فروع.',
      depthLimit: 'حد طبقة التداخل المتوازي {{num}} طبقات',
    },
    disconnect: 'قطع الاتصال',
    jumpToNode: 'القفز إلى هذه العقدة',
    addParallelNode: 'إضافة عقدة متوازية',
    parallel: 'توازي',
    branch: 'فرع',
    onFailure: 'عند الفشل',
    addFailureBranch: 'إضافة فرع فشل',
    loadMore: 'تحميل المزيد',
    noHistory: 'لا يوجد سجل',
    tagBound: 'عدد التطبيقات التي تستخدم هذه العلامة',
  },
  publishLimit: {
    startNodeTitlePrefix: 'قم بالترقية إلى',
    startNodeTitleSuffix: 'فتح مشغلات غير محدودة لكل سير عمل',
    startNodeDesc: 'لقد وصلت إلى الحد المسموح به وهو 2 مشغلات لكل سير عمل لهذه الخطة. قم بالترقية لنشر سير العمل هذا.',
  },
  env: {
    envPanelTitle: 'متغيرات البيئة',
    envDescription: 'يمكن استخدام متغيرات البيئة لتخزين المعلومات الخاصة وبيانات الاعتماد. فهي للقراءة فقط ويمكن فصلها عن ملف DSL أثناء التصدير.',
    envPanelButton: 'إضافة متغير',
    modal: {
      title: 'إضافة متغير بيئة',
      editTitle: 'تعديل متغير بيئة',
      type: 'النوع',
      name: 'الاسم',
      namePlaceholder: 'اسم المتغير',
      value: 'القيمة',
      valuePlaceholder: 'قيمة المتغير',
      secretTip: 'يستخدم لتحديد معلومات أو بيانات حساسة، مع إعدادات DSL المكونة لمنع التسرب.',
      description: 'الوصف',
      descriptionPlaceholder: 'وصف المتغير',
    },
    export: {
      title: 'تصدير متغيرات البيئة السرية؟',
      checkbox: 'تصدير القيم السرية',
      ignore: 'تصدير DSL',
      export: 'تصدير DSL مع القيم السرية ',
    },
  },
  globalVar: {
    title: 'متغيرات النظام',
    description: 'متغيرات النظام هي متغيرات عامة يمكن الإشارة إليها بواسطة أي عقدة دون توصيل عندما يكون النوع صحيحًا، مثل معرف المستخدم ومعرف سير العمل.',
    fieldsDescription: {
      conversationId: 'معرف المحادثة',
      dialogCount: 'عدد المحادثات',
      userId: 'معرف المستخدم',
      triggerTimestamp: 'توقيت بدء التطبيق',
      appId: 'معرف التطبيق',
      workflowId: 'معرف سير العمل',
      workflowRunId: 'معرف تشغيل سير العمل',
    },
  },
  sidebar: {
    exportWarning: 'تصدير النسخة المحفوظة الحالية',
    exportWarningDesc: 'سيؤدي هذا إلى تصدير النسخة المحفوظة الحالية من سير العمل الخاص بك. إذا كانت لديك تغييرات غير محفوظة في المحرر، يرجى حفظها أولاً باستخدام خيار التصدير في لوحة سير العمل.',
  },
  chatVariable: {
    panelTitle: 'متغيرات المحادثة',
    panelDescription: 'تستخدم متغيرات المحادثة لتخزين المعلومات التفاعلية التي يحتاج LLM إلى تذكرها، بما في ذلك سجل المحادثة والملفات التي تم تحميلها وتفضيلات المستخدم. هم للقراءة والكتابة. ',
    docLink: 'قم بزيارة مستنداتنا لمعرفة المزيد.',
    button: 'إضافة متغير',
    modal: {
      title: 'إضافة متغير محادثة',
      editTitle: 'تعديل متغير محادثة',
      name: 'الاسم',
      namePlaceholder: 'اسم المتغير',
      type: 'النوع',
      value: 'القيمة الافتراضية',
      valuePlaceholder: 'القيمة الافتراضية، اتركها فارغة لعدم التعيين',
      description: 'الوصف',
      descriptionPlaceholder: 'وصف المتغير',
      editInJSON: 'تعديل في JSON',
      oneByOne: 'إضافة واحدة تلو الأخرى',
      editInForm: 'تعديل في النموذج',
      arrayValue: 'القيمة',
      addArrayValue: 'إضافة قيمة',
      objectKey: 'مفتاح',
      objectType: 'النوع',
      objectValue: 'القيمة الافتراضية',
    },
    storedContent: 'المحتوى المخزن',
    updatedAt: 'تم التحديث في ',
  },
  changeHistory: {
    title: 'سجل التغييرات',
    placeholder: 'لم تقم بتغيير أي شيء بعد',
    clearHistory: 'مسح السجل',
    hint: 'تلميح',
    hintText: 'يتم تتبع إجراءات التحرير الخاصة بك في سجل التغييرات، والذي يتم تخزينه على جهازك طوال مدة هذه الجلسة. سيتم مسح هذا السجل عند مغادرة المحرر.',
    stepBackward_one: '{{count}} خطوة إلى الوراء',
    stepBackward_other: '{{count}} خطوات إلى الوراء',
    stepForward_one: '{{count}} خطوة إلى الأمام',
    stepForward_other: '{{count}} خطوات إلى الأمام',
    sessionStart: 'بدء الجلسة',
    currentState: 'الحالة الحالية',
    nodeTitleChange: 'تم تغيير عنوان العقدة',
    nodeDescriptionChange: 'تم تغيير وصف العقدة',
    nodeDragStop: 'تم نقل العقدة',
    nodeChange: 'تم تغيير العقدة',
    nodeConnect: 'تم توصيل العقدة',
    nodePaste: 'تم لصق العقدة',
    nodeDelete: 'تم حذف العقدة',
    nodeAdd: 'تم إضافة العقدة',
    nodeResize: 'تم تغيير حجم العقدة',
    noteAdd: 'تم إضافة ملاحظة',
    noteChange: 'تم تغيير الملاحظة',
    noteDelete: 'تم حذف الملاحظة',
    edgeDelete: 'تم قطع اتصال العقدة',
  },
  errorMsg: {
    fieldRequired: '{{field}} مطلوب',
    rerankModelRequired: 'مطلوب تكوين نموذج Rerank',
    authRequired: 'الترخيص مطلوب',
    invalidJson: '{{field}} هو JSON غير صالح',
    fields: {
      variable: 'اسم المتغير',
      variableValue: 'قيمة المتغير',
      code: 'الكود',
      model: 'النموذج',
      rerankModel: 'نموذج Rerank المكون',
      visionVariable: 'متغير الرؤية',
    },
    invalidVariable: 'متغير غير صالح',
    noValidTool: '{{field}} لا توجد أداة صالحة محددة',
    toolParameterRequired: '{{field}}: المعلمة [{{param}}] مطلوبة',
    startNodeRequired: 'الرجاء إضافة عقدة البداية أولاً قبل {{operation}}',
  },
  error: {
    startNodeRequired: 'الرجاء إضافة عقدة البداية أولاً قبل {{operation}}',
    operations: {
      connectingNodes: 'توصيل العقد',
      addingNodes: 'إضافة العقد',
      modifyingWorkflow: 'تعديل سير العمل',
      updatingWorkflow: 'تحديث سير العمل',
    },
  },
  singleRun: {
    testRun: 'تشغيل اختياري',
    startRun: 'بدء التشغيل',
    preparingDataSource: 'تحضير مصدر البيانات',
    reRun: 'إعادة التشغيل',
    running: 'جارٍ التشغيل',
    testRunIteration: 'تكرار تشغيل الاختبار',
    back: 'خلف',
    iteration: 'تكرار',
    loop: 'حلقة',
  },
  tabs: {
    'searchBlock': 'بحث عن عقدة',
    'start': 'البداية',
    'blocks': 'العقد',
    'searchTool': 'أداة البحث',
    'searchTrigger': 'بحث عن المشغلات...',
    'allTriggers': 'كل المشغلات',
    'tools': 'الأدوات',
    'allTool': 'الكل',
    'plugin': 'الإضافة',
    'customTool': 'مخصص',
    'workflowTool': 'سير العمل',
    'question-understand': 'فهم السؤال',
    'logic': 'المنطق',
    'transform': 'تحويل',
    'utilities': 'الأدوات المساعدة',
    'noResult': 'لم يتم العثور على تطابق',
    'noPluginsFound': 'لم يتم العثور على إضافات',
    'requestToCommunity': 'طلبات للمجتمع',
    'agent': 'استراتيجية الوكيل',
    'allAdded': 'تمت إضافة الكل',
    'addAll': 'إضافة الكل',
    'sources': 'المصادر',
    'searchDataSource': 'بحث في مصدر البيانات',
    'featuredTools': 'المميزة',
    'showMoreFeatured': 'عرض المزيد',
    'showLessFeatured': 'عرض أقل',
    'installed': 'مثبت',
    'pluginByAuthor': 'بواسطة {{author}}',
    'usePlugin': 'حدد الأداة',
    'hideActions': 'إخفاء الأدوات',
    'noFeaturedPlugins': 'اكتشف المزيد من الأدوات في السوق',
    'noFeaturedTriggers': 'اكتشف المزيد من المشغلات في السوق',
    'startDisabledTip': 'تتعارض عقدة المشغل وعقدة إدخال المستخدم.',
  },
  blocks: {
    'start': 'إدخال المستخدم',
    'originalStartNode': 'عقدة البداية الأصلية',
    'end': 'الإخراج',
    'answer': 'إجابة',
    'llm': 'LLM',
    'knowledge-retrieval': 'استرجاع المعرفة',
    'question-classifier': 'مصنف الأسئلة',
    'if-else': 'IF/ELSE',
    'code': 'كود',
    'template-transform': 'قالب',
    'http-request': 'طلب HTTP',
    'variable-assigner': 'مجمع المتغيرات',
    'variable-aggregator': 'مجمع المتغيرات',
    'assigner': 'معين المتغيرات',
    'iteration-start': 'بداية التكرار',
    'iteration': 'تكرار',
    'parameter-extractor': 'مستخرج المعلمات',
    'document-extractor': 'مستخرج المستندات',
    'list-operator': 'مشغل القائمة',
    'agent': 'وكيل',
    'loop-start': 'بداية الحلقة',
    'loop': 'حلقة',
    'loop-end': 'خروج من الحلقة',
    'knowledge-index': 'قاعدة المعرفة',
    'datasource': 'مصدر البيانات',
    'trigger-schedule': 'جدولة المشغل',
    'trigger-webhook': 'مشغل الويب هوك',
    'trigger-plugin': 'مشغل الإضافة',
  },
  customWebhook: 'ويب هوك مخصص',
  blocksAbout: {
    'start': 'تحديد المعلمات الأولية لبدء سير العمل',
    'end': 'تحديد الإخراج ونوع النتيجة لسير العمل',
    'answer': 'تحديد محتوى الرد لمحادثة الدردشة',
    'llm': 'استدعاء نماذج اللغة الكبيرة للإجابة على الأسئلة أو معالجة اللغة الطبيعية',
    'knowledge-retrieval': 'يسمح لك بالاستعلام عن محتوى النص المتعلق بأسئلة المستخدم من المعرفة',
    'question-classifier': 'تحديد شروط تصنيف أسئلة المستخدم، يمكن لـ LLM تحديد كيفية تقدم المحادثة بناءً على وصف التصنيف',
    'if-else': 'يسمح لك بتقسيم سير العمل إلى فرعين بناءً على شروط if/else',
    'code': 'تنفيذ قطعة من كود Python أو NodeJS لتنفيذ منطق مخصص',
    'template-transform': 'تحويل البيانات إلى سلسلة باستخدام بنية قالب Jinja',
    'http-request': 'السماح بإرسال طلبات الخادم عبر بروتوكول HTTP',
    'variable-assigner': 'تجميع متغيرات متعددة الفروع في متغير واحد للتكوين الموحد للعقد النهائية.',
    'assigner': 'تُستخدم عقدة تعيين المتغير لتعيين قيم للمتغيرات القابلة للكتابة (مثل متغيرات المحادثة).',
    'variable-aggregator': 'تجميع متغيرات متعددة الفروع في متغير واحد للتكوين الموحد للعقد النهائية.',
    'iteration': 'تنفيذ خطوات متعددة على كائن قائمة حتى يتم إخراج جميع النتائج.',
    'loop': 'تنفيذ حلقة من المنطق حتى يتم استيفاء شروط الإنهاء أو الوصول إلى الحد الأقصى لعدد الحلقات.',
    'loop-end': 'يعادل "break". هذه العقدة لا تحتوي على عناصر تكوين. عندما يصل جسم الحلقة إلى هذه العقدة، تنتهي الحلقة.',
    'parameter-extractor': 'استخدم LLM لاستخراج المعلمات الهيكلية من اللغة الطبيعية لاستدعاء الأدوات أو طلبات HTTP.',
    'document-extractor': 'تستخدم لتحليل المستندات التي تم تحميلها إلى محتوى نصي يسهل فهمه بواسطة LLM.',
    'list-operator': 'تستخدم لتصفية أو فرز محتوى المصفوفة.',
    'agent': 'استدعاء نماذج اللغة الكبيرة للإجابة على الأسئلة أو معالجة اللغة الطبيعية',
    'knowledge-index': 'حول قاعدة المعرفة',
    'datasource': 'حول مصدر البيانات',
    'trigger-schedule': 'مشغل سير عمل قائم على الوقت يبدأ سير العمل وفقًا لجدول زمني',
    'trigger-webhook': 'يتلقى مشغل Webhook دفعات HTTP من أنظمة خارجية لتشغيل سير العمل تلقائيًا.',
    'trigger-plugin': 'مشغل تكامل تابع لجهة خارجية يبدأ سير العمل من أحداث النظام الأساسي الخارجي',
  },
  difyTeam: 'فريق Dify',
  operator: {
    zoomIn: 'تكبير',
    zoomOut: 'تصغير',
    zoomTo50: 'تكبير إلى 50%',
    zoomTo100: 'تكبير إلى 100%',
    zoomToFit: 'ملاءمة الشاشة',
    alignNodes: 'محاذاة العقد',
    alignLeft: 'يسار',
    alignCenter: 'وسط',
    alignRight: 'يمين',
    alignTop: 'أعلى',
    alignMiddle: 'وسط',
    alignBottom: 'أسفل',
    vertical: 'عمودي',
    horizontal: 'أفقي',
    distributeHorizontal: 'توزيع أفقي',
    distributeVertical: 'توزيع عمودي',
    selectionAlignment: 'محاذاة التحديد',
  },
  variableReference: {
    noAvailableVars: 'لا توجد متغيرات متاحة',
    noVarsForOperation: 'لا توجد متغيرات متاحة للتعيين مع العملية المحددة.',
    noAssignedVars: 'لا توجد متغيرات معينة متاحة',
    assignedVarsDescription: 'يجب أن تكون المتغيرات المعينة متغيرات قابلة للكتابة، مثل ',
    conversationVars: 'متغيرات المحادثة',
  },
  panel: {
    userInputField: 'حقل إدخال المستخدم',
    changeBlock: 'تغيير العقدة',
    helpLink: 'عرض المستندات',
    openWorkflow: 'فتح سير العمل',
    about: 'حول',
    createdBy: 'تم الإنشاء بواسطة ',
    nextStep: 'الخطوة التالية',
    addNextStep: 'إضافة الخطوة التالية في هذا سير العمل',
    selectNextStep: 'تحديد الخطوة التالية',
    runThisStep: 'تشغيل هذه الخطوة',
    checklist: 'قائمة المراجعة',
    checklistTip: 'تأكد من حل جميع المشكلات قبل النشر',
    checklistResolved: 'تم حل جميع المشكلات',
    goTo: 'الذهاب إلى',
    startNode: 'عقدة البداية',
    organizeBlocks: 'تنظيم العقد',
    change: 'تغيير',
    optional: '(اختياري)',
    maximize: 'تكبير القماش',
    minimize: 'خروج من وضع ملء الشاشة',
    scrollToSelectedNode: 'تمرير إلى العقدة المحددة',
    optional_and_hidden: '(اختياري ومخفي)',
  },
  nodes: {
    common: {
      outputVars: 'متغيرات الإخراج',
      insertVarTip: 'إدراج متغير',
      memory: {
        memory: 'الذاكرة',
        memoryTip: 'إعدادات ذاكرة الدردشة',
        windowSize: 'حجم النافذة',
        conversationRoleName: 'اسم دور المحادثة',
        user: 'بادئة المستخدم',
        assistant: 'بادئة المساعد',
      },
      memories: {
        title: 'الذكريات',
        tip: 'ذاكرة الدردشة',
        builtIn: 'مدمج',
      },
      errorHandle: {
        title: 'معالجة الأخطاء',
        tip: 'استراتيجية التعامل مع الاستثناءات، يتم تشغيلها عندما تواجه العقدة استثناءً.',
        none: {
          title: 'لا شيء',
          desc: 'ستتوقف العقدة عن العمل في حالة حدوث استثناء ولم يتم التعامل معه',
        },
        defaultValue: {
          title: 'القيم الافتراضية',
          desc: 'عند حدوث خطأ، حدد محتوى إخراج ثابت.',
          tip: 'عند الخطأ، سيعود القيمة أدناه.',
          inLog: 'استثناء العقدة، الإخراج وفقًا للقيم الافتراضية.',
          output: 'إخراج القيمة الافتراضية',
        },
        failBranch: {
          title: 'فرع الفشل',
          desc: 'عند حدوث خطأ، سيتم تنفيذ فرع الاستثناء',
          customize: 'انتقل إلى القماش لتخصيص منطق فرع الفشل.',
          customizeTip: 'عند تنشيط فرع الفشل، لن تؤدي الاستثناءات التي تطرحها العقد إلى إنهاء العملية. بدلاً من ذلك، سيتم تنفيذ فرع الفشل المحدد مسبقًا تلقائيًا، مما يسمح لك بتقديم رسائل خطأ، وتقارير، وإصلاحات، أو اتخاذ إجراءات تخطي بمرونة.',
          inLog: 'استثناء العقدة، سيتم تلقائيًا تنفيذ فرع الفشل. سيعيد إخراج العقدة نوع خطأ ورسالة خطأ ويمررهما إلى المصب.',
        },
        partialSucceeded: {
          tip: 'هناك {{num}} عقد في العملية تعمل بشكل غير طبيعي، يرجى الانتقال إلى التتبع للتحقق من السجلات.',
        },
      },
      retry: {
        retry: 'إعادة المحاولة',
        retryOnFailure: 'إعادة المحاولة عند الفشل',
        maxRetries: 'الحد الأقصى لإعادة المحاولة',
        retryInterval: 'فاصل إعادة المحاولة',
        retryTimes: 'أعد المحاولة {{times}} مرات عند الفشل',
        retrying: 'جارٍ إعادة المحاولة...',
        retrySuccessful: 'تمت إعادة المحاولة بنجاح',
        retryFailed: 'فشلت إعادة المحاولة',
        retryFailedTimes: 'فشلت {{times}} إعادة المحاولة',
        times: 'مرات',
        ms: 'مللي ثانية',
        retries: '{{num}} إعادة محاولة',
      },
      typeSwitch: {
        input: 'قيمة الإدخال',
        variable: 'استخدام متغير',
      },
      inputVars: 'متغيرات الإدخال',
      pluginNotInstalled: 'الإضافة غير مثبتة',
    },
    start: {
      required: 'مطلوب',
      inputField: 'حقل الإدخال',
      builtInVar: 'المتغيرات المدمجة',
      outputVars: {
        query: 'إدخال المستخدم',
        memories: {
          des: 'سجل المحادثة',
          type: 'نوع الرسالة',
          content: 'محتوى الرسالة',
        },
        files: 'قائمة الملفات',
      },
      noVarTip: 'تعيين المدخلات التي يمكن استخدامها في سير العمل',
    },
    end: {
      outputs: 'المخرجات',
      output: {
        type: 'نوع الإخراج',
        variable: 'متغير الإخراج',
      },
      type: {
        'none': 'لا شيء',
        'plain-text': 'نص عادي',
        'structured': 'منظم',
      },
    },
    answer: {
      answer: 'إجابة',
      outputVars: 'متغيرات الإخراج',
    },
    llm: {
      model: 'النموذج',
      variables: 'المتغيرات',
      context: 'السياق',
      contextTooltip: 'يمكنك استيراد المعرفة كسياق',
      notSetContextInPromptTip: 'لتمكين ميزة السياق، يرجى ملء متغير السياق في PROMPT.',
      prompt: 'المطالبة',
      roleDescription: {
        system: 'أعط تعليمات عالية المستوى للمحادثة',
        user: 'قدم تعليمات أو استفسارات أو أي إدخال نصي للنموذج',
        assistant: 'استجابات النموذج بناءً على رسائل المستخدم',
      },
      addMessage: 'إضافة رسالة',
      vision: 'الرؤية',
      files: 'الملفات',
      resolution: {
        name: 'الدقة',
        high: 'عالية',
        low: 'منخفضة',
      },
      outputVars: {
        output: 'إنشاء محتوى',
        reasoning_content: 'محتوى التفكير',
        usage: 'معلومات استخدام النموذج',
      },
      singleRun: {
        variable: 'متغير',
      },
      sysQueryInUser: 'sys.query في رسالة المستخدم مطلوب',
      reasoningFormat: {
        title: 'تمكين فصل علامة التفكير',
        tagged: 'الاحتفاظ بعلامات التفكير',
        separated: 'فصل علامات التفكير',
        tooltip: 'استخراج المحتوى من علامات التفكير وتخزينه في حقل content_reasoning.',
      },
      jsonSchema: {
        title: 'مخطط الإخراج المنظم',
        instruction: 'تعليمات',
        promptTooltip: 'تحويل الوصف النصي إلى هيكل مخطط JSON موحد.',
        promptPlaceholder: 'صف مخطط JSON الخاص بك ...',
        generate: 'توليد',
        import: 'استيراد من JSON',
        generateJsonSchema: 'توليد مخطط JSON',
        generationTip: 'يمكنك استخدام اللغة الطبيعية لإنشاء مخطط JSON بسرعة.',
        generating: 'توليد مخطط JSON ...',
        generatedResult: 'النتائج المولدة',
        resultTip: 'إليك النتائج المولدة. إذا لم تكن راضيًا، يمكنك العودة وتعديل مطالبتك.',
        back: 'رجوع',
        regenerate: 'إعادة التوليد',
        apply: 'تطبيق',
        doc: 'معرفة المزيد عن الإخراج المنظم',
        resetDefaults: 'إعادة تعيين',
        required: 'مطلوب',
        addField: 'إضافة حقل',
        addChildField: 'إضافة حقل فرعي',
        showAdvancedOptions: 'عرض الخيارات المتقدمة',
        stringValidations: 'التحقق من صحة السلسلة',
        fieldNamePlaceholder: 'اسم الحقل',
        descriptionPlaceholder: 'إضافة وصف',
        warningTips: {
          saveSchema: 'الرجاء إنهاء تحرير الحقل الحالي قبل حفظ المخطط',
        },
      },
    },
    knowledgeRetrieval: {
      queryVariable: 'متغير الاستعلام',
      knowledge: 'المعرفة',
      outputVars: {
        output: 'استرجاع البيانات المقسمة',
        content: 'المحتوى المقسم',
        title: 'العنوان المقسم',
        icon: 'أيقونة مقسمة',
        url: 'عنوان URL المقسم',
        metadata: 'بيانات وصفية أخرى',
        files: 'الملفات المسترجعة',
      },
      metadata: {
        title: 'تصفية البيانات الوصفية',
        tip: 'تصفية البيانات الوصفية هي عملية استخدام سمات البيانات الوصفية (مثل العلامات، الفئات، أو أذونات الوصول) لتحسين والتحكم في استرجاع المعلومات ذات الصلة داخل النظام.',
        options: {
          disabled: {
            title: 'معطل',
            subTitle: 'عدم تمكين تصفية البيانات الوصفية',
          },
          automatic: {
            title: 'تلقائي',
            subTitle: 'إنشاء شروط تصفية البيانات الوصفية تلقائيًا بناءً على استعلام المستخدم',
            desc: 'إنشاء شروط تصفية البيانات الوصفية تلقائيًا بناءً على متغير الاستعلام',
          },
          manual: {
            title: 'يدوي',
            subTitle: 'إضافة شروط تصفية البيانات الوصفية يدويًا',
          },
        },
        panel: {
          title: 'شروط تصفية البيانات الوصفية',
          conditions: 'الشروط',
          add: 'إضافة شرط',
          search: 'بحث في البيانات الوصفية',
          placeholder: 'أدخل قيمة',
          datePlaceholder: 'اختر وقتًا...',
          select: 'حدد متغيرًا...',
        },
      },
      queryText: 'نص الاستعلام',
      queryAttachment: 'استعلام الصور',
    },
    http: {
      inputVars: 'متغيرات الإدخال',
      api: 'API',
      apiPlaceholder: 'أدخل URL، واكتب \'/\' لإدراج متغير',
      extractListPlaceholder: 'أدخل فهرس عنصر القائمة، واكتب \'/\' لإدراج متغير',
      notStartWithHttp: 'يجب أن يبدأ API بـ http:// أو https://',
      key: 'المفتاح',
      type: 'النوع',
      value: 'القيمة',
      bulkEdit: 'تحرير مجمع',
      keyValueEdit: 'تحرير المفتاح والقيمة',
      headers: 'الرؤوس',
      params: 'المعلمات',
      body: 'الجسم',
      binaryFileVariable: 'متغير ملف ثنائي',
      outputVars: {
        body: 'محتوى الاستجابة',
        statusCode: 'رمز حالة الاستجابة',
        headers: 'قائمة رؤوس الاستجابة JSON',
        files: 'قائمة الملفات',
      },
      authorization: {
        'authorization': 'تخويل',
        'authorizationType': 'نوع التخويل',
        'no-auth': 'لا شيء',
        'api-key': 'مفتاح API',
        'auth-type': 'نوع المصادقة',
        'basic': 'أساسي',
        'bearer': 'Bearer',
        'custom': 'مخصص',
        'api-key-title': 'مفتاح API',
        'header': 'Header',
      },
      insertVarPlaceholder: 'اكتب \'/\' لإدراج متغير',
      timeout: {
        title: 'المهلة',
        connectLabel: 'مهلة الاتصال',
        connectPlaceholder: 'أدخل مهلة الاتصال بالثواني',
        readLabel: 'مهلة القراءة',
        readPlaceholder: 'أدخل مهلة القراءة بالثواني',
        writeLabel: 'مهلة الكتابة',
        writePlaceholder: 'أدخل مهلة الكتابة بالثواني',
      },
      curl: {
        title: 'استيراد من cURL',
        placeholder: 'لصق سلسلة cURL هنا',
      },
      verifySSL: {
        title: 'التحقق من شهادة SSL',
        warningTooltip: 'لا يوصى بتعطيل التحقق من SSL لبيئات الإنتاج. يجب استخدامه فقط في التطوير أو الاختبار، حيث إنه يجعل الاتصال عرضة لتهديدات الأمان مثل هجمات الوسيط.',
      },
    },
    code: {
      inputVars: 'متغيرات الإدخال',
      outputVars: 'متغيرات الإخراج',
      advancedDependencies: 'التبعيات المتقدمة',
      advancedDependenciesTip: 'أضف بعض التبعيات المحملة مسبقًا التي تستغرق وقتًا أطول للاستهلاك أو ليست افتراضية مضمنة هنا',
      searchDependencies: 'بحث في التبعيات',
      syncFunctionSignature: 'مزامنة توقيع الوظيفة للكود',
    },
    templateTransform: {
      inputVars: 'متغيرات الإدخال',
      code: 'الكود',
      codeSupportTip: 'يدعم Jinja2 فقط',
      outputVars: {
        output: 'المحتوى المحول',
      },
    },
    ifElse: {
      if: 'If',
      else: 'Else',
      elseDescription: 'يستخدم لتحديد المنطق الذي ينبغي تنفيذه عندما لا يتم استيفاء شرط if.',
      and: 'و',
      or: 'أو',
      operator: 'المشغل',
      notSetVariable: 'الرجاء تعيين المتغير أولاً',
      comparisonOperator: {
        'contains': 'يحتوي على',
        'not contains': 'لا يحتوي على',
        'start with': 'يبدأ بـ',
        'end with': 'ينتهي بـ',
        'is': 'هو',
        'is not': 'ليس',
        'empty': 'فارغ',
        'not empty': 'ليس فارغًا',
        'null': 'null',
        'not null': 'ليس null',
        'in': 'في',
        'not in': 'ليس في',
        'all of': 'كل من',
        'exists': 'موجود',
        'not exists': 'غير موجود',
        'before': 'قبل',
        'after': 'بعد',
      },
      optionName: {
        image: 'صورة',
        doc: 'مستند',
        audio: 'صوت',
        video: 'فيديو',
        localUpload: 'تحميل محلي',
        url: 'URL',
      },
      enterValue: 'أدخل قيمة',
      addCondition: 'إضافة شرط',
      conditionNotSetup: 'لم يتم إعداد الشرط',
      selectVariable: 'حدد متغيرًا...',
      addSubVariable: 'متغير فرعي',
      select: 'تحديد',
    },
    variableAssigner: {
      title: 'تعيين المتغيرات',
      outputType: 'نوع الإخراج',
      varNotSet: 'المتغير غير معين',
      noVarTip: 'أضف المتغيرات التي سيتم تعيينها',
      type: {
        string: 'سلسلة',
        number: 'رقم',
        object: 'كائن',
        array: 'مصفوفة',
      },
      aggregationGroup: 'مجموعة التجميع',
      aggregationGroupTip: 'يسمح تمكين هذه الميزة لمجمع المتغيرات بتجميع مجموعات متعددة من المتغيرات.',
      addGroup: 'إضافة مجموعة',
      outputVars: {
        varDescribe: 'إخراج {{groupName}}',
      },
      setAssignVariable: 'تعيين متغير التعيين',
    },
    assigner: {
      'assignedVariable': 'المتغير المعين',
      'varNotSet': 'المتغير غير معين',
      'variables': 'المتغيرات',
      'noVarTip': 'انقر على زر "+" لإضافة متغيرات',
      'writeMode': 'وضع الكتابة',
      'writeModeTip': 'وضع الإلحاق: متاح لمتغيرات المصفوفة فقط.',
      'over-write': 'الكتابة الفوقية',
      'append': 'إلحاق',
      'plus': 'إضافة',
      'clear': 'مسح',
      'setVariable': 'تعيين المتغير',
      'selectAssignedVariable': 'حدد المتغير المعين...',
      'setParameter': 'تعيين المعلمة...',
      'operations': {
        'title': 'عملية',
        'over-write': 'الكتابة الفوقية',
        'overwrite': 'الكتابة الفوقية',
        'set': 'تعيين',
        'clear': 'مسح',
        'extend': 'تمديد',
        'append': 'إلحاق',
        'remove-first': 'إزالة الأول',
        'remove-last': 'إزالة الأخير',
        '+=': '+=',
        '-=': '-=',
        '*=': '*=',
        '/=': '/=',
      },
      'variable': 'متغير',
      'noAssignedVars': 'لا توجد متغيرات معينة متاحة',
      'assignedVarsDescription': 'يجب أن تكون المتغيرات المعينة متغيرات قابلة للكتابة، مثل متغيرات المحادثة.',
    },
    tool: {
      authorize: 'تخويل',
      inputVars: 'متغيرات الإدخال',
      settings: 'الإعدادات',
      insertPlaceholder1: 'اكتب أو اضغط',
      insertPlaceholder2: 'لإدراج متغير',
      outputVars: {
        text: 'محتوى تم إنشاؤه بواسطة الأداة',
        files: {
          title: 'ملفات تم إنشاؤها بواسطة الأداة',
          type: 'نوع الدعم. الآن يدعم الصورة فقط',
          transfer_method: 'طريقة النقل. القيمة هي remote_url أو local_file',
          url: 'رابط الصورة',
          upload_file_id: 'معرف ملف التحميل',
        },
        json: 'json تم إنشاؤه بواسطة الأداة',
      },
    },
    triggerPlugin: {
      authorized: 'مخول',
      notConfigured: 'لم يتم التكوين',
      notAuthorized: 'غير مخول',
      selectSubscription: 'تصديق الاشتراك',
      availableSubscriptions: 'الاشتراكات المتاحة',
      addSubscription: 'إضافة اشتراك جديد',
      removeSubscription: 'إزالة الاشتراك',
      subscriptionRemoved: 'تمت إزالة الاشتراك بنجاح',
      error: 'خطأ',
      configuration: 'التكوين',
      remove: 'إزالة',
      or: 'أو',
      useOAuth: 'استخدام OAuth',
      useApiKey: 'استخدام مفتاح API',
      authenticationFailed: 'فشلت المصادقة',
      authenticationSuccess: 'نجحت المصادقة',
      oauthConfigFailed: 'فشل تكوين OAuth',
      configureOAuthClient: 'تكوين عميل OAuth',
      oauthClientDescription: 'تكوين بيانات اعتماد عميل OAuth لتمكين المصادقة',
      oauthClientSaved: 'تم حفظ تكوين عميل OAuth بنجاح',
      configureApiKey: 'تكوين مفتاح API',
      apiKeyDescription: 'تكوين بيانات اعتماد مفتاح API للمصادقة',
      apiKeyConfigured: 'تم تكوين مفتاح API بنجاح',
      configurationFailed: 'فشل التكوين',
      failedToStart: 'فشل بدء تدفق المصادقة',
      credentialsVerified: 'تم التحقق من بيانات الاعتماد بنجاح',
      credentialVerificationFailed: 'فشل التحقق من بيانات الاعتماد',
      verifyAndContinue: 'تحقق ومتابعة',
      configureParameters: 'تكوين المعلمات',
      parametersDescription: 'تكوين معلمات المشغل والخصائص',
      configurationComplete: 'اكتمل التكوين',
      configurationCompleteDescription: 'تم تكوين المشغل الخاص بك بنجاح',
      configurationCompleteMessage: 'اكتمل تكوين المشغل الخاص بك الآن وهو جاهز للاستخدام.',
      parameters: 'المعلمات',
      properties: 'الخصائص',
      propertiesDescription: 'خصائص تكوين إضافية لهذا المشغل',
      noConfigurationRequired: 'لا يلزم تكوين إضافي لهذا المشغل.',
      subscriptionName: 'اسم الاشتراك',
      subscriptionNameDescription: 'أدخل اسمًا فريدًا لاشتراك المشغل هذا',
      subscriptionNamePlaceholder: 'أدخل اسم الاشتراك...',
      subscriptionNameRequired: 'اسم الاشتراك مطلوب',
      subscriptionRequired: 'الاشتراك مطلوب',
    },
    questionClassifiers: {
      model: 'النموذج',
      inputVars: 'متغيرات الإدخال',
      outputVars: {
        className: 'اسم الفئة',
        usage: 'معلومات استخدام النموذج',
      },
      class: 'فئة',
      classNamePlaceholder: 'اكتب اسم الفئة الخاصة بك',
      advancedSetting: 'إعدادات متقدمة',
      topicName: 'اسم الموضوع',
      topicPlaceholder: 'اكتب اسم الموضوع الخاص بك',
      addClass: 'إضافة فئة',
      instruction: 'تعليمات',
      instructionTip: 'أدخل تعليمات إضافية لمساعدة مصنف الأسئلة على فهم كيفية تصنيف الأسئلة بشكل أفضل.',
      instructionPlaceholder: 'اكتب تعليماتك',
    },
    parameterExtractor: {
      inputVar: 'متغير الإدخال',
      outputVars: {
        isSuccess: 'هو نجاح. عند النجاح تكون القيمة 1، عند الفشل تكون القيمة 0.',
        errorReason: 'سبب الخطأ',
        usage: 'معلومات استخدام النموذج',
      },
      extractParameters: 'استخراج المعلمات',
      importFromTool: 'استيراد من الأدوات',
      addExtractParameter: 'إضافة معلمة استخراج',
      addExtractParameterContent: {
        name: 'الاسم',
        namePlaceholder: 'اسم معلمة الاستخراج',
        type: 'النوع',
        typePlaceholder: 'نوع معلمة الاستخراج',
        description: 'الوصف',
        descriptionPlaceholder: 'وصف معلمة الاستخراج',
        required: 'مطلوب',
        requiredContent: 'مطلوب يستخدم فقط كمرجع لاستدلال النموذج، وليس للتحقق الإلزامي من إخراج المعلمة.',
      },
      extractParametersNotSet: 'لم يتم إعداد استخراج المعلمات',
      instruction: 'تعليمات',
      instructionTip: 'أدخل تعليمات إضافية لمساعدة مستخرج المعلمات على فهم كيفية استخراج المعلمات.',
      advancedSetting: 'إعدادات متقدمة',
      reasoningMode: 'وضع التفكير',
      reasoningModeTip: 'يمكنك اختيار وضع التفكير المناسب بناءً على قدرة النموذج على الاستجابة للتعليمات لاستدعاء الوظيفة أو المطالبات.',
    },
    iteration: {
      deleteTitle: 'حذف عقدة التكرار؟',
      deleteDesc: 'سيؤدي حذف عقدة التكرار إلى حذف جميع العقد الفرعية',
      input: 'إدخال',
      output: 'متغيرات الإخراج',
      iteration_one: '{{count}} تكرار',
      iteration_other: '{{count}} تكرارات',
      currentIteration: 'التكرار الحالي',
      comma: '، ',
      error_one: '{{count}} خطأ',
      error_other: '{{count}} أخطاء',
      parallelMode: 'الوضع المتوازي',
      parallelModeUpper: 'الوضع المتوازي',
      parallelModeEnableTitle: 'تم تمكين الوضع المتوازي',
      parallelModeEnableDesc: 'في الوضع المتوازي، تدعم المهام داخل التكرارات التنفيذ المتوازي. يمكنك تكوين هذا في لوحة الخصائص على اليمين.',
      parallelPanelDesc: 'في الوضع المتوازي، تدعم المهام في التكرار التنفيذ المتوازي.',
      MaxParallelismTitle: 'الحد الأقصى للتوازي',
      MaxParallelismDesc: 'يتم استخدام الحد الأقصى للتوازي للتحكم في عدد المهام التي يتم تنفيذها في وقت واحد في تكرار واحد.',
      errorResponseMethod: 'طريقة استجابة الخطأ',
      ErrorMethod: {
        operationTerminated: 'تم الإنهاء',
        continueOnError: 'متابعة عند الخطأ',
        removeAbnormalOutput: 'إزالة الإخراج غير الطبيعي',
      },
      answerNodeWarningDesc: 'تحذير الوضع المتوازي: قد تتسبب عقد الإجابة وتعيينات متغيرات المحادثة وعمليات القراءة/الكتابة الدائمة داخل التكرارات في حدوث استثناءات.',
      flattenOutput: 'تسطيح الإخراج',
      flattenOutputDesc: 'عند التمكين، إذا كانت جميع مخرجات التكرار مصفوفات، فسيتم تسطيحها في مصفوفة واحدة. عند التعطيل، ستحافظ المخرجات على هيكل مصفوفة متداخلة.',
    },
    loop: {
      deleteTitle: 'حذف عقدة الحلقة؟',
      deleteDesc: 'سيؤدي حذف عقدة الحلقة إلى إزالة جميع العقد الفرعية',
      input: 'إدخال',
      output: 'متغير الإخراج',
      loop_one: '{{count}} حلقة',
      loop_other: '{{count}} حلقات',
      currentLoop: 'الحلقة الحالية',
      comma: '، ',
      error_one: '{{count}} خطأ',
      error_other: '{{count}} أخطاء',
      breakCondition: 'شرط إنهاء الحلقة',
      breakConditionTip: 'يمكن الإشارة فقط إلى المتغيرات داخل الحلقات ذات شروط الإنهاء ومتغيرات المحادثة.',
      loopMaxCount: 'الحد الأقصى لعدد الحلقات',
      loopMaxCountError: 'الرجاء إدخال حد أقصى صالح لعدد الحلقات، يتراوح بين 1 و {{maxCount}}',
      errorResponseMethod: 'طريقة استجابة الخطأ',
      ErrorMethod: {
        operationTerminated: 'تم الإنهاء',
        continueOnError: 'متابعة عند الخطأ',
        removeAbnormalOutput: 'إزالة الإخراج غير الطبيعي',
      },
      loopVariables: 'متغيرات الحلقة',
      initialLoopVariables: 'متغيرات الحلقة الأولية',
      finalLoopVariables: 'متغيرات الحلقة النهائية',
      setLoopVariables: 'تعيين المتغيرات داخل نطاق الحلقة',
      variableName: 'اسم المتغير',
      inputMode: 'وضع الإدخال',
      exitConditionTip: 'تحتاج عقدة الحلقة إلى شرط خروج واحد على الأقل',
      loopNode: 'عقدة الحلقة',
      currentLoopCount: 'عدد الحلقات الحالي: {{count}}',
      totalLoopCount: 'إجمالي عدد الحلقات: {{count}}',
    },
    note: {
      addNote: 'إضافة ملاحظة',
      editor: {
        placeholder: 'اكتب ملاحظتك...',
        small: 'صغير',
        medium: 'متوسط',
        large: 'كبير',
        bold: 'غامق',
        italic: 'مائل',
        strikethrough: 'يتوسطه خط',
        link: 'رابط',
        openLink: 'فتح',
        unlink: 'إلغاء الرابط',
        enterUrl: 'أدخل URL...',
        invalidUrl: 'URL غير صالح',
        bulletList: 'قائمة نقطية',
        showAuthor: 'عرض المؤلف',
      },
    },
    docExtractor: {
      inputVar: 'متغير الإدخال',
      outputVars: {
        text: 'نص مستخرج',
      },
      supportFileTypes: 'أنواع الملفات المدعومة: {{types}}.',
      learnMore: 'تعرف على المزيد',
    },
    listFilter: {
      inputVar: 'متغير الإدخال',
      filterCondition: 'شرط التصفية',
      filterConditionKey: 'مفتاح شرط التصفية',
      extractsCondition: 'استخراج العنصر N',
      filterConditionComparisonOperator: 'مشغل مقارنة شرط التصفية',
      filterConditionComparisonValue: 'قيمة شرط التصفية',
      selectVariableKeyPlaceholder: 'حدد مفتاح المتغير الفرعي',
      limit: 'أعلى N',
      orderBy: 'ترتيب حسب',
      asc: 'ASC',
      desc: 'DESC',
      outputVars: {
        result: 'نتيجة التصفية',
        first_record: 'السجل الأول',
        last_record: 'السجل الأخير',
      },
    },
    agent: {
      strategy: {
        label: 'استراتيجية الوكيل',
        tooltip: 'تحدد استراتيجيات الوكيل المختلفة كيفية تخطيط النظام وتنفيذ استدعاءات الأدوات متعددة الخطوات',
        shortLabel: 'استراتيجية',
        configureTip: 'يرجى تكوين استراتيجية الوكيل.',
        configureTipDesc: 'بعد تكوين استراتيجية الوكيل، ستقوم هذه العقدة تلقائيًا بتحميل التكوينات المتبقية. ستؤثر الاستراتيجية على آلية التفكير في الأدوات متعددة الخطوات. ',
        selectTip: 'حدد استراتيجية الوكيل',
        searchPlaceholder: 'بحث في استراتيجية الوكيل',
      },
      learnMore: 'تعرف على المزيد',
      pluginNotInstalled: 'هذا الملحق غير مثبت',
      pluginNotInstalledDesc: 'تم تثبيت هذا الملحق من GitHub. يرجى الانتقال إلى الملحقات لإعادة التثبيت',
      linkToPlugin: 'رابط للإضافات',
      pluginInstaller: {
        install: 'تثبيت',
        installing: 'جاري التثبيت',
      },
      modelNotInMarketplace: {
        title: 'النموذج غير مثبت',
        desc: 'تم تثبيت هذا النموذج من مستودع محلي أو GitHub. الرجاء استخدامه بعد التثبيت.',
        manageInPlugins: 'إدارة في الإضافات',
      },
      modelNotSupport: {
        title: 'نموذج غير مدعوم',
        desc: 'لا يوفر إصدار الملحق المثبت هذا النموذج.',
        descForVersionSwitch: 'لا يوفر إصدار الملحق المثبت هذا النموذج. انقر لتبديل الإصدار.',
      },
      configureModel: 'تكوين النموذج',
      notAuthorized: 'غير مخول',
      model: 'النموذج',
      toolbox: 'صندوق الأدوات',
      strategyNotSet: 'لم يتم تعيين استراتيجية الوكيل',
      tools: 'الأدوات',
      maxIterations: 'الحد الأقصى للتكرارات',
      modelNotSelected: 'النموذج غير محدد',
      modelNotInstallTooltip: 'هذا النموذج غير مثبت',
      toolNotInstallTooltip: '{{tool}} غير مثبت',
      toolNotAuthorizedTooltip: '{{tool}} غير مخول',
      strategyNotInstallTooltip: '{{strategy}} غير مثبتة',
      unsupportedStrategy: 'استراتيجية غير مدعومة',
      pluginNotFoundDesc: 'تم تثبيت هذا الملحق من GitHub. يرجى الانتقال إلى الملحقات لإعادة التثبيت',
      strategyNotFoundDesc: 'لا يوفر إصدار الملحق المثبت هذه الاستراتيجية.',
      strategyNotFoundDescAndSwitchVersion: 'لا يوفر إصدار الملحق المثبت هذه الاستراتيجية. انقر لتبديل الإصدار.',
      modelSelectorTooltips: {
        deprecated: 'تم إهمال هذا النموذج',
      },
      outputVars: {
        text: 'محتوى تم إنشاؤه بواسطة الوكيل',
        usage: 'معلومات استخدام النموذج',
        files: {
          title: 'ملفات تم إنشاؤها بواسطة الوكيل',
          type: 'نوع الدعم. الآن يدعم الصورة فقط',
          transfer_method: 'طريقة النقل. القيمة هي remote_url أو local_file',
          url: 'رابط الصورة',
          upload_file_id: 'معرف ملف التحميل',
        },
        json: 'json تم إنشاؤه بواسطة الوكيل',
      },
      checkList: {
        strategyNotSelected: 'الاستراتيجية غير محددة',
      },
      installPlugin: {
        title: 'تثبيت الإضافة',
        desc: 'على وشك تثبيت الإضافة التالية',
        changelog: 'سجل التغييرات',
        install: 'تثبيت',
        cancel: 'إلغاء',
      },
      clickToViewParameterSchema: 'انقر لعرض مخطط المعلمة',
      parameterSchema: 'مخطط المعلمة',
    },
    dataSource: {
      supportedFileFormats: 'تنسيقات الملفات المدعومة',
      supportedFileFormatsPlaceholder: 'امتداد الملف، مثل doc',
      add: 'إضافة مصدر بيانات',
    },
    knowledgeBase: {
      chunkStructure: 'هيكل القطعة',
      chooseChunkStructure: 'اختر هيكل القطعة',
      chunkStructureTip: {
        title: 'الرجاء اختيار هيكل القطعة',
        message: 'تدعم قاعدة المعرفة Dify ثلاثة هياكل للقطع: عام، وأصل-طفل، وسؤال وجواب. يمكن أن يكون لكل قاعدة معرفة هيكل واحد فقط. يجب أن يتوافق الإخراج من العقدة السابقة مع هيكل القطعة المحدد. لاحظ أن اختيار هيكل القطع يؤثر على طرق الفهرسة المتاحة.',
        learnMore: 'تعرف على المزيد',
      },
      changeChunkStructure: 'تغيير هيكل القطعة',
      chunksInput: 'القطع',
      chunksInputTip: 'متغير الإدخال لعقدة قاعدة المعرفة هو Pieces. نوع المتغير هو كائن بمخطط JSON محدد يجب أن يكون متسقًا مع هيكل القطعة المحدد.',
      aboutRetrieval: 'حول طريقة الاسترجاع.',
      chunkIsRequired: 'هيكل القطعة مطلوب',
      indexMethodIsRequired: 'طريقة الفهرسة مطلوبة',
      chunksVariableIsRequired: 'متغير القطع مطلوب',
      embeddingModelIsRequired: 'نموذج التضمين مطلوب',
      embeddingModelIsInvalid: 'نموذج التضمين غير صالح',
      retrievalSettingIsRequired: 'إعداد الاسترجاع مطلوب',
      rerankingModelIsRequired: 'نموذج إعادة الترتيب مطلوب',
      rerankingModelIsInvalid: 'نموذج إعادة الترتيب غير صالح',
    },
    triggerSchedule: {
      title: 'الجدول الزمني',
      nodeTitle: 'جدولة المشغل',
      notConfigured: 'لم يتم التكوين',
      useCronExpression: 'استخدم تعبير cron',
      useVisualPicker: 'استخدم منتقي مرئي',
      frequency: {
        label: 'التكرار',
        hourly: 'كل ساعة',
        daily: 'يوميًا',
        weekly: 'أسبوعيًا',
        monthly: 'شهريًا',
      },
      selectFrequency: 'حدد التكرار',
      frequencyLabel: 'التكرار',
      nextExecution: 'التنفيذ التالي',
      weekdays: 'أيام الأسبوع',
      time: 'الوقت',
      cronExpression: 'تعبير Cron',
      nextExecutionTime: 'وقت التنفيذ التالي',
      nextExecutionTimes: 'أوقات التنفيذ الـ 5 التالية',
      startTime: 'وقت البدء',
      executeNow: 'التنفيذ الآن',
      selectDateTime: 'حدد التاريخ والوقت',
      hours: 'الساعات',
      minutes: 'الدقائق',
      onMinute: 'في الدقيقة',
      days: 'الأيام',
      lastDay: 'اليوم الأخير',
      lastDayTooltip: 'ليست كل الأشهر 31 يومًا. استخدم خيار "اليوم الأخير" لتحديد اليوم الأخير من كل شهر.',
      mode: 'الوضع',
      timezone: 'المنطقة الزمنية',
      visualConfig: 'التكوين المرئي',
      monthlyDay: 'يوم شهري',
      executionTime: 'وقت التنفيذ',
      invalidTimezone: 'منطقة زمنية غير صالحة',
      invalidCronExpression: 'تعبير cron غير صالح',
      noValidExecutionTime: 'لا يمكن حساب وقت تنفيذ صالح',
      executionTimeCalculationError: 'فشل حساب أوقات التنفيذ',
      invalidFrequency: 'تكرار غير صالح',
      invalidStartTime: 'وقت البدء غير صالح',
      startTimeMustBeFuture: 'يجب أن يكون وقت البدء في المستقبل',
      invalidTimeFormat: 'تنسيق الوقت غير صالح (المتوقع HH:MM AM/PM)',
      invalidWeekday: 'يوم أسبوع غير صالح: {{weekday}}',
      invalidMonthlyDay: 'يجب أن يكون اليوم الشهري بين 1-31 أو "last"',
      invalidOnMinute: 'يجب أن تكون الدقيقة بين 0-59',
      invalidExecutionTime: 'وقت التنفيذ غير صالح',
      executionTimeMustBeFuture: 'يجب أن يكون وقت التنفيذ في المستقبل',
    },
    triggerWebhook: {
      title: 'مشغل Webhook',
      nodeTitle: '🔗 مشغل Webhook',
      configPlaceholder: 'سيتم تنفيذ تكوين مشغل webhook هنا',
      webhookUrl: 'Webhook URL',
      webhookUrlPlaceholder: 'انقر فوق إنشاء لإنشاء عنوان URL لـ webhook',
      generate: 'توليد',
      copy: 'نسخ',
      test: 'اختبار',
      urlGenerated: 'تم إنشاء عنوان URL لـ webhook بنجاح',
      urlGenerationFailed: 'فشل إنشاء عنوان URL لـ webhook',
      urlCopied: 'تم نسخ عنوان URL إلى الحافظة',
      method: 'الطريقة',
      contentType: 'نوع المحتوى',
      queryParameters: 'معلمات الاستعلام',
      headerParameters: 'معلمات الرأس',
      requestBodyParameters: 'معلمات جسم الطلب',
      parameterName: 'اسم المتغير',
      varName: 'اسم المتغير',
      varType: 'النوع',
      varNamePlaceholder: 'أدخل اسم المتغير...',
      required: 'مطلوب',
      addParameter: 'إضافة',
      addHeader: 'إضافة',
      noParameters: 'لم يتم تكوين أي معلمات',
      noQueryParameters: 'لم يتم تكوين أي معلمات استعلام',
      noHeaders: 'لم يتم تكوين أي رؤوس',
      noBodyParameters: 'لم يتم تكوين أي معلمات جسم',
      debugUrlTitle: 'للتشغيل الاختياري، استخدم دائمًا هذا العنوان',
      debugUrlCopy: 'انقر للنسخ',
      debugUrlCopied: 'تم النسخ!',
      debugUrlPrivateAddressWarning: 'يبدو أن عنوان URL هذا عنوان داخلي، مما قد يتسبب في فشل طلبات webhook. يمكنك تغيير TRIGGER_URL إلى عنوان عام.',
      errorHandling: 'معالجة الأخطاء',
      errorStrategy: 'معالجة الأخطاء',
      responseConfiguration: 'استجابة',
      asyncMode: 'وضع غير متزامن',
      statusCode: 'رمز الحالة',
      responseBody: 'جسم الاستجابة',
      responseBodyPlaceholder: 'اكتب جسم الاستجابة هنا',
      headers: 'الرؤوس',
      validation: {
        webhookUrlRequired: 'عنوان URL لـ Webhook مطلوب',
        invalidParameterType: 'نوع المعلمة غير صالح "{{type}}" للمعلمة "{{name}}"',
      },
    },
  },
  triggerStatus: {
    enabled: 'مشغل',
    disabled: 'مشغل • معطل',
  },
  entryNodeStatus: {
    enabled: 'بدء',
    disabled: 'بدء • معطل',
  },
  tracing: {
    stopBy: 'توقف بواسطة {{user}}',
  },
  versionHistory: {
    title: 'الإصدارات',
    currentDraft: 'المسودة الحالية',
    latest: 'الأحدث',
    filter: {
      all: 'الكل',
      onlyYours: 'الخاص بك فقط',
      onlyShowNamedVersions: 'إظهار الإصدارات المسماة فقط',
      reset: 'إعادة تعيين التصفية',
      empty: 'لم يتم العثور على سجل إصدار مطابق',
    },
    defaultName: 'إصدار بدون عنوان',
    nameThisVersion: 'تسمية هذا الإصدار',
    editVersionInfo: 'تعديل معلومات الإصدار',
    copyId: 'نسخ المعرف',
    editField: {
      title: 'العنوان',
      releaseNotes: 'ملاحظات الإصدار',
      titleLengthLimit: 'لا يمكن أن يتجاوز العنوان {{limit}} حرفًا',
      releaseNotesLengthLimit: 'لا يمكن أن تتجاوز ملاحظات الإصدار {{limit}} حرفًا',
    },
    releaseNotesPlaceholder: 'صف ما تغير',
    restorationTip: 'بعد استعادة الإصدار، سيتم استبدال المسودة الحالية.',
    deletionTip: 'الحذف لا رجعة فيه، يرجى التأكد.',
    action: {
      restoreSuccess: 'تم استعادة الإصدار',
      restoreFailure: 'فشل استعادة الإصدار',
      deleteSuccess: 'تم حذف الإصدار',
      deleteFailure: 'فشل حذف الإصدار',
      updateSuccess: 'تم تحديث الإصدار',
      updateFailure: 'فشل تحديث الإصدار',
      copyIdSuccess: 'تم نسخ المعرف إلى الحافظة',
    },
  },
  debug: {
    settingsTab: 'الإعدادات',
    lastRunTab: 'آخر تشغيل',
    relationsTab: 'العلاقات',
    copyLastRun: 'نسخ آخر تشغيل',
    noLastRunFound: 'لم يتم العثور على تشغيل سابق',
    noMatchingInputsFound: 'لم يتم العثور على مدخلات مطابقة من آخر تشغيل',
    lastRunInputsCopied: 'تم نسخ {{count}} إدخال (إدخالات) من آخر تشغيل',
    copyLastRunError: 'فشل نسخ مدخلات آخر تشغيل',
    noData: {
      description: 'سيتم عرض نتائج آخر تشغيل هنا',
      runThisNode: 'تشغيل هذه العقدة',
    },
    variableInspect: {
      title: 'فحص المتغير',
      emptyTip: 'بعد تخطي عقدة على اللوحة أو تشغيل عقدة خطوة بخطوة، يمكنك عرض القيمة الحالية لمتغير العقدة في فحص المتغير',
      emptyLink: 'تعرف على المزيد',
      clearAll: 'إعادة تعيين الكل',
      clearNode: 'مسح المتغير المخبأ',
      resetConversationVar: 'إعادة تعيين متغير المحادثة إلى القيمة الافتراضية',
      view: 'عرض السجل',
      edited: 'تم التعديل',
      reset: 'إعادة تعيين إلى قيمة آخر تشغيل',
      listening: {
        title: 'الاستماع للأحداث من المشغلات...',
        tip: 'يمكنك الآن محاكاة مشغلات الحدث عن طريق إرسال طلبات اختبار إلى نقطة نهاية HTTP {{nodeName}} أو استخدامها كعنوان URL لرد الاتصال لتصحيح أخطاء الحدث المباشر. يمكن عرض جميع المخرجات مباشرة في فحص المتغير.',
        tipPlugin: 'الآن يمكنك إنشاء أحداث في {{- pluginName}}، واسترجاع المخرجات من هذه الأحداث في فحص المتغير.',
        tipSchedule: 'الاستماع للأحداث من مشغلات الجدول.\nالتشغيل المجدول التالي: {{nextTriggerTime}}',
        tipFallback: 'انتظار أحداث المشغل الواردة. ستظهر المخرجات هنا.',
        defaultNodeName: 'هذا المشغل',
        defaultPluginName: 'مشغل الإضافة هذا',
        defaultScheduleTime: 'لم يتم التكوين',
        selectedTriggers: 'المشغلات المحددة',
        stopButton: 'توقف',
      },
      trigger: {
        normal: 'فحص المتغير',
        running: 'التخزين المؤقت لحالة التشغيل',
        stop: 'إيقاف التشغيل',
        cached: 'عرض المتغيرات المخبأة',
        clear: 'مسح',
      },
      envNode: 'البيئة',
      chatNode: 'المحادثة',
      systemNode: 'النظام',
      exportToolTip: 'تصدير متغير كملف',
      largeData: 'بيانات كبيرة، معاينة للقراءة فقط. تصدير لعرض الكل.',
      largeDataNoExport: 'بيانات كبيرة - معاينة جزئية فقط',
      export: 'تصدير',
    },
    lastOutput: 'آخر إخراج',
    relations: {
      dependencies: 'التبعيات',
      dependents: 'المعتمدون',
      dependenciesDescription: 'العقد التي تعتمد عليها هذه العقدة',
      dependentsDescription: 'العقد التي تعتمد على هذه العقدة',
      noDependencies: 'لا توجد تبعيات',
      noDependents: 'لا يوجد معتمدون',
    },
  },
  onboarding: {
    title: 'حدد عقدة البداية للبدء',
    description: 'لدى عقد البداية المختلفة قدرات مختلفة. لا تقلق، يمكنك دائمًا تغييرها لاحقًا.',
    userInputFull: 'إدخال المستخدم (عقدة البداية الأصلية)',
    userInputDescription: 'عقدة البداية التي تسمح بتعيين متغيرات إدخال المستخدم، مع إمكانيات تطبيق الويب، وواجهة برمجة تطبيقات الخدمة، وخادم MCP، وقدرات سير العمل كأداة.',
    trigger: 'مشغل',
    triggerDescription: 'يمكن أن تعمل المشغلات كعقدة بداية لسير العمل، مثل المهام المجدولة، أو خطافات الويب المخصصة، أو التكامل مع تطبيقات أخرى.',
    back: 'رجوع',
    learnMore: 'تعرف على المزيد',
    aboutStartNode: 'حول عقدة البداية.',
    escTip: {
      press: 'اضغط',
      key: 'esc',
      toDismiss: 'للرفض',
    },
  },
}

export default translation
