Send personalized messages in multiple languages across push, email, and in-app messaging using OneSignal’s dashboard or API.
This guide explains how to set a user’s language in OneSignal and send messages in their preferred language across push notifications, emails, and in-app messages.
OneSignal automatically sets the language
property from the device’s language when a user is first created using the web or mobile SDKs.
You can also manually set or update the user’s language using the ISO 639-1 2-letter language code with:
setLanguage
method.language
field in the Create user or Update user APIs.language
column in the CSV Importer.See Supported languages for a list of valid language codes.
Use tabs below to view localization options by messaging channel.
From Messages > Push > New Message or Templates, click Add Languages. Choose from:
Select languages you support. Any language not selected will fall back to Any/English.
Using checkboxes to select the languages.
Use the provided template to format the message in each language.
Modal to copy and paste data from a spreadsheet.
Copy and paste the content back into the “Add Languages” field.
Modal with example data.
Preview content to double-check, insert content, and new tabs will appear in the editor with the designated content filled out.
Content preview.
Use Dynamic Content which involves creating and uploading a CSV file with the languages you support.
en
as default.language_code
, title
, subtitle
, message
support@onesignal.com
.The dashboard editor uses a standard HTML field. Special characters like %
may cause display issues in RTL languages. Add RLM marks after such characters to fix formatting problems.
The contents
and headings
fields support multiple languages:
From Messages > Push > New Message or Templates, click Add Languages. Choose from:
Select languages you support. Any language not selected will fall back to Any/English.
Using checkboxes to select the languages.
Use the provided template to format the message in each language.
Modal to copy and paste data from a spreadsheet.
Copy and paste the content back into the “Add Languages” field.
Modal with example data.
Preview content to double-check, insert content, and new tabs will appear in the editor with the designated content filled out.
Content preview.
Use Dynamic Content which involves creating and uploading a CSV file with the languages you support.
en
as default.language_code
, title
, subtitle
, message
support@onesignal.com
.The dashboard editor uses a standard HTML field. Special characters like %
may cause display issues in RTL languages. Add RLM marks after such characters to fix formatting problems.
The contents
and headings
fields support multiple languages:
From Messages > Email > New Message or Templates, choose from:
Use Liquid syntax and property or tag substitution to create conditional statements in the message and render the appropriate content based on the user’s language.
Example of a multi-language email template using Liquid syntax.
Use Dynamic Content which involves creating and uploading a CSV file with the languages you support.
Using the Create message API, you can:
custom_data
, property or tag substitution. See Message Personalization for more details on these options.custom_data
bulk personalization example:
Customer sees:
To send a language-specific In-App Message to each language you need to support:
Use Liquid syntax and tag substitution to create conditional statements in the message and render the appropriate content based on tags.
Only Tag substitution is supported for in-app messages.
From Messages > SMS > New Message or Templates, choose from:
Use Dynamic Content which involves creating and uploading a CSV file with the languages you support.
The contents
and headings
fields support multiple languages:
Language code maps to the language
user property in the ISO 639-1 code 2-letter format. We support the following language codes.
If the language code is not included in the pop-up and CSV template, then this language is not supported. We recommend using the next best language and sending us a product request to support@onesignal.com
Language | Language Code |
---|---|
English | en |
Arabic | ar |
Azerbaijani | az |
Bosnian | bs |
Catalan | ca |
Chinese (Simplified) | zh-Hans |
Chinese (Traditional) | zh-Hant |
Croatian | hr |
Czech | cs |
Danish | da |
Dutch | nl |
Estonian | et |
Finnish | fi |
French | fr |
Georgian | ka |
Bulgarian | bg |
German | de |
Greek | el |
Hindi | hi |
Hebrew | he |
Hungarian | hu |
Indonesian | id |
Italian | it |
Japanese | ja |
Korean | ko |
Latvian | lv |
Lithuanian | lt |
Malay | ms |
Norwegian | nb |
Persian | fa |
Polish | pl |
Portuguese | pt |
Punjabi | pa |
Romanian | ro |
Russian | ru |
Serbian | sr |
Slovak | sk |
Spanish | es |
Swedish | sv |
Thai | th |
Turkish | tr |
Ukrainian | uk |
Vietnamese | vi |
Send personalized messages in multiple languages across push, email, and in-app messaging using OneSignal’s dashboard or API.
This guide explains how to set a user’s language in OneSignal and send messages in their preferred language across push notifications, emails, and in-app messages.
OneSignal automatically sets the language
property from the device’s language when a user is first created using the web or mobile SDKs.
You can also manually set or update the user’s language using the ISO 639-1 2-letter language code with:
setLanguage
method.language
field in the Create user or Update user APIs.language
column in the CSV Importer.See Supported languages for a list of valid language codes.
Use tabs below to view localization options by messaging channel.
From Messages > Push > New Message or Templates, click Add Languages. Choose from:
Select languages you support. Any language not selected will fall back to Any/English.
Using checkboxes to select the languages.
Use the provided template to format the message in each language.
Modal to copy and paste data from a spreadsheet.
Copy and paste the content back into the “Add Languages” field.
Modal with example data.
Preview content to double-check, insert content, and new tabs will appear in the editor with the designated content filled out.
Content preview.
Use Dynamic Content which involves creating and uploading a CSV file with the languages you support.
en
as default.language_code
, title
, subtitle
, message
support@onesignal.com
.The dashboard editor uses a standard HTML field. Special characters like %
may cause display issues in RTL languages. Add RLM marks after such characters to fix formatting problems.
The contents
and headings
fields support multiple languages:
From Messages > Push > New Message or Templates, click Add Languages. Choose from:
Select languages you support. Any language not selected will fall back to Any/English.
Using checkboxes to select the languages.
Use the provided template to format the message in each language.
Modal to copy and paste data from a spreadsheet.
Copy and paste the content back into the “Add Languages” field.
Modal with example data.
Preview content to double-check, insert content, and new tabs will appear in the editor with the designated content filled out.
Content preview.
Use Dynamic Content which involves creating and uploading a CSV file with the languages you support.
en
as default.language_code
, title
, subtitle
, message
support@onesignal.com
.The dashboard editor uses a standard HTML field. Special characters like %
may cause display issues in RTL languages. Add RLM marks after such characters to fix formatting problems.
The contents
and headings
fields support multiple languages:
From Messages > Email > New Message or Templates, choose from:
Use Liquid syntax and property or tag substitution to create conditional statements in the message and render the appropriate content based on the user’s language.
Example of a multi-language email template using Liquid syntax.
Use Dynamic Content which involves creating and uploading a CSV file with the languages you support.
Using the Create message API, you can:
custom_data
, property or tag substitution. See Message Personalization for more details on these options.custom_data
bulk personalization example:
Customer sees:
To send a language-specific In-App Message to each language you need to support:
Use Liquid syntax and tag substitution to create conditional statements in the message and render the appropriate content based on tags.
Only Tag substitution is supported for in-app messages.
From Messages > SMS > New Message or Templates, choose from:
Use Dynamic Content which involves creating and uploading a CSV file with the languages you support.
The contents
and headings
fields support multiple languages:
Language code maps to the language
user property in the ISO 639-1 code 2-letter format. We support the following language codes.
If the language code is not included in the pop-up and CSV template, then this language is not supported. We recommend using the next best language and sending us a product request to support@onesignal.com
Language | Language Code |
---|---|
English | en |
Arabic | ar |
Azerbaijani | az |
Bosnian | bs |
Catalan | ca |
Chinese (Simplified) | zh-Hans |
Chinese (Traditional) | zh-Hant |
Croatian | hr |
Czech | cs |
Danish | da |
Dutch | nl |
Estonian | et |
Finnish | fi |
French | fr |
Georgian | ka |
Bulgarian | bg |
German | de |
Greek | el |
Hindi | hi |
Hebrew | he |
Hungarian | hu |
Indonesian | id |
Italian | it |
Japanese | ja |
Korean | ko |
Latvian | lv |
Lithuanian | lt |
Malay | ms |
Norwegian | nb |
Persian | fa |
Polish | pl |
Portuguese | pt |
Punjabi | pa |
Romanian | ro |
Russian | ru |
Serbian | sr |
Slovak | sk |
Spanish | es |
Swedish | sv |
Thai | th |
Turkish | tr |
Ukrainian | uk |
Vietnamese | vi |