Çoklu Dil Kütüphanesi


    × Bunları biliyor muydunuz?
"Başlangıç dosya ve kontrolcüleri üzerinden tüm kontrolcü ve görünümlere veri gönderilebilir."


Çoklu dil kullanımı bir çok proje için gerekli olmaktadır. ZN Framework'te zaten bir lang() yönteminin kullanımı var olmakla birlikte daha opsiyonel ve pratik bir kullanıma sahip Multi Language kütüphanesi oluşturulmuştur. Aşağıda bu kütüphane ile dilleri nasıl yönetebileceğiniz anlatılmıştır.

 

 

# Kurulum


ZN dağıtımları için kurulum gerekmez.

↓ composer require znframework/package-language

 

 

# Yöntemler


ML::insert(string $lang, $key, string $data = NULL) : bool
ML::select(string $key, $convert = NULL) : string
ML::selectAll(string $lang = NULL) : array
ML::keys() : object
ML::langs() : array
ML::update(string $lang, $key, string $data = NULL) : bool
ML::delete(string $lang, $key) : bool
ML::deleteAll($lang) : bool
ML::lang(string $lang = 'tr') : bool
ML::table($lang = NULL) : string
 

 

# Insert 


Belirtilen dile ait anahtar ve değer çiftinden oluşan bir veya birden fazla kelime eklemek için kullanılır.

Parametreler

string $lang Dil kodu. Hangi dile ait kelime eklenecekse o dil belirtilir. Genellikle en, tr gibi dil kısaltmaları kullanılır.
mixed $key Tüm dillerdeki kelimeleri temsil etmesi açısından kullanılacak ortak anahtardır. Genellikle anahtar olarak ingilizce kelimelerin kullanılması tavsiye edilir.
string $data = NULL Dosyaya eklenecek kelimenin kendisi.
return bool

Kullanımı

ML::insert('en', 'example', 'Example');
ML::insert('en', ['example' => 'Example', 'application' => 'Application']); 
Oluşturulan Dosya: Projects/ProjectDirectory/Languages/ml/en.ml

 

 

# Select 


Oluşturulan anahtar değer çiftlerinin anahtarları kullanılarak değerlerine ulaşılır. Ancak bilmeniz gereken nokta bir kelime çağrılmaya çalışılmadan önce hangi dilden kelimenin getirileceğini belirtmeniz gerekir. Bunun için ML::lang() yöntemi kullanılır. Bu yöntemin kullanımına sayfa sonunda değinilmiştir. Biz yine de bağlantılı olması açısından bu örnek üzerinde de anlatımına yer vermeye çalıştık.

Parametreler

string $key Kelimeyi temsil eden anahtar.
return string

Kullanımı

echo ML::select('example');
Example

 

 

# SelectAll


Oluşturulan dile göre eklemiş içerikleri getirir. Parametre kullanılması durumunda belli bir dilin içerikleri de alınabilir.

Parametreler

string $lang = NULL Hangi dilin içeriklerinin alınacağıdır. Boş geçilmesi durumunda tüm dillerin içerikleri getirilir.
return array

Kullanımı

output( ML::selectAll() );

Aktif dile göre içerik getirmek için;

output( ML::selectAll( Lang::get() ) );

 

 

# Keys


Aktif dilin içeriklerini obje türünden döndürür.

Parametreler

return object

Kullanımı

$lang = ML::keys();

echo $lang->pencil
Kalem

Bu yöntemin sonucunu başlangıç kontrolcüsünden tüm görünümlere göndererek basit bir kullanım elde edebilirsiniz.

Dosya: Controllers/Initizalize.php
public function main()
{
    View::lang( ML::keys() );
}
Dosya: Views/Sections/sidebar.wizard.php
<ul>
    <li>{{ Html::anchor('Home', $lang->home) }}</li>
    <li>{{ Html::anchor('Contact', $lang->contact) }}</li>
    <li>{{ Html::anchor('About', $lang->about) }}</li>
</ul>

 

 

# Langs


Oluşturulmuş dillerin listesini verir.

Parametreler

return array

Kullanımı

output( ML::langs() );
0 => 'en'
1 => 'tr'

Bu yöntemi dil değişimi için kullanılan dropdown nesnelerinin içerisine dilleri listelemek için kullanabilirsiniz.

Dosya: Views/Sections/sidebar.wizard.php
<ul>
    @foreach( ML::langs() as $key ) 
        <li>{{ Html::anchor('Home/setLanguage/' . $key, $key) }}</li>
    @endforeach
</ul>
Dosya: Controllers/Home.php
public function setLanguage(string $lang)
{
    Lang::set( $lang );

    redirect( URL::prev() );
}

 

 

# Update 


Belirtilen dile ait anahtar ve değer çiftinden oluşan bir veya birden fazla kelime güncellemek için kullanılır. ML::insert() ekleme işlevi ile aynı kullanıma sahiptir. Yani güncelleme işlemi için insert() yöntemi de tercih edilebilir.

Parametreler

string $lang Dil kodu. Hangi dile ait kelime güncellenecekse o dil belirtilir. Genellikle en, tr gibi dil kısaltmaları kullanılır.
mixed $key Tüm dillerdeki kelimeleri temsil etmesi açısından kullanılacak ortak anahtardır. Genellikle anahtar olarak İngilizce kelimelerin kullanılması tavsiye edilir.
string $data = NULL Dosyada güncellenecek kelimenin kendisi.
return bool

Kullanımı

ML::update('en', 'example', 'Example');
ML::update('en', ['example' => 'Example', 'application' => 'Application']);

 

 

# Delete 


Belirtilen dile ait hangi kelimeler silinecekse o kelime temsil eden anahtarlardan yararlanılır. Parametre, tek bir veri silinecekse dizge birden fazla veri silinecekse dizi belirtilir.

Parametreler

string $lang Hangi dile ait kelime silinecekse o dil belirtilir. Genellikle en, tr gibi dil kısaltmaları kullanılır.
mixed $key Kelime eklenirken kullanılan anahtar.
return bool

Kullanımı

ML::delete('en', 'example');
ML::delete('en', ['example', 'application']);

 

 

# DeleteAll 


Oluşturulan sözlüklerin tümünü veya parametre olarak belirtilenleri silmek için kullanılır.

Parametreler

string $lang Hangi dile ait kelime silinecekse o dil belirtilir.
return bool

Kullanımı

ML::deleteAll('tr');
ML::deleteAll(['tr', 'en']);
ML::deleteAll(); # All Files

 

 

# Lang


Bu yöntemin kullanımı setLang() gibidir. Sayfanın hangi dili kullanmasını istiyorsanız o dosyaya ait isim kullanılır.

Parametreler

string $lang Hangi dile ait kelime silinecekse o dil belirtilir.
return bool

Kullanımı

ML::lang('tr');

 

 

# Table 


Bir tablo üzerinden dil dosyalarınız yönetmek için kullanılan bir veri tablosudur. Bu tablo sayesinde çok daha kolay kelime ekleme, düzenleme ve silme işlemleri yapabilirsiniz.

Yapılandırma

Tablonun görsel tasarımı ile ilgili ayarları aşağıda gösterilen dosya yolunda bulabilirsiniz.

Dosya: Config/Viewobjects.php -> mlgrid

Parametreler

mixed $lang Tabloda gösterilecek diller. Belirtilmez ise tüm diller gözükür.
return string

Kullanımı

echo ML::table();
echo ML::table(['en', 'tr']);
echo ML::limit(100)->table(); # Page Total Rows
echo ML::url('home/table')->limit(20)->table(); # Pagination -> URL