Getting started

Updated

You can store your audience’s language preferences as an attribute, and then use that attribute to send people messages in their preferred language!

How it works

When you add or update people, you can set an attributeA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages. Attributes are analogous to traits in Data Pipelines. containing their language preference. Then, when you set up messages, you can click Add language to add one or more languages. You’ll set up your Default message, and then add content for each language.

When you send your message, people whose language attribute matches one of your message’s languages will receive the appropriate localization. Everybody else receives the Default message.

graph LR A[Add language
attribute] --> B[Set up
multi-language message] B --> C[Send
message] C --> D{Does a person's language
attribute match a message?} D -->|no| H[Person gets
default message] D -->|yes, lang=es| E[Person gets
Spanish message] D -->|yes, lang=fr| F[Person gets
French message] D -->|yes, lang=de| G[Person gets
German message]

Multi-language support


Campaign/Message TypeEmailSMSPushIn-App
Campaigns
Newsletters
Broadcasts
Transactional Messages

1. Set your language attribute

Before you can send localized messages, you need to go to Workspace Settings > Language settings and tell us what attributeA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages. Attributes are analogous to traits in Data Pipelines. stores your audience’s language preferences. This attribute must store values we support, meaning they’re either:

  • a two letter language code, like en for English
  • a four-letter language and region code, separated by a dash, like en-US for English speakers in the United States.
Set your localization settings
Set your localization settings

Go to Set up your localization attribute for more info.

2. Set up a multi-language message

When you create a message with multiple languages, you should always begin by drafting your Default message. This is the message intended for anybody who doesn’t match another language and should represent your “template” for other languages.

If you plan to send email content to a translation vendor, you’ll want to set up and export your Default message first, and then add languages when you receive them. Check out our best practices for help exporting email messages for your translation vendor and the quickest way to add your multi-language content.

  1. Drag a message into your workflow then click it to view settings on the left.
  2. Set a Name for your message, and click Add Content.
  3. Click Add language then check the languages you want. Click Add.
    Add languages to your newsletter
    Add languages to your newsletter
  4. Draft your Default message. This message should act as a “template” for your other languages. It will be the fallback if your customers do not have a language attribute.
  5. Add your content for each language. Use the tabs at the top of the message to switch between languages.
    A newsletter with multiple languages
    A newsletter with multiple languages
  6. When you’re done, save your changes.

Best practices

Export email to HTML for vendors

When you set up a message with multiple languages, you may need to send content to a translation vendor. To simplify this process, we suggest that you draft, test, and finalize your Default message first.

We recommend you export emails to HTML before you send them to a translation vendor:

  • If you created your email with the drag and drop editor, click Actions > Export to HTML.
  • If you created your email with the rich text editor, click HTML underneath the email header to copy/paste the source code.
  • If you used the code editor, you can copy your email out to a separate file.

 Make sure your translation vendor handles raw HTML

While we suggest you export custom HTML, make sure that your translation team can translate raw HTML before you export your email or switch editors. Remember, when you switch editor types, you cannot switch back.

Add translations for email from vendors

When you receive your translations from your translator(s):

  • If you exported your HTML originally, copy/paste the translated HTML back to the rich text (click HTML first) or code editors. If you used the rich text editor, you may need to reformat text after pasting.
  • If you didn’t export your HTML, or you used the drag and drop editor, paste localized text back into the blocks of your message.
flowchart LR A[Create Default
message] -.->F{Test message} A -.-> |Convert without testing| C[Convert to
Custom HTML] C --> D[Export and
send to translator] D -->|Get translations
back| E[Add languages] E --> G[Send message] F-.-> |Tests pass|C F-.-> |Tests fail|A

Consider liquid values

You might use liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}. to personalize your message for your audience. Liquid doesn’t account for translations; we use the values stored on people’s profiles. Therefore, you’ll want to store values in native languages or use a set of static values.

If using static values, request your vendor translate these, too. Then you can use if statements to set specific, translated values depending on your audience’s language attribute.

