blueprint-compiler/docs/translations.rst
James Westman aa13c8f5af
Warn about single-quoted translated strings
gettext only recognizes double quoted strings
2025-01-05 14:27:59 -06:00

43 lines
No EOL
1.3 KiB
ReStructuredText

============
Translations
============
Blueprint files can be translated with xgettext. To mark a string as translated,
use the following syntax:
.. code-block:: blueprint
_("translated string")
You'll need to use a few xgettext flags so it will recognize the format:
.. code-block::
--from-code=UTF-8
--add-comments
--keyword=_
--keyword=C_:1c,2
If you're using Meson's `i18n module <https://mesonbuild.com/i18n-module.html#i18ngettext>`_, you can use the 'glib' preset:
.. code-block:: meson.build
i18n.gettext('package name', preset: 'glib')
You must use double quotes for the translated strings in order for gettext to recognize them. Newer versions of blueprint will warn you if you use single quotes.
Contexts
--------
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:
.. code-block:: blueprint
C_("shortcuts window", "Quit")
The context string will be shown to translators, but will not appear in the UI.