diff --git a/locales/en.json b/locales/en.json new file mode 100644 index 00000000..0a506e2c --- /dev/null +++ b/locales/en.json @@ -0,0 +1,338 @@ +{ + "common": { + "confirm": "Confirm", + "cancel": "Cancel", + "loading": "Loading...", + "error": "Error", + "success": "Success", + "completed": "Completed", + "processing": "Generating", + "pending": "Pending", + "ready": "Ready", + "running": "Running", + "failed": "Failed", + "unknown": "Unknown", + "unknownError": "Unknown error", + "none": "None", + "close": "Close", + "back": "Back", + "next": "Next", + "retry": "Retry", + "noData": "No data available", + "hours": "hours", + "minutes": "minutes", + "rounds": "rounds", + "items": "items", + "files": "files" + }, + "meta": { + "title": "MiroFish - Predict Everything", + "description": "MiroFish - Social Media Opinion Simulation System" + }, + "nav": { + "visitGithub": "Visit our Github page" + }, + "home": { + "tagline": "Concise & Universal Swarm Intelligence Engine", + "version": "/ v0.1-Preview", + "heroTitle1": "Upload Any Report", + "heroTitle2": "Simulate the Future Instantly", + "heroDesc": "Even from a single paragraph, {brand} can extract reality seeds and auto-generate a parallel world of up to {agentScale}. Inject variables from a god's-eye view to find the {optimalSolution} amid complex group interactions in dynamic environments.", + "heroDescBrand": "MiroFish", + "heroDescAgentScale": "millions of Agents", + "heroDescOptimalSolution": "\"local optimum\"", + "slogan": "Let the future rehearse among Agents, let decisions prevail after a hundred battles", + "systemStatus": "System Status", + "systemReady": "Ready", + "systemReadyDesc": "Prediction engine on standby. Upload unstructured data to initialize a simulation sequence.", + "metricLowCost": "Low Cost", + "metricLowCostDesc": "Avg. $5 per simulation", + "metricHighAvail": "High Availability", + "metricHighAvailDesc": "Up to millions of Agents", + "workflowSequence": "Workflow Sequence", + "step01Title": "Graph Build", + "step01Desc": "Reality seed extraction & individual/group memory injection & GraphRAG construction", + "step02Title": "Environment Setup", + "step02Desc": "Entity-relation extraction & persona generation & environment config with Agent injection", + "step03Title": "Run Simulation", + "step03Desc": "Dual-platform parallel simulation & auto-parse prediction requirements & dynamic temporal memory", + "step04Title": "Report Generation", + "step04Desc": "ReportAgent with a rich toolset interacts deeply with the post-simulation environment", + "step05Title": "Deep Interaction", + "step05Desc": "Chat with any individual in the simulated world & converse with ReportAgent", + "realitySeed": "01 / Reality Seed", + "supportedFormats": "Formats: PDF, MD, TXT", + "dragToUpload": "Drag files to upload", + "orBrowse": "or click to browse files", + "inputParams": "Input Parameters", + "simulationPrompt": ">_ 02 / Simulation Prompt", + "promptPlaceholder": "// Describe your simulation or prediction requirement in natural language", + "engineBadge": "Engine: MiroFish-V1.0", + "startEngine": "Start Engine", + "initializing": "Initializing..." + }, + "main": { + "layoutGraph": "Graph", + "layoutSplit": "Split", + "layoutWorkbench": "Workbench", + "stepNames": ["Graph Build", "Env Setup", "Run Simulation", "Report Generation", "Deep Interaction"] + }, + "step1": { + "ontologyGeneration": "Ontology Generation", + "ontologyCompleted": "Completed", + "ontologyGenerating": "Generating", + "ontologyPending": "Pending", + "ontologyDesc": "LLM analyzes document content and simulation requirements, extracts reality seeds, and auto-generates a suitable ontology structure", + "analyzingDocs": "Analyzing documents...", + "graphRagBuild": "GraphRAG Build", + "graphRagDesc": "Based on the generated ontology, documents are auto-chunked and sent to Zep to build a knowledge graph, extracting entities and relations, forming temporal memory and community summaries", + "entityNodes": "Entity Nodes", + "relationEdges": "Relation Edges", + "schemaTypes": "Schema Types", + "buildComplete": "Build Complete", + "buildCompleteDesc": "Graph build is complete. Proceed to the next step for simulation environment setup.", + "inProgress": "In Progress", + "creating": "Creating...", + "enterEnvSetup": "Enter Environment Setup", + "createSimulationFailed": "Failed to create simulation: {error}", + "createSimulationException": "Simulation creation error: {error}" + }, + "step2": { + "simInstanceInit": "Simulation Instance Initialization", + "simInstanceDesc": "Create a new simulation instance and pull world parameter templates", + "asyncTaskDone": "Async task completed", + "generateAgentPersona": "Generate Agent Personas", + "generateAgentPersonaDesc": "Combine context to auto-extract entities and relations from the knowledge graph, initialize simulated individuals, and assign unique behaviors and memories based on reality seeds", + "currentAgentCount": "Current Agents", + "expectedAgentTotal": "Expected Total Agents", + "relatedTopicsCount": "Reality Seed Related Topics", + "generatedAgentPersonas": "Generated Agent Personas", + "unknownProfession": "Unknown profession", + "noBio": "No bio available", + "dualPlatformConfig": "Generate Dual-Platform Config", + "dualPlatformConfigDesc": "LLM intelligently sets world time flow, recommendation algorithms, each individual's active hours, posting frequency, event triggers, and more based on requirements and reality seeds", + "simulationDuration": "Simulation Duration", + "roundDuration": "Round Duration", + "totalRounds": "Total Rounds", + "activePerHour": "Active Per Hour", + "peakHours": "Peak Hours", + "workHours": "Work Hours", + "morningHours": "Morning Hours", + "offPeakHours": "Off-Peak Hours", + "agentConfig": "Agent Config", + "activeTimePeriod": "Active Hours", + "postsPerHour": "Posts/hr", + "commentsPerHour": "Comments/hr", + "responseDelay": "Response Delay", + "activityLevel": "Activity Level", + "sentimentBias": "Sentiment Bias", + "influenceWeight": "Influence", + "recommendAlgoConfig": "Recommendation Algorithm Config", + "platform1Name": "Platform 1: Plaza / Feed", + "platform2Name": "Platform 2: Topic / Community", + "recencyWeight": "Recency Weight", + "popularityWeight": "Popularity Weight", + "relevanceWeight": "Relevance Weight", + "viralThreshold": "Viral Threshold", + "echoChamberStrength": "Echo Chamber Strength", + "llmConfigReasoning": "LLM Config Reasoning", + "initialActivation": "Initial Activation Orchestration", + "initialActivationDesc": "Auto-generate initial activation events and hot topics based on narrative direction to guide the simulation world's initial state", + "orchestrating": "Orchestrating", + "narrativeDirection": "Narrative Direction", + "initialHotTopics": "Initial Hot Topics", + "initialActivationSeq": "Initial Activation Sequence ({count})", + "setupComplete": "Setup Complete", + "setupCompleteDesc": "Simulation environment is ready. You can now start the simulation.", + "roundsConfig": "Simulation Rounds Configuration", + "roundsConfigDesc": "MiroFish auto-plans to simulate {hours} real-world hours, each round representing {minutesPerRound} minutes of elapsed time", + "customToggle": "Custom", + "roundsUnit": "rounds", + "estimatedDuration": "For 100 Agents: est. ~{minutes} minutes", + "estimatedDurationFull": "For 100 Agents: est. {minutes} minutes", + "recommendedRounds": "{rounds} (recommended)", + "customTip": "For first-time runs, we strongly recommend switching to 'Custom Mode' to reduce rounds for a quick preview and lower error risk", + "backToGraphBuild": "Back to Graph Build", + "startDualWorldSim": "Start Dual-World Parallel Simulation", + "profileModalAge": "Apparent Age", + "profileModalGender": "Apparent Gender", + "profileModalCountry": "Country/Region", + "profileModalMbti": "Apparent MBTI", + "profileModalBio": "Persona Bio", + "profileModalTopics": "Reality Seed Related Topics", + "profileModalPersona": "Detailed Persona Background", + "personaDimExperience": "Full Event Experience", + "personaDimExperienceDesc": "Complete behavioral trajectory in this event", + "personaDimBehavior": "Behavioral Profile", + "personaDimBehaviorDesc": "Experience summary and behavioral preferences", + "personaDimMemory": "Unique Memory Imprint", + "personaDimMemoryDesc": "Memories formed from reality seeds", + "personaDimSocial": "Social Network", + "personaDimSocialDesc": "Individual connections and interaction graph", + "genderMale": "Male", + "genderFemale": "Female", + "genderOther": "Other", + "yearsOld": "years old" + }, + "step3": { + "startGenerateReport": "Generate Result Report", + "generatingReport": "Starting...", + "waitingForActions": "Waiting for agent actions...", + "errorMissingSimId": "Error: missing simulationId", + "startingDualSim": "Starting dual-platform parallel simulation...", + "graphMemoryUpdateEnabled": "Dynamic graph memory update enabled", + "setMaxRounds": "Max simulation rounds set to: {rounds}", + "oldSimCleared": "Old simulation logs cleared, restarting simulation", + "engineStarted": "Simulation engine started successfully", + "startFailed": "Start failed: {error}", + "startException": "Start error: {error}", + "stoppingSim": "Stopping simulation...", + "simStopped": "Simulation stopped", + "stopFailed": "Stop failed: {error}", + "stopException": "Stop error: {error}", + "allPlatformsCompleted": "All platform simulations have ended", + "simCompleted": "Simulation completed", + "graphRealtimeRefresh": "Graph real-time refresh enabled (30s)", + "graphRefreshStopped": "Graph real-time refresh stopped", + "preparingGoBack": "Preparing to return to Step 2, closing simulation...", + "closingSimEnv": "Closing simulation environment...", + "simEnvClosed": "Simulation environment closed", + "closeFailed": "Failed to close simulation environment, attempting force stop...", + "stoppingProcess": "Stopping simulation process...", + "checkStatusFailed": "Failed to check simulation status: {error}", + "forceStopSuccess": "Simulation force stopped", + "forceStopFailed": "Force stop failed: {error}" + }, + "step4": { + "generatingSection": "Generating {title}...", + "goToInteraction": "Enter Deep Interaction", + "waitingForReportAgent": "Waiting for Report Agent..." + }, + "step5": { + "interactiveTools": "Interactive Tools", + "agentsAvailable": "{count} agents available", + "chatWithReportAgent": "Chat with Report Agent", + "chatWithAgent": "Chat with any individual in the world", + "selectChatTarget": "Select chat target", + "sendSurvey": "Send survey to the world", + "reportAgentChat": "Report Agent - Chat", + "reportAgentDesc": "A conversational version of the report generation agent with access to 4 professional tools and MiroFish's complete memory", + "toolInsightForge": "InsightForge Deep Attribution", + "toolInsightForgeDesc": "Aligns real-world seed data with simulation state, combining Global/Local Memory for cross-temporal deep attribution analysis", + "toolPanoramaSearch": "PanoramaSearch Full Tracking", + "toolPanoramaSearchDesc": "Graph-based BFS algorithm that reconstructs event propagation paths, capturing the full topology of information flow", + "toolQuickSearch": "QuickSearch Fast Retrieval", + "toolQuickSearchDesc": "GraphRAG-based instant query interface with optimized indexing for fast extraction of node attributes and discrete facts", + "toolInterviewSubAgent": "InterviewSubAgent Virtual Interview", + "toolInterviewSubAgentDesc": "Autonomous interviews that conduct parallel multi-round dialogues with simulated individuals, collecting unstructured opinion data and psychological states", + "profileBio": "Bio", + "chatEmptyReportAgent": "Chat with Report Agent to explore report content in depth", + "chatEmptyAgent": "Chat with simulated individuals to understand their perspectives", + "chatInputPlaceholder": "Type your question...", + "selectSurveyTarget": "Select survey targets", + "selectedCount": "Selected {selected} / {total}", + "surveyQuestions": "Survey Questions", + "surveyInputPlaceholder": "Enter the question you want to ask all selected targets...", + "submitSurvey": "Send Survey", + "surveyResults": "Survey Results", + "surveyResultsCount": "{count} responses", + "selectAll": "Select All", + "clearSelection": "Clear" + }, + "graph": { + "panelTitle": "Graph Relationship Visualization", + "refreshGraph": "Refresh Graph", + "graphMemoryRealtime": "GraphRAG short/long-term memory updating in real-time", + "realtimeUpdating": "Updating in real-time...", + "pendingContentHint": "Some content is still processing. Consider refreshing the graph manually later.", + "nodeDetails": "Node Details", + "relationship": "Relationship" + }, + "history": { + "title": "Simulation History", + "graphBuild": "Graph Build", + "envSetup": "Env Setup", + "analysisReport": "Analysis Report", + "moreFiles": "+{count} files", + "noFiles": "No files", + "loadingText": "Loading...", + "simRequirement": "Simulation Requirement", + "relatedFiles": "Related Files", + "noRelatedFiles": "No related files", + "replayTitle": "Simulation Replay", + "step1Button": "Graph Build", + "step2Button": "Env Setup", + "step4Button": "Analysis Report", + "replayHint": "Step 3 'Run Simulation' and Step 5 'Deep Interaction' must be started during runtime and do not support history replay" + }, + "api": { + "projectNotFound": "Project not found: {id}", + "projectDeleteFailed": "Project not found or deletion failed: {id}", + "projectDeleted": "Project deleted: {id}", + "projectReset": "Project reset: {id}", + "requireSimulationRequirement": "Please provide a simulation requirement (simulation_requirement)", + "requireFileUpload": "Please upload at least one document file", + "noDocProcessed": "No documents were processed successfully. Please check file formats.", + "requireProjectId": "Please provide project_id", + "configError": "Configuration error: {details}", + "zepApiKeyMissing": "ZEP_API_KEY not configured", + "ontologyNotGenerated": "Ontology not yet generated. Please call /ontology/generate first.", + "graphBuilding": "Graph build in progress. Do not resubmit. To force rebuild, add force: true.", + "textNotFound": "Extracted text content not found", + "ontologyNotFound": "Ontology definition not found", + "graphBuildStarted": "Graph build task started. Query progress via /task/{taskId}.", + "graphBuildComplete": "Graph build complete", + "buildFailed": "Build failed: {error}", + "taskNotFound": "Task not found: {id}", + "graphDeleted": "Graph deleted: {id}", + "entityNotFound": "Entity not found: {id}", + "graphNotBuilt": "Graph not yet built. Please call /api/graph/build first.", + "requireSimulationId": "Please provide simulation_id", + "simulationNotFound": "Simulation not found: {id}", + "projectMissingRequirement": "Project missing simulation requirement (simulation_requirement)", + "prepareStarted": "Preparation task started. Query progress via /api/simulation/prepare/status.", + "alreadyPrepared": "Preparation already complete. No need to regenerate.", + "notStartedPrepare": "Preparation not started. Please call /api/simulation/prepare.", + "taskCompletedPrepared": "Task completed (preparation already exists)", + "requireTaskOrSimId": "Please provide task_id or simulation_id", + "configNotFound": "Simulation config not found. Please call /prepare first.", + "configFileNotFound": "Config file not found. Please call /prepare first.", + "unknownScript": "Unknown script: {name}. Available: {allowed}", + "scriptFileNotFound": "Script file not found: {name}", + "requireGraphId": "Please provide graph_id", + "noMatchingEntities": "No matching entities found", + "maxRoundsPositive": "max_rounds must be a positive integer", + "maxRoundsInvalid": "max_rounds must be a valid integer", + "invalidPlatform": "Invalid platform type: {platform}. Options: twitter/reddit/parallel", + "simRunningForceHint": "Simulation is running. Stop it first via /stop, or use force=true to restart.", + "simNotReady": "Simulation not ready. Current status: {status}. Please call /prepare first.", + "graphIdRequiredForMemory": "Graph memory update requires a valid graph_id. Ensure the graph is built.", + "dbNotExist": "Database does not exist. The simulation may not have run yet.", + "requireMessage": "Please provide a message", + "missingGraphId": "Missing graph ID", + "missingGraphIdEnsure": "Missing graph ID. Please ensure the graph has been built.", + "missingSimRequirement": "Missing simulation requirement description", + "reportAlreadyExists": "Report already exists", + "reportGenerateStarted": "Report generation task started. Query progress via /api/report/generate/status.", + "reportGenerated": "Report generated", + "reportNotFound": "Report not found: {id}", + "noReportForSim": "No report found for this simulation: {id}", + "reportDeleted": "Report deleted: {id}", + "reportGenerateFailed": "Report generation failed", + "sectionNotFound": "Section not found: section_{index}.md", + "reportProgressNotAvail": "Report not found or progress unavailable: {id}", + "requireAgentId": "Please provide agent_id", + "requirePrompt": "Please provide a prompt (interview question)", + "invalidInterviewPlatform": "Platform must be either 'twitter' or 'reddit'", + "envNotRunning": "Simulation environment not running or closed. Ensure simulation is complete and in command-wait mode.", + "interviewTimeout": "Interview response timed out: {error}", + "requireInterviews": "Please provide interviews (interview list)", + "interviewListMissingAgentId": "Interview list item {index} missing agent_id", + "interviewListMissingPrompt": "Interview list item {index} missing prompt", + "interviewListInvalidPlatform": "Interview list item {index} platform must be 'twitter' or 'reddit'", + "batchInterviewTimeout": "Batch interview response timed out: {error}", + "globalInterviewTimeout": "Global interview response timed out: {error}", + "envRunning": "Environment is running and ready for Interview commands", + "initReportAgent": "Initializing Report Agent..." + } +} diff --git a/locales/languages.json b/locales/languages.json new file mode 100644 index 00000000..81732cec --- /dev/null +++ b/locales/languages.json @@ -0,0 +1,30 @@ +{ + "zh": { + "label": "中文", + "llmInstruction": "请使用中文回答。" + }, + "en": { + "label": "English", + "llmInstruction": "Please respond in English." + }, + "es": { + "label": "Español", + "llmInstruction": "Por favor, responde en español." + }, + "fr": { + "label": "Français", + "llmInstruction": "Veuillez répondre en français." + }, + "pt": { + "label": "Português", + "llmInstruction": "Por favor, responda em português." + }, + "ru": { + "label": "Русский", + "llmInstruction": "Пожалуйста, отвечайте на русском языке." + }, + "de": { + "label": "Deutsch", + "llmInstruction": "Bitte antworten Sie auf Deutsch." + } +} diff --git a/locales/zh.json b/locales/zh.json new file mode 100644 index 00000000..aa487992 --- /dev/null +++ b/locales/zh.json @@ -0,0 +1,338 @@ +{ + "common": { + "confirm": "确认", + "cancel": "取消", + "loading": "加载中...", + "error": "错误", + "success": "成功", + "completed": "已完成", + "processing": "生成中", + "pending": "等待", + "ready": "就绪", + "running": "运行中", + "failed": "失败", + "unknown": "未知", + "unknownError": "未知错误", + "none": "无", + "close": "关闭", + "back": "返回", + "next": "下一步", + "retry": "重试", + "noData": "暂无数据", + "hours": "小时", + "minutes": "分钟", + "rounds": "轮", + "items": "个", + "files": "个文件" + }, + "meta": { + "title": "MiroFish - 预测万物", + "description": "MiroFish - 社交媒体舆论模拟系统" + }, + "nav": { + "visitGithub": "访问我们的Github主页" + }, + "home": { + "tagline": "简洁通用的群体智能引擎", + "version": "/ v0.1-预览版", + "heroTitle1": "上传任意报告", + "heroTitle2": "即刻推演未来", + "heroDesc": "即使只有一段文字,{brand} 也能基于其中的现实种子,全自动生成与之对应的至多{agentScale}构成的平行世界。通过上帝视角注入变量,在复杂的群体交互中寻找动态环境下的{optimalSolution}", + "heroDescBrand": "MiroFish", + "heroDescAgentScale": "百万级Agent", + "heroDescOptimalSolution": "\"局部最优解\"", + "slogan": "让未来在 Agent 群中预演,让决策在百战后胜出", + "systemStatus": "系统状态", + "systemReady": "准备就绪", + "systemReadyDesc": "预测引擎待命中,可上传多份非结构化数据以初始化模拟序列", + "metricLowCost": "低成本", + "metricLowCostDesc": "常规模拟平均5$/次", + "metricHighAvail": "高可用", + "metricHighAvailDesc": "最多百万级Agent模拟", + "workflowSequence": "工作流序列", + "step01Title": "图谱构建", + "step01Desc": "现实种子提取 & 个体与群体记忆注入 & GraphRAG构建", + "step02Title": "环境搭建", + "step02Desc": "实体关系抽取 & 人设生成 & 环境配置Agent注入仿真参数", + "step03Title": "开始模拟", + "step03Desc": "双平台并行模拟 & 自动解析预测需求 & 动态更新时序记忆", + "step04Title": "报告生成", + "step04Desc": "ReportAgent拥有丰富的工具集与模拟后环境进行深度交互", + "step05Title": "深度互动", + "step05Desc": "与模拟世界中的任意一位进行对话 & 与ReportAgent进行对话", + "realitySeed": "01 / 现实种子", + "supportedFormats": "支持格式: PDF, MD, TXT", + "dragToUpload": "拖拽文件上传", + "orBrowse": "或点击浏览文件系统", + "inputParams": "输入参数", + "simulationPrompt": ">_ 02 / 模拟提示词", + "promptPlaceholder": "// 用自然语言输入模拟或预测需求(例.武大若发布撤销肖某处分的公告,会引发什么舆情走向)", + "engineBadge": "引擎: MiroFish-V1.0", + "startEngine": "启动引擎", + "initializing": "初始化中..." + }, + "main": { + "layoutGraph": "图谱", + "layoutSplit": "双栏", + "layoutWorkbench": "工作台", + "stepNames": ["图谱构建", "环境搭建", "开始模拟", "报告生成", "深度互动"] + }, + "step1": { + "ontologyGeneration": "本体生成", + "ontologyCompleted": "已完成", + "ontologyGenerating": "生成中", + "ontologyPending": "等待", + "ontologyDesc": "LLM分析文档内容与模拟需求,提取出现实种子,自动生成合适的本体结构", + "analyzingDocs": "正在分析文档...", + "graphRagBuild": "GraphRAG构建", + "graphRagDesc": "基于生成的本体,将文档自动分块后调用 Zep 构建知识图谱,提取实体和关系,并形成时序记忆与社区摘要", + "entityNodes": "实体节点", + "relationEdges": "关系边", + "schemaTypes": "SCHEMA类型", + "buildComplete": "构建完成", + "buildCompleteDesc": "图谱构建已完成,请进入下一步进行模拟环境搭建", + "inProgress": "进行中", + "creating": "创建中...", + "enterEnvSetup": "进入环境搭建", + "createSimulationFailed": "创建模拟失败: {error}", + "createSimulationException": "创建模拟异常: {error}" + }, + "step2": { + "simInstanceInit": "模拟实例初始化", + "simInstanceDesc": "新建simulation实例,拉取模拟世界参数模版", + "asyncTaskDone": "异步任务已完成", + "generateAgentPersona": "生成 Agent 人设", + "generateAgentPersonaDesc": "结合上下文,自动调用工具从知识图谱梳理实体与关系,初始化模拟个体,并基于现实种子赋予他们独特的行为与记忆", + "currentAgentCount": "当前Agent数", + "expectedAgentTotal": "预期Agent总数", + "relatedTopicsCount": "现实种子当前关联话题数", + "generatedAgentPersonas": "已生成的 Agent 人设", + "unknownProfession": "未知职业", + "noBio": "暂无简介", + "dualPlatformConfig": "生成双平台模拟配置", + "dualPlatformConfigDesc": "LLM 根据模拟需求与现实种子,智能设置世界时间流速、推荐算法、每个个体的活跃时间段、发言频率、事件触发等参数", + "simulationDuration": "模拟时长", + "roundDuration": "每轮时长", + "totalRounds": "总轮次", + "activePerHour": "每小时活跃", + "peakHours": "高峰时段", + "workHours": "工作时段", + "morningHours": "早间时段", + "offPeakHours": "低谷时段", + "agentConfig": "Agent 配置", + "activeTimePeriod": "活跃时段", + "postsPerHour": "发帖/时", + "commentsPerHour": "评论/时", + "responseDelay": "响应延迟", + "activityLevel": "活跃度", + "sentimentBias": "情感倾向", + "influenceWeight": "影响力", + "recommendAlgoConfig": "推荐算法配置", + "platform1Name": "平台 1:广场 / 信息流", + "platform2Name": "平台 2:话题 / 社区", + "recencyWeight": "时效权重", + "popularityWeight": "热度权重", + "relevanceWeight": "相关性权重", + "viralThreshold": "病毒阈值", + "echoChamberStrength": "回音室强度", + "llmConfigReasoning": "LLM 配置推理", + "initialActivation": "初始激活编排", + "initialActivationDesc": "基于叙事方向,自动生成初始激活事件与热点话题,引导模拟世界的初始状态", + "orchestrating": "编排中", + "narrativeDirection": "叙事引导方向", + "initialHotTopics": "初始热点话题", + "initialActivationSeq": "初始激活序列 ({count})", + "setupComplete": "准备完成", + "setupCompleteDesc": "模拟环境已准备完成,可以开始运行模拟", + "roundsConfig": "模拟轮数设定", + "roundsConfigDesc": "MiroFish 自动规划推演现实 {hours} 小时,每轮代表现实 {minutesPerRound} 分钟时间流逝", + "customToggle": "自定义", + "roundsUnit": "轮", + "estimatedDuration": "若Agent规模为100:预计耗时约 {minutes} 分钟", + "estimatedDurationFull": "若Agent规模为100:预计耗时 {minutes} 分钟", + "recommendedRounds": "{rounds} (推荐)", + "customTip": "若首次运行,强烈建议切换至'自定义模式'减少模拟轮数,以便快速预览效果并降低报错风险", + "backToGraphBuild": "返回图谱构建", + "startDualWorldSim": "开始双世界并行模拟", + "profileModalAge": "事件外显年龄", + "profileModalGender": "事件外显性别", + "profileModalCountry": "国家/地区", + "profileModalMbti": "事件外显MBTI", + "profileModalBio": "人设简介", + "profileModalTopics": "现实种子关联话题", + "profileModalPersona": "详细人设背景", + "personaDimExperience": "事件全景经历", + "personaDimExperienceDesc": "在此事件中的完整行为轨迹", + "personaDimBehavior": "行为模式侧写", + "personaDimBehaviorDesc": "经验总结与行事风格偏好", + "personaDimMemory": "独特记忆印记", + "personaDimMemoryDesc": "基于现实种子形成的记忆", + "personaDimSocial": "社会关系网络", + "personaDimSocialDesc": "个体链接与交互图谱", + "genderMale": "男", + "genderFemale": "女", + "genderOther": "其他", + "yearsOld": "岁" + }, + "step3": { + "startGenerateReport": "开始生成结果报告", + "generatingReport": "启动中...", + "waitingForActions": "Waiting for agent actions...", + "errorMissingSimId": "错误:缺少 simulationId", + "startingDualSim": "正在启动双平台并行模拟...", + "graphMemoryUpdateEnabled": "已开启动态图谱更新模式", + "setMaxRounds": "设置最大模拟轮数: {rounds}", + "oldSimCleared": "已清理旧的模拟日志,重新开始模拟", + "engineStarted": "模拟引擎启动成功", + "startFailed": "启动失败: {error}", + "startException": "启动异常: {error}", + "stoppingSim": "正在停止模拟...", + "simStopped": "模拟已停止", + "stopFailed": "停止失败: {error}", + "stopException": "停止异常: {error}", + "allPlatformsCompleted": "检测到所有平台模拟已结束", + "simCompleted": "模拟已完成", + "graphRealtimeRefresh": "开启图谱实时刷新 (30s)", + "graphRefreshStopped": "停止图谱实时刷新", + "preparingGoBack": "准备返回 Step 2,正在关闭模拟...", + "closingSimEnv": "正在关闭模拟环境...", + "simEnvClosed": "模拟环境已关闭", + "closeFailed": "关闭模拟环境失败,尝试强制停止...", + "stoppingProcess": "正在停止模拟进程...", + "checkStatusFailed": "检查模拟状态失败: {error}", + "forceStopSuccess": "模拟已强制停止", + "forceStopFailed": "强制停止失败: {error}" + }, + "step4": { + "generatingSection": "正在生成{title}...", + "goToInteraction": "进入深度互动", + "waitingForReportAgent": "Waiting for Report Agent..." + }, + "step5": { + "interactiveTools": "Interactive Tools", + "agentsAvailable": "{count} agents available", + "chatWithReportAgent": "与Report Agent对话", + "chatWithAgent": "与世界中任意个体对话", + "selectChatTarget": "选择对话对象", + "sendSurvey": "发送问卷调查到世界中", + "reportAgentChat": "Report Agent - Chat", + "reportAgentDesc": "报告生成智能体的快速对话版本,可调用 4 种专业工具,拥有MiroFish的完整记忆", + "toolInsightForge": "InsightForge 深度归因", + "toolInsightForgeDesc": "对齐现实世界种子数据与模拟环境状态,结合Global/Local Memory机制,提供跨时空的深度归因分析", + "toolPanoramaSearch": "PanoramaSearch 全景追踪", + "toolPanoramaSearchDesc": "基于图结构的广度遍历算法,重构事件传播路径,捕获全量信息流动的拓扑结构", + "toolQuickSearch": "QuickSearch 快速检索", + "toolQuickSearchDesc": "基于 GraphRAG 的即时查询接口,优化索引效率,用于快速提取具体的节点属性与离散事实", + "toolInterviewSubAgent": "InterviewSubAgent 虚拟访谈", + "toolInterviewSubAgentDesc": "自主式访谈,能够并行与模拟世界中个体进行多轮对话,采集非结构化的观点数据与心理状态", + "profileBio": "简介", + "chatEmptyReportAgent": "与 Report Agent 对话,深入了解报告内容", + "chatEmptyAgent": "与模拟个体对话,了解他们的观点", + "chatInputPlaceholder": "输入您的问题...", + "selectSurveyTarget": "选择调查对象", + "selectedCount": "已选 {selected} / {total}", + "surveyQuestions": "问卷问题", + "surveyInputPlaceholder": "输入您想问所有被选中对象的问题...", + "submitSurvey": "发送问卷", + "surveyResults": "调查结果", + "surveyResultsCount": "{count} 条回复", + "selectAll": "全选", + "clearSelection": "清空" + }, + "graph": { + "panelTitle": "Graph Relationship Visualization", + "refreshGraph": "刷新图谱", + "graphMemoryRealtime": "GraphRAG长短期记忆实时更新中", + "realtimeUpdating": "实时更新中...", + "pendingContentHint": "还有少量内容处理中,建议稍后手动刷新图谱", + "nodeDetails": "Node Details", + "relationship": "Relationship" + }, + "history": { + "title": "推演记录", + "graphBuild": "图谱构建", + "envSetup": "环境搭建", + "analysisReport": "分析报告", + "moreFiles": "+{count} 个文件", + "noFiles": "暂无文件", + "loadingText": "加载中...", + "simRequirement": "模拟需求", + "relatedFiles": "关联文件", + "noRelatedFiles": "暂无关联文件", + "replayTitle": "推演回放", + "step1Button": "图谱构建", + "step2Button": "环境搭建", + "step4Button": "分析报告", + "replayHint": "Step3「开始模拟」与 Step5「深度互动」需在运行中启动,不支持历史回放" + }, + "api": { + "projectNotFound": "项目不存在: {id}", + "projectDeleteFailed": "项目不存在或删除失败: {id}", + "projectDeleted": "项目已删除: {id}", + "projectReset": "项目已重置: {id}", + "requireSimulationRequirement": "请提供模拟需求描述 (simulation_requirement)", + "requireFileUpload": "请至少上传一个文档文件", + "noDocProcessed": "没有成功处理任何文档,请检查文件格式", + "requireProjectId": "请提供 project_id", + "configError": "配置错误: {details}", + "zepApiKeyMissing": "ZEP_API_KEY未配置", + "ontologyNotGenerated": "项目尚未生成本体,请先调用 /ontology/generate", + "graphBuilding": "图谱正在构建中,请勿重复提交。如需强制重建,请添加 force: true", + "textNotFound": "未找到提取的文本内容", + "ontologyNotFound": "未找到本体定义", + "graphBuildStarted": "图谱构建任务已启动,请通过 /task/{taskId} 查询进度", + "graphBuildComplete": "图谱构建完成", + "buildFailed": "构建失败: {error}", + "taskNotFound": "任务不存在: {id}", + "graphDeleted": "图谱已删除: {id}", + "entityNotFound": "实体不存在: {id}", + "graphNotBuilt": "项目尚未构建图谱,请先调用 /api/graph/build", + "requireSimulationId": "请提供 simulation_id", + "simulationNotFound": "模拟不存在: {id}", + "projectMissingRequirement": "项目缺少模拟需求描述 (simulation_requirement)", + "prepareStarted": "准备任务已启动,请通过 /api/simulation/prepare/status 查询进度", + "alreadyPrepared": "已有完成的准备工作,无需重复生成", + "notStartedPrepare": "尚未开始准备,请调用 /api/simulation/prepare 开始", + "taskCompletedPrepared": "任务已完成(准备工作已存在)", + "requireTaskOrSimId": "请提供 task_id 或 simulation_id", + "configNotFound": "模拟配置不存在,请先调用 /prepare 接口", + "configFileNotFound": "配置文件不存在,请先调用 /prepare 接口", + "unknownScript": "未知脚本: {name},可选: {allowed}", + "scriptFileNotFound": "脚本文件不存在: {name}", + "requireGraphId": "请提供 graph_id", + "noMatchingEntities": "没有找到符合条件的实体", + "maxRoundsPositive": "max_rounds 必须是正整数", + "maxRoundsInvalid": "max_rounds 必须是有效的整数", + "invalidPlatform": "无效的平台类型: {platform},可选: twitter/reddit/parallel", + "simRunningForceHint": "模拟正在运行中,请先调用 /stop 接口停止,或使用 force=true 强制重新开始", + "simNotReady": "模拟未准备好,当前状态: {status},请先调用 /prepare 接口", + "graphIdRequiredForMemory": "启用图谱记忆更新需要有效的 graph_id,请确保项目已构建图谱", + "dbNotExist": "数据库不存在,模拟可能尚未运行", + "requireMessage": "请提供 message", + "missingGraphId": "缺少图谱ID", + "missingGraphIdEnsure": "缺少图谱ID,请确保已构建图谱", + "missingSimRequirement": "缺少模拟需求描述", + "reportAlreadyExists": "报告已存在", + "reportGenerateStarted": "报告生成任务已启动,请通过 /api/report/generate/status 查询进度", + "reportGenerated": "报告已生成", + "reportNotFound": "报告不存在: {id}", + "noReportForSim": "该模拟暂无报告: {id}", + "reportDeleted": "报告已删除: {id}", + "reportGenerateFailed": "报告生成失败", + "sectionNotFound": "章节不存在: section_{index}.md", + "reportProgressNotAvail": "报告不存在或进度信息不可用: {id}", + "requireAgentId": "请提供 agent_id", + "requirePrompt": "请提供 prompt(采访问题)", + "invalidInterviewPlatform": "platform 参数只能是 'twitter' 或 'reddit'", + "envNotRunning": "模拟环境未运行或已关闭。请确保模拟已完成并进入等待命令模式。", + "interviewTimeout": "等待Interview响应超时: {error}", + "requireInterviews": "请提供 interviews(采访列表)", + "interviewListMissingAgentId": "采访列表第{index}项缺少 agent_id", + "interviewListMissingPrompt": "采访列表第{index}项缺少 prompt", + "interviewListInvalidPlatform": "采访列表第{index}项的platform只能是 'twitter' 或 'reddit'", + "batchInterviewTimeout": "等待批量Interview响应超时: {error}", + "globalInterviewTimeout": "等待全局Interview响应超时: {error}", + "envRunning": "环境正在运行,可以接收Interview命令", + "initReportAgent": "初始化Report Agent..." + } +}