Internationalisation et Localisation (i18n/L10n)
Patterns et meilleures pratiques pour l'internationalisation et la localisation. Détection de chaînes en dur, gestion des traductions, fichiers de locale et support RTL.
name: i18n-localization description: Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support. allowed-tools: Read, Glob, Grep
i18n & Yerelleştirme
Uluslararasılaştırma (i18n) ve Yerelleştirme (L10n) en iyi uygulamaları.
1. Temel Kavramlar
| Terim | Anlamı | |------|---------| | i18n | Uluslararasılaştırma - uygulamayı çevrilebilir hale getirme | | L10n | Yerelleştirme - gerçek çeviriler | | Locale | Dil + Bölge (en-US, tr-TR) | | RTL | Sağdan sola diller (Arapça, İbranice) |
2. i18n Ne Zaman Kullanılır
| Proje Türü | i18n Gerekli mi? | |--------------|--------------| | Halka açık web uygulaması | ✅ Evet | | SaaS ürünü | ✅ Evet | | Dahili araç | ⚠️ Belki | | Tek bölgeli uygulama | ⚠️ Geleceği düşün | | Kişisel proje | ❌ İsteğe bağlı |
3. Uygulama Desenleri
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. Dosya Yapısı
locales/
├── en/
│ ├── common.json
│ ├── auth.json
│ └── errors.json
├── tr/
│ ├── common.json
│ ├── auth.json
│ └── errors.json
└── ar/ # RTL
└── ...
5. En İyi Uygulamalar
YAP ✅
- Ham metin değil, çeviri anahtarları kullan
- Çevirileri özelliğe göre ad alanlarına ayır (namespace)
- Çoğullaştırmayı destekle
- Tarih/sayı formatlarını yerel ayara göre işle
- RTL'yi baştan planla
- Karmaşık dizeler için ICU mesaj formatını kullan
YAPMA ❌
- Bileşenlerde dizeleri sabit kodla (hardcode)
- Çevrilmiş dizeleri birleştir (concatenate)
- Metin uzunluğunu varsay (Almanca %30 daha uzundur)
- RTL düzenini unut
- Aynı dosyada dilleri karıştır
6. Yaygın Sorunlar
| Sorun | Çözüm | |-------|----------| | Eksik çeviri | Varsayılan dile geri dön (fallback) | | Sabit kodlanmış dizeler | Linter/denetleyici script kullan | | Tarih formatı | Intl.DateTimeFormat kullan | | Sayı formatı | Intl.NumberFormat kullan | | Çoğullaştırma | ICU mesaj formatı kullan |
7. RTL Desteği
/* CSS Mantıksal Özellikleri */
.container {
margin-inline-start: 1rem; /* margin-left değil */
padding-inline-end: 1rem; /* padding-right değil */
}
[dir="rtl"] .icon {
transform: scaleX(-1);
}
8. Kontrol Listesi
Göndermeden önce:
- [ ] Tüm kullanıcıya dönük dizeler çeviri anahtarlarını kullanıyor
- [ ] Desteklenen tüm diller için yerel ayar dosyaları mevcut
- [ ] Tarih/sayı biçimlendirmesi Intl API kullanıyor
- [ ] RTL düzeni test edildi (varsa)
- [ ] Geri dönüş (fallback) dili yapılandırıldı
- [ ] Bileşenlerde sabit kodlanmış dize yok
Script
| Script | Amaç | Komut |
|--------|---------|---------|
| scripts/i18n_checker.py | Sabit kodlanmış dizeleri & eksik çevirileri algıla | python scripts/i18n_checker.py <project_path> |
Skills similaires
Expert Next.js App Router
Un skill qui transforme Claude en expert Next.js App Router.
Générateur de README
Crée des README.md professionnels et complets pour vos projets.
Rédacteur de Documentation API
Génère de la documentation API complète au format OpenAPI/Swagger.