Skip to content
Back to skills

I18n

ASecurity

Audit internationalization coverage and find hardcoded strings. Use when asked to "check i18n", "find hardcoded strings", or verify translation coverage. Don't use for backend code, projects without an i18n library, accessibility (/a11y-audit), or bundle size (/perf-audit).

  • 16 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
ai-agentsreactvuebackend

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add helderberto/agent-skills --skill i18n --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of I18n?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for I18n
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/helderberto-i18n/badge)](https://www.skillsdirectory.com/skills/helderberto-i18n)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: i18n
description: Audit internationalization coverage and find hardcoded strings. Use when asked to "check i18n", "find hardcoded strings", or verify translation coverage. Don't use for backend code, projects without an i18n library, accessibility (/a11y-audit), or bundle size (/perf-audit).
user-invocable: false
---

# i18n Audit

## Detection

Read `package.json` for i18n library:
- `react-i18next` / `i18next`
- `next-intl`
- `vue-i18n`
- `react-intl` (FormatJS)

Read locale files to understand key structure (e.g. `src/locales/en.json`).

## Workflow

1. Detect i18n library and locale file locations
2. Search JSX/TSX/Vue files for hardcoded user-facing strings:
   - String literals in JSX: `<p>Hello world</p>`
   - String props: `placeholder="Search..."`, `label="Submit"`
   - `aria-label="Close menu"`
3. Compare locale files — find missing keys between locales
4. Report findings

## Output format

**Hardcoded strings** (`file:line`):
```
src/components/Header.tsx:12  "Welcome back"  → suggest key: header.welcomeBack
src/components/Form.tsx:34    placeholder="Search..."  → suggest key: form.searchPlaceholder
```

**Missing translations** (key present in base locale but absent in others):
```
Key: dashboard.emptyState  missing in: pt-BR, es
Key: errors.networkTimeout  missing in: pt-BR
```

## Rules

- Only flag user-visible strings (skip internal IDs, CSS classes, URLs, enum values)
- Suggest translation key names in camelCase matching project convention
- Never auto-modify locale files — report only

## Error Handling

- If no i18n library detected → report project may not use i18n; still list any hardcoded strings found
- If no locale files found → skip missing-key comparison; only report hardcoded strings
- If locale files are not JSON (e.g. `.po`, `.yaml`) → read them anyway and adapt key comparison logic

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…