archinstall/.github/workflows
Softer dccd0c8ccf
Add translation CI validation (#4519)
* Fix broken localization: tr(f-string) never matches translation catalog

tr(f'Invalid configuration: {error}') evaluates the f-string before
tr() runs, so xgettext extracts the literal placeholder as the msgid
while runtime passes the formatted string - the two never match.
Switch to tr('...{}').format(...) and update msgid in base.pot.

* Add CI validation for translations and pot_tools dev utility

Add translation-check workflow with two jobs:
- validate-po: msgfmt --check on changed .po files, .mo sync warning,
  tr(f-string) anti-pattern grep on changed .py files
- validate-pot: verify all tr() strings exist in base.pot when .py
  files change

Workflow only triggers on .py/.po/.pot file changes.

Add scripts/pot_tools.py developer utility (stats, list, add_missing)
for managing base.pot.

* Fix code style: use tabs and reformat xgettext arguments

Align check_pot_freshness.py and pot_tools.py with project
indentation (tabs) and ruff format requirements.

Sorry :-)

* Replace custom PO parser with msgcmp, drop pot_tools.py

Address review feedback: use standard gettext msgcmp instead of
hand-rolled parser for base.pot freshness check. Remove pot_tools.py
that duplicated locales_generator.sh functionality.

* Move translation checks into locales_generator.sh, simplify CI workflow

Use msgcmp instead of diff for base.pot validation to avoid failing on
legacy stale entries - the same cascading breakage that killed the
original workflow (disabled 2023, removed in #4483).

* Fix broken .po files: duplicate msgid in Hindi, missing format args in Finnish
2026-05-18 20:10:56 +10:00
..
bandit.yaml Update actions/checkout digest to de0fac2 (#4213) 2026-02-04 07:06:48 +11:00
flake8.yaml Update actions/checkout digest to de0fac2 (#4213) 2026-02-04 07:06:48 +11:00
github-pages.yml Update actions/checkout digest to de0fac2 (#4213) 2026-02-04 07:06:48 +11:00
iso-build.yaml Update actions/upload-artifact digest to 043fb46 (#4402) 2026-04-11 10:16:58 +10:00
mypy.yaml Update actions/checkout digest to de0fac2 (#4213) 2026-02-04 07:06:48 +11:00
pylint.yaml Update actions/checkout digest to de0fac2 (#4213) 2026-02-04 07:06:48 +11:00
pytest.yaml Update actions/checkout digest to de0fac2 (#4213) 2026-02-04 07:06:48 +11:00
python-build.yml Update actions/upload-artifact digest to 043fb46 (#4402) 2026-04-11 10:16:58 +10:00
python-publish.yml Update actions/checkout digest to de0fac2 (#4213) 2026-02-04 07:06:48 +11:00
ruff-format.yaml Update astral-sh/ruff-action action to v4 (#4416) 2026-04-13 18:48:17 +10:00
ruff-lint.yaml Update astral-sh/ruff-action action to v4 (#4416) 2026-04-13 18:48:17 +10:00
translation-check.yaml Add translation CI validation (#4519) 2026-05-18 20:10:56 +10:00