Herkese merhaba;Bugün, kendimin yaptığı ve uzun süredir birçok projede kullandığım bir php dil sınıfını sizlerle paylaşacağım.Kısaca sistemini açıklayayım :Sistem 2 parçadan oluşuyor :1- Diller sınıfı
2- Dillerin bulunduğu dosyalar
Diller sınıfı ile gerekli dil dosyaları bulunuyor, Dillerin bulunduğu dosyalarda ise dillerin içeriği tutuluyor.Dil içeriklerini cookieden okutuyorum. Mesela ingilizce dili için en.dil.php adında bir dosyanız oluyor. dil adlı cookie’nin içeriği de bununla orantılı olarak “en” oluyor.

Not :Şu anda birçok kişinin geliştireceği bir proje yaptığımdan ve dil dosyasını ordan aldığımdan( en güncel hali ) açıklamalar vs. ingilizcedir.

İsterseniz classımızı ve dil dosyamızı paylaşalım, daha sonraki resme bakarak dosya yapısını anlayabilirsiniz : “.$arr[‘file’].”
Line : “.$arr[‘line’].”
Function : “.$arr[‘function’]; }define(“DEBUG”,””); // Debug modunu açmak isterseniz bu satırı ekleyindefine(“BASE_LANG”, “tr”); // Baz alınan dil, tr.lang.php yi çağarır.define(“LANG_PATH”, “diller”); // diller adlı klasörde *.lang.php dosyalarına bakar. lang olsaydı lang klasöründe bakacaktı.define(“LANG_COOK”, “lang”); // Dilin okunacağı cookie’nin adı/******************************************************************* Started : 09.09.2009 06:26* Language Management Tool* Author : Centrual* Last Update : 09.09.2009 07:00******************************************************************/class Langs {private $prefix = “.lang.php”; // Include Path EndWith Prefixprivate $content = array(); // Language Contentprivate $debug = NULL; // debug_backtracepublic function Langs() {if( defined(“DEBUG”) )$this->debug = debug_backtrace();$str_lang = $this->get_lang();/******************************************************************* If file exists then include the file and get the content array* content array name is always $language_vars******************************************************************/if( file_exists(realpath(LANG_PATH).”\”.$str_lang.$this->prefix) ) {include(LANG_PATH.”/”.$str_lang.$this->prefix);}else if( file_exists(realpath(LANG_PATH).”\”.BASE_LANG.$this->prefix) ) {include(LANG_PATH.”/”.BASE_LANG.$this->prefix);}else {// Language files not foundif( defined(“DEBUG”) ) {$debug_str = “”;for( $d=0; $d < count($this->debug)-1; $d++ ) {if( $d != 0 ) { $debug_str += “

“; }$debug_str += debug_str($this->debug[$d]);}die( $debug_str );}elsedie( “lang include error : key => ‘”.$str_lang.”‘” );}$this->content = $language_vars;}/******************************************************************* Started : 09.09.2009 05:52* @Return_Type = String* @Params = String $str* Description : Returns language key to value* Last Update : 09.09.2009 06:58******************************************************************/public function get( $str ) {if( array_key_exists($str,$this->content) )return $this->content[$str];if( defined(“DEBUG”) ) {$debug_str = “”;for( $d=0; $d < count($this->debug)-1; $d++ ) {if( $d != 0 ) { $debug_str += “

“; }$debug_str += debug_str($this->debug[$d]);}return $debug_str;}elsereturn “lang error : key => ‘”.$str.”‘”;}/******************************************************************* Started : 09.09.2009 05:52* @Return_Type = -* @Params = String $str* Description : Writes language key to value* Last Update : 09.09.2009 06:59******************************************************************/public function write( $str ) {if( array_key_exists($str,$this->content) )echo $this->content[$str];else {if( defined(“DEBUG”) ) {$debug_str = “”;for( $d=0; $d < count($this->debug)-1; $d++ ) {if( $d != 0 ) { $debug_str += “

“; }$debug_str += debug_str($this->debug[$d]);}echo $debug_str;}elseecho( “lang error : key => ‘”.$str.”‘” );}}/******************************************************************* Started : 09.09.2009 05:52* @Return_Type = String* @Params = -* Description : Gets the language key* Last Update : 09.09.2009 07:00******************************************************************/public function get_lang() {if( isset( $_COOKIE[LANG_COOK] ) )return $_COOKIE[LANG_COOK];return BASE_LANG;}}?> Bu sınıf sayesinde dil dosya içeriklerini çekebileceğiz. Şimdi gelelim dil dosyalarımızın içeriğine :Örnek Dosyalar :
tr.lang.php : “Anasayfa”,”search” => “Ara””day_names” => array(“pazar”,”pazartesi”,”sali”,”çarsamba”,”persembe”,”cuma”,”cumartesi”),”month_names” => array(“ocak”,”subat”,”mart”,”nisan”,”mayis”,”haziran”,”temmuz”,”agustos”,”eylül”,”ekim”,”kasim”,”aralik”),”date_prefix” => “d.m.Y H:i:s”);?> en.lang.php : “Home Page”,”search” => “Search””day_names” => array(“sunday”,”monday”,” tuesday”,”wednesday”,”thursday”,”friday”,”saturday”),”month_names” => array(“january”,”february”,”march”,”april”,”may”,”june”,”july”,”august”,”september”,”october”,”november”,”december”),”date_prefix” => “m/d/Y H:i:s”);?> Klasör Yapımız :
-Ana Dizin
—Diller.class.php
—diller
—–tr.lang.php
—–en.lang.php
Kullanım Örneği : write(“home_page”); // Çıktı : Anasayfaecho(date($dil->get(“date_prefix”))); // Çıktı : 12.09.2009 14:54:45 -> Tarih ve saat sürekli değişeceğinden sizde farklı bir çıktı verecektir.$dil->get_lang(); // Çıktı : trunset($dil);$_COOKIE[‘lang’] = “en”;$dil = new Langs();$dil->write(“home_page”); // Çıktı : Home Pageecho(date($dil->get(“date_prefix”))); // Çıktı : 09/12/2009 14:54:45 -> Tarih ve saat sürekli değişeceğinden sizde farklı bir çıktı verecektir.$dil->get_lang(); // Çıktı : en?> Sürçü lisan ettiysem affola. Anlamadığınız bir yer olursa, yorumlardan cevaplayabilirim. Herkese yararlı olması dileğiyle.Ekstra + :Php Class Yapısı