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

Codeigniter’da Çoklu Dil Desteği” için bir yanıt

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s