Kara GoldfinchKaraLG84@dragonscave.space
Nov 8, 2026, 12:07 AMretooted Quin
I'm happy to officially announce patois, a set of Rust crates for translating desktop apps with gettext. It's what translates Paperback, and with 0.3 out, I think it's finally in good enough shape for other people to use for their own apps.
What it does:
- You mark strings with t(), and patois collects them into a template for translators. Translations are plain .po files, so Poedit and other gettext tools just work.
- Translations are compiled and embedded in your binary, compressed, and only unpacked when a language is first used. No locale folder to ship.
- Picks the language that best fits the system, so someone set to zh-Hans-CN gets your zh_CN translation.
- Plural forms follow each language's own rules.
- Libraries can mark their strings too, with no setup of their own. Their strings end up in the app's catalog, so one language setting covers everything. ship-shape and wx-utils already do this.
- Optional wxDragon support, which also translates the stock strings wxWidgets uses in its built-in dialogs.
- Checks translations for lost placeholders, menu accelerators, and keyboard shortcuts.
- Optional machine translation through the Claude API. It can translate your readme too.
- Extracts strings from Swift and Kotlin and generates the iOS and Android string files, so a mobile app can share the desktop app's catalog. That's how Paperback's 17 translations reach all five platforms.
MIT licensed, and on crates.io.
https://github.com/accessware/patois
#Rust #Rustlang #i18n #wxDragon