Mühendislik//10 dk okuma

Yerelleştirme Testi: Çok Dilli Yazılımı Doğrulamak İçin Kapsamlı Bir Rehber

Eray Gündoğmuş
Paylaş

Yerelleştirme Testi: Çok Dilli Yazılımı Doğrulamak İçin Kapsamlı Bir Rehber

Önemli Çıkarımlar

  • Yerelleştirme testi, yazılımınızın tüm hedef locale'lerde doğru çalıştığını doğrular — yalnızca çevirilerin doğru olup olmadığını değil
  • Test kategorileri şunlardır: dilsel, görsel/UI, işlevsel, locale'e özgü ve erişilebilirlik
  • Pseudo-localization, gerçek çeviriler olmadan metin genişlemesini, özel karakterleri ve RTL'yi simüle ederek i18n sorunlarını erken yakalar
  • Otomatik testler yer tutucuları, string uzunluğunu, format doğruluğunu ve UI düzenini doğrulayabilir; ancak dilsel doğruluk insan incelemesi gerektirir
  • Test, sürüm öncesinde son bir aşama olarak değil, geliştirmeyle eş zamanlı olarak sürekli yapılmalıdır

Yerelleştirme Testi Nedir?

Yerelleştirme testi, yerelleştirilmiş bir ürünün hedef kitlesi için doğru çalıştığını doğrular. Çevirilerin doğru olup olmadığını kontrol etmenin ötesine geçerek, tüm kullanıcı deneyiminin — UI düzeni, biçimlendirme, işlevsellik ve kültürel uygunluk — her locale için doğru olmasını sağlar.

Yaygın bir yanılgı, yerelleştirme testinin yalnızca çevirileri düzeltmek olduğudur. Gerçekte, birçok yerelleştirme hatası tekniktir: kesilen metin, bozuk düzenler, yanlış tarih formatları, çalışmayan bağlantılar veya çeviri kalitesiyle hiçbir ilgisi olmayan kodlama hataları.

Test Kategorileri

Dilsel Test

Çevirilerin doğru, doğal ve hedef kitle için uygun olduğunu doğrulayın.

Neleri kontrol etmeli:

  • Çeviri doğruluğu (doğru anlamı aktarıyor mu?)
  • Doğallık (native dili gibi mi, yoksa çevrilmiş metin gibi mi geliyor?)
  • Terminoloji tutarlılığı ("Dashboard" her yerde aynı şekilde mi çevriliyor?)
  • Ton ve resmiyet (o pazar için ürünün sesine uyuyor mu?)
  • Dilbilgisi ve yazım (locale için doğru — İngilizce'de İngiliz vs Amerikan, Portekizce'de Brezilyalı vs Avrupalı)

Kimin yapacağı: Hedef dilin ana konuşurları; tercihen alan bilgisi olanlar.

Görsel / UI Testi

Çevrilmiş içeriğin kullanıcı arayüzünde doğru görüntülendiğini doğrulayın.

Neleri kontrol etmeli:

SorunÖrnek
Metin kırpma"Enregistrer les modifications" buton etiketi "Enregistrer les modi..." olarak kesiliyor
Metin taşmasıUzun Almanca etiket diğer öğeleri ekran dışına itiyor
Düzen bozukluğuRTL metninin hizalanmamış sütunlara yol açması
Font görüntülemeCJK veya Devanagari karakterler için eksik glifler
Görsel örtüşmeMetnin sabit kodlanmış görsel veya ikonların üzerine binmesi
Duyarlı tasarımYerelleştirilmiş içeriğin mobil düzenleri bozması

Nasıl test edilir: Her hedef dilde her ekranın görsel incelemesi. Ekran görüntüsü karşılaştırma araçları (Percy, Chromatic), düzen değişikliklerinin tespitini otomatikleştirebilir.

İşlevsel Test

Uygulamanın tüm locale'lerde doğru çalıştığını doğrulayın.

