Çoklu Dil Kütüphanesi


    × Bunları biliyor muydunuz?
"Databases/ dizini bir veritabanı tablolarının şemasını oluşturup Generate::databases() komutu ile bu şemanın gerçek bir veritabanı ve tablo olarak işlenmesini sağlayabilirsiniz."


Ç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 SE ve ZN CE dağıtımları için terminal kurulum komutu.

↓ composer require znframework/package-language

 

 

# Yöntemler


3.0.0 Bool insert(String $lang, $key, String $data = NULL)
3.0.0 String select(String $key, $convert = NULL)
3.0.0 Array selectAll(String $lang = NULL)
5.8.3.3 Object keys(Void)
5.8.3.3 Array langs(Void)
3.0.0 Bool update(String $lang, $key, String $data = NULL)
3.0.0 Bool delete(String $lang, $key)
3.0.0 Bool deleteAll($lang)
3.0.0 Bool lang(String $lang = 'tr')
4.0.0 String table($lang = NULL)
 

 

# Insert (ZN >= 3.0.0)


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/Storage/MultiLanguage/en.ml

 

 

# Select (ZN >= 3.0.0)


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 yinede 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 (ZN >= 3.0.0)


Oluşturulan dile göre eklemiş içerikleri getirir. Parametre kullanılması durumunda belli bir dilin içerikleride 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 (ZN >= 5.8.3.3)


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

Parametreler

Void
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önderek 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 (ZN >= 5.8.3.3)


Oluşturulmuş dillerin listesini verir.

Parametreler

Void
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 (ZN >= 3.0.0)


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öntemide 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 ingilizce 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 (ZN >= 3.0.0)


Belirtilen dile ait hangi kelimeler silinecekse o kelime temsil eden anahtarlardan yararlanılır. Tek bir veri silinecekse metinsel parametre birden fazla veri silinecekse dizi parametresi belirtilir.

Parametreler

String $lang Hangi dile ait kelime silinecekse o dil belirtilir. Genellikle en, tr gibi dil kısaltmaları kullanılır.2 - string/array Kelime AnahtarıKelime eklenirken kullanılan anahtar.
Mixed $key Kelime eklenirken kullanılan anahtar.
Return Bool

Kullanımı

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

 

 

# DeleteAll (ZN >= 3.0.0)


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 (ZN >= 3.0.0)


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 (ZN >= 4.0.0)


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