Help:System message/tr

Sistem mesajı, davranışını kişiselleştirmek için kullanılabilecek düz metin (nowiki), vikimetin, CSS veya JavaScript parçacığıdır. MediaWiki ve her dilin görünümü ve yereldir. MediaWiki, hem çekirdek hem de uzantılar için, MediaWiki kullanıcı arayüzünün uluslararası hâle getirilmesine ve yerelleştirilmesine olanak tanıyan, arayüzün kullanıcıya bakan herhangi bir kısmı için mesajlar kullanır. MediaWiki'de kullanılan tüm mesajlar bir mesaj dosyası içinde tanımlanmıştır.

Vikide mesajları geçersiz kılma
Mesajlar, viki üzerinde düzenlenerek varsayılan değerlerinden geçersiz kılınabilir. Her mesajın MediaWiki ad alanında, mesaj anahtarının sayfanın adı olduğu bir viki sayfası vardır. Örneğin, "aboutsite" mesajı MediaWiki:aboutsite altında saklanır. Varsayılan olarak, kullanıcının "editinterface" iznine sahip olmadığı sürece, bu ad alanının düzenlenmesi kısıtlanmıştır. Tüm mesaj sayfalarının bir listesi Special:AllMessages sayfasında bulunabilir. Arayüz mesajlarını düzenlemek, normal bir viki sayfasını düzenlemek gibi, genellikle basittir, ancak varsayılan olarak hizmetlilere (ve arayüz hizmetlilere) atanan editinterface iznine sahip kullanıcılarla sınırlıdır. Special:AllMessages tablosu iki sütun içeriyor: bağlantılı arayüz adı ve metin. Metin yukarıdaki varsayılan metni ve aşağıdaki özelleştirilmiş metni göstermek için yatay olarak bölünmüştür. Özel bir mesaj olmadığında, yalnızca varsayılan gösterilecektir. Bir mesajı özelleştirmek için sol sütundaki üst bağlantıya (mesajın adı) tıklayın. Düzenleme sayfası boş olduğundan, varsayılan metin kullanımdaysa bu bağlantı kırmızıdır.

Sol sütun hücrelerindeki alt bağlantılar, o mesaj için tartışma sayfalarına yönlendirir.

