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>
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.