Uzantılar yerelleştirme

#1. Genel Kurallar

Uzantılar için yerelleştirme dosyaları (kısaca 'Dil dosyaları'), Uzantı klasörünün içinde bulunan 'lang' alt klasöründe yer alır, bu nedenle dil dosyasının kök yolu şu şekilde olmalıdır:

  • Pluginler için: plugins/plug_name/lang/plugin_name.*.lang.php
  • Modüller için: modules/module_name/lang/module_name.*.lang.php … burada * işareti, 2 karakterli dil kodu ile değiştirilmelidir.

Dil dosyaları için genel kurallar bu makalede açıklanmıştır.

#2. Ana Dil Dizgeleri

Ana dil dizgeleri, Uzantınızın sayfa yerelleştirmesi için kullanmak istediğiniz dizgelerdir. Sistem, dil dizgeleri için birleşik bir kayıt kullanır ve dizge adlarını tanımlarken dikkat edilmesi önemlidir. Aksi takdirde, bazı sistem dizgelerini yanlışlıkla değiştirebilirsiniz. Bu yüzden, dil dizgelerinin isimlendirilmesi için Uzantınızın adını içeren bir ön ek kullanmanız önerilir. Örneğin, 'comments' eklentisi için bu 'com_' olabilir:

$L['com_closed'] = 'Bu öğe için yorum ekleme devre dışı bırakıldı';

Aslında bu, anahtar-dizge çiftlerinden oluşan sıradan bir PHP Dizisidir. Ama bunu zaten biliyorsunuz, değil mi?

#3. Çoğul Form Dizgeleri

cot_declension fonksiyonunu biliyor olabilirsiniz; bu fonksiyon, içinde bazı sayılar bulunan dizgelerin doğru çoğul formlarını oluşturmayı kolaylaştırır. Örneğin: "1 sayfa" / "2 sayfa". Fonksiyonun parametrelerinden biri, kelimenin çoğul formlarını içeren bir dizi veya dil dizgeleri referansı olabilir. Çoğul form tanımının doğrudan kullanımı:

$text = 'Sen ' . cot_declension(12, 'sayfa, sayfalar') . ' yazdın';
// $text değişkenine "Sen 12 sayfa yazdın" atanır

Veya bir dil dosyası tanımı kullanabilirsiniz:

$Ls['pages'] = 'sayfa, sayfalar'; // Genel olarak bu dil dosyasında tanımlanır
$text = 'Sen ' . cot_declension(12, 'pages') . ' yazdın';
// $text değişkenine "Sen 12 sayfa yazdın" atanır

Dikkat ederseniz $Ls değişkenini kullandık, ancak $L kullanmadık — bunun sebebi, ana Dizi içinde karışıklığı önlemek ve bazı sistem dizgelerinin üzerine yazılmasını engellemektir.

