Files
aistory-generate/locales/EN/messages.json
T

784 lines
51 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"app": {
"title": "TiniX Story 1.0",
"window_title": "TiniX Story 1.0 - Production Edition",
"subtitle": "_Production-ready intelligent novel generation system v1.0_",
"startup_log": "TiniX Story 1.0 started",
"port_in_use": "Port {port} is in use, using port {new_port}",
"backends_loaded": "Loaded {count} backends",
"no_backends_warning": "⚠️ No backend enabled! Please add API configuration in settings",
"init_failed": "Initialization failed: {error}",
"gradio_start": "Starting Gradio app... (Port: {port})",
"gradio_failed": "Gradio startup failed: {error}"
},
"tabs": {
"rewrite": "📝 Novel Rewrite",
"polish": "✨ Novel Polish",
"create": "✍️ Create from Scratch",
"continue_tab": "📖 Continue Project",
"export": "💾 Export & Share",
"projects": "📂 Project Management",
"settings": "⚙️ System Settings",
"about": "️ About"
},
"rewrite": {
"header": "### Upload Novel → Select Mode → Smart Process",
"mode_rewrite": "Rewrite Mode",
"mode_continue": "Continue Mode",
"mode_label": "Feature Mode",
"rewrite_header": "#### 🔄 Rewrite Mode: Upload Novel → Select Style → Smart Rewrite",
"upload_file": "📤 Upload File (txt/pdf/epub/md/docx)",
"split_method_label": "Split Method",
"split_auto": "Auto Split",
"split_by_words": "Split by Words",
"split_by_pattern": "Split by Pattern",
"words_per_segment": "Words per Segment",
"words_per_segment_info": "Split evenly by word count",
"pattern_label": "Split Pattern Marker",
"pattern_placeholder": "Supports variables: %章 (Chapter), %节 (Section), %回 (Episode), or custom text like ---, ***",
"pattern_info": "Use %章 to match 'Chapter X', %节 to match 'Section X', %回 for 'Episode X'",
"keep_marker": "Keep Split Marker",
"keep_marker_info": "Whether to keep the marker text in the segments",
"parse_file_btn": "Parse File",
"preset_style": "Preset Style",
"parse_status": "Parse Status",
"start_rewrite": "Start Rewrite",
"stop_rewrite": "Stop Rewrite",
"live_preview": "Live Preview",
"full_rewritten": "Full Rewritten Text (Editable)",
"progress_stats": "Progress Stats",
"continue_header": "#### ✍️ Continue Mode: Upload Existing Novel → AI Smart Continue",
"upload_existing": "📤 Upload Existing Novel (txt/pdf/epub/md/docx)",
"novel_title": "📖 Novel Title",
"novel_title_placeholder": "Enter novel title",
"target_words": "📊 Target Words",
"char_setting": "👥 Character Setting",
"char_setting_placeholder": "Protagonist name, personality, background, etc. (Optional)",
"world_setting": "🌍 World Setting",
"world_setting_placeholder": "Era background, world rules, etc. (Optional)",
"plot_idea": "📖 Main Plot Idea",
"plot_idea_placeholder": "Core conflict, development direction, ending, etc. (Optional)",
"existing_content": "Existing Content (Editable)",
"continue_result": "Continue Result",
"continue_status": "Continue Status",
"start_continue": "Start Continue"
},
"polish": {
"header": "### Upload Novel → Select Polish Type → Smart Optimize",
"upload_file": "📤 Upload File (txt/pdf/epub/md/docx)",
"polish_type_label": "Polish Type",
"polish_general": "General Polish",
"polish_find_errors": "Find Errors",
"polish_suggestions": "Improvement Suggestions",
"polish_direct": "Direct Edit",
"polish_remove_ai": "Remove AI Tone",
"polish_enhance": "Enhance Details",
"polish_dialogue": "Optimize Dialogue",
"polish_pacing": "Improve Pacing",
"custom_req": "Custom Requirements (Optional)",
"custom_req_placeholder": "E.g., Strengthen character descriptions, enhance atmosphere, improve dialog flow...",
"parse_status": "Parse Status",
"start_polish": "Start Polish",
"polish_suggest_btn": "Polish and Provide Suggestions",
"original_text": "Original Text (Editable)",
"polished_text": "Polished Result",
"suggestions_label": "Improvement Suggestions",
"polish_status": "Polish Status"
},
"create": {
"header": "### Fill Settings → Generate Outline → Auto Create (Supports Continue & Pause)",
"novel_title": "📖 Novel Title",
"novel_title_default": "Untitled Novel",
"genre_label": "📚 Novel Genre",
"sub_genres_label": "🏷️ Sub-Themes / Tags",
"suggested_titles_list": "Suggested List (Editable here)",
"suggested_titles_radio": "Select a Title",
"suggested_titles_help": "You can freely edit the text above, the options below will update automatically.",
"sub_genres": [
"Harem", "1v1", "NP", "Cross-dressing Female", "Cross-dressing Male",
"Time Travel", "Transmigration into Book", "Rebirth", "System", "Golden Finger",
"Portable Dimension", "Spiritual Spring", "Mind Reading", "Invincible Flow",
"Gou Dao (Surviving Low Profile)", "Hot-blooded", "Comedy", "Satisfying Read (Shuangwen)",
"Sweet Pet", "Angst/Abusive Romance", "Reunion after Breakup", "Love after Marriage",
"Bickering Lovers", "Childhood Sweethearts", "Wealthy Family/Affluent Class",
"CEO", "Celebrity", "Entertainment Industry", "Campus", "Top Student",
"Online Gaming", "Esports", "Live Streaming", "Gourmet", "Farm", "Farming/Building",
"Raising Kids", "Getting Rich", "Palace Intrigue", "House Intrigue", "Political Schemes",
"Strong Female Target", "Strong Male Target", "Virgin/Pure Couple", "Trash to Top Tier",
"Genius Flow", "Broken Engagement Flow", "Spiritual Energy Revival", "Apocalyptic",
"Mecha", "Interstellar", "ABO", "Werewolf", "Vampire", "Western Fantasy", "Magic",
"Sword and Magic", "Mage", "Playing Pig to Eat Tiger", "Tragedy", "Healing",
"Dark", "Gothic", "Psychological", "Schizophrenia", "Multiple Personalities",
"Suspense", "Crime Solving", "Tomb Raiding", "Zombie", "Rule-based Weirdness",
"Infinite Flow", "Quick Transmigration", "Colonization", "Manufacturing", "Lord",
"Planting", "Fishing", "Beast Taming", "Pokémon", "Anime", "Harry Potter", "Marvel",
"Sea of Stars", "Urban Legend", "Ancient Times", "Republican Era", "70s", "80s", "90s",
"Otherworld", "Continent", "Tribal", "Primitive", "Cultivation/Xianxia", "Revenge",
"Cannon Fodder", "Villain", "Prophet", "Spells"
],
"genres": [
"Eastern Fantasy/Xianxia", "Urban Romance", "Sci-Fi", "Wuxia/Martial Arts", "Suspense",
"Historical", "Military", "Video Games", "Horror", "Time Travel/Rebirth", "System",
"Fanfiction", "Apocalyptic", "Farming/Comedy", "Ancient Romance", "Western Fantasy",
"Strong Female Lead", "CEO", "Youth Campus", "Palace Intrigue", "House Intrigue",
"Primordial Myths", "Gaming Romance", "Urban Superpowers", "Paranormal Suspense",
"Boys Love (BL)", "Girls Love (GL)", "Tomb Raiding Adventure", "Otherworld Continent",
"Ancient Farming", "Portable Dimension", "ABO", "Vampire", "Sports/Competitive",
"Anime Fanfiction", "Infinite Flow", "Other"
],
"char_setting": "👥 Character Setting",
"char_setting_placeholder": "Protagonist name, personality, background, etc.",
"world_setting": "🌍 World Setting",
"world_setting_placeholder": "Era background, world rules, special settings, etc.",
"plot_idea": "📖 Main Plot Idea",
"plot_idea_placeholder": "Core conflict, development direction, ending, etc.",
"num_main_chars": "Number of Main Characters",
"num_sub_chars": "Number of Supporting/Villain Characters",
"custom_prompt_label": "Additional Requirements (Optional)",
"custom_prompt_placeholder": "Enter extra requirements (e.g., Urban superpowers style...)",
"suggest_title_btn": "✨ Generate Titles",
"suggest_btn": "✨ AI Inspiration",
"suggest_plot_btn": "✨ AI Main Plot Idea",
"suggesting_status": "Generating ideas...",
"chapter_count": "📊 Chapter Count (Leave empty for 20)",
"gen_outline_btn": "Generate Outline",
"outline_display": "📋 Outline (Manually Editable)",
"context_header": "### 🔄 Context Enhancement Settings (Optional)",
"enable_context": "Enable Context Enhancement",
"enable_context_info": "When enabled, uses previous chapters' summaries/full text as context for generating new chapters",
"context_mode_label": "Context Mode",
"context_summary_mode": "Summary Mode",
"context_full_mode": "Full Text Mode",
"context_mode_info": "Summary Mode: uses previous chapters' summaries. Full Text Mode: uses full content of all previous chapters.",
"context_chapters": "Context Chapter Count",
"context_chapters_info": "How many previous chapters' summaries to use as context",
"context_max_length": "Context Max Length",
"context_max_length_info": "Maximum character count for the context",
"outline_format_help": "#### 📝 Outline Format Help\nPlease write the outline in the following format (choose one):\n\n**Format 1** (Recommended):\n- Chapter 1: Beginning - Introduction of protagonist and world\n- Chapter 2: Conflict - The first major challenge\n\n**Format 2**:\n- 1. Beginning - Introduction of protagonist and world\n- 2. Conflict - The first major challenge\n\n**Note**: Title and description are separated by a hyphen `-`, one chapter per line",
"start_gen_btn": "Start Generating / Continue",
"pause_gen_btn": "Pause Generation",
"cache_status": "💾 Cache Status",
"cache_status_default": "No Cache",
"cache_timestamp": "⏰ Cache Time",
"export_format_label": "📄 Export Format",
"export_format_word": "Word (.docx)",
"export_format_txt": "Text (.txt)",
"export_format_md": "Markdown (.md)",
"export_format_html": "HTML (.html)",
"export_progress_btn": "📥 Export Current Progress",
"download_file": "Download File",
"export_status": "Export Status",
"novel_display": "📚 Novel Full Text (Live Update)",
"gen_status": "Generation Status",
"gen_status_default": "Ready"
},
"export": {
"header": "### Export to Multiple Formats",
"paste_content": "Paste Novel Content",
"paste_placeholder": "Copy and paste the full novel text from the creation page",
"novel_title": "Novel Title",
"novel_title_placeholder": "Used for filename",
"export_word": "Export as Word (.docx)",
"export_txt": "Export as Plain Text (.txt)",
"export_md": "Export as Markdown (.md)",
"export_html": "Export as HTML (.html)",
"download_file": "Download File",
"export_status": "Export Status",
"recent_exports": "Recently Exported Files",
"refresh_files": "Refresh File List",
"empty_content": "Content is empty"
},
"continue_tab": {
"header": "### Select Project → Check Progress → Continue Creating",
"select_project": "📖 Select Project to Continue",
"load_btn": "📥 Load Project",
"project_info": "Project Info",
"no_project_loaded": "_No project selected. Please pick from the list and load._",
"info_template": "**📖 {title}** | 📚 {genre}\n\n✅ Completed: **{completed}/{total} Chapters** ({percent}%)\n\n👤 Characters: {char}\n\n🌍 World: {world}\n\n📖 Plot: {plot}",
"outline_label": "📋 Project Outline (✅ = Completed, ⬜ = Unwritten)",
"novel_label": "📚 Written Content",
"context_header": "### 🔄 Context Settings",
"continue_gen_btn": "▶️ Continue Generating Chapters",
"pause_btn": "⏸️ Pause",
"gen_status": "Status",
"gen_status_default": "Ready - Select a project to continue",
"select_first": "❌ Please select and load a project first",
"loaded_ok": "✅ Project '{title}' loaded - {completed}/{total} chapters completed",
"all_complete": "✅ Project '{title}' has completed all chapters!",
"no_project_selected": "❌ Please select a project",
"project_not_found": "❌ Project not found",
"load_failed": "❌ Failed to load project: {error}",
"no_outline": "❌ Project has no outline. Please use the create tab first.",
"continue_starting": "▶️ Resuming generation from chapter {chapter}..."
},
"projects": {
"header": "### Manage All Projects",
"refresh_btn": "🔄 Refresh Project List",
"projects_table": "My Projects",
"status_label": "Status",
"export_header": "### 📥 Export Project",
"select_project": "📖 Select Project to Export",
"export_format": "📄 Export Format",
"export_btn": "📤 Prepare Download File",
"download_file": "Download File",
"export_status": "Status",
"recent_exports": "Recently Exported Files",
"refresh_files": "Refresh File List",
"delete_header": "### 🗑️ Delete Project",
"delete_select_project": "Select Project to Delete",
"delete_btn": "🗑️ Permanently Delete Project",
"delete_confirm": "⚠️ Are you sure you want to delete this project? This action cannot be reversed.",
"delete_success": "✅ Project deleted successfully",
"delete_failed": "❌ Failed to delete project: {error}",
"actions_header": "### ✍️ Project Actions",
"select_project_action": "📖 Select Project",
"continue_btn": "✍️ Continue",
"rewrite_btn": "🔄 Rewrite",
"polish_btn": "✨ Polish",
"select_project_first": "❌ Please select a project first",
"project_not_found": "❌ Project not found",
"loaded_to_create": "✅ Project '{title}' loaded to Create tab",
"loaded_to_rewrite": "✅ Project '{title}' content loaded to Rewrite tab",
"loaded_to_polish": "✅ Project '{title}' content loaded to Polish tab",
"action_status": "Status",
"ai_illustration_header": "AI Chapter Illustration Creation",
"gen_illustration_btn": "Generate Illustration",
"illustration_label": "Chapter Illustration",
"select_chapter": "Please select a chapter",
"invalid_chapter": "Invalid chapter",
"chapter_not_found": "Chapter not found"
},
"settings": {
"header": "### 🔧 API Configuration & Generation Parameters",
"tab_backends": "🌐 Interface Management",
"tab_params": "📝 Generation Parameters",
"tab_cache": "💾 Cache Management",
"backends_header": "#### 📋 Configure Backend APIs",
"refresh_list": "🔄 Refresh List",
"test_all": "✅ Test All Endpoints",
"backends_table": "Configured Backends List",
"add_backend_header": "#### Add New API",
"provider_label": "API Provider",
"provider_info": "Selecting a provider automatically fills default config",
"backend_name": "Backend Name*",
"backend_name_placeholder": "E.g., My OpenAI",
"backend_type": "Backend Type*",
"base_url": "Base URL",
"base_url_placeholder": "E.g., https://api.example.com/v1 (For OpenAI compatible ones only)",
"model_name": "Model Name*",
"model_name_placeholder": "Auto-fills when provider selected, can be modified",
"api_key": "API Key (Ollama can be empty)*",
"api_key_placeholder": "Enter your API key (will not be saved as plaintext)",
"timeout": "Timeout (seconds)",
"retry_count": "Retry Count",
"enable_backend": "Enable this backend",
"add_btn": " Add Backend",
"operation_result": "Operation Result",
"test_manage_header": "#### 🔍 Test & Manage",
"test_backend_name": "Backend Name to Test",
"test_backend_placeholder": "Enter backend name to test connection",
"test_btn": "🧪 Test Connection",
"test_result": "Test Result",
"delete_backend_name": "Backend Name to Delete",
"delete_backend_placeholder": "Enter backend name to delete",
"delete_btn": "🗑️ Delete Backend",
"delete_result": "Delete Result",
"params_header": "#### Adjust Novel Generation Parameters",
"temperature_label": "Temperature (Creativity)",
"temperature_info": "Higher means more creative, lower is more conservative",
"top_p_info": "Controls output diversity",
"top_k_info": "Selects from top K most likely tokens",
"max_tokens_info": "Max tokens per generation",
"chapter_target_words": "Target words per chapter",
"writing_style": "Writing Style",
"writing_styles": [
"Fluent and natural, tight plot, delicate characterization",
"Beautiful writing, profound artistic conception",
"Fast-paced, full of twists and turns",
"Delicate descriptions, rich emotions",
"Humorous, relaxed and lively"
],
"tone_label": "Tone",
"tones": [
"Neutral",
"Serious",
"Relaxed",
"Skeptical",
"Gentle",
"Passionate"
],
"char_dev_label": "Character Development",
"char_dev_options": [
"Detailed",
"Medium",
"Concise"
],
"plot_complexity_label": "Plot Complexity",
"plot_complexity_options": [
"Simple",
"Medium",
"Complex"
],
"save_params_btn": "💾 Save Generation Parameters",
"save_status": "Save Status",
"cache_header": "#### 📋 Manage Generation Cache",
"cache_size": "Cache Size",
"refresh_cache": "🔄 Refresh Cache List",
"get_cache_size": "📊 Get Cache Size",
"cache_table": "Cache List",
"clear_selected": "🗑️ Clear Selected Cache",
"clear_all": "🗑️ Clear All Caches",
"cache_op_status": "Operation Status",
"summary_cache_header": "#### 📋 Manage Context Summary Cache",
"summary_cache_size": "Summary Cache Size",
"refresh_summary": "🔄 Refresh Summary List",
"get_summary_size": "📊 Get Summary Size",
"summary_cache_table": "Summary Cache List",
"clear_summary_cache": "🗑️ Clear All Summary Caches",
"tab_genre": "📚 Genre Management",
"genre_desc": "Add, edit, or delete novel genres and write detailed descriptions/guidelines. The AI uses this as a system prompt when writing this genre.",
"genre_select": "Select genre to modify",
"genre_name": "Genre Name",
"genre_name_placeholder": "Eastern Fantasy, Sci-Fi...",
"genre_description": "Description / Writing Guideline",
"genre_description_placeholder": "Enter writing style, tone, and features for this genre...",
"genre_add_btn": " Add",
"genre_update_btn": "💾 Update",
"genre_delete_btn": "🗑️ Delete",
"genre_op_status": "Operation Status",
"genre_err_name_empty": "Please enter a genre name!",
"genre_err_exists": "This genre name already exists!",
"genre_add_success": "New genre successfully added!",
"genre_err_none_selected": "Please select a genre!",
"genre_update_success": "Genre updated successfully!",
"genre_err_update": "Error updating or name conflict!",
"genre_delete_success": "Genre deleted successfully!",
"genre_err_delete": "Deletion failed!",
"tab_sub_genre": "🏷️ Sub-Theme Management (Tag)",
"sub_genre_desc": "Add, edit, or delete sub-themes and describe them. The AI merges them as a system prompt for generating content.",
"sub_genre_select": "Select sub-theme to modify",
"sub_genre_name": "Sub-Theme Name",
"sub_genre_name_placeholder": "System, Fast Transmigration...",
"sub_genre_description": "Description / Writing Guideline",
"sub_genre_description_placeholder": "Enter details like character traits or background settings...",
"sub_genre_add_btn": " Add",
"sub_genre_update_btn": "💾 Update",
"sub_genre_delete_btn": "🗑️ Delete",
"sub_genre_op_status": "Operation Status",
"sub_genre_err_name_empty": "Please enter a sub-theme name!",
"sub_genre_err_exists": "This sub-theme name already exists!",
"sub_genre_add_success": "New sub-theme successfully added!",
"sub_genre_err_none_selected": "Please select a sub-theme!",
"sub_genre_update_success": "Sub-theme updated successfully!",
"sub_genre_err_update": "Error updating or name conflict!",
"sub_genre_delete_success": "Sub-theme deleted successfully!",
"sub_genre_err_delete": "Deletion failed!"
},
"about": {
"content": "# TiniX Story 1.0\n## Production-ready Intelligent Novel Generation System\n\n### 🌟 Core Features\n- **Smart Creation**: Write novels from scratch with custom outlines.\n- **Resume Capability**: Supports pausing. Saves every chapter automatically, can be resumed in Project Management.\n- **Smart Rewrite**: Upload text, rewrite using 17 preset high-quality styles.\n- **Smart Continue**: Upload partially written novels; AI will automatically resume writing.\n- **Novel Polish**: Polishing tools with 8 modes like full edit, finding errors, removing AI tone, etc.\n- **Flexible Parsing**: Supports custom chapter templates, reads varied formats.\n- **Multi-Format Export**: Word, TXT, Markdown, HTML ready for download.\n- **Project Management**: Control multiple projects, track progress, auto-save states.\n- **Flexible Configuration**: Use multiple APIs, fine-tune writing parameters.\n- **Error Retry**: Retries automatically if a generated chapter has 0 words.\n- **Port Auto-detection**: Finds an available port if the default is in use.\n\n### 🔧 Tech Specs\n- **Error Recovery**: Robust error handling & logging.\n- **Caching**: Smart cache saves repeated API calls.\n- **Rate Limiting**: Built-in token bucket to prevent rate limits.\n- **Load Balancing**: Auto round-robin for backends.\n- **Performance**: Thread-safe concurrency.\n\n### ⚖️ License\nMIT License"
},
"messages": {
"no_content_polish": "No content to polish",
"no_content_rewrite": "No content to rewrite",
"no_content_continue": "No content to continue",
"no_title": "Please enter novel title",
"no_file": "No file uploaded",
"polish_success": "Polish successful",
"polish_complete": "Polish complete",
"polish_complete_saved": "Polish complete | Saved to project manager",
"polish_failed": "Polish failed: {error}",
"polish_invalid": "Polish returned invalid content (Length: {length} words)",
"polish_status_msg": "Polish returned a status instead of actual content: '{content}'",
"polish_segment_failed": "Polish failed for segment {num}: {error}",
"polish_segment_invalid": "Polish returned invalid content for segment {num} (Length: {length} words)",
"polish_segment_progress": "Polishing segment {current}/{total}",
"polish_auto_split": "Text too long ({length} words), enabling auto split",
"polish_split_done": "Split into {count} segments, polishing piece by piece",
"polish_all_done": "Segment polishing complete, {count} segments, {total} words total",
"polish_save_success": "Polish result saved to: {id}",
"polish_save_failed": "Failed to save polish result: {msg}",
"rewrite_success": "Rewrite successful",
"rewrite_complete": "Rewrite complete",
"rewrite_paused": "Paused - Completed {done}/{total} segments",
"rewrite_progress": "Progress {done}/{total} | ~{words} words",
"rewrite_segment_failed": "Rewrite failed for segment {num}: {error}",
"rewrite_invalid": "Rewrite returned invalid content for segment {num} (Length: {length} words)",
"rewrite_status_msg": "Rewrite returned status instead of content on segment {num}: '{content}'",
"rewrite_segment_progress": "Rewriting segment {current}/{total}",
"rewrite_save_success": "Rewrite result saved to: {id}",
"rewrite_save_failed": "Failed to save rewrite result: {msg}",
"continue_success": "Continue successful",
"continue_complete": "Continue complete",
"continue_complete_saved": "Continue complete | Saved to project manager",
"continue_failed": "Continue failed: {error}",
"continue_invalid": "Continue returned invalid content (Length: {length} words)",
"continue_status_msg": "Continue returned status instead of actual content: '{content}'",
"continue_save_success": "Continue result saved to: {id}",
"continue_save_failed": "Failed to save continue result: {msg}",
"gen_success": "Generation successful",
"gen_outline_empty": "Error: empty outline",
"gen_outline_failed": "Failed to parse outline: {msg}",
"gen_paused": "Paused - Completed {done}/{total} chapters, project saved",
"gen_chapter_progress": "Generating Chapter {current}/{total}: {title}",
"gen_chapter_skip": "Completed {num}/{total} chapters (Restored from cache)",
"gen_chapter_retry": "Chapter {num} failed or zero words (Attempt {attempt}/{max}), retrying...",
"gen_summarizing": "Summarizing previous chapters for context...",
"gen_constructing_prompt": "Constructing prompt for chapter {num}...",
"gen_waiting_ai": "Waiting for AI response on chapter {num}...",
"gen_saving_db": "Saving chapter {num} to database...",
"gen_chapter_failed": "Generation failed: Chapter {num} failed (retried {max} times)",
"gen_complete": "Complete | {total} chapters | ~{words} words | Project saved",
"gen_save_success": "Project saved: {id}",
"gen_save_failed": "Failed to save project: {msg}",
"cache_found": "Found cache: {msg}",
"cache_chapter_restore": "Restored chapter {num} from cache: {words} words",
"stop_requested": "Stop requested (Will stop after current chapter)",
"user_stop_requested": "User requested generation to stop",
"split_words_done": "Split by words done, {count} segments, ~{words} words each",
"split_pattern_done": "Split by pattern done, {count} segments",
"split_failed": "Split failed: {error}",
"split_no_pattern": "Please enter a split pattern",
"export_complete": "Export complete",
"export_failed": "Export failed: {error}",
"image_cover_base": "Professional high-quality novel cover design for '{title}', genre '{genre}'. Cinematic lighting, epic, highly detailed.",
"image_illustration_base": "Beautiful illustration for novel chapter '{title}'. Scene: {summary}. Digital art, highly detailed."
},
"templates": {
"default": "Rewrite with vivid and delicate strokes, beautiful language, retaining original meaning and plot, adding more detail and inner monologues.",
"xianxia": "Rewrite in classical Eastern Fantasy (Xianxia) style, elegant ancient sentences, emphasizing magical items, spiritual states, and cultivation.",
"romance": "Rewrite in modern urban romance style, sweet or angsty, enhancing romantic interactions, emotional psychology, and daily life details.",
"thriller": "Rewrite as a suspense thriller, create a tense atmosphere, boost psychological horror, clue foreshadowing, and twists.",
"scifi": "Hard sci-fi rewrite, professional rigorous language, focusing on scientific principles, high-tech details, logical consistency.",
"wuxia": "Classic Martial Arts (Wuxia) rewrite, heroic language, focusing on sword moves, brotherhood, Jianghu grudges, martial spirit.",
"palace": "Ancient Palace Intrigue rewrite, elegant language, describing court etiquette, political scheming, complex and subtle character dynamics.",
"military": "Modern Military rewrite, tough and resolute tone, describing tactics, weaponry, camp life, and soldierly spirit.",
"historical": "Historical Epic rewrite, archaic and solemn tone, providing historical ambiance, biographical feel, macro-historical perspective.",
"supernatural": "Supernatural fantasy rewrite, mysterious and eerie tone, paranormal elements, occult, Yin-Yang interactions.",
"campus": "Youth Campus rewrite, fresh and lively tone, school life details, youthful romance, pure elements.",
"business": "Corporate Business rewrite, pragmatic language, focusing on strategy, psychological warfare, corporate intelligence.",
"cyberpunk": "Cyberpunk rewrite, high-tech tone, virtual reality, AI, dystopian neon atmosphere.",
"fantasy": "Western Fantasy rewrite, epic tone, magic systems, mythological references, medieval fantasy style.",
"horror": "Horror Thriller rewrite, gloomy tone, jump scares, psychological pressure, terrifying imagery.",
"humor": "Humorous comedy rewrite, witty language, exaggerations, funny scenarios, relaxed energy.",
"literary": "Literary style rewrite, poetic and artistic language, deep emotional reflections.",
"adventure": "Hot-blooded adventure rewrite, passionate tone, battle scenes, friendship bonds, energetic storytelling.",
"name_default": "Rewrite Style - Default",
"name_xianxia": "Rewrite Style - Xianxia",
"name_romance": "Rewrite Style - Urban Romance",
"name_thriller": "Rewrite Style - Thriller Suspense",
"name_scifi": "Rewrite Style - Hard Sci-Fi",
"name_wuxia": "Rewrite Style - Wuxia",
"name_palace": "Rewrite Style - Palace Intrigue",
"name_military": "Rewrite Style - Modern Military",
"name_historical": "Rewrite Style - Historical Epic",
"name_supernatural": "Rewrite Style - Supernatural",
"name_campus": "Rewrite Style - Youth Campus",
"name_business": "Rewrite Style - Corporate Business",
"name_cyberpunk": "Rewrite Style - Cyberpunk",
"name_fantasy": "Rewrite Style - Western Fantasy",
"name_horror": "Rewrite Style - Horror Suspense",
"name_humor": "Rewrite Style - Humor Comedy",
"name_literary": "Rewrite Style - Poetic Literary",
"name_adventure": "Rewrite Style - Hot-blooded Adventure"
},
"prompts": {
"outline_system": "You are a professional novel outline planner and plot architect.",
"outline_user": "Please generate a full outline for a {genre} novel, Title: 《{title}》.\n\nCharacters: {character_setting}\n\nWorld: {world_setting}\n\nPlot: {plot_idea}\n\nStyle: {style_desc}\n\nRequirements:\n1. Total chapters: ~{total_chapters}\n2. Strict chapter format: Chapter X: Title - Brief plot description (50-100 words)\n3. Coherent plot, logical character development\n4. ONLY OUTPUT the outline list\n5. Must be captivating with good suspense\n6. Follow 3-act structure (25% beginning, 50% middle, 25% end)\n7. Every chapter needs a conflict or progress, no filler",
"chapter_system": "You are a top-tier novelist crafting captivating stories. Use natural human writing style. Avoid common AI clichés like starting with 'However', 'Furthermore'; overly perfect/preachy endings; relying purely on 'adverb+verb'; or grouping emotions in threes.",
"chapter_user": "Write chapter {chapter_num} for the novel 《{novel_title}》.\n\nChapter Title: {chapter_title}\nChapter Plan: {chapter_desc}\n\nCharacters: {character_setting}\nWorld: {world_setting}\nPlot Idea: {plot_idea}\n\nStyle: {style_desc}\n\nRequirements:\n1. Around {target_words} words\n2. Stick strictly to the chapter plan\n3. Dialogues must be natural and fit character profiles\n4. Leave a hook or suspense at the end\n5. 'Show, don't tell' principle for emotions\n6. Balance action, dialog, and thoughts\n7. ONLY OUTPUT the actual story text, no titles or meta-commentary{continuity_prompt}{context_prompt}",
"continuity_prompt": "\n\n【Previous Context】\n{previous_content}\n\n【Continuity Checklist】\n✓ Keep plot direction consistent\n✓ Match character states and positions\n✓ Continue to push forward established suspense\n✓ Dialog style is consistent\n✓ Do not repeat established info\n✓ Keep sub-plots advancing\n\nPlease ensure the content connects smoothly with the previous text.",
"context_prompt": "\n\n{context_summary}\n\nPlease read this summary of previous chapters to ensure narrative continuity.",
"rewrite_system": "You are a skilled fiction editor, excellent at rewriting text to be vivid and detailed.",
"rewrite_user": "Rewrite the following text based on this style, keeping the original plot but adding details:\n\nStyle: {style}\n\nOriginal Text:\n{text}\n\n【Crucial Specs】\n1. Output FULL rewritten text roughly as long as the original.\n2. NEVER output just 'Rewrite success' or similar status confirmed messages.\n3. Add multi-sensory details (smell, taste, touch).\n4. Enhance environmental descriptions to match moods.\n5. Do not include meta text or commentary.",
"summary_system": "You are an expert editor excelling at summarizing narratives.",
"summary_user": "Write a concise summary of the following text under {max_length} words.\n\nText:\n{text}\n\nSummary:",
"polish_system": "You are an elite literary editor, fine-tuning narrative text for flow and emotion.",
"polish_general": "Please thoroughly polish the following text, improving the prose, flow, and narrative quality.",
"polish_find_errors": "Please examine the text for typos, grammar flaws, logical plot holes, and propose fixes.",
"polish_suggest": "Read the text and propose actionable improvements on pacing, dialogue, character depth, etc.",
"polish_direct": "Directly edit and optimize the text, upgrading the prose to a professional author's level.",
"polish_remove_ai": "Remove the obvious AI tone from this text. Make it read 100% human, messy but authentic.",
"polish_enhance": "Enhance text details, expand descriptions, spatial awareness, and sensory inputs.",
"polish_dialogue": "Focus on optimizing dialogue, bringing out character voices and distinct personalities.",
"polish_pacing": "Adjust the pacing of this text, speeding up or slowing down where appropriate to draw the reader in.",
"polish_extra_req": "\n\nExtra Requests: {custom_requirements}",
"polish_output_only": "\n\nOriginal Text:\n{text}\n\nONLY output the requested polished result or suggestions.",
"polish_suggest_system": "You are a professional literary editor, expert at error-finding and stylistic improvements.",
"polish_suggest_user": "Analyze and optimize this text:\n\n1. Find errors (grammar, logic)\n2. Suggest improvements\n3. Direct revision (the final polished text)\n\nOriginal:\n{text}\n\n{extra_req}\n\nOutput format:\n---\n【Errors Found】\n...\n【Suggestions】\n...\n【Polished Text】\n...\n---",
"suggest_system": "You are a creative planner, building worlds and concepts for intriguing novels.",
"suggest_title_user": "Suggest about 10 titles for a fiction book.\n\nGenre: {genre}\n\nConditions:\n- Catchy, memorable.\n- Provide a short 1-line logline for each.\n- STRICT JSON OUTPUT ONLY: {\"suggestions\": [{\"title\": \"Title 1\", \"description\": \"Desc\"}]}\n- No markdown tags, no chatting.",
"suggest_char_user": "Create a detailed cast setting.\n\nTitle Concept: {title}\nGenre: {genre}\nNeed:\n- {num_main_chars} Main\n- {num_sub_chars} Villain/Support\n\nProvide names, traits, abilities, and deep motivations. Just output the content.",
"suggest_world_user": "Design a world setting (150-200 words).\n\nTitle Concept: {title}\nGenre: {genre}\n\nOutput details of rules, powers, history, and social structures. Just the content.",
"suggest_plot_user": "Design the core main plot (200-250 words).\n\nTitle: {title}\nGenre: {genre}\nCharacters: {character_setting}\nWorld: {world_setting}\n\nInclude a hook, mid-point twist, and climax. Just output the plot.",
"continue_system": "You are an amazing long-form novelist. Your narratives flow beautifully from scene to scene.",
"continue_user": "Continue the next chapter of 《{novel_title}》.\n\n【Base Lore】\nChar: {character_setting}\nWorld: {world_setting}\nPlot: {plot_idea}\n\n【Style】\n{style_desc}\n\n【Recent Text】(~1500 words)\n{previous_content}\n\n【Rules】\n1. Continue naturally\n2. Match previous tone, dialogue, state\n3. ~{target_words} words\n4. DO NOT repeat\n5. ONLY actual text, no titles.",
"chapter_summary_system": "You are an editor, summarizing key plot points.",
"chapter_summary_user": "Summarize this chapter (100-200 words).\n\nTitle: {chapter_title}\n\nContent:\n{chapter_content}\n\nMust include all critical conflicts and character reveals. Only output the summary.",
"style_description": "Style: {writing_style}\nTone: {writing_tone}\nCharacterization: {character_development}\nComplexity: {plot_complexity}",
"context_header": "【Context Summary】\n",
"chapter_context_line": "Chapter {chapter_num}: {summary}\n",
"found_errors_header": "Errors Found",
"suggestions_header": "Suggestions",
"polished_text_header": "Polished Text",
"ai_no_format": "AI did not follow formatting, check results."
},
"generator": {
"title_empty": "Novel title cannot be empty",
"char_empty": "Character setting cannot be empty",
"world_empty": "World setting cannot be empty",
"plot_empty": "Plot setting cannot be empty",
"outline_empty": "Outline is empty",
"outline_parse_failed": "Failed to parse any chapters from outline, check formatting",
"outline_parse_success": "Parse successful, {count} chapters",
"outline_gen_success": "Outline generated successfully",
"gen_success": "Generation successful",
"suggest_success": "Inspiration generated",
"text_empty": "Text is empty",
"text_too_long_rewrite": "Text too long (>20000 words), please split",
"text_too_long_polish": "Text too long (>10000 words), please split",
"existing_text_empty": "Existing text is empty",
"chapter_content_empty": "Chapter content is empty",
"api_empty_content": "API returned empty content",
"api_status_msg": "API returned status msg instead of content",
"rewrite_success": "Rewrite successful",
"rewrite_too_short": "Rewrite too short ({length} chars)",
"rewrite_failed_retries": "Rewrite failed after {max} retries",
"polish_success": "Polish successful",
"polish_too_short": "Polished too short ({length} chars)",
"polish_failed_retries": "Polish failed after {max} retries",
"continue_success": "Continue successful",
"continue_too_short": "Continue too short ({length} chars)",
"continue_failed_retries": "Continue failed after {max} retries",
"summary_success": "Success",
"summary_gen_success": "Summary generated",
"summary_gen_failed": "Summary failed",
"summary_gen_error": "Error creating summary: {error}",
"cache_id_empty": "Project ID cannot be empty",
"cache_data_empty": "Cache data cannot be empty",
"cache_save_success": "Cache saved",
"cache_save_failed": "Cache save failed: {error}",
"cache_not_found": "Cache not found",
"cache_load_success": "Cache loaded",
"cache_load_failed": "Cache load failed: {error}",
"cache_clear_success": "Cache cleared",
"cache_clear_failed": "Cache clear failed: {error}",
"summary_empty": "Summary cannot be empty",
"summary_save_success": "Summary saved",
"summary_save_failed": "Summary save failed: {error}",
"summary_dir_not_found": "Summary directory not found",
"summary_load_done": "Loaded {count} chapter summaries",
"summary_load_failed": "Summary load failed: {error}",
"summary_clear_success": "Summary cache cleared",
"summary_clear_failed": "Summary clear failed: {error}",
"unknown_title": "Unknown"
},
"exporter": {
"no_content": "No content to export",
"no_chapters": "Could not extract chapters from text",
"export_success": "Export successful: {filename}",
"export_failed": "Export failed: {error}",
"missing_docx": "Error: python-docx missing. Run: pip install python-docx",
"missing_markdown": "Error: markdown missing. Run: pip install markdown",
"generated_at": "Generated at: {datetime}",
"generated_date": "Generated date: {date}",
"first_chapter": "Chapter 1",
"body_font": "Arial",
"title_font": "Arial Black"
},
"config_api": {
"name_required": "Name is required",
"type_required": "Type is required",
"model_required": "Model is required",
"name_exists": "Backend '{name}' already exists",
"add_success": "Backend '{name}' added",
"add_failed": "Failed to add backend: {error}",
"update_success": "Backend '{name}' updated",
"update_not_found": "Backend not found: {name}",
"update_failed": "Update failed: {error}",
"delete_success": "Backend '{name}' deleted",
"delete_not_found": "Backend not found: {name}",
"delete_failed": "Delete failed: {error}",
"toggle_success": "Backend '{name}' is {status}",
"toggle_enabled": "Enabled",
"toggle_disabled": "Disabled",
"toggle_not_found": "Backend not found: {name}",
"toggle_failed": "Toggle failed: {error}",
"test_success": "Backend '{name}' tested OK",
"test_not_found": "Backend not found: {name}",
"test_failed": "Test failed: {error}",
"test_prompt": "Please reply 'OK' to confirm API connection.",
"export_success": "Config exported to: {filepath}",
"export_failed": "Export config failed: {error}",
"default_success": "Set '{name}' as default backend",
"default_failed": "Failed to set default: {error}"
},
"project_manager": {
"create_success": "Project '{title}' created",
"create_failed": "Create project failed: {error}",
"save_success": "Project '{title}' saved",
"save_failed": "Save project failed: {error}",
"load_success": "Project loaded",
"load_not_found": "Project not found: {id}",
"load_failed": "Load failed: {error}",
"delete_success": "Project deleted",
"delete_not_found": "Project not found: {id}",
"delete_failed": "Delete failed: {error}",
"export_success": "Exported to: {filepath}",
"export_failed": "Export failed: {error}"
},
"ui": {
"col_project_name": "Project Name",
"col_type": "Type",
"col_created_at": "Created At",
"col_updated_at": "Updated At",
"col_chapters": "Chapters",
"col_completion": "Completion",
"col_current_chapter": "Current Chap",
"col_total_chapters": "Total Chaps",
"col_status": "Status",
"col_cache_time": "Cache Time",
"col_size_kb": "Size(KB)",
"col_project_id": "Project ID",
"col_chapter_count": "Chap Count",
"col_name": "Name",
"col_backend_type": "Type",
"col_model": "Model",
"col_enabled": "Enabled",
"col_timeout": "Timeout(s)",
"col_retry_times": "Retries",
"col_test": "🧪 Test",
"col_default": "⭐ Default",
"no_projects": "No projects",
"no_cache": "No caches",
"no_summary_cache": "No summary caches",
"found_projects": "Found {count} projects",
"found_caches": "Found {count} caches",
"found_summary_caches": "Found {count} summary caches",
"cache_total_size_kb": "Total cache: {size} KB",
"cache_total_size_mb": "Total cache: {size} MB",
"summary_total_size_kb": "Total summary cache: {size} KB",
"summary_total_size_mb": "Total summary cache: {size} MB",
"get_cache_size_failed": "Failed to get cache size",
"get_summary_size_failed": "Failed to get summary size",
"cleared_caches": "✅ Cleared {cleared}/{total} caches",
"cleared_summary_caches": "✅ Cleared {cleared}/{total} summary caches",
"no_cache_to_clear": "❌ No cache to clear",
"no_summary_to_clear": "❌ No summary to clear",
"select_cache_to_clear": "❌ Select a cache to clear",
"cache_found_info": "Cache found: {current}/{total} chaps done",
"cache_timestamp_info": "Cached at: {time}",
"cache_check_failed": "Check failed",
"no_content_export": "❌ No content to export",
"no_title_export": "❌ Please provide a title",
"unsupported_format": "❌ Unsupported format: {format}",
"export_success": "✅ Export success!",
"export_failed": "❌ Export fail: {error}",
"export_error": "❌ Export error: {error}",
"select_project": "❌ Please select a project",
"project_not_exist": "❌ Project '{title}' not found",
"metadata_not_exist": "❌ Project metadata file not found: {file}",
"no_exportable_content": "❌ No exportable content",
"file_not_exist": "❌ File not found: {file}",
"export_no_filepath": "❌ Export failed: no path returned",
"fill_required_fields": "❌ Fill all required fields (Name, Type, Model)",
"api_key_required": "❌ API Key required for this type",
"enter_backend_name": "❌ Enter backend name",
"enter_delete_name": "❌ Enter backend to delete",
"refreshed_backends": "✅ Backends refreshed",
"backend_loaded_for_edit": "✅ Backend '{name}' loaded for edit",
"backend_test_header": "Backend Connection Test:\n",
"backend_available": "✓ Available",
"backend_unavailable": "✗ Unavailable",
"save_success": "Saved successfully",
"save_failed": "Save failed: {error}",
"no_file": "No file",
"perf_no_data": "No performance data",
"perf_report_header": "=== Performance Report ===\n",
"perf_stat_line": "{name}: avg={avg:.2f}ms, max={max:.2f}ms, min={min:.2f}ms, count={count}\n",
"validation_api_key_empty": "API Key cannot be empty",
"validation_unknown_provider": "Unknown provider",
"validation_openai_key_format": "OpenAI key must start with 'sk-'",
"validation_anthropic_key_format": "Anthropic key must start with 'sk-ant-'",
"validation_google_key_format": "Invalid Google key format",
"validation_key_format_invalid": "Invalid API key format",
"validation_key_passed": "Key validated",
"validation_model_empty": "Model empty",
"validation_model_invalid": "Invalid model characters",
"validation_model_passed": "Model validated",
"outline_chapter_format": "<details>\n<summary><b>Chapter {num}: {title}</b> <i>(Click to expand)</i></summary>\n<br>\n\n{content}\n\n</details>\n\n",
"outline_chapter_format_open": "<details open>\n<summary><b>Chapter {num}: {title}</b> <i>(Click to expand)</i></summary>\n<br>\n\n{content}\n\n</details>\n\n",
"segment_format": "<details open>\n<summary><b>Segment {num}</b> <i>(Click to expand)</i></summary>\n<br>\n\n{content}\n\n</details>\n\n",
"content_format": "<details open>\n<summary><b>Content</b> <i>(Click to expand)</i></summary>\n<br>\n\n{content}\n\n</details>\n\n",
"rewritten_segments_summary": "All Segments",
"view_all": "🔍 View All",
"chapter": "Chapter",
"segment": "Segment",
"select_chapter_to_view": "📑 Select Chapter to View",
"select_segment_to_view": "📑 Select Segment to View"
},
"api_client": {
"no_backends": "Error: No backends enabled",
"invalid_messages": "Error: messages must be a non-empty list",
"no_api_client": "Error: No API client loaded",
"invalid_content": "API returned invalid content ({length} chars)",
"error_prefix": "Error: {error}",
"retry_failed": "Failed after {max} retries",
"rate_limit_error": "Rate limit: {error}",
"auth_error": "Auth Error: Check your API Key ({error})",
"connection_error": "Connection error: {error}",
"api_error": "API Error: {error}",
"test_prompt": "You are a helpful assistant",
"test_hello": "Hello",
"gen_image_success": "Image generated",
"gen_image_failed": "Image generation failed: {error}",
"image_gen_unsupported": "This provider does not support image generation."
},
"file_parser": {
"no_file": "No file",
"file_too_large": "File too large ({size}MB > 50MB)",
"parse_complete": "Parse complete, {count} segments, ~{chars} chars",
"read_failed": "Read failed: {error}",
"missing_pymupdf": "Missing PyMuPDF. Run: pip install PyMuPDF",
"missing_ebooklib": "Missing ebooklib/bs4. Run: pip install ebooklib beautifulsoup4",
"missing_docx": "Missing python-docx. Run: pip install python-docx",
"unsupported_format": "Unsupported format (supports txt/pdf/epub/md/docx)",
"unsupported_chapter_format": "Unsupported chapter format",
"chapter_parse_complete": "Parse complete, {count} chapters",
"chapter_parse_failed": "Parse failed: {error}",
"split_word_done": "Split by word done, {count} segments, ~{words} chars each",
"split_pattern_empty": "Split pattern cannot be empty",
"word_count_positive": "Word count must be >0",
"invalid_regex": "Invalid regex: {error}",
"file_not_exist": "File not found: {path}",
"upload_read_failed": "Upload read failed: {error}"
},
"config": {
"backend_name_empty": "Backend name empty",
"unsupported_type": "Unsupported type: {type}",
"base_url_invalid": "Base URL must start with http/https",
"api_key_empty": "API Key empty",
"model_empty": "Model empty",
"timeout_range": "Timeout must be 5-10000",
"retry_range": "Retry must be 1-10",
"temp_range": "Temperature must be 0.1-2.0",
"top_p_range": "Top_p must be 0.1-1.0",
"max_tokens_range": "Max tokens must be 100-100000",
"chapter_words_range": "Chapter words must be 500-65536",
"backend_exists": "Backend '{name}' already exists",
"backend_add_success": "Backend added",
"backend_update_success": "Backend updated",
"backend_not_found": "Backend '{name}' not found",
"backend_delete_success": "Backend '{name}' deleted",
"gen_params_update_success": "Params updated",
"config_export_success": "Exported to {filepath}",
"config_export_failed": "Export failed: {error}",
"config_save_success": "Config saved",
"config_save_failed": "Config save failed: {error}",
"config_load_success": "Config loaded",
"config_file_not_found": "No config found, using default",
"config_load_failed": "Config load failed: {error}",
"config_file_missing": "Config missing: {path}",
"config_format_unsupported": "Format unsupported: {ext}",
"default_backend_name": "Local Ollama"
}
}