Localization
Goiabada localizes all user-facing text: login and consent screens, account self-service, the admin console, validation and error messages, and emails. Country and phone-country dropdowns — and the language picker itself — are shown in the active language using Unicode CLDR data; timezone labels are assembled from the CLDR-localized country name plus the IANA zone identifier.
Supported languages
Section titled “Supported languages”- English (
en) — default and source of truth - Portuguese, Brazil (
pt-BR)
Any string without a translation in the active language falls back to English.
How the language is chosen
Section titled “How the language is chosen”For each request, the UI language is resolved in this order:
- The
ui_localesparameter on the/auth/authorizerequest (space-separated, ordered BCP 47 tags — a standard OpenID Connect parameter). Lets a relying party set the language of the login and consent screens. - The signed-in user’s saved language (Account → Profile). Also exposed as the
localeclaim in ID tokens / UserInfo when theprofilescope is granted. - The
Accept-Languagerequest header. - English fallback.
A ui_locales value on the authorize request is preserved across the whole login flow (password → OTP → consent).
Setting your language
Section titled “Setting your language”Signed-in users choose their language under Account → Profile. The choice drives both the UI language and the locale claim.
Adding a language
Section titled “Adding a language”Country and language names are resolved from CLDR at runtime, and timezone labels are assembled from the CLDR-localized country name plus the IANA zone identifier, so adding a language is essentially one translation file — no code changes and no rebuild.
- Copy the built-in English catalog
active.en.tomland translate the values intoactive.<locale>.toml(e.g.active.es.toml). Keep the keys unchanged; translate only the right-hand side. - Point Goiabada at a directory containing it via the
GOIABADA_I18N_OVERRIDES_DIRenvironment variable, using this layout:
$GOIABADA_I18N_OVERRIDES_DIR/ catalogs/ active.<locale>.toml- Restart the auth server and admin console.
Override files are merged over the built-in catalogs (overrides win), so the same mechanism lets you tweak individual strings without rebuilding.