Blueprint files can be translated with xgettext. To mark a string as translated, use the following syntax:

_("translated string")

You’ll need to use a few xgettext flags so it will recognize the format:


If you’re using Meson’s i18n module, you can use the ‘glib’ preset:

i18n.gettext('package name', preset: 'glib')


Unlike most other translation libraries, which use a separate string key, gettext uses the English translation as the key. This is great for effortlessly adding new strings–you just mark them as needing translation–but it can cause conflicts. Two strings that are the same in English, but appear in different contexts, might be different in another language! To disambiguate, use C_ instead of _ and add a context string as the first argument:

C_("shortcuts window", "Quit")

The context string will be shown to translators, but will not appear in the UI.