arşiv

yazılar buna göre etiketlendi; ‘türkçe’

Türkçe IDLE

Pazartesi, 22 Kas 2010

Python kodlarımızı yazmak için herhangi bir metin editörünü rahatlıkla kullanabiliyoruz. Eğer sıkı sıkıya bağlı olduğunuz bir metin düzenleyici (EMACS veya Vi gibi…) yoksa, IDLE adlı düzenleyici ile de çalışabilirsiniz.

IDLE, Windows’ta Python’la birlikte geliyor. GNU/Linux dağıtımları ise genellikle bu bileşeni ayrı bir paket olarak dağıtmayı tercih ediyor. Dolayısıyla GNU/Linux dağıtımlarından birini kullanıyorsanız, IDLE üzerinde çalışabilmek için dağıtımınızın depolarından “idle” adlı paketi kumanız gerekiyor.

IDLE’da Türkçe desteği bulunmuyor. Dolayısıyla Python’la birlikte gelen IDLE sürümünde bütün menüler İngilizce. Ama http://pythontr.org/ ekibi bu sorunu çözmüş gibi görünüyor. IDLE’ı Türkçe olarak kullanmak isteyenler http://sourceforge.net/projects/pyidlelif/files/ adresindeki kurulum dosyasını indirerek IDLE sürümlerini Türkçeleştirebilir.

Türkçeleştirilmiş IDLE sürümü, Windows için exe, GNU/Linux için tar.gz dosyası halinde sunuluyor.

Programla ilgili soru ve önerilerinizi http://pythontr.org/ adresinden geliştirici ekibe iletebilirsiniz.

NOT: Bu program Python’un 2.6 sürümünü destekliyor.

GNU/Linux, Python , , ,

Sphinx 1.0 Yolda…

Cumartesi, 29 May 2010

istihza.com‘u takip edenlerin artık gayet iyi bildiği gibi, sitedeki HTML ve PDF belgelerini oluşturmak için Sphinx adlı bir yazılımdan yararlanıyorum.

Bu yazılımı istihza.com’daki belgelendirme çalışmaları için kullanmaya ilk karar verdiğimde yazılımın benim amacım açısından en önemli eksikliği Türkçe desteğinin olmamasıydı. Bu yüzden ilk iş olarak Sphinx’i Türkçe’ye çevirdim. Böylece istihza.com’daki HTML belgelerinin arayüzü Türkçe desteğiyle okura sunulabilmiş oldu.

Sphinx’i Türkçe’ye ilk çevirdiğimde, bu yazılımı istihza.com’da kullanacağımı düşünerek, sadece kendi amacıma hizmet edecek şekilde Türkçeleştirmiştim. Daha sonra çeviriler üzerinde biraz daha çalışarak, bu çalışmayı Sphinx geliştiricilerine de göndermeye karar verdim.

Sphinx’in yakın zamanda yayımlanacak olan 1.0 sürümünde Türkçe dil desteği de olacak. Böylece Sphinx’i Türkçe belgelendirme çalışmalarında kullanmak isteyenler de, Türkçe arayüze sahip HTML belgeleri oluşturabilecek.

Sphinx’in şu anda beta aşamasında olan 1.0b1 sürümünün en son güncellemeleri de içeren halini indirmek için şu adresi ziyaret edebilirsiniz. Ama ben size kararlı sürümü beklemenizi tavsiye ederim. Kararlı sürüm yayımlandığında buradan duyuracağım.

Faydalı olması ümidiyle.

istihza.com , , ,

Sphinx’te Okunaklı URL’ler Üretmek

Çarşamba, 23 Eyl 2009

istihza.com’daki belgelerin Sphinx adlı yazılım kullanılarak üretildiğini daha önceden duyurmuştum. Ancak orada da bahsettiğim gibi Sphinx adlı yazılım, URL’leri üretirken, içinde Türkçe karakterler geçen başlık adlarını oldukça okunaksız bir hale sokuyor. Mesela “Python Nasıl Çalıştırılır?” gibi bir başlığı, http://www.istihza.com/py3/hakkinda.html#python-nas-l–al-t-r-l-r biçiminde bir URL’ye dönüştürüyor…

