i18n(settings/live): move hardcoded UI strings into string resources - #654
Merged
ProdigyV21 merged 6 commits intoSep 5, 2026
Merged
Conversation
Moves the remaining hardcoded English UI strings in the settings screen and the Live TV fullscreen HUD into the string resource system, and adds the two missing German values from 4a9c551. - SettingsScreen.kt: catalog pack dialogs, Simkl activation modal, the Data Routing block, Discord Rich Presence status and the On/Off value labels are now resolved through string resources - FullscreenHud.kt: the five playback contentDescriptions plus play/pause - trackingModeLabel() is now @composable so its one localized branch is resolved in composition instead of in a plain helper (C12) - values-de: player_addon_setup_hint and player_season_episode_short Stored values and internal lookup keys are left untouched: the settings section names ("Home Server", "Cloud Sync & Account"), the default IPTV playlist name ("List N") and uiState.secondarySubtitle stay English because they are compared or persisted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011TDDEcEXgHS9ZjR5doeF4Y
added 5 commits
September 5, 2026 23:30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
, , )Same approach as #632, applied to the settings screen and the Live TV fullscreen HUD.
Moves the hardcoded English UI strings in SettingsScreen.kt and FullscreenHud.kt
into the string resource system and adds the German values. No behaviour changes,
no logic changes.
45 display strings moved from Kotlin literals to stringResource(R.string.…)
12 of them reused existing resources that were already present but unused
(on, off, auto, close, cancel, play, connect, connected,
settings_disconnect, settings_connected_as, settings_mode_tablet,
settings_mode_phone)
38 new keys added to values/strings.xml in their matching sections
(, ,
German values added to values-de/strings.xml
Also fills two gaps introduced by 4a9c551: player_addon_setup_hint and
player_season_episode_short had no German value yet. values-de is complete
again (1454 of 1455; app_name is intentionally left untranslated).
Areas covered: catalog pack import/delete dialogs, the Simkl activation modal,
the Data Routing block, Discord Rich Presence status text, the On/Off value
labels across the mobile settings rows, and the five playback
contentDescriptions in the Live TV HUD.
Why
Approved in Discord (28 Aug): "Yes try to also bring hardcoded things into this.
That has been kinda a long time bug. They dont have to be in English yea."
This benefits all 50 language folders, not just German — untranslated locales fall
back to English exactly as before.
Notes
Stored values and internal keys are unchanged; only rendered text is localized.
Follows the existing pattern from LiveCategory.kt. Deliberately left in English
because they are compared or persisted:
the settings section names ("Home Server", "Cloud Sync & Account", …) —
they are navigation keys and already resolved for display through the existing
when lookup in MobileSettingsMainPage
the default IPTV playlist name ("List N"), which is written into
IptvPlaylistEntry.name
uiState.secondarySubtitle, which is compared with equals(…, ignoreCase = true)
trackingModeLabel() is now @composable. It produced a finished String in a
plain helper, so its one localizable branch ("Automatic") would have resolved
against the system locale instead of the app locale. The provider names
(Trakt, Simkl, MDBList) stay as they are.
The EditText hint in InputModal is now resolved in composition and no longer
lowercases the field label. This is the one rendering change in the PR: English
shows "Enter Pack URL..." instead of "Enter pack url...". Lowercasing a label is
wrong in German and in most other locales, where nouns keep their casing.
Brand and franchise names (Trakt, Simkl, MDBList, Telegram, Discord RPC, Groq,
Gemini) are left untouched, as are the language names in the content-language
picker.
Log messages, telemetry strings and animation labels are out of scope.
CI: Verify build (compile + unit tests) green on this branch.
created by Claude (Anthropic) on behalf of @ReichiMD