Uluslararasılaştırma

3.1.2  Sorunlu Noktalar

Tabi metinler program içinde her zaman böyle bir fonksiyon çağrısı ile kolayca çevrilebilecek biçimde kullanılmıyor. Dillerin farklı yapıları da kimi sorunlar çıkarmakta. Örneğin isimlerin çoğul ve tekil hallerinin kullanımı dilden dile değişmekte.
printf ("%d file%s deleted", n, n == 1 ? "" : "s"); 
Burada son parametredeki ? deyimi n değeri 1 olmadığı koşullarda 'file' yerine 'files' şeklinde çıktı verilmesini sağlamakta. Ancak Türkçe ve benzeri dillerde İngilizce'deki bu kural yok. Bu durumlarda daha açık yazmayı tercih etmelisiniz:
if (n == 1) 
    printf ("%d file deleted", n); 
else 
    printf ("%d files deleted", n); 
Her zaman iletileri gettext ile kuşatmanız mümkün olmayabilir. Örneğin:
static const char *messages[] = {

    "some very meaningful message",

    "and another one"

}; 
fputs (gettext (messages[i]));
Burdaki sorun, basılacak olan ileti için gettext fonksiyonunun çağrılması, ancak çevrilecek iletileri içeren dosyayı oluşturacak xgettext programının kod içerisinde bu iletileri görememesidir. Bunu çözümü için;
#define gettext_noop(x) x 
static const char *messages[] = { 
    gettext_noop ("some very meaningful message"), 
    gettext_noop ("and another one") 
}; 
fputs (gettext (messages[i]));
kullanılabilir. gettext_noop için N_ makrosu da tanımlanabilir, böylece fazla yazı yazmaktan kurtulunur.
#define N_ (x) gettext_noop (x) 
Bu iki makro da herhangi bir kod çağırmaz, yalnızca metinlerin çevrilecek metinler olduğunu xgettext'in anlamasını sağlarlar.

Çevirilerin rahatça yapılabilmesi için, özgün iletilerinizin belirsizlik içermeyen, anlaşılır, tam tümceler olmasına dikkat edin. Sözcükleri birleştirmek yerine birden fazla tümce kullanmayı tercih edin, örneğin:
printf ("File %s is %s", filename,

        size < 16000 ? "small" : "big"); 
yerine:
printf (size < 16000 ? _("File %s is small")

        : _("File %s is big"), filename); 
Tek bir durumu anlatan çok satırlı iletileri, satır satır basmak yerine, içinde n ile satır dönüşü içeren tek bir ileti olarak kullanmaya çalışın. Böylece çevirmenler yarım satırları çevirme ve bölünme yüzünden tutarsız çevirmeler yapma durumunda kalmayacaklardır.

Bu web sitesinde bulunan bilgi ve belgelerin, kaynak gösterilmek koşulu ile kullanılması serbesttir.
Pardus markası ve logotipi TÜBİTAK'ın tescilli markasıdır. Kullanım koşulları için Yasal Uyarı bölümünü inceleyiniz.
Pardus hakkında merak ettikleriniz için lütfen yardım sayfasına başvurun. TÜBİTAK - UEKAE, PK.74 41470, Gebze / Kocaeli.

Copyright 2007 Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü. Tüm Hakkı Saklıdır. Görüşleriniz