Frontend (.vue, .js, .ts):
- All Chinese in HTML comments, JS comments, CSS comments translated
- All hardcoded Chinese UI strings (titles, alerts, console errors) translated
- The few remaining Chinese fragments in Step2EnvSetup.vue (4) and
Step4Report.vue (77) are intentional: stage-name identifiers that
must match what the backend emits, and LLM-output parser patterns
that match Chinese section headers in the LLM response.
Backend (Python):
- All # comments, """ and ''' docstrings translated
- All log/print/raise/error message strings translated
- All LLM system prompts (ONTOLOGY_SYSTEM_PROMPT, _PROMPT, _INSTRUCTION,
_TEMPLATE, _TASK_PROMPT, _EXTRACTOR, _PLANNER, _REPORTER, _SUMMARY,
_OUTLINE, _SYNTHESIS, _REWRITE, _SEARCH_PROMPT, _INTERVIEW, _REFLECTION,
_REACT, _ROLE, _CONTEXT, _GUIDELINES, _AGENT, _MESSAGE, _EXAMPLE,
_SYNTHESIZER, _WRITER, _CRITIQUE, _REVISION, _FEEDBACK, _PERSONA,
_FORMAT, _JUDGE, _ROUTER, _SECTION_PLANNER, _PARSER, _EXTRACT,
_RATIONALE variables) translated
- stage-name string literals in zep_graph_memory_updater.py (return
values used as Zep episode content) translated
- LLM-output parser patterns in zep_tools.py and report_agent.py
(e.g. text.match(/分析问题:/) and section headers like
'### 【关键事实】') kept as Chinese, because they match the
LLM's output format.
i18n:
- locales/zh.json: kept as source of truth for Chinese strings
- locales/en.json: kept (was already a complete English translation)
- locales/nl.json: NEW — full Dutch (Nederlands) translation of
en.json (633 leaf keys, all interpolation placeholders preserved)
- locales/languages.json: added 'nl' entry with label 'Nederlands'
and llmInstruction 'Antwoord in het Nederlands.'
Frontend i18n config:
- frontend/src/i18n/index.js: default locale changed from 'zh' to 'nl',
fallback locale from 'zh' to 'en'. Dutch is now the default UI
language; English is the fallback.
Misc:
- package.json: description translated
- docker-compose.yml: inline comment translated
- README.md / README-ZH.md / locales/zh.json / locales/languages.json:
Chinese content intentionally preserved (bilingual readme pointers
and language-metadata source of truth)
Files: 59 changed, +6810 / -6102
Co-authored-by: hermes <hermes@profikid.nl>
- Add return type annotation (list[str]) to Config.validate()
- Add type annotations (msg: str, -> None) to logger convenience functions
- Add FileParser.is_supported() classmethod for checking file format support
Background threads (graph building, simulation prep, report generation,
profile generation) now inherit the requesting user's locale preference.
Previously these fell back to 'zh' because Flask request context was
unavailable in spawned threads.
- Updated README.md to include new simulation scripts and configuration details for OASIS, including API retry mechanisms and environment variable settings.
- Added simulation management and configuration generation services to streamline the simulation process across Twitter and Reddit platforms.
- Introduced new API routes for simulation-related operations, including entity retrieval and simulation status management.
- Implemented a robust retry mechanism for external API calls to improve system stability.
- Enhanced task management model to include detailed progress tracking.
- Added logging capabilities for action tracking during simulations.
- Included new scripts for running parallel simulations and testing profile formats.
- Updated `run.py` to conditionally print startup information only in the reloader process to avoid duplicate logs in debug mode.
- Modified `__init__.py` to log startup and completion messages based on the reloader process condition.
- Added warnings suppression in `graph_builder.py` for Pydantic v2 regarding Field usage.
- Revised `ontology_generator.py` to enforce strict design guidelines for entity types and relationships, ensuring compliance with new requirements.
- Improved logging behavior in `logger.py` to prevent log propagation to the root logger, avoiding duplicate outputs.