{% if customer.language == 'fr' %}
  Bonjour
{% elsif customer.language == 'es' %}
  Hola
{% else %}
  Hello // Default value
{% endif %}

Multi-language metrics

When you send a message with multiple languages, we show metrics for each language. These metrics can help you make sure that your messages perform well in all of your audience’s languages.

An example newsletter with metrics in multiple languages
An example newsletter with metrics in multiple languages

Supported languages and locales

You must format the values of your language attribute as two-letter language codes with an optional two-letter region code separated by a dash, like en or en-US.

Language attribute values are not case sensitive, but language-region codes must be separated by a dash. For example, both es-MX and es-mx represent Spanish formatted for speakers in Mexico.

These codes come from the ISO-3166-1 (alpha 2) and IETF standards respectively. If you’re looking for a language or locale that we don’t support, let us know!

CodeLanguage/Locale
afAfrikaans
af-ZAAfrikaans (South Africa)
am-ETAmharic (Ethiopia)
arArabic
ar-AEArabic (U.A.E.)
ar-BHArabic (Bahrain)
ar-DZArabic (Algeria)
ar-EGArabic (Egypt)
ar-IQArabic (Iraq)
ar-JOArabic (Jordan)
ar-KWArabic (Kuwait)
ar-LBArabic (Lebanon)
ar-LYArabic (Libya)
ar-MAArabic (Morocco)
ar-OMArabic (Oman)
ar-QAArabic (Qatar)
ar-SAArabic (Saudi Arabia)
ar-SYArabic (Syria)
ar-TNArabic (Tunisia)
ar-YEArabic (Yemen)
arn-CLMapudungun (Chile)
as-INAssamese (India)
azAzeri
az-Cyrl-AZAzeri (Cyrillic) (Azerbaijan)
az-Latn-AZAzeri (Latin) (Azerbaijan)
ba-RUBashkir (Russia)
beBelarusian
be-BYBelarusian (Belarus)
bgBulgarian
bg-BGBulgarian (Bulgaria)
bn-BDBengali (Bangladesh)
bn-INBengali (India)
bo-CNTibetan (Peoples Republic of China)
biBislama
br-FRBreton (France)
bs-Cyrl-BABosnian (Cyrillic) (Bosnia and Herzegovina)
bs-Latn-BABosnian (Latin) (Bosnia and Herzegovina)
caCatalan
ca-ESCatalan (Catalan)
co-FRCorsican (France)
csCzech
cs-CZCzech (Czech Republic)
cy-GBWelsh (United Kingdom)
daDanish
da-DKDanish (Denmark)
deGerman
de-ATGerman (Austria)
de-CHGerman (Switzerland)
de-DEGerman (Germany)
de-LIGerman (Liechtenstein)
de-LUGerman (Luxembourg)
dsb-DELower Sorbian (Germany)
dvDivehi
dv-MVDivehi (Maldives)
elGreek
el-GRGreek (Greece)
enEnglish
en-029English (Caribbean)
en-ATEnglish (Austria)
en-AUEnglish (Australia)
en-BEEnglish (Belgium)
en-BZEnglish (Belize)
en-CAEnglish (Canada)
en-DEEnglish (Germany)
en-ESEnglish (Spain)
en-FREnglish (France)
en-GBEnglish (United Kingdom)
en-IEEnglish (Ireland)
en-INEnglish (India)
en-JMEnglish (Jamaica)
en-LUEnglish (Luxembourg)
en-MYEnglish (Malaysia)
en-NLEnglish (Netherlands)
en-NZEnglish (New Zealand)
en-PHEnglish (Republic of the Philippines)
en-SGEnglish (Singapore)
en-TTEnglish (Trinidad and Tobago)
en-USEnglish (United States)
en-ZAEnglish (South Africa)
en-ZWEnglish (Zimbabwe)
esSpanish
es-ARSpanish (Argentina)
es-BOSpanish (Bolivia)
es-CLSpanish (Chile)
es-COSpanish (Colombia)
es-CRSpanish (Costa Rica)
es-DOSpanish (Dominican Republic)
es-ECSpanish (Ecuador)
es-ESSpanish (Spain)
es-GTSpanish (Guatemala)
es-HNSpanish (Honduras)
es-LASpanish (Latin America)
es-MXSpanish (Mexico)
es-NISpanish (Nicaragua)
es-PASpanish (Panama)
es-PESpanish (Peru)
es-PRSpanish (Puerto Rico)
es-PYSpanish (Paraguay)
es-SVSpanish (El Salvador)
es-USSpanish (United States)
es-UYSpanish (Uruguay)
es-VESpanish (Venezuela)
etEstonian
et-EEEstonian (Estonia)
euBasque
eu-ESBasque (Basque)
faPersian
fa-IRPersian (Iran)
fiFinnish
fi-FIFinnish (Finland)
fil-PHFilipino (Philippines)
foFaroese
fo-FOFaroese (Faroe Islands)
frFrench
fr-BEFrench (Belgium)
fr-CAFrench (Canada)
fr-CHFrench (Switzerland)
fr-FRFrench (France)
fr-LUFrench (Luxembourg)
fr-MCFrench (Principality of Monaco)
fy-NLFrisian (Netherlands)
ga-IEIrish (Ireland)
gd-GBScottish Gaelic (United Kingdom)
glGalician
gl-ESGalician (Galician)
gsw-FRAlsatian (France)
guGujarati
gu-INGujarati (India)
ha-Latn-NGHausa (Latin) (Nigeria)
heHebrew
he-ILHebrew (Israel)
hiHindi
hi-INHindi (India)
hrCroatian
hr-BACroatian (Latin) (Bosnia and Herzegovina)
hr-HRCroatian (Croatia)
hsb-DEUpper Sorbian (Germany)
huHungarian
hu-HUHungarian (Hungary)
hyArmenian
hy-AMArmenian (Armenia)
idIndonesian
id-IDIndonesian (Indonesia)
ig-NGIgbo (Nigeria)
ii-CNYi (Peoples Republic of China)
isIcelandic
is-ISIcelandic (Iceland)
itItalian
it-CHItalian (Switzerland)
it-ITItalian (Italy)
iu-Cans-CAInuktitut (Syllabics) (Canada)
iu-Latn-CAInuktitut (Latin) (Canada)
jaJapanese
ja-JPJapanese (Japan)
kaGeorgian
ka-GEGeorgian (Georgia)
kkKazakh
kk-KZKazakh (Kazakhstan)
kl-GLGreenlandic (Greenland)
km-KHKhmer (Cambodia)
knKannada
kn-INKannada (India)
koKorean
ko-KRKorean (Korea)
kokKonkani
kok-INKonkani (India)
kyKyrgyz
ky-KGKyrgyz (Kyrgyzstan)
laLatin
lb-LULuxembourgish (Luxembourg)
lo-LALao (Lao P.D.R.)
ltLithuanian
lt-LTLithuanian (Lithuania)
lvLatvian
lv-LVLatvian (Latvia)
mi-NZMaori (New Zealand)
mkMacedonian
mk-MKMacedonian (Former Yugoslav Republic of Macedonia)
ml-INMalayalam (India)
mnMongolian
mn-MNMongolian (Cyrillic) (Mongolia)
mn-Mong-CNMongolian (Traditional Mongolian) (Peoples Republic of China)
moh-CAMohawk (Canada)
mrMarathi
mr-INMarathi (India)
msMalay
ms-BNMalay (Brunei Darussalam)
ms-MYMalay (Malaysia)
mt-MTMaltese (Malta)
nbNorwegian (Bokmål)
nb-NONorwegian, Bokmål (Norway)
ne-NPNepali (Nepal)
nlDutch
nl-BEDutch (Belgium)
nl-NLDutch (Netherlands)
nn-NONorwegian, Nynorsk (Norway)
noNorwegian
nso-ZASesotho sa Leboa (South Africa)
oc-FROccitan (France)
or-INOriya (India)
paPunjabi
pa-INPunjabi (India)
plPolish
pl-PLPolish (Poland)
prs-AFDari (Afghanistan)
ps-AFPashto (Afghanistan)
ptPortuguese
pt-BRPortuguese (Brazil)
pt-PTPortuguese (Portugal)
qut-GTKiche (Guatemala)
quz-BOQuechua (Bolivia)
quz-ECQuechua (Ecuador)
quz-PEQuechua (Peru)
rm-CHRomansh (Switzerland)
roRomanian
ro-RORomanian (Romania)
ruRussian
ru-RURussian (Russia)
rw-RWKinyarwanda (Rwanda)
saSanskrit
sa-INSanskrit (India)
sah-RUYakut (Russia)
seSami (Northern)
se-FISami (Northern) (Finland)
se-NOSami (Northern) (Norway)
se-SESami (Northern) (Sweden)
si-LKSinhala (Sri Lanka)
skSlovak
sk-SKSlovak (Slovakia)
slSlovenian
sl-SISlovenian (Slovenia)
smSamoan
sma-NOSami (Southern) (Norway)
sma-SESami (Southern) (Sweden)
smj-NOSami (Lule) (Norway)
smj-SESami (Lule) (Sweden)
smn-FISami (Inari) (Finland)
sms-FISami (Skolt) (Finland)
soSomali
so-DJSomali (Djibouti)
so-ETSomali (Ethiopia)
so-KESomali (Kenya)
so-SOSomali (Somalia)
sqAlbanian
sq-ALAlbanian (Albania)
srSerbian
sr-Cyrl-BASerbian (Cyrillic) (Bosnia and Herzegovina)
sr-Cyrl-CSSerbian (Cyrillic) (Serbia and Montenegro (Former))
sr-Cyrl-MESerbian (Cyrillic) (Montenegro)
sr-Cyrl-RSSerbian (Cyrillic) (Serbia)
sr-Latn-BASerbian (Latin) (Bosnia and Herzegovina)
sr-Latn-CSSerbian (Latin) (Serbia and Montenegro (Former))
sr-Latn-MESerbian (Latin) (Montenegro)
sr-Latn-RSSerbian (Latin) (Serbia)
svSwedish
sv-FISwedish (Finland)
sv-SESwedish (Sweden)
swKiswahili
sw-KEKiswahili (Kenya)
syrSyriac
syr-SYSyriac (Syria)
taTamil
ta-INTamil (India)
teTelugu
te-INTelugu (India)
tg-Cyrl-TJTajik (Cyrillic) (Tajikistan)
thThai
toTonga (Tonga Islands)
th-THThai (Thailand)
tk-TMTurkmen (Turkmenistan)
tn-ZASetswana (South Africa)
trTurkish
tr-TRTurkish (Turkey)
ttTatar
tt-RUTatar (Russia)
tzm-Latn-DZTamazight (Latin) (Algeria)
ug-CNUyghur (Peoples Republic of China)
ukUkrainian
uk-UAUkrainian (Ukraine)
urUrdu
ur-PKUrdu (Islamic Republic of Pakistan)
uzUzbek
uz-Cyrl-UZUzbek (Cyrillic) (Uzbekistan)
uz-Latn-UZUzbek (Latin) (Uzbekistan)
viVietnamese
vi-VNVietnamese (Vietnam)
wo-SNWolof (Senegal)
xh-ZAisiXhosa (South Africa)
yo-NGYoruba (Nigeria)
zhChinese
zh-CHSChinese (Simplified)
zh-HansChinese (Simplified)
zh-CHTChinese (Traditional)
zh-HantChinese (Traditional)
zh-CNChinese (Peoples Republic of China)
zh-HKChinese (Hong Kong S.A.R.)
zh-MOChinese (Macao S.A.R.)
zh-SGChinese (Singapore)
zh-TWChinese (Taiwan)
zu-ZAisiZulu (South Africa)
Copied to clipboard!
  Contents
Is this page helpful?