Gettext

Bilgi işlemde gettext, Unix benzeri bilgisayar işletim sistemlerinde çok dilli programlar yazmak için yaygın olarak kullanılan bir uluslararasılaştırma ve yerelleştirme (i18n ve l10n) sistemidir. Gettext'in temel faydalarından biri, programlamayı çevirmekten ayırmasıdır. Gettext'in en sık kullanılan uygulaması, 1995 yılında GNU Projesi tarafından yayınlanan GNU gettext'idir .Çalışma zamanı kitaplığı libintl'dir. Gettext, çok sayıda isim türü için farklı dizeler kullanma seçeneği sunar, ancak dilbilgisel cinsiyet için desteği yoktur.

Başlangıçta POSIX, mesajları yerelleştirmek için hiçbir yol sunmamaktaydı. 1980'lerin sonlarında, 1988 Uniforum gettext ve 1989 X / Open catgets (XPG-3 § 5) adlı iki öneride bulunuldu. Sun Microsystems 1993'te ilk gettext'i uygulamaya soktu. Unix ve POSIX geliştiricileri, ne tür bir arayüz kullanacakları konusunda hiçbir zaman anlaşamadılar (diğer seçenek X / Open catgets), glibc dahil olmak üzere birçok C standart kütüphanesi her ikisini de uygulamaya soktu. Ağustos 2019'dan itibaren gettext'in POSIX'in bir parçası olması gerekip gerekmediği, eski rakibinin zaten kullanım dışı kalmasına rağmen, Austin Grubu'nda hala tartışma konusu mahiyetindedir. Belirtilen endişeler, sistem ayarlı yerel ayara bağımlılığını (çoklu iş parçacığı sorunlarına maruz kalan küresel bir değişken) ve geniş dizeleri içeren daha yeni C dili uzantılarını desteklemesini içeriyordu.

GNU Projesi, gettext'in anahtar olarak mesaj yaklaşımının daha basit ve daha kolay olduğuna karar verdi. (Catgets dahil olmak üzere diğer birçok sistem, geliştiricinin her dize için "anahtar" adları bulmasını gerektirir.) 1995 yılında sistemin ücretsiz bir yazılım uygulaması olan GNU gettext yayınlandı. Gettext, GNU ya da değil, birçok programlama diline taşındı. Po ve yaygın editör desteğinin basitliği, metin belgeleri için program dışı bağlamlarda veya diğer yerelleştirme formatları arasında, po4a (herhangi bir şey için po) ve böyle bir köprü sağlamak için ortaya çıkan Çevirme Araç Seti gibi bir ara geçiş olarak benimsenmesine yol açtı.

gettext() daha sonra sağlanan dizeleri çevirileri aramak için anahtar olarak kullanır ve herhangi bir çeviri olmadığında orijinal dizeyi çevirir. Bu, programlı bir kimliğin (genellikle bir tam sayı) kullanıldığı POSIX catgets(), AmigaOS GetString() veya Microsoft Windows LoadString() işlevinin tersidir. Aynı orijinal dil metninin farklı anlamları olabileceği durumu ele almak için, gettext ek bir "bağlam" dizesini kabul eden cgettext() gibi işlevlere sahiptir.

POSIX kabuk betiğinde gettext, gettext.sh benzer dillerde sağladığı birçok işlevi sağlayan bir gettext.sh kütüphanesi sağlar. GNU bash ayrıca basit gettext işlevi için basitleştirilmiş bir yapı $"msgid", ancak bir gettext() işlevi sağlamak için C kütüphanesine bağlı haldedir.

Son olarak, .po dosyaları msgfmt ile ikili .mo (Makine Nesnesi) dosyalarına derlenir. GNU gettext, başka bir gettext uygulaması olan sistemlerde kendi dosya adı uzantısı .gmo kullanabilir. Bunlar artık yazılım paketi ile beraber dağıtım için hazırdır.

GNU msgfmt ayrıca programlama dili tarafından kullanılan format dizesiyle ilgili bazı kontroller yapabilir. Aynı zamanda MO dışındaki dile özgü formatlarda çıktı alınmasını sağlayabilir.

Gelişimsel iş akışının sonraki aşamalarında, msgmerge eski bir çeviriyi daha yeni bir şablona "güncellemek" adına kullanılabilir. Ayrıca ters derleme .mo dosyaları için msgunfmt ve toplu işlem için birçok diğer yardımcı program da mevcuttur.

GNU varyantlarındaki kullanıcılar bunun yerine LANGUAGE ortam değişkenini de kullanabilir. Unix değişkeninden temel farkı, geri dönüş için " : " işaretiyle ayrılmış birden çok dili desteklemesidir.

Diller için başvuru çoğul kuralları Unicode konsorsiyumu tarafından sağlanır. msginit ayrıca belirli bir dil için bir dosya oluştururken uygun olanı önceden doldurur.

C'ye ek olarak, gettext aşağıdaki uygulamalara sahiptir: Her iki ASP için C # . NET ve WPF için, Perl, PHP, Python, Scala, ve Node.js uygulamalarına da sahiptir.

GNU gettext'in Objective-C yerel desteği mevcut, ancak Swift programlama dili için henüz herhangi bir desteği yok. Bu Cocoa platformlarında yaygın olarak kullanılan bir gettext uygulaması POLocalizedString'dir. İOS için Microsoft Outlook ekibi, gettext benzeri bir API içeren bir LocalizedStringsKit kütüphanesi de sağlar.