Build
i18n & Localization
Making products work across languages and regions.
Busted
- Address & name format varianceNames and addresses have different shapes per country, so a fixed First/Last plus State/ZIP form quietly locks out much of the world.
- BCP 47 language tagThe standard tag behind values like en, en-GB, and zh-Hant-TW, combining a language with optional script, region, and variants.
- Bidi isolationA boundary that keeps an embedded Arabic, Hebrew, English, URL, or username run from rearranging the punctuation and text around it.
- Bidirectional text (bidi)What happens when English words, numbers, or URLs sit inside Arabic or Hebrew text and the browser decides which way each run should go.
- Character encoding (UTF-8)The agreement on which bytes mean which characters. UTF-8 covers every script and emoji; mismatch it and 'café' turns into 'café'.
- CLDRUnicode's shared locale dataset for plural rules, date and number patterns, calendars, currencies, sorting, and localized place names.
- Content negotiationHTTP letting the server choose a language or format from request headers, such as Accept-Language or Accept, before sending the response.
- Currency formatting & displayWriting money the local way: symbol before or after, local separators, and the decimal count the currency itself demands (JPY has none).
- ECMAScript Internationalization API (Intl)JavaScript's built-in locale toolkit: give it a locale tag and it formats dates, numbers, currency, lists, and plurals the local way.
- Fuzzy matchAn old translation offered because its source text is close, but not identical, to the new string. Useful head start, mandatory review.
- gettext / PO filesThe classic translation catalog where msgid source strings map to msgstr translations, with context and language-specific plurals.
- Grammatical genderNoun classes that make nearby words change form, which is why an adjective, article, or pronoun cannot always be translated by itself.
- Grapheme clusterThe unit a person sees as one character, even when Unicode stores it as several code points. Use it for correct counting and truncation.
- hreflangThe tag that tells search engines 'this page also exists in French and German', so they can point each searcher at the right version.
- i18n (internationalization)Building the app so it can speak any language later: no hardcoded text, no baked-in date or currency formats. The prep, not the translating.
- ICU MessageFormatA mini-syntax inside a translation string that picks the right wording for counts, gender, and variables. One string covers '1 item' and '5 items'.
- In-context editingA translation mode where you click words on the rendered page, edit them with the surrounding UI visible, and save them back to the catalog.
- International phone number normalization (E.164)Turning a locally typed phone number into one stored form such as +14155552671, with country code included and extensions kept separately.
- l10n (localization)Adapting an already-prepped product for one specific place: its language, formats, currency, tone, and imagery. The work after i18n.
- Language negotiationHow your app decides which language to serve: browser Accept-Language, a saved choice, or the URL, matched against the locales you actually ship.
- Language switcherThe visible control for changing language, listing each option in its own language rather than hiding behind a flag icon.
- Linguistic QA (LQA)A structured in-context review that catches translations which are inaccurate, awkward, inconsistent, too formal, or wrong for the screen.
- LocaleA tag like en, en-GB, or pt-BR (region optional) that decides which words, date order, decimal mark, and sort order the app uses.
- Locale dataThe maintained data behind local date patterns, number symbols, plural rules, alphabet order, and other behavior exposed through Intl.
- Locale fallback chainThe ordered list your app walks when a string is missing: try pt-BR, then pt, then English, instead of showing a raw key or an empty box.
- Locale routing (URL strategy)Giving every language its own URL (site.com/es/, es.site.com, or site.es) so each translation can be linked, cached, and indexed on its own.
- Locale-aware date/time formattingWriting a timestamp the way the reader's region writes it: 3/4 is April in London and March in Chicago, and Europe wants 15:00 not 3 PM.
- Locale-aware sorting (collation)Sorting words with the alphabet rules of the active language, so names land where local readers expect instead of following character codes.
- Locale-specific imagerySwapping photos, screenshots, colors, or gestures when the original image would confuse, exclude, or read differently in another market.
- Localization testingThe QA pass that runs your product in each target locale to catch burst layouts, wrong formats, leaked English, and translations that read wrong.
- Logical propertiesCSS that says 'inline-start' instead of 'left', so margins, padding, and borders flip themselves when the page switches to a right-to-left language.
- Message catalogEvery translation key and its text for one language, held in one file or split across many: the whole app's wording in German.
- MT post-editing (MTPE)A human checks machine-translated text against the source, fixes meaning and terminology, and brings it up to a defined quality level.
- Non-Gregorian calendarsDisplaying dates in systems such as Hijri, Hebrew, or Japanese eras, with real calendar rules instead of relabeling a Gregorian date.
- Number formattingSame number, different clothes: 1,234,567.89 in the US is 1.234.567,89 in Germany and 12,34,567.89 in India. The locale picks the separators.
- Over-the-air (OTA) translation updatesSending corrected or newly translated strings to installed apps without a store release, with bundled copy kept as the safe fallback.
- Pluralization rulesLanguages don't all split counts into one and many. Russian has four buckets, Arabic six, Japanese one, and your strings have to handle each.
- Pseudo-localizationA fake locale that turns English into accented, padded look-alike text so you catch hardcoded strings and layout breaks before real translation starts.
- Register and formalityThe locale-specific choice between formal and familiar address, affecting pronouns, verbs, greetings, and how close the product sounds.
- Right-to-left (RTL) layoutFlipping the whole interface to run right to left for Arabic, Hebrew, and Farsi: text, reading order, and where everything sits on the page.
- RTL layout mirroringThe design work behind an RTL flip: back arrows point the other way, padding swaps sides, progress fills from the right. Clocks stay put.
- SegmentThe chunk a translator works on, usually one sentence or UI string, paired with its translated version in the translation tool.
- Source languageThe original language and locale that translators work from, such as en-US, before versions for other locales are created.
- String concatenationThe translation-breaking habit of gluing sentence pieces together in code, leaving translators unable to reorder words or handle grammar.
- String extractionSweeping every hardcoded label out of the code into a translatable file, leaving a lookup key behind where the text used to be.
- String freezeThe pre-release cutoff when UI wording stops changing so translators and localization QA can finish against a stable build.
- Terminology database (termbase)A ruled list of your product's terms: this one gets the approved wording, that one is never translated at all.
- Text expansionTranslations are longer than the English original, so buttons, tabs, and cards that fit perfectly in English burst in German.
- Time zone handling (IANA tzdb)Store real instants in UTC, then show them in a named zone like Asia/Kolkata so daylight saving and historical offset rules stay correct.
- TMS (translation management system)The platform where your extracted strings meet translators: push keys up, assign languages, get finished catalogs back into the repo.
- TranscreationRewriting persuasive copy so it creates the same reaction in another culture, even when the words, joke, or reference must change.
- Translation contextThe notes, screenshots, and limits attached to a string so a translator knows whether 'Open' is a button, a status, or an adjective.
- Translation keyThe stable ID like 'checkout.button.pay' that the code asks for, so every locale can answer with its own wording.
- Translation memory (TM)A searchable bank of previously approved source and translated sentences, used to reuse exact wording and suggest close matches.
- Unicode normalization (NFC/NFD)Putting equivalent Unicode spellings into one form so a precomposed accent and the same combining accent compare as the same text.
- Units & measurement conversionShowing the same quantity in the units people expect, such as miles, Celsius, or A4, while keeping one canonical value underneath.
- XLIFFThe standard XML package used to send source strings and context to translation tools, then bring completed translations back.
The territory
30 core terms mapped for this field, ranked by how often builders reach for them. Each one is a future entry. Want to bust one? One entry, one file, one pull request.
- i18n (internationalization)Prepping code so it can adapt to any locale"making the app translation-ready" · "getting the hardcoded text out"
- l10n (localization)Adapting a prepped product to one specific locale"actually translating it for Germany" · "the Spanish version"
- localeLanguage plus region code controlling text, dates, currency"the country-language combo" · "en-US vs en-GB thing"
- string extractionPulling hardcoded UI text into external translatable files"getting text out of the code" · "collecting all the words"
- translation keyStable ID mapping to a translated string per locale"the label ID" · "the lookup name for the text"
- message catalogFile holding all keys and translations for one locale"the translation file" · "the big JSON of strings"
- ICU MessageFormatStandard syntax for plurals, gender, and variables in strings"the curly-brace plural syntax" · "how you say 1 item vs 2 items"
- pluralization rulesPer-language count categories beyond English's one/many"Russian has like six plural forms" · "handling 0, 1, many"
- interpolation (placeholders)Injecting dynamic values into translated sentences safely"putting the username inside the sentence" · "the variable slots"
- right-to-left (RTL) layoutLayout mode for Arabic, Hebrew, Farsi scripts"flipping the whole UI backwards" · "Arabic mode"
- bidirectional text (bidi)Mixing RTL and LTR runs in one string correctly"English words inside Arabic text look scrambled" · "bidi"
- RTL layout mirroringReversing icons, padding, and direction for RTL locales"the arrows should point the other way" · "layout flipping"
- logical propertiesCSS start/end instead of left/right, auto-flips for RTL"margin that knows about Arabic" · "inline-start stuff"
- text expansionTranslations growing longer and breaking fixed-width layouts"German words blow up my buttons" · "text overflows after translating"
- pseudo-localizationFake accented, lengthened strings to test i18n readiness"the fake language with weird characters" · "Ĥéļļö Ŵöŕļð test"
- localization testingVerifying translated UI, formats, and layouts across target locales"checking the app in every language" · "QA pass for the translations"
- locale fallback chainCascading to a parent locale when a translation is missing"if pt-BR is missing, use pt then English"
- language negotiationPicking a locale from Accept-Language header or preference"auto-detecting the visitor's language"
- locale routing (URL strategy)Subpath, subdomain, or ccTLD scheme per language"/es/ vs es.site.com" · "how to structure language URLs"
- hreflangHTML/sitemap tag telling search engines a page's locale variants"telling Google which country version to show"
- ECMAScript Internationalization API (Intl)Built-in JS formatting for dates, numbers, currency, lists"the native browser thing that formats numbers" · "Intl API"
- locale-aware date/time formattingOrdering, separators, 12/24-hour per region"is 03/04 March or April" · "the 24-hour clock in Europe"
- number formattingLocale rules for decimals, grouping separators, percentages, and signs"1,000.5 versus 1.000,5" · "how numbers look in other countries"
- currency formatting & displaySymbol placement, separators, decimals per locale"1.000,50 € versus $1,000.50"
- character encoding (UTF-8)Byte standard covering all scripts and emoji"why accents turn into question marks" · "mojibake fix"
- TMS (translation management system)Platform routing strings to translators and back to code"the place translators work" · "the translation dashboard"
- translation contextMetadata telling translators where a string appears"translators need to see the screen" · "screenshots and notes for translators"
- terminology database (termbase)Locked list of brand and product terms never translated"words that must stay in English" · "the glossary"
- address & name format varianceField order, honorifics, single-name users per country"some people don't have a last name" · "the postcode goes somewhere else"
- language switcherVisible control listing available locales in their own names"the flag dropdown" · "the language picker in the footer"
Deeper in the field
- string freeze Cutoff date after which UI copy can't change before release
- segment The unit of translation, usually a sentence or string
- fuzzy match TM suggestion that partially matches a new segment
- XLIFF Interchange file format for exchanging translations with vendors
- gettext / PO files Classic key-value translation format with plural support
- content negotiation Server choosing a response variant from request headers
- time zone handling (IANA tzdb) Storing UTC and rendering in the user's zone
- non-Gregorian calendars Hijri, Hebrew, Japanese-era date systems
- Unicode normalization (NFC/NFD) Canonical form so accented characters compare equal
- grapheme cluster User-perceived character; correct unit for length and truncation
- international phone number normalization (E.164) Canonical international storage format for phone numbers
- units & measurement conversion Metric/imperial, paper sizes, temperature per locale
- locale-specific imagery Swapping photos, colors, gestures that read differently
- in-context editing Translating directly on the live rendered page
- over-the-air (OTA) translation updates Shipping new strings without an app release
- translation memory (TM) Reusable database of previously translated segments
- CLDR Unicode's canonical data for formats, plurals, names, calendars
- MT post-editing (MTPE) Human cleanup of machine-translated output
- transcreation Rewriting marketing copy for cultural impact, not literally
- locale-aware sorting (collation) Alphabetical ordering rules that differ per language
- BCP 47 language tag Standard identifier combining language, script, region, and variants
- linguistic QA (LQA) Review of translations for accuracy, fluency, consistency, and context
- string concatenation Anti-pattern that blocks translators from reordering a full sentence
- source language Original language content is written in before translation
- grammatical gender Noun classes forcing adjective, pronoun, and article agreement
- register and formality Formal versus informal address choices appropriate to each locale
- bidi isolation Marks that stop embedded text from scrambling surrounding direction
- locale data Structured regional conventions powering formatting and language behavior