🌍 Make Your System Emails Speak Every Language with Localized System Emails Extension

Hey Directus community! :waving_hand:

A casual little Directus extension that makes your system emails speak multiple languages! Because who doesn’t want their password reset emails to be as international as their user base?

What it does

This extension automatically localizes system emails (password resets, user invitations, registrations) based on each user’s language preference. It supports both custom .liquid template files and translatable subjects through the Directus translations system.

Quick setup

Install:

pnpm add --save-exact directus-extension-localized-system-emails

Create localized templates:

templates/
├── password-reset-en.liquid
├── password-reset-nl.liquid
└── user-invitation-fr.liquid

Add subject translations (e.g., password-reset → "Wachtwoord opnieuw instellen" for Dutch) in your Data Studio and you’re done!

Why you’ll love it

:white_check_mark: Users get emails in their preferred language
:white_check_mark: Works immediately after setup
:white_check_mark: Graceful fallbacks to default templates
:white_check_mark: Professional, polished user experience

I’m really hoping this functionality will be built into Directus core at some point in the future, but until then, this extension has you covered! :rocket:

Credits & Future

A special shoutout to jekuer’s system-email-i18n extension which tackled this as well in a way I really like! There’s also active discussion about native email translation support and a Directus TV episode on this topic - exciting times ahead! :folded_hands:

:link: GitHub: https://github.com/joggienl/directus-extension-localized-system-emails

Give it a try and let me know what you think!

4 Likes

In the README it says the extension works with Directus 10.10.0 or higher, but the email.send hook wasn’t introduced until 10.13.2. Doesn’t that create a discrepancy?

Hi @blazej_bsk thanks for your question!

you are most probably right, I’ll have to check. I’ll come back on it here!

As for where 10.10.0 is coming from: project initialization. It’s the default when you scaffold a new extension.