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:
plugins/plug_name/lang/plugin_name.*.lang.php
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.
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?
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.]
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'];
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.
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.
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.
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';
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);
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');
Ş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».