Codeigniter’da Çoklu Dil Desteği

Aslında şuan Karadayı izliyo olucaktım ama topluma faydalı birşey yapıyım dedim 🙂 Diyelimki bir website yapıyorsunuz ve facebook ya da google gibi kullanıcıya göre dil göstermek istiyorsunuz. Eğer kullanıcı Türkiye’dense Türkçe İngiliteredense İngilizce gösterilsin. Tabiki bunun için öncesinde dil dosyalarınızın olması gerekiyor.

Codeigniter ilk olarak dil dosyalarına ulaşmak için application/language klasörü içerisine daha sonra da system/language klasörü içerisine bakar. Tabiki application/language içerisinde dil dosyasına ulaşırsa system/language konumuna hiç bakmaz.

Dil dosyalarımızın şekli şu şekilde olmalı. Diyelimki websitenizde Türkçe dil desteği ve İngilizce dil desteği vericeksiniz. Bunun için application/language içerisine turkish ve english adında iki klasör açıyorsunuz. Daha sonra turkish klasörüne index_lang.php, english klasörün içerisine de index_lang.php adında bir dosya oluşturuyorsunuz. Yani dikkat çekmek istediğim nokta dil dosyalarının sonuna _lang ekini getiriyorsunuz ve dil dosyaları kesinlikle dil klasörünün içerisinde olmalı. Tıpkı index_lang.php dosyası gibi menu_lang.php sidebar_lang.php tarzında dil dosyalarınızı parçalara ayırabilirsiniz. Örnek bir dil dosyası içeriği şu şekildedir :

<?php
$lang['home'] = 'Ana Sayfa';
$lang['aboutus'] = 'Hakkımızda';
$lang['contact'] = 'İletişim';
?>

sonrasında bunu controller dosyasında çağırmak için şu yapıyı kullanıyorsunuz.

$this->lang->load('home', 'turkish');

ya da

$this->lang->load('home', 'english');

Bu şekilde sayfalarınıza dil dosyası ekleyebiliryosunuz. Peki nasıl kullanıcaksınız onu da göstereyim.

$data['home']            =   $this->lang->line('home');
$this->load->view('index',$data);

bu şekilde home değişkenine dil dosyasından home‘un karşılığı olan Ana Sayfa bilgisini atamış olduk. Yani sayfasımızda daha doğrusu index.php view dosyamızda bunu şu şekilde kullanabiliriz.

<?php
echo $home;
?>

Bu normal dil dosyasıyla çalışma şekli. Peki biz kullanıcıya göre dili değiştirmek istiyorsak ne yapmalıyız. Öncelikle şu bilgiyi veriyim. Kullanıcının hangi ülkeden geldiğini bulmanın bir çok yolu var. Fakat ben bu işlem için kolay bir yöntem olan tarayıcı dilini kullanıcam. Yani mantık şu eğer siteye gelen kullanıcının tarayıcısının dili ingilizce ise dil ingilizce türkçe ise dil türkçe olsun.

Bu işlem için öncelikle bir helper oluşturuyoruz. Helper kullanımı hakkında bilginiz olduğunu varsayarak anlatmaya devam ediyorum. Helper dosyamızın içerisinde şu kodlar olacak:

<?php
function lg_select(){
 $lg = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if($lg=='tr'){
 return $language = 'turkish';
 }
 elseif($lg=='en'){
 return $language = 'english';
 }
 }
?>

Bu fonksiyon ile şunu yaptık tarayıcının dilinin kodunu aldık bize şu şekilde sonuç verecektir: türkçe ise tr, ingilizce ise en. ben yalnızca türkçe ve ingilizce için if sorgulaması yaptım. Aşağıda bütün ülke kodlarını görebilirsiniz.

Şimdi bunu controller sayfamızda kullanalım config/autoload ayarından şunu yapalım

$autoload['helper'] = array('url','lg_select');

ve az önce kullanmış olduğumuz şu kodu:

$this->lang->load('home', 'english');

şu şekilde yazalım

$this->lang->load('home', lg_select());

