export default { app: { name: 'Hotel OMS', theme: 'Theme', language: 'Language', navigationAria: 'Reservation navigation', healthUp: 'Backend connected', healthDown: 'Backend offline', healthChecking: 'Checking', }, auth: { loginTitle: 'Sign in', loginSubtitle: 'Use your system account to enter the TH Hotel reservation workspace.', username: 'Username', password: 'Password', loginSubmit: 'Sign in', loggingIn: 'Signing in', loginFailed: 'The username or password is incorrect.', logout: 'Sign out', currentUser: 'Current user', currentHotel: 'Current hotel', unauthorizedTitle: 'No access', unauthorizedMessage: 'Your account does not have permission to access this page or action.', backHome: 'Back to available page', }, nav: { orders: 'Order list', taskQueue: 'Task queue', sourceMessages: 'Source messages', systemStatus: 'System status', orderDetail: 'Order detail', taskDetail: 'Task detail', sourceMessageConversation: 'Email conversation', debugEml: 'Debug EML', systemSettings: 'System settings', systemUsers: 'Users', systemRoles: 'Roles', systemMenus: 'Menus', systemHotels: 'Hotels', systemAudits: 'Admin audits', }, common: { loading: 'Loading', noData: 'No data', endpointPending: 'Endpoint pending', endpointMissing: 'Endpoint field pending', all: 'All', unknownStatus: 'Unknown status', unknownTaskType: 'Unknown task type', unknownTaskSubtype: 'Unknown task subtype', unknownReadonlyReason: 'Not processable yet', unknownActorType: 'Unknown actor', unknownAuditAction: 'Unknown action', unknownOperation: 'Unknown operation', previousPage: 'Previous', nextPage: 'Next', pageStatus: 'Page {current} / {total}', pageSize: 'Page size', }, notFound: { title: 'Page unavailable', message: 'The frontend page for this menu or link is not available yet.', backHome: 'Back to available page', }, systemAdmin: { title: 'System settings', subtitle: 'Maintain users, roles, permissions, menus, and hotel records', navigationAria: 'System settings navigation', common: { keyword: 'Keyword', viewDetail: 'View detail', selectRow: 'Select a row to view detail', create: 'Create', save: 'Save', edit: 'Edit', yes: 'Yes', no: 'No', }, status: { ACTIVE: 'Active', DISABLED: 'Disabled', }, users: { title: 'User filters', tableTitle: 'Users', detailTitle: 'User detail', createTitle: 'Create user', totalSuffix: 'users', keywordPlaceholder: 'Username / display name / email', userStatus: 'User status', username: 'Username', initialPassword: 'Initial password', displayName: 'Display name', email: 'Email', phone: 'Phone', roles: 'Roles', hotels: 'Authorized hotels', defaultHotel: 'Default hotel', saveRoles: 'Save roles', saveHotels: 'Save hotels', resetPassword: 'Reset password', temporaryPassword: 'Temporary password:', created: 'User created', columns: { user: 'User', status: 'Status', roles: 'Roles', defaultHotel: 'Default hotel', }, }, roles: { title: 'Role filters', tableTitle: 'Roles', detailTitle: 'Role detail', createTitle: 'Create custom role', totalSuffix: 'roles', keywordPlaceholder: 'Role code / role name', roleStatus: 'Role status', roleCode: 'Role code', roleName: 'Role name', builtinReadonly: 'Built-in roles are maintained by the system bootstrap matrix and cannot be edited here.', savePermissions: 'Save permissions', columns: { role: 'Role', status: 'Status', builtin: 'Built-in', permissions: 'Permissions', users: 'Users', }, }, menus: { title: 'Menu filters', createTitle: 'Create menu', editTitle: 'Edit menu', tableTitle: 'Menus', totalSuffix: 'menus', keywordPlaceholder: 'Menu code / name / route', menuStatus: 'Menu status', menuCode: 'Menu code', menuName: 'Menu name', componentKey: 'Component key', iconKey: 'Icon key', columns: { menu: 'Menu', route: 'Route', permission: 'Permission', visible: 'Visible', status: 'Status', sort: 'Sort', knownRoute: 'Known route', }, }, hotels: { title: 'Hotel filters', createTitle: 'Create hotel', editTitle: 'Edit hotel', tableTitle: 'Hotels', totalSuffix: 'hotels', keywordPlaceholder: 'Hotel ID / hotel name', hotelStatus: 'Hotel status', hotelId: 'Hotel ID', hotelName: 'Hotel name', saveStatus: 'Save status', singleActiveRule: 'Single-hotel mode allows only one ACTIVE hotel. Newly created hotels are disabled by default.', columns: { hotel: 'Hotel', status: 'Status', timeZone: 'Time zone', authorizedUsers: 'Authorized users', sort: 'Sort', }, }, audits: { title: 'Audit filters', tableTitle: 'Admin audit data', totalSuffix: 'audit records', targetType: 'Target type', targetId: 'Target ID', action: 'Action', columns: { action: 'Action', target: 'Target', actor: 'Actor', occurredAt: 'Occurred at', }, }, }, workbench: { title: 'Order workbench', subtitle: 'Review, filter, and handle Reservation order tasks', filters: 'Filters', dateRange: 'Date range', businessKey: 'Business key / temporary code', orderStatus: 'Order status', taskStatus: 'Task status', taskCardType: 'Task card type', reset: 'Reset', tableTitle: 'Orders / tasks', columns: { businessKey: 'Business key', orderStatus: 'Order status', currentTask: 'Current task', taskStatus: 'Task status', updatedAt: 'Last updated', operation: 'Action', }, view: 'View', totalPrefix: 'Total', totalSuffix: 'task leads', }, orderList: { title: 'Order list', subtitle: 'Review Reservation work by order', keyword: 'Group Code / Confirmation No.', keywordPlaceholder: 'Group code / confirmation no.', groupCode: 'Group code', groupCodePlaceholder: 'Enter group code', confirmationNumber: 'Confirmation no.', confirmationNumberPlaceholder: 'Enter confirmation no.', tableTitle: 'Order data', totalSuffix: 'orders', viewDetail: 'View detail', continueTask: 'Continue task', noOpenTask: 'No open task', endpointPending: 'The order list endpoint is pending backend implementation. No fixture data is shown.', columns: { order: 'Order', status: 'Status', openTasks: 'Open tasks', createdAt: 'Created at', }, }, order: { summary: 'Order summary', taskQueue: 'Order task queue', sourceMessage: 'Source message', businessKeySource: 'Business key source', updatedAt: 'Last updated', guestName: 'Guest', arrivalDate: 'Arrival date', roomType: 'Room type', amount: 'Amount', openTask: 'Handle task', groupCode: 'Group Code', confirmationNumber: 'Confirmation No.', temporaryOrderNo: 'Temporary order no.', blockCode: 'Block Code', createdAt: 'Created at', conversationMessageCount: 'Conversation messages', sourceSummaryPending: 'Source email summary fields for the order task timeline are pending backend support. Open a task for available source details.', }, taskList: { title: 'Task list', subtitle: 'Review Reservation work by task queue', keyword: 'Order / email keyword', keywordPlaceholder: 'Order no. / email keyword', taskType: 'Task type', taskSubtype: 'Task subtype', tableTitle: 'Task data', totalSuffix: 'tasks', noSourceSubject: 'No source subject', canProcess: 'Processable', cannotProcess: 'Not processable', queueParticipation: 'Queue participation', queueAll: 'All queue states', queueIncluded: 'In queue', queueExcluded: 'Not in queue', viewTask: 'View task', viewOrder: 'View order', viewConversation: 'View email conversation', sourceOnlyOrderLabel: 'Source message only', hiddenTechnicalOrder: 'No visible order', columns: { task: 'Task', order: 'Order', card: 'Task card', status: 'Status', source: 'Source email', queue: 'Queue', }, }, task: { title: 'Task card', fieldContract: 'Field contract', evidence: 'Evidence', saveDraft: 'Save draft', confirm: 'Confirm task', blocked: 'Blocked', readOnly: 'Read only', operaOperations: 'OPERA simulation', audits: 'Audit timeline', noOperations: 'OPERA simulation operations are created after confirmation.', noAudits: 'No audit records yet.', execute: 'Execute', retry: 'Retry', simulateFailure: 'Simulate failure', fieldNotes: 'Field notes', emptyValue: 'Empty', attachments: 'Attachments', fieldAreaFallback: 'Basic information', savedLocally: 'Draft saved', confirmedLocally: 'Task confirmed', validationFailed: 'Fix field errors first', validation: { required: '{field} is required', enum: '{field} must use one of the allowed options', date: '{field} must use YYYY-MM-DD', number: '{field} must be a number', }, viewOrder: 'View order', viewConversation: 'View email conversation', parentGroup: 'Parent Group', sourceMessageId: 'Source message ID', sourceSubject: 'Source subject', sourceSender: 'Sender', sourceReceivedAt: 'Received at', sourceSummaryPending: 'Source email summary fields are pending backend support', sourceOnlyResult: 'Source message entry result', sourceOnlyReadonly: 'This task only shows the source message entry result. It does not enter order handling, field editing, or OPERA operations.', sourceOnlyNoOpera: 'This task type does not involve OPERA operations.', routeInfo: 'Route and processing', resultType: 'Result type', aiTaskType: 'AI task type', systemTaskType: 'System task type', taskCardType: 'Task card type', taskSubtype: 'Task subtype', routeCode: 'Route code', systemProcessCategory: 'System process category', reviewStatus: 'Review status', entryResultCode: 'Entry result code', entryResultMeaning: 'Result meaning', entryResultDescription: 'Result description', entryResultSourceMessageId: 'Result source message ID', rawAnswer: 'SuperAgent raw answer', agentAssessment: 'AI raw fields', sourceNotification: 'Source message notification', manualReviewData: 'Manual review data', manualReviewEvidence: 'Manual review evidence', manualReviewEvidenceFallback: 'Confirm the Parent Group identity from the source email and candidates.', manualReviewMissingFields: 'Missing fields', manualReviewBlockingPoints: 'Blocking points', manualReviewConflictingPoints: 'Conflicting points', manualReviewSuggestedActions: 'Suggested actions', manualReviewEvidenceToCheck: 'Evidence to check', parentIdentityCandidates: 'Parent Group candidates', parentIdentityCandidate: 'Candidate', noParentIdentityCandidates: 'No Parent Group candidates yet. Backend should expose context_used.parent_identity_candidates.', adapterContractErrors: 'Adapter contract errors', unhandledIntents: 'Unhandled intents', noSourceOnlyResult: 'No source message entry result is available.', manualResolution: { title: 'Manual review resolution', description: 'Fill missing fields on the original task card. The backend validates and unblocks the task after submission.', pendingStatus: 'Pending review', resolvedTitle: 'Review resolved', reasonCode: 'Reason code', reviewInstruction: 'Review instruction', confirmedOrderId: 'Confirmed order ID', fieldValuePlaceholder: 'Enter the confirmed value', noSupportedMissingFields: 'The current missing fields are not supported for frontend resolution yet. Confirm field mapping with backend.', fieldRequired: 'Fill the missing field values and confirmed order ID', reason: 'Resolution note', reasonPlaceholder: 'Optional note for the manual decision', submit: 'Submit review result', succeeded: 'Manual review resolved. Task status has been refreshed.', }, manualConversion: { title: 'Manual conversion', description: 'Convert a Fallback / manual review task into a processable reservation task.', targetTaskType: 'Target task type', targetOrder: 'Target order', targetOrderHelp: 'Update or cancel tasks must select a non-deleted order.', targetOrderKeyword: 'Target order search', targetOrderKeywordPlaceholder: 'Group code, confirmation no., or order keyword', searchTargetOrders: 'Search orders', noTargetOrderCandidates: 'Enter a keyword and search for target orders', orderDeletedDisabled: 'Deleted orders cannot be selected', newBookingHint: 'New booking conversion does not require a target order; the backend will reassign by task context.', reason: 'Reason', reasonPlaceholder: 'Optional note for the manual decision', submit: 'Convert task', targetOrderRequired: 'Select a target order', succeeded: 'Manual conversion completed: {taskType}, target order {orderId}', orderId: 'Order ID', }, }, conversation: { title: 'Email conversation detail', subtitle: 'Review all messages in the source email conversation', endpointPending: 'The email conversation detail endpoint is pending backend implementation. No fixture data is shown.', subject: 'Conversation subject', messageCount: 'Messages', channel: 'Channel', firstReceivedAt: 'First received', lastReceivedAt: 'Last received', emptyBody: 'Empty message body', attachments: 'Attachments / inline images', unnamedAttachment: 'Unnamed attachment', relatedOrders: 'Related orders', relatedTasks: 'Related tasks', }, debugEml: { title: 'Debug EML upload', subtitle: 'Upload one .eml email and review SourceMessage and SuperAgent debug results', uploadConfig: 'Upload configuration', hotelId: 'Hotel ID', debugUploadKey: 'Debug upload key', runLabel: 'Run label', emlFile: '.eml file', submit: 'Submit debug run', submitting: 'Waiting for SuperAgent', executionStatus: 'Execution status', status: 'Status', debugRunId: 'Debug run ID', backendStatus: 'Backend status', backendMessage: 'Backend message', waitingSuperAgent: 'Parsing the email and waiting for SuperAgent', systemStages: 'System stages', superAgentTrace: 'SuperAgent Trace', traceToolName: 'Tool', traceInputSummary: 'Input summary', traceOutputSummary: 'Output summary', traceStatus: 'Status', traceTime: 'Time', sourceTrace: 'SourceMessage trace', sourceMessageId: 'SourceMessage ID', sourceProvider: 'Source provider', externalMessageId: 'External message ID', externalConversationId: 'External conversation ID', mailPreview: 'Email preview', noSafeHtml: 'No safe HTML body is available', uploadedMedia: 'Uploaded media', unnamedMedia: 'Unnamed media', rawHtml: 'Raw processed HTML', superAgentResult: 'SuperAgent result', superAgentSessionId: 'SuperAgent session ID', superAgentRunId: 'SuperAgent run ID', parsedJson: 'Parsed JSON', rawAnswer: 'Raw answer', warnings: 'Warnings', debugPayload: 'Debug payload', statuses: { idle: 'Idle', uploading: 'Running', succeeded: 'Succeeded', failed: 'Failed', }, errors: { REQUEST_FIELD_REQUIRED: 'Required fields are missing. Check hotel ID, file, or request parameters', EML_FILE_REQUIRED: 'Choose an .eml email file', EML_FILE_TOO_LARGE: 'The email file exceeds the backend limit', INVALID_FILE_TYPE: 'Only .eml email files are supported', DEBUG_UPLOAD_KEY_INVALID: 'The debug upload key is missing or invalid', EML_PARSE_FAILED: 'The email file could not be parsed', OSS_UPLOAD_FAILED: 'OSS upload failed. Contact backend support', SUPERAGENT_OPEN_API_FAILED: 'SuperAgent call failed. SourceMessage may already be captured', DEBUG_EML_RUN_FAILED: 'Debug EML run failed internally', UNKNOWN: 'Debug EML upload failed', }, }, status: { TEMPORARY: 'Temporary', ACTIVE: 'Active', ENDED: 'Ended', LOGIC_DELETED: 'Deleted', PENDING_CONFIRM: 'Pending confirmation', READY: 'Ready', EXECUTING: 'Executing', FAILED: 'Failed', COMPLETED: 'Completed', PENDING: 'Pending', SUCCEEDED: 'Succeeded', BLOCKED: 'Blocked', SKIPPED: 'Skipped', }, cardType: { NEW_BOOKING: 'New booking', UPDATE_BOOKING: 'Update booking', CANCEL_BOOKING: 'Cancel booking', CANCEL_ALLOTMENT: 'Cancel Parent Group allotment', VOUCHER: 'Voucher', ROOMING_LIST: 'Rooming list', AMEND_GROUP_CODE: 'Amend group code', TRACE_NOTE: 'Trace / notes', TA_RECORD: 'TA record', MESSAGE_NOTIFICATION: 'Message notification', INFORMATIONAL_MESSAGE: 'Message notification (legacy)', SOURCE_MESSAGE_REVIEW_NOTIFICATION: 'Source message notification', SOURCE_MESSAGE_ONLY: 'Source message only', MANUAL_REVIEW: 'Manual review', FALLBACK_REVIEW: 'Manual review', }, taskSubtype: { NEW_BOOKING: 'New booking', UPDATE_BOOKING: 'Update booking', CANCEL_BOOKING: 'Cancel booking', RATE_CHANGE: 'Rate change', UPDATE_STAY_DATES: 'Update stay dates', UPDATE_ROOM_TYPE: 'Update room type', UPDATE_FIX_CHARGE: 'Update fixed charge', CANCEL_ALLOTMENT_CONTROL_BLOCK: 'Cancel Parent Group control block', NEW_GROUP_BLOCK: 'New group block', NEW_FIT_RESERVATION: 'New FIT reservation', MANUAL_REVIEW: 'Manual review', S10: 'Pure informational email (S10)', S99: 'Business material package unavailable (S99)', S000: 'Pure informational email', S999: 'Business material package unavailable', }, resultType: { NORMAL_TASK: 'Normal task', MANUAL_REVIEW: 'Manual review', SOURCE_MESSAGE_REVIEW_NOTIFICATION: 'Source message notification', ADAPTER_CONTRACT_ERROR: 'Adapter contract error', UNHANDLED_CURRENT_INTENT: 'Unhandled intent', }, systemProcessCategory: { BUSINESS_TASK: 'Business task', SOURCE_MESSAGE_NOTIFICATION: 'Source message notification', ADAPTER_CONTRACT_ERROR: 'Adapter contract error', UNHANDLED_CURRENT_INTENT: 'Unhandled intent', }, readonlyReason: { PROCESSABLE: 'Processable', PREVIOUS_TASK_NOT_FINISHED: 'Previous task is not finished', TASK_FINISHED: 'Task finished', TASK_READ_ONLY: 'Task is read only', ORDER_CLOSED: 'Order closed', QUEUE_EXCLUDED: 'Not in queue', BLOCKED: 'Blocked', MANUAL_REVIEW_REQUIRED: 'Manual review required', }, actorType: { USER: 'User', SYSTEM: 'System', AI: 'AI', AGENT: 'Agent', BACKEND: 'Backend service', }, auditAction: { TASK_CREATED: 'Task created', TASK_LOADED: 'Task loaded', TASK_CONFIRMED: 'Task confirmed', TASK_CONFIRM: 'Task confirmed', DRAFT_SAVED: 'Draft saved', TASK_UPDATED: 'Task updated', OPERA_EXECUTED: 'OPERA executed', OPERA_RETRIED: 'OPERA retried', MANUAL_REVIEW_CREATED: 'Manual review created', MANUAL_REVIEW_CONVERT: 'Manual conversion', MANUAL_REVIEW_RESOLVED: 'Manual review resolved', }, operaOperation: { CREATE_RESERVATION: 'Create reservation', UPDATE_RESERVATION: 'Update reservation', CANCEL_RESERVATION: 'Cancel reservation', UPDATE_ROOMING_LIST: 'Update rooming list', ADD_TRACE_NOTE: 'Add trace note', }, }