Uluslararasılaştırma
3.1.3 İleri Kullanım
Tek bir çeviri alanı birçok program için yeterli olsa da, bunun yetersiz
kaldığı bazı durumlar var. Örneğin bir dizi program aynı hata mesajlarını
kullanıyorlarsa bunlar tek bir alanda toplanabilir, böylece bir kere
çevrilmeleri yeterli olur. Kitaplıklarda ise fonksiyonların çağıran
programın alanından bağımsız, kendi alanlarından çeviri almaları gereklidir.
Her ne kadar bu sorun textdomain () çağrıları ile çözülebilirse de,
yavaş ve kullanışsız olur. Bu amaç için:
-
char *dgettext (const char *domain_name, const char *msgid);
fonksiyonu yardımcı olur. Bununla farklı alanlardan ileti çevirileri
alabilirsiniz.
gettext sistemi yalnızca ileti çevirilerini getirmekle kalmaz, aynı
zamanda bunları saklandıkları karakter setinden, o anki yerelleştirmenin
LC_CTYPE ile belirlenen etkin karakter setine de çevirir. Metinleri
yerelleştirmeye bağlı kalmadan kullanabilen programlar, çevirileri
UTF-8 karakter setinde isteyebilir. Bunun için,
-
char *bind_textdomain_charset (const char *domain_name,
const char *codeset);
kullanılır. Örneğin:
-
bind_textdomain_charset (PACKAGE, "UTF-8");
gettext çeviri bulamadığı durumda verilen iletiyi aynen döndürdüğü
için, bunun kullanıldığı durumlarda program kodundaki metinlerin UTF-8
olarak tutulması gerektiğine dikkat edin!