Languages

Deliverability

Languages

One design, many languages. Translate the subject and the words, keep the layout.

A design can carry translations next to the original. A translation holds a subject, a preheader and the translated words of the blocks that need them. Rendering with a locale lays that over the original, so the layout, colors and images stay the same in every language.

In the editor

Open the Body panel, then Languages. Enter the language the email is written in, add a language code such asfr, ar or pt-BR, then fill in the subject and each block. Preview has a language picker once a translation exists. Right-to-left languages (Arabic, Hebrew, Persian, Urdu) flip the direction and mirror left and right alignment on their own.

In code

ts
import { renderDesign, renderLocales, setTranslation } from "email-craft-sdk";

const next = setTranslation(design, "fr", {
  subject_line: "Bienvenue",
  blocks: { [headingId]: { text: "Bonjour" } }
});

const html = renderDesign(next, { fullDocument: true, locale: "fr" });
const all = renderLocales(next); // [{ locale, subject, html, direction, is_default }, ...]

API and MCP

POST /v3/render and POST /v3/emails take a locale. When no subject is sent, an email goes out with the translated subject. The MCP tools are set_translation, list_locales and a locale argument on render_design.

Good to know

  • A language that has no translation renders the original.
  • Only fields a block already has can be translated, and translated text is cleaned like any other text.
  • The zip export is not localized yet.
  • A countdown's end date is written in the email's language (body.lang), for example 31 ديسمبر 2026، 23:59 UTC in Arabic, and keeps its order in a right-to-left email.

Supported languages

The editor and every export work in any language Unicode covers. The 90 languages below (248 language and region codes) were each written into a design, saved, reopened, exported to HTML and plain text, and imported back from an HTML email, in the React, Angular, Vue and plain JavaScript editors, with nothing lost or changed. An imported email keeps its language (lang) and, for Arabic, Hebrew and the other RTL languages, its right-to-left direction. Typing was tested on the canvas for every script, and input methods (IME) for Chinese, Japanese, Korean, Malayalam, Hindi, Tamil, Bengali, Telugu, Vietnamese, Thai and Arabic.

  • Set Text direction to right to left in the Body panel for Arabic, Hebrew, Persian, Urdu and the other RTL languages: columns flip, and text without its own alignment starts on the right, in the editor and in the email.
  • No-break spaces (French 12 €, Czech 1 234 567) stay no-break in the plain text version.
  • How a script looks in the inbox depends on the reader's fonts. Pick a font with a generic fallback; a web font with none (such as Lato) gets sans-serif or serif added in the export.