[cot_declension fonksiyonu için daha fazla ek parametre bulunmaktadır. Bunun için API'ye göz atın.]

#4. Sistem Verisi Yerelleştirmesi

Sistem dizgeleri, Cotonti sisteminin bazı sistem sayfalarında (Yönetim panelinde) kullandığı dizgelerdir. İşte örnekleri:

$L['info_name'] = ''; // Uzantının adı
$L['info_desc'] = ''; // Uzantının açıklaması
$L['info_notes'] = ''; // Ek notlar

Bu değişkenler hem Pluginler hem de Modüller için kullanılabilir. Ek notlar (info_notes) Uzantı yönetim sayfasında görüntülenebilir (Yönetim paneli → Uzantılar → 'seçilen uzantı').

Sadece bazı Pluginler için kullanılan bir değişken daha bulunmaktadır:

$L[$plugname . '_title']
// burada plugname, ilgili Plugin adı ile değiştirilmelidir

Bu dizge yalnızca Plugin'in standalone (bağımsız) kısmı için ve yalnızca sistem tarafından tanımlanan (varsayılan) eklenti şablonu için kullanılacaktır.

Eğer Uzantınız kendi sayfası içinde bazı yönetim işlevlerine sahipse (örneğin tools kancası aracılığıyla çağrılıyorsa), aşağıdaki iki değişkeni kullanabilirsiniz: $adminhelp ve $adminsubtitle. İlk değişken, Uzantı yönetim sayfasının alt kısmında gösterilen yardım mesajını tanımlar (Yönetim paneli → Uzantılar → 'seçilen uzantı' → Yönetim). İkinci değişken ise HTML sayfa başlığı için kullanılır (Örneğin: "Kişisel Dosya Alanım - Yönetim"). Bu değişkenler varsayılan olarak tanımlanmaz, bu yüzden kendiniz başlatmalısınız:

$adminhelp = $L['userimages_help'];
$adminsubtitle = $L['userimages_title'];

#5. Yapılandırma Değişkenlerinin Yerelleştirilmesi

Ayrıca, Yönetim panelinde yapılandırma sayfasında kullanılan Uzantı yapılandırma değişkenlerini dil dosyası aracılığıyla yerelleştirebilirsiniz (Yönetim paneli → Uzantılar → 'seçilen uzantı' → Yapılandırma).

Bir değişkeni yerelleştirmek için, onun [BEGIN_COT_EXT_CONFIG] bloğu içinde tanımlanan adını bilmeniz gerekir (bu tanım pluginname.setup.php dosyasında bulunur). Daha fazla ayrıntı için "Yapılandırma Değişkenlerini Ayarlama" bölümüne bakabilirsiniz.

Örnek yapılandırma değişkeni tanımı:

sort=01:select:ID,Title,Date:ID:Varsayılan sıralama sütunu

…ve onun yerelleştirilmiş hali:

$L['cfg_sort'] = 'Etiket arama sonuçları için varsayılan sıralama sütunu';
$L['cfg_sort_params'] = 'Başlık: Title, Tarih: Date';
$L['cfg_sort_hint'] = 'Varsayılan olarak artan sıralama kullanılır';

Yapılandırma ayarlarının başlık ve açıklaması herhangi bir yapılandırma değişkeni için tanımlanabilir. Liste dizgeleri yerelleştirmesi yalnızca select türündeki yapılandırma değişkenleri için geçerlidir. Yapılandırma yerelleştirme dizgeleri $L dizisi içinde aşağıdaki adlandırma kurallarına göre yer almalıdır:

$L['cfg_'.$varname] // Açıklama
$L['cfg_'.$varname.'_params'] // Değerler listesi yerelleştirme 
$L['cfg_'.$varname.'_hint']  // Giriş alanı için ipucu

… burada $varname, ilgili değişken adıyla değiştirilmelidir.

#6. Ekstra Alan Açıklamalarını Yerelleştirme

Bir site geliştiricisi/yöneticisi olarak, bazı veri tablolarına «Ekstra Alanlar» ekleyebilirsiniz (Yönetim paneli → Diğer → Ekstra Alanlar). Ekstra alan yapılandırmasını eklerken, varsayılan bir açıklama ekleyebilirsiniz. Bu açıklama şu etiket üzerinden erişilebilir: {XXX_EXTRAFIELDNAME_TITLE}, burada XXX ekstra alanın ait olduğu tablonun adı, EXTRAFIELDNAME ise ekstra alanın adıdır. Cotonti ekstra alan açıklamalarını yerelleştirmek için standart bir yöntem sağlamasa da, çoğu durumda şu değişken kullanılmalıdır:

$L['page_{extrafieldname}_title'] = 'Ekstra alan açıklaması';

burada {extrafieldname}, ekstra alanın adıdır.

#7. Diziler / Liste Yerelleştirme

Bazı dil dosyalarında (özellikle eski uzantılarda), liste yerelleştirmesi veya çoğul form listesi için kullanılan diziler bulabilirsiniz:

$L['cfg_array1_params'] = array('Foo', 'Bar');
$L['cfg_array2_params'] = array('foo' => 'Foo', 'bar' => 'Bar');
$Ls['Guests'] = array('guest', 'guests');

Bu format güncelliğini yitirmiştir ve kullanılması önerilmez. Şu anda "Transifex" gibi işbirlikçi çeviri hizmetlerini aktif olarak kullanıyoruz (bu konu hakkında daha fazla bilgi), bu nedenle sadece dizi türündeki veriler yerine dize türü kullanılabilir. Güncellenmiş format şu şekildedir:

$L['cfg_array1_params'] = 'Foo, Bar';
$L['cfg_array2_params'] = 'foo:Foo, bar:Bar';
$Ls['Guests'] = 'guest, guests';

Böylece tüm listeler virgülle ayrılmış dizgelere, diziler ise Key:Value çiftleriyle ayrılmış virgüllü dizgelere dönüştürülür.

#8. Örnek Dil Dosyası

Burada comments eklentisine ait sadeleştirilmiş bir dil dosyası örneğini görebilirsiniz. Farklı türde dil dizgeleri arasındaki ayrımlara dikkat edin:

<?php
/**
 * Comments Plugin için İngilizce Dil Dosyası
 *
 * @package Comments
 * @copyright (c) Cotonti Ekibi
 * @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
 */

defined('COT_CODE') or die('Hatalı URL.');

/**
 * Eklenti Yapılandırması
 */

$L['cfg_order'] = 'Sıralama düzeni';
$L['cfg_order_hint'] = 'Kronolojik veya en yeni öne çıkar';
$L['cfg_order_params'] = 'Kronolojik,En yeni';

$L['info_desc'] = 'Cotonti için yorum sistemi; API, sayfalar, listeler, anketler, RSS ve diğer uzantılarla entegrasyon içerir.';

/**
 * Eklenti Gövdesi
 */

$L['comments_comment'] = 'Yorum';
$L['comments_comments'] = 'Yorumlar';

/**
 * cot_declension dizileri
 */

$Ls['Comments'] = "yorum,yorumlar";

/**
 * Comedit
 */

$L['plu_title'] = 'Yorum Düzenleme';

#9. Yerelleştirme Verilerinin Kullanımı

#9.1. Kaynak Dizgelerinde Kullanım

Kaynak dizgeleri, özel etiketlerin gerçek verilerle değiştirildiği mikro-şablon dizgeleridir.

Örnek bir kaynak dizge tanımı (genellikle ext_name.resources.php dosyasında kullanılır):

$R['comments_code_pages_info'] = $L['Total'].': {$totalitems}, '.$L['comm_on_page'].': {$onpage}';

Kaynak dizgenin kullanımı:

// `cot_rc` fonksiyonu, gerçek dizi verileriyle dizge döndürür
$stat_data = array(
    'totalitems'=> $totalitems, 
    'onpage' => $page_title
);
$stat_msg = cot_rc('comments_code_pages_info', $stat_data);

#9.2. Program Kodunda Kullanım

Yukarıda belirtildiği gibi $L, $Ls (veya diğer) dizilerinden veri kullanabilirsiniz:

$email_title = $L['plu_comlive'];
cot_error($L['com_commenttooshort'], 'comtext');

Aynı şekilde bir dil dizgesini şablon etiketine atayabiliriz:

$t->assign(array(
        'COMMENTS_POSTER_TITLE' => $L['Poster']
));

Ayrıca, dil verileri bazı fonksiyonlar ile dolaylı olarak kullanılabilir:

// `cot_rc` fonksiyonu $L['com_msg'] içindeki veriyi kullanır
$message = cot_rc('com_msg', array('number'=> $com_count));

// `cot_declension` fonksiyonu $Ls['Comments'] içindeki veriyi kullanır
$text = $L['com_posted_comments'].' '.cot_declension($com_count, 'Comments');

#9.3. Şablonlarda Kullanım

Şablonlarda, dil dizgeleri standart PHP değişkenleri gibi erişilebilir:

{PHP.L.lang_string_id}

burada lang_string_id, $L dil dizisindeki anahtardır.

Şablon içinde doğrudan çoğul formları kullanabilirsiniz:


Sen {PHP.num_of_comments|cot_declension($this, 'Comments')} yazdın.

Bu örnekte $num_of_comments, kullanıcı yorumlarının sayısını temsil eder ve çoğul formlar şu şekilde tanımlanmıştır:

$Ls['Comments'] = "yorum,yorumlar";

Bu durumda, $num_of_comments == 5 olduğunda şu şekilde görüntülenir: «Sen 5 yorum yazdın».



Henüz yorum yapılmamış
Yalnızca kayıtlı kullanıcılar yorum yapabilir