docs/translation.md
Thank you for your interest in contributing translations to Keycloak! This document provides guidelines for contributing translations and getting started with Weblate.
Translation enables Keycloak to reach a wider audience by making the platform usable for speakers of various languages. By translating Keycloak, you help to improve accessibility and usability for users who may not be proficient in English.
Keycloak welcomes translations of its user interfaces and error messages via two distinct ways:
messages_*.properties files,OR
There is also a Keycloak Documentation translation project to translate some parts of the documentation to Japanese.
To ensure consistency and quality across translations, please adhere to the following guidelines:
')Whenever messages are formatted in the backend, Keycloak uses Java's MessageFormat to replace placeholders. This uses
single quotes (') as an escape mechanism.
Therefore, use typographic quotes like ‘ and ’ where possible.
To avoid problems, automatic checks ensure the following:
In all "base" themes, where message keys are evaluated in the backend, no single quote (') must be used standalone as it would not print when used in Java's MessageFormat.
For legacy messages, a double single quote ('') can be used to print a single quote.
In all UI themes, where message keys are evaluated in the frontend, a single quote (') must only be used standalone, and a double single ('') must not be used.
Translations via GitHub pull requests are possible for all languages.
While for those languages on Weblate the preferred way is to use Weblate, contributions are still possible via GitHub. If you are not familiar with GitHub, and want your language to be added to Weblate, see "Steps to add a new language to Weblate"
Tasks of the translator:
messages_*.properties files for one or more languages.Task of the reviewer:
Tasks of the maintainer:
messages_*.properties files are syntactically correct.Keycloak uses Weblate, a web-based translation platform, to manage translations of user interfaces and error messages.
It allows for notifications when the original string changes, and keeps track of missing translations. It also allows contributors without knowledge of Git to contribute to the translations.
See here for a list of all translations available in Weblate and their status.
If you have any questions or need assistance, feel free to reach out to the language maintainers listed in the language maintainers file.
To add a new language, see the section "Steps to Add a new language to Weblate" below.
Tasks of the translator:
Tasks of the maintainer:
Weblate will create automated pull requests based on new or updated translations within 24 hours. The goal is to merge those pull requests within 2-3 working days. Translations are reviewed in Weblate by language maintainers for their correctness, still maintainers do some minimal checks as outlined below.
messages_*.properties files are syntactically correct.Analyze pull request (URL) and list new or updated translations that significantly deviate from the English message that it translates. Group results by language, and mention the language maintainers. Prepare the result as Markdown. Skip languages that have no findings.
Tasks of the language maintainers:
Goal: Before a minor or major release that is due every three months, all translations should be in the state approved and all suggested translation should be reviewed. A language that misses that goal will be removed from Weblate, and translations will then only be possible via GitHub pull requests afterwards.
state:=translated) for your language, review them and set them to Approved.has:suggestion) for your language, review them and approve or reject the suggestions.[!TIP] We recommend language maintainers to set up notifications in Weblate to receive email notifications of outstanding tasks.
All language maintainers are set up in Weblate as reviewers for their language according to Weblate's "Dedicated Reviewers" process.
We rely on volunteers like you to take the initiative in steering the translation efforts for additional translations. If you're interested in contributing translations for a language not listed above, join the localization platform discussion:
theme.properties files to include the new language.