701 lines
23 KiB
TypeScript
701 lines
23 KiB
TypeScript
export default {
|
|
// Common
|
|
common: {
|
|
confirm: 'Confirm',
|
|
cancel: 'Cancel',
|
|
close: 'Close',
|
|
delete: 'Delete',
|
|
edit: 'Edit',
|
|
save: 'Save',
|
|
add: 'Add',
|
|
back: 'Back',
|
|
next: 'Next',
|
|
previous: 'Previous',
|
|
loading: 'Loading...',
|
|
noData: 'No Data',
|
|
success: 'Success',
|
|
error: 'Error',
|
|
warning: 'Warning',
|
|
info: 'Information',
|
|
search: 'Search',
|
|
copy: 'Copy',
|
|
uploadSuccess: 'Upload successful',
|
|
uploadFailed: 'Upload failed',
|
|
copySuccess: 'Copy successful',
|
|
copyFailed: 'Copy failed',
|
|
deleteSuccess: 'Delete successful',
|
|
deleteFailed: 'Delete failed',
|
|
downloadSuccess: 'Download successful',
|
|
downloadFailed: 'Download failed',
|
|
shareSuccess: 'Share successful',
|
|
shareFailed: 'Share failed',
|
|
expiredFile: 'File has expired',
|
|
fileNotFound: 'File not found',
|
|
networkError: 'Network error',
|
|
unknownError: 'Unknown error',
|
|
invalidFileType: 'Invalid file type',
|
|
fileTooLarge: 'File too large',
|
|
uploadCanceled: 'Upload canceled',
|
|
processing: 'Processing',
|
|
pleaseWait: 'Please wait',
|
|
fileDetails: 'File Details',
|
|
enabled: 'Enabled',
|
|
disabled: 'Disabled',
|
|
minute: 'minute',
|
|
files: 'files',
|
|
second: 'second',
|
|
hour: 'hour',
|
|
day: 'day',
|
|
times: 'times',
|
|
appName: 'FileCodeBox - File Transfer',
|
|
appDescription: 'Ready-to-use file transfer system'
|
|
},
|
|
|
|
// Admin module
|
|
admin: {
|
|
logout: 'Logout',
|
|
dashboard: {
|
|
title: 'Dashboard',
|
|
totalFiles: 'Total Files',
|
|
storageSpace: 'Storage Space',
|
|
todayShares: 'Today Shares',
|
|
totalRetrievals: 'Total Retrievals',
|
|
activeFiles: 'Active files: {count}',
|
|
todayIncrease: 'Today added: {count}',
|
|
yesterdayShares: 'Yesterday: {count}',
|
|
serverUptime: 'Uptime',
|
|
refresh: 'Refresh',
|
|
fileHealth: 'File Health',
|
|
fileHealthDesc: 'Real file records grouped by availability, expiry, and type.',
|
|
activeFileRatio: 'Active Ratio',
|
|
fileShareRatio: 'File Ratio',
|
|
textShareRatio: 'Text Ratio',
|
|
binaryFiles: '{count} file shares',
|
|
textShares: '{count} text shares',
|
|
expiredFiles: 'Expired Files',
|
|
needCleanup: 'Clean up in file management',
|
|
chunkedFiles: 'Chunked Files',
|
|
storagePolicy: 'Storage & Upload Policy',
|
|
storagePolicyDesc: 'Current settings that affect upload behavior.',
|
|
storageBackend: 'Storage Backend',
|
|
singleFileLimit: 'Single File Limit',
|
|
guestUpload: 'Guest Upload',
|
|
maxSaveTime: 'Max Retention',
|
|
noSaveLimit: 'Unlimited',
|
|
todayCapacityReference: 'Today Size / Single File Limit',
|
|
fileTypeDistribution: 'Type Distribution',
|
|
textType: 'Text',
|
|
recentFiles: 'Recent Shares',
|
|
recentFilesDesc: 'Recently created share records for quick status checks.',
|
|
available: 'Available',
|
|
table: {
|
|
file: 'File',
|
|
size: 'Size',
|
|
usage: 'Retrievals',
|
|
status: 'Status'
|
|
}
|
|
},
|
|
fileManage: {
|
|
title: 'File Management'
|
|
},
|
|
settings: {
|
|
title: 'System Settings',
|
|
basicSettings: 'General',
|
|
websiteInfo: 'Site Information',
|
|
websiteName: 'Site Name',
|
|
websiteDescription: 'Site Description',
|
|
siteName: 'Site Name',
|
|
adminPassword: 'Admin Password',
|
|
passwordPlaceholder: 'Enter new password to change',
|
|
passwordNote: 'Leave empty to keep current',
|
|
keywords: 'SEO Keywords',
|
|
themeSelection: 'Theme',
|
|
robotsFile: 'Robots.txt Configuration',
|
|
notificationSettings: 'Notifications',
|
|
notificationTitle: 'Announcement Title',
|
|
notificationContent: 'Announcement Content',
|
|
storageSettings: 'Storage',
|
|
storagePath: 'Storage Path',
|
|
storagePathPlaceholder: 'Leave empty for default path',
|
|
storageMethod: 'Storage Type',
|
|
localStorage: 'Local Storage',
|
|
s3Storage: 'S3 Object Storage',
|
|
webdavStorage: 'WebDAV Storage',
|
|
chunkUploadNote: 'Chunked Upload (experimental, better for large files)',
|
|
s3AccessKeyId: 'Access Key ID',
|
|
s3SecretAccessKey: 'Secret Access Key',
|
|
s3BucketName: 'Bucket Name',
|
|
s3EndpointUrl: 'Endpoint URL',
|
|
s3RegionName: 'Region Name',
|
|
s3SignatureVersion: 'Signature Version',
|
|
s3Hostname: 'Custom Domain',
|
|
s3v2: 'S3v2',
|
|
s3v4: 'S3v4',
|
|
autoPlaceholder: 'Auto-detect',
|
|
enabled: 'Enabled',
|
|
disabled: 'Disabled',
|
|
webdavUrl: 'Enter WebDAV server URL',
|
|
webdavUsername: 'Enter WebDAV username',
|
|
webdavPassword: 'Enter WebDAV password',
|
|
webdavUrlPlaceholder: 'Enter WebDAV server URL',
|
|
webdavUsernamePlaceholder: 'Enter WebDAV username',
|
|
webdavPasswordPlaceholder: 'Enter WebDAV password',
|
|
enableProxy: 'Enable Download Proxy',
|
|
uploadLimits: 'Upload Settings',
|
|
uploadRateLimit: 'Time Window (limit uploads within this period)',
|
|
uploadPerMinute: 'Time Window (limit uploads within this period)',
|
|
minute: 'min',
|
|
uploadCountLimit: 'Max Files Allowed (within the time window)',
|
|
files: 'files',
|
|
fileSizeLimit: 'Max File Size',
|
|
expirationMethod: 'Expiration Options',
|
|
expirationType: 'Expiration Options',
|
|
expiration: {
|
|
day: 'Days',
|
|
hour: 'Hours',
|
|
minute: 'Minutes',
|
|
forever: 'Never Expire',
|
|
count: 'Download Count'
|
|
},
|
|
maxSaveTime: 'Max Retention Period',
|
|
timeUnits: {
|
|
second: 'sec',
|
|
minute: 'min',
|
|
hour: 'hr',
|
|
day: 'day'
|
|
},
|
|
guestUpload: 'Allow Guest Uploads',
|
|
errorLimits: 'Access Protection',
|
|
errorRateLimit: 'Detection Window (count errors within this period)',
|
|
errorPerMinute: 'Detection Window (count errors within this period)',
|
|
errorCountLimit: 'Max Errors Allowed (block after exceeding)',
|
|
times: 'times',
|
|
saveChanges: 'Save Settings',
|
|
fileSizeUnits: {
|
|
kb: 'KB',
|
|
mb: 'MB',
|
|
gb: 'GB'
|
|
}
|
|
}
|
|
},
|
|
|
|
// Navigation
|
|
nav: {
|
|
sendFile: 'Send File',
|
|
retrieveFile: 'Retrieve',
|
|
fileRecords: 'File Records'
|
|
},
|
|
|
|
// Retrieve page
|
|
retrieve: {
|
|
title: 'File Retrieval',
|
|
codeInput: {
|
|
placeholder: 'Enter 5-digit retrieval code',
|
|
label: 'Retrieval Code'
|
|
},
|
|
submit: 'Retrieve',
|
|
needSendFile: 'Need to send a file? Click here',
|
|
recordsDrawer: 'Retrieval Records',
|
|
messages: {
|
|
invalidCode: 'Please enter a 5-digit retrieval code',
|
|
retrieveSuccess: 'File retrieved successfully',
|
|
invalidCodeError: 'Invalid retrieval code',
|
|
retrieveFailure: 'Failed to retrieve file: ',
|
|
networkError: 'Retrieval failed, please try again later: ',
|
|
unknownError: 'Unknown error'
|
|
}
|
|
},
|
|
|
|
// Send page
|
|
send: {
|
|
title: 'File Send',
|
|
sendText: 'Send Text',
|
|
uploadArea: {
|
|
dragText: 'Drag files here or',
|
|
clickText: 'click to select files',
|
|
textInput: 'Enter text to send here...',
|
|
placeholder: 'Click or drag files here to upload',
|
|
description: 'Supports various common formats',
|
|
descriptionWithLimit: 'Supports common formats, up to {size}',
|
|
retry: 'Retry',
|
|
selectedFiles: '{count} files selected',
|
|
status: {
|
|
initializing: 'Preparing upload...',
|
|
uploading: 'Uploading files...',
|
|
confirming: 'Confirming upload...',
|
|
success: 'Upload complete!'
|
|
}
|
|
},
|
|
submit: 'Secure Send',
|
|
submitting: 'Sending...',
|
|
needRetrieveFile: 'Need to retrieve? Click here',
|
|
sendRecords: 'Send Records',
|
|
secureEncryption: 'Secure Encryption',
|
|
workspace: {
|
|
uploadLimit: 'Single File Limit',
|
|
uploadMode: 'Upload Mode',
|
|
standardMode: 'Standard',
|
|
chunkMode: 'Chunked',
|
|
guestPolicy: 'Guest Upload',
|
|
guestOpen: 'Allowed',
|
|
guestClosed: 'Disabled',
|
|
currentTask: 'Current Task',
|
|
awaitingFile: 'Waiting for files',
|
|
fileReady: '{count} files ready',
|
|
textDraft: 'Text draft, {count} chars',
|
|
payload: 'Payload',
|
|
expirationPreview: 'Expiration',
|
|
security: 'Security',
|
|
latestRecord: 'Latest Send',
|
|
noRecord: 'No records yet',
|
|
copyLink: 'Copy Link',
|
|
viewDetail: 'View Detail',
|
|
historyTitle: 'Send History',
|
|
historyCount: '{count} records',
|
|
openRecords: 'Open send records'
|
|
},
|
|
fileDetails: 'File Details',
|
|
expirationMethod: 'Expiration Method',
|
|
expiration: {
|
|
day: 'By Day',
|
|
hour: 'By Hour',
|
|
minute: 'By Minute',
|
|
forever: 'Forever',
|
|
count: 'By Count',
|
|
label: 'Expiration Time',
|
|
placeholders: {
|
|
days: 'Enter days',
|
|
hours: 'Enter hours',
|
|
minutes: 'Enter minutes',
|
|
count: 'Enter view count',
|
|
forever: 'Forever',
|
|
default: 'Enter value'
|
|
},
|
|
units: {
|
|
days: 'days',
|
|
hours: 'hours',
|
|
minutes: 'minutes',
|
|
times: 'times',
|
|
forever: 'Forever'
|
|
}
|
|
},
|
|
time: {
|
|
day: 'By Day',
|
|
hour: 'By Hour',
|
|
minute: 'By Minute',
|
|
forever: 'Forever',
|
|
count: 'By Count'
|
|
},
|
|
messages: {
|
|
selectFile: 'Please select a file to upload',
|
|
enterText: 'Please enter text to send',
|
|
enterExpirationValue: 'Please enter expiration value',
|
|
expirationTooLong: 'Expiration time cannot exceed {days} days',
|
|
sendSuccess: 'File sent successfully! Retrieve code: {code}',
|
|
initChunkUploadFailed: 'Failed to initialize chunk upload',
|
|
chunkUploadFailed: 'Chunk {index} upload failed',
|
|
completeUploadFailed: 'Failed to complete upload',
|
|
uploadFailed: 'Upload failed, please try again later',
|
|
guestUploadDisabled: 'Guest upload feature is disabled',
|
|
fileSizeExceeded: 'File size exceeds limit ({size})',
|
|
serverError: 'Server response error',
|
|
sendFailed: 'Send failed, please try again later',
|
|
expiresAfterCount: 'Expires after {count} times',
|
|
expiresAt: 'Expires at {date}',
|
|
emptyFileError: 'Cannot read empty file',
|
|
fileAddedFromClipboard: 'File added from clipboard: {filename}',
|
|
fileProcessingFailed: 'File processing failed',
|
|
expiresAfter: 'Expires after {value} {unit}'
|
|
}
|
|
},
|
|
|
|
// File records
|
|
fileRecord: {
|
|
filename: 'Filename',
|
|
size: 'Size',
|
|
date: 'Date',
|
|
code: 'Code',
|
|
actions: 'Actions',
|
|
download: 'Download',
|
|
viewDetails: 'View Details',
|
|
deleteRecord: 'Delete Record',
|
|
preview: 'Preview',
|
|
copyContent: 'Copy Content',
|
|
contentCopied: 'Content copied to clipboard',
|
|
copyFailed: 'Copy failed, please try again'
|
|
},
|
|
|
|
// File Detail Modal
|
|
fileDetail: {
|
|
title: 'File Details',
|
|
content: 'File Content',
|
|
previewContent: 'Preview Content',
|
|
download: 'Click to Download',
|
|
qrCode: 'Retrieve QR Code',
|
|
scanQrCode: 'Scan QR code for quick retrieval'
|
|
},
|
|
|
|
// Content Preview Modal
|
|
contentPreview: {
|
|
title: 'Content Preview'
|
|
},
|
|
|
|
// File Management
|
|
fileManage: {
|
|
title: 'File Management',
|
|
searchPlaceholder: 'Search file name, description...',
|
|
allFiles: 'All Files',
|
|
editFileInfo: 'Edit File Information',
|
|
saveChanges: 'Save Changes',
|
|
viewText: 'View',
|
|
textPreview: 'Text Preview',
|
|
copyText: 'Copy Text',
|
|
copySuccess: 'Text copied to clipboard',
|
|
copyFailed: 'Copy failed, please try again',
|
|
charCount: '{count} characters',
|
|
headers: {
|
|
code: 'Retrieve Code',
|
|
name: 'Name',
|
|
size: 'Size',
|
|
description: 'Description',
|
|
expiration: 'Expiration',
|
|
actions: 'Actions'
|
|
},
|
|
form: {
|
|
code: 'Retrieve Code',
|
|
codePlaceholder: 'Enter retrieve code',
|
|
filename: 'File Name',
|
|
filenamePlaceholder: 'Enter file name',
|
|
suffix: 'File Extension',
|
|
suffixPlaceholder: 'Enter file extension',
|
|
downloadLimit: 'Download Limit',
|
|
downloadLimitPlaceholder: 'Enter download limit'
|
|
}
|
|
},
|
|
|
|
// Side drawer
|
|
drawer: {
|
|
noRecords: 'No records'
|
|
},
|
|
|
|
// Admin pages
|
|
manage: {
|
|
settings: {
|
|
title: 'System Settings',
|
|
basicSettings: 'General',
|
|
websiteInfo: 'Site Information',
|
|
websiteName: 'Site Name',
|
|
websiteDescription: 'Site Description',
|
|
siteName: 'Site Name',
|
|
adminPassword: 'Admin Password',
|
|
passwordPlaceholder: 'Enter new password to change',
|
|
passwordNote: 'Leave empty to keep current',
|
|
keywords: 'SEO Keywords',
|
|
themeSelection: 'Theme',
|
|
notificationSettings: 'Notifications',
|
|
notificationTitle: 'Announcement Title',
|
|
notificationContent: 'Announcement Content',
|
|
storageSettings: 'Storage',
|
|
storagePath: 'Storage Path',
|
|
storagePathPlaceholder: 'Leave empty for default path',
|
|
storageMethod: 'Storage Type',
|
|
localStorage: 'Local Storage',
|
|
s3Storage: 'S3 Object Storage',
|
|
webdavStorage: 'WebDAV Storage',
|
|
chunkUploadNote: 'Chunked Upload (experimental, better for large files)',
|
|
enabled: 'Enabled',
|
|
disabled: 'Disabled',
|
|
webdavUrl: 'Enter WebDAV server URL',
|
|
webdavUsername: 'Enter WebDAV username',
|
|
webdavPassword: 'Enter WebDAV password',
|
|
webdavUrlPlaceholder: 'Enter WebDAV server URL',
|
|
webdavUsernamePlaceholder: 'Enter WebDAV username',
|
|
webdavPasswordPlaceholder: 'Enter WebDAV password',
|
|
enableProxy: 'Enable Download Proxy',
|
|
uploadLimits: 'Upload Settings',
|
|
uploadRateLimit: 'Time Window (limit uploads within this period)',
|
|
uploadPerMinute: 'Time Window (limit uploads within this period)',
|
|
minute: 'min',
|
|
uploadCountLimit: 'Max Files Allowed (within the time window)',
|
|
files: 'files',
|
|
fileSizeLimit: 'Max File Size',
|
|
expirationMethod: 'Expiration Options',
|
|
expirationType: 'Expiration Options',
|
|
expiration: {
|
|
day: 'Days',
|
|
hour: 'Hours',
|
|
minute: 'Minutes',
|
|
forever: 'Never Expire',
|
|
count: 'Download Count'
|
|
},
|
|
maxSaveTime: 'Max Retention Period',
|
|
timeUnits: {
|
|
second: 'sec',
|
|
minute: 'min',
|
|
hour: 'hr',
|
|
day: 'day'
|
|
},
|
|
guestUpload: 'Allow Guest Uploads',
|
|
errorLimits: 'Access Protection',
|
|
errorRateLimit: 'Detection Window (count errors within this period)',
|
|
errorPerMinute: 'Detection Window (count errors within this period)',
|
|
errorCountLimit: 'Max Errors Allowed (block after exceeding)',
|
|
times: 'times',
|
|
fileSizeUnits: {
|
|
kb: 'KB',
|
|
mb: 'MB',
|
|
gb: 'GB'
|
|
},
|
|
saveChanges: 'Save Settings',
|
|
refreshConfig: 'Refresh Config',
|
|
refreshing: 'Refreshing',
|
|
saving: 'Saving',
|
|
unsavedChanges: 'Unsaved configuration changes',
|
|
allChangesSaved: 'All configuration changes are saved',
|
|
refreshBlocked: 'Save current changes before refreshing'
|
|
},
|
|
systemSettings: {
|
|
title: 'System Settings',
|
|
basicSettings: 'General',
|
|
websiteInfo: 'Site Information',
|
|
websiteName: 'Site Name',
|
|
websiteDescription: 'Site Description',
|
|
adminPassword: 'Admin Password',
|
|
passwordPlaceholder: 'Enter new password to change',
|
|
passwordNote: 'Leave empty to keep current',
|
|
keywords: 'SEO Keywords',
|
|
themeSelection: 'Theme',
|
|
notificationSettings: 'Notifications',
|
|
notificationTitle: 'Announcement Title',
|
|
notificationContent: 'Announcement Content',
|
|
storageSettings: 'Storage',
|
|
storagePath: 'Storage Path',
|
|
storagePathPlaceholder: 'Leave empty for default path',
|
|
storageMethod: 'Storage Type',
|
|
localStorage: 'Local Storage',
|
|
s3Storage: 'S3 Object Storage',
|
|
webdavStorage: 'WebDAV Storage',
|
|
chunkUploadNote: 'Chunked Upload (experimental, better for large files)',
|
|
enabled: 'Enabled',
|
|
disabled: 'Disabled',
|
|
webdavUrl: 'Enter WebDAV server URL',
|
|
webdavUsername: 'Enter WebDAV username',
|
|
webdavPassword: 'Enter WebDAV password',
|
|
enableProxy: 'Enable Download Proxy',
|
|
uploadLimits: 'Upload Settings',
|
|
uploadRateLimit: 'Time Window (limit uploads within this period)',
|
|
minute: 'min',
|
|
uploadCountLimit: 'Max Files Allowed (within the time window)',
|
|
files: 'files',
|
|
fileSizeLimit: 'Max File Size',
|
|
expirationMethod: 'Expiration Options',
|
|
expirationMethods: {
|
|
day: 'Days',
|
|
hour: 'Hours',
|
|
minute: 'Minutes',
|
|
forever: 'Never Expire',
|
|
count: 'Download Count'
|
|
},
|
|
expiration: {
|
|
day: 'Days',
|
|
hour: 'Hours',
|
|
minute: 'Minutes',
|
|
forever: 'Never Expire',
|
|
count: 'Download Count'
|
|
},
|
|
maxSaveTime: 'Max Retention Period',
|
|
timeUnits: {
|
|
second: 'sec',
|
|
minute: 'min',
|
|
hour: 'hr',
|
|
day: 'day'
|
|
},
|
|
guestUpload: 'Allow Guest Uploads',
|
|
errorLimits: 'Access Protection',
|
|
errorRateLimit: 'Detection Window (count errors within this period)',
|
|
errorCountLimit: 'Max Errors Allowed (block after exceeding)',
|
|
times: 'times',
|
|
saveSettings: 'Save Settings',
|
|
saveSuccess: 'Settings saved successfully',
|
|
saveFailed: 'Failed to save, please try again',
|
|
getConfigFailed: 'Failed to load settings, please refresh'
|
|
},
|
|
dashboard: {
|
|
title: 'Dashboard',
|
|
totalFiles: 'Total Files',
|
|
storageSpace: 'Storage Space',
|
|
todayShares: 'Today Shares',
|
|
totalRetrievals: 'Total Retrievals',
|
|
activeFiles: 'Active files: {count}',
|
|
todayIncrease: 'Today added: {count}',
|
|
yesterdayShares: 'Yesterday: {count}',
|
|
serverUptime: 'Uptime',
|
|
refresh: 'Refresh',
|
|
fileHealth: 'File Health',
|
|
fileHealthDesc: 'Real file records grouped by availability, expiry, and type.',
|
|
activeFileRatio: 'Active Ratio',
|
|
fileShareRatio: 'File Ratio',
|
|
textShareRatio: 'Text Ratio',
|
|
binaryFiles: '{count} file shares',
|
|
textShares: '{count} text shares',
|
|
expiredFiles: 'Expired Files',
|
|
needCleanup: 'Clean up in file management',
|
|
chunkedFiles: 'Chunked Files',
|
|
storagePolicy: 'Storage & Upload Policy',
|
|
storagePolicyDesc: 'Current settings that affect upload behavior.',
|
|
storageBackend: 'Storage Backend',
|
|
singleFileLimit: 'Single File Limit',
|
|
guestUpload: 'Guest Upload',
|
|
maxSaveTime: 'Max Retention',
|
|
noSaveLimit: 'Unlimited',
|
|
todayCapacityReference: 'Today Size / Single File Limit',
|
|
fileTypeDistribution: 'Type Distribution',
|
|
textType: 'Text',
|
|
recentFiles: 'Recent Shares',
|
|
recentFilesDesc: 'Recently created share records for quick status checks.',
|
|
available: 'Available',
|
|
table: {
|
|
file: 'File',
|
|
size: 'Size',
|
|
usage: 'Retrievals',
|
|
status: 'Status'
|
|
}
|
|
},
|
|
fileManage: {
|
|
title: 'File Management',
|
|
searchPlaceholder: 'Search file name, description...',
|
|
allFiles: 'All Files',
|
|
editFileInfo: 'Edit File Info',
|
|
saveChanges: 'Save Changes',
|
|
headers: {
|
|
code: 'Code',
|
|
name: 'Name',
|
|
size: 'Size',
|
|
description: 'Description',
|
|
expiration: 'Expiration',
|
|
actions: 'Actions'
|
|
},
|
|
form: {
|
|
code: 'Code',
|
|
codePlaceholder: 'Enter code',
|
|
filename: 'File Name',
|
|
filenamePlaceholder: 'Enter file name',
|
|
suffix: 'File Suffix',
|
|
suffixPlaceholder: 'Enter file suffix',
|
|
downloadLimit: 'Download Limit',
|
|
downloadLimitPlaceholder: 'Enter download limit'
|
|
},
|
|
updateFailed: 'Update failed',
|
|
deleteFailed: 'Delete failed',
|
|
deleteConfirm: 'Delete this file? This action cannot be undone.',
|
|
loadFileListFailed: 'Failed to load file list'
|
|
},
|
|
login: {
|
|
title: 'Login',
|
|
password: 'Password',
|
|
passwordPlaceholder: 'Password',
|
|
loginButton: 'Login',
|
|
loggingIn: 'Logging in...',
|
|
invalidPassword: 'Invalid password',
|
|
passwordTooShort: 'Password must be at least 6 characters',
|
|
loginFailed: 'Login failed',
|
|
noValidToken: 'Login failed: No valid token received'
|
|
}
|
|
},
|
|
|
|
// File size units
|
|
fileSize: {
|
|
bytes: 'Bytes',
|
|
kb: 'KB',
|
|
mb: 'MB',
|
|
gb: 'GB',
|
|
tb: 'TB'
|
|
},
|
|
|
|
// Utility functions
|
|
utils: {
|
|
// Time formatting
|
|
formatTime: 'Format timestamp to readable format',
|
|
formatFileSize: 'Format file size',
|
|
formatDuration: 'Format duration',
|
|
time: {
|
|
forever: 'Forever',
|
|
day: 'day',
|
|
hour: 'hour',
|
|
minute: 'minute',
|
|
second: 'second'
|
|
},
|
|
copyToClipboard: 'Copy text to clipboard',
|
|
copyFailed: 'Copy failed:',
|
|
debounce: 'Debounce function',
|
|
throttle: 'Throttle function',
|
|
validateEmail: 'Validate email format',
|
|
validateUrl: 'Validate URL format',
|
|
generateRandomString: 'Generate random string',
|
|
deepClone: 'Deep clone object',
|
|
getFileExtension: 'Get file extension',
|
|
isMobileDevice: 'Check if mobile device',
|
|
formatNumber: 'Format number with thousand separators',
|
|
clipboard: {
|
|
title: 'Clipboard utility functions',
|
|
copyText: 'Copy text to clipboard',
|
|
copySuccess: 'Copy successful',
|
|
copyFailed: 'Copy failed, please copy manually'
|
|
}
|
|
},
|
|
|
|
// Components
|
|
components: {
|
|
pagination: {
|
|
showing: 'Showing',
|
|
to: 'to',
|
|
of: 'of',
|
|
total: 'total',
|
|
previous: 'Previous',
|
|
next: 'Next'
|
|
},
|
|
languageSwitcher: {
|
|
clickOutsideToClose: 'Click outside to close dropdown menu'
|
|
},
|
|
borderProgressBar: {
|
|
borderWidth: 'Border width',
|
|
cornerRadius: 'Corner radius',
|
|
createGradient: 'Create gradient',
|
|
drawBackground: 'Draw background',
|
|
calculateProgress: 'Calculate progress',
|
|
drawProgress: 'Draw progress'
|
|
}
|
|
},
|
|
|
|
// Miscellaneous
|
|
misc: {
|
|
emptyFileError: 'Cannot read empty file',
|
|
fileAddedFromClipboard: 'File added from clipboard: ',
|
|
fileProcessFailed: 'File processing failed',
|
|
chunkSize: 'Keep 2MB chunk size for hash calculation',
|
|
secureContext: 'If not in secure context (HTTP), return an alternative hash based on file info',
|
|
cryptoFallback: 'If crypto.subtle.digest fails, use fallback method',
|
|
generateAlternativeHash: 'Function to generate alternative hash',
|
|
fileInfoHash: 'Generate simple hash using filename, size and last modified time',
|
|
convertToHex: 'Convert to hex string and pad to 64 bits',
|
|
defaultChunkSize: 'Default chunk size is 5MB',
|
|
initChunkUpload: '1. Initialize chunk upload',
|
|
uploadChunk: '2. Upload chunk',
|
|
completeUpload: '3. Complete upload',
|
|
chunkUploadFailed: 'Chunk upload failed: ',
|
|
uploadProgressListener: 'Add upload progress listener',
|
|
noLimitCheck: 'If no limit, return true directly',
|
|
expirationValidation: 'Add expiration time validation',
|
|
chunkUploadReplacement: 'Use chunk upload to replace direct upload',
|
|
textUploadUnchanged: 'Text upload remains unchanged',
|
|
addSendRecord: 'Add new send record',
|
|
permanent: 'Permanent',
|
|
sendSuccessMessage: 'Show send success message',
|
|
resetForm: 'Reset form - only reset file and text content, keep expiration info',
|
|
showDetails: 'Show details',
|
|
autoCopyLink: 'Auto copy retrieve code link',
|
|
delayedLoading: 'Use onMounted hook to delay load non-critical resources or initialization',
|
|
nonCriticalInit: 'Place non-immediately needed initialization code here'
|
|
}
|
|
}
|