Ver Fonte

新增完整后端泰语提示

补齐全部后端消息的泰语翻译,并通过键集合、占位符和典型消息契约防止语言包缺失或格式错误。
qmj há 3 dias atrás
pai
commit
0fc704731f

+ 338 - 0
ruoyi-admin/src/main/resources/i18n/messages_th_TH.properties

@@ -0,0 +1,338 @@
+# ข้อความแสดงข้อผิดพลาด
+not.null=* จำเป็นต้องกรอก
+user.jcaptcha.error=รหัสยืนยันไม่ถูกต้อง
+user.jcaptcha.expire=รหัสยืนยันหมดอายุแล้ว
+user.not.exists=ไม่มีผู้ใช้นี้หรือรหัสผ่านไม่ถูกต้อง
+user.password.not.match=ไม่มีผู้ใช้นี้หรือรหัสผ่านไม่ถูกต้อง
+user.password.retry.limit.count=ป้อนรหัสผ่านผิด {0} ครั้ง
+user.password.retry.limit.exceed=ป้อนรหัสผ่านผิด {0} ครั้ง บัญชีถูกล็อก {1} นาที
+user.password.delete=ขออภัย บัญชีของคุณถูกลบแล้ว
+user.blocked=ผู้ใช้ถูกระงับ โปรดติดต่อผู้ดูแลระบบ
+role.blocked=บทบาทถูกระงับ โปรดติดต่อผู้ดูแลระบบ
+login.blocked=IP ที่เข้าใช้งานถูกเพิ่มในบัญชีดำของระบบ
+user.logout.success=ออกจากระบบสำเร็จ
+
+length.not.valid=ความยาวต้องอยู่ระหว่าง {min} ถึง {max} อักขระ
+
+user.username.not.valid=* ต้องมี 2-20 อักขระ เป็นอักษรจีน ตัวอักษร ตัวเลข หรือขีดล่าง และห้ามขึ้นต้นด้วยตัวเลข
+user.password.not.valid=* 5-50 อักขระ
+
+user.email.not.valid=รูปแบบอีเมลไม่ถูกต้อง
+user.mobile.phone.number.not.valid=รูปแบบหมายเลขโทรศัพท์ไม่ถูกต้อง
+user.login.success=เข้าสู่ระบบสำเร็จ
+user.register.success=ลงทะเบียนสำเร็จ
+user.notfound=โปรดเข้าสู่ระบบอีกครั้ง
+user.forcelogout=ผู้ดูแลระบบบังคับให้ออกจากระบบ โปรดเข้าสู่ระบบอีกครั้ง
+user.unknown.error=เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ โปรดเข้าสู่ระบบอีกครั้ง
+
+## ข้อความอัปโหลดไฟล์
+upload.exceed.maxSize=ขนาดไฟล์ที่อัปโหลดเกินขีดจำกัด!<br/>ขนาดไฟล์สูงสุดที่อนุญาตคือ {0} MB!
+upload.filename.exceed.length=ชื่อไฟล์ที่อัปโหลดต้องไม่เกิน {0} อักขระ
+
+## สิทธิ์
+no.permission=คุณไม่มีสิทธิ์เข้าถึงข้อมูล โปรดติดต่อผู้ดูแลระบบเพื่อเพิ่มสิทธิ์ [{0}]
+no.create.permission=คุณไม่มีสิทธิ์สร้างข้อมูล โปรดติดต่อผู้ดูแลระบบเพื่อเพิ่มสิทธิ์ [{0}]
+no.update.permission=คุณไม่มีสิทธิ์แก้ไขข้อมูล โปรดติดต่อผู้ดูแลระบบเพื่อเพิ่มสิทธิ์ [{0}]
+no.delete.permission=คุณไม่มีสิทธิ์ลบข้อมูล โปรดติดต่อผู้ดูแลระบบเพื่อเพิ่มสิทธิ์ [{0}]
+no.export.permission=คุณไม่มีสิทธิ์ส่งออกข้อมูล โปรดติดต่อผู้ดูแลระบบเพื่อเพิ่มสิทธิ์ [{0}]
+no.view.permission=คุณไม่มีสิทธิ์ดูข้อมูล โปรดติดต่อผู้ดูแลระบบเพื่อเพิ่มสิทธิ์ [{0}]
+
+## ข้อความตอบกลับที่กำหนดเอง
+no.obtained.permission=รับข้อมูลสำเร็จ
+no.obtained.success=ค้นหาสำเร็จ
+no.action.success=ดำเนินการสำเร็จ
+no.action.fail=ดำเนินการไม่สำเร็จ
+no.data.exist.not.del=หมวดหมู่นี้มีสินค้าอยู่ จึงไม่สามารถลบได้
+no.comment.success=รีวิวสำเร็จ
+no.comment.fail=ไม่สำเร็จ โปรดลองอีกครั้ง
+no.comment.repeat=คุณได้รีวิวคำสั่งซื้อนี้แล้ว
+no.delete.success=ลบสำเร็จ
+no.delete.fail=ไม่สำเร็จ โปรดลองอีกครั้ง
+no.tip.lock.keywork=โปรดกรอกคำค้นหา
+no.load.success=โหลดสำเร็จ
+no.modify.success=แก้ไขสำเร็จ
+no.collection.success=เพิ่มในรายการโปรดสำเร็จ
+no.collection.cancel=ยกเลิกรายการโปรด
+no.success=สำเร็จ
+no.cash_on_delivery_amount.exceed.limit_amount=ยอดเก็บเงินปลายทางเกินวงเงินที่กำหนด
+no.exist.cash_on_delivery_order.incomplete=ยังมีคำสั่งซื้อแบบเก็บเงินปลายทางหลายรายการที่ยังไม่เสร็จสิ้น
+no.address.not.exist=ไม่มีที่อยู่จัดส่งนี้
+no.mendian.not.exist=ไม่มีร้านค้านี้แล้ว
+no.mendian.not.set.business.hours=ร้านค้านี้ยังไม่ได้กำหนดเวลาทำการ
+no.mendian.is.closed=ร้านค้าปิดให้บริการแล้ว
+no.goods.not.exist=ไม่มีสินค้านี้แล้ว โปรดเลือกสินค้าอื่นเพื่อสั่งซื้อ
+no.goods.is.off.shelf=สินค้าถูกนำออกจากชั้นวาง โปรดเลือกสินค้าอื่นเพื่อสั่งซื้อ
+no.order.submit.success=ส่งคำสั่งซื้อสำเร็จ
+no.mendian.exist.classify.not.del=ร้านค้านี้มีข้อมูลหมวดหมู่ โปรดลบหมวดหมู่ก่อนลบร้านค้า
+no.insufficient.user.security.deposit=เงินประกันของผู้ใช้ไม่เพียงพอ
+no.order.snatched=คำสั่งซื้อนี้ถูกรับไปแล้ว
+no.exist.undelivered.order=คุณมีคำสั่งซื้อที่ยังจัดส่งไม่สำเร็จ โปรดดำเนินการให้เสร็จก่อนรับงานใหม่
+no.user.not.vip=ผู้ใช้นี้ยังไม่ได้สมัครสมาชิก
+no.user.vip.expired=สมาชิกหมดอายุแล้ว
+no.user.add=เพิ่มผู้ใช้
+no.user.login.exist=ไม่สำเร็จ บัญชีเข้าสู่ระบบนี้มีอยู่แล้ว
+no.user.mobile.exist=ไม่สำเร็จ หมายเลขโทรศัพท์นี้มีอยู่แล้ว
+no.user.password.not.null=รหัสผ่านต้องไม่ว่าง
+no.user.jcaptcha.error=รหัสยืนยันไม่ถูกต้อง
+no.user.not.exist=ไม่มีผู้ใช้นี้
+no.user.login.success=เข้าสู่ระบบสำเร็จ
+no.user.password.error=รหัสผ่านไม่ถูกต้อง
+no.system.error=เกิดข้อผิดพลาดของระบบ
+no.sms.send.success=ส่ง SMS สำเร็จ
+no.user.password.modify.success=เปลี่ยนรหัสผ่านสำเร็จ
+no.user.password.old.error=รหัสผ่านเดิมไม่ถูกต้อง
+no.user.stop=ผู้ใช้ถูกปิดใช้งานแล้ว
+no.user.token.success=รับ token สำเร็จ
+no.user.info=ข้อมูลผู้ใช้
+no.user.deposit.not.exist=ไม่พบรายการเงินประกัน
+no.user.deposit.type.not.exist=ไม่มีเงินประกันประเภทนี้
+no.user.call.status.not.exist=ไม่มีสถานะการโทร จึงวางสายไม่ได้
+no.user.call.hangup.success=วางสายสำเร็จ
+no.user.call.not.exist=ไม่พบข้อมูลการโทรของผู้ใช้นี้
+no.user.call.calling.success=เริ่มการโทรสำเร็จ
+no.user.call.other.is.calling=อีกฝ่ายกำลังใช้สายอยู่ จึงไม่สามารถโทรได้
+no.user.call.accept.success=รับสายสำเร็จ
+no.user.call.request.success=ส่งคำขอโทรสำเร็จ
+no.user.not.vip=คุณไม่ได้เป็นสมาชิก
+no.upload.success=อัปโหลดสำเร็จ
+no.send.success=ส่งสำเร็จ
+no.send.fail=ส่งไม่สำเร็จ
+no.convert.success=แปลงสำเร็จ
+no.order.not.exist=ไม่มีคำสั่งซื้อนี้
+no.order.place.success=สั่งซื้อสำเร็จ
+no.order.id.error=รหัสคำสั่งซื้อไม่ถูกต้อง
+no.order.create.success=สร้างคำสั่งซื้อสำเร็จ
+no.message.push.message=ข้อความ
+no.message.push.delivery.personnel.receiving.order=ไรเดอร์รับคำสั่งซื้อแล้ว
+no.message.push.rider.accepted.merchant=ไรเดอร์รับคำสั่งซื้อแล้ว โปรดยืนยันและเตรียมอาหาร
+no.message.push.order.cancelled=ยกเลิกคำสั่งซื้อแล้ว
+no.order.rider.accept.required=โปรดรอให้ไรเดอร์รับคำสั่งซื้อก่อนดำเนินการ
+no.message.push.new.order=มีคำสั่งซื้อใหม่
+no.message.push.recharge.success=เติมเงินสำเร็จ
+no.message.push.payment.success=ชำระเงินสำเร็จ
+no.message.push.payment.fail=ชำระเงินไม่สำเร็จ
+no.message.push.end.call=สิ้นสุดการโทร
+no.message.push.call.hangup=อีกฝ่ายวางสายแล้ว
+no.message.push.call.calling=สายเรียกเข้า
+no.message.push.call.request=ส่งคำขอโทรหาคุณ
+no.message.push.call.accept=ข้อความรับสาย
+no.message.push.call.agree=ยอมรับคำขอโทรของคุณแล้ว
+no.export.excel.mendian.classify=ข้อมูลหมวดหมู่ร้านค้า
+no.export.excel.goods.classify=ข้อมูลหมวดหมู่สินค้า
+no.export.excel.collection=ข้อมูลรายการโปรด
+no.export.excel.food=ข้อมูล Food
+no.export.excel.posstore=ข้อมูล PosStore
+no.export.excel.servicetype=ข้อมูล ServiceType
+no.export.excel.distancemultiplier=ข้อมูล DistanceMultiplier
+no.export.excel.address=ข้อมูล Address
+no.export.excel.freight.data=ข้อมูล Freight
+no.export.excel.posorder=ข้อมูล PosOrder
+no.export.excel.review=ข้อมูล Review
+no.export.excel.taxiorder=ข้อมูล TaxiOrder
+no.export.excel.taxiprices=ข้อมูล TaxiPrices
+no.export.excel.bankcard=ข้อมูล BankCard
+no.export.excel.ipnlog=ข้อมูล IpnLog
+no.export.excel.billing=ข้อมูล Billing
+no.export.excel.salespromotion=ข้อมูล SalesPromotion
+no.export.excel.enterpriseintroduce=ข้อมูล EnterpriseIntroduce
+no.export.excel.userinfo=ข้อมูลผู้ใช้
+no.export.excel.margin=ข้อมูล Margin
+no.export.excel.riderposition=ข้อมูล RiderPosition
+no.export.excel.feedback=ข้อมูล Feedback
+no.export.excel.help=ข้อมูล Help
+no.export.excel.footprint=ข้อมูล Footprint
+no.export.excel.usermargin=ข้อมูล UserMargin
+no.export.excel.videocall=ข้อมูล VideoCall
+no.export.excel.viplist=ข้อมูล VipList
+no.export.excel.rights=ข้อมูล Rights
+no.export.excel.version=ข้อมูล Version
+no.userquanyi.not.exist=ไม่พบคูปอง
+userquanyi.isUsed=คูปองถูกใช้แล้ว
+no.activity.not.exist=ไม่มีโปรโมชันนี้
+no.map.exception=เกิดข้อผิดพลาดในการค้นหาเส้นทางบนแผนที่
+no.xiadanyz.message=เพื่อความปลอดภัยของบัญชี โปรดอัปเดตแล้วสั่งซื้ออีกครั้ง!
+no.youhuiquan.lqnodata=ไม่พบข้อมูลคูปอง
+no.youhuiquan.lqyhqgb=ปิดคูปองแล้ว
+no.youhuiquan.lqyhqolqw=คูปองถูกใช้สิทธิ์หมดแล้ว
+no.youhuiquan.lqyhqdy=จำนวนที่รับต้องมากกว่า 0
+no.youhuiquan.lqyhqysx=คุณรับคูปองนี้ถึงจำนวนสูงสุดแล้ว
+no.youhuiquan.lqyhqybxg=ข้อมูลถูกแก้ไขแล้ว โปรดรีเฟรชและลองอีกครั้ง
+no.points.insufficient=คะแนนของคุณไม่เพียงพอ
+no.points.use.enable=ปิดการใช้คะแนนแล้ว
+no.points.update.fail=อัปเดตกระเป๋าคะแนนไม่สำเร็จ โปรดลองอีกครั้ง
+no.points.use.fail=ยังไม่ได้เปิดใช้ส่วนลดจากคะแนน
+no.points.not.exist=ไม่มีกระเป๋าคะแนนของคุณ
+no.message.push.delivery.personnel.qspsz.order=ไรเดอร์กำลังจัดส่ง
+no.message.push.delivery.personnel.qsysd.order=ไรเดอร์จัดส่งถึงแล้ว
+no.wallet.noexist.userinfo=ไม่มีข้อมูลผู้ใช้
+no.user.state.no.audit=สถานะบัญชียังไม่ได้รับการตรวจสอบ
+no.system.busy.try.again=ระบบไม่ว่าง โปรดลองอีกครั้งภายหลัง
+no.operation.interrupted.try.again=การดำเนินการถูกขัดจังหวะ โปรดลองอีกครั้ง
+no.message.push.merchant.ready.title=ร้านค้าเตรียมอาหารเสร็จแล้ว
+no.message.push.merchant.ready.content=ร้านค้าเตรียมอาหารเสร็จแล้ว หมายเลขคำสั่งซื้อ:
+no.posorder.md.yh.mc.messag=คูปอง: {};
+no.posorder.md.yh.jiner.messag=ส่วนลด: {};
+no.posorder.md.cx.mc.messag=โปรโมชัน: {};
+no.posorder.md.cx.jiner.messag=ส่วนลดโปรโมชัน: {};
+no.wallet.common.cs.error=ดำเนินการไม่สำเร็จ โปรดติดต่อฝ่ายบริการลูกค้า
+
+# เข้าสู่ระบบผ่านผู้ให้บริการภายนอก (017-oauth-login)
+no.oauth.provider.blank=ต้องระบุวิธีเข้าสู่ระบบ
+no.oauth.credential.blank=ต้องระบุข้อมูลรับรองจากผู้ให้บริการภายนอก
+no.oauth.provider.unsupported=ไม่รองรับวิธีเข้าสู่ระบบ: {0}
+no.oauth.needphone=การเข้าสู่ระบบครั้งแรกต้องยืนยันหมายเลขโทรศัพท์
+no.oauth.tempkey.missing=ไม่มีข้อมูลรับรองการเข้าสู่ระบบ โปรดเข้าสู่ระบบอีกครั้ง
+no.oauth.tempkey.expired=ข้อมูลรับรองการเข้าสู่ระบบหมดอายุ โปรดเข้าสู่ระบบอีกครั้ง
+no.oauth.token.invalid=ข้อมูลรับรองการเข้าสู่ระบบ {0} ไม่ถูกต้อง
+no.oauth.token.expired=ข้อมูลรับรองการเข้าสู่ระบบ {0} หมดอายุแล้ว
+no.oauth.audience.mismatch=การตรวจสอบข้อมูลรับรอง {0} ไม่ผ่าน
+no.oauth.verify.fail=การตรวจสอบการเข้าสู่ระบบ {0} ไม่สำเร็จ: {1}
+
+# ตรวจสอบใบกำกับภาษีของคำสั่งซื้อ (010)
+no.invoice.choice.invalid=ประเภทใบกำกับภาษีไม่ถูกต้อง: {0}
+no.invoice.barcode.format=รูปแบบบาร์โค้ดมือถือไม่ถูกต้อง (ต้องเป็น / ตามด้วยตัวอักษรอังกฤษพิมพ์ใหญ่ ตัวเลข หรือ +-. จำนวน 7 ตัว)
+no.invoice.barcode.service.unavailable=บริการตรวจสอบบาร์โค้ดมือถือไม่พร้อมใช้งานชั่วคราว โปรดลองอีกครั้งภายหลัง
+no.invoice.barcode.notexist=ไม่มีบาร์โค้ดมือถือ โปรดตรวจสอบหรือเลือกใบกำกับภาษีแบบกระดาษ
+no.invoice.citizen.format=รูปแบบใบรับรองดิจิทัลประชาชนไม่ถูกต้อง (ต้องเป็นตัวอักษรอังกฤษพิมพ์ใหญ่ 2 ตัว + ตัวเลข 14 หลัก)
+no.invoice.lovecode.format=รูปแบบรหัสบริจาคไม่ถูกต้อง (ต้องเป็นตัวเลข 3-7 หลัก)
+no.invoice.lovecode.invalid=รหัสบริจาคไม่ถูกต้อง
+no.invoice.lovecode.verify.fail=ตรวจสอบรหัสบริจาคไม่สำเร็จ โปรดลองอีกครั้งภายหลัง
+no.invoice.ubn.format=รูปแบบเลขประจำตัวผู้ประกอบการไม่ถูกต้อง (ต้องเป็นตัวเลข 8 หลัก)
+no.invoice.company.email=ใบกำกับภาษีบริษัทต้องระบุอีเมลผู้ซื้อที่ถูกต้องเพื่อรับใบกำกับภาษี
+no.invoice.store.notsupport.barcode=ร้านค้านี้ยังไม่รองรับใบกำกับภาษีอิเล็กทรอนิกส์ จึงไม่สามารถตรวจสอบบาร์โค้ดมือถือได้
+no.invoice.store.notsupport.lovecode=ร้านค้านี้ยังไม่รองรับใบกำกับภาษีอิเล็กทรอนิกส์ จึงไม่สามารถตรวจสอบรหัสบริจาคได้
+
+# ตรวจสอบใบกำกับภาษีของคำสั่งซื้อ - พารามิเตอร์การขอใบกำกับภาษี (010)
+no.invoice.b2b.buyername.blank=ใบกำกับภาษี B2B ต้องระบุชื่อผู้ซื้อ
+no.invoice.b2b.buyeremail.blank=ใบกำกับภาษี B2B ต้องระบุอีเมลผู้ซื้อ
+no.invoice.b2b.nocarrier=ใบกำกับภาษี B2B ไม่รองรับพาหะอิเล็กทรอนิกส์
+no.invoice.donation.nocarrier=ใบกำกับภาษีบริจาคไม่รองรับพาหะอิเล็กทรอนิกส์
+no.invoice.donation.noubn=ใบกำกับภาษีบริจาคไม่รองรับเลขประจำตัวผู้ประกอบการ
+no.invoice.buyername.blank=ชื่อผู้ซื้อต้องไม่ว่าง
+no.invoice.carriertype.invalid=ประเภทพาหะต้องเป็น 0 บาร์โค้ดมือถือ / 1 ใบรับรองประชาชน / 2 สมาชิก ezPay
+no.invoice.carriernum.blank=หมายเลขพาหะต้องไม่ว่าง
+line.pay.credential.required=ต้องระบุร้านค้า LINE Pay, Channel ID และ Secret
+line.pay.credential.verify.unknown=บริการตรวจสอบข้อมูลรับรอง LINE Pay ไม่พร้อมใช้งานชั่วคราว โปรดลองอีกครั้งภายหลัง
+line.pay.credential.invalid=ตรวจสอบข้อมูลรับรอง LINE Pay ไม่สำเร็จ โปรดตรวจสอบ Channel ID และ Secret
+line.pay.credential.enabled=ตรวจสอบข้อมูลรับรอง LINE Pay สำเร็จและเปิดใช้งานแล้ว
+line.pay.order.required=ต้องระบุหมายเลขคำสั่งซื้อ LINE Pay
+line.pay.operation.failed=ดำเนินการ LINE Pay ไม่สำเร็จ โปรดลองอีกครั้งภายหลัง
+line.pay.order.not.found=ไม่มีคำสั่งซื้อ LINE Pay นี้
+line.pay.refund.not.allowed=สถานะคำสั่งซื้อปัจจุบันไม่อนุญาตให้คืนเงินผ่าน LINE Pay
+line.pay.refund.payment.not.found=ไม่พบรายการชำระเงิน LINE Pay ที่คืนเงินได้
+line.pay.refund.already.completed=คืนเงินรายการชำระเงิน LINE Pay แล้ว
+line.pay.order.completion.not.allowed=สถานะคำสั่งซื้อ LINE Pay ปัจจุบันไม่อนุญาตให้ดำเนินการให้เสร็จสิ้น
+line.pay.legacy.endpoint.disabled=โปรดใช้ API ดำเนินการคำสั่งซื้อเฉพาะสำหรับคำสั่งซื้อ LINE Pay
+line.pay.offline.merchant.required=บัญชีปัจจุบันไม่ใช่บัญชีร้านค้าที่ใช้งานได้
+line.pay.offline.single.store.required=คำสั่งซื้อที่ร้านค้าสแกนต้องมีร้านค้าเพียงหนึ่งแห่ง
+line.pay.offline.order.invalid=คำสั่งซื้อนี้ไม่สามารถชำระด้วยการสแกน LINE Pay ของร้านค้า
+line.pay.offline.order.forbidden=ไม่มีคำสั่งซื้อนี้หรือคำสั่งซื้อไม่ได้เป็นของร้านค้าปัจจุบัน
+line.pay.offline.mycode.invalid=LINE Pay My Code ต้องเป็นตัวเลข 18 หลัก
+line.pay.offline.attempt.blocked=คำสั่งซื้อนี้มีการชำระเงินที่กำลังดำเนินการ โปรดตรวจสอบสถานะก่อน
+line.pay.offline.not.enabled=ร้านค้านี้ยังไม่เปิดใช้การชำระเงินด้วยการสแกน LINE Pay
+line.pay.offline.attempt.not.found=คำสั่งซื้อนี้ไม่มีรายการชำระเงินด้วยการสแกน LINE Pay
+line.pay.offline.operation.failed=การชำระเงินด้วยการสแกน LINE Pay ยังไม่เสร็จสิ้น โปรดตรวจสอบสถานะภายหลัง
+rider.operation.role.required=เฉพาะไรเดอร์เท่านั้นที่ดำเนินการคำสั่งซื้อจัดส่งได้
+
+omg.payment.ddid.required=ต้องระบุหมายเลขคำสั่งซื้อสำหรับการชำระเงิน OMG
+omg.payment.merchantTradeNo.required=ต้องระบุ OMG MerchantTradeNo
+omg.payment.merchantTradeNo.invalid=OMG MerchantTradeNo ต้องเป็นตัวอักษรอังกฤษพิมพ์ใหญ่หรือตัวเลขไม่เกิน 20 ตัว
+omg.payment.storeId.required=ต้องระบุ ID ร้านค้า OMG
+omg.payment.merchantId.required=ต้องระบุหมายเลขร้านค้า OMG
+omg.payment.merchantId.invalid=หมายเลขร้านค้า OMG ต้องเป็นตัวอักษรอังกฤษหรือตัวเลขไม่เกิน 10 ตัว
+omg.payment.amount.invalid=ยอดชำระเงิน OMG ต้องมากกว่า 0
+omg.payment.credential.snapshot.required=ต้องระบุสแนปช็อตข้อมูลรับรองการชำระเงิน OMG
+omg.pay.auth.required=โปรดเข้าสู่ระบบก่อน
+omg.pay.order.required=ต้องระบุหมายเลขคำสั่งซื้อ
+omg.pay.order.not.available=ไม่มีคำสั่งซื้อนี้หรือคุณไม่มีสิทธิ์ดำเนินการ
+omg.pay.multi.store.unsupported=OMG ยังไม่รองรับคำสั่งซื้อจากหลายร้าน
+omg.pay.order.state.not.payable=สถานะคำสั่งซื้อปัจจุบันไม่สามารถชำระเงินได้
+omg.pay.order.already.paid=ชำระเงินคำสั่งซื้อแล้วหรือสถานะการชำระเงินไม่พร้อมใช้งาน
+omg.pay.order.amount.invalid=ยอดคำสั่งซื้อไม่ถูกต้อง
+omg.pay.payment.type.invalid=วิธีชำระเงินของคำสั่งซื้อไม่ใช่ OMG
+omg.pay.payment.method.invalid=โปรดเลือกบัตรเครดิตหรือ Apple Pay
+omg.pay.credential.unavailable=ร้านค้านี้ยังไม่เปิดใช้การชำระเงิน OMG
+omg.pay.attempt.exists=คำสั่งซื้อนี้มีรายการชำระเงินที่รอดำเนินการอยู่แล้ว
+omg.pay.configuration.invalid=การตั้งค่าการชำระเงิน OMG ไม่ถูกต้อง
+omg.pay.creation.failed=สร้างการชำระเงิน OMG ไม่สำเร็จ โปรดลองอีกครั้งภายหลัง
+omg.pay.query.not.available=ขณะนี้ไม่มีข้อมูลการชำระเงิน OMG ให้ตรวจสอบ
+omg.pay.query.failed=ตรวจสอบสถานะการชำระเงิน OMG ไม่สำเร็จ โปรดลองอีกครั้งภายหลัง
+omg.pay.retry.not.available=สถานะการชำระเงินปัจจุบันไม่สามารถเริ่มใหม่ได้ โปรดรีเฟรชผลการชำระเงินก่อน
+omg.pay.retry.failed=เริ่มการชำระเงิน OMG ใหม่ไม่สำเร็จ โปรดลองอีกครั้งภายหลัง
+omg.pay.refund.unavailable.test.environment=สภาพแวดล้อมทดสอบ OMG ไม่รองรับการคืนเงิน โปรดเปิดใช้ในสภาพแวดล้อมจริงก่อน
+omg.pay.refund.failed=ดำเนินการคืนเงิน OMG ไม่สำเร็จ โปรดลองอีกครั้งภายหลัง
+no.paytype.cash.merchant.only=การชำระด้วยเงินสดรองรับเฉพาะคำสั่งซื้อที่ร้านค้าสร้าง
+no.order.paytype.not.cash=คำสั่งซื้อนี้ไม่ได้ชำระด้วยเงินสด
+no.order.cash.already.paid=ยืนยันรับเงินสำหรับคำสั่งซื้อนี้แล้ว
+no.order.paytype.not.transfer=คำสั่งซื้อนี้ไม่ได้ชำระด้วยการโอนเงิน
+no.order.transfer.cancelled=ยกเลิกคำสั่งซื้อแล้ว ไม่สามารถยืนยันรับเงินได้
+no.order.transfer.already.paid=ยืนยันรับเงินสำหรับคำสั่งซื้อนี้แล้ว
+no.order.transfer.not.paid=ไรเดอร์จะรับคำสั่งซื้อได้หลังจากร้านค้ายืนยันรับเงินแล้วเท่านั้น
+no.order.cash.cancelled=ยกเลิกคำสั่งซื้อแล้ว ไม่สามารถยืนยันรับเงินสดได้
+no.user.audit.reject.reason.required=เมื่อตรวจสอบไม่ผ่าน ต้องระบุเหตุผลที่ปฏิเสธ
+merchant.account.unavailable=บัญชีร้านค้าไม่พร้อมใช้งาน
+merchant.owner.unavailable=บัญชีหลักของร้านค้าไม่พร้อมใช้งาน
+merchant.owner.required=เฉพาะบัญชีหลักของร้านค้าเท่านั้นที่ดำเนินการนี้ได้
+merchant.owner.not.found=ไม่พบบัญชีหลักของร้านค้า
+merchant.store.access.denied=คุณไม่มีสิทธิ์เข้าถึงร้านค้านี้
+merchant.order.not.found=ไม่พบคำสั่งซื้อ
+merchant.food.not.found=ไม่พบสินค้า
+merchant.session.invalid=เซสชันร้านค้าหมดอายุ โปรดเข้าสู่ระบบอีกครั้ง
+merchant.subaccount.request.required=ต้องระบุข้อมูลคำขอ
+merchant.subaccount.name.required=ต้องระบุชื่อบัญชีย่อย
+merchant.subaccount.phone.required=ต้องระบุหมายเลขโทรศัพท์ของบัญชีย่อย
+merchant.subaccount.phone.invalid=รูปแบบหมายเลขโทรศัพท์ของบัญชีย่อยไม่ถูกต้อง
+merchant.subaccount.phone.exists=หมายเลขโทรศัพท์นี้ถูกใช้แล้ว
+merchant.subaccount.password.required=ต้องระบุรหัสผ่านของบัญชีย่อย
+merchant.subaccount.store.required=โปรดเลือกร้านค้าที่รับผิดชอบอย่างน้อยหนึ่งแห่ง
+merchant.subaccount.status.required=ต้องระบุสถานะบัญชีย่อย
+merchant.subaccount.not.found=ไม่พบบัญชีย่อย
+merchant.subaccount.access.denied=คุณไม่มีสิทธิ์จัดการบัญชีย่อยนี้
+merchant.subaccount.create.failed=สร้างบัญชีย่อยไม่สำเร็จ
+merchant.subaccount.update.failed=อัปเดตบัญชีย่อยไม่สำเร็จ
+merchant.subaccount.platform.managed=บัญชีย่อยจัดการได้ผ่านช่องทางเฉพาะเท่านั้น
+no.user.delivery.type.invalid=ประเภทการจัดส่งไม่ถูกต้อง รองรับเฉพาะการส่งอาหารหรือส่งด่วน
+no.user.delivery.type.not.enabled=บัญชีนี้ยังไม่ได้เปิดใช้บริการส่งอาหาร
+
+# บริการส่งด่วน
+flash.delivery.request.required=ต้องระบุข้อมูลคำขอ
+flash.delivery.auth.required=โปรดเข้าสู่ระบบก่อน
+flash.delivery.client.request.id.invalid=ต้องระบุหมายเลขคำขอของไคลเอนต์และต้องไม่เกิน 64 อักขระ
+flash.delivery.note.too.long=หมายเหตุต้องไม่เกิน 500 อักขระ
+flash.delivery.service.type.invalid=ไม่รองรับประเภทบริการส่งด่วนนี้
+flash.delivery.service.unavailable=บริการส่งด่วนนี้ไม่พร้อมใช้งานในขณะนี้
+flash.delivery.address.invalid=ข้อมูลผู้ติดต่อ ที่อยู่ หรือพิกัดไม่ถูกต้อง
+flash.delivery.address.same=ที่อยู่รับและที่อยู่จัดส่งต้องไม่เหมือนกัน
+flash.delivery.order.not.found=ไม่มีคำสั่งซื้อส่งด่วนนี้หรือคุณไม่มีสิทธิ์เข้าถึง
+flash.delivery.order.already.accepted=คำสั่งซื้อนี้ถูกไรเดอร์รายอื่นรับแล้ว
+flash.delivery.rider.required=เฉพาะบัญชีไรเดอร์เท่านั้นที่ดำเนินการนี้ได้
+flash.delivery.proof.required=โปรดอัปโหลดรูปภาพหลักฐานอย่างน้อยหนึ่งรูป
+flash.delivery.proof.url.invalid=URL รูปภาพหลักฐานไม่ถูกต้อง
+flash.delivery.proof.too.many=อัปโหลดรูปภาพหลักฐานได้สูงสุด 9 รูป
+flash.delivery.transition.not.allowed=สถานะคำสั่งซื้อปัจจุบันไม่อนุญาตให้ดำเนินการนี้
+flash.delivery.cancel.reason.required=ต้องระบุเหตุผลในการยกเลิก
+flash.delivery.cancel.not.allowed=สถานะคำสั่งซื้อปัจจุบันไม่อนุญาตให้ยกเลิกด้วยวิธีนี้
+flash.delivery.complete.not.allowed=คำสั่งซื้อยังไม่สามารถดำเนินการให้เสร็จสิ้นได้
+flash.delivery.state.changed=สถานะคำสั่งซื้อเปลี่ยนแปลงแล้ว โปรดรีเฟรชและลองอีกครั้ง
+flash.delivery.pricing.invalid=ค่ากำหนดราคาต้องเป็นจำนวนบวกที่ถูกต้อง
+flash.delivery.pricing.not.available=ไม่มีอัตราค่าบริการที่ใช้ได้ในช่วงเวลานี้
+flash.delivery.pricing.overlap=ช่วงเวลาอัตราค่าบริการของประเภทเดียวกันต้องไม่ซ้อนทับกัน
+flash.delivery.package.type.invalid=โปรดเลือกประเภทพัสดุที่ถูกต้อง
+flash.delivery.package.size.invalid=โปรดเลือกช่วงน้ำหนักพัสดุที่ถูกต้อง
+flash.delivery.distance.too.far=ระยะทางจัดส่งต้องไม่เกิน 40 กิโลเมตร
+flash.delivery.mode.invalid=รูปแบบการจัดส่งไม่ถูกต้อง
+flash.delivery.schedule.invalid=ช่วงเวลานัดรับพัสดุไม่ถูกต้อง
+flash.delivery.pin.invalid=PIN สำหรับส่งมอบไม่ถูกต้อง
+flash.delivery.scene.invalid=พารามิเตอร์กลุ่มสถานะคำสั่งซื้อไม่ถูกต้อง
+flash.delivery.pricing.not.found=ไม่พบการตั้งค่าราคา
+flash.delivery.pricing.changed=การตั้งค่าราคาเปลี่ยนแปลงแล้ว โปรดรีเฟรชและลองอีกครั้ง
+flash.delivery.delivery.type.invalid=ไม่รองรับระดับการจัดส่งนี้
+flash.delivery.item.invalid=ข้อมูลจำนวน น้ำหนักรวม หรือรายละเอียดสิ่งของไม่ถูกต้อง
+flash.delivery.tip.invalid=ทิปสำหรับไรเดอร์ต้องเป็นจำนวนเต็ม TWD ที่ไม่ติดลบ
+flash.delivery.quote.changed=ราคาเสนอมีการเปลี่ยนแปลง โปรดยืนยันค่าบริการล่าสุดอีกครั้ง
+flash.delivery.tab.invalid=แท็บรายการส่งด่วนไม่ถูกต้อง
+flash.delivery.coordinates.invalid=ต้องระบุละติจูดและลองจิจูดเป็นคู่และอยู่ในช่วงที่ถูกต้อง
+address.access.denied=ไม่มีที่อยู่นี้หรือคุณไม่มีสิทธิ์เข้าถึง
+address.data.invalid=ข้อมูลผู้ติดต่อ ที่อยู่ หรือพิกัดไม่ถูกต้อง
+flash.delivery.rider.type.not.enabled=บัญชีนี้ยังไม่ได้เปิดใช้บริการส่งด่วน
+flash.delivery.rider.exclusive.conflict=ไรเดอร์มีงานจัดส่งแบบเฉพาะที่กำลังดำเนินการ จึงยังไม่สามารถรับคำสั่งซื้อนี้ได้

