More screenshots

    Works with the AI tools you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIGitHub CopilotGitHub CopilotGemini CLIGemini CLI+20 more

    I18n Auditor

    1

    You're launching in Japan next month. Your React app works perfectly in English.

    Free

    6 installsSecurity scanned
    i18n-auditor

    i18n-auditor

    Example session with this skill installed

    "Audit this React app for i18n readiness. We're launching in Germany and Japan."

    • Read your context and instructions
    • Compiled the i18n-auditor
    • Generated the document
    i18n Audit Report — 14 findings across 8 files ================================================ [CRITICAL] Hardcoded user-facing string bypasses translation system **File:** src/components/Header.tsx:23 **Found:** Welcome to Dashboard **Fix:** Replace with {t('header.welcome')} or [CRITICAL] Text concatenation breaks word order in other languages **File:** src/components/UserCard.tsx:34 **Found:** "Welcome back, " + user.name + "!" **Fix:** Use ICU message: t('welcome_back', { name: user.name }) [HIGH] Missing translation key in locale files **Key:** "settings.notifications.email" **Missing in:** locales/ja.json, locales/de.json **Present in:** locales/en.json (value: "Email notifications") [HIGH] Hardcoded date format — will not adapt to user locale **File:** src/utils/formatDate.ts:12 **Found:** date.toLocaleDateString('en-US') **Fix:** Use navigator.language or

    i18n-auditor.pdf

    PDF · document

    Generated

    Example file from a real run - the skill writes it into your workspace.

    Connects securely to your tools. The creator never sees your data.

    About this skill

    The Problem

    You're launching in Japan next month. Your React app works perfectly in English. Then you discover that "Welcome back, {name}!" is hardcoded as string concatenation — which puts the name before the greeting in Japanese (where the name comes first). Your date formatting uses new Date().toLocaleDateString() without a locale parameter, so it displays in the user's browser language — except when it doesn't, because some browsers fall back to US English. Your currency displays as $12.99 even for Japanese users. Three locale files are missing 12 keys each. And your sidebar CSS uses margin-left: 16px which breaks when you add Arabic (RTL) support.

    Each of these is a different category of i18n failure — structural (hardcoded strings bypassing the translation system), linguistic (text concatenation that breaks word order), formatting (locale-unaware dates/numbers/currency), completeness (missing keys across locales), and layout (LTR-biased CSS properties). A code review catches some. A launch in a new market catches the rest — and by then it's a fire drill.

    What You Get

    • Hardcoded string detection — finds user-facing text that bypasses the translation system entirely: JSX text content, button labels, error messages, placeholder text, toast notifications, and tooltip strings
    • Translation key audit — compares keys across all locale files to find missing translations (key exists in en.json but not ja.json) and orphaned keys (defined but never referenced in code)
    • Locale-awareness check — identifies new Date() without locale, .toLocaleString() with hardcoded locale, string concatenation with user data, hardcoded currency symbols, and locale-unaware number formatting
    • Pluralization validation — checks ICU message format syntax, missing one/other plural forms, and CLDR plural rule compliance
    • RTL CSS audit — scans for LTR-biased properties (margin-left, padding-right, float: left) that need logical equivalents (margin-inline-start, padding-inline-end, float: inline-start)
    • Multi-framework support — React (react-i18next, react-intl), Vue (vue-i18n), Angular (@angular/localize), Next.js (next-intl), Node.js (i18next, formatjs), Django (gettext), Rails (i18n), Flutter (intl)

    Why This Beats Prompting It Yourself

    Manual i18n review requires checking every file for text that should be translated, comparing every locale file for key completeness, examining every date/number/currency format for locale awareness, and auditing CSS for RTL compatibility — a process that takes hours and misses patterns you don't think to check. The auditor runs all six scan categories simultaneously, classifies findings by severity (Critical = string completely bypasses translation; High = translation system used but with gaps), and provides the exact fix pattern for each framework.

    Example Session

    You: "Audit this React app for i18n readiness. We're launching in Germany and Japan."

    Agent:

    i18n Audit Report — 14 findings across 8 files
    ================================================
    
    [CRITICAL] Hardcoded user-facing string bypasses translation system
      File: src/components/Header.tsx:23
      Found: <h1>Welcome to Dashboard</h1>
      Fix: Replace with {t('header.welcome')} or <Trans i18nKey="header.welcome" />
    
    [CRITICAL] Text concatenation breaks word order in other languages
      File: src/components/UserCard.tsx:34
      Found: "Welcome back, " + user.name + "!"
      Fix: Use ICU message: t('welcome_back', { name: user.name })
    
    [HIGH] Missing translation key in locale files
      Key: "settings.notifications.email"
      Missing in: locales/ja.json, locales/de.json
      Present in: locales/en.json (value: "Email notifications")
    
    [HIGH] Hardcoded date format — will not adapt to user locale
      File: src/utils/formatDate.ts:12
      Found: date.toLocaleDateString('en-US')
      Fix: Use navigator.language or
    

    Use Cases

    • Pre-launch i18n readiness — scan entire codebase before entering a new market
    • PR review for i18n compliance — check that new features use the translation system and don't introduce hardcoded strings
    • Translation file health check — verify all locale files are in sync with no missing or orphaned keys
    • RTL layout preparation — identify CSS properties needing logical equivalents before adding Arabic/Hebrew support
    • Framework migration validation — when switching i18n libraries (e.g., react-intl → next-intl), verify all strings ported correctly

    Known Limitations

    The auditor performs static analysis on source files — it cannot detect strings rendered from external APIs, CMS content, or dynamic key construction (t('section.' + variable)). Translation quality (accuracy, tone, cultural appropriateness) is not evaluated — only structural completeness. Binary files, minified code, and compiled output are excluded from scanning.

    How to install

    Works the same in every agent - Claude, Cursor, Codex, Copilot and 20+ more.

    ~30 seconds
    1. 1

      Download the ZIP

      Free skills download straight away. Paid skills unlock right after purchase.

    2. 2

      Unzip into your skills folder

      Every agent reads skills from one folder on your machine. Drop the unzipped folder in there.

    3. 3

      Ask your agent to use it

      Restart the agent if it was already running. It picks the skill up automatically - no config needed.

    Skills folder by agent

    Click the path to copy it. Create the folder if it does not exist yet.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill passes our trust checks below.

    Security scanned

    Passed our 8-point scan before listing

    6 installs

    Downloaded by developers to date

    Free forever

    No account required to browse

    Trust & safety

    Security scanned

    Verified clean 3 months ago

    • Free to download with an account

    Listed3 months ago
    Updated9 days ago

    What's inside

    Frequently Asked Questions