Contributing
Contributions are welcome. Here are the ways you can help.
:::info Project guidelines
Before contributing, please read the guidelines in the repository:
- Contributing guide — development setup, workflow, commit conventions, and pull request checklist
- Code of Conduct
- Security policy — report vulnerabilities privately, never as a public issue
- Accessibility — goals, known limitations, and how to report a barrier
- Keycloak compatibility — which Keycloak versions each release supports
:::
Ways to Contribute
| Type | Description |
|---|---|
| Translations | Add a new language — see guide below |
| Bug Reports | Use the Bug Report issue template |
| Feature Requests | Use the Feature Request issue template |
| Accessibility | Use the Accessibility Issue template |
| Pull Requests | Fix bugs or implement new features |
Contribution Guidelines
# 1. Fork and clone
git clone https://github.com/<your-fork>/keycloak-2fa-email-authenticator.git
# 2. Create a branch
git checkout -b feat/my-improvement
# 3. Build and test
mvn -B package
# 4. Commit using Conventional Commits
git commit -m 'feat: add my improvement'
# 5. Push and open a PR
git push origin feat/my-improvement
Code standards:
- Follow existing code style and conventions
- Add comments only for non-obvious logic
- Update docs when changing behavior
- Test your changes before submitting
Adding a Translation
- Steps
- Translation Keys
-
Copy the English file:
cd src/main/resources/theme-resources/messages/cp messages_en.properties messages_<lang>.properties -
Translate all values — do not change the keys:
# German exampleresendCode=Code erneut sendenemailOtpForm=Bitte geben Sie den {0}-stelligen Code ein, der an Ihre E-Mail-Adresse gesendet wurde. -
Build and verify:
mvn clean packageDeploy to Keycloak, switch browser language, confirm all messages display correctly.
-
Create a PR with branch name
i18n/<lang>-messages.
See the Localization page for the full reference of all keys with descriptions and placeholders.
Existing Translations
| Language | Code | File |
|---|---|---|
| English | en | messages_en.properties |
| Turkish | tr | messages_tr.properties |
| French | fr | messages_fr.properties |
| Italian | it | messages_it.properties |
| Spanish | es | messages_es.properties |
| Danish | da | messages_da.properties |
| German | de | messages_de.properties |
| Russian | ru | messages_ru.properties |
| Azerbaijani | az | messages_az.properties |
| Arabic | ar | messages_ar.properties |
| Chinese (Traditional) | zh_TW | messages_zh_TW.properties |
| Portuguese | pt | messages_pt.properties |
| Romanian | ro | messages_ro.properties |