Bu şekilde sayfaya giren kullanıcının tarayısına göre dil seçimini yapmış oluyoruz.
[AB] Çerkez Dili (Abhaz)

 [AA] Afar
 [AF] Afrikanca (Hollanda Lehçesi)
 [SQ] Arnavutça
 [AM] Habeşistan Dili
 [AR] Arapça
 [HY] Ermenice
 [AX] Asur Dili
 [AZ] Azerice
 [EU] Baskça
 [BN] Bengalli
 [DZ] Bhutanlı dili
 [BH] Bihar dili
 [NB] Bokmål Norwegian
 [BS] Boşnakça
 [Br] Brazilian Portuguese
 [BG] Bulgarca
 [MY] Burmese
 [BE] Byelorussian
 [KM] Kamboçyaca
 [CC] Cantonese
 [VC] Cape Verdean Creole
 [CA] Catalan
 [Cb] Cebuano
 [CH] Chamorro
 [CE] Chechen
 [ZH] Çince
 [CK] Chuukese
 [CV] Chuvash
 [KW] Cornish
 [CO] Corsican
 [HR] Croatian
 [CS] Czech
 [DA] Danca
 [PG] Dari (Afghan Persian)
 [NL] Flemence
 [EN] English
 [EO] Esperanto
 [ET] Estonian
 [FO] Faroese
 [FA] Farsi
 [FJ] Fiji
 [FI] Finnish
 [Fl] Flemish
 [FR] French
 [FY] Frisian
 [GL] Galician
 [KA] Georgian
 [DE] Almanca
 [EL] Yunanca
 [KL] Greenlandic
 [GN] Guaraní
 [GU] Gujarati
 [HC] Haitian Creole
 [HA] Hausa
 [IW] Hebrew
 [HZ] Herero
 [Hl] Hiligaynon
 [HI] Hindi
 [HO] Hiri Motu
 [HM] Hmong
 [HU] Hungarian
 [Ib] Iban
 [IS] Icelandic
 [IL] Ilocano
 [ID] Indonesian
 [IA] Interlingua
 [IU] Inuktitut
 [IK] Inupiak
 [GA] Irish (Gaelic)
 [IT] İtalyanca
 [JA] Japonca
 [JW] Javanese
 [KN] Kannada
 [KS] Kashmiri
 [KK] Kazakça
 [KI] Kikuyu
 [RW] Kinyaruanda
 [KY] Kırgızca
 [RN] Kirundi
 [KV] Komi
 [KO] Korece
 [KP] Kpelle
 [KU] Kürtçe
 [LO] Lao
 [LA] Latin
 [LV] Latvian
 [LN] Lingala
 [LT] Lithuanian
 [LB] Lüksemburg Dili
 [MK] Makedonca
 [MG] Malagasy
 [MS] Malayca
 [ML] Malayalam
 [MT] Malta Dili
 [CM] Mandarin
 [GV] Manx Gaelic
 [MI] Maori
 [MR] Marathi
 [MH] Marshallese
 [MO] Moldavian
 [MN] Mongolian
 [NA] Nauru
 [NV] Navajo
 [NG] Ndonga
 [NE] Nepali
 [NI] Nijerya Dili
 [ND] North
 [NO] Norveççe
 [NY] Nyanja
 [NN] Nynorsk Norwegian
 [OC] Occitan
 [OR] Oriya
 [OM] Oromo
 [OS] Ossetian
 [PI] Pali
 [Pn] Pananyano
 [Pp] Papiamiento
 [PS] Pashto
 [PL] Lehçe (Polonezce de diye biliniyor)
 [PT] Portuguese
 [PA] Punjabi
 [QU] Quechua
 [RO] Romence
 [RU] Rusça
 [SE] Sámi
 [SM] Samoan
 [SG] Sangho
 [SA] Sanskrit
 [SC] Sardinian
 [GD] Scots Gaelic
 [SR] Sırpça
 [SH] Serbo-Croat
 [ST] Sesotho
 [TN] Setswana
 [SN] Shona
 [SD] Sindhi
 [SI] Sinhalese
 [SS] Siswati
 [SK] Slovak
 [SL] Slovence
 [SO] Somali Dili
 [NR] South Ndebele
 [ES] İspanyolca
 [SU] Sundanese
 [SW] Swahili
 [SV] İsveççe
 [TL] Tagalog
 [TY] Tahitian
 [TG] Tajik
 [TM] Tamil
 [TT] Tatar
 [TE] Telugu
 [TH] Thai
 [BO] Tibetan
 [TI] Tigrinya
 [TO] Tonga
 [TS] Tsonga
 [TR] Türkçe
 [TK] Türkmence
 [TW] Twi
 [UG] Uigur
 [UK] Ukraynaca
 [UR] Urduca
 [UZ] Özbekçe
 [VI] Vietnam Dili
 [VO] Volapük
 [CY] Welsh
 [WO] Wolof
 [XH] Xhosa
 [YI] Yidce. Alman İbranicesi
 [YO] Yoruba
 [ZJ] Zhuang
 [ZU] Zulu
Reklamlar

Php’de Nesne Tabanlı Çalışmak

