Files
cultivation-world-simulator/web/src/locales/zh-CN.json
Zihao Xu 67b559ac5a feat: improve save/load interface with custom names and metadata (#128)
* feat: improve save/load interface with custom names and metadata

- Add custom save name support with input validation
- Extend save metadata with avatar counts, protagonist info, and event count
- Add quick save button alongside named save option
- Enhance save list display with richer information
- Add sanitize_save_name and find_protagonist_name helpers
- Update API endpoints to support new features
- Add i18n translations for new UI elements

Closes #95

* test: add comprehensive tests for save custom name feature

- Add 37 tests for sanitize_save_name, find_protagonist_name
- Add tests for custom name API endpoints
- Add tests for enhanced metadata
- Fix unused NIcon import in SaveLoadPanel
- Add zh-TW translations for new save_load keys

* test(frontend): add SaveLoadPanel component tests

- Add 21 tests for SaveLoadPanel component
- Cover save mode, load mode, display, validation
- Mock naive-ui components, stores, and API
2026-02-06 22:03:41 +08:00

372 lines
14 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.
{
"ui": {
"system_menu": "系统菜单",
"system_menu_title": "系统菜单",
"start_game": "开始游戏",
"load_game": "加载游戏",
"save_game": "保存游戏",
"create_character": "新建角色",
"delete_character": "删除角色",
"settings": "设置",
"achievements": "成就",
"exit": "离开",
"other": "其他",
"language": "语言",
"chinese": "简体中文",
"english": "English",
"back": "返回",
"confirm": "确定",
"cancel": "取消",
"llm_settings": "LLM设置",
"other_options": "其他选项",
"other_options_desc": "管理游戏进程和退出。",
"return_to_main": "回到主菜单",
"return_to_main_desc": "返回标题画面(未保存的进度将丢失)",
"quit_game": "结束游戏",
"quit_game_desc": "关闭程序并退出到桌面"
},
"save_load": {
"loading": "加载中...",
"new_save": "新建存档",
"new_save_desc": "输入自定义名称保存",
"quick_save": "快速保存",
"quick_save_desc": "使用自动生成的名称",
"empty": "暂无存档",
"game_time": "游戏时间: {time}",
"avatar_count": "角色: {alive}/{total}",
"event_count": "{count} 条事件",
"protagonist_tooltip": "主角(气运之子/穿越者)",
"load": "加载",
"save_success": "存档成功: {filename}",
"save_failed": "存档失败",
"load_confirm": "确定要加载存档 {filename} 吗?当前未保存的进度将丢失。",
"load_success": "读档成功",
"load_failed": "读档失败",
"fetch_failed": "获取存档列表失败",
"save_modal_title": "保存游戏",
"save_confirm": "保存",
"name_hint": "为存档输入一个名称(可选)",
"name_placeholder": "输入存档名称...",
"name_tip": "留空将使用自动生成的名称",
"name_too_long": "名称不能超过50个字符",
"name_invalid_chars": "名称只能包含中文、字母、数字和下划线"
},
"llm": {
"loading": "加载中...",
"fetch_failed": "获取配置失败",
"test_success": "连接测试成功",
"save_success": "配置已保存",
"test_save_failed": "测试或保存失败: {error}",
"api_key_required": "请填写 API Key",
"base_url_required": "请填写 Base URL",
"preset_applied": "已应用 {name} 预设 ({extra})",
"preset_extra_key": "请填写 API Key",
"preset_extra_local": "请确保 Ollama 已启动",
"sections": {
"quick_fill": "快速填充",
"api_config": "API 配置",
"model_selection": "模型选择",
"run_mode": "运行模式"
},
"labels": {
"api_key": "API Key",
"base_url": "Base URL",
"normal_model": "智能模型 (Normal)",
"fast_model": "快速模型 (Fast)",
"max_concurrent_requests": "最大并发数",
"what_is_api": "什么是 API / 如何获取?"
},
"descs": {
"normal_model": "用于处理复杂逻辑、剧情生成等任务",
"fast_model": "用于简单判定、频繁交互等任务",
"max_concurrent_requests": "同时请求 AI 的线程数。调大可加快速度,但可能触发 API 速率限制 (Rate Limit)。建议值5-20。"
},
"placeholders": {
"api_key": "在此填入你自己的 API Key (通常以 sk- 开头)",
"base_url": "https://api.example.com/v1",
"normal_model": "例如: gpt-4, claude-3-opus, qwen-plus",
"fast_model": "例如: gpt-3.5-turbo, qwen-flash",
"max_concurrent_requests": "默认: 10"
},
"modes": {
"default": "均衡 (Default)",
"default_desc": "自动选择模型(推荐)",
"normal": "智能 (Normal)",
"normal_desc": "全用智能模型",
"fast": "快速 (Fast)",
"fast_desc": "全用快速模型"
},
"actions": {
"testing": "测试连接中...",
"test_and_save": "测试连通性并保存"
},
"help": {
"title": "什么是 API? 新手配置指南",
"q1_title": "🌐 1. 什么是 API?",
"q1_content": "API (应用程序接口) 就像是一条“电话线”。本游戏本身不具备思考能力,它通过这条线连接到远端的 AI 大脑 (如 Qwen 或 DeepSeek 的服务器)。当游戏进行每月结算并决定 NPC 动作时,会将相关信息通过 API 发给 AIAI 思考后再把结果传回来。",
"q2_title": "⚡ 2. 推荐的模型 (2025版)",
"q2_qwen": "国内大厂 (阿里),稳定且免费额度大,适合入门。",
"q2_deepseek": "性价比极高,中文叙事逻辑更符合国人习惯。",
"q2_gemini": "Google 出品,综合性能顶尖。",
"q3_title": "📝 3. 如何填入配置?",
"q3_content": "获得 API 后你需要填入以下三大核心参数才能使用通常你可以在api提供方的文档中找到 these 参数怎么填:",
"q3_format_note": "⚠️ 重要提示:本游戏仅支持 OpenAI 兼容格式的 API。如果某个服务不支持 OpenAI 兼容格式,将无法使用。推荐使用预设中的服务(它们都已确认兼容)。如需使用其他服务,请确认其提供 OpenAI 兼容接口。",
"q3_base_url": "API Base URL (接口地址): AI 的访问大门,通常由厂商提供 (如 https://api.deepseek.com)。",
"q3_api_key": "API Key (密钥): 你的身份凭证,就像账号密码。",
"q3_model_name": "Model Name (模型名称): 告诉服务器你想用哪颗大脑,如 deepseek-chat 或 gemini-3-flash-preview。",
"q4_title": "🔗 4. 从哪里获取 Key?",
"q5_title": "🛡️ 5. 安全说明",
"q5_p1": "您的 API Key 仅保存在您的本地电脑配置文件中 (`static/local_config.yml`),由本地运行的游戏后端直接与模型厂商通信。本游戏 (Cultivation World Simulator) 是完全开源的程序,绝不会将您的 Key 上传至任何第三方服务器。也请注意不要把local_config.yml文件分享给任何人。",
"q5_p2": "使用token会产生费用请自行评估使用成本。",
"confirm": "我明白了"
},
"presets": {
"openai": "OpenAI",
"qwen": "通义千问",
"deepseek": "DeepSeek",
"siliconflow": "硅基流动",
"openrouter": "OpenRouter",
"gemini": "Gemini",
"ollama": "Ollama (本地)"
},
"help_links": {
"openai": "OpenAI Platform",
"qwen": "阿里云百炼 (Qwen / 最推荐)",
"deepseek": "DeepSeek 开放平台 (国内推荐,便宜)",
"openrouter": "OpenRouter (全机型聚合,推荐)",
"siliconflow": "硅基流动 (国内聚合)",
"gemini": "Google AI Studio (Gemini)"
}
},
"game_start": {
"title": "开始游戏",
"description": "设定世界的初始状态。注意:游戏开始后,这些设定将无法更改。",
"labels": {
"init_npc_num": "初始修士数量",
"sect_num": "活跃宗门数量",
"protagonist_mode": "主角引入模式",
"new_npc_rate": "每月新生修士概率",
"world_history": "世界历史背景"
},
"tips": {
"sect_num": "宗门数量建议少于角色数量的一半",
"protagonist_random": "随机引入:每次生成角色时,有 5% 的概率使用预设的“小说主角”模板。",
"protagonist_all": "全部引入:开局时强制生成所有预设的“小说主角”。",
"world_history": "可以包括上古、中古、近古。注意启用此功能会调用LLM初始化时间会显著增加。"
},
"placeholders": {
"world_history": "请输入修仙界历史背景(可选)。"
},
"options": {
"protagonist_none": "不引入主角",
"protagonist_random": "随机引入主角",
"protagonist_all": "全部引入主角"
},
"actions": {
"start": "开始"
},
"messages": {
"load_failed": "加载配置失败",
"start_success": "配置已保存,正在初始化世界...",
"start_failed": "开始游戏失败"
}
},
"splash": {
"title": "AI修仙世界模拟器",
"start": "开始修仙",
"continue": "继续道途",
"settings": "系统设置"
},
"loading": {
"title": "AI修仙世界模拟器",
"subtitle": "AI Cultivation World Simulator",
"phase": {
"scanning_assets": "扫描天地资源",
"loading_map": "构建洪荒山川",
"processing_history": "推演天道历史",
"initializing_sects": "宗门入世",
"generating_avatars": "众修士降临",
"checking_llm": "连通天道意志",
"loading_save": "读取前世因果",
"parsing_data": "解析天地法则",
"restoring_state": "恢复时空位面",
"finalizing": "万象归位",
"complete": "天地初开",
"chaos": "混沌初始",
"generating_initial_events": "推演初始因果"
},
"error": "初始化失败",
"unknown_error": "未知错误",
"retry": "重新初始化",
"tips_label": "修行小贴士",
"elapsed": "已等待 {seconds} 秒",
"tips": [
"修改角色目标,可以改变该角色的行事风格",
"角色的性格特质,会极大影响角色的行事风格",
"在符合角色灵根的洞府修行,事半功倍",
"天灵根角色在任何洞府修行,都事半功倍",
"改变天地灵机,不仅会影响加成,还会微妙调整角色行事风格",
"偶尔会有修仙小说中的主角穿越进此方世界",
"每个角色都有自己的真实思考和情绪",
"除了修炼,炼丹和练气也很重要",
"参加拍卖会可能捡漏,但要小心恶人的衔尾追杀",
"江湖同道会根据你的行为取一个绰号",
"双修虽好,还请克制",
"在宗门驻地回血可以回满HP",
"不同境界之间,战力差距极大,越阶挑战难于登天",
"天命之子特质的角色,好运连连,奇遇不断",
"现代世界的穿越者,只想回到现实世界,但这是不可能的",
"丹药有生效的时间限制",
"由于大模型需要思考,游戏启动可能耗时较久",
"模拟世界对大模型token消耗较大请注意",
"开局时设定历史,整个修仙世界也会随之而改变",
"拍卖会中拍到的珍宝可能大大提升你的实力,但是要留好灵石"
]
},
"common": {
"year": "年",
"month": "月",
"none": "无",
"loading": "加载中...",
"version": "版本",
"confirm": "确认",
"cancel": "取消",
"error": "错误",
"success": "成功"
},
"game": {
"status_bar": {
"phenomenon": "天地灵机",
"effect": "效果:",
"duration": "持续 {years} 年",
"selector_title": "天道干涉:更易天象",
"empty_data": "暂无天象数据",
"cultivators": "修士: {count}",
"change_success": "天象已更易为:{name}",
"click_to_change": "(点击可更易天象)",
"author_bilibili": "B站空间",
"author_github": "Github仓库",
"hidden_domain": {
"label": "[秘境]",
"title": "秘境列表",
"empty": "暂无秘境数据",
"danger": "凶险",
"drop": "机缘",
"status_open": "开启中",
"status_closed": "未开启"
}
},
"controls": {
"resume": "继续游戏",
"pause": "暂停游戏",
"paused": "已暂停",
"closed_msg": "游戏已关闭,您可以安全关闭此标签页。"
},
"event_panel": {
"title": "事件记录",
"filter_all": "所有人",
"deceased": "(已故)",
"add_second": "+ 添加第二人",
"load_more": "向上滚动加载更多",
"empty_dual": "这两人之间暂无事件",
"empty_single": "该修士暂无事件",
"empty_none": "暂无事件"
},
"info_panel": {
"popup": {
"effect": "效果:",
"drops": "掉落/产出:",
"hq": "驻地:",
"types": {
"elixir": "丹药",
"plant": "植物",
"lode": "矿脉",
"item": "物品",
"weapon": "兵器",
"auxiliary": "辅助装备",
"technique": "功法",
"sect": "宗门",
"persona": "特质",
"SWORD": "剑",
"SABER": "刀",
"SPEAR": "枪",
"STAFF": "棍",
"FAN": "扇",
"WHIP": "鞭",
"ZITHER": "琴",
"FLUTE": "笛",
"HIDDEN_WEAPON": "暗器"
}
},
"avatar": {
"set_objective": "设定目标",
"clear_objective": "清空目标",
"dead_with_reason": "已故 ({reason})",
"unknown_reason": "未知原因",
"long_term_objective": "长期目标",
"short_term_objective": "短期目标",
"stats": {
"realm": "境界",
"age": "年龄",
"hp": "HP",
"gender": "性别",
"alignment": "阵营",
"sect": "宗门",
"rogue": "散修",
"root": "灵根",
"magic_stone": "灵石",
"appearance": "颜值",
"battle_strength": "基础战力",
"emotion": "情绪"
},
"sections": {
"thinking": "当前思考",
"traits": "特质",
"techniques_equipment": "功法与装备",
"materials": "材料",
"relations": "关系",
"current_effects": "当前效果"
},
"weapon_meta": "熟练度 {value}",
"relation_meta": "{owner}的{relation}",
"modals": {
"set_long_term": "设定长期目标",
"placeholder": "请输入目标...",
"set_failed": "设定失败",
"clear_confirm": "确定要清空该角色的长期目标吗?"
}
},
"region": {
"view_sect": "查看宗门详情",
"essence_title": "灵气环境",
"essence_info": "{type}行灵气 · 浓度 {density}",
"sections": {
"host": "洞府主人",
"animals": "动物分布",
"plants": "植物分布",
"lodes": "矿脉分布",
"market": "坊市交易"
},
"host_meta": "主人",
"no_host": "无主(可占据)",
"price_meta": "{price}灵石"
},
"sect": {
"stats": {
"alignment": "阵营",
"style": "风格",
"preferred": "擅长",
"members": "成员"
},
"sections": {
"intro": "宗门简介",
"hq": "驻地:{name}",
"bonus": "宗门加成",
"techniques": "独门绝学",
"members": "门下弟子"
},
"no_bonus": "无特殊加成"
}
}
}
}