# A translation workflow for an Addon

**URL:** <https://gramps.discourse.group/t/a-translation-workflow-for-an-addon/10171>\
**Category:** International\
**Created:** [October 30, 2026, 3:59pm UTC](https://gramps.discourse.group/t/a-translation-workflow-for-an-addon/10171 "2026-10-30T15:59:56Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [October 30, 2026, 3:59pm UTC](https://gramps.discourse.group/t/a-translation-workflow-for-an-addon/10171/1 "2026-10-30T15:59:56Z")

</div>

Just added a Translation for **Polish** to my bespoke [**Role Reversal**](https://github.com/emyoulation/CuratedGrampsPlugins/tree/main/gramps61/source/RoleReversal) rule addon. (It was the native tongue of the original requestor.)

The workflow feels as though it has too many steps. (Claude might have to build a dedicated **Addon Translator** tool to make a streamlined workflow! Possibly with a functionality to leverage Weblate before letting the AI join the party.)

Here is the workflow after installing the experimental [**Addon Pack and Ship**](https://github.com/emyoulation/CuratedGrampsPlugins/tree/main/gramps61/source/AddonPackShip) utilities tool:

1. Select the addon to be translated in the **Tools → Utilities → Addon Pack and Ship**.
2. Click the Compile Translations (which rebuilds the “po/template.pot” of translatable strings in your local addon’s `plugins` folder)
3. clicked the hotlink for the selected addon to open its local `plugins` folder
4. Open the `po` subfolder
5. copy the `template.pot` to an AI. (I used Claude using the sonnet model in a firefox browser window and prompted: `Please make a Polish translation file.`)
6. Prompted the AI to create a translation for the target language.
7. copy that new _\<language code\>_`-local.po` (e.g. `pl-local.po` for Polish) back to the local addon’s `po` subfolder
8. edit the _\<language code\>_`-local.po` to fix any “[my hovercraft is full of eels](https://www.omniglot.com/language/phrases/hovercraft.htm)” problems.
9. Click the Compile Translations again (to build the `RoleReversal/locale/pl/LC_MESSAGES/addon.mo` used by the GUI)
10. restart Gramps (in the target language) and verify the Addon translation worked and is correct
11. fix any mistranslations (go back to to step 8)
12. send the _\<language code\>_`-local.po` to the developer (submitting a PR against the GitHub repo for the addon is preferred)

## Claude’s response

> Please make a Polish translation file

> [@Claude](#):
>
> `pl-local.po` translates all 10 strings, and it parses and compiles cleanly. I named it `pl-local.po` to follow the usual addons-source convention for the `po/` folder. I also set the Polish `Plural-Forms` header and removed the `fuzzy` flag. The translator line credits Claude AI as a machine translation, so a native speaker review would be worthwhile before release.
> 
> Before release, please check three terms against the Polish translation of Gramps itself, because they need to match core wording exactly:
> 
> 1. **“Event filters” → “Filtry wydarzeń”** is the rule category. If it does not match the core Polish string word for word, the rule appears in a separate category in the filter editor instead of joining the existing event filters group.
> 2. **“Primary” → “Główna”** and **“Family” → “Rodzina”** are the core event role names. The descriptions mention them, so they should read the same as the roles shown in the Gramps role dropdown.
> 3. **“Godparent” → “rodzic chrzestny”** is a custom role, not a core one, so I translated it plainly as a lowercase noun. The same goes for “Witness” → “świadek” and “marriage” → “ślub”. Gramps Polish uses “Ślub” for the Marriage event type.

## References:

- [Translating addons](https://gramps.discourse.group/t/translating-addons/6106)
- [Getting started with translating Gramps interface using Weblate](https://gramps.discourse.group/t/getting-started-with-translating-gramps-interface-using-weblate/3492)
