release: opensource snapshot 2026-02-27 19:25:00

This commit is contained in:
saturn
2026-02-27 19:25:00 +08:00
commit 5de9622c8b
1055 changed files with 164772 additions and 0 deletions

18
messages/en/actions.json Normal file
View File

@@ -0,0 +1,18 @@
{
"storyboard": "Storyboard",
"storyboard_candidate": "Storyboard Candidate",
"character": "Character",
"location": "Location",
"video": "Video",
"analyze": "Analyze",
"analyze_character": "Character Analysis",
"analyze_location": "Location Analysis",
"clips": "Clip Splitting",
"storyboard_text_plan": "Storyboard Planning",
"storyboard_text_detail": "Storyboard Details",
"tts": "Text-to-Speech",
"regenerate": "Regenerate",
"voice-generate": "Voice Generation",
"voice-design": "Voice Design",
"lip-sync": "Lip Sync"
}

107
messages/en/apiConfig.json Normal file
View File

@@ -0,0 +1,107 @@
{
"title": "API Configuration",
"saving": "Saving...",
"saved": "Saved",
"saveFailed": "Save failed",
"connected": "Connected",
"notConfigured": "Not configured",
"configure": "Configure",
"connect": "Connect",
"show": "Show",
"hide": "Hide",
"capability": "Models",
"default": "Default",
"delete": "Delete",
"add": "Add",
"cancel": "Cancel",
"save": "Save",
"comingSoon": "Coming soon",
"priceInput": "Input {amount}",
"priceOutput": "Output {amount}",
"priceUnavailable": "N/A",
"fillComplete": "Please fill in all fields",
"fillPricing": "Please fill in pricing information",
"pricingInputLabel": "Input price",
"pricingOutputLabel": "Output price",
"modelIdExists": "Model ID already exists",
"modelDisplayName": "Display Name (for your reference)",
"modelActualId": "Actual Model ID (API parameter)",
"noModelsForProvider": "No models configured for this provider",
"defaultModels": "Default Model Configuration",
"textDefault": "Text Model",
"characterDefault": "Character Model",
"locationDefault": "Location Model",
"storyboardDefault": "Storyboard Model",
"editDefault": "Edit Model",
"videoDefault": "Video Model",
"lipsyncDefault": "Lip Sync Model",
"selectDefault": "Select",
"providerPool": "Provider Pool",
"providerIdExists": "Provider ID already exists",
"presetProviderCannotDelete": "Preset providers cannot be deleted",
"confirmDeleteProvider": "Are you sure you want to delete this provider?",
"presetModelCannotDelete": "Preset models cannot be deleted",
"confirmDeleteModel": "Are you sure you want to delete this model?",
"addGeminiProvider": "Add Model Provider",
"baseUrl": "Base URL",
"configureBaseUrl": "Configure URL",
"addModel": "Add Model",
"batchModeHalfPrice": "Batch mode (50% price)",
"typeText": "Text",
"typeImage": "Image",
"typeVideo": "Video",
"typeAudio": "Audio",
"apiKeyLabel": "API Key",
"apiType": "API Type",
"apiTypeGeminiCompatible": "Gemini Compatible",
"apiTypeOpenAICompatible": "OpenAI Compatible",
"apiTypeGeminiHint": "Uses Google SDK",
"otherProviders": "Other Settings",
"audioCategory": "Audio",
"audioAndLipsync": "Audio & Lip Sync",
"configureApiKey": "Configure API Key",
"enterApiKey": "Enter API Key",
"tabs": {
"llm": "Text Models",
"image": "Image Models",
"video": "Video Models",
"audio": "Audio Models",
"other": "Other"
},
"sections": {
"llmApiKeys": "Text Model API Keys",
"imageApiKeys": "Image Model API Keys",
"videoApiKeys": "Video Model API Keys",
"audioApiKey": "Audio Model API Key",
"lipsyncApiKey": "Lip Sync API Key"
},
"defaultModel": {
"title": "Default Model",
"hint": "New projects and Asset Hub will use this default configuration",
"notSelected": "Not selected",
"analysis": "Analysis Model",
"image": "Image Generation",
"video": "Video Generation",
"resolution": "Image Resolution"
},
"viewTutorial": "View Tutorial",
"tutorial": {
"button": "Tutorial",
"title": "Setup Guide",
"subtitle": "Follow these steps to complete the configuration",
"close": "Got it",
"openLink": "Open link",
"steps": {
"ark_step1": "Go to the Volcano Engine console to create an API Key",
"ark_step2": "On the model management page, click 'Enable All Models' button in the top right corner",
"openrouter_step1": "Go to OpenRouter platform and create an API Key (must select models with image capabilities)",
"fal_step1": "Go to FAL platform and create an API Key",
"google_step1": "Go to Google AI Studio and create an API Key",
"minimax_step1": "Go to MiniMax platform and get an API Key",
"vidu_step1": "Go to the Vidu platform and click 'Create API Key'",
"openai_compatible_step1": "Enter any OpenAI-compatible service Base URL and API key",
"gemini_compatible_step1": "Enter any Gemini-compatible service Base URL and API key",
"qwen_step1": "Go to Alibaba Cloud Bailian platform and get an API Key"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"image": "Image Generation",
"video": "Video Generation",
"text": "Text Analysis",
"tts": "Text-to-Speech",
"voice": "Voice Dubbing",
"voice_design": "Voice Design",
"lip_sync": "Lip Sync"
}

101
messages/en/assetHub.json Normal file
View File

@@ -0,0 +1,101 @@
{
"title": "Asset Hub",
"description": "Manage your global character and location assets",
"modelHint": "Asset Hub uses default models. To change settings, go to",
"modelHintLink": "API Settings",
"modelHintSuffix": "",
"folders": "Folders",
"noFolders": "No folders yet",
"allAssets": "All Assets",
"characters": "Characters",
"locations": "Locations",
"voices": "Voices",
"addCharacter": "Add Character",
"addLocation": "Add Location",
"addVoice": "Add Voice",
"newFolder": "New Folder",
"editFolder": "Edit Folder",
"deleteFolder": "Delete Folder",
"folderName": "Folder Name",
"folderNamePlaceholder": "Enter folder name",
"emptyState": "No assets yet",
"emptyStateHint": "Click the buttons above to add characters or locations",
"generate": "Generate",
"generating": "Generating...",
"regenerate": "Regenerate",
"undo": "Undo",
"delete": "Delete",
"cancel": "Cancel",
"save": "Save",
"create": "Create",
"confirmDeleteFolder": "Delete this folder? Assets inside will be moved to uncategorized.",
"confirmDeleteCharacter": "Delete this character? This action cannot be undone.",
"confirmDeleteLocation": "Delete this location? This action cannot be undone.",
"confirmDeleteVoice": "Delete this voice? This action cannot be undone.",
"voiceName": "Voice Name",
"voiceNamePlaceholder": "Enter voice name",
"voiceNameRequired": "Please enter a voice name",
"voicePickerTitle": "Select from Voice Library",
"voicePickerEmpty": "No voices yet. Please create a voice first.",
"voicePickerConfirm": "Confirm Selection",
"pagination": {
"previous": "Previous",
"next": "Next"
},
"common": {
"cancel": "Cancel"
},
"generateFailed": "Generation failed",
"selectFailed": "Selection failed",
"uploadFailed": "Upload failed",
"editFailed": "Edit failed",
"saveVoiceFailed": "Failed to save voice",
"saveVoiceFailedDetail": "Failed to save voice: {error}",
"bindVoiceFailed": "Failed to bind voice",
"bindVoiceFailedDetail": "Failed to bind voice: {error}",
"voiceDesignSaved": "AI-designed voice has been set for {name}",
"appearanceLabel": "Appearance {index}",
"voiceSettings": {
"title": "Voice",
"noVoice": "No voice",
"previewFailed": "Preview failed: {error}",
"uploadFailed": "Upload audio failed: {error}",
"uploading": "Uploading...",
"uploaded": "Uploaded",
"uploadAudio": "Upload Audio",
"aiDesign": "AI Design",
"voiceLibrary": "Voice Library",
"pause": "Pause",
"preview": "Preview Voice"
},
"modal": {
"newCharacter": "New Character",
"confirm": "Confirm",
"processing": "Processing...",
"newLocation": "New Location",
"addCharacter": "Create Character",
"addLocation": "Create Location",
"adding": "Creating...",
"aiDesign": "AI Design",
"aiDesignPlaceholder": "e.g., A beautiful woman in a red traditional dress with flowing long hair",
"aiDesignLocationPlaceholder": "e.g., A classical Chinese garden with rockery and pavilions",
"aiDesignTip": "AI will generate a detailed description based on your input. You can edit it after generation.",
"aiDesignLocationTip": "AI will generate a detailed scene description based on your input",
"generate": "Generate",
"generating": "Generating...",
"nameLabel": "Character Name",
"namePlaceholder": "Enter character name",
"descLabel": "Character Description",
"descPlaceholder": "Describe the character's appearance, clothing, hairstyle, etc...",
"locationNameLabel": "Location Name",
"locationNamePlaceholder": "Enter location name",
"locationSummaryLabel": "Location Description",
"locationSummaryPlaceholder": "Describe the environment, atmosphere, features, etc...",
"referenceUpload": "Upload Reference",
"referenceUploadTip": "Upload a character image, AI will convert it to a three-view design sheet",
"convertToCharacter": "Convert to 3-View",
"converting": "Converting...",
"dropOrClick": "Drop image or click to upload",
"supportedFormats": "JPG, PNG supported"
}
}

View File

@@ -0,0 +1,14 @@
{
"title": "Asset Library",
"button": "Assets",
"characters": "Characters",
"locations": "Locations",
"noCharacters": "No characters",
"noLocations": "No locations",
"addCharacter": "Add Character",
"addLocation": "Add Location",
"generateImage": "Generate Image",
"regenerateImage": "Regenerate",
"analyzeAssets": "Analyze Assets",
"analyzing": "Analyzing..."
}

View File

@@ -0,0 +1,78 @@
{
"character": {
"title": "New Character",
"name": "Character Name",
"namePlaceholder": "Enter character name",
"modeReference": "Reference Image",
"modeDescription": "Description",
"isSubAppearance": "This is a sub-appearance",
"isSubAppearanceHint": "Add a new appearance state for an existing character",
"uploadReference": "Upload Reference",
"pasteHint": "Ctrl+V to paste",
"dropOrClick": "Click to upload or drag image",
"supportedFormats": "Supports JPG, PNG formats",
"nameRequired": "Please enter character name first to use reference conversion",
"convertToSheet": "Convert to standard character sheet",
"referenceTip": "Upload any character image, AI will generate a standard character sheet",
"description": "Character Description",
"modifyDescription": "Modify Description",
"descPlaceholder": "Enter character appearance description...",
"modifyDescriptionPlaceholder": "Describe how to modify the primary appearance, e.g. formal outfit, post-battle injuries, add a cloak...",
"selectMainCharacter": "Select Main Character",
"selectCharacterPlaceholder": "Please select a character...",
"appearancesCount": "{count} appearances",
"changeReason": "Appearance Change Reason",
"changeReasonPlaceholder": "e.g. injured after battle, changed into formal wear for a banquet...",
"defaultDescription": "{name}'s character profile",
"generationMode": "Generation Mode",
"directGenerate": "Direct Generate",
"extractPrompt": "Extract Prompt",
"extractFirst": "Extract Description First",
"directGenerateDesc": "Directly generate character sheet from reference (img2img)",
"extractPromptDesc": "Extract description from image first, then generate (txt2img)",
"maxReferenceImages": "Up to 5 reference images",
"selectedCount": "Selected {count}/5 images",
"extractDescription": "Extract Description",
"extracting": "Extracting...",
"extractedDescription": "Extracted Description (Editable)",
"reExtract": "Re-extract",
"editHint": "Edit the description, then click below to generate",
"generateFromDescription": "Generate from Description",
"textToImageTip": "Text-to-image mode: Generate from extracted description",
"pleaseExtractFirst": "Please extract character description first"
},
"location": {
"title": "New Location",
"name": "Location Name",
"namePlaceholder": "Enter location name",
"description": "Location Description",
"descPlaceholder": "Enter location description..."
},
"artStyle": {
"title": "Art Style"
},
"aiDesign": {
"title": "AI Design",
"placeholder": "Describe the character you want...",
"placeholderLocation": "Describe the scene atmosphere...",
"generating": "Designing...",
"generate": "Generate",
"tip": "Enter a simple description, AI will generate detailed settings"
},
"common": {
"creating": "Creating...",
"create": "Create",
"cancel": "Cancel",
"adding": "Adding...",
"add": "Add",
"optional": "(Optional)"
},
"errors": {
"uploadFailed": "Upload failed",
"extractDescriptionFailed": "Failed to extract description",
"createFailed": "Creation failed",
"aiDesignFailed": "AI design failed",
"addSubAppearanceFailed": "Failed to add sub-appearance",
"insufficientBalance": "Insufficient balance"
}
}

View File

@@ -0,0 +1,18 @@
{
"selectCharacter": "Select Character from Asset Hub",
"selectLocation": "Select Location from Asset Hub",
"selectVoice": "Select Voice from Asset Hub",
"searchPlaceholder": "Search by name or folder...",
"noAssets": "No assets in Asset Hub",
"createInAssetHub": "Please create characters/locations/voices in Asset Hub first",
"noSearchResults": "No matching assets found",
"appearances": "appearances",
"images": "images",
"cancel": "Cancel",
"confirmCopy": "Confirm Copy",
"copyFromGlobal": "Copy from Asset Hub",
"copySuccess": "Copy successful",
"copyFailed": "Copy failed",
"preview": "Preview",
"stop": "Stop"
}

321
messages/en/assets.json Normal file
View File

@@ -0,0 +1,321 @@
{
"stage": {
"title": "Assets Confirmation",
"characters": "Characters",
"locations": "Locations",
"analyze": "Analyze Assets",
"analyzing": "Analyzing...",
"generateAll": "Generate All",
"noCharacters": "No characters",
"noLocations": "No locations",
"confirmProfiles": "Character Profiles to Confirm",
"confirmHint": "Please confirm these profiles before generating descriptions",
"confirmAll": "Confirm All ({count})",
"assetsTitle": "Asset Analysis",
"characterAssets": "Character Assets",
"locationAssets": "Location Assets",
"counts": "{characterCount} Characters, {appearanceCount} Appearances",
"locationCounts": "{count} Locations",
"undoFailed": "Undo failed",
"undoFailedError": "Undo failed: {error}",
"undoSuccess": "Reverted to previous version",
"editFailed": "Edit failed",
"editFailedError": "Image edit failed: {error}",
"updateSuccess": "Description updated successfully"
},
"character": {
"add": "Add Character",
"edit": "Edit Character",
"delete": "Delete Character",
"deleteConfirm": "Delete this character?",
"deleteAppearanceConfirm": "Delete this appearance?",
"deleteFailed": "Delete failed: {error}",
"deleteWhole": "Delete Whole Character",
"deleteOptions": "Delete Options",
"name": "Character Name",
"description": "Appearance Description",
"generateImage": "Generate Profile",
"regenerateImage": "Regenerate",
"generate": "Generate",
"regenerating": "Generating...",
"profile": "Profile",
"voiceSettings": "Voice Settings",
"speaker": "Speaker",
"selectSpeaker": "Select Speaker",
"noSpeaker": "Not Set",
"primary": "Primary",
"secondary": "Secondary",
"generateFromPrimary": "Generate from Primary",
"selectPrimaryFirst": "Select primary first",
"editing": "Editing...",
"confirming": "Confirming...",
"assetCount": "{count} Appearances",
"characterCount": "{count} Characters",
"updateFailed": "Update description failed",
"addFailed": "Add character failed",
"copyFromGlobal": "Copy from Asset Hub"
},
"location": {
"add": "Add Location",
"edit": "Edit Location",
"delete": "Delete Location",
"deleteConfirm": "Delete this location?",
"deleteFailed": "Delete failed: {error}",
"name": "Location Name",
"summary": "Summary",
"summaryPlaceholder": "Usage/associations, e.g.: John's master bedroom",
"description": "Location Description",
"generateImage": "Generate Image",
"regenerateImage": "Regenerate",
"updateFailed": "Update description failed",
"addFailed": "Add location failed"
},
"image": {
"upload": "Upload Image",
"uploadReplace": "Upload Replacement",
"uploadFailed": "Upload Failed",
"uploadFailedError": "Upload failed: {error}",
"uploadSuccess": "Upload Success!",
"edit": "Edit Image",
"editPrompt": "Edit Prompt",
"undo": "Undo to Previous Version",
"undoConfirm": "Are you sure you want to undo to the previous version? Current version will be deleted.",
"regenerateGroup": "Regenerate Group",
"regenerateStuck": "Click to regenerate (if stuck)",
"selectTip": "Once selected and confirmed, you can edit and modify the image",
"selectFirst": "Please select an image first",
"useThis": "Use this option",
"optionAlt": "{name} - Option {number}",
"optionNumber": "Option {number}",
"optionSelected": "Selected Option {number}",
"confirmOption": "Confirm Option {number}",
"deleteOthersHint": "(delete others)",
"confirmSuccess": "Selection confirmed",
"confirmFailed": "Confirm selection failed: {error}",
"selectFailed": "Select image failed: {error}",
"cancelSelection": "Cancel Selection",
"deleteThis": "Delete this appearance",
"undoFailed": "Undo failed",
"undoSuccess": "✓ Reverted to previous version",
"editFailed": "Image edit failed",
"editSuccess": "Image edit successful",
"regenerateFailed": "Regenerate failed: {error}"
},
"modal": {
"newCharacter": "New Character",
"addSubAppearance": "Add Sub-Appearance",
"aiDesign": "AI Design",
"aiDesigning": "Designing...",
"designInstruction": "Please enter design instruction",
"enterNameDesc": "Please enter character name and description",
"selectCharacter": "Please select a character",
"enterChangeReason": "Please enter change reason",
"enterSubDesc": "Please enter appearance description",
"insufficientBalance": "Insufficient Balance\n\n{error}",
"designFailed": "AI Design Failed: {error}",
"addFailed": "Add Failed: {error}",
"aiDesignPlaceholderNew": "e.g. A 20-year-old female mage, blonde hair, blue eyes...",
"aiDesignPlaceholderSub": "e.g. Changed into black combat gear...",
"aiTipNew": "Describe the character, AI will generate details",
"aiTipSub": "Describe the new state, AI will generate sub-appearance description",
"nameLabel": "Character Name",
"namePlaceholder": "Enter name...",
"descLabel": "Appearance Description",
"descPlaceholder": "Enter description...",
"selectLabel": "Select Character",
"selectPlaceholder": "-- Select Character --",
"existingAppearances": "Existing:",
"reasonLabel": "Change Reason",
"reasonPlaceholder": "e.g. After changing clothes, Injured...",
"reasonTip": "Briefly describe the difference from primary appearance",
"subDescPlaceholder": "Describe only the changes...",
"subDescTip": "Only describe changes (clothes, state), face/body inherits from primary",
"adding": "Adding...",
"insufficientBalanceDefault": "Insufficient balance, please top up to continue",
"addFailedGeneric": "Add Failed",
"appearancesCount": "Appearances",
"addCharacter": "Add Character",
"addLocation": "Add Location",
"aiDesignTip": "Describe the scene you want, AI will generate name and details",
"designing": "AI designing...",
"saveName": "Save Name",
"saveOnly": "Save Only",
"sceneDescription": "Scene Description",
"scenePrompt": "Scene Description Prompt",
"appearancePrompt": "Appearance Description Prompt",
"smartModify": "Smart Modify",
"modifyPlaceholder": "e.g.: Change to night, add moonlight, add curtains...",
"modifyPlaceholderCharacter": "e.g.: Change hair to blonde, height to 180cm, wear black suit...",
"modifying": "Smart modifying...",
"modifyFailed": "Modification failed",
"editCharacter": "Edit Character",
"editLocation": "Edit Location",
"saveAndGenerate": "Save and Generate",
"generatingAutoClose": "Generating image, will close automatically when done...",
"aiLocationTip": "Enter what you want to modify, AI will adjust the scene description",
"aiDesignPlaceholderLocation": "e.g. An ancient magical library, towering bookshelves, dim candlelight, mysterious atmosphere...",
"artStyle": "Art Style",
"generate": "Generate",
"introduction": "Character Introduction",
"introductionPlaceholder": "e.g.: The protagonist; 'I' refers to her. Others call her 'Snow' or 'Sister Snow'...",
"introductionTip": "Describe the character's role in the story, narrative perspective (who 'I' refers to), how others address them",
"saveIntroduction": "Save Introduction"
},
"toolbar": {
"filter": "Filter",
"viewAll": "View All",
"showGenerated": "Generated",
"showPending": "Pending",
"assetManagement": "Asset Management",
"assetCount": "{total} assets ({appearances} character appearances + {locations} locations)",
"globalAnalyze": "Global Analysis",
"globalAnalyzing": "Performing global asset analysis...",
"globalAnalyzingHint": "Please don't refresh. Results will appear automatically when complete",
"globalAnalyzingTip": "Analyzing all episodes, extracting characters and locations...",
"globalAnalyzeHint": "Analyze all episodes to extract characters and locations",
"globalAnalyzeSuccess": "Global analysis complete: {characters} new characters, {locations} new locations",
"globalAnalyzeFailed": "Global analysis failed",
"generateAll": "Generate All Images",
"generateAllNoop": "All assets already have images, nothing to generate",
"generating": "Generating ({current}/{total})",
"regenerateAll": "Regenerate All",
"regenerateAllConfirm": "Regenerate images for all assets? This will overwrite existing images.",
"noAssetsToGenerate": "No assets available for generation",
"regenerateAllHint": "Regenerate all asset images (overwrite existing)"
},
"common": {
"actions": "Actions",
"add": "Add",
"cancel": "Cancel",
"confirm": "Confirm",
"copy": "Copy",
"delete": "Delete",
"download": "Download",
"edit": "Edit",
"generate": "Generate",
"generateFailed": "Generation Failed",
"loading": "Loading...",
"none": "None",
"preview": "Preview",
"refresh": "Refresh",
"regenerate": "Regenerate",
"save": "Save",
"status": "Status",
"submitFailed": "Submit Failed",
"upload": "Upload",
"unknownError": "Unknown error"
},
"video": {
"panelCard": {
"generating": "Generating...",
"editPrompt": "Edit Prompt"
}
},
"smartImport": {
"preview": {
"saving": "Saving..."
}
},
"storyboard": {
"group": {
"generating": "Generating..."
}
},
"errors": {
"saveFailed": "Save Failed, please retry",
"failed": "failed, please retry",
"insufficientBalance": "Insufficient balance",
"aiDesignFailed": "AI design failed",
"createFailed": "Creation failed"
},
"assetLibrary": {
"button": "Asset Library",
"title": "Asset Library",
"copySuccessCharacter": "Character appearance copied successfully",
"copySuccessLocation": "Location image copied successfully",
"copySuccessVoice": "Voice copied successfully",
"copyFailed": "Copy failed: {error}"
},
"tts": {
"voiceDesignSaved": "AI-designed voice has been set for {name}",
"saveVoiceDesignFailed": "Failed to save voice design: {error}",
"title": "Voice",
"noVoice": "No voice",
"previewFailed": "Preview failed: {error}",
"uploadFailed": "Upload audio failed: {error}",
"uploading": "Uploading...",
"uploaded": "Uploaded",
"uploadAudio": "Upload Audio",
"pause": "Pause",
"preview": "Preview Voice"
},
"characterProfile": {
"importance": {
"S": "S-Level - Main Protagonist",
"A": "A-Level - Core Supporting",
"B": "B-Level - Important Supporting",
"C": "C-Level - Minor Character",
"D": "D-Level - Extra"
},
"costumeLevel": {
"5": "Royal/Luxury",
"4": "Noble/Elite",
"3": "Professional/Quality",
"2": "Casual/Normal",
"1": "Plain/Uniform"
},
"importanceLevel": "Character Importance Level",
"characterArchetype": "Character Archetype",
"archetypePlaceholder": "e.g.: Domineering CEO, Schemer",
"personalityTags": "Personality Tags",
"addTagPlaceholder": "Add tag",
"costumeLevelLabel": "Costume Level",
"suggestedColors": "Suggested Colors",
"colorPlaceholder": "e.g.: Navy blue, Gold",
"primaryMarker": "Primary Identifier",
"markerNote": "(Recommended for S/A level)",
"markingsPlaceholder": "e.g.: Tear-shaped mole, Silver earring",
"visualKeywords": "Visual Keywords",
"keywordsPlaceholder": "e.g.: Elite aura, Ascetic style",
"editDialogTitle": "Edit Character Profile - {name}",
"confirmAndGenerate": "Confirm & Generate",
"useExisting": "Use Existing",
"editProfile": "Edit Profile",
"delete": "Delete Character",
"summary": {
"gender": "Gender:",
"age": "Age:",
"era": "Era:",
"class": "Class:",
"occupation": "Occupation:",
"personality": "Personality:",
"costume": "Costume:",
"identifier": "Identifier:"
},
"parseFailed": "Failed to parse profile data",
"confirmSuccessGenerating": "✓ Profile confirmed. Visual description generation started",
"confirmFailed": "Confirm failed: {error}",
"noPendingCharacters": "No pending characters to confirm",
"batchConfirmPrompt": "Generate visual descriptions for {count} characters?",
"batchConfirmSuccess": "✓ Visual descriptions generated for {count} characters",
"batchConfirmFailed": "Batch confirmation failed: {error}",
"deleteConfirm": "Delete this character? This action cannot be undone.",
"deleteSuccess": "✓ Character deleted",
"deleteFailed": "Delete failed: {error}"
},
"imageEdit": {
"editCharacterImage": "Edit Character Image",
"editLocationImage": "Edit Location Image",
"characterLabel": "Character: {name}",
"locationLabel": "Location: {name}",
"editInstruction": "Edit Instruction",
"subtitle": "Enter an edit instruction and optionally upload reference images",
"characterPlaceholder": "Describe what you want to change, e.g.: Change hair to blonde, add glasses, change to casual clothes...",
"locationPlaceholder": "Describe what you want to change, e.g.: Add more trees, change to night scene...",
"storyboardPlaceholder": "Describe what you want to change, e.g.: Change background color, adjust character expression...",
"noAssetHint": "No assets, click \"Add Asset\" to select",
"referenceImages": "Reference Images",
"referenceImagesHint": "(optional, paste supported)",
"startEditing": "Start Editing"
}
}

29
messages/en/auth.json Normal file
View File

@@ -0,0 +1,29 @@
{
"welcomeBack": "Welcome Back",
"loginTo": "Sign in to waoowaoo",
"createAccount": "Create Account",
"joinPlatform": "Join waoowaoo",
"phoneNumber": "Username",
"password": "Password",
"confirmPassword": "Confirm Password",
"phoneNumberPlaceholder": "Enter your username",
"passwordPlaceholder": "Enter your password",
"passwordMinPlaceholder": "Enter password (at least 6 characters)",
"confirmPasswordPlaceholder": "Re-enter your password",
"loginButton": "Sign In",
"loginButtonLoading": "Signing in...",
"signupButton": "Sign Up",
"signupButtonLoading": "Signing up...",
"noAccount": "Don't have an account?",
"hasAccount": "Already have an account?",
"signupNow": "Sign Up Now",
"signinNow": "Sign In Now",
"backToHome": "← Back to Home",
"loginFailed": "Login failed, please check your phone number and password",
"loginError": "An error occurred during login",
"passwordMismatch": "Passwords do not match",
"passwordTooShort": "Password must be at least 6 characters",
"signupSuccess": "Registration successful! Redirecting to login page...",
"signupFailed": "Registration failed",
"signupError": "An error occurred during registration"
}

15
messages/en/billing.json Normal file
View File

@@ -0,0 +1,15 @@
{
"transactionType": "Transaction Type",
"startDate": "Start Date",
"endDate": "End Date",
"all": "All",
"income": "Income",
"expense": "Expense",
"reset": "Reset",
"filter": "Filter",
"noRecords": "No records",
"accountRecharge": "Account Recharge",
"serviceConsumption": "Service Consumption",
"balance": "Balance",
"allTypes": "All Types"
}

134
messages/en/common.json Normal file
View File

@@ -0,0 +1,134 @@
{
"appName": "waoowaoo",
"betaVersion": "Beta v0.1",
"loading": "Loading...",
"save": "Save",
"cancel": "Cancel",
"confirm": "Confirm",
"delete": "Delete",
"edit": "Edit",
"search": "Search",
"clear": "Clear",
"close": "Close",
"back": "Back",
"next": "Next",
"previous": "Previous",
"submit": "Submit",
"reset": "Reset",
"generate": "Generate",
"regenerate": "Regenerate",
"preview": "Preview",
"download": "Download",
"upload": "Upload",
"select": "Select",
"add": "Add",
"remove": "Remove",
"refresh": "Refresh",
"expand": "Expand",
"collapse": "Collapse",
"all": "All",
"none": "None",
"success": "Success",
"error": "Error",
"warning": "Warning",
"info": "Info",
"copy": "Copy",
"paste": "Paste",
"apply": "Apply",
"autoSave": "Auto-save",
"saved": "Saved",
"episode": "Episode",
"project": "Project",
"editEpisodeName": "Edit Episode Name",
"deleteEpisode": "Delete Episode",
"deleteEpisodeConfirm": "Confirm Delete",
"newEpisode": "New Episode",
"optional": "(Optional)",
"rename": "Rename",
"dragToReorder": "Drag to reorder",
"episodeNamePlaceholder": "Enter episode name...",
"cancelSelection": "Cancel selection",
"referenceImage": "Reference image",
"previewLarge": "Preview large",
"viewOriginal": "View original",
"schemeN": "Scheme {n}",
"insufficientBalance": "Insufficient Balance",
"insufficientBalanceDetail": "Insufficient account balance, please recharge to continue",
"operationFailed": "Operation failed",
"pleaseRetry": "Please retry",
"recommended": "Recommended",
"language": {
"select": "Select language",
"zh": "Chinese",
"en": "English",
"switchConfirmTitle": "Switch language?",
"switchConfirmMessage": "Switching to {targetLanguage} will update not only interface text, but also end-to-end prompts, script generation, and workflow outputs. Continue?",
"switchConfirmAction": "Switch now"
},
"taskStatus": {
"intent": {
"generate": {
"running": {
"image": "Generating",
"video": "Generating",
"audio": "Generating",
"text": "Generating"
}
},
"regenerate": {
"running": {
"image": "Regenerating",
"video": "Regenerating",
"audio": "Regenerating",
"text": "Regenerating"
}
},
"modify": {
"running": {
"image": "Modifying",
"video": "Modifying",
"audio": "Modifying",
"text": "Modifying"
}
},
"analyze": {
"running": {
"image": "Analyzing",
"video": "Analyzing",
"audio": "Analyzing",
"text": "Analyzing"
}
},
"build": {
"running": {
"image": "Building",
"video": "Building",
"audio": "Building",
"text": "Building"
}
},
"convert": {
"running": {
"image": "Converting",
"video": "Converting",
"audio": "Converting",
"text": "Converting"
}
},
"process": {
"running": {
"image": "Processing",
"video": "Processing",
"audio": "Processing",
"text": "Processing"
}
}
},
"failed": {
"image": "Failed",
"video": "Failed",
"audio": "Failed",
"text": "Failed"
}
}
}

View File

@@ -0,0 +1,31 @@
{
"title": "Project Global Configuration",
"saved": "Saved",
"autoSave": "Auto-save",
"visualStyle": "Visual Style",
"modelParams": "Model Parameters",
"aspectRatio": "Aspect Ratio",
"ttsSettings": "TTS Settings",
"loadingModels": "Loading model list...",
"analysisModel": "Analysis Model",
"characterModel": "Character Model",
"locationModel": "Location Model",
"storyboardModel": "Storyboard Model",
"editModel": "Edit Model",
"videoModel": "Video Model",
"videoResolution": "Video Resolution",
"ttsVoice": "TTS Voice",
"ttsRate": "Speech Rate",
"fetchModelsFailed": "Failed to fetch user model list",
"placeholder": "Please enter...",
"description": "Description",
"hint": "Hint",
"pleaseSelect": "Please select...",
"selectModel": "Select Model",
"paramConfig": "Parameters",
"fixed": "Fixed",
"noParams": "No configurable parameters",
"confirm": "Confirm",
"cancel": "Cancel",
"delete": "Delete"
}

19
messages/en/errors.json Normal file
View File

@@ -0,0 +1,19 @@
{
"UNAUTHORIZED": "Please log in first",
"FORBIDDEN": "Access denied",
"NOT_FOUND": "Resource not found",
"INSUFFICIENT_BALANCE": "Insufficient API balance. Please top up and retry",
"RATE_LIMIT": "Too many requests. Please retry in {retryAfter} seconds",
"QUOTA_EXCEEDED": "Quota exceeded. Please try again later",
"GENERATION_FAILED": "Generation failed. Please retry",
"GENERATION_TIMEOUT": "Generation timed out. Please retry",
"SENSITIVE_CONTENT": "Content may contain sensitive material",
"INVALID_PARAMS": "Invalid parameters",
"MISSING_CONFIG": "Please complete model configuration first",
"INTERNAL_ERROR": "Server error. Please try again later",
"NETWORK_ERROR": "Network error. Please check your connection",
"EXTERNAL_ERROR": "External service temporarily unavailable. Please retry later",
"TASK_NOT_READY": "Task is still processing",
"NO_RESULT": "Task has no result",
"CONFLICT": "Resource state conflict"
}

26
messages/en/landing.json Normal file
View File

@@ -0,0 +1,26 @@
{
"title": "waoowaoo",
"subtitle": "AI Film & TV Studio",
"enterWorkspace": "Enter Workspace",
"getStarted": "Get Started",
"learnMore": "Learn More",
"features": {
"title": "Unleash Infinite Creativity",
"subtitle": "Full-process AI assistance, from script to final cut",
"character": {
"title": "Character Workshop",
"description": "Create unique anime characters with high consistency"
},
"storyboard": {
"title": "Smart Storyboard",
"description": "One-click text to storyboard, precise narrative control"
},
"world": {
"title": "World Building",
"description": "Immersive scene generation to build grand story backgrounds"
}
},
"footer": {
"copyright": "2026 waoowaoo AI. All rights reserved."
}
}

4
messages/en/layout.json Normal file
View File

@@ -0,0 +1,4 @@
{
"title": "AI Anime Production Platform",
"description": "Create professional anime content with cutting-edge AI technology"
}

View File

@@ -0,0 +1,27 @@
{
"llmModels": "Text Model List",
"imageModels": "Image Model List",
"videoModels": "Video Model List",
"price": "Price",
"pricePerMillion": "Per million tokens",
"pricePerImage": "Per image",
"pricePerVideo": "Per video",
"name": "Name",
"modelId": "Model ID",
"modelName": "Model Name",
"provider": "Provider",
"resolution": "Resolution",
"add": "Add",
"addModel": "Add Model",
"addNewModel": "Add New Model",
"selectPreset": "Select Preset Model",
"customModel": "Custom Model",
"confirmAdd": "Confirm",
"cancel": "Cancel",
"done": "Done",
"fillComplete": "Please fill in all fields",
"noModels": "No models yet, click the button above to add",
"noApiKey": "Configure API Key",
"batchMode": "Batch",
"batchModeTooltip": "Offline inference, 50% cheaper, completes within 24 hours"
}

8
messages/en/nav.json Normal file
View File

@@ -0,0 +1,8 @@
{
"workspace": "Workspace",
"assetHub": "Asset Hub",
"profile": "Settings",
"signin": "Sign In",
"signup": "Sign Up",
"logout": "Logout"
}

View File

@@ -0,0 +1,139 @@
{
"stages": {
"story": "Story",
"script": "Script",
"storyboard": "Storyboard",
"video": "Video",
"editor": "AI Editor",
"editorComingSoon": "Coming soon, follow us for updates"
},
"buttons": {
"assetLibrary": "Asset Library",
"settings": "Settings",
"refreshData": "Refresh Data",
"enterVideoGeneration": "Enter Video Generation →"
},
"smartImport": {
"title": "Start Your Creative Journey",
"subtitle": "First, choose your creation method",
"manualCreate": {
"title": "Create from Episode 1",
"description": "Start from episode 1, suitable for episodic creation or single short videos",
"button": "Start Creating"
},
"smartImport": {
"title": "Smart Import Full Book",
"description": "Upload a complete novel or script, AI engine automatically recognizes chapter structure and splits into episodes.",
"button": "Import Now",
"recommended": "Recommended"
},
"upload": {
"title": "Upload Raw Material",
"subtitle": "AI engine is ready, automatic episode splitting and formatting",
"maxWords": "(Max 30,000 words)",
"textInput": "Enter Text Content",
"documentUpload": "Upload Full Document",
"placeholder": "Paste your novel chapters or script content here...",
"filePlaceholder": "File uploaded mode",
"clickUpload": "Click to upload document",
"clearTextFirst": "Please clear left text first",
"supportedFormats": "Supports Word, TXT formats",
"preview": "Preview",
"expandPreview": "Expand More",
"collapsePreview": "Collapse",
"deleteFile": "Delete File",
"startAnalysis": "Start Smart Analysis",
"back": "Back",
"words": "words"
},
"analyzing": {
"title": "AI is Analyzing Your Story",
"description": "Recognizing chapter structure, smart splitting in progress...",
"autoSave": "Will auto-save after analysis complete"
},
"preview": {
"title": "Smart Splitting Complete",
"episodeCount": "Automatically split into {count} episodes",
"totalWords": "Total {count} words",
"autoSaved": "✓ Auto-saved",
"reanalyze": "Re-analyze",
"confirm": "Confirm Complete",
"saving": "Saving...",
"episodeList": "Episode List",
"addEpisode": "Add Episode",
"averageWords": "Average per episode",
"episodeContent": "Episode Content",
"episodePlaceholder": "Enter episode title...",
"summaryPlaceholder": "Enter plot summary...",
"newEpisode": "New Episode",
"deleteEpisode": "Delete Episode",
"deleteConfirm": {
"title": "Confirm Delete",
"message": "Are you sure you want to delete \"{title}\"?",
"cancel": "Cancel",
"confirm": "Confirm Delete"
},
"tip": {
"title": "Tip",
"content": "You can directly edit titles, summaries, and content. After clicking [Confirm Complete], episodes will be officially imported into the project"
}
},
"errors": {
"fileTooLarge": "File too large, please upload a file smaller than 10MB",
"docNotSupported": ".doc format not supported, please convert to .docx in Word",
"fileEmpty": "File content is empty",
"fileReadError": "File read failed, please try again",
"uploadFirst": "Please upload or paste content first",
"analyzeFailed": "Analysis failed",
"saveFailed": "Save failed"
},
"cancelConfirm": "Are you sure you want to cancel? Analyzed episodes will be cleared."
},
"storyInput": {
"currentEditing": "Currently editing: {name}",
"editingTip": "The following workflow is for this episode only. Switch episodes in the top left if needed",
"wordCount": "Word count:",
"assetLibraryTip": {
"title": "Need custom characters and locations?",
"description": "Click the 「Asset Library」 button in the top right to upload asset setting documents or manually add characters/locations. AI will prioritize using settings from the asset library for analysis."
},
"videoRatio": "Video Ratio",
"visualStyle": "Visual Style",
"moreConfig": "For more configuration options, click the 「 Settings」 button in the top right",
"narration": {
"title": "Enable Narration Voiceover",
"description": "Generate TTS voice narration to add commentary to your video"
},
"creating": "AI Creating...",
"ready": "✓ Configuration complete, ready for next step",
"pleaseInput": "Please enter script content first"
},
"execution": {
"selectEpisode": "Please select an episode first",
"fillContentFirst": "Please enter content first",
"requestAborted": "Request aborted (possibly due to page refresh)",
"analysisFailed": "Asset analysis failed",
"prepareFailed": "Preparation failed",
"generationFailed": "Generation failed",
"batchVideoFailed": "Batch video generation failed",
"updateFailed": "Update failed",
"saveFailed": "Save failed",
"storyToScriptRunning": "Story→Script V2 running",
"scriptToStoryboardRunning": "Script→Storyboard V2 running",
"storyToScriptFailed": "Story to script failed",
"scriptToStoryboardFailed": "Script to storyboard failed",
"taskStreamTimeout": "Task timed out. The task may still be running in the background — please check its status or retry"
},
"rebuildConfirm": {
"storyToScript": {
"title": "Script Flow Will Be Rebuilt",
"message": "Downstream storyboard data is detected for this episode ({storyboardCount} storyboards, {panelCount} panels). Continuing will clear and rebuild this data. Continue?"
},
"scriptToStoryboard": {
"title": "Storyboard Data Will Be Rebuilt",
"message": "Existing storyboard data is detected for this episode ({storyboardCount} storyboards, {panelCount} panels). Continuing will clear current storyboards and regenerate them. Continue?"
},
"confirm": "Continue and Clear",
"cancel": "Cancel"
}
}

107
messages/en/profile.json Normal file
View File

@@ -0,0 +1,107 @@
{
"user": "User",
"personalAccount": "Personal Account",
"availableBalance": "Available Balance",
"frozen": "Frozen",
"totalSpent": "Total Spent",
"apiConfig": "API Configuration",
"rechargeRecords": "Recharge Records",
"billingRecords": "Billing Records",
"logout": "Logout",
"accountTransactions": "Account Transactions",
"projectDetails": "Project Details",
"summary": "Summary",
"transactions": "Transactions",
"noTransactions": "No transaction records",
"noProjectCosts": "No project cost records",
"noDetails": "This project has no cost details",
"noRecords": "No records",
"byType": "By Type",
"byAction": "By Action",
"times": "times",
"total": "Total",
"filter": "Filter",
"allTypes": "All Types",
"recharge": "Account Recharge",
"consume": "Service Consumption",
"balanceAfter": "Balance {amount}",
"recordCount": "{count} records",
"totalCost": "Total {amount}",
"previousPage": "Previous",
"nextPage": "Next",
"pagination": "{total} items, Page {page} / {totalPages}",
"episodeLabel": "Episode {number}",
"billingDetail": {
"imageWithRes": "{count} images · {resolution}",
"image": "{count} images",
"videoWithRes": "{count} videos · {resolution}",
"video": "{count} videos",
"tokens": "{count} tokens",
"seconds": "{count}s",
"calls": "{count} calls"
},
"apiTypes": {
"image": "Image Generation",
"video": "Video Generation",
"text": "Text Analysis",
"tts": "Text-to-Speech",
"voice": "Voice Acting",
"voice_design": "Voice Design",
"lip_sync": "Lip Sync"
},
"actionTypes": {
"image_panel": "Storyboard Image",
"image_character": "Character Image",
"image_location": "Location Image",
"video_panel": "Video Generation",
"lip_sync": "Lip Sync",
"voice_line": "Voice Synthesis",
"voice_design": "Voice Design",
"asset_hub_voice_design": "Asset Hub Voice Design",
"regenerate_storyboard_text": "Regenerate Storyboard Text",
"insert_panel": "Insert Panel",
"panel_variant": "Shot Variant",
"modify_asset_image": "Modify Image",
"regenerate_group": "Batch Regenerate",
"asset_hub_image": "Asset Hub Image",
"asset_hub_modify": "Asset Hub Modify Image",
"analyze_novel": "Novel Analysis",
"story_to_script_run": "Story to Script",
"script_to_storyboard_run": "Script to Storyboard",
"clips_build": "Clips Build",
"screenplay_convert": "Screenplay Convert",
"voice_analyze": "Voice Analysis",
"analyze_global": "Global Analysis",
"ai_modify_appearance": "AI Modify Appearance",
"ai_modify_location": "AI Modify Location",
"ai_modify_shot_prompt": "AI Modify Shot Prompt",
"analyze_shot_variants": "Analyze Shot Variants",
"ai_create_character": "AI Create Character",
"ai_create_location": "AI Create Location",
"reference_to_character": "Reference to Character",
"character_profile_confirm": "Confirm Character Profile",
"character_profile_batch_confirm": "Batch Confirm Character Profiles",
"episode_split_llm": "Episode Split",
"asset_hub_ai_design_character": "Asset Hub AI Design Character",
"asset_hub_ai_design_location": "Asset Hub AI Design Location",
"asset_hub_ai_modify_character": "Asset Hub AI Modify Character",
"asset_hub_ai_modify_location": "Asset Hub AI Modify Location",
"asset_hub_reference_to_character": "Asset Hub Reference to Character",
"storyboard": "Storyboard",
"storyboard_candidate": "Storyboard Candidate",
"character": "Character Image",
"location": "Location Image",
"video": "Video",
"analyze": "Analysis",
"analyze_character": "Character Analysis",
"analyze_location": "Location Analysis",
"clips": "Clip Splitting",
"storyboard_text_plan": "Storyboard Planning",
"storyboard_text_detail": "Storyboard Detail",
"tts": "TTS",
"regenerate": "Regenerate",
"voice-generate": "Voice Generation",
"voice-design": "Voice Design",
"lip-sync": "Lip Sync"
}
}

136
messages/en/progress.json Normal file
View File

@@ -0,0 +1,136 @@
{
"analyzing": "Analyzing story structure...",
"splittingClips": "Splitting into clips...",
"convertingScreenplay": "Converting to screenplay...",
"submittingStoryboard": "Submitting storyboard...",
"step": "Step {current} of {total}",
"status": {
"completed": "Completed",
"failed": "Failed",
"processing": "Processing",
"queued": "Queued",
"pending": "Pending"
},
"stageCard": {
"stage": "Stage",
"realtimeStream": "Realtime Stream",
"currentStage": "Current Stage",
"outputTitle": "Live AI Output · {stage}",
"waitingModelOutput": "Waiting for model output...",
"reasoningNotProvided": "No reasoning was returned for this step"
},
"runtime": {
"waitingExecution": "Waiting to start",
"taskCreated": "Task created",
"taskStarted": "Task started",
"taskCompleted": "Task completed",
"taskFailed": "Task failed",
"taskProcessing": "Task processing...",
"llm": {
"processing": "Model is processing...",
"output": "Model is generating output...",
"reasoning": "Model is reasoning...",
"completed": "Model output completed",
"failed": "Model output failed"
},
"stage": {
"llmSubmit": "Submitting model request",
"llmStreaming": "Model streaming output",
"llmFallbackNonStream": "Model fallback to non-stream mode",
"llmCompleted": "Model output completed",
"llmFailed": "Model output failed"
}
},
"taskType": {
"generic": "Task",
"imagePanel": "Storyboard image",
"imageCharacter": "Character image",
"imageLocation": "Location image",
"videoPanel": "Video generation",
"lipSync": "Lip sync",
"voiceLine": "Voice generation",
"voiceDesign": "Voice design",
"assetHubVoiceDesign": "Asset hub voice design",
"regenerateStoryboardText": "Regenerate storyboard text",
"insertPanel": "Insert storyboard panel",
"panelVariant": "Storyboard variant",
"modifyAssetImage": "Image edit",
"regenerateGroup": "Batch regenerate",
"assetHubImage": "Asset hub image",
"assetHubModify": "Asset hub edit",
"analyzeNovel": "Content analysis",
"storyToScriptRun": "Story to script",
"scriptToStoryboardRun": "Script to storyboard",
"clipsBuild": "Clip generation",
"screenplayConvert": "Screenplay conversion",
"voiceAnalyze": "Voice line analysis",
"analyzeGlobal": "Global analysis",
"aiModifyAppearance": "Character description modify",
"aiModifyLocation": "Location description modify",
"aiModifyShotPrompt": "Shot prompt modify",
"analyzeShotVariants": "Shot variant analysis",
"aiCreateCharacter": "Project character design",
"aiCreateLocation": "Project location design",
"referenceToCharacter": "Reference to character",
"characterProfileConfirm": "Character profile confirm",
"characterProfileBatchConfirm": "Character profile batch confirm",
"episodeSplitLlm": "Smart episode split",
"assetHubAiDesignCharacter": "Asset hub character design",
"assetHubAiDesignLocation": "Asset hub location design",
"assetHubAiModifyCharacter": "Asset hub character modify",
"assetHubAiModifyLocation": "Asset hub location modify",
"assetHubReferenceToCharacter": "Asset hub reference to character"
},
"stage": {
"received": "Task received",
"generateCharacterImage": "Generate character image",
"generateLocationImage": "Generate location image",
"generatePanelCandidate": "Generate panel candidate",
"generatePanelVideo": "Generate panel video",
"generateVoiceSubmit": "Submit voice task",
"generateVoicePersist": "Persist voice result",
"voiceDesignSubmit": "Submit voice design task",
"voiceDesignDone": "Voice design completed",
"submitLipSync": "Submit lip sync task",
"persistLipSync": "Persist lip sync result",
"storyboardClip": "Generate storyboard clip",
"regenerateStoryboardPrepare": "Prepare storyboard regeneration",
"regenerateStoryboardPersist": "Persist storyboard regeneration",
"storyToScriptPrepare": "Prepare story-to-script parameters",
"storyToScriptStep": "Execute story-to-script step",
"storyToScriptPersist": "Persist story-to-script output",
"storyToScriptPersistDone": "Story-to-script output persisted",
"scriptToStoryboardPrepare": "Prepare script-to-storyboard parameters",
"scriptToStoryboardStep": "Execute script-to-storyboard step",
"scriptToStoryboardPersist": "Persist script-to-storyboard output",
"scriptToStoryboardPersistDone": "Storyboard and voice output persisted",
"insertPanelGenerateText": "Generate inserted panel text",
"insertPanelPersist": "Persist inserted panel",
"pollingExternal": "Waiting for external service",
"enqueueFailed": "Task enqueue failed",
"llmProxySubmit": "Submit LLM task",
"llmProxyExecute": "Execute LLM task",
"llmProxyPersist": "Persist LLM result"
},
"runConsole": {
"storyToScript": "Story to Script",
"scriptToStoryboard": "Script to Storyboard",
"storyToScriptRunning": "Story→Script running",
"scriptToStoryboardRunning": "Script→Storyboard running",
"storyToScriptSubtitle": "Story To Script V2",
"scriptToStoryboardSubtitle": "Script To Storyboard V2",
"stop": "Stop",
"minimize": "Minimize"
},
"streamStep": {
"analyzeCharacters": "Analyze characters",
"analyzeLocations": "Analyze locations",
"splitClips": "Split clips",
"screenplayConversion": "Convert screenplay",
"storyboardPlan": "Plan storyboard",
"cinematographyRules": "Generate cinematography rules",
"actingDirection": "Generate acting direction",
"storyboardDetailRefine": "Refine storyboard details",
"voiceAnalyze": "Analyze voice lines"
}
}

View File

@@ -0,0 +1,7 @@
{
"addProvider": "+ Add Provider",
"name": "Name",
"add": "Add",
"save": "Save",
"fillRequired": "Please fill in required fields"
}

View File

@@ -0,0 +1,70 @@
{
"title": "Script View",
"scriptBreakdown": "Script Breakdown",
"splitCount": "{count} clips split",
"noClips": "No clips yet, please generate from story view",
"segment": {
"title": "Clip {index}",
"selected": "(Selected)"
},
"inSceneAssets": "In-Scene Assets",
"currentSelected": "Selected: Clip {number}",
"assetView": {
"allClips": "All Clips",
"viewingClip": "Viewing Clip {number}"
},
"asset": {
"generateCharacter": "Click to generate character →",
"generateLocation": "Click to generate location →",
"removeCharacterConfirm": "Are you sure you want to remove this character from current clip?",
"removeLocationConfirm": "Are you sure you want to remove this location from current clip?",
"removeFromClip": "Remove from current clip",
"noAudio": "No audio",
"playing": "Playing",
"listen": "Listen",
"activeCharacters": "Active Characters",
"activeLocations": "Active Locations",
"selectCharacter": "Select character/appearance to add",
"selectLocation": "Select location to add",
"loadingAssets": "Loading assets...",
"appearanceCount": "{count} appearances",
"added": "Added",
"primary": "Primary",
"subAppearance": "Sub appearance",
"defaultAppearance": "Default appearance",
"clickToRemove": "Click to remove {name}",
"clickToAdd": "Click to add {name}"
},
"screenplay": {
"scene": "Scene {number}",
"location": "Location:",
"locationTime": "Time:",
"day": "Day",
"night": "Night",
"dawn": "Dawn",
"dusk": "Dusk",
"dialogue": "Dialogue",
"action": "Action",
"narration": "Narration",
"content": "Original Content",
"noContent": "No content yet",
"clickToEdit": "Click to edit",
"interior": "INT",
"exterior": "EXT",
"characters": "Characters",
"noCharacter": "No character info",
"noLocation": "No active locations",
"noCharacterInClip": "No active characters"
},
"confirm": {
"removeCharacter": "Are you sure you want to remove this character from current clip?",
"removeLocation": "Are you sure you want to remove this location from current clip?"
},
"generate": {
"missingAssets": "{count} assets missing images",
"missingAssetsTip": "Please generate images for all characters and locations in",
"missingAssetsTipLink": "first",
"generating": "Generating...",
"startGenerate": "Confirm and Start Drawing →"
}
}

View File

@@ -0,0 +1,168 @@
{
"title": "Start Your Creative Journey",
"subtitle": "First, choose your creation method",
"manualCreate": {
"title": "Create from Episode 1",
"description": "Start from episode 1, suitable for episodic creation or single short videos",
"button": "Start Creating"
},
"manualDesc": "Start from the first episode, suitable for serialized or single short video production",
"startCreate": "Start Creating",
"smartImport": {
"title": "Smart Text Split",
"description": "Upload a complete novel or script, AI engine automatically recognizes chapter structure and splits into episodes.",
"button": "Import Now",
"recommended": "Recommended"
},
"markerDetection": {
"enable": "Use Markers (Episode X / 第X集)",
"tooltip": "Auto-detect [Episode X], [Chapter X], [第X集/章] markers, free & fast"
},
"smartImportDesc": "Upload your novel or script, AI engine automatically identifies chapter structure for one-click smart episode splitting.",
"recommended": "Recommended",
"importNow": "Import Now",
"uploadTitle": "Upload Source Material",
"uploadSubtitle": "AI engine ready, one-click auto-split and format",
"maxWords": "Max 30,000 words",
"textInput": "Enter Text Content",
"textPlaceholder": "Paste your novel chapter or script content here...",
"uploadDoc": "Upload Complete Document",
"clickUpload": "Click to Upload",
"clearText": "Please clear left text first",
"supportFormat": "Supports Word, TXT formats",
"fileMax": "Max 30,000 words",
"words": "words",
"startAnalyzing": "Start Analysis",
"analyzing": {
"title": "AI is Analyzing Your Story",
"description": "Recognizing chapter structure, smart splitting in progress...",
"autoSave": "Will auto-save after analysis complete"
},
"analyzingDesc": "Identifying chapter structure, smart splitting...",
"autoSave": "Will auto-save after analysis",
"splitComplete": "Smart Split Complete",
"splitResult": "Auto-split into {count} episodes, total {words} words",
"saved": "Auto-saved",
"reAnalyze": "Re-analyze",
"confirmComplete": "Confirm Complete",
"saving": "Saving...",
"episodeList": "Episode List",
"episodes": "episodes",
"episode": "Episode {num}",
"addEpisode": "Add Episode",
"newEpisode": "New Episode",
"avgWords": "Average per episode",
"episodeContent": "Episode Content",
"plotSummary": "Plot Summary",
"enterTitle": "Enter episode title...",
"enterSummary": "Enter plot summary...",
"confirmDelete": "Confirm Delete",
"deleteConfirmMsg": "Are you sure you want to delete \"{title}\"?",
"preview": {
"title": "Smart Splitting Complete",
"episodeCount": "Automatically split into {count} episodes",
"totalWords": "Total {count} words",
"autoSaved": "✓ Auto-saved",
"reanalyze": "Re-analyze",
"confirm": "Confirm Complete",
"saving": "Saving...",
"episodeList": "Episode List",
"addEpisode": "Add Episode",
"averageWords": "Average per episode",
"episodeContent": "Episode Content",
"episodePlaceholder": "Enter episode title...",
"summaryPlaceholder": "Enter plot summary...",
"newEpisode": "New Episode",
"deleteEpisode": "Delete Episode",
"deleteConfirm": {
"title": "Confirm Delete",
"message": "Are you sure you want to delete \"{title}\"?",
"cancel": "Cancel",
"confirm": "Confirm Delete"
},
"tip": {
"title": "Tip",
"content": "You can directly edit titles, summaries, and content. After clicking [Confirm Complete], episodes will be officially imported into the project"
}
},
"collapsePreview": "Collapse Preview",
"expandMore": "Expand More",
"deleteFile": "Delete File",
"fileTooLarge": "File size cannot exceed 10MB",
"docNotSupported": ".doc format not supported. Please save as .docx or .txt and try again",
"fileEmpty": "File content is empty",
"fileReadError": "File read failed, please ensure correct format",
"uploadFirst": "Please upload a file or paste text first",
"analyzeFailed": "Analysis failed",
"saveFailed": "Save failed",
"cancelConfirm": "Are you sure you want to cancel? Analyzed episodes will be cleared.",
"deleteEpisode": "Delete Episode",
"upload": {
"title": "Upload Raw Material",
"subtitle": "AI engine is ready, automatic episode splitting and formatting",
"maxWords": "(Max 30,000 words)",
"textInput": "Enter Text Content",
"documentUpload": "Upload Full Document",
"placeholder": "Paste your novel chapters or script content here...",
"filePlaceholder": "File uploaded mode",
"clickUpload": "Click to upload document",
"clearTextFirst": "Please clear left text first",
"supportedFormats": "Supports Word, TXT formats",
"preview": "Preview",
"expandPreview": "Expand More",
"collapsePreview": "Collapse",
"deleteFile": "Delete File",
"startAnalysis": "Start Analysis",
"back": "Back",
"words": "words"
},
"errors": {
"fileTooLarge": "File too large, please upload a file smaller than 10MB",
"docNotSupported": ".doc format not supported, please convert to .docx in Word",
"fileEmpty": "File content is empty",
"fileReadError": "File read failed, please try again",
"uploadFirst": "Please upload or paste content first",
"analyzeFailed": "Analysis failed",
"saveFailed": "Save failed",
"analysisModelNotConfigured": "Please configure an analysis model in settings first"
},
"common": {
"edit": "Edit",
"delete": "Delete",
"save": "Save",
"cancel": "Cancel"
},
"markerDetected": {
"title": "Episode Markers Detected",
"description": "Detected {count} \"{type}\" format episode markers",
"preview": "Preview Split Result",
"useMarker": "Use Marker Split",
"useMarkerDesc": "Fast & Free",
"useAI": "Use AI Smart Split",
"useAIDesc": "Intelligent analysis, uses credits",
"cancel": "Cancel",
"totalCount": "{count} episodes total",
"markerTypes": {
"episode": "Episode X (Chinese)",
"chapter": "Chapter X (Chinese)",
"act": "Act X (Chinese)",
"scene": "X-Y [Scene]",
"numbered": "Numbered",
"numberedEscaped": "Numbered (Escaped)",
"numberedDirect": "Number + Chinese",
"episodeEn": "Episode X",
"chapterEn": "Chapter X",
"boldNumber": "**Number**",
"pureNumber": "Pure Number"
}
},
"globalAnalysis": {
"title": "Global Asset Analysis",
"description": "Extract all characters and locations from the full book to ensure consistency across episodes",
"startButton": "Analyze Now",
"analyzing": "Analyzing...",
"success": "Analysis complete: {characters} new characters, {locations} new locations",
"failed": "Global analysis failed",
"confirmAndAnalyze": "Confirm & Analyze Assets"
}
}

7
messages/en/stages.json Normal file
View File

@@ -0,0 +1,7 @@
{
"config": "1. Config",
"assets": "2. Asset Analysis",
"storyboard": "3. Storyboard Edit",
"videos": "4. Video Generation",
"voice": "5. Voice Generation"
}

374
messages/en/storyboard.json Normal file
View File

@@ -0,0 +1,374 @@
{
"phases": {
"planning": "Planning Storyboard",
"cinematography": "Cinematography Design",
"acting": "Acting Direction",
"detail": "Adding Details"
},
"prompts": {
"imagePrompt": "Image Prompt",
"aiInstruction": "AI Modify Instruction",
"supportReference": "(Support @ referencing asset library)",
"instructionPlaceholder": "e.g. Change location to @Hospital_Day, character to @ProtagonistA",
"selectAsset": "Select Asset",
"character": "Character",
"location": "Location",
"referencedAssets": "Referenced Assets:",
"removeAsset": "Remove Asset",
"aiModify": "AI Modify & Generate",
"aiModifying": "Modifying...",
"aiModifyTip": "Click to auto-save prompt and generate new image",
"save": "Save",
"currentPrompt": "Current Prompt",
"enterInstruction": "Please enter instruction",
"modifyFailed": "Operation Failed: {error}",
"updateFailed": "Update Failed: {error}",
"enterContinuation": "Please enter content to append",
"appendTitle": "Continue Content",
"appendDescription": "Enter new SRT content. The system will split and generate new shots, then append them to the end.",
"appendSubmit": "Append and Generate Shots",
"appendSuccess": "Append succeeded. New shots were added to the end of the list.",
"appendFailed": "Append failed: {error}",
"customStyle": "Custom Style"
},
"group": {
"generating": "Generating...",
"hasSynced": "✓ Generated",
"failed": "Failed",
"retry": "Retry",
"regenerate": "Regenerate All",
"generateAll": "Generate All",
"expand": "Expand",
"collapse": "Collapse",
"addPanel": "Add Panel",
"regenerating": "Regenerating...",
"aiAnalyzing": "AI Analyzing...",
"regenerateText": "Regenerate Text",
"generateMissingImages": "Generate all panels without images in this segment",
"segment": "Segment",
"addAtStart": "Add new storyboard group at the start",
"insertHere": "Insert new storyboard group here"
},
"header": {
"title": "Storyboard Editing",
"panels": "Panels",
"submit": "Submit Generation",
"submitting": "Submitting...",
"storyboardPanel": "Storyboard Panel",
"segments": "segments",
"segmentsCount": "Total {count} segments,",
"panelsCount": "{count} panels",
"generatingStatus": "({count} generating)",
"generateAllPanels": "Generate All Panels",
"generatePendingPanels": "Generate {count} panels without images",
"downloadAll": "Download All",
"downloading": "Packing...",
"noImages": "No images to download",
"downloadAllImages": "Download all images",
"generateVideo": "Generate Video →",
"back": "← Back",
"concurrencyLimit": "Concurrency limit {count}"
},
"panel": {
"shotType": "Shot Type:",
"duration": "seconds",
"location": "Location:",
"characters": "Characters:",
"description": "Description:",
"text": "Corresponding Text:",
"regenerate": "Regenerate",
"delete": "Delete",
"insertBefore": "Insert Before",
"insertAfter": "Insert After",
"moveUp": "Move Up",
"moveDown": "Move Down",
"plot": "Plot:",
"summary": "Summary:",
"pov": "POV:",
"focus": "Focus:",
"mode": "Mode:",
"shot": "Shot",
"segment": "Segment",
"stylePrompt": "Style/Prompt",
"shotMode": "Shot/Mode",
"regenerateImage": "Regenerate Image",
"generateImage": "Generate Image",
"cardView": "Card View",
"tableView": "Table View",
"shotTypeLabel": "Shot Type",
"cameraMove": "Camera Move",
"sourceText": "Source Text",
"sceneDescription": "Scene Description",
"videoPrompt": "Video Prompt",
"videoPromptHint": "Describe subject movement, environment, and camera language",
"locationLabel": "Location",
"editLocation": "Edit Location",
"characterLabel": "Character",
"characterLabelWithCount": "Characters ({count})",
"editCharacter": "Edit Characters",
"select": "+ Select",
"add": "+ Add",
"noLocation": "No location selected",
"locationNotEdited": "Location not edited yet",
"noCharacters": "No characters selected",
"charactersNotEdited": "Characters not edited yet",
"shotTypePlaceholder": "Overhead medium shot...",
"cameraMovePlaceholder": "Slow push, static...",
"videoPromptPlaceholder": "Prompt for video generation...",
"sceneDescriptionPlaceholder": "Describe subject, composition, lighting, and mood",
"selectCharacter": "Select Character",
"selectLocation": "Select Location",
"noCharacterAssets": "No character assets",
"noLocationAssets": "No location assets",
"selected": "Selected",
"defaultAppearance": "Default appearance",
"newPanelDescription": "New shot description",
"noShotType": "Shot type not set"
},
"image": {
"generating": "Generating...",
"regenerate": "Regenerate",
"edit": "Edit",
"editImage": "Edit Image",
"candidate": "Candidate",
"selectCandidate": "Select Candidate",
"variants": "Variants",
"generateVariants": "Generate Variants",
"forceRegenerate": "Force Regenerate",
"failed": "Generation Failed",
"clickToPreview": "Click to preview",
"enlargePreview": "Enlarge Preview",
"candidateCount": "Candidate {count}",
"candidateGenerating": "{count} generating",
"selectingCandidate": "Selecting candidate...",
"confirmCandidate": "Confirm Selection",
"cancelSelection": "Cancel Selection",
"noValidCandidates": "No valid candidates",
"selectCount": "Select count",
"generateMultiple": "Generate multiple candidates",
"generateCount": "Generate {count}",
"undoShort": "Back"
},
"candidate": {
"title": "Select Candidate Image",
"select": "Select",
"cancel": "Cancel",
"noImages": "No candidate images",
"original": "Original"
},
"variant": {
"title": "Image Variants",
"generate": "Generate Variants",
"select": "Use This Image",
"close": "Close",
"shotTitle": "Shot Variant - Based on #{number}",
"originalDescription": "Original Shot Description",
"noDescription": "No description",
"noImage": "No image",
"shotNum": "Shot {number}",
"aiRecommend": "AI Recommended Variants",
"reanalyze": "Re-analyze",
"shotType": "Shot type:",
"cameraMove": "Camera move:",
"generating": "Generating",
"clickToAnalyze": "Click Re-analyze to get AI recommendations",
"customInstruction": "Or custom instruction",
"customPlaceholder": "Enter the shot effect you want, e.g.: switch to reverse shot, focus on another character's expression...",
"includeCharacter": "Include character reference",
"includeLocation": "Include location reference",
"customVariant": "Custom variant",
"defaultShotType": "Medium Shot",
"defaultCameraMove": "Static",
"useCustomGenerate": "Generate with custom",
"analyzeFailed": "Analysis failed",
"creativeScore": "Creativity {score}/5"
},
"insert": {
"title": "Insert New Panel",
"position": "Insert Position",
"before": "Before Panel {number}",
"after": "After Panel {number}",
"content": "Panel Content",
"shotType": "Shot Type",
"location": "Location",
"characters": "Characters",
"description": "Description",
"text": "Corresponding Text",
"placeholder": {
"shotType": "Select shot type...",
"location": "Enter location...",
"characters": "Enter characters, comma separated",
"description": "Describe the scene...",
"text": "Corresponding script text..."
},
"insert": "Insert",
"cancel": "Cancel"
},
"common": {
"actions": "Actions",
"add": "Add",
"cancel": "Cancel",
"confirm": "Confirm",
"copy": "Copy",
"delete": "Delete",
"download": "Download",
"edit": "Edit",
"generate": "Generate",
"loading": "Loading...",
"none": "None",
"unknownError": "Unknown error",
"preview": "Preview",
"refresh": "Refresh",
"regenerate": "Regenerate",
"deleting": "Deleting",
"editing": "Editing",
"saving": "Saving...",
"saveFailed": "Save failed, changes not synced",
"retrySave": "Retry save",
"save": "Save",
"status": "Status",
"submitFailed": "Submit Failed",
"upload": "Upload"
},
"confirm": {
"deletePanel": "Delete this shot? This action cannot be undone.",
"deleteGroup": "Delete this storyboard group? This will remove all {count} shots in this segment. This action cannot be undone."
},
"messages": {
"episodeNotFound": "Episode information not found",
"downloadFailed": "Download failed: {error}",
"panelNotFound": "Shot information not found",
"modifyFailed": "Modify failed: {error}",
"selectCandidateFailed": "Select candidate failed: {error}",
"insertPanelFailed": "Insert shot failed: {error}",
"addPanelFailed": "Add shot failed: {error}",
"deletePanelFailed": "Delete shot failed: {error}",
"deleteGroupFailed": "Delete storyboard group failed: {error}",
"regenerateGroupFailed": "Regenerate storyboard failed: {error}",
"addGroupFailed": "Add storyboard group failed: {error}",
"moveGroupFailed": "Move storyboard group failed: {error}",
"batchGenerateCompleted": "Batch generation completed:\nSucceeded: {succeeded}\nFailed: {failed}\n\nSample errors: {errors}",
"batchGenerateFailed": "Batch generation failed: {error}"
},
"canvas": {
"emptyTitle": "No storyboard data yet",
"emptyDescription": "Generate clips and storyboard text first, or add a storyboard group above"
},
"imageEdit": {
"title": "Edit Storyboard Image",
"subtitle": "Enter a modify instruction and optionally upload reference images or assets",
"promptPlaceholder": "Describe what to modify, e.g. change background color or adjust expression...",
"referenceImagesLabel": "Reference Images",
"referenceImagesHint": "(optional, paste supported)",
"start": "Start Editing",
"selectAsset": "Select Assets",
"selectedAssetsLabel": "Referenced Assets",
"selectedAssetsCount": "{count}",
"addAsset": "Add Asset",
"noAssets": "No assets selected. Click \"Add Asset\" to choose."
},
"screenplay": {
"tabs": {
"formatted": "Screenplay",
"original": "Original"
},
"scene": "Scene {number}",
"characters": "Characters",
"voiceover": "Voiceover",
"parseFailedTitle": "Failed to parse screenplay format",
"parseFailedDescription": "Please check the original content"
},
"assets": {
"character": {
"confirming": "Confirming...",
"editing": "Editing..."
},
"image": {
"undo": "Undo to Previous Version"
},
"location": {
"generateImage": "Generate Image"
},
"stage": {
"analyzing": "Analyzing..."
}
},
"video": {
"toolbar": {
"showPending": "Pending"
},
"panelCard": {
"forceRegenerate": "Force Regenerate (if stuck)"
}
},
"smartImport": {
"errors": {
"analyzeFailed": "Analysis Failed"
},
"preview": {
"reanalyze": "Re-analyze"
},
"smartImport": {
"recommended": "Recommended"
}
},
"aiData": {
"title": "AI Data Editor",
"subtitle": "Panel {number} - Complete data sent to image generation AI",
"basicData": "Storyboard Basic Data",
"shotType": "Shot Type",
"cameraMove": "Camera Movement",
"shotTypePlaceholder": "Overhead, wide shot, eye-level, medium shot...",
"cameraMovePlaceholder": "Slow push, static, follow...",
"scene": "Scene (Read-only)",
"notSelected": "Not selected",
"summary": "Scene Summary",
"characters": "Characters (Read-only)",
"plot": "Plot",
"summarize": "Summary",
"visualDescription": "Visual Description",
"videoPrompt": "Video Prompt",
"negativePrompt": "Negative Prompt",
"save": "Save",
"cancel": "Cancel",
"lightingDirection": "Lighting Direction",
"lightingQuality": "Lighting Quality",
"depthOfField": "Depth of Field",
"colorTone": "Color Tone",
"characterPosition": "Character Position Rules",
"position": "Position",
"posture": "Posture",
"facing": "Facing",
"photographyRules": "Photography Rules",
"viewData": "View Data",
"jsonPreview": "JSON Preview",
"actingNotes": "Acting Direction (acting_notes)",
"actingTitle": "Acting Direction",
"actingDescription": "Performance Notes",
"noActingData": "No acting data"
},
"insertModal": {
"insertBetween": "Insert between #{before} and #{after}",
"panel": "Panel",
"noImage": "No image",
"insertAtEnd": "End",
"aiAnalyze": "AI Auto-analyze",
"analyzing": "AI analyzing...",
"insert": "Insert",
"inserting": "Inserting...",
"placeholder": "Optional: Add notes, e.g. add a reaction shot..."
},
"panelActions": {
"insertPanel": "Insert Panel",
"panelVariant": "Panel Variant",
"insertHere": "Insert panel here",
"generateVariant": "Generate variant based on this panel",
"needImage": "Need to generate image first",
"deleteShot": "Delete Shot",
"pasteSrtPlaceholder": "Paste new SRT content..."
},
"firstLastFrame": {
"placeholder": "Enter first/last frame video prompt...",
"modelTitle": "First/Last Frame Model"
}
}

210
messages/en/video.json Normal file
View File

@@ -0,0 +1,210 @@
{
"panelCard": {
"play": "Play",
"pause": "Pause",
"retry": "Retry",
"regenerate": "Regenerate",
"download": "Download",
"edit": "Edit",
"save": "Save",
"cancel": "Cancel",
"generating": "Generating...",
"failed": "Failed",
"lipSync": "Lip Sync",
"lipSyncVideo": "Lip Sync Video",
"lipSyncLabel": "Lip Sync",
"lipSyncTitle": "Lip Sync",
"original": "Original",
"synced": "Synced",
"videoFixed": "✓ Video",
"imagePreview": "Image Preview",
"playVoice": "Play Voice",
"stopVoice": "Stop",
"noVoice": "No voice available",
"forceRegenerate": "Force Regenerate (use if stuck)",
"regenerateVideo": "Regenerate Video",
"lipSyncStatus": "Lip syncing...",
"lipSyncInProgress": "Lip syncing in progress...",
"lipSyncMayTakeMinutes": "This may take a few minutes",
"audioEnabled": "Audio enabled",
"audioDisabled": "Audio disabled",
"isSynced": "(Synced)",
"needVideo": "(Please generate video first)",
"needAudio": "(Please generate audio first)",
"generateAudio": "Generate Audio",
"regenerateLipSync": "Regenerate Lip Sync",
"editPrompt": "Edit Prompt",
"clickToEditPrompt": "Click to edit prompt...",
"shot": "Shot {number}",
"unknownShotType": "Unknown",
"correspondingText": "Corresponding Text",
"generateVideo": "Generate Video",
"selectModel": "Select Video Model",
"selectVoice": "Select voice to use:",
"willAutoPad": "(will auto-pad)",
"autoPadding": "Padding",
"redo": "Redo",
"generatingAudio": "Generating...",
"error": {
"audioFailed": "Audio generation failed"
},
"batchMode": "Batch Mode",
"batchModeDesc": "Offline inference, 50% cheaper, completes within 24 hours",
"batchModeEnabled": "Batch mode enabled",
"batchModeDisabled": "Batch mode disabled"
},
"promptModal": {
"title": "Edit Shot #{number} Video Prompt",
"shotType": "Shot Type:",
"duration": "s",
"location": "Location:",
"locationUnknown": "Unknown",
"characters": "Characters:",
"charactersNone": "None",
"description": "Description:",
"text": "Corresponding Text:",
"promptLabel": "Video Prompt",
"placeholder": "Enter video prompt...",
"tip": "Tip: Video models don't recognize character names, use appearance descriptions like \"young man with black hair and blue eyes\" instead of \"Victor\"",
"save": "Save",
"cancel": "Cancel"
},
"toolbar": {
"title": "Video Generation",
"filter": "Filter",
"viewAll": "View All",
"showGenerated": "Generated",
"showPending": "Pending",
"showFailed": "Failed",
"totalShots": "Total {count} shots",
"generatingShots": "{count} generating",
"completedShots": "{count} completed",
"failedShots": "{count} failed",
"generateAll": "Generate All Videos",
"batchConfigTitle": "Batch Generation Settings",
"batchConfigDesc": "Choose model and parameters before generating all videos.",
"confirmGenerateAll": "Confirm and Generate All",
"confirming": "Submitting...",
"noVideos": "No videos to download",
"downloadCount": "Download {count} videos",
"packing": "Packing...",
"downloadAll": "Download All",
"enterEditor": "Enter Video Editor",
"enterEdit": "Enter Editor",
"back": "Back"
},
"stage": {
"title": "Video Generation",
"generateAll": "Generate All",
"regenerateFailed": "Retry Failed",
"downloadAll": "Download All Videos",
"enterEditor": "Enter Editor",
"lipSyncStatus": "Lip syncing...",
"hasSynced": "✓ Generated",
"generating": "Generating...",
"downloading": "Downloading...",
"downloadProgress": "Preparing video files... {current}/{total}",
"noVideos": "No generated videos",
"scrollTo": "Jump to shot",
"error": {
"saveFailed": "Failed to save video prompt",
"lipSyncFailed": "Lip sync failed",
"fetchVideosFailed": "Failed to fetch video list"
},
"downloadFailed": "Download failed",
"unknownError": "Unknown error"
},
"firstLastFrame": {
"title": "First/Last Frame Settings",
"firstFrame": "First Frame",
"lastFrame": "Last Frame",
"range": "Shot {from} → Shot {to}",
"link": "Link",
"unlink": "Unlink",
"unlinkAction": "Unlink",
"asLastFrameFor": "As last frame for Shot {number}",
"asFirstFrameFor": "As first frame for Shot {number}",
"customPrompt": "Custom Prompt",
"promptPlaceholder": "Enter first/last frame video prompt...",
"useDefault": "Use Default",
"generate": "Generate First/Last Frame Video",
"generated": "First/Last Frame Video Generated",
"model": "Model",
"withAudio": "With Audio",
"audioOn": "On",
"audioOff": "Off",
"linkToNext": "Link to next panel (First/Last Frame)",
"asLastFrame": "As last frame for Panel {number}",
"thenTransitionTo": "then transition to"
},
"editor": {
"alert": {
"saveSuccess": "Saved successfully",
"saveFailed": "Save failed",
"exportStarted": "Export has started. Please wait...",
"exportFailed": "Export failed"
},
"toolbar": {
"back": "← Back",
"saveDirty": "Save *",
"saved": "Saved",
"export": "Export Video"
},
"left": {
"title": "Media Library",
"description": "Clips imported from the video stage will appear here"
},
"right": {
"title": "Properties",
"clipLabel": "Clip:",
"clipFallback": "Clip {index}",
"durationLabel": "Duration:",
"transitionLabel": "Transition to Next Clip",
"deleteConfirm": "Delete this clip?",
"deleteClip": "Delete Clip",
"selectClipHint": "Select a clip to view properties"
},
"preview": {
"emptyStartEditing": "Add media to start editing"
},
"timeline": {
"zoomLabel": "Zoom:",
"videoTrack": "Video",
"emptyHint": "Drag video clips from media library to here",
"audioTrack": "Voice",
"audioBadge": "A"
},
"transition": {
"title": "Transition",
"duration": "Duration",
"options": {
"none": "None",
"dissolve": "Dissolve",
"fade": "Fade",
"slide": "Slide"
}
}
},
"errors": {
"unknownError": "Unknown error"
},
"capability": {
"generationMode": "Generation mode",
"generateAudio": "Generate audio",
"duration": "Duration",
"fps": "Frame rate",
"resolution": "Resolution",
"aspectRatio": "Aspect ratio",
"reasoningEffort": "Reasoning effort",
"voice": "Voice",
"rate": "Rate",
"mode": "Mode"
},
"unit": {
"second": "s",
"frame": "fps"
},
"common": {
"generate": "Generate"
}
}

254
messages/en/voice.json Normal file
View File

@@ -0,0 +1,254 @@
{
"title": "Voice Lines",
"linesCount": "{count} lines total, ",
"audioGeneratedCount": "{count} audio generated",
"emotionPrompt": "Emotion Prompt",
"emotionPromptTip": "(Leave empty for auto-reference)",
"emotionPlaceholder": "e.g. laugh, English only...",
"emotionStrength": "Emotion Strength",
"flat": "Flat",
"intense": "Intense",
"generating": "Generating...",
"generateVoice": "Generate Voice",
"toolbar": {
"back": "← Back",
"analyzeLines": "Analyze Lines",
"addLine": "+ Add Voice",
"generateAll": "Generate All Voices",
"downloadAll": "Download Voices",
"generatingCount": "Generating ({count})",
"packing": "Packing...",
"stats": "{total} lines | {withVoice} with voice | {withAudio} generated",
"noDownload": "No voices to download",
"downloadCount": "Download {count} voices",
"uploadReferenceHint": "Please upload reference audio for all characters first"
},
"speakerVoice": {
"title": "Speaker Voice Status",
"hint": "Please upload reference audio for characters in Asset Library",
"linesCount": "{count} lines",
"noVoice": "No reference voice",
"configured": "✓ Configured",
"playVoice": "Play current voice",
"aiDesign": "AI Design Voice",
"aiDesignVoice": "AI Design Voice",
"redesign": "Redesign voice with AI",
"uploadAudio": "Upload audio",
"uploading": "Uploading",
"upload": "Upload",
"microsoftVoice": "Microsoft Voice",
"microsoft": "MS",
"maleVoices": "Male",
"femaleVoices": "Female",
"openAssetLibrary": "Asset Library",
"configuredStatus": "Voice Set",
"pendingStatus": "Voice Pending",
"voiceSettings": "Voice Settings",
"inlineLabel": "Inline"
},
"inlineBinding": {
"title": "Set voice for \"{speaker}\"",
"description": "This speaker is not in the asset library. Choose a method to set a reference voice.",
"selectFromLibrary": "Select from Voice Library",
"selectFromLibraryDesc": "Choose an existing global voice",
"uploadAudio": "Upload Reference Audio",
"uploadAudioDesc": "Upload MP3, WAV or other audio files as reference voice",
"aiDesign": "AI Design Voice",
"aiDesignDesc": "Use AI to generate an exclusive reference voice"
},
"embedded": {
"linesStats": "{total} lines · {audio} generated",
"reanalyze": "Re-analyze",
"analyzeLines": "Analyze Lines",
"reanalyzeHint": "Re-analyze lines and update shot matching",
"analyzeHint": "Extract lines from script",
"downloadVoice": "Download Voices",
"generateAllVoice": "Generate All Voices",
"pendingCount": "({count} pending)",
"generatingProgress": "Generating ({current}/{total})",
"generatingHint": "Generating...",
"noVoiceHint": "Please set voice for all characters above first",
"noLinesHint": "No lines to generate",
"allDoneHint": "All lines generated",
"generateHint": "Click to generate {count} pending voices",
"addLine": "+ Add Voice",
"speakerVoiceStatus": "Speaker Voice Status",
"speakersCount": "{count}",
"listen": "Listen",
"listenVoice": "Listen to voice",
"reset": "Reset",
"resetDesign": "Redesign",
"aiDesign": "AI Design",
"assetLibrary": "Asset Library"
},
"lineCard": {
"generatingVoice": "Generating",
"speaker": "Speaker",
"speakerPlaceholder": "Speaker name",
"content": "Content",
"contentPlaceholder": "Line content",
"emotionConfigured": "Emotion set",
"emotionSettings": "Emotion Settings",
"voiceConfigured": "✓ Configured",
"needVoice": "Please set voice above",
"locatePanel": "Locate bound shot",
"locateVideo": "Locate Video",
"play": "Play",
"pause": "Pause",
"locatePanelCta": "Jump to Shot {index}",
"editLine": "Edit line",
"deleteLine": "Delete line",
"deleteAudio": "Delete audio"
},
"lineEditor": {
"addTitle": "Add Voice Line",
"editTitle": "Edit Voice Line",
"contentLabel": "Line Content",
"contentPlaceholder": "Enter line content",
"speakerLabel": "Speaker",
"speakerPlaceholder": "Enter speaker name",
"selectSpeaker": "Select a speaker",
"noSpeakerOptions": "No available speakers in this project yet. Analyze lines first.",
"bindPanelLabel": "Bind Shot",
"unboundPanel": "Unbound",
"panelLabel": "Shot {index}",
"saveAdd": "Add Voice",
"saveEdit": "Save Changes"
},
"empty": {
"title": "No Voice Lines",
"description": "Extract lines and speakers from script",
"analyzeButton": "Analyze Lines",
"hint": "Please upload reference audio for characters in Asset Library first"
},
"confirm": {
"deleteLine": "Are you sure you want to delete this line?\n\n\"{content}\"\n\nThis action cannot be undone.",
"deleteAudio": "Are you sure you want to delete this audio?\n\n\"{content}\"\n\nThis action cannot be undone."
},
"errors": {
"saveFailed": "Save Failed",
"analyzeFailed": "Analysis Failed",
"generateFailed": "Generation Failed",
"batchFailed": "Batch Generation Failed",
"downloadFailed": "Download Failed",
"deleteFailed": "Delete Failed",
"addFailed": "Add Voice Failed",
"invalidLineInput": "Content and speaker cannot be empty",
"bindFailed": "Bind shot failed",
"deleteAudioFailed": "Delete Audio Failed",
"uploadFailed": "Upload Failed",
"voiceDesignFailed": "Voice Design Save Failed",
"emotionSaveFailed": "Emotion Settings Save Failed",
"voiceGenerateFailed": "Voice Generation Failed"
},
"alerts": {
"insufficientBalance": "Insufficient Balance",
"insufficientBalanceMsg": "Account balance insufficient, please top up to continue",
"noLinesToGenerate": "No lines to generate (please upload reference audio for characters first)",
"generateComplete": "Complete: {success}/{total} successful",
"generateFailed": "{count} failed",
"speakerVoiceSet": "Reference audio set for {speaker}",
"speakerVoiceUploaded": "Reference audio uploaded for {speaker}",
"voiceDesignSet": "AI designed voice set for {speaker}"
},
"common": {
"loading": "Loading...",
"save": "Save",
"cancel": "Cancel",
"cancelling": "Cancelling...",
"upload": "Upload",
"download": "Download",
"generate": "Generate",
"regenerate": "Regenerate"
},
"assets": {
"image": {
"uploadFailed": "Upload Failed"
},
"stage": {
"analyzing": "Analyzing..."
}
},
"smartImport": {
"errors": {
"analyzeFailed": "Analysis Failed"
}
},
"video": {
"panelCard": {
"play": "Play"
}
},
"tts": {
"generatedAudio": "Generated Audio",
"browserNotSupport": "Your browser does not support audio playback",
"audioDuration": "Audio Duration:",
"subtitleCount": "Subtitle Count:",
"noAudio": "No audio",
"srtPreview": "SRT Subtitle Preview",
"noSubtitle": "No subtitles",
"stats": "Generation Stats",
"minute": "min",
"second": "sec",
"items": "items",
"completed": "✓ Completed",
"regenerating": "Regenerating...",
"regenerateTTS": "Regenerate TTS",
"nextStep": "Next: Analyze Assets",
"readyTip": "Click to proceed to asset analysis",
"needGenerate": "Please generate TTS audio first"
},
"voiceCreate": {
"aiDesignMode": "AI Design Voice",
"uploadMode": "Upload Audio",
"dropOrClick": "Drop file or click to select",
"supportedFormats": "Supports MP3, WAV, OGG, M4A, AAC formats",
"invalidFileType": "Unsupported file format. Please upload an audio file",
"fileTooLarge": "File too large. Maximum 50MB supported",
"previewAudio": "Preview Audio",
"uploading": "Uploading...",
"uploadFailed": "Upload failed",
"uploadSuccess": "Upload successful"
},
"voiceDesign": {
"presets": {
"maleBroadcaster": "Male Broadcaster",
"gentleFemale": "Gentle Female",
"matureMale": "Mature Male",
"livelyFemale": "Lively Girl",
"intellectualFemale": "Intellectual Female",
"narrator": "Narrator"
},
"presetsPrompts": {
"maleBroadcaster": "Middle-aged male broadcaster with steady, deep voice, clear pronunciation",
"gentleFemale": "Gentle and sweet young woman with clear, melodious voice",
"matureMale": "Mature male with charismatic and expressive voice",
"livelyFemale": "Lively young girl with sweet, cute, energetic voice",
"intellectualFemale": "Elegant intellectual woman with clear, pleasant voice",
"narrator": "Emotional narrator with warm, storytelling voice"
},
"defaultPreviewText": "Hello, nice to meet you. This is your AI-designed exclusive voice. Let me demonstrate its features for you. Whether it's a gentle conversation or an excited narration, I can deliver it perfectly. I hope you enjoy this voice, let's create amazing content together.",
"pleaseSelectStyle": "Please enter or select a voice style",
"designVoiceFor": "Design AI Voice for \"{speaker}\"",
"hasExistingVoice": "Has voice",
"selectStyle": "Select voice style:",
"orCustomDescription": "Or custom description:",
"describePlaceholder": "Describe voice characteristics: age, gender, tone, pitch...",
"editPreviewText": "Edit preview text",
"generate3Schemes": "Generate 3 Voice Schemes",
"generating3Schemes": "Generating 3 voice schemes...",
"estimatedTime": "Est. 15-30 seconds",
"selectScheme": "Select voice scheme:",
"schemeN": "Scheme {n}",
"regenerate": "Regenerate",
"confirmUse": "✓ Confirm Use",
"confirmReplace": "Confirm Replace Voice?",
"replaceWarning": "'s original voice, irreversible",
"confirmReplaceBtn": "Confirm Replace",
"noVoiceGenerated": "No voice generated",
"generationError": "Voice generation failed",
"generateFailed": "Failed to generate voice {n}",
"preview": "Preview",
"playing": "Playing"
}
}

View File

@@ -0,0 +1,31 @@
{
"title": "My Projects",
"subtitle": "Manage your AI anime production projects",
"newProject": "New Project",
"searchPlaceholder": "Search project name or description...",
"searchButton": "Search",
"clearButton": "Clear",
"updatedAt": "Updated at",
"noProjects": "No projects yet",
"noProjectsDesc": "Create your first AI anime production project",
"noResults": "No matching projects found",
"noResultsDesc": "Try using different search terms",
"createProject": "New Project",
"editProject": "Edit Project",
"deleteProject": "Delete Project",
"deleteConfirm": "Are you sure you want to delete project \"{name}\"? This action cannot be undone.",
"projectName": "Project Name",
"projectNamePlaceholder": "Enter project name",
"projectDescription": "Project Description (Optional)",
"projectDescriptionPlaceholder": "Enter project description",
"creating": "Creating...",
"saving": "Saving...",
"createFailed": "Failed to create project",
"updateFailed": "Failed to update project",
"deleteFailed": "Failed to delete project",
"totalProjects": "{count} projects in total",
"statsEpisodes": "Episodes",
"statsImages": "Images",
"statsVideos": "Videos",
"noContent": "No content yet"
}

View File

@@ -0,0 +1,24 @@
{
"globalAssets": "Global Assets",
"createFailed": "Creation failed",
"deleteFailed": "Deletion failed",
"renameFailed": "Rename failed",
"refreshFailed": "Refresh failed",
"projectNotFound": "Project not found",
"backToWorkspace": "Back to Workspace",
"episode": "Episode",
"sidebar": {
"dragToMove": "Drag to move position",
"listTitle": "Episode List",
"episodeCount": "{count} episodes",
"empty": "No episodes yet. Create one below.",
"save": "Save",
"deleteConfirm": "Delete \"{name}\"?",
"delete": "Delete",
"cancel": "Cancel",
"rename": "Rename",
"newEpisodePlaceholder": "Enter episode name...",
"create": "Create",
"addEpisode": "Add Episode"
}
}

View File

@@ -0,0 +1,6 @@
{
"title": "World & Character Settings",
"description": "Define global character appearances, scene styles, and environment descriptions",
"placeholder": "Example:\n【Protagonist】John, 25, short black hair, always wearing a faded denim jacket, melancholy eyes.\n【Heroine】Jane, 22, red twin tails, lively personality, likes to wear Lolita-style dresses.\n【Scene】Cyberpunk city in 2077, neon lights flashing, raining all year round...",
"hint": "These settings will be inherited by all episodes as a reference for AI drawing."
}