Skip to main content

Translations

Translations in authentik are handled 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.

Online translation​

To simplify translation you can use Transifex, which has no local requirements.

Local translation​

Prerequisites​

  • Node.js (24 or later), installed with nvm
  • pnpm (11.9 or later), installed by following the pnpm installation guide or by running corepack enable pnpm
  • Make (again, any recent version should work)
  • Docker

Frontend​

Run pnpm install 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.