kintex/mobile/lib/i18n/locales/en.ts
zio 0933dbea41 feat(mobile): B2C visitor tab, congestion pill, live notice feed, ticket wallet, brand logo (v0.2.2 prep)
- (visitor) route group, visitor lib, tickets wallet
- CongestionPill + LiveNoticeFeed components
- login/tickets screens, i18n 4 locales, wordmark assets, splash

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 00:41:57 +09:00

292 lines
10 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* English (en). Mirrors ko key shape (enforced by Translations type). */
import type { Translations } from '../types';
export const en: Translations = {
common: {
appName: 'KINTEX AI Exhibition',
loading: 'Checking…',
retry: 'Retry',
cancel: 'Cancel',
close: 'Close',
user: 'User',
none: '-',
unknown: 'Unknown',
error: 'Error',
},
lang: {
title: 'Language',
subtitle: 'Choose the app language. Your choice is saved on this device.',
ko: '한국어',
en: 'English',
zh: '中文',
ja: '日本語',
},
roles: {
ORGANIZER: 'Organizer',
EXHIBITOR: 'Exhibitor',
CONTRACTOR: 'Contractor',
HALL_MANAGER: 'Hall Manager',
},
nav: {
register: 'Sign up',
forgotPassword: 'Find password',
profile: 'My Info',
checklist: 'Site Checklist',
inspection: 'Site Inspection',
ticketsIndex: 'My Tickets',
ticketsSelect: 'Book Ticket',
tabHome: 'Home',
tabField: 'Site',
tabGallery: 'Gallery',
tabMore: 'More',
},
login: {
brandTitle: 'The moment you apply,\nsee the post-build photo first',
brandCaption: 'AI-generated preview · may differ from the actual build',
compromised:
'This device shows security risks (root/hook/debugger). To protect your data and tickets, please use a normal device.',
title: 'Sign in',
email: 'Email',
emailPlaceholder: 'name@company.com',
password: 'Password',
passwordPlaceholder: 'Password',
otpLabel: 'Two-factor code',
otpPlaceholder: '6-digit code',
otpHelper: '6-digit code from your authenticator (TOTP)',
remember: 'Remember email',
submit: 'Sign in',
submitOtp: 'Verify & sign in',
forgot: 'Find password',
register: 'Sign up',
errEmpty: 'Please enter your email and password.',
errOtpEmpty: 'Please enter the two-factor code.',
errOtpRequired: 'A two-factor code is required. Enter the code from your authenticator app.',
errOtpInvalid: 'The code is incorrect or expired.',
errLocked: 'Account locked after too many attempts. Please try again later.',
errGeneric: 'Sign in failed.',
},
register: {
title: 'Create account',
email: 'Email',
emailPlaceholder: 'name@company.com',
name: 'Name',
namePlaceholder: 'John Doe',
password: 'Password',
passwordPlaceholder: '8+ characters',
passwordHelper: '8100 characters',
company: 'Company (optional)',
companyPlaceholder: 'Zioinfo',
invite: 'Invite code (optional)',
invitePlaceholder: 'Event invite code',
submit: 'Sign up',
goLogin: 'Go to sign in',
errInvalid: 'Please check email, name and password (8+ characters).',
errEmailTaken: 'This email is already registered.',
errGeneric: 'Sign up failed.',
doneJoined: 'Registration complete and linked to the invited event. Please sign in.',
done: 'Registration complete. Please sign in.',
},
forgot: {
title: 'Reset password',
email: 'Email',
emailPlaceholder: 'name@company.com',
request: 'Request reset code',
code: 'Reset code',
codePlaceholder: '6-digit code',
newPassword: 'New password',
newPasswordPlaceholder: '8+ characters',
newPasswordHelper: '8100 characters',
submit: 'Change password',
errEmail: 'Please enter your email.',
errFields: 'Please check the reset code and new password (8+ characters).',
errCode: 'The reset code is incorrect or expired.',
errRequest: 'Request failed.',
errReset: 'Reset failed.',
},
home: {
hello: 'Hello, {{name}}',
noEvent: 'You are not part of any event — check your invite link or code.',
progress: 'Progress',
stepApply: 'Apply',
stepApprove: 'Approve',
stepBuild: 'Build',
stepInspect: 'Inspect',
actionChecklist: 'Site Checklist',
actionInspection: 'Site Inspection',
actionGallery: 'Visualization Gallery',
memberInternal: 'KINTEX internal account (Hall Manager)',
memberGeneral: 'General account',
},
field: {
title: 'Site Work',
guide: 'Site features are available to contractors (checklist) and hall managers (inspection).',
checklistTitle: 'Site Checklist',
checklistDesc: 'Check work steps · attach photos · request inspection',
inspectionTitle: 'Site Inspection',
inspectionDesc: 'Approved drawing vs site photo · pass/fail decision',
},
gallery: {
infoBar: 'AI-generated images cannot be used for contracts or reviews — drawings are the build standard',
degraded: 'Cannot reach the server image history; showing samples (degraded).',
empty: 'No images yet — generate preview photos in the design studio.',
retry: 'Regenerate',
studioNote: 'Edit the design studio on desktop',
notice: 'AI-generated images cannot be used for contracts or reviews (drawings are the standard)',
},
more: {
accountInternal: 'KINTEX internal account (Hall Manager)',
accountGeneral: 'General account',
openProfile: 'Open my info',
apiServer: 'API server',
serverStatus: 'Server status',
statusUp: 'Healthy (UP)',
statusDown: 'Unreachable (degraded)',
signOut: 'Sign out',
version: 'KINTEX AI Exhibition · v0.1.0',
},
profile: {
sectionInfo: 'My Info',
sectionEventRoles: 'Event Roles',
sectionSecurity: 'Account · Security',
sectionBiometric: 'Biometric Lock',
sectionNotify: 'Notifications',
labelName: 'Name',
labelUserId: 'User ID',
labelGlobalRole: 'Global role',
labelTenant: 'Venue (tenant)',
labelType: 'Type',
typeInternal: 'KINTEX internal (Hall Manager)',
typeGeneral: 'General account',
photoChange: 'Change profile photo',
photoTitle: 'Profile photo',
photoSelect: 'Choose a photo',
photoLibrary: 'Library',
photoCamera: 'Camera',
photoApply: 'Apply',
photoApplying: 'Applying…',
photoCaption: 'Displayed as a circle.',
photoPending: 'The selected photo is shown on this device only — server sync is in preparation.',
photoPickerUnavailable: 'Image selection is not available on this device.',
loadErr: 'Failed to load your info.',
uploadErr: 'Photo upload failed.',
otpTitle: 'Two-factor (OTP)',
otpOnAuth: 'Enabled · Authenticator (OTP)',
otpOnMethod: 'Enabled · {{method}}',
otpOff: 'Not set — 2-step authenticator (TOTP) is used at sign in.',
on: 'On',
off: 'Off',
bioTitle: 'Fingerprint · Face lock',
bioDesc:
'When on, you re-authenticate with fingerprint or Face when opening My Info. Sign-in 2FA remains unchanged.',
bioUnsupported:
'This device does not support biometrics or has no fingerprint/Face enrolled. Enroll biometrics in device settings and try again.',
bioFailed: 'Biometric authentication failed. Please try again.',
biometric: 'Biometrics',
lockTitle: 'Biometric lock',
lockHint: 'Unlock with fingerprint or Face.',
notifyDeadline: 'Deadline D-day alerts',
notifyApproval: 'Approval · inspection alerts',
notifyPayment: 'Payment · settlement alerts',
notifyNote: 'Notification settings are saved on this device. Server sync is in preparation.',
signOut: 'Sign out',
signOutConfirm: 'Sign out?',
version: 'KINTEX AI Exhibition · My Info',
},
tickets: {
offline: 'Offline — showing saved tickets',
badgeNotice: 'Check in with the ticket QR at the venue to switch to a mobile badge',
footNote: 'Tickets shown are samples — replaced with live data when the ticket backend (M10) is connected.',
emptyTitle: 'You have no tickets',
emptyBody: 'Book an entry pass and your tickets will appear here.',
emptyBtn: 'Book entry pass',
detailTitle: 'Booking detail · cancel',
},
vnav: {
tabHome: 'Home',
tabEvents: 'Events',
tabTickets: 'Tickets',
tabOnsite: 'On-site',
tabMy: 'My',
},
vhome: {
hello: 'Welcome, {{name}}',
subtitle: "Explore today's exhibition with ease",
noEvent: 'You are not part of any event — book a pass and it will appear here.',
tileTickets: 'My Tickets',
tileTicketsDesc: 'Entry QR · badge',
tileEvents: 'Events',
tileEventsDesc: 'Notices · schedule',
tileOnsite: 'On-site',
tileOnsiteDesc: 'Crowd · parking',
aiTitle: 'AI Visit Assistant',
aiDesc: 'Live crowd, parking and notices. Booth search and wayfinding coming soon.',
},
vevents: {
title: 'Events',
empty: 'You are not part of any event — showing public notices.',
},
notices: {
title: 'Live Notices',
live: 'LIVE',
pinned: 'Pinned',
empty: 'No notices posted.',
degraded: 'Could not load notices (check connection).',
cat: {
URGENT: 'Urgent',
PROGRAM: 'Program',
GENERAL: 'General',
INFO: 'Info',
},
},
onsite: {
segCongestion: 'Crowd',
segParking: 'Parking',
},
congestion: {
overall: 'Overall crowd',
onSite: 'On-site',
people: '{{n}} people',
gates: 'Entry gates',
parking: 'Parking',
popular: 'Popular areas',
empty: 'No crowd data to show.',
degraded: 'Could not load crowd data (check connection).',
},
parking: {
title: 'Parking status',
empty: 'No parking data.',
degraded: 'Could not load parking data (check connection).',
available: '{{n}} free',
capacity: '{{n}} total',
rate: '{{n}} KRW/hr',
daily: 'daily max {{n}} KRW',
passPrice: '{{n}} KRW',
buyPass: 'Buy pass',
myPasses: 'My passes',
noPasses: 'You have no parking passes.',
loginRequired: 'Sign in to buy or view parking passes.',
purchaseTitle: 'Buy parking pass',
selectLot: 'Parking lot',
useDate: 'Use date',
plate: 'Vehicle plate (optional)',
platePlaceholder: 'e.g. 123가4567',
plateNote: 'The plate is masked and not stored.',
payNote: 'Payment is simulated (mock) — no real charge.',
confirm: 'Buy',
purchaseErr: 'Failed to buy the parking pass.',
prevDay: 'Previous day',
nextDay: 'Next day',
passStatus: {
PAID: 'Paid',
USED: 'Used',
CANCELLED: 'Cancelled',
},
},
vmy: {
tickets: 'My Tickets',
ticketsDesc: 'Entry QR · badge switch',
parking: 'My Passes',
parkingDesc: 'Parking status · pre-pass',
},
};