feat(demo-vue): 全站 i18n 抽文案、中英文资源与页面接入

- 引入 vue-i18n,集中维护 zh-CN / en-US 文案与产品 catalog、长文 HTML
- 前台与后台列表/弹窗/校验/删除确认等改为 t(),顶栏与新闻/行业列表与详情页多语言
- 修正 Industry 等页面文首误粘贴;请求头 Accept-Language 与 Element 语言随 locale 切换
This commit is contained in:
王文昊
2026-04-27 13:48:42 +08:00
parent 8b8ae61f4b
commit a74f3e9401
57 changed files with 3703 additions and 3235 deletions

View File

@@ -0,0 +1,230 @@
import type { ProductItemText } from '../types'
export const productCategoryLabelsEn = {
all: 'All Products',
ebike: 'E-Bike Series',
emoto: 'Electric Motorcycle Series',
trike: 'Civilian Tricycle Series',
tractor: 'Compact Farm Machinery Series'
} as const
export const productsEn: ProductItemText[] = [
{
id: 'changhong',
categoryKey: 'ebike',
name: 'Changhong',
tags: ['Li/Lead-acid', 'Long range'],
description: 'Changhong smart e-bike | dual battery, hydraulic shock, disc brakes.',
specs: [
{ value: 'Lithium 60V45AH / lead-acid 72V/20Ah', label: 'Battery', enLabel: 'BATTERY', valueEn: 'Lithium 60V45AH lead-acid 72V/20Ah' },
{ value: '1000W', label: 'Motor', enLabel: 'MOTOR', valueEn: '1000W' },
{ value: '12-tube controller', label: 'Controller', enLabel: 'CONTROLLER', valueEn: '12-channel controller' },
{ value: '3.0-10 iron wheel vacuum', label: 'Tires', enLabel: 'TIRES', valueEn: '3.0-10 iron wheel vacuum tire' },
{ value: 'Hydraulic fork, 7.0*290 shock', label: 'Shock', enLabel: 'SHOCK ABSORBER', valueEn: 'Hydraulic fork, 7.0*290 shock' },
{ value: 'Front / rear disc', label: 'Brake', enLabel: 'BRAKE', valueEn: 'Disc brakes' },
{ value: '90-100 km mid-speed range', label: 'Dashboard', enLabel: 'DASHBOARD', valueEn: 'Mid-speed range 90-100 km' },
{ value: 'Lens headlight, taillight', label: 'Lighting', enLabel: 'LIGHTING', valueEn: 'Lens headlight, taillight' },
{ value: '1790*680*1060mm', label: 'Dimensions', enLabel: 'OVERALL', valueEn: '1790*680*1060mm' }
]
},
{
id: 'mu5pro',
categoryKey: 'ebike',
name: 'MU5PRO',
tags: ['Li/lead-acid', 'Large battery'],
description: 'MU5PRO long-range e-bike | 1000W, 90-100 km range.',
specs: [
{ value: 'Lithium 60V45AH / lead-acid 72V/20Ah', label: 'Battery', enLabel: 'BATTERY', valueEn: 'Lithium 60V45AH lead-acid 72V/20Ah' },
{ value: '1000W', label: 'Motor', enLabel: 'MOTOR', valueEn: '1000W' },
{ value: '12-tube controller', label: 'Controller', enLabel: 'CONTROLLER', valueEn: '12-channel controller' },
{ value: '3.0-12 vacuum', label: 'Tires', enLabel: 'TIRES', valueEn: '3.0-12 vacuum tire' },
{ value: 'Hydraulic fork, lotus seat 7.0*290', label: 'Shock', enLabel: 'SHOCK', valueEn: 'Hydraulic fork, lotus seat' },
{ value: 'Front / rear disc', label: 'Brake', enLabel: 'BRAKE', valueEn: 'Disc brakes' },
{ value: '90-100 km range', label: 'Dashboard', enLabel: 'DASHBOARD', valueEn: '90-100 km' },
{ value: 'Headlight, taillight', label: 'Lighting', enLabel: 'LIGHTING', valueEn: 'Headlight, taillight' },
{ value: '1940*670*1130mm', label: 'Dimensions', enLabel: 'OVERALL', valueEn: '1940*670*1130mm' }
]
},
{
id: 'superknight',
categoryKey: 'ebike',
name: 'Super Knight',
tags: ['Large battery', 'Disc brakes', 'NFC'],
description: 'Super Knight commuter e-bike | 1200W, NFC smart unlock.',
specs: [
{ value: 'Lithium 60V24AH', label: 'Battery', enLabel: 'BATTERY', valueEn: 'Lithium 60V24AH' },
{ value: '1200W', label: 'Motor', enLabel: 'MOTOR', valueEn: '1200W' },
{ value: '12-tube controller', label: 'Controller', enLabel: 'CONTROLLER', valueEn: '12-channel' },
{ value: '90/90-12 CY610 vacuum', label: 'Tires', enLabel: 'TIRES', valueEn: '90/90-12 vacuum' },
{ value: 'Hydraulic shock', label: 'Shock', enLabel: 'SHOCK', valueEn: 'Hydraulic' },
{ value: 'Front / rear disc', label: 'Brake', enLabel: 'BRAKE', valueEn: 'Disc brakes' },
{ value: 'NFC', label: 'Dashboard', enLabel: 'DASHBOARD', valueEn: 'NFC' },
{ value: 'Convex headlight, taillight', label: 'Lighting', enLabel: 'LIGHTING', valueEn: 'Convex headlight' },
{ value: '1850*670*1150mm', label: 'Dimensions', enLabel: 'OVERALL', valueEn: '1850*670*1150mm' }
]
},
{
id: 'child18',
categoryKey: 'trike',
name: 'Load 1.8',
tags: ['Tricycle', 'Heavy load', 'Jialing', 'Short haul'],
description: 'JL 1.8 tricycle, strong load, Jialing maglev control for short-haul transport.',
specs: [
{ label: 'Dimensions', enLabel: 'DIMENSIONS', value: '3300*1380*1415', valueEn: '3300*1380*1415mm' },
{ label: 'Power', enLabel: 'POWER', value: 'Jialing maglev 1200W', valueEn: 'Jialing maglev 1200W' },
{ label: 'Tires', enLabel: 'TIRE', value: 'Front 400-12 / rear 450-12 steel', valueEn: '400-12 / 450-12' },
{ label: 'Shock', enLabel: 'SHOCK', value: '43 external spring', valueEn: '43 ext. spring' },
{ label: 'Rear axle', enLabel: 'AXLE', value: 'Full floating 180', valueEn: 'Full floating 180' }
]
},
{
id: 'moli1',
categoryKey: 'trike',
name: 'Moli V1',
tags: ['Tricycle', 'IRS', 'Disc', 'Rear camera'],
description: 'Moli V1 tricycle, IRS, disc brakes, rear camera and warm air.',
specs: [
{ label: 'Dimensions', enLabel: 'DIMENSIONS', value: '2750×1225×1670mm', valueEn: '2750×1225×1670mm' },
{ label: 'Brake', enLabel: 'BRAKE', value: 'IRS front & rear disc', valueEn: 'IRS + disc' },
{ label: 'Tires', enLabel: 'TIRES', value: '400-10 vacuum', valueEn: '400-10' },
{ label: 'Motor', enLabel: 'MOTOR', value: '800W sine wave', valueEn: '800W' },
{ label: 'Controller', enLabel: 'CTRL', value: 'Dual 18-tube', valueEn: 'Dual 18' },
{ label: 'Voltage', enLabel: 'VOLT', value: '48V/60V', valueEn: '48V/60V' },
{ label: 'Standard', enLabel: 'STD', value: 'Camera, sunroof, heat, disc, rear sus.', valueEn: 'Full spec' }
]
},
{
id: 'moli2',
categoryKey: 'trike',
name: 'Moli V2',
tags: ['Tricycle', 'Compact', 'IRS', 'Urban'],
description: 'Moli V2 compact tricycle, IRS, warm air, ideal for city use.',
specs: [
{ label: 'Dimensions', enLabel: 'DIMENSIONS', value: '2410×1225×1670mm', valueEn: '2410×1225×1670mm' },
{ label: 'Brake', enLabel: 'BRAKE', value: 'IRS front & rear disc', valueEn: 'IRS + disc' },
{ label: 'Tires', enLabel: 'TIRES', value: '400-10 vacuum', valueEn: '400-10' },
{ label: 'Motor', enLabel: 'MOTOR', value: '800W sine wave', valueEn: '800W' },
{ label: 'Controller', enLabel: 'CTRL', value: 'Dual 18-tube', valueEn: 'Dual 18' },
{ label: 'Voltage', enLabel: 'VOLT', value: '48V/60V', valueEn: '48V/60V' },
{ label: 'Standard', enLabel: 'STD', value: 'Camera, sunroof, heat, disc, rear sus.', valueEn: 'Full spec' }
]
},
{
id: 'yadea',
categoryKey: 'emoto',
name: 'Yadea Guanneng IF8',
tags: ['Graphene', 'BLDC', 'Disc', 'Range'],
description: 'Yadea IF8 e-moto | graphene Gen3 PLUS, 1200W BLDC, ~85 km range.',
specs: [
{ label: 'Battery', enLabel: 'BATTERY', value: 'TTFAR Graphene 3rd PLUS 72V23Ah', valueEn: '72V23Ah (Li optional)' },
{ label: 'Motor', enLabel: 'MOTOR', value: '1200W BLDC', valueEn: '1200W BLDC' },
{ label: 'Controller', enLabel: 'CTRL', value: 'Yadea TTFAR smart', valueEn: 'TTFAR' },
{ label: 'Tires', enLabel: 'TIRES', value: '3.0-10 vacuum', valueEn: '3.0-10' },
{ label: 'Shock', enLabel: 'SHOCK', value: 'Hydraulic fork + dual rear', valueEn: 'Hydraulic' },
{ label: 'Brake', enLabel: 'BRAKE', value: 'Dual disc F/R', valueEn: 'Disc' },
{ label: 'Dashboard', enLabel: 'DASH', value: 'LCD, ~85 km', valueEn: 'LCD' },
{ label: 'Lighting', enLabel: 'LIGHT', value: 'LED head + tail + turn', valueEn: 'LED' },
{ label: 'Dimensions', enLabel: 'OVERALL', value: '1790*680*1060mm', valueEn: '1790*680*1060mm' }
]
},
{
id: 'fengsu',
categoryKey: 'emoto',
name: 'Fengsu Phantom',
tags: ['Dual battery', 'High power', 'Disc', 'Range'],
description: 'Fengsu Phantom | 1000W BLDC, dual battery, 90-100 km.',
specs: [
{ label: 'Battery', enLabel: 'BATTERY', value: 'Li 60V45 / Pb 72V/20 (opt.)', valueEn: 'Optional dual' },
{ label: 'Motor', enLabel: 'MOTOR', value: '1000W BLDC', valueEn: '1000W' },
{ label: 'Controller', enLabel: 'CTRL', value: '12-tube smart', valueEn: '12-tube' },
{ label: 'Tires', enLabel: 'TIRES', value: '3.0-10 vacuum', valueEn: '3.0-10' },
{ label: 'Shock', enLabel: 'SHOCK', value: 'Hydraulic F + R', valueEn: 'Hydraulic' },
{ label: 'Brake', enLabel: 'BRAKE', value: 'Front / rear disc', valueEn: 'Disc' },
{ label: 'Dashboard', enLabel: 'DASH', value: 'LCD, 90-100 km', valueEn: 'LCD' },
{ label: 'Lighting', enLabel: 'LIGHT', value: 'Lens, LED tail & turn', valueEn: 'LED' },
{ label: 'Dimensions', enLabel: 'OVERALL', value: '1790*680*1060mm', valueEn: '1790*680*1060mm' }
]
},
{
id: 'anying',
categoryKey: 'emoto',
name: 'Shadow Knight',
tags: ['Dual battery', 'BLDC', 'Disc', 'Range'],
description: 'Shadow Knight | 1000W BLDC, dual battery, 90-100 km.',
specs: [
{ label: 'Battery', enLabel: 'BATTERY', value: 'Li 60V45 / Pb 72V/20', valueEn: 'Dual option' },
{ label: 'Motor', enLabel: 'MOTOR', value: '1000W BLDC', valueEn: '1000W' },
{ label: 'Controller', enLabel: 'CTRL', value: '12-tube smart', valueEn: '12-tube' },
{ label: 'Tires', enLabel: 'TIRES', value: '3.0-10 iron vacuum', valueEn: '3.0-10' },
{ label: 'Shock', enLabel: 'SHOCK', value: 'Hydraulic 7.0*290', valueEn: 'Hydraulic' },
{ label: 'Brake', enLabel: 'BRAKE', value: 'Front / rear disc', valueEn: 'Disc' },
{ label: 'Dashboard', enLabel: 'DASH', value: '90-100 km', valueEn: 'Dash' },
{ label: 'Lighting', enLabel: 'LIGHT', value: 'Lens, LED, flow turn', valueEn: 'LED' },
{ label: 'Dimensions', enLabel: 'OVERALL', value: '1790*680*1060mm', valueEn: '1790*680*1060mm' }
]
},
{
id: 'tractor6090',
categoryKey: 'tractor',
name: 'Power King 6090',
tags: ['300 HP', '4WD', 'Hydraulic', 'Auto steer'],
description: '6090 tractor | 300 HP inline-6, PowerShift, full wet brake.',
specs: [
{ label: 'Engine', enLabel: 'ENGINE', value: '6-cyl 9.0L turbo', valueEn: '6-cyl 9.0L' },
{ label: 'Power', enLabel: 'POWER', value: '300 HP / 220.5 kW', valueEn: '300 HP' },
{ label: 'Net power', enLabel: 'NET', value: '326.3 HP / 240 kW', valueEn: '326 HP' },
{ label: 'Transmission', enLabel: 'TRANS', value: '16×4 PowerShift', valueEn: 'PowerShift' },
{ label: 'PTO', enLabel: 'PTO', value: '1000 r/min, 187.5 kW', valueEn: '1000' },
{ label: 'Hydraulic', enLabel: 'HYD', value: '4 e-valves, 288.3 kN lift', valueEn: 'E-hyd' },
{ label: 'Tires', enLabel: 'TIRES', value: '600/70R30 F / 650/85R38 R', valueEn: 'std/opt' },
{ label: 'Hitch', enLabel: 'HITCH', value: 'Cat 3/4N 3-pt', valueEn: '3-pt' },
{ label: 'Brake', enLabel: 'BRAKE', value: 'Full wet hydraulic', valueEn: 'Wet' },
{ label: 'Cab', enLabel: 'CAB', value: '1750 air seat, A/C', valueEn: 'Premium' },
{ label: 'Nav', enLabel: 'NAV', value: 'CommandCenter, ATI', valueEn: 'Auto' },
{ label: 'Dimensions', enLabel: 'SIZE', value: '6613×3012-3351×3403', valueEn: 'mm' }
]
},
{
id: 'tractor665',
categoryKey: 'tractor',
name: 'Challenger MT665D',
tags: ['340 HP', 'CVT', 'Wet brake', 'Panoramic cab'],
description: 'MT665D | 340 HP diesel, CVT, full wet brake.',
specs: [
{ label: 'Engine', enLabel: 'ENGINE', value: 'AGCO 8.4L I6 diesel', valueEn: '8.4L' },
{ label: 'Power', enLabel: 'PWR', value: '340 HP / 253.5 kW', valueEn: '340 HP' },
{ label: 'PTO power', enLabel: 'PTO', value: '290 HP / 216.3 kW', valueEn: '290' },
{ label: 'Transmission', enLabel: 'TRANS', value: 'CVT, 2 ranges', valueEn: 'CVT' },
{ label: 'PTO', enLabel: 'PTO', value: '1000 r/min dual', valueEn: '1000' },
{ label: 'Hydraulic', enLabel: 'HYD', value: 'Closed 160 L/min', valueEn: '160' },
{ label: 'Tires', enLabel: 'TIRES', value: '480/70R34 F, 520/85R46 R', valueEn: 'opt dual' },
{ label: 'Hitch', enLabel: 'HITCH', value: 'Cat III, ≥85 kN', valueEn: 'Cat III' },
{ label: 'Brake', enLabel: 'BRAKE', value: 'Full wet', valueEn: 'Wet' },
{ label: 'Cab', enLabel: 'CAB', value: 'Panoramic glass, A/C', valueEn: 'A/C' },
{ label: 'Fuel', enLabel: 'FUEL', value: '632 L', valueEn: '632' },
{ label: 'Dimensions', enLabel: 'SIZE', value: '≈5500×2700×3200', valueEn: 'mm' },
{ label: 'Weight', enLabel: 'WT', value: '≈11500 kg', valueEn: 'kg' }
]
},
{
id: 'leiting300',
categoryKey: 'tractor',
name: 'Leiting 300HP',
tags: ['300 HP', 'I6', 'PowerShift', 'Wet brake'],
description: 'Leiting 300 HP | I6 common rail, PowerShift, full wet.',
specs: [
{ label: 'Engine', enLabel: 'ENGINE', value: 'I6 common rail diesel', valueEn: 'I6' },
{ label: 'Power', enLabel: 'PWR', value: '220 kW / ~300 HP', valueEn: '300' },
{ label: 'Transmission', enLabel: 'TRANS', value: 'PowerShift', valueEn: 'PS' },
{ label: 'PTO', enLabel: 'PTO', value: '1000 r/min', valueEn: '1000' },
{ label: 'Hydraulic', enLabel: 'HYD', value: 'Closed ≥150 L/min', valueEn: '150' },
{ label: 'Tires', enLabel: 'TIRES', value: '540/65R30 F, 650/85R38 R', valueEn: 'dual R' },
{ label: 'Hitch', enLabel: 'HITCH', value: 'Cat III, ≥90 kN', valueEn: '90' },
{ label: 'Brake', enLabel: 'BRAKE', value: 'Full wet', valueEn: 'Wet' },
{ label: 'Cab', enLabel: 'CAB', value: 'Panoramic, A/C, air seat', valueEn: 'A/C' },
{ label: 'Fuel', enLabel: 'FUEL', value: '≈500 L', valueEn: '500' },
{ label: 'Dimensions', enLabel: 'SIZE', value: '≈6200×3000×3300', valueEn: 'mm' },
{ label: 'Weight', enLabel: 'WT', value: '≈10500 kg', valueEn: 'kg' }
]
}
]

