Skip to content
better-i18n.com

Languages is a page in your project, next to Translations — not a settings screen. It answers two questions: which languages ship, and how far each one has got.

The three states a language can be in #

This is the part worth knowing before anything else, because it is how you work on a language without shipping it.

StatusIn the editorOn the CDN
ActiveVisiblePublished
DraftVisibleExcluded
ArchivedHiddenExcluded

Draft is for a language you are still filling in: your team can translate it in the editor, and publishing skips it. Switch it to Active when it is ready, and the next publish picks it up.

Archived is the reversible way to stop shipping a language. Nothing is deleted — the translations stay, the language just leaves the editor and the CDN. If you think you might want a language back, archive it instead of deleting it.

Adding languages #

  1. Open Languages in your project
  2. Click Add language — the Manage languages dialog opens
  3. Search by code, name, or native name (languages are grouped by region)
  4. Select as many as you want, then save

You can add several at once, and you can set each one to Active or Draft as you add it. Existing keys show as missing for a new language until something fills them.

Reading the table #

ColumnWhat it tells you
CoveragePercentage of keys with a translation
TranslatedHow many keys are done
MissingHow many are not

Above the table: overall coverage across the project, total keys, total missing, and how many languages need attention.

Sort by Coverage to see the weakest language first, by Missing for the biggest backlog, alphabetically, or drag the rows into your own order — a custom order is saved for the project, including where the source language sits.

Removing a language #

Removing deletes that language's translations. The confirmation tells you exactly how many are about to go:

1,248 translations will also be deleted. This action cannot be undone.

If it has none, it says so instead. There is no undo and no export step in the dialog, so if the translations took work, archive instead — same effect on your app, nothing lost.

Changing the source language #

The source language is the one your code is written in, and every translation is produced from it. It lives in Settings → CDN, not on the Languages page:

  1. Settings → CDN
  2. Source Language → pick the language
  3. Save

What your app gets for a missing translation #

By default, nothing — the key is absent from that language's CDN payload and your SDK falls back on its own.

Settings → CDN → CDN Fallback changes that: missing translations are filled with the source-language value. Your app then always receives a string, at the cost of showing English (or whatever your source is) where a translation is not ready yet. Which one you want depends on whether a visible English string is better or worse than a visible key.

Language codes #

Codes are IETF BCP 47 — en, tr, fr, de, ja for plain languages, and a region or script where it matters: pt-BR, zh-Hans, zh-Hant. The code is what your SDK asks the CDN for, so it has to match the locale your app uses. Search the Manage languages dialog by code if you are not sure which variant you want.

Right-to-left languages #

Better i18n stores a text direction for every language, so Arabic, Hebrew, and Persian are known to be RTL rather than guessed from the code.

Applying it is your app's job: set dir="rtl" on the document when an RTL locale is active. The SDK returns strings, not layout — nothing about the CDN payload flips your CSS for you.