Codeigniter’da Multilanguage (Çoklu Dil) desteği nasıl yapılır?

Çoklu dil desteği kurumsal web sitelerinin ya da birçok CRM yazılımının vaz geçilmez özelliklerinden biridir. Bu yazıda Codeigniter çatısı altında sistem geliştiren arkadaşlarımız için multilanguage yani çoklu dil desteği özelliğini nasıl kullanacaklarını inceleyeceğiz.

Codeigniter kurulumunu tamamladığınızı düşünerek direk çoklu dil desteği özelliğini incelemeye başlayabiliriz. Projenin bitmiş halini en son sizinle paylaşacağım.

Proje Türkçe (tr) ve İngilizce (en) dil destekleri olmak üzere iki farklı dili destekleyecek. Siz kendi projelerinizde bu sayıyı istediğiniz kadar arttırabilirsiniz.

Öncelikle application dizini altında language klasörüne geliyoruz. Bu klasör altında dil dosyalarımızı tutacağız. İçerisinde tr ve en olmak üzere iki klasör oluşturuyoruz. (Klasörlere istediğimiz ismi verebiliriz fakat daha sonra kolaylık sağlaması açısında dil kısaltmalarıyla ilerlemeyi tercih ediyorum). Oluşturduğumuz klasörler altında birer tane php uzantılı dosya oluşturyoruz. Bu dosyalar çeviri metinlerimizin tutulacağı dosyalardır. Bu noktada dikkat edilmesi gereken en önemli özellik dosyaya verdiğimiz ismi _lang.php şeklinde bitirmektir. Aksi halde hata alacaksınızdır.

Örnek kullanım: tr/file_lang.php yada en/file_lang.php

Dosyalarımızı oluşturduktan sonra, dosya içlerine aşağıdaki örnekteki gibi değişkenler oluşturuyoruz.


/* tr/file_lang.php */

$lang[‘title’] = ‘Merhaba Dünya!’;
$lang[‘text’] = ‘Benim adım Burak Akdemir. Yazımı okuduğunuz için teşekkür ederim.’;
* en/file_lang.php */

$lang[‘title’] = ‘Hello World!’;
$lang[‘text’] = ‘My name is Burak Akdemir. Thanks for read my article.’;

Evet artık dil dosyalarımızı oluşturduğumuza göre onları kullanmaya başlayabiliriz.

İlgili controller dosyamıza geliyoruz. Ben burada codeigniter’la default olarak gelen Welcome.php controller dosyasını kullanacağım.

$urlLang = $this->uri->segment(1);

if ($urlLang != "tr" && $urlLang != "en") {
    $urlLang = "tr";
}

Burada url helperını kullanarak adres çubuğunun 1. parçasından tr yada en şeklinde gelen veriyi alıyoruz ve kullanacağımız dili belirliyoruz. (Eğer iksinede eşit değilse Türkçe dil desteğini kullanacağız.)

$this->lang->load('file', $urlLang);

İkinci aşamada ise belirlediğimiz dil dosyasını sayfamıza yüklüyoruz. Burada load fonksiyonu iki parametre alıyor.

Birinci parametreye dil dosyasının adını sonunda _lang.php olmadan yazıyoruz.

İkinci parametreye ise dil dosyasını barındıran klasörün adını yazıyoruz.

Bitmiş haliyle Welcome controller dosyası aşağıdaki gibi olacaktır.

/* Welcome.php */

class Welcome extends CI_Controller {
    public function index() {
        $urlLang = $this->uri->segment(1);
        if ($urlLang != "tr" && $urlLang != "en") {
            $urlLang = "tr";
        }
        $this->lang->load('file', $urlLang);
        $this->load->view('home');
    }
}

Son aşamada ise oluşturup sayfaya yüklediğimiz dil dosyasını view dosyalarında kullanıyoruz. Ben örnek projede view/home.php dosyasını oluşturdum ve içerisine aşağıdaki gibi oluşturduğumuz title değişkenini yazdırdım.

echo $this->lang->line(‘title’);

Artık adres çubuğunda dili aşağıdaki gibi değitirerek kullanabiliriz.

Örnek link: https://localhost:8888/tester/multilanguage/en
Örnek link: https://localhost:8888/tester/multilanguage/tr

0 Shares:
Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir