updateUI verwendete svCanvas.width (HTML-Attribut, 220px) statt der tatsächlich gerenderten Breite. Wenn CSS den Canvas größer rendert, stoppte der Cursor vor dem rechten Rand. Jetzt wird getBoundingClientRect() verwendet, konsistent mit handleSV.
- i18n.js: Übersetzungsmodul mit t(), setLang(), applyLang() + vollst. DE/EN Wörterbuch - Backend: language-Feld in UserSettings, Migration, Settings-API - calendar.js: alle deutschen Strings auf t()-Aufrufe umgestellt, setLang() beim Start - app.js, api.js, color-picker.js, views/*.js: alle UI-Strings übersetzt - Sprach-Dropdown in Einstellungen > Darstellung, data-i18n-Attribute in index.html