+ 2 - 1
ruoyi-admin/src/test/java/com/ruoyi/app/flashdelivery/service/FlashDeliveryI18nContractTest.java

@@ -11,7 +11,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 class FlashDeliveryI18nContractTest {
     private static final List<String> FILES = List.of("messages.properties", "messages_zh_CN.properties",
-            "messages_zh_TW.properties", "messages_en_US.properties", "messages_vi.properties");
+            "messages_zh_TW.properties", "messages_en_US.properties", "messages_vi.properties",
+            "messages_th_TH.properties");
     private static final List<String> KEYS = List.of(
             "flash.delivery.request.required", "flash.delivery.auth.required",
             "flash.delivery.client.request.id.invalid", "flash.delivery.note.too.long",

+ 68 - 0
ruoyi-admin/src/test/java/com/ruoyi/common/utils/BackendI18nBundleContractTest.java

@@ -0,0 +1,68 @@
+package com.ruoyi.common.utils;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.context.support.ResourceBundleMessageSource;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+class BackendI18nBundleContractTest {
+    private static final List<String> LOCALIZED_BUNDLES = List.of(
+            "messages_zh_CN.properties", "messages_zh_TW.properties",
+            "messages_en_US.properties", "messages_vi.properties",
+            "messages_th_TH.properties");
+    private static final Pattern PLACEHOLDER = Pattern.compile("\\{\\d+}");
+
+    @Test
+    void everyLocalizedBundleHasTheSameNonBlankKeysAndPlaceholders() throws Exception {
+        Properties reference = load("messages_zh_TW.properties");
+        for (String bundle : LOCALIZED_BUNDLES) {
+            Properties candidate = load(bundle);
+            assertEquals(reference.stringPropertyNames(), candidate.stringPropertyNames(), bundle);
+            for (String key : reference.stringPropertyNames()) {
+                assertFalse(candidate.getProperty(key).isBlank(), bundle + " blank " + key);
+                assertEquals(placeholders(reference.getProperty(key)),
+                        placeholders(candidate.getProperty(key)), bundle + " placeholders " + key);
+            }
+        }
+    }
+
+    @Test
+    void messageSourceLoadsThaiMessagesAndFormatsArguments() {
+        ResourceBundleMessageSource source = new ResourceBundleMessageSource();
+        source.setBasename("i18n/messages");
+        source.setDefaultEncoding(StandardCharsets.UTF_8.name());
+        Locale thai = new Locale("th", "TH");
+        assertEquals("ราคาเสนอมีการเปลี่ยนแปลง โปรดยืนยันค่าบริการล่าสุดอีกครั้ง",
+                source.getMessage("flash.delivery.quote.changed", null, thai));
+        assertEquals("ป้อนรหัสผ่านผิด 3 ครั้ง บัญชีถูกล็อก 10 นาที",
+                source.getMessage("user.password.retry.limit.exceed", new Object[]{3, 10}, thai));
+    }
+
+    private Properties load(String file) throws Exception {
+        Properties properties = new Properties();
+        try (InputStream input = getClass().getClassLoader().getResourceAsStream("i18n/" + file)) {
+            assertNotNull(input, file);
+            properties.load(new InputStreamReader(input, StandardCharsets.UTF_8));
+        }
+        return properties;
+    }
+
+    private List<String> placeholders(String value) {
+        List<String> result = new ArrayList<>();
+        Matcher matcher = PLACEHOLDER.matcher(value);
+        while (matcher.find()) result.add(matcher.group());
+        return result;
+    }
+}