* 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). * Document key binding descriptions in the locales README |
||
|---|---|---|
| .. | ||
| mkarchiso | ||
| mkosi | ||
| qemu | ||
| check_binding_descriptions.py | ||