|
|
@@ -0,0 +1,614 @@
|
|
|
+export default {
|
|
|
+ // 通用
|
|
|
+ common: {
|
|
|
+ confirm: 'Confirm',
|
|
|
+ cancel: 'Cancel',
|
|
|
+ save: 'Save',
|
|
|
+ delete: 'Delete',
|
|
|
+ deleteAll: 'Delete All',
|
|
|
+ startGenerate: 'Start Generate',
|
|
|
+ edit: 'Edit',
|
|
|
+ copy: 'Copy',
|
|
|
+ add: 'Add',
|
|
|
+ search: 'Search',
|
|
|
+ reset: 'Reset',
|
|
|
+ loading: 'Loading...',
|
|
|
+ success: 'Success',
|
|
|
+ failed: 'Failed',
|
|
|
+ warning: 'Warning',
|
|
|
+ error: 'Error',
|
|
|
+ tips: 'Tips',
|
|
|
+ yes: 'Yes',
|
|
|
+ no: 'No',
|
|
|
+ enabled: 'Enabled',
|
|
|
+ disabled: 'Disabled',
|
|
|
+ all: 'All',
|
|
|
+ none: 'None',
|
|
|
+ operate: 'Operation',
|
|
|
+ status: 'Status',
|
|
|
+ version: 'Version',
|
|
|
+ download: 'Download',
|
|
|
+ selected: 'Selected',
|
|
|
+ of: 'of',
|
|
|
+ close: 'Close',
|
|
|
+ yesGetIt: 'Got It',
|
|
|
+ refresh: 'Refresh',
|
|
|
+ sort: 'Sort',
|
|
|
+ saveSort: 'Save Sort',
|
|
|
+ cancelSort: 'Cancel Sort',
|
|
|
+ newRow: 'Add Row',
|
|
|
+ reInit: 'Reinitialize',
|
|
|
+ rename: 'Rename Config',
|
|
|
+ copyConfig: 'Copy Config',
|
|
|
+ init: 'Initialize',
|
|
|
+ upload: 'Upload',
|
|
|
+ export: 'Export',
|
|
|
+ import: 'Import',
|
|
|
+ preview: 'Preview',
|
|
|
+ submit: 'Submit',
|
|
|
+ back: 'Back',
|
|
|
+ next: 'Next',
|
|
|
+ previous: 'Previous',
|
|
|
+ finish: 'Finish',
|
|
|
+ step: 'Step',
|
|
|
+ confirmDelete: 'Are you sure you want to delete this step?',
|
|
|
+ sortModeTip: 'Sort mode: drag rows to reorder, then click "Save Sort"',
|
|
|
+ dragSortTip: 'Drag rows to sort, then click "Save Sort"',
|
|
|
+ switchToConfig: 'Switch to Execution Config',
|
|
|
+ photo: 'Photo',
|
|
|
+ noPhoto: 'No Photo',
|
|
|
+ calibrationPos: 'Calibration Position',
|
|
|
+ newStep: 'Add Step',
|
|
|
+ editStep: 'Edit Step',
|
|
|
+ copySuffix: '_Copy',
|
|
|
+ renameConfig: 'Rename Config',
|
|
|
+ copyConfigTitle: 'Copy Config',
|
|
|
+ inputConfigName: 'Please enter config name',
|
|
|
+ inputName: 'Please enter name',
|
|
|
+ nickname: 'Nickname',
|
|
|
+ notLoggedIn: 'Not logged in',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 验证消息
|
|
|
+ validation: {
|
|
|
+ pleaseInput: 'Please enter',
|
|
|
+ pleaseSelect: 'Please select',
|
|
|
+ required: 'This field is required',
|
|
|
+ invalidFormat: 'Invalid format',
|
|
|
+ inputPassword: 'Please enter password',
|
|
|
+ inputUsername: 'Please enter username',
|
|
|
+ inputPhone: 'Please enter phone number',
|
|
|
+ inputCode: 'Please enter verification code',
|
|
|
+ inputGoodsArtNo: 'Please scan or enter goods number in step 1 on the left!',
|
|
|
+ invalidPhone: 'Please enter a valid phone number',
|
|
|
+ selectMainImageSize: 'Please select main image size!',
|
|
|
+ inputValidSize: 'Please enter a valid value between 1 and 3000',
|
|
|
+ paddingRange: '800 image custom padding must be between 0 and 500',
|
|
|
+ sharpenRange: 'Image sharpen must be between 1 and 5',
|
|
|
+ selectMaskMode: 'Please select a valid shadow processing mode',
|
|
|
+ opacityRange: 'Opacity must be between 0.5 and 1',
|
|
|
+ brightnessRange: 'Brightness must be between 200 and 255',
|
|
|
+ selectFlip: 'Please select whether to flip 800 image',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 成功/失败消息
|
|
|
+ message: {
|
|
|
+ saveSuccess: 'Saved successfully',
|
|
|
+ deleteSuccess: 'Deleted successfully',
|
|
|
+ resetSuccess: 'Reset successfully',
|
|
|
+ renameSuccess: 'Renamed successfully',
|
|
|
+ sortSuccess: 'Sorted successfully',
|
|
|
+ configSwitchSuccess: 'Config switched successfully',
|
|
|
+ configSwitchFailed: 'Config switch failed',
|
|
|
+ loginFailed: 'Login failed, please retry',
|
|
|
+ switchOrgFailed: 'Failed to switch organization, please retry',
|
|
|
+ noOrg: 'No organization found for current user',
|
|
|
+ openPreviewWarn: 'You have a live preview popup open. Please close the edit popup first, then close this window.',
|
|
|
+ sortCanceled: 'Sort canceled',
|
|
|
+ openDirFailed: 'Failed to get app directory appPath',
|
|
|
+ openDirError: 'Failed to open directory',
|
|
|
+ importImageFailed: 'Failed to import images',
|
|
|
+ deleteAllGoodsSuccess: 'All goods deleted successfully',
|
|
|
+ deleteAllGoodsFailed: 'Failed to delete all goods',
|
|
|
+ deleteGoodsSuccess: 'Goods deleted successfully',
|
|
|
+ selectGoodsFirst: 'Please select goods to generate',
|
|
|
+ confirmDeleteGoods: 'Are you sure you want to delete shooting data for goods: {goods}?',
|
|
|
+ confirmDeleteAll: 'Are you sure you want to delete all shooting data?',
|
|
|
+ confirmDeleteHistory: 'Are you sure you want to delete current history?',
|
|
|
+ confirmReTakeGoods: 'This will delete shooting data for goods: {goods}. Continue?',
|
|
|
+ confirmReTakeSingle: 'This will delete this data. Continue?',
|
|
|
+ reTakePrompt: 'This will delete this data. Continue?',
|
|
|
+ reTakeGoodsPrompt: 'This will delete shooting data for goods: {goods}. Continue?',
|
|
|
+ reTakeConfirmTitle: 'Confirm',
|
|
|
+ reTakeAlertTitle: 'Notice',
|
|
|
+ reTakeAlertMsg: 'View reset. After placing the shoes, click the button to start retake.',
|
|
|
+ reTakeAlertBtn: 'Start Retake',
|
|
|
+ startReTake: 'Start Retake',
|
|
|
+ reTakeComplete: 'Single photo complete',
|
|
|
+ photoComplete: 'All photos complete',
|
|
|
+ cannotReadConfig: 'Cannot read shooting config for this product. Please delete and reshoot.',
|
|
|
+ shootingInProgress: 'Shooting in progress, please wait',
|
|
|
+ notShooting: 'Please shoot a product first.',
|
|
|
+ alreadyStopped: 'Shooting already finished, no need to stop.',
|
|
|
+ remoteControlTip: 'Please scan or enter goods number in step 1 on the left!',
|
|
|
+ bluetoothScanTip: 'Goods {no} acquired. Press left or right button on remote to start shooting.',
|
|
|
+ confirmDeleteSelectedGoods: 'Are you sure you want to delete shooting data for the selected {count} goods?',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 路由/页面标题
|
|
|
+ router: {
|
|
|
+ home: 'Home',
|
|
|
+ setting: 'Settings',
|
|
|
+ photoCheck: 'Lens Correction',
|
|
|
+ photoShot: 'Shoot Product',
|
|
|
+ photoProcess: 'Process Images',
|
|
|
+ photoDetail: 'Main Image & Detail Generation',
|
|
|
+ photoSeniorDetail: 'Detail Advanced Config',
|
|
|
+ photoExpired: 'Account Expired',
|
|
|
+ remoteControl: 'Remote Control',
|
|
|
+ developer: 'Device Setup',
|
|
|
+ developerTabSetting: 'Settings',
|
|
|
+ developerTabMCU: 'MCU Config',
|
|
|
+ developerTabRS485: 'RS485 Debug',
|
|
|
+ ota: 'Version Update',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 登录页
|
|
|
+ login: {
|
|
|
+ title: 'Welcome!',
|
|
|
+ subtitle: 'Sign in to Zhihuiying System',
|
|
|
+ accountTab: 'Account Login',
|
|
|
+ codeTab: 'SMS Login',
|
|
|
+ getCode: 'Get Code',
|
|
|
+ countdown: 's to resend',
|
|
|
+ loginBtn: 'Login',
|
|
|
+ selectCompany: 'Select Company Identity',
|
|
|
+ selectCompanyTip: 'You have accounts in the following companies. Which one would you like to access?',
|
|
|
+ confirm: 'Confirm',
|
|
|
+ switchOrg: 'Failed to switch organization, please retry',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 首页
|
|
|
+ home: {
|
|
|
+ title: 'Home',
|
|
|
+ appTitle: 'Zhihuiying AI Camera',
|
|
|
+ shootAndProcess: 'Shoot & Process',
|
|
|
+ processOnly: 'Process Only',
|
|
|
+ versionAnnouncement: 'Version Announcement',
|
|
|
+ noAnnouncement: 'No announcements yet',
|
|
|
+ loadingProgram: 'Program starting...',
|
|
|
+ loadingSync: 'Syncing config...',
|
|
|
+ loadingGeneral: 'Loading...',
|
|
|
+ waitSync: 'Waiting for config sync',
|
|
|
+ openResource: 'Click home title',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 头部导航
|
|
|
+ header: {
|
|
|
+ setting: 'Settings',
|
|
|
+ remoteSimulator: 'Remote Simulator',
|
|
|
+ deviceSetup: 'Device Setup',
|
|
|
+ currentVersion: 'Version: {version}',
|
|
|
+ userManual: 'User Manual',
|
|
|
+ logout: 'Logout',
|
|
|
+ softwareDownload: 'Downloading software',
|
|
|
+ versionDetail: 'Version Details',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 遥控器
|
|
|
+ remoteControl: {
|
|
|
+ title: 'Remote Simulator',
|
|
|
+ leftFoot: 'Left',
|
|
|
+ rightFoot: 'Right',
|
|
|
+ takePhoto: 'Photo',
|
|
|
+ ledOn: 'LED On',
|
|
|
+ ledOff: 'LED Off',
|
|
|
+ stop: 'Stop',
|
|
|
+ leftConfig: 'Left Config',
|
|
|
+ rightConfig: 'Right Config',
|
|
|
+ photoConfig: 'Photo Config',
|
|
|
+ pointLabel: 'Point {point}',
|
|
|
+ connected: 'Connected',
|
|
|
+ notConnected: 'Not Connected',
|
|
|
+ switchToPoint: 'Switched to Point {point}',
|
|
|
+ shootingInProgress: 'Shooting in progress, please wait',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 拍摄检查
|
|
|
+ photoCheck: {
|
|
|
+ title: 'Lens Correction',
|
|
|
+ tipNormal: 'Place shoes on the turntable (note left/right). Shoes should face the camera with the center axis aligned with the infrared. If lighting is insufficient, turn on ambient light and turn off flash.',
|
|
|
+ tipSetting: 'Place shoes on the turntable (note left/right). Shoes should face the camera with the center axis aligned with the infrared. If lighting is insufficient, turn on ambient light and turn off flash.',
|
|
|
+ clickFocus: 'Tap to Focus',
|
|
|
+ testImageDesc: 'Test image for checking lens calibration',
|
|
|
+ takePhotoCheck: 'Take Photo Check',
|
|
|
+ retakeCheck: 'Retake Check',
|
|
|
+ confirmNext: 'Confirm and Next',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 拍摄商品
|
|
|
+ photoShot: {
|
|
|
+ title: 'Shoot Product',
|
|
|
+ step1: 'Step 1: Enter Goods Number',
|
|
|
+ inputGoodsPlaceholder: 'Enter goods number',
|
|
|
+ autoGet: 'Auto Get',
|
|
|
+ scanTip: 'Scan product QR code with remote',
|
|
|
+ step2: 'Step 2: Start Shooting (press left/right on remote)',
|
|
|
+ remoteTip: 'Left/right buttons start shooting. Center button unlocks custom image after 5 main images.',
|
|
|
+ searchPlaceholder: 'Search goods number',
|
|
|
+ noData: 'No data yet. Please shoot first.',
|
|
|
+ loading: 'Loading data, please wait...',
|
|
|
+ imageCount: 'images',
|
|
|
+ advancedGenerate: 'Advanced Generate',
|
|
|
+ retake: 'Retake',
|
|
|
+ leftFootProgram: 'Execute Left Foot Program',
|
|
|
+ rightFootProgram: 'Execute Right Foot Program',
|
|
|
+ goodsSuccess: 'Goods {goods} acquired. Press left or right button on remote to start shooting.',
|
|
|
+ startShooting: 'Starting shooting...',
|
|
|
+ shootingInProgress: 'Shooting in progress, please wait',
|
|
|
+ alreadyStopped: 'Shooting already finished, no need to stop.',
|
|
|
+ notShooting: 'Please shoot a product first.',
|
|
|
+ goodsNoSuccess: 'Goods {goods} acquired. Press left or right button on remote to start shooting.',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 处理图像
|
|
|
+ photoProcess: {
|
|
|
+ title: 'Process Images',
|
|
|
+ searchPlaceholder: 'Search goods number',
|
|
|
+ noData: 'No data, please shoot first',
|
|
|
+ loading: 'Loading data, please wait...',
|
|
|
+ imageCount: 'images',
|
|
|
+ advancedGenerate: 'Advanced Generate',
|
|
|
+ retake: 'Retake',
|
|
|
+ delete: 'Delete',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 主图与详情生成
|
|
|
+ photoDetail: {
|
|
|
+ sceneGenerate: 'Scene Generation',
|
|
|
+ modelGenerate: 'Model Generation',
|
|
|
+ detailGenerate: 'Detail Generation',
|
|
|
+ customTemplate: 'Add Custom Template',
|
|
|
+ templateDeveloping: 'Feature developing',
|
|
|
+ templateCustom: 'Detail Template Custom',
|
|
|
+ whiteBgExport: 'Batch White Background Export',
|
|
|
+ productAlbum: 'Product Album Generation',
|
|
|
+ tipTitle: 'Tip',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 设置页
|
|
|
+ setting: {
|
|
|
+ title: 'Settings',
|
|
|
+ basicConfig: 'Basic Config',
|
|
|
+ cameraConfig: 'Camera Config',
|
|
|
+ otherConfig: 'Other Settings',
|
|
|
+ leftRightConfig: 'Left/Right Foot Program Config',
|
|
|
+ mainImageSize: 'Main Image Size:',
|
|
|
+ customSize: 'Custom Size:',
|
|
|
+ inputSizeTip: 'Enter a size value between 1-3000',
|
|
|
+ imageFormat: 'Image Format:',
|
|
|
+ imageSharpen: 'Image Sharpen:',
|
|
|
+ sharpenTip: 'Value 1-5, 1 means no processing',
|
|
|
+ shadowMode: 'Shadow Mode:',
|
|
|
+ shadowDefault: 'Default',
|
|
|
+ shadowCustom: 'Custom',
|
|
|
+ opacity: 'Opacity:',
|
|
|
+ inputOpacityTip: 'Enter a value between 0.5-1',
|
|
|
+ brightnessRange: 'Brightness Range:',
|
|
|
+ inputBrightnessTip: 'Enter a value between 200-255',
|
|
|
+ customPadding800: '800 Image Custom Padding:',
|
|
|
+ inputPaddingTip: 'Enter an integer between 0-500',
|
|
|
+ flip800: 'Flip 800 Image:',
|
|
|
+ color800: '800 Image Color Config:',
|
|
|
+ productType: 'Product Type:',
|
|
|
+ defaultCutout: 'Default Cutout Mode:',
|
|
|
+ deviceSpeed: 'Device Speed:',
|
|
|
+ speedFast: 'Fast',
|
|
|
+ speedMedium: 'Medium',
|
|
|
+ speedSlow: 'Slow',
|
|
|
+ },
|
|
|
+
|
|
|
+ // OTA/版本更新
|
|
|
+ ota: {
|
|
|
+ currentVersion: 'Current Version:',
|
|
|
+ status: 'Status:',
|
|
|
+ latest: 'You are on the latest version',
|
|
|
+ newVersion: 'New version available',
|
|
|
+ downloadUpdate: 'Download Update',
|
|
|
+ changelog: 'Changelog:',
|
|
|
+ historyVersions: 'Version History',
|
|
|
+ versionNumber: 'Version',
|
|
|
+ releaseDate: 'Release Date',
|
|
|
+ description: 'Description',
|
|
|
+ operation: 'Operation',
|
|
|
+ versionDetail: 'Version Details',
|
|
|
+ downloading: 'Downloading',
|
|
|
+ downloadFailed: 'Download failed',
|
|
|
+ noDetail: 'No details available',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 过期页
|
|
|
+ expired: {
|
|
|
+ title: 'Enterprise Account Expired',
|
|
|
+ expiredMsg: 'Your enterprise account has expired and cannot continue using the system.',
|
|
|
+ contactAdmin: 'Contact Admin',
|
|
|
+ contactMsg: 'Please contact administrator via:\n\nPhone: 400-xxx-xxxx\nEmail: admin@company.com\n\nOr scan QR code below to add support WeChat',
|
|
|
+ relogin: 'Relogin',
|
|
|
+ gotIt: 'Got It',
|
|
|
+ logoutFailed: 'Logout failed, please retry',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 开发者页
|
|
|
+ developer: {
|
|
|
+ title: 'Device Setup',
|
|
|
+ tabSetting: 'Settings',
|
|
|
+ tabMCU: 'MCU Config',
|
|
|
+ tabRS485: 'RS485 Debug',
|
|
|
+ cameraSetting: 'Camera Settings',
|
|
|
+ turntableSetting: 'Turntable Settings',
|
|
|
+ flipServo: 'Flip Servo',
|
|
|
+ cameraHeight: 'Camera Height (mm):',
|
|
|
+ cameraAngle: 'Camera Angle (deg):',
|
|
|
+ angleOffset: 'Angle Offset (deg):',
|
|
|
+ frontBackOffset: 'Front/Back Offset:',
|
|
|
+ middlePos: 'Middle Position:',
|
|
|
+ highPos: 'High Position:',
|
|
|
+ riseSpeed: 'Rise Speed:',
|
|
|
+ fallSpeed: 'Fall Speed:',
|
|
|
+ setValue: 'Set',
|
|
|
+ minMaxTip: 'Min {min}, max {max}',
|
|
|
+ valueRangeTip: '{name} value must be between {min} and {max}',
|
|
|
+ deviceInit: 'Device Init',
|
|
|
+ readOffset: 'Read Offset & Run',
|
|
|
+ allSet: 'Set All',
|
|
|
+ readConfig: 'Read Config',
|
|
|
+ setConfig: 'Set Config',
|
|
|
+ setSuccess: 'Set Successfully',
|
|
|
+ setFailed: 'Set Failed',
|
|
|
+ readFirst: 'Please get device parameters first',
|
|
|
+ sendCmd: 'Send',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 菜单项
|
|
|
+ menu: {
|
|
|
+ setting: 'Settings',
|
|
|
+ generateDir: 'Generated Images',
|
|
|
+ switchMode: 'Switch Mode',
|
|
|
+ history: 'History',
|
|
|
+ modelImage: 'Model Image',
|
|
|
+ sceneImage: 'Scene Image',
|
|
|
+ generateVideo: 'Generate Video',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 模板相关
|
|
|
+ tpl: {
|
|
|
+ addCanvas: 'Add Canvas',
|
|
|
+ editCanvas: 'Edit Canvas',
|
|
|
+ normalCanvas: 'Normal canvas, editable content',
|
|
|
+ modelCanvas: 'Model placeholder, replaced during generation',
|
|
|
+ sceneCanvas: 'Scene placeholder, replaced during generation',
|
|
|
+ modeDefault: 'Default mode, one canvas per goods number',
|
|
|
+ modeSingle: 'One canvas per goods number, containing images of different angles',
|
|
|
+ modeMultiple: 'Multiple goods numbers per canvas, containing images of same angle',
|
|
|
+ editing: 'Editing',
|
|
|
+ switchCanvas: 'Switch Canvas',
|
|
|
+ layerImage: 'Image',
|
|
|
+ layerText: 'Text',
|
|
|
+ layerGroup: 'Group',
|
|
|
+ layerDynamic: 'Dynamic',
|
|
|
+ layerShow: 'Show',
|
|
|
+ layerHide: 'Hide',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 商品字段
|
|
|
+ goods: {
|
|
|
+ color: 'Color',
|
|
|
+ goodsArtNo: 'Goods No.',
|
|
|
+ designConcept: 'Design Concept',
|
|
|
+ title: 'Title',
|
|
|
+ styleNo: 'Style No.',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 状态
|
|
|
+ status: {
|
|
|
+ processing: 'Processing',
|
|
|
+ completed: 'Completed',
|
|
|
+ failed: 'Failed',
|
|
|
+ pending: 'Pending',
|
|
|
+ connected: 'Connected',
|
|
|
+ disconnected: 'Disconnected',
|
|
|
+ allFailed: 'All goods generation failed',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 相机配置
|
|
|
+ cameraConfig: {
|
|
|
+ bindCamera: 'Bind Camera:',
|
|
|
+ selectCamera: 'Select Camera',
|
|
|
+ refresh: 'Refresh',
|
|
|
+ photoISO: 'Photo ISO:',
|
|
|
+ previewISO: 'Preview ISO:',
|
|
|
+ select: 'Select',
|
|
|
+ pointLabel: 'Point {point}',
|
|
|
+ connected: 'Camera Connected',
|
|
|
+ notConnected: 'Camera Disconnected',
|
|
|
+ notSet: 'Camera Not Set',
|
|
|
+ isoMustPositive: '{name} must be greater than 0',
|
|
|
+ selectISO: 'Please select {name}',
|
|
|
+ cameraConnected: 'Camera connection status updated',
|
|
|
+ noCameraList: 'No camera list found',
|
|
|
+ refreshFailed: 'Refresh failed, please retry',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 充值
|
|
|
+ recharge: {
|
|
|
+ remainingCoins: 'Remaining Coins:',
|
|
|
+ recharge: 'Recharge',
|
|
|
+ rechargeTitle: 'Recharge Coins',
|
|
|
+ coinTip: '(Video generation requires separate coin payment)',
|
|
|
+ loading: 'Loading, please wait...',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 详情页
|
|
|
+ photoDetail2: {
|
|
|
+ selectTemplate: 'Select Detail Template',
|
|
|
+ mainImageLogo: 'Main Image Logo',
|
|
|
+ clickOrDragUpload: 'Click or drag to upload',
|
|
|
+ supportPngJpg: 'PNG, JPG formats supported',
|
|
|
+ logoFileNotExist: 'Logo file not found or failed to load. Please re-upload.',
|
|
|
+ reupload: 'Re-upload',
|
|
|
+ preview: 'Preview',
|
|
|
+ dataPrep: 'Detail Data Preparation',
|
|
|
+ excelUpload: 'Excel Upload',
|
|
|
+ systemIntegration: 'System Integration',
|
|
|
+ clickSelectFile: 'Click to select file',
|
|
|
+ fileSelected: 'File Selected',
|
|
|
+ downloadExcelTemplate: 'Download General Product Data Template',
|
|
|
+ forNonCustomDetail: 'For non-custom detail page product data',
|
|
|
+ oneKeyPublish: 'One-Click Publish',
|
|
|
+ domesticEcommerce: 'Domestic Platforms:',
|
|
|
+ crossBorderEcommerce: 'Cross-border Platforms:',
|
|
|
+ startGenerate: 'Start Generate',
|
|
|
+ processingProgress: 'Processing Progress',
|
|
|
+ openFolder: 'Open Folder',
|
|
|
+ viewDetails: 'View',
|
|
|
+ edit: 'Edit',
|
|
|
+ delete: 'Delete',
|
|
|
+ downloadExcelTemplate2: 'Download Excel Template',
|
|
|
+ selectTemplateFirst: 'Please select Detail Generation first, then select a template',
|
|
|
+ templateRequires: 'This template requires {count} standard angle images: {order}. Please ensure high image quality and clean background.',
|
|
|
+ pleaseSelectService: 'Please select service content',
|
|
|
+ pleaseSelectMaleFemaleModel: 'Please select both male and female models',
|
|
|
+ pleaseSelectMaleModel: 'Please select male model',
|
|
|
+ pleaseSelectFemaleModel: 'Please select female model',
|
|
|
+ pleaseSetScenePrompt: 'Please set scene prompt',
|
|
|
+ pleaseUploadGoodsData: 'Please upload product data',
|
|
|
+ logoLoadError: 'Logo failed to load or file deleted. Please re-upload.',
|
|
|
+ processing: 'Processing, please wait',
|
|
|
+ allGenerateSuccess: 'All generated successfully',
|
|
|
+ partGenerateFailed: 'Some goods failed to generate',
|
|
|
+ allGenerateFailed: 'All goods generation failed',
|
|
|
+ logoPreview: 'Logo Preview',
|
|
|
+ sceneGenerate: 'Scene Generation',
|
|
|
+ modelGenerate: 'Model Generation',
|
|
|
+ detailGenerate: 'Detail Generation',
|
|
|
+ addCustomTemplate: 'Add Custom Template',
|
|
|
+ detailTemplateCustom: 'Detail Template Custom',
|
|
|
+ functionDeveloping: 'Feature developing',
|
|
|
+ whiteBgExport: 'White Background Export',
|
|
|
+ productAlbum: 'Product Album',
|
|
|
+ whiteBgExportStarted: 'White background export tool launched',
|
|
|
+ productAlbumStarted: 'Product album tool launched',
|
|
|
+ deleteTemplateConfirm: 'Are you sure you want to delete custom template "{name}"?',
|
|
|
+ deleteSuccess: 'Deleted successfully',
|
|
|
+ deleteFailed: 'Delete failed',
|
|
|
+ goodsNo: 'Goods No.',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 高级配置
|
|
|
+ seniorDetail: {
|
|
|
+ title: 'Main Image & Detail Advanced Config',
|
|
|
+ cutoutAndGoodsGenerate: 'Image Cutout & Goods Image Generation',
|
|
|
+ cutoutTip1: 'Please confirm the image sequence from shooting, ensuring all images follow the same order.',
|
|
|
+ cutoutTip2: 'Separate with Chinese/English commas.',
|
|
|
+ cutoutTip3: 'Do not rename images, otherwise detail pages cannot be generated.',
|
|
|
+ cutoutTip4: 'Available image names: Top View, Side View, Heel View, Sole, Insole',
|
|
|
+ goodsFolder: 'Goods Folder:',
|
|
|
+ selectGoodsFolder: 'Select goods folder',
|
|
|
+ selectTargetFolder: 'Select Target Folder',
|
|
|
+ selectGoodsParentFolder: 'Select parent folder of goods',
|
|
|
+ cutoutMode: 'Cutout Mode:',
|
|
|
+ normalMode: 'Normal Mode',
|
|
|
+ refinedCutout: 'Refined Cutout',
|
|
|
+ detailAdvancedConfig: 'Detail Advanced Config',
|
|
|
+ imageOrder: 'Image Order:',
|
|
|
+ inputImageOrder: 'Enter image order',
|
|
|
+ imageOrderExplain: 'Explain',
|
|
|
+ sameStyleCheck: 'Same Style Check:',
|
|
|
+ sameStyleMustComplete: 'Same style goods must have complete numbers',
|
|
|
+ specifyPageModify: 'Specify Page Modification:',
|
|
|
+ inputSpecifyPage: 'Enter page to modify separately, example: 4:1 (template number: first image)',
|
|
|
+ specifyPageExplain: 'Explain',
|
|
|
+ saveConfig: 'Save Config',
|
|
|
+ startProcess: 'Start Process',
|
|
|
+ allProcessComplete: 'All processing complete',
|
|
|
+ openDir: 'Open Directory',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 加载弹窗
|
|
|
+ loadingDialog: {
|
|
|
+ processing: 'Processing, please wait...',
|
|
|
+ processComplete: 'Done. Click to open output folder',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 编辑行
|
|
|
+ editRow: {
|
|
|
+ title: 'Parameter Value Edit',
|
|
|
+ actionNameChangeTip: 'Changing action name may cause custom template generation to fail!',
|
|
|
+ actionName: 'Action Name',
|
|
|
+ shotPoint: 'Shot Point',
|
|
|
+ selectPoint: 'Select Point',
|
|
|
+ pointLabel: 'Point {point}',
|
|
|
+ takePhoto: 'Take Photo',
|
|
|
+ photo: 'Photo',
|
|
|
+ noPhoto: 'No Photo',
|
|
|
+ cameraHeight: 'Camera Height (mm)',
|
|
|
+ cameraAngle: 'Camera Angle',
|
|
|
+ turntablePosition: 'Turntable Position',
|
|
|
+ turntableAngle: 'Turntable Angle',
|
|
|
+ shoeFlip: 'Shoe Flip',
|
|
|
+ flip: 'Flip',
|
|
|
+ noFlip: 'No Flip',
|
|
|
+ testFlip: 'Test Flip',
|
|
|
+ ledSwitch: 'LED Switch',
|
|
|
+ off: 'Off',
|
|
|
+ on: 'On',
|
|
|
+ focusCount: 'Focus Count',
|
|
|
+ preDelay: 'Pre-Shot Delay (s)',
|
|
|
+ postDelay: 'Post-Shot Delay (s)',
|
|
|
+ minMaxTip: 'Min {min}, max {max}',
|
|
|
+ cancel: 'Cancel',
|
|
|
+ run: 'Run',
|
|
|
+ saveClose: 'Save & Close',
|
|
|
+ pleaseInputActionName: 'Please enter action name',
|
|
|
+ pleaseSelectPoint: 'Please select shot point',
|
|
|
+ saveSuccess: 'Saved successfully',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 硬件检测
|
|
|
+ hardwareCheck: {
|
|
|
+ title: 'Hardware Check',
|
|
|
+ checkingHardware: 'Initializing hardware check......',
|
|
|
+ hardwareCheckComplete: 'Hardware check complete',
|
|
|
+ hardwareCheckFailed: 'Hardware check initialization failed',
|
|
|
+ selfCheck: 'Self Check',
|
|
|
+ checkTip1: 'Check if fill light power and connectors are properly connected.',
|
|
|
+ checkTip2: 'Check if the infrared device is displaying normally.',
|
|
|
+ reCheck: 'Recheck',
|
|
|
+ viewDeviceStatus: 'View Device Status',
|
|
|
+ checkSuccessContinue: 'Check successful, continue!',
|
|
|
+ deviceStatus: 'Device Status',
|
|
|
+ cancel: 'Cancel',
|
|
|
+ refresh: 'Refresh',
|
|
|
+ getStatusFailed: 'Failed to get device status',
|
|
|
+ getStatusTimeout: 'Device status request timeout',
|
|
|
+ statusNotInit: 'Not Initialized',
|
|
|
+ statusMoving: 'Moving',
|
|
|
+ statusStopped: 'Stopped',
|
|
|
+ statusOffline: 'Offline',
|
|
|
+ statusBlocked: 'Blocked',
|
|
|
+ statusUnknown: 'Unknown',
|
|
|
+ cameraHeightStatus: 'Camera Height Status',
|
|
|
+ cameraAngleStatus: 'Camera Angle Status',
|
|
|
+ turntableStatus: 'Turntable Status',
|
|
|
+ turntableMoveStatus: 'Turntable Position Status',
|
|
|
+ flipBoardStatus: 'Flip Board Status',
|
|
|
+ },
|
|
|
+
|
|
|
+ // 拍摄页面底部
|
|
|
+ shot: {
|
|
|
+ clickToStartCamera: 'Tap screen to start camera',
|
|
|
+ initHardware: 'Initializing camera hardware......',
|
|
|
+ progress: 'Checking up to',
|
|
|
+ },
|
|
|
+
|
|
|
+}
|