Locales in messages
After adding locales to your workspace, you can target users in different languages all within a single push, email, banner, or in-app message.
Prerequisites
To edit and manage multi-language support, you must have the “Manage Multi-Language Settings” user permission. To add the locale to a message, you’ll need permissions for editing campaigns.
Multi-language support is currently in early access. Contact your Braze account manager if you’re interested in participating in this early access.
Using locales
Step 1: Set up locales in your workspace
Before you can use locales and translation tags, you must first add locales to your workspace.
Step 2: Add translation liquid tags to your message
Add translation tags {% translation your_id_here %} and {% endtranslation %} to wrap all text, image, or link URLs that you will be translating.
Each translation should have a unique id. For example, when translating a simple greeting, you may name the ID “greeting”:
{% translation greeting %}Hello!{% endtranslation}
Localizing HTML blocks
A more complicated paragraph may have multiple translation tags (“offer_text” and “offer_amount”):
1
2
{% translation offer_text %}Sign up now to save{% endtranslation %}
<b>{% translation offer_amount %}50% Off{% endtranslation %}</b>
Wrapping large HTML blocks in translation tags can cause stylesheet or styling issues. Wrap the smallest text sections as possible.
Localizing Links
To localize anchor tag links, be sure to wrap only the language-specific parts and not the entire href URL attribute. If you wrap the entire URL, link templating may not function correctly.
Correct usage
1
<a href="https://www.braze.com/{% translation link_href %}en{% endtranslation %}/page"></a>
Incorrect usage
1
<a href="{% translation link_href %}https://www.braze.com/en/page{% endtranslation %}"></a>
Step 3: Choose message locales
After your translation tags are in the message, go to the message’s multi-language settings and select one or more locales to translate for this message.

Select Multi-Language from the Content menu when editing your message.

Select Manage Languages when editing your message.

Select Manage Languages when editing your message.

Step 4: Download CSV template
After selecting your locales, select Download template to download a CSV template containing a matrix of your selected translation IDs and locales.

Step 5: Upload a completed CSV
Any changes to the IDs or locales in the CSV file will not automatically update in your message. To update the translations, update the CSV file and re-upload the file.
Here is the format for an example completed CSV:
1
2
3
4
5
6
Variant1,,,,
,Translation tags,en,es,fr
title,We noticed you've left something behind,We noticed you've left something behind,Notamos que has dejado algo atrás,Nous avons remarqué que vous avez oublié quelque chose derrière vous
offer_text,Check out now and receive,Check out now and receive,Paga ahora y recibe,Payez maintenant et recevez
offer_amount,10% Off,10% Off,10% de Descuento,10 % de réduction
cta,CHECK OUT NOW,CHECK OUT NOW,VERIFICAR AHORA,VÉRIFIER MAINTENANT
Step 6: Preview locales
When previewing your message, select the Multi-Language User option from the Preview as User dropdown. This lets you switch between different locale definitions to preview all translations of your message.

Check out our Translation API to manage and update translations in your campaigns and Canvases.
Right-to-left messages
When filling in the translation file for languages that are written from right-to-left (like Arabic), wrap the translation with span so that it is properly formatted:
1
{% translation your_id_here %}<span dir='rtl'>default text</span>{% endtranslation %}
Managing translations
Editing translations for launched campaigns and Canvases
After a campaign or Canvas has been launched, you can still modify translations when you’re in draft mode. This applies whether you’re editing translations directly in the composer, by CSV upload, or through the API.
For more details on managing campaigns and Canvases after launch, refer to Editing launched campaigns and Canvas drafts and post-launch editing.
Duplicating Canvas steps or campaigns, and translations
Translations are copied along with a canvas step, campaign, or campaign variation. This is also true when copying across workspaces, so long as the locales are defined in that destination workspace. Be sure to review and update translations accordingly when making modifications to your Canvas or campaign.
Using the Multi-Language API with Canvases
To use the Multi-Language API with Canvases, you must include the workflow_id, step_id, and message_variation_id in the parameter list.
Canvas steps added to post-launch drafts
When using the Multi-Language API with Canvas steps that were created after the Canvas has been launched, the message_variation_id that you pass into the API will be empty or blank.
Frequently asked questions
Can I make a change to the translated copy in one of my locales?
Yes. First, make the edit in the CSV, then upload the file again to make a change to the translated copy.
Can I nest translation tags?
No.
Do translations support HTML for styling?
Yes, but be sure to check that the HTML styling is not translated with the content.
Can I wrap entire HTML messages in a translation tag?
No, your translation tags should be as small as possible to avoid performance or size limitations.
What validations or extra checks does Braze do?
| Scenario | Validation in Braze |
|---|---|
| A translation file is missing locales associated with the current message. | This translation file won’t be uploaded. |
| A translation file is missing text blocks, such as a text within Liquid translation tags, from the current email message. | This translation file won’t be uploaded. |
| The translation file includes the default text that doesn’t match the text blocks in the current email message. | This translation file won’t be uploaded. Fix this in your CSV before attempting to upload again. |
| The translation file includes locales that don’t exist in Multi-Language Support settings. | These locales will not be saved in Braze. |
| The translation file includes text blocks that don’t exist in the current message (such as the current draft at the time the translations are uploaded). | The text blocks that don’t exist in your current message will not be saved from the translation file to Braze. |
| Removing a locale from the message after that locale has already been uploaded to the message as part of the translation file. | Removing the locale will remove any translations associated with the locale in your message. |


Edit this page on GitHub