Mesajları ve belgeleri bulma
Her mesajın MediaWiki tarafından nasıl kullanıldığı, mevcut değişkenler, kullanılan parametreler, sınırlamalar vb., mesaj belgelemesi yönergeleri uyarınca [//translatewiki.net/w/i.php?title=Special:Translate&task=reviewall&group=core&language=qqq&limit=5000&action=page&filter= qqq sözde dilindeki tam belgeler] dosyalarında açıklanır. Bazı arayüz mesajları için daha eski değerinde daha uzun açıklama sayfaları bulunabilir.

MediaWiki 1.18 ve sonraki sürümlerde, URL'ye  veya URL zaten bir   karakteri ([ örnek]) içeriyorsa,   ekleyerek yapılabilen özel sözde dil kodu   içindeki bir vikiye göz atarak bir mesaj anahtarı bulabilirsiniz. Tüm mesajlar daha sonra mesaj anahtarları ile değiştirilecektir, böylece hangi mesajın sorumlu olduğunu belirleyebilirsiniz. Her zaman içerik dilinde olan mesajlar qqx kullanılarak gösterilmeyecektir.

Arayüzün bazı bölümleri, qqx hilesini kullandığınızda gösterilen dizeye  ekler. Örneğin, ana ad alanındaki tartışma sayfasına bağlanan sekmenin etiketi  olarak gösterilir, ancak dize aslında MediaWiki:Talk konumunda bulunur.

Sayfanın örn. "Tercihler" özel sayfa sekmeyi  parametresinden sonra eklemeniz gerekecek, ör. .

Localisation file format
MediaWiki'de kullanılan tüm mesajlar bir mesaj dosyası içinde tanımlanmıştır.

MediaWiki'de iki tür mesaj dosyası vardır: JSON ve PHP. Nisan 2014 itibariyle, temel MediaWiki ve bakımı yapılan uzantıların çoğu JSON biçimine taşındı. Tüm yeni geliştirmeler için JSON kullanmalısınız. JSON'a geçiş hakkında daha fazla bilgi için Requests for comment/Localisation format sayfasına bakın.

JSON
2013'ün sonlarından itibaren mesajlar için yeni bir dosya formatı tanıtıldı: JSON. Bu, genel bir genel veri depolama biçimi olarak bilinen sade JSON'dur. İçindeki her anahtar bir mesaj anahtarıdır ve değer mesaj metnidir. Ayrıca, çeviri yazarları gibi çeviriyle ilgili bilgileri depolamak için özel  anahtarı kullanılır.

JSON kullanmak, yürütülebilir olmadığından yerelleştirme dosyalarını daha güvenli hâle getirir. Ayrıca, MediaWiki benzeri ön uç yerelleştirme yetenekleri sağlayan ve Project Milkshake kapsamında geliştirilen ve MediaWiki'ye daha az bağımlı olmak isteyen bazı uzantılar tarafından kullanılan JavaScript kitaplık olan jquery.i18n ile de uyumludur, örneğin VisualEditor ve UniversalLanguageSelector.

Daha geniş uluslararasılaştırma ve yerelleştirme araçları paketi "Project Milkshake" olarak adlandırıldığından, bazı kişiler bu biçimi "banana" olarak adlandırır.

Dosya konumu
MediaWiki çekirdeğinde, yerelleştirme dosyaları  dizinine yerleştirilir. MediaWiki uzantıları genellikle kendi uzantılarını  bir alt dizine yerleştirir. Bir proje içinde çok sayıda mesaj varsa, sürdürülebilirlik için bunları iki veya daha fazla güncel alt dizine bölmek istenebilir. MediaWiki bağlamında, bu alt dizinleri listelemek için yapılandırma anahtarı kullanılır. İşte MediaWiki için VisualEditor uzantısından bir örnek:

İngilizce "en" ileti dosyasına  yeni iletiler eklersiniz ve bunları ileti belgeleme dosyasında "qqq"   özel sözde dil koduyla belgelersiniz. Ayrıca bakınız: Yeni mesajlar ekleme.

Meta veri
Şu anda dosyalarda aşağıdaki meta veri alanları kullanılmaktadır:


 * authors
 * İletilerin yazarlarının bir JSON listesi. İngilizce (en) ve mesaj belgeleri (qqq) için bunlar, mesaj dosyası düzenlendiğinde elle eklenir. Diğer tüm diller için bu, mesaj dosyası translatewiki.net üzerinden dışa aktarıldığında otomatik olarak eklenir. Mesaj belgeleri translatewiki.net üzerinde düzenlenebilir ve belge düzenleyiciler de qqq.json dosyasına otomatik olarak eklenir.


 * message-documentation
 * Bu, mesaj belgelerini depolamak için kullanılan sözde dil kodudur. MediaWiki için bu her zaman qqq kodudur. (Bu, bazı uzantılarda görünür, ancak gerçekte hiçbir şekilde işlenmez. Zorunlu değildir.)

Sözleşmeler
Satır sonları gibi özel karakterlerden kaçılır.

Farklı alfabelerdeki harfleri temsil eden Unicode karakterler, karakter kodları olarak değil, gerçek karakterler olarak saklanır, çünkü bu dosyalar bazen insanlar tarafından okunur ve bu, dosyaları daha küçük yapar ( ve   değil). Her durumda, geliştiricilerin İngilizce dışındaki herhangi bir dilde mesajları düzenlemek için birkaç nedeni vardır, çünkü bunlar genellikle translatewiki.net aracılığıyla düzenlenir.

HTML kodu da kaçmaz, yani  ve   değil.

JSON dosyaları sekmeler kullanılarak girintilidir.

PHP
Daha eski yerelleştirme dosyası biçimi PHP'dir. Bu aslında tüm mesajları içeren bir PHP dizisidir. Çekirdek MediaWiki'de her dil, MediaWiki kaynak kodunun diller/mesaj dizinindeki kendi dosyasında bulunur. Uzantılarda tüm diller ve mesaj belgeleri (qqq) aynı dosyadadır: ExtensionName.i18n.php, genellikle uzantının ana dizinindedir.

PHP'den JSON'a geçiş yapmak için generateJsonI18n.php betiğini kullanın. Mesajları JSON dosyalarına taşıyacak ve PHP dosyasının metnini JSON dosyalarına işaret eden bir altlık ile değiştirecektir. Bu kalıp kod, MediaWiki 1.19 ile geriye dönük uyumluluk için gereklidir. MediaWiki 1.19 uyumluluğu gerektirmeyen yeni uzantılarda kullanılmamaktadır.

Mesajları kullanma
MediaWiki, koddaki anahtarlarla kaynaklanan mesajların merkezi bir deposunu kullanır. Bu, örneğin kaynak dosyalardan çevrilebilir dizeleri çıkaran  üzerinden farklıdır. Anahtar tabanlı sistem, orijinal metinleri düzeltmek ve mesajlardaki değişiklikleri izlemek gibi bazı şeyleri kolaylaştırır. Dezavantajı, elbette, kullanılan mesajların listesi ve bu tuşlar için kaynak metinlerin listesinin senkronizasyondan çıkabilmesidir. Pratikte bu büyük bir sorun değil ve tek önemli sorun, bazen artık kullanılmayan ekstra mesajların hâlâ çeviri için kalmasıdır.

İleti anahtarlarını daha yönetilebilir ve daha kolay bulmak için grep ile de her zaman tam olarak yazın ve dinamik olarak oluşturmaya çok fazla güvenmeyin. Kodunuza daha iyi bir yapı kazandırdığını düşünüyorsanız, mesaj anahtarlarının bölümlerini birleştirebilirsiniz, ancak olası sonuç anahtarlarının bir listesiyle birlikte yakına bir yorum koyun.

Ayrıca kod kurallarına bakın. Örneğin:

JavaScript'te bir mesaj kullanmak için, ResourceLoader modülünüzün tanımında,  özelliğinde listeleme yapmanız gerekir.

PHP ve JavaScript'te mesaj işlevlerinin ayrıntılı kullanımı sayfasındadır. Bu önemli bir belgelendirme sayfasıdır ve mesajları kullanan kod yazmadan önce okumalısınız.

Mesaj kaynakları
Kod, şu kaynaklardan gelen sistem mesajlarını arar:


 * MediaWiki ad alanı. Bu, standart mesajlar uygun olmadığında veya istenmediğinde vikilerin tüm mesajlarını benimsemesine veya geçersiz kılmasına izin verir.
 * MediaWiki:Mesaj-anahtarı varsayılan mesajdır,
 * MediaWiki:Mesaj-anahtarı/dil-kodu, bir kullanıcı vikinin varsayılan dilinden başka bir dil seçtiğinde kullanılacak mesajdır.
 * Mesaj dosyalarından:
 * Çekirdek MediaWiki'nin kendisi ve şu anda bakımı yapılan çoğu uzantılar her dil için  adlı bir dosya kullanır, burada zyx dil için dil kodu bulunur.


 * Bazı eski uzantılar, genellikle  adlı tüm dillerdeki tüm mesajları tutan birleştirilmiş bir mesaj dosyası kullanır.


 * Birçok Wikimedia Vakfı vikisi, uzantısından bazı mesajlara erişerek, mesajları her MediaWiki kurulumuna dayatmadan WMF vikilerinde standart hâle getirmelerine olanak tanır.


 * Birkaç uzantı diğer teknikleri kullanır.

Önbelleğe alma
Sistem mesajları, öncelikle her web isteğinde kullanıldığı için MediaWiki'nin en önemli bileşenlerinden biridir. PHP mesaj dosyaları, binlerce mesaj anahtarını ve değerini sakladıkları için büyüktür. Bu dosyayı (ve kullanıcının dili içerik dilinden farklıysa muhtemelen birden fazla dosyayı) yüklemek, büyük bir bellek ve performans maliyetine sahiptir. Bu performans etkisini azaltmak için agresif, katmanlı bir önbellek sistemi kullanılır.

MediaWiki, kodun anlaşılmasını biraz daha zorlaştıran yerleşik birçok önbelleğe alma mekanizmasına sahiptir. 1.16'dan beri, mesajları ya cdb dosyalarında ya da veritabanında önbelleğe alan yeni bir önbelleğe alma sistemi bulunmaktadır. Özelleştirilmiş mesajlar, yapılandırmaya bağlı olarak dosya sisteminde ve memcached (veya alternatif) içinde önbelleğe alınır.

Aşağıdaki tablo, ilgili ayarlara genel bir bakış sunar:

MediaWiki 1.27.0 ve 1.27.1'de, otomatik algılama, dosya arka ucunu tercih edecek şekilde değiştirildi. (varsayılan) durumunda, dosya arka ucu yolu ile kullanılır. Bu değer ayarlanmazsa (varsayılan), işletim sistemi tarafından belirlenen geçici bir dizin kullanılır. Geçici bir dizin algılanamazsa, veritabanı arka ucu yedek olarak kullanılır. Bu, paylaşılan ana bilgisayarlardaki dosya çakışması ve güvenlik sorunları nedeniyle 1.27.2 ve 1.28.0'dan geri alındı (T127127 ve T161453 sayfalarına bakın).

İşlev geri izleme
Önbelleğe alma katmanlarını daha iyi görsel olarak tasvir etmek için, burada bir mesaj alınırken hangi yöntemlerin çağrıldığına dair bir işlev geri izlemesi verilmiştir. Her katmanın açıklaması için aşağıdaki bölümlere bakın.



MessageCache
sınıfı, iletiler için önbelleğe almanın en üst düzeyidir. Message sınıfından çağrılır ve bir mesajın son ham içeriğini döndürür. Bu katman aşağıdaki mantığı işler:


 * Veritabanında mesaj geçersiz kılmaları kontrol etme
 * Aşırı yüklenen mesajları olarak veya  olarak ayarlanmış olan herhangi bir yerde önbelleğe alma
 * Dil yedeği dizisinin geri kalanını çözümleme

Son mermi önemlidir. Dil yedekleri, orijinalin istenen bir mesajı yoksa MediaWiki'nin başka bir dile geri dönmesine izin verir. Sonraki bölümde bahsedildiği gibi, dil geri dönüş çözümlemesinin çoğu daha düşük bir düzeyde gerçekleşir. Ancak, yalnızca  katmanı, geçersiz kılınan mesajlar için veritabanını kontrol eder. Böylece veritabanından geçersiz kılınan mesajların geri dönüş zincirine entegre edilmesi burada yapılır. Veritabanı kullanılmıyorsa, bu katmanın tamamı devre dışı bırakılabilir.

LocalisationCache
LocalisationCache.php sayfasına bakın

LCStore
sınıfı, yalnızca LocalisationCache sınıfı tarafından mesajları gerçekten önbelleğe almak ve almak için kullanılan bir arka uç uygulamasıdır. MediaWiki'de genel önbelleğe alma için kullanılan  sınıfı gibi, bir dizi farklı önbellek türü vardır ($wgLocalisationCacheConf kullanılarak yapılandırılır):
 * "db" (varsayılan) - Veritabanındaki mesajları önbelleğe alır
 * "file" ( ayarlanmışsa varsayılan) - Mesajları yerel bir dosyada önbelleğe almak için CDB kullanır
 * "accel" - Verileri depolamak için APC veya başka bir işlem kodu önbelleği kullanır

"file" seçeneği Wikimedia Vakfı tarafından kullanılır ve veritabanına gitmekten daha hızlı ve APC önbelleğinden daha güvenilir olduğu için, özellikle de APC, PHP 5.5 veya sonraki sürümleriyle uyumlu olmadığı için önerilir.

Mesaj anahtarını seçme
Ayrıca bakınız:

Mesaj anahtarı küresel olarak benzersiz olmalıdır. Bu, çekirdek MediaWiki'yi ve tüm uzantıları ve görünümleri içerir.

Mesaj adlarında küçük harflere, sayılara ve kısa çizgilere sadık kalın; diğer karakterlerin çoğu daha az pratik veya hiç çalışmıyor. MediaWiki kuralına göre, ilk karakter büyük/küçük harfe duyarlı değildir ve diğer karakterler büyük/küçük harfe duyarlıdır.

Lütfen adlandırma için küresel veya yerel kuralları izleyin. Uzantılar için standart bir önek, tercihen küçük harfle uzantı adı ve ardından bir tire ("-") kullanın. İstisnalar şunlardır:


 * API tarafından kullanılan mesajlar. Bunlar,  ,   ile başlamalıdır. Bu önekten sonra uzantı önekini koyun. (Bu mesajların genellikle includes/i18/api altında ayrı bir dosyada olması gerektiğini unutmayın.)
 * Günlükle ilgili mesajlar. Bunlar,  ,   ile başlamalıdır.
 * Kullanıcı hakları. Special:ListGroupRights sayfasında görüntülenen hakkın adı anahtarı  ile başlamalıdır. "" cümlesini tamamlayan eylemin adı   ile başlamalıdır.
 * Revizyon etiketleri  ile başlamalıdır.
 * Özel sayfa başlıkları  ile başlamalıdır.

Mesaj oluştururken dikkat edilmesi gereken diğer noktalar

 * 1) Mesaj için uygun işleme kullandığınızdan emin olun (ayrıştırma,  -değiştirme, HTML için kaçış vb.)
 * 2) Mesajınız çekirdeğin bir parçasıysa, Installer, EXIF etiketleri ve ApiHelp gibi bazı bileşenlerin kendi mesaj dosyaları olmasına rağmen, genellikle   ile eklenmelidir.
 * 3) Mesajınız bir uzantıdaysa, onu uygun alt dizindeki   dosyasına veya   dosyasına ekleyin. Özellikle, çoğu son kullanıcı tarafından görülmeyen yalnızca geliştiriciler tarafından görülen API mesajları, genellikle   gibi ayrı bir dosyadadır. Bir uzantının çok fazla mesajı varsa,   altında alt dizinler oluşturabilirsiniz. Varsayılan   dahil tüm mesaj dizinleri,   içindeki   bölümünde veya  değişkeninde listelenmelidir.
 * 4) Bir ara verin ve mesajın ifadesini düşünün. Mümkün olduğunca açık mı? Yanlış anlaşılabilir mi? Mümkünse diğer geliştiricilerden veya yerelleştiricilerden yorum isteyin. Uluslararasılaştırma ipuçları bölümünü izleyin.
 * 5) Aynı dizindeki   dosyasına belgelendirme ekleyin.

