Reference
Supported Languages
langctl works with any language you can identify with a standard language code, and stores all text as Unicode. This reference lists common languages and their codes.
Language Codes
langctl uses BCP 47 language codes: a lowercase ISO 639 language code (en, fil), optionally followed by a region (ISO 3166-1, e.g. pt-BR) or a script (e.g. zh-Hans).
Note
The language part must be lowercase: use en and pt-BR, not EN or PT-BR.
Format
- Base language:
en(English) - Regional variant:
en-US(English - United States),en-GB(English - United Kingdom) - Script variant:
zh-Hans(Chinese - Simplified),zh-Hant(Chinese - Traditional)
Commonly Used Languages
The most popular languages for international applications:
| Code | Language | Native Name | Speakers |
|---|---|---|---|
en | English | English | 1.5B |
zh | Chinese | 中文 | 1.1B |
es | Spanish | Español | 559M |
hi | Hindi | हिन्दी | 602M |
ar | Arabic | العربية | 274M |
pt | Portuguese | Português | 264M |
bn | Bengali | বাংলা | 272M |
ru | Russian | Русский | 258M |
ja | Japanese | 日本語 | 125M |
de | German | Deutsch | 134M |
fr | French | Français | 280M |
ko | Korean | 한국어 | 81M |
it | Italian | Italiano | 85M |
tr | Turkish | Türkçe | 88M |
pl | Polish | Polski | 45M |
European Languages
Western Europe
| Code | Language | Native Name |
|---|---|---|
en | English | English |
fr | French | Français |
de | German | Deutsch |
es | Spanish | Español |
it | Italian | Italiano |
pt | Portuguese | Português |
nl | Dutch | Nederlands |
da | Danish | Dansk |
no | Norwegian | Norsk |
sv | Swedish | Svenska |
fi | Finnish | Suomi |
is | Icelandic | Íslenska |
Central & Eastern Europe
| Code | Language | Native Name |
|---|---|---|
pl | Polish | Polski |
cs | Czech | Čeština |
sk | Slovak | Slovenčina |
hu | Hungarian | Magyar |
ro | Romanian | Română |
bg | Bulgarian | Български |
uk | Ukrainian | Українська |
ru | Russian | Русский |
hr | Croatian | Hrvatski |
sr | Serbian | Српски |
sl | Slovenian | Slovenščina |
lt | Lithuanian | Lietuvių |
lv | Latvian | Latviešu |
et | Estonian | Eesti |
Asian Languages
East Asia
| Code | Language | Native Name | Notes |
|---|---|---|---|
zh | Chinese | 中文 | Simplified by default |
zh-Hans | Chinese (Simplified) | 简体中文 | Mainland China |
zh-Hant | Chinese (Traditional) | 繁體中文 | Taiwan, Hong Kong |
ja | Japanese | 日本語 | Hiragana, Katakana, Kanji |
ko | Korean | 한국어 | Hangul |
Southeast Asia
| Code | Language | Native Name |
|---|---|---|
vi | Vietnamese | Tiếng Việt |
th | Thai | ไทย |
id | Indonesian | Bahasa Indonesia |
ms | Malay | Bahasa Melayu |
fil | Filipino | Filipino |
km | Khmer | ភាសាខ្មែរ |
lo | Lao | ລາວ |
my | Burmese | မြန်မာဘာသာ |
South Asia
| Code | Language | Native Name |
|---|---|---|
hi | Hindi | हिन्दी |
bn | Bengali | বাংলা |
ur | Urdu | اردو |
te | Telugu | తెలుగు |
ta | Tamil | தமிழ் |
mr | Marathi | मराठी |
gu | Gujarati | ગુજરાતી |
kn | Kannada | ಕನ್ನಡ |
ml | Malayalam | മലയാളം |
pa | Punjabi | ਪੰਜਾਬੀ |
West Asia & Middle East
| Code | Language | Native Name | Direction |
|---|---|---|---|
ar | Arabic | العربية | RTL |
he | Hebrew | עברית | RTL |
fa | Persian (Farsi) | فارسی | RTL |
tr | Turkish | Türkçe | LTR |
az | Azerbaijani | Azərbaycan | LTR |
ka | Georgian | ქართული | LTR |
Right-to-Left Languages
langctl supports RTL languages like Arabic, Hebrew and Persian. In the dashboard, translation fields for right-to-left languages are marked and displayed right-to-left.
Using Languages in langctl
Adding Languages to a Project
Via Dashboard
- Select the project in the sidebar
- Open Languages
- Click Add Language
- Search for the language and select it
The dashboard offers a list of common languages (the base codes such as en, es, pt, zh). To add other codes, including regional and script variants like pt-BR or zh-Hant, use the CLI.
The number of languages per project depends on your plan: 3 on Free, 10 on Starter, unlimited on Pro and above.
Via CLI
langctl projects add-language my-project ja
langctl projects add-language my-project ja ko zh
langctl projects add-language my-project en-US en-GB pt-BR The default language is the source language for translations and AI translation, and the language langctl push uploads by default:
langctl projects create "My App" \
--default-language en \
--languages en,es,fr,de
langctl projects update my-app --default-language en Warning
Changing the default language affects AI translation behavior. The default language is used as the source for all AI translations.
AI Translation Coverage
AI translation uses DeepL, which supports many but not all languages. If DeepL can’t translate between two languages, langctl shows an error naming the pair; you can still add those translations by hand, by import or from the CLI.
Use regional variants for locale-specific differences:
| Code | Variant | Spelling Differences |
|---|---|---|
en-US | US English | color, center, favorite |
en-GB | British English | colour, centre, favourite |
en-AU | Australian English | Similar to GB with local terms |
en-CA | Canadian English | Mix of US/GB spelling |
| Code | Variant | Notes |
|---|---|---|
es-ES | Spain Spanish | Vosotros form, European terms |
es-MX | Mexican Spanish | Most common in North America |
es-AR | Argentine Spanish | Voseo usage |
| Code | Variant | Script | Region |
|---|---|---|---|
zh-Hans | Simplified | 简体 | Mainland China, Singapore |
zh-Hant | Traditional | 繁體 | Taiwan, Hong Kong, Macau |
langctl projects create "Mobile App" \
--languages en,zh-Hans,zh-Hant
langctl keys create mobile-app home.welcome \
--value en="Welcome" \
--value zh-Hans="欢迎" \
--value zh-Hant="歡迎" Languages that read right-to-left:
- Arabic (
ar) - Hebrew (
he) - Persian/Farsi (
fa) - Urdu (
ur)
/* CSS automatically applied for RTL languages */
[dir="rtl"] {
text-align: right;
direction: rtl;
} langctl supports full Unicode (UTF-8):
- Latin scripts: Basic Latin, Latin Extended
- Cyrillic: Russian, Ukrainian, Bulgarian
- CJK: Chinese, Japanese, Korean
- Arabic: Arabic, Persian, Urdu
- Indic: Devanagari, Bengali, Tamil, Telugu
- Other: Greek, Hebrew, Thai, Georgian
Tip
All files written by langctl pull and langctl export use UTF-8. Ensure your application supports UTF-8 to display all languages correctly.
Track translation progress per language:
langctl projects stats my-project projects stats shows key counts and, for each language, how many keys are translated. In CI, langctl pull --require-complete exits with an error if any language is missing translations.
Begin with 2-3 languages and expand:
--languages en,es
langctl projects add-language my-app fr de it
langctl projects add-language my-app ja zh ko Only add variants when there are significant differences:
--languages en-US,en-GB,pt-BR,pt-PT
--languages es-ES,es-MX,es-AR,es-CO # Start with just es Add languages based on your user base:
- Analyze user location data
- Add top 3-5 language markets first
- Ensure 100% completion before adding more
- Expand gradually based on growth
--languages en,es,pt,fr,de,ja,zh --languages en,de,fr,es,it,pl,nl --languages en,zh-Hans,ja,ko,th,vi,id Check that translations exist:
langctl projects stats my-project # translated/total per language
langctl keys get my-project home.welcome # all translations of one key
langctl pull --require-complete # fail if any language is incomplete Ensure UTF-8 encoding:
<!-- HTML -->
<meta charset="UTF-8">
<!-- iOS Strings file -->
// Save with UTF-8 encoding
<!-- Android XML -->
<?xml version="1.0" encoding="utf-8"?> Next Steps
- Export Formats - Format-specific requirements
- Web Integration - Framework setup
- Mobile Integration - iOS and Android
- Subscription & Usage - Language limits by plan