Türkçe Dil bilgisi
yazım: 15 Kasım 08 11:52 / güncelleme: 21 Kasım 08 19:00
Siteye dil bilgisi öğretmek.
Geçenlerde bir resim galerisi sayfası için "40 fotoğraftan 2'nci" şeklinde bir açıklama kısmı kullanmak istedim. Türkçe sondan eklemeli bir dil malum, İngilizce gibi "Photo 2 of 40" (bkz. Facebook) şeklinde kestirip atamıyorsunuz.
Ben de kelimeye veya rakama -in ve -ci ekleri getiren bir fonksiyon yazmaya karar verdim. Fonksiyon kelimeyi sondan başa doğru tarayacak ve rastladığı ilk ünlü harfe ya da rakama göre; 0,10,100,1000 sayıları için sıfırları sayarak, basamak sayısına göre uygun eki getirecek.
Kelime sesli harf ile sonlanıyorsa, araya kaynaştırma için -n ekleyecek; rakamlarda ise sesli ile bitenlerde, ekten sesli harfi eksiltecek ve opsiyonel olarak -ci ekleyecek.
Sonuç olarak aşağıdaki fonksiyon çıktı.
PHP'nin string fonksiyonların UTF-8 uyuzluğu sebebiyle strrev() ve split() kullanmadım.
Ben de kelimeye veya rakama -in ve -ci ekleri getiren bir fonksiyon yazmaya karar verdim. Fonksiyon kelimeyi sondan başa doğru tarayacak ve rastladığı ilk ünlü harfe ya da rakama göre; 0,10,100,1000 sayıları için sıfırları sayarak, basamak sayısına göre uygun eki getirecek.
Kelime sesli harf ile sonlanıyorsa, araya kaynaştırma için -n ekleyecek; rakamlarda ise sesli ile bitenlerde, ekten sesli harfi eksiltecek ve opsiyonel olarak -ci ekleyecek.
Sonuç olarak aşağıdaki fonksiyon çıktı.
PHP'nin string fonksiyonların UTF-8 uyuzluğu sebebiyle strrev() ve split() kullanmadım.
public static function grammar($word,$ci = false){ preg_match_all('/./us', $word, $a); foreach (($reverse = array_reverse($a[0])) as $key=>$chr) { if($chr=='0') $zero++; if(in_array($chr,array('a','e','ı','i','o','ö','u','ü',
1,2,3,4,5,6,7,8,9))) break; } if($zero) $chr = $zero>2?'i':($zero>1?'ü':($chr?$chr.'0':'ı')); if(in_array($chr,array(1,5,8,70,80,'e'))) $chr = 'i'; elseif(in_array($chr,array(3,4,'ö'))) $chr = 'ü'; elseif(in_array($chr,array(9,10,30,'o'))) $chr = 'u'; elseif(in_array($chr,array(40,60,90,'a'))) $chr = 'ı'; $supp = '\''
.($key=='0'&&!is_numeric($reverse[0])?'n':'')
.(!is_numeric($chr)&&$chr!='0'?$chr:'').'n'; if($ci) if(in_array($chr,array(2,7,20,50))) $supp .= 'ci'; elseif($chr == 6) $supp .= 'cı'; else $supp .= 'c'.$chr; return $word.$supp;}
anahtar kelimeler:
türkçe
dil bilgisi






