Yazılım ve Oyun Yerelleştirmesi 21 Mayıs 2026
Yer Tutucu Nedir? Yazılım Dizelerinde Değişkenlerle Çalışmak
Yazılım metinlerinde yüzde işaretiyle başlayan kısaltmalar çeviri değil, çalışma anında dolan boşluklardır. Bu boşlukların nasıl korunacağını ve nerede tuzak kurduğunu anlatıyoruz.
Yazılım metinlerinde sık sık tuhaf duran kısaltmalar görürsünüz: %s, %d, n. Bunlar yazım hatası değildir. Yer tutucu adı verilen bu işaretler, programın çalışma anında dolduracağı boşlukları gösterir. Çevirmenin görevi onları anlamak ve olduğu gibi korumaktır.
İçindekiler
Yer tutucu, tanımı gereği yüzde işaretinin ardından gelen ve uygulama çalışırken başka bir kelime, değer ya da dizeyle değiştirilen karakterlerdir. Bu ifadeler yalnızca masaüstü yazılımında değil, oyunlarda, mobil uygulamalarda ve web uygulamalarının betiklerinde de karşımıza çıkar.
Aşağıda en yaygın türleri, kaçış dizilerini, numaralandırılmış biçimleri ve bu ifadelerin hangi durumlarda çeviriyi zorlaştırdığını anlatıyoruz. Konu teknik görünse de sonucu doğrudan kullanıcının okuduğu cümledir.
Yer tutucu nedir ve neden vardır?
Bir program, kullanıcıya göstereceği cümlenin tamamını her zaman önceden bilemez. Silinen dosya sayısı, bağlanılan sunucu adı ya da kalan disk alanı çalışma anında belli olur. Bu yüzden geliştirici cümleyi boşluklu yazar ve boşluğu bir yer tutucuyla işaretler.
Örneğin Java’da “hello %s!” biçiminde tanımlanan bir dize, ikinci satırda değişkene “world” değeri verildiğinde ekranda “hello world!” olarak görünür. Aynı mantık PHP, C, Python ve daha birçok dilde küçük sözdizimi farklarıyla işler. Değişen ad, değişmeyen ilkedir.
Bu ifadeler yerelleştirme sırasında olduğu gibi korunur. Nedeni yalnızca teknik değildir: yer tutucunun alacağı değer, çevresindeki metnin nasıl çevrileceğini de etkiler. Savourel’in belirttiği gibi değişkenler, etraflarındaki cümlenin biçimi üzerinde doğrudan etkilidir.
Çeviri araçları bu ifadeleri genellikle korumalı öge olarak işaretler. Yine de her araç her biçimi tanımaz. Elle düzenlenen dosyalarda en sık görülen hata, yüzde işaretiyle harf arasına boşluk girmesi ya da harfin küçük-büyük değişmesidir.
En sık karşılaşılan yer tutucu türleri
Yer tutucular hangi tür veriyi bekledikleriyle ayrışır. Aşağıdaki liste, Esselink’in derlediği yaygın türleri özetler. Bu ayrımı bilmek, dizeyi okurken cümlenin nasıl tamamlanacağını kestirmenizi sağlar; özellikle sayı bekleyen bir boşluk çoğul sorununu da beraberinde getirir.
| Yer tutucu | Beklenen değer |
|---|---|
| %s | Metin dizesi |
| %d | Ondalık tam sayı |
| %ld | Uzun ondalık tam sayı |
| %x | Onaltılık biçimde sayı |
| %g | Kayan noktalı değer |
| %u | Unicode karakter |
| %p | Sayfa numarası |
Windows kaynaklı bir hata mesajında bu türlerin birkaçı aynı satırda bulunabilir. Örneğin bir güvenlik hatası dizesinde hem %s hem %d yer alır, sonuna da bir kaçış dizisi eklenir. Böyle bir satırda üç ayrı ögeyi aynı anda korumanız gerekir.
Apple ortamında karşılaşacağınız “%d home(s) found” dizesi başka bir tuzağı gösterir. Buradaki değer pozitif ya da negatif, kesirsiz herhangi bir sayı olabilir. Parantez içindeki çoğul eki İngilizcede idare eder; Türkçede aynı numara aynı biçimde çalışmaz.
Tür bilgisini okumak, çeviri kararını da yönlendirir. Sayı bekleyen bir boşluğun etrafına sayı bildiren bir kalıp kurabilirsiniz; metin bekleyen bir boşlukta ise cümleyi olabildiğince nötr tutmak gerekir. Kaynak dizeyi okurken bu ayrımı yapmak, sonradan çıkacak uyum hatalarının önemli bölümünü baştan engeller.
Kaçış dizileri: satır sonu ve sekme
Kaçış dizileri, dize içinde kendilerini temsil etmeyen, doğrudan yazılması zor bir karaktere karşılık gelen işaretlerdir. Ters eğik çizgiyle başlarlar. C ve C++ dillerinden çıkmış, oradan Java ve PHP gibi dillere taşınmıştır. Yer tutucularla birlikte aynı satırda sıkça görünürler.
En yaygını \n, yani yeni satırdır. \t yatay sekme, \r satır başı, \b geri silme, \\ ise ters eğik çizginin kendisidir. Bunların hepsi ekranda görünmez; görünen şey metnin nasıl biçimlendiğidir. Silerseniz mesaj tek satıra sıkışır.
Türkçe çeviri sırasında dikkat edilmesi gereken nokta, cümle uzunluğunun değişmesidir. İngilizcede iki satıra bölünmüş bir uyarı, Türkçede aynı bölünme noktasında doğal durmayabilir. Bölünmeyi taşımak mümkündür; ancak dizinin kendisi silinmez, yalnızca yeri değiştirilir.
Bir başka ayrıntı, dizenin sonundaki görünmez boşluklardır. Kaynakta kelimenin ardından bırakılan boşluk, çalışma anında oraya bir değer ekleneceğini gösterebilir. Bu boşluğu temizlemek, ekranda kelimelerin birbirine yapışmasına yol açar. Görünmeyen karakterleri gösteren bir düzenleyiciyle çalışmak bu tür hataları önler.
Numaralı yer tutucular ve söz dizimi özgürlüğü
Bazı programlama dillerinde yer tutucular numaralandırılabilir. PHP’de %1$s ve %2$s biçiminde yazılan ifadeler, hangi değerin nereye gireceğini sabitler. Android tarafında da benzer bir yapı kullanılır: bir karşılama iletisinde %1$s kullanıcı adını, %2$d ileti sayısını taşıyabilir.
Bu numaralandırma çevirmen için nefes alanı açar. Numaralar değerleri kimliklendirdiği için hedef dilde sıra değiştirebilirsiniz. İngilizcede önce gelen özne, Türkçede cümlenin başka bir yerine taşınabilir; program yine doğru değeri doğru boşluğa yerleştirir.
Numarasız yer tutucularda ise sıra sabittir. Peş peşe gelen iki %s, dosyadaki sırayla doldurulur. Bu durumda söz dizimini değiştirmek anlamı tersine çevirebilir. Kaynakta iki numarasız yer tutucu görüyorsanız, sırayı korumak ilk kuraldır.
Bu fark, Türkçe için özellikle önemlidir. İngilizce cümle yapısıyla Türkçe cümle yapısı çoğu zaman aynı sırayı izlemez; yüklem sona gider, tümleçler yer değiştirir. Numaralı yer tutucu kullanılmayan bir dizede doğal bir Türkçe cümle kurmak zorlaşır. Böyle durumlarda numaralandırma talebini geliştirme ekibine iletmek yerinde olur.
Yer tutucuya dokunulursa ne olur?
Sonuç, hatanın türüne göre değişir. Bazen ekranda ham kod parçası görünür, bazen değer hiç yerleşmez, bazen de uygulama o ekranda çöker. Kalite kontrol araçları bu hataların çoğunu yakalar; ancak yakalanmayanlar doğrudan kullanıcının karşısına çıkar.
Hatanın maliyeti, bulunduğu aşamaya göre büyür. Çeviri sırasında fark edilen bir eksik yer tutucu birkaç saniyede düzeltilir. Aynı hata derlenmiş sürümde bulunduğunda dosya güncellenir, paket yeniden derlenir ve test tekrarlanır. Yayına çıktıktan sonra bulunduğunda ise iş, sürüm planına giren bir düzeltmeye dönüşür.
Bu yüzden yer tutucu içeren dizelerde birkaç kural değişmez. Aşağıdaki liste, çeviri sırasında uygulanabilecek en temel denetimleri sıralar.
- Kaynaktaki yer tutucu sayısı ile hedefteki sayı birebir aynı olmalıdır.
- Harfler küçük-büyük ayrımıyla korunur; %S ile %s aynı şey değildir.
- Yüzde işareti ile harf arasına boşluk konmaz.
- Numaralı yer tutucularda numara değiştirilmez, yalnızca konum değişebilir.
- Kaçış dizileri silinmez; gerekirse cümle içinde yeri değiştirilir.
Bu denetimleri teslim öncesi otomatik çalıştırmak, kontrol süresini belirgin biçimde kısaltır. Kapsamı planlarken yazılım yerelleştirme hizmetlerimize göz atabilirsiniz.
Bağlam sorunu: geliştiriciye ne zaman sorulur?
Esselink’in klasikleşmiş örneği “%s to %s” dizesidir. Bu satırda iki değişken vardır ve içlerine haftanın günleri, sayılar ya da dosya konumları girebilir. Aradaki edat, gelen değere göre farklı biçimlerde çevrilmelidir. Tek başına bakıldığında doğru çeviri belirlenemez.
Benzer bir durum “%1 already exists. nDo you want to replace it?” satırında görülür. İkinci cümledeki zamirin karşılığı, %1’in aldığı değere bağlıdır. Bu tür satırlarda doğru yol tahmin yürütmek değil, geliştiriciden değişkenin ne taşıdığını öğrenmektir.
“This is not a valid %s” dizesi ise sıfat uyumunu zorlar. Bazı dil çiftlerinde çözüm, cümleyi uyum gerektirmeyecek biçimde kurmaktır. Yer tutucunun etrafını yeniden yazmak, çoğu zaman geliştiriciyi beklemekten daha hızlı ve daha güvenli bir çözümdür.
Soru sormanın da bir yöntemi vardır. Geliştiriciye “bu dize ne anlama geliyor” diye sormak genellikle sonuç vermez. Bunun yerine değişkenin hangi değerleri alabileceğini, dizenin hangi ekranda göründüğünü ve cümlenin öncesinde ne yazdığını sormak gerekir. Somut soru, somut yanıt getirir.
Türkiye bağlamı
Türkçe, yer tutucu içeren dizelerde İngilizceden daha zorlu bir zemin sunar. Sondan eklemeli yapı nedeniyle değişkenin aldığı değer, kendisinden sonra gelen ekin biçimini belirler. “%s dosyasını” ile “%s belgesini” arasında ekin sesli uyumu farklıdır; değişkene gelecek kelimeyi bilmeden doğru eki seçemezsiniz.
Bu sorunun pratik çözümü, cümleyi ekten bağımsız kurmaktır. Değişkeni cümlenin sonuna almak, araya iki nokta koymak ya da eki gerektirmeyen bir kalıp seçmek yaygın uygulamalardır. Deneyimli yerelleştiriciler bu düzenlemeyi hata olarak değil, uyarlama kararı olarak kaydeder.
İkinci mesele büyük harf dönüşümüdür. Türkçedeki noktalı İ ve noktasız ı, İngilizce kurallarına göre çalışan sistemlerde beklenmedik sonuç üretir. Değişkenin taşıdığı değer başlıkta büyük harfe çevriliyorsa, çıktının Türkçe kurallarına göre üretildiğini geliştiriciye teyit ettirmek gerekir.
Üçüncü mesele sayı ve tarih biçimleridir. Yer tutucuya gelen değer bir tarih ya da ondalık sayıysa, biçimlendirmeyi işletim sisteminin yerel ayarı belirler. Türkiye için ondalık ayırıcı virgüldür ve tarih gün-ay-yıl sırasıyla yazılır. Bu ayarların doğru yerel ayara bağlandığını test aşamasında görmek gerekir.
Bu sizin için ne anlama geliyor?
Ürününüzün arayüz metinlerini çevirtiyorsanız, yer tutucu içeren dizeler projenin en kırılgan bölümüdür. Buradaki bir hata yazım yanlışı gibi görünmez; doğrudan çalışmayan bir ekran olarak karşınıza çıkar. Bu nedenle bu dizeleri ayrı bir kalite adımı olarak ele almak yerinde olur.
- Değişken içeren dizelerin listesini çeviri öncesinde ayrı olarak çıkarın.
- Her değişkenin neyi temsil ettiğini yorum satırı olarak dosyaya ekletin.
- Mümkünse ekran görüntüsü ya da erişim ortamı sağlayın.
- Teslim sonrası otomatik yer tutucu denetimini şart koşun.
- Türkçede ek sorunu doğuran kalıpları geliştirme ekibine bildirin.
Bu beş adım, ilk sürümden sonra gelen hata bildirimlerini belirgin biçimde azaltır. Projenizin kapsamını konuşmak için bize ulaşabilirsiniz.
Sık sorulan sorular
Yer tutucu çevrilir mi?
Hayır. %s, %d gibi ifadeler çalışma anında programın yerleştireceği değerin yerini tutar. Harfi değiştirmek ya da araya boşluk koymak dizenin bozulmasına yol açar.
%s ile %d arasındaki fark nedir?
%s herhangi bir metin ya da sayı için kullanılır. %d ise ondalık tam sayılar içindir; yani 1, 5, -3 gibi kesirsiz değerler yerleşir.
Yer tutucunun yerini cümle içinde değiştirebilir miyim?
Numaralı yer tutucular kullanılıyorsa evet. %1$s ve %2$s gibi ifadeler sırayı bağladığı için hedef dilin söz dizimine göre yeniden konumlandırılabilir.
Yer tutucunun neyi temsil ettiğini nasıl öğrenirim?
Kaynak dosyadaki yorum satırına, varsa ekran görüntüsüne bakılır. Yine de belirsizse doğru yol geliştiriciye sormaktır; tahmin etmek çoğu zaman hatalı çeviri üretir.
Kaynaklar
- Jiménez-Crespo, M. A. (2024). Localization in Translation. Routledge, s. 154–156.
- Esselink, B. (2000). A Practical Guide to Localization. John Benjamins, s. 68, 73–75.
- Android geliştirici belgeleri, “String resources” bölümü (çevrimiçi belge).