← ClaudeAtlas

i18n-readylisted

Make generated UI code translatable and right-to-left safe. Use when the user mentions i18n, l10n, internationalization, localization, translation, multiple languages, RTL, right to left, Hebrew, Arabic, Persian, Urdu, locale formatting, pluralization, or says the layout breaks in another language. Also apply while building any UI that will ship in more than one language, before the strings are hardcoded and expensive to extract.
finestructure-ai/humanizer-multilingual · ★ 0 · AI & Automation · score 70
Install: claude install-skill finestructure-ai/humanizer-multilingual
# Internationalization ready Generated UI is English-shaped. Strings are baked into components, plurals are a ternary, dates are `toLocaleDateString()` with no locale, and every margin is `margin-left`. All of it works, right up to the day someone asks for a second language, and then it is a rewrite instead of a translation. The cost of fixing this is roughly ten times higher after launch than during. That is the entire argument for this skill. ## Scan first ```bash node "${CLAUDE_PLUGIN_ROOT}/skills/i18n-ready/scripts/i18n-scan.mjs" . ``` It finds hardcoded user-facing strings, ternary pluralization, physical CSS properties, and locale-naive formatting. `--json` for machine output. Read `references/rules.md` for the full rule set with fixes. ## The four failures, in order of cost ### 1. Hardcoded strings ```jsx <button>Save changes</button> ``` Every literal in JSX that a user reads is a string that has to be found and extracted later, by hand, across the whole codebase. ```jsx <button>{t('settings.save')}</button> ``` Do this while writing, not after. Extraction is the expensive part, not translation. ### 2. Pluralization by ternary ```jsx {count === 1 ? 'item' : 'items'} ``` This is correct in English and wrong in most of the world. Russian has three plural forms, Arabic has six, Japanese has one, Polish has four and the rule depends on the last two digits. A ternary cannot express any of that. ```jsx {t('cart.items', { count })} ``` Let the i18n library a