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."
}

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

@@ -0,0 +1,18 @@
{
"storyboard": "分镜图",
"storyboard_candidate": "分镜候选",
"character": "角色图",
"location": "场景图",
"video": "视频",
"analyze": "分析",
"analyze_character": "角色分析",
"analyze_location": "场景分析",
"clips": "片段切割",
"storyboard_text_plan": "分镜规划",
"storyboard_text_detail": "分镜细节",
"tts": "语音合成",
"regenerate": "重生成",
"voice-generate": "配音生成",
"voice-design": "声音设计",
"lip-sync": "口型同步"
}

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

@@ -0,0 +1,107 @@
{
"title": "API 配置",
"saving": "保存中...",
"saved": "已保存",
"saveFailed": "保存失败",
"connected": "已连接",
"notConfigured": "未配置 Key",
"configure": "配置",
"connect": "连接",
"show": "显示",
"hide": "隐藏",
"capability": "能力",
"default": "默认",
"delete": "删除",
"add": "添加",
"cancel": "取消",
"save": "保存",
"comingSoon": "待上线",
"priceInput": "输入 {amount}",
"priceOutput": "输出 {amount}",
"priceUnavailable": "暂无定价",
"fillComplete": "请填写完整信息",
"fillPricing": "请填写价格信息",
"pricingInputLabel": "输入价格",
"pricingOutputLabel": "输出价格",
"modelIdExists": "模型 ID 已存在",
"modelDisplayName": "外显名称(你自己看的)",
"modelActualId": "实际调用 ID模型参数",
"noModelsForProvider": "该厂商暂无配置模型",
"defaultModels": "默认模型配置",
"textDefault": "文本模型",
"characterDefault": "角色模型",
"locationDefault": "场景模型",
"storyboardDefault": "分镜模型",
"editDefault": "修图模型",
"videoDefault": "视频模型",
"lipsyncDefault": "口型同步模型",
"selectDefault": "请选择",
"providerPool": "厂商资源池",
"providerIdExists": "该提供商 ID 已存在",
"presetProviderCannotDelete": "预设提供商不能删除",
"confirmDeleteProvider": "确定删除这个提供商吗?",
"presetModelCannotDelete": "预设模型不能删除",
"confirmDeleteModel": "确定删除这个模型吗?",
"addGeminiProvider": "新增模型服务商",
"baseUrl": "Base URL",
"configureBaseUrl": "配置地址",
"addModel": "添加模型",
"batchModeHalfPrice": "批量模式(价格减半)",
"typeText": "文本",
"typeImage": "图像",
"typeVideo": "视频",
"typeAudio": "音频等",
"apiKeyLabel": "API Key",
"apiType": "API 类型",
"apiTypeGeminiCompatible": "Gemini 兼容",
"apiTypeOpenAICompatible": "OpenAI 兼容",
"apiTypeGeminiHint": "使用 Google SDK",
"otherProviders": "其他配置",
"audioCategory": "音频",
"audioAndLipsync": "语音与唇形同步",
"configureApiKey": "配置 API Key",
"enterApiKey": "请输入 API Key",
"tabs": {
"llm": "文本模型",
"image": "图片模型",
"video": "视频模型",
"audio": "音频等模型",
"other": "其他"
},
"sections": {
"llmApiKeys": "文本模型 API Keys",
"imageApiKeys": "图片模型 API Keys",
"videoApiKeys": "视频模型 API Keys",
"audioApiKey": "音频模型 API Key",
"lipsyncApiKey": "唇形同步 API Key"
},
"defaultModel": {
"title": "默认模型",
"hint": "新建项目和资产库将使用此默认配置",
"notSelected": "未选择",
"analysis": "分析模型",
"image": "图片生成",
"video": "视频生成",
"resolution": "图片分辨率"
},
"viewTutorial": "查看教程",
"tutorial": {
"button": "开通教程",
"title": "开通教程",
"subtitle": "按照以下步骤完成配置",
"close": "我知道了",
"openLink": "点击打开",
"steps": {
"ark_step1": "进入火山引擎控制台,开通 API Key",
"ark_step2": "在模型管理页面,点击右上角「一键开通所有模型」",
"openrouter_step1": "进入 OpenRouter 平台,创建 API Key必须选择带有图像功能的模型",
"fal_step1": "进入 FAL 平台,创建 API Key",
"google_step1": "进入 Google AI Studio创建 API Key",
"minimax_step1": "进入海螺 MiniMax 平台,获取 API Key",
"vidu_step1": "进入生数科技 Vidu 平台,点击「新建 API Key」",
"openai_compatible_step1": "填写任意 OpenAI 协议兼容服务的 Base URL 与 API Key",
"gemini_compatible_step1": "填写任意 Gemini 协议兼容服务的 Base URL 与 API Key",
"qwen_step1": "进入阿里云百炼平台,获取 API Key"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"image": "图片生成",
"video": "视频生成",
"text": "文本分析",
"tts": "语音合成",
"voice": "配音",
"voice_design": "声音设计",
"lip_sync": "口型同步"
}

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

@@ -0,0 +1,101 @@
{
"title": "资产中心",
"description": "管理您的全局角色和场景资产",
"modelHint": "资产中心使用默认模型,如需修改请在",
"modelHintLink": "API配置页面",
"modelHintSuffix": "进行设置",
"folders": "文件夹",
"noFolders": "暂无文件夹",
"allAssets": "所有资产",
"characters": "角色",
"locations": "场景",
"voices": "音色",
"addCharacter": "新建角色",
"addLocation": "新建场景",
"addVoice": "新建音色",
"newFolder": "新建文件夹",
"editFolder": "编辑文件夹",
"deleteFolder": "删除文件夹",
"folderName": "文件夹名称",
"folderNamePlaceholder": "请输入文件夹名称",
"emptyState": "暂无资产",
"emptyStateHint": "点击上方按钮添加角色或场景",
"generate": "生成图片",
"generating": "生成中...",
"regenerate": "重新生成",
"undo": "撤回",
"delete": "删除",
"cancel": "取消",
"save": "保存",
"create": "创建",
"confirmDeleteFolder": "确定删除此文件夹吗?文件夹内的资产将移至未分类。",
"confirmDeleteCharacter": "确定删除此角色吗?此操作无法撤回。",
"confirmDeleteLocation": "确定删除此场景吗?此操作无法撤回。",
"confirmDeleteVoice": "确定删除此音色吗?此操作无法撤回。",
"voiceName": "音色名称",
"voiceNamePlaceholder": "请输入音色名称",
"voiceNameRequired": "请输入音色名称",
"voicePickerTitle": "从音色库选择",
"voicePickerEmpty": "暂无音色,请先创建音色",
"voicePickerConfirm": "确认选择",
"pagination": {
"previous": "上一页",
"next": "下一页"
},
"common": {
"cancel": "取消"
},
"generateFailed": "生成失败",
"selectFailed": "选择失败",
"uploadFailed": "上传失败",
"editFailed": "编辑失败",
"saveVoiceFailed": "保存声音失败",
"saveVoiceFailedDetail": "保存声音失败: {error}",
"bindVoiceFailed": "绑定音色失败",
"bindVoiceFailedDetail": "绑定音色失败: {error}",
"voiceDesignSaved": "已为 {name} 设置 AI 设计的声音",
"appearanceLabel": "形象 {index}",
"voiceSettings": {
"title": "配音音色",
"noVoice": "无音色",
"previewFailed": "预览失败: {error}",
"uploadFailed": "上传音频失败: {error}",
"uploading": "上传中...",
"uploaded": "已上传",
"uploadAudio": "上传音频",
"aiDesign": "AI设计",
"voiceLibrary": "音色库",
"pause": "暂停",
"preview": "试听音色"
},
"modal": {
"newCharacter": "新建角色",
"confirm": "确定",
"processing": "处理中...",
"newLocation": "新建场景",
"addCharacter": "创建角色",
"addLocation": "创建场景",
"adding": "创建中...",
"aiDesign": "AI 设计",
"aiDesignPlaceholder": "例如:一个身穿红色长裙的古风美女,长发飘飘,手持折扇",
"aiDesignLocationPlaceholder": "例如:一个古典中式园林,有假山流水和亭台楼阁",
"aiDesignTip": "AI 将根据您的需求生成详细的描述,您可以在生成后编辑",
"aiDesignLocationTip": "AI 将根据您的需求生成详细的场景描述",
"generate": "生成",
"generating": "生成中...",
"nameLabel": "角色名称",
"namePlaceholder": "请输入角色名称",
"descLabel": "角色描述",
"descPlaceholder": "请描述角色的外形特征、服装、发型等...",
"locationNameLabel": "场景名称",
"locationNamePlaceholder": "请输入场景名称",
"locationSummaryLabel": "场景描述",
"locationSummaryPlaceholder": "请描述场景的环境、氛围、特征等...",
"referenceUpload": "上传参考图",
"referenceUploadTip": "上传一张角色图片AI 将自动转换为三视图设定图",
"convertToCharacter": "转换三视图",
"converting": "转换中...",
"dropOrClick": "拖放图片或点击上传",
"supportedFormats": "支持 JPG、PNG 格式"
}
}

View File

@@ -0,0 +1,14 @@
{
"title": "资产库",
"button": "资产库",
"characters": "角色",
"locations": "场景",
"noCharacters": "暂无角色",
"noLocations": "暂无场景",
"addCharacter": "添加角色",
"addLocation": "添加场景",
"generateImage": "生成图片",
"regenerateImage": "重新生成",
"analyzeAssets": "分析资产",
"analyzing": "分析中..."
}

View File

@@ -0,0 +1,78 @@
{
"character": {
"title": "新建角色",
"name": "角色名称",
"namePlaceholder": "请输入角色名称",
"modeReference": "参考图模式",
"modeDescription": "描述模式",
"isSubAppearance": "这是一个子形象",
"isSubAppearanceHint": "为已有角色添加新的形象状态",
"uploadReference": "上传参考图",
"pasteHint": "Ctrl+V 粘贴",
"dropOrClick": "点击上传或拖拽图片",
"supportedFormats": "支持 JPG、PNG 等格式",
"nameRequired": "请先输入角色名称才能使用参考图转换",
"convertToSheet": "将参考图转换为标准三视图",
"referenceTip": "上传任意角色图片AI 将自动生成标准三视图设定",
"description": "角色描述",
"modifyDescription": "修改描述",
"descPlaceholder": "请输入角色外貌描述...",
"modifyDescriptionPlaceholder": "描述要对主形象做什么修改,例如:换上正装、受伤后的状态、披上斗篷...",
"selectMainCharacter": "选择主角色",
"selectCharacterPlaceholder": "请选择角色...",
"appearancesCount": "{count} 个形象",
"changeReason": "形象变化原因",
"changeReasonPlaceholder": "例如:战斗后受伤、穿上正装参加宴会...",
"defaultDescription": "{name} 的角色设定",
"generationMode": "生成方式",
"directGenerate": "直接生成",
"extractPrompt": "反推提示词",
"extractFirst": "先提取描述",
"directGenerateDesc": "直接使用参考图生成角色设定图(图生图)",
"extractPromptDesc": "先从图片提取角色描述,可编辑后再生成(文生图)",
"maxReferenceImages": "最多上传 5 张参考图",
"selectedCount": "已选择 {count}/5 张参考图",
"extractDescription": "提取角色描述",
"extracting": "提取中...",
"extractedDescription": "提取的角色描述(可编辑)",
"reExtract": "重新提取",
"editHint": "编辑后点击下方按钮生成角色设定图",
"generateFromDescription": "使用描述生成",
"textToImageTip": "文生图模式:基于提取的描述生成角色设定图",
"pleaseExtractFirst": "请先提取角色描述"
},
"location": {
"title": "新建场景",
"name": "场景名称",
"namePlaceholder": "请输入场景名称",
"description": "场景描述",
"descPlaceholder": "请输入场景描述..."
},
"artStyle": {
"title": "画面风格"
},
"aiDesign": {
"title": "AI 设计",
"placeholder": "描述你想要的角色特征...",
"placeholderLocation": "描述场景氛围和环境...",
"generating": "设计中...",
"generate": "生成",
"tip": "输入简单描述AI 帮你生成详细设定"
},
"common": {
"creating": "创建中...",
"create": "创建",
"cancel": "取消",
"adding": "添加中...",
"add": "添加",
"optional": "(可选)"
},
"errors": {
"uploadFailed": "上传失败",
"extractDescriptionFailed": "提取描述失败",
"createFailed": "创建失败",
"aiDesignFailed": "AI 设计失败",
"addSubAppearanceFailed": "添加子形象失败",
"insufficientBalance": "账户余额不足"
}
}

View File

@@ -0,0 +1,18 @@
{
"selectCharacter": "从资产中心选择角色",
"selectLocation": "从资产中心选择场景",
"selectVoice": "从资产中心选择音色",
"searchPlaceholder": "搜索资产名称或文件夹...",
"noAssets": "资产中心暂无资产",
"createInAssetHub": "请先在资产中心创建角色/场景/音色",
"noSearchResults": "未找到匹配的资产",
"appearances": "个形象",
"images": "张图片",
"cancel": "取消",
"confirmCopy": "确认复制",
"copyFromGlobal": "从资产中心复制",
"copySuccess": "复制成功",
"copyFailed": "复制失败",
"preview": "试听",
"stop": "停止"
}

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

@@ -0,0 +1,321 @@
{
"stage": {
"title": "资产确认",
"characters": "角色",
"locations": "场景",
"analyze": "分析资产",
"analyzing": "分析中...",
"generateAll": "批量生成全部",
"noCharacters": "暂无角色",
"noLocations": "暂无场景",
"confirmProfiles": "角色档案待确认",
"confirmHint": "请确认以下角色档案后生成外貌描述",
"confirmAll": "全部确认 ({count})",
"assetsTitle": "资产分析",
"characterAssets": "角色资产",
"locationAssets": "场景资产",
"counts": "{characterCount} 个角色,{appearanceCount} 个形象",
"locationCounts": "{count} 个场景",
"undoFailed": "撤回失败",
"undoFailedError": "撤回失败: {error}",
"undoSuccess": "已撤回到上一版本",
"editFailed": "编辑失败",
"editFailedError": "图片编辑失败: {error}",
"updateSuccess": "描述词已同步更新"
},
"character": {
"add": "添加角色",
"edit": "编辑角色",
"delete": "删除角色",
"deleteConfirm": "确定要删除这个角色吗?",
"deleteAppearanceConfirm": "确定要删除这个形象吗?",
"deleteFailed": "删除失败: {error}",
"deleteWhole": "删除整个角色",
"deleteOptions": "删除选项",
"name": "角色名",
"description": "外貌描述",
"generateImage": "生成形象",
"regenerateImage": "重新生成",
"generate": "生成",
"regenerating": "生成中...",
"profile": "设定档案",
"voiceSettings": "配音设置",
"speaker": "说话人",
"selectSpeaker": "选择说话人",
"noSpeaker": "未设置",
"primary": "主形象",
"secondary": "子状态",
"generateFromPrimary": "基于主形象生成",
"selectPrimaryFirst": "请先选择主形象",
"editing": "编辑中...",
"confirming": "确认中...",
"assetCount": "{count} 个形象",
"characterCount": "{count} 个角色",
"updateFailed": "更新描述失败",
"addFailed": "添加角色失败",
"copyFromGlobal": "从资产中心复制"
},
"location": {
"add": "添加场景",
"edit": "编辑场景",
"delete": "删除场景",
"deleteConfirm": "确定要删除这个场景吗?",
"deleteFailed": "删除失败: {error}",
"name": "场景名",
"summary": "简要描述",
"summaryPlaceholder": "场景用途/人物关联,如:张三居住的主卧室",
"description": "场景描述",
"generateImage": "生成图片",
"regenerateImage": "重新生成",
"updateFailed": "更新描述失败",
"addFailed": "添加场景失败"
},
"image": {
"upload": "上传图片",
"uploadReplace": "上传替换图片",
"uploadFailed": "上传失败",
"uploadFailedError": "上传失败: {error}",
"uploadSuccess": "上传成功!",
"edit": "编辑图片",
"editPrompt": "编辑提示词",
"undo": "撤回到上一版本",
"undoConfirm": "确定要撤回到上一版本吗?当前版本将被删除。",
"regenerateGroup": "整组重新生成",
"regenerateStuck": "点击重新生成(当前卡住)",
"selectTip": "选择并确认后,可对图片进行编辑和修改",
"selectFirst": "请选择一张图片",
"useThis": "选择此方案",
"optionAlt": "{name} - 方案{number}",
"optionNumber": "方案{number}",
"optionSelected": "已选择方案{number}",
"confirmOption": "确定选择方案{number}",
"deleteOthersHint": "(删除其他)",
"confirmSuccess": "确认成功",
"confirmFailed": "确认选择失败: {error}",
"selectFailed": "选择图片失败: {error}",
"cancelSelection": "取消选择",
"deleteThis": "删除此形象",
"undoFailed": "撤回失败",
"undoSuccess": "✓ 已撤回到上一版本",
"editFailed": "图片编辑失败",
"editSuccess": "图片编辑成功",
"regenerateFailed": "重新生成失败: {error}"
},
"modal": {
"newCharacter": "新增角色",
"addSubAppearance": "添加子形象",
"aiDesign": "AI智能设计",
"aiDesigning": "AI设计中...",
"designInstruction": "请输入设计指令",
"enterNameDesc": "请填写角色名称和描述",
"selectCharacter": "请选择一个角色",
"enterChangeReason": "请填写形象变化原因",
"enterSubDesc": "请填写形象描述",
"insufficientBalance": "余额不足\n\n{error}",
"designFailed": "AI设计失败: {error}",
"addFailed": "添加失败: {error}",
"aiDesignPlaceholderNew": "例如一个20岁的女性魔法师金色长发蓝色眼睛穿着紫色法袍...",
"aiDesignPlaceholderSub": "例如:换上黑色劲装,脚蹬厚底战靴,准备战斗的状态...",
"aiTipNew": "描述你想要的角色AI会自动生成详细描述",
"aiTipSub": "描述角色的新状态AI会生成子形象描述只描述变化部分",
"nameLabel": "角色名称",
"namePlaceholder": "输入角色名称...",
"descLabel": "形象描述",
"descPlaceholder": "输入角色形象描述...",
"selectLabel": "选择角色",
"selectPlaceholder": "-- 请选择角色 --",
"existingAppearances": "现有形象:",
"reasonLabel": "形象变化原因",
"reasonPlaceholder": "例如:换装后、受伤状态、出浴状态...",
"reasonTip": "简短描述这个形象与主形象的区别原因",
"subDescPlaceholder": "只描述变化部分,例如:换装,脚蹬厚底战靴...",
"subDescTip": "子形象只需描述变化部分(服装、状态等),面部和体型会自动继承主形象",
"adding": "添加中...",
"insufficientBalanceDefault": "账户余额不足,请充值后继续使用",
"addFailedGeneric": "添加失败",
"appearancesCount": "个形象",
"addCharacter": "新增角色",
"addLocation": "新增场景",
"aiDesignTip": "描述你想要的场景AI会自动生成名称和详细描述",
"designing": "AI设计中...",
"saveName": "保存名字",
"saveOnly": "仅保存",
"sceneDescription": "场景描述",
"scenePrompt": "场景描述提示词",
"appearancePrompt": "形象描述提示词",
"smartModify": "智能修改",
"modifyPlaceholder": "例如:改成夜晚,添加月光,增加窗帘...",
"modifyPlaceholderCharacter": "例如把头发改成金色、身高改为180cm、穿黑色西装...",
"modifying": "智能修改中...",
"modifyFailed": "修改失败",
"editCharacter": "编辑角色",
"editLocation": "编辑场景",
"saveAndGenerate": "保存并生成",
"generatingAutoClose": "正在生成图片,完成后将自动关闭...",
"aiLocationTip": "输入你想修改的内容AI会自动调整场景描述",
"aiDesignPlaceholderLocation": "例如:一个古老的魔法图书馆,高耸的书架,昏暗的烛光,神秘的氛围...",
"artStyle": "画面风格",
"generate": "生成",
"introduction": "角色介绍",
"introductionPlaceholder": "例如:本书主角,第一人称'我'指的就是她。其他角色称她为'小雪'或'雪姐'...",
"introductionTip": "描述角色在故事中的身份、叙述视角(如'我'对应谁)、其他角色如何称呼她等",
"saveIntroduction": "保存介绍"
},
"toolbar": {
"filter": "筛选",
"viewAll": "查看全部",
"showGenerated": "已生成",
"showPending": "待生成",
"assetManagement": "资产管理",
"assetCount": "共 {total} 个资产({appearances} 角色形象 + {locations} 场景)",
"globalAnalyze": "全局分析",
"globalAnalyzing": "正在执行全局资产分析...",
"globalAnalyzingHint": "请勿刷新页面,分析完成后将自动显示结果",
"globalAnalyzingTip": "正在分析所有剧集内容,提取角色和场景...",
"globalAnalyzeHint": "分析所有剧集内容,提取角色和场景",
"globalAnalyzeSuccess": "全局分析完成:新增 {characters} 个角色,{locations} 个场景",
"globalAnalyzeFailed": "全局分析失败",
"generateAll": "生成全部图片",
"generateAllNoop": "所有资产都已有图片,无需生成",
"generating": "生成中 ({current}/{total})",
"regenerateAll": "重新生成全部",
"regenerateAllConfirm": "确定要重新生成所有资产的图片吗?这将覆盖现有图片。",
"noAssetsToGenerate": "没有可生成的资产",
"regenerateAllHint": "重新生成所有资产图片(覆盖现有)"
},
"common": {
"actions": "操作",
"add": "添加",
"cancel": "取消",
"confirm": "确认",
"copy": "复制",
"delete": "删除",
"download": "下载",
"edit": "编辑",
"generate": "生成",
"generateFailed": "生成失败",
"loading": "加载中...",
"none": "无",
"preview": "预览",
"refresh": "刷新",
"regenerate": "重新生成",
"save": "保存",
"status": "状态",
"submitFailed": "提交失败",
"upload": "上传",
"unknownError": "未知错误"
},
"video": {
"panelCard": {
"generating": "生成中...",
"editPrompt": "编辑提示词"
}
},
"smartImport": {
"preview": {
"saving": "保存中..."
}
},
"storyboard": {
"group": {
"generating": "生成中..."
}
},
"errors": {
"saveFailed": "保存失败,请重试",
"failed": "失败,请重试",
"insufficientBalance": "账户余额不足",
"aiDesignFailed": "AI 设计失败",
"createFailed": "创建失败"
},
"assetLibrary": {
"button": "资产库",
"title": "资产库",
"copySuccessCharacter": "角色形象复制成功",
"copySuccessLocation": "场景图片复制成功",
"copySuccessVoice": "音色复制成功",
"copyFailed": "复制失败: {error}"
},
"tts": {
"voiceDesignSaved": "已为 {name} 设置 AI 设计的声音",
"saveVoiceDesignFailed": "保存声音设计失败: {error}",
"title": "配音音色",
"noVoice": "无音色",
"previewFailed": "预览失败: {error}",
"uploadFailed": "上传音频失败: {error}",
"uploading": "上传中...",
"uploaded": "已上传",
"uploadAudio": "上传音频",
"pause": "暂停",
"preview": "试听音色"
},
"characterProfile": {
"importance": {
"S": "S级 - 绝对主角",
"A": "A级 - 核心配角",
"B": "B级 - 重要配角",
"C": "C级 - 次要角色",
"D": "D级 - 群众演员"
},
"costumeLevel": {
"5": "皇室/顶奢级",
"4": "贵族/精英级",
"3": "专业/品质级",
"2": "日常/普通级",
"1": "朴素/统一级"
},
"importanceLevel": "角色重要性层级",
"characterArchetype": "角色原型",
"archetypePlaceholder": "如: 霸道总裁、心机婊",
"personalityTags": "性格标签",
"addTagPlaceholder": "添加标签",
"costumeLevelLabel": "服装华丽度",
"suggestedColors": "建议色彩",
"colorPlaceholder": "如: 深蓝、金色",
"primaryMarker": "主要辨识标志",
"markerNote": "(S/A级推荐)",
"markingsPlaceholder": "如: 眼角泪痣、左耳银色耳钉",
"visualKeywords": "视觉关键词",
"keywordsPlaceholder": "如: 精英气质、禁欲系",
"editDialogTitle": "编辑角色档案 - {name}",
"confirmAndGenerate": "确认并生成",
"useExisting": "使用已有形象",
"editProfile": "编辑档案",
"delete": "删除此角色",
"summary": {
"gender": "性别:",
"age": "年龄:",
"era": "时代:",
"class": "阶层:",
"occupation": "职业:",
"personality": "性格:",
"costume": "服装:",
"identifier": "标志:"
},
"parseFailed": "档案数据解析失败",
"confirmSuccessGenerating": "✓ 档案确认成功,正在生成视觉描述",
"confirmFailed": "确认失败: {error}",
"noPendingCharacters": "没有待确认的角色",
"batchConfirmPrompt": "确认为 {count} 个角色生成视觉描述吗?",
"batchConfirmSuccess": "✓ 已为 {count} 个角色生成视觉描述",
"batchConfirmFailed": "批量确认失败: {error}",
"deleteConfirm": "确定要删除此角色吗?此操作不可撤销。",
"deleteSuccess": "✓ 角色已删除",
"deleteFailed": "删除失败: {error}"
},
"imageEdit": {
"editCharacterImage": "编辑人物图片",
"editLocationImage": "编辑场景图片",
"characterLabel": "人物: {name}",
"locationLabel": "场景: {name}",
"editInstruction": "修改指令",
"subtitle": "输入修改指令,可选择上传参考图片",
"characterPlaceholder": "描述你想要修改的内容,例如:把头发改成金色、添加眼镜、换成休闲装...",
"locationPlaceholder": "描述你想要修改的内容,例如:添加更多树木、改成夜晚场景...",
"storyboardPlaceholder": "描述你想要修改的内容,例如:改变背景颜色、调整人物表情...",
"noAssetHint": "暂无资产,点击\"添加资产\"选择",
"referenceImages": "参考图片",
"referenceImagesHint": "(可选,支持粘贴)",
"startEditing": "开始编辑"
}
}

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

@@ -0,0 +1,29 @@
{
"welcomeBack": "欢迎回来",
"loginTo": "登录到waoowaoo",
"createAccount": "创建账户",
"joinPlatform": "加入waoowaoo",
"phoneNumber": "用户名",
"password": "密码",
"confirmPassword": "确认密码",
"phoneNumberPlaceholder": "请输入用户名",
"passwordPlaceholder": "请输入密码",
"passwordMinPlaceholder": "请输入密码至少6位",
"confirmPasswordPlaceholder": "请再次输入密码",
"loginButton": "登录",
"loginButtonLoading": "登录中...",
"signupButton": "注册",
"signupButtonLoading": "注册中...",
"noAccount": "还没有账户?",
"hasAccount": "已有账户?",
"signupNow": "立即注册",
"signinNow": "立即登录",
"backToHome": "← 返回首页",
"loginFailed": "登录失败,请检查手机号和密码",
"loginError": "登录过程中出现错误",
"passwordMismatch": "密码确认不匹配",
"passwordTooShort": "密码长度至少6位",
"signupSuccess": "注册成功!正在跳转到登录页面...",
"signupFailed": "注册失败",
"signupError": "注册过程中出现错误"
}

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

@@ -0,0 +1,15 @@
{
"transactionType": "交易类型",
"startDate": "开始日期",
"endDate": "结束日期",
"all": "全部",
"income": "收入",
"expense": "支出",
"reset": "重置",
"filter": "筛选",
"noRecords": "暂无记录",
"accountRecharge": "账户充值",
"serviceConsumption": "服务消费",
"balance": "余额",
"allTypes": "全部类型"
}

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

@@ -0,0 +1,134 @@
{
"appName": "waoowaoo",
"betaVersion": "Beta v0.1 (测试版)",
"loading": "加载中...",
"save": "保存",
"cancel": "取消",
"confirm": "确认",
"delete": "删除",
"edit": "编辑",
"search": "搜索",
"clear": "清除",
"close": "关闭",
"back": "返回",
"next": "下一步",
"previous": "上一步",
"submit": "提交",
"reset": "重置",
"generate": "生成",
"regenerate": "重新生成",
"preview": "预览",
"download": "下载",
"upload": "上传",
"select": "选择",
"add": "添加",
"remove": "移除",
"refresh": "刷新",
"expand": "展开",
"collapse": "收起",
"all": "全部",
"none": "无",
"success": "成功",
"error": "错误",
"warning": "警告",
"info": "信息",
"copy": "复制",
"paste": "粘贴",
"apply": "应用",
"autoSave": "自动保存",
"saved": "已保存",
"episode": "剧集",
"project": "项目",
"editEpisodeName": "编辑剧集名称",
"deleteEpisode": "删除剧集",
"deleteEpisodeConfirm": "确认删除",
"newEpisode": "新建剧集",
"optional": "(可选)",
"rename": "重命名",
"dragToReorder": "拖动调整位置",
"episodeNamePlaceholder": "输入剧集名称...",
"cancelSelection": "取消选择",
"referenceImage": "参考图",
"previewLarge": "预览大图",
"viewOriginal": "查看原图",
"schemeN": "方案 {n}",
"insufficientBalance": "余额不足",
"insufficientBalanceDetail": "账户余额不足,请充值后继续使用",
"operationFailed": "操作失败",
"pleaseRetry": "请重试",
"recommended": "推荐",
"language": {
"select": "选择语言",
"zh": "中文",
"en": "English",
"switchConfirmTitle": "切换语言?",
"switchConfirmMessage": "切换到 {targetLanguage} 后,不仅界面文字会改变,整条流程的提示词模板、剧本生成和任务输出语言也会同步切换。是否继续?",
"switchConfirmAction": "确认切换"
},
"taskStatus": {
"intent": {
"generate": {
"running": {
"image": "生成中",
"video": "生成中",
"audio": "生成中",
"text": "生成中"
}
},
"regenerate": {
"running": {
"image": "重新生成中",
"video": "重新生成中",
"audio": "重新生成中",
"text": "重新生成中"
}
},
"modify": {
"running": {
"image": "修改中",
"video": "修改中",
"audio": "修改中",
"text": "修改中"
}
},
"analyze": {
"running": {
"image": "分析中",
"video": "分析中",
"audio": "分析中",
"text": "分析中"
}
},
"build": {
"running": {
"image": "构建中",
"video": "构建中",
"audio": "构建中",
"text": "构建中"
}
},
"convert": {
"running": {
"image": "转换中",
"video": "转换中",
"audio": "转换中",
"text": "转换中"
}
},
"process": {
"running": {
"image": "处理中",
"video": "处理中",
"audio": "处理中",
"text": "处理中"
}
}
},
"failed": {
"image": "处理失败",
"video": "处理失败",
"audio": "处理失败",
"text": "处理失败"
}
}
}

View File

@@ -0,0 +1,31 @@
{
"title": "项目全局配置",
"saved": "已保存",
"autoSave": "自动保存",
"visualStyle": "视觉风格",
"modelParams": "模型参数",
"aspectRatio": "画面比例",
"ttsSettings": "旁白配置",
"loadingModels": "加载模型列表...",
"analysisModel": "分析模型",
"characterModel": "人物生成模型",
"locationModel": "场景生成模型",
"storyboardModel": "分镜图像模型",
"editModel": "修图/编辑模型",
"videoModel": "视频模型",
"videoResolution": "视频分辨率",
"ttsVoice": "旁白音色",
"ttsRate": "语速",
"fetchModelsFailed": "获取用户模型列表失败",
"placeholder": "请输入...",
"description": "描述",
"hint": "提示",
"pleaseSelect": "请选择...",
"selectModel": "选择模型",
"paramConfig": "参数配置",
"fixed": "固定",
"noParams": "该模型无可配置参数",
"confirm": "确认",
"cancel": "取消",
"delete": "删除"
}

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

@@ -0,0 +1,19 @@
{
"UNAUTHORIZED": "请先登录",
"FORBIDDEN": "没有权限访问",
"NOT_FOUND": "资源不存在",
"INSUFFICIENT_BALANCE": "API余额不足请充值后重试",
"RATE_LIMIT": "请求过于频繁,请 {retryAfter} 秒后重试",
"QUOTA_EXCEEDED": "配额已用尽,请稍后重试",
"GENERATION_FAILED": "生成失败,请重试",
"GENERATION_TIMEOUT": "生成超时,请重试",
"SENSITIVE_CONTENT": "内容可能包含敏感信息",
"INVALID_PARAMS": "参数错误",
"MISSING_CONFIG": "请先完成模型配置",
"INTERNAL_ERROR": "服务器错误,请稍后重试",
"NETWORK_ERROR": "网络错误,请检查连接",
"EXTERNAL_ERROR": "外部服务暂时不可用,请稍后重试",
"TASK_NOT_READY": "任务正在处理中",
"NO_RESULT": "任务无结果",
"CONFLICT": "资源状态冲突"
}

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

@@ -0,0 +1,26 @@
{
"title": "waoowaoo",
"subtitle": "AI影视Studio",
"enterWorkspace": "进入工作区",
"getStarted": "立即体验",
"learnMore": "了解更多",
"features": {
"title": "释放无限创造力",
"subtitle": "全流程 AI 辅助,从剧本到成片",
"character": {
"title": "角色工坊",
"description": "打造独一无二的动漫角色,保持高度一致性"
},
"storyboard": {
"title": "智能分镜",
"description": "文字一键转分镜,精准把控叙事节奏"
},
"world": {
"title": "世界构建",
"description": "沉浸式场景生成,构建宏大的故事背景"
}
},
"footer": {
"copyright": "2026 waoowaoo AI. All rights reserved."
}
}

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

@@ -0,0 +1,4 @@
{
"title": "AI动漫制作工作台",
"description": "使用最先进的AI技术创建专业级动漫内容"
}

View File

@@ -0,0 +1,27 @@
{
"llmModels": "文本模型列表",
"imageModels": "图片模型列表",
"videoModels": "视频模型列表",
"price": "价格",
"pricePerMillion": "每百万token",
"pricePerImage": "每张",
"pricePerVideo": "每条",
"name": "名称",
"modelId": "模型 ID",
"modelName": "模型名称",
"provider": "厂商",
"resolution": "分辨率",
"add": "添加",
"addModel": "添加模型",
"addNewModel": "添加新模型",
"selectPreset": "选择预设模型",
"customModel": "自定义模型",
"confirmAdd": "确认添加",
"cancel": "取消",
"done": "完成",
"fillComplete": "请填写完整信息",
"noModels": "暂无模型,点击上方按钮添加",
"noApiKey": "请配置API Key",
"batchMode": "批量",
"batchModeTooltip": "离线推理价格便宜50%24小时内完成"
}

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

@@ -0,0 +1,8 @@
{
"workspace": "工作区",
"assetHub": "资产中心",
"profile": "设置中心",
"signin": "登录",
"signup": "注册",
"logout": "退出登录"
}

View File

@@ -0,0 +1,139 @@
{
"stages": {
"story": "故事",
"script": "剧本",
"storyboard": "分镜",
"video": "成片",
"editor": "AI剪辑",
"editorComingSoon": "开发中,关注我们获取最新消息"
},
"buttons": {
"assetLibrary": "资产库",
"settings": "配置",
"refreshData": "刷新项目数据",
"enterVideoGeneration": "进入视频生成 →"
},
"smartImport": {
"title": "开启你的创作之旅",
"subtitle": "首先,选择你的创作方式",
"manualCreate": {
"title": "从第一集开始创作",
"description": "从第一集开始,适合边写边播或单集短视频制作",
"button": "开始创作"
},
"smartImport": {
"title": "智能全书导入",
"description": "上传整本小说或剧本AI 引擎自动识别章节结构,一键完成智能分集。",
"button": "立即导入",
"recommended": "推荐"
},
"upload": {
"title": "上传原始素材",
"subtitle": "AI 引擎已准备就绪,一键自动分集与格式化",
"maxWords": "(最大支持 3 万字)",
"textInput": "输入文本内容",
"documentUpload": "上传完整文档",
"placeholder": "在此处粘贴你的小说章节或剧本内容...",
"filePlaceholder": "已上传文件模式",
"clickUpload": "点击上传文档",
"clearTextFirst": "请先清空左侧文本",
"supportedFormats": "支持 Word, TXT 格式",
"preview": "预览",
"expandPreview": "展开更多",
"collapsePreview": "收起预览",
"deleteFile": "删除文件",
"startAnalysis": "开始智能分析",
"back": "返回",
"words": "字"
},
"analyzing": {
"title": "AI 正在分析你的故事",
"description": "识别章节结构,智能分集中...",
"autoSave": "分析完成后将自动保存"
},
"preview": {
"title": "智能分集完成",
"episodeCount": "已为你自动分为 {count} 集",
"totalWords": "总计 {count} 字",
"autoSaved": "✓ 已自动保存",
"reanalyze": "重新分析",
"confirm": "确认完成",
"saving": "保存中...",
"episodeList": "剧集列表",
"addEpisode": "添加剧集",
"averageWords": "平均每集",
"episodeContent": "剧集内容",
"episodePlaceholder": "输入剧集标题...",
"summaryPlaceholder": "输入剧情简介...",
"newEpisode": "新剧集",
"deleteEpisode": "删除剧集",
"deleteConfirm": {
"title": "确认删除",
"message": "确定要删除「{title}」吗?",
"cancel": "取消",
"confirm": "确认删除"
},
"tip": {
"title": "提示",
"content": "你可以直接编辑标题、简介和内容。点击【确认完成】后,剧集将正式导入到项目中"
}
},
"errors": {
"fileTooLarge": "文件过大,请上传小于 10MB 的文件",
"docNotSupported": "不支持 .doc 格式,请使用 Word 转换为 .docx",
"fileEmpty": "文件内容为空",
"fileReadError": "文件读取失败,请重试",
"uploadFirst": "请先上传或粘贴内容",
"analyzeFailed": "分析失败",
"saveFailed": "保存失败"
},
"cancelConfirm": "确定要取消吗?已分析的剧集将被清空。"
},
"storyInput": {
"currentEditing": "当前正在编辑:{name}",
"editingTip": "以下制作流程仅针对本集,如有其他剧集请在左上角切换",
"wordCount": "字数:",
"assetLibraryTip": {
"title": "需要自定义角色和场景?",
"description": "点击右上角的「资产库」按钮,可以上传资产设定文档或手动添加角色/场景。AI 将优先使用资产库中的设定进行分析。"
},
"videoRatio": "画面比例",
"visualStyle": "视觉风格",
"moreConfig": "更多配置请点击右上角「 配置」按钮",
"narration": {
"title": "启用旁白配音",
"description": "生成 TTS 语音旁白,为视频添加解说"
},
"creating": "AI 创作中...",
"ready": "✓ 配置完成,可以进入下一步",
"pleaseInput": "请先输入剧本内容"
},
"execution": {
"selectEpisode": "请先选择剧集",
"fillContentFirst": "请先填写内容",
"requestAborted": "请求已中断(可能因页面刷新)",
"analysisFailed": "资产分析失败",
"prepareFailed": "准备失败",
"generationFailed": "生成失败",
"batchVideoFailed": "批量生成视频失败",
"updateFailed": "更新失败",
"saveFailed": "保存失败",
"storyToScriptRunning": "Story→Script V2 运行中",
"scriptToStoryboardRunning": "Script→Storyboard V2 运行中",
"storyToScriptFailed": "内容转剧本失败",
"scriptToStoryboardFailed": "剧本转分镜失败",
"taskStreamTimeout": "任务执行超时,请检查任务是否仍在运行,或重新触发"
},
"rebuildConfirm": {
"storyToScript": {
"title": "将重建剧本流程",
"message": "检测到当前剧集已有下游分镜数据({storyboardCount} 个分镜,{panelCount} 个镜头面板)。继续执行将清空这些数据并重新生成,是否继续?"
},
"scriptToStoryboard": {
"title": "将重建分镜数据",
"message": "检测到当前剧集已有分镜数据({storyboardCount} 个分镜,{panelCount} 个镜头面板)。继续执行将清空当前分镜并重新生成,是否继续?"
},
"confirm": "继续并清空",
"cancel": "取消"
}
}

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

@@ -0,0 +1,107 @@
{
"user": "用户",
"personalAccount": "个人账户",
"availableBalance": "可用余额",
"frozen": "冻结",
"totalSpent": "已消费",
"apiConfig": "API 配置",
"rechargeRecords": "充值记录",
"billingRecords": "扣费记录",
"logout": "退出登录",
"accountTransactions": "账户流水",
"projectDetails": "项目明细",
"summary": "汇总",
"transactions": "流水",
"noTransactions": "暂无流水记录",
"noProjectCosts": "暂无项目费用记录",
"noDetails": "该项目暂无费用明细",
"noRecords": "暂无记录",
"byType": "按类型",
"byAction": "按操作",
"times": "次",
"total": "总计",
"filter": "筛选",
"allTypes": "全部类型",
"recharge": "账户充值",
"consume": "服务消费",
"balanceAfter": "余额 {amount}",
"recordCount": "{count} 条记录",
"totalCost": "总计 {amount}",
"previousPage": "上一页",
"nextPage": "下一页",
"pagination": "共 {total} 条,第 {page} / {totalPages} 页",
"episodeLabel": "第 {number} 集",
"billingDetail": {
"imageWithRes": "{count}张 · {resolution}",
"image": "{count}张",
"videoWithRes": "{count}段 · {resolution}",
"video": "{count}段",
"tokens": "{count} tokens",
"seconds": "{count}秒",
"calls": "{count}次"
},
"apiTypes": {
"image": "图片生成",
"video": "视频生成",
"text": "文本分析",
"tts": "语音合成",
"voice": "配音",
"voice_design": "声音设计",
"lip_sync": "口型同步"
},
"actionTypes": {
"image_panel": "分镜生图",
"image_character": "角色生图",
"image_location": "场景生图",
"video_panel": "视频生成",
"lip_sync": "口型同步",
"voice_line": "配音合成",
"voice_design": "声音设计",
"asset_hub_voice_design": "素材库声音设计",
"regenerate_storyboard_text": "重生成分镜文案",
"insert_panel": "插入面板",
"panel_variant": "镜头变体",
"modify_asset_image": "修图",
"regenerate_group": "批量重生成",
"asset_hub_image": "素材库生图",
"asset_hub_modify": "素材库修图",
"analyze_novel": "小说分析",
"story_to_script_run": "故事转剧本",
"script_to_storyboard_run": "剧本转分镜",
"clips_build": "片段合成",
"screenplay_convert": "剧本转换",
"voice_analyze": "声音分析",
"analyze_global": "全局分析",
"ai_modify_appearance": "AI 修改角色形象",
"ai_modify_location": "AI 修改场景",
"ai_modify_shot_prompt": "AI 修改镜头提示词",
"analyze_shot_variants": "镜头变体分析",
"ai_create_character": "AI 创建角色",
"ai_create_location": "AI 创建场景",
"reference_to_character": "参考图转角色",
"character_profile_confirm": "确认角色档案",
"character_profile_batch_confirm": "批量确认角色档案",
"episode_split_llm": "章节拆分",
"asset_hub_ai_design_character": "素材库 AI 设计角色",
"asset_hub_ai_design_location": "素材库 AI 设计场景",
"asset_hub_ai_modify_character": "素材库 AI 修改角色",
"asset_hub_ai_modify_location": "素材库 AI 修改场景",
"asset_hub_reference_to_character": "素材库参考图转角色",
"storyboard": "分镜图",
"storyboard_candidate": "分镜候选",
"character": "角色图",
"location": "场景图",
"video": "视频",
"analyze": "分析",
"analyze_character": "角色分析",
"analyze_location": "场景分析",
"clips": "片段切割",
"storyboard_text_plan": "分镜规划",
"storyboard_text_detail": "分镜细节",
"tts": "语音合成",
"regenerate": "重生成",
"voice-generate": "配音生成",
"voice-design": "声音设计",
"lip-sync": "口型同步"
}
}

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

@@ -0,0 +1,136 @@
{
"analyzing": "正在分析故事结构...",
"splittingClips": "正在分割片段...",
"convertingScreenplay": "正在转换为分镜脚本...",
"submittingStoryboard": "正在提交分镜...",
"step": "第 {current} 步,共 {total} 步",
"status": {
"completed": "已完成",
"failed": "失败",
"processing": "进行中",
"queued": "排队中",
"pending": "未开始"
},
"stageCard": {
"stage": "阶段",
"realtimeStream": "实时流",
"currentStage": "当前阶段",
"outputTitle": "AI 实时输出 · {stage}",
"waitingModelOutput": "等待模型输出...",
"reasoningNotProvided": "该步骤未返回思考过程"
},
"runtime": {
"waitingExecution": "等待执行",
"taskCreated": "任务已创建",
"taskStarted": "任务开始处理",
"taskCompleted": "任务已完成",
"taskFailed": "任务失败",
"taskProcessing": "任务处理中...",
"llm": {
"processing": "模型处理中...",
"output": "模型正在输出...",
"reasoning": "模型正在推理...",
"completed": "模型输出完成",
"failed": "模型输出失败"
},
"stage": {
"llmSubmit": "模型请求提交中",
"llmStreaming": "模型流式输出中",
"llmFallbackNonStream": "模型降级为非流式模式",
"llmCompleted": "模型输出完成",
"llmFailed": "模型输出失败"
}
},
"taskType": {
"generic": "任务",
"imagePanel": "分镜图片",
"imageCharacter": "角色图片",
"imageLocation": "场景图片",
"videoPanel": "视频生成",
"lipSync": "口型同步",
"voiceLine": "配音生成",
"voiceDesign": "声音设计",
"assetHubVoiceDesign": "资产库声音设计",
"regenerateStoryboardText": "重生成分镜文本",
"insertPanel": "插入分镜",
"panelVariant": "分镜变体",
"modifyAssetImage": "图片编辑",
"regenerateGroup": "批量重生成",
"assetHubImage": "资产中心图片",
"assetHubModify": "资产中心编辑",
"analyzeNovel": "内容分析",
"storyToScriptRun": "剧本拆解",
"scriptToStoryboardRun": "分镜生成",
"clipsBuild": "片段生成",
"screenplayConvert": "剧本转换",
"voiceAnalyze": "台词分析",
"analyzeGlobal": "全局分析",
"aiModifyAppearance": "角色描述修改",
"aiModifyLocation": "场景描述修改",
"aiModifyShotPrompt": "镜头提示词修改",
"analyzeShotVariants": "镜头变体分析",
"aiCreateCharacter": "项目角色设计",
"aiCreateLocation": "项目场景设计",
"referenceToCharacter": "参考图转角色",
"characterProfileConfirm": "角色档案确认",
"characterProfileBatchConfirm": "批量角色档案确认",
"episodeSplitLlm": "智能分集",
"assetHubAiDesignCharacter": "资产库角色设计",
"assetHubAiDesignLocation": "资产库场景设计",
"assetHubAiModifyCharacter": "资产库角色修改",
"assetHubAiModifyLocation": "资产库场景修改",
"assetHubReferenceToCharacter": "资产库参考图转角色"
},
"stage": {
"received": "任务已接收",
"generateCharacterImage": "生成角色图片",
"generateLocationImage": "生成场景图片",
"generatePanelCandidate": "生成候选分镜图",
"generatePanelVideo": "生成分镜视频",
"generateVoiceSubmit": "提交配音任务",
"generateVoicePersist": "保存配音结果",
"voiceDesignSubmit": "提交声音设计任务",
"voiceDesignDone": "声音设计完成",
"submitLipSync": "提交口型同步任务",
"persistLipSync": "保存口型同步结果",
"storyboardClip": "生成片段分镜",
"regenerateStoryboardPrepare": "准备重生成分镜",
"regenerateStoryboardPersist": "保存重生成分镜",
"storyToScriptPrepare": "准备剧本拆解参数",
"storyToScriptStep": "执行剧本拆解步骤",
"storyToScriptPersist": "保存剧本拆解结果",
"storyToScriptPersistDone": "剧本拆解结果已保存",
"scriptToStoryboardPrepare": "准备分镜生成参数",
"scriptToStoryboardStep": "执行分镜生成步骤",
"scriptToStoryboardPersist": "保存分镜结果",
"scriptToStoryboardPersistDone": "分镜与台词结果已保存",
"insertPanelGenerateText": "生成插入镜头文本",
"insertPanelPersist": "保存插入镜头",
"pollingExternal": "等待外部服务返回",
"enqueueFailed": "任务入队失败",
"llmProxySubmit": "提交 LLM 任务",
"llmProxyExecute": "执行 LLM 任务",
"llmProxyPersist": "保存 LLM 结果"
},
"runConsole": {
"storyToScript": "内容到剧本",
"scriptToStoryboard": "剧本到分镜",
"storyToScriptRunning": "Story→Script 运行中",
"scriptToStoryboardRunning": "Script→Storyboard 运行中",
"storyToScriptSubtitle": "Story To Script V2",
"scriptToStoryboardSubtitle": "Script To Storyboard V2",
"stop": "停止",
"minimize": "最小化"
},
"streamStep": {
"analyzeCharacters": "角色分析",
"analyzeLocations": "场景分析",
"splitClips": "片段切分",
"screenplayConversion": "剧本转换",
"storyboardPlan": "分镜规划",
"cinematographyRules": "摄影规则生成",
"actingDirection": "演技指导生成",
"storyboardDetailRefine": "分镜细节补全",
"voiceAnalyze": "台词分析"
}
}

View File

@@ -0,0 +1,7 @@
{
"addProvider": "+ 添加提供商",
"name": "名称",
"add": "添加",
"save": "保存",
"fillRequired": "请填写必要信息"
}

View File

@@ -0,0 +1,70 @@
{
"title": "剧本视图",
"scriptBreakdown": "剧本拆解",
"splitCount": "已拆分 {count} 个分镜",
"noClips": "暂无分镜,请先在故事视图生成",
"segment": {
"title": "片段 {index}",
"selected": "(选中)"
},
"inSceneAssets": "剧中资产",
"currentSelected": "当前选中: 片段 {number}",
"assetView": {
"allClips": "全部片段",
"viewingClip": "查看片段 {number}"
},
"asset": {
"generateCharacter": "点击生成形象 →",
"generateLocation": "点击生成场景 →",
"removeCharacterConfirm": "确定要从当前片段移除该角色吗?",
"removeLocationConfirm": "确定要从当前片段移除该场景吗?",
"removeFromClip": "从当前片段移除",
"noAudio": "无音频",
"playing": "播放中",
"listen": "试听",
"activeCharacters": "出场角色",
"activeLocations": "出场场景",
"selectCharacter": "选择要添加的角色/形象",
"selectLocation": "选择要添加的场景",
"loadingAssets": "加载资产中...",
"appearanceCount": "{count} 个形象",
"added": "已添加",
"primary": "主形象",
"subAppearance": "子形象",
"defaultAppearance": "初始形象",
"clickToRemove": "点击移除 {name}",
"clickToAdd": "点击添加 {name}"
},
"screenplay": {
"scene": "场景 {number}",
"location": "场景:",
"locationTime": "时间:",
"day": "日",
"night": "夜",
"dawn": "晨",
"dusk": "昏",
"dialogue": "对白",
"action": "动作",
"narration": "旁白",
"content": "原文内容",
"noContent": "暂无内容",
"clickToEdit": "点击编辑",
"interior": "内景",
"exterior": "外景",
"characters": "出场角色",
"noCharacter": "暂无角色信息",
"noLocation": "暂无出场场景",
"noCharacterInClip": "暂无出场角色"
},
"confirm": {
"removeCharacter": "确定要从当前片段移除该角色吗?",
"removeLocation": "确定要从当前片段移除该场景吗?"
},
"generate": {
"missingAssets": "还有 {count} 个资产未生成形象",
"missingAssetsTip": "请先在",
"missingAssetsTipLink": "中生成所有出场角色和场景的形象",
"generating": "正在生成画面...",
"startGenerate": "确认并开始绘制 →"
}
}

View File

@@ -0,0 +1,168 @@
{
"title": "开启你的创作之旅",
"subtitle": "首先,选择你的创作方式",
"manualCreate": {
"title": "从第一集开始创作",
"description": "从第一集开始,适合边写边播或单集短视频制作",
"button": "开始创作"
},
"manualDesc": "从第一集开始,适合边写边播或单集短视频制作",
"startCreate": "开始创作",
"smartImport": {
"title": "智能文本分集",
"description": "上传整本小说或剧本AI 引擎自动识别章节结构,一键完成智能分集。",
"button": "立即导入",
"recommended": "推荐"
},
"markerDetection": {
"enable": "优先使用章节标记如第X集/Episode X",
"tooltip": "自动识别【第X集/章】【Episode/Chapter X】等标记免费快速"
},
"smartImportDesc": "上传整本小说或剧本AI 引擎自动识别章节结构,一键完成智能分集。",
"recommended": "推荐",
"importNow": "立即导入",
"uploadTitle": "上传原始素材",
"uploadSubtitle": "AI 引擎已准备就绪,一键自动分集与格式化",
"maxWords": "最大支持 3 万字",
"textInput": "输入文本内容",
"textPlaceholder": "在此处粘贴你的小说章节或剧本内容...",
"uploadDoc": "上传完整文档",
"clickUpload": "点击上传文档",
"clearText": "请先清空左侧文本",
"supportFormat": "支持 Word, TXT 格式",
"fileMax": "文件最大 3万字",
"words": "字",
"startAnalyzing": "开始分析",
"analyzing": {
"title": "AI 正在分析你的故事",
"description": "识别章节结构,智能分集中...",
"autoSave": "分析完成后将自动保存"
},
"analyzingDesc": "识别章节结构,智能分集中...",
"autoSave": "分析完成后将自动保存",
"splitComplete": "智能分集完成",
"splitResult": "已为你自动分为 {count} 集,总计 {words} 字",
"saved": "已自动保存",
"reAnalyze": "重新分析",
"confirmComplete": "确认完成",
"saving": "保存中...",
"episodeList": "剧集列表",
"episodes": "集",
"episode": "第 {num} 集",
"addEpisode": "添加剧集",
"newEpisode": "新剧集",
"avgWords": "平均每集",
"episodeContent": "剧集内容",
"plotSummary": "剧情简介",
"enterTitle": "输入剧集标题...",
"enterSummary": "输入剧情简介...",
"confirmDelete": "确认删除",
"deleteConfirmMsg": "确定要删除「{title}」吗?",
"preview": {
"title": "智能分集完成",
"episodeCount": "已为你自动分为 {count} 集",
"totalWords": "总计 {count} 字",
"autoSaved": "✓ 已自动保存",
"reanalyze": "重新分析",
"confirm": "确认完成",
"saving": "保存中...",
"episodeList": "剧集列表",
"addEpisode": "添加剧集",
"averageWords": "平均每集",
"episodeContent": "剧集内容",
"episodePlaceholder": "输入剧集标题...",
"summaryPlaceholder": "输入剧情简介...",
"newEpisode": "新剧集",
"deleteEpisode": "删除剧集",
"deleteConfirm": {
"title": "确认删除",
"message": "确定要删除「{title}」吗?",
"cancel": "取消",
"confirm": "确认删除"
},
"tip": {
"title": "提示",
"content": "你可以直接编辑标题、简介和内容。点击【确认完成】后,剧集将正式导入到项目中"
}
},
"collapsePreview": "收起预览",
"expandMore": "展开更多",
"deleteFile": "删除文件",
"fileTooLarge": "文件大小不能超过 10MB",
"docNotSupported": "暂不支持 .doc 格式,请将文件另存为 .docx 或 .txt 格式后重试",
"fileEmpty": "文件内容为空",
"fileReadError": "文件读取失败,请确保文件格式正确",
"uploadFirst": "请先上传文件或粘贴文本",
"analyzeFailed": "分析失败",
"saveFailed": "保存失败",
"cancelConfirm": "确定要取消吗?已分析的剧集将被清空。",
"deleteEpisode": "删除剧集",
"upload": {
"title": "上传原始素材",
"subtitle": "AI 引擎已准备就绪,一键自动分集与格式化",
"maxWords": "(最大支持 3 万字)",
"textInput": "输入文本内容",
"documentUpload": "上传完整文档",
"placeholder": "在此处粘贴你的小说章节或剧本内容...",
"filePlaceholder": "已上传文件模式",
"clickUpload": "点击上传文档",
"clearTextFirst": "请先清空左侧文本",
"supportedFormats": "支持 Word, TXT 格式",
"preview": "预览",
"expandPreview": "展开更多",
"collapsePreview": "收起预览",
"deleteFile": "删除文件",
"startAnalysis": "开始分析",
"back": "返回",
"words": "字"
},
"errors": {
"fileTooLarge": "文件过大,请上传小于 10MB 的文件",
"docNotSupported": "不支持 .doc 格式,请使用 Word 转换为 .docx",
"fileEmpty": "文件内容为空",
"fileReadError": "文件读取失败,请重试",
"uploadFirst": "请先上传或粘贴内容",
"analyzeFailed": "分析失败",
"saveFailed": "保存失败",
"analysisModelNotConfigured": "请先在设置页面配置分析模型"
},
"common": {
"edit": "编辑",
"delete": "删除",
"save": "保存",
"cancel": "取消"
},
"markerDetected": {
"title": "检测到分集标记",
"description": "检测到 {count} 个「{type}」格式的分集标记",
"preview": "预览分集结果",
"useMarker": "使用标识符分集",
"useMarkerDesc": "快速、免费",
"useAI": "使用 AI 智能分集",
"useAIDesc": "智能分析、消耗积分",
"cancel": "取消",
"totalCount": "共 {count} 集",
"markerTypes": {
"episode": "第X集",
"chapter": "第X章",
"act": "第X幕",
"scene": "X-Y【场景】",
"numbered": "数字编号",
"numberedEscaped": "数字编号(转义)",
"numberedDirect": "数字+中文",
"episodeEn": "Episode X",
"chapterEn": "Chapter X",
"boldNumber": "**数字**",
"pureNumber": "纯数字"
}
},
"globalAnalysis": {
"title": "全局资产分析",
"description": "一键提取全书的角色和场景,确保角色形象在所有剧集中保持一致",
"startButton": "立即分析",
"analyzing": "分析中...",
"success": "全局分析完成:新增 {characters} 个角色,{locations} 个场景",
"failed": "全局分析失败",
"confirmAndAnalyze": "确认并开启全局分析"
}
}

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

@@ -0,0 +1,7 @@
{
"config": "1. 配置",
"assets": "2. 资产分析",
"storyboard": "3. 分镜编辑",
"videos": "4. 视频生成",
"voice": "5. 配音生成"
}

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

@@ -0,0 +1,374 @@
{
"phases": {
"planning": "规划分镜",
"cinematography": "设计摄影",
"acting": "设计演技",
"detail": "补充细节"
},
"prompts": {
"imagePrompt": "图片提示词",
"aiInstruction": "AI修改指令",
"supportReference": "(支持@引用资产库)",
"instructionPlaceholder": "例如:把场景改为@医院_白天人物改为@主角A",
"selectAsset": "选择资产",
"character": "人物",
"location": "场景",
"referencedAssets": "已引用资产:",
"removeAsset": "移除此资产",
"aiModify": "AI修改并生成图片",
"aiModifying": "AI修改中...",
"aiModifyTip": "点击后将自动保存提示词并生成新图片",
"save": "保存",
"currentPrompt": "当前提示词",
"enterInstruction": "请输入修改指令",
"modifyFailed": "操作失败: {error}",
"updateFailed": "更新失败: {error}",
"enterContinuation": "请输入续写内容",
"appendTitle": "续写内容",
"appendDescription": "输入新的SRT内容系统会自动切分并生成新的镜头追加到当前列表末尾",
"appendSubmit": "续写并生成镜头",
"appendSuccess": "续写成功!新镜头已追加到列表末尾",
"appendFailed": "续写失败: {error}",
"customStyle": "自定义风格"
},
"group": {
"generating": "生成中...",
"hasSynced": "✓ 已生成",
"failed": "失败",
"retry": "重试",
"regenerate": "重新生成所有",
"generateAll": "批量生成全部",
"expand": "展开",
"collapse": "收起",
"addPanel": "添加镜头",
"regenerating": "重新生成中...",
"aiAnalyzing": "AI 分析中...",
"regenerateText": "重新生成文字",
"generateMissingImages": "生成该片段所有未有图片的镜头",
"segment": "片段",
"addAtStart": "在开头添加新分镜组",
"insertHere": "在此插入新分镜组"
},
"header": {
"title": "分镜编辑",
"panels": "个镜头",
"submit": "提交生成",
"submitting": "提交中...",
"storyboardPanel": "分镜面板",
"segments": "个片段",
"segmentsCount": "共 {count} 个片段,",
"panelsCount": "{count} 个镜头",
"generatingStatus": "({count} 个生成中)",
"generateAllPanels": "生成所有镜头",
"generatePendingPanels": "生成{count}个未有图片的镜头",
"downloadAll": "下载全部",
"downloading": "打包中...",
"noImages": "没有可下载的图片",
"downloadAllImages": "下载所有图片",
"generateVideo": "生成视频 →",
"back": "← 返回",
"concurrencyLimit": "并发上限 {count}"
},
"panel": {
"shotType": "景别:",
"duration": "秒",
"location": "场景:",
"characters": "角色:",
"description": "描述:",
"text": "对应文本:",
"regenerate": "重新生成",
"delete": "删除",
"insertBefore": "在此前插入",
"insertAfter": "在此后插入",
"moveUp": "上移",
"moveDown": "下移",
"plot": "剧情:",
"summary": "总结:",
"pov": "视角:",
"focus": "焦点:",
"mode": "模式:",
"shot": "镜头",
"segment": "片段",
"stylePrompt": "画风/提示词",
"shotMode": "景别/模式",
"regenerateImage": "重新生成图片",
"generateImage": "生成图片",
"cardView": "卡片视图",
"tableView": "表格视图",
"shotTypeLabel": "镜头类型",
"cameraMove": "镜头运动",
"sourceText": "对应原文",
"sceneDescription": "画面描述",
"videoPrompt": "视频提示词",
"videoPromptHint": "建议描述主体动作、环境、镜头语言",
"locationLabel": "场景",
"editLocation": "编辑场景",
"characterLabel": "角色",
"characterLabelWithCount": "角色 ({count})",
"editCharacter": "编辑角色",
"select": "+ 选择",
"add": "+ 添加",
"noLocation": "未选择场景",
"locationNotEdited": "暂未编辑场景",
"noCharacters": "未选择角色",
"charactersNotEdited": "暂未编辑角色",
"shotTypePlaceholder": "俯拍中景...",
"cameraMovePlaceholder": "缓推、固定...",
"videoPromptPlaceholder": "用于视频生成的提示词...",
"sceneDescriptionPlaceholder": "描述画面主体、构图、光线、情绪",
"selectCharacter": "选择角色",
"selectLocation": "选择场景",
"noCharacterAssets": "暂无角色资产",
"noLocationAssets": "暂无场景资产",
"selected": "已选择",
"defaultAppearance": "初始形象",
"newPanelDescription": "新镜头描述",
"noShotType": "未设置镜头"
},
"image": {
"generating": "生成中...",
"regenerate": "重新生成",
"edit": "编辑",
"editImage": "修图",
"candidate": "候选图",
"selectCandidate": "选择候选",
"variants": "变体",
"generateVariants": "生成变体",
"forceRegenerate": "强制重新生成",
"failed": "生成失败",
"clickToPreview": "点击放大预览",
"enlargePreview": "放大预览",
"candidateCount": "候选 {count}",
"candidateGenerating": "{count} 张生成中",
"selectingCandidate": "选择候选图中...",
"confirmCandidate": "确认选择",
"cancelSelection": "取消选择",
"noValidCandidates": "暂无有效候选图",
"selectCount": "选择生成数量",
"generateMultiple": "生成多张候选",
"generateCount": "生成 {count} 张",
"undoShort": "返回"
},
"candidate": {
"title": "选择候选图",
"select": "选择",
"cancel": "取消",
"noImages": "暂无候选图",
"original": "原图"
},
"variant": {
"title": "图片变体",
"generate": "生成变体",
"select": "使用此图",
"close": "关闭",
"shotTitle": "镜头变体 - 基于 #{number}",
"originalDescription": "原镜头描述",
"noDescription": "无描述",
"noImage": "无图片",
"shotNum": "镜头 {number}",
"aiRecommend": "AI 推荐变体",
"reanalyze": "重新分析",
"shotType": "景别:",
"cameraMove": "运镜:",
"generating": "生成中",
"clickToAnalyze": "点击重新分析获取 AI 推荐",
"customInstruction": "或自定义指令",
"customPlaceholder": "输入你想要的镜头效果,如:改为反打视角,聚焦另一个角色的表情...",
"includeCharacter": "引用角色形象",
"includeLocation": "引用场景图",
"customVariant": "自定义变体",
"defaultShotType": "中景",
"defaultCameraMove": "固定",
"useCustomGenerate": "使用自定义生成",
"analyzeFailed": "分析失败",
"creativeScore": "创意 {score}/5"
},
"insert": {
"title": "插入新镜头",
"position": "插入位置",
"before": "在第 {number} 镜头前",
"after": "在第 {number} 镜头后",
"content": "镜头内容",
"shotType": "景别",
"location": "场景",
"characters": "角色",
"description": "描述",
"text": "对应文本",
"placeholder": {
"shotType": "选择景别...",
"location": "输入场景...",
"characters": "输入角色,用逗号分隔",
"description": "描述画面内容...",
"text": "对应的剧本文本..."
},
"insert": "插入",
"cancel": "取消"
},
"common": {
"actions": "操作",
"add": "添加",
"cancel": "取消",
"confirm": "确认",
"copy": "复制",
"delete": "删除",
"download": "下载",
"edit": "编辑",
"generate": "生成",
"loading": "加载中...",
"none": "无",
"unknownError": "未知错误",
"preview": "预览",
"refresh": "刷新",
"regenerate": "重新生成",
"deleting": "删除中",
"editing": "编辑中",
"saving": "保存中...",
"saveFailed": "保存失败,修改尚未同步",
"retrySave": "重试保存",
"save": "保存",
"status": "状态",
"submitFailed": "提交失败",
"upload": "上传"
},
"confirm": {
"deletePanel": "确定要删除这个镜头吗?删除后无法恢复。",
"deleteGroup": "确定要删除这整组分镜吗?\n\n这将删除该片段下的所有 {count} 个镜头,此操作不可撤销!"
},
"messages": {
"episodeNotFound": "没有找到剧集信息",
"downloadFailed": "下载失败: {error}",
"panelNotFound": "未找到镜头信息",
"modifyFailed": "修改失败: {error}",
"selectCandidateFailed": "选择失败: {error}",
"insertPanelFailed": "插入分镜失败: {error}",
"addPanelFailed": "添加分镜失败: {error}",
"deletePanelFailed": "删除失败: {error}",
"deleteGroupFailed": "删除分镜组失败: {error}",
"regenerateGroupFailed": "重新生成分镜失败: {error}",
"addGroupFailed": "添加分镜组失败: {error}",
"moveGroupFailed": "移动分镜组失败: {error}",
"batchGenerateCompleted": "批量生成完成:\n成功: {succeeded}\n失败: {failed}\n\n部分错误: {errors}",
"batchGenerateFailed": "批量生成失败: {error}"
},
"canvas": {
"emptyTitle": "暂无分镜数据",
"emptyDescription": "请先生成Clips和文字分镜或点击上方按钮添加分镜组"
},
"imageEdit": {
"title": "编辑分镜",
"subtitle": "输入修改指令,可选择上传参考图片和资产",
"promptPlaceholder": "描述你想要修改的内容,例如:改变背景颜色、调整人物表情...",
"referenceImagesLabel": "参考图片",
"referenceImagesHint": "(可选,支持粘贴)",
"start": "开始编辑",
"selectAsset": "选择资产",
"selectedAssetsLabel": "参考资产",
"selectedAssetsCount": "{count}个",
"addAsset": "添加资产",
"noAssets": "暂无资产,点击“添加资产”选择"
},
"screenplay": {
"tabs": {
"formatted": "剧本格式",
"original": "原文"
},
"scene": "场景 {number}",
"characters": "出场角色",
"voiceover": "旁白",
"parseFailedTitle": "剧本格式解析失败",
"parseFailedDescription": "请查看原文内容"
},
"assets": {
"character": {
"confirming": "确认中...",
"editing": "编辑中..."
},
"image": {
"undo": "撤销到上一版本"
},
"location": {
"generateImage": "生成图片"
},
"stage": {
"analyzing": "分析中..."
}
},
"video": {
"toolbar": {
"showPending": "待生成"
},
"panelCard": {
"forceRegenerate": "强制重新生成(卡住时使用)"
}
},
"smartImport": {
"errors": {
"analyzeFailed": "分析失败"
},
"preview": {
"reanalyze": "重新分析"
},
"smartImport": {
"recommended": "推荐"
}
},
"aiData": {
"title": "AI数据编辑器",
"subtitle": "Panel {number} - 发送给图片生成AI的完整数据",
"basicData": "分镜基础数据",
"shotType": "镜头类型",
"cameraMove": "镜头运动",
"shotTypePlaceholder": "仰拍、全景、平视、中景...",
"cameraMovePlaceholder": "缓推、固定、跟随...",
"scene": "场景(只读)",
"notSelected": "未选择",
"summary": "场景总结",
"characters": "角色(只读)",
"plot": "剧情",
"summarize": "总结",
"visualDescription": "视觉描述",
"videoPrompt": "视频提示词",
"negativePrompt": "负面提示词",
"save": "保存",
"cancel": "取消",
"lightingDirection": "光照方向",
"lightingQuality": "光照质感",
"depthOfField": "景深",
"colorTone": "色调",
"characterPosition": "角色位置规则",
"position": "位置",
"posture": "姿势",
"facing": "朝向",
"photographyRules": "摄影规则 (photography_rules)",
"viewData": "查看数据",
"jsonPreview": "JSON 预览",
"actingNotes": "演技指导 (acting_notes)",
"actingTitle": "演技指导",
"actingDescription": "表演指令",
"noActingData": "无演技数据"
},
"insertModal": {
"insertBetween": "在 #{before} 和 #{after} 之间插入",
"panel": "镜头",
"noImage": "无图片",
"insertAtEnd": "末尾",
"aiAnalyze": "AI 自动分析",
"analyzing": "AI 分析中...",
"insert": "插入",
"inserting": "插入中...",
"placeholder": "可选:输入补充说明,如添加一个反应镜头..."
},
"panelActions": {
"insertPanel": "插入分镜",
"panelVariant": "镜头变体",
"insertHere": "在此处插入分镜",
"generateVariant": "基于此镜头生成变体",
"needImage": "需要先生成图片",
"deleteShot": "删除镜头",
"pasteSrtPlaceholder": "粘贴新的SRT内容..."
},
"firstLastFrame": {
"placeholder": "输入首尾帧视频提示词...",
"modelTitle": "首尾帧模型"
}
}

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

@@ -0,0 +1,210 @@
{
"panelCard": {
"play": "播放",
"pause": "暂停",
"retry": "重试",
"regenerate": "重新生成",
"download": "下载",
"edit": "编辑",
"save": "保存",
"cancel": "取消",
"generating": "生成中...",
"failed": "失败",
"lipSync": "口型同步",
"lipSyncVideo": "口型同步视频",
"lipSyncLabel": "口型同步",
"lipSyncTitle": "口型同步",
"original": "原始",
"synced": "同步",
"videoFixed": "✓ 视频",
"imagePreview": "图片预览",
"playVoice": "播放配音",
"stopVoice": "停止",
"noVoice": "暂无配音",
"forceRegenerate": "强制重新生成(卡住时使用)",
"regenerateVideo": "重新生成视频",
"lipSyncStatus": "口型同步中...",
"lipSyncInProgress": "正在进行口型同步...",
"lipSyncMayTakeMinutes": "这可能需要几分钟时间",
"audioEnabled": "音频已开启",
"audioDisabled": "音频已关闭",
"isSynced": "(已同步)",
"needVideo": "(请先生成视频)",
"needAudio": "(请先生成音频)",
"generateAudio": "生成音频",
"regenerateLipSync": "重新生成口型同步",
"editPrompt": "编辑提示词",
"clickToEditPrompt": "点击编辑提示词...",
"shot": "镜头 {number}",
"unknownShotType": "未知景别",
"correspondingText": "对应原文",
"generateVideo": "生成视频",
"selectModel": "选择视频模型",
"selectVoice": "选择要使用的配音:",
"willAutoPad": "(将自动填充)",
"autoPadding": "填充",
"redo": "重新",
"generatingAudio": "生成中",
"error": {
"audioFailed": "生成音频失败"
},
"batchMode": "批量模式",
"batchModeDesc": "离线推理价格便宜50%24小时内完成",
"batchModeEnabled": "已开启批量模式",
"batchModeDisabled": "批量模式已关闭"
},
"promptModal": {
"title": "编辑镜头 #{number} 视频提示词",
"shotType": "景别:",
"duration": "秒",
"location": "场景:",
"locationUnknown": "未知",
"characters": "角色:",
"charactersNone": "无",
"description": "描述:",
"text": "对应文本:",
"promptLabel": "视频提示词",
"placeholder": "输入视频提示词...",
"tip": "提示:视频模型不识别角色名字,请用外貌特征描述,如\"黑发蓝眸的年轻男子\"而非\"Victor\"",
"save": "保存",
"cancel": "取消"
},
"toolbar": {
"title": "成片生成",
"filter": "筛选",
"viewAll": "查看全部",
"showGenerated": "已生成",
"showPending": "待生成",
"showFailed": "失败",
"totalShots": "共 {count} 个镜头",
"generatingShots": "{count} 个生成中",
"completedShots": "{count} 个已生成",
"failedShots": "{count} 个失败",
"generateAll": "生成所有视频",
"batchConfigTitle": "批量生成参数",
"batchConfigDesc": "先选择模型与参数,再一键生成所有视频",
"confirmGenerateAll": "确认并生成全部",
"confirming": "提交中...",
"noVideos": "没有可下载的视频",
"downloadCount": "下载 {count} 个视频",
"packing": "打包中...",
"downloadAll": "下载全部",
"enterEditor": "进入视频剪辑器",
"enterEdit": "进入剪辑",
"back": "返回"
},
"stage": {
"title": "视频生成",
"generateAll": "批量生成全部",
"regenerateFailed": "重试失败项",
"downloadAll": "下载全部视频",
"enterEditor": "进入剪辑器",
"lipSyncStatus": "口型同步中...",
"hasSynced": "✓ 已生成",
"generating": "生成中...",
"downloading": "下载中...",
"downloadProgress": "正在准备视频文件... {current}/{total}",
"noVideos": "暂无已生成的视频",
"scrollTo": "跳转到镜头",
"error": {
"saveFailed": "保存视频提示词失败",
"lipSyncFailed": "口型同步失败",
"fetchVideosFailed": "获取视频列表失败"
},
"downloadFailed": "下载失败",
"unknownError": "未知错误"
},
"firstLastFrame": {
"title": "首尾帧设置",
"firstFrame": "首帧",
"lastFrame": "尾帧",
"range": "镜头 {from} → 镜头 {to}",
"link": "链接",
"unlink": "解除链接",
"unlinkAction": "取消链接",
"asLastFrameFor": "作为镜头 {number} 的尾帧",
"asFirstFrameFor": "作为镜头 {number} 的首帧",
"customPrompt": "自定义提示词",
"promptPlaceholder": "输入首尾帧视频提示词...",
"useDefault": "使用默认",
"generate": "生成首尾帧视频",
"generated": "首尾帧视频已生成",
"model": "模型",
"withAudio": "包含音频",
"audioOn": "开",
"audioOff": "关",
"linkToNext": "链接到下一镜头(首尾帧)",
"asLastFrame": "作为镜头 {number} 的尾帧",
"thenTransitionTo": "然后镜头转换到"
},
"editor": {
"alert": {
"saveSuccess": "保存成功",
"saveFailed": "保存失败",
"exportStarted": "导出任务已开始,请稍候...",
"exportFailed": "导出失败"
},
"toolbar": {
"back": "← 返回",
"saveDirty": "保存 *",
"saved": "已保存",
"export": "导出视频"
},
"left": {
"title": "素材库",
"description": "从视频阶段导入的片段将显示在这里"
},
"right": {
"title": "属性",
"clipLabel": "片段:",
"clipFallback": "片段 {index}",
"durationLabel": "时长:",
"transitionLabel": "转场到下一片段",
"deleteConfirm": "确定删除此片段?",
"deleteClip": "删除片段",
"selectClipHint": "选择一个片段查看属性"
},
"preview": {
"emptyStartEditing": "添加素材开始编辑"
},
"timeline": {
"zoomLabel": "缩放:",
"videoTrack": "视频",
"emptyHint": "从素材库拖拽视频片段到这里",
"audioTrack": "配音",
"audioBadge": "配"
},
"transition": {
"title": "转场效果",
"duration": "持续时间",
"options": {
"none": "无",
"dissolve": "溶解",
"fade": "淡入淡出",
"slide": "滑动"
}
}
},
"errors": {
"unknownError": "未知错误"
},
"capability": {
"generationMode": "生成模式",
"generateAudio": "生成音频",
"duration": "时长",
"fps": "帧率",
"resolution": "分辨率",
"aspectRatio": "画幅比例",
"reasoningEffort": "推理强度",
"voice": "音色",
"rate": "语速",
"mode": "模式"
},
"unit": {
"second": "秒",
"frame": "帧"
},
"common": {
"generate": "生成"
}
}

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

@@ -0,0 +1,254 @@
{
"title": "台词配音",
"linesCount": "共 {count} 条台词,",
"audioGeneratedCount": "{count} 条已生成音频",
"emotionPrompt": "情绪提示词",
"emotionPromptTip": "(不填则使用台词自参考)",
"emotionPlaceholder": "如laugh仅支持英文...",
"emotionStrength": "情绪强度",
"flat": "平淡",
"intense": "强烈",
"generating": "生成中...",
"generateVoice": "生成语音",
"toolbar": {
"back": "← 返回",
"analyzeLines": "分析台词",
"addLine": " 添加语音",
"generateAll": "一键生成所有配音",
"downloadAll": "下载配音",
"generatingCount": "生成中 ({count})",
"packing": "打包中...",
"stats": "共 {total} 条台词 | 已设置音色 {withVoice} 条 | 已生成配音 {withAudio} 条",
"noDownload": "没有可下载的配音",
"downloadCount": "下载 {count} 条配音",
"uploadReferenceHint": "请先在资产库为所有角色上传参考音频"
},
"speakerVoice": {
"title": "发言人音色状态",
"hint": "请在资产库为角色上传参考音频",
"linesCount": "{count} 条台词",
"noVoice": "无参考音色",
"configured": "✓ 已设置",
"playVoice": "播放当前音色",
"aiDesign": "AI设计声音",
"aiDesignVoice": "AI 设计音色",
"redesign": "使用 AI 重新设计声音",
"uploadAudio": "上传音频",
"uploading": "上传中",
"upload": "上传",
"microsoftVoice": "微软语音",
"microsoft": "微软",
"maleVoices": "男声",
"femaleVoices": "女声",
"openAssetLibrary": "资产库",
"configuredStatus": "已设置音色",
"pendingStatus": "待设置音色",
"voiceSettings": "音色设置",
"inlineLabel": "内联"
},
"inlineBinding": {
"title": "为「{speaker}」设置音色",
"description": "该发言人不在资产库中,请选择一种方式为其设置参考音色",
"selectFromLibrary": "从音色库选择",
"selectFromLibraryDesc": "选择已有的全局音色",
"uploadAudio": "上传参考音频",
"uploadAudioDesc": "上传 MP3、WAV 等音频文件作为参考音色",
"aiDesign": "AI 设计音色",
"aiDesignDesc": "使用 AI 生成专属参考音色"
},
"embedded": {
"linesStats": "{total} 条台词 · {audio} 已生成",
"reanalyze": "重新分析",
"analyzeLines": "分析台词",
"reanalyzeHint": "重新分析台词并更新镜头匹配",
"analyzeHint": "从原文中提取台词",
"downloadVoice": "下载配音",
"generateAllVoice": "生成全部配音",
"pendingCount": "({count} 条待生成)",
"generatingProgress": "生成中 ({current}/{total})",
"generatingHint": "正在生成中...",
"noVoiceHint": "请先在上方为所有角色设置音色",
"noLinesHint": "没有台词可生成",
"allDoneHint": "所有台词已生成完成",
"generateHint": "点击生成 {count} 条待生成的配音",
"addLine": " 添加语音",
"speakerVoiceStatus": "角色音色状态",
"speakersCount": "{count} 个",
"listen": "试听",
"listenVoice": "试听音色",
"reset": "重设",
"resetDesign": "重新设计",
"aiDesign": "AI设计",
"assetLibrary": "资产库"
},
"lineCard": {
"generatingVoice": "生成中",
"speaker": "发言人",
"speakerPlaceholder": "发言人名称",
"content": "台词内容",
"contentPlaceholder": "台词内容",
"emotionConfigured": "情绪已设置",
"emotionSettings": "情绪设置",
"voiceConfigured": "✓ 已设置",
"needVoice": "请在上方设置音色",
"locatePanel": "定位到绑定镜头",
"locateVideo": "定位视频",
"play": "播放",
"pause": "暂停",
"locatePanelCta": "定位到镜头 {index}",
"editLine": "编辑台词",
"deleteLine": "删除台词",
"deleteAudio": "删除配音"
},
"lineEditor": {
"addTitle": "添加语音",
"editTitle": "编辑语音",
"contentLabel": "台词内容",
"contentPlaceholder": "请输入台词内容",
"speakerLabel": "发言人",
"speakerPlaceholder": "请输入发言人名称",
"selectSpeaker": "请选择发言人",
"noSpeakerOptions": "当前项目暂无可选发言人,请先分析台词生成发言人",
"bindPanelLabel": "绑定镜头",
"unboundPanel": "未绑定镜头",
"panelLabel": "镜头 {index}",
"saveAdd": "添加语音",
"saveEdit": "保存修改"
},
"empty": {
"title": "暂无台词数据",
"description": "从剧本中提取台词和发言人",
"analyzeButton": "分析台词",
"hint": "请先在资产库为角色上传参考音频"
},
"confirm": {
"deleteLine": "确定要删除这条台词吗?\n\n\"{content}\"\n\n此操作不可撤销。",
"deleteAudio": "确定要删除这条台词的配音吗?\n\n\"{content}\"\n\n此操作不可撤销。"
},
"errors": {
"saveFailed": "保存失败",
"analyzeFailed": "分析台词失败",
"generateFailed": "生成配音失败",
"batchFailed": "批量生成失败",
"downloadFailed": "下载失败",
"deleteFailed": "删除失败",
"addFailed": "添加语音失败",
"invalidLineInput": "台词内容和发言人不能为空",
"bindFailed": "绑定镜头失败",
"deleteAudioFailed": "删除配音失败",
"uploadFailed": "上传音频失败",
"voiceDesignFailed": "保存声音设计失败",
"emotionSaveFailed": "保存情绪设置失败",
"voiceGenerateFailed": "生成音频失败"
},
"alerts": {
"insufficientBalance": "余额不足",
"insufficientBalanceMsg": "账户余额不足,请充值后继续使用",
"noLinesToGenerate": "没有需要生成的台词(请先为角色上传参考音频)",
"generateComplete": "生成完成:{success}/{total} 条成功",
"generateFailed": "{count} 条失败",
"speakerVoiceSet": "已为 {speaker} 生成参考音频",
"speakerVoiceUploaded": "已为 {speaker} 上传参考音频",
"voiceDesignSet": "已为 {speaker} 设置 AI 设计的声音"
},
"common": {
"loading": "加载中...",
"save": "保存",
"cancel": "取消",
"cancelling": "取消中...",
"upload": "上传",
"download": "下载",
"generate": "生成",
"regenerate": "重新生成"
},
"assets": {
"image": {
"uploadFailed": "上传失败"
},
"stage": {
"analyzing": "分析中..."
}
},
"smartImport": {
"errors": {
"analyzeFailed": "分析失败"
}
},
"video": {
"panelCard": {
"play": "播放"
}
},
"tts": {
"generatedAudio": "生成的音频",
"browserNotSupport": "您的浏览器不支持音频播放",
"audioDuration": "音频时长:",
"subtitleCount": "字幕条数:",
"noAudio": "暂无音频",
"srtPreview": "SRT字幕预览",
"noSubtitle": "暂无字幕",
"stats": "生成统计",
"minute": "分",
"second": "秒",
"items": "条",
"completed": "✓ 已完成",
"regenerating": "重新生成中...",
"regenerateTTS": "重新生成TTS",
"nextStep": "下一步: 分析资产",
"readyTip": "点击进入资产分析阶段",
"needGenerate": "请先生成TTS音频"
},
"voiceCreate": {
"aiDesignMode": "AI 设计音色",
"uploadMode": "上传音频",
"dropOrClick": "拖放文件或点击选择",
"supportedFormats": "支持 MP3、WAV、OGG、M4A、AAC 格式",
"invalidFileType": "不支持的文件格式,请上传音频文件",
"fileTooLarge": "文件过大,最大支持 50MB",
"previewAudio": "试听音频",
"uploading": "上传中...",
"uploadFailed": "上传失败",
"uploadSuccess": "上传成功"
},
"voiceDesign": {
"presets": {
"maleBroadcaster": "男播音",
"gentleFemale": "温柔女",
"matureMale": "成熟男",
"livelyFemale": "活泼女",
"intellectualFemale": "知性女",
"narrator": "旁白"
},
"presetsPrompts": {
"maleBroadcaster": "沉稳的中年男性播音员,音色低沉浑厚,语速平稳,吐字清晰",
"gentleFemale": "温柔甜美的年轻女性,声音清脆悦耳,语调轻柔",
"matureMale": "成熟稳重的男性,声音富有磁性和感染力",
"livelyFemale": "活泼开朗的少女,声音甜美可爱,充满活力",
"intellectualFemale": "知性优雅的女性,声音清晰悦耳,语调平和",
"narrator": "富有感情的叙述者,声音温暖有故事感"
},
"defaultPreviewText": "你好很高兴认识你。这是AI为你专属设计的声音让我来为你展示它的特点。无论是温柔的对话还是激动的讲述我都能完美呈现。希望你喜欢这个声音让我们一起创造精彩的内容吧。",
"pleaseSelectStyle": "请输入或选择声音风格",
"designVoiceFor": "为「{speaker}」设计AI声音",
"hasExistingVoice": "已有声音",
"selectStyle": "选择声音风格:",
"orCustomDescription": "或自定义描述:",
"describePlaceholder": "描述声音特征:年龄、性别、音色、语调...",
"editPreviewText": "修改预览文本",
"generate3Schemes": "生成 3 个声音方案",
"generating3Schemes": "正在生成 3 个声音方案...",
"estimatedTime": "预计 15-30 秒",
"selectScheme": "选择声音方案:",
"schemeN": "方案 {n}",
"regenerate": "重新生成",
"confirmUse": "✓ 确认使用",
"confirmReplace": "确认替换声音?",
"replaceWarning": "的原有声音,不可撤回",
"confirmReplaceBtn": "确认替换",
"noVoiceGenerated": "未能生成任何声音",
"generationError": "生成声音失败",
"generateFailed": "生成第 {n} 个声音失败",
"preview": "试听",
"playing": "播放中"
}
}

View File

@@ -0,0 +1,31 @@
{
"title": "我的项目",
"subtitle": "管理您的AI动漫制作项目",
"newProject": "新建项目",
"searchPlaceholder": "搜索项目名称或描述...",
"searchButton": "搜索",
"clearButton": "清除",
"updatedAt": "更新于",
"noProjects": "还没有项目",
"noProjectsDesc": "创建您的第一个AI动漫制作项目",
"noResults": "没有找到匹配的项目",
"noResultsDesc": "尝试使用不同的搜索词",
"createProject": "新建项目",
"editProject": "编辑项目",
"deleteProject": "删除项目",
"deleteConfirm": "确定要删除项目\"{name}\"吗?此操作无法撤销。",
"projectName": "项目名称",
"projectNamePlaceholder": "输入项目名称",
"projectDescription": "项目描述(可选)",
"projectDescriptionPlaceholder": "输入项目描述",
"creating": "创建中...",
"saving": "保存中...",
"createFailed": "创建项目失败",
"updateFailed": "更新项目失败",
"deleteFailed": "删除项目失败",
"totalProjects": "共 {count} 个项目",
"statsEpisodes": "章节数",
"statsImages": "图片数",
"statsVideos": "视频数",
"noContent": "暂无内容"
}

View File

@@ -0,0 +1,24 @@
{
"globalAssets": "全局资产",
"createFailed": "创建失败",
"deleteFailed": "删除失败",
"renameFailed": "重命名失败",
"refreshFailed": "刷新失败",
"projectNotFound": "项目不存在",
"backToWorkspace": "返回工作区",
"episode": "剧集",
"sidebar": {
"dragToMove": "拖动调整位置",
"listTitle": "剧集列表",
"episodeCount": "{count}集",
"empty": "暂无剧集,点击下方创建",
"save": "保存",
"deleteConfirm": "确定删除「{name}」?",
"delete": "删除",
"cancel": "取消",
"rename": "重命名",
"newEpisodePlaceholder": "输入剧集名称...",
"create": "创建",
"addEpisode": "添加剧集"
}
}

View File

@@ -0,0 +1,6 @@
{
"title": "世界观与人设",
"description": "定义全局通用的角色外貌、场景风格和环境描述",
"placeholder": "例如:\n【男主】张三25岁黑色短发总是穿着一件洗得发白的牛仔夹克眼神忧郁。\n【女主】李四22岁红发双马尾性格活泼,喜欢穿洛丽塔风格的裙子。\n【场景】2077年的赛博朋克城市霓虹灯闪烁终年下雨...",
"hint": "这些设定将被所有剧集继承作为AI绘画的基础参考。"
}