* web/xliff: remove legacy Transifex-named locale files The old Transifex config named locale files with underscores (cs_CZ.xlf, pt_BR.xlf, ...) alongside the hyphenated BCP-47 form the current lit-localize pipeline actually reads. That config was fixed months ago, so the underscore files are either stale duplicates of a current kebab-case sibling or orphaned contributions for locales the project never enabled. Deleted 11 legacy files that already have a kebab-case equivalent in web/xliff/. Kebab wins even where the two diverged, so 2,220 legacy-only <trans-unit> targets get dropped along the way (fr_FR carried the bulk at 954; the rest of the languages contribute the remaining 1,266). Renamed 3 legacy files with no kebab counterpart and added their locale codes to web/lit-localize.json targetLocales: - ar_AA.xlf -> ar.xlf (AA was a bogus private-use region; landed on the plain language code). - bg_BG.xlf -> bg-BG.xlf. - no_NO.xlf -> nb-NO.xlf (no is the Norwegian macrolanguage; the translation is Bokmal, so nb is the correct language subtag). Each renamed file also has its internal target-language attribute updated to match its new locale code, so lit-localize keeps recognising the existing translations instead of treating everything as absent. Wired the new locales into LocaleLoaderRecord in web/src/common/ui/locale/definitions.ts so the runtime can import the emitted modules; lit-localize regenerates web/src/locale-codes.ts to match. locale/ (Django gettext) stays exactly as it was. Verified with: cd web && npm run build-locales && npm run precommit. Co-Authored-By: Agent (authentik-m-remove-legacy-intended-nominal-mahogany) <279763771+playpen-agent@users.noreply.github.com> * locale: sync Django language codes to lit-localize (ar_AA to ar, no_NO to nb_NO) Mirror the two locale-code changes just landed on the web/xliff side into the Django gettext tree, in Django's ll_CC underscore form: - locale/ar_AA -> locale/ar (drop the bogus AA private-use region; matches web ar). - locale/no_NO -> locale/nb_NO (Norwegian macrolanguage to Bokmal, which is the writing system the contributed translation uses; matches web nb-NO). bg_BG is left alone (already equals the underscore form of the web bg-BG), and every other Django locale directory - including zh-Hans and zh-Hant - stays exactly as it was. Both catalogs also had their in-file Language header updated to match the new directory (Language: ar_AA -> ar, Language: no_NO -> nb_NO) and the .mo binaries were recompiled via manage.py compilemessages so runtime lookups get the correct language metadata. No functional LANGUAGES / LANGUAGE_CODE settings referenced the old codes: only historical Transifex team URLs in the .po Language-Team headers and past release-notes lines mention them, and those are metadata / audit trail rather than config. Verified: to_locale('nb-no') -> 'nb_NO', to_locale('ar') -> 'ar', and gettext.translation loads locale/ar/LC_MESSAGES/django.mo (1,122 entries, language=ar) and locale/nb_NO/LC_MESSAGES/django.mo (1,116 entries, language=nb_NO). Co-Authored-By: Agent (authentik-m-remove-legacy-intended-nominal-mahogany) <279763771+playpen-agent@users.noreply.github.com> --------- Co-authored-by: Agent (authentik-m-remove-legacy-intended-nominal-mahogany) <279763771+playpen-agent@users.noreply.github.com>
What is authentik?
authentik is an open-source Identity Provider (IdP) for modern SSO. It supports SAML, OAuth2/OIDC, LDAP, RADIUS, and more, designed for self-hosting from small labs to large production clusters.
Our enterprise offering is available for organizations to securely replace existing IdPs such as Okta, Auth0, Entra ID, and Ping Identity for robust, large-scale identity management.
Installation
- Docker Compose: recommended for small/test setups. See the documentation.
- Kubernetes (Helm Chart): recommended for larger setups. See the documentation and the Helm chart repository.
- AWS CloudFormation: deploy on AWS using our official templates. See the documentation.
- DigitalOcean Marketplace: one-click deployment via the official Marketplace app. See the app listing.
Screenshots
| Light | Dark |
|---|---|
![]() |
![]() |
![]() |
![]() |
Development and contributions
See the Developer Documentation for information about setting up local build environments, testing your contributions, and our contribution process.
When you contribute documentation, either to accompany a code change or as a standalone contribution, please be sure to follow our documentation Style Guide.
Security
Please see SECURITY.md.
Adoption
Using authentik? We'd love to hear your story and feature your logo. Email us at hello@goauthentik.io or open a GitHub Issue/PR!



