Files
ComfyUI-Lora-Manager/locales/en.json
Will Miao ee466113d5 feat: implement batch import recipe functionality (frontend + backend fixes)
Backend fixes:
- Add missing API route for /api/lm/recipes/batch-import/progress (GET)
- Add missing API route for /api/lm/recipes/batch-import/directory (POST)
- Add missing API route for /api/lm/recipes/browse-directory (POST)
- Register WebSocket endpoint for batch import progress
- Fix skip_no_metadata default value (True -> False) to allow no-LoRA imports
- Add items array to BatchImportProgress.to_dict() for detailed results

Frontend implementation:
- Create BatchImportManager.js with complete batch import workflow
- Add directory browser UI for selecting folders
- Add batch import modal with URL list and directory input modes
- Implement real-time progress tracking (WebSocket + HTTP polling)
- Add results summary with success/failed/skipped statistics
- Add expandable details view showing individual item status
- Auto-refresh recipe list after import completion

UI improvements:
- Add spinner animation for importing status
- Simplify results summary UI to match progress stats styling
- Fix current item text alignment
- Fix dark theme styling for directory browser button
- Fix batch import button styling consistency

Translations:
- Add batch import related i18n keys to all locale files
- Run sync_translation_keys.py to sync all translations

Fixes:
- Batch import now allows images without LoRAs (matches single import behavior)
- Progress endpoint now returns complete items array with status details
- Results view correctly displays skipped items with error messages
2026-03-16 09:41:58 +08:00

1745 lines
84 KiB
JSON

