Hatırlat için dil konusunda araştırma yaparken, gettext modülü ile bir programa nasıl farklı dil ile çalışabilme özelliğinin verilebileceğini öğrendim. İlk başta karışık geldi biraz ama pek zor bir şey değilmiş.
İlk olarak yapmanız gereken bir .po dosyası hazırlamak. Bu dosyayı en basit hali ile aşağıdaki gibi oluşturabilirsiniz.
# hatirlat.py satır 35 msgid "kullanici girisi" msgstr "Kullanıcı Girişi" # arabirim.py satır 124 msgid "hakkinda" msgstr "Hakkında"
Bu dosyadaki # karakteri ile isterseniz açıklamalar yapıyorsunuz. msgid ile belirtilen veri programda kullanılacak olan bölüm, msgstr ile belirtilen içerik ise, msgid kısmının kullanıldığı yerlerde görüntülenecek olan içeriktir.
Bu dosyayı oluşturduktan sonra .mo dosyasını oluşturmalısınız. Bunun için gettext'in bilgisayarınızda kurulu olması lazım. Bir Linux dağıtımı kullanıyorsanız paket yöneticinizle (örn: apt-get install gettext) basitçe kurabilirsiniz.
.mo dosyasını konsolda aşağıdaki komutla oluşturabilirsiniz.
omer@ubuntu:~/gelistirme/hatirlat/po$ msgfmt tr.po -o hatirlat.mo
Bu işlemin ardından artık .mo dosyanızı projenizde kullanabilirsiniz. Aşağıda basit bir örnek bulunmakta. Dil klasörünün içeriğide şu şekilde olmalı.
dil/
dil/tr/
dil/tr/LC_MESSAGES/hatirlat.mo
import gettext ceviri = gettext.translation("hatirlat","dil/",languages=["tr"]) _ = ceviri.ugettext print _("kullanici girisi") print _("hakkinda")
Buradaki "hatirlat" kısmı, .mo dosyamızın ismi. "dil/" değeri ise .mo dosyalarının bulunduğu klasörün yoludur. Klasör içerisinde açılan "tr", "en" isimli klaörleri seçmek içinse yani bir nevi dili seçmek için languages değerini düzenleyebilirsiniz.