i18n: several <option> elements and aria-labels are not wired through data-i18n (Send Key, TTS voice, Insights period, Kanban bulk status)

Author: YularzhiCreated Sep 15, 2026Updated Sep 17, 2026
Labelsbuguxsprint-candidate

applyLocaleToDOM() stamps textContent on any element carrying data-i18n, including <option>, but a number of selects in static/index.html are still plain-text and therefore always render in English even when the UI language is not English:

  • #kanbanBulkStatus (sidebar bulk-action select): options Status / Ready / Blocked / Done / Archived, aria-label="Bulk status"
  • #insightsPeriod: options «7 days», «30 days», «90 days», «365 days»
  • #settingsSendKey: options «Enter (Shift+Enter for newline)», «Ctrl+Enter …», «Shift+Enter …»
  • #settingsTtsVoice: option «Default system voice» — this one is also re-rendered in static/panels.js with hardcoded innerHTML; both call sites need the same key.

The fix is purely additive data-i18n / data-i18n-aria-label attributes on those elements plus a handful of new locale keys.

I verified that data-i18n on <option> works (option text re-stamps with the rest of the page), so this is a small mechanical patch — happy to submit a PR.