You can do a lot with Directus, but it is somehow not possible to translate system emails (user invitation, user registration, password reset).
You can create a custom template and include it into the email templates directory, but for proper internationalization, you will need to use different templates depending on the user’s language.
I create a custom extension that integrates a simple way to add this functionality.
How it works
- The extension is a hook, which filters all emails sent by Directus.
- When we are dealing with a system email, it would check for the user’s language.
- If this language is not the default language, it would look for an email template with a language suffix.
- Additionally (in all cases), it looks for a subject in a respective environment variable
I18N_EMAIL_SUBJECTS
.
Warning:
When you are using this extension, you need to make sure that for every system email type and used language, you have a liquid template set up.
If a template is missing, emails might not get sent.
Example
Let’s assume…
- you are offering
English (default) and
German as potential languages.
- you are not offering user invites and have no user registration DOI.
- so, we only need to translate the password-reset emails.
- You would create a template
password-reset
(for English) and a templatepassword-reset-de
(for German). - You would add an environment variable
I18N_EMAIL_SUBJECTS
with content{"de":{"password-reset": "Passwort zurücksetzen"}}
.
If you would now add Spanish:
- add a template
password-reset-es
- adjust the env var to something like
{"de":{"password-reset": "Passwort zurücksetzen"}, "es":{"password-reset": "Restablecer contraseña"}}
Simple as that.
How to install it
As you might know, there are multiple way to install an extension.
But just to point them out again:
Directus Marketplace
Simply install it via the marketplace with 1 click.
Mind that in order to see this in the (self-hosted and Enterprise Cloud) Directus Marketplace, you would need to allow non-sandboxed extensions (see docs).
npm Registry
Use the code from npm via…
npm install directus-extension-system-email-i18n
or
pnpm install directus-extension-system-email-i18n
… and include this into your Docker build flow.
Manually via the Extensions Directory
- Download the code.
- Build it via
npm ci && npm run build
. - Upload the files to your extensions directory.
That’s it
Tell me what you think.
It’s nothing special, but solves a big problem (people in the US often ignore ).
Have a nice day!