Çevrilmemesi gereken mesajlar

 * 1) Yoksayılan mesajlar, yalnızca İngilizce mesajlar dosyasında bulunması gereken mesajlardır.  Yalnızca diğer mesajlara veya dilden bağımsız özelliklere atıfta bulundukları için çevrilmesi gerekmeyen mesajlardır, örneğin bir " " mesajı.
 * 2) İsteğe bağlı mesajlar yalnızca hedef dilde değiştirilirse çevrilebilir.

Bu tür mesajları işaretlemek için:


 * (isteğe bağlı olarak) sırasıyla  ileti belgelerindeki şablonu kullanın;
 * veya
 * (gerekli) üzerinde kullanılan  uzantısına, uygun şekilde listeleyen bir yama göndererek iletilerle ne yapacağını söyleyin (ayrıca  bakın):
 * çekirdek için, içine mesaj anahtarlarını ekleyin
 * altında veya
 * altında;
 * uzantılar için, içinde uzantının adının altına aşağıdaki gibi bir satır ekleyin
 * or
 * or

Mevcut mesajları kaldırma
ve  dosyadan kaldırın. Başka dillerle uğraşmayın. güncellemeleri bunları otomatik olarak halledecektir.

Ayrıca, mesajın translatewiki yapılandırmasında, örneğin isteğe bağlı veya en çok kullanılan mesajlar listesinde herhangi bir yerde görünüp görünmediğini kontrol edin (basit bir git grep yeterli olmalıdır). Gerekirse bu listelerden çıkarın.

