Yazılım ve Oyun Yerelleştirmesi 13 Ocak 2026
Çoğul Kuralları: Yazılımda Sayıya Göre Değişen Dizeler
Bir dosya silindi mi, beş dosya mı? Yazılım dizelerinde sayıya göre değişen biçimler dilden dile farklıdır. Çoğulun kodda nasıl çözüldüğünü anlatıyoruz.
“1 dosya silindi” ile “5 dosya silindi” arasında İngilizcede bir harf farkı vardır: file ve files. Bu küçük fark, yazılım yerelleştirmesinin en teknik başlıklarından birini açar. Çoğul kuralları, sayıya göre değişen biçimlerin kodda nasıl yönetileceğini belirler.
İçindekiler
Sorun İngilizceyle sınırlı olsa kolay çözülürdü. Kimi dillerde tek biçim yeterlidir, kimilerinde sayı aralığına göre üç ayrı biçim gerekir. Cinsiyet ve durum ekleri eklendiğinde tablo daha da genişler. Kod bu çeşitliliğe hazır değilse çeviri de doğru sonucu üretemez.
Aşağıda sorunun nereden çıktığını, gettext ve Plurr gibi çözümlerin nasıl çalıştığını ve kararın neden büyük ölçüde geliştirme aşamasında verildiğini anlatıyoruz.
Çoğul kuralları neden bir yerelleştirme sorunudur?
Yazılım dizelerinde sayılar çoğunlukla yer tutucularla taşınır. Metin yazıldığında sayının kaç olacağı bilinmez. İngilizce yazan geliştirici, tek bir çoğul biçimi düşünerek cümleyi kurar. Bu varsayım, kaynak dil dışına çıkıldığında kırılır.
Sorunun bir katmanı sayıyla, diğer katmanı uyumla ilgilidir. “New %s” gibi bir dizede yer tutucuya girecek isim tekil ya da çoğul olabilir. Sıfatların çekimlendiği dillerde ismin sayısı sıfatın biçimini de değiştirir; tek bir çeviri bütün ihtimalleri karşılayamaz.
Akla gelen ilk çözüm bütün biçimleri eğik çizgiyle yan yana yazmaktır. Bu yöntem hem verimsizdir hem de dizeyi uzatarak arayüzde taşmaya yol açar. Nötr cinsiyeti olan dillerde seçenek sayısı daha da artar ve çözüm tümüyle kullanışsız hale gelir.
Sorunun bir de sözcük seçimiyle ilgili yüzü vardır. Japoncada “yeni” karşılığı bağlama göre değişir: genel kullanım, yeni model anlamı, en güncel sürüm anlamı ve taze anlamı ayrı sözcüklerle karşılanır. Böyle durumlarda çözüm koddan değil, geliştiriciden gelecek bağlam notundan çıkar.
Bir sıfat, kaç biçim? Diller arası karşılaştırma
İngilizce “new” sıfatının tek bir biçimi vardır. Roman dillerinde tekil-çoğul ve eril-dişil ayrımıyla dört biçim doğar. Slav dillerinde ve Modern Yunancada nötr biçim eklenince sayı altıya çıkar; bu, dilbilgisel durum ekleri hesaba katılmadan varılan rakamdır.
| Dil | Biçim sayısı | Örnek |
|---|---|---|
| İngilizce | 1 | new |
| İspanyolca | 4 | nuevo, nueva, nuevos, nuevas |
| Fransızca | 4 | nouveau, nouvelle, nouveaux, nouvelles |
| Rusça | 4 ve üzeri | новый, новая, новое, новые |
| Modern Yunanca | 6 | νέος, νέα, νέο, νέοι, νέες, νέα |
Tablo, tek bir kaynak dizenin hedef tarafta kaç ayrı satıra dönüşebileceğini gösterir. Bu yüzden çoğul kuralları yalnızca çeviri kalitesi değil, dosya boyutu ve bakım maliyeti sorunudur da. Her ek biçim, güncellenmesi gereken bir satır demektir.
Rusça örneği ayrıca sayı aralıklarının önemini gösterir. Bu dilde bir ismin eki, miktar sıfır olduğunda, iki ile dört arasında olduğunda ve beş ile on arasında olduğunda farklılaşır. Tek bir tekil-çoğul ayrımı bu yapıyı karşılamaz.
Bu çeşitlilik karşısında bütün biçimleri tek dizeye sığdırmaya çalışmak sonuç vermez. Doğru yaklaşım, kodun sayıya göre farklı dizeler seçmesini sağlamaktır. Böylece her biçim kendi satırında durur, çevirmen her satırı ayrı ayrı yazar ve arayüzde yalnızca doğru olan görünür.
gettext’te çoğul biçimler: nplurals ve msgstr dizisi
GNU gettext altyapısında çoğul, dosya düzeyinde tanımlanır. Dosyanın başlığında biçim sayısını ve seçim formülünü belirten bir satır bulunur. Bu satır, hangi sayı aralığının hangi biçimi çağıracağını belirler ve programın çalışma anında doğru satırı seçmesini sağlar.
Kayıt düzeyinde ise iki kaynak alanı görürsünüz: msgid tekil metni, msgid_plural çoğul metni taşır. Çeviriler msgstr[0] ve msgstr[1] gibi numaralı alanlara yazılır. Dilin ihtiyacı üç biçimse üçüncü alan da dosyada belirir.
Bu yapı çevirmen için nettir ama bir ön koşulu vardır: geliştiricinin dizeyi çoğul kaydı olarak tanımlamış olması. Sıradan bir metin dizesi olarak yazılmış bir cümlede çoğul alanları hiç açılmaz. Bu durumda düzeltme çeviri tarafında değil, kodda yapılır.
Çoğul kaydında yer tutucunun davranışı da farklıdır. Tekil satırda sayı çoğu zaman yazıyla verilir, çoğul satırda ise bir yer tutucuyla taşınır. Çeviri sırasında bu ayrımı korumak gerekir; tekil satıra yer tutucu eklemek ya da çoğul satırdan çıkarmak, dizenin çalışma anında bozulmasına yol açar.
Plurr ve ICU: çevirmenin okuyabildiği biçim
Plurr, çoğul, cinsiyet, koşul ve yer tutucuları tek bir sözdiziminde toplayan evrensel bir biçim belirtimidir. Geliştiricinin desteklemesi kolay, çevirmenin okuması anlaşılır olacak biçimde tasarlanmıştır. Süslü parantez içinde bir değişken, ardından seçenekler dikey çizgiyle ayrılarak yazılır.
Belirtimin tanıtımında verilen örnek şudur: bir dosyanın mı yoksa birden çok dosyanın mı silineceğini soran bir uyarı. Değer bir olduğunda tekil, beş olduğunda çoğul cümle üretilir. Rusça için aynı yapı üç seçenek taşır, çünkü ekin biçimi miktara göre değişir.
Aynı belirtim, çoğul biçimi olmayan diller için de çalışır. Taycada tek bir seçenek yeterlidir. Çevirmenin bu yapılarda uyması gereken kural sabittir: süslü parantez içindeki değişkenlere dokunulmaz, yalnızca seçeneklerin metni yeniden yazılır.
Bu tür belirtimlerin en büyük katkısı, çoğul kararını çevirmenin görebileceği bir yere taşımasıdır. Kararın kodun derinlerinde gizli kaldığı projelerde çevirmen, hangi seçeneğin ne zaman görüneceğini bilemez. Seçenekler tek satırda göründüğünde ise metin, bağlamıyla birlikte okunabilir hale gelir.
Kurumsal projelerde daha sık karşılaşacağınız çözüm ise Unicode’un ICU kitaplıklarıdır. Uluslararasılaştırma için geliştirilen bu kitaplıklar, çoğul ve dilbilgisel cinsiyet seçimini standart bir yordamla yapar. Yaklaşımların tamamı aynı ilkeye dayanır: değişkene göre farklı dizeler seçmek.
Kuralların kaynağı: Unicode CLDR
Hangi dilin kaç çoğul biçimine ihtiyaç duyduğu tahminle belirlenmez. Unicode’un dil çoğul kuralları, çok sayıda dil için bu bilgiyi derli toplu biçimde sunar. Bu kurallar yalnızca tekil ve çoğulu değil, dillerin “birkaç” ve “çok” gibi miktar ayrımlarını da kapsar.
CLDR tabloları, geliştirme ekibi için bir denetim listesi işlevi görür. Desteklenecek diller belirlendiğinde, kodun kaç biçimi karşılaması gerektiği bu tablodan okunur. Karar geliştirme aşamasında verilirse, çeviri aşaması sorunsuz ilerler.
Tabloların bir yararı da beklenmedik dillere hazırlık sağlamasıdır. Bugün iki dille yayımlanan bir ürün, birkaç yıl sonra çoğul yapısı daha karmaşık bir pazara açılabilir. Kod baştan esnek kurulduğunda yeni dil eklemek bir kaynak dosyası işidir; kurulmadığında ise geliştirme takvimine giren bir iştir.
Mobil tarafta Apple ve Android’in kendi belgeleri, oyunlarda ve web çerçevelerinde ise ilgili kütüphanelerin kılavuzları benzer bilgiyi verir. Ortak nokta şudur: çoğul kuralları bir çeviri tercihi değil, mimari bir gerekliliktir.
Çoğul hataları ekranda nasıl görünür?
Çoğul hatalarının en tanıdık biçimi, sayının yanında yanlış ekli bir isimdir. Kullanıcı “1 öğeler seçildi” gibi bir uyarı gördüğünde ürünün özensiz hazırlandığını düşünür. Bu hata dilbilgisi hatası gibi görünse de kaynağı çoğunlukla koddur; dize tek biçim varsayımıyla yazılmıştır.
İkinci biçim, eğik çizgiyle yan yana yazılmış seçeneklerin ekranda görünmesidir. Geliştirici ya da çevirmen bütün ihtimalleri tek dizeye sıkıştırdığında kullanıcı, kendisine sunulan seçenekleri okumak zorunda kalır. Bu yöntem geçici bir çare olabilir, kalıcı bir çözüm değildir.
Üçüncü biçim en sinsisidir: sıfır durumu. Birçok arayüz sıfır sonucu için ayrı bir metin öngörmez ve “0 sonuç bulundu” gibi bir cümle üretir. Test planına sıfır, bir, iki, beş ve on bir gibi eşik değerlerini eklemek bu hataların tamamını görünür kılar.
Türkiye bağlamı
Türkçe çoğul sayısı bakımından şanslı bir dildir. Sayı belirtildiğinde isim çoğul eki almaz; “5 dosya” doğru, “5 dosyalar” yanlıştır. Bu nedenle çoğu projede tek biçim yeterli olur ve gettext başlığındaki biçim sayısı bire indirilebilir.
Asıl zorluk başka yerdedir: sayıdan sonra gelen ek. “3 dosyayı sildiniz” ile “3 kaydı sildiniz” arasında ekin sesli uyumu değişir. Yer tutucuya gelecek isim bilinmediğinde doğru eki seçmek mümkün olmaz. Bu yüzden Türkçe dizelerde cümleyi ekten bağımsız kurmak yaygın bir çözümdür.
Türkiye’de geliştirilen ürünlerin çoğu kaynak dili Türkçe olarak başlar. Bu durumda ters yönde bir sorun doğar: Türkçede tek biçimle yazılmış bir dize, İngilizceye ya da Rusçaya açıldığında çoğul alanı hiç bulunmaz. İhracat kararı verildiğinde kodun bu alanlara açılması gerekir.
Bu nedenle Türkçe kaynaklı projelerde çoğul altyapısını, ilk yabancı dil eklenmeden önce kurmak daha ekonomiktir. Altyapı hazırsa yeni dil eklemek bir kaynak dosyası işine dönüşür ve arayüz kodu değişmeden kalır.
Bu sizin için ne anlama geliyor?
Çoğul kuralları, çeviri faturasında görünmeyen ama teslim tarihinde görünen bir konudur. Kod çoğul biçimlere hazır değilse, çevirmen doğru cümleyi yazsa bile ekranda yanlış sonuç çıkar. Kararın büyük bölümü geliştirme tarafında verilir; sizin işiniz bu kararı zamanında sordurmaktır.
- Hedef dillerinizi belirleyin ve her biri için kaç çoğul biçimi gerektiğini listeletin.
- Sayı içeren dizelerin çoğul kaydı olarak tanımlandığını geliştirme ekibinize doğrulatın.
- Kaynak dosya başlığındaki biçim sayısının dile uygun olduğunu kontrol ettirin.
- Sıfır, bir ve büyük sayılarla ekran testini teslim planına ekleyin.
- Türkçe için ek uyumu sorununu ayrı bir madde olarak takip edin.
Bu maddeleri projenin başında konuşmak, sonradan yapılacak kod değişikliğinden çok daha ucuza gelir. Kapsam ve süre için teklif alabilir, dilerseniz bilgi merkezimizdeki diğer teknik yazılara göz atabilirsiniz.
Sık sorulan sorular
Çoğul kuralları neden her dilde aynı değildir?
Diller sayıyı farklı biçimlerde işaretler. Bazılarında tek biçim yeterlidir, bazılarında sayı aralığına göre üç ya da daha fazla biçim gerekir. Kodun bu çeşitliliğe hazır olması gerekir.
gettext dosyasında çoğul nasıl tanımlanır?
Dosya başlığında biçim sayısı ve seçim formülü belirtilir. Her kayıtta msgid ile msgid_plural bulunur, çeviriler ise msgstr[0], msgstr[1] gibi numaralı alanlara yazılır.
Plurr nedir?
Çoğul, cinsiyet, koşul ve yer tutucuları tek sözdiziminde toplayan bir biçim belirtimidir. Geliştiricinin desteklemesi kolay, çevirmenin okuması nispeten anlaşılır olacak biçimde tasarlanmıştır.
Türkçe için kaç çoğul biçimi gerekir?
Türkçe genellikle tek biçimle çalışır; sayı belirtildiğinde isim çoğul eki almaz. Asıl zorluk çoğul sayısında değil, sayıdan sonra gelen ekin ses uyumundadır.
Kaynaklar
- Jiménez-Crespo, M. A. (2024). Localization in Translation. Routledge, s. 156–160.
- Unicode CLDR, “Language Plural Rules” tabloları, unicode.org (çevrimiçi belge).
- Plurr biçim belirtimi, loctools/plurr deposu, GitHub (çevrimiçi belge).