Repository navigation
launcher: add shared localization tables and stable settings keys - #780
Open
thehobbit85 wants to merge 2 commits into
Open
thehobbit85 wants to merge 2 commits into
thehobbit85 wants to merge 2 commits into
Conversation
thehobbit85
force-pushed
the
codex/launcher-localization
branch
13 times, most recently
from
November 2, 2026 13:35
24f62c2 to
df6b690
Compare
thehobbit85
force-pushed
the
codex/launcher-localization
branch
from
November 2, 2026 15:48
df6b690 to
1b5651d
Compare
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.
Fixes #775.
The iOS and Mac launchers have no translation resources, and dynamic settings labels bypass string lookup. Add a shared
Launcher.stringscatalog and route launcher buttons, menus, status text and setting rows through it. A translator can add<locale>.lproj/Launcher.stringswithout changing Swift or the settings table.Optional
label_key,note_key,section_keyandoption_keysfields preserve schema 1, English fallbacks, raw values, section identities and saved choices. The launcher follows the app's preferred system language independently ofDM_LANG. Both iOS build paths include the resources; the Mac packer copies locale tables and invalidates reuse when they change. Canonical development/frontend documentation describes the resource layout and compatibility contract. The English catalog supplies the translation layer; no additional language is claimed complete.Main's synchronous Mac window dismissal and the button-owned iOS cloud-save picker are preserved, including success/failure/cancel and bookmark-refresh behavior. Neither upstream change supplies localization.
Revision
1b5651d96f54d580b72a5126c5aba1be59ebb43eincludes main4a2a81a64f029d0a75ade9523c8ffc6c89465375. Stable localization keys, fallback and shared localized launcher resources remain absent from main.Validation on
1b5651d96f54.python3 -m unittest dm.tools.tests.test_docs dm.ios.tests.test_launcher_localization dm.tools.tests.test_launcher_settings— 31 passed.GitHub checks for this revision
Earlier local validation on
94daba1cb5ad.python3 -m unittest dm.tools.tests.test_docs dm.tools.tests.test_settings dm.tools.tests.test_launcher_settings dm.ios.tests.test_launcher_storage dm.ios.tests.test_launcher_localization dm.tools.tests.test_nsp_mac. All 52 tests passed. The focused suite includes the Mac/iOS localization, storage and settings fixtures. Physical-device behavior and translated layout in a running game remain unverified.This affects the shared settings UI and locale resources of every packaged Mac/iOS game. Tests generate synthetic settings with the Breath of the Wild profile and use synthetic app bundles to cover translation and persistence without game files; no gameplay run was selected because the change does not alter game execution or rendering. Physical iOS picker interaction and bookmark persistence across signing identities remain untested. No gameplay, extraction rebuild or game shader rebuild was performed.