Translate your .po files, with the plurals actually correct
Drop in your django.po or messages.pot. KAERIS translates all 46 languages, writes the correct Plural-Forms for each target (Russian gets 3 forms, Arabic 6, Chinese 1), keeps msgctxt entries distinct, and reads every string back so you catch meaning drift before it ships.
Plurals that compile
English has 2 plural forms; Russian and Polish have 3, Arabic has 6. Most tools copy the source's 2 slots and produce a .po that msgfmt rejects. KAERIS writes the right nplurals and formula for the target and expands the msgstr slots to match.
Context that doesn't collide
Two msgid "Open" with different msgctxt are different strings. KAERIS keys them separately so one never silently overwrites the other.
Headers you keep
Project-Id-Version, Language-Team and your X- headers survive the round-trip — only Language and Plural-Forms are rewritten for the target.
Before → after
msgid "one file" msgid_plural "%d files" msgstr[0] "one file" msgstr[1] "%d files"
"Plural-Forms: nplurals=3; …" msgid "one file" msgstr[0] "%d файл" msgstr[1] "%d файла" msgstr[2] "%d файлов"
Drop your .po file
Upload it as-is, or run pip install kaeris and translate from your terminal or CI.
Pick languages & verify
Choose from 46 languages. Leave read-back on to catch meaning drift, lost placeholders and overflow.
Ship the .po back
Download one .po per language, structure intact — or let the GitHub Action open a PR when new keys land.
Free, no account. Read every line back in your own language.
Drop your .po file →See the read-back benchmark · CLI & GitHub Action