Skip to content

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

Open
thehobbit85 wants to merge 1 commit into
seedds:mainfrom
thehobbit85:codex/launcher-localization
Open

thehobbit85 wants to merge 1 commit 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 settings launchers have no translation resources, and dynamic settings labels bypass string lookup. Add one shared Launcher.strings catalog and route their buttons, headings, status text, menus and setting rows through it. A translator can add <locale>.lproj/Launcher.strings without editing Swift or the settings table.

The settings JSON gains optional label_key, note_key, section_key and option_keys fields derived from environment variables and raw choice values. Existing English labels remain the fallback, including for older JSON and missing translations. Schema 1, environment values, tested defaults, section grouping and saved preferences retain their meanings. The launcher follows the app's preferred system language independently of DM_LANG.

The English catalog has 79 entries. Xcode includes it in both prepared projects and unsigned builds; the Mac packer copies all locale resources and invalidates reuse when a string table is added, changed or removed. The front-end contract documents the keys and contribution workflow. This provides the layer for the reporter's offered zh-Hans contribution; it does not include a Chinese translation.

Maintenance refresh (2026-10-31, 22:02 UTC) onto fixed main 5474c6f34789a41770868564fbf4e9e32fc57584: head 2c9b2579f74a2527560bb8d4c4b2c72c3e5933bb. Conflict-free rebase; range-diff confirms the localization patch is unchanged. Main's guarded rewriter recognition, audio diagnostic mailbox and benchmark offline-archive default remain intact. iOS DLC startup/transfer behavior and the prebuild visibility dependency are preserved. Fresh paginated review found no comments, reviews or inline feedback.

Fresh validation on this head:

  • 33 focused tests passed (13.212 s): native Swift localization/storage fixtures and real Mac SwiftUI compilation, shared settings/schema, locale resource addition/edit/removal with reuse invalidation, and docs.
  • Pinned Python lint: 392 baseline findings, 0 new, 0 stale; git diff --check passes.
  • Coordinated shared-base t_audio_stats: 22 checks passed on fe348cea; this head has identical audio code, fixture and host-test Makefile. New-head CI is pending after publication.

Reused historical coverage: 925630295b9e passed 44 localization/DLC/settings/docs tests and clean lint. Earlier 779fc7082b1f passed four native iOS/Mac × current/legacy JSON dependency cases and all seven CI checks. Swift/resource/Mac-packer and iOS source/build-tool inputs are unchanged by this main advance. The broad unsigned iOS smoke and Mac bundle suites were not repeated; 19fb0840adb5 previously passed production unsigned smoke with synthetic modules and packaged string-table verification, 753 tool tests (16 skipped), 41 iOS tests and 51 final affected checks.

No gameplay, device transfer, game extraction or fresh game shader/interface comparison was performed in this pass. Historical game-related reports apply only to their recorded revisions.

@thehobbit85
thehobbit85 force-pushed the codex/launcher-localization branch 3 times, most recently from 967aebc to 9256302 Compare October 31, 2026 13:28
@thehobbit85
thehobbit85 force-pushed the codex/launcher-localization branch from 9256302 to 2c9b257 Compare October 31, 2026 22:09
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