ASP’de Türkçe Hâl ve İyelik Ekleri
Sitenizdeki üyelerin isimlerine bir hâl eki veya iyelik eki eklemek sizin hiç ihtiyacınız oldu mu bilmiyorum ama, ben ara ara ihtiyaç duymuştum. İngilizce’de, mesela “Murat’ın Mesajları” demek istediğimizde “Murat’s Messages” yazıyoruz. Yani isme bir “’s” takısı getirmek yeterli. Ve bu isme göre değişmiyor. İsim olarak Murat da yazsak, Uğur da yazsak, John da yazsak “’s” tek çözüm. Dolayısıyla İngilizce sitelerde bu tür kullanımları çok sık görebiliyoruz.
Ancak gelin görün ki Türkçe’de durum farklı. Türkçe’de kelimedeki sesli dizilişine ve son harfe göre gelen takının şekli değişiyor. Mesela ikisi de iyelik eki olmasına karşın Murat için “ın” eki, Uğur için “un” eki getiriyoruz. Bu yüzden ben sitemde bu tür ekleri kullanmaktan hep kaçınmıştım. İlla bu tür şeyler yazdırmamız gerektiğinde Türkçemizin elastiki özelliğine başvurmak tek çarem olmuştu.
Geçenlerde yine bir İETT yolculuğumda (uzun zamandan beri birçok çözüme İETT otobüslerinde ulaştım. Bir ara bu ilginç konuya da değineceğim nasipse), buna bir çözüm bulmak lazım dedim ve oturdum, bu eklerin nasıl oluştuğu üzerine kafa yordum. Ve farkettim ki aslında çok basitmiş. İhtimaller çok da fazla değil. Ama nedense böyle bir kod ne gördüm, ne de bu tür bir yapı kullanan bir site farkettim. Oturdum EditPlus’ımın karşısına ve yazmaya başladım. Ben ASP ile yazdım ama basit mantığı gören herkes istediği dile kolayca tercüme edebilecektir.
Çalışan bir örneğe şu adresten ulaşabilirsiniz: http://www.muratcorlu.com/depo/halekleri.asp
Örnekte görüleceği üzere aslında iyelik eki eklemek amacıyla başladığım kodlamaya -çözümü benzer olduğundan- hâl eklerini de ekledim. Bütün kodu beraber okumak çok uzun olacaktır ancak mantık benzer olduğundan sadece bir hal eki eklemeyi beraberce görebiliriz. Örneğin -i hâl eki ekleyecek kodu yazıyor olalım. İlk fonksiyonumuz i fonksiyonu:
function i(isim) :
function i(isim) Dim sonuc, sonharf, kelime sonuc = "'" 'Hemen apostrof işaretimizi koyduk kelime = kharfe(isim) 'kharfe adlı bir fonksiyonumuz var. isim değişkenimizi küçük harfe çeviriyor 'Bu fonksiyon konumuz değil, onun için geçiyorum. Kodlarda göreceksiniz tabi if sonharfseslimi(kelime) = true then sonuc = sonuc & "y" end if 'Sonharfseslimi fonksiyonu ismin son harfine bakıyor ve eğer son harf bir sesli 'harf ise true değerini gönderiyor. Biz de kaynaştırma harfimizi koyuyoruz hemen sonharf = sonsesli(kelime) 'sonsesli fonksiyonu kelimedeki son sesli harfin konumunu veriyor. Çünkü ekin 'alacağı sesli harfi bu sesliye göre belirleyeceğiz. sonuc = sonuc & sesliyeEk(sonharf, "i") 'sesliyeek fonksiyonu aslında can alıcı fonksiyonumuz sayılabilir. Bu fonksiyon 'son sesli harfe, "i" hali için uygun sesli harf karşılığını gönderiyor. 'fonksiyonu aşağıda görebilirsiniz. if buyukMu(right(isim, 1)) = true then sonuc = bharfe(sonuc) end if 'burada ismin son harfi büyükse sonucu da büyütüyoruz. i = isim & sonuc 'ismin sonuna hal ekimizi takıp gönderdik... end function
Can alıcı fonkyisonumuz olan function sesliyeEk(harf, tur) :
function sesliyeEk(harf, tur) Dim SessizHarfler, SesliHarfler, kacinciharf SesliHarfler = "aıeiouöü" kacinciharf = instr(SesliHarfler, harf) 'gelen sesli harfin SesliHarfler listemizde kaçınca harf olduğuna baktık 'sonrasında hâl seçeneğine göre bu harfe uygun sesli harfi gönderiyoruz: select case tur case "iyelik","i": select case kacinciharf case 1,2: sesliyeEk = "ı" case 3,4: sesliyeEk = "i" case 5,6: sesliyeEk = "u" case 7,8: sesliyeEk = "ü" end select case "e","de","den": select case kacinciharf case 1,2,5,6: sesliyeEk = "a" case 3,4,7,8: sesliyeEk = "e" end select end select end function
Görüldüğü üzere her ek için kelimede geçen son sesli harfe bakmak yeterli. Bunun dışında kaynaştırma harfini de kontrol etmek gerekiyor tabi.
Kodun kullanımına gelince; kodu açıp okuduktan sonra projenize en uyun şekilde kullanmak size kalıyor tabi ama, şu anki haliyle hal ekleri fonksiyonlarını kullanmak istediğiniz asp sayfasında, fonksiyonu kullanmak istediğiniz yerin öncesinde bir yerlerde (mesela sayfanın en başında) hâl ekleri fonksiyonlarını barındıran asp sayfasını include etmeniz yeterli (<!–#include file=”inc_hal.asp”–>). Bundan sonra, mesela isim değişkenimiz Isim olsun. Bunun iyelik ve hâl eklerini yazdıracak kodumuz şu şekilde olacaktır:
response.write iyelik(Isim) response.write e(Isim) response.write i(Isim) response.write de(Isim) response.write den(Isim)
Umarım faydalı olmuştur. Her türlü sorularınızı İletişim formundan iletebilirsiniz.
Kaynak dosyalar : http://www.muratcorlu.com/depo/halekleri.zip
Hehe… IETT kısmına ben de katılıyorum :D
Benim de kodlar için çözümler olmadık yerlerde aklıma geliyor :D
# 01 Mar 2006, 21:03