i18n & Localization
SkillFiles & storageThe i18n-localization skill is a set of internationalization and localization patterns for AI agents. It helps your agent find hardcoded strings in code, set up locale files, and apply translation patterns such as react-i18next, next-intl, or gettext. It also covers pluralization, date and number formats, and RTL layout.
Use i18n & Localization in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add i18n & Localization and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the i18n & Localization skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
No other account needed.
Have a project with user-facing text that needs translation.
What your AI can do with it
- Detect hardcoded strings in source files
- Set up locale files for multiple languages
- Apply react-i18next, next-intl, or gettext patterns
- Handle pluralization with ICU message format
- Format dates and numbers per locale with Intl
- Check for missing translations with a checker script
Getting started
- Have a project with user-facing text that needs translation.
- Add the skill to your agent so it can read, glob, and grep your files.
- Ask the agent to scan for hardcoded strings and list them.
- Create locale files for each supported language and move strings into translation keys.
- Run the checker script to find missing translations before shipping.
What this skill tells your AI
The instructions your AI receives, as published by davila7/claude-code-templates in cli-tool/components/skills/development/i18n-localization/SKILL.md and read by ahel’s review.
Internationalization (i18n) and Localization (L10n) best practices.
1. Core Concepts
| Term | Meaning |
|---|---|
| i18n | Internationalization - making app translatable |
| L10n | Localization - actual translations |
| Locale | Language + Region (en-US, tr-TR) |
| RTL | Right-to-left languages (Arabic, Hebrew) |
2. When to Use i18n
| Project Type | i18n Needed? |
|---|---|
| Public web app | ✅ Yes |
| SaaS product | ✅ Yes |
| Internal tool | ⚠️ Maybe |
| Single-region app | ⚠️ Consider future |
| Personal project | ❌ Optional |
3. Implementation Patterns
React (react-i18next)
import { useTranslation } from 'react-i18next';
function Welcome() {
const { t } = useTranslation();
return <h1>{t('welcome.title')}</h1>;
}
Next.js (next-intl)
import { useTranslations } from 'next-intl';
export default function Page() {
const t = useTranslations('Home');
return <h1>{t('title')}</h1>;
}
Python (gettext)
from gettext import gettext as _
print(_("Welcome to our app"))
4. File Structure
locales/
├── en/
│ ├── common.json
│ ├── auth.json
│ └── errors.json
├── tr/
│ ├── common.json
│ ├── auth.json
│ └── errors.json
└── ar/ # RTL
└── ...
5. Best Practices
DO ✅
- Use translation keys, not raw text
- Namespace translations by feature
- Support pluralization
- Handle date/number formats per locale
- Plan for RTL from the start
- Use ICU message format for complex strings
DON'T ❌
- Hardcode strings in components
- Concatenate translated strings
- Assume text length (German is 30% longer)
- Forget about RTL layout
- Mix languages in same file
6. Common Issues
| Issue | Solution |
|---|---|
| Missing translation | Fallback to default language |
| Hardcoded strings | Use linter/checker script |
| Date format | Use Intl.DateTimeFormat |
| Number format | Use Intl.NumberFormat |
| Pluralization | Use ICU message format |
7. RTL Support
/* CSS Logical Properties */
.container {
margin-inline-start: 1rem; /* Not margin-left */
padding-inline-end: 1rem; /* Not padding-right */
}
[dir="rtl"] .icon {
transform: scaleX(-1);
}
8. Checklist
Before shipping:
- All user-facing strings use translation keys
- Locale files exist for all supported languages
- Date/number formatting uses Intl API
- RTL layout tested (if applicable)
- Fallback language configured
- No hardcoded strings in components
Script
| Script | Purpose | Command |
|---|---|---|
scripts/i18n_checker.py | Detect hardcoded strings & missing translations | python scripts/i18n_checker.py <project_path> |
Signals
- GitHub stars
- 32k
- Forks
- 4k
- Last commit
- Oct 2026
Others that do the same job
Questions
- What does the skill do?
- It guides the agent through internationalizing an app: detecting hardcoded strings, setting up locale files, and applying patterns like react-i18next, next-intl, or gettext.
- Does it support RTL languages?
- Yes. It covers RTL layout with CSS logical properties and direction-aware styling for languages such as Arabic and Hebrew.
- How do I find hardcoded strings?
- The skill includes a checker script, scripts/i18n_checker.py, that detects hardcoded strings and missing translations.
- Which translation libraries does it cover?
- It includes patterns for react-i18next, next-intl, and gettext.
- How does it handle pluralization?
- It recommends using the ICU message format for complex strings and pluralization.
Advanced
- Item type
- skill
- Key
i18n-localization- Source
- github.com/davila7/claude-code-templates
github.com/davila7/claude-code-templates
Related picks
Skill · thedaviddias
The pick for JavaScriptmodern-javascript-patterns
Skill · wshobson
The pick for JavaScriptpython-performance-optimization
Skill · wshobson
The pick for Pythonpython-pro
Skill · jeffallan
The pick for Pythonclerk-nextjs-patterns
Skill · clerk
The pick for Next.jslogs-nextjs
Skill · posthog
The pick for Next.js