Files
ComfyUI-Lora-Manager/static/js/i18n/locales/en.js
Will Miao 29160bd6e5 feat(i18n): Implement server-side internationalization support
- Added ServerI18nManager to handle translations and locale settings on the server.
- Integrated server-side translations into templates, reducing language flashing on initial load.
- Created API endpoints for setting and getting user language preferences.
- Enhanced client-side i18n handling to work seamlessly with server-rendered content.
- Updated various templates to utilize the new translation system.
- Added mixed i18n handler to coordinate server and client translations, improving user experience.
- Expanded translation files to include initialization messages for various components.
2025-08-30 16:56:56 +08:00

416 lines
13 KiB
JavaScript

/**
* English (en) translations for LoRA Manager
*/
export const en = {
// Common terms used throughout the application
common: {
// File operations
file: 'File',
folder: 'Folder',
name: 'Name',
size: 'Size',
date: 'Date',
type: 'Type',
path: 'Path',
// File sizes
fileSize: {
zero: '0 Bytes',
bytes: 'Bytes',
kb: 'KB',
mb: 'MB',
gb: 'GB',
tb: 'TB'
},
// Actions
actions: {
save: 'Save',
cancel: 'Cancel',
delete: 'Delete',
edit: 'Edit',
copy: 'Copy',
move: 'Move',
refresh: 'Refresh',
download: 'Download',
upload: 'Upload',
search: 'Search',
filter: 'Filter',
sort: 'Sort',
select: 'Select',
selectAll: 'Select All',
deselectAll: 'Deselect All',
confirm: 'Confirm',
close: 'Close',
back: 'Back',
next: 'Next',
previous: 'Previous',
view: 'View',
preview: 'Preview',
details: 'Details',
settings: 'Settings',
help: 'Help',
about: 'About'
},
// Status messages
status: {
loading: 'Loading...',
saving: 'Saving...',
saved: 'Saved',
error: 'Error',
success: 'Success',
warning: 'Warning',
info: 'Information',
processing: 'Processing...',
completed: 'Completed',
failed: 'Failed',
cancelled: 'Cancelled',
pending: 'Pending',
ready: 'Ready'
},
// Languages
language: {
current: 'Language',
select: 'Select Language',
select_help: 'Choose your preferred language for the interface',
english: 'English',
chinese_simplified: 'Chinese (Simplified)',
chinese_traditional: 'Chinese (Traditional)',
russian: 'Russian',
german: 'German',
japanese: 'Japanese',
korean: 'Korean',
french: 'French',
spanish: 'Spanish'
}
},
// Header and navigation
header: {
appTitle: 'LoRA Manager',
navigation: {
loras: 'LoRAs',
recipes: 'Recipes',
checkpoints: 'Checkpoints',
embeddings: 'Embeddings',
statistics: 'Stats'
},
search: {
placeholder: 'Search...',
placeholders: {
loras: 'Search LoRAs...',
recipes: 'Search recipes...',
checkpoints: 'Search checkpoints...',
embeddings: 'Search embeddings...'
},
options: 'Search Options',
searchIn: 'Search In:',
notAvailable: 'Search not available on statistics page',
filters: {
filename: 'Filename',
modelname: 'Model Name',
tags: 'Tags',
creator: 'Creator',
title: 'Recipe Title',
loraName: 'LoRA Filename',
loraModel: 'LoRA Model Name'
}
},
filter: {
title: 'Filter Models',
baseModel: 'Base Model',
modelTags: 'Tags (Top 20)',
clearAll: 'Clear All Filters'
},
theme: {
toggle: 'Toggle theme',
switchToLight: 'Switch to light theme',
switchToDark: 'Switch to dark theme',
switchToAuto: 'Switch to auto theme'
}
},
// LoRAs page
loras: {
title: 'LoRA Models',
controls: {
sort: {
title: 'Sort models by...',
name: 'Name',
nameAsc: 'A - Z',
nameDesc: 'Z - A',
date: 'Date Added',
dateDesc: 'Newest',
dateAsc: 'Oldest',
size: 'File Size',
sizeDesc: 'Largest',
sizeAsc: 'Smallest'
},
refresh: {
title: 'Refresh model list',
quick: 'Quick Refresh (incremental)',
full: 'Full Rebuild (complete)'
},
fetch: 'Fetch from Civitai',
download: 'Download from URL',
bulk: 'Bulk Operations',
duplicates: 'Find Duplicates',
favorites: 'Show Favorites Only'
},
bulkOperations: {
title: 'Bulk Operations',
selected: '{count} selected',
sendToWorkflow: 'Send all selected LoRAs to workflow',
copyAll: 'Copy all selected LoRAs syntax',
refreshAll: 'Refresh CivitAI metadata for selected models',
moveAll: 'Move selected models to folder',
deleteAll: 'Delete selected models',
clear: 'Clear selection'
},
contextMenu: {
refreshMetadata: 'Refresh Civitai Data',
relinkCivitai: 'Re-link to Civitai',
copySyntax: 'Copy LoRA Syntax',
sendToWorkflowAppend: 'Send to Workflow (Append)',
sendToWorkflowReplace: 'Send to Workflow (Replace)',
openExamples: 'Open Examples Folder',
downloadExamples: 'Download Example Images',
replacePreview: 'Replace Preview',
setContentRating: 'Set Content Rating',
moveToFolder: 'Move to Folder',
excludeModel: 'Exclude Model',
deleteModel: 'Delete Model'
},
modal: {
title: 'LoRA Details',
tabs: {
examples: 'Examples',
description: 'Model Description',
recipes: 'Recipes'
},
info: {
filename: 'Filename',
modelName: 'Model Name',
baseModel: 'Base Model',
fileSize: 'File Size',
dateAdded: 'Date Added',
triggerWords: 'Trigger Words',
description: 'Description',
tags: 'Tags',
rating: 'Rating',
downloads: 'Downloads',
likes: 'Likes',
version: 'Version'
},
actions: {
copyTriggerWords: 'Copy trigger words',
copyLoraName: 'Copy LoRA name',
sendToWorkflow: 'Send to Workflow',
viewOnCivitai: 'View on Civitai',
downloadExamples: 'Download example images'
}
}
},
// Recipes page
recipes: {
title: 'LoRA Recipes',
controls: {
import: 'Import Recipe',
create: 'Create Recipe',
export: 'Export Selected',
downloadMissing: 'Download Missing LoRAs'
},
card: {
author: 'Author',
loras: '{count} LoRAs',
tags: 'Tags',
actions: {
sendToWorkflow: 'Send to Workflow',
edit: 'Edit Recipe',
duplicate: 'Duplicate Recipe',
export: 'Export Recipe',
delete: 'Delete Recipe'
}
}
},
// Checkpoints page
checkpoints: {
title: 'Checkpoint Models',
info: {
filename: 'Filename',
modelName: 'Model Name',
baseModel: 'Base Model',
fileSize: 'File Size',
dateAdded: 'Date Added'
}
},
// Embeddings page
embeddings: {
title: 'Embedding Models',
info: {
filename: 'Filename',
modelName: 'Model Name',
triggerWords: 'Trigger Words',
fileSize: 'File Size',
dateAdded: 'Date Added'
}
},
// Statistics page
statistics: {
title: 'Statistics',
overview: {
title: 'Overview',
totalLoras: 'Total LoRAs',
totalCheckpoints: 'Total Checkpoints',
totalEmbeddings: 'Total Embeddings',
totalSize: 'Total Size',
favoriteModels: 'Favorite Models'
},
charts: {
modelsByType: 'Models by Type',
modelsByBaseModel: 'Models by Base Model',
modelsBySize: 'Models by File Size',
modelsAddedOverTime: 'Models Added Over Time'
}
},
// Modals and dialogs
modals: {
delete: {
title: 'Confirm Deletion',
message: 'Are you sure you want to delete this model?',
warningMessage: 'This action cannot be undone.',
confirm: 'Delete',
cancel: 'Cancel'
},
exclude: {
title: 'Exclude Model',
message: 'Are you sure you want to exclude this model from the library?',
confirm: 'Exclude',
cancel: 'Cancel'
},
download: {
title: 'Download Model',
url: 'Model URL',
placeholder: 'Enter Civitai model URL...',
download: 'Download',
cancel: 'Cancel'
},
move: {
title: 'Move Models',
selectFolder: 'Select destination folder',
createFolder: 'Create new folder',
folderName: 'Folder name',
move: 'Move',
cancel: 'Cancel'
},
contentRating: {
title: 'Set Content Rating',
current: 'Current',
levels: {
pg: 'PG',
pg13: 'PG13',
r: 'R',
x: 'X',
xxx: 'XXX'
}
}
},
// Error messages
errors: {
general: 'An error occurred',
networkError: 'Network error. Please check your connection.',
serverError: 'Server error. Please try again later.',
fileNotFound: 'File not found',
invalidFile: 'Invalid file format',
uploadFailed: 'Upload failed',
downloadFailed: 'Download failed',
saveFailed: 'Save failed',
loadFailed: 'Load failed',
deleteFailed: 'Delete failed',
moveFailed: 'Move failed',
copyFailed: 'Copy failed',
fetchFailed: 'Failed to fetch data from Civitai',
invalidUrl: 'Invalid URL format',
missingPermissions: 'Insufficient permissions'
},
// Success messages
success: {
saved: 'Successfully saved',
deleted: 'Successfully deleted',
moved: 'Successfully moved',
copied: 'Successfully copied',
downloaded: 'Successfully downloaded',
uploaded: 'Successfully uploaded',
refreshed: 'Successfully refreshed',
exported: 'Successfully exported',
imported: 'Successfully imported'
},
// Keyboard shortcuts
keyboard: {
navigation: 'Keyboard Navigation:',
shortcuts: {
pageUp: 'Scroll up one page',
pageDown: 'Scroll down one page',
home: 'Jump to top',
end: 'Jump to bottom',
bulkMode: 'Toggle bulk mode',
search: 'Focus search',
escape: 'Close modal/panel'
}
},
// Initialization
initialization: {
title: 'Initializing LoRA Manager',
message: 'Scanning and building LoRA cache. This may take a few minutes...',
loras: {
title: 'Initializing LoRA Manager',
message: 'Scanning and building LoRA cache. This may take a few minutes...'
},
checkpoints: {
title: 'Initializing Checkpoint Manager',
message: 'Scanning and building checkpoint cache. This may take a few minutes...'
},
embeddings: {
title: 'Initializing Embedding Manager',
message: 'Scanning and building embedding cache. This may take a few minutes...'
},
recipes: {
title: 'Initializing Recipe Manager',
message: 'Loading and processing recipes. This may take a few minutes...'
},
statistics: {
title: 'Initializing Statistics',
message: 'Processing model data for statistics. This may take a few minutes...'
},
steps: {
scanning: 'Scanning model files...',
processing: 'Processing metadata...',
building: 'Building cache...',
finalizing: 'Finalizing...'
}
},
// Tooltips and help text
tooltips: {
refresh: 'Refresh the model list',
bulkOperations: 'Select multiple models for batch operations',
favorites: 'Show only favorite models',
duplicates: 'Find and manage duplicate models',
search: 'Search models by name, tags, or other criteria',
filter: 'Filter models by various criteria',
sort: 'Sort models by different attributes',
backToTop: 'Scroll back to top of page'
}
};