Learn
Localization, explained
Locale codes that disagree with each other, a language with six plural forms, a placeholder that means something different in every framework. Internationalization is a pile of small, sharp details — these guides work through them one at a time.
Foundations
The vocabulary of localization: what the terms mean and when each one matters.
-
i18n vs l10n: what's the difference?
Internationalization is the engineering work that makes translation possible. Localization is the translation itself. Here is where the line falls and why it matters.
-
What is a Translation Management System?
What a TMS actually does, the problems it solves that a spreadsheet cannot, and how to tell whether your team has outgrown passing files around by email.
-
What is Translation Memory and how does it work?
How translation memory stores and reuses past translations, what fuzzy match percentages actually mean, and why placeholder syntax quietly destroys match rates.
-
What is a locale? Language tags explained (BCP 47)
A locale is more than a language. Here is what it controls — dates, numbers, currency, sorting, plurals — and how BCP 47 language tags are built and matched.
-
Machine translation vs human translation
Where machine translation is genuinely good enough, where it is not, and how to decide per content type instead of arguing about it in the abstract.
-
What is a term base (translation glossary)?
How a term base keeps product names and key terminology consistent across languages, what belongs in one, and why it is not the same thing as translation memory.
-
What is pseudo-localization?
Pseudo-localization finds hard-coded strings and layouts that break under text expansion before you pay a translator. Here is how to generate and read it.
-
Continuous localization explained
How to run translation as a continuous process alongside development, what to do about feature branches, and when agile localization is the better fit.
Locales & plurals
Language tags, plural categories and the message syntax that survives translation.
-
en-GB vs en_GB: hyphen or underscore in locale codes?
The standard says hyphen, half your toolchain says underscore. Here is which format each ecosystem expects, why the split exists, and how to convert between them safely.
-
Plural rules by language: the complete CLDR guide
A reference table of CLDR plural categories for 163 languages, plus why one does not mean 1 and how each i18n framework expects you to spell the rules.
-
ICU MessageFormat: a practical guide
The syntax for plurals, gender selection, number and date formatting in one message string — with the escaping rules and the mistakes translators reliably make.
File formats & placeholders
Every format we parse, and the placeholder syntax hiding inside it.
-
Placeholder formats cheat sheet: %s, %@, %{name}, {{name}}, {0}
Every string placeholder syntax you will meet, which language or framework uses it, and what breaks when a translator retypes one by hand.
-
SRT vs VTT: which subtitle format should you use?
The differences between SubRip and WebVTT that actually matter, how to convert between them, and which one to pick for the web, for broadcast and for translation.
-
Subtitle file formats compared: SRT, VTT, TTML, ASS, SAMI and more
Eight subtitle formats side by side — what each one looks like, what it can express, where it is used, and which to choose for web, broadcast, anime or archive.
Framework guides
Wiring translation into Rails, React, Vue, Django, Laravel and friends.
-
Rails i18n: the complete guide
Setting up Rails internationalization properly: locale files, interpolation, pluralization, lazy lookup, fallbacks, and syncing translations from CI.
-
React i18next: setup and workflow
Setting up i18next in a React app: namespaces, plurals, interpolation, Trans for embedded markup, lazy loading, and keeping translation files in sync.
-
Vue i18n guide
Setting up vue-i18n in a Vue 3 app: Composition API usage, pluralization, named interpolation, lazy-loaded locales and the legacy-mode migration trap.
-
Django translation guide
Django internationalization end to end: gettext markers, lazy translation, plurals, template tags, locale middleware and the makemessages workflow.
-
Laravel localization guide
Laravel translation files, the two lookup styles, pluralization with trans_choice, locale middleware, and syncing PHP and JSON language files from CI.
-
Flutter internationalization
Flutter i18n with ARB files and gen_l10n: setup, ICU plurals and select, placeholders with formatting, locale resolution and keeping ARB files in sync.
-
Next.js internationalization
Internationalizing a Next.js App Router app: routing by locale segment, server and client translation, metadata, hreflang and keeping message files in sync.
Workflow & team
Working with translators, catching broken strings, keeping localization in Git.
-
Localization QA: the validations that catch broken strings
The mechanical checks that catch broken translations before release — placeholders, plurals, HTML, character limits — and why review alone never finds them.
-
Why screenshots matter: visual context for translators
A translator working from a string list is guessing. What context actually resolves ambiguity, and how to supply it without it becoming a full-time job.
-
How to work with freelance translators
Finding, briefing and keeping good translators: what to pay for, which access to grant, and the setup problems that get blamed on translator quality.
-
Git-based localization workflows
How to keep language files in Git without merge conflicts or overwritten translations: branch strategy, CI sync, and what to review in a translation pull request.
Comparisons
Honest comparisons with the other translation management platforms, including where they win.
-
WebTranslateIt vs Crowdin
Crowdin bills words × target languages; we bill source segments. Below three languages they win. Above ten, the same content costs less than half here.
-
WebTranslateIt vs Transifex
Transifex meters hosted words and no longer publishes its prices; we meter source segments and do. Where each one wins, and how to compare them honestly.
-
WebTranslateIt vs Phrase
Phrase is the enterprise-scale option with seat-based pricing. Where that is worth paying for, and where a simpler segment-priced tool fits better.
-
WebTranslateIt vs Lokalise
Lokalise is polished, design-integrated, and meters advanced seats and processed words. Where that earns its cost, and where a segment-priced EU tool fits better.
-
WebTranslateIt vs POEditor
POEditor counts terms plus translations, so target languages multiply the bill. They win at one language and on entry price; past two, segment pricing wins.
-
WebTranslateIt vs Tolgee
Tolgee counts keys once per language, as we do, so the axis is seats rather than languages. Below roughly five seats they win; above it, we do.
-
WebTranslateIt vs Localazy
Localazy counts source keys once per language, as we do, and includes unlimited seats. This is the closest comparison in the category, and they win more of it.
-
Best translation management systems in 2026
A buyer's guide to the main TMS platforms: how their pricing models differ, which shape of team each suits, and the questions that actually decide it.
-
Why does translation software charge per word?
Per-word pricing is inherited from the human translation trade, not designed for software strings. When it works, when it does not, and how to tell which you are.
Stop managing translations in spreadsheets
WebTranslateIt keeps your language files in sync with your repository, validates placeholders and plural forms as translators type, and hands the result back in the exact format your app expects.