Files
computer-playbook/scripts/github/i18n/README.md
T
kevinveenbirkenbachandClaude Opus 5 87213cc561 feat(i18n): machine-translate every pull request, one runner per language
A pull request against main extracts the core and docs domains, fans out
over the languages LibreTranslate supports, and opens one translation PR
per language against the branch that introduced the strings. Only the
entries a catalog leaves empty or fuzzy reach the translator.

The job matrix and the translator read the same list through
translatable(), so a code cannot enter the matrix and then be refused by
the run it starts.

The pipeline stays off until CI_ENABLE_AUTO_TRANSLATIONS is set, and
pull requests from a fork are skipped because the app token cannot push
to their head branch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-22 22:07:30 +02:00

11 lines
855 B
Markdown

# GitHub i18n Helpers 🌐
This directory contains the shell helpers that [entry-pr-translate.yml](../../../.github/workflows/entry-pr-translate.yml) calls: resolving the languages LibreTranslate supports into the job matrix, merging the source strings of the `core` and `docs` domains into `locale/`, and machine-translating one language per runner.
| Helper | Purpose |
|---|---|
| [install_python.sh](install_python.sh) | Installs the package with the `dev` extra, which carries Sphinx for the `docs` extraction. |
| [languages.sh](languages.sh) | Writes the machine-translatable ISO 639-1 codes to `GITHUB_OUTPUT` as a JSON array. |
| [extract.sh](extract.sh) | Merges the source strings of both domains into every catalog under `locale/`. |
| [translate.sh](translate.sh) | Translates the empty and fuzzy entries of one language in both domains. |