Any translation workflow we adopt must implement the following stages:
- extraction of source strings from Python code (
securedrop_client/**/*.py) to the catalog template (securedrop/locale/messages.pot); - merging of the source strings from the template into each locale's translation catalog (
securedrop/locale/*/LC_MESSAGES/messages.po); and - compilation of each locale's translation catalog from portable-object format (
.po) to the machine-object format (.mo) loaded at runtime.
The following table summarizes the approaches we've considered to date: