website/docs/developer-docs/translation.md
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.
:::info Please review the Writing documentation guidelines as they apply to documentation too. :::
To simplify translation you can use Transifex, which has no local requirements.
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 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.