Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support.
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:
| Script | Purpose | Command |
|--------|---------|---------|
| scripts/i18n_checker.py | Detect hardcoded strings & missing translations | python scripts/i18n_checker.py <project_path> |
ElevenLabs text-to-speech with mac-style say UX.
Control Philips Hue lights and scenes via the OpenHue CLI.
OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
BluOS CLI (blu) for discovery, playback, grouping, and volume.
Notion API for creating and managing pages, databases, and blocks.
Transcribe audio via OpenAI Audio Transcriptions API (Whisper).
Category:developer