| name | i18n |
| description | Internationalization and localization |
| license | MIT |
| metadata | {"audience":"developers","category":"software-development"} |
What I do
- Prepare software for multiple languages
- Handle text expansion and contraction
- Manage date, time, and number formats
- Support right-to-left (RTL) languages
- Implement locale-specific content
- Structure translation workflows
When to use me
When building applications that need to support multiple languages, regions, or cultural preferences.
Key Concepts
i18n vs l10n
i18n: Internationalization - code preparation
l10n: Localization - language/region adaptation
Implementation Patterns
t('greeting', { name: 'John' })
t('items', { count: n, plural: true })
Common Libraries
from babel import Locale
from django.utils import translation
import i18next from 'i18next';
import { IntlMessageFormat } from 'intl-messageformat';
import java.text.MessageFormat;
import java.util.Locale;
RTL Support
[dir="rtl"] {
direction: rtl;
text-align: right;
}
.sidebar { margin-left: 1rem; }
[dir="rtl"] .sidebar { margin-right: 1rem; }
Formatting by Locale
Dates: en-US: 1/15/2026, en-GB: 15/01/2026
Numbers: en: 1,234.56, de: 1.234,56
Currency: $1,234.56, €1.234,56
Best Practices
- Externalize all strings
- Use ICU message format
- Test with pseudo-locales
- Plan for text expansion (+30%)
- Separate locale from logic
- Use language codes (ISO 639-1)