i18n-readylisted
Install: claude install-skill KyaniteLabs/tastecheck
# i18n-Ready (bilingual by design, not by patch)
Design for the longest honest string; translate meaning, not words. English/Spanish is the
worked pair; the method generalizes.
## Make a locale contract before translating or resizing
Record a locale contract before resizing/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 is 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 full text.
3. Use logical inline/block properties for RTL and `Intl` with real locales for formats.
4. Re-express native voice/idiom/formality (including tú/usted); do not calque.
5. For an in-product language choice, self-label/persist the control, update `lang`, and
provide `hreflang`/per-locale metadata for indexed locale routes where applicable.
## Non-negotiables
- Correct language attributes, longest-string-safe layout, and logical CSS—no text images