i18nlisted
Install: claude install-skill kouroshez/coding-os
# Internationalization & Localization — One Codebase, Every Locale
A practical guide to building software that adapts to language, region, and script without forking the code per market. Stack-agnostic; recipes target react-i18next / FormatJS (ICU) / next-intl / vue-i18n on the client and ICU / gettext on the server. The distinction that frames everything: **i18n** (internationalization) is the engineering to *make* software localizable; **l10n** (localization) is the per-locale *content and adaptation* that engineering enables.
## When to Use This Skill
- Extracting hardcoded UI strings into a message catalog for the first time.
- Choosing an i18n library and message format (ICU MessageFormat vs gettext).
- Handling plurals/gender/grammar that differ by language (not every language has "1 vs many").
- Formatting dates, numbers, currency, and lists per locale.
- Supporting right-to-left (Arabic, Hebrew) and bidirectional text.
- Designing the locale-resolution chain (URL / header / cookie / user preference).
- Wiring the translator workflow — extraction, a translation-management system, re-import.
Skip when: the only concern is screen-reader/keyboard access for a single language — that is a11y. This skill is the language-and-locale dimension; the two compose (a localized UI must still be accessible).
## Rule Zero — Never Concatenate Translated Strings
The defining beginner mistake: `t("Hello") + " " + name + t("!")` or building a sentence from fragments. Word order, agr