Mevcut mesajları değiştirme

 * 1) Mesaj belgelendirmesini güncellemeyi düşünün.
 * 2) Eski çeviriler yeni anlama uygun değilse mesaj anahtarını değiştirin. Bu aynı zamanda mesaj işlemedeki değişiklikleri de içerir (ayrıştırma, kaçış, parametreler, vb.). Bir mesajın ifadesini teknik değişiklikler olmadan geliştirmek, genellikle bir anahtarı değiştirmek için bir neden değildir. Translatewiki.net'te çeviriler, çevirmenler tarafından hedeflenebilmeleri için eski olarak işaretlenecektir. Bir mesaj anahtarının değiştirilmesi, i18n ekibiyle görüşmeyi veya bir destek talebinde bulunmayı gerektirmez. Ancak, özel durumlarınız veya sorularınız varsa,  kanalıdan veya  adresindeki destek sayfasında sorun.
 * 3) Uzantı  tarafından destekleniyorsa, lütfen yalnızca İngilizce kaynak mesajını ve/veya anahtarı ve beraberindeki   girişini değiştirin. Gerekirse translatewiki.net ekibi çevirileri güncellemek, bunları eski olarak işaretlemek, dosyayı temizlemek veya mümkünse anahtarları yeniden adlandırmakla ilgilenecektir. Bu, yalnızca HTML etiketleri gibi diğer dillerde değiştirebileceğiniz ve bu dilleri konuşmadan değiştirebileceğiniz şeyleri değiştirdiğinizde de geçerlidir. Bu eylemlerin çoğu translatewiki.net'te gerçekleşecek ve Git'e yaklaşık bir günlük gecikmeyle ulaşacak.

