feat: in-app display language switcher (Settings → Appearance) (#604)

Add a Language selector to Settings → Appearance that overrides the app
display language independent of the device locale. Persists a BCP-47 code
in ServerStoreState.appLanguage; MainActivity.attachBaseContext applies it
via a ContextWrapper (works on minSdk 26, no AppCompat dependency needed
since the Activity is a plain ComponentActivity). Selecting a language
recreates the activity so resources re-resolve immediately.

Includes System default / English / 한국어 options, plus a unit test for
the locale-code resolver.

Note: the new string keys (settings_item_language, language_system,
language_english, language_korean) should be backfilled into values-ko
once PR #602 lands.

Co-authored-by: hy4ri <hy4ri@users.noreply.github.com>
This commit is contained in:
M57andhy4ri authored and GitHub committed 2026-07-15 23:57:39 +03:00
1 parent 4314bddaae
commit b3765bd106
9 files changed
+200

No files matched your search

+6
View File
@@ -207,6 +207,12 @@
<string name="theme_preset_amoled">AMOLED Black (Dark only)</string>
<string name="theme_preset_neon_noir">Neon Noir</string>
<!-- Language -->
<string name="settings_item_language">Language</string>
<string name="language_system">System default</string>
<string name="language_english">English</string>
<string name="language_korean">한국어</string>
<!-- Connect Screen -->
<string name="connect_selected_profile">Profile: %1$s</string>
<string name="connect_action_select_profile">Select Saved Profile</string>