Niçin çoklu dil iskeleti oluşturalım?
Belgelerin internet üzerinden yayınlanmasından itibaren SPIP bazı bilgileri «otomatik» olarak istenen dile çeviriyor. Özellikle tarihler sitenin, makalenin veya başlığın diline uyarlanıyor (örneğin forum iletileri göndermek için kullanılan arayüz)... Bütün bunlar SPIP tarafından çevriliyor.
Ama bu yeterli değil: site yöneticileri kendi iskeletlerine gezinti prensiplerini açıklayan bazı bilgiler ekliyorlar. Örneğin, «Site planı», «Bu makaleye cevap verin», «Aynı yazarın diğer makaleleri», «Aynı başlık altında» tipindeki iletileri yazmak gerekiyor... Sadece bir dildeki bir site için bu tür elemanları eklemek son derece kolay: iskeletlerin HTML kodları içine konabilirler. Site çok dilli olduğunda sorun çıkıyor: fransızca bir makalede «Répondre à cet article» metnini yazmak gerekirken, aynı makale için ingilizcede başka bir metin yazmak gerekiyor («Comment on this article»).
[SPIP 1.7.2] dillere göre değişen bu metin elemanlarını yönetmek için 3 yüntem öneriyor:
— (1) birinci yöntem bu metin elemanlarını iskeletlerden ayrı dil dosyaları içinde saklamayı öneriyor (sitede her dile ait farklı bir dosya),; tek bir iskelet (örneğin
article.html iskeleti, site yöneticisinin belirleyeceği dil koduna bağlı olarak bu elemanları çağırıyor; böylece aynı
article.html iskeleti otomatik olarak «Répondre à cet article» veya «Comment on this document» metinlerinden birini gönderilen koda bağlı olarak gösterebiliyor. Bu yöntem hararetle önerilir çünkü çok esnek bir yapı sunar, site güncellemelerini kolaylaştırır (tüm dilleri otomatik olarak yönetebilen tek bir iskelet ile çalışılır) ve zamanla SPIP’e sitenizin arayüzünün ortak çevirisini kolaylaştıracak bir çok alet eklenecektir (her biri başka dil konuşan birçok yönetici bir sitenin arayüzünün çevirisini iskelet dosyalarına müdahale etmeden özel alandan yapabilecektir);
— (2) daha hızlı erişilebilen ve basit bir tekniğe sahip ikinci yöntem her dil için ayrı bir iskelet oluşturmaktır. Bu yöntemde fransızca makaleleri yönetmek için bir
article.html dosyası oluşturulur, ingilizce için
article.en.html dosyası oluşturulur (Not: aslında
article.html ingilizce dışındaki tüm dilleri yönetir). Eğer sitede bir çok dil kullanılıyorsa ve/veya başlıklara göre farklı iskeletler kullanılıyorsa bu yöntem önerilmez. Aşağıda anlatılan 3. yöntem her bakımdan 2. yöntemin yerine kullanılabilir :
— (3) «çoklu dil blokları» yöntemi, [SPIP 1.7.2] ile eklenmiştir. Hem içeriklerde hem de iskeletlerde çalışır. İskelete şu yapıyı eklemek yeterlidir:
Böylece tümce istenen dilde gösterilir. Bu yöntem gayet esenektir ama dil sayısı fazlalaştıkça ve arıca bir çok çevirmenin siteye müdahale etmesi bekleniyorsa sınırları zorlar. (aslında çevirmenlerin iskeleti değiştirebilmeleri gerekir, oysa dil dosyaları yöntemi bu sorunu kolayca çözer).
1. Dil dosyaları yöntemi
Dil dosyaları yöntemi tek bir iskelete bir kod eklemeye dayanır. Bu kod her dilde bir metin elemanına karşı düşer (daha doğrusu bir «zincire»). Farklı dillerde kod değişmez ama metin çevrilmiş olur.
Örneğin,
telechargement kod sözcüğü şöyle tanımlayabiliriz:
— fransızcada, «télécharger ce fichier»,
— ingilizcede «download this file»,
— ispanyolcada «descargar este archivo»,
— türkçede «bu dosyayı indir»,
— vb.
Makaleler iskeleti dosyasında (tek bir dosya tüm dilleri yönetecektir),
article.html şu kodu eklemek yeterlidir (sentaksa dikkat edin) :
Bir makale gösterilirken bu kod makalenin dilindeki çeviri ile değiştirilecektir.
Örneğin,
article.html iskeletinde birbirine bağlı makaleleri gösteren döngüde şu kodu ekleriz:
Eğer makale fransızca ise şunu elde ederiz:
<a href="/IMG/jpg/mondocument.jpg">télécharger ce fichier</a>
eğer makale ingilizce ise:
<a href="/IMG/jpg/mondocument.jpg">download this file</a>
vb. Tek bir kod içeren tek bir iskelet sitede kullanılan her dilde çevirisi yapılmış metinleri gösterir.
- Önceden çevrilmiş metinleri kullanmak
SPIP site yöneticilerinin işini kolaylaştırmak için (SPIP çevirmenleri tarafından) önceden çevrilmiş bir zincir grubu sunar. Site yöneticisi, sitelerde sıkça kullanılan bu zincirlerle kendisinin bilmediği dillerde bile hızlıca bir çok dilde çalışan arayüzler oluşturabilir.
Bu zincirleri özel alanda görebilirsiniz : «Site yönetimi» bölümünden « Dillerin yönetimi »’ne gidiniz, «Dil dosyaları»’na tıklayınız. İskeletinizi oluşturmak için buraya istediğiniz kodları yerleştiriniz.
- Les fichiers de langue dans l’espace privé
Örnek : bir site yöneticisi sitesi için fransızca, arapça ve ispanyolca bir arayüz oluşturmak istiyor ama ispanyolca ve arapça bilmiyor. İskelet dosyalarına SPIP’le verilen gerekli kodları ekleyerek bu dilleri kullanabilir; çeviri işi SPIP çevirmenleri tarafından zaten yapılmıştır. Böylece, arayüzü fransızca olarak hazırladığında ve SPIP’le verilen kodları kullandığında sayfalarının anında ispanyolca ve arapça olarak gösterileceğini bilir.
Daha sonra polonyaca makaleler eklenirse bu makaleler de site yöneticisinin tekrar müdahale etmesine gerek kalmadan polonyaca olarak gösterilecektir.
Bu yöntemin bir diğer avantajı : «dağıtılacak» çoklu dil iskeletlerinin anında oluşturulmasını kolaylaştırmasıdır. Bu yöntemle oluşturulan iskeletler anında her dilde kullanılabilir.
Teknik olarak SPIP’le standart olarak verilen metinler «kamusal» dil dosyalarında bulunur :
—
/ecrire/lang/public_fr.php3 fransızca zincirleri içerir,
—
/ecrire/lang/public_en.php3 ingilizce zincirleri içerir,
— vb.
- Kendi kodlarını oluşturmak
Ayrıca kendi istediğiniz zincirlerin kodlarını oluşturmak da olasıdır.
Burada
public... modeli üzerinde kişisel dil dosyaları oluşturulabilir. Kendi kişisel dosyalarınızı oluşturmak için iskelet dizinine veya
/ecrire/lang dizinine şu dosyalar kurulmalıdır:
—
local_fr.php3 fransızca zincir tanımlamak için,
—
local_en.php3 ingilizce zincir tanımlamak için,
— vb...
Tarihçe: [SPIP 1.8]’den önceki sürümlerde kişisel dil dosyaları sadece
/ecrire/langdizinine yerleştirilebiliyordu.
Örneğin, şu zincirler oluşturulabilir:
—
telechargement şunu görüntüler «Télécharger la dernière version»,
—
quoideneuf şunu görüntüler «Modifications récentes».
Bu yöntemle iskeletlere şu kodlar eklenir
<:telechargement:> ve
<:quoideneuf:>, böylece dosyalarda (
local_...php3) bu kodlara karşı düşen çevirilerle birlikte görüntülenirler.
Burada dikkat edilmesi gereken nokta kodların tamamen serbestçe seçilebilmesidir. Bizim önerimiz (kodları numaralamak yerine) kolayca akılda tutabileceğiniz kodlar seçmenizdir. Çoğunlukla yaptığınız gibi sadece latin harflerini kullanmanız ve aksan kullanmamanız önerilir...
Dil dosyaları kullanacağınız kodların bir çok çevirisini içerir. Bunlar her biri dil zincirlerini kodlara bağlayan php tablolardır.
Örneğin şöyle bir şey olabilir :
- Fransızca sürüm :
- Katalanca sürüm :
Yapı şöyledir :
— dosyanın başında:
— dosyanın sonunda:
— zenginleştirmek gereken bölüm çok sayıdaki tanım satırıdır:
N.B. Son satır dışındaki her tanım satırı bir virgülle biter.
N.B.2. Çevrilecek zincirin metni HTML koduna dönüştürülmelidir (örneğin aksanlı karakterler
étipindeki HTML eşdeğerlerine dönüştürülür).
Zincir içindeki apostroflar escape ile düzenlenmelidir, yani önlerine bir terskesme konmalıdır. Örneğin, «internet’e» sözcüğü :
internet\'ebiçiminde yazılmalıdır.
Not : zamanla kişisel dil dosyaları oluşturmak ve php dosyalara «elle müdahale» etmeden yönetmek için araçlar eklenecektir. Böyle bir araç (aksanlı karakterler, batı dilleri dışındaki dillerdeki karakterler, apostroflar vb...) «özel» karakterler kullanmayı da kolaylaştıracak ve kamusal sitenin çeviri yordamını da basitleştirecektir.
Şimdilik, metin zincirlerini çevirmeye yarayan araç SPIP’le direkt olarak verilmemektedir ve genel kullanımı (tüm SPIP arayüzünü çevirmek için kullanıyoruz, sadece
local...php3tipindeki dil dosyaları iin değil) biraz karmaşık olmasına yol açıyor. Bu program trad-lang SPIP yazılımını, spip.net sitesini vs. çevirmemize yarıyor ve GNU/GPL lisansı ile dağıtılıyor ama standart SPIP’e entegre edilmiş değil. Bu yazılımı şu adresten indirebilirsiniz ve kendi siteniz veya diğer yazılım projelerinizde de kullanabilirsiniz. Eğer bu yazılımı geliştirirseniz lütfen SPIP çevirmenleri listesinde bunu belirtiniz spip-trad.
2. Her dil için ayrı iskelet
Yeni başlayan site yöneticileri için daha kolay olan ikinci yöntem her dil için farklı iskelet oluşturmaya dayanır. Her başlık için farklı grafik arayüz elde etmek farklı bir iskelet oluşturmaya benzer.
Fransızca (varsayılan dil), ingilizce ve ispanyolca bir site oluşturmak istiyoruz. 3 farklı iskelet dosyası oluşturuyoruz:
—
article.html fransızca için (aslında dil dosyası olmayan diğer bütün diller için),
—
article.en.html ingilizce için,
—
article.es.html ispanyolca için.
(Not: eğer almanca bir makale yayınlanırsa sitede bu dil için özel bir iskelet (
article.de.html) bulunmadığından
article.html iskeleti kullanılacaktır.)
Önemli: dosya soyadına eklenen
.dilkodunun dikkate alınması için sitede mutlaka bir «varsayılan» dil olması zorunludur.
Eğer
article.htmldosyası yoksa (burada
article.fr.htmldosyasının seçilmesi daha mantıklı olur) ingilizce ve ispanyolca dil dosyaları dikkate alınmaz.
Bu «makaleye göre» isimlendirme ile kombine edilebilir ve şu sıralama dikkate alınacaktır:
—
article=8.es.html (başlık 8’in ispanyolca makaleleri için iskelet ama alt başlıkların değil),
—
article=8.html (başlık 8’in makaleleri için iskelet ama alt başlıkların değil),
—
article-2.es.html (başlık 2’nin ispanyolca makaleleri ve alt başlıkları için iskelet ),
—
article-2.html (başlık 2’nin makaleleri ve alt başlıkları için iskelet),
—
article.es.html (ispanyolca makaleler için iskelet),
—
article.html (makaleler için iskelet),
—
article-dist.html (SPIP ile birlikte verilen makaleler için iskelet).
Not: bazı istisnalar dışında «
es» gibi iki karakterden oluşan ISO dil kodları kullanılmalıdır. Tam liste şu adreste görülebilir le site de la Bibliothèque du Congrès des Etats-Unis. Uyumluluğun artması için öncelikle iki harfli kodlar (« iso 639-1 » kullanılmalı eğer daha net bir tanım üç harfli ISO kodları (« iso 639-2 T») kullanılmalıdır. Örneğin, almanca «
de» olarak temsil edilir. ISO, dünyada konuşulan 5000-7000 dil arasından sadece 182 dili dikkate alır ; henüz listeye alınmamış diller için ethnologue.com web sitesindeki listeden ilham alınabilir; detaylı bilgi edinmek için listeye başvurulabilir spip-trad.
Hayatı basitleştirmek. Çok dilli bir siteyi SPIP’le yönetebilmek için basit yapı oluşturma yöntemlerinden biri (makalelere teker teker değil) başlıklara direkt olarak dil atamaktır. Böylece aynı dildeki makalelerin bir arada bulunduğu başlıklar (ve hatta sektörler) için dil dosyalarının isimlerine gereksinim duymadan özel iskelet oluşturulabilir başlıklara göre.
Bu yöntemle eğer ispanyolca tüm makaleler başlık 8’de (ve alt başlıklarında) toplanmışsa , ispanyolcaya uyarlanmış dosyaya
rubrique.es.html.
yerine
rubrique-8.html ismi verilebilir
Bu yöntemde karşılaşılabilecek sorunları önceden görebiliriz:
—
article-2.es.html seçilebilmesi için
article-2.html dosyası mevcut olmalıdır ;
— tersine,
article.es.html dosyasının
article-2.html yerine kullanılması eğer
article-2.es.html belirtilemez : başlıklara göre seçim her zaman dile göre seçimden önceliklidir ;
— iskeletin sayfa düzeninde yapılan bir düzeltme aynı düzeltmenin diğer sürümlerde de yapılmasını gerektirir,
— iskelet dosyalarına kendimiz bir takım metinler eklemek istediğimizde dili bilmiyorsak zorlukla karşılaşırız.
Demek ki bu yöntem fazla karmaşık olmayan (başlıklara bağlı az sayıda iskelet olduğunda veya hiç olmadığında) veya az sayıda dil olan siteler için uygundur. Çok dilli projeniz karöaşıklaşmaya başladığında dil dosyalarıyla çalışmanız hararetle önerilir.
3. Çok dilli bloklar
Réaliser un site multilingue makalesinde anlatılan çok dilli önceden tanımlanmış bloklar iskeletlerde de en az anahtar sözcüklerde veya yazar metinlerinde çalıştığı kadar iyi çalışır. Dikkat, bu bloklar sadece metin işlerler SPIP döngülerini işlemezler !
Çok dilli bir siteyi ilk anda hızlıca yönetmek için en etkin ve erişilebilir yöntem budur; sonraları, siteniz durgun (stabl) hale geldiğinde iskeletlerinizi geliştirmek istediğinizde (örneğin, bir çok dile açmak istediğinizde veya contrib biçiminde dağıtmak istediğinizde veya «profesyonelleştirmek» istediğinizde) çok dilli bloklarınızı dil dosyalarına dönüştürmelisiniz.