Keycloak Theme Development
Keycloak is the default OIDC provider for Thunderbird Account. While we use a staging instance under the tbpro-dev realm for other projects, we spin up a keycloak docker container for theme development in this project.
You can find the contents of the keycloak theme ‘tbpro’ under
Accessing template variables
Since Keycloak uses traditional server-side rendered templates any accessible template variables are normally loaded
into window._page for template level variables and window._page.currentView for any page specific variables.
Localization information can be retrieved from a flat window._l10n.
Keycloak uses freemarker templates. If you need to hook up any of the template variables you can do so in
template.ftl or the specific page’s template. A good example of this is login.ftl where we append additional
variables to window._page.currentView. Annoyingly these variables are expressed in a similar way to es6 template
literals. Be extra careful not to attempt to use them as such with the backtick character!
If you’re missing a variable you can generally find it on the original template (under the base theme) or via the template provider located here.
Adjusting l10n
Localization can be modified via the messages_<locale>.properties file located under
If you add new localization you’ll need to adjust the window._l10n variable in template.ftl
l10n pain points
Since we’re essentially piping strings from one localization system to another there’s some quirks you should be aware of.
Avoid using single quotes:
''as it can cause rendering problems. Instead use this character:’.Ensure you save the message properties file as UTF-8. Some editors don’t do this.
If you need to use a special character defined in vue-i18n you’ll need to specify the linear interpolation via a
.replaceAll. (e.g.@thundermail.com".replace('@', "{'@'}").) Using curly braces will trip up keycloak’s template rendering.