Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions content/docs/platform/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"---Building Workflows---",
"workflow/overview",
"workflow/build-a-workflow",
"workflow/translations",
"workflow/template-editor",
"workflow/channel-steps",
"workflow/delay",
Expand Down
1 change: 1 addition & 0 deletions content/docs/platform/workflow/build-a-workflow.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ icon: 'Wrench'
- This is also referred to as the workflow `Identifier`
- Tags (optional)
- Description of the workflow (optional)
- Enable [translations](/platform/workflow/translations) (optional)

Once you've filled in the required fields, click on **Create Workflow**.

Expand Down
134 changes: 134 additions & 0 deletions content/docs/platform/workflow/translations.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
---
title: 'Translations'
description: 'Learn how to translate your workflow step content into multiple languages'
icon: 'Languages'
---

## Workflow translations

Novu supports multi-language translations for workflows, allowing your notifications to dynamically adapt to your users' preferred language. This documentation covers everything you need to know to enable, configure, and manage translations for your workflows.

<Callout type="info">
Translations feature is currently in `beta` and is available for `Team` and `Enterprise` plans.
</Callout>

## Introduction

Workflow translation allows each notification workflow (e.g., onboarding, password reset, OTP, etc.) to support multiple locales. When a subscriber (user) receives a notification, Novu selects the appropriate translation based on the subscriber’s locale.

This feature helps teams:

- Reach users in their native language.
- Customize language per workflow or layout.
- Reduce friction in communication across geographies.

Translations can be managed on the [translation page](https://dashboard.novu.co/translations) on Novu dashboard. Select the default language and add the target languages you wish to support.

![Translation page](/images/platform/workflow/translations/translations-page.png)

## Enabling translations

1. **While creating a new workflow**

- Check the **Enable Translations** toggle.
- Set the default locale (e.g., `en_US`).
- Add target locales you wish to support (e.g., `fr_FR`, `es_ES`, `jp_JP`, etc.).

2. **While editing an existing workflow**

- Open an existing workflow.
- Click the **Enable Translations** option in the right panel
- Enable the toggle if not already enabled.

Default and targeted locales can be configured on the translation page.

![Translation locale](/images/platform/workflow/translations/translations-default-and-target-locale.gif)

## Translation Groups
A translation group contains all language variants for a workflow identified by a unique workflow ID.

You can:

- Search for groups on the **Translations** page.
- View status per locale ('Outdated' or 'Up to date').
- Import or export translations for a specific locale (e.g., `en_US`).
- Import or export translations for all workflows where translations are enabled.

## Translation JSON format

Each locale supports JSON-based translation files. For example, `en_US.json` file contains the default translations for the workflow. Translation json files can be updated using JSON editor on the translation page.

```json
{
"in-app": {
"title": "Welcome to Novu!",
"message": "Hi {{subscriber.firstName}}, let's get started!"
},
"email": {
"subject": "Get Started",
"body": "Thank you for joining us, {{subscriber.fullName}}"
}
}
```

You can export and re-upload these JSON files when translation updates are needed or use the JSON editor on the translation page to update the translations.

![Translation JSON format](/images/platform/workflow/translations/translations_locale_content_edit.gif)

### Exporting and importing translations

#### Export

- Navigate to the Translations section.
- Click **Export en_US.json** to download the latest default file.
- Use this as a base for other translations.

#### Import

- Click **Import locale(s)**.
- Upload JSON files (e.g., fr_FR.json, es_ES.json).
- Novu detects the locale automatically.

💡 Translation changes in default locale (e.g., en_US) will mark other locales as *Outdated, needs update*

## Using translation keys in step content editor

In Email or In-App editors, use `{{t.key}}` to insert a translatable string. if key is already added in the locale, it will be in the suggestions list.

Clicking **Add to Translations** automatically adds a new key to default locale.

Example:

```html
{{t.subject}} → "Let's get you started"
```

![Using translation keys in step content editor](/images/platform/workflow/translations/translations_variable_use_in_step_editor.gif)

## Testing translations

Use the Preview Context to:

- Simulate subscriber locale (e.g., fr_FR or ru_RU).
- Preview step content for the selected language.
- Update or correct missing translations on the fly.

## Keeping translations up to date

Any edit to the default locale will invalidate others. You’ll see a warning: `Outdated, needs update`. Re-export the default, update translated files, and re-upload.

## Disabling Translations

A translation group can be disabled by clicking on the three dots and selecting **Disable & delete translations**. This action is irreversible and removes all associated translation data.

## Translation in Layouts
This feature is currently in work in progress. If you are looking to use translation in email layouts, react out to us at [email protected]


## Best practices

- Always finalize your default content before exporting.
- Avoid hardcoded language in the content editor.
- Use variables and translation keys consistently.
- Set subscriber locale properly to deliver notifications in the correct language.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.