You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

223 lines
9.9 KiB

export default {
login: {
mobilePlaceholder: 'Mobile Number',
captchaPlaceholder: 'Verification Code',
getCode: 'Get Code',
sending: 'Sending...',
resend: 'Resend ({n}s)',
submit: 'Log In',
submitting: 'Logging in…',
loggingIn: 'Logging in...',
cardWelcome: 'Welcome',
participantEntry: 'Competition Registration',
audienceEntry: 'Audience Registration',
checkinEntry: 'Check-in',
reviewerEntry: 'Reviewer',
adminEntry: 'Admin',
debugCode: 'Verification code (temporary): ',
consultAria: 'Contact',
systemAria: 'Competition registration system',
quickAria: 'Registration portals',
invalidMobile: 'Please enter a valid mobile number',
invalidCaptcha: 'Please enter the 6-digit code',
missingSlug: 'Missing competition address. Please use the official entry link.',
competitionMissing: 'This competition is unavailable or unpublished.',
competitionLoadFailed: 'Unable to load competition information',
networkError: 'Network error. Unable to verify the competition link.',
networkLogin: 'Network error. Please confirm the server is running.',
requestFailed: 'Request failed',
tooFrequent: 'Please wait {n}s before requesting another code.',
sendNetwork: 'Network error. Please confirm the backend is running.',
},
layout: {
signupOpen: 'Registration Open',
signupClosed: 'Registration Closed',
signupSoon: 'Coming Soon',
deadlinePrefix: 'Closes',
deadlineAria: 'Registration deadline',
logout: 'Log Out',
userMenu: 'Open user menu',
userFallback: 'User',
impersonation: 'Admin impersonation · {name}',
impersonationAnon: 'Admin impersonation',
impersonationBanner:
'You are viewing the participant portal as an administrator. Use Log Out when finished.',
myRegistrations: 'My Registrations',
mineSubtitle: 'View your submitted registrations',
audienceFallback: 'Audience',
loading: 'Loading…',
none: 'None',
noRecords: 'No registrations yet',
close: 'Close',
viewTicket: 'View e-ticket',
saveQrHint: 'Please screenshot and save this QR code for on-site check-in.',
emptyHint: 'Select a session, submit your registration, and it will appear here.',
registeredCount: 'Registered sessions',
sessionUnit: 'sessions',
sessionFallback: 'Session',
registeredOk: 'Registered',
eventTime: 'Event time',
eventPlace: 'Venue',
registeredAt: 'Registered at',
showTicket: 'Show e-ticket',
},
apply: {
title: 'Competition Registration',
submittedEditable: 'Submitted. You can still edit.',
submittedFilesOnly: 'Submitted. Only attachments can be updated.',
submittedLocked: 'Submitted and locked',
draftFilesOnly: 'Not submitted. Only attachments can be updated.',
draftLocked: 'Not submitted and currently locked',
draftOpen: 'Draft not submitted',
windowClosed:
'Registration is closed or locked. You cannot create, save, or submit an application. Contact the organizers if this looks wrong.',
fillHint:
'Complete the form, upload the business plan, and sign the declaration. “Save Draft” keeps a draft; “Submit Application” finalizes it.',
pleaseSelect: 'Please select',
invalidEmail: 'Please enter a valid email address',
invalidMobile: 'Please enter a valid 11-digit Chinese mobile number',
maxChars: '{label} must be at most {n} characters',
fieldInvalid: '{label} is invalid',
opFailed: 'Operation failed',
notice: 'Notice',
pledgeTitle: 'Competition Declaration',
pledgeTitleNamed: '{name} Declaration',
pledgeSubtitle: 'Please read all four sections carefully and sign below to confirm.',
signFirst: 'Please sign by hand in the box before confirming.',
confirm: 'Please confirm',
signTooLarge: 'The signature is too large. Please clear it and try again.',
uploadPlan: 'Please upload a business plan',
fileInvalid: 'The file type or size is not supported',
needPledge: 'Please read and sign the competition declaration first.',
uploaded: 'File uploaded.',
uploadOk: 'Uploaded',
attachment: 'Attachment',
open: 'Open',
fileMissing: 'The attachment is missing',
fileOpenFailed: 'Network error. Unable to open the attachment.',
deleteFailed: 'Unable to delete',
deleteTimeout: 'Delete timed out. Close any preview window and try again.',
missingSlug: 'Missing competition address',
competitionMissing: 'Competition not found or unpublished',
competitionLoadFailed: 'Unable to load competition settings',
networkLoad: 'Network error. Unable to load the competition.',
draftFailed: 'The draft could not be saved. Check your network and try again.',
saveInvalid: 'Unable to save. Please check the form fields.',
saveFailed: 'Save failed',
saveTimeout: 'Save timed out. Please try again.',
submitNotFound: 'Competition not found or unpublished. Please re-enter the form.',
submitForbidden: 'You do not have permission to submit. Check your login or contact an admin.',
submitConflict: 'The application changed. Refresh the page and try again.',
submitBusy: 'Too many requests. Please wait and try again.',
submitServer: 'The service is temporarily unavailable. Please try again later.',
submitIncomplete: 'Submission failed. Please complete the required fields.',
submitFailed: 'The application could not be submitted. Check your network and try again.',
submitTimeout: 'Submission timed out. Please try again.',
draftSaved: 'Draft saved with the information entered so far.',
saveOk: 'Saved',
submitted: 'Application submitted',
submitOk: 'Submitted',
wechatJumpFailed: 'WeChat mini program return is unavailable. Re-enter from the mini program.',
jumpFailed: 'Return failed',
consultAria: 'Contact',
deleting: 'Removing…',
remove: 'Remove',
pickProvinceFirst: 'Select a province first',
pledgeDefault: 'Competition Declaration',
pledgeHelp:
'Open and read the full declaration, sign by hand at the end, and select “Confirm Signature.”',
reviewPledge: 'Review the Declaration',
openPledge: 'View and Sign the Declaration',
saving: 'Saving…',
saveEdits: 'Save changes',
saveDraft: 'Save Draft',
updateSubmit: 'Update Application',
submit: 'Submit Application',
close: 'Close',
pledgeBodyAria: 'Declaration body',
signPadAria: 'Handwritten signature area',
china: 'China',
overseas: 'Outside China',
lastSubmittedAt: 'Last submitted: {time}.',
submittedAt: 'Submitted: {time}.',
submittedEditableBody:
'You can still edit details and attachments and click “Update Application” until registration closes or a reviewer submits a score. After review starts, the form is locked.',
filesOnlyBody:
'Registration is closed. You may upload or remove attachments only; changes take effect immediately. Other fields cannot be edited. If a reviewer has already scored, attachments stay locked.',
submittedLockedBody:
'This application is locked because registration closed or a review record exists. Please wait for organizer updates.',
pleaseFill: 'Please fill in {label}',
pleaseSelectField: 'Please select {label}',
checkboxRequired: 'Please check this box to continue',
trackMissing: 'No tracks are configured for this competition. Contact the organizers if you cannot submit.',
maxFiles: 'You can upload at most {n} files. Please remove extras and try again.',
fileExtInvalid: '“{name}” is not supported. Please upload {allowed} files.',
fileTooLarge: '“{name}” must be 20 MB or smaller',
extraFilesIgnored: 'This field allows at most {max} files. {n} extra selection(s) were ignored.',
viewDownload: 'View / Download',
signed: 'Signed',
signHint: 'Sign by hand in the box',
signerLabel: 'Participant signature:',
datePrefix: 'Date:',
clearSign: 'Clear signature',
confirmSign: 'Confirm Signature',
cancel: 'Cancel',
ok: 'OK',
charCount: '{n} characters',
openingFile: 'Opening “{name}”…',
fileTooMany: 'Too many files',
trackOther: 'Other',
trackOtherPlaceholder: 'Describe the other track (optional)',
chooseFile: 'Choose File',
noFileChosen: 'No file chosen',
filesSelected: '{n} files selected',
},
audience: {
title: 'Audience Registration',
sessionsAria: 'Competition Sessions',
loading: 'Loading sessions…',
remainingUnit: 'spots',
remaining: 'remaining',
selected: 'Selected',
name: 'Full Name',
phone: 'Phone Number',
company: 'Organization',
job: 'Job Title',
purpose: 'Purpose of Attendance',
nameRequired: 'Please enter your full name',
phoneRequired: 'Please enter a valid 11-digit mobile number',
purposeRequired: 'Please select a purpose',
phoneReadonly: 'This number matches your login mobile number and cannot be changed',
submitting: 'Submitting…',
submit: 'Submit Registration',
selectSessionFirst: 'Select a Session First',
namePh: 'Enter your full name',
phonePh: 'Login mobile number',
companyPh: 'Enter your organization',
jobPh: 'Enter your job title',
purposePh: 'Select a purpose',
failed: 'Registration failed',
success: 'Registration successful! Details for “{name}” will be sent to your mobile number.',
statusRegistered: 'Registered',
statusOpen: 'Open',
statusFull: 'Full',
statusNotStarted: 'Not started',
statusExpired: 'Closed',
pleaseFill: 'Please fill in {label}',
},
ticket: {
successTitle: 'Registered',
lead: 'Your e-ticket has been created',
showCode: 'Show this code at the entrance. Each ticket can be checked in once.',
saveQr: 'Please screenshot and save this QR code for on-site check-in.',
done: 'Done',
myTicket: 'E-ticket',
showAtGate: 'Show this code at the entrance',
checkedIn: 'Checked in',
pending: 'Pending entry',
sessionFallback: 'Session',
close: 'Close',
qrAria: 'E-ticket QR code',
},
} as const