Repository navigation
Add French, Chinese and Japanese localization with Windows language detection - #188
TiagoFerreiraDomingues wants to merge 10 commits into
Conversation
Add Traditional Chinese, Simplified Chinese and Japanese localization
|
Validation update after merging the Traditional Chinese, Simplified Chinese and Japanese translations:
|
|
Updated this PR for Halo Battery 1.14.0 in commit b8d20ac.
The PR title and description now reflect the five languages and current validation. The earlier manual test reported above applies to the previous build; full tray-mode manual validation of this updated 1.14 build remains pending. |
|
Updated this PR for 1.15.0 and the latest upstream main in 6d16e6d.
Full manual validation of this new build and a live automatic update remain untested. Published release-note prose remains in its original language. The description is updated accordingly. It now also flags #249 (Language selection) as a competing English/Spanish localization architecture requiring coordination; it is not part of this contribution. |
Halo Battery currently renders application text in English only. This adds French, Traditional Chinese, Simplified Chinese and Japanese localization, with English as the default and fallback.
Preferences offers English / Français / 繁體中文 / 简体中文 / 日本語. Selecting a language saves it and immediately updates tray menus and tooltips without polling hardware. On first startup without a saved preference (including older configurations), the app detects the user's Windows UI language and saves the matching supported language, or English otherwise. A saved choice always takes precedence; an invalid stored value falls back to English without redetection.
Addresses #162. The Asian catalogs incorporate miguotw's contribution.
Implementation
approxvalues. Hardware/custom names, identifiers, protocols, logs, diagnostics, history exports,--probeand status-file text retain their technical contracts.40a3a08) and subsequentmainfixes/layout cleanup through2251f05. Localizes the update installer, download progress, manual checks, keep-disconnected preference, NZXT/Steam family labels and new coarse/pending device states. The HyperX family label reflects Cloud II Core support; hardware names remain unchanged.halo/module layout. Updates README,docs/features.md,.github/CONTRIBUTING.mdand the Unreleased changelog, including portable-mode language persistence.Validation
Latest integration commit:
6d16e6d31f92ffeaca9770549250707f0cbc1f13(upstreammainmerged without rewriting the published branch).python -m unittest discover -s tests: 845 tests passed on Windows / Python 3.12.10. The sandbox denied fixture temporary-directory access, so the successful run used the normal Windows environment with isolated APPDATA.git diff --checkpassed.--onedir --windowed --noupxPyInstaller build succeeded (PyInstaller 6.22.3). Archive inspection confirmed five 145-message catalogs, thehalopackage, NZXT/Steam providers, Python 3.12 and Tcl/Tk.--probeexited with code 0 using isolated settings; the frozen probe did not create a language configuration.Validation limits
The updated 1.15 build still needs full manual tray/dialog validation, native-speaker review of newly added Asian-language strings, and testing on the new physical hardware. Automatic updates were tested with fake downloads/installations; no live update of a user's installed copy was performed. Earlier manual testing described in the previous comments applies to the earlier build.
Published GitHub release-note prose remains in its original language; the What's new controls, known section headings and dates are localized. The window captures the selected language when it opens. Right-to-left layout is not implemented.
Related open PRs
Checked October 13, 2026. #249 — Language selection is a competing English/Spanish localization implementation (
lang.py, 75 keys, its own menu/tooltip/notification/rename changes). It overlaps this PR's localization architecture and should be coordinated before either is merged; its code is not included here. #187 changes a per-device alert label; #253 changes Logitech identity/cache behavior; new-provider PRs need catalog keys and should preserve presentation metadata. #223 separately changes history estimate wording, which should also be reflected in the localized renderer if merged.Shared filenames below do not establish conflicting hunks.
Shared files with 25 open PRs
halo_battery.pywCHANGELOG.md,providers/audeze.py,tests/test_audeze_stuck.pyCHANGELOG.md,README.md,halo_battery.pywCHANGELOG.mdCHANGELOG.md,halo_battery.pywCHANGELOG.md,README.md,halo_battery.pywCHANGELOG.md,halo_battery.pywCHANGELOG.md,README.md,providers/xinput.py,tests/test_xinput.py,tests/test_xinput_wired.pyCHANGELOG.md,README.md,halo_battery.pywCHANGELOG.md,README.md,halo_battery.pywCHANGELOG.md,halo_battery.pywCHANGELOG.md,halo_battery.pywCHANGELOG.md,providers/logitech.py,tests/test_logitech.pyCHANGELOG.md,halo_battery.pyw,providers/base.pyCHANGELOG.md,halo_battery.pyw,tests/test_hide_rename.pyCHANGELOG.md,README.md,halo_battery.pywCHANGELOG.mdCHANGELOG.md,providers/asus.py,tests/test_asus.pyCHANGELOG.mdCHANGELOG.mdCHANGELOG.mdCHANGELOG.md,README.md,halo_battery.pyw,tests/test_hide_rename.pyCHANGELOG.md,README.md,halo_battery.pywCHANGELOG.md,README.md,halo_battery.pyw,providers/asus.py,tests/test_asus.pyCHANGELOG.md,README.md