View File

@@ -0,0 +1,10 @@
import { messages } from './messages'
import { productCategoryLabelsEn, productsEn } from './catalog'
export default {
...messages,
catalog: {
categoryLabels: productCategoryLabelsEn,
products: productsEn
}
}

View File

@@ -0,0 +1,172 @@
export const messages = {
common: {
enable: 'Enabled',
disable: 'Disabled',
status: 'Status',
search: 'Search',
add: 'Add',
addShort: 'Add',
edit: 'Edit',
delete: 'Delete',
batchDelete: 'Delete selected',
operation: 'Actions',
confirm: 'OK',
cancel: 'Cancel',
name: 'Name',
phone: 'Phone',
username: 'Username',
password: 'Password',
sex: 'Gender',
male: 'Male',
female: 'Female',
selectPlaceholder: 'Select',
createTime: 'Created',
success: 'Success',
logOut: 'Log out',
currentUser: 'User',
backToList: 'Back to list',
back: 'Back',
detail: 'Details',
yes: 'Yes',
no: 'No',
goTo: 'Go to',
toPage: 'Page',
pageUnit: '',
specBasicCn: 'Basic config',
specBasicEn: 'BASIC CONFIGURATION',
more: 'Show more',
collapse: 'Collapse',
views: 'Views',
publishDate: 'Published',
dateLabel: 'Published: ',
viewsLabel: 'Views: ',
companyShort: 'Shandong Showdart Tech',
wechatOA: 'WeChat OA: Showdart',
allRights: 'All rights reserved',
copyrightFull: 'Copyright © 2026 Shandong Showdart Technology Engineering Co., Ltd. All rights reserved.',
companyInfo: 'Company',
addressLabel: 'Cunqian Village, Huangli Town, Wujin District, Changzhou, Jiangsu, China'
},
language: { zh: '中文', en: 'English', switch: 'Language' },
nav: {
home: 'Home',
aboutUs: 'About',
companyIntro: 'Profile',
culture: 'Culture',
base: 'Production',
org: 'Organization',
honors: 'Awards',
history: 'History',
products: 'Products',
newsHub: 'News',
companyNews: 'Company news',
industryNews: 'Industry'
},
footer: {
about: 'About us',
news: 'News',
followIndustry: 'Industry',
siteSubtitle: 'Showdart website',
privacy: 'Privacy',
terms: 'Terms'
},
brand: { company: 'Shandong Showdart Technology Engineering Co., Ltd.' },
headerAdmin: { title: 'Showdart Admin', currentUser: 'User', logout: 'Log out' },
home: {
heroTitle1: 'Built on trust and quality,',
heroTitle2: 'leading the market with intelligence',
heroSub: 'Smart material handling for global logistics',
btnProducts: 'View products',
btnContact: 'Contact us',
aboutTitle: 'About us',
aboutP1: 'Founded 7 Aug 2024, Showdart is an integrated R&D, manufacturing, sales, and service company. We focus on electromechanical equipment, smart control, and industrial products, covering machinery, automation, software, materials, building materials, hardware, chemicals, auto and farm parts, and import/export.',
aboutP2: 'With a solid supply chain and professional team, we serve construction, industry, logistics, and agriculture with one-stop solutions—across China and worldwide.',
more: 'Learn more',
showcaseTitle: 'Products',
showcaseSub: 'Full range of smart handling equipment. Certified processes to match your needs.',
viewAll: 'View all',
carouselAlt1: 'Aerial view of production base 1',
carouselAlt2: 'Aerial view of production base 2',
carouselAlt3: 'Aerial view of production base 3'
},
about: {
title: 'Showdart Technology Engineering (Shandong) Co., Ltd.',
section: 'Company profile',
p1: 'An integrated R&D, manufacturing, and trading company registered in Jining, Shandong, with compliant operations in engineering, industry, and trade.',
scopeTitle: 'Scope',
scopeP: 'We serve intelligent building design, machinery sales and R&D, electromechanical manufacturing, metal products, surface treatment, software and electronics, general goods and chemicals (non-licensed), hardware, auto and motorcycle parts, textiles, livestock, and import/export worldwide.',
missionTitle: 'Mission',
missionP: 'From Shandong to the country and the world, we empower industry with technology and create value with service—driving smart industry and win-win with customers and society.',
advTitle: 'Strengths',
adv1: 'Diversified portfolio and cross-sector resource integration with strong risk resilience.',
adv2: 'End-to-end capability from R&D and production to sales, import/export, and one-stop customer solutions.',
adv3: 'Compliant operation between licensed and general projects, supporting long-term stability.',
adv4: 'Flexible offer across industry, construction, agriculture, and consumer segments.'
},
productsPage: {
bannerTitle: 'Multi-category supply for equipment and materials',
bannerSub: 'With a compliant business system and professional quality, we support R&D, manufacturing, materials, and global trade in many scenarios—one-stop solutions for your needs.',
filterLabel: 'Filter by category',
filterAll: 'All products'
},
services: {
pageTitle: 'Our services',
pageSub: 'Top-tier credentials, four core processes, 400,000 units/year—full-chain smart handling from design to delivery.',
s1: 'End-to-end solutions',
s1d: 'From custom design to global delivery and marketing support across the product lifecycle.',
c1t: 'OEM / ODM', c1d: 'Flexible configuration and co-development with our engineering and manufacturing base.',
c1a: 'Configurable for different use cases', c1b: 'Colors, branding, and ID', c1c: 'Custom packaging', c1e: 'Support from concept to volume production',
c2t: 'Precision manufacturing', c2d: 'Modern plants and four key processes for consistency and output.',
c2a: 'Stamping, welding, paint, and assembly', c2b: 'Automated lines for accuracy and speed', c2c: '400k units / year capacity', c2e: 'Sustainable, green production',
c3t: 'Quality control', c3d: 'Five quality gates for safe, reliable equipment.',
c3L1: 'Incoming material control', c3L2: 'In-process checks', c3L3: 'Finished goods testing', c3L4: 'CE and international approvals',
c4t: 'Global delivery', c4d: 'Logistics and compliance for fast, safe worldwide shipment.',
c4L1: 'Export documentation support', c4L2: 'Sea, air, and multimodal options', c4L3: 'Protective export packaging', c4L4: 'End-to-end tracking',
c5t: 'After sales', c5d: 'Responsive global support network.',
c5L1: 'Technical support teams', c5L2: 'Warranty and genuine spare parts', c5L3: 'Remote guidance', c5L4: '24/7 response where applicable',
c6t: 'Go-to-market', c6d: 'Helping partners grow with marketing and training.',
c6L1: 'Product assets and collateral', c6L2: 'Market trends and playbooks', c6L3: 'Sales training', c6L4: 'Co-branding and campaigns',
procTitle: 'How we work', procSub: 'A clear four-step path from your needs to on-site use.',
p1t: 'Discovery', p1d: 'We align on market, use case, and product requirements with a dedicated contact.',
p2t: 'Solution', p2d: 'Configuration, feasibility, and a tailored offer based on our processes and R&D.',
p3t: 'Build', p3d: 'Manufacturing under our quality system and agreed lead times.',
p4t: 'Deliver', p4d: 'Logistics, export services, and safe arrival worldwide.',
faqTitle: 'FAQ', faqSub: 'Common questions from partners. Contact us for more.',
faqContact: 'Contact support',
fq1: 'What is the MOQ?', fa1: 'We support flexible MOQs for new partners; full-container orders are typical—details depend on product and need.',
fq2: 'OEM / brand customization?', fa2: 'Yes—configuration, brand, color, and packaging in full OEM/ODM scope.',
fq3: 'Lead time for production and delivery?', fa3: 'Production often 1525 working days by volume. Transit typically 1545 days by destination. Rush options on request.',
fq4: 'Spare parts?', fa4: 'Yes—spare part kits and a full original parts pipeline for long-term operation.',
ctaTitle: 'Start a project', ctaSub: 'Lets build your smart handling solution on our certified manufacturing base.',
ctaQuote: 'Get a quote', ctaView: 'View products'
},
privacy: {
title: 'Privacy policy', updated: 'Last updated: 19 Feb 2025', intro: 'This policy describes how we collect and use your information.',
c1: 'What we collect', c1p: 'Information you give us, such as:', c1a: 'Account', c1b: 'Usage', c1c: 'Preferences',
c2: 'How we use it', c2p: 'We use it to:', c2a: 'Provide the service', c2b: 'Improve experience', c2c: 'Send important updates',
c3: 'Security', c3p: 'We use appropriate measures to protect your data.',
c4: 'Contact', c4p: 'For privacy questions, contact our team.',
c5: 'Updates', c5p: 'We may update this policy from time to time.'
},
terms: {
title: 'Terms of service', updated: 'Last updated: 19 Feb 2025', intro: 'By using this site you agree to these terms.',
t1: '1. Acceptance', t1p: 'Using the site means you accept this agreement.',
t2: '2. Your responsibilities', t2p: 'You agree to:', t2a: 'Provide accurate information', t2b: 'Keep your account safe', t2c: 'Follow applicable laws',
t3: '3. Changes', t3p: 'We may:', t3a: 'Change or end services', t3b: 'Update these terms',
t4: 'Contact', t4p: 'Questions? Please contact us.'
},
news: {
listTitle: 'Title', content: 'Content', views: 'Views', adminTitle: 'News',
batchWarn: 'Select rows to delete', delOk: 'Deleted', delConfirm: 'Delete this item?', delTitle: 'Confirm delete', selectDate: 'Pick date', enterTitle: 'Enter title', enterContent: 'Enter content', pickDate: 'Select publish date', pickStatus: 'Select status', saveOkAdd: 'Added', saveOkEdit: 'Updated',
publicBanner: 'Company news', listBannerSub: 'NEWS', detailBannerSub: 'NEWS', metaDateLabel: 'Published: ', labelPublishDate: 'Publish date', newsCenter: 'News', newsDetail: 'Article', fetchFail: 'Failed to load news', fetchDetailFail: 'Failed to load article', noId: 'No article id', viewsIncrFail: 'View count update failed', backList: 'Back to list', publishTime: 'Published: '
},
industry: {
listTitle: 'Title', content: 'Content', colTitle: 'Title', adminTitle: 'Industry', detailTitle: 'Industry article', detailTitleSub: 'NEWS', listBanner: 'Industry', listBannerSub: 'INDUSTRY', labelPublishDate: 'Publish date', plTitle: 'Enter title', plContent: 'Enter content', fetchFail: 'Failed to load list', publicTime: 'Published: ', returnList: 'Back to list', fetchDetailFail: 'Failed to load article', breadcrumbDetail: 'Detail'
},
admin: {
welcome: 'Welcome to Showdart Admin', loginTitle: 'Showdart Admin', login: 'Sign in', plUser: 'Username', plPwd: 'Password', ok: 'Signed in', fail: 'Sign-in failed', avatar: 'Avatar', leftHome: 'Home', org: 'Organization', adminList: 'Administrators', companyNewsManage: 'Company news', industryManage: 'Industry posts',
delWarn: 'Select rows to delete', delOk: 'Deleted', delConfirm: 'Delete?', delTitle: 'Confirm', saveOk: 'Success', reLogin: 'Session expired. Sign in again', reLoginTitle: 'Session ended', reLoginBtn: 'Sign in again'
},
request: { notLogin: 'Not signed in. Please sign in again', timeout: 'Request timed out', network: 'Network error', error: 'Request failed' },
formRules: { userRequired: 'Username required', pwdRequired: 'Password required', nameRequired: 'Name required', sexRequired: 'Gender required', telRequired: 'Phone required', phoneEmpty: 'Phone required', phoneDigits: 'Digits only', phoneInvalid: 'Invalid phone' }
}