feat(i18n): add full multi-language support for app modules

Add new i18n modules for booking, goods, order, and service features across en-US, zh-CN, th-TH locales
Extend existing quick module translations with new card, date, and page title strings
Replace all hardcoded static text in UI components with vue-i18n translation hooks
Update the main i18n registry and login page language switching to support the new translations
This commit is contained in:
duanshuwen
2026-06-03 21:03:04 +08:00
parent db499933e5
commit d352fac2f1
86 changed files with 2132 additions and 382 deletions

View File

@@ -1,12 +1,79 @@
export default {
actions: {
askMore: "Ask more",
book: "Book",
buy: "Buy",
cancel: "Cancel",
callPhone: "Call",
confirm: "Confirm",
fillIn: "Fill in",
generate: "Generate",
goPay: "Pay",
logout: "Sign out",
navigation: "Navigate",
payNow: "Pay now",
retry: "Retry",
submit: "Submit",
viewDetail: "View details",
},
calendar: {
title: "Select dates",
stayDateHint: "Select stay dates. Prices below are nightly references.",
weekdays: {
monday: "Mon",
tuesday: "Tue",
wednesday: "Wed",
thursday: "Thu",
friday: "Fri",
saturday: "Sat",
sunday: "Sun",
},
monthTitle: "{month}/{year}",
labels: {
stayAndLeave: "In/Out",
checkIn: "Check-in",
checkOut: "Check-out",
},
errors: {
disabledDate: "This date is unavailable",
dateUnavailable: "This date cannot be booked. Please choose again.",
stockUnavailable: "This date is out of stock. Please choose another date.",
sameDate: "Check-out date cannot be the same as check-in date",
maxRange: "Booking period cannot exceed 28 days",
missingPrice: "The selected range includes dates without prices. Please choose again.",
rangeStockUnavailable: "The selected range includes dates with insufficient stock. Please choose again.",
},
},
dateRange: {
checkIn: "Check-in",
nights: "nights",
checkOut: "Check-out",
roomDetails: "Room details",
useDate: "Use date",
},
errors: {
loadFailedRetry: "Load failed. Tap to retry",
network: "Network error. Please try again later.",
},
form: {
name: "Name",
namePlaceholder: "Enter name",
phone: "Phone",
phonePlaceholder: "Enter phone number",
visitorDefault: "Guest 1",
},
labels: {
account: "Account",
language: "Language",
},
locales: {
zhCN: "中文",
enUS: "English",
thTH: "ภาษาไทย",
zhShort: "中",
enShort: "EN",
thShort: "TH",
},
login: {
method: {
google: "Sign in with Google",
@@ -35,8 +102,24 @@ export default {
smsApiMissing: "SMS sending API is not connected",
},
},
module: {
imageDetail: "Image details",
},
qrcode: {
emptyContent: "QR code content cannot be empty",
saveSuccess: "QR code saved",
},
refund: {
policy: "Cancellation policy",
rules: "Refund rules",
},
state: {
empty: "No data",
loading: "Loading...",
noMore: "No more",
},
summary: {
price: "Price",
discount: "Discount",
},
} as const;

View File

@@ -1,12 +1,79 @@
export default {
actions: {
askMore: "ถามต่อ",
book: "จอง",
buy: "ซื้อ",
cancel: "ยกเลิก",
callPhone: "โทร",
confirm: "ยืนยัน",
fillIn: "ไปกรอก",
generate: "สร้าง",
goPay: "ไปชำระเงิน",
logout: "ออกจากระบบ",
navigation: "นำทาง",
payNow: "ชำระเงินทันที",
retry: "ลองอีกครั้ง",
submit: "ส่ง",
viewDetail: "ดูรายละเอียด",
},
calendar: {
title: "เลือกปฏิทิน",
stayDateHint: "เลือกวันที่เข้าพัก ราคาด้านล่างเป็นราคาต่อคืนโดยประมาณ",
weekdays: {
monday: "จ",
tuesday: "อ",
wednesday: "พ",
thursday: "พฤ",
friday: "ศ",
saturday: "ส",
sunday: "อา",
},
monthTitle: "{month}/{year}",
labels: {
stayAndLeave: "เข้า/ออก",
checkIn: "เช็คอิน",
checkOut: "เช็คเอาต์",
},
errors: {
disabledDate: "วันที่นี้ไม่สามารถเลือกได้",
dateUnavailable: "วันที่เลือกไม่สามารถจองได้ โปรดเลือกใหม่",
stockUnavailable: "วันที่เลือกมีจำนวนไม่พอ โปรดเลือกวันที่อื่น",
sameDate: "วันเช็คเอาต์ต้องไม่ตรงกับวันเช็คอิน",
maxRange: "ระยะเวลาจองต้องไม่เกิน 28 วัน",
missingPrice: "ช่วงวันที่เลือกมีวันที่ไม่มีราคา โปรดเลือกใหม่",
rangeStockUnavailable: "ช่วงวันที่เลือกมีวันที่จำนวนไม่พอ โปรดเลือกใหม่",
},
},
dateRange: {
checkIn: "เช็คอิน",
nights: "คืน",
checkOut: "เช็คเอาต์",
roomDetails: "รายละเอียดห้อง",
useDate: "วันที่ใช้",
},
errors: {
loadFailedRetry: "โหลดล้มเหลว แตะเพื่อลองอีกครั้ง",
network: "เครือข่ายผิดพลาด โปรดลองอีกครั้งในภายหลัง",
},
form: {
name: "ชื่อ",
namePlaceholder: "กรอกชื่อ",
phone: "โทรศัพท์",
phonePlaceholder: "กรอกหมายเลขโทรศัพท์",
visitorDefault: "ผู้เข้าพัก 1",
},
labels: {
account: "บัญชี",
language: "ภาษา",
},
locales: {
zhCN: "中文",
enUS: "English",
thTH: "ภาษาไทย",
zhShort: "中",
enShort: "EN",
thShort: "TH",
},
login: {
method: {
google: "เข้าสู่ระบบด้วย Google",
@@ -35,8 +102,24 @@ export default {
smsApiMissing: "ยังไม่ได้เชื่อมต่อ API สำหรับส่ง SMS",
},
},
module: {
imageDetail: "รายละเอียดรูปภาพ",
},
qrcode: {
emptyContent: "เนื้อหา QR Code ต้องไม่ว่าง",
saveSuccess: "บันทึก QR Code แล้ว",
},
refund: {
policy: "นโยบายการยกเลิก",
rules: "กฎการคืนเงิน",
},
state: {
empty: "ไม่มีข้อมูล",
loading: "กำลังโหลด...",
noMore: "ไม่มีเพิ่มเติม",
},
summary: {
price: "ราคา",
discount: "ส่วนลด",
},
} as const;

View File

@@ -1,12 +1,79 @@
export default {
actions: {
askMore: "继续追问",
book: "预定",
buy: "购买",
cancel: "取消",
callPhone: "拨打电话",
confirm: "确认",
fillIn: "前往填写",
generate: "生成",
goPay: "去支付",
logout: "退出登录",
navigation: "导航",
payNow: "立即支付",
retry: "重试",
submit: "提交",
viewDetail: "查看详情",
},
calendar: {
title: "日历选择",
stayDateHint: "选择住宿日期,以下价格为单晚参考价",
weekdays: {
monday: "一",
tuesday: "二",
wednesday: "三",
thursday: "四",
friday: "五",
saturday: "六",
sunday: "日",
},
monthTitle: "{year}年{month}月",
labels: {
stayAndLeave: "住/离",
checkIn: "入住",
checkOut: "离店",
},
errors: {
disabledDate: "该日期不可选",
dateUnavailable: "所选日期不可预订,请重新选择",
stockUnavailable: "所选日期库存不足,请选择其他日期",
sameDate: "离店日期不能与入住日期相同",
maxRange: "预定时间不能超过28天",
missingPrice: "所选区间包含无价格日期,请重新选择",
rangeStockUnavailable: "所选区间包含库存不足的日期,请重新选择",
},
},
dateRange: {
checkIn: "入住",
nights: "晚",
checkOut: "离店",
roomDetails: "房间详情",
useDate: "使用日期",
},
errors: {
loadFailedRetry: "加载失败,点击重试",
network: "网络异常,请稍后重试",
},
form: {
name: "姓 名",
namePlaceholder: "请输入姓名",
phone: "手机号",
phonePlaceholder: "请输入手机号",
visitorDefault: "游客1",
},
labels: {
account: "账号",
language: "语言",
},
locales: {
zhCN: "中文",
enUS: "English",
thTH: "ภาษาไทย",
zhShort: "中",
enShort: "EN",
thShort: "TH",
},
login: {
method: {
google: "谷歌账号登录",
@@ -35,8 +102,24 @@ export default {
smsApiMissing: "验证码发送接口未接入",
},
},
module: {
imageDetail: "图片详情",
},
qrcode: {
emptyContent: "二维码内容不能为空",
saveSuccess: "二维码保存成功",
},
refund: {
policy: "取消政策",
rules: "退订规则",
},
state: {
empty: "暂无数据",
loading: "加载中...",
noMore: "没有更多了",
},
summary: {
price: "价格",
discount: "折扣优惠",
},
} as const;