Fall back to English instead of showing raw keys

Every namespace the fork added -- main_tabs, feed, cards, watch, browse,
search, player, and now account -- exists only in en.json, because the thirteen
translated language files predate them. get_text() consults the embedded
fallback dict and then gives up and returns the key, so a non-English UI read
"main_tabs.watch" on its own tabs. This round made that worse by adding more
English-only keys.

The fallback dict now carries those namespaces verbatim from en.json. It does
not translate anything -- a German UI shows English for these strings -- but
nothing shows a dotted key, and keys added later degrade the same way instead
of breaking. Translations that do exist still win: buttons.download is still
"Herunterladen" in German.

Verified across all fourteen language files: no key in the fork's namespaces
resolves to itself in any of them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-09 01:22:08 +02:00
parent 9c4749e49b
commit b07a56082a
2 changed files with 140 additions and 3 deletions
+7
View File
@@ -88,6 +88,13 @@ records.
### Fixed
- **A non-English interface no longer shows raw keys.** Every string SageTube
added — the tab names, the feed, cards, watch, browse, search, player and
account text — exists only in `en.json`, because the thirteen translated files
predate the fork. `get_text` returned the key itself, so the tabs literally
read `main_tabs.watch`. Those namespaces are now in the embedded English
fallback, so a missing translation reads as English rather than as a dotted
key. Translating the language files remains a separate job.
- The error log filled with hundreds of `after creating texture: OpenGL error
INVALID_ENUM` lines per session. They come from the GL driver, playback
continues regardless, and they buried the errors that do matter, so they are