Skip to content

feat: adopt app language selection and localized settings surfaces #146

@eachann1024

Description

@eachann1024

feat: Add app language selection and localized settings surfaces

Problem

Settings and shared list chrome are still hard-coded in English. That makes the app harder to adopt for non-English users and leaves new language-selection work without a complete persistence contract across the renderer and stored settings.

Solution

PR #145 introduces app language selection and localized settings surfaces: a shared i18n runtime, locale catalogs, renderer-wide provider wiring, and persisted appLanguage handling so the selected locale actually survives reloads.

Key design decisions:

  • Missing translations fall back to English instead of breaking the UI
  • The feature is user-controlled via a clearly labeled language selector in General settings
  • Translation wiring is shared across settings tabs and list chrome so future locale expansion stays resource-first

Changes

Area What changed
settings persistence appLanguage now round-trips for every shipped locale code
renderer i18n runtime Added locale resolution, translation lookup, interpolation, and provider wiring
settings surfaces Localized Settings tabs plus General, AI, Extensions, Advanced, and Store views
shared chrome Localized list loading / empty / actions strings
documentation Added i18n architecture notes and fallback behavior

Validation

  • npm run build:main passes cleanly
  • npm run build:renderer passes cleanly
  • Repository / commit / PR guardrails passed
  • Verified the appLanguage setting round-trips through persisted settings
  • Spot-checked locale coverage; de, fr, and es safely fall back to English for missing keys

User Benefit

Users can switch core settings surfaces away from English without relying on extension-side work, and maintainers get a reusable localization foundation for broader app coverage.

Reference


Happy to rebase, tighten scope, or adjust any implementation details if this does not fit the current roadmap. Thanks for the great project! 🙏

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions