archinstall/test_tooling
Softer d3ed8cd872 Extract binding descriptions into base.pot and translate raw widget bindings (#4584)
xgettext only knew the tr keyword, so binding descriptions - translated
at runtime via tr(b.description) in _translate_bindings() - never made
it into base.pot. The strings added manually in #4363 were wiped by the
regeneration in #4557.

Teach the generator two more keywords: Binding:3 picks up our own
binding definitions, and tr_noop marks strings that only exist inside
the textual package, listed in the new tui/binding_descriptions.py.
The list walks the full MRO of the textual classes used in components.py,
since _translate_bindings() operates on the merged bindings map (e.g.
Scroll Up comes from ScrollView and carries live translations in 18
locales today).

Raw Input and Button widgets never went through _translate_bindings(),
so their help-panel descriptions stayed English regardless of .po
content - subclass them (_Input/_Button) following the _OptionList
pattern to make those translations real.

test_tooling/check_binding_descriptions.py verifies the list against
the installed textual after upgrades (manual, not wired into CI).
2026-06-10 16:44:20 +03:00
..
mkarchiso mkosi for test image builds (#4539) 2026-05-23 13:49:54 +02:00
mkosi mkosi for test image builds (#4539) 2026-05-23 13:49:54 +02:00
qemu mkosi for test image builds (#4539) 2026-05-23 13:49:54 +02:00
check_binding_descriptions.py Extract binding descriptions into base.pot and translate raw widget bindings (#4584) 2026-06-10 16:44:20 +03:00