Skip to content

Add extensible language packs and Simplified Chinese localization - #3

Open
DTW7607 wants to merge 8 commits into
Mason363:mainfrom
DTW7607:localization/zh-Hans
Open

Add extensible language packs and Simplified Chinese localization#3
DTW7607 wants to merge 8 commits into
Mason363:mainfrom
DTW7607:localization/zh-Hans

Conversation

@DTW7607

@DTW7607 DTW7607 commented Sep 3, 2026

Copy link
Copy Markdown

Summary

  • Add a language-pack registry that discovers bundled BCP-47 lproj resources without a hard-coded Swift language list.
  • Add System, English, and Simplified Chinese language choices with immediate in-app updates and English fallback for unsupported system languages.
  • Localize the menu bar, onboarding, settings, sheets, file panels, accessibility labels, errors, model display names, plural text, and hover captions.
  • Keep the language choice global and independent from profiles, imported settings, per-app overrides, and existing Codable/raw-value formats.
  • Refresh stationary hover captions after a language change without replaying haptic feedback.
  • Add strict resource, BCP-47, printf-placeholder, plural, runtime, profile, shortcut, and hover regression validation.
  • Add an opt-in stable local Debug signing workflow that detects an installed Apple Development identity, refuses ad-hoc fallback, and stores no personal signing identifiers in the repository.

Extensibility

A new language only requires a matching lproj resource directory and Xcode region metadata. English remains the complete key baseline and per-key fallback. See docs/localization.md for the package contract and contribution steps.

Compatibility

  • Existing profile JSON and KeyCombo data remain compatible.
  • Enum raw values, app version, update feed, Sparkle key, and shared release signing configuration are unchanged.
  • The local signing script overrides signing only for its own build and preserves the upstream release team settings.
  • User names, app names, file names, URLs, brands, and external control titles remain verbatim.

Validation

  • bash scripts/test_localization.sh
  • bash scripts/build_local_signed.sh
  • Certificate-signed app passes strict deep codesign verification and has a certificate-based designated requirement rather than an ad-hoc code-hash identity
  • 379 ordinary keys and 1 plural key in each published language pack
  • 29 matcher cases and 12 identifier-normalization checks
  • 24 validator self-test assertions
  • Production Localizer runtime checks against source and built app resources
  • Profile, shortcut, live-language, and hover-caption regression checks
  • Unsigned validation build and certificate-signed local Debug build with Xcode 26.6
  • Manual Simplified Chinese UI review completed on macOS, including window startup, text wrapping, terminology, and haptic-row alignment

Sparkle-owned and other system-owned windows may continue to follow the macOS language. Public distribution still requires the upstream Developer ID and notarization process.

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.

1 participant