Bu durumun sebebi aslında doğrudan Sphinx’in kendisi değil. Bu sorun Sphinx’in yararlandığı Docutils adlı yazılımdan kaynaklanıyor. Sphinx’teki html URL’lerinin nasıl görüneceğini, Docutils içinde yer alan “nodes” adlı bir modül belirliyor. Bu işin asıl sorumlusu ise “nodes” modülü içindeki “make_id()” adlı bir fonksiyon…

“make_id()” adlı fonksiyon “string” adlı bir parametre alıyor. Bu fonksiyonun görevi, kendisine parametre olarak verilen karakter dizisini alıp bu karakter dizisinden bir “tanımlayıcı” (identifier) üretmek.

Bu “nodes” modülü içinde “_non_id_chars” adlı bir değişken belirlenmiş:

_non_id_chars = re.compile('[^a-z0-9]+')

Buradaki düzenli ifade yardımıyla, tanımlayıcı olamayacak karakterler ayıklanıyor. Buna göre eğer bir karakter, sayı veya harf değilse bir tanımlayıcı olarak adlandırılamıyor. Bu süzgeç doğal olarak Türkçe karakterleri dışarıda bırakıyor…

“make_id()” adlı fonksiyon, bu “_non_id_chars” değişkeniyle belirlenen karakterlerin yerine “-” işaretini koyuyor. Bu işi de “make_id()” içindeki şu satır hallediyor:

id = _non_id_chars.sub('-', ' '.join(string.lower().split()))

Dolayısıyla yukarıdaki düzenli ifadenin ayıkladığı karakterler çıktıda “-” işaretiyle gösteriliyor…

İşte Sphinx de bu “make_id()” fonksiyonunun ürettiği tanımlayıcıları URL adlarını belirlemede kullandığı için, Türkçe karakterler barındıran URL adları epey okunaksız bir hale geliyor.

Ben istihza.com’daki belgeleri Sphinx’le üretirken, bu sorunu çözmek amacıyla, “make_id()” fonksiyonuna ufak bir ekleme yaptım. Fonksiyona eklediğim kod parçasını şuraya yapıştırdım:

http://paste-it.net/public/ub37a24/

Eğer bu kodları yama olarak almak isterseniz şuraya bakabilirsiniz:

http://www.istihza.com/denemeler/turkish.patch

Bu kod parçası, URL’lerdeki Türkçe karakterlerin yerine ASCII-benzerlerini koyuyor. Mesela “ş” yerine “s” harfi, “ç” yerine “c” harfi, “ı” yerine “i” harfi gibi… Böylece “python-nas-l–al-t-r-l-r” yerine daha okunaklı bir ifade olan “python-nasil-calistirilir” ifadesini elde ediyoruz.

Bu durumdan ben Docutils geliştiricilerini haberdar ettim. Kodları da kendilerine gösterdim. Docutils geliştiricileri, bu sorunun farkında olduklarını ve Docutils’in svn’deki sürümünde bu sorunu giderdiklerini söyledi. Tabii svn’deki sürüm sadece Türkçe karakterleri değil, İngilizce dışındaki başka dillere ait özel karakterleri de içeriyor…

Eğer Sphinx’teki Türkçe sorununa hızlı bir çözüm arıyorsanız yukarıda verdiğim kodları kullanabilirsiniz. Bu kodları Docutils içindeki “nodes.py” adlı dosyada yer alan “make_id()” adlı fonksiyonun içine yerleştireceksiniz. Kodları “make_id()”  fonksiyonu içindeki “id” tanımlamalarından hemen önce yazıyoruz.

Python, Teknik , , ,

Python, PyUno ve OpenOffice: Taslak Makale

Pazartesi, 14 Eyl 2009

Daha önceki bir günlük girdisinde Python ve OpenOffice ilişkisinden üstünkörü bahsetmiştim. Bugün Python ve OpenOffice ile ilgili bir (taslak) makale yazarak, o girdide bahsettiğim konuları biraz olsun somutlaştırmaya çalıştım.

