Files
997b3e5966 feat: add multilingual support for 8 languages (#187)
* feat: add multilingual support for 8 languages

- Add language selection UI in SettingsActivity with runtime locale switching
- Add locales_config.xml declaring supported locales
- Add string resources for: German (de), French (fr), Spanish (es),
  Hindi (hi), Russian (ru), Simplified Chinese (zh-rCN),
  Traditional Chinese (zh-rTW)
- Update Japanese (ja) strings and base English strings
- Fix all translation issues: CLI commands preserved in English,
  brand names (Vosk, ElevenLabs, Gateway) not translated,
  wake word placeholders kept as "openclaw, claude",
  corrected semantically wrong translations across all languages

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>

* fix: escape apostrophes in French string resources

Android resource compiler requires apostrophes in string values
to be escaped as \' when not enclosed in double quotes.
Fixed 16 unescaped apostrophes in values-fr/strings.xml.

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>

* build: increase JVM heap to 4096m for parallel flavor builds

compressFullDebugAssets was OOM-ing on CI when assembleStandardDebug
and assembleFullDebug ran in parallel with only 2048m heap.

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>

* feat: add Language section in Settings, fix locale not applied

- Move display language and speech language settings out of the
  Voice section into a new dedicated Language section
- New Language section is placed between Wake Word and Support
- Fix: language change was not reflected in the UI after saving.
  MainActivity.onResume() now detects a locale mismatch and calls
  recreate() to apply the new language immediately (needed for
  API 31-32 where AppCompatDelegate does not auto-recreate
  ComponentActivity on locale change)

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>

* fix: move Language section to top of Settings (after Connection)

Previously the Language section appeared after Voice and Wake Word
sections, requiring significant scrolling to reach. Users on Standard
builds were unable to find it.

Moves Language to the 2nd position (Connection → Language → Voice →
Wake Word → Support) so it is immediately visible without scrolling.

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>

* feat: apply locale to all activities via attachBaseContext

- Override attachBaseContext in MainActivity, SettingsActivity,
  ChatActivity, SessionListActivity to manually apply saved locale,
  fixing language switching for ComponentActivity subclasses
- Fix System Default revert not updating MainActivity
- Change "システムTTS" to "System TTS" in TTS type selector
- Change Ko-fi button text to "Support the Developer"
- Add AGENTS.md to .gitignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Happy <yesreply@happy.engineering>
2026-02-28 23:19:51 -08:00
..