Skip to content

Add German, Portuguese, and Indonesian translations - #415

Merged
thcp merged 3 commits into
mainfrom
feat/i18n-en-pl-ja-zh
Aug 22, 2026
Merged

Add German, Portuguese, and Indonesian translations#415
thcp merged 3 commits into
mainfrom
feat/i18n-en-pl-ja-zh

Conversation

@thcp

@thcp thcp commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Extends the i18n system (English/Polish/Japanese/Simplified Chinese) to add German, Portuguese, and Indonesian, with full key parity and correct plural rules per language.
  • Fixes several pre-existing i18n coverage gaps found during audit: hardcoded English in the recent-tracks subtitle, search placeholder, trash empty-state, a presence-panel legend, and several upload/job/playlist error toasts. Library list content now also refreshes on a live language switch instead of requiring a reload.
  • Widens the settings language dropdown and the device-select to stop truncating longer translated values (e.g. "Bahasa Indonesia", "Automático").
  • Bumps the Unraid template pin to 0.13.0.

Test plan

  • node --check on all touched JS files
  • Full JS test suite (4/4 files pass)
  • ruff check clean on app//tests/ (no Python touched by this change)
  • Custom audit scripts: key parity, data-i18n/t()/plural() call-site resolution, and translation-length overflow risk across all 7 languages
  • Playwright visual pass across main DAW view, sidebar rail, all settings tabs, notifications, and About dialog for all 7 languages
  • Manual verification of each newly-fixed bug (recent list pluralization, search placeholders per view, trash empty state, live language-switch re-render)

…e gaps

Extends the existing English/Polish/Japanese/Simplified Chinese i18n system
to seven languages total. Also fixes several pre-existing i18n coverage gaps
found while auditing: the recent-tracks list, search placeholder, and trash
empty-state were hardcoding English text instead of using the translation
system; a presence-panel legend lacked data-i18n attributes; upload/job/
playlist error toasts were untranslated; and library list content did not
refresh on a live language switch. Widened the settings dropdown to fit the
longest new language name and the device-select to stop truncating longer
translated values.

Bumps the Unraid template pin to 0.13.0.
Comment thread static/js/job.js Fixed
Thales added 2 commits August 22, 2026 07:56
Flagged in PR review: job.js imports plural from i18n.js but never calls
it, only t().
Fixes real mistranslations (German "schleifen" for loop, "Skala" for musical
scale, Indonesian countdown/count-in mixup, Chinese Alpha badge), grammar bugs
(Polish aria-labels requiring an unavailable grammatical case, singular/plural
adjective agreement in playlist skip messages), inconsistent terminology
within each language, and a stray three-dot ellipsis instead of the single
character used everywhere else.

Converts playlist.skip.* from t() to plural() with proper singular/plural
forms across all seven languages, since Portuguese and Polish adjectives
don't inflect correctly as flat strings.
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