Skill: i18n Senkronizasyon
> TR/EN dil dosyaları arasında mesaj senkronizasyonu ve tutarlılık kontrolü
Best use case
Skill: i18n Senkronizasyon is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
> TR/EN dil dosyaları arasında mesaj senkronizasyonu ve tutarlılık kontrolü
Teams using Skill: i18n Senkronizasyon should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/i18n-sync/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Skill: i18n Senkronizasyon Compares
| Feature / Agent | Skill: i18n Senkronizasyon | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
> TR/EN dil dosyaları arasında mesaj senkronizasyonu ve tutarlılık kontrolü
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Skill: i18n Senkronizasyon
> TR/EN dil dosyaları arasında mesaj senkronizasyonu ve tutarlılık kontrolü
---
## Ön Koşullar
- `lang/tr.sh` ve `lang/en.sh` dosyaları mevcut
- Her iki dosya da `MSG_` prefix'li değişkenler içerir
- Dosyalar `safe_source()` ile yüklendiği için bash syntax uyumlu olmalı
---
## Dosya Yapısı
```
lang/
├── tr.sh # Türkçe dil dosyası (256 satır, ~120 MSG_ değişkeni)
└── en.sh # İngilizce dil dosyası (256 satır, ~120 MSG_ değişkeni)
```
Her dil dosyasının yapısı:
```bash
#!/usr/bin/env bash
# BigFive Updater - Türkçe Dil Dosyası
# Language: Turkish (tr)
# Version: 6.5.1 Fluent Edition India
# Encoding: UTF-8
# ============================================
# HEADERS - Bölüm Başlıkları
# ============================================
MSG_HEADER_SELF_UPDATE="Self-Update Başlatılıyor..."
MSG_HEADER_SNAPSHOT_TIMESHIFT="Sistem Yedekleniyor (Timeshift)"
# ...
```
---
## Adım 1: Eksik Mesaj Tespiti
İki dil dosyasındaki `MSG_` değişkenlerini karşılaştır:
```bash
# TR'de olup EN'de olmayan mesajlar
diff <(grep -oP '^MSG_\w+' lang/tr.sh | sort) \
<(grep -oP '^MSG_\w+' lang/en.sh | sort) \
| grep '^<' | sed 's/^< //'
# EN'de olup TR'de olmayan mesajlar
diff <(grep -oP '^MSG_\w+' lang/tr.sh | sort) \
<(grep -oP '^MSG_\w+' lang/en.sh | sort) \
| grep '^>' | sed 's/^> //'
```
**Beklenen sonuç:** Hiçbir fark olmamalı. İki dosyada da aynı MSG_ değişkenleri olmalı.
---
## Adım 2: Mesaj Sayısı Kontrolü
```bash
echo "TR mesaj sayısı: $(grep -c '^MSG_' lang/tr.sh)"
echo "EN mesaj sayısı: $(grep -c '^MSG_' lang/en.sh)"
```
İki sayı eşit olmalı.
---
## Adım 3: Kategori Kontrolü
MSG_ değişkenleri şu kategorilerde organize edilmelidir:
| Prefix | Kategori | Kullanım |
|--------|----------|----------|
| `MSG_HEADER_*` | Bölüm başlıkları | `print_header()` çağrılarında |
| `MSG_INFO_*` | Bilgi mesajları | `print_info()` çağrılarında |
| `MSG_SUCCESS_*` | Başarı mesajları | `print_success()` çağrılarında |
| `MSG_WARN_*` | Uyarılar | `print_warning()` çağrılarında |
| `MSG_ERR_*` | Hatalar | `print_error()` çağrılarında |
| `MSG_HINT_*` | Çözüm önerileri | Hata mesajlarından sonra |
| `MSG_HELP_*` | Yardım metinleri | `show_help()` fonksiyonunda |
| `MSG_DOCTOR_*` | Doctor kontrolleri | `do_doctor()` fonksiyonunda |
| `MSG_HISTORY_*` | History mesajları | `do_history()` fonksiyonunda |
| `MSG_SUMMARY_*` | Özet mesajları | `print_final_summary()` fonksiyonunda |
| `MSG_HOOK_*` | Hook mesajları | `run_hooks()` fonksiyonunda |
| `MSG_CONFIRM_*` | Onay mesajları | Kullanıcı etkileşimi |
### Kategori bazlı sayım:
```bash
for prefix in HEADER INFO SUCCESS WARN ERR HINT HELP DOCTOR HISTORY SUMMARY HOOK CONFIRM; do
TR=$(grep -c "^MSG_${prefix}_" lang/tr.sh 2>/dev/null || echo 0)
EN=$(grep -c "^MSG_${prefix}_" lang/en.sh 2>/dev/null || echo 0)
STATUS="OK"
[[ "$TR" != "$EN" ]] && STATUS="FARKLI!"
printf "%-12s TR: %3d EN: %3d %s\n" "$prefix" "$TR" "$EN" "$STATUS"
done
```
---
## Adım 4: printf Format Tutarlılığı
Bazı mesajlar `%s`, `%d` gibi printf formatları içerir. İki dil dosyasında formatlar eşleşmeli:
```bash
# printf format string'lerini karşılaştır
for msg in $(grep -oP '^MSG_\w+' lang/tr.sh); do
TR_FMT=$(grep "^${msg}=" lang/tr.sh | grep -oP '%[sd]' | tr '\n' ' ')
EN_FMT=$(grep "^${msg}=" lang/en.sh | grep -oP '%[sd]' | tr '\n' ' ')
if [[ "$TR_FMT" != "$EN_FMT" ]]; then
echo "FORMAT UYUMSUZ: $msg"
echo " TR: $TR_FMT"
echo " EN: $EN_FMT"
fi
done
```
---
## Adım 5: Yeni Mesaj Ekleme
Yeni bir mesaj eklemek için 3 dosya güncellenmeli:
### 1. `guncel` script'ine ekle (varsayılan ile):
```bash
print_info "${MSG_INFO_YENI_OZELLIK:-Yeni özellik etkinleştirildi}"
```
### 2. `lang/tr.sh`'e ekle:
```bash
MSG_INFO_YENI_OZELLIK="Yeni özellik etkinleştirildi"
```
### 3. `lang/en.sh`'e ekle:
```bash
MSG_INFO_YENI_OZELLIK="New feature enabled"
```
### Ekleme Kuralları:
- Doğru kategoriye, bölüm yorum satırının altına ekle
- Alfabetik sıra zorunlu değil, mantıksal gruplama tercih edilir
- `%s` ve `%d` formatları her iki dosyada eşleşmeli
- Encoding her zaman UTF-8
---
## Adım 6: guncel'deki Kullanılmayan Mesajları Bul
```bash
# lang/tr.sh'deki MSG_ değişkenlerinin guncel'de kullanılıp kullanılmadığını kontrol et
for msg in $(grep -oP '^MSG_\w+' lang/tr.sh); do
if ! grep -q "\$${msg}\|\"$msg\"\|\${${msg}" guncel; then
echo "KULLANILMIYOR: $msg"
fi
done
```
> **Not:** Bazı mesajlar `${MSG_XXX:-varsayılan}` sözdizimi ile kullanılır, yukarıdaki kontrol bunu da yakalar.
---
## Adım 7: Syntax Doğrulama
Dil dosyaları `safe_source()` ile yüklendiğinden bash syntax uyumlu olmalı:
```bash
bash -n lang/tr.sh
bash -n lang/en.sh
```
---
## Tam Senkronizasyon Checklist
```bash
# 1. Syntax kontrolü
bash -n lang/tr.sh && bash -n lang/en.sh && echo "Syntax OK"
# 2. Mesaj sayısı eşitliği
TR=$(grep -c '^MSG_' lang/tr.sh)
EN=$(grep -c '^MSG_' lang/en.sh)
[[ "$TR" == "$EN" ]] && echo "Sayı eşit: $TR" || echo "FARKLI: TR=$TR EN=$EN"
# 3. Eksik mesajları bul
echo "--- TR'de var, EN'de yok ---"
diff <(grep -oP '^MSG_\w+' lang/tr.sh | sort) <(grep -oP '^MSG_\w+' lang/en.sh | sort) | grep '^<'
echo "--- EN'de var, TR'de yok ---"
diff <(grep -oP '^MSG_\w+' lang/tr.sh | sort) <(grep -oP '^MSG_\w+' lang/en.sh | sort) | grep '^>'
```Related Skills
Skill: Shell Lint ve Test
> ShellCheck + shfmt + BATS test çalıştırma ve hata düzeltme
Skill: Paket Build ve Doğrulama
> AUR, Alpine APK ve RPM paket build süreçleri ve doğrulama adımları
Skill: Multi-Distro Testing
> Docker container'larda 5 dağıtım test matrisi çalıştırma ve hata çözümleme
i18n-localization
Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support.
i18n
Internationalization guide using react-i18next. Use when adding translations, creating i18n keys, or working with localized text in React components (.tsx files). Triggers on translation tasks, locale management, or i18n implementation.
i18n-localization
Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support.
dy-skill-i18n
处理前端国际化翻译工作。当用户提到需要做国际化、i18n、翻译、多语言支持时使用此 skill。主要功能:1) 识别代码中的硬编码静态文字;2) 判断是否应使用现有公共翻译或需要新增;3) 将翻译添加到对应的语言文件中;4) 将硬编码替换为国际化调用;5) 检查翻译完整性和正确性。
nextjs-i18n
Best practices for multi-language handling, locale routing, and detection strategies across App and Pages Router. Use when adding i18n, locale routing, or language detection in Next.js. (triggers: middleware.ts, app/[lang]/**, pages/[locale]/**, messages/*.json, next.config.js, i18n, locale, translation, next-intl, react-intl, next-translate)
fantasia-i18n
Manages vue-i18n messages and locale structure for Fantasia Archive. Use when adding or changing user-facing strings, locale files under src/i18n, or markdown-backed documents wired into i18n.
readme-i18n
Use when the user wants to translate a repository README, make a repo multilingual, localize docs, add a language switcher, internationalize the README, or update localized README variants in a GitHub-style repository.
i18n-localization
Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support.
skill-i18n
Translate SKILL.md and README.md files into multiple languages for sharing skills internationally