Canonical home for Open Library translation files.
This repository holds the .po translation files for all supported languages, the messages.pot template, translation tooling, and CI validation tests. It is the single source of truth for OL's localized strings.
23 active languages: ar, as, bn, cs, de, es, fr, hi, hr, id, it, ja, ko, pl, pt, ro, ru, sc, te, tl, tr, uk, zh.
openlibrary-i18n/
locale/
de/messages.po
es/messages.po
... (one directory per language)
messages.pot # source string template (downloaded from openlibrary)
scripts/
translate.py # translation pipeline: sync → AI gap-fill → validate → compile
tests/
test_po_files.py # HTML structure parity validation
validators.py # format-string validation
.github/workflows/
validate-pr.yml # blocks PRs that fail test_po_files.py
- When the source strings in
openlibrarychange,messages.potis updated automatically by thegenerate-potpre-commit hook. - A GitHub Actions workflow downloads the latest
messages.pot, runsi18n-messages updatefor each language, fills translation gaps using an AI translation API, validates the result, and opens a PR. - PRs that introduce format-string mismatches or broken HTML in translations are blocked by CI.
To improve a translation for your language, edit the relevant locale/{lang}/messages.po file and open a pull request. CI will verify your changes automatically.
- Open Library — main application repo
- i18n extraction pipeline epic #13061