kintex/src/frontend/src/i18n/locales/en.json
zio 9d47f9373f feat(shell,tenant,i18n): wave 7 — MDI tab shell, multitenancy phase 2 (JWT tid + fail-closed guard), i18n sweep 2
- MDI: additive tab layer over existing routing (MdiTabBar + mdiStore, sessionStorage,
  dedup, max 10, keyboard a11y, dark-theme tokens); route tree untouched
- tenant p2: JWT tid claim with kintex fallback (backward compatible), EventAccessGuard
  cross-tenant 403 (EventTenantMapper + isolation tests), explicit tenant scoping on
  analytics/admin/sysuser aggregates; login threads app_user.tenant_id into tokens
- i18n sweep 2: 17 core+admin screens extracted to 30 namespaces x 4 locales (ko/en/zh/ja),
  zero ko-render regression; P2/P3 sweep list documented
- verified: tsc -b --force, vite build, compileJava, test (75/75) all EXIT 0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 11:51:00 +09:00

1283 lines
50 KiB
JSON
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.

{
"common": {
"brand": "KINTEX",
"appSuffix": "AI Exhibition Management",
"actions": {
"prev": "Back",
"next": "Next",
"cancel": "Cancel",
"close": "Close",
"home": "Go to Home",
"viewMore": "View Details",
"confirm": "Confirm"
},
"states": {
"loading": "Loading…",
"empty": "Nothing to display."
},
"aiWatermark": "AI-generated preview — actual construction may differ",
"aiNotice": "AI-generated images cannot be used for contracts or review documents — drawings are the construction standard",
"weekday": {
"0": "Sun",
"1": "Mon",
"2": "Tue",
"3": "Wed",
"4": "Thu",
"5": "Fri",
"6": "Sat"
}
},
"lang": {
"select": "Select language"
},
"shell": {
"nav": {
"events": "Events",
"exhibit": "Exhibitors",
"visit": "Visit",
"transport": "Directions"
},
"searchPlaceholder": "Search events",
"cta": {
"register": "Visitor Pre-registration"
},
"menuOpen": "Open menu",
"menuClose": "Close menu",
"homeAria": "{{brand}} home",
"primaryMenu": "Main menu",
"mobileMenu": "Mobile menu",
"footer": {
"brandDesc": "Korea's largest exhibition and convention center, connecting innovation in business and culture.",
"quickTitle": "Quick Links",
"quickSchedule": "Event Schedule",
"quickExhibit": "Exhibitor Info",
"quickDirections": "Directions",
"quickSitemap": "Sitemap",
"supportTitle": "Support",
"supportPrivacy": "Privacy Policy",
"supportTerms": "Terms of Use",
"supportContact": "Contact Us",
"contactTitle": "Contact",
"contactAddress": "217-60 Kintex-ro, Ilsanseo-gu, Goyang-si, Gyeonggi-do",
"contactTel": "Main line 1899-1001",
"contactEmail": "exhibition@kintex.com",
"bottom": "© KINTEX. All Rights Reserved. (10390) 217-60, Kintex-ro, Ilsanseo-gu, Goyang-si"
}
},
"home": {
"heroAria": "About KINTEX",
"eyebrow": "Global Exhibition Platform",
"heroTitleLine1": "Exhibitions that connect the world,",
"heroTitleEm": "KINTEX",
"heroLead": "Experience new innovation in business and culture unfolding at KINTEX, Korea's largest exhibition and convention center.",
"ctaRegister": "Visitor Pre-registration",
"ctaFacility": "View Facilities",
"eventsAria": "Ongoing and upcoming events",
"eventsTitle": "Ongoing · Upcoming Events",
"eventsSub": "Check out the latest happenings at KINTEX right now.",
"eventsMore": "View Full Schedule",
"loading": "Loading event information…",
"empty": "There are no ongoing or upcoming events at this time.",
"tagExhibition": "EXHIBITION",
"booth": "{{count}} booths",
"aiOptimized": "AI Optimized",
"ongoing": "Ongoing",
"ended": "Ended",
"dday": "D-{{n}}",
"ddayZero": "D-DAY",
"register": "Pre-register",
"hallTbd": "Hall to be assigned",
"transportAria": "Directions",
"transportTitle": "Directions",
"transportSub": "Reach KINTEX with even faster accessibility.",
"gtxTitle": "GTX-A KINTEX Station Now Open",
"gtxDesc": "A 3-minute walk from KINTEX Station",
"transit": "Public Transit",
"transitDesc": "Metropolitan buses and subway",
"parking": "Parking",
"parkingDesc": "4,000 vehicles simultaneously",
"shuttle": "Shuttle Bus",
"shuttleDesc": "Circulating major hubs",
"mapAria": "KINTEX location map",
"mapAddress": "217-60 Kintex-ro, Ilsanseo-gu, Goyang-si",
"mapPlace": "KINTEX Exhibition Center 1 & 2",
"mapViewAria": "View map"
},
"detail": {
"tabs": {
"intro": "Overview",
"program": "Program",
"speakers": "Speakers",
"exhibitors": "Exhibitors",
"transport": "Directions",
"faq": "FAQ"
},
"eyebrow": "KINTEX Exhibition",
"loadingTitle": "Loading event information…",
"fallbackTitle": "Event Details",
"dateTbd": "Dates to be confirmed",
"placeTbd": "Hall to be assigned",
"lead": "Check the exhibition details at KINTEX and pre-register.",
"factDate": "Date",
"factPlace": "Venue",
"ctaRegister": "Pre-register",
"ctaFloorplan": "View Floor Plan",
"navAria": "Event detail navigation",
"shareAria": "Share",
"share": "Share",
"copyLink": "Copy link",
"overviewAria": "Exhibition overview",
"overviewTitle": "Exhibition Overview",
"overviewLead": "Smart Factory Korea 2026 is the culmination of next-generation manufacturing technology. Discover the latest solutions combining AI, robotics, IoT, and digital twin technology in one place, with over 500 leading companies from around the world participating.",
"statBooth": "Booths",
"statVisitors": "Expected Visitors",
"statVisitorsValue": "30,000+",
"themesTitle": "Key Exhibition Themes",
"theme1Title": "AI & Autonomous Robots",
"theme1Desc": "Smart robot solutions that learn and decide on their own",
"theme2Title": "Digital Twin & IoT",
"theme2Desc": "Real-time sync between virtual worlds and real manufacturing sites",
"theme3Title": "Carbon-Neutral Smart Manufacturing",
"theme3Desc": "Eco-friendly processes maximizing energy efficiency",
"programAria": "Program schedule",
"programTitle": "Program Schedule",
"day1": "Sep 5 (Day 1)",
"day2": "Sep 6 (Day 2)",
"agenda1Title": "The Future of Manufacturing: AI-Driven Productivity Revolution",
"agenda1Desc": "2030 manufacturing strategies and real-world case studies proposed by global AI scholars",
"agenda1Room": "Main Conference Hall",
"agenda2Title": "Combining Industrial 5G and Edge Computing",
"agenda2Desc": "Real-time process control technology demonstration via lag-free data transmission",
"agenda2Room": "Seminar Room A",
"agenda3Title": "Global Buyers Matching Day",
"agenda3Desc": "One-on-one business meetings between promising overseas companies and domestic suppliers",
"agenda3Room": "Business Lounge",
"speakersTitle": "Keynote Speakers",
"speaker1Role": "AI Research Director | TechCorp",
"speaker2Role": "CTO | Automatech",
"speaker3Role": "Chair Professor of Robotics | Korea Univ.",
"speaker4Role": "Global VP | Digitron",
"profileAria": "{{name}} profile",
"faqAria": "Frequently asked questions",
"faqTitle": "Frequently Asked Questions",
"faq1Q": "How do I pre-register?",
"faq1A": "Click the \"Pre-register\" button at the top, choose your type, and enter your information to receive a mobile badge.",
"faq2Q": "Is there an entry fee?",
"faq2A": "General visitors are free with pre-registration. On-site registration may be charged.",
"faq3Q": "Is parking available?",
"faq3A": "Up to 4,000 vehicles can park simultaneously at KINTEX Exhibition Centers 1 and 2.",
"fabCta": "Go to Pre-registration"
},
"register": {
"steps": {
"type": "Type",
"info": "Info",
"interest": "Interests",
"done": "Done"
},
"stepsAria": "Pre-registration steps",
"type": {
"general": "General Visitor",
"generalDesc": "General visitors able to attend exhibitions and open sessions",
"buyer": "Buyer",
"buyerDesc": "Corporate representatives for B2B matching and business consultations",
"vip": "VIP",
"vipDesc": "Invited guests with exclusive lounge and full session access"
},
"step0Title": "Select Participant Type",
"step0Sub": "Please choose your eligibility to participate in the KINTEX exhibition.",
"typeGroupAria": "Participant type",
"step1Title": "Enter Basic Information",
"step1Sub": "Please enter your information for contact and badge issuance.",
"name": "Name",
"namePh": "Enter your name",
"phone": "Phone (Mobile)",
"email": "Email",
"emailPh": "example@domain.com",
"org": "Organization (Company/Institution)",
"orgPh": "Company or school name",
"step2Title": "Select Interests",
"step2Sub": "Select your interests and we'll provide tailored information.",
"interestsAria": "Interests",
"interest": {
"ai": "AI Solutions",
"factory": "Smart Factory",
"robotics": "Robotics",
"bigdata": "Big Data",
"cloud": "Cloud"
},
"consentPrivacy": "Consent to collection and use of personal information",
"required": "(required)",
"consentMarketing": "Consent to marketing communications (optional)",
"consentMore": "View details",
"errPrivacy": "Please check consent to collection and use of personal information (required).",
"errName": "Please enter your name.",
"errEvent": "Event information could not be verified.",
"doneTitle": "Your pre-registration has been received",
"doneSub": "{{name}}, your pre-registration is complete. Use your mobile badge at the entrance kiosk.",
"visitorDefault": "Visitor",
"badgeAria": "Mobile badge preview",
"badgeName": "John Doe",
"badgeCodeLabel": "Badge Code",
"doneNote": "Scan the QR at the entrance kiosk to print a physical badge.",
"regNo": "Registration No.: {{id}}",
"submitting": "Registering…",
"submit": "Register",
"eventBrowse": "Browse Events",
"floorplan": "View Floor Plan"
},
"floorplan": {
"sideAria": "Booth search and list",
"filtersTitle": "Industry · Zone · Keyword",
"searchPh": "Search exhibitor or booth number",
"searchAria": "Search booths",
"typeFilter": "Booth type filter",
"hallSelect": "Select hall",
"allHalls": "All halls",
"listAria": "Booth list (non-visual alternative)",
"loading": "Loading booth information…",
"searchResults": "Search results ({{count}})",
"noMatch": "No matching booths.",
"reservedBooth": "Reserved booth",
"availableBooth": "Available",
"type": {
"assembled": "Shell Scheme",
"independent": "Raw Space",
"corner": "Corner Booth",
"island": "Island",
"default": "Booth"
},
"stageAria": "Interactive hall map",
"boothLayoutAria": "Booth layout",
"boothAria": "Booth {{no}} {{name}}",
"loadFail": "Failed to load the floor plan.",
"noBooth": "No booths to display.",
"popInfoAria": "{{name}} information",
"popDetail": "Booth details",
"directions": "Directions",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out",
"reset": "Reset",
"myLocation": "My location",
"legendAria": "Legend",
"legendAvailable": "Available",
"legendReserved": "Reserved",
"legendPublic": "Public"
},
"inquiry": {
"heroAria": "Exhibitor inquiry",
"heroTitle": "Exhibitor Inquiry",
"heroLead": "Expand your business to global markets with KINTEX. Our specialist consultants will propose the optimal exhibition space.",
"cta": "Exhibitor Inquiry",
"guideAria": "Exhibitor guide",
"guideTitle": "Exhibitor Guide",
"booth1Tier": "Entry Tier",
"booth1Title": "Shell Scheme",
"booth1Desc": "The most economical choice with basic walls and flooring provided. Recommended for small businesses.",
"booth1Price": "₩ 2,500,000 / unit",
"booth2Tier": "Design Freedom",
"booth2Title": "Raw Space",
"booth2Desc": "Only space is provided, allowing free design tailored to your brand.",
"booth2Price": "₩ 2,000,000 / unit",
"booth3Tier": "Full Solution",
"booth3Title": "Premium",
"booth3Desc": "An all-in-one solution including AI-optimized traffic flow design and a custom branding package.",
"booth3Price": "Inquire separately",
"boothExampleAria": "{{title}} example",
"formAria": "Contact us",
"formTitle": "Contact Us",
"formSub": "Leave any questions about participation or the exhibition. Our staff will reply within 24 business hours.",
"contactPhone": "Phone Inquiry",
"contactPhoneVal": "+82-31-810-8114",
"contactEmail": "Email Inquiry",
"contactEmailVal": "exhibit@kintex.com",
"contactLoc": "Location",
"contactLocVal": "217-60 Kintex-ro, Ilsanseo-gu, Goyang-si, Gyeonggi-do",
"loginHintQ": "Already have an account?",
"loginHintA": "Log in for a faster inquiry",
"company": "Company",
"companyPh": "Enter company name",
"name": "Contact Person",
"namePh": "Enter your name",
"contact": "Contact (Email or Phone)",
"contactPh": "Enter reachable contact information",
"scale": "Estimated Size",
"scaleSelect": "Please select",
"scale1": "1 booth (9sqm)",
"scale2": "2-4 booths (18-36sqm)",
"scale3": "5-9 booths (45-81sqm)",
"scale4": "10 or more",
"hall": "Preferred Hall",
"hallSelect": "Select hall",
"message": "Message",
"messagePh": "Let us know your participation goals or any special requests.",
"agree": "I agree to the collection and use of personal information.",
"required": "(required)",
"errAgree": "Please agree to the collection and use of personal information.",
"errName": "Please enter the contact person's name.",
"errContact": "Please enter a reachable email or phone number.",
"errMessage": "Please enter your message.",
"success": "Your inquiry has been received. Reference No. {{no}}",
"submitting": "Sending…",
"submit": "Send Inquiry"
},
"microsite": {
"introAria": "About {{brand}}",
"eyebrow": "KINTEX Exhibitor",
"ctaMeeting": "Book a Meeting",
"ctaBrochure": "Company Brochure",
"defaultBrand": "Hanbit Robotics Inc.",
"defaultTagline": "Intelligent robotics solutions that move the future",
"defaultBoothLoc": "Booth A-102 · Hall 7",
"boothUndetermined": "TBD",
"boothPrefix": "Booth",
"boothLocLabel": "KINTEX exhibition booth location",
"viewMap": "View Floor Plan",
"productsAria": "Core product lineup",
"productsTitle": "Core Product Lineup",
"productsSub": "Featured products you can meet on site.",
"product": "Product",
"product1Tag": "Industrial COBOT",
"product1Title": "HR-A1 Collaborative Robot",
"product1Desc": "An industrial collaborative robot with high precision and safety, designed with human collaboration as the top priority.",
"product2Tag": "Smart Logistics",
"product2Title": "HR-M3 Autonomous AMR",
"product2Desc": "An autonomous mobile robot maximizing smart factory logistics efficiency, with real-time obstacle avoidance and route optimization.",
"product3Tag": "AI Vision",
"product3Title": "HR-Q Vision Scanner",
"product3Desc": "Flawless quality inspection based on AI deep learning. Ultra-precise 3D scanning that catches even the tiniest defects.",
"productImgAria": "{{title}} image",
"previewAria": "Booth preview",
"previewTitle": "Booth Preview",
"previewSub": "AI-generated preview booth images. Actual construction results may differ.",
"galleryMain": "Main Exhibition Zone",
"galleryVip": "VIP Lounge",
"galleryAria": "{{label}} AI-generated preview image",
"watermark": "AI-generated preview image — actual construction results may differ",
"meetingAria": "Book a meeting",
"ctaBanner": "We propose customized robotics solutions tailored to your business.",
"ctaBannerBtn": "Book a Meeting Now"
},
"ticket": {
"viewPurchase": "Buy Tickets",
"viewManage": "Manage · Cancel",
"viewSwitchAria": "Switch ticket view",
"type": {
"general": "General",
"generalDesc": "General visitors and individual participants",
"generalPrice": "₩0 (pre-registration discount)",
"buyer": "Buyer",
"buyerDesc": "For industry professionals and buyers only",
"buyerPrice": "Free · Screening required",
"group": "Group (10+ tickets)",
"groupDesc": "For corporate group visits only",
"groupPrice": "₩9,000 / person",
"vip": "VIP",
"vipDesc": "Exhibition all-pass + VIP lounge access",
"vipPrice": "₩50,000"
},
"steps": {
"s1": "Event · Type",
"s2": "Buyer",
"s3": "Payment",
"s4": "Done"
},
"stepsAria": "Booking steps",
"bannerTitle": "Smart Factory Korea 2026",
"bannerDate": "2026.09.05 09.08",
"bannerPlace": "Exhibition Center 2, Hall 7",
"posterAria": "Event poster",
"loginBanner": "Log in to automatically save your booking history.",
"loginLink": "Log in",
"sample": "Sample data",
"h2Type": "Select Ticket Type",
"aiOptimized": "AI OPTIMIZED",
"off10": "10% OFF",
"soldout": "Sold Out",
"qtyAria": "{{name}} quantity",
"decrease": "Decrease",
"increase": "Increase",
"h2Booker": "Booker Information",
"bookerName": "Name",
"bookerNamePh": "Full name",
"bookerTel": "Phone",
"bookerEmail": "Email (ticket delivery)",
"consentPrivacy": "Consent to collection and use of personal information",
"required": "(required)",
"consentMarketing": "Consent to marketing communications (optional)",
"h2Pay": "Payment Method",
"payCard": "Credit Card",
"payEasy": "Easy Pay",
"payBank": "Bank Transfer",
"payGroupAria": "Payment method",
"pgNote": "Payment is processed on the PG provider's secure page, and card information is not stored on this site. All transactions are protected by 256-bit SSL encryption. (PG not integrated — demo flow)",
"doneTitle": "Your booking has been received",
"doneNo": "KTX-2026-0000-DEMO",
"doneSub": "We'll email you the ticket (upon live integration). Total {{count}} tickets · Payment {{total}}",
"sampleReady": "Sample data · Payment coming soon",
"walletBtn": "Open Mobile Ticket Wallet",
"manageBtn": "Manage / Cancel Booking",
"summaryAria": "Booking summary",
"summaryTitle": "Booking Summary",
"summaryCount": "Selected quantity",
"count": "{{n}} tickets",
"subtotal": "Subtotal",
"discount": "Discount",
"finalTotal": "Final payment amount",
"nextStep": "Continue to next step",
"freeDone": "Complete Free Booking",
"pay": "Pay",
"payProceed": "Proceed to Payment",
"customerCenter": "Customer center 1588-0000 (weekdays 0918)",
"manageTitle": "Manage · Cancel Booking",
"manageSub": "You can look up and cancel non-member bookings.",
"lookNo": "Booking number",
"lookNoPh": "KTX-YYYY-XXXXXX",
"lookEmail": "Email",
"lookEmailPh": "example@email.com",
"lookBtn": "Look up",
"loginToView": "Log in to view my bookings",
"notLooked": "Enter your booking number and email to look up. (Sample: enter any value and look up)",
"booked": "Booking complete",
"bookNoLabel": "Booking No.",
"paidAt": "Paid at",
"colType": "Type",
"colQty": "Qty",
"colAmount": "Amount",
"bookerInfo": "Booker info",
"totalPaid": "Total paid",
"refundTitle": "Cancellation · Refund Policy",
"refundD7": "7 days before visit (D-7)",
"refundD7Val": "100% refund",
"refundD3": "3 days before visit (D-3)",
"refundD3Val": "50% refund",
"refundDay": "Day of visit",
"refundDayVal": "0% (non-refundable)",
"refundEst": "Current estimated refund",
"cancelBooking": "Cancel Booking",
"refundNote": "Refunds are processed to the original payment method via the PG provider.",
"aiHelper": "AI Settlement Assistant",
"aiHelperDesc": "For credit card installment payments, restoring your limit through the card company may take about 35 business days after cancellation.",
"cancelModalAria": "Confirm booking cancellation",
"cancelModalTitle": "Cancel this booking?",
"cancelModalDesc": "A 100% refund (₩40,000) applies based on D-15. Refunds are processed to the original payment method via the PG provider, with actual refunds upon live integration.",
"cancelConfirm": "Cancel"
},
"login": {
"title": "Log In",
"sub": "Welcome to the KINTEX Exhibition Management System.",
"email": "Email",
"emailPh": "name@company.com",
"password": "Password",
"remember": "Remember me",
"forgot": "Forgot password",
"errResponse": "We couldn't process the login response. Please try again.",
"errLocked": "Login attempts are temporarily restricted. Please try again shortly.",
"errNotImpl": "The login service is being prepared. Please try again shortly.",
"errGeneric": "An error occurred while logging in.",
"submitting": "Logging in…",
"submit": "Log In",
"signupPrompt": "Don't have an account yet?",
"signup": "Sign Up",
"or": "or",
"internalLogin": "Log in with KINTEX internal account",
"inviteLink": "Join with an invite code →",
"copyright": "© 2026 KINTEX. All rights reserved.",
"wsTitle": "Event Workspace",
"wsSub": "Select an event you are participating in.",
"wsEmptyTitle": "No events joined",
"wsEmptyDesc": "Check your invite link or join with an invite code.",
"wsInvite": "Join with an invite code"
},
"signup": {
"title": "Sign Up",
"desc": "Create a KINTEX AI Exhibition Management account. Company name and invite code are optional.",
"email": "Email",
"emailPh": "name@company.com",
"name": "Name",
"namePh": "John Doe",
"password": "Password",
"passwordPh": "8+ characters",
"password2": "Confirm Password",
"password2Ph": "Re-enter password",
"company": "Company (optional)",
"companyPh": "KINTEX Inc.",
"invite": "Invite Code (optional)",
"invitePh": "INV-XXXX",
"mismatch": "Passwords do not match.",
"errNotImpl": "The sign-up service is being prepared. Please try again shortly.",
"errConflict": "This email is already registered.",
"errGeneric": "An error occurred while signing up.",
"noticePending": "Your account has been created. You can log in after administrator approval.",
"noticeActive": "Your account has been created. Please log in now.",
"doneTitle": "Sign-up Complete",
"goLogin": "Go to Login",
"cancel": "Cancel",
"submitting": "Signing up…",
"submit": "Sign Up"
},
"forgot": {
"requestTitle": "Forgot Password",
"requestDesc": "We'll send a verification code to your registered email. If the account exists, an email will be sent.",
"email": "Email",
"emailPh": "name@company.com",
"sending": "Sending…",
"requestBtn": "Get Verification Code",
"resetTitle": "Reset Password",
"resetDesc": "Enter the verification code sent to <0>{{email}}</0> and your new password.",
"code": "Verification Code",
"codePh": "Code received by email",
"newpw": "New Password",
"newpwPh": "8+ characters",
"prev": "Back",
"changing": "Changing…",
"changeBtn": "Change Password",
"doneTitle": "Password Changed",
"doneDesc": "Please log in with your new password.",
"goLogin": "Go to Login",
"errInvalid": "The verification code is incorrect or has expired.",
"errNotImpl": "The password reset service is being prepared. Please try again shortly.",
"errRequest": "An error occurred during the request.",
"errReset": "An error occurred during the reset.",
"cancel": "Cancel"
},
"dashboard": {
"countdown": "Opening D-{{n}}",
"degradedTag": "Offline — Sample",
"degradedMsg": "Could not reach the aggregation API; showing demo sample data.",
"loadError": "Failed to load dashboard metrics.",
"timelineAria": "Milestone timeline",
"milestoneEmptyTitle": "No derived schedule",
"milestoneEmptyDesc": "Milestones appear once the event start date is confirmed.",
"mstate": {
"done": "Done",
"current": "In progress",
"upcoming": "Upcoming"
},
"kpisAria": "Key metrics",
"kpiEmpty": "No aggregated metrics",
"exhibitorStatus": "Exhibitor status",
"sampleTag": "Sample",
"exhibitorEmptyTitle": "No exhibitor booths",
"exhibitorEmptyDesc": "Booths appear here once layouts and designs are registered.",
"colBoothNo": "Booth No.",
"colCompany": "Company",
"colStatus": "Design status",
"feedAria": "Notification feed",
"feedTitle": "Notifications",
"feedEmpty": "No new notifications",
"aerialAria": "Hall aerial view",
"aerialTitle": "Hall aerial view",
"aerialShot": "S7 Hall aerial",
"aerialAlt": "Hall aerial preview image"
},
"schedule": {
"title": "Exhibition Schedule",
"subtitle": "KINTEX all-hall event scheduling & monitoring — {{n}} events",
"crawlFallback": "(kintex.com crawl fallback)",
"yearFilter": "Year filter",
"allYears": "All years",
"yearN": "{{y}}",
"hallFilter": "Hall filter",
"allHalls": "All halls (1-10)",
"hall1": "Hall 1 Center (Halls 1-5)",
"hall2": "Hall 2 Center (Halls 6-10)",
"catFilter": "Category filter",
"allCats": "All categories",
"statusFilter": "Status filter",
"allStatus": "All statuses",
"cat": {
"exhibition": "Exhibition",
"culture": "Culture & Arts",
"trade": "Trade & Industry",
"tech": "Technology"
},
"status": {
"ongoing": "Ongoing",
"upcoming": "Upcoming",
"ended": "Ended"
},
"catExhibit": "{{cat}} show",
"apiWait": "Awaiting event API (crawl data)",
"viewSwitch": "Switch view",
"viewList": "List",
"viewCalendar": "Calendar",
"listLoading": "Loading event list",
"listAria": "Event list",
"loadError": "Failed to load the exhibition schedule.",
"count": "{{n}} events",
"emptyTitle": "No registered events",
"emptyDesc": "Adjust filters or create a new event.",
"newEvent": "New event",
"period": "Period",
"assignedHall": "Assigned hall",
"estVisitors": "Est. visitors",
"editDetail": "Edit details",
"viewLogistics": "View move-in/logistics",
"monthCal": "Month calendar",
"prev": "Prev",
"next": "Next",
"today": "Today",
"yearMonth": "{{m}}/{{y}}",
"miniCal": "Mini calendar",
"prevMonth": "Previous month",
"nextMonth": "Next month",
"offlineSample": "Offline — Sample",
"day": "Day {{d}}",
"dayHasEvent": "Day {{d}} (has event)",
"hallUtil": "Hall utilization",
"hallUtilMonth": "Hall utilization ({{m}}/{{y}})"
},
"settlement": {
"title": "Settlement & Payment",
"subtitle": "Manage exhibitor billing & collection status",
"generate": "Generate invoices",
"generating": "Generating…",
"noEventTitle": "Please select an event",
"noEventDesc": "No event has been designated for settlement.",
"genDone": "Invoices generated — {{created}} new, {{skipped}} kept.",
"genError": "Failed to generate invoices. Check permissions or target data.",
"dashError": "Failed to load settlement aggregation.",
"kpisAria": "Settlement key metrics",
"kpiBilled": "Total billed",
"kpiCollected": "Collected",
"kpiOutstanding": "Outstanding",
"kpiOverdue": "Overdue invoices",
"count": "{{n}}",
"collectionRate": "Collection rate {{rate}}%",
"outstandingSub": "Outstanding balance",
"overdueSub": "Past due date",
"distTitle": "Billing status distribution",
"distEmpty": "No aggregated billing",
"listTitle": "Invoice list",
"invoices": "Invoices",
"statusFilter": "Status filter",
"status": {
"all": "All",
"pending": "Unissued",
"invoiced": "Invoiced",
"paid": "Paid",
"overdue": "Overdue"
},
"listError": "Failed to load the invoice list.",
"emptyTitle": "No invoices",
"emptyManage": "Use Generate invoices above to aggregate billing per exhibitor.",
"emptyView": "No invoices have been issued yet.",
"colNo": "Invoice No.",
"colExhibitor": "Exhibitor",
"colBilled": "Billed",
"colPaid": "Paid",
"colOutstanding": "Outstanding",
"colDue": "Due date",
"colStatus": "Status",
"detail": "Details",
"prev": "Prev",
"next": "Next",
"pageInfo": "{{page}} / {{total}} · {{cnt}} total",
"modalAria": "Invoice details",
"invoice": "Invoice",
"close": "Close",
"detailError": "Failed to load invoice details.",
"liItem": "Item",
"liQty": "Qty",
"liUnit": "Unit price",
"liAmount": "Amount",
"noLines": "No line items",
"supplyAmount": "Supply amount",
"vat": "VAT (10%)",
"grandTotal": "Total billed",
"paidOutstanding": "Paid / Outstanding",
"payHistory": "Payment history",
"noPayments": "No payment records.",
"won": "KRW {{v}}",
"issue": "Issue invoice",
"issuing": "Issuing…",
"payAmount": "Payment amount",
"payAmountPh": "Payment amount (KRW)",
"payMethod": "Payment method",
"methodTransfer": "Bank transfer",
"methodCard": "Card",
"methodOther": "Other",
"memo": "Memo",
"memoPh": "Memo (optional)",
"recordPay": "Record payment",
"recording": "Recording…",
"payFail": "Failed to record payment. Check the amount (within total) and permissions.",
"errPositive": "Please enter an amount greater than 0.",
"errExceed": "Cannot exceed the outstanding balance.",
"pgNote": "Actual payment is delegated to an external PG. This screen is for recording payment confirmation only.",
"managerOnly": "Only organizers/hall managers can record or issue payments."
},
"hallassign": {
"title": "Hall Assignment · Auto Quote",
"subtitle": "Hall×period assignment status and instant rate-ruleset quotes (M1).",
"start": "From",
"end": "To",
"newAssign": "New assignment",
"board": "Assignment board",
"boardHint": "Overlapping assignments are shown as conflicts.",
"forbiddenTitle": "Hall manager board only",
"forbiddenDesc": "Only KINTEX hall manager accounts can view assignment status. Use the auto quote below.",
"noHalls": "No hall master data.",
"noAssign": "No assignment",
"release": "Release assignment",
"releaseConfirm": "Release the {{hall}} assignment for {{event}}?",
"assignedToast": "Hall assigned.",
"releasedToast": "Assignment released.",
"releaseFail": "Release failed (check permissions).",
"conflictErr": "The hall/period overlaps with another event.",
"assignFail": "Assignment failed.",
"pickEventHall": "Select an event and a hall.",
"modalTitle": "Hall assignment",
"close": "Close",
"event": "Event",
"pickEvent": "Select event…",
"hall": "Hall",
"pickHall": "Select hall…",
"occupyStart": "Occupancy start",
"occupyEnd": "Occupancy end",
"primary": "Primary hall",
"note": "Note",
"optional": "Optional",
"cancel": "Cancel",
"assign": "Assign",
"assigning": "Assigning…",
"autoQuote": "Auto quote",
"quoteHint": "Based on rate ruleset · final amount confirmed by KINTEX",
"startDate": "Start date",
"endDate": "End date",
"boothSize": "Booth size (optional)",
"countPh": "Count",
"calcQuote": "Calculate quote",
"calculating": "Calculating…",
"quoteFail": "Quote calculation failed.",
"quoteReq": "Enter hall, start and end dates.",
"qItem": "Item",
"qBasis": "Basis",
"qAmount": "Amount",
"rentalSubtotal": "Rental subtotal",
"rentalTotal": "Rental total ({{days}} days)",
"deposit": "Management deposit (separate)",
"ruleset": "(ruleset {{v}})"
},
"analytics": {
"title": "Business Analytics",
"subtitle": "KINTEX operating profitability · exhibitor insights",
"perspective": "Analysis perspective",
"operator": "Operator",
"exhibitor": "Exhibitor",
"periodAria": "Analysis period",
"periodEvent": "This event",
"periodD90": "Last 90 days",
"periodAnnual": "Annual",
"exportPdf": "Export PDF",
"exportExcel": "Export Excel",
"noEventTitle": "Please select an event",
"noEventDesc": "No event has been designated for analysis.",
"offlineSample": "Offline — Sample",
"degradedMsg": "Could not reach the aggregation API; showing demo sample data.",
"loadError": "Failed to load business analytics.",
"kpisAria": "Key metrics",
"kpiEmpty": "No aggregated metrics",
"trendAria": "Trend chart",
"trendTitle": "Revenue · Booth trend",
"monthlyAgg": "Monthly aggregation",
"trendHint": "Monthly rental/utility revenue and booth count trend (revenue in KRW).",
"trendEmptyTitle": "No trend data",
"trendEmptyDesc": "No revenue/booth records for an aggregable period.",
"revenue": "Revenue",
"booth": "Booths",
"boothsUnit": "{{n}} booths",
"sectorsAria": "Sector composition",
"sectorsTitle": "Sector composition",
"sectorsEmptyTitle": "Sectors not aggregated",
"sectorsEmptyDesc": "Displayed once the sector classification source (M13) is connected.",
"perfTable": "Performance table",
"pnlTitle": "P&L composition",
"exhibitorPerfTitle": "Exhibitor performance",
"sampleTag": "Sample",
"pnlEmptyTitle": "No P&L items",
"pnlEmptyDesc": "Displayed once booth rental/utility revenue records are aggregated.",
"colItem": "Item",
"colAmount": "Amount",
"colGrade": "Grade",
"perfEmptyTitle": "Exhibitor performance not aggregated",
"perfEmptyDesc": "Displayed once the lead/conversion source (M13 visitors) is connected.",
"colCompany": "Company",
"colLeads": "Leads",
"colConversion": "Conversion"
},
"global": {
"sectionAria": "Tenant-wide business analytics",
"title": "Enterprise analytics (cross-event)",
"subtitle": "Cross-event revenue comparison · hall utilization trend · exhibitor retention · demand forecast",
"yearsAria": "Analysis years",
"years3": "Last 3 years",
"years5": "Last 5 years",
"years10": "Last 10 years",
"loadErrorTitle": "Failed to load global aggregation",
"loadErrorDesc": "Please try again shortly.",
"kpisAria": "Global key metrics",
"kpiEmpty": "No aggregated metrics",
"evComp": "Cross-event revenue comparison",
"top8": "Top 8",
"evCompHint": "Rental + utility revenue ranking of events with booth layouts (in KRW).",
"evCompEmptyTitle": "No events to compare",
"evCompEmptyDesc": "Displayed once revenue of events with booth layouts is aggregated.",
"revenue": "Revenue",
"retention": "Exhibitor retention",
"retentionCum": "Cumulative return rate",
"returning": "returning",
"retentionEmptyTitle": "Retention by year not aggregated",
"retentionEmptyDesc": "Displayed once the booth-assigned company source is connected.",
"retentionRate": "Return rate",
"occupancy": "Hall utilization trend (monthly)",
"occupancyHint": "Monthly utilization = event-days ÷ (halls × days in month).",
"occupancyEmpty": "No utilization data",
"occupancyRate": "Utilization",
"forecast": "Demand forecast",
"forecastTitle": "Demand forecast (hosting trend)",
"trendProjection": "Trend projection",
"forecastHint": "Actual annual event count + least-squares linear trend projected 2 years ahead (dotted).",
"forecastEmptyTitle": "No history to forecast",
"forecastEmptyDesc": "Displayed once annual hosting history is aggregated.",
"casesUnit": "{{n}}",
"actual": "Actual",
"projected": "Forecast"
},
"ops": {
"title": "Hall Operations",
"subtitle": "Status based on check-in / utility live aggregation",
"modeAria": "View mode",
"live": "Live",
"history": "History",
"noEventTitle": "Please select an event",
"noEventDesc": "No event has been designated for on-site operations.",
"offlineSample": "Offline — Sample",
"degradedMsg": "Could not reach the aggregation API; showing demo sample data.",
"loadError": "Failed to load on-site operations status.",
"hallStatus": "Hall status",
"checkinDerived": "Derived from check-in (M10) · distributed by area weight",
"sensorNoneHalls": "No sensor · assigned hall list",
"noHallsTitle": "No assigned halls",
"noHallsDesc": "Displayed once halls are assigned to the event.",
"busy": "Busy",
"smooth": "Smooth",
"moderate": "Moderate",
"people": "{{n}}",
"onSiteCheckin": "On-site check-in <0>{{n}}</0>",
"noCheckinAgg": "No check-in aggregation",
"powerLoad": "Power load",
"totalKw": "Total <0>{{v}}</0>kW",
"utilLoadAgg": "Utility request (M4) load aggregation",
"noLoadTitle": "No requested load",
"noLoadDesc": "Displayed per hall once electrical utility requests are received.",
"kw": "{{v}}kW",
"hourlyCheckin": "Hourly check-in",
"hourlyAgg": "Check-in (M10) hourly aggregation",
"noSeriesTitle": "No check-in trend",
"noSeriesDesc": "Hourly trend appears once on-site check-ins are recorded.",
"facilitySensor": "Facility sensor integration",
"facilitySensorTitle": "Facility sensors (HVAC · Lighting · Parking)",
"sensorNoneTitle": "Facility sensors not connected",
"sensorNoneDesc": "HVAC · lighting IoT · parking (iparking) integration is shown once sensors (M14) are connected.",
"temp": "Temp",
"humidity": "Humidity",
"parkingSlots": "{{zone}}: {{occ}}/{{cap}} slots"
},
"admin": {
"deniedTitle": "Access denied",
"deniedAuthed": "This page is available only to system administrators (Hall Manager · ADMIN). Contact an administrator if you need access.",
"deniedGuest": "The admin back office is available after login.",
"overviewTitle": "System Overview",
"overviewSub": "Real-time metrics and operational status",
"loginSlides": "Manage login slides",
"tenantSwitch": "Switch tenant",
"systemNormal": "System normal",
"moduleShortcuts": "Admin module shortcuts",
"offlineSample": "Offline — Sample",
"degradedMsg": "Could not reach the aggregation API; showing demo sample data.",
"dashLoadError": "Failed to load the admin dashboard.",
"kpisAria": "Key metrics",
"kpiEmpty": "No aggregated metrics",
"visitorTrend": "Visitor trend",
"hourlyVisitors": "Hourly visitors",
"visitors": "Visitors",
"visitorTrendEmptyTitle": "Visitor trend not aggregated",
"visitorTrendEmptyDesc": "Hourly trend appears once visitor sensors (M14) are connected.",
"liveEvents": "Live events",
"noLiveEvents": "No ongoing events",
"hallTbd": "Hall unassigned",
"occupancy": "Occupancy {{n}}%",
"modUsers": "Users",
"modRoles": "Roles & Permissions",
"modCodes": "Common codes",
"modMenus": "Menus",
"modAudit": "Audit log",
"modSettings": "System settings",
"modRulesets": "Rulesets",
"modTenants": "Tenants"
},
"tenant": {
"title": "Tenant Management · Onboarding",
"subtitle": "Platform super-admin only · add venues via data onboarding without code deployment.",
"sampleTag": "Sample · Not implemented",
"sampleNote": "Multi-tenancy (tenant CRUD, onboarding, isolation) is not yet in the backend, so this screen shows the target IA. Live data will be wired after multi-tenancy is introduced.",
"listAria": "Tenant list",
"venue": "Venue",
"notImpl": "Not implemented",
"addVenue": "Add venue",
"code": "Code",
"domain": "Domain",
"status": "Status",
"events": "Events",
"users": "Users",
"wizardAria": "Onboarding wizard",
"onboardingOf": "{{name}} onboarding",
"dataOnboarding": "Data onboarding without code deployment",
"wiz": {
"create": {
"label": "Create tenant",
"desc": "Register code & display name"
},
"domain": {
"label": "Subdomain",
"desc": "Assign DNS & branding domain"
},
"brand": {
"label": "Branding",
"desc": "Logo, colors, public-site theme"
},
"master": {
"label": "Master data entry",
"desc": "Seed halls, rates, rulesets"
},
"admin": {
"label": "Admin account",
"desc": "Invite tenant administrator"
},
"smoke": {
"label": "Isolation smoke test",
"desc": "Verify cross-tenant isolation"
},
"activate": {
"label": "Activate",
"desc": "Switch to operation"
}
},
"tstatus": {
"active": "Active",
"onboarding": "Onboarding",
"suspended": "Suspended"
}
},
"ruleset": {
"title": "Regulation Ruleset Versions",
"subtitle": "Ruleset version history and rule items for regulation revisions.",
"readonly": "Read only",
"readonlyNote": "Rulesets are version-controlled as deployment resources (rulesets/*.json). Editing and version creation are done by replacing resources when regulations are revised; this screen is view-only.",
"listError": "Failed to load the ruleset list.",
"noRulesets": "No deployed rulesets",
"versionHistory": "Version history",
"rulesCount": "{{n}} rules",
"effectiveDate": "Effective {{date}}",
"ruleList": "Rule list",
"rulesOf": "{{name}} rules ({{n}})",
"detailError": "Failed to load the full rules.",
"noRulesTitle": "Ruleset has no rule array",
"noRulesDesc": "A ruleset that defines only rates/unit prices without rules (e.g. rate master).",
"colRuleName": "Rule name",
"colValue": "Value/setting",
"colLogic": "Logic / Requirement",
"colSeverity": "Violation level",
"block": "Block",
"warn": "Warn",
"required": "Required",
"perHall": "Per hall {{unit}}",
"docNeeded": "Document required: {{doc}}"
},
"audit": {
"title": "Audit Log",
"subtitle": "Tracks all admin actions (approvals, awards, setting changes) and key domain events. (Integrity preserved)",
"exportCsv": "Export CSV",
"filterAria": "Audit log filter",
"actionType": "Action type",
"allActions": "All actions",
"actorId": "Actor ID",
"actorIdPh": "e.g. user-102",
"eventId": "Event ID",
"eventIdPh": "e.g. EVT-2026-01",
"reset": "Reset",
"applyFilter": "Apply filter",
"loadError": "Failed to load the audit log.",
"tableAria": "Audit log table",
"emptyTitle": "No audit records match the criteria",
"emptyDesc": "Adjust or reset filters and search again.",
"colTime": "Time",
"colUser": "User",
"colAction": "Action",
"colTarget": "Target",
"colEvent": "Event",
"colResult": "Result",
"showing": "Showing <0>{{from}}-{{to}}</0> / <1>{{total}}</1> total",
"prev": "Prev",
"next": "Next",
"rowsShow": "Rows",
"rowsPerPage": "Rows per page",
"rowsN": "{{n}}",
"success": "Success",
"failure": "Failure",
"csvTime": "Time",
"csvActorId": "ActorID",
"csvActorName": "ActorName",
"csvAction": "Action",
"csvTargetType": "TargetType",
"csvTargetId": "TargetID",
"csvEventId": "EventID",
"csvResult": "Result",
"csvSummary": "Summary"
},
"role": {
"title": "Roles & Permissions (RBAC)",
"subtitle": "Assign resource permissions per role (Organizer, Exhibitor, Contractor, Hall Manager, Admin, Visitor) in a matrix.",
"addRole": "Add role",
"loadError": "Failed to load roles/permissions.",
"noRolesTitle": "No roles defined",
"noRolesDesc": "Add a role to configure RBAC.",
"roleList": "Role list",
"role": "Role",
"codePerm": "{{code}} · {{n}} permissions",
"unused": "Unused",
"permMatrix": "Permission matrix",
"rolePerm": "{{name}} permissions",
"roleInfo": "Role info",
"deleteConfirm": "Delete the role '{{name}}'?",
"delete": "Delete",
"noPerms": "No permissions defined",
"selectRole": "Select a role",
"saved": "Role saved.",
"deleted": "Role deleted.",
"addRoleModal": "Add role",
"editRole": "Edit role info",
"modalDesc": "Permission assignment is managed by checkboxes in the matrix after saving.",
"roleCode": "Role code *",
"roleCodePh": "e.g. ORGANIZER",
"roleName": "Role name *",
"description": "Description",
"useYn": "In use",
"use": "In use",
"noUse": "Unused",
"cancel": "Cancel",
"save": "Save",
"saving": "Saving…",
"errRequired": "Role code and name are required.",
"errDupCode": "This role code already exists."
},
"menu": {
"title": "Menu Management",
"subtitle": "Manage the per-role navigation menu tree with paths and access roles.",
"addMenu": "Add menu",
"loadError": "Failed to load menus.",
"treeAria": "Menu tree",
"emptyTitle": "No registered menus",
"emptyDesc": "Add a menu.",
"colName": "Menu name",
"colPath": "Path",
"colType": "Type",
"colRole": "Access role",
"colSort": "Order",
"colUse": "In use",
"colManage": "Manage",
"all": "All",
"unused": "Unused",
"used": "In use",
"edit": "Edit",
"delete": "Delete",
"deleteConfirm": "Delete the menu '{{name}}'? Sub-menus, if any, will be cleaned up together.",
"saved": "Menu saved.",
"deleted": "Menu deleted.",
"editMenu": "Edit menu",
"menuId": "Menu ID (unique key) *",
"menuIdPh": "e.g. admin-users",
"menuName": "Menu name *",
"parent": "Parent menu",
"topLevel": "(Top level)",
"path": "Path",
"pathPh": "e.g. /admin/users",
"type": "Type",
"accessRole": "Access role",
"accessRolePh": "e.g. ADMIN (empty = all)",
"sort": "Order",
"useYn": "In use",
"cancel": "Cancel",
"save": "Save",
"saving": "Saving…",
"errName": "Menu name is required.",
"errId": "Menu ID (unique key) is required.",
"errDupId": "This menu ID already exists."
},
"code": {
"title": "Common Code Management",
"subtitle": "Manage common code groups and code values used in dropdowns and classifications.",
"addGroup": "Add group",
"groupLoadError": "Failed to load code groups.",
"noGroupsTitle": "No code groups",
"noGroupsDesc": "Add a group to configure common codes.",
"codeGroup": "Code group",
"codeValues": "Code values",
"valuesOf": "{{name}} values",
"editGroup": "Edit code group",
"deleteGroup": "Delete group",
"deleteGroupConfirm": "Delete group '{{name}}' and its codes?",
"addCode": "Add code",
"codeLoadError": "Failed to load code values.",
"noCodesTitle": "No codes",
"noCodesDesc": "Add a code.",
"code": "Code",
"name": "Name",
"value": "Value",
"sort": "Order",
"use": "In use",
"manage": "Manage",
"unused": "Unused",
"used": "In use",
"edit": "Edit",
"delete": "Delete",
"deleteCodeConfirm": "Delete code '{{name}}'?",
"groupSaved": "Code group saved.",
"groupDeleted": "Code group deleted.",
"codeSaved": "Code saved.",
"codeDeleted": "Code deleted.",
"groupCode": "Group code *",
"groupName": "Group name *",
"description": "Description",
"useYn": "In use",
"cancel": "Cancel",
"save": "Save",
"saving": "Saving…",
"errGroupRequired": "Group code and name are required.",
"errDupGroup": "This group code already exists.",
"editCode": "Edit code",
"group": "Group",
"codeReq": "Code *",
"nameReq": "Name *",
"attr1": "Attribute 1 (attr1)",
"errCodeRequired": "Code and name are required.",
"errDupCode": "This code already exists."
},
"sysuser": {
"title": "User Management",
"subtitle": "Manage account creation/editing, role assignment, status (active/locked/disabled), and OTP reset. Passwords are masked and not displayed.",
"addUser": "Add user",
"searchAria": "User search",
"keyword": "Keyword",
"keywordPh": "Name·Email",
"role": "Role",
"status": "Status",
"all": "All",
"reset": "Reset",
"search": "Search",
"loadError": "Failed to load the user list.",
"listAria": "User list",
"emptyTitle": "No users",
"emptyDesc": "Adjust search criteria or add a user.",
"colUser": "User",
"colEmail": "Email",
"colRole": "Role",
"colDept": "Dept",
"colStatus": "Status",
"colLastLogin": "Last login",
"colManage": "Manage",
"hallManagerTag": "Hall Mgr",
"otpSet": "Set",
"otpUnset": "Not set",
"edit": "Edit",
"lock": "Lock",
"unlock": "Unlock",
"otpResetBtn": "Reset OTP",
"otpResetConfirm": "Reset OTP for {{name}}?",
"saved": "User saved.",
"statusChanged": "Status changed.",
"otpReset": "OTP reset.",
"active": "Active",
"locked": "Locked",
"disabled": "Disabled",
"editUser": "Edit user",
"newDesc": "The initial password is not displayed on screen after saving.",
"editDesc": "Email cannot be edited. Password reset follows a separate policy.",
"email": "Email *",
"displayName": "Display name *",
"dept": "Department",
"initPassword": "Initial password *",
"hallManagerCheck": "Hall Manager (internal operator)",
"cancel": "Cancel",
"save": "Save",
"saving": "Saving…",
"errRequired": "Email and display name are required.",
"errPassword": "New users require an initial password.",
"totalUsers": "<0>{{total}}</0> users total",
"prev": "Prev",
"next": "Next"
},
"settings": {
"title": "System Settings",
"subtitle": "Manage system parameters such as global policies, feature toggles, and AI gates. Secret values are masked.",
"loadError": "Failed to load system settings.",
"emptyTitle": "No settings registered",
"emptyDesc": "Add your first setting item in the form below.",
"saved": "Setting saved.",
"deleted": "Setting deleted.",
"deleteConfirm": "Delete the setting '{{key}}'?",
"general": "General",
"groupAria": "Settings group {{name}}",
"secret": "Secret",
"secretTitle": "Secret — value masked",
"on": "On",
"off": "Off",
"secretPh": "Set (masked) — enter new value to change",
"save": "Save",
"delete": "Delete",
"deleteKey": "Delete {{key}}",
"secretHint": "The secret value is never exposed. Saving without entering a value keeps the existing value.",
"addAria": "Add setting",
"addTitle": "Add / override setting",
"settingKey": "Setting key",
"settingKeyPh": "e.g. deadline.utility.days",
"value": "Value",
"type": "Type",
"description": "Description",
"secretCheck": "Secret (mask value)"
},
"slide": {
"title": "Login Slide Management",
"subtitle": "Login screen left carousel images/text — the <0>latest 5 by registration order</0> among active slides rotate.",
"addAria": "Add new slide",
"addTitle": "Add new slide",
"imageLabel": "Image (PNG/JPG/WebP, up to 8MB)",
"preview": "Preview",
"titleLabel": "Title text",
"titlePh": "e.g. KINTEX, Asia's leading exhibition & convention center",
"captionLabel": "Caption (subtext)",
"captionPh": "e.g. Discover business opportunities across 100,000 sqm of exhibition space.",
"submitting": "Registering…",
"submit": "Register slide",
"listAria": "Slide list",
"registered": "Registered slides",
"countActive": "{{total}} total · {{active}} active",
"emptyTitle": "No registered slides",
"emptyDesc": "Registered images and text appear in the login carousel. (5 defaults shown when none registered)",
"live": "Live",
"inactive": "Inactive",
"registeredAt": "Registered {{date}}",
"active": "Active",
"delete": "Delete",
"listError": "Failed to load the list.",
"errImage": "Please select a slide image.",
"errTitle": "Please enter the title text.",
"createFail": "Registration failed.",
"updateFail": "Update failed.",
"deleteFail": "Deletion failed.",
"deleteConfirm": "Delete the slide \"{{title}}\"?"
}
}