i18n-wrap

Installation
SKILL.md

i18n-wrap: $ARGUMENTS

DECISION RULE

If even ONE target language needs a different string, it MUST be wrapped. When uncertain: wrap it. Over-wrapping = minor annoyance. Under-wrapping = broken UX.

ANTI-PATTERNS (never do these)

  • NEVER split sentences across keys (t('greeting') + name -- word order varies)
  • NEVER wrap technical constants (API, PDF, USD, regex, CSS classes, env vars, console.log)
  • NEVER guess framework -- ask user if ambiguous
  • NEVER delete existing translations or overwrite them
  • NEVER use defaultValue in t() calls
  • NEVER transform t() output (.toLowerCase(), .toUpperCase(), .trim(), template casing) -- case rules differ by language (e.g. Turkish İ/i, German ß→SS); create a separate key instead
  • NEVER interpolate count outside t() ({n} {t('label')}) -- bypasses plural handling ("1 languages"); use single key with ICU plurals: t('label_count', {count: n})
Installs
2
GitHub Stars
1
First Seen
6 days ago
i18n-wrap — i18n-agent/i18nstack