Neleri kontrol etmeli:

  • Locale değiştirme doğru çalışıyor (dil değiştirmek durumu kaybettirmiyor)
  • Formlar locale'e özgü girişleri kabul ediyor (aksanlı harfler içeren isimler, farklı formatlardaki adresler)
  • Arama aksanlı karakterlerle çalışıyor ("café" araması "cafe"yi de buluyor ve tam tersi)
  • Sıralama locale'e özgü kurallara uyuyor (İsveççe alfabetik sıralama İngilizceden farklı)
  • Bağlantılar ve navigasyon tüm dil sürümlerinde çalışıyor
  • Para birimi, tarih ve sayı girişleri locale'e uygun formatları kabul ediyor

Locale'e Özgü Test

Locale'e duyarlı özelliklerin her hedef locale için doğru çalıştığını doğrulayın.

Neleri kontrol etmeli:

ÖzellikÖrnek
Tarih biçimlendirmeABD: 03/02/2026, Almanya: 02.03.2026, Japonya: 2026/03/02
Sayı biçimlendirmeABD: 1,234.56, Almanya: 1.234,56, Fransa: 1 234,56
Para birimi biçimlendirmeABD: $1,234, Japonya: ¥1,234, Almanya: 1.234 €
Saat biçimlendirmeABD: 3:30 PM, Almanya: 15:30
Adres formatıABD: City, State ZIP, Almanya: ZIP City
Telefon numarası formatıABD: (555) 123-4567, İngiltere: 020 1234 5678

Erişilebilirlik Testi

Yerelleştirilmiş içeriğin erişilebilir kalmaya devam ettiğini doğrulayın.

Neleri kontrol etmeli:

  • Ekran okuyucular çevrilmiş içeriği doğru okuyor
  • lang özniteliği HTML öğesinde ve satır içi dil geçişlerinde doğru ayarlanmış
  • RTL içeriği dir="rtl" ile doğru işaretlenmiş
  • Renk kontrastı çevrilmiş metinle korunuyor (farklı uzunluk düzeni etkileyebilir)
  • Klavye navigasyonu tüm locale'lerde çalışıyor

Pseudo-Localization

Pseudo-localization, gerçek çeviriler mevcut olmadan önce internationalization hatalarını bulma tekniğidir. Kaynak string'leri yerelleştirme zorluklarını simüle edecek şekilde dönüştürür:

Pseudo-Localization Türleri

Aksanlı karakterler: ASCII karakterleri aksanlı eşdeğerleriyle değiştirin.

  • "Settings" → "Šéttîñgš"
  • Test eder: Unicode işleme, font görüntüleme, karakter kodlaması

Metin genişlemesi: Avrupa dillerinde yaygın olan %30-40 genişlemeyi simüle etmek için string'leri doldurur.

  • "Save" → "[Šåvé xxxxxxxxx]"
  • Test eder: Düzen esnekliği, metin kırpma, duyarlı tasarım

Köşeli parantez/işaretçiler: String'leri görünür işaretçilerle sararak çevrilmemiş veya sabit kodlanmış metni tespit eder.

  • "Settings" → "[Šéttîñgš]"
  • Test eder: String dışsallaştırma bütünlüğü — parantez içinde olmayan herhangi bir metin sabit kodlanmıştır

RTL simülasyonu: Düzen yansımasını test etmek için metin yönünü tersine çevirir.

  • Test eder: UI yansıtma, çift yönlü metin işleme, CSS mantıksal özellikleri

Pseudo-Localization Ne Zaman Kullanılır

  • Geliştirme sırasında: Pseudo-localization'ı geliştirme build'lerinde çalıştırarak sorunları ortaya çıktıklarında yakalayın
  • Çeviri öncesinde: Gerçek çevirilere yatırım yapmadan önce tüm string'lerin dışsallaştırıldığını ve UI'nin genişlemeyi kaldırdığını doğrulayın
  • CI/CD'de: Sabit kodlanmış string'ler tespit edilirse başarısız olan bir pseudo-localization build adımı ekleyin
// Örnek: pseudo-localization yapılandırması
{
  "pseudoLocale": {
    "enabled": true,
    "strategy": "accented",
    "expansion": 1.35,
    "brackets": true
  }
}

Otomatik Test Yaklaşımları

Yer Tutucu Doğrulama

Kaynak string'lerdeki tüm yer tutucuların çevirilerde bulunduğunu doğrulayın:

