### Overview Implement PDPA & GDPR compliant Cookie Consent Management Platform (CMP) for pps/website: - **Zustand Store (cookieConsentStore.ts):** Stores consent record ( ecessary, nalytics, marketing) in localStorage with skipHydration: true for Next.js SSR safety. - **Cookie Banner (CookieBanner.tsx):** Fixed bottom floating banner with Quiet Luxury styling, providing Accept All, Reject Non-Essential, and Customize buttons. - **Preferences Modal (CookiePreferencesModal.tsx):** Detailed modal dialog allowing users to granularly toggle Analytics and Marketing cookies (Strictly Necessary is locked). - **Script Manager (ScriptManager.tsx):** Coordinates Google Consent Mode v2 (nalytics_storage, d_storage), conditionally injects GA4, Meta Pixel, and TikTok Pixel, and dispatches homaroma:consent-change DOM events. - **Footer Revocation Link:** Added Cookie Preferences link in the Support column of Footer.tsx so users can modify/revoke consent anytime. - **Multilingual Support:** Added localized text for TH, EN, JA, and ZH. --------- Co-authored-by: Your Name <you@example.com> Reviewed-on: #14 Co-authored-by: antigravity-bot <bot@kittisak.com>
240 lines
17 KiB
JSON
240 lines
17 KiB
JSON
{
|
|
"nav": {
|
|
"home": "หน้าหลัก",
|
|
"shop": "ร้านค้า",
|
|
"promotions": "โปรโมชัน",
|
|
"collections": "คอลเลกชัน",
|
|
"scentGuide": "คลาสแนะนำกลิ่น",
|
|
"about": "เกี่ยวกับเรา",
|
|
"menu": "เมนู",
|
|
"faq": "คำถามที่พบบ่อย",
|
|
"contact": "ติดต่อเรา",
|
|
"shopNow": "ช้อปเลย",
|
|
"findMyScent": "ค้นหากลิ่นของคุณ ✨",
|
|
"search": {
|
|
"title": "ค้นหาสินค้า",
|
|
"placeholder": "ค้นหากลิ่น, คอลเลกชัน...",
|
|
"quickLinks": "ลิงก์ด่วน",
|
|
"allProducts": "สินค้าทั้งหมด"
|
|
},
|
|
"trackOrder": "ติดตามคำสั่งซื้อ",
|
|
"delivery": "การจัดส่งและการคืนสินค้า"
|
|
},
|
|
"cart": {
|
|
"title": "ตะกร้าสินค้า",
|
|
"items": "{{count}} รายการ",
|
|
"empty": "ตะกร้าสินค้าของคุณว่างเปล่า",
|
|
"continueShopping": "เลือกซื้อสินค้าต่อ",
|
|
"subtotal": "ยอดรวมยอด",
|
|
"shippingNote": "ค่าจัดส่งและภาษีจะถูกคำนวณท้ายสุด",
|
|
"proceed": "ดำเนินการชำระเงิน"
|
|
},
|
|
"footer": {
|
|
"catchphrase": "ยกระดับพื้นที่ของคุณด้วยน้ำหอมระดับพรีเมียม",
|
|
"explore": "สำรวจ",
|
|
"support": "ช่วยเหลือ",
|
|
"followUs": "ติดตามเรา",
|
|
"contactUs": "ติดต่อสอบถาม",
|
|
"rights": "สงวนลิขสิทธิ์."
|
|
},
|
|
"dynamic": {
|
|
"heroLearnMore": "ดูรายละเอียดเพิ่มเติม",
|
|
"products": "สินค้า",
|
|
"viewAll": "ดูทั้งหมด →",
|
|
"emptyProducts": "ไม่พบสินค้าในหมวดนี้",
|
|
"authorBy": "โดย",
|
|
"notes": {
|
|
"top": "กลิ่นเปิด",
|
|
"heart": "กลิ่นกลาง",
|
|
"base": "กลิ่นฐาน"
|
|
},
|
|
"contactInfo": {
|
|
"address": "ที่อยู่",
|
|
"email": "อีเมล",
|
|
"line": "Line",
|
|
"hours": "เวลาทำการ"
|
|
}
|
|
},
|
|
"contactForm": {
|
|
"title": "ติดต่อเรา",
|
|
"subtitle": "ส่งข้อความถึงทีมงานของเรา เรายินดีให้บริการและพร้อมตอบทุกข้อสงสัย",
|
|
"successTitle": "ส่งข้อความสำเร็จ",
|
|
"successBody": "ขอบคุณที่ติดต่อเรา ทีมงานจะรีบตอบกลับโดยเร็วที่สุด",
|
|
"name": "ชื่อ-นามสกุล",
|
|
"namePlaceholder": "กรอกชื่อของคุณ",
|
|
"email": "อีเมล",
|
|
"message": "ข้อความ",
|
|
"messagePlaceholder": "พิมพ์ข้อความของคุณที่นี่...",
|
|
"submit": "ส่งข้อความ"
|
|
},
|
|
"checkout": {
|
|
"title": "ระบบสั่งซื้อปลอดภัย",
|
|
"pageHeading": "ยืนยันคำสั่งซื้อ",
|
|
"pageDescription": "ตรวจสอบรายการสินค้า ใช้คูปองหรือคะแนนสะสม และสร้างคำสั่งซื้อเพื่อไปยังหน้ารายละเอียดออเดอร์",
|
|
"seoDescription": "ตรวจสอบรายการสินค้า กรอกข้อมูลจัดส่ง และสร้างคำสั่งซื้อ {{brand}}",
|
|
"seoDescriptionDefault": "ตรวจสอบรายการสินค้า กรอกข้อมูลจัดส่ง และสร้างคำสั่งซื้อ",
|
|
"loadingCart": "กำลังโหลดตะกร้าสินค้า...",
|
|
"emptyCartTitle": "ตะกร้าสินค้าว่าง",
|
|
"emptyCartDesc": "เลือกสินค้าที่คุณชอบก่อน แล้วกลับมายืนยันคำสั่งซื้อที่หน้านี้ได้เลย",
|
|
"continueShopping": "กลับไปเลือกสินค้า",
|
|
"recipientInfo": {
|
|
"title": "ข้อมูลผู้รับสินค้า",
|
|
"subtitle": "ข้อมูลนี้จะถูกส่งไปสร้างคำสั่งซื้อตาม contract ของ backend",
|
|
"name": "ชื่อผู้รับ *",
|
|
"namePlaceholder": "ชื่อ-นามสกุล",
|
|
"phone": "เบอร์โทรศัพท์ *",
|
|
"phonePlaceholder": "0812345678",
|
|
"phoneValidation": "กรุณากรอกเบอร์โทรศัพท์ 9-10 หลัก",
|
|
"email": "อีเมล *",
|
|
"emailPlaceholder": "you@example.com"
|
|
},
|
|
"shippingAddress": {
|
|
"title": "ที่อยู่จัดส่ง",
|
|
"subtitle": "สมาชิกสามารถเลือกที่อยู่ที่บันทึกไว้ หรือกรอกที่อยู่ใหม่ได้",
|
|
"addNewAddress": "กรอกที่อยู่ใหม่",
|
|
"defaultBadge": "ค่าเริ่มต้น",
|
|
"addressLine": "บ้านเลขที่ / ถนน / ซอย *",
|
|
"addressLinePlaceholder": "บ้านเลขที่ หมู่บ้าน ถนน ซอย",
|
|
"subdistrict": "ตำบล/แขวง *",
|
|
"district": "อำเภอ/เขต *",
|
|
"province": "จังหวัด *",
|
|
"zipcode": "รหัสไปรษณีย์ *",
|
|
"zipcodePlaceholder": "10110"
|
|
},
|
|
"summary": {
|
|
"title": "สรุปรายการ",
|
|
"itemsCount": "{{count}} รายการในตะกร้า",
|
|
"standardVariant": "Standard",
|
|
"couponLabel": "คูปองส่วนลด",
|
|
"couponPlaceholder": "COUPON",
|
|
"applyCoupon": "ใช้",
|
|
"removeCoupon": "ลบ",
|
|
"pointsLabel": "คะแนนสะสม",
|
|
"pointsBalance": "{{count}} points",
|
|
"usePoints": "ใช้คะแนนเป็นส่วนลด",
|
|
"subtotal": "Subtotal",
|
|
"coupon": "Coupon",
|
|
"points": "Points",
|
|
"shipping": "Shipping",
|
|
"freeShipping": "Free shipping",
|
|
"total": "Total",
|
|
"notice": "รอบนี้จะสร้างคำสั่งซื้อสถานะรอชำระเงิน แล้วพาไปหน้า Order Detail ส่วน payment/slip upload ยังเป็นงานถัดไปตามแผน",
|
|
"placeOrder": "สร้างคำสั่งซื้อ"
|
|
},
|
|
"errors": {
|
|
"loadFailed": "ไม่สามารถโหลดข้อมูล checkout ได้",
|
|
"invalidCoupon": "คูปองนี้ไม่สามารถใช้ได้",
|
|
"validateCouponFailed": "ไม่สามารถตรวจสอบคูปองได้",
|
|
"emptyCart": "ตะกร้าสินค้าว่าง กรุณาเลือกสินค้าก่อน checkout",
|
|
"missingAddress": "กรุณากรอกที่อยู่จัดส่งให้ครบถ้วน",
|
|
"createOrderFailed": "ไม่สามารถสร้างคำสั่งซื้อได้"
|
|
}
|
|
},
|
|
"order": {
|
|
"status": {
|
|
"PENDING_PAYMENT": "รอชำระเงิน",
|
|
"PAID": "ชำระเงินแล้ว",
|
|
"PROCESSING": "กำลังจัดเตรียมสินค้า",
|
|
"SHIPPED": "จัดส่งแล้ว",
|
|
"DELIVERED": "จัดส่งสำเร็จ",
|
|
"CANCELLED": "ยกเลิกแล้ว"
|
|
},
|
|
"header": {
|
|
"orderStatus": "สถานะคำสั่งซื้อ",
|
|
"orderReceived": "คำสั่งซื้อของคุณถูกบันทึกแล้ว สามารถตรวจสอบสถานะล่าสุดหรือชำระเงินได้จากหน้านี้"
|
|
},
|
|
"cards": {
|
|
"created": "วันที่สั่งซื้อ",
|
|
"status": "สถานะ",
|
|
"trackingNo": "เลขพัสดุ",
|
|
"pendingTracking": "อยู่ระหว่างจัดเตรียมพัสดุ"
|
|
},
|
|
"items": {
|
|
"title": "รายการสินค้า",
|
|
"subtotal": "ยอดรวมสินค้า",
|
|
"shippingFee": "ค่าจัดส่ง",
|
|
"discount": "ส่วนลด",
|
|
"total": "ยอดรวมสุทธิ"
|
|
},
|
|
"payment": {
|
|
"required": "ยอดที่ต้องชำระ",
|
|
"methodBank": "โอนเงินธนาคาร",
|
|
"methodPromptPay": "PromptPay QR",
|
|
"bank": "ธนาคาร",
|
|
"accountNumber": "เลขที่บัญชี",
|
|
"accountName": "ชื่อบัญชี",
|
|
"copied": "คัดลอกเลขบัญชีแล้ว",
|
|
"copyAccount": "คัดลอกเลขบัญชี",
|
|
"transferInstruction": "กรุณาโอนเงินตามยอดที่ระบุ และแนบสลิปด้านล่าง",
|
|
"slipVerification": "แนบหลักฐานการโอนเงิน (สลิป)",
|
|
"slipUploaded": "แนบสลิปสำเร็จแล้ว",
|
|
"slipUploadedDesc": "เราจะตรวจสอบยอดเงินและดำเนินการจัดส่งให้โดยเร็ว",
|
|
"uploading": "กำลังอัปโหลด...",
|
|
"dropSlip": "คลิกหรือลากไฟล์สลิปมาวางที่นี่",
|
|
"supportFormat": "รองรับไฟล์ JPG, PNG (ไม่เกิน 5MB)",
|
|
"uploadFailed": "อัปโหลดสลิปไม่สำเร็จ กรุณาลองใหม่อีกครั้ง",
|
|
"promptPayTitle": "คิวอาร์โค้ด PromptPay",
|
|
"generatePromptPay": "สร้าง QR Code PromptPay",
|
|
"generatingQr": "กำลังสร้าง QR Code...",
|
|
"scanPromptPay": "สแกน QR Code ด้วยแอปธนาคารเพื่อชำระเงิน",
|
|
"paymentComplete": "ชำระเงินเรียบร้อยแล้ว ขอบคุณที่สั่งซื้อสินค้ากับเรา",
|
|
"failedGenerateQr": "ไม่สามารถสร้าง PromptPay QR ได้"
|
|
},
|
|
"navigation": {
|
|
"trackAnother": "ค้นหาออเดอร์อื่น",
|
|
"continueShopping": "กลับไปช้อปต่อ",
|
|
"loadFailed": "ไม่สามารถโหลดคำสั่งซื้อนี้ได้",
|
|
"backToTrack": "กลับไปค้นหาคำสั่งซื้อ"
|
|
}
|
|
},
|
|
"track": {
|
|
"seoTitle": "ติดตามคำสั่งซื้อ",
|
|
"seoDescription": "ตรวจสอบสถานะคำสั่งซื้อด้วยหมายเลขคำสั่งซื้อและเบอร์โทรศัพท์ที่ใช้สั่งซื้อ",
|
|
"hero": {
|
|
"eyebrow": "สถานะคำสั่งซื้อ",
|
|
"title": "ติดตามสถานะสินค้าของคุณ",
|
|
"description": "กรอกหมายเลขคำสั่งซื้อและเบอร์โทรศัพท์เพื่อตรวจสอบสถานะสินค้า หรือกลับมาดูคำสั่งซื้อที่เคยค้นหาบนอุปกรณ์นี้"
|
|
},
|
|
"search": {
|
|
"eyebrow": "ค้นหาด้วยตนเอง",
|
|
"title": "ค้นหาคำสั่งซื้อ",
|
|
"orderIdLabel": "หมายเลขคำสั่งซื้อ",
|
|
"orderIdPlaceholder": "เช่น 1024",
|
|
"phoneLabel": "เบอร์โทรศัพท์",
|
|
"phonePlaceholder": "เบอร์โทรที่ใช้ตอนสั่งซื้อ",
|
|
"submit": "ค้นหาคำสั่งซื้อ",
|
|
"searching": "กำลังค้นหา..."
|
|
},
|
|
"recent": {
|
|
"title": "ประวัติคำสั่งซื้อบนอุปกรณ์นี้",
|
|
"orderLabel": "คำสั่งซื้อ",
|
|
"emptyTitle": "ยังไม่มีประวัติคำสั่งซื้อบนอุปกรณ์นี้",
|
|
"emptyDesc": "ใช้ฟอร์มค้นหาด้านซ้ายเพื่อค้นหาและบันทึกออเดอร์"
|
|
},
|
|
"errors": {
|
|
"invalidOrderId": "กรุณากรอกหมายเลขคำสั่งซื้อให้ถูกต้อง",
|
|
"notFound": "ไม่สามารถยืนยันข้อมูลคำสั่งซื้อได้",
|
|
"networkError": "เกิดข้อผิดพลาดในการเชื่อมต่อ กรุณาลองใหม่อีกครั้ง"
|
|
}
|
|
},
|
|
"cookie": {
|
|
"settings": "การตั้งค่าคุกกี้",
|
|
"bannerTitle": "เราให้ความสำคัญกับความเป็นส่วนตัวของคุณ",
|
|
"bannerDesc": "เราใช้คุกกี้เพื่อเพิ่มประสิทธิภาพ ประสบการณ์ที่ดีในการใช้งานเว็บไซต์ และเพื่อการวิเคราะห์ปรับปรุงบริการ ท่านสามารถเลือกตั้งค่าความยินยอมตามประเภทคุกกี้ได้",
|
|
"btnCustomize": "ตั้งค่าคุกกี้",
|
|
"btnRejectAll": "ปฏิเสธทั้งหมด",
|
|
"btnAcceptAll": "ยอมรับทั้งหมด",
|
|
"btnSavePreferences": "บันทึกการตั้งค่า",
|
|
"prefTitle": "ศูนย์การตั้งค่าความเป็นส่วนตัว",
|
|
"prefSubtitle": "จัดการความยินยอมในการจัดเก็บและใช้งานคุกกี้ตาม พ.ร.บ. คุ้มครองข้อมูลส่วนบุคคล (PDPA)",
|
|
"alwaysActive": "เปิดใช้งานเสมอ",
|
|
"catNecessaryTitle": "คุกกี้ที่จำเป็นอย่างยิ่ง (Strictly Necessary)",
|
|
"catNecessaryDesc": "คุกกี้เหล่านี้มีความจำเป็นต่อการทำงานพื้นฐานของเว็บไซต์ เช่น การเข้าสู่ระบบ ความปลอดภัย การจดจำสินค้าในตะกร้า และการตั้งค่าภาษา เว็บไซต์ไม่สามารถทำงานได้อย่างถูกต้องหากไม่มีคุกกี้เหล่านี้",
|
|
"catAnalyticsTitle": "คุกกี้เพื่อการวิเคราะห์และวัดผล (Analytics & Performance)",
|
|
"catAnalyticsDesc": "ช่วยให้เราทราบสถิติการเข้าชม พฤติกรรมหน้าเว็บยอดนิยม และเส้นทางการใช้งานของผู้ใช้ เพื่อนำข้อมูลไปปรับปรุงประสิทธิภาพและบริการ (เช่น Google Analytics 4) ข้อมูลจะถูกจัดเก็บแบบไม่ระบุตัวตนโดยตรง",
|
|
"catMarketingTitle": "คุกกี้เพื่อการตลาดและโฆษณา (Marketing & Targeting)",
|
|
"catMarketingDesc": "ใช้เพื่อนำเสนอโปรโมชัน โฆษณา และเนื้อหาที่สอดคล้องกับความสนใจของท่านผ่านแพลตฟอร์มพันธมิตร (เช่น Meta Pixel, TikTok Pixel, Google Ads) รวมถึงวัดประสิทธิผลของแคมเปญ"
|
|
}
|
|
}
|
|
|