Skip to content

launcher: add shared localization tables and stable settings keys - #780

Open
thehobbit85 wants to merge 2 commits into
seedds:mainfrom
thehobbit85:codex/launcher-localization
Open

thehobbit85 wants to merge 2 commits into
seedds:mainfrom
thehobbit85:codex/launcher-localization

Conversation

@thehobbit85

@thehobbit85 thehobbit85 commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #775.

The iOS and Mac launchers have no translation resources, and dynamic settings labels bypass string lookup. Add a shared Launcher.strings catalog and route launcher buttons, menus, status text and setting rows through it. A translator can add <locale>.lproj/Launcher.strings without changing Swift or the settings table.

Optional label_key, note_key, section_key and option_keys fields preserve schema 1, English fallbacks, raw values, section identities and saved choices. The launcher follows the app's preferred system language independently of DM_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 1b5651d96f54d580b72a5126c5aba1be59ebb43e includes main 4a2a81a64f029d0a75ade9523c8ffc6c89465375. 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.

@thehobbit85
thehobbit85 force-pushed the codex/launcher-localization branch 13 times, most recently from 24f62c2 to df6b690 Compare November 2, 2026 13:35
@thehobbit85
thehobbit85 force-pushed the codex/launcher-localization branch from df6b690 to 1b5651d Compare November 2, 2026 15:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

iOS and Mac launchers: no localization layer — add a string table so settings and buttons can be translated (zh-Hans offered)

2 participants