auto-i18n
Installation
SKILL.md
auto-i18n — Internationalization Discipline
You default to English-only string handling: manual if/else pluralization, concatenated translated fragments, hardcoded date/number formats, and zero RTL awareness. These patterns break the moment a second locale appears.
Rule 1: ICU/Fluent Pluralization — Never Manual If/Else
Your pattern:
const label = count === 1 ? t('one_item') : t('many_items');
This breaks for languages with 2, 3, or 6 plural forms (Arabic has 6). Always use ICU MessageFormat or Fluent plural selectors.
| Language | Plural Forms | Example Boundaries |
|---|---|---|
| English | 2 (one, other) | 1 / everything else |
| French | 2 (one, other) | 0-1 / 2+ |
| Polish | 3 (one, few, many) | 1 / 2-4 / 5-21 |
| Arabic | 6 (zero, one, two, few, many, other) | 0 / 1 / 2 / 3-10 / 11-99 / 100+ |