Mesaj belgelendirmesi
Mesaj belgelendirmesi için bir sözde dil kodu  vardır. Özel kullanım için ayrılmış ISO 639 kodlarından biridir. Orada, her mesajın çevirisini tutmuyoruz, ancak her mesaj hakkında İngilizce cümleler topluyoruz: bize nerede kullanıldığını söyleyen, nasıl çevrileceğine dair ipuçları veren ve parametrelerini numaralandıran ve açıklayan, ilgili mesajlara bağlantı veren, ve benzeri. translatewiki.net'te, bu ipuçları mesajları düzenlerken çevirmenlere gösterilir.

Programcılar her mesajı belgelemelidir. Mesaj belgelendirmesi, yalnızca çevirmenler için değil, modülün tüm bakımcılar için önemli bir kaynaktır. Yazılıma bir mesaj eklendiğinde, buna karşılık gelen bir  girişi de olmalıdır; bunu yapmayan revizyonlar, dokümantasyon eklenene kadar " " olarak işaretlenir.

dosyalarındaki belgelendirme, yalnızca yeni mesajlar eklenirken veya mevcut bir İngilizce mesajı, örneğin parametre ekleme veya çıkarma gibi bir belge değişikliği gerektiren bir şekilde değiştirirken doğrudan düzenlenmelidir. Diğer durumlarda, belgelendirme genellikle translatewiki'de düzenlenmelidir. Her belge dizisine, sanki bir çeviriymiş gibi https://translatewiki.net/wiki/MediaWiki: message-key /qqq adresinden erişilebilir. Bu düzenlemeler, çevirilerle birlikte kaynak depolara dışa aktarılacaktır.

Belgelendirmede olması gereken faydalı bilgiler şunları içerir:


 * 1) Mesaj işleme (ayrıştırma, kaçış, düz metin).
 * 2) Örnek değerlerle parametre türü.
 * 3) Mesajın kullanıldığı yer (sayfalar, kullanıcı arayüzündeki konumlar).
 * 4) Mesajın kullanıldığı yerde nasıl kullanıldığı (bir sayfa başlığı, düğme metni, vb.).
 * 5) Bu mesajla birlikte başka hangi mesajlar kullanılıyor veya bu mesaj başka hangi mesajlara atıfta bulunuyor.
 * 6) İleti bağlamda görüldüğünde anlaşılabilecek, ancak ileti tek başına görüntülendiğinde (çeviri yapılırken durum böyledir) anlaşılamayan başka herhangi bir şey.
 * 7) Varsa, dilbilgisi hakkında notlar. Örneğin, İngilizce'de "open" hem fiil hem de sıfat olabilir. Diğer birçok dilde kelimeler farklıdır ve belge olmadan nasıl çevrileceğini tahmin etmek imkansızdır.
 * 8) "disabled", "open" veya "blocked" gibi şeyleri tanımlayan sıfatlar, neyi tanımladıklarını her zaman söylemelidir. Birçok dilde sıfatlar tanımladıkları ismin cinsiyetine sahip olmalıdır. Farklı türden şeylerin farklı sıfatlara ihtiyaç duyması da olabilir.
 * 9) Mesajın özel özellikleri varsa, örneğin bir sayfa adıysa veya doğrudan çeviri değil, kültüre veya projeye uyarlanmış olması gerekiyorsa.
 * 10) Mesajın diğer mesajın yanında, örneğin bir listede veya menüde görünüp görünmediği. Sözcüklerin üslubu veya gramer özellikleri muhtemelen yakındaki mesajlara benzer olmalıdır. Also, items in a list may have to be properly related to the heading of the list.
 * 1) Parts of the message that must not be translated, such as generic namespace names, URLs or tags.
 * 1) Explanations of potentially unclear words, for example abbreviations, like "CTA", or specific jargon, like "template", "suppress" or "stub". (Note that it's best to avoid such words in the first place!)
 * 2) Screenshots are very helpful. Don't crop – an image of the full screen in which the message appears gives complete context and can be reused in several messages.