LanguageCodes testedScriptDirectionAlso tested
Afrikaansaf-zaLatinLTR
Albaniansq-alLatinLTR
AmharicamEthiopicLTRtyped
Arabicar, ar-dz, ar-bh, ar-eg, ar-iq, ar-jo, ar-kw, ar-lb, ar-ly, ar-ma, ar-om, ar-qa, ar-sa, ar-sy, ar-tn, ar-ae, ar-yeArabicRTLtyped, IME (Arabic keyboard)
Armenianhy-amArmenianLTRtyped
AssameseasBengaliLTR
Azerbaijaniaz, cy-az-az, lt-az-azLatin, CyrillicLTR
Basqueeu-esLatinLTR
Belarusianbe-byCyrillicLTR
BengalibnBengaliLTRtyped, IME (Transliteration)
BosnianbsLatinLTRtyped
Bulgarianbg-bgCyrillicLTR
Burmesemy-mmMyanmarLTRtyped
Catalanca-esLatinLTR
Central KurdishckbArabicRTL
Chinesezh, zh-au, zh-ca, zh-cn, zh-fr, zh-hk, zh-it, zh-mo, zh-my, zh-mm, zh-sg, zh-za, zh-tw, zh-chs, zh-cht, zh-usHan (Simplified, Traditional)LTRtyped, IME (Pinyin, Zhuyin)
Croatianhr-hrLatinLTRtyped
Czechcs, cs-czLatinLTR
Danishda-dkLatinLTR
Dhivehidiv-mvThaanaRTL
Dutchnl, nl-be, nl-nlLatinLTR
Englishen, en-au, en-at, en-be, en-bz, en-br, en-bg, en-ca, en-cb, en-cl, en-cn, en-co, en-cz, en-dk, en-do, en-ee, en-fi, en-fr, en-de, en-gr, en-hk, en-hu, en-in, en-id, en-ie, en-it, en-jm, en-jp, en-kr, en-lv, en-lt, en-lu, en-my, en-mx, en-nz, en-no, en-pa, en-pe, en-ph, en-pl, en-pt, en-pr, en-ro, en-ru, en-sg, en-sk, en-si, en-za, en-es, en-se, en-ch, en-th, en-nl, en-tt, en-tn, en-tr, en-gb, en-us, en-uy, en-uz, en-ve, en-vn, en-zwLatinLTR
Estonianet-eeLatinLTR
Faroesefo-foLatinLTR
Filipinofil-phLatinLTR
Finnishfi, fi-fiLatinLTR
Frenchfr, fr-be, fr-ca, fr-fr, fr-lu, fr-mc, fr-ch, fr-tn, fr-usLatinLTR
Galiciangl-esLatinLTR
Georgianka-geGeorgianLTRtyped
Germande, de-at, de-de, de-li, de-lu, de-chLatinLTR
Greekel-grGreekLTRtyped
Gujaratigu-inGujaratiLTRtyped
Hebrewhe-ilHebrewRTLtyped
Hindihi-inDevanagariLTRtyped, IME (Transliteration)
Hungarianhu-huLatinLTR
Icelandicis-isLatinLTR
Indonesianid-idLatinLTR
Italianit, it-it, it-chLatinLTR
Japaneseja, ja-jpJapanese (Kanji, Kana)LTRtyped, IME (Romaji, full-width)
Kannadakn-inKannadaLTRtyped
Kazakhkk-kzCyrillicLTR
Khmerkm-khKhmerLTRtyped
Konkanikok-inDevanagariLTR
Koreanko, ko-krHangulLTRtyped, IME (Hangul jamo)
Kyrgyzky-kzCyrillicLTR
LaoloLaoLTRtyped
Latvianlv-lvLatinLTR
Lithuanianlt-ltLatinLTR
Luxembourgishlb-luLatinLTR
Macedonianmk-mkCyrillicLTR
Malayms, ms-bn, ms-my, ms-sgLatinLTR
MalayalammlMalayalamLTRtyped, IME (Transliteration)
MaltesemtLatinLTR
Marathimr-inDevanagariLTR
Mongolianmn-mnCyrillicLTR
NepalineDevanagariLTR
Norwegianno, no-noLatinLTR
Norwegiannb-noLatinLTR
Norwegiannn-noLatinLTR
OdiaorOdiaLTR
PashtopsArabicRTL
Persianfa-irArabicRTLtyped
Polishpl-plLatinLTR
Portuguesept, pt-br, pt-ptLatinLTR
Punjabipa-inGurmukhiLTRtyped
Romanianro-roLatinLTR
Russianru, ru-ee, ru-kz, ru-lv, ru-lt, ru-ru, ru-uaCyrillicLTRtyped
Sanskritsa-inDevanagariLTR
Scottish GaelicgdLatinLTR
Serbiancy-sr-sp, lt-sr-sp, sr-meLatin, CyrillicLTRtyped
SinhalasiSinhalaLTR
Slovaksk-skLatinLTR
Sloveniansl-siLatinLTR
Spanishes, es-ar, es-bo, es-cl, es-co, es-cr, es-do, es-ec, es-sv, es-gt, es-hn, es-419, es-mx, es-ni, es-pa, es-py, es-pe, es-pr, es-es, es-us, es-uy, es-veLatinLTR
Swahilisw-keLatinLTR
Swedishsv, sv-fi, sv-seLatinLTR
Syriacsyr-sySyriacRTL
TagalogtlLatinLTR
Tamilta-inTamilLTRtyped, IME (Transliteration)
Tatartt-ruCyrillicLTR
Telugute-inTeluguLTRtyped, IME (Transliteration)
Thaith-no, th-sw, th-thThaiLTRtyped, IME (Thai keyboard)
Turkishtr-trLatinLTR
Ukrainianuk-uaCyrillicLTR
Urduur-pkArabicRTLtyped
Uzbekuz, cy-uz-uz, lt-uz-uzLatin, CyrillicLTR
Vietnamesevi-us, vi-vnLatinLTRtyped, IME (Telex)
XhosaxhLatinLTR
YiddishyiHebrewRTL
ZuluzuLatinLTR

Try it in the demo

The live demo has a Language menu with the same 90 languages. It shows the sample email, the library templates and all 48 starter templates in the chosen language, right to left for Arabic, Hebrew, Persian, Urdu and the other RTL languages. Type into any block to check the script on the canvas.

Frequently asked questions#

Which languages does MailKaro support?
Any language Unicode covers. 248 language and region codes, including Arabic, Hindi, Chinese, Malayalam, Bengali and Amharic, were saved, reopened, exported and imported in the React, Angular, Vue and plain JavaScript editors with nothing lost.
Does MailKaro support right-to-left languages?
Yes. Set Text direction to right to left in the Body panel: columns flip, text without its own alignment starts on the right, and the export gets dir="rtl". An imported RTL email keeps its direction and language.
Can one design hold several languages?
Yes. A design carries translations of its subject, preheader and blocks, and rendering with a locale lays the translation over the original, so the layout stays the same.
Can I type Chinese, Japanese or Hindi with an input method?
Yes. Input methods (IME) were tested on the canvas and in the side panel for Chinese, Japanese, Korean, Hindi, Tamil, Telugu, Bengali, Malayalam, Thai, Vietnamese and Arabic.