Claude-skill-registry i18n-localization

Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/i18n-localization-berkantyilmaz0-megastore" ~/.claude/skills/majiayu000-claude-skill-registry-i18n-localization-549e26 && rm -rf "$T"
manifest: skills/data/i18n-localization-berkantyilmaz0-megastore/SKILL.md
source content

i18n & Yerelleştirme

Uluslararasılaştırma (i18n) ve Yerelleştirme (L10n) en iyi uygulamaları.


1. Temel Kavramlar

TerimAnlamı
i18nUluslararasılaştırma - uygulamayı çevrilebilir hale getirme
L10nYerelleştirme - gerçek çeviriler
LocaleDil + Bölge (en-US, tr-TR)
RTLSağ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 çeviriVarsayılan dile geri dön (fallback)
Sabit kodlanmış dizelerLinter/denetleyici script kullan
Tarih formatıIntl.DateTimeFormat kullan
Sayı formatıIntl.NumberFormat kullan
ÇoğullaştırmaICU 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

ScriptAmaçKomut
scripts/i18n_checker.py
Sabit kodlanmış dizeleri & eksik çevirileri algıla
python scripts/i18n_checker.py <project_path>