diff --git a/README-CA.md b/README-CA.md new file mode 100644 index 00000000..a7713e83 --- /dev/null +++ b/README-CA.md @@ -0,0 +1,203 @@ +
+ +MiroFish Logo + +666ghj%2FMiroFish | Trendshift + +Motor d'intel·ligència col·lectiva concís i universal, predient-ho tot +
+A Simple and Universal Swarm Intelligence Engine, Predicting Anything + +666ghj%2MiroFish | Shanda + +[![GitHub Stars](https://img.shields.io/github/stars/666ghj/MiroFish?style=flat-square&color=DAA520)](https://github.com/666ghj/MiroFish/stargazers) +[![GitHub Watchers](https://img.shields.io/github/watchers/666ghj/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/watchers) +[![GitHub Forks](https://img.shields.io/github/forks/666ghj/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/network) +[![Docker](https://img.shields.io/badge/Docker-Build-2496ED?style=flat-square&logo=docker&logoColor=white)](https://hub.docker.com/) +[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/666ghj/MiroFish) + +[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=flat-square&logo=discord&logoColor=white)](http://discord.gg/ePf5aPaHnA) +[![X](https://img.shields.io/badge/X-Follow-000000?style=flat-square&logo=x&logoColor=white)](https://x.com/mirofish_ai) +[![Instagram](https://img.shields.io/badge/Instagram-Follow-E4405F?style=flat-square&logo=instagram&logoColor=white)](https://www.instagram.com/mirofish_ai/) + +[English](./README.md) | [中文文档](./README-ZH.md) | [Español](./README-ES.md) | [Català](./README-CA.md) + +
+ +## ⚡ Visió general + +**MiroFish** és un motor de predicció de nova generació impulsat per tecnologia multi-agent. Extraient informació llavor del món real (com ara notícies d'última hora, esborranys de polítiques o senyals financeres), construeix automàticament un món digital paral·lel d'alta fidelitat. Dins d'aquest espai, milers d'agents intel·ligents amb personalitats independents, memòria a llarg termini i lògica conductual interactuen lliurement i experimenten evolució social. Pots injectar variables dinàmicament des d'una "perspectiva omniscient" per deduir amb precisió trajectòries futures — **assaja el futur en un simulador digital i guanya decisions després d'incontables simulacions**. + +> Només necessites: Pujar materials llavor (informes d'anàlisi de dades o històries novel·lades interessants) i descriure els teus requisits de predicció en llenguatge natural
+> MiroFish retornarà: Un informe de predicció detallat i un món digital d'alta fidelitat profundament interactiu + +### La nostra visió + +MiroFish es dedica a crear un mirall d'intel·ligència col·lectiva que reflecteix la realitat. Capturant l'emergència col·lectiva desencadenada per les interaccions individuals, superem les limitacions de la predicció tradicional: + +- **A nivell macro**: Som un laboratori d'assaig per a decisors, que permet provar polítiques i relacions públiques amb risc zero +- **A nivell micro**: Som un sandbox creatiu per a usuaris individuals — ja sigui deduint finals de novel·les o explorant escenaris imaginatius, tot pot ser divertit, lúdic i accessible + +Des de prediccions serioses fins a simulacions lúdiques, fem que cada "i si...?" vegi el seu resultat, fent possible predir-ho tot. + +## 🌐 Demo en viu + +Visita el nostre entorn de demostració en línia i experimenta una simulació de predicció sobre esdeveniments d'opinió pública que hem preparat per a tu: [mirofish-live-demo](https://666ghj.github.io/mirofish-demo/) + +## 📸 Captures de pantalla + +
+ + + + + + + + + + + + + +
Captura 1Captura 2
Captura 3Captura 4
Captura 5Captura 6
+
+ +## 🎬 Vídeos de demostració + +### 1. Simulació d'opinió pública de la Universitat de Wuhan + Introducció al projecte MiroFish + +
+Vídeo demo de MiroFish + +Fes clic a la imatge per veure el vídeo de demostració complet de predicció usant l'"Informe d'Opinió Pública de la Universitat de Wuhan" generat per BettaFish +
+ +### 2. Simulació del final perdut de "El somni de la cambra vermella" + +
+Vídeo demo de MiroFish + +Fes clic a la imatge per veure la predicció profunda de MiroFish del final perdut basada en centenars de milers de paraules dels primers 80 capítols de "El somni de la cambra vermella" +
+ +> **Predicció financera**, **Predicció de notícies polítiques** i més exemples properament... + +## 🔄 Flux de treball + +1. **Construcció del graf**: Extracció de llavors & Injecció de memòria individual/col·lectiva & Construcció de GraphRAG +2. **Configuració de l'entorn**: Extracció de relacions entre entitats & Generació de persones & Injecció de configuració d'Agents +3. **Simulació**: Simulació paral·lela en dues plataformes & Anàlisi automàtica de requisits de predicció & Actualitzacions dinàmiques de memòria temporal +4. **Generació de l'informe**: ReportAgent amb conjunt d'eines avançat per a la interacció profunda amb l'entorn post-simulació +5. **Interacció profunda**: Xateja amb qualsevol agent del món simulat & Interactua amb ReportAgent + +## 🚀 Inici ràpid + +### Opció 1: Desplegament des del codi font (Recomanat) + +#### Requisits previs + +| Eina | Versió | Descripció | Verificar instal·lació | +|------|--------|------------|------------------------| +| **Node.js** | 18+ | Runtime de frontend, inclou npm | `node -v` | +| **Python** | ≥3.11, ≤3.12 | Runtime de backend | `python --version` | +| **uv** | Última | Gestor de paquets Python | `uv --version` | + +#### 1. Configurar les variables d'entorn + +```bash +# Copiar el fitxer de configuració d'exemple +cp .env.example .env + +# Editar el fitxer .env i omplir les claus API necessàries +``` + +**Variables d'entorn requerides:** + +```env +# Configuració de l'API LLM (suporta qualsevol API LLM amb format OpenAI SDK) +# Recomanat: Model Alibaba Qwen-plus via Bailian Platform: https://bailian.console.aliyun.com/ +# Alt consum, prova primer simulacions amb menys de 40 rondes +LLM_API_KEY=la_teva_api_key +LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 +LLM_MODEL_NAME=qwen-plus + +# Configuració de Zep Cloud +# La quota mensual gratuïta és suficient per a un ús bàsic: https://app.getzep.com/ +ZEP_API_KEY=la_teva_zep_api_key +``` + +#### 2. Instal·lar les dependències + +```bash +# Instal·lació amb un clic de totes les dependències (arrel + frontend + backend) +npm run setup:all +``` + +O instal·la pas a pas: + +```bash +# Instal·lar dependències Node (arrel + frontend) +npm run setup + +# Instal·lar dependències Python (backend, crea l'entorn virtual automàticament) +npm run setup:backend +``` + +#### 3. Iniciar els serveis + +```bash +# Iniciar frontend i backend (executar des de l'arrel del projecte) +npm run dev +``` + +**URLs dels serveis:** +- Frontend: `http://localhost:3000` +- Backend API: `http://localhost:5001` + +**Iniciar individualment:** + +```bash +npm run backend # Iniciar només el backend +npm run frontend # Iniciar només el frontend +``` + +### Opció 2: Desplegament amb Docker + +```bash +# 1. Configurar les variables d'entorn (igual que el desplegament des del codi font) +cp .env.example .env + +# 2. Obtenir la imatge i iniciar +docker compose up -d +``` + +Llegeix `.env` del directori arrel per defecte, mapeja els ports `3000 (frontend) / 5001 (backend)` + +> L'adreça del mirror per a una descàrrega més ràpida es proporciona com a comentaris a `docker-compose.yml`, substitueix-la si cal. + +## 📬 Uneix-te a la conversa + +
+Grup QQ +
+ +  + +L'equip de MiroFish està recrutant posicions a temps complet/pràctiques. Si t'interessen la simulació multi-agent i les aplicacions de LLM, no dubtis a enviar el teu CV a: **mirofish@shanda.com** + +## 📄 Agraïments + +**MiroFish ha rebut suport estratègic i incubació de Shanda Group!** + +El motor de simulació de MiroFish és impulsat per **[OASIS (Open Agent Social Interaction Simulations)](https://github.com/camel-ai/oasis)**. Agraïm sincerament les contribucions de codi obert de l'equip CAMEL-AI! + +## 📈 Estadístiques del projecte + + + + + + Gràfic de l'historial d'estrelles + + diff --git a/README-ES.md b/README-ES.md new file mode 100644 index 00000000..806b1149 --- /dev/null +++ b/README-ES.md @@ -0,0 +1,203 @@ +
+ +MiroFish Logo + +666ghj%2FMiroFish | Trendshift + +Motor de inteligencia colectiva simple y universal, prediciendo todo +
+A Simple and Universal Swarm Intelligence Engine, Predicting Anything + +666ghj%2MiroFish | Shanda + +[![GitHub Stars](https://img.shields.io/github/stars/666ghj/MiroFish?style=flat-square&color=DAA520)](https://github.com/666ghj/MiroFish/stargazers) +[![GitHub Watchers](https://img.shields.io/github/watchers/666ghj/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/watchers) +[![GitHub Forks](https://img.shields.io/github/forks/666ghj/MiroFish?style=flat-square)](https://github.com/666ghj/MiroFish/network) +[![Docker](https://img.shields.io/badge/Docker-Build-2496ED?style=flat-square&logo=docker&logoColor=white)](https://hub.docker.com/) +[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/666ghj/MiroFish) + +[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=flat-square&logo=discord&logoColor=white)](http://discord.gg/ePf5aPaHnA) +[![X](https://img.shields.io/badge/X-Follow-000000?style=flat-square&logo=x&logoColor=white)](https://x.com/mirofish_ai) +[![Instagram](https://img.shields.io/badge/Instagram-Follow-E4405F?style=flat-square&logo=instagram&logoColor=white)](https://www.instagram.com/mirofish_ai/) + +[English](./README.md) | [中文文档](./README-ZH.md) | [Español](./README-ES.md) | [Català](./README-CA.md) + +
+ +## ⚡ Descripción general + +**MiroFish** es un motor de predicción de próxima generación impulsado por tecnología multi-agente. Al extraer información semilla del mundo real (como noticias de última hora, borradores de políticas o señales financieras), construye automáticamente un mundo digital paralelo de alta fidelidad. Dentro de este espacio, miles de agentes inteligentes con personalidades independientes, memoria a largo plazo y lógica conductual interactúan libremente y experimentan evolución social. Puedes inyectar variables dinámicamente desde una "perspectiva omnisciente" para deducir con precisión trayectorias futuras — **ensaya el futuro en un simulador digital y gana decisiones tras incontables simulaciones**. + +> Solo necesitas: Subir materiales semilla (informes de análisis de datos o historias noveladas interesantes) y describir tus requisitos de predicción en lenguaje natural
+> MiroFish devolverá: Un informe de predicción detallado y un mundo digital de alta fidelidad profundamente interactivo + +### Nuestra visión + +MiroFish se dedica a crear un espejo de inteligencia colectiva que refleja la realidad. Al capturar la emergencia colectiva desencadenada por interacciones individuales, superamos las limitaciones de la predicción tradicional: + +- **A nivel macro**: Somos un laboratorio de ensayo para tomadores de decisiones, permitiendo que políticas y relaciones públicas sean probadas a riesgo cero +- **A nivel micro**: Somos un sandbox creativo para usuarios individuales — ya sea deduciendo finales de novelas o explorando escenarios imaginativos, todo puede ser divertido, lúdico y accesible + +Desde predicciones serias hasta simulaciones lúdicas, hacemos que cada "¿qué pasaría si?" vea su resultado, haciendo posible predecir todo. + +## 🌐 Demo en vivo + +Visita nuestro entorno de demostración en línea y experimenta una simulación de predicción sobre eventos de opinión pública que hemos preparado para ti: [mirofish-live-demo](https://666ghj.github.io/mirofish-demo/) + +## 📸 Capturas de pantalla + +
+ + + + + + + + + + + + + +
Captura 1Captura 2
Captura 3Captura 4
Captura 5Captura 6
+
+ +## 🎬 Videos de demostración + +### 1. Simulación de opinión pública de la Universidad de Wuhan + Introducción al proyecto MiroFish + +
+Video demo de MiroFish + +Haz clic en la imagen para ver el video completo de demostración de predicción usando el "Informe de Opinión Pública de la Universidad de Wuhan" generado por BettaFish +
+ +### 2. Simulación del final perdido de "Sueño de las Cámaras Rojas" + +
+Video demo de MiroFish + +Haz clic en la imagen para ver la predicción profunda de MiroFish del final perdido basada en cientos de miles de palabras de los primeros 80 capítulos de "Sueño de las Cámaras Rojas" +
+ +> **Predicción financiera**, **Predicción de noticias políticas** y más ejemplos próximamente... + +## 🔄 Flujo de trabajo + +1. **Construcción del grafo**: Extracción de semillas & Inyección de memoria individual/colectiva & Construcción de GraphRAG +2. **Configuración del entorno**: Extracción de relaciones entre entidades & Generación de personajes & Inyección de configuración de Agentes +3. **Simulación**: Simulación paralela en dos plataformas & Análisis automático de requisitos de predicción & Actualización dinámica de memoria temporal +4. **Generación de informe**: ReportAgent con amplio conjunto de herramientas para interacción profunda con el entorno post-simulación +5. **Interacción profunda**: Conversa con cualquier agente del mundo simulado & Interactúa con ReportAgent + +## 🚀 Inicio rápido + +### Opción 1: Despliegue desde código fuente (Recomendado) + +#### Requisitos previos + +| Herramienta | Versión | Descripción | Verificar instalación | +|-------------|---------|-------------|----------------------| +| **Node.js** | 18+ | Runtime de frontend, incluye npm | `node -v` | +| **Python** | ≥3.11, ≤3.12 | Runtime de backend | `python --version` | +| **uv** | Última | Gestor de paquetes Python | `uv --version` | + +#### 1. Configurar variables de entorno + +```bash +# Copiar el archivo de configuración de ejemplo +cp .env.example .env + +# Editar el archivo .env y completar las claves API necesarias +``` + +**Variables de entorno requeridas:** + +```env +# Configuración de API LLM (soporta cualquier API LLM con formato OpenAI SDK) +# Recomendado: Modelo Alibaba Qwen-plus vía Bailian Platform: https://bailian.console.aliyun.com/ +# Alto consumo, prueba primero simulaciones con menos de 40 rondas +LLM_API_KEY=tu_api_key +LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 +LLM_MODEL_NAME=qwen-plus + +# Configuración de Zep Cloud +# La cuota mensual gratuita es suficiente para uso básico: https://app.getzep.com/ +ZEP_API_KEY=tu_zep_api_key +``` + +#### 2. Instalar dependencias + +```bash +# Instalación con un clic de todas las dependencias (raíz + frontend + backend) +npm run setup:all +``` + +O instala paso a paso: + +```bash +# Instalar dependencias Node (raíz + frontend) +npm run setup + +# Instalar dependencias Python (backend, crea entorno virtual automáticamente) +npm run setup:backend +``` + +#### 3. Iniciar servicios + +```bash +# Iniciar frontend y backend (ejecutar desde la raíz del proyecto) +npm run dev +``` + +**URLs de servicios:** +- Frontend: `http://localhost:3000` +- Backend API: `http://localhost:5001` + +**Iniciar individualmente:** + +```bash +npm run backend # Iniciar solo el backend +npm run frontend # Iniciar solo el frontend +``` + +### Opción 2: Despliegue con Docker + +```bash +# 1. Configurar variables de entorno (igual que despliegue desde código fuente) +cp .env.example .env + +# 2. Extraer imagen e iniciar +docker compose up -d +``` + +Lee `.env` del directorio raíz por defecto, mapea puertos `3000 (frontend) / 5001 (backend)` + +> La dirección del mirror para descarga más rápida se proporciona como comentarios en `docker-compose.yml`, reemplaza si es necesario. + +## 📬 Únete a la conversación + +
+Grupo QQ +
+ +  + +El equipo de MiroFish está reclutando posiciones de tiempo completo/pasantías. Si te interesan la simulación multi-agente y las aplicaciones de LLM, no dudes en enviar tu CV a: **mirofish@shanda.com** + +## 📄 Agradecimientos + +**¡MiroFish ha recibido apoyo estratégico e incubación de Shanda Group!** + +El motor de simulación de MiroFish está impulsado por **[OASIS (Open Agent Social Interaction Simulations)](https://github.com/camel-ai/oasis)**, agradecemos sinceramente las contribuciones de código abierto del equipo CAMEL-AI. + +## 📈 Estadísticas del proyecto + + + + + + Gráfico de Star History + + diff --git a/README.md b/README.md index 4b8369f4..d23c6453 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ [![X](https://img.shields.io/badge/X-Follow-000000?style=flat-square&logo=x&logoColor=white)](https://x.com/mirofish_ai) [![Instagram](https://img.shields.io/badge/Instagram-Follow-E4405F?style=flat-square&logo=instagram&logoColor=white)](https://www.instagram.com/mirofish_ai/) -[English](./README.md) | [中文文档](./README-ZH.md) +[English](./README.md) | [中文文档](./README-ZH.md) | [Español](./README-ES.md) | [Català](./README-CA.md) diff --git a/locales/ca.json b/locales/ca.json new file mode 100644 index 00000000..090cc82b --- /dev/null +++ b/locales/ca.json @@ -0,0 +1,665 @@ +{ + "common": { + "confirm": "Confirma", + "cancel": "Cancel·la", + "loading": "Carregant...", + "error": "Error", + "success": "Èxit", + "completed": "Completat", + "processing": "Generant", + "pending": "Pendent", + "ready": "Llest", + "running": "En execució", + "failed": "Fallat", + "unknown": "Desconegut", + "unknownError": "Error desconegut", + "none": "Cap", + "close": "Tanca", + "back": "Enrere", + "next": "Següent", + "retry": "Torna-ho a intentar", + "noData": "No hi ha dades disponibles", + "hours": "hores", + "minutes": "minuts", + "rounds": "rondes", + "items": "elements", + "files": "fitxers" + }, + "meta": { + "title": "MiroFish - Prediu-ho tot", + "description": "MiroFish - Sistema de simulació d'opinions a xarxes socials" + }, + "nav": { + "visitGithub": "Visita la nostra pàgina de Github" + }, + "home": { + "tagline": "Motor d'Intel·ligència Col·lectiva Concís i Universal", + "version": "/ v0.1-Previsualització", + "heroTitle1": "Puja informes,", + "heroTitle2": "Prediu el futur", + "heroDesc": "A partir d'un sol document, {brand} extreu llavors de realitat per auto-generar un món paral·lel amb fins a {agentScale}. Injecta variables des d'una perspectiva omniscient per trobar l'{optimalSolution} en dinàmiques de grup complexes.", + "heroDescBrand": "MiroFish", + "heroDescAgentScale": "Agents a escala de milions", + "heroDescOptimalSolution": "\"òptim local\"", + "slogan": "Que els Agents assagen el futur, que les decisions prevalguin", + "systemStatus": "Estat del sistema", + "systemReady": "Llest", + "systemReadyDesc": "Motor de predicció en espera. Puja dades no estructurades per inicialitzar una seqüència de simulació.", + "metricLowCost": "Baix cost", + "metricLowCostDesc": "~5$/sim de mitjana", + "metricHighAvail": "Escalable", + "metricHighAvailDesc": "Milions d'Agents", + "workflowSequence": "Flux de treball", + "step01Title": "Construcció del graf", + "step01Desc": "Extracció de llavors i injecció de memòria i construcció de GraphRAG", + "step02Title": "Configuració de l'entorn", + "step02Desc": "Extracció d'entitats i generació de persones i injecció de configuració d'Agents", + "step03Title": "Simulació", + "step03Desc": "Simulació paral·lela en dues plataformes i anàlisi automàtica de requisits i memòria temporal", + "step04Title": "Informe", + "step04Desc": "ReportAgent interactua amb l'entorn post-simulació mitjançant eines avançades", + "step05Title": "Interacció", + "step05Desc": "Xateja amb qualsevol individu simulat i conversa amb ReportAgent", + "realitySeed": "01 / Llavor de realitat", + "supportedFormats": "Formats: PDF, MD, TXT", + "dragToUpload": "Arrossega fitxers per pujar-los", + "orBrowse": "o fes clic per explorar fitxers", + "inputParams": "Paràmetres d'entrada", + "simulationPrompt": ">_ 02 / Prompt de simulació", + "promptPlaceholder": "// Descriu el teu requisit de simulació o predicció en llenguatge natural", + "engineBadge": "Motor: MiroFish-V1.0", + "startEngine": "Inicia el motor", + "initializing": "Inicialitzant..." + }, + "main": { + "layoutGraph": "Graf", + "layoutSplit": "Dividit", + "layoutWorkbench": "Taulell", + "stepNames": ["Construcció del graf", "Configuració de l'entorn", "Execució de la simulació", "Generació de l'informe", "Interacció profunda"] + }, + "step1": { + "ontologyGeneration": "Generació d'ontologia", + "ontologyCompleted": "Completada", + "ontologyGenerating": "Generant", + "ontologyPending": "Pendent", + "ontologyDesc": "El LLM analitza el contingut del document i els requisits de simulació, extreu llavors de realitat i auto-genera una estructura d'ontologia adequada", + "analyzingDocs": "Analitzant documents...", + "graphRagBuild": "Construcció de GraphRAG", + "graphRagDesc": "Basant-se en l'ontologia generada, els documents es divideixen automàticament en fragments i s'envien a Zep per construir un graf de coneixement, extraient entitats i relacions, formant memòria temporal i resums de comunitat", + "entityNodes": "Nodes d'entitat", + "relationEdges": "Arestes de relació", + "schemaTypes": "Tipus d'esquema", + "buildComplete": "Construcció completada", + "buildCompleteDesc": "La construcció del graf s'ha completat. Continua al pas següent per a la configuració de l'entorn de simulació.", + "inProgress": "En curs", + "creating": "Creant...", + "enterEnvSetup": "Entra a la configuració de l'entorn", + "createSimulationFailed": "Error en crear la simulació: {error}", + "createSimulationException": "Excepció en crear la simulació: {error}" + }, + "step2": { + "simInstanceInit": "Inicialització de la instància de simulació", + "simInstanceDesc": "Crea una nova instància de simulació i obté les plantilles de paràmetres del món", + "asyncTaskDone": "Tasca asíncrona completada", + "generateAgentPersona": "Genera persones d'Agent", + "generateAgentPersonaDesc": "Combina el context per extreure automàticament entitats i relacions del graf de coneixement, inicialitza individus simulats i assigna comportaments i memòries únics basats en llavors de realitat", + "currentAgentCount": "Agents actuals", + "expectedAgentTotal": "Total d'agents previst", + "relatedTopicsCount": "Temes relacionats amb la llavor de realitat", + "generatedAgentPersonas": "Persones d'Agent generades", + "unknownProfession": "Professió desconeguda", + "noBio": "Sense biografia disponible", + "dualPlatformConfig": "Genera configuració de doble plataforma", + "dualPlatformConfigDesc": "El LLM configura intel·ligentment el flux temporal del món, els algorismes de recomanació, les hores actives de cada individu, la freqüència de publicació, els activadors d'esdeveniments i més, basant-se en els requisits i les llavors de realitat", + "simulationDuration": "Durada de la simulació", + "roundDuration": "Durada de la ronda", + "totalRounds": "Total de rondes", + "activePerHour": "Actius per hora", + "peakHours": "Hores punta", + "workHours": "Hores de feina", + "morningHours": "Hores del matí", + "offPeakHours": "Hores vall", + "agentConfig": "Configuració de l'Agent", + "activeTimePeriod": "Hores actives", + "postsPerHour": "Publicacions/h", + "commentsPerHour": "Comentaris/h", + "responseDelay": "Retard de resposta", + "activityLevel": "Nivell d'activitat", + "sentimentBias": "Biaix de sentiment", + "influenceWeight": "Influència", + "recommendAlgoConfig": "Configuració de l'algorisme de recomanació", + "platform1Name": "Plataforma 1: Plaça / Feed", + "platform2Name": "Plataforma 2: Tema / Comunitat", + "recencyWeight": "Pes de la recència", + "popularityWeight": "Pes de la popularitat", + "relevanceWeight": "Pes de la rellevància", + "viralThreshold": "Llindar viral", + "echoChamberStrength": "Intensitat de la cambra de ressò", + "llmConfigReasoning": "Raonament de configuració del LLM", + "initialActivation": "Orquestració d'activació inicial", + "initialActivationDesc": "Auto-genera esdeveniments d'activació inicials i temes candents basant-se en la direcció narrativa per guiar l'estat inicial del món de simulació", + "orchestrating": "Orquestrant", + "narrativeDirection": "Direcció narrativa", + "initialHotTopics": "Temes candents inicials", + "initialActivationSeq": "Seqüència d'activació inicial ({count})", + "setupComplete": "Configuració completada", + "setupCompleteDesc": "L'entorn de simulació està llest. Ja pots iniciar la simulació.", + "roundsConfig": "Configuració de rondes de simulació", + "roundsConfigDesc": "MiroFish planifica automàticament simular {hours} hores del món real, on cada ronda representa {minutesPerRound} minuts de temps transcorregut", + "customToggle": "Personalitzat", + "roundsUnit": "rondes", + "estimatedDuration": "Per a 100 Agents: estimació ~{minutes} minuts", + "estimatedDurationFull": "Per a 100 Agents: estimació {minutes} minuts", + "recommendedRounds": "{rounds} (recomanat)", + "customTip": "Per a la primera execució, recomanem fortament canviar al 'Mode personalitzat' per reduir les rondes, fer una previsualització ràpida i reduir el risc d'errors", + "backToGraphBuild": "Torna a la construcció del graf", + "startDualWorldSim": "Inicia la simulació paral·lela de dos mons", + "profileModalAge": "Edat aparent", + "profileModalGender": "Gènere aparent", + "profileModalCountry": "País/Regió", + "profileModalMbti": "MBTI aparent", + "profileModalBio": "Biografia de la persona", + "profileModalTopics": "Temes relacionats amb la llavor de realitat", + "profileModalPersona": "Rerefons detallat de la persona", + "personaDimExperience": "Experiència completa de l'esdeveniment", + "personaDimExperienceDesc": "Trajectòria conductual completa en aquest esdeveniment", + "personaDimBehavior": "Perfil conductual", + "personaDimBehaviorDesc": "Resum de l'experiència i preferències conductuals", + "personaDimMemory": "Empremta de memòria única", + "personaDimMemoryDesc": "Memories formades a partir de llavors de realitat", + "personaDimSocial": "Xarxa social", + "personaDimSocialDesc": "Connexions individuals i graf d'interaccions", + "genderMale": "Home", + "genderFemale": "Dona", + "genderOther": "Altre", + "yearsOld": "anys", + "initializing": "Inicialitzant", + "generating": "Generant" + }, + "step3": { + "startGenerateReport": "Genera l'informe", + "generatingReport": "Iniciant...", + "waitingForActions": "Esperant accions dels agents...", + "errorMissingSimId": "Error: manca simulationId", + "startingDualSim": "Iniciant la simulació paral·lela en dues plataformes...", + "graphMemoryUpdateEnabled": "Actualització dinàmica de la memòria del graf activada", + "setMaxRounds": "Nombre màxim de rondes de simulació establert a: {rounds}", + "oldSimCleared": "Registres de simulació antics eliminats, reiniciant la simulació", + "engineStarted": "Motor de simulació iniciat correctament", + "startFailed": "Error en iniciar: {error}", + "startException": "Excepció en iniciar: {error}", + "stoppingSim": "Aturant la simulació...", + "simStopped": "Simulació aturada", + "stopFailed": "Error en aturar: {error}", + "stopException": "Excepció en aturar: {error}", + "allPlatformsCompleted": "Totes les simulacions de plataforma han finalitzat", + "simCompleted": "Simulació completada", + "graphRealtimeRefresh": "Actualització en temps real del graf activada (30s)", + "graphRefreshStopped": "Actualització en temps real del graf aturada", + "preparingGoBack": "Preparant el retorn al pas 2, tancant la simulació...", + "closingSimEnv": "Tancant l'entorn de simulació...", + "simEnvClosed": "Entorn de simulació tancat", + "closeFailed": "Error en tancar l'entorn de simulació, intentant forçar l'aturada...", + "stoppingProcess": "Aturant el procés de simulació...", + "checkStatusFailed": "Error en comprovar l'estat de la simulació: {error}", + "forceStopSuccess": "Simulació aturada forçosament", + "forceStopFailed": "Error en l'aturada forçosa: {error}", + "startGenerateReportBtn": "Genera l'informe", + "generatingReportBtn": "Iniciant..." + }, + "step4": { + "generatingSection": "Generant {title}...", + "goToInteraction": "Entra a la interacció profunda", + "waitingForReportAgent": "Esperant l'Agent d'informe...", + "collapse": "Redueix ▲", + "expandAll": "Mostra tots {count} ▼", + "expandAllEntities": "Mostra totes {count} ▼", + "scenarioLabel": "Escenari: ", + "tabKeyFacts": "Fets clau ({count})", + "tabCoreEntities": "Entitats principals ({count})", + "tabRelationChains": "Cadenes de relació ({count})", + "tabSubQueries": "Subconsultes ({count})", + "panelKeyFacts": "Últims fets clau de la memòria temporal", + "totalCount": "{count} en total", + "totalEntityCount": "{count} en total", + "panelCoreEntities": "Entitats principals", + "factCount": "{count} fets", + "panelRelationChains": "Cadenes de relació", + "panelSubQueries": "Subpreguntes d'anàlisi de consulta de deriva", + "emptyKeyFacts": "No hi ha fets clau disponibles", + "emptyCoreEntities": "No hi ha entitats principals disponibles", + "emptyRelationChains": "No hi ha cadenes de relació disponibles", + "tabActiveFacts": "Fets actius ({count})", + "tabHistoricalFacts": "Fets històrics ({count})", + "tabEntities": "Entitats ({count})", + "panelActiveFacts": "Fets actius", + "emptyActiveFacts": "No hi ha fets actius disponibles", + "panelHistoricalFacts": "Fets històrics", + "emptyHistoricalFacts": "No hi ha fets històrics disponibles", + "panelEntities": "Entitats", + "emptyEntities": "No hi ha entitats disponibles", + "searchLabel": "Cerca: ", + "tabFacts": "Fets ({count})", + "tabEdges": "Arestes ({count})", + "tabNodes": "Nodes ({count})", + "panelSearchResults": "Resultats de la cerca", + "emptySearchResults": "No s'han trobat resultats", + "panelRelatedEdges": "Arestes relacionades", + "panelRelatedNodes": "Nodes relacionats", + "world1": "Món 1", + "world2": "Món 2" + }, + "step5": { + "interactiveTools": "Eines interactives", + "agentsAvailable": "{count} agents disponibles", + "chatWithReportAgent": "Xateja amb l'Agent d'informe", + "chatWithAgent": "Xateja amb qualsevol individu del món", + "selectChatTarget": "Selecciona l'objectiu del xat", + "sendSurvey": "Envia una enquesta al món", + "reportAgentChat": "Agent d'informe - Xat", + "reportAgentDesc": "Una versió conversacional de l'agent de generació d'informes amb accés a 4 eines professionals i la memòria completa de MiroFish", + "toolInsightForge": "Atribució profunda InsightForge", + "toolInsightForgeDesc": "Alinea les dades de les llavors del món real amb l'estat de la simulació, combinant la Memòria Global/Local per a una anàlisi d'atribució profunda entre períodes temporals", + "toolPanoramaSearch": "Seguiment complet PanoramaSearch", + "toolPanoramaSearchDesc": "Algorisme BFS basat en grafs que reconstrueix els camins de propagació d'esdeveniments, capturant la topologia completa del flux d'informació", + "toolQuickSearch": "Recuperació ràpida QuickSearch", + "toolQuickSearchDesc": "Interfície de consulta instantània basada en GraphRAG amb indexació optimitzada per a l'extracció ràpida d'atributs de nodes i fets discrets", + "toolInterviewSubAgent": "Entrevista virtual InterviewSubAgent", + "toolInterviewSubAgentDesc": "Entrevistes autònomes que condueixen diàlegs paral·lels multi-ronda amb individus simulats, recollint dades d'opinió no estructurades i estats psicològics", + "profileBio": "Biografia", + "chatEmptyReportAgent": "Xateja amb l'Agent d'informe per explorar el contingut de l'informe en profunditat", + "chatEmptyAgent": "Xateja amb individus simulats per entendre les seves perspectives", + "chatInputPlaceholder": "Escriu la teva pregunta...", + "selectSurveyTarget": "Selecciona els objectius de l'enquesta", + "selectedCount": "Seleccionats {selected} / {total}", + "surveyQuestions": "Preguntes de l'enquesta", + "surveyInputPlaceholder": "Introdueix la pregunta que vols fer a tots els objectius seleccionats...", + "submitSurvey": "Envia l'enquesta", + "surveyResults": "Resultats de l'enquesta", + "surveyResultsCount": "{count} respostes", + "selectAll": "Selecciona-ho tot", + "clearSelection": "Neteja", + "errorOccurred": "S'ha produït un error: {error}", + "noResponse": "Sense resposta", + "requestFailed": "Sol·licitud fallida", + "selectAgentFirst": "Selecciona primer un individu simulat" + }, + "graph": { + "panelTitle": "Visualització de relacions del graf", + "refreshGraph": "Actualitza el graf", + "graphMemoryRealtime": "Memòria a curt/llarg termini de GraphRAG actualitzant-se en temps real", + "realtimeUpdating": "Actualitzant en temps real...", + "pendingContentHint": "Alguns continguts encara s'estan processant. Considera actualitzar el graf manualment més tard.", + "nodeDetails": "Detalls del node", + "relationship": "Relació", + "graphDataLoading": "Carregant dades del graf...", + "waitingOntology": "Esperant la generació de l'ontologia...", + "toggleMaximize": "Maximitza/Restaura", + "closeHint": "Tanca el consell" + }, + "history": { + "title": "Historial de simulacions", + "graphBuild": "Construcció del graf", + "envSetup": "Configuració de l'entorn", + "analysisReport": "Informe d'anàlisi", + "moreFiles": "+{count} fitxers", + "noFiles": "Sense fitxers", + "loadingText": "Carregant...", + "simRequirement": "Requisit de simulació", + "relatedFiles": "Fitxers relacionats", + "noRelatedFiles": "Sense fitxers relacionats", + "replayTitle": "Reproducció de la simulació", + "step1Button": "Construcció del graf", + "step2Button": "Configuració de l'entorn", + "step4Button": "Informe d'anàlisi", + "replayHint": "El pas 3 'Execució de la simulació' i el pas 5 'Interacció profunda' s'han d'iniciar en temps real i no admeten la reproducció de l'historial", + "notStarted": "No iniciat", + "roundsProgress": "{current}/{total} rondes", + "untitledSimulation": "Simulació sense títol", + "unknownFile": "Fitxer desconegut" + }, + "api": { + "projectNotFound": "Projecte no trobat: {id}", + "projectDeleteFailed": "Projecte no trobat o error en l'eliminació: {id}", + "projectDeleted": "Projecte eliminat: {id}", + "projectReset": "Projecte restablert: {id}", + "requireSimulationRequirement": "Proporciona un requisit de simulació (simulation_requirement)", + "requireFileUpload": "Puja almenys un fitxer de document", + "noDocProcessed": "No s'ha processat cap document correctament. Comprova els formats dels fitxers.", + "requireProjectId": "Proporciona project_id", + "configError": "Error de configuració: {details}", + "zepApiKeyMissing": "ZEP_API_KEY no configurat", + "ontologyNotGenerated": "L'ontologia encara no s'ha generat. Crida primer /ontology/generate.", + "graphBuilding": "Construcció del graf en curs. No reenvïis. Per forçar la reconstrucció, afegeix force: true.", + "textNotFound": "No s'ha trobat el contingut de text extret", + "ontologyNotFound": "No s'ha trobat la definició de l'ontologia", + "graphBuildStarted": "Tasca de construcció del graf iniciada. Consulta el progrés a /task/{taskId}.", + "graphBuildComplete": "Construcció del graf completada", + "buildFailed": "Error en la construcció: {error}", + "taskNotFound": "Tasca no trobada: {id}", + "graphDeleted": "Graf eliminat: {id}", + "entityNotFound": "Entitat no trobada: {id}", + "graphNotBuilt": "El graf encara no s'ha construït. Crida primer /api/graph/build.", + "requireSimulationId": "Proporciona simulation_id", + "simulationNotFound": "Simulació no trobada: {id}", + "projectMissingRequirement": "Al projecte li manca el requisit de simulació (simulation_requirement)", + "prepareStarted": "Tasca de preparació iniciada. Consulta el progrés a /api/simulation/prepare/status.", + "alreadyPrepared": "La preparació ja s'ha completat. No cal regenerar.", + "notStartedPrepare": "La preparació no s'ha iniciat. Crida /api/simulation/prepare.", + "taskCompletedPrepared": "Tasca completada (la preparació ja existia)", + "requireTaskOrSimId": "Proporciona task_id o simulation_id", + "configNotFound": "Configuració de simulació no trobada. Crida primer /prepare.", + "configFileNotFound": "Fitxer de configuració no trobat. Crida primer /prepare.", + "unknownScript": "Script desconegut: {name}. Disponibles: {allowed}", + "scriptFileNotFound": "Fitxer d'script no trobat: {name}", + "requireGraphId": "Proporciona graph_id", + "noMatchingEntities": "No s'han trobat entitats coincidents", + "maxRoundsPositive": "max_rounds ha de ser un enter positiu", + "maxRoundsInvalid": "max_rounds ha de ser un enter vàlid", + "invalidPlatform": "Tipus de plataforma no vàlid: {platform}. Opcions: twitter/reddit/parallel", + "simRunningForceHint": "La simulació s'està executant. Atura-la primer amb /stop o utilitza force=true per reiniciar.", + "simNotReady": "La simulació no està llesta. Estat actual: {status}. Crida primer /prepare.", + "graphIdRequiredForMemory": "L'actualització de la memòria del graf requereix un graph_id vàlid. Assegura't que el graf s'ha construït.", + "dbNotExist": "La base de dades no existeix. Pot ser que la simulació no s'hagi executat encara.", + "requireMessage": "Proporciona un missatge", + "missingGraphId": "Manca el graph ID", + "missingGraphIdEnsure": "Manca el graph ID. Assegura't que el graf s'ha construït.", + "missingSimRequirement": "Manca la descripció del requisit de simulació", + "reportAlreadyExists": "L'informe ja existeix", + "reportGenerateStarted": "Tasca de generació de l'informe iniciada. Consulta el progrés a /api/report/generate/status.", + "reportGenerated": "Informe generat", + "reportNotFound": "Informe no trobat: {id}", + "noReportForSim": "No s'ha trobat cap informe per a aquesta simulació: {id}", + "reportDeleted": "Informe eliminat: {id}", + "reportGenerateFailed": "Error en la generació de l'informe", + "sectionNotFound": "Secció no trobada: section_{index}.md", + "reportProgressNotAvail": "Informe no trobat o progrés no disponible: {id}", + "requireAgentId": "Proporciona agent_id", + "requirePrompt": "Proporciona un prompt (pregunta d'entrevista)", + "invalidInterviewPlatform": "La plataforma ha de ser 'twitter' o 'reddit'", + "envNotRunning": "L'entorn de simulació no s'està executant o està tancat. Assegura't que la simulació s'ha completat i està en mode d'espera de comandes.", + "interviewTimeout": "Temps d'espera de la resposta d'entrevista esgotat: {error}", + "requireInterviews": "Proporciona interviews (llista d'entrevistes)", + "interviewListMissingAgentId": "Manca agent_id a l'element {index} de la llista d'entrevistes", + "interviewListMissingPrompt": "Manca prompt a l'element {index} de la llista d'entrevistes", + "interviewListInvalidPlatform": "La plataforma de l'element {index} de la llista d'entrevistes ha de ser 'twitter' o 'reddit'", + "batchInterviewTimeout": "Temps d'espera de la resposta d'entrevista en lot esgotat: {error}", + "globalInterviewTimeout": "Temps d'espera de la resposta d'entrevista global esgotat: {error}", + "envRunning": "L'entorn s'està executant i està llest per a comandes d'entrevista", + "envNotRunningShort": "L'entorn no s'està executant o està tancat", + "requireGraphIdAndQuery": "Proporciona graph_id i query", + "initReportAgent": "Inicialitzant l'Agent d'informe..." + }, + "progress": { + "initGraphService": "Inicialitzant el servei de construcció del graf...", + "textChunking": "Dividint el text en fragments...", + "creatingZepGraph": "Creant el graf Zep...", + "settingOntology": "Establint la definició de l'ontologia...", + "addingChunks": "Afegint {count} fragments de text...", + "waitingZepProcess": "Esperant que Zep processi les dades...", + "fetchingGraphData": "Obtenint les dades del graf...", + "graphBuildComplete": "Construcció del graf completada", + "buildFailed": "Error en la construcció: {error}", + "startBuildingGraph": "Iniciant la construcció del graf...", + "graphCreated": "Graf creat: {graphId}", + "ontologySet": "Ontologia establerta", + "textSplit": "Text dividit en {count} fragments", + "fetchingGraphInfo": "Obtenint informació del graf...", + "sendingBatch": "Enviant lot {current}/{total} ({chunks} fragments)...", + "batchFailed": "Lot {batch} fallat: {error}", + "noEpisodesWait": "No hi ha episodis als quals esperar", + "waitingEpisodes": "Esperant que es processin {count} fragments de text...", + "episodesTimeout": "Alguns fragments han esgotat el temps d'espera, {completed}/{total} completats", + "zepProcessing": "Processant amb Zep... {completed}/{total} completats, {pending} pendents ({elapsed}s)", + "processingComplete": "Processament complet: {completed}/{total}", + "taskComplete": "Tasca completada", + "taskFailed": "Tasca fallada", + "startPreparingEnv": "Preparant l'entorn de simulació...", + "connectingZepGraph": "Connectant al graf Zep...", + "readingNodeData": "Llegint dades de nodes...", + "readingComplete": "Fet, {count} entitats trobades", + "startGenerating": "Iniciant la generació...", + "analyzingRequirements": "Analitzant els requisits de simulació...", + "generatingOutline": "Generant l'esquema de l'informe...", + "parsingOutline": "Analitzant l'estructura de l'esquema...", + "outlinePlanComplete": "Planificació de l'esquema completada", + "deepSearchAndWrite": "Cerca profunda i escriptura ({current}/{max})", + "initReport": "Inicialitzant l'informe...", + "startPlanningOutline": "Planificant l'esquema de l'informe...", + "outlineDone": "Esquema completat, {count} seccions", + "generatingSection": "Generant secció: {title} ({current}/{total})", + "sectionDone": "Secció {title} completada", + "assemblingReport": "Assemblant l'informe complet...", + "reportComplete": "Generació de l'informe completada", + "reportFailed": "Error en la generació de l'informe: {error}", + "savingProfiles": "Desant els fitxers de perfils...", + "profilesComplete": "Fet, {count} perfils generats", + "callingLLMConfig": "Cridant el LLM per generar la configuració...", + "savingConfigFiles": "Desant els fitxers de configuració...", + "configComplete": "Generació de la configuració completada", + "generatingTimeConfig": "Generant la configuració de temps...", + "generatingEventConfig": "Generant la configuració d'esdeveniments i temes candents...", + "generatingAgentConfig": "Generant la configuració d'agents ({start}-{end}/{total})...", + "generatingPlatformConfig": "Generant la configuració de la plataforma...", + "zepSearchQuery": "Tota la informació, activitats, esdeveniments, relacions i rerefons sobre {name}", + "timeConfigLabel": "Configuració de temps", + "eventConfigLabel": "Configuració d'esdeveniments", + "agentConfigResult": "Configuració d'agents: {count} generats", + "postAssignResult": "Assignació de publicacions: {count} publicacions assignades", + "profileGenerated": "[Generat] {name} ({type})", + "readingGraphEntities": "Llegint entitats del graf", + "generatingProfiles": "Generant perfils d'Agent", + "generatingSimConfig": "Generant configuració de simulació", + "preparingScripts": "Preparant scripts" + }, + "log": { + "preparingGoBack": "Preparant el retorn al pas 2, tancant la simulació...", + "closingSimEnv": "Tancant l'entorn de simulació...", + "simEnvClosed": "✓ Entorn de simulació tancat", + "closeSimEnvFailed": "Error en tancar l'entorn de simulació, intentant forçar l'aturada...", + "simForceStopSuccess": "✓ Simulació aturada forçosament", + "forceStopFailed": "Error en l'aturada forçosa: {error}", + "stoppingSimProcess": "Aturant el procés de simulació...", + "simStopped": "✓ Simulació aturada", + "stopSimFailed": "Error en aturar la simulació: {error}", + "checkStatusFailed": "Error en comprovar l'estat de la simulació: {error}", + "enterStep4": "Entrant al pas 4: Generació de l'informe", + "loadingSimData": "Carregant dades de simulació: {id}", + "timeConfig": "Configuració de temps: {minutes} minuts per ronda", + "timeConfigFetchFailed": "Error en obtenir la configuració de temps, usant valor per defecte: {minutes} min/ronda", + "projectLoadSuccess": "Projecte carregat: {id}", + "loadSimDataFailed": "Error en carregar les dades de simulació: {error}", + "loadException": "Excepció en carregar: {error}", + "graphDataLoadSuccess": "Dades del graf carregades correctament", + "graphLoadFailed": "Error en carregar el graf: {error}", + "graphRealtimeRefreshStart": "Actualització en temps real del graf activada (30s)", + "graphRealtimeRefreshStop": "Actualització en temps real del graf aturada", + "simRunViewInit": "SimulationRunView inicialitzat", + "customRounds": "Rondes de simulació personalitzades: {rounds}", + "enterStep3": "Entrant al pas 3: Execució de la simulació", + "customRoundsConfig": "Rondes de simulació personalitzades: {rounds} rondes", + "useAutoRounds": "Usant rondes de simulació configurades automàticament", + "detectedSimEnvRunning": "Detectat entorn de simulació en execució, tancant...", + "closeSimEnvFailedWithError": "Error en tancar l'entorn de simulació: {error}", + "closeSimEnvException": "Excepció en tancar l'entorn de simulació: {error}", + "detectedSimRunning": "Detectada simulació en execució, aturant...", + "forceStopSimFailed": "Error en forçar l'aturada de la simulació: {error}", + "forceStopSimException": "Excepció en forçar l'aturada de la simulació: {error}", + "simViewInit": "SimulationView inicialitzat", + "errorMissingSimId": "Error: manca simulationId", + "simInstanceCreated": "Instància de simulació creada: {id}", + "preparingSimEnv": "Preparant l'entorn de simulació...", + "detectedExistingPrep": "Detectada preparació existent, usant-la directament", + "prepareTaskStarted": "Tasca de preparació iniciada", + "prepareTaskId": " └─ ID de tasca: {taskId}", + "zepEntitiesFound": "Trobades {count} entitats del graf Zep", + "entityTypes": " └─ Tipus d'entitats: {types}", + "startPollingProgress": "Sondejant el progrés de la preparació...", + "prepareFailed": "Error en la preparació: {error}", + "prepareException": "Excepció en la preparació: {error}", + "prepareComplete": "✓ Preparació completada", + "prepareFailedWithError": "✗ Error en la preparació: {error}", + "startGeneratingConfig": "Generant la configuració de simulació de doble plataforma...", + "generatingAgentProfileConfig": "Generant la configuració de persones d'agent...", + "generatingLLMConfig": "Cridant el LLM per generar els paràmetres de configuració de simulació...", + "configComplete": "✓ Configuració de simulació generada", + "configSummaryAgents": " ├─ Agents: {count}", + "configSummaryHours": " ├─ Durada: {hours} hores", + "configSummaryPosts": " ├─ Publicacions inicials: {count}", + "configSummaryTopics": " ├─ Temes candents: {count}", + "configSummaryPlatforms": " └─ Plataformes: Twitter {twitter}, Reddit {reddit}", + "timeConfigDetail": "Configuració de temps: {minutes} min/ronda, {rounds} rondes en total", + "narrativeDirection": "Direcció narrativa: {direction}", + "envSetupComplete": "✓ Configuració de l'entorn completada, llest per simular", + "startSimCustomRounds": "Iniciant la simulació, rondes personalitzades: {rounds}", + "startSimAutoRounds": "Iniciant la simulació, rondes configurades automàticament: {rounds}", + "startGeneratingAgentProfiles": "Generant persones d'agent...", + "agentProfile": "→ Persona d'agent {current}/{total}: {name} ({profession})", + "allProfilesComplete": "✓ Totes les {count} persones d'agent generades", + "loadingExistingConfig": "Carregant dades de configuració existents...", + "loadedAgentProfiles": "Carregats {count} perfils d'agent", + "configLoadSuccess": "✓ Configuració de simulació carregada", + "configSummaryPostsAlt": " └─ Publicacions inicials: {count}", + "configGenerating": "Generant configuració, sondejant...", + "loadConfigFailed": "Error en carregar la configuració: {error}", + "step2Init": "Configuració de l'entorn del pas 2 inicialitzada", + "step3Init": "Execució de la simulació del pas 3 inicialitzada", + "startingDualSim": "Iniciant la simulació paral·lela en dues plataformes...", + "setMaxRounds": "Nombre màxim de rondes de simulació establert a: {rounds}", + "graphMemoryUpdateEnabled": "Actualització dinàmica de la memòria del graf activada", + "oldSimCleared": "✓ Registres de simulació antics eliminats, reiniciant la simulació", + "engineStarted": "✓ Motor de simulació iniciat correctament", + "startFailed": "✗ Error en iniciar: {error}", + "startException": "✗ Excepció en iniciar: {error}", + "stoppingSim": "Aturant la simulació...", + "simStoppedSuccess": "✓ Simulació aturada", + "stopFailed": "Error en aturar: {error}", + "stopException": "Excepció en aturar: {error}", + "allPlatformsCompleted": "✓ Totes les simulacions de plataforma han finalitzat", + "simCompleted": "✓ Simulació completada", + "reportRequestSent": "Sol·licitud de generació de l'informe enviada, espera...", + "startingReportGen": "Iniciant la generació de l'informe...", + "reportGenTaskStarted": "✓ Tasca de generació de l'informe iniciada: {reportId}", + "reportGenFailed": "✗ Error en iniciar la generació de l'informe: {error}", + "reportGenException": "✗ Excepció en la generació de l'informe: {error}", + "step5Init": "Interacció profunda del pas 5 inicialitzada", + "selectChatTarget": "Objectiu del xat seleccionat: {name}", + "sendFailed": "Error en enviar: {error}", + "sendToReportAgent": "Enviat a l'Agent d'informe: {message}...", + "reportAgentReplied": "L'Agent d'informe ha respost", + "sendToAgent": "Enviat a {name}: {message}...", + "agentReplied": "{name} ha respost", + "sendSurvey": "Enviant enquesta a {count} objectius...", + "receivedReplies": "Rebudes {count} respostes", + "surveySendFailed": "Error en enviar l'enquesta: {error}", + "loadReportData": "Carregant dades de l'informe: {id}", + "loadReportFailed": "Error en carregar l'informe: {error}", + "reportDataLoaded": "Dades de l'informe carregades", + "loadReportLogFailed": "Error en carregar els registres de l'informe: {error}", + "loadedProfiles": "Carregats {count} individus simulats", + "loadProfilesFailed": "Error en carregar els individus simulats: {error}", + "interactionViewInit": "InteractionView inicialitzat", + "reportViewInit": "ReportView inicialitzat", + "getReportInfoFailed": "Error en obtenir la informació de l'informe: {error}", + "enterStep": "Entrant al pas {step}: {name}", + "returnToStep": "Tornant al pas {step}: {name}", + "customSimRounds": "Rondes de simulació personalitzades: {rounds} rondes" + }, + "report": { + "taskStarted": "Tasca de generació de l'informe iniciada", + "planningStart": "Iniciant la planificació de l'esquema de l'informe", + "fetchSimContext": "Obtenint el context de simulació", + "planningComplete": "Planificació de l'esquema completada", + "sectionStart": "Iniciant la generació de la secció: {title}", + "reactThought": "Ronda ReACT {iteration} pensant", + "toolCall": "Cridant eina: {toolName}", + "toolResult": "L'eina {toolName} ha retornat el resultat", + "llmResponse": "Resposta del LLM (crides a eines: {hasToolCalls}, resposta final: {hasFinalAnswer})", + "sectionContentDone": "Generació del contingut de la secció {title} completada", + "sectionComplete": "Generació de la secció {title} completada", + "reportComplete": "Generació de l'informe completada", + "errorOccurred": "S'ha produït un error: {error}", + "agentInitDone": "ReportAgent inicialitzat: graph_id={graphId}, simulation_id={simulationId}", + "executingTool": "Executant eina: {toolName}, paràmetres: {params}", + "toolExecFailed": "Error en l'execució de l'eina: {toolName}, error: {error}", + "startPlanningOutline": "Iniciant la planificació de l'esquema de l'informe...", + "outlinePlanDone": "Planificació de l'esquema completada: {count} seccions", + "outlinePlanFailed": "Error en la planificació de l'esquema: {error}", + "reactGenerateSection": "ReACT generant secció: {title}", + "sectionIterNone": "Secció {title} iteració {iteration}: el LLM ha retornat None", + "sectionConflict": "Secció {title} ronda {iteration}: el LLM ha generat tant una crida a eina com una Resposta Final (conflicte #{conflictCount})", + "sectionConflictDowngrade": "Secció {title}: {conflictCount} conflictes consecutius, degradant per truncar i executar la primera crida a eina", + "sectionGenDone": "Generació de la secció {title} completada (crides a eines: {count})", + "multiToolOnlyFirst": "El LLM ha intentat {total} crides a eines, executant només la primera: {toolName}", + "sectionNoPrefix": "A la secció {title} li manca el prefix 'Final Answer:', adoptant la sortida del LLM com a contingut final (crides a eines: {count})", + "sectionMaxIter": "La secció {title} ha assolit el nombre màxim d'iteracions, forçant la generació", + "sectionForceFailed": "El LLM ha retornat None en forçar la finalització de la secció {title}, usant el missatge d'error per defecte", + "sectionGenFailedContent": "(Aquesta secció no s'ha pogut generar: el LLM ha retornat una resposta buida, torna-ho a intentar més tard)", + "outlineSavedToFile": "Esquema desat al fitxer: {reportId}/outline.json", + "sectionSaved": "Secció desada: {reportId}/section_{sectionNum}.md", + "reportGenDone": "Generació de l'informe completada: {reportId}", + "reportGenFailed": "Error en la generació de l'informe: {error}", + "agentChat": "Xat de l'Agent d'informe: {message}...", + "fetchReportFailed": "Error en obtenir el contingut de l'informe: {error}", + "outlineSaved": "Esquema desat: {reportId}", + "sectionFileSaved": "Secció desada: {reportId}/{fileSuffix}", + "fullReportAssembled": "Informe complet assemblat: {reportId}", + "reportSaved": "Informe desat: {reportId}", + "reportFolderDeleted": "Carpeta de l'informe eliminada: {reportId}", + "redirectToQuickSearch": "search_graph redirigit a quick_search", + "redirectToInsightForge": "get_simulation_context redirigit a insight_forge" + }, + "console": { + "zepToolsInitialized": "ZepToolsService inicialitzat", + "zepRetryAttempt": "Intent {attempt} de Zep {operation} fallat: {error}, tornant-ho a intentar en {delay}s...", + "zepAllRetriesFailed": "Zep {operation} ha fallat després de {retries} intents: {error}", + "graphSearch": "Cerca al graf: graph_id={graphId}, query={query}...", + "graphSearchOp": "Cerca al graf (graf={graphId})", + "searchComplete": "Cerca completada: {count} fets rellevants trobats", + "zepSearchApiFallback": "API de cerca de Zep fallida, recorrent a la cerca local: {error}", + "usingLocalSearch": "Usant la cerca local: query={query}...", + "localSearchComplete": "Cerca local completada: {count} fets rellevants trobats", + "localSearchFailed": "Error en la cerca local: {error}", + "fetchingAllNodes": "Obtenint tots els nodes del graf {graphId}...", + "fetchedNodes": "Obtinguts {count} nodes", + "fetchingAllEdges": "Obtenint totes les arestes del graf {graphId}...", + "fetchedEdges": "Obtingudes {count} arestes", + "fetchingNodeDetail": "Obtenint el detall del node: {uuid}...", + "fetchNodeDetailOp": "Obtenir detall del node (uuid={uuid}...)", + "fetchNodeDetailFailed": "Error en obtenir el detall del node: {error}", + "fetchingNodeEdges": "Obtenint les arestes del node {uuid}...", + "foundNodeEdges": "Trobades {count} arestes relacionades amb el node", + "fetchNodeEdgesFailed": "Error en obtenir les arestes del node: {error}", + "fetchingEntitiesByType": "Obtenint entitats de tipus {type}...", + "foundEntitiesByType": "Trobades {count} entitats de tipus {type}", + "fetchingEntitySummary": "Obtenint el resum de relacions de l'entitat {name}...", + "fetchingGraphStats": "Obtenint estadístiques del graf {graphId}...", + "fetchingSimContext": "Obtenint el context de simulació: {requirement}...", + "insightForgeStart": "Recuperació d'informació profunda InsightForge: {query}...", + "generatedSubQueries": "Generades {count} subconsultes", + "insightForgeComplete": "InsightForge completat: {facts} fets, {entities} entitats, {relationships} relacions", + "generateSubQueriesFailed": "Error en generar les subconsultes: {error}, usant les per defecte", + "panoramaSearchStart": "Cerca àmplia PanoramaSearch: {query}...", + "panoramaSearchComplete": "PanoramaSearch completat: {active} actius, {historical} històrics", + "quickSearchStart": "Cerca simple QuickSearch: {query}...", + "quickSearchComplete": "QuickSearch completat: {count} resultats", + "interviewAgentsStart": "Entrevista profunda InterviewAgents (API real): {requirement}...", + "profilesNotFound": "Perfils no trobats per a la simulació {simId}", + "loadedProfiles": "Carregats {count} perfils d'agent", + "selectedAgentsForInterview": "Seleccionats {count} agents per a l'entrevista: {indices}", + "generatedInterviewQuestions": "Generades {count} preguntes d'entrevista", + "callingBatchInterviewApi": "Cridant l'API d'entrevista en lot (doble plataforma): {count} agents", + "interviewApiReturned": "L'API d'entrevista ha retornat: {count} resultats, èxit={success}", + "interviewApiReturnedFailure": "L'API d'entrevista ha retornat un error: {error}", + "interviewApiCallFailed": "La crida a l'API d'entrevista ha fallat (l'entorn no s'executa?): {error}", + "interviewApiCallException": "Excepció en la crida a l'API d'entrevista: {error}", + "interviewAgentsComplete": "InterviewAgents completat: {count} agents entrevistats (doble plataforma)", + "loadedRedditProfiles": "Carregats {count} perfils de reddit_profiles.json", + "readRedditProfilesFailed": "Error en llegir reddit_profiles.json: {error}", + "loadedTwitterProfiles": "Carregats {count} perfils de twitter_profiles.csv", + "readTwitterProfilesFailed": "Error en llegir twitter_profiles.csv: {error}", + "llmSelectAgentFailed": "La selecció d'agents per LLM ha fallat, usant la selecció per defecte: {error}", + "generateInterviewQuestionsFailed": "Error en generar les preguntes d'entrevista: {error}", + "generateInterviewSummaryFailed": "Error en generar el resum de l'entrevista: {error}" + } +} diff --git a/locales/es.json b/locales/es.json new file mode 100644 index 00000000..5420f671 --- /dev/null +++ b/locales/es.json @@ -0,0 +1,665 @@ +{ + "common": { + "confirm": "Confirmar", + "cancel": "Cancelar", + "loading": "Cargando...", + "error": "Error", + "success": "Éxito", + "completed": "Completado", + "processing": "Generando", + "pending": "Pendiente", + "ready": "Listo", + "running": "Ejecutando", + "failed": "Falló", + "unknown": "Desconocido", + "unknownError": "Error desconocido", + "none": "Ninguno", + "close": "Cerrar", + "back": "Volver", + "next": "Siguiente", + "retry": "Reintentar", + "noData": "No hay datos disponibles", + "hours": "horas", + "minutes": "minutos", + "rounds": "rondas", + "items": "elementos", + "files": "archivos" + }, + "meta": { + "title": "MiroFish - Predecir Todo", + "description": "MiroFish - Sistema de simulación de opinión en redes sociales" + }, + "nav": { + "visitGithub": "Visita nuestra página de Github" + }, + "home": { + "tagline": "Motor de inteligencia colectiva simple y universal", + "version": "/ v0.1-Vista previa", + "heroTitle1": "Sube informes,", + "heroTitle2": "Predice el futuro", + "heroDesc": "A partir de un solo documento, {brand} extrae semillas de la realidad para generar automáticamente un mundo paralelo con hasta {agentScale}. Inyecta variables desde una perspectiva omnisciente para encontrar la {optimalSolution} en la dinámica compleja de grupos.", + "heroDescBrand": "MiroFish", + "heroDescAgentScale": "millones de Agentes", + "heroDescOptimalSolution": "\"óptimo local\"", + "slogan": "Que los Agentes ensayan el futuro, que las decisiones prevalezcan", + "systemStatus": "Estado del sistema", + "systemReady": "Listo", + "systemReadyDesc": "Motor de predicción en espera. Subí datos no estructurados para iniciar una secuencia de simulación.", + "metricLowCost": "Bajo costo", + "metricLowCostDesc": "Prom. $5/sim", + "metricHighAvail": "Escalable", + "metricHighAvailDesc": "Millones de Agentes", + "workflowSequence": "Flujo de trabajo", + "step01Title": "Construcción del grafo", + "step01Desc": "Extracción de semillas & Inyección de memoria & Construcción de GraphRAG", + "step02Title": "Configuración del entorno", + "step02Desc": "Extracción de entidades & Generación de personajes & Inyección de configuración de Agentes", + "step03Title": "Simulación", + "step03Desc": "Simulación paralela en dos plataformas & Análisis automático de requisitos & Memoria temporal", + "step04Title": "Informe", + "step04Desc": "ReportAgent interactúa con el entorno post-simulación mediante herramientas avanzadas", + "step05Title": "Interacción", + "step05Desc": "Conversa con cualquier individuo simulado & Interactúa con ReportAgent", + "realitySeed": "01 / Semilla de realidad", + "supportedFormats": "Formatos: PDF, MD, TXT", + "dragToUpload": "Arrastra archivos para subir", + "orBrowse": "o haz clic para explorar archivos", + "inputParams": "Parámetros de entrada", + "simulationPrompt": ">_ 02 / Prompt de simulación", + "promptPlaceholder": "// Describe tu requisito de simulación o predicción en lenguaje natural", + "engineBadge": "Motor: MiroFish-V1.0", + "startEngine": "Iniciar motor", + "initializing": "Inicializando..." + }, + "main": { + "layoutGraph": "Grafo", + "layoutSplit": "Doble columna", + "layoutWorkbench": "Área de trabajo", + "stepNames": ["Construcción del grafo", "Configuración del entorno", "Ejecutar simulación", "Generación de informe", "Interacción profunda"] + }, + "step1": { + "ontologyGeneration": "Generación de ontología", + "ontologyCompleted": "Completado", + "ontologyGenerating": "Generando", + "ontologyPending": "Pendiente", + "ontologyDesc": "El LLM analiza el contenido del documento y los requisitos de simulación, extrae semillas de la realidad y genera automáticamente la estructura ontológica adecuada", + "analyzingDocs": "Analizando documentos...", + "graphRagBuild": "Construcción de GraphRAG", + "graphRagDesc": "A partir de la ontología generada, los documentos se fragmentan automáticamente y se envían a Zep para construir un grafo de conocimiento, extrayendo entidades y relaciones, formando memoria temporal y resúmenes de comunidad", + "entityNodes": "Nodos de entidad", + "relationEdges": "Aristas de relación", + "schemaTypes": "Tipos de esquema", + "buildComplete": "Construcción completa", + "buildCompleteDesc": "La construcción del grafo está completa. Procedé al siguiente paso para configurar el entorno de simulación.", + "inProgress": "En progreso", + "creating": "Creando...", + "enterEnvSetup": "Entrar a configuración del entorno", + "createSimulationFailed": "Error al crear simulación: {error}", + "createSimulationException": "Excepción al crear simulación: {error}" + }, + "step2": { + "simInstanceInit": "Inicialización de instancia de simulación", + "simInstanceDesc": "Crear una nueva instancia de simulación y obtener plantillas de parámetros del mundo", + "asyncTaskDone": "Tarea asíncrona completada", + "generateAgentPersona": "Generar personajes de Agentes", + "generateAgentPersonaDesc": "Combina contexto para extraer automáticamente entidades y relaciones del grafo de conocimiento, inicializar individuos simulados y asignar comportamientos y memorias únicos basados en semillas de la realidad", + "currentAgentCount": "Agentes actuales", + "expectedAgentTotal": "Total esperado de Agentes", + "relatedTopicsCount": "Temas relacionados con la semilla", + "generatedAgentPersonas": "Personajes de Agentes generados", + "unknownProfession": "Profesión desconocida", + "noBio": "Sin biografía", + "dualPlatformConfig": "Generar configuración de doble plataforma", + "dualPlatformConfigDesc": "El LLM configura inteligentemente el flujo temporal del mundo, algoritmos de recomendación, horas activas de cada individuo, frecuencia de publicaciones, disparadores de eventos y más, basado en requisitos y semillas de la realidad", + "simulationDuration": "Duración de la simulación", + "roundDuration": "Duración por ronda", + "totalRounds": "Rondas totales", + "activePerHour": "Activos por hora", + "peakHours": "Horas pico", + "workHours": "Horario laboral", + "morningHours": "Horario matutino", + "offPeakHours": "Horas valle", + "agentConfig": "Configuración de Agentes", + "activeTimePeriod": "Horas activas", + "postsPerHour": "Publicaciones/hora", + "commentsPerHour": "Comentarios/hora", + "responseDelay": "Retraso de respuesta", + "activityLevel": "Nivel de actividad", + "sentimentBias": "Sesgo emocional", + "influenceWeight": "Influencia", + "recommendAlgoConfig": "Configuración de algoritmo de recomendación", + "platform1Name": "Plataforma 1: Plaza / Feed", + "platform2Name": "Plataforma 2: Tema / Comunidad", + "recencyWeight": "Peso de recencia", + "popularityWeight": "Peso de popularidad", + "relevanceWeight": "Peso de relevancia", + "viralThreshold": "Umbral viral", + "echoChamberStrength": "Intensidad de cámara de eco", + "llmConfigReasoning": "Razonamiento de configuración LLM", + "initialActivation": "Orquestación de activación inicial", + "initialActivationDesc": "Genera automáticamente eventos de activación iniciales y temas candentes basados en la dirección narrativa para guiar el estado inicial del mundo de simulación", + "orchestrating": "Orquestando", + "narrativeDirection": "Dirección narrativa", + "initialHotTopics": "Temas candentes iniciales", + "initialActivationSeq": "Secuencia de activación inicial ({count})", + "setupComplete": "Configuración completa", + "setupCompleteDesc": "El entorno de simulación está listo. Ahora puedes iniciar la simulación.", + "roundsConfig": "Configuración de rondas de simulación", + "roundsConfigDesc": "MiroFish planifica automáticamente simular {hours} horas del mundo real, cada ronda representa {minutesPerRound} minutos de tiempo transcurrido", + "customToggle": "Personalizado", + "roundsUnit": "rondas", + "estimatedDuration": "Para 100 Agentes: est. ~{minutes} minutos", + "estimatedDurationFull": "Para 100 Agentes: est. {minutes} minutos", + "recommendedRounds": "{rounds} (recomendado)", + "customTip": "Para primeras ejecuciones, recomendamos cambiar a 'Modo personalizado' para reducir rondas, obtener una vista previa rápida y disminuir el riesgo de errores", + "backToGraphBuild": "Volver a construcción del grafo", + "startDualWorldSim": "Iniciar simulación paralela de mundo dual", + "profileModalAge": "Edad aparente", + "profileModalGender": "Género aparente", + "profileModalCountry": "País/Región", + "profileModalMbti": "MBTI aparente", + "profileModalBio": "Biografía del personaje", + "profileModalTopics": "Temas relacionados con la semilla", + "profileModalPersona": "Antecedentes detallados del personaje", + "personaDimExperience": "Experiencia completa del evento", + "personaDimExperienceDesc": "Trayectoria conductual completa en este evento", + "personaDimBehavior": "Perfil conductual", + "personaDimBehaviorDesc": "Resumen de experiencia y preferencias conductuales", + "personaDimMemory": "Huella de memoria única", + "personaDimMemoryDesc": "Memorias formadas a partir de semillas de la realidad", + "personaDimSocial": "Red social", + "personaDimSocialDesc": "Conexiones individuales y grafo de interacción", + "genderMale": "Masculino", + "genderFemale": "Femenino", + "genderOther": "Otro", + "yearsOld": "años", + "initializing": "Inicializando", + "generating": "Generando" + }, + "step3": { + "startGenerateReport": "Generar informe", + "generatingReport": "Iniciando...", + "waitingForActions": "Esperando acciones de agentes...", + "errorMissingSimId": "Error: falta simulationId", + "startingDualSim": "Iniciando simulación paralela de doble plataforma...", + "graphMemoryUpdateEnabled": "Actualización dinámica de memoria del grafo habilitada", + "setMaxRounds": "Rondas máximas de simulación configuradas en: {rounds}", + "oldSimCleared": "Registros de simulación anteriores eliminados, reiniciando simulación", + "engineStarted": "Motor de simulación iniciado exitosamente", + "startFailed": "Error al iniciar: {error}", + "startException": "Excepción al iniciar: {error}", + "stoppingSim": "Deteniendo simulación...", + "simStopped": "Simulación detenida", + "stopFailed": "Error al detener: {error}", + "stopException": "Excepción al detener: {error}", + "allPlatformsCompleted": "Todas las simulaciones de plataforma han finalizado", + "simCompleted": "Simulación completada", + "graphRealtimeRefresh": "Actualización en tiempo real del grafo habilitada (30s)", + "graphRefreshStopped": "Actualización en tiempo real del grafo detenida", + "preparingGoBack": "Preparando para volver al Paso 2, cerrando simulación...", + "closingSimEnv": "Cerrando entorno de simulación...", + "simEnvClosed": "Entorno de simulación cerrado", + "closeFailed": "Error al cerrar el entorno de simulación, intentando detención forzada...", + "stoppingProcess": "Deteniendo proceso de simulación...", + "checkStatusFailed": "Error al verificar estado de simulación: {error}", + "forceStopSuccess": "Simulación detenida forzosamente", + "forceStopFailed": "Error en detención forzada: {error}", + "startGenerateReportBtn": "Generar informe", + "generatingReportBtn": "Iniciando..." + }, + "step4": { + "generatingSection": "Generando {title}...", + "goToInteraction": "Entrar a interacción profunda", + "waitingForReportAgent": "Esperando a Report Agent...", + "collapse": "Colapsar ▲", + "expandAll": "Mostrar todo {count} ▼", + "expandAllEntities": "Mostrar todo {count} ▼", + "scenarioLabel": "Escenario: ", + "tabKeyFacts": "Hechos clave ({count})", + "tabCoreEntities": "Entidades centrales ({count})", + "tabRelationChains": "Cadenas de relación ({count})", + "tabSubQueries": "Subconsultas ({count})", + "panelKeyFacts": "Últimos hechos clave de la memoria temporal", + "totalCount": "{count} total", + "totalEntityCount": "{count} total", + "panelCoreEntities": "Entidades centrales", + "factCount": "{count} hechos", + "panelRelationChains": "Cadenas de relación", + "panelSubQueries": "Subpreguntas de análisis de consulta derivada", + "emptyKeyFacts": "No hay hechos clave disponibles", + "emptyCoreEntities": "No hay entidades centrales disponibles", + "emptyRelationChains": "No hay cadenas de relación disponibles", + "tabActiveFacts": "Hechos activos ({count})", + "tabHistoricalFacts": "Hechos históricos ({count})", + "tabEntities": "Entidades ({count})", + "panelActiveFacts": "Hechos activos", + "emptyActiveFacts": "No hay hechos activos disponibles", + "panelHistoricalFacts": "Hechos históricos", + "emptyHistoricalFacts": "No hay hechos históricos disponibles", + "panelEntities": "Entidades", + "emptyEntities": "No hay entidades disponibles", + "searchLabel": "Buscar: ", + "tabFacts": "Hechos ({count})", + "tabEdges": "Aristas ({count})", + "tabNodes": "Nodos ({count})", + "panelSearchResults": "Resultados de búsqueda", + "emptySearchResults": "No se encontraron resultados", + "panelRelatedEdges": "Aristas relacionadas", + "panelRelatedNodes": "Nodos relacionados", + "world1": "Mundo 1", + "world2": "Mundo 2" + }, + "step5": { + "interactiveTools": "Herramientas interactivas", + "agentsAvailable": "{count} agentes disponibles", + "chatWithReportAgent": "Chat con Report Agent", + "chatWithAgent": "Chat con cualquier individuo del mundo", + "selectChatTarget": "Seleccionar interlocutor", + "sendSurvey": "Enviar encuesta al mundo", + "reportAgentChat": "Report Agent - Chat", + "reportAgentDesc": "Versión conversacional del agente generador de informes con acceso a 4 herramientas profesionales y la memoria completa de MiroFish", + "toolInsightForge": "InsightForge Atribución Profunda", + "toolInsightForgeDesc": "Alinea datos de semillas del mundo real con el estado de simulación, combinando Memoria Global/Local para análisis de atribución profunda trans-temporal", + "toolPanoramaSearch": "PanoramaSearch Seguimiento Completo", + "toolPanoramaSearchDesc": "Algoritmo BFS basado en grafos que reconstruye rutas de propagación de eventos, capturando la topología completa del flujo de información", + "toolQuickSearch": "QuickSearch Recuperación Rápida", + "toolQuickSearchDesc": "Interfaz de consulta instantánea basada en GraphRAG con indexación optimizada para extracción rápida de atributos de nodos y hechos discretos", + "toolInterviewSubAgent": "InterviewSubAgent Entrevista Virtual", + "toolInterviewSubAgentDesc": "Entrevistas autónomas que realizan diálogos paralelos multi-ronda con individuos simulados, recopilando datos de opinión no estructurados y estados psicológicos", + "profileBio": "Biografía", + "chatEmptyReportAgent": "Chateá con Report Agent para explorar el contenido del informe en profundidad", + "chatEmptyAgent": "Chateá con individuos simulados para comprender sus perspectivas", + "chatInputPlaceholder": "Escribí tu pregunta...", + "selectSurveyTarget": "Seleccionar objetivos de encuesta", + "selectedCount": "Seleccionados {selected} / {total}", + "surveyQuestions": "Preguntas de encuesta", + "surveyInputPlaceholder": "Ingresá la pregunta que deseás enviar a todos los objetivos seleccionados...", + "submitSurvey": "Enviar encuesta", + "surveyResults": "Resultados de encuesta", + "surveyResultsCount": "{count} respuestas", + "selectAll": "Seleccionar todo", + "clearSelection": "Limpiar selección", + "errorOccurred": "Lo sentimos, ocurrió un error: {error}", + "noResponse": "Sin respuesta", + "requestFailed": "Solicitud fallida", + "selectAgentFirst": "Por favor, seleccioná primero un individuo simulado" + }, + "graph": { + "panelTitle": "Visualización de relaciones del grafo", + "refreshGraph": "Actualizar grafo", + "graphMemoryRealtime": "Memoria de corto/largo plazo de GraphRAG actualizándose en tiempo real", + "realtimeUpdating": "Actualizándose en tiempo real...", + "pendingContentHint": "Parte del contenido aún se está procesando. Considerá actualizar el grafo manualmente más tarde.", + "nodeDetails": "Detalles del nodo", + "relationship": "Relación", + "graphDataLoading": "Cargando datos del grafo...", + "waitingOntology": "Esperando generación de ontología...", + "toggleMaximize": "Maximizar/Restaurar", + "closeHint": "Cerrar sugerencia" + }, + "history": { + "title": "Historial de simulaciones", + "graphBuild": "Construcción del grafo", + "envSetup": "Configuración del entorno", + "analysisReport": "Informe de análisis", + "moreFiles": "+{count} archivos", + "noFiles": "Sin archivos", + "loadingText": "Cargando...", + "simRequirement": "Requisito de simulación", + "relatedFiles": "Archivos relacionados", + "noRelatedFiles": "Sin archivos relacionados", + "replayTitle": "Reproducción de simulación", + "step1Button": "Construcción del grafo", + "step2Button": "Configuración del entorno", + "step4Button": "Informe de análisis", + "replayHint": "El Paso 3 'Ejecutar simulación' y el Paso 5 'Interacción profunda' deben iniciarse durante la ejecución y no soportan reproducción histórica", + "notStarted": "Sin iniciar", + "roundsProgress": "{current}/{total} rondas", + "untitledSimulation": "Simulación sin título", + "unknownFile": "Archivo desconocido" + }, + "api": { + "projectNotFound": "Proyecto no encontrado: {id}", + "projectDeleteFailed": "Proyecto no encontrado o error al eliminar: {id}", + "projectDeleted": "Proyecto eliminado: {id}", + "projectReset": "Proyecto reiniciado: {id}", + "requireSimulationRequirement": "Por favor, proporcioná un requisito de simulación (simulation_requirement)", + "requireFileUpload": "Por favor, subí al menos un archivo de documento", + "noDocProcessed": "Ningún documento se procesó exitosamente. Por favor, verificá los formatos de archivo.", + "requireProjectId": "Por favor, proporcioná project_id", + "configError": "Error de configuración: {details}", + "zepApiKeyMissing": "ZEP_API_KEY no configurada", + "ontologyNotGenerated": "Ontología aún no generada. Por favor, llamá a /ontology/generate primero.", + "graphBuilding": "Construcción del grafo en progreso. No reenvíes. Para forzar reconstrucción, agregá force: true.", + "textNotFound": "Contenido de texto extraído no encontrado", + "ontologyNotFound": "Definición de ontología no encontrada", + "graphBuildStarted": "Tarea de construcción del grafo iniciada. Consultá progreso vía /task/{taskId}.", + "graphBuildComplete": "Construcción del grafo completa", + "buildFailed": "Construcción falló: {error}", + "taskNotFound": "Tarea no encontrada: {id}", + "graphDeleted": "Grafo eliminado: {id}", + "entityNotFound": "Entidad no encontrada: {id}", + "graphNotBuilt": "Grafo aún no construido. Por favor, llamá a /api/graph/build primero.", + "requireSimulationId": "Por favor, proporcioná simulation_id", + "simulationNotFound": "Simulación no encontrada: {id}", + "projectMissingRequirement": "Proyecto sin requisito de simulación (simulation_requirement)", + "prepareStarted": "Tarea de preparación iniciada. Consultá progreso vía /api/simulation/prepare/status.", + "alreadyPrepared": "Preparación ya completada. No es necesario regenerar.", + "notStartedPrepare": "Preparación no iniciada. Por favor, llamá a /api/simulation/prepare.", + "taskCompletedPrepared": "Tarea completada (preparación ya existente)", + "requireTaskOrSimId": "Por favor, proporcioná task_id o simulation_id", + "configNotFound": "Configuración de simulación no encontrada. Por favor, llamá a /prepare primero.", + "configFileNotFound": "Archivo de configuración no encontrado. Por favor, llamá a /prepare primero.", + "unknownScript": "Script desconocido: {name}. Disponibles: {allowed}", + "scriptFileNotFound": "Archivo de script no encontrado: {name}", + "requireGraphId": "Por favor, proporcioná graph_id", + "noMatchingEntities": "No se encontraron entidades coincidentes", + "maxRoundsPositive": "max_rounds debe ser un entero positivo", + "maxRoundsInvalid": "max_rounds debe ser un entero válido", + "invalidPlatform": "Tipo de plataforma inválido: {platform}. Opciones: twitter/reddit/parallel", + "simRunningForceHint": "La simulación está en ejecución. Detenla primero vía /stop, o usa force=true para reiniciar.", + "simNotReady": "Simulación no lista. Estado actual: {status}. Por favor, llamá a /prepare primero.", + "graphIdRequiredForMemory": "La actualización de memoria del grafo requiere un graph_id válido. Asegurate de que el grafo esté construido.", + "dbNotExist": "La base de datos no existe. La simulación puede no haberse ejecutado aún.", + "requireMessage": "Por favor, proporcioná un mensaje", + "missingGraphId": "Falta el ID del grafo", + "missingGraphIdEnsure": "Falta el ID del grafo. Por favor, asegurate de que el grafo haya sido construido.", + "missingSimRequirement": "Falta la descripción del requisito de simulación", + "reportAlreadyExists": "El informe ya existe", + "reportGenerateStarted": "Tarea de generación de informe iniciada. Consultá progreso vía /api/report/generate/status.", + "reportGenerated": "Informe generado", + "reportNotFound": "Informe no encontrado: {id}", + "noReportForSim": "No se encontró informe para esta simulación: {id}", + "reportDeleted": "Informe eliminado: {id}", + "reportGenerateFailed": "Generación de informe falló", + "sectionNotFound": "Sección no encontrada: section_{index}.md", + "reportProgressNotAvail": "Informe no encontrado o progreso no disponible: {id}", + "requireAgentId": "Por favor, proporcioná agent_id", + "requirePrompt": "Por favor, proporcioná un prompt (pregunta de entrevista)", + "invalidInterviewPlatform": "La plataforma debe ser 'twitter' o 'reddit'", + "envNotRunning": "Entorno de simulación no ejecutándose o cerrado. Asegurate de que la simulación esté completa y en modo espera de comandos.", + "interviewTimeout": "Tiempo de espera de respuesta de entrevista agotado: {error}", + "requireInterviews": "Por favor, proporcioná entrevistas (lista de entrevistas)", + "interviewListMissingAgentId": "Elemento {index} de la lista de entrevistas: falta agent_id", + "interviewListMissingPrompt": "Elemento {index} de la lista de entrevistas: falta prompt", + "interviewListInvalidPlatform": "Elemento {index} de la lista de entrevistas: plataforma debe ser 'twitter' o 'reddit'", + "batchInterviewTimeout": "Tiempo de espera de respuesta de entrevista por lote agotado: {error}", + "globalInterviewTimeout": "Tiempo de espera de respuesta de entrevista global agotado: {error}", + "envRunning": "El entorno está en ejecución y listo para comandos de entrevista", + "envNotRunningShort": "Entorno no ejecutándose o cerrado", + "requireGraphIdAndQuery": "Por favor, proporcioná graph_id y query", + "initReportAgent": "Inicializando Report Agent..." + }, + "progress": { + "initGraphService": "Inicializando servicio de construcción del grafo...", + "textChunking": "Fragmentando texto...", + "creatingZepGraph": "Creando grafo en Zep...", + "settingOntology": "Configurando definición de ontología...", + "addingChunks": "Agregando {count} fragmentos de texto...", + "waitingZepProcess": "Esperando que Zep procese los datos...", + "fetchingGraphData": "Obteniendo datos del grafo...", + "graphBuildComplete": "Construcción del grafo completa", + "buildFailed": "Construcción falló: {error}", + "startBuildingGraph": "Iniciando construcción del grafo...", + "graphCreated": "Grafo creado: {graphId}", + "ontologySet": "Ontología configurada", + "textSplit": "Texto dividido en {count} fragmentos", + "fetchingGraphInfo": "Obteniendo información del grafo...", + "sendingBatch": "Enviando lote {current}/{total} ({chunks} fragmentos)...", + "batchFailed": "Lote {batch} falló: {error}", + "noEpisodesWait": "No hay episodios para esperar", + "waitingEpisodes": "Esperando que {count} fragmentos de texto se procesen...", + "episodesTimeout": "Algunos fragmentos excedieron el tiempo de espera, {completed}/{total} completados", + "zepProcessing": "Zep procesando... {completed}/{total} completados, {pending} pendientes ({elapsed}s)", + "processingComplete": "Procesamiento completo: {completed}/{total}", + "taskComplete": "Tarea completa", + "taskFailed": "Tarea falló", + "startPreparingEnv": "Preparando entorno de simulación...", + "connectingZepGraph": "Conectando al grafo de Zep...", + "readingNodeData": "Leyendo datos de nodos...", + "readingComplete": "Listo, {count} entidades encontradas", + "startGenerating": "Iniciando generación...", + "analyzingRequirements": "Analizando requisitos de simulación...", + "generatingOutline": "Generando esquema del informe...", + "parsingOutline": "Analizando estructura del esquema...", + "outlinePlanComplete": "Planificación del esquema completa", + "deepSearchAndWrite": "Búsqueda profunda & escritura ({current}/{max})", + "initReport": "Inicializando informe...", + "startPlanningOutline": "Planificando esquema del informe...", + "outlineDone": "Esquema completo, {count} secciones", + "generatingSection": "Generando sección: {title} ({current}/{total})", + "sectionDone": "Sección {title} completa", + "assemblingReport": "Ensamblando informe completo...", + "reportComplete": "Generación de informe completa", + "reportFailed": "Generación de informe falló: {error}", + "savingProfiles": "Guardando archivos de perfil...", + "profilesComplete": "Listo, {count} perfiles generados", + "callingLLMConfig": "Llamando al LLM para generar configuración...", + "savingConfigFiles": "Guardando archivos de configuración...", + "configComplete": "Generación de configuración completa", + "generatingTimeConfig": "Generando configuración temporal...", + "generatingEventConfig": "Generando configuración de eventos y temas candentes...", + "generatingAgentConfig": "Generando configuración de agentes ({start}-{end}/{total})...", + "generatingPlatformConfig": "Generando configuración de plataforma...", + "zepSearchQuery": "Toda la información, actividades, eventos, relaciones y antecedentes sobre {name}", + "timeConfigLabel": "Configuración temporal", + "eventConfigLabel": "Configuración de eventos", + "agentConfigResult": "Configuración de Agentes: {count} generados", + "postAssignResult": "Asignación de publicaciones: {count} publicaciones asignadas", + "profileGenerated": "[Generado] {name} ({type})", + "readingGraphEntities": "Leyendo entidades del grafo", + "generatingProfiles": "Generando perfiles de Agentes", + "generatingSimConfig": "Generando configuración de simulación", + "preparingScripts": "Preparando scripts" + }, + "log": { + "preparingGoBack": "Preparando para volver al Paso 2, cerrando simulación...", + "closingSimEnv": "Cerrando entorno de simulación...", + "simEnvClosed": "✓ Entorno de simulación cerrado", + "closeSimEnvFailed": "Error al cerrar entorno de simulación, intentando detención forzada...", + "simForceStopSuccess": "✓ Simulación detenida forzosamente", + "forceStopFailed": "Detención forzada falló: {error}", + "stoppingSimProcess": "Deteniendo proceso de simulación...", + "simStopped": "✓ Simulación detenida", + "stopSimFailed": "Error al detener simulación: {error}", + "checkStatusFailed": "Error al verificar estado de simulación: {error}", + "enterStep4": "Entrando al Paso 4: Generación de informe", + "loadingSimData": "Cargando datos de simulación: {id}", + "timeConfig": "Configuración temporal: {minutes} minutos por ronda", + "timeConfigFetchFailed": "Error al obtener configuración temporal, usando valor por defecto: {minutes} min/ronda", + "projectLoadSuccess": "Proyecto cargado: {id}", + "loadSimDataFailed": "Error al cargar datos de simulación: {error}", + "loadException": "Error de carga: {error}", + "graphDataLoadSuccess": "Datos del grafo cargados exitosamente", + "graphLoadFailed": "Carga del grafo falló: {error}", + "graphRealtimeRefreshStart": "Actualización en tiempo real del grafo habilitada (30s)", + "graphRealtimeRefreshStop": "Actualización en tiempo real del grafo detenida", + "simRunViewInit": "SimulationRunView inicializada", + "customRounds": "Rondas de simulación personalizadas: {rounds}", + "enterStep3": "Entrando al Paso 3: Ejecutar simulación", + "customRoundsConfig": "Rondas de simulación personalizadas: {rounds} rondas", + "useAutoRounds": "Usando rondas de simulación auto-configuradas", + "detectedSimEnvRunning": "Se detectó entorno de simulación en ejecución, cerrando...", + "closeSimEnvFailedWithError": "Error al cerrar entorno de simulación: {error}", + "closeSimEnvException": "Excepción al cerrar entorno de simulación: {error}", + "detectedSimRunning": "Se detectó simulación en ejecución, deteniendo...", + "forceStopSimFailed": "Detención forzada de simulación falló: {error}", + "forceStopSimException": "Excepción en detención forzada de simulación: {error}", + "simViewInit": "SimulationView inicializada", + "errorMissingSimId": "Error: falta simulationId", + "simInstanceCreated": "Instancia de simulación creada: {id}", + "preparingSimEnv": "Preparando entorno de simulación...", + "detectedExistingPrep": "Se detectó preparación existente, utilizándola directamente", + "prepareTaskStarted": "Tarea de preparación iniciada", + "prepareTaskId": " └─ ID de tarea: {taskId}", + "zepEntitiesFound": "Se encontraron {count} entidades del grafo de Zep", + "entityTypes": " └─ Tipos de entidad: {types}", + "startPollingProgress": "Consultando progreso de preparación...", + "prepareFailed": "Preparación falló: {error}", + "prepareException": "Excepción en preparación: {error}", + "prepareComplete": "✓ Preparación completa", + "prepareFailedWithError": "✗ Preparación falló: {error}", + "startGeneratingConfig": "Generando configuración de simulación de doble plataforma...", + "generatingAgentProfileConfig": "Generando configuración de personajes de agentes...", + "generatingLLMConfig": "Llamando al LLM para generar parámetros de configuración de simulación...", + "configComplete": "✓ Configuración de simulación generada", + "configSummaryAgents": " ├─ Agentes: {count}", + "configSummaryHours": " ├─ Duración: {hours} horas", + "configSummaryPosts": " ├─ Publicaciones iniciales: {count}", + "configSummaryTopics": " ├─ Temas candentes: {count}", + "configSummaryPlatforms": " └─ Plataformas: Twitter {twitter}, Reddit {reddit}", + "timeConfigDetail": "Configuración temporal: {minutes} min/ronda, {rounds} rondas totales", + "narrativeDirection": "Dirección narrativa: {direction}", + "envSetupComplete": "✓ Configuración del entorno completa, listo para simular", + "startSimCustomRounds": "Iniciando simulación, rondas personalizadas: {rounds}", + "startSimAutoRounds": "Iniciando simulación, rondas auto-configuradas: {rounds}", + "startGeneratingAgentProfiles": "Generando personajes de agentes...", + "agentProfile": "→ Personaje de agente {current}/{total}: {name} ({profession})", + "allProfilesComplete": "✓ Todos los {count} personajes de agentes generados", + "loadingExistingConfig": "Cargando datos de configuración existentes...", + "loadedAgentProfiles": "Se cargaron {count} personajes de agentes", + "configLoadSuccess": "✓ Configuración de simulación cargada", + "configSummaryPostsAlt": " └─ Publicaciones iniciales: {count}", + "configGenerating": "Configuración generándose, consultando...", + "loadConfigFailed": "Error al cargar configuración: {error}", + "step2Init": "Paso 2: configuración del entorno inicializada", + "step3Init": "Paso 3: ejecución de simulación inicializada", + "startingDualSim": "Iniciando simulación paralela de doble plataforma...", + "setMaxRounds": "Rondas máximas de simulación configuradas en: {rounds}", + "graphMemoryUpdateEnabled": "Actualización dinámica de memoria del grafo habilitada", + "oldSimCleared": "✓ Registros de simulación anteriores eliminados, reiniciando simulación", + "engineStarted": "✓ Motor de simulación iniciado exitosamente", + "startFailed": "✗ Error al iniciar: {error}", + "startException": "✗ Excepción al iniciar: {error}", + "stoppingSim": "Deteniendo simulación...", + "simStoppedSuccess": "✓ Simulación detenida", + "stopFailed": "Error al detener: {error}", + "stopException": "Excepción al detener: {error}", + "allPlatformsCompleted": "✓ Todas las simulaciones de plataforma han finalizado", + "simCompleted": "✓ Simulación completada", + "reportRequestSent": "Solicitud de generación de informe enviada, por favor esperá...", + "startingReportGen": "Iniciando generación de informe...", + "reportGenTaskStarted": "✓ Tarea de generación de informe iniciada: {reportId}", + "reportGenFailed": "✗ Error al iniciar generación de informe: {error}", + "reportGenException": "✗ Excepción en generación de informe: {error}", + "step5Init": "Paso 5: interacción profunda inicializada", + "selectChatTarget": "Interlocutor seleccionado: {name}", + "sendFailed": "Envío falló: {error}", + "sendToReportAgent": "Enviado a Report Agent: {message}...", + "reportAgentReplied": "Report Agent respondió", + "sendToAgent": "Enviado a {name}: {message}...", + "agentReplied": "{name} respondió", + "sendSurvey": "Enviando encuesta a {count} objetivos...", + "receivedReplies": "Se recibieron {count} respuestas", + "surveySendFailed": "Envío de encuesta falló: {error}", + "loadReportData": "Cargando datos del informe: {id}", + "loadReportFailed": "Error al cargar informe: {error}", + "reportDataLoaded": "Datos del informe cargados", + "loadReportLogFailed": "Error al cargar registros del informe: {error}", + "loadedProfiles": "Se cargaron {count} individuos simulados", + "loadProfilesFailed": "Error al cargar individuos simulados: {error}", + "interactionViewInit": "InteractionView inicializada", + "reportViewInit": "ReportView inicializada", + "getReportInfoFailed": "Error al obtener información del informe: {error}", + "enterStep": "Entrando al Paso {step}: {name}", + "returnToStep": "Volviendo al Paso {step}: {name}", + "customSimRounds": "Rondas de simulación personalizadas: {rounds} rondas" + }, + "report": { + "taskStarted": "Tarea de generación de informe iniciada", + "planningStart": "Iniciando planificación del esquema del informe", + "fetchSimContext": "Obteniendo contexto de simulación", + "planningComplete": "Planificación del esquema completa", + "sectionStart": "Iniciando generación de sección: {title}", + "reactThought": "ReACT ronda {iteration} pensando", + "toolCall": "Llamando herramienta: {toolName}", + "toolResult": "Herramienta {toolName} devolvió resultado", + "llmResponse": "Respuesta del LLM (llamadas a herramientas: {hasToolCalls}, respuesta final: {hasFinalAnswer})", + "sectionContentDone": "Generación de contenido de sección {title} completa", + "sectionComplete": "Generación de sección {title} completa", + "reportComplete": "Generación de informe completa", + "errorOccurred": "Ocurrió un error: {error}", + "agentInitDone": "ReportAgent inicializado: graph_id={graphId}, simulation_id={simulationId}", + "executingTool": "Ejecutando herramienta: {toolName}, parámetros: {params}", + "toolExecFailed": "Ejecución de herramienta falló: {toolName}, error: {error}", + "startPlanningOutline": "Iniciando planificación del esquema del informe...", + "outlinePlanDone": "Planificación del esquema completa: {count} secciones", + "outlinePlanFailed": "Planificación del esquema falló: {error}", + "reactGenerateSection": "ReACT generando sección: {title}", + "sectionIterNone": "Sección {title} iteración {iteration}: el LLM devolvió None", + "sectionConflict": "Sección {title} ronda {iteration}: el LLM produjo tanto llamada a herramienta como respuesta final (conflicto #{conflictCount})", + "sectionConflictDowngrade": "Sección {title}: {conflictCount} conflictos consecutivos, degradando para truncar y ejecutar primera llamada a herramienta", + "sectionGenDone": "Generación de sección {title} completa (llamadas a herramientas: {count})", + "multiToolOnlyFirst": "El LLM intentó {total} llamadas a herramientas, ejecutando solo la primera: {toolName}", + "sectionNoPrefix": "Sección {title} sin prefijo 'Final Answer:', adoptando salida del LLM como contenido final (llamadas a herramientas: {count})", + "sectionMaxIter": "Sección {title} alcanzó iteraciones máximas, forzando generación", + "sectionForceFailed": "Sección {title}: LLM de finalización forzada devolvió None, usando mensaje de error por defecto", + "sectionGenFailedContent": "(Esta sección falló al generar: el LLM devolvió una respuesta vacía, por favor reintentá más tarde)", + "outlineSavedToFile": "Esquema guardado en archivo: {reportId}/outline.json", + "sectionSaved": "Sección guardada: {reportId}/section_{sectionNum}.md", + "reportGenDone": "Generación de informe completa: {reportId}", + "reportGenFailed": "Generación de informe falló: {error}", + "agentChat": "Chat de Report Agent: {message}...", + "fetchReportFailed": "Error al obtener contenido del informe: {error}", + "outlineSaved": "Esquema guardado: {reportId}", + "sectionFileSaved": "Sección guardada: {reportId}/{fileSuffix}", + "fullReportAssembled": "Informe completo ensamblado: {reportId}", + "reportSaved": "Informe guardado: {reportId}", + "reportFolderDeleted": "Carpeta de informe eliminada: {reportId}", + "redirectToQuickSearch": "search_graph redirigido a quick_search", + "redirectToInsightForge": "get_simulation_context redirigido a insight_forge" + }, + "console": { + "zepToolsInitialized": "ZepToolsService inicializado", + "zepRetryAttempt": "Zep {operation} intento {attempt} falló: {error}, reintentando en {delay}s...", + "zepAllRetriesFailed": "Zep {operation} falló después de {retries} intentos: {error}", + "graphSearch": "Búsqueda en grafo: graph_id={graphId}, query={query}...", + "graphSearchOp": "Búsqueda en grafo (grafo={graphId})", + "searchComplete": "Búsqueda completa: se encontraron {count} hechos relevantes", + "zepSearchApiFallback": "API de búsqueda de Zep falló, retrocediendo a búsqueda local: {error}", + "usingLocalSearch": "Usando búsqueda local: query={query}...", + "localSearchComplete": "Búsqueda local completa: se encontraron {count} hechos relevantes", + "localSearchFailed": "Búsqueda local falló: {error}", + "fetchingAllNodes": "Obteniendo todos los nodos del grafo {graphId}...", + "fetchedNodes": "Se obtuvieron {count} nodos", + "fetchingAllEdges": "Obteniendo todas las aristas del grafo {graphId}...", + "fetchedEdges": "Se obtuvieron {count} aristas", + "fetchingNodeDetail": "Obteniendo detalle del nodo: {uuid}...", + "fetchNodeDetailOp": "Obtener detalle del nodo (uuid={uuid}...)", + "fetchNodeDetailFailed": "Error al obtener detalle del nodo: {error}", + "fetchingNodeEdges": "Obteniendo aristas del nodo {uuid}...", + "foundNodeEdges": "Se encontraron {count} aristas relacionadas al nodo", + "fetchNodeEdgesFailed": "Error al obtener aristas del nodo: {error}", + "fetchingEntitiesByType": "Obteniendo entidades de tipo {type}...", + "foundEntitiesByType": "Se encontraron {count} entidades de tipo {type}", + "fetchingEntitySummary": "Obteniendo resumen de relaciones para entidad {name}...", + "fetchingGraphStats": "Obteniendo estadísticas del grafo {graphId}...", + "fetchingSimContext": "Obteniendo contexto de simulación: {requirement}...", + "insightForgeStart": "InsightForge recuperación de insights profundos: {query}...", + "generatedSubQueries": "Se generaron {count} subconsultas", + "insightForgeComplete": "InsightForge completo: {facts} hechos, {entities} entidades, {relationships} relaciones", + "generateSubQueriesFailed": "Error al generar subconsultas: {error}, usando valores por defecto", + "panoramaSearchStart": "PanoramaSearch búsqueda amplia: {query}...", + "panoramaSearchComplete": "PanoramaSearch completo: {active} activos, {historical} históricos", + "quickSearchStart": "QuickSearch búsqueda simple: {query}...", + "quickSearchComplete": "QuickSearch completo: {count} resultados", + "interviewAgentsStart": "InterviewAgents entrevista profunda (API real): {requirement}...", + "profilesNotFound": "Perfiles no encontrados para simulación {simId}", + "loadedProfiles": "Se cargaron {count} perfiles de agentes", + "selectedAgentsForInterview": "Se seleccionaron {count} agentes para entrevista: {indices}", + "generatedInterviewQuestions": "Se generaron {count} preguntas de entrevista", + "callingBatchInterviewApi": "Llamando API de entrevista por lote (doble plataforma): {count} agentes", + "interviewApiReturned": "API de entrevista devolvió: {count} resultados, éxito={success}", + "interviewApiReturnedFailure": "API de entrevista devolvió fallo: {error}", + "interviewApiCallFailed": "Llamada a API de entrevista falló (¿entorno no ejecutándose?): {error}", + "interviewApiCallException": "Excepción en llamada a API de entrevista: {error}", + "interviewAgentsComplete": "InterviewAgents completo: se entrevistaron {count} agentes (doble plataforma)", + "loadedRedditProfiles": "Se cargaron {count} perfiles de reddit_profiles.json", + "readRedditProfilesFailed": "Error al leer reddit_profiles.json: {error}", + "loadedTwitterProfiles": "Se cargaron {count} perfiles de twitter_profiles.csv", + "readTwitterProfilesFailed": "Error al leer twitter_profiles.csv: {error}", + "llmSelectAgentFailed": "Selección de agente por LLM falló, usando selección por defecto: {error}", + "generateInterviewQuestionsFailed": "Error al generar preguntas de entrevista: {error}", + "generateInterviewSummaryFailed": "Error al generar resumen de entrevista: {error}" + } +} \ No newline at end of file diff --git a/locales/languages.json b/locales/languages.json index 81732cec..bdbf9797 100644 --- a/locales/languages.json +++ b/locales/languages.json @@ -26,5 +26,9 @@ "de": { "label": "Deutsch", "llmInstruction": "Bitte antworten Sie auf Deutsch." + }, + "ca": { + "label": "Català", + "llmInstruction": "Si us plau, respon en català." } }