i18n-readylisted
Install: claude install-skill KyaniteLabs/tastecheck
# i18n-Ready (bilingual by design, not by patch)
Design for the longest honest string, then translate meaning—not words. English/Spanish
is the worked pair; the structural method generalizes.
## Make a locale contract before translating or resizing
Record a locale contract before resizing or translating:
| Boundary | Required decision/evidence |
| --- | --- |
| locale/reader | concrete BCP 47 tag, fallback/owner, formality and regional vocabulary |
| content | whole-message keys, variables/plurals, protected legal/safety language |
| mechanics | formats and data source for date/time zone/number/currency/address/name |
| stress/direction | longest approved fixture by surface; current `dir`, RTL/bidi/logical-property path |
Never invent locale, idiom, translation, or formality; pending source/approval means
structural readiness only.
## The decision order
1. Set `<html lang>` and inline `lang` switches.
2. Test the longest approved fixture; text containers/content-sized controls avoid fixed
widths. Intentional truncation exposes reachable full text.
3. Use logical inline/block properties for RTL readiness, and `Intl` with real locales
for all mechanical formats.
4. Re-express native voice/idiom/formality (including tú/usted); do not calque.
5. When the product offers an in-product language choice, self-label and persist the
control and update `lang`; provide `hreflang` and per-locale metadata for indexed
locale routes where applicable.
## Non-negotiables
-