A similar idea should hold for the Gramps Core translations.
1. Abstract
This RFC defines a decoupled architecture for Gramps Addon localization. The current workflow couples translation updates to addon releases, requiring manual maintainer intervention and delaying translation improvements for users. By treating localization as independent content delivered over-the-air (OTA), translation updates become independent of addon code releases. This reduces maintainer effort, simplifies repository management, and ensures runtime safety through validated localization artifacts.
2. Motivation
The current localization workflow utilizes a centralized translation platform (Weblate) but relies on a decentralized, manual distribution pipeline. This creates several bottlenecks:
-
Maintainer Burden: Maintainers must manually pull from Weblate, run extraction scripts (
make.py extract-po), and bundle.mofiles into.tgzrelease archives. -
Release Coupling: A typo fix in a translation requires a full version bump and release of the addon code.
-
Repository Pollution: Mixing source code with
.potranslation data confuses contributors and bloats the git history ofaddons-source. -
Fragility: A malformed translation string (e.g., mismatched
%svariables) can crash the Gramps client if not caught manually. -
Contributor burden: Translation details distract contributors from addon development.
This RFC decouples localization from addon development and release management, enabling automated translation delivery while preserving compatibility with the existing GNU gettext ecosystem.