A few other hints:


 * Remember that very, very often translators translate the messages without actually using the software.
 * Most usually, translators do not have any context information, neither of your module, nor of other messages in it.
 * A rephrased message alone is useless in most circumstances.
 * Don't use designers' jargon like "nav" or "comps".
 * Consider writing a glossary of the technical terms that are used in your module. If you do it, link to it from the messages.

You can link to other messages by using. Please do this if parts of the messages come from other messages (if this cannot be avoided), or if some messages are shown together or in same context.

translatewiki.net provides some default templates for documentation:


 * - for  messages
 * - for  messages
 * - for messages around user groups (, ,  ,   and  )
 * - for  messages

Have a look at the template pages for more information.

Internationalisation hints
Besides documentation, translators ask developers to consider some hints so as to make their work easier and more efficient and to allow an actual and good localisation for all languages. Even if only adding or editing messages in English, one should be aware of the needs of all languages. Each message is translated into more than 300 languages and this should be done in the best possible way. Correct implementation of these hints will very often help you write better messages in English, too.

Localisation lists the main places where you can find the assistance of experienced and knowledgeable people regarding i18n.

Use Message parameters and switches properly
That's a prerequisite of a correct wording for your messages.

Avoid message re-use
The translators discourage message re-use. This may seem counter-intuitive, because copying and duplicating code is usually a bad practice, but in system messages it is often needed. Although two concepts can be expressed with the same word in English, this doesn't necessarily mean they can be expressed with the same word in every language. "OK" is a good example: in English this is used for a generic button label, but in some languages they prefer to use a button label related to the operation which will be performed by the button. Another example is practically any adjective: a word like "multiple" changes according to gender in many languages, so you cannot reuse it to describe several different things, and you must create several separate messages.

If you are adding multiple identical messages, please add message documentation to describe the differences in their contexts. Don't worry about the extra work for translators. Translation memory helps a lot in these while keeping the flexibility to have different translations if needed.

Avoid fragmented or 'patchwork' messages
Languages have varying word orders, and complex grammatical and syntactic rules. It's very hard to translate "lego" messages, that is messages formed by multiple pieces of text, possibly with some indirection (also called "string concatenation").

It is better to make every message a complete phrase. Several sentences can usually be combined much more easily into a text block, if needed. When you want to combine several strings in one message, pass them in as parameters, as translators can order them correctly for their language when translating.

Messages quoting each other
An exception from the rule may be messages referring to one another: 'Enter the original author's name in the field labelled " " and click "  " when done'. This makes the message consistent when a software developer or wiki operator alters the messages "name" or "proceed" later. Without the int-hack, developers and operators would have to be aware of all related messages needing adjustment, when they alter one.

Don't use terms and templates that are specific to particular projects
MediaWiki is used by very diverse people, within the Wikimedia movement and outside of it. Even though it was originally built for an encyclopedia, it is now used for various kinds of content. Therefore, use general terms. For example, avoid terms like "article", and use "page" instead, unless you are absolutely sure that the feature you are developing will only be used on a site where pages are called "articles". Don't use "village pump", which is the name of an English Wikipedia community page, and use a generic term, such as "community discussion page", instead.

Don't assume that a certain template exists on all wikis. Templates are local to wikis. This applies to both the source messages and to their translations. If messages use templates, they will only work if a template is created on each wiki where the feature is deployed. It's best to avoid using templates in messages completely. If you really have to use them, you must document this clearly in the message documentation and in the extension installation instructions.

Separate times from dates in sentences
Some languages have to insert something between a date and a time which grammatically depends on other words in a sentence. Thus, they will not be able to use date/time combined. Others may find the combination convenient, thus it is usually the best choice to supply three parameter values (date/time, date, time) in such cases, and in each translation leave either the first one or last two unused as needed.

Avoid in messages
has several disadvantages. It can be anything (acronym, word, short phrase, etc.) and, depending on language, may need the use of  on each occurrence. No matter what, each message having  will need review in most wiki languages for each new wiki on which your code is installed. In the majority of cases, when there is not a general  configuration for a language, wiki operators will have to add or amend PHP code so as to get   for   working. This requires both more skills, and more understanding, than otherwise. It is more convenient to have generic references like "this wiki". This does not keep installations from locally altering these messages to use, but at least they don't have to, and they can postpone message adaption until the wiki is already running and used.

