Bir çok programcı çoklu dil desteği sunan web sitesi uygulamaları ile uğraşır. En büyük sorun site kullanıcısına seçtiği dil desteği ile hizmet verebilmektir. Değişik çözümlerin olduğu bu problemi fikir vermesi açısından bir uygulama ile ele alalım.
Uygulamamız türkçe ve ingilizce olmak üzere iki farklı dil opsiyonuna sahip olsun. MVC mantığının bir avantajı da Controller dosyaları ile View dosyaları ayrılarak kod parçaları içine HTML ya da mesajların girmesini önlemektir. Böylece uygulamamızda değişik temalar kullanılması daha kolay olabileceği gibi, görünüm değiştirmek çok basit olacaktır.
Ancak formlardan gelen geçerlilik mesajları ("form validation") ya da Model dosylarından alınan hata mesajlarının ekrana iletilmesi durumunda genellikle Controler dosyları içinden View dosyalarına mesaj göndermemiz gerekebilir. Çoklu dil desteği sunan sitelerde tek Controller dosyası kullanılması durumunda bu mesajların hangi dilde yazılacağı konusu bir sıkıntıdır.
Bu sıkıntıyı aşmak için application/config dizini altına farklı dillerde (türkçe, ingilizce vs.) yazılmış kendi config dosyamızı ekliyoruz. Örneğimizde application/config/mesaj-tr.php türkçe desteği veren dosyamız, application/config/mesaj-en.php ingilizce desteği veren dosyamız olsun. mesaj-tr.php dosyamızın içeriği şöyledir:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['welcome_message'] = 'Sitemize hoş geldiniz. Burada türkçe destek veriyoruz.';
Burada "welcome_message" isimli indeks değeri bizim türkçe mesajımızı config isimli dizinde tutmamıza yardım eder. Aynı şekilde application/config/mesaj-en.php isimli dosyamızın içeriği de şöyledir:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['welcome_message'] = 'Welcome to our website. Our support is in english.';
Bu dosyaları kullanacağımız bir Controller dosyası oluşturalım. Application/controllers dizini altında bulunan multi.php isimli controller dosyamızda, kullanıcının seçtiği dil opsiyonuna göre ekrana hoşgeldin mesajımızı yazdıralım.
<?php
class Multi extends Controller
{
public $dil;//user tarafından seçilen dil
public $config_dizi;//config dizisi
function Multi()
{
parent::Controller();
$this->load->library('session');
$this->load->helper('url');
if($this->session->flashdata('dil')) $this->dil = $this->session->flashdata('dil');
else $this->dil = 'tr';
$this->config->load('mesaj-'.$this->dil, TRUE);
$this->config_dizi = $this->config->item('mesaj-'.$this->dil);
}
function index()
{
redirect('multi/sec/'.$this->dil);
}
function sec()
{
$array = array(
'dil' => $this->uri->segment(3)
);
$this->session->set_flashdata($array);
redirect('multi/sonuc');
}
function sonuc()
{
$data['mesaj']= $this->config_dizi['welcome_message'];
$this->load->view($this->dil.'/multi_view',$data);
}
}
Controller dosyamızda kullanıcının seçtiği dil opsiyonunu session kütüphanesinde tuttuğumuz için girişte session kütüphanesini yüklüyoruz. Url helper dosyasını da aynı şekilde yapısal sınıfta yüklüyoruz. Kullanıcının seçtiği dil değeri eğer session sınıfına kayıtlıysa ona uygun olan config dosyamızı (mesaj-en.php ya da mesaj-tr.php) yüklüyoruz böylece, kullanıcının isteğine uygun dil destek dosyasını ekrana yazdıracağız.
Kullanıcı sec() metodu yardımı ile istediği dil opsiyonunu seçebilir. Bunun ardından gelen sonuc() metoduyla da seçtiği dil opsiyonuna uygun olacak view dosyasını ekranında görecektir. View dosyalarını da destek verdiğimiz dil türüne göre hazırlanmış dizinler içinde tutmaya dikkat etmeliyiz. Örneğin türkçe destek veren view dosyası application/views/tr/multi_view.php olarak kayıtlıyken, ingilizce destek veen view dosyası application/views/en/multi_view.php olarak kayıtlı olmalıdır.
Controller dosyamızda kullanıcının seçtiği dil opsiyonuna göre config dosyasından aldığımız mesajı ilgili dil desteğini veren view dosyası ile ekrana bastırıyoruz. Bu uygulama çoklu dil desteğinin nasıl yapıldığına ilişkin bir fikir vermek acaıyla hazırlanmış örnek uygulamadır. Bu uygulamanın kodlarını buradan indirebilirsiniz. Çalışan örnek uygulamayı test edebilirsiniz.
Permalink | Yazarı : Fatih BAZMAN | Yorum Ekle | Etiketler : Uygulama çoklu dil
Türkiye