İçindekiler

Yerelleştirme, artık kampanya sonuna bırakılan bir “ek iş” değil. Kodla birlikte akması, TM/terim tabanına oturması ve LQA ile otomatik kontrol edilmesi gerekiyor. Aşağıda, Sürekli Yerelleştirme (CI/CD) yaklaşımını; kimler için uygun olduğunu, karar matrisini, maliyet–fayda çerçevesini ve GitHub Actions YAML örneğini bulacaksınız.

Hızlı özet: Kaynak push → TMS upload → çeviri & inceleme → download → pseudo-L10n & screenshot-diff → PR/MR → yayın.

Bu yazı kimler İçin?

  • PM/Ürün: Sürüm hızını düşürmeden çok dilli yayınlamak isteyenler
  • CTO/DevOps: CI/CD’de string drift ve manuel adımları azaltmak isteyenler
  • Pazarlama/İçerik: Landing + e-posta zincirlerini yerelleştirip aynı gün yayına almak isteyenler
Sürekli yerelleştirme akışı soyut pipeline

Sürekli Yerelleştirme (CI/CD) nedir? Ne zaman gerekir?

  • Haftalık/günlük sürüm yapılan ürünlerde çevirinin kodla birlikte akması
  • ICU/placeholder yapılarının otomatik test edilmesi
  • Screenshot-diff ile kozmetik ve taşma risklerinin yayın öncesi yakalanması
  • Çok platform (web/iOS/Android) ve çok dil hedeflerinde ROI’nin hızla artması

Karar Matrisi – Ekip & Sıklık & İçerik

 

Ölçek / Sıklıkİçerik TürüÖneriGerekçe
Küçük ekip, ayda 1 sürümWebsite kopyasıManuel + hafif TMSKurulum maliyeti yerine esneklik
Orta ekip, haftalık sürümUygulama UI (ICU)CI/CD + TMS APIKey drift & manuel hataları azaltır
Büyük ekip, günlük sürümWeb+iOS+AndroidCI/CD + otomatik LQAGörsel/senaryo testi şart
Kampanya dönemleriLanding + e-postaCI/CD veya pluginHız + versiyonlama

Maliyet

KalemNe kapsarNot
TMS lisansıAPI, kullanıcı, proje erişimiKullanım/koltuk bazlı olabilir
CI/CDRunner/dakika veya pipeline süresiÖnbellek ve matris azaltımı maliyeti düşürür
Kurulum1–3 iş günüRepo–TMS bağlama, test, dokümantasyon
LQAScreenshot-diff, cihaz matrisiYayın öncesi durdurucu koşul önerilir

Faydalar

Not: Değerler örnek senaryodur; ürün ve ekip yapısına göre değişebilir.

Kurulum adımları (HowTo)

  1. Depoyu hazırlayın: i18n dizin yapısı ve ICU/placeholder kurallarını netleştirin.
  2. TMS entegrasyonu: API anahtarlarını Secrets olarak ekleyin; proje/dil ayarlarını açın.
  3. Extract & Upload: Kaynaklardan string çıkarın ve TMS’e yükleyin.
  4. Tetikler: push + webhook (çeviri tamam → indirme işini başlat).
  5. Download & Doğrulama: Pseudo-L10n, ICU kuralları ve screenshot-diff çalıştırın.
  6. PR/MR: Otomatik PR oluşturun; code review sonrası birleştirin.
  7. Release & Rollback: Sürüm notları ve geri dönüş planını kayıt altına alın.

GitHub Actions YAML

name: localization-ci

on:
  push:
    branches: ["main"]
    paths: ["src/**", "i18n/**"]
  workflow_dispatch:

concurrency:
  group: l10n-$
  cancel-in-progress: true

jobs:
  tms_sync:
    name: Extract / Upload / Download / Validate / PR
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci

      - name: Extract strings
        run: npm run i18n:extract   # i18n/messages.pot üretir

      - name: Upload to TMS
        env:
          TMS_API_KEY: $
          TMS_PROJECT_ID: $
        run: |
          npx tms-cli upload 
            --project $TMS_PROJECT_ID 
            --token $TMS_API_KEY 
            --src i18n/messages.pot

      - name: (Optional) Start translation job
        env:
          TMS_API_KEY: $
          TMS_PROJECT_ID: $
        run: |
          npx tms-cli start-job 
            --project $TMS_PROJECT_ID 
            --token $TMS_API_KEY 
            --languages tr-TR,ar-SA

      - name: Download translations
        env:
          TMS_API_KEY: $
          TMS_PROJECT_ID: $
        run: |
          npx tms-cli download 
            --project $TMS_PROJECT_ID 
            --token $TMS_API_KEY 
            --dest i18n/locales

      - name: Pseudo-L10n smoke test
        run: npm run i18n:pseudo

      - name: LQA screenshot diff
        run: npm run test:screenshot   # Playwright/Puppeteer tabanlı

      - name: Create PR
        uses: peter-evans/create-pull-request@v6
        with:
          branch: l10n/auto-$
          title: "chore(i18n): pull latest translations"
          commit-message: "chore(i18n): update locales"
          body: "Otomatik yerelleştirme güncellemesi ve LQA kontrolleri."

Projeniz İçin en doğru çözümü birlikte planlayalım —
belgelerinizi paylaşın, kapsamı netleştirelim

Çeviri Çözüm Ortağınız

İlgili İçerik