Problem
While extending the i18n system to German, Portuguese, and Indonesian (#415), an audit turned up several pre-existing spots where UI text was hardcoded in English directly in JS, bypassing the translation system entirely. These showed up in English regardless of the selected language:
- The recent-tracks list subtitle ("1 stem" / "2 stems") in
renderRecentItem (static/js/catalog.js)
- The library search placeholder, overwritten per-view ("Search trash…", "Search favorites…", "Search library…") every render, silently stomping the correctly-translated static placeholder
- The trash empty-state messages ("Trash is empty", "No deleted tracks match your search")
- The
.presence-panel legend (.presence-labels — Vocals/Drums/Bass/Guitar/Piano/Others) had no data-i18n attributes at all
- Several error toasts: track-unavailable message, job restore/start failures, unsupported-file-type and file-too-large upload errors, and a second (previously untranslated) playlist-import failure path
job.js also carried an unused plural import left over from an earlier pass
Fix
All of the above are now wired through the existing t()/plural()/data-i18n system with full parity across all 7 supported languages (en, pl, ja, zh-Hans, de, pt, id).
Fixed in #415.
Problem
While extending the i18n system to German, Portuguese, and Indonesian (#415), an audit turned up several pre-existing spots where UI text was hardcoded in English directly in JS, bypassing the translation system entirely. These showed up in English regardless of the selected language:
renderRecentItem(static/js/catalog.js).presence-panellegend (.presence-labels— Vocals/Drums/Bass/Guitar/Piano/Others) had nodata-i18nattributes at alljob.jsalso carried an unusedpluralimport left over from an earlier passFix
All of the above are now wired through the existing
t()/plural()/data-i18nsystem with full parity across all 7 supported languages (en, pl, ja, zh-Hans, de, pt, id).Fixed in #415.