Çoklu Dil Kütüphanesi
"Aktif kontrolcü tarafından otomatik olarak yüklenen görünümleri masterpage olarak belirlenen sayfa içerisinde $view değişkeni ile konumlandırabilirsiniz."
Ç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']);
# 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');
# 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
Bu yöntemin sonucunu başlangıç kontrolcüsünden tüm görünümlere göndererek basit bir kullanım elde edebilirsiniz.
public function main()
{
View::lang( ML::keys() );
}
<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() );
1 => 'tr'
Bu yöntemi dil değişimi için kullanılan dropdown nesnelerinin içerisine dilleri listelemek için kullanabilirsiniz.
<ul>
@foreach( ML::langs() as $key )
<li>{{ Html::anchor('Home/setLanguage/' . $key, $key) }}</li>
@endforeach
</ul>
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.
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