Php’de projeler büyüdükce sıkıntılar da büyüyor ve işler karmaşıklaşıyor. Bir süre sonra fonksiyonel bir çalışmaya ihtiyaç duyuyorsunuz ve function’lar size yeterli olmuyor. Bunun önüne geçmek için class’larla çalışmayı öğrenmek lazım.

Nesne tabanlı çalışmalar hakkında sizlere kendim bilgi vermek isterdim fakat İbrahim Hızlıoğlu’nun hazırlamış olduğu videolardan daha iyi anlatabilceğimi düşünmediğimden dolayı bu videoları sizlerle paylaşmaya karar verdim ve video linkleri aşağıda sizlerle paylaşıyorum. Faydalı olacağına eminim.

Php İle Nesne Tabanlı Programlama – Ders 1

Php İle Nesne Tabanlı Programlama – Ders 2

Php İle Nesne Tabanlı Programlama – Ders 3

MVC Sistemi

Web programlamayla uğraşan arkadaşlarımız varsa onlara bir iki tavsiyede bulunacağım.

Küçük çaplı bir website projesi pek yorucu olmaz sıkıntı çekmezsiniz işler sarpa sarmaz fakat büyük boyutlu projelere başladığınız an işler karışır hele ki işler büyüdükce işin içinden çıkılmaz bir hal alır. Ben php programlama üzerinde kendimi geliştiriyordum hala da geliştiriyorum tabiki. Küçük projelerle çok uğraştım ve pek sorunla karşılaşmadım fakat biraz daha büyük projeler bulaştığımda gördümki düz php ile sayfa kodlaması ile işin içinde çıkılmıyor. Nesne tabanlı çalışmak şarttı fakat o da tek başına çözüm değil. O sıralarda MVC Frameworkleriyle tanıştım. Bu sistem bir projeyi üçe ayırıyor “M” harfinin temsil ettiği Model kısımı yani veritabanına bağlı olarak sorguların yapıldığı ve sonuçlarının alındığı bölüm “V” view bölümü yani yaptıklarınızı kullanıcılara göstereceğiniz bölüm daha doğrusu HTML kısmı diyelim ve “C” bizim kontrollerimizi yürüttüğümüz bölüm. Bütün php kodlamalarını M ve C yani Model ve Controller kısmında yaptıktan sonra size temiz View sayfaları kalıyor. Daha sonra projeye baktığınızda karışık bir yapı değil fonksiyonel bir yapı görüyorsunuz. Zaten büyük projeler böyle yazılıyor birçok kişinin aynı proje üzerinde çalışmasına da katkı sağlayan bir yapıdır bu.

Çeşitleri mevcut tabiki. En yaygın olanı Zend Framework ve Codeigniter. Bu iki firmadan birini tercih etmenizi tavsiye ederim. Size bu konuyu daha iyi anlayabilmeniz için bir örnek vereyim. Ayrıntılı anlatmayacağım ama MVC sistemini kullanarak yazdığınız bir html sayfası ile normal bir php+html sayfasını karşılaştıracağım.

Önceden php ve html kullanarak yazdığınız bir sayfayı gösteriyim aşağı yukarı aynıdır.

<html>

<?//Bukısımda veritabanından bilgileri çekiyorsunuz ya da farklı bir fonksiyonu çağırıyorsunuz ben örneğin ufak iki değişken tanımlıyorum.
$title    =    "Sayfa Başılığı";
$sayfa    =    "Sayfa İçeriği";
?>
<head>
    <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"/>
    <title><?phpecho $title;?></title>
</head>
<body>
    <?phpecho $sayfa;?>
    <?//Tabiki bu kadarla sınırlı değil yalnızca örnek olsun diye verdim normalde çok daha karmaşık bir yapıya sahip oluyor php sayfaları?>
</body>
</html>
Bu da MVC sistemi ile yazdığınız (Codeigniterdan örnek veriyorum) Tepmlate Parser kütüphanesini kullanarak yaptığınız bir sayfa
<html>

<head>
    <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"/>
    <title>{title}</title>
</head>
<body>
    {sayfa}
</body>
</html>

Evet işte bu kadar kolaylaştırıyor MVC sistemi kodlamayı ve ben sadece size bir kolaylığını gösterdim daha birçok kolaylığı var hazır kütüphanelerin kullanımı var. Aşağıda İbrahim Hızlıoğlu’nun ilk olarak ücretli ve daha sonradan ücretsiz olarak yayınladığı Codeigniter eğitim setinin linkini veriyorum oradan kullanımı da öğrenebilirsiniz anlatımı gayet güzel.

http://www.webteders.com/blog/detay/CodeIgniter-Egitim-Seti/44