Repository navigation
feat(i18n): translate Soloist, new key rows and the remaining strings - #962
Conversation
Fill the last strings of the Chinese tables: the Soloist playback engine, the jump-to-start, jump-to-end and Listening Party key rows, and one help row. Soloist's quality choices and its expiry unit reached the page as raw English, so they get their own table entries. English output does not change. Also use the same word for sources in zh-Hant, restore the lost clause in stopped_following, and replace test assertions that compared a table with itself.
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Settings labels and options src/core/i18n/settings.rs, src/core/i18n/settings/*, src/core/i18n/tests.rs |
Adds English and Chinese Soloist audio-quality labels and Chinese settings labels and descriptions. The option mapping returns localized quality labels, with tests for selected labels. |
Soloist status and expiry units src/core/app/soloist.rs, src/core/i18n/status_infra.rs, src/core/i18n/tests.rs |
Maps Soloist expiry units to localized strings and adds Chinese Soloist status and playback-engine messages. The expiry notice uses the unit mapping. |
Soloist popup and help text src/core/i18n/popups.rs, src/core/i18n/help.rs |
Adds Simplified and Traditional Chinese text for Soloist offer and pairing popups, plus settings-button help text. |
GUI messages and localization assertions src/core/i18n/gui/zh_*.rs, gui/e2e/localization.shot.ts, gui/src/localization.test.tsx, src/gui/protocol.rs |
Updates Chinese GUI messages and the Traditional Chinese source-selection heading. Tests assert the updated heading and explicit Chinese strings. |
Stale Settings Message Test
| Layer / File(s) | Summary |
|---|---|
Verify newer Discover update gui/e2e/localization.shot.ts |
The test sends a Discover message after a stale Settings message, then checks that the shelf title updates and the document language remains zh-Hans. |
Priority:
Estimated code review effort: 3 (Moderate) | ~20 minutes
Change: Feature
Possibly related PRs
- LargeModGames/spotatui#935: Introduces the Soloist status, popup, and audio-quality settings fields translated in this change.
- LargeModGames/spotatui#927: Adds keybinding fields that receive Simplified and Traditional Chinese translations here.
Merge Risk: 
Minimal · up to 15d34
-
The localization changes are mergeable; no confirmed user-facing or runtime regression remains.
Pre-merge checks: 
4
Finishing Touches
-
📝 Generate docstrings
-
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
✨ Simplify code
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Summary
The last Chinese translation PR (refs #726). It fills the strings that were still English in the Simplified (
zh-Hans) and Traditional (zh-Hant) tables, so what stays in English now is only names: Spotify, YouTube, Qobuz, Subsonic, Apple Music, the Winamp and Outrun screens, "English" in the language list, and thequitcommand.settings/zh_*.rs,popups.rs,status_infra.rs).option_label. The stored value is unchanged.days,hoursorminutes.soloist_expiry_unitnow translates it, and an unknown unit stays as logged.choose_sourcesnow says 來源, like the rest of that table.stopped_followinggets back the clause about your own playback having the speaker.src/gui/protocol.rscompared a table with itself and now compare with the Chinese text.gui/e2e/localization.shot.tsnow sends a later Discover update after the stale Settings message, waits for it to show, then checks the page is stillzh-Hans. This proves the stale message was handled, as CodeRabbit suggested on feat(i18n): complete Chinese GUI statistics and social views #956.gui/src/bindings/is regenerated.Testing
macOS (aarch64), on top of
bf9ce8e4:cargo fmt --all --check: clean.cargo clippy -- -D warnings: clean on slim (telemetry,tui) and default, and with--locked --features soloist, which is what compiles the changed line insrc/core/app/soloist.rs.cargo test: slim 1806 passed; default 2316 passed, 8 ignored; default plussoloist(--locked) 2393 passed, 8 ignored; the gui feature set with the five sources 2226 passed, 30 ignored.gui/:npm test551 passed (61 files);npm run typecheck,npm run lintandnpm run format:checkclean.e2e/*.shot.ts): 60 passed in the installed Google Chrome (channel: "chrome"). Firefox and WebKit were not run locally.Not run: the Linux-only
all-sourcesleg (PipeWire), which CI covers. I did not run the Soloist engine itself, so the new text has not been seen on a live Soloist session.Additional notes
A native-speaker review of the wording is welcome; any fix is a one-line change in the table.
Summary by CodeRabbit