Adds Bahasa Indonesia as a supported language:
- locales/id.json: full translation of 629 keys across 17 sections
(common, meta, nav, home, main, step1-5, graph, history, api,
progress, log, report, console)
- locales/languages.json: register 'id' entry with label and
llmInstruction 'Silakan jawab dalam bahasa Indonesia.'
Fills a gap in the existing i18n registry (zh, en, es, fr, pt, ru, de).
Indonesian has ~270M speakers and is widely used in Southeast Asian
academic and policy contexts — a natural fit for the multi-agent
simulation use cases MiroFish targets (e.g. policy rehearsal for
Indonesian ministries, USD/IDR economic scenarios, regional crisis
planning).
Indonesian users can switch via:
- Frontend: language picker in the UI
- API: Accept-Language: id header on backend calls
- LLM calls: get_language_instruction() will return the Indonesian
instruction, anchoring the LLM to respond in Bahasa Indonesia
Translations preserve technical terms (MiroFish, API, LLM, PDF, Zep)
and placeholder syntax (e.g. 'Bagian {title}: {conflictCount}...')
exactly as the upstream English file does.
Generated with DeepSeek (deepseek-chat); 629/629 keys validated
against en.json structure.
The Shanda sponsor logo's alt text was `666ghj%2MiroFish | Shanda`,
missing the `F` from the URL-encoded `/`. Every other badge in both
READMEs uses the correct `666ghj%2FMiroFish`. Bring this one in line
with the rest.
- 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
- Add sans-serif font for English left-pane (status, workflow sections)
- Shorten English workflow step descriptions
- Reduce English report title font-size from 36px to 28px
- Use sans-serif font for English titles, descriptions and navbar
- Shorten English hero text to avoid overflow
- Fix :global() scoped CSS issue that was setting root font-size to 3.5rem
- Use separate unscoped style block for html[lang] selectors
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.
Ensure poster_type stays PascalCase English and stance stays English enum
values regardless of language setting. Only natural language fields follow
the user's language preference.
The language instruction was causing LLM to change entity/relation naming
conventions. Now explicitly enforce PascalCase/UPPER_SNAKE_CASE for technical
identifiers while only applying language preference to description fields.