/**
 * 审批系统翻译 - 英文
 * Approval System - English
 */
import { ApprovalsTranslations } from './zh';

export const approvalsEn: ApprovalsTranslations = {
  // Process Node Types
  nodeTypes: {
    START: {
      label: 'Start',
      description: 'Process start node',
    },
    END: {
      label: 'End',
      description: 'Process end node',
    },
    USER_TASK: {
      label: 'Approval Node',
      description: 'Node requiring personnel approval',
    },
    CC: {
      label: 'CC Node',
      description: 'Send CC notification',
    },
    EXCLUSIVE_GATEWAY: {
      label: 'Conditional Branch',
      description: 'Choose branch based on condition',
    },
    PARALLEL_GATEWAY: {
      label: 'Parallel Branch',
      description: 'Execute multiple branches in parallel',
    },
  },

  // Approver Types (types.ts)
  approverTypesConfig: {
    INITIATOR_MANAGER: {
      label: 'Direct Manager',
      description: 'Initiator\'s direct manager',
    },
    MANAGER_CHAIN: {
      label: 'Manager Chain',
      description: 'Sequential approval up to department head',
    },
    FIXED_USER: {
      label: 'Specified User',
      description: 'Fixed approver',
    },
    ROLE: {
      label: 'Specified Role',
      description: 'Users with specific role',
    },
    DEPARTMENT: {
      label: 'Department Head',
      description: 'Head of specified department',
    },
    FORM_FIELD: {
      label: 'Form Field',
      description: 'Get approver from form field',
    },
  },

  // Approval Modes (types.ts)
  approvalModesConfig: {
    SINGLE: {
      label: 'Single Approval',
      description: 'Only one person needs to approve',
    },
    AND: {
      label: 'Countersign',
      description: 'All approvers must agree',
    },
    OR: {
      label: 'OR Sign',
      description: 'Any one approver can agree',
    },
    SEQUENTIAL: {
      label: 'Sequential Approval',
      description: 'Approve in sequence',
    },
  },

  // Validation Messages (types.ts)
  validationMessages: {
    mustHaveStartNode: 'Process must have one start node',
    onlyOneStartNode: 'Process can only have one start node',
    mustHaveEndNode: 'Process must have one end node',
    onlyOneEndNode: 'Process can only have one end node',
  },

  // Property Panel (ProcessPropertyPanel.tsx)
  propertyPanel: {
    startNodeDesc: 'Process start node',
    endNodeDesc: 'Process end node',
    noOtherConfig: 'No other configuration needed',
    selectApproverType: 'Select approver type',
    selectCCType: 'Select CC type',
    conditionName: 'Condition name',
    parallelGateway: 'Parallel Gateway',
    conditionalGateway: 'Conditional Gateway',
    parallelGatewayDesc: 'All branches execute in parallel',
    conditionalGatewayDesc: 'Choose one branch based on condition',
    actions: {
      approve: 'Approve',
      reject: 'Reject',
      return: 'Return',
      forward: 'Forward',
      addSign: 'Add Sign',
    },
  },

  // Lark Style Process Preview (LarkProcessPreview.tsx)
  larkPreview: {
    notSet: 'Not set',
    currentNode: 'Current',
    completed: 'Completed',
    rejected: 'Rejected',
    allRequired: 'All required',
    anyOne: 'Any one',
    initiator: 'Initiator',
    submitter: 'Submitter',
    processEnd: 'Process End',
    noApprovalNodes: 'No approval nodes',
    directSubmit: 'Form will be submitted directly',
    nodeTypeLabels: {
      userTask: 'Approver',
      cc: 'CC',
      start: 'Start',
      end: 'End',
      exclusiveGateway: 'Conditional Branch',
      parallelGateway: 'Parallel Branch',
    },
  },

  // Approval Timeline (LarkProcessPreview.tsx - Full Process Display)
  timeline: {
    skipped: 'Skipped',
    returned: 'Returned',
    pending: 'Pending',
    skippedTooltip: 'Process terminated, this node was not executed',
    pendingTooltip: 'Pending',
    processCompleted: 'Process Approved',
    processRejected: 'Process Rejected',
    processWithdrawn: 'Process Withdrawn',
    processTerminated: 'Process Terminated',
    processFailed: 'Process Failed',
  },

  // ⭐ Action Types
  actions: {
    // Regular approval actions
    SUBMIT: 'Submit',
    APPROVE: 'Approve',
    REJECT: 'Reject',
    RETURN: 'Return',
    FORWARD: 'Forward',
    WITHDRAW: 'Withdraw',
    APPROVER_WITHDRAW: 'Approver Withdraw',
    ADD_SIGN: 'Add Sign',
    CLAIM: 'Claim',
    UNCLAIM: 'Unclaim',
    DELEGATE: 'Delegate',
    COMMENT: 'Comment',
    REMIND: 'Remind',
    EXECUTE: 'Execute',

    // Auto actions
    AUTO_APPROVE: 'Auto Approved',
    AUTO_REJECT: 'Auto Rejected',
    ESCALATE: 'Auto Escalate',

    // Admin actions
    ADMIN_APPROVE: 'Admin Approved',
    ADMIN_REJECT: 'Admin Rejected',
    ADMIN_TERMINATE: 'Admin Terminated',
    ADMIN_REASSIGN: 'Admin Reassigned',
  },

  // ⭐ Admin Action Badges
  adminBadges: {
    adminAction: 'Admin Action',
    adminTerminate: 'Admin Terminated',
    adminApprove: 'Admin Approved',
    adminReject: 'Admin Rejected',
    adminReassign: 'Admin Reassigned',
  },

  // ⭐ Warnings and Alerts
  warnings: {
    // Admin operation warnings
    adminOperationWarning: 'Admin intervention: This operation was performed by an administrator on behalf',  // ⭐ Updated to match spec
    adminTerminateWarning: 'Process has been forcibly terminated by an administrator, all subsequent nodes have been cancelled',
    adminApproveWarning: 'Admin approved directly: {reason}',
    adminRejectWarning: 'Admin rejected directly: {reason}',
    adminReassignWarning: '⚠️ Admin Intervention: Approver has been reassigned',
    adminReassignNotice: 'Admin {admin} reassigned this task to {target}',

    // System errors
    systemErrorAlert: 'Process terminated abnormally, please contact technical support',
    systemErrorDetails: 'Technical Details',
    showDetails: 'Show',
    hideDetails: 'Hide',

    // Auto operation info
    autoApprovalInfo: 'Auto approval reason: {reason}',
    autoApprovalTitle: 'Auto Approval Reason:',
    
    // ⭐ Prefix Labels
    rejectReasonLabel: 'Rejection Reason: ',
    withdrawReasonLabel: 'Withdrawal Reason: ',
    terminateReasonLabel: 'Termination Reason: ',
    errorMessageLabel: 'Error Message: ',
  },

  // Empty states
  emptyStates: {
    adminTitle: 'No processes require intervention',
    adminDesc: 'Only running processes are shown',
    noData: 'No data',
    noFormData: 'No form data',
    noFormsAvailable: 'No forms available',
    noCategories: 'No categories',
  },

  // Ding Style Designer (DingStyleDesigner.tsx)
  dingDesigner: {
    pleaseSetApprover: 'Please set approver',
    nodeCategories: {
      human: 'Human Nodes',
      branch: 'Branch Nodes',
    },
    defaultNodeNames: {
      start: 'Start',
      end: 'End',
      approver: 'Approver',
      cc: 'CC',
      conditionalBranch: 'Conditional Branch',
      parallelBranch: 'Parallel Branch',
      node: 'Node',
    },
  },

  // Ding Process Designer (DingProcessDesigner.tsx)
  dingProcessDesigner: {
    executor: 'Executor',
    initiator: 'Initiator',
    approver: 'Approver',
    ccPerson: 'CC',
    processEnd: 'Process End',
    endNode: 'End',
    humanNodes: 'Human Nodes',
    branchNodes: 'Branch Nodes',
    clickToEdit: 'Click node to edit · Click + to add node',
    deleteNode: 'Delete Node',
    deleteCondition: 'Delete Conditional Branch',
    deleteBranch: 'Delete Branch',
    deleteParallel: 'Delete Parallel Branch',
    minOneBranch: 'Keep at least 1 branch. To delete, please delete the entire conditional branch node',
    otherCases: 'Other Cases',
    condition: 'Condition',
    otherCasesDesc: 'Other cases enter this process',
    pleaseSetCondition: 'Please set condition',
    pleaseSet: 'Please set {type}',
    inputBranchName: 'Input branch name',
    expressionExample: 'Expression example: ${amount} > 5000 or ${type} == \'Travel\'',
    addCondition: 'Add Condition',
    addBranch: 'Add Branch',
    priority: 'Priority {priority}',
    parallelExecution: 'Parallel Execution',
    parallel: 'Parallel',
    branch: 'Branch {number}',
    clickToAddNode: 'Click + to add node',
    nodeCount: '{count} nodes',
    continueAfterAll: 'Continue after all complete',
    conditionalBranch: 'Conditional Branch',
    parallelBranch: 'Parallel Branch',
    condition1: 'Condition 1',
    condition2: 'Condition 2',
    branch1: 'Branch 1',
    branch2: 'Branch 2',
    // Approver type labels (getConfigLabel)
    configLabels: {
      initiatorManager: 'Initiator\'s Direct Manager',
      initiatorManagerLevel: 'Initiator\'s Level {level} Manager',
      managerChain: 'Manager Chain Approval',
      fixedUser: 'Fixed Members',
      role: 'By Role',
      department: 'Department Manager',
      formField: 'Department Contact',
    },
  },

  // Basic
  title: 'Approval Center',
  subtitle: 'Manage pending approvals',
  
  // Status Labels
  urgent: 'Urgent',
  overdue: 'Overdue',
  
  // Detail Page
  detail: {
    loadError: 'Failed to load approval details',
    title: 'Approval Details',
    basicInfo: 'Basic Info',
    processInfo: 'Process Info',
    formData: 'Form Data',
    history: 'Approval History',
    retryConfirm: 'Confirm retry workflow?',
    retrySuccess: 'Retry successful',
    retryFailed: 'Retry failed',
    noBusinessData: 'No business data available',
    loading: 'Loading...',
    retrying: 'Retrying...',
    retryWorkflow: 'Retry Workflow',
    approvalProcess: 'Approval Process',
    countersignMode: 'Countersign mode (all approvers required)',
    orSignMode: 'OR-sign mode (any approver can approve)',
    ccUsers: 'CC {count} users',
    processName: 'Process Name',
    processVersion: 'Process Version',
    processKey: 'Process Key',
    initiator: 'Initiator',
    startTime: 'Start Time',
    endTime: 'End Time',
    instanceId: 'Instance ID',
    expenseTodo: 'Expense form in development...',
    purchaseTodo: 'Purchase form in development...',
    unsupportedType: 'Unsupported business type',
    loadFailed: 'Load Failed',
    back: 'Back',
    formInfo: 'Form Info',
    submitter: 'Submitter',
    ccMembersCount: 'CC {count} members',
    members: 'Members',
    currentNode: 'Current Node',
    completed: 'Completed',
    currentApprovers: 'Current Approvers',
  },
  
  // Actions
  approve: 'Approve',
  reject: 'Reject',
  withdraw: 'Withdraw',
  comment: 'Comment',
  approveSuccess: 'Approved successfully',
  approveFailed: 'Failed to approve',
  rejectSuccess: 'Rejected successfully',
  rejectFailed: 'Failed to reject',
  rejectReasonRequired: 'Reject reason is required',
  
  // Status
  pending: 'Pending',
  approved: 'Approved',
  rejected: 'Rejected',
  cancelled: 'Cancelled',
  
  // Status mapping
  statuses: {
    pending: 'Pending',
    approved: 'Approved',
    rejected: 'Rejected',
    cancelled: 'Cancelled',
    running: 'Running',
    completed: 'Completed',
    terminated: 'Terminated',
  },
  
  // Approval result mapping
  results: {
    approve: 'Approve',
    approved: 'Approved',
    reject: 'Reject',
    rejected: 'Rejected',
    withdraw: 'Withdraw',
    withdrawn: 'Withdrawn',
    transfer: 'Transfer',
    transferred: 'Transferred',
  },
  
  // Business type mapping
  businessTypes: {
    work_record: 'Work Record',
    leave: 'Leave',
    expense: 'Expense',
    purchase: 'Purchase',
  },
  
  // Navigation
  all: 'All',
  pendingMyApproval: 'Pending My Approval',
  ccToMe: 'CC to Me',
  myCreated: 'My Created',
  myInitiated: 'My Submitted',
  myProcessed: 'My Processed',
  adminProcessing: 'Admin Processing',
  adminAnalytics: {
    tabLabel: 'Analytics',
    title: 'Admin Analytics',
    subtitle: 'Form submissions and approvals overview. Use Filter guide to understand each filter.',
    filterGuide: 'Filter guide',
    filterGuideSubtitle: 'Each filter affects both summary metrics and detail list.',
    settingsDescription: 'Configure how long export files are retained.',
    exportDescription: 'Export data based on current filters.',
    settings: 'Export Settings',
    export: 'Export',
    exportTitle: 'Export data',
    exportFormatLabel: 'Export format',
    exportFormatPlaceholder: 'Select format',
    exportFormatHint: 'Choose the file format for export.',
    exportFormats: {
      xlsx: 'XLSX',
      csv: 'CSV',
    },
    exportQueued: 'Export task created: {id}',
    settingsSaved: 'Settings saved',
    filters: {
      formLabel: 'Form',
      formPlaceholder: 'Select form',
      formHint: 'Filter stats and records by form type',
      approvalLabel: 'Approval required',
      approvalPlaceholder: 'Approval type',
      approvalHint: 'Separate approval-required vs auto-complete forms',
      statusLabel: 'Status',
      statusPlaceholder: 'Status',
      statusHint: 'Filter submissions by workflow status',
      organizationLabel: 'Organization',
      organizationPlaceholder: 'Organization',
      organizationHint: 'Limit by submitter organization',
      departmentLabel: 'Department',
      departmentPlaceholder: 'Department',
      departmentHint: 'Limit by submitter department',
      submitterLabel: 'Submitter',
      submitterPlaceholder: 'Select user',
      submitterHint: 'Filter submissions by user',
      submitterClear: 'Clear',
      submitterSelect: 'Select submitter',
      timeFromLabel: 'Start date',
      timeFromHint: 'Start date (inclusive)',
      timeToLabel: 'End date',
      timeToHint: 'End date (inclusive)',
      keywordLabel: 'Keyword',
      keywordPlaceholder: 'Keyword / Business ID',
      keywordHint: 'Search by submitter, business ID, or form name',
      all: 'All',
      approvalRequired: 'Approval required',
      approvalNotRequired: 'No approval',
    },
    statuses: {
      all: 'All',
      running: 'Running',
      suspended: 'Suspended',
      approved: 'Approved',
      rejected: 'Rejected',
      withdrawn: 'Withdrawn',
      terminated: 'Terminated',
      failed: 'Failed',
      submitted: 'Submitted',
      pending_approval: 'Pending approval',
      cancelled: 'Cancelled',
    },
    exportStatuses: {
      pending: 'Queued',
      processing: 'Processing',
      success: 'Completed',
      failed: 'Failed',
      expired: 'Expired',
    },
    kpi: {
      totalSubmissions: 'Total submissions',
      approvalRate: 'Approval rate',
      rejectRate: 'Reject rate',
      avgDuration: 'Avg duration',
      runningCount: 'In progress',
    },
    trendTitle: 'Trend overview',
    distributionTitle: 'Form distribution',
    instancesTitle: 'Submission details',
    exportHistory: 'Export history',
    download: 'Download',
    table: {
      form: 'Form',
      submitter: 'Submitter',
      status: 'Status',
      node: 'Current node',
      time: 'Submitted at',
      duration: 'Duration',
    },
    settingsTitle: 'Export settings',
    exportRetention: 'Export retention days',
    exportRetentionHint: 'Current retention is {days} days. Exports expire automatically.',
    pagination: 'Page {page} / {total}',
    detail: {
      title: 'Submission detail',
      status: 'Status',
      submitter: 'Submitter',
      submittedAt: 'Submitted at',
      approvalRequired: 'Approval type',
      formDataTitle: 'Form data',
      formDataEmpty: 'No form data available',
      approvalHistoryTitle: 'Approval history',
      noApprovalHistory: 'No approval history',
      notRequired: 'This form does not require approval',
      openApproval: 'Open approval detail',
      openFormInstance: 'Open form instance',
    },
  },
  allApplications: 'All Applications',
  smartHr: 'Smart HR',
  submitWorkRecord: 'Submit Work Record',
  recommended: 'Recommended',
  pendingTasksNotice: 'You have {count} pending tasks that require your attention.',
  viewNow: 'View Now',
  
  // Pending approval page
  pendingPage: {
    title: 'Pending My Approval',
    subtitle: 'Tasks pending your approval',
    noTasks: 'No pending tasks',
    noTasksDesc: 'You have no tasks to approve',
    taskName: 'Task Name',
    businessType: 'Business Type',
    createTime: 'Create Time',
    actions: 'Actions',
    viewDetail: 'View Detail',
    approve: 'Approve',
    reject: 'Reject',
    confirmApprove: 'Confirm to approve this request?',
    confirmReject: 'Confirm to reject this request?',
    approveSuccess: 'Approved successfully',
    approveFailed: 'Approval failed',
    rejectSuccess: 'Rejected',
  },
  
  // CC page
  ccPage: {
    title: 'CC to Me',
    subtitle: 'Processes cc\'d to you',
    noInstances: 'No CC records',
    noInstancesDesc: 'No processes have been cc\'d to you',
    businessKey: 'Business Key',
    businessType: 'Business Type',
    initiator: 'Initiator',
    status: 'Status',
    startTime: 'Start Time',
    endTime: 'End Time',
    actions: 'Actions',
    viewDetail: 'View Detail',
    pageTitle: 'CC to Me',
    pageSubtitle: 'View approval processes cc\'d to me',
    markAsRead: 'Mark as Read',
    batchMarkAsRead: 'Batch Mark as Read',
    allCC: 'All CC',
    unread: 'Unread',
    read: 'Read',
    filterAll: 'All CC',
    filterUnread: 'Unread Only',
    loading: 'Loading...',
    noCC: 'No CC',
    noCCDesc: 'You have no tasks cc\'d to you',
    markAsReadSuccess: 'Marked as read',
    markAsReadFailed: 'Failed to mark',
    selectTasksFirst: 'Please select tasks first',
    batchMarkSuccess: 'Marked {count} tasks as read',
    batchMarkFailed: 'Batch mark failed',
    loadFailed: 'Failed to load CC tasks',
    view: 'View',
    tableHeaders: {
      readStatus: 'Status',
      title: 'Title',
      node: 'Node',
      initiator: 'Initiator',
      ccTime: 'CC Time',
      processStatus: 'Process Status',
      actions: 'Actions',
    },
    statusMap: {
      RUNNING: 'Running',
      SUSPENDED: 'Suspended',
      COMPLETED: 'Completed',
      TERMINATED: 'Terminated',
      FAILED: 'Failed',
    },
    pagination: {
      total: 'Total {total} CC',
      page: 'Page {page} / {totalPages}',
      previous: 'Previous',
      next: 'Next',
    },
  },
  
  // My created page
  createdPage: {
    title: 'My Created',
    subtitle: 'Approval processes initiated by me',
    noInstances: 'No created records',
    noInstancesDesc: 'You haven\'t initiated any approvals yet',
    businessKey: 'Business Key',
    businessType: 'Business Type',
    status: 'Status',
    startTime: 'Start Time',
    endTime: 'End Time',
    actions: 'Actions',
    viewDetail: 'View Detail',
  },

  // My requests page
  initiatedPage: {
    title: 'My Requests',
    subtitle: 'View all requests I initiated',
    noInstances: 'No request records',
    noInstancesDesc: 'You haven\'t initiated any requests yet',
    businessKey: 'Business Key',
    businessType: 'Business Type',
    status: 'Status',
    currentNode: 'Current Node',
    createTime: 'Create Time',
    actions: 'Actions',
    viewDetail: 'View Detail',
    filterByType: 'Business Type',
    filterByStatus: 'Status',
    allTypes: 'All',
    allStatuses: 'All',
    withdraw: 'Withdraw',
    withdrawing: 'Withdrawing...',
    confirmWithdraw: 'Are you sure you want to withdraw this application?',
    withdrawSuccess: 'Withdrawn successfully',
    withdrawFailed: 'Failed to withdraw',
    withdrawNotSupported: 'Withdraw not supported for this business type',
    statusMap: {
      RUNNING: 'Running',
      COMPLETED: 'Completed',
      TERMINATED: 'Terminated',
      SUSPENDED: 'Suspended',
      FAILED: 'Failed',
    },
    unknownType: 'Unknown Type',
    businessTypeOptions: {
      all: 'All',
      FORM_INSTANCE: 'Form Application',
      PURCHASE_ORDER: 'Purchase Request',
      EXPENSE_CLAIM: 'Expense Claim',
    },
    statusOptions: {
      all: 'All',
      RUNNING: 'Running',
      COMPLETED: 'Completed',
      TERMINATED: 'Terminated',
    },
    tableHeaders: {
      businessType: 'Business Type',
      title: 'Title',
      status: 'Status',
      currentNode: 'Current Node',
      createTime: 'Create Time',
      actions: 'Actions',
    },
  },
  
  // My processed page
  processedPage: {
    title: 'My Processed',
    subtitle: 'Tasks I have processed',
    noTasks: 'No processed tasks',
    noTasksDesc: 'You haven\'t processed any approval tasks yet',
    taskName: 'Task Name',
    businessType: 'Business Type',
    result: 'Result',
    comment: 'Comment',
    completeTime: 'Complete Time',
    actions: 'Actions',
    viewDetail: 'View Detail',
  },
  
  // Messages
  withdrawSuccess: 'Withdrawn',
  operationFailed: 'Operation Failed',
  
  // Submit Request Page
  submitRequest: {
    title: 'Submit Request',
    searchPlaceholder: 'Please enter the name of the application',
    lastEdited: 'Last edited:',
    recommended: 'Recommended',
    allApplications: 'All Applications',
    noFormsAvailable: 'No forms available',
    loading: 'Loading...',
    categories: {
      uncategorized: 'Uncategorized',
      uesProcess: 'UES Process',
      testProcess: 'Test Process',
      attendance: 'Attendance',
      finance: 'Finance',
      administration: 'Administration',
      otherServices: 'Provided by other service providers',
    },
  },
  
  // Approval Process Designer
  designer: {
    setup: 'Setup',
    // Tabs
    tabs: {
      approver: 'Approver',
      actions: 'Actions',
      fields: 'Field Permissions',
      advanced: 'Advanced',
    },
    
    // Approver Types
    approverTypes: {
      fixedUser: 'Fixed Members',
      role: 'By Role',
      department: 'Department Manager',
      initiatorManager: 'Initiator\'s Manager',
      managerChain: 'Manager Chain',
      formField: 'Department Contact',
      initiator: 'Initiator',
      selfSelect: 'Self Select',
      formMember: 'Form Member Field',
      connector: 'From Connector',
    },
    
    // Multi-approval Modes
    multiApprovalModes: {
      and: {
        label: 'Countersign',
        description: 'All approvers must agree',
      },
      or: {
        label: 'OR Sign',
        description: 'Any one approver can approve',
      },
      sequential: {
        label: 'Sequential',
        description: 'Approve in order',
      },
    },
    
    // Property Panel Labels
    labels: {
      nodeName: 'Node Name',
      approverType: 'Approver Type',
      approvers: 'Approvers',
      multiApprovalMode: 'Multi-approval Mode',
      selectApprovers: 'Select Approvers',
      selectedCount: '{count} selected',
      selectRole: 'Select Role',
      noRoleSelected: 'Please select a role',
      managerLevel: 'Manager Level',
      levelDescription: 'Level {level} manager',
      autoApprove: 'Auto-approve if no manager found',
      skipSameApprover: 'Skip if already approved',
      allowEditForm: 'Allow editing form during approval',
      dueTime: 'Approval Deadline',
      dueTimeUnit: 'Working days',
      autoReject: 'Auto-reject when overdue',
      notifyBeforeDue: 'Notify before due',
      notifyDays: 'Days in advance',
      fieldPermissions: 'Field Permissions',
      readable: 'Readable',
      editable: 'Editable',
      required: 'Required',
      hidden: 'Hidden',
      actionButtons: 'Action Button Settings',
      enableApprove: 'Enable "Approve" button',
      enableReject: 'Enable "Reject" button',
      enableTransfer: 'Enable "Transfer" button',
      requireRejectReason: 'Require reason when rejecting',
      ccUsers: 'CC Users',
      selectCCUsers: 'Select CC Users',
      ccTiming: 'CC Timing',
      ccOnStart: 'On node start',
      ccOnComplete: 'On node complete',
      approvalTimeout: 'Approval Timeout Reminder',
      hoursLater: 'hours later remind approver',
      setZeroForUnlimited: 'Set to 0 for unlimited',
      autoPass: 'Auto Pass',
      autoPassWhenInitiator: 'Auto-pass when approver is initiator',
      whenApproverNotFound: 'When approver not found',
      autoSkip: 'Auto-skip this node',
      syncNodeConfig: 'Sync Node Config',
      customLevel: 'Custom: Level',
      levelSuffix: '',
      assignToLevel: 'This node will be assigned to initiator\'s level {level} manager',
      stopCondition: 'Stop Condition',
      stopConditionDesc: '(When to stop escalating)',
      untilDeptHead: 'Until Department Head',
      untilOrgHead: 'Until Organization Head',
      untilLevel: 'Until Level {level} Manager',
      chainApprovalTip: 'Chain Approval',
      chainApprovalDesc: 'Starting from initiator\'s direct manager, escalate upwards until stop condition is met.',
      chainExample: 'Example: Tom → Team Lead → Manager → Director (Dept. Head)',
      noFormFields: 'No form fields',
      addFieldsFirst: 'Please add fields in form designer first',
      managerLevelOptions: {
        level1: 'Direct Manager (Level 1)',
        level1Desc: 'Initiator\'s direct manager',
        level2: 'Level 2 Manager',
        level2Desc: 'Manager of initiator\'s manager',
        level3: 'Level 3 Manager',
        level3Desc: 'Manager of level 2 manager',
      },
      actions: {
        approve: 'Approve',
        reject: 'Reject',
        return: 'Return',
        forward: 'Forward',
        addSign: 'Add Sign',
      },
      chainConditions: {
        deptHead: 'Approve until department head of initiator',
        orgHead: 'Approve until top organization head',
        levelN: 'Stop at level {level} manager',
      },
    },
    
    // Help Texts
    helpTexts: {
      role: 'Select approvers from system roles',
      initiatorManager: 'Select a fixed-level manager from initiator\'s superiors',
      managerChain: 'Approve level by level up to the specified level',
      formField: 'Select the department contact from the department field in the form',
      multiApprovalOr: 'Only one approver needs to approve, other tasks will auto-complete',
      skipSameApprover: 'If the approver has approved in a previous node, skip this node',
    },
    
    // Node Types
    nodeTypes: {
      userTask: 'Approver',
      cc: 'CC',
      gateway: 'Conditional Branch',
      delay: 'Delay Node',
    },
    
    // Buttons
    buttons: {
      close: 'Close',
      save: 'Save',
      cancel: 'Cancel',
      add: 'Add',
      delete: 'Delete',
      edit: 'Edit',
      confirm: 'Confirm',
      selectUsers: 'Select Users',
      clearSelection: 'Clear Selection',
    },
    
    // Validation Messages
    validation: {
      nodeNameRequired: 'Node name is required',
      approverTypeRequired: 'Please select approver type',
      approversRequired: 'Please select approvers',
      roleRequired: 'Please select a role',
      levelRequired: 'Please enter manager level',
      levelMin: 'Manager level must be at least 1',
    },
    
    // Toast Messages
    messages: {
      saveSuccess: 'Saved successfully',
      saveFailed: 'Save failed',
      deleteConfirm: 'Confirm to delete this node?',
      deleteSuccess: 'Deleted successfully',
      deleteFailed: 'Delete failed',
    },
  },

  // Approval Actions Panel (ApprovalActions.tsx)
  actionPanel: {
    title: 'Approval Actions',
    commentPlaceholder: 'Enter approval comment',
    rejectReasonRequired: 'Please enter the reject reason',
    rejectReasonPlaceholder: 'Enter reject reason (required)',
    confirmReject: 'Confirm Reject',
    confirmRejectTitle: 'Confirm Reject',
    returnDialogTitle: 'Return to a previous node',
    returnNodePlaceholder: 'Select a node to return to',
    returnReasonPlaceholder: 'Enter return reason',
    returnNodeRequired: 'Please select a node',
    confirmReturn: 'Confirm Return',
    forwardDialogTitle: 'Forward to another user',
    forwardUserPlaceholder: 'Enter user ID or search',
    forwardReasonPlaceholder: 'Enter forward reason',
    forwardUserRequired: 'Please select a user to forward to',
    confirmForward: 'Confirm Forward',
    approverWithdrawDialogTitle: 'Approver Withdraw',
    approverWithdrawReasonPlaceholder: 'Enter withdraw reason (required)',
    approverWithdrawReasonRequired: 'Please enter the withdraw reason',
    confirmApproverWithdraw: 'Confirm Withdraw',
    addSignDialogTitle: 'Add Sign',
    addSignUserPlaceholder: 'User IDs (comma separated)',
    addSignTypeBefore: 'Before (sign before me)',
    addSignTypeAfter: 'After (sign after me)',
    addSignTypeParallel: 'Parallel (sign together with me)',
    addSignUsersRequired: 'Please enter at least one user',
    confirmAddSign: 'Confirm Add Sign',
    claimConfirmTitle: 'Claim Task',
    claimConfirmDesc: 'Once claimed, this task will be exclusively yours. Confirm?',
    confirmClaim: 'Claim',
    unclaimConfirmTitle: 'Unclaim Task',
    unclaimConfirmDesc: 'Task will return to the candidate pool for others to claim.',
    confirmUnclaim: 'Unclaim',
    taskIdRequired: 'Task ID missing, cannot proceed',
    operationFailed: 'Operation failed',
    actionSuccess: {
      approve: 'Approved',
      reject: 'Rejected',
      return: 'Returned to selected node',
      forward: 'Forwarded successfully',
      approverWithdraw: 'Approval action withdrawn',
      addSign: 'Add sign successful',
      claim: 'Task claimed',
      unclaim: 'Task unclaimed',
    },
  },
};
