
Handles internationalization setup for apps that need multi-language support. You get translation key patterns for React, Next.js, and Python, plus a file structure for organizing locale files by feature. The real value is the RTL support guidance with CSS logical properties and a checker script to catch hardcoded strings before they ship. Most useful when you're adding i18n to an existing app or starting a new project that needs to support multiple regions from day one. The checklist covers the basics like pluralization and date formatting, though you'll still need to choose your specific i18n library based on your stack.
$ npx -y skills add sickn33/antigravity-awesome-skills --skill i18n-localization --agent claude-codeInstalls into .claude/skills of the current project.
Internationalization (i18n) and Localization (L10n) best practices.
| 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) |
| Project Type | i18n Needed? |
|---|---|
| Public web app | ✅ Yes |
| SaaS product | ✅ Yes |
| Internal tool | ⚠️ Maybe |
| Single-region app | ⚠️ Consider future |
| Personal project | ❌ Optional |
import { useTranslation } from 'react-i18next';
function Welcome() {
const { t } = useTranslation();
return <h1>{t('welcome.title')}</h1>;
}
import { useTranslations } from 'next-intl';
export default function Page() {
const t = useTranslations('Home');
return <h1>{t('title')}</h1>;
}
from gettext import gettext as _
print(_("Welcome to our app"))
locales/
├── en/
│ ├── common.json
│ ├── auth.json
│ └── errors.json
├── tr/
│ ├── common.json
│ ├── auth.json
│ └── errors.json
└── ar/ # RTL
└── ...
| 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 |
/* CSS Logical Properties */
.container {
margin-inline-start: 1rem; /* Not margin-left */
padding-inline-end: 1rem; /* Not padding-right */
}
[dir="rtl"] .icon {
transform: scaleX(-1);
}
Before shipping:
The bundled checker is a heuristic, capped at 50 sorted source files. It uses English-biased regexes and directory-based JSON locale grouping; gettext catalogs and messages/en.json layouts are not fully checked for key parity. Report actual sampled/discovered counts and parse failures; a clean sample does not certify completeness, translation quality or accessibility. Mirror only directional icons for RTL (for example navigation arrows), not every logo, image or media control.
| Script | Purpose | Command |
|---|---|---|
scripts/i18n_checker.py | Detect hardcoded strings & missing translations | python scripts/i18n_checker.py <project_path> |
This skill is applicable to execute the workflow or actions described in the overview.
Sponsors