“Python ve OpenOffice” adlı bu makaleye http://www.istihza.com/py2/openoffice.html#python-ve-openoffice adresinden erişebilirsiniz. Makalede, Python programlama dilini ve uno köprüsünü kullanarak OpenOffice’ye nasıl erişebileceğimizi anlatabilmeyi amaçlıyorum.

Ne yazık ki internet üzerinde Python ve OpenOffice ilişkisi üzerine çalışmak isteyenleri tatmin edebilecek belge sayısı çok az. Eldeki kısıtlı kaynaklar da (tabii ki) İngilizce. Türkçe olarak bu konu üzerine bir şeyler bulmak pek mümkün değil. İnternet üzerindeki iyi belgeler çoğunlukla Java bilgisi istiyor. Dolayısıyla eğer Java biliyorsanız, makalenin “PyUno, Python ve OpenOffice Hakkında Bilgi Veren Kaynaklar” bölümünde verdiğim internet adreslerindeki bilgileri daha kolay anlayabilirsiniz.

Benim bu belgeyi hazırlamaktaki amacım, en azından bu işe başlayacak olanlara yol gösterebilmek… Eğer bu makale ile Python ve OpenOffice arasındaki ilişki konusunda kafalarda bir kıvılcım çakmasını sağlayabilirsem kendimi başarılı sayacağım.

Bu arada, bu makale şu anda “taslak” aşamasında sayılır. Ben elimden geldiğince bu makaleyi geliştirmeye çalışacağım. Eğer bu makaleye katkıda bulunmak veya makalede bulduğunuz hataları bildirmek isterseniz kistihza [at] yahoo [nokta] com adresinden bana ulaşabileceğinizi biliyorsunuz…

Sevgiler,

istihza

Uncategorized , , , , ,

Python 3′te Türkçe Desteği — Bölüm 2

Perşembe, 26 Mar 2009

Dün Python 3.x ve Türkçe desteği konusunda birkaç satır karalamıştım. Bugün kendi kendime Python 3.x’in Türkçe’yi ne kadar desteklediğini anlamak için denemeler yaparken güzel bir şey farkettim. Python 3.x, değişken adlarını Türkçe tanımlamamıza izin verecek kadar destekliyor Türkçe’yi… Tabii aslında “Python Türkçe’yi destekliyor!” demek çok doğru bir tabir değil… Esasında Python, yeni 3.x sürümüyle “Unicode” desteğini artırıyor. Dolayısıyla bu durum da Türkçe’ye yarıyor!

Python’un 2.x sürümlerinde şöyle bir şey yazamıyoruz:

üçüncü_değişken = 1213242
print üçüncü_değişken

Böyle bir şey yapmaya kalkıştığımızda, Türkçe karakterler nedeniyle 2.x sürümleri hata verecektir. Ama Python3.x, dün de bahsettiğim “utf-8″ desteği sayesinde yukarıdaki gibi bir değişken tanımlamamıza müsaade ediyor… Yani şöyle bir şey yazmak artık mümkün:

üçüncü_değişken = 1213242
print(üçüncü_değişken)

Görünen o ki, Python 3.x, eski alışkanlıklarımızı bir hayli sarsacak… İtiraf etmek gerekirse, benim elim hâlâ print() fonksiyonuna tam olarak alışmış değil… print “falanca” yazıp sonra da kendi kendime “yuh”  dediğim çok oluyor… :) Guido Van Rossum’un http://docs.python.org/3.0/whatsnew/3.0.html adresinde de dediği gibi:

Initially, you’ll be finding yourself typing the old print x
a lot in interactive mode.  Time to retrain your fingers to type
print(x) instead!
[Başlarda etkileşimli kabukta çalışırken sık sık eski print x
ifadesini yazdığınızı farkedeceksiniz. Ama artık parmaklarınızı
print(x) yazmaya alıştırmanızın vakti geldi!]

Python , , , , ,