Translations
Translation in authentik is done in two places. Most of the text is defined in the frontend in web/, and a subset of messages is defined in the backend.
The frontend uses @lit/localize, and the backend uses the built-in django translation tools.
Please review the Writing documentation guidelines as they apply to documentation too.
Online translation
To simplify translation you can use Transifex, which has no local requirements.
Local translation
Prerequisites
- Node (any recent version should work, we use 16.x to build)
- Make (again, any recent version should work)
- Docker
Frontend
Run npm i in the /web folder to install all dependencies.
Ensure the language code is in the lit-localize.json file in web/:
// [...]
"targetLocales": [
"en",
"pseudo-LOCALE",
"a-new-locale"
// [...]
],
// [...]
Afterwards, run make web-i18n-extract to generate a base .xlf file.
The .xlf files can be edited by any text editor, or using a tool such as POEdit.
To see the change, run make web-watch in the root directory of the repository.
Backend
Backend translations are handled by core-i18n-extract.
Use Django's translation utility to declare the string, e.g.:
from django.utils.translation import gettext as _
_("New text to be translated.")
Afterwards, run make core-i18n-extract to generate the updated translation files.