Uluslararasılaştırma
3.3.4 Özel durumlar
Programların yeni sürümleriyle birlikte içerdikleri iletiler de değişmektedir.
Bazı yeni iletiler eklenirken, bazıları değişmekte, bazıları ise çıkarılmaktadır.
gettext sistemi .po dosyalarını güncellerken yeni eklenen iletilerin
çevirilerini boş bırakmaktadır, bunlar çevirmen tarafından doldurulur.
Çıkarılan iletiler,
-
# msgid "/File/_Close"
# msgstr "/Dosya/Kapa_t"
biçimine gelir. Bunları dosyadan çıkarabilirsiniz.
Değişen iletiler ya da gettext sisteminin düzgün çevrildiğine karar
veremediği iletiler ise fuzzy olarak işaretlenir:
-
#: src/main.c:70
#, fuzzy
msgid "I don't have eny easter eggs... or do I?"
msgstr "Hiç sürprizim yok... yoksa var m??"
Burda özgün iletideki 'any' kelimesi 'eny' olarak değiştirildiğinde,
gettext .po dosyalarında sorun olabileceğini belirtmek için iletinin
çevirisini
satırı ile işaretlemiş. Bu durumda çevirmen çeviriyi kontrol eder.
Gerekirse düzeltip fuzzy bayrağını kaldırır.
C programlarında karşılaşılabilecek bir başka özel çeviri durumu ise
format stringleridir. Bunlar C tarafından basılacak çıktıyı şekle
sokmak için kullanılır. Bir örnek:
-
#: src/file.c:167
#, c-format
msgid "cannot open file %s"
msgstr "%s dosyası açılamadı"
Burdaki c-format bayrağı, gettext sistemi tarafından otomatik olarak
konur ve iletinin bir format stringi olduğunu söyler. İletinin format
stringine benzemesi ama olmaması durumunda no-c-format bayrağı ile
de karşılaşabilirsiniz. Format stringleri içindeki %s %d gibi %
ile başlayan deyimler iletinin içind o yere başka bir değerin konacağını
gösterir. Örnekte programın basacağı ileti örneğin "cannot
open file resim.jpg" ya da Türkçe etkin iken "resim.jpg
dosyası açılamadı" olacaktır.
Bu iletilerde % ifadelerini (%s: metin, %d: tamsayı, %f: sayı,
%c: karakter, vs) korumalısınız. Aksi durumda program hatalı çalışacak
ya da çakılacaktır. Dil yapısından dolayı yerlerini değiştirmeniz
gereken durumlarda aşağıdaki gibi kullanın:
-
#: src/data.c:1203
#, c-format
msgid "%d of %d files processed"
msgstr "%2$d dosyadan %1$d adet dosya işlendi"
Burada özgün iletide ikinci sırada olan toplam dosya adedini başa
almak için '%' ile 'd' (ya da hangi tür değer basılıyorsa onun harfi)
arasına SIRANO ve '$' koyarak iletiyi programı bozmadan değiştirmiş
olduk.