i18n(th): batch 4 — shared labels, fees & receipts, physical cards

This commit is contained in:
SkateSpots 2026-10-06 13:51:23 +07:00
parent 185924649c
commit 59cf47d3e6
2 changed files with 492 additions and 0 deletions

490
src/i18n/th/batch4.ts Normal file
View file

@ -0,0 +1,490 @@
/**
* Thai (ไทย) — batch 4: labels (features, categories, status), fees (featured
* placement + Pro receipts) and physical cards.
* Obstacle/feature names and skate hardware stay English.
*/
const thBatch4 = {
labelsUi: {
spotCategory: {
street: { label: 'Street', description: 'สปอตที่พบเจอทั่วไป ภูมิประเทศในเมือง' },
transition: { label: 'Transition', description: 'พื้นผิวโค้ง/ทางลาด' },
park: { label: 'Park', description: 'สเก็ตพาร์คที่สร้างขึ้น' },
plaza: { label: 'Plaza', description: 'ลานเมือง (เช่น MACBA, Love Park)' },
},
spotFeature: {
wallrides: 'Wallrides',
stairs: 'Stairs & Handrails',
rails: 'Rails',
ledges: 'Ledges & Curbs',
gaps: 'Gaps',
flatground: 'Flatground',
'manual-pads': 'Manual Pads',
'half-pipes': 'Half Pipes',
'quarter-pipes': 'Quarter Pipes',
'mini-ramps': 'Mini Ramps',
bowls: 'Bowls',
vert: 'Vert Ramps',
'mega-ramps': 'Mega Ramps',
hubbas: 'Hubbas',
'euro-gaps': 'Euro Gaps',
banks: 'Banks',
'spine-ramps': 'Spine Ramps',
'roll-ins': 'Roll-ins',
hips: 'Hips',
volcano: 'Volcano',
pyramids: 'Pyramids / Funboxes',
'snake-runs': 'Snake Runs',
'pump-track': 'Pump Track Rollers',
'flat-bars': 'Flat Bars',
},
spotType: {
street: 'Street',
transition: 'Transition',
park: 'Park',
plaza: 'Plaza',
wallrides: 'Wallrides',
stairs: 'Stairs & Handrails',
rails: 'Rails',
ledges: 'Ledges & Curbs',
gaps: 'Gaps',
flatground: 'Flatground',
'manual-pads': 'Manual Pads',
'half-pipes': 'Half Pipes',
'quarter-pipes': 'Quarter Pipes',
'mini-ramps': 'Mini Ramps',
bowls: 'Bowls',
vert: 'Vert Ramps',
'mega-ramps': 'Mega Ramps',
hubbas: 'Hubbas',
'euro-gaps': 'Euro Gaps',
banks: 'Banks',
'spine-ramps': 'Spine Ramps',
'roll-ins': 'Roll-ins',
hips: 'Hips',
volcano: 'Volcano',
pyramids: 'Pyramids / Funboxes',
'snake-runs': 'Snake Runs',
'pump-track': 'Pump Track Rollers',
'flat-bars': 'Flat Bars',
diy: 'DIY',
rail: 'Rail',
ledge: 'Ledge',
gap: 'Gap',
bowl: 'Bowl',
stall: 'Stall',
slappy: 'Slappy',
},
access: {
public: { label: 'สาธารณะ - เปิดให้ทุกคน' },
private: { label: 'ที่ดินส่วนบุคคล - ต้องขออนุญาต' },
locals: { label: 'ถามคนท้องถิ่นก่อน' },
},
shelter: {
outdoor: { label: 'กลางแจ้ง', short: 'กลางแจ้ง', description: 'โล่งสนิท — ฝนตกเล่นไม่ได้' },
partial: { label: 'มีที่กำบังบางส่วน', short: 'กำบังบางส่วน', description: 'สิ่งกีดขวางบางส่วนยังแห้งอยู่' },
covered: { label: 'มีหลังคา/มุง', short: 'มีหลังคา', description: 'กลางแจ้งแต่มีหลังคาคลุม' },
indoor: { label: 'ในร่ม', short: 'ในร่ม', description: 'ปิดมิดชิด — เล่นได้ทั้งฝนและแดด' },
},
eventType: {
contest: 'การแข่งขัน',
demo: 'Demo',
session: 'Session',
workshop: 'เวิร์กช็อป',
premiere: 'รอบปฐมทัศน์',
tradeshow: 'งานแสดงสินค้า',
gameskate: 'Game of Skate',
concert: '🎸 คอนเสิร์ต',
jam: '🎵 Jam',
festival: '🎪 เทศกาล',
popup: '🎯 ป็อปอัป',
},
gearCategory: {
deck: 'Deck',
trucks: 'Trucks',
wheels: 'Wheels',
bearings: 'Bearings',
shoes: 'รองเท้าสเก็ต',
clothing: 'เสื้อผ้า',
protective: 'Gear ป้องกัน',
stickers: 'สติกเกอร์',
wax: 'Wax',
tools: 'เครื่องมือ',
griptape: 'Griptape',
rubbrick: 'Rub Brick',
},
gearCondition: {
new: { label: 'ใหม่', description: 'ไม่เคยใช้ ยังอยู่ในบรรจุภัณฑ์' },
like_new: { label: 'เหมือนใหม่', description: 'แทบไม่ใช้ สภาพดีเยี่ยม' },
good: { label: 'ดี', description: 'ใช้งานปกติ ทำงานสมบูรณ์' },
well_used: { label: 'ใช้มาพอสมควร', description: 'มีร่องรอยแต่ยังใช้ได้' },
},
priceType: {
fixed: { label: 'ราคาคงที่', description: 'กำหนดราคาเป็น USD หรือ sats' },
free: { label: 'ฟรี', description: 'แจก' },
trade: { label: 'แลกเปลี่ยน', description: 'หาคนสลับของ' },
offer: { label: 'ต่อรองได้', description: 'ราคาเจรจาได้' },
},
listingType: {
selling: { label: 'ขาย', description: 'ลงขาย Gear' },
wtb: { label: 'ต้องการซื้อ', description: 'กำลังหา Gear เฉพาะ' },
},
tour: {
spotType: {
street: 'Street',
park: 'Park',
diy: 'DIY',
transition: 'Transition',
hidden: 'สถานที่ลับ',
},
category: {
local: { label: 'Local Tour', description: 'พาชมสปอตที่ซ่อนในเมืองของคุณ' },
national: { label: 'National Tour', description: 'ทริปข้ามเมืองทั่วประเทศ' },
international: { label: 'International Tour', description: 'ผจญภัยข้ามพรมแดนหลายประเทศ' },
destruction: { label: 'World Destruction', description: 'การแข่งขันทีมระดับโลกสไตล์ KOTR' },
},
},
crew: {
vibe: {
street: 'Street',
transition: 'Transition / Vert',
park: 'Park',
diy: 'DIY',
cruising: 'Cruising / ถ่ายคลิป',
oldschool: 'Old School',
allterrain: 'All Terrain',
girls: 'Girl / Woman',
youth: 'Youth / Groms',
adaptive: 'Adaptive',
punk: 'Punk',
hiphop: 'Rap / Hip-Hop',
},
focus: {
mixed: 'Mixed / ทั่วไป',
builder: 'DIY & ช่างสร้าง',
photo: 'ถ่ายภาพ & หนัง',
coaching: 'โค้ชชิ่ง',
art: 'ศิลปะ & ดีไซน์',
music: 'วงดนตรี & ดนตรี',
wellness: 'ฝึกซ้อม & กายภาพ',
},
focusDescription: {
mixed: 'Crew สเก็ตทั่วไป — แสดงเฉพาะหน้า Crews',
builder: 'Crew DIY / สร้างพาร์ค — แสดงใน The Lab หมวด Builders ด้วย',
photo: 'Crew ถ่ายคลิป ถ่ายภาพ หรือตัดต่อ — แสดงใน The Lab หมวด Photo & Film ด้วย',
coaching: 'Crew โค้ชชิ่ง / สอน — แสดงใน The Lab หมวด Coaching ด้วย',
art: 'กลุ่มศิลปะ ดีไซน์ Graffiti หรือรอยสัก — แสดงใน The Lab หมวด Art & Design ด้วย',
music: 'วงดนตรีหรือกลุ่มดนตรี — แสดงใน The Lab หมวด Music ด้วย',
wellness: 'Crew ฝึกซ้อม ฟิตเนส หรือกายภาพ — แสดงใน The Lab หมวด Training ด้วย',
},
lookingFor: {
filmer: 'Filmer',
photographer: 'ช่างภาพ',
editor: 'ตัดต่อวิดีโอ',
coach: 'โค้ช',
builder: 'ช่างสร้าง Ramp',
artist: 'ศิลปิน / ดีไซเนอร์',
musician: 'นักดนตรี / วง',
members: 'สมาชิกใหม่',
},
role: {
filmer: 'Filmer',
photographer: 'ช่างภาพ',
editor: 'ตัดต่อ',
coach: 'โค้ช',
builder: 'ช่างสร้าง',
artist: 'ศิลปิน',
graffiti: 'Graffiti',
tattoo: 'Tattoo',
trainer: 'เทรนเนอร์',
musician: 'นักดนตรี',
judge: 'กรรมการ',
manager: 'ผู้จัดการทีม',
og: 'OG',
},
},
memberVisibility: {
public: {
label: 'สาธารณะ',
description: 'ใครก็เห็นคุณใน crew นี้ — บนหน้า crew สาธารณะและในการค้นหาเพื่อน crew',
},
crew: {
label: 'เฉพาะ crew',
description: 'เฉพาะเพื่อน crew ที่ยืนยันแล้วและผู้ก่อตั้งเห็นคุณที่นี่ คนอื่นเห็นคุณเป็น “สมาชิกที่ซ่อนอยู่” ไม่ระบุตัวตน หมายเหตุ: นี่คือความเป็นส่วนตัวระดับแอป — แท็กสมาชิกของคุณยังอยู่สาธารณะบน relay แค่ไม่แสดงให้คนนอกเห็น',
},
},
tagCategory: {
features: { name: 'ลักษณะ', description: 'สิ่งกีดขวางและภูมิประเทศ' },
surfaces: { name: 'พื้นผิว', description: 'วัสดุและผิวสัมผัส' },
sizes: { name: 'ขนาด', description: 'มิติและสเกล' },
stairs: { name: 'จำนวนขั้น', description: 'จำนวนขั้นบันได' },
vibes: { name: 'บรรยากาศ', description: 'บรรยากาศและสภาพ' },
location: { name: 'ตำแหน่ง', description: 'บริบทของสถานที่' },
tricks: { name: 'ทริก', description: 'เหมาะกับทริกเฉพาะ' },
},
spotTagCategory: {
street: { label: 'Street', description: 'สปอต Street - บันได Rails Ledges' },
park: { label: 'Park', description: 'สเก็ตพาร์ค - สาธารณะหรือส่วนตัว' },
diy: { label: 'DIY', description: 'สปอต DIY/ทำเอง' },
plaza: { label: 'Plaza', description: 'ลานสาธารณะที่มีสถาปัตยกรรมเหมาะกับสเก็ต' },
},
status: {
active: { label: 'ใช้งานได้', description: 'พร้อมเล่น — ไปเลย' },
bust: { label: 'เสี่ยงถูกไล่', description: 'เสี่ยงถูกไล่สูง — รปภ. หรือตำรวจ' },
skate_stopped: { label: 'ถูกกันสเก็ต', description: 'มีที่กั้น/ฝาครอบ แต่เล่นได้บางส่วน' },
closed: { label: 'ปิด', description: 'ปิดชั่วคราว — ก่อสร้างหรือมีอีเวนต์' },
gone: { label: 'หายไป', description: 'ถูกรื้อ ปูทับ หรือกั้นถาวร' },
},
price: {
free: 'ฟรี',
trade: 'แลกเปลี่ยน',
makeOffer: 'ต่อรองได้',
offer: 'ข้อเสนอ',
},
},
feesUi: {
feeFeaturedEventLabel: 'อีเวนต์แนะนำ',
feeFeaturedEventDesc: 'โปรโมตอีเวนต์ของคุณบน SkateSpots',
feeFeaturedEventBenefit: 'อีเวนต์ของคุณจะอยู่ด้านบนของหน้าอีเวนต์',
feeLabProfileLabel: 'โปรไฟล์ Lab Pro',
feeLabProfileDesc: 'โปรโมตบริการของคุณใน The Lab',
feeLabProfileBenefit: 'ป้าย Pro + ตำแหน่งแนะนำเมื่อนักสเก็ตดู The Lab',
feeFeaturedShopLabel: 'ร้านแนะนำ',
feeFeaturedShopDesc: 'โปรโมตสเก็ตช็อปของคุณบนแผนที่และไดเรกทอรี',
feeFeaturedShopBenefit: 'ป้ายยืนยัน + หมุดแนะนำบนแผนที่',
feeFeaturedTourLabel: 'ทัวร์แนะนำ',
feeFeaturedTourDesc: 'โปรโมตทัวร์ของคุณบน SkateSpots',
feeFeaturedTourBenefit: 'ป้าย Pro + ตำแหน่งบนสุดเมื่อนักสเก็ตดูทัวร์',
duration7d: '7 วัน',
duration30d: '1 เดือน',
duration90d: '3 เดือน',
duration365d: '12 เดือน',
metaActive: '{{label}} — ใช้งานอยู่',
daysRemainingOne: 'เหลือ {{count}} วัน',
daysRemainingMany: 'เหลือ {{count}} วัน',
zapRequestContent: 'SkateSpots {{label}} ({{tier}})',
errGenerate: 'สร้างใบแจ้งหนี้ไม่สำเร็จ',
paymentReceived: '⚡ ได้รับการชำระเงิน!',
paymentReceivedDesc: '{{amount}} sats — {{label}} เปิดใช้งานแล้ว',
autoPayFailed: 'จ่ายอัตโนมัติไม่สำเร็จ',
autoPayFailedDesc: 'จ่ายเองโดยใช้ QR หรือใบแจ้งหนี้ด้านล่าง',
payStatusUnknown: 'ไม่ทราบสถานะการชำระเงิน — อาจจ่ายไปแล้ว ตรวจกระเป๋าเงินก่อนจ่ายซ้ำ',
invoiceCopied: 'คัดลอกใบแจ้งหนี้แล้ว!',
activeBang: '{{label}} เปิดใช้งานแล้ว!',
chooseDuration: 'เลือกระยะเวลา',
bestValue: 'คุ้มที่สุด',
perDay: '{{price}}/วัน',
validFor: 'ใช้ได้',
amountLine: '~${{usd}} USD · ถึง {{name}} · {{tier}}',
payToContinue: 'จ่าย {{amount}} sats เพื่อดำเนินการต่อ',
generating: 'กำลังสร้างใบแจ้งหนี้…',
processing: 'กำลังประมวลผลการชำระเงิน…',
invoiceQrAlt: 'QR ใบแจ้งหนี้ Lightning',
copyInvoice: 'คัดลอกใบแจ้งหนี้',
openWallet: 'เปิดกระเป๋าเงิน',
payConnected: 'จ่ายด้วยกระเป๋าเงินที่เชื่อมต่อ',
scanAny: 'สแกนด้วยกระเป๋าเงิน Lightning ใดก็ได้',
tryAgain: 'ลองอีกครั้ง',
proReceiptTitle: '🦧⚡ Sasquatch Pro — คุณเข้ามาแล้ว!',
proReceiptPass: 'บัตร: {{pass}} ({{sats}} sats)',
proReceiptActiveUntil: 'ใช้งานถึง: {{until}}',
proReceiptUnlocked: 'สิ่งที่คุณปลดล็อก:',
proReceiptBullet1: '• ผู้ช่วยส่วนตัว — อ่าน Stash, crew, สปอต & รายการของคุณ',
proReceiptBullet2: '• ร่างการดำเนินการ — ลงขาย Gear, โพสต์สภาพสปอต, วางแผนทริป (คุณยืนยัน)',
proReceiptBullet3: '• คำตอบที่ใช้บริบทส่วนตัวของคุณ ไม่ใช่แค่ข้อมูลสาธารณะ',
proReceiptBullet4: '• ⚡ คุณสนับสนุน SkateSpots โดยตรงและช่วยให้ฟรี + ไม่มีโฆษณา',
proReceiptThanks: 'ขอบคุณที่ช่วยให้ SkateSpots ฟรีและไม่มีโฆษณา ไปเล่นได้เลย 🛹',
proReceiptSubject: 'ใบเสร็จ Sasquatch Pro',
receiptContent: 'Sasquatch Pro — บัตรผู้สนับสนุน {{tier}} 🦧⚡',
receiptAlt: 'บัตรผู้สนับสนุน Sasquatch Pro ({{tier}}) ใช้ได้ถึง {{until}}',
purchaseComment: 'Sasquatch Pro — {{tier}} 🦧',
errLogin: 'เข้าสู่ระบบเพื่ออัปเกรดเป็น Pro',
errStart: 'เริ่มการซื้อไม่สำเร็จ',
errRecord: 'บันทึกบัตรของคุณไม่สำเร็จ',
},
cardUi: {
save: 'บันทึกการ์ดลง Nostr',
saved: 'บันทึกการ์ดแล้ว',
savedDesc: 'การ์ดของคุณลงนามและตรวจสอบได้แล้ว',
saveFailed: 'บันทึกการ์ดไม่สำเร็จ',
notPublished: 'ยังไม่เผยแพร่',
titleNeon: 'Rider',
titleRest: 'Card',
saveFrontPng: 'บันทึกด้านหน้า (PNG)',
expired: 'หมดอายุ',
logoUploaded: 'อัปโหลดโลโก้แล้ว',
logoUploadFailed: 'อัปโหลดโลโก้ไม่สำเร็จ',
venue: 'สถานที่ที่เชื่อม (ไม่บังคับ)',
venueNone: 'ไม่มีสถานที่',
venueHint: 'เลือกสปอตของคุณเองเพื่อผูกบัตรนี้กับสถานที่ ผู้ตรวจสอบจะยืนยันว่าคุณเป็นเจ้าของ',
venuePick: 'เลือกสถานที่ของคุณ',
parkNoVenue: 'บัตร Park ออกได้เฉพาะเจ้าของสถานที่ — แมปสปอตที่คุณเป็นเจ้าของก่อน',
parkAddVenue: 'เพิ่มสปอต',
parkNeedsVenue: 'เลือกสถานที่ที่คุณเป็นเจ้าของ',
parkIssued: 'บัตรที่ออกแล้ว',
parkRevoke: 'เพิกถอน',
parkRevoked: 'เพิกถอนแล้ว',
parkRevokeFailed: 'เพิกถอนไม่สำเร็จ',
v: {
valid: 'ใช้ได้',
validDesc: 'ลายเซ็นถูกต้องและออกโดยสถานที่',
expired: 'หมดอายุ',
expiredDesc: 'เลยวันหมดอายุแล้ว',
revoked: 'เพิกถอนแล้ว',
revokedDesc: 'ผู้ออกยกเลิกบัตรนี้ — อย่ารับ',
invalid: 'ไม่ถูกต้อง',
invalidDesc: 'ลายเซ็นตรวจสอบไม่ผ่าน อย่าเชื่อถือ',
notFound: 'ไม่พบ',
notFoundDesc: 'ไม่พบบันทึกที่ตรงกันบน relay',
unverifiedIssuer: 'ผู้ออกที่ยังไม่ยืนยัน',
unverifiedIssuerDesc: 'บัตรนี้อ้างถึงสถานที่ที่ไม่ได้เป็นของคีย์ผู้ออก',
notBound: 'ไม่ผูกกับสถานที่',
notBoundDesc: 'ไม่ผูกกับสถานที่ — ไม่ได้พิสูจน์เรื่องการเข้าถึง',
noRsvp: 'ไม่มี RSVP',
noRsvpDesc: 'ผู้ถือไม่มี RSVP ของอีเวนต์นี้ในบันทึก',
admitted: 'รับเข้า',
admittedDesc: 'อีเวนต์ของผู้จัด + ผู้ถือ RSVP แล้ว',
noHolder: 'ไม่มีผู้ถือในลิงก์',
noHolderDesc: 'QR นี้ไม่มีผู้ถือตั๋ว (`?h=`) จึงตรวจสอบผู้ถือไม่ได้',
},
passes: {
tab: 'บัตรของฉัน',
pass: 'บัตรเข้า',
none: 'ยังไม่มีบัตร เมื่อสถานที่หรือผู้จัดออกบัตรให้ จะแสดงที่นี่',
},
facets: {
title: 'แสดงมิติตัวตน',
crews: 'Crews',
local: 'ท้องถิ่น',
roles: 'บทบาท Lab',
},
roles: {
coach: 'โค้ช',
filmer: 'Filmer',
editor: 'ตัดต่อ',
photographer: 'ช่างภาพ',
builder: 'ช่างสร้าง',
artist: 'ศิลปิน',
graffiti: 'Graffiti',
tattoo: 'Tattoo',
trainer: 'เทรนเนอร์',
musician: 'นักดนตรี',
judge: 'กรรมการ',
organizer: 'ผู้จัด',
barber: 'ช่างตัดผม',
},
crew: {
crewCard: 'CREW CARD',
crewSub: 'Crew ของคุณ บนการ์ด',
pick: 'เลือก crew',
none: 'คุณยังไม่อยู่ใน crew — เข้าร่วมหรือสร้างก่อน',
hint: 'การ์ดสร้างจากข้อมูลที่ crew ลงนามเอง แก้ไข crew ที่หน้า crew เพื่อเปลี่ยน',
members: 'MEMBERS',
spots: 'SPOTS',
est: 'ก่อตั้ง {{year}}',
openCall: 'เปิดรับ',
verifiedCrew: 'Crew ที่ยืนยันแล้ว',
viewCrew: 'ดู crew',
},
event: {
pass: 'EVENT PASS',
passSub: 'บัตรสำหรับอีเวนต์ที่คุณจะไป',
pick: 'เลือกอีเวนต์',
none: 'ยังไม่มีอีเวนต์ — สร้างหรือ RSVP ก่อน',
hint: 'บัตรสร้างจากข้อมูลที่อีเวนต์ลงนามเอง เฉพาะผู้จัดเท่านั้นที่เปลี่ยนได้',
admits: 'รับเข้า',
going: '{{count}} คนไป',
verifiedEvent: 'อีเวนต์ที่ยืนยันแล้ว',
viewEvent: 'ดูอีเวนต์',
issuePass: 'ออกบัตรเช็กอิน',
issuePassBtn: 'ออกบัตร',
issuePassHint: 'บัตรที่ลงนามสำหรับผู้เข้าร่วมคนหนึ่ง — พวกเขาโชว์ที่ประตู',
notOrganiser: 'เฉพาะผู้จัดเท่านั้นที่ออกบัตรได้',
passIssued: 'ออกบัตรแล้ว',
issueFailed: 'ออกบัตรไม่สำเร็จ',
issuedPasses: 'บัตรเช็กอินที่ออกแล้ว',
},
studio: {
unsaved: 'การเปลี่ยนแปลงที่ยังไม่บันทึก',
saved: 'บันทึกแล้ว',
saveChanges: 'บันทึกการเปลี่ยนแปลง',
allSaved: 'บันทึกแล้ว — เป็นปัจจุบัน',
showOnCard: 'แสดงบนการ์ด',
derived: 'จากโปรไฟล์ Skater ของคุณ',
noSkaterProfile: 'ยังไม่มีโปรไฟล์ Skater —',
editSkaterProfile: 'เพิ่มสไตล์ & ระดับของคุณ',
noPhoto: 'ยังไม่มีรูปโปรไฟล์ —',
addPhoto: 'เพิ่มในโปรไฟล์ของคุณ',
finishTitle: 'ทำการ์ดให้เสร็จ',
finishDesc: 'รูปและโปรไฟล์ Skater ทำให้ดูจริง',
checkPhoto: 'รูปโปรไฟล์',
checkName: 'ชื่อที่แสดง',
checkProfile: 'สไตล์ & ระดับ',
checkCrew: 'เข้าร่วม crew',
moreTypes: 'ประเภทการ์ดเพิ่มเติมจะปลดล็อกเมื่อคุณแมปสปอตที่คุณเป็นเจ้าของ เข้าร่วม crew หรือ RSVP อีเวนต์',
accent: 'สีเน้น',
accentHint: 'แทนที่สีเน้นของธีม',
accentClear: 'ใช้สีของธีม',
logo: 'โลโก้ / ตราประจำตัว',
logoAdd: 'อัปโหลด',
logoChange: 'เปลี่ยน',
logoClear: 'นำออก',
},
back: {
title: 'ด้านหลังสำหรับพิมพ์',
desc: 'Crews บทบาท ผู้สนับสนุน & ลิงก์ที่ด้านหลัง',
showBack: 'แสดงด้านหลัง',
showFront: 'แสดงด้านหน้า',
empty: 'ยังไม่มีอะไรที่นี่ — เพิ่ม crew บทบาท หรือผู้สนับสนุน',
},
verify: {
checking: 'กำลังตรวจสอบการ์ด…',
notFound: 'ไม่พบการ์ด',
notFoundDesc: 'ไม่พบอีเวนต์ที่ตรงกันบน relay อาจถูกลบไปแล้ว หรือลิงก์ผิด',
invalid: 'ลายเซ็นไม่ถูกต้อง',
invalidDesc: 'อีเวนต์นี้มีอยู่แต่ลายเซ็นตรวจสอบไม่ผ่าน อย่าเชื่อถือ',
authentic: 'ของแท้',
authenticDesc: 'ลายเซ็นของผู้ออกถูกต้อง',
kind: 'ประเภท',
kindPark: 'บัตรเข้า Park',
kindRider: 'Rider Card',
kindCrew: 'Crew Card',
kindEvent: 'Event pass',
organiser: 'ผู้จัด',
expired: 'หมดอายุ',
valid: 'ใช้ได้',
holder: 'ผู้ถือ',
ticketHolder: 'ผู้ถือตั๋ว',
rsvp: 'RSVP',
rsvpGoing: 'ไป',
rsvpInterested: 'สนใจ',
rsvpNone: 'ไม่พบ RSVP',
revoked: 'บัตรถูกเพิกถอน',
revokedDesc: 'ผู้ออกยกเลิกบัตรนี้ — อย่ารับ',
issuedBy: 'ออกโดย',
accessLevel: 'ระดับการเข้าถึง',
validThru: 'ใช้ได้ถึง',
selfIssued: 'สถานะ',
selfIssuedDesc: 'บัตรประจำตัวที่ออกเอง',
venue: 'สถานที่',
venueVerified: 'ยืนยันแล้ว — คีย์เจ้าของสถานที่นี้ตรงกับผู้ออก',
venueMismatch: 'บัตรนี้อ้างถึงสถานที่ที่ไม่ได้เป็นของคีย์ผู้ออก',
venueNone: 'ไม่ผูกกับสถานที่',
viewCard: 'ดูการ์ด',
disclaimer: 'ลายเซ็นที่ถูกต้องพิสูจน์ว่าใครลงนามบนการ์ดนี้ — ไม่ได้พิสูจน์ฝีมือหรือสิทธิ์การเข้าถึงเกินกว่าที่สถานที่ออกให้',
details: 'รายละเอียด',
invalidLink: 'ลิงก์ไม่ถูกต้อง',
invalidLinkDesc: 'นั่นดูไม่เหมือนลิงก์การ์ดที่ถูกต้อง',
},
public: {
invalid: 'นั่นดูไม่เหมือนลิงก์การ์ดที่ถูกต้อง',
createYourOwn: 'สร้างการ์ดของคุณเอง',
editYourCard: 'แก้ไขการ์ดของคุณ',
backToEditor: 'กลับไปที่ตัวแก้ไข',
backHome: 'กลับหน้าแรก',
notCustomised: 'นักสเก็ตคนนี้ยังไม่ได้ปรับแต่งการ์ด — นี่คือหน้าตาเริ่มต้น',
verifyNote: 'สแกน QR บนการ์ดเพื่อตรวจสอบ',
},
},
};
export default thBatch4;

View file

@ -1,6 +1,7 @@
import batch1 from './batch1';
import batch2 from './batch2';
import batch3 from './batch3';
import batch4 from './batch4';
/**
* Thai (ไทย) translations — composed from fragments so parallel translation
@ -14,6 +15,7 @@ const th = {
...batch1,
...batch2,
...batch3,
...batch4,
};
export default th;