Skip to content

History / i18n Localizare

Revisions

  • docs(i18n): document issue 1586 locale persistence fix (Fixes #1586) - new page Bugfix-Issue-1586-TLi18n-Locale-Not-Persisted.md with root cause, the fix, the rejected alternatives, the 13-case verification matrix and the known limitations - correct i18n-Localizare.md, which still stated the opposite of the shipped behaviour ('localStorage is no longer used for detection', 'the selection is valid for the current session only') - before/after screenshots

    @github-actions github-actions[bot] committed Sep 25, 2026
  • i18n: document issue #543 locale bundle contamination fix + lint guard

    @github-actions github-actions[bot] committed Aug 21, 2026
  • i18n: document both translation systems and rewrite the add-a-language guide The page only covered the JS bundles, which left the most confusing part undocumented: TestLink translates in two independent ways, and a language present in one system but not the other looks half-translated for reasons that are invisible from the page you are looking at. Event Viewer rendering in Romanian while the sidebar stayed English - with no locale/ro_RO/ on disk at all - is the concrete case that prompted this. Adds section 2b contrasting the PHP/Smarty path (locale/xx_YY/strings.txt, lang_get, per-key fallback) with the modern JS path (i18n/xx.json, TLi18n, per-file fallback), and rewrites section 8 as a full walkthrough covering both, plus cfg/const.inc.php registration and LOCALE_MAP. Records the traps that cost real time: strings.txt is executable PHP, five locale files end with ?> so appended text is printed into the page and php -l does not catch it, a key left on the placeholder "undefined" is worse than a missing key, and Smarty caches compiled templates. Drops the old 'add your language to the switcher array' step - the switcher now reads GET /api/userinfo/locales, the same source as the profile form.

    @sebiboga sebiboga committed Aug 20, 2026
  • add: i18n — Localizare wiki page Complete documentation for the i18n system: - 10 available languages with status table - How it works (HTML data-i18n + JS t() function) - Locale detection priority (URL > DB profile > default) - Architecture: i18n.js module, JSON files, LOCALE_MAP - Step-by-step: add a new language - Step-by-step: add a new translation key - Full reference: 160 keys across 10 zones - File inventory: 11 files (~1760 keys total)

    @sebiboga sebiboga committed Aug 20, 2026