893 lines
56 KiB
JSON
893 lines
56 KiB
JSON
{
|
||
"app": {
|
||
"title": "AI小说创作工具 Pro",
|
||
"window_title": "AI小说创作工具 Pro - 生产级版本",
|
||
"subtitle": "_生产级别的智能小说创作系统 v4.0 正式版_",
|
||
"startup_log": "AI小说创作工具 Pro v4.0 正式版启动",
|
||
"port_in_use": "端口 {port} 被占用,使用端口 {new_port}",
|
||
"backends_loaded": "已加载 {count} 个后端",
|
||
"no_backends_warning": "⚠️ 没有启用的后端!请在设置中添加 API 配置",
|
||
"init_failed": "初始化失败: {error}",
|
||
"gradio_start": "启动Gradio应用... (端口: {port})",
|
||
"gradio_failed": "Gradio 启动失败: {error}"
|
||
},
|
||
"tabs": {
|
||
"rewrite": "📝 小说重写",
|
||
"polish": "✨ 小说润色",
|
||
"create": "✍️ 从零开始创作",
|
||
"continue_tab": "📖 续写项目",
|
||
"export": "💾 导出与分享",
|
||
"projects": "📂 项目管理",
|
||
"settings": "⚙️ 系统设置",
|
||
"about": "ℹ️ 关于"
|
||
},
|
||
"rewrite": {
|
||
"header": "### 上传小说 → 选择模式 → 智能处理",
|
||
"mode_rewrite": "重写模式",
|
||
"mode_continue": "续写模式",
|
||
"mode_label": "功能模式",
|
||
"rewrite_header": "#### 🔄 重写模式:上传小说 → 选择风格 → 智能重写",
|
||
"upload_file": "📤 上传文件 (txt/pdf/epub/md/docx)",
|
||
"split_method_label": "分段方式",
|
||
"split_auto": "自动分段",
|
||
"split_by_words": "按字数分段",
|
||
"split_by_pattern": "按固定文本分段",
|
||
"words_per_segment": "每段字数",
|
||
"words_per_segment_info": "按字数均匀分段",
|
||
"pattern_label": "分段标记",
|
||
"pattern_placeholder": "支持变量:%章、%节、%回,或自定义文本如---、***等",
|
||
"pattern_info": "使用%章匹配'第X章',%节匹配'第X节',%回匹配'第X回'",
|
||
"keep_marker": "保留分段标记",
|
||
"keep_marker_info": "是否在分段中保留标记文本",
|
||
"parse_file_btn": "解析文件",
|
||
"preset_style": "预设风格",
|
||
"parse_status": "解析状态",
|
||
"start_rewrite": "开始重写",
|
||
"stop_rewrite": "停止重写",
|
||
"live_preview": "实时预览",
|
||
"full_rewritten": "完整重写文本(可编辑)",
|
||
"progress_stats": "进度统计",
|
||
"continue_header": "#### ✍️ 续写模式:上传已有小说 → AI智能续写",
|
||
"upload_existing": "📤 上传已有小说 (txt/pdf/epub/md/docx)",
|
||
"novel_title": "📖 小说标题",
|
||
"novel_title_placeholder": "输入小说标题",
|
||
"target_words": "📊 目标字数",
|
||
"char_setting": "👥 人物设定",
|
||
"char_setting_placeholder": "主角姓名、性格、背景等(可选)",
|
||
"world_setting": "🌍 世界观设定",
|
||
"world_setting_placeholder": "时代背景、世界规则等(可选)",
|
||
"plot_idea": "📖 主线剧情想法",
|
||
"plot_idea_placeholder": "核心冲突、发展方向、结局走向等(可选)",
|
||
"existing_content": "已有内容(可编辑)",
|
||
"continue_result": "续写结果",
|
||
"continue_status": "续写状态",
|
||
"start_continue": "开始续写"
|
||
},
|
||
"polish": {
|
||
"header": "### 上传小说 → 选择润色类型 → 智能优化",
|
||
"upload_file": "📤 上传文件 (txt/pdf/epub/md/docx)",
|
||
"polish_type_label": "润色类型",
|
||
"polish_general": "全面润色",
|
||
"polish_find_errors": "查找错误",
|
||
"polish_suggestions": "改进建议",
|
||
"polish_direct": "直接修改",
|
||
"polish_remove_ai": "去除AI味",
|
||
"polish_enhance": "增强细节",
|
||
"polish_dialogue": "优化对话",
|
||
"polish_pacing": "改善节奏",
|
||
"custom_req": "自定义要求(可选)",
|
||
"custom_req_placeholder": "例如:加强人物性格描写、增加环境氛围、优化对话流畅度等",
|
||
"parse_status": "解析状态",
|
||
"start_polish": "开始润色",
|
||
"polish_suggest_btn": "润色并提供建议",
|
||
"original_text": "原文(可编辑)",
|
||
"polished_text": "润色结果",
|
||
"suggestions_label": "改进建议",
|
||
"polish_status": "润色状态"
|
||
},
|
||
"create": {
|
||
"header": "### 填写设定 → 生成大纲 → 自动创作(支持续写、暂停)",
|
||
"novel_title": "📖 小说标题",
|
||
"novel_title_default": "未命名小说",
|
||
"genre_label": "📚 小说类型",
|
||
"sub_genres_label": "🏷️ 子主题 / 标签",
|
||
"suggested_titles_list": "推荐列表(可在此编辑)",
|
||
"suggested_titles_radio": "选择一个标题",
|
||
"suggested_titles_help": "您可以自由编辑上方的文本,下方的选项将自动更新。",
|
||
"sub_genres": [
|
||
"后宫",
|
||
"1v1",
|
||
"NP",
|
||
"女扮男装",
|
||
"男扮女装",
|
||
"穿越",
|
||
"穿书",
|
||
"重生",
|
||
"系统",
|
||
"金手指",
|
||
"随身空间",
|
||
"灵泉",
|
||
"读心术",
|
||
"无敌流",
|
||
"苟道",
|
||
"热血",
|
||
"搞笑",
|
||
"爽文",
|
||
"甜宠",
|
||
"虐恋",
|
||
"破镜重圆",
|
||
"先婚后爱",
|
||
"欢喜冤家",
|
||
"青梅竹马",
|
||
"豪门世家",
|
||
"总裁",
|
||
"明星",
|
||
"娱乐圈",
|
||
"校园",
|
||
"学霸",
|
||
"网游",
|
||
"电竞",
|
||
"直播",
|
||
"美食",
|
||
"农场",
|
||
"种田",
|
||
"养娃",
|
||
"致富",
|
||
"宫斗",
|
||
"宅斗",
|
||
"权谋",
|
||
"女强",
|
||
"男强",
|
||
"双洁",
|
||
"废柴流",
|
||
"天才流",
|
||
"退婚流",
|
||
"灵气复苏",
|
||
"末世",
|
||
"机甲",
|
||
"星际",
|
||
"ABO",
|
||
"狼人",
|
||
"吸血鬼",
|
||
"西幻",
|
||
"魔法",
|
||
"剑魔",
|
||
"法师",
|
||
"扮猪吃虎",
|
||
"悲剧",
|
||
"治愈",
|
||
"黑暗",
|
||
"哥特",
|
||
"心理学",
|
||
"精神分裂",
|
||
"多重人格",
|
||
"悬疑",
|
||
"破案",
|
||
"盗墓",
|
||
"僵尸",
|
||
"规则怪谈",
|
||
"无限流",
|
||
"快穿",
|
||
"殖民",
|
||
"制造",
|
||
"领主",
|
||
"种植",
|
||
"钓鱼",
|
||
"御兽",
|
||
"宝可梦",
|
||
"动漫",
|
||
"哈利波特",
|
||
"漫威",
|
||
"星海",
|
||
"都市传说",
|
||
"古代",
|
||
"民国",
|
||
"七零年代",
|
||
"八零年代",
|
||
"九零年代",
|
||
"异世",
|
||
"大陆",
|
||
"部落",
|
||
"原始",
|
||
"修仙",
|
||
"复仇",
|
||
"炮灰",
|
||
"反派",
|
||
"先知",
|
||
"法术"
|
||
],
|
||
"genres": [
|
||
"玄幻仙侠",
|
||
"都市言情",
|
||
"科幻",
|
||
"武侠",
|
||
"悬疑",
|
||
"历史",
|
||
"军事",
|
||
"游戏",
|
||
"恐怖",
|
||
"穿越重生",
|
||
"系统",
|
||
"同人",
|
||
"末世",
|
||
"种田搞笑",
|
||
"古代言情",
|
||
"西方奇幻",
|
||
"女强",
|
||
"总裁",
|
||
"青春校园",
|
||
"宫斗",
|
||
"宅斗",
|
||
"洪荒",
|
||
"网游言情",
|
||
"都市异能",
|
||
"灵异悬疑",
|
||
"耽美",
|
||
"百合",
|
||
"盗墓探险",
|
||
"异界大陆",
|
||
"古代种田",
|
||
"随身空间",
|
||
"ABO",
|
||
"吸血鬼",
|
||
"体育竞技",
|
||
"动漫同人",
|
||
"无限流",
|
||
"其他"
|
||
],
|
||
"char_setting": "👥 人物设定",
|
||
"char_setting_placeholder": "主角姓名、性格、背景等",
|
||
"world_setting": "🌍 世界观设定",
|
||
"world_setting_placeholder": "时代背景、世界规则、特色设置等",
|
||
"plot_idea": "📖 主线剧情想法",
|
||
"plot_idea_placeholder": "核心冲突、发展方向、结局走向等",
|
||
"num_main_chars": "主要角色数量",
|
||
"num_sub_chars": "配角/反派数量",
|
||
"custom_prompt_label": "附加要求 (可选)",
|
||
"custom_prompt_placeholder": "输入额外要求 (例如: 都市异能风格...)",
|
||
"suggest_title_btn": "✨ 生成书名",
|
||
"suggest_btn": "✨ AI获取灵感",
|
||
"suggest_plot_btn": "✨ AI构思主线",
|
||
"suggesting_status": "正在思考灵感...",
|
||
"chapter_count": "📊 章节数目(留空为20)",
|
||
"gen_outline_btn": "生成大纲",
|
||
"outline_display": "📋 大纲(可手动编辑)",
|
||
"context_header": "### 🔄 上下文增强设置(可选)",
|
||
"enable_context": "启用上下文增强",
|
||
"enable_context_info": "开启后,将使用前面章节的摘要/全文作为生成新章节的上下文",
|
||
"context_mode_label": "上下文模式",
|
||
"context_summary_mode": "摘要模式",
|
||
"context_full_mode": "全文模式",
|
||
"context_mode_info": "摘要模式:使用前面章节的摘要;全文模式:使用前面所有章节的完整内容",
|
||
"context_chapters": "上下文章节数",
|
||
"context_chapters_info": "使用前面多少章的摘要作为上下文",
|
||
"context_max_length": "上下文最大长度",
|
||
"context_max_length_info": "上下文的最大字符数",
|
||
"outline_format_help": "#### 📝 大纲格式说明\n请按以下格式编写大纲(任选其一):\n\n**格式1** (推荐):\n- 第1章: 开篇 - 介绍主人公和世界观\n- 第2章: 冲突 - 主人公遇到第一个重大挑战\n\n**格式2**:\n- 1. 开篇 - 介绍主人公和世界观\n- 2. 冲突 - 主人公遇到第一个重大挑战\n\n**注意**: 标题和描述用英文破折号 `-` 分隔,每行一章",
|
||
"start_gen_btn": "开始生成 / 续写",
|
||
"pause_gen_btn": "暂停生成",
|
||
"cache_status": "💾 缓存状态",
|
||
"cache_status_default": "无缓存",
|
||
"cache_timestamp": "⏰ 缓存时间",
|
||
"export_format_label": "📄 导出格式",
|
||
"export_format_word": "Word (.docx)",
|
||
"export_format_txt": "文本 (.txt)",
|
||
"export_format_md": "Markdown (.md)",
|
||
"export_format_html": "HTML (.html)",
|
||
"export_progress_btn": "📥 导出当前进度",
|
||
"download_file": "下载文件",
|
||
"export_status": "导出状态",
|
||
"novel_display": "📚 小说正文(实时更新)",
|
||
"gen_status": "生成状态",
|
||
"gen_status_default": "就绪"
|
||
},
|
||
"export": {
|
||
"header": "### 将创作导出为多种格式",
|
||
"paste_content": "粘贴小说内容",
|
||
"paste_placeholder": "从创作页面复制完整小说文本",
|
||
"novel_title": "小说标题",
|
||
"novel_title_placeholder": "用于文件名",
|
||
"export_word": "导出为 Word (.docx)",
|
||
"export_txt": "导出为纯文本 (.txt)",
|
||
"export_md": "导出为 Markdown (.md)",
|
||
"export_html": "导出为网页 (.html)",
|
||
"download_file": "下载文件",
|
||
"export_status": "导出状态",
|
||
"recent_exports": "最近导出的文件",
|
||
"refresh_files": "刷新文件列表",
|
||
"empty_content": "内容为空"
|
||
},
|
||
"continue_tab": {
|
||
"header": "### 选择项目 → 查看进度 → 继续创作",
|
||
"select_project": "📖 选择要续写的项目",
|
||
"load_btn": "📥 加载项目",
|
||
"project_info": "项目信息",
|
||
"no_project_loaded": "_尚未选择项目。请从列表中选择项目并点击加载项目。_",
|
||
"info_template": "**📖 {title}** | 📚 {genre}\n\n✅ 完成: **{completed}/{total} 章** ({percent}%)\n\n👤 人物: {char}\n\n🌍 世界观: {world}\n\n📖 剧情: {plot}",
|
||
"outline_label": "📋 项目大纲 (✅ = 已完成, ⬜ = 未写)",
|
||
"novel_label": "📚 已写内容",
|
||
"context_header": "### 🔄 上下文设置",
|
||
"continue_gen_btn": "▶️ 继续生成章节",
|
||
"pause_btn": "⏸️ 暂停",
|
||
"gen_status": "状态",
|
||
"gen_status_default": "就绪 - 选择项目以继续写作",
|
||
"select_first": "❌ 请先选择并加载项目",
|
||
"loaded_ok": "✅ 项目'{title}'已加载 - {completed}/{total} 章已完成",
|
||
"all_complete": "✅ 项目'{title}'已完成所有章节!",
|
||
"no_project_selected": "❌ 请选择一个项目",
|
||
"project_not_found": "❌ 未找到项目",
|
||
"load_failed": "❌ 加载项目失败: {error}",
|
||
"no_outline": "❌ 项目没有大纲。请使用创作标签。",
|
||
"continue_starting": "▶️ 从第 {chapter} 章开始继续生成..."
|
||
},
|
||
"projects": {
|
||
"header": "### 管理所有创作项目",
|
||
"refresh_btn": "🔄 刷新项目列表",
|
||
"projects_table": "我的项目",
|
||
"status_label": "状态",
|
||
"export_header": "### 📥 导出项目",
|
||
"select_project": "📖 选择要导出的项目",
|
||
"export_format": "📄 导出格式",
|
||
"export_btn": "📤 准备下载文件",
|
||
"download_file": "下载文件",
|
||
"export_status": "状态",
|
||
"recent_exports": "最近导出的文件",
|
||
"refresh_files": "刷新文件列表",
|
||
"delete_header": "### 🗑️ 删除项目",
|
||
"delete_select_project": "选择要删除的项目",
|
||
"delete_btn": "🗑️ 永久删除项目",
|
||
"delete_confirm": "⚠️ 确定要删除该项目吗?此操作不可逆。",
|
||
"delete_success": "✅ 成功删除项目",
|
||
"delete_failed": "❌ 删除项目失败:{error}",
|
||
"actions_header": "### ✍️ 项目操作",
|
||
"select_project_action": "📖 选择项目",
|
||
"continue_btn": "✍️ 续写",
|
||
"rewrite_btn": "🔄 重写",
|
||
"polish_btn": "✨ 润色",
|
||
"select_project_first": "❌ 请先选择一个项目",
|
||
"project_not_found": "❌ 未找到项目",
|
||
"loaded_to_create": "✅ 项目'{title}'已加载到创作标签",
|
||
"loaded_to_rewrite": "✅ 项目'{title}'内容已加载到重写标签",
|
||
"loaded_to_polish": "✅ 项目'{title}'内容已加载到润色标签",
|
||
"action_status": "状态",
|
||
"ai_illustration_header": "AI 章节插画生成",
|
||
"gen_illustration_btn": "生成插画",
|
||
"illustration_label": "章节插画",
|
||
"select_chapter": "请选择一个章节",
|
||
"invalid_chapter": "章节无效",
|
||
"chapter_not_found": "未找到章节"
|
||
},
|
||
"settings": {
|
||
"header": "### 🔧 API 接口配置与写作参数",
|
||
"tab_backends": "🌐 接口管理",
|
||
"tab_params": "📝 生成参数",
|
||
"tab_cache": "💾 缓存管理",
|
||
"backends_header": "#### 📋 配置后端接口",
|
||
"refresh_list": "🔄 刷新列表",
|
||
"test_all": "✅ 测试所有接口",
|
||
"backends_table": "已配置的后端列表",
|
||
"add_backend_header": "#### ➕ 添加新接口",
|
||
"provider_label": "API提供商",
|
||
"provider_info": "选择API提供商后自动填充默认配置",
|
||
"backend_name": "接口名称*",
|
||
"backend_name_placeholder": "例如: 我的OpenAI",
|
||
"backend_type": "接口类型*",
|
||
"base_url": "Base URL",
|
||
"base_url_placeholder": "例如: https://api.example.com/v1(仅OpenAI兼容接口需要填写)",
|
||
"model_name": "模型名称*",
|
||
"model_name_placeholder": "选择提供商后自动填充,可修改",
|
||
"api_key": "API Key (Ollama可留空)*",
|
||
"api_key_placeholder": "输入您的API密钥(不会被明文保存)",
|
||
"timeout": "超时时间(秒)",
|
||
"retry_count": "重试次数",
|
||
"enable_backend": "启用此接口",
|
||
"add_btn": "➕ 添加接口",
|
||
"operation_result": "操作结果",
|
||
"test_manage_header": "#### 🔍 测试与管理",
|
||
"test_backend_name": "要测试的接口名称",
|
||
"test_backend_placeholder": "输入接口名称来测试连接",
|
||
"test_btn": "🧪 测试连接",
|
||
"test_result": "测试结果",
|
||
"delete_backend_name": "要删除的接口名称",
|
||
"delete_backend_placeholder": "输入接口名称来删除",
|
||
"delete_btn": "🗑️ 删除接口",
|
||
"delete_result": "删除结果",
|
||
"params_header": "#### 调整小说生成的各项参数",
|
||
"temperature_label": "Temperature (创意度)",
|
||
"temperature_info": "越高越有创意,越低越保守",
|
||
"top_p_info": "控制输出的多样性",
|
||
"top_k_info": "从最可能的K个token中选择",
|
||
"max_tokens_info": "每次生成的最大token数",
|
||
"chapter_target_words": "每章目标字数",
|
||
"writing_style": "写作风格",
|
||
"writing_styles": [
|
||
"流畅自然,情节紧凑,人物刻画细腻",
|
||
"文笔优美,意境深远",
|
||
"快节奏,情节跌宕起伏",
|
||
"细腻描写,情感丰富",
|
||
"诙谐趣味,轻松活泼"
|
||
],
|
||
"tone_label": "语调",
|
||
"tones": [
|
||
"中立",
|
||
"严肃",
|
||
"轻松",
|
||
"怀疑",
|
||
"温和",
|
||
"激情"
|
||
],
|
||
"char_dev_label": "人物塑造",
|
||
"char_dev_options": [
|
||
"详细",
|
||
"中等",
|
||
"简洁"
|
||
],
|
||
"plot_complexity_label": "情节复杂度",
|
||
"plot_complexity_options": [
|
||
"简单",
|
||
"中等",
|
||
"复杂"
|
||
],
|
||
"save_params_btn": "💾 保存生成参数",
|
||
"save_status": "保存状态",
|
||
"cache_header": "#### 📋 管理生成缓存",
|
||
"cache_size": "缓存大小",
|
||
"refresh_cache": "🔄 刷新缓存列表",
|
||
"get_cache_size": "📊 获取缓存大小",
|
||
"cache_table": "缓存列表",
|
||
"clear_selected": "🗑️ 清理选中缓存",
|
||
"clear_all": "🗑️ 清理所有缓存",
|
||
"cache_op_status": "操作状态",
|
||
"summary_cache_header": "#### 📋 管理上下文摘要缓存",
|
||
"summary_cache_size": "摘要缓存大小",
|
||
"refresh_summary": "🔄 刷新摘要列表",
|
||
"get_summary_size": "📊 获取摘要大小",
|
||
"summary_cache_table": "摘要缓存列表",
|
||
"clear_summary_cache": "🗑️ 清理所有摘要缓存",
|
||
"tab_genre": "📚 类型管理",
|
||
"genre_desc": "添加、修改、删除小说类型并编写详细描述/指南。AI在此类型的写作/灵感生成时将其作为系统提示。",
|
||
"genre_select": "选择要修改的类型",
|
||
"genre_name": "类型名称",
|
||
"genre_name_placeholder": "玄幻仙侠、科幻...",
|
||
"genre_description": "描述 / 写作指南",
|
||
"genre_description_placeholder": "输入此类型的写作风格、语气和特征,供AI学习...",
|
||
"genre_add_btn": "➕ 新增",
|
||
"genre_update_btn": "💾 更新",
|
||
"genre_delete_btn": "🗑️ 删除",
|
||
"genre_op_status": "操作状态",
|
||
"genre_err_name_empty": "请输入类型名称!",
|
||
"genre_err_exists": "该类型名称已存在!",
|
||
"genre_add_success": "成功添加新类型!",
|
||
"genre_err_none_selected": "请选择一个类型!",
|
||
"genre_update_success": "成功更新该类型!",
|
||
"genre_err_update": "更新错误或名称冲突!",
|
||
"genre_delete_success": "已成功删除该类型!",
|
||
"genre_err_delete": "删除失败!",
|
||
"tab_sub_genre": "🏷️ 子主题管理(Tag)",
|
||
"sub_genre_desc": "添加、修改、删除子主题(标签)并编写描述/指南。AI在此子主题的写作生成时将其合并作为系统提示。",
|
||
"sub_genre_select": "选择要修改的子主题",
|
||
"sub_genre_name": "子主题名称",
|
||
"sub_genre_name_placeholder": "系统、穿越、爽文...",
|
||
"sub_genre_description": "描述 / 写作指南",
|
||
"sub_genre_description_placeholder": "输入此主题的细节,如人物塑造或背景设定,供AI学习...",
|
||
"sub_genre_add_btn": "➕ 新增",
|
||
"sub_genre_update_btn": "💾 更新",
|
||
"sub_genre_delete_btn": "🗑️ 删除",
|
||
"sub_genre_op_status": "操作状态",
|
||
"sub_genre_err_name_empty": "请输入子主题名称!",
|
||
"sub_genre_err_exists": "该子主题名已存在!",
|
||
"sub_genre_add_success": "成功添加新子主题!",
|
||
"sub_genre_err_none_selected": "请选择一个子主题!",
|
||
"sub_genre_update_success": "成功更新该子主题!",
|
||
"sub_genre_err_update": "更新错误或名称冲突!",
|
||
"sub_genre_delete_success": "已成功删除该子主题!",
|
||
"sub_genre_err_delete": "删除失败!"
|
||
},
|
||
"about": {
|
||
"content": "# AI小说创作工具 Pro v4.0 正式版\n## 生产级别的智能小说创作系统\n\n### 🌟 主要功能\n- **智能创作**: 从零开始创作长篇小说,支持自定义大纲\n- **断点续传**: 支持暂停后续写,每章自动保存,生成中途也能在项目管理中看到\n- **智能重写**: 上传已有小说文本,用17种预设风格进行高质量重写\n- **智能续写**: 新增续写模式,上传别人写一半的小说,AI自动续写后续内容\n- **小说润色**: 全新的润色功能,支持全面润色、查找错误、改进建议、去除AI味等8种润色类型\n- **灵活文件解析**: 支持自定义章节模板,可识别各种格式的小说文件\n- **多格式导出**: 支持 Word、TXT、Markdown、HTML 等多种格式,导出可直接下载\n- **项目管理**: 管理多个创作项目,支持断点续写,自动保存进度\n- **灵活配置**: 支持多个 API 后端,Ollama密钥可选配置,细粒度的创作参数调整\n- **错误重试**: 生成章节时字数为0会自动重试,确保每章都有内容\n- **端口自动查找**: 默认端口被占用时自动查找可用端口\n\n### 🔧 技术特性\n- **错误恢复**: 完整的错误处理和日志系统\n- **缓存机制**: 智能缓存避免重复调用 API\n- **速率限制**: 内置令牌桶算法防止 API 限流\n- **负载均衡**: 多后端自动轮询\n- **性能监控**: 实时性能统计和分析\n- **线程安全**: 完全的并发安全设计\n\n### 🆕 v4.0 新增功能\n1. **断点续传**: 小说生成支持暂停后续写,每章自动保存\n2. **字数为0重试**: 章节生成失败或字数为0时自动重试3次\n3. **17种重写风格**: 新增古代宫斗、现代军事、历史演义等多种风格\n4. **智能续写模式**: 上传别人写一半的小说,AI自动续写后续内容\n5. **小说润色模块**: 全新润色功能,支持8种润色类型\n6. **灵活章节解析**: 支持5种预设模板和自定义章节格式\n7. **Ollama优化**: Ollama接口的API Key现在可以留空\n8. **直接下载**: 项目导出现在支持直接下载,无需到文件夹查找\n9. **端口自动查找**: 默认端口被占用时自动查找可用端口\n10. **打包支持**: 支持打包成exe,无需Python环境也可运行\n\n### 📋 系统要求\n- Python 3.8+\n- 依赖: gradio, pandas, openai, python-docx\n- 可选: PyMuPDF (PDF支持), ebooklib+beautifulsoup4 (EPUB支持)\n\n### 📦 打包成exe\n使用 `python build_exe.py` 命令可将应用打包成Windows可执行文件\n详见 `打包说明.md`\n\n### 📞 技术支持\n- 查看日志文件: `logs/` 目录\n- 项目保存位置: `projects/` 目录\n- 导出文件位置: `exports/` 目录\n- 缓存位置: `cache/` 目录\n- GitHub: [GitHub](https://github.com/yangqi1309134997-coder/ai-novel-generator)\n- 幻城云笔记: [幻城云笔记](https://hcnote.cn/)\n\n### ⚖️ 许可证\nMIT License"
|
||
},
|
||
"messages": {
|
||
"no_content_polish": "无内容可润色",
|
||
"no_content_rewrite": "无内容可重写",
|
||
"no_content_continue": "无内容可续写",
|
||
"no_title": "请填写小说标题",
|
||
"no_file": "无文件",
|
||
"polish_success": "润色成功",
|
||
"polish_complete": "润色完成",
|
||
"polish_complete_saved": "润色完成 | 已保存至项目管理",
|
||
"polish_failed": "润色失败: {error}",
|
||
"polish_invalid": "润色返回了无效内容(长度: {length}字)",
|
||
"polish_status_msg": "润色返回了状态消息而非实际内容: '{content}'",
|
||
"polish_segment_failed": "第 {num} 段润色失败: {error}",
|
||
"polish_segment_invalid": "第 {num} 段润色返回了无效内容(长度: {length}字)",
|
||
"polish_segment_progress": "润色第 {current}/{total} 段",
|
||
"polish_auto_split": "文本过长({length}字),启用自动分段处理",
|
||
"polish_split_done": "已分为 {count} 段,开始逐段润色",
|
||
"polish_all_done": "分段润色完成,共 {count} 段,总字数: {total}",
|
||
"polish_save_success": "润色结果已保存到项目: {id}",
|
||
"polish_save_failed": "润色结果保存失败: {msg}",
|
||
"rewrite_success": "重写成功",
|
||
"rewrite_complete": "重写完成",
|
||
"rewrite_paused": "已暂停 - 完成 {done}/{total} 段",
|
||
"rewrite_progress": "进度 {done}/{total} | 约 {words} 字",
|
||
"rewrite_segment_failed": "第 {num} 段重写失败: {error}",
|
||
"rewrite_invalid": "第 {num} 段重写返回了无效内容(长度: {length}字)",
|
||
"rewrite_status_msg": "第 {num} 段重写返回了状态消息而非实际内容: '{content}'",
|
||
"rewrite_segment_progress": "重写第 {current}/{total} 段",
|
||
"rewrite_save_success": "重写结果已保存到项目: {id}",
|
||
"rewrite_save_failed": "重写结果保存失败: {msg}",
|
||
"continue_success": "续写成功",
|
||
"continue_complete": "续写完成",
|
||
"continue_complete_saved": "续写完成 | 已保存至项目管理",
|
||
"continue_failed": "续写失败: {error}",
|
||
"continue_invalid": "续写返回了无效内容(长度: {length}字)",
|
||
"continue_status_msg": "续写返回了状态消息而非实际内容: '{content}'",
|
||
"continue_save_success": "续写结果已保存到项目: {id}",
|
||
"continue_save_failed": "续写结果保存失败: {msg}",
|
||
"gen_success": "生成成功",
|
||
"gen_outline_empty": "错误:大纲为空",
|
||
"gen_outline_failed": "大纲解析失败: {msg}",
|
||
"gen_paused": "已暂停 - 已完成 {done}/{total} 章,项目已保存",
|
||
"gen_chapter_progress": "正在生成第 {current}/{total} 章:{title}",
|
||
"gen_chapter_skip": "已完成 {num}/{total} 章(从缓存恢复)",
|
||
"gen_chapter_retry": "第 {num} 章生成失败或字数为0(尝试 {attempt}/{max}),正在重试...",
|
||
"gen_summarizing": "正在总结前几章以获取上下文...",
|
||
"gen_constructing_prompt": "正在构建第 {num} 章的提示词...",
|
||
"gen_waiting_ai": "正在等待 AI 响应第 {num} 章...",
|
||
"gen_saving_db": "正在将第 {num} 章保存到数据库...",
|
||
"gen_chapter_failed": "生成失败:第 {num} 章生成失败(已重试{max}次)",
|
||
"gen_complete": "生成完成 | 共 {total} 章 | 约 {words} 字 | 项目已保存",
|
||
"gen_save_success": "项目已保存: {id}",
|
||
"gen_save_failed": "项目保存失败: {msg}",
|
||
"cache_found": "发现缓存: {msg}",
|
||
"cache_chapter_restore": "从缓存恢复章节 {num}: {words} 字",
|
||
"stop_requested": "已请求暂停(当前章节完成后停止)",
|
||
"user_stop_requested": "用户请求停止生成",
|
||
"split_words_done": "按字数分段完成,共 {count} 段,每段约 {words} 字",
|
||
"split_pattern_done": "按固定文本分段完成,共 {count} 段",
|
||
"split_failed": "分段失败: {error}",
|
||
"split_no_pattern": "请输入分段标记",
|
||
"export_complete": "导出完成",
|
||
"export_failed": "导出失败: {error}",
|
||
"image_cover_base": "为小说《{title}》设计的高质量专业书封,题材为“{genre}”。电影级光效,细节丰富,史诗风格。",
|
||
"image_illustration_base": "为小说章节《{title}》设计的精美插画。场景描述:{summary}。数字艺术,高度精细。"
|
||
},
|
||
"templates": {
|
||
"default": "用更生动、细腻的笔触重写,语言优美,保留原意和情节,但加入更多细节描写和人物内心活动。",
|
||
"xianxia": "以古典仙侠风格重写,语言古风优雅,增加仙术法宝描写、灵气意境、人物心境修炼与道心感悟,保留原情节。",
|
||
"romance": "现代都市言情风格重写,语言轻松甜宠或虐心,增加浪漫互动、细腻心理描写、日常生活细节,人物情感更丰富。",
|
||
"thriller": "悬疑惊悚风格重写,语言营造紧张氛围,增加心理惊悚描写、线索铺垫、环境渲染与反转元素。",
|
||
"scifi": "硬科幻风格重写,语言严谨专业,增加科学原理解释、技术细节、世界观构建,逻辑自洽。",
|
||
"wuxia": "金庸古龙式武侠风格重写,语言潇洒豪气,增加武功招式描写、江湖恩怨、侠义精神。",
|
||
"palace": "古代宫廷风格重写,语言典雅华丽,增加宫廷礼仪、权谋算计、勾心斗角,人物关系复杂微妙。",
|
||
"military": "现代军事风格重写,语言硬朗刚毅,增加战术描写、武器装备、军营生活,突出军人的血性与担当。",
|
||
"historical": "历史演义风格重写,语言古朴庄重,增加历史背景、时代氛围、人物传记感,宏大的历史视角。",
|
||
"supernatural": "灵异玄幻风格重写,语言神秘诡异,增加超自然元素、灵异现象、阴阳五行,营造玄幻氛围。",
|
||
"campus": "青春校园风格重写,语言清新活泼,增加校园生活细节、青春悸动、成长感悟,纯真美好。",
|
||
"business": "职场商战风格重写,语言干练务实,增加商业策略、职场博弈、心理博弈,突出商业智慧。",
|
||
"cyberpunk": "赛博朋克风格重写,语言科技感十足,增加高科技元素、虚拟现实、人工智能,反乌托邦色彩。",
|
||
"fantasy": "西方奇幻风格重写,语言史诗感强,增加魔法体系、种族设定、神话元素,中世纪氛围。",
|
||
"horror": "恐怖悬疑风格重写,语言阴森压抑,增加恐怖氛围、心理暗示、超自然现象,让人毛骨悚然。",
|
||
"humor": "幽默搞笑风格重写,语言诙谐机智,增加搞笑元素、夸张描写、喜剧效果,轻松有趣。",
|
||
"literary": "文艺清新风格重写,语言优美清新,增加情感细腻、意境深远、文字诗意,如诗如画。",
|
||
"adventure": "热血冒险风格重写,语言激昂澎湃,增加冒险元素、战斗场景、友情羁绊,充满正能量。",
|
||
"name_default": "重写风格 - 默认",
|
||
"name_xianxia": "重写风格 - 玄幻仙侠",
|
||
"name_romance": "重写风格 - 都市言情",
|
||
"name_thriller": "重写风格 - 悬疑惊悚",
|
||
"name_scifi": "重写风格 - 科幻硬核",
|
||
"name_wuxia": "重写风格 - 武侠江湖",
|
||
"name_palace": "重写风格 - 古代宫斗",
|
||
"name_military": "重写风格 - 现代军事",
|
||
"name_historical": "重写风格 - 历史演义",
|
||
"name_supernatural": "重写风格 - 灵异玄幻",
|
||
"name_campus": "重写风格 - 青春校园",
|
||
"name_business": "重写风格 - 职场商战",
|
||
"name_cyberpunk": "重写风格 - 赛博朋克",
|
||
"name_fantasy": "重写风格 - 西幻魔法",
|
||
"name_horror": "重写风格 - 恐怖悬疑",
|
||
"name_humor": "重写风格 - 幽默搞笑",
|
||
"name_literary": "重写风格 - 文艺清新",
|
||
"name_adventure": "重写风格 - 热血冒险"
|
||
},
|
||
"prompts": {
|
||
"outline_system": "你是专业的小说大纲策划师,擅长创作吸引人的故事框架。",
|
||
"outline_user": "请生成一篇{genre}小说的完整大纲,标题:《{title}》。\n\n人物设定:{character_setting}\n\n世界观:{world_setting}\n\n主线剧情:{plot_idea}\n\n风格要求:{style_desc}\n\n要求:\n1. 总章节数约 {total_chapters} 章\n2. 每章格式严格:第X章: 章节标题 - 简要剧情描述(50-100字)\n3. 情节连贯,有起承转合,人物发展合理\n4. 只输出大纲列表,不要其他内容\n5. 大纲要精彩、引人入胜、有悬念\n6. 按三幕结构分配章节:\n - 第一幕(25%章节):介绍背景、建立世界观、设定冲突\n - 第二幕(50%章节):发展、升级、中期转折\n - 第三幕(25%章节):高潮、解决、结局\n7. 每章必须有小冲突或明确的进展,不能有‘水章’",
|
||
"chapter_system": "你是优秀的长篇小说作家,创作深入人心的故事。请用自然的人类写作风格。避免AI常见的写作模式,如:频繁以‘然而’、‘此外’、‘与此同时’开头;结尾过于圆满或说教;过多使用‘地+动词’结构;连续列举三个并列内容(如‘感到X、Y和Z’)。",
|
||
"chapter_user": "请撰写小说《{novel_title}》的第{chapter_num}章。\n\n章节标题:{chapter_title}\n本章大纲:{chapter_desc}\n\n整体设定:\n人物:{character_setting}\n世界观:{world_setting}\n主线剧情:{plot_idea}\n\n风格要求:{style_desc}\n\n具体要求:\n1. 正文约 {target_words} 字(中文字符)\n2. 情节严格符合本章大纲,与全书连贯\n3. 对话自然且具有每个角色的独特个性,心理描写细腻,环境描写生动\n4. 结尾留下适当悬念或铺垫下一章\n5. 使用‘展示而非叙述’技巧:通过行动和细节体现情感,而不是直接描述\n6. 平衡行动、对话和内心描写\n7. 只输出正文,不要章节标题、说明或其他内容{continuity_prompt}{context_prompt}",
|
||
"continuity_prompt": "\n\n【前文回顾】\n{previous_content}\n\n【连贯性检查清单】\n✓ 确保情节走向与前文保持一致\n✓ 人物状态和位置与前文对应\n✓ 已有的悬念在本章得到呼应或推进\n✓ 人物对话风格保持一致\n✓ 避免重复已有的信息或情节\n✓ 新的悬念为后续章节铺路\n✓ 检查与总体大纲的进度,确保不偏离主线\n✓ 发展副线剧情与主线并行推进\n\n请严格按照以上检查清单确保内容与前文连贯流畅。",
|
||
"context_prompt": "\n\n{context_summary}\n\n请根据以上摘要了解前文的主要情节,确保本章与前文连贯。",
|
||
"rewrite_system": "你是优秀的小说编辑,擅长用生动细腻的笔触改进文本。",
|
||
"rewrite_user": "请按照以下风格重写原文,保留原意和情节,但加入更多细节:\n\n风格要求:{style}\n\n原文:\n{text}\n\n【重要要求】\n1. 必须输出完整的重写后的小说内容,字数应该与原文相当\n2. 绝对不能只输出\"重写成功\"、\"润色成功\"、\"生成成功\"等状态消息\n3. 必须输出实际的重写文本,包含丰富的细节描写和情节展开\n4. 如果原文有1000字,重写后也应该有1000字左右\n5. 不要输出任何说明性文字或状态确认消息\n6. 增强多感官描写:嗅觉、味觉、触觉,不仅仅是视觉和听觉\n7. 添加环境细节反映角色心情\n8. 使用创意的比喻和类比,避免陈词滥调\n\n请严格按照以上要求输出完整的重写内容。",
|
||
"summary_system": "你是专业的内容编辑,擅长提炼文本的核心内容。",
|
||
"summary_user": "请为以下文本生成一个简洁的摘要,不超过{max_length}字。\n\n文本:\n{text}\n\n摘要:",
|
||
"polish_system": "你是专业的文学编辑和润色专家,擅长提升文本质量和文笔水平。",
|
||
"polish_general": "请对以下文本进行全面的润色优化,提升文笔质量,使语言更流畅、更生动、更有感染力。",
|
||
"polish_find_errors": "请仔细检查以下文本,找出其中的错误(包括错别字、语法错误、逻辑错误、用词不当等),并提出修改建议。",
|
||
"polish_suggest": "请阅读以下文本,提出具体的改进建议,包括情节、人物、对话、描写等方面的优化方向。",
|
||
"polish_direct": "请直接修改并优化以下文本,提升文笔质量,使其更加专业和完善。",
|
||
"polish_remove_ai": "请去除以下文本中的AI生成痕迹,使其更加自然、更像人工创作,增加人味和情感深度。",
|
||
"polish_enhance": "请对以下文本进行细节增强,增加环境描写、心理描写、感官描写等,使内容更加丰富立体。",
|
||
"polish_dialogue": "请优化以下文本中的对话部分,使对话更自然、更符合人物性格、更有个性。",
|
||
"polish_pacing": "请调整以下文本的节奏,优化情节推进速度,使故事更加引人入胜。",
|
||
"polish_extra_req": "\n\n额外要求:{custom_requirements}",
|
||
"polish_output_only": "\n\n原文:\n{text}\n\n请只输出润色后的文本或建议,不要其他内容。",
|
||
"polish_suggest_system": "你是专业的文学编辑,擅长文本分析、错误查找和润色优化。",
|
||
"polish_suggest_user": "请对以下文本进行全面分析和优化:\n\n1. **找出错误**:检查错别字、语法错误、逻辑错误、用词不当等\n2. **提出建议**:给出具体的改进建议,包括情节、人物、对话、描写等\n3. **直接修改**:提供润色后的优化版本\n\n原文:\n{text}\n\n{extra_req}\n\n请按以下格式输出:\n---\n【发现的错误】\n(列出发现的错误)\n\n【改进建议】\n(列出改进建议)\n\n【润色后的文本】\n(直接修改后的文本)\n---",
|
||
"suggest_system": "你是擅长为创意小说构思剧情、背景与世界观的专业策划专家,给出的创意要深邃有趣且非常具体。",
|
||
"suggest_title_user": "请为一部小说提供约10个书名建议。\n\n类型:{genre}\n\n要求:\n- 书名必须简洁、令人印象深刻、引起好奇心,并准确反映该类型的特点。\n- 每个书名需附带一句简短的故事初步内容描述。\n- 必须且只能返回原生 JSON 格式的结果,不要包含 Markdown 标记 (```json),也不要任何解释或多余的对话。\n- 强制 JSON 结构:{\"suggestions\": [{\"title\": \"书名 1\", \"description\": \"描述 1\"}, {\"title\": \"书名 2\", \"description\": \"描述 2\"}]}",
|
||
"suggest_char_user": "请为一本小说构思详细的人物设定。\n\n暂定书名:{title}\n类型:{genre}\n数量要求:\n- 主要角色:{num_main_chars} 人\n- 配角/反派:{num_sub_chars} 人\n\n对每个角色的要求:\n1. 明确角色定位(主角/配角/反派)\n2. 姓名、外貌及突出的性格特点\n3. 能力、技能或特殊力量\n4. 背景身世及核心动机\n\n请进行深入且富有层次的描写。仅返回设定内容,不作多余解释。",
|
||
"suggest_world_user": "请为一本小说构思世界观设定(150-200字)。\n\n暂定书名:{title}\n类型:{genre}\n\n要求:指出独特的法则、力量体系、社会结构或历史背景。仅返回设定内容。",
|
||
"suggest_plot_user": "请为该小说构思核心主线剧情(200-250字)作为发展基础。\n\n书名:{title}\n类型:{genre}\n\n(如有) 人物设定:{character_setting}\n(如有) 世界观:{world_setting}\n\n要求:\n- 剧情要有吸睛的开局、中期的转折以及明确的核心冲突\n- 外部冲突(对手、势力、任务)和内心冲突(矛盾、难以抉择)\n- 至少2-3个意想不到但合理的转折\n- 结局留有余味(圆满结局或开放式结局视类型而定)\n- 仅返回剧情大纲。",
|
||
"continue_system": "你是优秀的长篇小说作家,擅长创作引人入胜的故事和自然的情节衔接。",
|
||
"continue_user": "请续写小说《{novel_title}》的下一章内容。\n\n【已有设定】\n人物设定:{character_setting}\n世界观:{world_setting}\n主线剧情:{plot_idea}\n\n【风格要求】\n{style_desc}\n\n【前文回顾】(最近1500字)\n{previous_content}\n\n【续写要求】\n1. 根据前文内容自然续写下一章\n2. 保持与前文的连贯性,包括人物性格、情节发展、对话风格等\n3. 字数约 {target_words} 字\n4. 不要重复前文已有的内容\n5. 结尾留下适当的悬念或铺垫\n6. 只输出续写的正文,不要章节标题、说明或其他内容",
|
||
"chapter_summary_system": "你是专业的内容编辑,擅长提炼章节的核心情节和关键信息。",
|
||
"chapter_summary_user": "请为以下章节生成一个简洁的摘要(100-200字)。\n\n章节标题:{chapter_title}\n\n章节内容:\n{chapter_content}\n\n要求:\n1. 保留关键情节和人物信息\n2. 突出章节的核心冲突和转折\n3. 语言简洁明了\n4. 只输出摘要内容,不要其他说明",
|
||
"style_description": "写作风格:{writing_style}\n语调:{writing_tone}\n人物塑造:{character_development}\n情节复杂度:{plot_complexity}",
|
||
"context_header": "【前文摘要】\n",
|
||
"chapter_context_line": "第{chapter_num}章:{summary}\n",
|
||
"found_errors_header": "发现的错误",
|
||
"suggestions_header": "改进建议",
|
||
"polished_text_header": "润色后的文本",
|
||
"ai_no_format": "AI未按格式输出,请查看润色结果"
|
||
},
|
||
"generator": {
|
||
"title_empty": "小说标题不能为空",
|
||
"char_empty": "人物设定不能为空",
|
||
"world_empty": "世界观设定不能为空",
|
||
"plot_empty": "主线剧情不能为空",
|
||
"outline_empty": "大纲为空",
|
||
"outline_parse_failed": "无法从大纲中解析任何章节,请检查格式",
|
||
"outline_parse_success": "解析成功,共 {count} 章",
|
||
"outline_gen_success": "大纲生成成功",
|
||
"gen_success": "生成成功",
|
||
"suggest_success": "生成建议成功",
|
||
"text_empty": "文本为空",
|
||
"text_too_long_rewrite": "文本过长(>20000字),请分段处理",
|
||
"text_too_long_polish": "文本过长(>10000字),请分段处理",
|
||
"existing_text_empty": "已有文本为空",
|
||
"chapter_content_empty": "章节内容为空",
|
||
"api_empty_content": "API返回空内容,请检查API配置",
|
||
"api_status_msg": "API返回了状态消息,请检查API配置",
|
||
"rewrite_success": "重写成功",
|
||
"rewrite_too_short": "重写内容过短({length}字),可能是API问题",
|
||
"rewrite_failed_retries": "重写失败:在{max}次尝试后仍然失败",
|
||
"polish_success": "润色成功",
|
||
"polish_too_short": "润色内容过短({length}字),可能是API问题",
|
||
"polish_failed_retries": "润色失败:在{max}次尝试后仍然失败",
|
||
"continue_success": "续写成功",
|
||
"continue_too_short": "续写内容过短({length}字),可能是API问题",
|
||
"continue_failed_retries": "续写失败:在{max}次尝试后仍然失败",
|
||
"summary_success": "成功",
|
||
"summary_gen_success": "摘要生成成功",
|
||
"summary_gen_failed": "摘要生成失败",
|
||
"summary_gen_error": "生成摘要出错: {error}",
|
||
"cache_id_empty": "项目ID不能为空",
|
||
"cache_data_empty": "缓存数据不能为空",
|
||
"cache_save_success": "缓存保存成功",
|
||
"cache_save_failed": "保存缓存失败: {error}",
|
||
"cache_not_found": "缓存不存在",
|
||
"cache_load_success": "缓存加载成功",
|
||
"cache_load_failed": "加载缓存失败: {error}",
|
||
"cache_clear_success": "缓存清理成功",
|
||
"cache_clear_failed": "清理缓存失败: {error}",
|
||
"summary_empty": "摘要内容不能为空",
|
||
"summary_save_success": "摘要保存成功",
|
||
"summary_save_failed": "保存摘要失败: {error}",
|
||
"summary_dir_not_found": "摘要目录不存在",
|
||
"summary_load_done": "加载了 {count} 个章节摘要",
|
||
"summary_load_failed": "加载摘要失败: {error}",
|
||
"summary_clear_success": "摘要清理成功",
|
||
"summary_clear_failed": "清理摘要失败: {error}",
|
||
"unknown_title": "未知"
|
||
},
|
||
"exporter": {
|
||
"no_content": "无内容可导出",
|
||
"no_chapters": "无法从文本中提取章节",
|
||
"export_success": "导出成功: {filename}",
|
||
"export_failed": "导出失败: {error}",
|
||
"missing_docx": "错误:缺少python-docx依赖,请运行: pip install python-docx",
|
||
"missing_markdown": "错误:缺少markdown依赖,请运行: pip install markdown",
|
||
"generated_at": "生成于: {datetime}",
|
||
"generated_date": "生成日期:{date}",
|
||
"first_chapter": "第一章",
|
||
"body_font": "宋体",
|
||
"title_font": "黑体"
|
||
},
|
||
"config_api": {
|
||
"name_required": "接口名称不能为空",
|
||
"type_required": "接口类型不能为空",
|
||
"model_required": "模型名称不能为空",
|
||
"name_exists": "接口 '{name}' 已存在",
|
||
"add_success": "接口 '{name}' 添加成功",
|
||
"add_failed": "添加接口失败: {error}",
|
||
"update_success": "接口 '{name}' 更新成功",
|
||
"update_not_found": "未找到接口: {name}",
|
||
"update_failed": "更新接口失败: {error}",
|
||
"delete_success": "接口 '{name}' 已删除",
|
||
"delete_not_found": "未找到接口: {name}",
|
||
"delete_failed": "删除接口失败: {error}",
|
||
"toggle_success": "接口 '{name}' 已{status}",
|
||
"toggle_enabled": "启用",
|
||
"toggle_disabled": "禁用",
|
||
"toggle_not_found": "未找到接口: {name}",
|
||
"toggle_failed": "切换接口状态失败: {error}",
|
||
"test_success": "接口 '{name}' 测试成功",
|
||
"test_not_found": "未找到接口: {name}",
|
||
"test_failed": "接口 '{name}' 测试失败: {error}",
|
||
"test_prompt": "请回复'OK'来确认API连接正常。",
|
||
"export_success": "配置已导出到: {filepath}",
|
||
"export_failed": "导出配置失败: {error}",
|
||
"default_success": "已将接口 '{name}' 设为默认\n所有请求将优先尝试使用此接口",
|
||
"default_failed": "设置默认失败: {error}"
|
||
},
|
||
"project_manager": {
|
||
"create_success": "项目 '{title}' 创建成功",
|
||
"create_failed": "创建项目失败: {error}",
|
||
"save_success": "项目 '{title}' 保存成功",
|
||
"save_failed": "保存项目失败: {error}",
|
||
"load_success": "项目加载成功",
|
||
"load_not_found": "项目不存在: {id}",
|
||
"load_failed": "加载项目失败: {error}",
|
||
"delete_success": "项目已删除",
|
||
"delete_not_found": "项目不存在: {id}",
|
||
"delete_failed": "删除项目失败: {error}",
|
||
"export_success": "项目导出成功: {filepath}",
|
||
"export_failed": "导出项目失败: {error}"
|
||
},
|
||
"ui": {
|
||
"col_project_name": "项目名",
|
||
"col_type": "类型",
|
||
"col_created_at": "创建时间",
|
||
"col_updated_at": "更新时间",
|
||
"col_chapters": "章节数",
|
||
"col_completion": "完成度",
|
||
"col_current_chapter": "当前章节",
|
||
"col_total_chapters": "总章节",
|
||
"col_status": "状态",
|
||
"col_cache_time": "缓存时间",
|
||
"col_size_kb": "大小(KB)",
|
||
"col_project_id": "项目ID",
|
||
"col_chapter_count": "章节数",
|
||
"col_name": "名称",
|
||
"col_backend_type": "类型",
|
||
"col_model": "模型",
|
||
"col_enabled": "启用",
|
||
"col_timeout": "超时(秒)",
|
||
"col_retry_times": "重试次数",
|
||
"col_test": "🧪 测试",
|
||
"col_default": "⭐ 默认",
|
||
"no_projects": "暂无项目",
|
||
"no_cache": "暂无缓存",
|
||
"no_summary_cache": "暂无摘要缓存",
|
||
"found_projects": "找到 {count} 个项目",
|
||
"found_caches": "找到 {count} 个缓存",
|
||
"found_summary_caches": "找到 {count} 个摘要缓存",
|
||
"cache_total_size_kb": "缓存总大小: {size} KB",
|
||
"cache_total_size_mb": "缓存总大小: {size} MB",
|
||
"summary_total_size_kb": "摘要缓存总大小: {size} KB",
|
||
"summary_total_size_mb": "摘要缓存总大小: {size} MB",
|
||
"get_cache_size_failed": "获取缓存大小失败",
|
||
"get_summary_size_failed": "获取摘要缓存大小失败",
|
||
"cleared_caches": "✅ 已清理 {cleared}/{total} 个缓存",
|
||
"cleared_summary_caches": "✅ 已清理 {cleared}/{total} 个摘要缓存",
|
||
"no_cache_to_clear": "❌ 没有缓存可清理",
|
||
"no_summary_to_clear": "❌ 没有摘要缓存可清理",
|
||
"select_cache_to_clear": "❌ 请选择要清理的缓存",
|
||
"cache_found_info": "发现缓存:已完成 {current}/{total} 章",
|
||
"cache_timestamp_info": "缓存时间: {time}",
|
||
"cache_check_failed": "检查失败",
|
||
"no_content_export": "❌ 没有内容可导出",
|
||
"no_title_export": "❌ 请填写小说标题",
|
||
"unsupported_format": "❌ 不支持的导出格式: {format}",
|
||
"export_success": "✅ 导出成功!",
|
||
"export_failed": "❌ 导出失败: {error}",
|
||
"export_error": "❌ 导出出错: {error}",
|
||
"select_project": "❌ 请选择一个项目",
|
||
"project_not_exist": "❌ 项目'{title}'不存在",
|
||
"metadata_not_exist": "❌ 项目元数据文件不存在: {file}",
|
||
"no_exportable_content": "❌ 项目没有可导出的内容,请先生成章节内容",
|
||
"file_not_exist": "❌ 导出文件不存在: {file}",
|
||
"export_no_filepath": "❌ 导出失败: 未返回文件路径",
|
||
"fill_required_fields": "❌ 请填写所有必填字段(名称、URL、模型)",
|
||
"api_key_required": "❌ 该类型接口必须填写API密钥",
|
||
"enter_backend_name": "❌ 请输入后端名称",
|
||
"enter_delete_name": "❌ 请输入要删除的后端名称",
|
||
"refreshed_backends": "✅ 已刷新后端列表",
|
||
"backend_loaded_for_edit": "✅ 已加载配置 '{name}' 以供编辑",
|
||
"backend_test_header": "后端连接测试结果:\n",
|
||
"backend_available": "✓ 可用",
|
||
"backend_unavailable": "✗ 不可用",
|
||
"save_success": "保存成功",
|
||
"save_failed": "保存失败: {error}",
|
||
"no_file": "无文件",
|
||
"perf_no_data": "暂无性能数据",
|
||
"perf_report_header": "=== 性能监控报告 ===\n",
|
||
"perf_stat_line": "{name}: 平均={avg:.2f}ms, 最大={max:.2f}ms, 最小={min:.2f}ms, 次数={count}\n",
|
||
"validation_api_key_empty": "API密钥不能为空",
|
||
"validation_unknown_provider": "未知的API提供商",
|
||
"validation_openai_key_format": "OpenAI API密钥应该以'sk-'开头",
|
||
"validation_anthropic_key_format": "Anthropic API密钥应该以'sk-ant-'开头",
|
||
"validation_google_key_format": "Google API密钥格式不正确",
|
||
"validation_key_format_invalid": "API密钥格式不正确",
|
||
"validation_key_passed": "密钥格式验证通过",
|
||
"validation_model_empty": "模型名称不能为空",
|
||
"validation_model_invalid": "模型名称只能包含字母、数字、下划线、点和连字符",
|
||
"validation_model_passed": "模型名称验证通过",
|
||
"outline_chapter_format": "<details>\n<summary><b>第{num}章: {title}</b> <i>(点击展开/折叠)</i></summary>\n<br>\n\n{content}\n\n</details>\n\n",
|
||
"outline_chapter_format_open": "<details open>\n<summary><b>第{num}章: {title}</b> <i>(点击展开/折叠)</i></summary>\n<br>\n\n{content}\n\n</details>\n\n",
|
||
"segment_format": "<details open>\n<summary><b>第{num}段</b> <i>(点击展开/折叠)</i></summary>\n<br>\n\n{content}\n\n</details>\n\n",
|
||
"content_format": "<details open>\n<summary><b>内容</b> <i>(点击展开/折叠)</i></summary>\n<br>\n\n{content}\n\n</details>\n\n",
|
||
"rewritten_segments_summary": "所有段落",
|
||
"view_all": "🔍 查看全部",
|
||
"chapter": "第",
|
||
"segment": "段落",
|
||
"select_chapter_to_view": "📑 选择显示的章节",
|
||
"select_segment_to_view": "📑 选择显示的段落"
|
||
},
|
||
"api_client": {
|
||
"no_backends": "错误:无有效后端,请检查设置",
|
||
"invalid_messages": "错误:messages 必须是非空列表",
|
||
"no_api_client": "错误:无可用的API客户端",
|
||
"invalid_content": "API返回了无效内容(长度: {length}字)",
|
||
"error_prefix": "错误:{error}",
|
||
"retry_failed": "错误:在 {max} 次重试后仍然失败",
|
||
"rate_limit_error": "错误:已超过API调用频率限制(Rate Limit):{error}",
|
||
"auth_error": "认证错误:请检查API密钥或后端配置:{error}",
|
||
"connection_error": "连接错误:无法连接到API服务器:{error}",
|
||
"api_error": "API错误:API服务器返回错误:{error}",
|
||
"test_prompt": "你是一个有帮助的助手",
|
||
"test_hello": "你好",
|
||
"gen_image_success": "图像生成成功",
|
||
"gen_image_failed": "图像生成失败: {error}",
|
||
"image_gen_unsupported": "当前API提供商不支持图像生成功能。请使用OpenAI、Together AI或SiliconFlow等提供商的付费API。"
|
||
},
|
||
"file_parser": {
|
||
"no_file": "无文件",
|
||
"file_too_large": "错误:文件过大 ({size}MB > 50MB)",
|
||
"parse_complete": "解析完成,共 {count} 段,约 {chars} 字",
|
||
"read_failed": "读取失败:{error}",
|
||
"missing_pymupdf": "错误:缺少PyMuPDF依赖,请运行: pip install PyMuPDF",
|
||
"missing_ebooklib": "错误:缺少ebooklib或beautifulsoup4依赖,请运行: pip install ebooklib beautifulsoup4",
|
||
"missing_docx": "错误:缺少python-docx依赖,请运行: pip install python-docx",
|
||
"unsupported_format": "不支持的文件格式(支持 txt/pdf/epub/md/docx)",
|
||
"unsupported_chapter_format": "不支持的文件格式",
|
||
"chapter_parse_complete": "解析完成,共 {count} 章",
|
||
"chapter_parse_failed": "解析失败: {error}",
|
||
"split_word_done": "按字数分段完成,共 {count} 段,每段约 {words} 字",
|
||
"split_pattern_empty": "分段标记不能为空",
|
||
"word_count_positive": "字数必须大于0",
|
||
"invalid_regex": "无效的正则表达式: {error}",
|
||
"file_not_exist": "文件不存在: {path}",
|
||
"upload_read_failed": "读取上传文件失败: {error}"
|
||
},
|
||
"config": {
|
||
"backend_name_empty": "后端名称不能为空",
|
||
"unsupported_type": "不支持的类型: {type}",
|
||
"base_url_invalid": "Base URL必须以http或https开头",
|
||
"api_key_empty": "API Key不能为空",
|
||
"model_empty": "模型名称不能为空",
|
||
"timeout_range": "超时时间必须在5-10000秒之间",
|
||
"retry_range": "重试次数必须在1-10之间",
|
||
"temp_range": "温度值必须在0.1-2.0之间",
|
||
"top_p_range": "top_p必须在0.1-1.0之间",
|
||
"max_tokens_range": "max_tokens必须在100-100000之间",
|
||
"chapter_words_range": "章节目标字数必须在500-65536之间",
|
||
"backend_exists": "后端'{name}'已存在",
|
||
"backend_add_success": "后端添加成功",
|
||
"backend_update_success": "后端更新成功",
|
||
"backend_not_found": "后端'{name}'不存在",
|
||
"backend_delete_success": "后端'{name}'已删除",
|
||
"gen_params_update_success": "生成参数更新成功",
|
||
"config_export_success": "配置已导出至 {filepath}",
|
||
"config_export_failed": "导出配置失败: {error}",
|
||
"config_save_success": "配置保存成功",
|
||
"config_save_failed": "保存配置失败: {error}",
|
||
"config_load_success": "配置加载成功",
|
||
"config_file_not_found": "配置文件不存在,使用默认配置",
|
||
"config_load_failed": "加载配置失败: {error}",
|
||
"config_file_missing": "配置文件不存在: {path}",
|
||
"config_format_unsupported": "不支持的配置文件格式: {ext}",
|
||
"default_backend_name": "本地Ollama"
|
||
}
|
||
} |