{
"common": {
"cancel": "Cancel",
"confirm": "Confirm",
"actions": {
"save": "Save",
"cancel": "Cancel",
"confirm": "Confirm",
"delete": "Delete",
"move": "Move",
"refresh": "Refresh",
"back": "Back",
"next": "Next",
"backToTop": "Back to top",
"settings": "Settings",
"help": "Help",
"add": "Add"
},
"status": {
"loading": "Loading...",
"unknown": "Unknown",
"date": "Date",
"version": "Version",
"enabled": "Enabled",
"disabled": "Disabled"
},
"language": {
"select": "Language",
"select_help": "Choose your preferred language for the interface",
"english": "English",
"chinese_simplified": "中文(简体)",
"chinese_traditional": "中文(繁体)",
"russian": "Русский",
"german": "Deutsch",
"japanese": "日本語",
"korean": "한국어",
"french": "Français",
"spanish": "Español",
"Hebrew": "עברית"
},
"fileSize": {
"zero": "0 Bytes",
"bytes": "Bytes",
"kb": "KB",
"mb": "MB",
"gb": "GB",
"tb": "TB"
}
},
"onboarding": {
"languageSelection": {
"title": "Welcome to LoRA Manager",
"continue": "Continue",
"changeFailed": "Failed to change language: {message}"
},
"tutorial": {
"skipTutorial": "Skip Tutorial",
"back": "Back",
"next": "Next",
"finish": "Finish"
},
"steps": {
"fetch": {
"title": "Fetch Models Metadata",
"content": "Click the <strong>Fetch</strong> button to download model metadata and preview images from Civitai."
},
"download": {
"title": "Download New Models",
"content": "Use the <strong>Download</strong> button to download models directly from Civitai URLs."
},
"bulk": {
"title": "Bulk Operations",
"content": "Enter bulk mode by clicking this button or pressing <span class=\"onboarding-shortcut\">B</span>. Select multiple models and perform batch operations. Use <span class=\"onboarding-shortcut\">Ctrl+A</span> to select all visible models."
},
"searchOptions": {
"title": "Search Options",
"content": "Click this button to configure what fields to search in: filename, model name, tags, or creator name. Customize your search scope."
},
"filter": {
"title": "Filter Models",
"content": "Use filters to narrow down models by base model type (SD1.5, SDXL, Flux, etc.) or by specific tags."
},
"breadcrumb": {
"title": "Breadcrumb Navigation",
"content": "The breadcrumb navigation shows your current path and allows quick navigation between folders. Click any folder name to jump directly there."
},
"modelCards": {
"title": "Model Cards",
"content": "<strong>Single-click</strong> a model card to view detailed information and edit metadata. Look for the pencil icon when hovering over editable fields."
},
"contextMenu": {
"title": "Context Menu",
"content": "<strong>Right-click</strong> any model card for a context menu with additional actions."
}
}
},
"modelCard": {
"actions": {
"addToFavorites": "Add to favorites",
"removeFromFavorites": "Remove from favorites",
"viewOnCivitai": "View on Civitai",
"notAvailableFromCivitai": "Not available from Civitai",
"sendToWorkflow": "Send to ComfyUI (Click: Append, Shift+Click: Replace)",
"copyLoRASyntax": "Copy LoRA Syntax",
"checkpointNameCopied": "Checkpoint name copied",
"toggleBlur": "Toggle blur",
"show": "Show",
"openExampleImages": "Open Example Images Folder",
"replacePreview": "Replace Preview",
"copyCheckpointName": "Copy checkpoint name",
"copyEmbeddingName": "Copy embedding name",
"sendCheckpointToWorkflow": "Send to ComfyUI",
"sendEmbeddingToWorkflow": "Send to ComfyUI"
},
"nsfw": {
"matureContent": "Mature Content",
"xxxRated": "XXX-rated Content",
"xRated": "X-rated Content",
"rRated": "R-rated Content"
},
"favorites": {
"added": "Added to favorites",
"removed": "Removed from favorites",
"updateFailed": "Failed to update favorite status"
},
"sendToWorkflow": {
"checkpointNotImplemented": "Send checkpoint to workflow - feature to be implemented",
"missingPath": "Unable to determine model path for this card"
},
"exampleImages": {
"checkError": "Error checking for example images",
"missingHash": "Missing model hash information.",
"noRemoteImagesAvailable": "No remote example images available for this model on Civitai"
},
"badges": {
"update": "Update",
"updateAvailable": "Update available",
"skipRefresh": "Metadata refresh skipped"
},
"usage": {
"timesUsed": "Times used"
}
},
"globalContextMenu": {
"downloadExampleImages": {
"label": "Download example images",
"missingPath": "Set a download location before downloading example images.",
"unavailable": "Example image downloads aren't available yet. Try again after the page finishes loading."
},
"checkModelUpdates": {
"label": "Check for updates",
"loading": "Checking for {type} updates...",
"success": "Found {count} update(s) for {type}s",
"none": "All {type}s are up to date",
"error": "Failed to check for {type} updates: {message}"
},
"cleanupExampleImages": {
"label": "Clean up example image folders",
"success": "Moved {count} folder(s) to the deleted folder",
"none": "No example image folders needed cleanup",
"partial": "Cleanup completed with {failures} folder(s) skipped",
"error": "Failed to clean example image folders: {message}"
},
"fetchMissingLicenses": {
"label": "Refresh license metadata",
"loading": "Refreshing license metadata for {typePlural}...",
"success": "Updated license metadata for {count} {typePlural}",
"none": "All {typePlural} already have license metadata",
"error": "Failed to refresh license metadata for {typePlural}: {message}"
},
"repairRecipes": {
"label": "Repair recipes data",
"loading": "Repairing recipe data...",
"success": "Successfully repaired {count} recipes.",
"cancelled": "Repair cancelled. {count} recipes were repaired.",
"error": "Recipe repair failed: {message}"
}
},
"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",
"prompt": "Prompt"
}
},
"filter": {
"title": "Filter Models",
"presets": "Presets",
"savePreset": "Save current active filters as a new preset.",
"savePresetDisabledActive": "Cannot save: A preset is already active. Modify filters to save new preset.",
"savePresetDisabledNoFilters": "Select filters first to save as preset",
"savePresetPrompt": "Enter preset name:",
"presetClickTooltip": "Click to apply preset \"{name}\"",
"presetDeleteTooltip": "Delete preset",
"presetDeleteConfirm": "Delete preset \"{name}\"?",
"presetDeleteConfirmClick": "Click again to confirm",
"presetOverwriteConfirm": "Preset \"{name}\" already exists. Overwrite?",
"presetNamePlaceholder": "Preset name...",
"baseModel": "Base Model",
"modelTags": "Tags (Top 20)",
"modelTypes": "Model Types",
"license": "License",
"noCreditRequired": "No Credit Required",
"allowSellingGeneratedContent": "Allow Selling",
"noTags": "No tags",
"clearAll": "Clear All Filters",
"any": "Any",
"all": "All",
"tagLogicAny": "Match any tag (OR)",
"tagLogicAll": "Match all tags (AND)"
},
"theme": {
"toggle": "Toggle theme",
"switchToLight": "Switch to light theme",
"switchToDark": "Switch to dark theme",
"switchToAuto": "Switch to auto theme"
},
"actions": {
"checkUpdates": "Check Updates",
"notifications": "Notifications",
"support": "Support"
}
},
"settings": {
"civitaiApiKey": "Civitai API Key",
"civitaiApiKeyPlaceholder": "Enter your Civitai API key",
"civitaiApiKeyHelp": "Used for authentication when downloading models from Civitai",
"openSettingsFileLocation": {
"label": "Open settings folder",
"tooltip": "Open folder containing settings.json",
"success": "Opened settings.json folder",
"failed": "Failed to open settings.json folder",
"copied": "Settings path copied to clipboard: {{path}}",
"clipboardFallback": "Settings path: {{path}}"
},
"sections": {
"contentFiltering": "Content Filtering",
"videoSettings": "Video Settings",
"layoutSettings": "Layout Settings",
"misc": "Miscellaneous",
"folderSettings": "Default Roots",
"extraFolderPaths": "Extra Folder Paths",
"downloadPathTemplates": "Download Path Templates",
"priorityTags": "Priority Tags",
"updateFlags": "Update Flags",
"exampleImages": "Example Images",
"autoOrganize": "Auto-organize",
"metadata": "Metadata",
"proxySettings": "Proxy Settings"
},
"nav": {
"general": "General",
"interface": "Interface",
"library": "Library"
},
"search": {
"placeholder": "Search settings...",
"clear": "Clear search",
"noResults": "No settings found matching \"{query}\""
},
"storage": {
"locationLabel": "Portable mode",
"locationHelp": "Enable to keep settings.json inside the repository; disable to store it in your user config directory."
},
"contentFiltering": {
"blurNsfwContent": "Blur NSFW Content",
"blurNsfwContentHelp": "Blur mature (NSFW) content preview images",
"showOnlySfw": "Show Only SFW Results",
"showOnlySfwHelp": "Filter out all NSFW content when browsing and searching"
},
"videoSettings": {
"autoplayOnHover": "Autoplay Videos on Hover",
"autoplayOnHoverHelp": "Only play video previews when hovering over them"
},
"autoOrganizeExclusions": {
"label": "Auto-organize exclusions",
"placeholder": "Example: curated/*, */backups/*; *_temp.safetensors",
"help": "Skip moving files that match these wildcard patterns. Separate multiple patterns with commas or semicolons.",
"validation": {
"noPatterns": "Enter at least one pattern separated by commas or semicolons.",
"saveFailed": "Unable to save exclusions: {message}"
}
},
"metadataRefreshSkipPaths": {
"label": "Metadata refresh skip paths",
"placeholder": "Example: temp, archived/old, test_models",
"help": "Skip models in these directory paths during bulk metadata refresh (\"Fetch All Metadata\"). Enter folder paths relative to your model root directory, separated by commas.",
"validation": {
"noPaths": "Enter at least one path separated by commas.",
"saveFailed": "Unable to save skip paths: {message}"
}
},
"layoutSettings": {
"displayDensity": "Display Density",
"displayDensityOptions": {
"default": "Default",
"medium": "Medium",
"compact": "Compact"
},
"displayDensityHelp": "Choose how many cards to display per row:",
"displayDensityDetails": {
"default": "5 (1080p), 6 (2K), 8 (4K)",
"medium": "6 (1080p), 7 (2K), 9 (4K)",
"compact": "7 (1080p), 8 (2K), 10 (4K)"
},
"displayDensityWarning": "Warning: Higher densities may cause performance issues on systems with limited resources.",
"showFolderSidebar": "Show Folder Sidebar",
"showFolderSidebarHelp": "Toggle the folder navigation sidebar on model pages. When disabled, the sidebar and hover area stay hidden.",
"cardInfoDisplay": "Card Info Display",
"cardInfoDisplayOptions": {
"always": "Always Visible",
"hover": "Reveal on Hover"
},
"cardInfoDisplayHelp": "Choose when to display model information and action buttons",
"modelCardFooterAction": "Model Card Button Action",
"modelCardFooterActionOptions": {
"exampleImages": "Open Example Images",
"replacePreview": "Replace Preview"
},
"modelCardFooterActionHelp": "Choose what the bottom-right card button does",
"modelNameDisplay": "Model Name Display",
"modelNameDisplayOptions": {
"modelName": "Model Name",
"fileName": "File Name"
},
"modelNameDisplayHelp": "Choose what to display in the model card footer"
},
"folderSettings": {
"activeLibrary": "Active Library",
"activeLibraryHelp": "Switch between configured libraries to update default folders. Changing the selection reloads the page.",
"loadingLibraries": "Loading libraries...",
"noLibraries": "No libraries configured",
"defaultLoraRoot": "LoRA Root",
"defaultLoraRootHelp": "Set default LoRA root directory for downloads, imports and moves",
"defaultCheckpointRoot": "Checkpoint Root",
"defaultCheckpointRootHelp": "Set default checkpoint root directory for downloads, imports and moves",
"defaultUnetRoot": "Diffusion Model Root",
"defaultUnetRootHelp": "Set default diffusion model (UNET) root directory for downloads, imports and moves",
"defaultEmbeddingRoot": "Embedding Root",
"defaultEmbeddingRootHelp": "Set default embedding root directory for downloads, imports and moves",
"noDefault": "No Default"
},
"extraFolderPaths": {
"title": "Extra Folder Paths",
"help": "Add additional model folders outside of ComfyUI's standard paths. These paths are stored separately and scanned alongside the default folders.",
"description": "Configure additional folders to scan for models. These paths are specific to LoRA Manager and will be merged with ComfyUI's default paths.",
"modelTypes": {
"lora": "LoRA Paths",
"checkpoint": "Checkpoint Paths",
"unet": "Diffusion Model Paths",
"embedding": "Embedding Paths"
},
"pathPlaceholder": "/path/to/extra/models",
"saveSuccess": "Extra folder paths updated.",
"saveError": "Failed to update extra folder paths: {message}",
"validation": {
"duplicatePath": "This path is already configured"
}
},
"priorityTags": {
"title": "Priority Tags",
"description": "Customize the tag priority order for each model type (e.g., character, concept, style(toon|toon_style))",
"placeholder": "character, concept, style(toon|toon_style)",
"helpLinkLabel": "Open priority tags help",
"modelTypes": {
"lora": "LoRA",
"checkpoint": "Checkpoint",
"embedding": "Embedding"
},
"saveSuccess": "Priority tags updated.",
"saveError": "Failed to update priority tags.",
"loadingSuggestions": "Loading suggestions...",
"validation": {
"missingClosingParen": "Entry {index} is missing a closing parenthesis.",
"missingCanonical": "Entry {index} must include a canonical tag name.",
"duplicateCanonical": "The canonical tag \"{tag}\" appears more than once.",
"unknown": "Invalid priority tag configuration."
}
},
"downloadPathTemplates": {
"title": "Download Path Templates",
"help": "Configure folder structures for different model types when downloading from Civitai.",
"availablePlaceholders": "Available placeholders:",
"templateOptions": {
"flatStructure": "Flat Structure",
"byBaseModel": "By Base Model",
"byAuthor": "By Author",
"byFirstTag": "By First Tag",
"baseModelFirstTag": "Base Model + First Tag",
"baseModelAuthor": "Base Model + Author",
"authorFirstTag": "Author + First Tag",
"baseModelAuthorFirstTag": "Base Model + Author + First Tag",
"customTemplate": "Custom Template"
},
"customTemplatePlaceholder": "Enter custom template (e.g., {base_model}/{author}/{first_tag})",
"modelTypes": {
"lora": "LoRA",
"checkpoint": "Checkpoint",
"embedding": "Embedding"
},
"baseModelPathMappings": "Base Model Path Mappings",
"baseModelPathMappingsHelp": "Customize folder names for specific base models (e.g., \"Flux.1 D\" → \"flux\")",
"addMapping": "Add Mapping",
"selectBaseModel": "Select Base Model",
"customPathPlaceholder": "Custom path (e.g., flux)",
"removeMapping": "Remove mapping",
"validation": {
"validFlat": "Valid (flat structure)",
"invalidChars": "Invalid characters detected",
"doubleSlashes": "Double slashes not allowed",
"leadingTrailingSlash": "Cannot start or end with slash",
"invalidPlaceholder": "Invalid placeholder: {placeholder}",
"validTemplate": "Valid template"
}
},
"exampleImages": {
"downloadLocation": "Download Location",
"downloadLocationPlaceholder": "Enter folder path for example images",
"downloadLocationHelp": "Enter the folder path where example images from Civitai will be saved",
"autoDownload": "Auto Download Example Images",
"autoDownloadHelp": "Automatically download example images for models that don't have them (requires download location to be set)",
"optimizeImages": "Optimize Downloaded Images",
"optimizeImagesHelp": "Optimize example images to reduce file size and improve loading speed (metadata will be preserved)",
"download": "Download",
"restartRequired": "Requires restart"
},
"updateFlagStrategy": {
"label": "Update Flag Strategy",
"help": "Decide whether update badges should only appear when a new release shares the same base model as your local files or whenever any newer version exists for that model.",
"options": {
"sameBase": "Match updates by base model",
"any": "Flag any available update"
}
},
"hideEarlyAccessUpdates": {
"label": "Hide Early Access Updates",
"help": "When enabled, models with only early access updates will not show 'Update available' badge"
},
"misc": {
"includeTriggerWords": "Include Trigger Words in LoRA Syntax",
"includeTriggerWordsHelp": "Include trained trigger words when copying LoRA syntax to clipboard"
},
"metadataArchive": {
"enableArchiveDb": "Enable Metadata Archive Database",
"enableArchiveDbHelp": "Use a local database to access metadata for models that have been deleted from Civitai.",
"status": "Status",
"statusAvailable": "Available",
"statusUnavailable": "Not Available",
"enabled": "Enabled",
"management": "Database Management",
"managementHelp": "Download or remove the metadata archive database",
"downloadButton": "Download Database",
"downloadingButton": "Downloading...",
"downloadedButton": "Downloaded",
"removeButton": "Remove Database",
"removingButton": "Removing...",
"downloadSuccess": "Metadata archive database downloaded successfully",
"downloadError": "Failed to download metadata archive database",
"removeSuccess": "Metadata archive database removed successfully",
"removeError": "Failed to remove metadata archive database",
"removeConfirm": "Are you sure you want to remove the metadata archive database? This will delete the local database file and you'll need to download it again to use this feature.",
"preparing": "Preparing download...",
"connecting": "Connecting to download server...",
"completed": "Completed",
"downloadComplete": "Download completed successfully"
},
"proxySettings": {
"enableProxy": "Enable App-level Proxy",
"enableProxyHelp": "Enable custom proxy settings for this application, overriding system proxy settings",
"proxyType": "Proxy Type",
"proxyTypeHelp": "Select the type of proxy server (HTTP, HTTPS, SOCKS4, SOCKS5)",
"proxyHost": "Proxy Host",
"proxyHostPlaceholder": "proxy.example.com",
"proxyHostHelp": "The hostname or IP address of your proxy server",
"proxyPort": "Proxy Port",
"proxyPortPlaceholder": "8080",
"proxyPortHelp": "The port number of your proxy server",
"proxyUsername": "Username (Optional)",
"proxyUsernamePlaceholder": "username",
"proxyUsernameHelp": "Username for proxy authentication (if required)",
"proxyPassword": "Password (Optional)",
"proxyPasswordPlaceholder": "password",
"proxyPasswordHelp": "Password for proxy authentication (if required)"
}
},
"loras": {
"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",
"usage": "Use Count",
"usageDesc": "Most",
"usageAsc": "Least"
},
"refresh": {
"title": "Refresh model list",
"quick": "Sync Changes",
"quickTooltip": "Scan for new or missing model files so the list stays current.",
"full": "Rebuild Cache",
"fullTooltip": "Reload all model details from metadata files—use if the library looks out of date or after manual edits."
},
"fetch": {
"title": "Fetch metadata from Civitai",
"action": "Fetch"
},
"download": {
"title": "Download from URL",
"action": "Download"
},
"bulk": {
"title": "Bulk Operations",
"action": "Bulk"
},
"duplicates": {
"title": "Find Duplicates",
"action": "Duplicates"
},
"favorites": {
"title": "Show Favorites Only",
"action": "Favorites"
},
"updates": {
"title": "Show models with updates available",
"action": "Updates",
"menuLabel": "Show update options",
"check": "Check updates",
"checkTooltip": "Checking updates may take a while."
}
},
"bulkOperations": {
"selected": "{count} selected",
"selectedSuffix": "selected",
"viewSelected": "View Selected",
"addTags": "Add Tags to Selected",
"setBaseModel": "Set Base Model for Selected",
"setContentRating": "Set Content Rating for Selected",
"copyAll": "Copy Selected Syntax",
"refreshAll": "Refresh Selected Metadata",
"checkUpdates": "Check Updates for Selected",
"moveAll": "Move Selected to Folder",
"autoOrganize": "Auto-Organize Selected",
"skipMetadataRefresh": "Skip Metadata Refresh for Selected",
"resumeMetadataRefresh": "Resume Metadata Refresh for Selected",
"deleteAll": "Delete Selected Models",
"clear": "Clear Selection",
"skipMetadataRefreshCount": "Skip ({count} models)",
"resumeMetadataRefreshCount": "Resume ({count} models)",
"autoOrganizeProgress": {
"initializing": "Initializing auto-organize...",
"starting": "Starting auto-organize for {type}...",
"processing": "Processing ({processed}/{total}) - {success} moved, {skipped} skipped, {failures} failed",
"cleaning": "Cleaning up empty directories...",
"completed": "Completed: {success} moved, {skipped} skipped, {failures} failed",
"complete": "Auto-organize complete",
"error": "Error: {error}"
}
},
"contextMenu": {
"refreshMetadata": "Refresh Civitai Data",
"checkUpdates": "Check Updates",
"relinkCivitai": "Re-link to Civitai",
"copySyntax": "Copy LoRA Syntax",
"copyFilename": "Copy Model Filename",
"copyRecipeSyntax": "Copy Recipe 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",
"repairMetadata": "Repair metadata",
"excludeModel": "Exclude Model",
"deleteModel": "Delete Model",
"shareRecipe": "Share Recipe",
"viewAllLoras": "View All LoRAs",
"downloadMissingLoras": "Download Missing LoRAs",
"deleteRecipe": "Delete Recipe"
}
},
"recipes": {
"title": "LoRA Recipes",
"actions": {
"sendCheckpoint": "Send to ComfyUI"
},
"controls": {
"import": {
"action": "Import",
"title": "Import a recipe from image or URL",
"urlLocalPath": "URL / Local Path",
"uploadImage": "Upload Image",
"urlSectionDescription": "Input a Civitai image URL or local file path to import as a recipe.",
"imageUrlOrPath": "Image URL or File Path:",
"urlPlaceholder": "https://civitai.com/images/... or C:/path/to/image.png",
"fetchImage": "Fetch Image",
"uploadSectionDescription": "Upload an image with LoRA metadata to import as a recipe.",
"selectImage": "Select Image",
"recipeName": "Recipe Name",
"recipeNamePlaceholder": "Enter recipe name",
"tagsOptional": "Tags (optional)",
"addTagPlaceholder": "Add a tag",
"addTag": "Add",
"noTagsAdded": "No tags added",
"lorasInRecipe": "LoRAs in this Recipe",
"downloadLocationPreview": "Download Location Preview:",
"useDefaultPath": "Use Default Path",
"useDefaultPathTooltip": "When enabled, files are automatically organized using configured path templates",
"selectLoraRoot": "Select a LoRA root directory",
"targetFolderPath": "Target Folder Path:",
"folderPathPlaceholder": "Type folder path or select from tree below...",
"createNewFolder": "Create new folder",
"root": "Root",
"browseFolders": "Browse Folders:",
"downloadAndSaveRecipe": "Download & Save Recipe",
"downloadMissingLoras": "Download Missing LoRAs",
"saveRecipe": "Save Recipe",
"loraCountInfo": "({existing}/{total} in library)",
"processingInput": "Processing input...",
"analyzingMetadata": "Analyzing image metadata...",
"downloadingLoras": "Downloading LoRAs...",
"savingRecipe": "Saving recipe...",
"startingDownload": "Starting download for LoRA {current}/{total}",
"deletedFromCivitai": "Deleted from Civitai",
"inLibrary": "In Library",
"notInLibrary": "Not in Library",
"earlyAccessRequired": "This LoRA requires early access payment to download.",
"earlyAccessEnds": "Early access ends on {date}.",
"earlyAccess": "Early Access",
"verifyEarlyAccess": "Verify that you have purchased early access before downloading.",
"duplicateRecipesFound": "{count} identical recipe(s) found in your library",
"duplicateRecipesDescription": "These recipes contain the same LoRAs with identical weights.",
"showDuplicates": "Show duplicates",
"hideDuplicates": "Hide duplicates",
"loraCount": "{count} LoRAs",
"recipePreviewAlt": "Recipe preview",
"loraPreviewAlt": "LoRA preview",
"errors": {
"selectImageFile": "Please select an image file",
"enterUrlOrPath": "Please enter a URL or file path",
"selectLoraRoot": "Please select a LoRA root directory"
}
},
"sort": {
"title": "Sort recipes by...",
"name": "Name",
"nameAsc": "A - Z",
"nameDesc": "Z - A",
"date": "Date",
"dateDesc": "Newest",
"dateAsc": "Oldest",
"lorasCount": "LoRA Count",
"lorasCountDesc": "Most",
"lorasCountAsc": "Least"
},
"refresh": {
"title": "Refresh recipe list",
"quick": "Sync Changes",
"quickTooltip": "Sync changes - quick refresh without rebuilding cache",
"full": "Rebuild Cache",
"fullTooltip": "Rebuild cache - full rescan of all recipe files"
},
"filteredByLora": "Filtered by LoRA",
"favorites": {
"title": "Show Favorites Only",
"action": "Favorites"
}
},
"duplicates": {
"found": "Found {count} duplicate groups",
"keepLatest": "Keep Latest Versions",
"deleteSelected": "Delete Selected"
},
"contextMenu": {
"copyRecipe": {
"missingId": "Cannot copy recipe: Missing recipe ID",
"failed": "Failed to copy recipe syntax"
},
"sendRecipe": {
"missingId": "Cannot send recipe: Missing recipe ID",
"failed": "Failed to send recipe to workflow"
},
"viewLoras": {
"missingId": "Cannot view LoRAs: Missing recipe ID",
"noLorasFound": "No LoRAs found in this recipe",
"loadError": "Error loading recipe LoRAs: {message}"
},
"downloadMissing": {
"missingId": "Cannot download LoRAs: Missing recipe ID",
"noMissingLoras": "No missing LoRAs to download",
"getInfoFailed": "Failed to get information for missing LoRAs",
"prepareError": "Error preparing LoRAs for download: {message}"
},
"repair": {
"starting": "Repairing recipe metadata...",
"success": "Recipe metadata repaired successfully",
"skipped": "Recipe already at latest version, no repair needed",
"failed": "Failed to repair recipe: {message}",
"missingId": "Cannot repair recipe: Missing recipe ID"
}
},
"batchImport": {
"title": "Batch Import Recipes",
"action": "Batch Import",
"urlList": "URL List",
"directory": "Directory",
"urlDescription": "Enter image URLs or local file paths (one per line). Each will be imported as a recipe.",
"directoryDescription": "Enter a directory path to import all images from that folder.",
"urlsLabel": "Image URLs or Local Paths",
"urlsPlaceholder": "https://civitai.com/images/...\nhttps://civitai.com/images/...\nC:/path/to/image.png\n...",
"urlsHint": "Enter one URL or path per line",
"directoryPath": "Directory Path",
"directoryPlaceholder": "/path/to/images/folder",
"browse": "Browse",
"recursive": "Include subdirectories",
"tagsOptional": "Tags (optional, applied to all recipes)",
"tagsPlaceholder": "Enter tags separated by commas",
"tagsHint": "Tags will be added to all imported recipes",
"skipNoMetadata": "Skip images without metadata",
"skipNoMetadataHelp": "Images without LoRA metadata will be skipped automatically.",
"start": "Start Import",
"startImport": "Start Import",
"importing": "Importing...",
"progress": "Progress",
"total": "Total",
"success": "Success",
"failed": "Failed",
"skipped": "Skipped",
"current": "Current",
"currentItem": "Current",
"preparing": "Preparing...",
"cancel": "Cancel",
"cancelImport": "Cancel",
"cancelled": "Import cancelled",
"completed": "Import completed",
"completedWithErrors": "Completed with errors",
"completedSuccess": "Successfully imported {count} recipe(s)",
"successCount": "Successful",
"failedCount": "Failed",
"skippedCount": "Skipped",
"totalProcessed": "Total processed",
"viewDetails": "View Details",
"newImport": "New Import",
"manualPathEntry": "Please enter the directory path manually. File browser is not available in this browser.",
"batchImportDirectorySelected": "Directory selected: {path}",
"batchImportManualEntryRequired": "File browser not available. Please enter the directory path manually.",
"backToParent": "Back to parent directory",
"folders": "Folders",
"folderCount": "{count} folders",
"imageFiles": "Image Files",
"images": "images",
"imageCount": "{count} images",
"selectFolder": "Select This Folder",
"errors": {
"enterUrls": "Please enter at least one URL or path",
"enterDirectory": "Please enter a directory path",
"startFailed": "Failed to start import: {message}"
}
}
},
"checkpoints": {
"title": "Checkpoint Models",
"modelTypes": {
"checkpoint": "Checkpoint",
"diffusion_model": "Diffusion Model"
},
"contextMenu": {
"moveToOtherTypeFolder": "Move to {otherType} Folder"
}
},
"embeddings": {
"title": "Embedding Models"
},
"sidebar": {
"modelRoot": "Root",
"collapseAll": "Collapse All Folders",
"pinSidebar": "Pin Sidebar",
"unpinSidebar": "Unpin Sidebar",
"switchToListView": "Switch to List View",
"switchToTreeView": "Switch to Tree View",
"recursiveOn": "Search subfolders",
"recursiveOff": "Search current folder only",
"recursiveUnavailable": "Recursive search is available in tree view only",
"collapseAllDisabled": "Not available in list view",
"dragDrop": {
"unableToResolveRoot": "Unable to determine destination path for move.",
"moveUnsupported": "Move is not supported for this item.",
"createFolderHint": "Release to create new folder",
"newFolderName": "New folder name",
"folderNameHint": "Press Enter to confirm, Escape to cancel",
"emptyFolderName": "Please enter a folder name",
"invalidFolderName": "Folder name contains invalid characters",
"noDragState": "No pending drag operation found"
},
"empty": {
"noFolders": "No folders found",
"dragHint": "Drag items here to create folders"
}
},
"statistics": {
"title": "Statistics",
"tabs": {
"overview": "Overview",
"usage": "Usage Analysis",
"collection": "Collection",
"storage": "Storage",
"insights": "Insights"
},
"usage": {
"mostUsedLoras": "Most Used LoRAs",
"mostUsedCheckpoints": "Most Used Checkpoints",
"mostUsedEmbeddings": "Most Used Embeddings"
},
"collection": {
"popularTags": "Popular Tags",
"modelTypes": "Model Types",
"collectionAnalysis": "Collection Analysis"
},
"storage": {
"storageUsage": "Storage Usage",
"largestModels": "Largest Models",
"storageEfficiency": "Storage vs Usage Efficiency"
},
"insights": {
"smartInsights": "Smart Insights",
"recommendations": "Recommendations"
},
"charts": {
"collectionOverview": "Collection Overview",
"baseModelDistribution": "Base Model Distribution",
"usageTrends": "Usage Trends (Last 30 Days)",
"usageDistribution": "Usage Distribution"
}
},
"modals": {
"exclude": {
"confirm": "Exclude"
},
"download": {
"title": "Download Model from URL",
"titleWithType": "Download {type} from URL",
"url": "Civitai URL",
"civitaiUrl": "Civitai URL:",
"placeholder": "https://civitai.com/models/...",
"locationPreview": "Download Location Preview",
"useDefaultPath": "Use Default Path",
"useDefaultPathTooltip": "When enabled, files are automatically organized using configured path templates",
"selectRootDirectory": "Select a root directory",
"selectModelRoot": "Select Model Root:",
"selectTypeRoot": "Select {type} Root:",
"targetFolderPath": "Target Folder Path:",
"browseFolders": "Browse Folders:",
"createNewFolder": "Create new folder",
"pathPlaceholder": "Type folder path or select from tree below...",
"root": "Root",
"download": "Download",
"fetchingVersions": "Fetching model versions...",
"versionPreview": "Version preview",
"earlyAccess": "Early Access",
"earlyAccessTooltip": "Early access required",
"inLibrary": "In Library",
"alreadyInLibrary": "Already in Library",
"autoOrganizedPath": "[Auto-organized by path template]",
"errors": {
"invalidUrl": "Invalid Civitai URL format",
"noVersions": "No versions available for this model"
},
"status": {
"preparing": "Preparing download...",
"downloadedPreview": "Downloaded preview image",
"downloadingFile": "Downloading {type} file",
"finalizing": "Finalizing download..."
},
"progress": {
"currentFile": "Current file:",
"downloading": "Downloading: {name}",
"transferred": "Transferred: {downloaded} / {total}",
"transferredSimple": "Transferred: {downloaded}",
"transferredUnknown": "Transferred: --",
"speed": "Speed: {speed}"
}
},
"move": {
"title": "Move Models"
},
"contentRating": {
"title": "Set Content Rating",
"current": "Current",
"multiple": "Multiple values",
"levels": {
"pg": "PG",
"pg13": "PG13",
"r": "R",
"x": "X",
"xxx": "XXX"
}
},
"deleteModel": {
"title": "Delete Model",
"message": "Are you sure you want to delete this model and all associated files?"
},
"excludeModel": {
"title": "Exclude Model",
"message": "Are you sure you want to exclude this model? Excluded models won't appear in searches or model lists."
},
"deleteDuplicateRecipes": {
"title": "Delete Duplicate Recipes",
"message": "Are you sure you want to delete the selected duplicate recipes?",
"countMessage": "recipes will be permanently deleted."
},
"deleteDuplicateModels": {
"title": "Delete Duplicate Models",
"message": "Are you sure you want to delete the selected duplicate models?",
"countMessage": "models will be permanently deleted."
},
"clearCache": {
"title": "Clear Cache Files",
"message": "Are you sure you want to clear all cache files?",
"description": "This will remove all cached model data. The system will need to rebuild the cache on next startup, which may take some time depending on your model collection size.",
"action": "Clear Cache"
},
"bulkDelete": {
"title": "Delete Multiple Models",
"message": "Are you sure you want to delete all selected models and their associated files?",
"countMessage": "models will be permanently deleted.",
"action": "Delete All"
},
"checkUpdates": {
"title": "Check updates for all {typePlural}?",
"message": "This checks every {typePlural} in your library for updates. Large collections may take a little longer.",
"tip": "To work in smaller batches, switch to bulk mode, choose the ones you need, then use \"Check Updates for Selected\".",
"action": "Check All"
},
"bulkAddTags": {
"title": "Add Tags to Multiple Models",
"description": "Add tags to",
"models": "models",
"tagsToAdd": "Tags to Add",
"placeholder": "Enter tag and press Enter...",
"appendTags": "Append Tags",
"replaceTags": "Replace Tags",
"saveChanges": "Save changes"
},
"bulkBaseModel": {
"title": "Set Base Model for Multiple Models",
"description": "Set base model for",
"models": "models",
"selectBaseModel": "Select Base Model",
"save": "Update Base Model",
"cancel": "Cancel"
},
"exampleAccess": {
"title": "Local Example Images",
"message": "No local example images found for this model. View options:",
"downloadOption": {
"title": "Download from Civitai",
"description": "Save remote examples locally for offline use and faster loading"
},
"importOption": {
"title": "Import Your Own",
"description": "Add your own custom examples for this model"
},
"footerNote": "Remote examples are still viewable in the model details even without local copies"
},
"moveModel": {
"targetLocationPreview": "Target Location Preview:",
"selectModelRoot": "Select Model Root:",
"targetFolderPath": "Target Folder Path:",
"browseFolders": "Browse Folders:",
"createNewFolder": "Create new folder",
"pathPlaceholder": "Type folder path or select from tree below...",
"root": "Root"
},
"relinkCivitai": {
"title": "Re-link to Civitai",
"warning": "Warning:",
"warningText": "This is a potentially destructive operation. Re-linking will:",
"warningList": {
"overrideMetadata": "Override existing metadata",
"modifyHash": "Potentially modify the model hash",
"unintendedConsequences": "May have other unintended consequences"
},
"proceedText": "Only proceed if you're sure this is what you want.",
"urlLabel": "Civitai Model URL:",
"urlPlaceholder": "https://civitai.com/models/649516/model-name?modelVersionId=726676",
"helpText": {
"title": "Paste any Civitai model URL. Supported formats:",
"format1": "https://civitai.com/models/649516",
"format2": "https://civitai.com/models/649516?modelVersionId=726676",
"format3": "https://civitai.com/models/649516/model-name?modelVersionId=726676",
"note": "Note: If no modelVersionId is provided, the latest version will be used."
},
"confirmAction": "Confirm Re-link"
},
"model": {
"actions": {
"editModelName": "Edit model name",
"editFileName": "Edit file name",
"editBaseModel": "Edit base model",
"viewOnCivitai": "View on Civitai",
"viewOnCivitaiText": "View on Civitai",
"viewCreatorProfile": "View Creator Profile",
"openFileLocation": "Open File Location"
},
"openFileLocation": {
"success": "File location opened successfully",
"failed": "Failed to open file location",
"copied": "Path copied to clipboard: {{path}}",
"clipboardFallback": "Path: {{path}}"
},
"metadata": {
"version": "Version",
"fileName": "File Name",
"location": "Location",
"baseModel": "Base Model",
"size": "Size",
"unknown": "Unknown",
"usageTips": "Usage Tips",
"additionalNotes": "Additional Notes",
"notesHint": "Press Enter to save, Shift+Enter for new line",
"addNotesPlaceholder": "Add your notes here...",
"aboutThisVersion": "About this version"
},
"notes": {
"saved": "Notes saved successfully",
"saveFailed": "Failed to save notes"
},
"usageTips": {
"addPresetParameter": "Add preset parameter...",
"strengthMin": "Strength Min",
"strengthMax": "Strength Max",
"strengthRange": "Strength Range",
"strength": "Strength",
"clipStrength": "Clip Strength",
"clipSkip": "Clip Skip",
"valuePlaceholder": "Value",
"add": "Add",
"invalidRange": "Invalid range format. Use x.x-y.y"
},
"triggerWords": {
"label": "Trigger Words",
"noTriggerWordsNeeded": "No trigger word needed",
"edit": "Edit trigger words",
"cancel": "Cancel editing",
"save": "Save changes",
"addPlaceholder": "Type to add or click suggestions below",
"copyWord": "Copy trigger word",
"deleteWord": "Delete trigger word",
"suggestions": {
"noSuggestions": "No suggestions available",
"noTrainedWords": "No trained words or class tokens found in this model. You can manually enter trigger words.",
"classToken": "Class Token",
"classTokenDescription": "Add to your prompt for best results",
"wordSuggestions": "Word Suggestions",
"wordsFound": "{count} words found",
"loading": "Loading suggestions..."
}
},
"description": {
"noDescription": "No model description available",
"failedToLoad": "Failed to load model description",
"editTitle": "Edit model description",
"validation": {
"cannotBeEmpty": "Description cannot be empty"
},
"messages": {
"updated": "Model description updated",
"updateFailed": "Failed to update model description"
}
},
"tabs": {
"examples": "Examples",
"description": "Model Description",
"recipes": "Recipes",
"versions": "Versions"
},
"navigation": {
"label": "Model navigation",
"previousWithShortcut": "Previous model (←)",
"nextWithShortcut": "Next model (→)",
"noPrevious": "No previous model available",
"noNext": "No next model available"
},
"license": {
"noImageSell": "No selling generated content",
"noRentCivit": "No Civitai generation",
"noRent": "No generation services",
"noSell": "No selling models",
"creditRequired": "Creator credit required",
"noDerivatives": "No sharing merges",
"noReLicense": "Same permissions required",
"restrictionsLabel": "License restrictions"
},
"loading": {
"exampleImages": "Loading example images...",
"description": "Loading model description...",
"recipes": "Loading recipes...",
"examples": "Loading examples...",
"versions": "Loading versions..."
},
"versions": {
"heading": "Model versions",
"copy": "Track and manage every version of this model in one place.",
"media": {
"placeholder": "No preview"
},
"labels": {
"unnamed": "Untitled Version",
"noDetails": "No additional details",
"earlyAccess": "EA"
},
"eaTime": {
"endingSoon": "ending soon",
"hours": "in {count}h",
"days": "in {count}d"
},
"badges": {
"current": "Current Version",
"inLibrary": "In Library",
"newer": "Newer Version",
"earlyAccess": "Early Access",
"ignored": "Ignored"
},
"actions": {
"download": "Download",
"delete": "Delete",
"ignore": "Ignore",
"unignore": "Unignore",
"earlyAccessTooltip": "Requires early access purchase",
"resumeModelUpdates": "Resume updates for this model",
"ignoreModelUpdates": "Ignore updates for this model",
"viewLocalVersions": "View all local versions",
"viewLocalTooltip": "Coming soon"
},
"filters": {
"label": "Base filter",
"state": {
"showAll": "All versions",
"showSameBase": "Same base"
},
"tooltip": {
"showAllVersions": "Switch to showing all versions",
"showSameBaseVersions": "Switch to showing only versions that match the current base model"
},
"empty": "No versions match the current base model filter."
},
"empty": "No version history available for this model yet.",
"error": "Failed to load versions.",
"missingModelId": "This model is missing a Civitai model id.",
"confirm": {
"delete": "Delete this version from your library?"
},
"toast": {
"modelIgnored": "Updates ignored for this model",
"modelResumed": "Update tracking resumed",
"versionIgnored": "Updates ignored for this version",
"versionUnignored": "Version re-enabled",
"versionDeleted": "Version deleted"
}
}
}
},
"modelTags": {
"messages": {
"updated": "Tags updated successfully",
"updateFailed": "Failed to update tags"
},
"validation": {
"maxLength": "Tag should not exceed 30 characters",
"maxCount": "Maximum 30 tags allowed",
"duplicate": "This tag already exists"
}
},
"keyboard": {
"navigation": "Keyboard Navigation:",
"shortcuts": {
"pageUp": "Scroll up one page",
"pageDown": "Scroll down one page",
"home": "Jump to top",
"end": "Jump to bottom"
}
},
"initialization": {
"title": "Initializing",
"message": "Preparing your workspace...",
"status": "Initializing...",
"estimatingTime": "Estimating time...",
"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..."
},
"tips": {
"title": "Tips & Tricks",
"civitai": {
"title": "Civitai Integration",
"description": "Connect your Civitai account: Visit Profile Avatar → Settings → API Keys → Add API Key, then paste it in Lora Manager settings.",
"alt": "Civitai API Setup"
},
"download": {
"title": "Easy Download",
"description": "Use Civitai URLs to quickly download and install new models.",
"alt": "Civitai Download"
},
"recipes": {
"title": "Save Recipes",
"description": "Create recipes to save your favorite model combinations for future use.",
"alt": "Recipes"
},
"filter": {
"title": "Fast Filtering",
"description": "Filter models by tags or base model type using the filter button in the header.",
"alt": "Filter Models"
},
"search": {
"title": "Quick Search",
"description": "Press Ctrl+F (Cmd+F on Mac) to quickly search within your current view.",
"alt": "Quick Search"
}
}
},
"duplicates": {
"found": "Found {count} duplicate groups",
"showNotification": "Show Duplicates Notification",
"deleteSelected": "Delete Selected",
"exitMode": "Exit Mode",
"help": {
"identicalHashes": "Identical hashes mean identical model files, even if they have different names or previews.",
"keepOne": "Keep only one version (preferably with better metadata/previews) and safely delete the others."
}
},
"uiHelpers": {
"clipboard": {
"copied": "Copied to clipboard",
"copyFailed": "Copy failed"
},
"lora": {
"syntaxCopied": "LoRA syntax copied to clipboard",
"syntaxCopiedNoTriggerWords": "LoRA syntax copied to clipboard (no trigger words found)",
"syntaxCopiedWithTriggerWords": "LoRA syntax with trigger words copied to clipboard",
"syntaxCopiedWithTriggerWordGroups": "LoRA syntax with trigger word groups copied to clipboard"
},
"workflow": {
"noSupportedNodes": "No supported target nodes found in workflow",
"communicationFailed": "Failed to communicate with ComfyUI",
"loraAdded": "LoRA appended to workflow",
"loraReplaced": "LoRA replaced in workflow",
"loraFailedToSend": "Failed to send LoRA to workflow",
"recipeAdded": "Recipe appended to workflow",
"recipeReplaced": "Recipe replaced in workflow",
"recipeFailedToSend": "Failed to send recipe to workflow",
"noMatchingNodes": "No compatible nodes available in the current workflow",
"noTargetNodeSelected": "No target node selected"
},
"nodeSelector": {
"recipe": "Recipe",
"lora": "LoRA",
"replace": "Replace",
"append": "Append",
"selectTargetNode": "Select target node",
"sendToAll": "Send to All"
},
"exampleImages": {
"opened": "Example images folder opened",
"openingFolder": "Opening example images folder",
"failedToOpen": "Failed to open example images folder",
"setupRequired": "Example Images Storage",
"setupDescription": "To add custom example images, you need to set a download location first.",
"setupUsage": "This path is used for both downloaded and custom example images.",
"openSettings": "Open Settings"
}
},
"help": {
"title": "Help & Tutorials",
"tabs": {
"gettingStarted": "Getting Started",
"updateVlogs": "Update Vlogs",
"documentation": "Documentation"
},
"gettingStarted": {
"title": "Getting Started with LoRA Manager"
},
"updateVlogs": {
"title": "Latest Updates",
"watchOnYouTube": "Watch on YouTube",
"playlistTitle": "LoRA Manager Updates Playlist",
"playlistDescription": "Watch all update videos showcasing the latest features and improvements."
},
"documentation": {
"title": "Documentation",
"general": "General",
"troubleshooting": "Troubleshooting",
"modelManagement": "Model Management",
"recipes": "Recipes",
"settings": "Settings & Configuration",
"extensions": "Extensions",
"newBadge": "NEW"
}
},
"update": {
"title": "Check for Updates",
"notificationsTitle": "Notifications",
"tabs": {
"updates": "Updates",
"messages": "Messages"
},
"updateAvailable": "Update Available",
"noChangelogAvailable": "No detailed changelog available. Check GitHub for more information.",
"currentVersion": "Current Version",
"newVersion": "New Version",
"commit": "Commit",
"viewOnGitHub": "View on GitHub",
"updateNow": "Update Now",
"preparingUpdate": "Preparing update...",
"changelog": "Changelog",
"checkingUpdates": "Checking for updates...",
"checkingMessage": "Please wait while we check for the latest version.",
"showNotifications": "Show update notifications",
"latestBadge": "Latest",
"updateProgress": {
"preparing": "Preparing update...",
"installing": "Installing update...",
"completed": "Update completed successfully!",
"failed": "Update failed: {error}"
},
"status": {
"updating": "Updating...",
"updated": "Updated!",
"updateFailed": "Update Failed"
},
"completion": {
"successMessage": "Successfully updated to {version}!",
"restartMessage": "Please restart ComfyUI or LoRA Manager to apply update.",
"reloadMessage": "Make sure to reload your browser for both LoRA Manager and ComfyUI."
},
"nightly": {
"warning": "Warning: Nightly builds may contain experimental features and could be unstable.",
"enable": "Enable Nightly Updates"
},
"banners": {
"recent": "Recent messages",
"empty": "No recent banners yet.",
"shown": "Shown {time}",
"dismissed": "Dismissed {time}",
"active": "Active"
}
},
"support": {
"title": "Support the Project",
"message": "If you find LoRA Manager useful, I'd really appreciate your support! 🙌",
"feedback": {
"title": "Provide Feedback",
"description": "Your feedback helps shape future updates! Share your thoughts:"
},
"links": {
"submitGithubIssue": "Submit GitHub Issue",
"joinDiscord": "Join Discord",
"youtubeChannel": "YouTube Channel",
"civitaiProfile": "Civitai Profile",
"supportKofi": "Support on Ko-fi",
"supportPatreon": "Support on Patreon"
},
"sections": {
"followUpdates": "Follow for Updates",
"buyMeCoffee": "Buy me a coffee",
"coffeeDescription": "If you'd like to support my work directly:",
"becomePatron": "Become a Patron",
"patronDescription": "Support ongoing development with monthly contributions:",
"wechatSupport": "WeChat Support",
"wechatDescription": "For users in China, you can support via WeChat:",
"showWechatQR": "Show WeChat QR Code",
"hideWechatQR": "Hide WeChat QR Code"
},
"footer": "Thank you for using LoRA Manager! ❤️",
"supporters": {
"title": "Thank You To Our Supporters",
"subtitle": "Thanks to {count} supporters who made this project possible",
"specialThanks": "Special Thanks",
"allSupporters": "All Supporters",
"totalCount": "{count} supporters in total"
}
},
"toast": {
"general": {
"cannotInteractStandalone": "Cannot interact with ComfyUI in standalone mode",
"failedWorkflowInfo": "Failed to get workflow information",
"pageInitFailed": "Failed to initialize {pageType} page. Please reload.",
"statisticsLoadFailed": "Failed to load statistics data"
},
"loras": {
"copyOnlyForLoras": "Copy syntax is only available for LoRAs",
"noLorasSelected": "No LoRAs selected",
"missingDataForLoras": "Missing data for {count} LoRAs",
"noValidLorasToCopy": "No valid LoRAs to copy",
"sendOnlyForLoras": "Send to workflow is only available for LoRAs",
"noValidLorasToSend": "No valid LoRAs to send",
"downloadSuccessful": "LoRAs downloaded successfully",
"allDownloadSuccessful": "All {count} LoRAs downloaded successfully",
"downloadPartialSuccess": "Downloaded {completed} of {total} LoRAs",
"downloadPartialWithAccess": "Downloaded {completed} of {total} LoRAs. {accessFailures} failed due to access restrictions. Check your API key in settings or early access status.",
"pleaseSelectVersion": "Please select a version",
"versionExists": "This version already exists in your library",
"downloadCompleted": "Download completed successfully",
"autoOrganizeSuccess": "Auto-organize completed successfully for {count} {type}",
"autoOrganizePartialSuccess": "Auto-organize completed with {success} moved, {failures} failed out of {total} models",
"autoOrganizeFailed": "Auto-organize failed: {error}",
"noModelsSelected": "No models selected"
},
"recipes": {
"fetchFailed": "Failed to fetch recipes: {message}",
"reloadFailed": "Failed to reload {modelType}s: {message}",
"loadFailed": "Failed to load {modelType}s: {message}",
"refreshComplete": "Refresh complete",
"refreshFailed": "Failed to refresh recipes: {message}",
"syncComplete": "Sync complete",
"syncFailed": "Failed to sync recipes: {message}",
"updateFailed": "Failed to update recipe: {error}",
"updateError": "Error updating recipe: {message}",
"nameSaved": "Recipe \"{name}\" saved successfully",
"nameUpdated": "Recipe name updated successfully",
"tagsUpdated": "Recipe tags updated successfully",
"sourceUrlUpdated": "Source URL updated successfully",
"noRecipeId": "No recipe ID available",
"copyFailed": "Error copying recipe syntax: {message}",
"noMissingLoras": "No missing LoRAs to download",
"missingLorasInfoFailed": "Failed to get information for missing LoRAs",
"preparingForDownloadFailed": "Error preparing LoRAs for download",
"enterLoraName": "Please enter a LoRA name or syntax",
"reconnectedSuccessfully": "LoRA reconnected successfully",
"reconnectFailed": "Error reconnecting LoRA: {message}",
"cannotSend": "Cannot send recipe: Missing recipe ID",
"sendFailed": "Failed to send recipe to workflow",
"sendError": "Error sending recipe to workflow",
"missingCheckpointPath": "Checkpoint path not available",
"missingCheckpointInfo": "Missing checkpoint information",
"downloadCheckpointFailed": "Failed to download checkpoint: {message}",
"cannotDelete": "Cannot delete recipe: Missing recipe ID",
"deleteConfirmationError": "Error showing delete confirmation",
"deletedSuccessfully": "Recipe deleted successfully",
"deleteFailed": "Error deleting recipe: {message}",
"cannotShare": "Cannot share recipe: Missing recipe ID",
"preparingForSharing": "Preparing recipe for sharing...",
"downloadStarted": "Recipe download started",
"shareError": "Error sharing recipe: {message}",
"sharePreparationError": "Error preparing recipe for sharing",
"selectImageFirst": "Please select an image first",
"enterRecipeName": "Please enter a recipe name",
"processingError": "Processing error: {message}",
"folderBrowserError": "Error loading folder browser: {message}",
"recipeSaveFailed": "Failed to save recipe: {error}",
"importFailed": "Import failed: {message}",
"folderTreeFailed": "Failed to load folder tree",
"folderTreeError": "Error loading folder tree",
"batchImportFailed": "Failed to start batch import: {message}",
"batchImportCancelling": "Cancelling batch import...",
"batchImportCancelFailed": "Failed to cancel batch import: {message}",
"batchImportNoUrls": "Please enter at least one URL or file path",
"batchImportNoDirectory": "Please enter a directory path",
"batchImportBrowseFailed": "Failed to browse directory: {message}",
"batchImportDirectorySelected": "Directory selected: {path}"
},
"models": {
"noModelsSelected": "No models selected",
"deletedSuccessfully": "Successfully deleted {count} {type}(s)",
"deleteFailed": "Error: {error}",
"deleteFailedGeneral": "Failed to delete models",
"selectedAdditional": "Selected {count} additional {type}(s)",
"marqueeSelectionComplete": "Selected {count} {type}(s) with marquee selection",
"refreshMetadataFailed": "Failed to refresh metadata",
"nameCannotBeEmpty": "Model name cannot be empty",
"nameUpdatedSuccessfully": "Model name updated successfully",
"nameUpdateFailed": "Failed to update model name",
"baseModelUpdated": "Base model updated successfully",
"baseModelUpdateFailed": "Failed to update base model",
"baseModelNotSelected": "Please select a base model",
"bulkBaseModelUpdating": "Updating base model for {count} model(s)...",
"bulkBaseModelUpdateSuccess": "Successfully updated base model for {count} model(s)",
"bulkBaseModelUpdatePartial": "Updated {success} model(s), failed {failed} model(s)",
"bulkBaseModelUpdateFailed": "Failed to update base model for selected models",
"skipMetadataRefreshUpdating": "Updating metadata refresh flag for {count} model(s)...",
"skipMetadataRefreshSet": "Metadata refresh skipped for {count} model(s)",
"skipMetadataRefreshCleared": "Metadata refresh resumed for {count} model(s)",
"skipMetadataRefreshPartial": "Updated {success} model(s), {failed} failed",
"skipMetadataRefreshFailed": "Failed to update metadata refresh flag for selected models",
"bulkContentRatingUpdating": "Updating content rating for {count} model(s)...",
"bulkContentRatingSet": "Set content rating to {level} for {count} model(s)",
"bulkContentRatingPartial": "Set content rating to {level} for {success} model(s), {failed} failed",
"bulkContentRatingFailed": "Failed to update content rating for selected models",
"bulkUpdatesChecking": "Checking selected {type}(s) for updates...",
"bulkUpdatesSuccess": "Updates available for {count} selected {type}(s)",
"bulkUpdatesNone": "No updates found for selected {type}(s)",
"bulkUpdatesMissing": "Selected {type}(s) are not linked to Civitai updates",
"bulkUpdatesPartialMissing": "Skipped {missing} selected {type}(s) without Civitai links",
"bulkUpdatesFailed": "Failed to check updates for selected {type}(s): {message}",
"invalidCharactersRemoved": "Invalid characters removed from filename",
"filenameCannotBeEmpty": "File name cannot be empty",
"renameFailed": "Failed to rename file: {message}",
"moveFailed": "Failed to move model(s): {message}",
"pleaseSelectRoot": "Please select a {type} root directory",
"nameTooLong": "Model name is limited to 100 characters",
"verificationAlreadyDone": "This group has already been verified",
"verificationCompleteMismatch": "Verification complete. {count} file(s) have different actual hashes.",
"verificationCompleteSuccess": "Verification complete. All files are confirmed duplicates.",
"verificationFailed": "Failed to verify hashes: {message}",
"noTagsToAdd": "No tags to add",
"bulkTagsUpdating": "Updating tags for {count} model(s)...",
"tagsAddedSuccessfully": "Successfully added {tagCount} tag(s) to {count} {type}(s)",
"tagsReplacedSuccessfully": "Successfully replaced tags for {count} {type}(s) with {tagCount} tag(s)",
"tagsAddFailed": "Failed to add tags to {count} model(s)",
"tagsReplaceFailed": "Failed to replace tags for {count} model(s)",
"bulkTagsAddFailed": "Failed to add tags to models",
"bulkTagsReplaceFailed": "Failed to replace tags for models"
},
"search": {
"atLeastOneOption": "At least one search option must be selected"
},
"settings": {
"loraRootsFailed": "Failed to load LoRA roots: {message}",
"checkpointRootsFailed": "Failed to load checkpoint roots: {message}",
"unetRootsFailed": "Failed to load diffusion model roots: {message}",
"embeddingRootsFailed": "Failed to load embedding roots: {message}",
"mappingsUpdated": "Base model path mappings updated ({count} mapping{plural})",
"mappingsCleared": "Base model path mappings cleared",
"mappingSaveFailed": "Failed to save base model mappings: {message}",
"downloadTemplatesUpdated": "Download path templates updated",
"downloadTemplatesFailed": "Failed to save download path templates: {message}",
"settingsUpdated": "Settings updated: {setting}",
"compactModeToggled": "Compact Mode {state}",
"settingSaveFailed": "Failed to save setting: {message}",
"displayDensitySet": "Display Density set to {density}",
"libraryLoadFailed": "Failed to load libraries: {message}",
"libraryActivateFailed": "Failed to activate library: {message}",
"languageChangeFailed": "Failed to change language: {message}",
"cacheCleared": "Cache files have been cleared successfully. Cache will rebuild on next action.",
"cacheClearFailed": "Failed to clear cache: {error}",
"cacheClearError": "Error clearing cache: {message}"
},
"filters": {
"applied": "{message}",
"cleared": "Filters cleared",
"noCustomFilterToClear": "No custom filter to clear",
"noActiveFilters": "No active filters to save"
},
"presets": {
"created": "Preset \"{name}\" created",
"deleted": "Preset \"{name}\" deleted",
"applied": "Preset \"{name}\" applied",
"overwritten": "Preset \"{name}\" overwritten",
"restored": "Default presets restored"
},
"error": {
"presetNameEmpty": "Preset name cannot be empty",
"presetNameTooLong": "Preset name must be {max} characters or less",
"presetNameInvalidChars": "Preset name contains invalid characters",
"presetNameExists": "A preset with this name already exists",
"maxPresetsReached": "Maximum {max} presets allowed. Delete one to add more.",
"presetNotFound": "Preset not found",
"invalidPreset": "Invalid preset data",
"deletePresetFailed": "Failed to delete preset",
"applyPresetFailed": "Failed to apply preset"
},
"downloads": {
"imagesCompleted": "Example images {action} completed",
"imagesFailed": "Example images {action} failed",
"loadError": "Error loading downloads: {message}",
"downloadError": "Download error: {message}"
},
"import": {
"folderTreeFailed": "Failed to load folder tree",
"folderTreeError": "Error loading folder tree",
"imagesImported": "Example images imported successfully",
"imagesPartial": "{success} image(s) imported, {failed} failed",
"importFailed": "Failed to import example images: {message}"
},
"triggerWords": {
"loadFailed": "Could not load trained words",
"tooLong": "Trigger word should not exceed 100 words",
"tooMany": "Maximum 30 trigger words allowed",
"alreadyExists": "This trigger word already exists",
"updateSuccess": "Trigger words updated successfully",
"updateFailed": "Failed to update trigger words",
"copyFailed": "Copy failed"
},
"virtual": {
"loadFailed": "Failed to load items",
"loadMoreFailed": "Failed to load more items",
"loadPositionFailed": "Failed to load items at this position"
},
"bulk": {
"unableToSelectAll": "Unable to select all items"
},
"duplicates": {
"findFailed": "Failed to find duplicates: {message}",
"noDuplicatesFound": "No duplicate {type} found",
"noItemsSelected": "No {type} selected for deletion",
"deleteError": "Error: {message}",
"deleteSuccess": "Successfully deleted {count} {type}",
"deleteFailed": "Failed to delete {type}: {message}"
},
"controls": {
"reloadFailed": "Failed to reload {pageType}: {message}",
"refreshFailed": "Failed to {action} {pageType}: {message}",
"fetchMetadataFailed": "Failed to fetch metadata: {message}",
"clearFilterFailed": "Failed to clear custom filter: {message}"
},
"contextMenu": {
"contentRatingSet": "Content rating set to {level}",
"contentRatingFailed": "Failed to set content rating: {message}",
"relinkSuccess": "Model successfully re-linked to Civitai",
"relinkFailed": "Error: {message}",
"fetchMetadataFirst": "Please fetch metadata from CivitAI first",
"noCivitaiInfo": "No CivitAI information available",
"missingHash": "Model hash not available"
},
"exampleImages": {
"pathUpdated": "Example images path updated successfully",
"pathUpdateFailed": "Failed to update example images path: {message}",
"downloadInProgress": "Download already in progress",
"enterLocationFirst": "Please enter a download location first",
"downloadStarted": "Example images download started",
"downloadStartFailed": "Failed to start download: {error}",
"downloadPaused": "Download paused",
"pauseFailed": "Failed to pause download: {error}",
"downloadResumed": "Download resumed",
"resumeFailed": "Failed to resume download: {error}",
"downloadStopped": "Download cancelled",
"stopFailed": "Failed to cancel download: {error}",
"deleted": "Example image deleted",
"deleteFailed": "Failed to delete example image",
"setPreviewFailed": "Failed to set preview image"
},
"api": {
"fetchFailed": "Failed to fetch {type}s: {message}",
"reloadFailed": "Failed to reload {type}s: {message}",
"deleteSuccess": "{type} deleted successfully",
"deleteFailed": "Failed to delete {type}: {message}",
"excludeSuccess": "{type} excluded successfully",
"excludeFailed": "Failed to exclude {type}: {message}",
"fileNameUpdated": "File name updated successfully",
"fileRenameFailed": "Failed to rename file: {error}",
"previewUpdated": "Preview updated successfully",
"previewUploadFailed": "Failed to upload preview image",
"refreshComplete": "{action} complete",
"refreshFailed": "Failed to {action} {type}s",
"metadataRefreshed": "Metadata refreshed successfully",
"metadataRefreshFailed": "Failed to refresh metadata: {message}",
"metadataUpdateComplete": "Metadata update complete",
"operationCancelled": "Operation cancelled by user",
"operationCancelledPartial": "Operation cancelled. {success} items processed.",
"metadataFetchFailed": "Failed to fetch metadata: {message}",
"bulkMetadataCompleteAll": "Successfully refreshed all {count} {type}s",
"bulkMetadataCompletePartial": "Refreshed {success} of {total} {type}s",
"bulkMetadataCompleteNone": "Failed to refresh metadata for any {type}s",
"bulkMetadataFailureDetails": "Failed refreshes:\n{failures}",
"bulkMetadataFailed": "Failed to refresh metadata: {message}",
"moveNotSupported": "Moving {type}s is not supported",
"alreadyInFolder": "{type} is already in the selected folder",
"moveInfo": "{message}",
"moveSuccess": "{type} moved successfully",
"bulkMoveNotSupported": "Moving {type}s is not supported",
"allAlreadyInFolder": "All selected {type}s are already in the target folder",
"bulkMovePartial": "Moved {successCount} {type}s, {failureCount} failed",
"bulkMoveFailures": "Failed moves:\n{failures}",
"bulkMoveSuccess": "Successfully moved {successCount} {type}s",
"exampleImagesDownloadSuccess": "Successfully downloaded example images!",
"exampleImagesDownloadFailed": "Failed to download example images: {message}",
"moveFailed": "Failed to move item: {message}"
}
},
"banners": {
"versionMismatch": {
"title": "Application Update Detected",
"content": "Your browser is running an outdated version of LoRA Manager ({storedVersion}). The server has been updated to version {currentVersion}. Please refresh to ensure proper functionality.",
"refreshNow": "Refresh Now",
"refreshingIn": "Refreshing in",
"seconds": "seconds"
},
"communitySupport": {
"title": "Keep LoRA Manager Thriving with Your Support ❤️",
"content": "LoRA Manager is a passion project maintained full-time by a solo developer. Your support on Ko-fi helps cover development costs, keeps new updates coming, and unlocks a license key for the LM Civitai Extension as a thank-you gift. Every contribution truly makes a difference.",
"supportCta": "Support on Ko-fi",
"learnMore": "LM Civitai Extension Tutorial"
},
"cacheHealth": {
"corrupted": {
"title": "Cache Corruption Detected"
},
"degraded": {
"title": "Cache Issues Detected"
},
"content": "{invalid} of {total} cache entries are invalid ({rate}). This may cause missing models or errors. Rebuilding the cache is recommended.",
"rebuildCache": "Rebuild Cache",
"dismiss": "Dismiss",
"rebuilding": "Rebuilding cache...",
"rebuildFailed": "Failed to rebuild cache: {error}",
"retry": "Retry"
}
}
}