title | type | order |
---|---|---|
Multi-Language |
api |
11 |
Sendwithus handles internationalization by using Jinja2 style trans blocks.
The easiest way to set up templates for translation is to use the trans block syntax. A string can be marked for translation by simply wrapping it in a trans block. For example, the internationalized version of "Hello World" is "{% trans %}Hello World{% endtrans %}".
Variables in trans block can be added like normal template variables. For example "Hello {{ name }}" will become "{% trans %}Hello {{ name }}{% endtrans %}". Multiple variables can be used in the same trans block.
Translation packages (.pot files) can be downloaded via API, and then corresponding string files (.po) can be uploaded via API, which will trigger translated template variants to be generated.
This call will fetch a .pot translation package for all templates that have been assigned the corresponding tag.
GET /i18n/pot/(:tag)
- tag -- String will return a .pot file only for templates that have the corresponding tag. Tags can be set via the Sendwithus dashboard.
Fetch .pot for template with tag "international".
GET /i18n/pot/international
The reponse is a valid .pot file.
msgid "Welcome to Sendwithus, %(first_name)s!"
msgstr ""
msgid "Confirm your email"
msgstr ""
Use this endpoint to POST a .zip file containing .po files. Each .po file should be named to match the locale it is intended for. See examples below for specifics.
POST /i18n/po/(:tag)
- tag -- String of tag; templates with that tag applied will have a locale generated for each .po file in the .zip file
- .zip file
Example .zip structure:
translations.zip
├── fr-FR.po
└── ja-JP.po
Post translations.zip for templates with tag "international".
POST /i18n/po/international
{}
At send time, Sendwithus uses the locale parameter in the Send API, and matches it against the template version for that locale. This is why .po files must have a filename that matches the locale.
For an example sending with a translated template, please see the send API documentation.
We follow the IETF Language Tag standard which consists of a 2 character language code and a 2 character country code separated by a hyphen. Example: 'en-US' is the code for English (United States)
IETF Language Tags: http://en.wikipedia.org/wiki/IETF_language_tag
The prefix, in this case 'en', is a language code following the ISO 639-1 standard.
ISO 639-1: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
The suffix, in this case 'US', is a country code following the ISO 3166-1 Alpha-2 standard.
ISO 3166-1 Alpha-2: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
The Locale codes that we currently support are as follows:
en-US => English (United States)
af-ZA => Afrikaans (South Africa)
am-ET => Amharic (Ethiopia)
ar-AE => Arabic (UAE)
ar-BH => Arabic (Bahrain)
ar-DZ => Arabic (Algeria)
ar-EG => Arabic (Egypt)
ar-JO => Arabic (Jordan)
ar-KW => Arabic (Kuwait)
ar-LB => Arabic (Lebanon)
ar-MA => Arabic (Morocco)
ar-OM => Arabic (Oman)
ar-QA => Arabic (Qatar)
ar-SA => Arabic (Saudi Arabia)
ar-SD => Arabic (Sudan)
az-AZ => Azerbaijani (Azerbaijan)
be-BY => Belarusian (Belarus)
bg-BG => Bulgarian (Bulgaria)
bn-BD => Bengali (Bangladesh)
bn-MY => Bengali (Malaysia)
ca-ES => Catalan (Spain)
cs-CZ => Czech (Czech Republic)
da-DK => Danish (Denmark)
de-AT => German (Austria)
de-BE => German (Belgium)
de-CH => German (Switzerland)
de-DE => German (Germany)
de-LI => German (Liechtenstein)
de-LU => German (Luxembourg)
el-CY => Greek (Cyprus)
el-GR => Greek (Greece)
en-AE => English (UAE)
en-AL => English (Albania)
en-AM => English (Armenia)
en-AO => English (Angola)
en-AR => English (Argentina)
en-AT => English (Austrian)
en-AU => English (Australia)
en-AZ => English (Azerbaijan)
en-BB => English (Barbados)
en-BD => English (Bangladesh)
en-BE => English (Belgium)
en-BG => English (Bulgaria)
en-BH => English (Bahrain)
en-BO => English (Bolivia)
en-BR => English (Brazil)
en-BS => English (Bahamas)
en-BW => English (Botswana)
en-CA => English (Canada)
en-CH => English (Switzerland)
en-CL => English (Chile)
en-CN => English (China)
en-CO => English (Columbia)
en-CR => English (Costa Rica)
en-CY => English (Cyprus)
en-CZ => English (Czech Republic)
en-DE => English (Germany)
en-DK => English (Denmark)
en-DO => English (Dominican Republic)
en-DZ => English (Algeria)
en-EC => English (Ecuador)
en-EE => English (Estonia)
en-EG => English (Egypt)
en-ES => English (Spain)
en-ET => English (Ethiopia)
en-FI => English (Finland)
en-FR => English (France)
en-GB => English (Great Britain)
en-GH => English (Ghana)
en-GI => English (Gibraltar)
en-GR => English (Greece)
en-GT => English (Guatemala)
en-HK => English (Hong Kong)
en-HN => English (Honduras)
en-HR => English (Croatia)
en-HU => English (Hungary)
en-ID => English (Indonesia)
en-IE => English (Ireland)
en-IL => English (Israel)
en-IN => English (India)
en-IS => English (Iceland)
en-IT => English (Italy)
en-JM => English (Jamaica)
en-JO => English (Jordan)
en-JP => English (Japan)
en-KE => English (Kenya)
en-KH => English (Cambodia)
en-KR => English (Kuwait)
en-KW => English (Korean)
en-KZ => English (Kazakhstan)
en-LA => English (Laos)
en-LB => English (Lebanon)
en-LK => English (Sri Lanka)
en-LT => English (Lithuania)
en-LU => English (Luxembourg)
en-LV => English (Latvia)
en-MA => English (Morocco)
en-MC => English (Monaco)
en-MD => English (Moldova)
en-MM => English (Myanmar)
en-MN => English (Mongolia)
en-MX => English (Mexico)
en-MY => English (Malaysia)
en-NG => English (Nigeria)
en-NL => English (Netherlands)
en-NO => English (Norway)
en-NP => English (Nepal)
en-NZ => English (New Zealand)
en-OM => English (Oman)
en-PA => English (Panama)
en-PE => English (Peru)
en-PH => English (Philippines)
en-PK => English (Pakistan)
en-PL => English (Poland)
en-PT => English (Portugal)
en-PY => English (Paraguay)
en-QA => English (Qatar)
en-RO => English (Romania)
en-RS => English (Serbia)
en-RU => English (Russia)
en-SA => English (Saudi Arabia)
en-SD => English (Sudan)
en-SE => English (Sweden)
en-SG => English (Singapore)
en-SI => English (Slovenia)
en-SK => English (Slovakia)
en-SV => English (El Salvador)
en-TH => English (Thailand)
en-TR => English (Turkey)
en-TT => English (Trinidad and Tobago)
en-TW => English (Taiwan)
en-UA => English (Ukraine)
en-UY => English (Uruguay)
en-UZ => English (Uzbekistan)
en-VN => English (Vietnam)
en-ZA => English (South Africa)
es-AR => Spanish (Argentina)
es-BO => Spanish (Bolivia)
es-CL => Spanish (Chile)
es-CO => Spanish (Colombia)
es-CR => Spanish (Costa Rica)
es-DO => Spanish (Dominican Republic)
es-EC => Spanish (Ecuador)
es-ES => Spanish (Spain)
es-GT => Spanish (Guatemala)
es-HN => Spanish (Honduras)
es-LA => Spanish (Latin America)
es-MX => Spanish (Mexico)
es-PA => Spanish (Panama)
es-PE => Spanish (Peru)
es-PY => Spanish (Paraguay)
es-SV => Spanish (El Salvador)
es-US => Spanish (United States)
es-UY => Spanish (Uruguay)
es-VE => Spanish (Venezuela)
et-EE => Estonian (Estonia)
fi-FI => Finnish (Finland)
fr-BE => French (Belgium)
fr-CA => French (Canada)
fr-CD => French (Congo)
fr-CH => French (Switzerland)
fr-CI => French (Cote d'Ivoire)
fr-CL => French (Chile)
fr-CM => French (Cameroon)
fr-FR => French (France)
fr-GF => French (French Guiana)
fr-LB => French (Lebanon)
fr-LU => French (Luxembourg)
fr-MA => French (Morocco)
fr-MC => French (Monaco)
he-IL => Hebrew (Israel)
hi-IN => Hindi (India)
hr-HR => Croatian (Croatia)
hu-HU => Hungarian (Hungary)
hy-AM => Armenian (Armenia)
id-ID => Indonesian (Indonesia)
id-MY => Indonesian (Malaysia)
is-IS => Icelandic (Iceland)
it-CH => Italian (Switzerland)
it-IT => Italian (Italy)
it-MC => Italian (Monaco)
ja-JP => Japanese (Japan)
ka-GE => Georgian (Georgia)
kk-KZ => Kazakh (Kazakhstan)
km-KH => Khmer (Cambodia)
ko-KR => Korean (Korea)
lb-LU => Latvian (Latvia)
lo-LA => Laotian (Laos)
lt-LT => Luxembourgish (Luxembourg)
lv-LV => Lithuanian (Lithuania)
mk-MK => Macedonian (North Macedonia)
mn-MN => Mongolian (Myanmar)
ms-MY => Malay (Malaysia)
my-MM => Mongolian (Mongolia)
nb-NO => Norwegian Bokmal (Norway)
ne-MY => Nepali (Malaysia)
ne-NP => Nepali (Nepal)
nl-BE => Dutch (Belgium)
nl-NL => Dutch (Netherlands)
nl-SR => Dutch (Suriname)
nn-NO => Norwegian Nynorsk (Norway)
no-NO => Norwegian (Norway)
pl-GB => Polish (Great Britain)
pl-PL => Polish (Poland)
ps-AF => Pashto (Afghanistan)
pt-AO => Portuguese (Angola)
pt-BR => Portuguese (Brazil)
pt-PT => Portuguese (Portugal)
ro-MD => Romanian (Moldova)
ro-RO => Romanian (Romania)
ru-KZ => Russian (Kazakhstan)
ru-RU => Russian (Russia)
si-LK => Sinhala (Sri Lanka)
sk-SK => Slovak (Slovakia)
sl-SI => Slovenian (Slovenia)
sq-AL => Albanian (Albania)
sr-RS => Serbian (Serbia)
sv-SE => Swedish (Sweden)
sw-KE => Swahili (Kenya)
ta-LK => Tamil (Sri Lanka)
th-AU => Thai (Australia)
th-NZ => Thai (New Zealand)
th-TH => Thai (Thailand)
tl-AU => Tagalog (Australia)
tl-NZ => Tagalog (New Zealand)
tl-PH => Tagalog (Philippines)
tr-CY => Turkish (Cyprus)
tr-TR => Turkish (Turkey)
uk-UA => Ukrainian (Ukraine)
ur-PK => Urdu (Pakistan)
uz-UZ => Uzbek (Uzbekistan)
vi-AU => Vietnamese (Australia)
vi-CA => Vietnamese (Canada)
vi-NZ => Vietnamese (New Zealand)
vi-US => Vietnamese (United States)
vi-VN => Vietnamese (Vietnam)
zh-CN => Chinese (China)
zh-HK => Chinese (Hong Kong)
zh-TW => Chinese (Taiwan)