i18n-localization
sickn33/agentic-awesome-skills
Detect hardcoded strings, manage translations, and implement RTL support across locales.
What is i18n-localization?
This skill provides internationalization (i18n) and localization (L10n) patterns for making applications translatable and locale-aware. Use it when building public web apps, SaaS products, or any application targeting multiple languages and regions.
- Detect hardcoded strings in code using automated checker scripts
- Manage translation files organized by locale and feature namespace
- Support right-to-left (RTL) languages with CSS logical properties
- Handle pluralization and complex messages using ICU message format
- Format dates and numbers according to locale using Intl API
- Provide fallback language configuration for missing translations
How to install i18n-localization
npx skills add https://github.com/sickn33/agentic-awesome-skills --skill i18n-localizationHow to use i18n-localization
- 1.Choose an i18n library appropriate for your framework (react-i18next for React, next-intl for Next.js, gettext for Python)
- 2.Create a locales directory structure organized by language code and feature namespace
- 3.Replace hardcoded strings in components with translation key references using the library's hook or function
- 4.Run the i18n_checker.py script to detect any remaining hardcoded strings: python scripts/i18n_checker.py <project_path>
- 5.Add locale files (JSON or PO format) for each supported language with translated content
- 6.Configure fallback language and locale detection in your application setup
- 7.Test RTL layout using CSS logical properties (margin-inline-start, padding-inline-end) instead of directional properties
- 8.Validate date and number formatting using Intl.DateTimeFormat and Intl.NumberFormat APIs
Use cases
- Converting a single-language React app to support multiple locales using react-i18next
- Setting up translation file structure and namespace organization for a new SaaS product
- Implementing RTL layout support for Arabic and Hebrew language versions
- Detecting and replacing hardcoded strings in an existing codebase before internationalization
- Configuring Next.js with next-intl for multi-language page routing
- Frontend developers building multi-language applications
- Full-stack engineers working on SaaS or public web products
- Teams expanding existing apps to new regions or languages
- Developers implementing accessibility and localization standards
i18n-localization FAQ
i18n (internationalization) is the process of making your app translatable by using translation keys instead of hardcoded strings. L10n (localization) is the actual translation of content into specific languages and regions.
Implement i18n early for public web apps and SaaS products. For internal tools, consider it if future expansion is likely. For personal projects, it's optional.
Use flexible layouts and avoid hardcoding text dimensions. German text is typically 30% longer than English, so plan for expansion in your UI design.
Use the included i18n_checker.py script with your project path to automatically scan for hardcoded strings and missing translations.
Use CSS logical properties (margin-inline-start, padding-inline-end) instead of directional properties, and apply transform: scaleX(-1) to icons when dir='rtl' is set.
Full instructions (SKILL.md)
Source of truth, from sickn33/agentic-awesome-skills.
name: i18n-localization description: "Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support." risk: safe source: community date_added: "2026-02-27"
i18n & Localization
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> |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Related skills
More from sickn33/agentic-awesome-skills and the wider catalog.

interactive-portfolio
Build portfolios that convert visitors into job offers and client opportunities.

langgraph
Production-grade framework for building stateful, multi-actor AI applications with explicit graph structure.

last30days
Research any topic from the last 30 days across Reddit, X, and the web to become an expert and generate ready-to-use prompts.

lint-and-validate
Run lint and type checks, distinguish failures from unrun checks, and report concrete validation results.

micro-saas-launcher
Launch profitable micro-SaaS products in weeks using indie hacker strategies and proven frameworks.

mobile-design
Mobile-first design system preventing desktop-thinking and unsafe assumptions in app development.