// Test: Kaynaktaki her {placeholder} çeviride de mevcut
function validatePlaceholders(source, translation) {
  const sourcePlaceholders = source.match(/\{[^}]+\}/g) || [];
  const translationPlaceholders = translation.match(/\{[^}]+\}/g) || [];

  for (const placeholder of sourcePlaceholders) {
    if (!translationPlaceholders.includes(placeholder)) {
      throw new Error(`Missing placeholder ${placeholder} in translation`);
    }
  }
}

Görsel Regresyon Testi

Her locale'de ekran görüntüleri almak ve temel değerlerle karşılaştırmak için Playwright veya Cypress gibi araçları kullanın:

// Playwright: Her locale için ekran görüntüsü alın
for (const locale of ['en', 'de', 'ja', 'ar']) {
  await page.goto(`https://app.example.com/${locale}/dashboard`);
  await page.screenshot({
    path: `screenshots/${locale}-dashboard.png`,
    fullPage: true,
  });
}

Çeviri Tamamlanma Kontrolü

// Tüm kaynak anahtarlarının çevirisi olduğunu doğrulayın
function checkCompleteness(sourceKeys, translationKeys, locale) {
  const missing = sourceKeys.filter(key => !translationKeys.includes(key));
  if (missing.length > 0) {
    console.warn(`${locale}: ${missing.length} eksik çeviri`);
    console.warn('Eksik anahtarlar:', missing.slice(0, 10));
  }
}

Format Doğrulama

Çeviri dosyalarının geçerli olduğunu doğrulayın:

  • JSON dosyaları hatasız ayrıştırılıyor
  • XLIFF dosyaları düzgün biçimlendirilmiş XML
  • PO dosyalarında eşleşen msgid/msgstr çiftleri var
  • Dosya içinde yinelenen anahtar yok

Test İş Akışı Entegrasyonu

Geliştirme Sırasında

  1. Geliştirme build'lerinde pseudo-localization etkin
  2. Geliştiriciler genişletilmiş/aksanlı metni görür ve düzen sorunlarını hemen düzeltir
  3. Çevirmenlere veya hazır çevirilere bağımlılık yok

CI/CD'de

  1. Yer tutucu doğrulama her PR'da çalışır
  2. Tüm hedef locale'ler için çeviri tamamlanması kontrol edilir
  3. Format doğrulama çeviri dosyalarının sözdizimsel olarak doğru olduğunu sağlar
  4. Görsel regresyon testleri temel locale'lerdeki düzen sorunlarını yakalar

Sürüm Öncesinde

  1. Yeni veya değiştirilmiş içerik için ana konuşurlar tarafından tam dilsel inceleme
  2. Staging ortamında bağlam içi inceleme
  3. Locale'e özgü özelliklerin işlevsel testi
  4. Arapça/İbranice için RTL düzen doğrulaması
  5. Tüm locale'ler için erişilebilirlik denetimi

SSS

Yerelleştirme testi için ne kadar zaman ayırmalıyım?

İnsan incelemesi için her dilde 1.000 kelime başına 2-4 saatlik dilsel inceleme planlayın. İşlevsel ve UI testi uygulama karmaşıklığına bağlıdır — tam bir geçiş için hedef locale başına 1-2 gün bütçeleyin. Otomatik kontroller (yer tutucular, format, tamamlanma) CI/CD'nin bir parçası olarak dakikalar içinde çalışır.

Dilsel testi otomatikleştirebilir miyim?

Kısmen. Otomatik araçlar dilbilgisi ve yazım denetimi yapabilir, tutarsız terminolojiyi işaretleyebilir ve yaygın kalıpları tespit edebilir (eksik noktalama, yanlış resmiyet). Ancak çeviri doğruluğunu, doğallığını ve kültürel uygunluğunu doğrulamak insan ana konuşurları gerektirir. Mekanik kontrolleri otomatikleştirin, nüanslı incelemeye insan zamanı yatırın.

En yaygın yerelleştirme hataları nelerdir?

Yaygın sektör deneyimine göre: (1) daha uzun çevirilerden kaynaklanan metin kırpma, (2) dışsallaştırma sırasında gözden kaçan sabit kodlanmış string'ler, (3) yanlış tarih/sayı biçimlendirme, (4) RTL dillerinde bozuk düzenler, (5) çevirilerde kaldırılan veya kopyalanan yer tutucular, (6) özel karakterlerle kodlama sorunları.

Comments

Loading comments...