Home / Tutorials / Web Widget / Supported Languages

Web Widget languages — 50 out of the box.

Every string in the Knocket Web Widget — the greeting, the composer placeholder, the "Sending…" label, the error toasts — is shipped in 50 languages and switched automatically based on the visitor's browser locale. Right-to-left scripts flip the layout without any config on your end.

Reference Updated Sep 4, 2026 ~3 min read

Overview — what "supported" means

A language ships in the Web Widget when every user-visible string in the chat UI has a translation reviewed by a native speaker. That includes the composer placeholder, the send button tooltip, connection-state banners, quick-reply chips, and every error toast. If a string can't be translated with a straight equivalent (idioms, culture-specific phrasing), the review pass writes a locale-appropriate rewrite rather than falling back to English.

The list on this page is the actual runtime table — the widget loader ships these codes and pulls the matching pack on first paint.

◈ TL;DR

50 languages · 4 right-to-left scripts · 14 writing systems · zero config to enable. The widget auto-detects the visitor's locale.

Coverage at a glance

50
Languages
14
Writing Systems
4
RTL Scripts
3.1B
Speakers Covered
Latin 29
Han 3
Cyrillic 3
Devanagari 3
Arabic 3
Hangul 1
Thai 1
Hebrew 1
Greek 1
Tamil 1
Telugu 1
Bengali 1
Malayalam 1
Gujarati 1

How the visitor's language is detected

Detection runs once, at widget mount, and picks the first hit in this order:

  1. Explicit override. If your page sets window.Knocket.locale = 'ja' before the widget loads, that wins. See Override in Code.
  2. HTML lang attribute. If <html lang="fr"> is present, the widget adopts it. This is the cleanest option for multilingual sites — set it server-side per page.
  3. Browser locale. Falls back to navigator.languages[0]. Region variants collapse to the base language (e.g. pt-BR → pt).
  4. English. If none of the above matches a shipped pack, the widget stays in English rather than a partially translated state.

The full list — 50 languages

Ranked by global speaker count. Every row is a shipping language pack; the code column is the exact string the widget expects.

# Native name English name Code Example — "Chat with us"
1 English English en Chat with us
2 简体中文 Chinese Simplified zh-Hans 在线咨询
3 日本語 Japanese ja チャットで相談
4 Deutsch German de Chatten Sie mit uns
5 español Spanish es Chatea con nosotros
6 português Portuguese pt Fale conosco
7 français French fr Discutez avec nous
8 한국어 Korean ko 문의하기
9 繁體中文 Chinese Traditional zh-Hant 線上諮詢
10 italiano Italian it Chatta con noi
11 polski Polish pl Napisz do nas
12 русский Russian ru Напишите нам
13 Bahasa Indonesia Indonesian id Hubungi kami
14 Türkçe Turkish tr Bize yazın
15 Nederlands Dutch nl Chat met ons
16 हिन्दी Hindi hi हमसे चैट करें
17 العربية الفصحى Modern Standard Arabic ar تحدث معنا
18 Tiếng Việt Vietnamese vi Trò chuyện với chúng tôi
19 ภาษาไทย Thai th แชทกับเรา
20 українська Ukrainian uk Напишіть нам
21 čeština Czech cs Napište nám
22 română Romanian ro Discută cu noi
23 Bahasa Melayu Malay ms Sembang dengan kami
24 עברית Hebrew he שוחחו איתנו
25 svenska Swedish sv Chatta med oss
26 dansk Danish da Chat med os
27 suomi Finnish fi Ota yhteyttä
28 norsk bokmål Norwegian Bokmål nb Chat med oss
29 magyar Hungarian hu Írjon nekünk
30 ελληνικά Greek el Μιλήστε μαζί μας
31 slovenčina Slovak sk Napíšte nám
32 български Bulgarian bg Пишете ни
33 српски Serbian sr Ћаскајте са нама
34 hrvatski Croatian hr Razgovarajte s nama
35 català Catalan ca Xateja amb nosaltres
36 தமிழ் Tamil ta எங்களுடன் அரட்டையடிக்கவும்
37 తెలుగు Telugu te మాతో చాట్ చేయండి
38 বাংলা Bengali bn আমাদের সাথে চ্যাট করুন
39 Filipino Filipino fil Makipag-chat sa amin
40 فارسی Persian fa با ما گفتگو کنید
41 اردو Urdu ur ہم سے چیٹ کریں
42 Kiswahili Swahili sw Zungumza nasi
43 lietuvių Lithuanian lt Susisiekite su mumis
44 latviešu Latvian lv Runāt ar mums
45 slovenščina Slovenian sl Klepetajte z nami
46 eesti Estonian et Vestle meiega
47 मराठी Marathi mr आमच्याशी चॅट करा
48 മലയാളം Malayalam ml ഞങ്ങളോട് ചാറ്റ് ചെയ്യൂ
49 ગુજરાતી Gujarati gu અમારી સાથે ચેટ કરો
50 नेपाली Nepali ne हामीसँग च्याट गर्नुहोस्

Override in code

If you already know the visitor's preferred language (from your app state, an account setting, or a URL param), tell the widget explicitly:

<script>
  window.Knocket = window.Knocket || {};
  window.Knocket.locale = 'ja'; // must be set before the loader script
</script>
<script src="https://cdn.knocket.ai/w.js" async></script>

Or after the widget has mounted, change it live:

Knocket('setLocale', 'zh-Hans');

The widget re-renders every string, flips direction for RTL languages, and keeps the current conversation intact.

Fallback behavior

Two edge cases worth calling out:

  • Unshipped locale. If you pass an unknown code (e.g. xx or an obscure regional variant), the widget falls back to English silently and reports the miss in the console analytics.
  • Regional fallback. Regional codes collapse to their base language when a regional pack isn't shipped. pt-BR → pt, en-GB → en. Simplified/Traditional Chinese are separate packs (zh-Hans vs zh-Hant) — do not alias them.
Back to the Web Widget tutorial

See how localization fits with theming, positioning, and the rest of the widget config.

Open the tutorial →