İçindekiler
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ğu | RTL metninin hizalanmamış sütunlara yol açması |
| Font görüntüleme | CJK veya Devanagari karakterler için eksik glifler |
| Görsel örtüşme | Metnin sabit kodlanmış görsel veya ikonların üzerine binmesi |
| Duyarlı tasarım | Yerelleş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çimlendirme | ABD: 03/02/2026, Almanya: 02.03.2026, Japonya: 2026/03/02 |
| Sayı biçimlendirme | ABD: 1,234.56, Almanya: 1.234,56, Fransa: 1 234,56 |
| Para birimi biçimlendirme | ABD: $1,234, Japonya: ¥1,234, Almanya: 1.234 € |
| Saat biçimlendirme | ABD: 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
- Geliştirme build'lerinde pseudo-localization etkin
- Geliştiriciler genişletilmiş/aksanlı metni görür ve düzen sorunlarını hemen düzeltir
- Çevirmenlere veya hazır çevirilere bağımlılık yok
CI/CD'de
- Yer tutucu doğrulama her PR'da çalışır
- Tüm hedef locale'ler için çeviri tamamlanması kontrol edilir
- Format doğrulama çeviri dosyalarının sözdizimsel olarak doğru olduğunu sağlar
- Görsel regresyon testleri temel locale'lerdeki düzen sorunlarını yakalar
Sürüm Öncesinde
- Yeni veya değiştirilmiş içerik için ana konuşurlar tarafından tam dilsel inceleme
- Staging ortamında bağlam içi inceleme
- Locale'e özgü özelliklerin işlevsel testi
- Arapça/İbranice için RTL düzen doğrulaması
- 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ı.