İçindekiler
Lokalizasyon için CI/CD: Dağıtım Hattınızda Çeviriyi Otomatikleştirme
Önemli Çıkarımlar
- CI/CD entegrasyonu, manuel çeviri dosyası yönetimini ortadan kaldırır ve her dağıtımda çevirilerin yayına girmesini sağlar
- Otomatik string çıkarımı ve doğrulama, eksik çevirileri üretime ulaşmadan önce yakalar
- Webhook tetiklemeli derlemeler sürekli lokalizasyonu mümkün kılar — çeviriler onaylanır onaylanmaz yayına girer
- Birleştirme öncesi kontroller, çevrilmemiş string içeren PR'ları engelleyerek eksik lokalizasyonların yayına çıkmasını önler
Lokalizasyonu CI/CD'de Neden Otomatikleştirmeliyiz?
Manuel lokalizasyon iş akışları darboğaz yaratır:
- Geliştiriciler yeni stringleri TMS'ye yüklemeyi unutur
- Çevrilen dosyalar TMS'de biri indirene kadar bekler
- Manuel dosya yerleştirme merge çakışmalarına yol açar
- Eksik çeviriler üretime sızar
CI/CD otomasyonu, çeviri senkronizasyonunu her derleme ve dağıtımın standart bir parçası hâline getirerek bu sorunları çözer.
Pipeline Mimarisi
Code Push → CI Triggered → Extract Strings → Push to TMS
↓
Production ← Deploy ← Build ← Pull Translations ← Translations Complete (webhook)
GitHub Actions ile Uygulama
Pull Request'te: Çevirileri Doğrula
name: Translation Check
on: pull_request
jobs:
check-translations:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Scan for new strings
run: npx better-i18n scan --check
# Fails if untranslated strings found
- name: Validate translation files
run: npx better-i18n validate
# Checks JSON syntax, missing keys, placeholder consistency
Main'e Birleştirmede: Senkronize Et ve Dağıt
name: Deploy with Translations
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Push new strings to TMS
run: npx better-i18n push
env:
BETTER_I18N_TOKEN: ${{ secrets.BETTER_I18N_TOKEN }}
- name: Pull latest translations
run: npx better-i18n pull --all
- name: Build
run: npm run build
- name: Deploy
run: npm run deploy
Çeviri Tamamlandığında: Webhook Tetiklemeli Derleme
name: Translation Update
on:
repository_dispatch:
types: [translations-updated]
jobs:
rebuild:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx better-i18n pull --all
- run: npm run build
- run: npm run deploy
Otomatik Doğrulama Kontrolleri
Bu kontrolleri CI pipeline'ınıza ekleyin:
| Kontrol | Neyi Yakalar | Ne Zaman Çalıştırılır |
|---|---|---|
| Eksik çeviriler | Hedef dillerde çevirisi olmayan anahtarlar | PR kontrolü |
| Yer tutucu tutarlılığı | Kaynakta {name} var ama çeviride {nom} kullanılmış | PR kontrolü |
| JSON/XLIFF sözdizimi | Bozuk çeviri dosyaları | Her derleme |
| String uzunluğu | UI karakter sınırını aşan çeviriler | PR kontrolü |
| Kullanılmayan anahtarlar | Kodda artık referans verilmeyen çeviri anahtarları | Haftalık zamanlanmış |
Eksik Çevirileri Yönetme
Dağıtım anında tüm çeviriler hazır olmayabilir. Olası stratejiler:
- Kaynak dile geri dön — Çeviri yoksa İngilizce göster (en yaygın yöntem)
- Dağıtımı engelle — Yalnızca tüm hedef diller %100 çevrildiğinde dağıt (en katı yöntem)
- Yüzde eşiği — Dil %90'ın üzerindeyse dağıt, altındaysa engelle
- Anahtar düzeyi önceliği — Kritik UI stringleri mutlaka çevrilmeli, kritik olmayanlar geri dönüş yapabilir
SSS
Çeviri dosyalarını git'e commit etmeli miyim? Evet. Çeviri dosyalarını commit'lemek, TMS API'si kullanılamaz olsa bile derlemelerin çalışmasını sağlar. CI pipeline'ı her derlemede güncel çevirileri çeker ve varsa değişiklikleri otomatik olarak commit'ler.
Çeviri dosyalarındaki merge çakışmalarını nasıl önlerim? TMS'i gerçeğin tek kaynağı olarak kullanın. CI her derlemede çevirileri taze olarak çeker ve yerel dosyaların üzerine yazar. Geliştiriciler çeviri dosyalarını hiçbir zaman manuel olarak düzenlemez.
Dağıtmam gerektiğinde çeviriler hazır değilse ne yapmalıyım? Geri dönüş stratejilerini kullanın (çevrilmemiş stringler için kaynak dili gösterin). Çeviri tamamlanma yüzdesini takip edin ve eşiğin altına düştüğünde uyarı alın.
Dal tabanlı geliştirmeyi nasıl yönetirim? Feature branch'lerden stringleri ayrı TMS namespace'lerine veya dallarına push edin. Feature branch, main'e birleştiğinde çevirileri de birleştirin.
Mobil uygulamalar için de lokalizasyon CI/CD çalıştırabilir miyim? Evet. Aynı prensipler geçerlidir — stringleri TMS'e push edin, derleme sırasında çevirileri çekin, yayınlamadan önce doğrulayın. Mobil'e özel: ASO meta verilerini pipeline'a dahil edin ve .strings/.xml dosya formatlarını doğrulayın.