export default { app: { name: 'Hotel OMS', theme: 'ธีม', language: 'ภาษา', navigationAria: 'เมนูการจอง', healthUp: 'เชื่อมต่อหลังบ้านแล้ว', healthDown: 'หลังบ้านออฟไลน์', healthChecking: 'กำลังตรวจสอบ', }, auth: { loginTitle: 'เข้าสู่ระบบ', loginSubtitle: 'ใช้บัญชีระบบเพื่อเข้าสู่พื้นที่ทำงานการจองของ TH Hotel', username: 'ชื่อผู้ใช้', password: 'รหัสผ่าน', loginSubmit: 'เข้าสู่ระบบ', loggingIn: 'กำลังเข้าสู่ระบบ', loginFailed: 'ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง', logout: 'ออกจากระบบ', currentUser: 'ผู้ใช้ปัจจุบัน', currentHotel: 'โรงแรมปัจจุบัน', unauthorizedTitle: 'ไม่มีสิทธิ์เข้าถึง', unauthorizedMessage: 'บัญชีนี้ไม่มีสิทธิ์เข้าถึงหน้านี้หรือการดำเนินการนี้', backHome: 'กลับไปหน้าที่เข้าถึงได้', }, nav: { orders: 'รายการออเดอร์', taskQueue: 'คิวงาน', manualInvoice: 'ออกใบแจ้งหนี้เอง', roomingList: 'สร้าง Rooming List', sourceMessages: 'แหล่งที่มาข้อความ', systemStatus: 'สถานะระบบ', orderDetail: 'รายละเอียดออเดอร์', taskDetail: 'รายละเอียดงาน', sourceMessageConversation: 'เธรดอีเมล', debugEml: 'Debug EML', systemSettings: 'ตั้งค่าระบบ', systemUsers: 'ผู้ใช้', systemRoles: 'บทบาท', systemMenus: 'เมนู', systemHotels: 'โรงแรม', systemAudits: 'บันทึกผู้ดูแล', }, common: { loading: 'กำลังโหลด', noData: 'ไม่มีข้อมูล', endpointPending: 'รอเชื่อมต่อ API', endpointMissing: 'ยังขาดข้อมูลจาก API', all: 'ทั้งหมด', unknownStatus: 'สถานะไม่ทราบ', unknownTaskType: 'ประเภทงานไม่ทราบ', unknownTaskSubtype: 'ประเภทย่อยไม่ทราบ', unknownReadonlyReason: 'ยังประมวลผลไม่ได้', unknownActorType: 'ผู้ดำเนินการไม่ทราบ', unknownAuditAction: 'การดำเนินการไม่ทราบ', unknownOperation: 'การดำเนินการไม่ทราบ', previousPage: 'หน้าก่อนหน้า', nextPage: 'หน้าถัดไป', pageStatus: 'หน้า {current} / {total}', pageSize: 'ต่อหน้า', refresh: 'รีเฟรช', saving: 'กำลังบันทึก', cancel: 'ยกเลิก', }, notFound: { title: 'หน้านี้ยังไม่พร้อม', message: 'เมนูหรือลิงก์นี้ยังไม่มีหน้าฝั่งหน้าเว็บรองรับ', backHome: 'กลับไปหน้าที่เข้าถึงได้', }, systemAdmin: { title: 'ตั้งค่าระบบ', subtitle: 'ดูแลผู้ใช้ บทบาท สิทธิ์ เมนู และข้อมูลโรงแรม', navigationAria: 'เมนูตั้งค่าระบบ', common: { keyword: 'คำค้น', viewDetail: 'ดูรายละเอียด', selectRow: 'เลือกหนึ่งแถวเพื่อดูรายละเอียด', create: 'สร้าง', save: 'บันทึก', edit: 'แก้ไข', yes: 'ใช่', no: 'ไม่ใช่', }, status: { ACTIVE: 'เปิดใช้งาน', DISABLED: 'ปิดใช้งาน', }, users: { title: 'ตัวกรองผู้ใช้', tableTitle: 'ข้อมูลผู้ใช้', detailTitle: 'รายละเอียดผู้ใช้', createTitle: 'สร้างผู้ใช้', totalSuffix: 'ผู้ใช้', keywordPlaceholder: 'ชื่อผู้ใช้ / ชื่อแสดง / อีเมล', userStatus: 'สถานะผู้ใช้', username: 'ชื่อผู้ใช้', initialPassword: 'รหัสผ่านเริ่มต้น', displayName: 'ชื่อแสดง', email: 'อีเมล', phone: 'โทรศัพท์', roles: 'บทบาท', hotels: 'โรงแรมที่มีสิทธิ์', defaultHotel: 'โรงแรมเริ่มต้น', saveRoles: 'บันทึกบทบาท', saveHotels: 'บันทึกสิทธิ์โรงแรม', resetPassword: 'รีเซ็ตรหัสผ่าน', temporaryPassword: 'รหัสผ่านชั่วคราว:', created: 'สร้างผู้ใช้แล้ว', columns: { user: 'ผู้ใช้', status: 'สถานะ', roles: 'บทบาท', defaultHotel: 'โรงแรมเริ่มต้น', }, }, roles: { title: 'ตัวกรองบทบาท', tableTitle: 'ข้อมูลบทบาท', detailTitle: 'รายละเอียดบทบาท', createTitle: 'สร้างบทบาทเอง', totalSuffix: 'บทบาท', keywordPlaceholder: 'รหัสบทบาท / ชื่อบทบาท', roleStatus: 'สถานะบทบาท', roleCode: 'รหัสบทบาท', roleName: 'ชื่อบทบาท', builtinReadonly: 'บทบาทระบบถูกดูแลโดยระบบเริ่มต้น จึงแก้ไขที่นี่ไม่ได้', savePermissions: 'บันทึกสิทธิ์', columns: { role: 'บทบาท', status: 'สถานะ', builtin: 'ระบบ', permissions: 'สิทธิ์', users: 'จำนวนผู้ใช้', }, }, menus: { title: 'ตัวกรองเมนู', managementTitle: 'จัดการเมนู', managementHint: 'ดูแลลำดับชั้น ลำดับการแสดง การมองเห็น และสิทธิ์ของเมนูด้านข้าง', createTitle: 'สร้างเมนู', editTitle: 'แก้ไขเมนู', tableTitle: 'ข้อมูลเมนู', totalSuffix: 'เมนู', keywordPlaceholder: 'รหัสเมนู / ชื่อ / เส้นทาง', menuStatus: 'สถานะเมนู', visibleOnly: 'ดูเฉพาะเมนูที่แสดง', treeWarningTitle: 'โครงสร้างเมนูมีการตั้งค่าที่ต้องตรวจสอบ', treeWarningHint: 'หลังบ้านส่งโครงสร้างเมนูกลับมาแล้ว แต่รายการต่อไปนี้ต้องให้ผู้ดูแลตรวจสอบ', treeTitle: 'โครงสร้างเมนู', treeDirty: 'มีการปรับโครงสร้างที่ยังไม่ได้บันทึก', treeDirtyActionBlocked: 'โปรดบันทึกโครงสร้างเมนูก่อนดำเนินการต่อ', treeWarningSaveBlocked: 'โปรดแก้ไขคำเตือนของโครงสร้างเมนูและยืนยันเมนูหลักให้ถูกต้องก่อนบันทึก', saveTreeOrder: 'บันทึกโครงสร้าง', menuCode: 'รหัสเมนู', menuName: 'ชื่อเมนู', parentMenu: 'เมนูหลัก', rootMenu: 'เมนูราก', componentKey: 'รหัสคอมโพเนนต์', iconKey: 'รหัสไอคอน', unknownRoute: 'เส้นทางไม่รู้จัก', unknownRouteHint: 'เส้นทางนี้ยังไม่ถูกรู้จักโดยหน้าเว็บ อาจเปิดไปยังหน้าที่ยังไม่พร้อม', permissionLoadFailed: 'โหลดรายการสิทธิ์ไม่สำเร็จ จึงยังเลือกสิทธิ์และบันทึกการตั้งค่าเมนูไม่ได้', moveUp: 'เลื่อนขึ้น', moveDown: 'เลื่อนลง', columns: { menu: 'เมนู', route: 'เส้นทาง', permission: 'สิทธิ์', visible: 'แสดง', status: 'สถานะ', sort: 'ลำดับ', knownRoute: 'เส้นทางที่รู้จัก', }, }, hotels: { title: 'ตัวกรองโรงแรม', createTitle: 'สร้างโรงแรม', editTitle: 'แก้ไขโรงแรม', tableTitle: 'ข้อมูลโรงแรม', totalSuffix: 'โรงแรม', keywordPlaceholder: 'รหัสโรงแรม / ชื่อโรงแรม', hotelStatus: 'สถานะโรงแรม', hotelId: 'รหัสโรงแรม', hotelName: 'ชื่อโรงแรม', saveStatus: 'บันทึกสถานะ', singleActiveRule: 'โหมดโรงแรมเดียวอนุญาตให้มีโรงแรม ACTIVE ได้เพียงหนึ่งแห่ง โรงแรมที่สร้างใหม่จะปิดใช้งานก่อน', columns: { hotel: 'โรงแรม', status: 'สถานะ', timeZone: 'เขตเวลา', authorizedUsers: 'ผู้ใช้ที่มีสิทธิ์', sort: 'ลำดับ', }, }, audits: { title: 'ตัวกรองบันทึก', tableTitle: 'ข้อมูลบันทึกผู้ดูแล', totalSuffix: 'รายการบันทึก', targetType: 'ประเภทเป้าหมาย', targetId: 'รหัสเป้าหมาย', action: 'การดำเนินการ', columns: { action: 'การดำเนินการ', target: 'เป้าหมาย', actor: 'ผู้ดำเนินการ', occurredAt: 'เวลาเกิดเหตุ', }, }, }, workbench: { title: 'โต๊ะงานออเดอร์', subtitle: 'ดู กรอง และจัดการงานออเดอร์การจอง', filters: 'ตัวกรอง', dateRange: 'ช่วงวันที่', businessKey: 'เลขธุรกิจ / เลขชั่วคราว', orderStatus: 'สถานะออเดอร์', taskStatus: 'สถานะงาน', taskCardType: 'ประเภทการ์ดงาน', reset: 'รีเซ็ต', tableTitle: 'ออเดอร์ / งาน', columns: { businessKey: 'เลขธุรกิจ', orderStatus: 'สถานะออเดอร์', currentTask: 'งานปัจจุบัน', taskStatus: 'สถานะงาน', updatedAt: 'อัปเดตล่าสุด', operation: 'การดำเนินการ', }, view: 'ดู', totalPrefix: 'รวม', totalSuffix: 'รายการงาน', }, orderList: { title: 'รายการออเดอร์', subtitle: 'ดูงานการจองตามออเดอร์', keyword: 'เลขกรุ๊ป / เลขยืนยัน', keywordPlaceholder: 'เลขกรุ๊ป / เลขยืนยัน', groupCode: 'เลขกรุ๊ป', groupCodePlaceholder: 'กรอกเลขกรุ๊ป', confirmationNumber: 'เลขยืนยัน', confirmationNumberPlaceholder: 'กรอกเลขยืนยัน', tableTitle: 'ข้อมูลออเดอร์', totalSuffix: 'ออเดอร์', viewDetail: 'ดูรายละเอียด', continueTask: 'ทำงานต่อ', noOpenTask: 'ไม่มีงานค้าง', endpointPending: 'API รายการออเดอร์ยังไม่เชื่อมต่อ จึงไม่แสดงข้อมูลจำลอง', columns: { order: 'ออเดอร์', status: 'สถานะ', openTasks: 'งานที่ยังไม่ปิด', createdAt: 'เวลาสร้าง', }, }, manualInvoice: { title: 'ออกใบแจ้งหนี้เอง', createTitle: 'สร้าง Invoice', subtitle: 'กรอกข้อมูลเองเพื่อสร้าง Proforma Invoice PDF โดยไม่ต้องอ้างอิงออเดอร์หรืองาน', sourceBadge: 'สร้างด้วยตนเอง', independentHint: 'หน้า V1 นี้ไม่ผูกกับออเดอร์หรืองาน หลังบ้านจะบันทึกประวัติการสร้างและ audit', documentSection: 'ข้อมูลเอกสาร', recipientSection: 'ผู้รับ', bookingSection: 'ข้อมูลการจอง', chargesSection: 'รายการค่าใช้จ่าย', previewSection: 'ตัวอย่างยอดเงิน', resultSection: 'ผลการสร้าง', invoiceDate: 'วันที่ Invoice', bookingDate: 'วันที่ Booking', dueDate: 'Due Date', companySeed: 'เลือก Company', contactSeed: 'เลือก Attention', selectCompany: 'เลือก Company', selectContact: 'เลือก Attention', company: 'Company', attention: 'Attention', address: 'Address', companyInputPlaceholder: 'กรอกชื่อบริษัท', attentionInputPlaceholder: 'กรอกชื่อผู้รับ', addressInputPlaceholder: 'กรอกที่อยู่เรียกเก็บเงินแบบเต็ม', telephone: 'Tel', email: 'Email', groupName: 'Group Name', arrivalDate: 'Arrival Date', departureDate: 'Departure Date', roomRateNote: 'Room Rate Note', roomRateNotePlaceholder: 'เช่น including BF', datePlaceholder: 'yyyy-mm-dd', extraBedRate: 'Extra Bed Rate', description: 'Description', roomType: 'Room Type', quantity: 'Quantity', rate: 'Rate', nights: 'Nights', amount: 'Amount', subtotal: 'Sub-Total', vat: 'VAT 7%', total: 'Total', addCharge: 'เพิ่มแถว', removeCharge: 'ลบ', chargeLineLabel: 'แถวที่ {index}', removeChargeLineAria: 'ลบแถวที่ {index}', maxChargesReached: 'V1 รองรับได้สูงสุด 10 รายการค่าใช้จ่าย', previewDisclaimer: 'ยอดนี้เป็นเพียงตัวอย่าง ยอดสุดท้ายให้ยึด totals จากหลังบ้าน', manualOverrideHint: 'เลือก Company / Attention แล้วระบบจะกรอกข้อมูลให้ แต่ยังแก้ไขข้อความได้ทั้งหมด', generate: 'ยืนยันและสร้าง PDF', generating: 'กำลังสร้าง', openPdf: 'เปิด PDF', downloadPdf: 'ดาวน์โหลด PDF', downloadingPdf: 'กำลังดาวน์โหลด', downloadFallback: 'เบราว์เซอร์ดาวน์โหลด PDF โดยตรงไม่ได้ จึงเปิดหน้า PDF ให้แทน', technicalDetails: 'รายละเอียดทางเทคนิค', generationId: 'รหัสการสร้าง', generationStatus: 'สถานะ', pdfUrl: 'ลิงก์ PDF', hotelId: 'รหัสโรงแรม', templateCode: 'เทมเพลต', createdAt: 'เวลาสร้าง', noPdfUrl: 'หลังบ้านไม่ได้ส่งลิงก์ PDF กลับมา', backendTotals: 'ยอดจากหลังบ้าน', validationTitle: 'กรุณาแก้ไขแบบฟอร์ม', fieldErrors: { required: 'จำเป็นต้องกรอก', invalidEmail: 'รูปแบบ Email ไม่ถูกต้อง', dateOrder: 'ลำดับวันที่ไม่ถูกต้อง', positiveNumber: 'ต้องมากกว่า 0', nonNegativeNumber: 'ต้องไม่ต่ำกว่า 0', }, statuses: { SUCCEEDED: 'สร้างแล้ว', GENERATED: 'สร้างแล้ว', FAILED: 'สร้างไม่สำเร็จ', PROCESSING: 'กำลังสร้าง', }, errors: { FRONTEND_VALIDATION: 'ตรวจสอบแบบฟอร์มไม่ผ่าน กรุณาตรวจฟิลด์ที่จำเป็นและรายการค่าใช้จ่าย', RESERVATION_INVOICE_VALIDATION_FAILED: 'ตรวจสอบข้อมูล Invoice ไม่ผ่าน กรุณาตรวจแบบฟอร์ม', RESERVATION_INVOICE_CONTEXT_MISMATCH: 'ออเดอร์หรืองานไม่ตรงกัน', DOCUMENT_CONVERSION_FAILED: 'สร้าง PDF ไม่สำเร็จ กรุณาลองอีกครั้งหรือติดต่อผู้ดูแล', DOCUMENT_CONVERSION_TIMEOUT: 'สร้าง PDF หมดเวลา กรุณาลองใหม่ภายหลัง', AUTH_401: 'เซสชันหมดอายุ กรุณาเข้าสู่ระบบใหม่', AUTH_403: 'บัญชีนี้ไม่มีสิทธิ์ออกใบแจ้งหนี้เอง', UNKNOWN: 'สร้างไม่สำเร็จ กรุณาลองอีกครั้ง', requiredFields: 'กรุณากรอกวันที่ ผู้รับ ข้อมูลการจอง และอย่างน้อยหนึ่งรายการค่าใช้จ่ายที่ถูกต้อง', invalidEmail: 'รูปแบบ Email ไม่ถูกต้อง', dueDateBeforeBookingDate: 'Due Date ต้องไม่เร็วกว่าวันที่ Booking', departureBeforeArrival: 'Departure Date ต้องหลัง Arrival Date', extraBedNegative: 'Extra Bed Rate ต้องไม่ต่ำกว่า 0', chargePositive: 'Quantity, Rate และ Nights ต้องมากกว่า 0', }, }, roomingList: { eyebrow: 'เครื่องมือ Reservation', title: 'สร้าง Rooming List Excel', subtitle: 'อัปโหลดรายชื่อกรุ๊ป กรอกจำนวนคนต่อห้องและค่าเริ่มต้น แล้วดาวน์โหลดไฟล์ Excel ที่สร้างแล้ว', currentHotel: 'โรงแรมปัจจุบัน', sourceSection: 'ไฟล์รายชื่อและข้อมูลจำเป็น', targetSection: 'ค่าเริ่มต้นของ Excel ปลายทาง', sourceFile: 'ไฟล์ Excel ต้นทาง', sourceFileHint: 'รองรับ .xls / .xlsx และหน้าเว็บจะไม่อ่านหรือบันทึกข้อมูลรายชื่อแขก', noFile: 'เลือกไฟล์ .xls / .xlsx', peoplePerRoom: 'จำนวนคนต่อห้อง', arrival: 'Arrival', departure: 'Departure', roomType: 'Room Type', roomTypePlaceholder: 'เช่น DLX / TWN', titleColumn: 'Title', rateCode: 'Rate Code', adults: 'Adults', children: 'Children', paymentType: 'Payment Type', vip: 'VIP', nationality: 'Nationality', email: 'Email', idType: 'ID Type', idNumber: 'ID Number', generate: 'สร้างและดาวน์โหลด Excel', generating: 'กำลังสร้าง', validationTitle: 'กรุณาแก้ไขแบบฟอร์ม', resultSuccess: 'ผลการสร้าง', resultDownloaded: 'สร้าง Excel แล้ว และเริ่มดาวน์โหลดในเบราว์เซอร์แล้ว', downloadedFile: 'ไฟล์ที่ดาวน์โหลด', fieldErrors: { fileRequired: 'กรุณาเลือกไฟล์ Excel ต้นทาง', fileType: 'รองรับเฉพาะไฟล์ .xls / .xlsx', positiveInteger: 'จำนวนคนต่อห้องต้องมากกว่า 0', nonNegativeInteger: 'ต้องเป็น 0 หรือจำนวนเต็มบวก', arrivalRequired: 'กรุณากรอก Arrival', departureRequired: 'กรุณากรอก Departure', dateFormat: 'รูปแบบวันที่ต้องเป็น yyyy-MM-dd', departureAfterArrival: 'Departure ต้องอยู่หลัง Arrival', roomTypeRequired: 'กรุณากรอก Room Type', invalidEmail: 'รูปแบบ Email ไม่ถูกต้อง', }, errors: { FRONTEND_VALIDATION: 'ตรวจสอบแบบฟอร์มไม่ผ่าน กรุณาตรวจฟิลด์ที่จำเป็น', ROOMING_LIST_VALIDATION_FAILED: 'ตรวจสอบข้อมูล Rooming List ไม่ผ่าน กรุณาตรวจแบบฟอร์ม', ROOMING_LIST_SOURCE_FILE_INVALID: 'ไฟล์รายชื่อต้นทางไม่ถูกต้อง กรุณาตรวจหัวตารางและรูปแบบไฟล์', FRONTEND_PERMISSION_DENIED: 'บัญชีนี้ไม่มีสิทธิ์สร้าง Rooming List', HOTEL_ACCESS_DENIED: 'บัญชีนี้ไม่มีสิทธิ์เข้าถึงโรงแรมที่เลือก', AUTH_TOKEN_REQUIRED: 'กรุณาเข้าสู่ระบบก่อนสร้าง Rooming List', AUTH_SESSION_INVALID: 'เซสชันหมดอายุ กรุณาเข้าสู่ระบบใหม่', UNKNOWN: 'สร้าง Rooming List ไม่สำเร็จ กรุณาลองใหม่ภายหลัง', }, }, order: { summary: 'สรุปออเดอร์', taskQueue: 'คิวงานของออเดอร์นี้', sourceMessage: 'ข้อความต้นทาง', businessKeySource: 'แหล่งที่มาของเลขธุรกิจ', updatedAt: 'อัปเดตล่าสุด', guestName: 'แขก', arrivalDate: 'วันเข้าพัก', roomType: 'ประเภทห้อง', amount: 'ยอดเงิน', openTask: 'จัดการงาน', groupCode: 'เลขกรุ๊ป (Group Code)', confirmationNumber: 'เลขยืนยัน (Confirmation No.)', temporaryOrderNo: 'เลขออเดอร์ชั่วคราว', blockCode: 'เลขบล็อกกรุ๊ป (Block Code)', createdAt: 'เวลาสร้าง', conversationMessageCount: 'จำนวนอีเมลในเธรด', sourceSummaryPending: 'ข้อมูลสรุปอีเมลต้นทางในไทม์ไลน์งานยังรอหลังบ้านเพิ่มเติม โปรดเข้าไปดูจากงานที่เกี่ยวข้อง', }, taskList: { title: 'รายการงาน', subtitle: 'ดูคิวงานการจองตามงาน', keyword: 'คำค้นออเดอร์ / อีเมล', keywordPlaceholder: 'เลขออเดอร์ / คำค้นอีเมล', taskType: 'ประเภทงาน', taskSubtype: 'ประเภทย่อยของงาน', tableTitle: 'ข้อมูลงาน', totalSuffix: 'งาน', noSourceSubject: 'ไม่มีหัวข้ออีเมลต้นทาง', sourceReceivedAt: 'เวลารับอีเมล', canProcess: 'ประมวลผลได้', cannotProcess: 'ประมวลผลไม่ได้', queueParticipation: 'อยู่ในคิวหรือไม่', queueAll: 'สถานะคิวทั้งหมด', queueIncluded: 'อยู่ในคิว', queueExcluded: 'ไม่อยู่ในคิว', viewTask: 'ดูงาน', viewOrder: 'ดูออเดอร์', viewConversation: 'ดูเธรดอีเมล', sourceOnlyOrderLabel: 'ข้อความต้นทางแบบอ่านอย่างเดียว', hiddenTechnicalOrder: 'ไม่มีออเดอร์ที่แสดงได้', columns: { task: 'งาน', order: 'ออเดอร์', card: 'การ์ดงาน', status: 'สถานะ', source: 'อีเมลต้นทาง', queue: 'คิว', }, }, task: { title: 'การ์ดงาน', fieldContract: 'สัญญาข้อมูล', evidence: 'หลักฐาน', saveDraft: 'บันทึกร่าง', confirm: 'ยืนยันงาน', blocked: 'ถูกบล็อก', readOnly: 'อ่านอย่างเดียว', operaOperations: 'การจำลอง OPERA', audits: 'ไทม์ไลน์ตรวจสอบ', noOperations: 'การจำลอง OPERA จะถูกสร้างหลังยืนยันงาน', noAudits: 'ยังไม่มีบันทึกตรวจสอบ', execute: 'ดำเนินการ', retry: 'ลองใหม่', simulateFailure: 'จำลองความล้มเหลว', fieldNotes: 'หมายเหตุข้อมูล', emptyValue: 'ยังไม่กรอก', attachments: 'ไฟล์แนบ', fieldAreaFallback: 'ข้อมูลพื้นฐาน', savedLocally: 'บันทึกร่างแล้ว', confirmedLocally: 'ยืนยันงานแล้ว', validationFailed: 'โปรดแก้ไขข้อมูลก่อน', validation: { required: '{field} จำเป็นต้องกรอก', enum: '{field} ต้องเลือกจากตัวเลือกที่กำหนด', date: '{field} ต้องใช้รูปแบบวันที่ YYYY-MM-DD', number: '{field} ต้องเป็นตัวเลข', }, viewOrder: 'ดูออเดอร์', viewConversation: 'ดูเธรดอีเมล', parentGroup: 'Parent Group', sourceMessageId: 'รหัสข้อความต้นทาง (ID)', sourceSubject: 'หัวข้อต้นทาง', sourceSender: 'ผู้ส่ง', sourceReceivedAt: 'เวลารับ', sourceSummaryPending: 'ข้อมูลสรุปอีเมลต้นทางยังรอหลังบ้านเพิ่มเติม', sourceEmailPreview: 'ตัวอย่างอีเมลต้นทาง', sourceEmailExcerpt: 'ข้อความบางส่วนของอีเมล', sourceEmailAttachments: 'ไฟล์แนบ', sourceEmailNoExcerpt: 'ไม่มีข้อความบางส่วน', sourceEmailNoAttachments: 'ไม่มีไฟล์แนบ', sourceEmailFullConversation: 'ดูเธรดอีเมลทั้งหมด', sourceOnlyResult: 'ผลลัพธ์ทางเข้าของข้อความต้นทาง', sourceOnlyReadonly: 'งานนี้ใช้แสดงผลลัพธ์ทางเข้าของข้อความต้นทางเท่านั้น ไม่เข้าสู่การจัดการออเดอร์ การแก้ไขข้อมูล หรือ OPERA', sourceOnlyNoOpera: 'งานประเภทนี้ไม่เกี่ยวข้องกับ OPERA', routeInfo: 'ข้อมูลเส้นทางและการประมวลผล', resultType: 'ประเภทผลลัพธ์', aiTaskType: 'ประเภทงานจาก AI', systemTaskType: 'ประเภทงานของระบบ', taskCardType: 'ประเภทการ์ดงาน', taskSubtype: 'ประเภทย่อยของงาน', routeCode: 'รหัสเส้นทาง', systemProcessCategory: 'หมวดการประมวลผลระบบ', reviewStatus: 'สถานะการตรวจสอบ', entryResultCode: 'รหัสผลลัพธ์ทางเข้า', entryResultMeaning: 'ความหมายผลลัพธ์', entryResultDescription: 'คำอธิบายผลลัพธ์', entryResultSourceMessageId: 'รหัสข้อความต้นทางของผลลัพธ์', rawAnswer: 'คำตอบดิบจาก SuperAgent', agentAssessment: 'ข้อมูลดิบจาก AI', sourceNotification: 'การแจ้งเตือนข้อความต้นทาง', manualReviewData: 'ข้อมูลตรวจสอบด้วยคน', manualReviewEvidence: 'หลักฐานการตรวจสอบด้วยคน', manualReviewEvidenceFallback: 'ยืนยันตัวตน Parent Group จากอีเมลต้นทางและรายการตัวเลือก', manualReviewMissingFields: 'ข้อมูลที่ขาด', manualReviewBlockingPoints: 'จุดที่บล็อก', manualReviewConflictingPoints: 'จุดที่ขัดแย้ง', manualReviewSuggestedActions: 'การดำเนินการที่แนะนำ', manualReviewEvidenceToCheck: 'หลักฐานที่ควรตรวจ', parentIdentityCandidates: 'ตัวเลือก Parent Group', parentIdentityCandidate: 'ตัวเลือก', noParentIdentityCandidates: 'ยังไม่มีตัวเลือก Parent Group ต้องให้หลังบ้านส่ง context_used.parent_identity_candidates', adapterContractErrors: 'ข้อผิดพลาดสัญญา Adapter', unhandledIntents: 'เจตนาที่ยังไม่รองรับ', noSourceOnlyResult: 'ยังไม่มีผลลัพธ์ทางเข้าของข้อความต้นทาง', manualResolution: { title: 'ปลดบล็อกการตรวจสอบด้วยคน', description: 'เติมข้อมูลที่ขาดบนการ์ดงานเดิม แล้วให้หลังบ้านตรวจสอบและปลดบล็อกงาน', pendingStatus: 'รอตรวจสอบ', resolvedTitle: 'ตรวจสอบแล้ว', reasonCode: 'รหัสเหตุผล', reviewInstruction: 'คำแนะนำการตรวจสอบ', confirmedOrderId: 'รหัสออเดอร์ที่ยืนยัน', fieldValuePlaceholder: 'กรอกค่าที่ยืนยันแล้ว', noSupportedMissingFields: 'ข้อมูลที่ขาดปัจจุบันยังไม่รองรับการปลดบล็อกจากหน้าเว็บ โปรดยืนยัน mapping กับหลังบ้าน', unopenedFieldsTitle: 'ข้อมูลที่ยังไม่เปิดให้แก้ไข', fieldBackendUnopened: 'หลังบ้านยังไม่ได้เปิดให้แก้ไขข้อมูลนี้', fieldRequired: 'โปรดกรอกข้อมูลที่ขาดและรหัสออเดอร์ที่ยืนยัน', reason: 'หมายเหตุการจัดการ', reasonPlaceholder: 'ไม่บังคับ ระบุเหตุผลการตัดสินใจ', submit: 'ส่งผลตรวจสอบ', succeeded: 'ปลดบล็อกการตรวจสอบด้วยคนแล้ว และรีเฟรชสถานะงานแล้ว', }, manualConversion: { title: 'แปลงงานด้วยคน', description: 'แปลงงาน Fallback / งานตรวจสอบด้วยคนให้เป็นงานการจองที่ประมวลผลได้', targetTaskType: 'ประเภทงานปลายทาง', targetOrder: 'ออเดอร์ปลายทาง', targetOrderHelp: 'งานแก้ไขหรือยกเลิกต้องเลือกออเดอร์ที่ยังไม่ถูกลบ', targetOrderKeyword: 'ค้นหาออเดอร์ปลายทาง', targetOrderKeywordPlaceholder: 'เลขกรุ๊ป เลขยืนยัน หรือคำค้นออเดอร์', searchTargetOrders: 'ค้นหาออเดอร์', noTargetOrderCandidates: 'กรอกคำค้นแล้วค้นหาออเดอร์ปลายทาง', orderDeletedDisabled: 'เลือกออเดอร์ที่ถูกลบแล้วไม่ได้', newBookingHint: 'การแปลงเป็นจองใหม่ไม่จำเป็นต้องเลือกออเดอร์ปลายทาง ระบบหลังบ้านจะจัดออเดอร์ตามบริบทงาน', reason: 'เหตุผลการแปลง', reasonPlaceholder: 'ไม่บังคับ ระบุเหตุผลการตัดสินใจ', submit: 'แปลงงาน', targetOrderRequired: 'โปรดเลือกออเดอร์ปลายทาง', succeeded: 'แปลงงานสำเร็จ: {taskType}, ออเดอร์ปลายทาง {orderId}', orderId: 'รหัสออเดอร์', }, }, conversation: { title: 'รายละเอียดเธรดอีเมล', subtitle: 'ดูอีเมลทั้งหมดและการตอบกลับในเธรดต้นทาง', endpointPending: 'API รายละเอียดเธรดอีเมลยังไม่เชื่อมต่อ จึงไม่แสดงข้อมูลจำลอง', subject: 'หัวข้อเธรด', messageCount: 'จำนวนอีเมล', channel: 'ช่องทาง', firstReceivedAt: 'รับครั้งแรก', lastReceivedAt: 'รับล่าสุด', emptyBody: 'เนื้อหาอีเมลว่าง', attachments: 'ไฟล์แนบ / รูปภาพในอีเมล', unnamedAttachment: 'ไฟล์แนบไม่มีชื่อ', relatedOrders: 'ออเดอร์ที่เกี่ยวข้อง', relatedTasks: 'งานที่เกี่ยวข้อง', }, debugEml: { title: 'อัปโหลด Debug EML', subtitle: 'อัปโหลดอีเมล .eml หนึ่งฉบับและดูผล Debug ของ SourceMessage กับ SuperAgent', uploadConfig: 'ค่าการอัปโหลด', hotelId: 'Hotel ID', debugUploadKey: 'คีย์อัปโหลด Debug', runLabel: 'ป้ายกำกับรัน', emlFile: 'ไฟล์ .eml', submit: 'ส่ง Debug', submitting: 'รอ SuperAgent', executionStatus: 'สถานะการทำงาน', status: 'สถานะ', debugRunId: 'Debug run ID', backendStatus: 'สถานะจากระบบหลังบ้าน', backendMessage: 'ข้อความจากระบบหลังบ้าน', waitingSuperAgent: 'กำลังแยกอีเมลและรอ SuperAgent ตอบกลับ', systemStages: 'ขั้นตอนของระบบ', superAgentTrace: 'SuperAgent Trace', traceToolName: 'เครื่องมือ', traceInputSummary: 'สรุป input', traceOutputSummary: 'สรุป output', traceStatus: 'สถานะ', traceTime: 'เวลา', sourceTrace: 'การติดตาม SourceMessage', sourceMessageId: 'SourceMessage ID', sourceProvider: 'Source provider', externalMessageId: 'External message ID', externalConversationId: 'External conversation ID', mailPreview: 'ตัวอย่างอีเมล', noSafeHtml: 'ยังไม่มี HTML ที่ปลอดภัยสำหรับแสดงผล', uploadedMedia: 'สื่อที่อัปโหลด', unnamedMedia: 'สื่อไม่มีชื่อ', rawHtml: 'HTML หลังประมวลผลดิบ', superAgentResult: 'ผลจาก SuperAgent', superAgentSessionId: 'SuperAgent session ID', superAgentRunId: 'SuperAgent run ID', parsedJson: 'JSON ที่แยกแล้ว', rawAnswer: 'คำตอบดิบ', warnings: 'คำเตือน', debugPayload: 'Debug payload', statuses: { idle: 'รออัปโหลด', uploading: 'กำลังทำงาน', succeeded: 'สำเร็จ', failed: 'ล้มเหลว', }, errors: { REQUEST_FIELD_REQUIRED: 'ขาดข้อมูลจำเป็น โปรดตรวจ Hotel ID ไฟล์ หรือพารามิเตอร์คำขอ', EML_FILE_REQUIRED: 'โปรดเลือกไฟล์อีเมล .eml', EML_FILE_TOO_LARGE: 'ไฟล์อีเมลเกินขนาดที่หลังบ้านกำหนด', INVALID_FILE_TYPE: 'รองรับเฉพาะไฟล์อีเมล .eml', DEBUG_UPLOAD_KEY_INVALID: 'คีย์อัปโหลด Debug ขาดหายหรือไม่ถูกต้อง', EML_PARSE_FAILED: 'ไม่สามารถแยกไฟล์อีเมลได้', OSS_UPLOAD_FAILED: 'อัปโหลด OSS ล้มเหลว โปรดให้หลังบ้านตรวจสอบ', SUPERAGENT_OPEN_API_FAILED: 'เรียก SuperAgent ล้มเหลว SourceMessage อาจถูกบันทึกแล้ว', DEBUG_EML_RUN_FAILED: 'กระบวนการ Debug EML ล้มเหลวภายใน', UNKNOWN: 'อัปโหลด Debug EML ล้มเหลว', }, }, status: { TEMPORARY: 'ชั่วคราว', ACTIVE: 'ใช้งานอยู่', ENDED: 'สิ้นสุดแล้ว', LOGIC_DELETED: 'ลบแล้ว', PENDING_CONFIRM: 'รอยืนยัน', READY: 'รอดำเนินการ', EXECUTING: 'กำลังดำเนินการ', FAILED: 'ล้มเหลว', COMPLETED: 'เสร็จแล้ว', PENDING: 'รอดำเนินการ', SUCCEEDED: 'สำเร็จ', BLOCKED: 'ถูกบล็อก', SKIPPED: 'ข้าม', }, cardType: { NEW_BOOKING: 'จองใหม่', UPDATE_BOOKING: 'แก้ไขการจอง', CANCEL_BOOKING: 'ยกเลิกการจอง', CANCEL_ALLOTMENT: 'ยกเลิกโควตา Parent Group', VOUCHER: 'วอเชอร์', ROOMING_LIST: 'รายชื่อห้องพัก', AMEND_GROUP_CODE: 'แก้ไขเลขกรุ๊ป', TRACE_NOTE: 'หมายเหตุติดตาม (Trace)', TA_RECORD: 'ข้อมูลบริษัททัวร์', MESSAGE_NOTIFICATION: 'แจ้งเตือนข้อความ', INFORMATIONAL_MESSAGE: 'แจ้งเตือนข้อความ (เดิม)', SOURCE_MESSAGE_REVIEW_NOTIFICATION: 'แจ้งเตือนข้อความต้นทาง', SOURCE_MESSAGE_ONLY: 'ข้อความต้นทางแบบอ่านอย่างเดียว', MANUAL_REVIEW: 'ตรวจสอบด้วยคน', FALLBACK_REVIEW: 'ตรวจสอบด้วยคน', }, taskSubtype: { NEW_BOOKING: 'จองใหม่', UPDATE_BOOKING: 'แก้ไขการจอง', CANCEL_BOOKING: 'ยกเลิกการจอง', RATE_CHANGE: 'ปรับราคา', UPDATE_STAY_DATES: 'แก้ไขวันเข้าพัก', UPDATE_ROOM_TYPE: 'แก้ไขประเภทห้อง', UPDATE_FIX_CHARGE: 'แก้ไขค่าบริการคงที่', CANCEL_ALLOTMENT_CONTROL_BLOCK: 'ยกเลิกบล็อก Parent Group ทั้งก้อน', NEW_GROUP_BLOCK: 'บล็อกกรุ๊ปใหม่', NEW_FIT_RESERVATION: 'จองรายบุคคลใหม่', MANUAL_REVIEW: 'ตรวจสอบด้วยคน', S10: 'อีเมลข้อมูลทั่วไป (S10)', S99: 'สร้างชุดข้อมูลธุรกิจไม่ได้ (S99)', S000: 'อีเมลข้อมูลทั่วไป', S999: 'ไม่สามารถสร้างชุดข้อมูลธุรกิจได้', }, resultType: { NORMAL_TASK: 'งานปกติ', MANUAL_REVIEW: 'ตรวจสอบด้วยคน', SOURCE_MESSAGE_REVIEW_NOTIFICATION: 'แจ้งเตือนข้อความต้นทาง', ADAPTER_CONTRACT_ERROR: 'ข้อผิดพลาดสัญญา Adapter', UNHANDLED_CURRENT_INTENT: 'เจตนาที่ยังไม่รองรับ', }, systemProcessCategory: { BUSINESS_TASK: 'งานธุรกิจ', SOURCE_MESSAGE_NOTIFICATION: 'แจ้งเตือนข้อความต้นทาง', ADAPTER_CONTRACT_ERROR: 'ข้อผิดพลาดสัญญา Adapter', UNHANDLED_CURRENT_INTENT: 'เจตนาที่ยังไม่รองรับ', }, readonlyReason: { PROCESSABLE: 'ประมวลผลได้', PREVIOUS_TASK_NOT_FINISHED: 'งานก่อนหน้ายังไม่เสร็จ', TASK_FINISHED: 'งานเสร็จแล้ว', TASK_READ_ONLY: 'งานเป็นอ่านอย่างเดียว', ORDER_CLOSED: 'ออเดอร์ปิดแล้ว', QUEUE_EXCLUDED: 'ไม่อยู่ในคิว', BLOCKED: 'ถูกบล็อก', MANUAL_REVIEW_REQUIRED: 'ต้องตรวจสอบด้วยคน', }, actorType: { USER: 'ผู้ใช้', SYSTEM: 'ระบบ', AI: 'AI', AGENT: 'ผู้ช่วยภายนอก', BACKEND: 'บริการหลังบ้าน', }, auditAction: { TASK_CREATED: 'สร้างงาน', TASK_LOADED: 'อ่านงาน', TASK_CONFIRMED: 'ยืนยันงาน', TASK_CONFIRM: 'ยืนยันงาน', DRAFT_SAVED: 'บันทึกร่าง', TASK_UPDATED: 'อัปเดตงาน', OPERA_EXECUTED: 'ดำเนินการ OPERA', OPERA_RETRIED: 'ลอง OPERA ใหม่', MANUAL_REVIEW_CREATED: 'สร้างงานตรวจสอบด้วยคน', MANUAL_REVIEW_CONVERT: 'แปลงงานด้วยคน', MANUAL_REVIEW_RESOLVED: 'ปลดบล็อกการตรวจสอบด้วยคน', }, operaOperation: { CREATE_RESERVATION: 'สร้างการจอง', UPDATE_RESERVATION: 'อัปเดตการจอง', CANCEL_RESERVATION: 'ยกเลิกการจอง', UPDATE_ROOMING_LIST: 'อัปเดตรายชื่อห้องพัก', ADD_TRACE_NOTE: 'เพิ่มหมายเหตุติดตาม', }, }