Avoid references to visual layout and positions
What is rendered where depends on skins. Most often screen layouts of languages written from left-to-right are mirrored compared to those used for languages written from right-to-left, but not always, and for some languages and wikis, not entirely. Handheld devices, narrow windows, and so on may show blocks underneath each other, that would appear side-by-side on larger displays. Since site- and user-written JavaScript scripts and gadgets can, and do, hide parts, or move things around in unpredictable ways, there is no reliable way of knowing the actual layout.

It is wrong to tie layout information to content languages, since the user interface language may not be the page's content language, and layout may be a mixture of the two depending on circumstances. Non-visual user agents like acoustic screen readers and other auxiliary devices do not even have a concept of visual layout. Thus, you should not refer to visual layout positions in the majority of cases, though semantic layout terms may still be used ("previous steps in the form", etc.).

MediaWiki does not support showing different messages or message fragments based on the current directionality of the interface (see T30997).

The upcoming browser and MediaWiki support for East and North Asian top-down writing will make screen layouts even more unpredictable, with at least eight possible layouts (left/right starting position, top/bottom starting position, and which happens first).

Avoid references to screen colours
The colour in which something is rendered depends on many factors, including skins, site- and user-written JavaScript scripts and gadgets, and local user agent over-rides for reasons of accessibility or technological limitations. Non-visual user agents like acoustic screen readers and other auxiliary devices do not even have a concept of colour. Thus, you should not refer to screen colours. (You should also not rely on colour alone as a mechanism for informing the user of state, for the same reason.)

Have message elements before and after each input field

 *  This is a suggested guideline, has not become standard in MediaWiki development 

While English allows efficient use of prompting in the form item–colon–space–input-field, many other languages don't. Even in English, you often want to use "Distance: ___ metres" rather than "Distance (in metres): ___". Leaving elements aside, you should think of each and every input field following the "Distance: ___ metres" pattern. So:


 * give it two messages, even if the 2nd one is empty in English and some other languages, or
 * allow the placement of inputs via  parameters.

Avoid untranslated HTML markup in messages
HTML markup not requiring translation, such as enclosing s, rulers above or below, and similar, should usually not be part of messages. hey unnecessarily burden translators, increase message file size, and pose the risk to accidentally being altered or skipped in the translation process. In general, avoid raw HTML in messages if you can.

Messages are often longer than you think!
Skimming foreign language message files, you almost never find messages shorter than Chinese ones, rarely shorter than English ones, and usually much longer than English ones.

Especially in forms, in front of input fields, English messages tend to be terse, and short. That is often not kept in translations. Languages may lack the technical vocabulary present in English, and may require multiple words or even complete sentences to explain some concepts. For example, the brief English message "TSV file:" may have to be translated in a language as literally: " Please type a name here which denotes a collection of computer data that is comprised of a sequentially organised series of typewritten lines which themselves are organised as a series of informational fields each, where said fields of information are fenced, and the fences between them are single signs of the kind that slips a typewriter carriage forward to the next predefined position each. Here we go: _____ (thank you) " This is, admittedly, an extreme example, but you get the trait. Imagine this sentence in a column in a form where each word occupies a line of its own, and the input field is vertically centered in the next column. :-(

Avoid using very close, similar, or identical words to denote different things, or concepts
For example, pages may have older revisions (of a specific date, time, and edit), comprising past versions of said page. The words revision, and version can be used interchangeably. A problem arises, when versioned pages are revised, and the revision, i.e. the process of revising them, is being mentioned, too. This may not pose a serious problem when the two synonyms of "revision" have different translations. Do not rely on that, however. It is better to avoid the use of "revision" aka "version" altogether, then, so as to avoid it being misinterpreted.

Basic words may have unforeseen connotations, or not exist at all
There are some words that are hard to translate because of their very specific use in MediaWiki. Some may not be translated at all. For example, there is no word "user" relating to "someone who uses something" in several languages. Similarly, in Kölsch the English words "namespace" and "apartment" translate the same word. Also, in Kölsch, they say "corroborator and participant" in one word since any reference to "use" would too strongly imply "abuse". The term "wiki farm" is translated as "stable full of wikis", since a single-crop farm would be a contradiction in terms in the language, and not understood, etc..

Expect untranslated words

 *  This is a suggested guideline, has not yet become standard in MediaWiki development 

It is not uncommon that proper names, tag names, etc. and computerese in English are not translated, and instead taken as loan-words, or foreign words. In the latter case, some particularly-fastidious translators may mark such words as belonging to another language with HTML markup, such as.

You may want to consider ensuring that your message output handler passes such markup along unchanged, despite the obvious security risks.

Permit explanatory inline markup

 *  This is a suggested guideline, has not yet become standard in MediaWiki development 

Sometimes there are abbreviations, technical terms, or generally ambiguous words in target languages that may not be immediately understood by newcomers, but are obvious to experienced computer users. To avoid screen clutter of lengthy explanations without leaving newcomers stranded, translators may choose to add explanations as annotations, shown by browsers when you move the mouse over them.

For example, the MediaWiki core message  about image rotation, which in English is simply " ", in Moroccan Arabic is translated as:



giving:


 * mḍwwer 90° ĜĜS

explaining the abbreviation for "counter clockwise" when needed.

You may want to consider ensuring that your message output handler passes such markup along unchanged, even if the original message does not use them.

Use, , and tags where needed
When talking about technical parameters, values, or keyboard inputs, mark them appropriately as such using the HTML tags, , or. Thus they are typographically set off form the normal text. That clarifies their sense to readers, avoiding confusion, errors and mis-representations. Ensure that your message handler allows such markup.

Symbols, colons, brackets, etc. are parts of messages
Many symbols are localisable, too. Some scripts have other kinds of brackets than the Latin script has. A colon may not be appropriate after a label or input prompt in some languages. Having those symbols included in messages helps to make better and less Anglo-centric translations, and also reduces code clutter.

For example, there are different quotation mark conventions used in «Norwegian», »Swedish», »Danish«, „German“, and 「Japanese」.

If you need to wrap some text in localized parentheses, brackets, or quotation marks, you can use the   or    or    messages like so:

Do not expect symbols and punctuation to survive translation
Languages written from right to left (as opposed to English) usually swap arrow symbols being presented with "next" and "previous" links, and their placement relative to a message text may, or may not, be inverted as well. Ellipsis may be translated to "etc.", or to words. Question marks, exclamation marks, colons will be placed other than at the end of a sentence, not at all, or twice. As a consequence, always include all of those in the text of your messages, and never try to insert them programmatically.

Use full stops
Do terminate normal sentences with full stops. This is often the only indicator for a translator to know that they are not headlines or list items, which may need to be translated differently.

Wikitext of links
Link anchors can be put into messages in several technical ways:


 * 1) via wikitext: …   …,
 * 1) via wikitext: …  …, or
 * 1) the anchor text is a message in the MediaWiki namespace. Avoid it!

The latter is often hard or impossible to handle for translators, avoid fragmented or 'patchwork' messages here, too. Make sure that " " does not contain spaces.

Use meaningful link anchors
Take care with your wording. Link anchors play an important role in search engine assessment of pages – both the words linked, and the target anchor. Make sure that the anchor describes the target page well. Always avoid commonplace and generic words. For example, "Click here" is an absolute no-go, since target pages are almost never about "click here". Do not put that in sentences around links either, because "here" was not the place to click. Instead, Use precise action words telling what a user will get to when following the link, such as "You can upload a file if you wish."

See also Help users predict where they are going, and mystery meat navigation, and The main reasons why we shouldn't use click here as link text.

Avoid jargon and slang
Avoid developer and power user jargon in messages. Try to use a simple language whenever possible. Avoid saying "success", "successfully", "fail", "error occurred while", etc., when you want to notify the user that something happened or didn't happen. This comes from developers' perspective of seeing everything as true or false, but users usually just want to know what actually happened or didn't, and what they should do about it (if at all). So:


 * "The file was successfully renamed" -> "The file was renamed"
 * "File renaming failed" -> "There is a file with this name already. Please choose a different name."

Be aware of whitespace and line breaks
MediaWiki's localised messages usually get edited within the wiki, either by wiki operations on live wikis, or by the translators on translatewiki.net. You should be aware of how whitespace, especially at the beginning or end of your message, will affect editors:


 * Spaces and line breaks (new lines) at the end of the message are always automatically removed by the wikitext editor. Your message must not end with a space or line break, as it will be lost when it's edited on the wiki.
 * Spaces and line breaks at the beginning are not automatically removed, but they are likely to be removed by accident during editing, and should be avoided.

Start and end your message with active text; if you need a newline or paragraph break around it, your surrounding code should deal with adding it to the returned text.

There are some messages which require a space at the end, such as 'word-separator' (which consists of just a space character in most languages). To support such use cases, the following HTML entities are allowed in messages and transformed to the actual characters, even if the message otherwise doesn't allow wikitext or HTML formatting:


 * – space
 * or  – non-breaking space
 * – soft hyphen

On a related note, any other syntax elements affected by pre-save transforms also must not be used in messages, as they will be transformed when the message is edited on the wiki.

Use standard capitalisation
Capitalisation gives hints to translators as to what they are translating, such as single words, list or menu items, phrases, or full sentences. Correct (standard) capitalisation may also play a role in search engines' assessment of your pages. MediaWiki uses sentence case (The quick brown fox jumps over the lazy dog) in interface messages.

Always remember that many writing systems don't have capital letters at all, and some of those that do have them, use them differently from English. Therefore, don't use ALL-CAPS for emphasis. Use CSS, or HTML or  per below:

Emphasis
In normal text, emphasis like boldface or italics and similar should be part of message texts. Local conventions on emphasis often vary, especially some Asian scripts have their own. Translators must be able to adjust emphasis to their target languages and areas. Try to use "" and "" in your user interface to allow mark-up on a per language or per script basis.

In modern screen layouts of English and European styles, emphasis becomes less used. Do convey it in your still, as it may give valuable hints as to how to translate. Emphasis can and should be used in other cultural contexts as appropriate, provided that translators know about it.

Ayrıca bakınız

 * FAQ
 * FAQ
 * FAQ
 * FAQ
 * FAQ
 * FAQ