Yerelleştirme

From mediawiki.org
Jump to navigation Jump to search
This page is a translated version of the page Localisation and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎dansk • ‎español • ‎français • ‎interlingua • ‎magyar • ‎português • ‎svenska • ‎vèneto • ‎čeština • ‎македонски • ‎русский • ‎עברית • ‎العربية • ‎فارسی • ‎മലയാളം • ‎ไทย • ‎中文 • ‎日本語
Uluslararasılaşma belgeleri
kısayollar:
I18N
I18n
L10n
Wikimedia Vakfı yerelleştirme ekibi için Wikimedia Language engineering sayfasına bakın.
Bu vikideki sayfaları çevirisi için Project:Dil politikası sayfasına bakın.

Bu sayfa MediaWiki'nin uluslararasılaştırma ve yerelleştirme (i18n ve L10n) sisteminin teknik bir tanımını verir ve kodlayıcıların farkında olmalıdır. Mantığımız, i18n sonradan düşünülmemeli: bu, yazılımınızın ilk aşamalarından ve aynı zamanda MediaWiki'nin principles temel değerlerinden birinin temel bileşenidir.

Çeviri kaynakları

translatewiki.net

translatewiki.net, çekirdek MediaWiki uzantı ve görünüm mesajlarının viki için çevirisini destekler. Bu sayfadaki dosya düzenleme, Git, yamalar oluşturma vb. gibi tüm teknik özelliklerle hiçbir ilginiz yoksa, doğrudan translatewiki.net adresine gidin.

MediaWiki kullanıcı arayüzü mesajlarının tüm çevirisi, translatewiki.net adresinden geçmeli ve doğrudan koda bağlı olmamalıdır. Kaynak kodda sadece İngilizce mesajlar ve başlangıç belgelendirme yapılmalıdır.

Çekirdek MediaWiki ve uzantılar, kullanıcı arayüzünde görüntülenen herhangi bir metin için sistem mesajlarını kullanmalıdır. Bunun nasıl yapılacağına dair bir örnek için, lütfen Manual:Özel sayfalar bölümüne bakın. Uzantı iyi yazılmışsa, personeli gerrit bildirdikten sonra birkaç gün içinde muhtemelen translatewiki.net dahil edilir. Fark edilmediyse, iletişime geçin. Tercüme edilemeyecek kadar dengesizse, kodu not alın veya gerekiyorsa onlarla iletişime geçin.

Ayrıca bakınız Yerelleştirme sistemine genel bakış ve Ne ile yerelleştirilebilirler.

Mesajları bulma

Help:Sistem mesajı , çevirmek istediğiniz belirli bir dizginin nasıl bulunacağını açıklar. Özellikle, MediaWiki 1.18 ile tanıtılan qqx numarası not alın.

i18n posta listesi

mediawiki-i18n@ listesine abone olabilirsiniz. Şu anda trafik az.

Kod yapısı

İlk önce, Language.php cinsinden bir Dil nesnesine sahipsiniz. Bu nesne, tüm yerelleştirilebilir mesaj dizelerinin yanı sıra, dile özgü diğer ayarları ve özel davranışları (büyük harf, küçük harf, tarih basma, biçimlendirme numaraları, yön , özel dilbilgisi kuralları vs.).

Nesne iki kaynaktan inşa edilmiştir: kendisinin alt sınıf sürümleri (sınıflar) ve Mesaj dosyaları (mesajlar).

Ayrıca MediaWiki ad alanı üzerinden metin girişini yapan MessageCache class var. Günümüzde çoğu uluslararasılaştırma, Message nesnelerle ve includes/GlobalFunctions.php olarak tanımlanan wfMessage() kısayol işleviyle gerçekleştirilir. Eski kod hala yukarıda belirtilen Mesaj nesneleri lehine kabul edilmeyen eski wfMsg*() işlevlerini kullanıyor olabilir.

Genel kullanım (geliştiriciler için)

Ayrıca bakınız Manual:Messages API .

Dil nesneleri

Dil nesnesini almanın iki yolu vardır. Kullanıcı arayüzü ve içerik dili için sırasıyla $wgLang ve $wgContLang küreseli kullanabilirsiniz. İsteğe bağlı bir dil için Language::factory( 'en' ) kullanarak, en dil koduyla değiştirerek bir nesne oluşturabilirsiniz. $code zaten bir dil nesnesiyse wfGetLangObj( $code ); kullanabilirsiniz. Kodların languages/Names.php listesinde.

Dile özgü işlevleri yapmak için en çok sayı, saat ve tarih biçimlendirmesini yapmak, aynı zamanda listeleri ve diğer şeyleri yapmak için Language nesneye ihtiyaç vardır. Birden fazla önbelleğe alma ve fallback languages ile birleştirme katmanı var, ancak normal kullanımda ayrıntılar önemli değil.

Mesajları kullanma

MediaWiki, koddaki anahtarlarla başvurulan bir merkezi ileti deposunu kullanır. Bu, örneğin çevrilebilir dizeleri kaynak dosyalardan ayıklayan, örneğin Gettext farklıdır. Anahtar tabanlı sistem, orijinal metinleri hassaslaştırma ve mesajlardaki değişiklikleri izleme gibi bazı şeyleri kolaylaştırır. Dezavantajı elbette, kullanılan mesajların ve bu anahtarlar için kaynak metinlerin listesinin senkronizasyondan çıkmasıdır. Uygulamada bu büyük bir sorun değildir ve tek önemli sorun, bazen kullanılmayan fazladan iletilerin hala çeviri için hazır kalmasıdır.

Mesaj tuşlarını daha kolay yönetilebilir ve kolay bulmak için grep ile de her zaman tamamen yazın ve dinamik olarak oluşturulmasına çok fazla güvenmeyin. Kodunuzun daha iyi bir yapı verdiğini düşünüyorsanız, mesaj tuşlarının bir kısmını birleştirebilir, ancak olası sonuç tuşlarının bir listesi ile yakınlarda bir yorum yapabilirsiniz. Örneğin:

PHP

// Burada kullanılabilecek mesajlar:
// * myextension-connection-success
// * myextension-connection-warning
// * myextension-connection-error
$text = wfMessage( 'myextension-connection-' . $status )->parse();

JS

// Burada kullanılabilecek mesajlar:
// * myextension-connection-success
// * myextension-connection-warning
// * myextension-connection-error
var text = mw.msg( 'myextension-connection-' + status );

PHP ve JavaScript'teki mesaj işlevlerinin detaylı kullanımı Manual:Messages API üzerindedir.

Yeni mesaj ekleme

Ayrıca bakınız: Yerelleştirme dosya biçimi

Mesaj anahtarını seçme

Ayrıca bakınız: Manual:Coding conventions#System messages

Mesaj anahtarı genel olarak benzersiz olmalıdır. Bu çekirdek MediaWiki'yi ve tüm uzantıları ve kaplamaları içerir.

Mesaj isimlerinde küçük harflere, rakamlara ve kısa çizgilere yapıştırın; diğer çoğu karakter daha az pratiktir veya hiç çalışmıyordur. MediaWiki sözleşmesine göre, ilk karakter büyük/küçük harfe duyarsızdır ve diğer karakterler büyük küçük harfe duyarlıdır.

Lütfen adlandırma için küresel veya yerel sözleşmeleri takip edin. Uzantılar için, standart bir ön ek, tercihen küçük harfli uzantı adı ve ardından kısa çizgi ("-") kullanın. İstisnalar:

  • API tarafından kullanılan mesajlar. Bunlar apihelp-, apiwarn-, apierror- 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 logentry-, log-name-, log-description ile başlamalıdır.
  • Kullanıcı hakları. Special:ListGroupRights üzerinde görüntülenen sağ adın anahtarı right- ile başlamalıdır. "Aşağıdaki nedenlerden dolayı $2 izniniz yok:" cümlesini tamamlayan işlemin adı action- ile başlamalıdır
  • Revizyon etiketleri tag- ile başlamalıdır.
  • Özel sayfa başlıkları special- ile başlamalıdır.

Mesaj oluştururken dikkat edilecek diğer şeyler

  1. İleti için uygun işleme kullandığınızdan emin olun (ayrıştırma, {{ değiştirme, HTML için kaçması 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 languages/i18n/en.json ile eklenmelidir.
  3. İletiniz bir uzantı içindeyse, uygun alt dizindeki i18n/en.json veya en.json dosyasına ekleyin. Özellikle, çoğu geliştirici tarafından görülmeyen ve yalnızca geliştiriciler tarafından görülen API iletileri genellikle i18n/api/en.json gibi ayrı bir dosyada bulunur. Bir uzantıda çok fazla ileti varsa, i18n altında alt dizinler oluşturabilirsiniz. Varsayılan i18n/ dahil olmak üzere tüm ileti dizinlerinin MessagesDirs bölümünde extension.json veya $wgMessagesDirs değişkeninde listelenmesi gerekir.
  4. Bir ara verin ve mesajın metnini göz önünde bulundurun. Mümkün olduğunca net mi? Yanlış anlaşılabilir mi? Mümkünse diğer geliştiricilerin veya yerelleştiricilerin yorumlarını isteyin. #Uluslararasılaştırma ipuçlarını izleyin.
  5. Aynı dizine qqq.json ile belge ekleyin. Mesaj belgeleri hakkında daha fazla bilgi edinin.

Çevrilmemesi gereken mesajlar

  1. Yoksayılan mesajları yalnızca İngilizce mesajlar dosyasında bulunması gereken mesajlardır. Çevrilmesi gerekmeyen mesajlardır, çünkü yalnızca diğer mesajlara veya dilden bağımsız özelliklere kaynaklar, örn. "{{SITENAME}}" mesajı.
  2. İsteğe bağlı mesajları yalnızca hedef dilde değiştirilirse çevrilebilir.

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

Mevcut mesajları kaldırma

en.json ve qqq.json üzerinden kaldırın. Diğer dillerle uğraşmayın. translatewiki.net üzerinden başlayan güncellemeler bunları otomatik olarak ele alacaktır.

Mevcut mesajları değiştirme

  1. İleti belgelerini güncellemeyi düşünün (#Yeni mesaj ekleme bölümüne bakın).
  2. Eski çeviriler yeni anlam için uygun değilse mesaj tuşunu değiştirin. Bu aynı zamanda mesaj yönetimindeki değişiklikleri de (ayrıştırma, kaçma, parametreler vb.) içerir. Bir iletinin teknik değişiklik yapmadan ifade edilmesini iyileştirmek, genellikle bir anahtarın değiştirilmesi için bir neden değildir. translatewiki.net'te çeviriler, çevirmenler tarafından hedeflenebilmeleri için eski olarak işaretlenecektir. Bir mesaj anahtarını değiştirmek i18n ekibiyle tartışmayı veya bir destek isteği göndermeyi gerektirmez. Ancak, özel koşullarınız veya sorularınız varsa, #mediawiki-i18n veya destek sayfasında translatewiki.net altında sorun.
  3. Uzantı qqq.json tarafından destekleniyorsa, lütfen yalnızca İngilizce kaynak iletisini ve/veya anahtarını ve beraberindeki girişi qqq.json olarak değiştirin. Gerekirse, translatewiki.net ekibi çevirileri güncellemek, eski olarak işaretlemek, dosyayı temizlemek veya mümkün olan yerlerde anahtarları yeniden adlandırmakla ilgilenecektir. Bu, yalnızca bu dillerde tartışmadan diğer dillerde değiştirebileceğiniz HTML etiketleri gibi şeyleri değiştirdiğinizde de geçerlidir. Bu işlemlerin çoğu translatewiki.net olarak gerçekleşecek ve Git'e yaklaşık bir günlük gecikmeyle ulaşacak.

Ad alanlarını ve özel sayfa takma adlarını yerelleştirme

Ad alanları ve özel sayfa adları (yani "Special:RecentChanges" içindeki "RecentChanges") da çevrilebilir.

Ad alanları

Şu anda translatewiki.net'te ad alanı adı çevirileri yapmak [1] devre dışı bırakıldı, bu yüzden bunu Gerrit'te kendiniz yapmanız veya başka birisinin yapmasını isteyen Phabricator: bir görev yapmanız gerekiyor.

Uzantınız tarafından tanıtılan özel ad alanlarının çevrilmesine izin vermek için, şuna benzer bir MyExtension.namespaces.php dosya oluşturun:

<?php
/**
 * MyExtension tarafından tanıtılan ad alanlarının çevirileri.
 *
 * @file
 */

$namespaceNames = [];

// MyExtension uzantısının kurulu olmadığı vikiler için.
if( !defined( 'NS_MYEXTENSION' ) ) {
	define( 'NS_MYEXTENSION', 2510 );
}

if( !defined( 'NS_MYEXTENSION_TALK' ) ) {
	define( 'NS_MYEXTENSION_TALK', 2511 );
}

/** English */
$namespaceNames['en'] = [
	NS_MYEXTENSION => 'MyNamespace',
	NS_MYEXTENSION_TALK => 'MyNamespace_talk',
];

/** Finnish (Suomi) */
$namespaceNames['fi'] = [
	NS_MYEXTENSION => 'Nimiavaruuteni',
	NS_MYEXTENSION_TALK => 'Keskustelu_nimiavaruudestani',
];

Sonra ad alanı çeviri dosyasını MyExtension.php ile $wgExtensionMessagesFiles['MyExtensionNamespaces'] = dirname( __FILE__ ) . '/MyExtension.namespaces.php'; içinde yükleyin

Şimdi, bir kullanıcı Fince (fi) vikisine MyExtension yüklediğinde, özel ad alanı sihirli bir şekilde Fince'ye çevrilecek ve kullanıcının bir şey yapmasına gerek yok!

Ayrıca, uzantınızın ad alanlarını extension default namespaces sayfasına kaydetmeyi de unutmayın.

Özel sayfa takma adları

Güncel bilgiler için Özel sayfalar için manüel sayfaya bakın. Aşağıdakiler geçerli görünmüyor.

Bu biçimde özel sayfa takma adları için yeni bir dosya oluşturun:

<?php
/**
 * Aliases for the MyExtension extension.
 *
 * @file
 * @ingroup Extensions
 */

$aliases = [];

/** English */
$aliases['en'] = [
	'MyExtension' => [ 'MyExtension' ]
];

/** Finnish (Suomi) */
$aliases['fi'] = [
	'MyExtension' => [ 'Lisäosani' ]
];

Sonra uzantının kurulum dosyasına şu şekilde yükleyin: $wgExtensionMessagesFiles['MyExtensionAlias'] = dirname( __FILE__ ) . '/MyExtension.alias.php';

Özel sayfa kodunuz SpecialPage::getTitleFor( 'MyExtension' ) veya $this->getTitle() (Special:MyExtension sağlayan sınıfta) kullandığında, varsa yerelleştirilmiş takma ad kullanılır.

Mesaj parametreleri

Bazı mesajlar parametre alır. (Statik) mesaj metinlerinde $1, $2, $3, … ile temsil edilirler ve çalışma zamanında değiştirilirler. Tipik parametre değerleri sayılardır ("3 revizyonu silinsin mi?" içindeki "3") veya kullanıcı adlarıdır ("Bob tarafından en son düzenlenmiş sayfa), sayfa adları, bağlantılar vb. veya bazen diğer mesajlardır. Bunlar keyfi karmaşıklığa sahip olabilirler.

Her belirli mesaj için tanımlanan parametre listesi MediaWiki'nin "languages/" klasöründe bulunan "qqq.json" özel dosyasına yerleştirilir, daha fazla bilgi için belgeye bakın.

PLURAL, GENDER ve GRAMMAR sihirli kelimeleriyle tüm kelimeleri kullanmak tercih edilir. Örneğin, {{PLURAL:$1|subpage|subpages}}, sub{{PLURAL:$1|page|pages}} daha iyi. Aramayı kolaylaştırır.

Mesajlardaki değiştirmeler…

Ayrıca bakınız: Manual:Mesaj API'si#Cinsiyet, dilbilgisi, çoğul hakkında notlar .

Parametre değerleri zaman zaman tam ifadeyi veya mesajlardaki dilbilgisel varyasyonları etkiler. "$1 (sub)page(s) of his/her userpage" gibi çirkin yapılara başvurmayız, çünkü bunlar kullanıcılar için fakirdir ve daha iyisini yapabiliriz. Bunun yerine çalışma zamanında bilinecek değerlere göre ayrıştırılan anahtarlar yapıyoruz. Statik ileti metni daha sonra, listedeki olası seçeneklerin her birini, önce anahtarın adı ve fark yaratan değere yapılan bir kaynak sağlar. Bu, MediaWiki'de parser functions çağrılma biçimine benzer. Çeşitli anahtar tipleri mevcuttur. Bunlar yalnızca iletiler için tam ayrıştırma veya {{ dönüşüm yaparsanız çalışır.

…PLURAL üzerinden sayılarda

Ayrıca bakınız: Manual:Mesaj API'si#Cinsiyet, dilbilgisi, çoğul hakkında notlar .

MediaWiki, daha güzel görünen bir ürün sağlayan çoğulları destekler. Örneğin:

'undelete_short' => 'Undelete {{PLURAL:$1|one edit|$1 edits}}',

Belirli bir sayı için açık bir çoğul form varsa, aşağıdaki sözdizimi ile mümkündür

'Box has {{PLURAL:$1|one egg|$1 eggs|12=a dozen eggs}}.'
Tüm numaralarda PLURAL kullanımının farkında olun
Ayrıca bakınız: Plural

Mesaj metnine bir sayı eklenmesi gerektiğinde, her zaman 1'den büyük olsa bile bazı dillerin PLURAL kullanması gerektiğini unutmayın. Bunun nedeni, İngilizce dışındaki dillerde PLURAL'ın İngilizce ile karşılaştırılabilir çok farklı ve karmaşık ayrımlar yapabilmesidir: 1st, 2nd, 3rd, 4th, … 11th, 12th, 13th, … 21st, 22nd, 23rd, … vb.

"Hiçbir öğe sayılmadı", "bir öğe sayıldı", "daha fazla öğe sayıldı" gibi durumlar için üç farklı ileti sağlamaya çalışmayın. Aksine, bir mesajın hepsini almasına izin verin ve bunları kendi dillerinde olası sunum farklılıklarını doğru bir şekilde tedavi etmek için çevirmenlere ve PLURAL'a bırakın.

Mümkünse her zaman sayıyı parametre olarak ekleyin. İngilizce anlam ifade etmese bile, kaynak iletilere her zaman {{PLURAL:}} sözdizimi ekleyin. Sözdizimi çevirmenleri kılavuzları.

Kesirli sayılar desteklenir, ancak çoğul kurallar tam olmayabilir.

Liste öğelerinin sayısını listeler hakkında konuşan iletilere parametre olarak iletin

Sadece tekil ve çoğul olduğunu varsaymayın. Birçok dilde kullanılan gerçek sayıya bağlı ikiden fazla form vardır ve okuyucuların görebileceği bir listede listelenenleri ifade ederken liste öğelerinin sayısına göre dilbilgisi kullanmaları gerekir. Bu nedenle, kodunuz bir liste hesapladığında, sayı İngilizce kullanılmasa bile başlıklara, girişlere, altbilgilere ve liste hakkındaki diğer iletilere parametre count( $list ) olarak ekleyin. Görünmez listeler hakkında konuşmanın tarafsız bir yolu vardır, bu nedenle öğeleri önceden saymak zorunda kalmadan ekstra sayfalardaki listelere bağlantılara sahip olabilirsiniz.

…GENDER üzerinden kullanıcı adlarında

Ayrıca bakınız: Manual:Mesaj API'si#Cinsiyet, dilbilgisi, çoğul hakkında notlar .
'foobar-edit-review' => 'Please review {{GENDER:$1|his|her|their}} edits.'

Bir iletideki bir kullanıcıya kaynaklarsanız, iletiye parametre olarak kullanıcı adını iletin ve ileti belgelerine cinsiyetin desteklendiğini belirtin. Cinsiyet ihlallerine sahip diller için çevirilerde GENDER kullanılması muhtemelse, bunu İngilizce dil kaynak mesajına açıkça ekleyin.

Oturum açmış olan kullanıcıyı doğrudan adreslerseniz, kullanıcı adını parametre olarak boş bırakın:

'foobar-logged-in-user' => 'You said {{GENDER:|you were male|you were female|nothing about your gender}}.'
MediaWiki sürümü:
1.31

Gerrit change 398772

Mesaja kullanıcı adını eklerseniz (örn. "$1, size teşekkür etti."), * veya ; gibi karakterlerin yorumlanmamasını sağlamak için önce wfEscapeWikitext() üzerinden geçirmeyi düşünün.

Kullanıcıların dilbilgisel cinsiyetleri var
Ayrıca bakınız Gender

Bir mesaj bir kullanıcı hakkında tartıştığında veya bir kullanıcıyla ilgili olduğunda veya doğrudan bir kullanıcıya hitap ettiğinde, kullanıcı adı mesaja parametre olarak iletilmelidir. Böylece, cinsiyete bağlı uygun gramer kullanmak zorunda olan ya da kullanmak isteyen diller bunu yapabilir. Bu, kullanıcı adının mesajda görünmesi amaçlanmadığında bile yapılmalıdır, örneğin, "inform the user on his/her talk page", daha iyi İngilizcesi olarak "inform the user on {{GENDER:$1|his|her|their}} talk page" olur.

Bu, mesajların dilini "cinselleştirmeye" teşvik edildiğiniz anlamına gelmez: lütfen bu netlik ve hassasiyetle yapılabildiğinde cinsiyetten bağımsız bir dil kullanın.

…GRAMMAR üzerinden cümle içindeki bağlamı kullanma hakkında

Ayrıca bakınız: Manual:Mesaj API'si#Cinsiyet, dilbilgisi, çoğul hakkında notlar .

Aglütinatif diller için dilbilgisel dönüşümler de mevcuttur. Örneğin, dil dosyalarını siteden bağımsız hale getirmenin mutlak bir zorunluluk olduğu Fince için, yani Vikipedi kaynaklarını kaldırmaktır. Fince'de "about Wikipedia", "Tietoja Wikipediasta" olur ve "you can upload it to Wikipedia", "Voit tallentaa tiedoston Wikipediaan" olur. Son ekler, kelimenin nasıl kullanıldığına ve tabanda küçük değişiklikler yapıldığına bağlı olarak eklenir. İstisnaların uzun bir listesi var, ancak site adı gibi çevrilmesi gereken sadece birkaç kelime olduğundan, eklememiz gerekmedi.

MediaWiki'nin 20'den fazla dil için dilbilgisel dönüştürme işlevleri vardır. Bunlardan bazıları sadece Wikimedia site adları için sözlüklerdir, ancak diğerlerinde en yaygın durumlar dışında hepsi başarısız olacak basit algoritmalar vardır.

MediaWiki'nin keyfi dilbilgisi dönüşümünden önce bile, ay adları için nominatif/genetik bir ayrım vardı. Bu ayrım, ay adlarını cümle yerine koymak istiyorsanız bazı diller için gereklidir.

Parametrelerdeki ve mesajlardaki özel karakterleri filtreleme

Parametre dönüştürmesi ile ilgili diğer (çok daha basit) sorun HTML'den kaçmaktır. Çok daha basit olmasına rağmen, MediaWiki oldukça zayıf bir iş çıkarıyor.

Mesaj belgesi

İleti belgeleri için sahte bir kod qqq var. Ö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ı anlatmak, nasıl tercüme edileceği hakkında ipuçları vermek, parametrelerini numaralandırmak ve tanımlamak, ilgili mesajlara bağlantı vermek, ve bunun gibi. translatewiki.net'te, bu ipuçları mesajları düzenlediklerinde çevirmenlere gösterilir.

Programcılar her mesajı belgelemelidir. Mesaj belgesi sadece çevirmenler için değil, modülün tüm bakıcıları için önemli bir kaynaktır. Yazılıma her mesaj eklendiğinde, karşılık gelen bir qqq girişi de eklenmelidir; yapmayan revizyonlar belgelendirme eklenene kadar "V-1" olarak işaretlenir.

qqq dosyalarındaki belgeler, yalnızca yeni mesaj eklerken veya mevcut bir İngilizce mesajı belge değişikliği gerektiren bir şekilde değiştirirken, örneğin parametre ekleme veya kaldırma gibi doğrudan düzenlenmelidir. Diğer durumlarda, belgeler genellikle translatewiki'de düzenlenmelidir. Her belgelendirme dizesine https://translatewiki.net/wiki/MediaWiki:mesaj-anahtarı/qqq adresinden bir çeviri gibi erişilebilir. Bu düzenlemeler çevirilerle birlikte kaynak depolara aktarılacaktır.

Belgelerde bulunması gereken yararlı bilgiler şunları içerir:

  1. Mesaj işleme (ayrıştırma, kaçma, düz metin).
  2. Örnek değerlere sahip parametrelerin türü.
  3. Mesajın kullanıldığı yerler (sayfalar, kullanıcı arayüzünde ki konumlar).
  4. Mesajın kullanıldığı yerde nasıl kullanıldığı (sayfa başlığı, düğme metni, vb.).
  5. Bu mesajla birlikte başka hangi mesajların kullanıldığı veya bu mesajın hangi mesajlarla ilgili olduğu.
  6. Mesaj bağlamda görüldüğünde anlaşılabilen, ancak mesaj tek başına görüntülendiğinde anlaşılamayan her şey (tercüme edilirken olduğu gibi).
  7. Varsa, dilbilgisi ile ilgili notlar. Örneğin, İngilizce'de "open" hem bir fiil hem de bir sıfat olabilir. Diğer birçok dilde kelimeler farklıdır ve bunları belge olmadan nasıl tercüme edileceğini tahmin etmek imkansızdır.
  8. "disabled", "open" veya "blocked" gibi şeyleri tanımlayan sıfatlar, her zaman neyi tanımladıklarını söylemelidir. Birçok dilde sıfatların tanımladıkları ismin cinsiyeti olmalıdır. Farklı şeylerin farklı sıfatlara ihtiyacı da olabilir.
  9. İletinin özel bir özelliği varsa, örneğin, bir sayfa adı ise veya doğrudan bir çeviri olmaması, ancak kültüre veya projeye uyarlanması gerekiyorsa.
  10. Mesajın başka bir mesajın yanında, örneğin bir listede veya menüde görünüp görünmediği. Kelimelerin ifadeleri veya gramer özellikleri muhtemelen yakındaki mesajlara benzer olmalıdır. Ayrıca, listedeki öğelerin listenin başlığıyla düzgün bir şekilde ilişkili olması gerekebilir.
  11. İletinin, genel ad alanı adları, URL'ler veya etiketler gibi çevrilmesi gereken bölümleri.
  12. Potansiyel olarak belirsiz kelimelerin açıklamaları, örneğin "CTA" gibi kısaltmalar veya "template", "suppress" veya "stub" gibi belirli jargonlar. (Bu tür kelimeleri ilk etapta önlemek en iyisidir!)
  13. Ekran görüntüleri çok faydalıdır. Kırpmayın, mesajın göründüğü tam ekran görüntüsü tam bir bağlam sağlar ve birkaç mesajda tekrar kullanılabilir.

Birkaç ipucu daha:

  • Çok, çok sık çevirmenlerin yazılımı gerçekten kullanmadan mesajları çevirdiğini unutmayın.
  • Çoğu zaman, çevirmenlerin ne modülünüz ne de içindeki diğer mesajlar için herhangi bir bağlam bilgisi yoktur.
  • Çoğu durumda tek başına yeniden ifade edilen bir mesaj işe yaramaz.
  • Tasarımcıların jargonunu "nav" veya "comps" gibi kullanmayın.
  • Modülünüzde kullanılan teknik terimlerin bir terim yazmayı düşünün. Bunu yaparsanız, mesajlardan ona bağlayın.

{{msg-mw|message key}} kullanarak diğer iletilere bağlanabilirsiniz. Lütfen mesajların bir kısmı başka mesajlardan geliyorsa (bundan kaçınılamıyorsa) veya bazı mesajlar birlikte veya aynı bağlamda gösteriliyorsa yapın.

translatewiki.net, belgelendirme için bazı varsayılan şablonlar sağlar:

  • {{doc-action|[...]}} için action- mesajları
  • {{doc-right|[...]}} için right- mesajları
  • {{doc-group|[...]|[...]}} kullanıcı grupları etrafındaki mesajlar için (group, member, page, js ve css)
  • {{doc-accesskey|[...]}} için accesskey- mesajları

Daha fazla bilgi için şablon sayfalarına bakın.

Uluslararasılaşma ipuçları

Çevirmenler, belgelendirmede yanı sıra, çalışmalarını daha kolay ve daha verimli hale getirmek ve tüm diller için gerçek ve iyi bir yerelleştirmeye izin vermek için bazı ipuçlarını dikkate almayı istemektedir. Yalnızca İngilizce mesaj ekleseniz veya düzenleseniz bile, tüm dillerin ihtiyaçlarının farkında olunmalıdır. Her mesaj 300'den fazla dile çevrilmiştir ve bu mümkün olan en iyi şekilde yapılmalıdır. Bu ipuçlarının doğru uygulanması, daha iyi İngilizce mesajlar yazmanıza da yardımcı olacaktır.

Bunlar, i18n ile ilgili deneyimli ve bilgili kişilerin yardımını bulabileceğiniz ana yerler:

Lütfen orada sorun!

Mesaj parametrelerini ve anahtarları uygun şekilde kullanın

Bu, mesajlarınız için doğru bir ifadenin önkoşuludur.

Mesajın yeniden kullanılmasını önle

Çevirmenler mesajın yeniden kullanılmasını engelliyor. Kodun kopyalanması ve çoğaltılması genellikle kötü bir uygulamadır, ancak sistem mesajlarında sıklıkla gereklidir. İki kavram İngilizce aynı sözcükle ifade edilebilse de, bu her dilde aynı sözcükle ifade edilebilecekleri anlamına gelmez. "OK" iyi bir örnektir: İngilizce'de genel bir düğme etiketi için kullanılır, ancak bazı dillerde düğmeyle gerçekleştirilecek işlemle ilgili bir düğme etiketi kullanmayı tercih ederler. Başka bir örnek pratikte herhangi bir sıfattır: birçok dilde cinsiyete göre "çoklu" gibi bir kelime değişir, bu yüzden onu birkaç farklı şeyi tanımlamak için tekrar kullanamazsınız ve birkaç ayrı mesaj oluşturmanız gerekir.

Birden fazla özdeş mesaj ekliyorsanız, lütfen bağlamlarındaki farklılıkları açıklamak için mesaj belgesini ekleyin. Çevirmenler için ekstra çalışma konusunda endişelenmeyin. Çeviri belleği, gerektiğinde farklı çevirilere sahip olma esnekliğini korurken bu konuda çok yardımcı olur.

Parçalanmış veya 'patchwork' mesajlardan kaçının

Diller farklı kelime sıralarına ve karmaşık dilbilgisel ve sözdizimsel kurallara sahiptir. "Lego" mesajlarını çevirmek çok zordur, yani birden fazla metin parçasından oluşan mesajlar, muhtemelen bazı dolaylı mesajlarla ("dize birleştirme" olarak da adlandırılır).

Her mesajı eksiksiz bir cümle haline getirmek daha iyidir. Gerekirse, birkaç cümle genellikle bir metin bloğunda çok daha kolay bir şekilde birleştirilebilir. Bir mesajda birden fazla dizeyi birleştirmek istediğinizde, çevirmenler çeviri yaparken kendi dilleri için doğru şekilde sırayla verebildiğinden, bunları parametre olarak iletin.

Birbirinden alıntı yapan mesajlar

Kuralın bir istisnası, birbirine atıfta bulunan mesajlar olabilir: '"{{int:adı}}" etiketli alana orijinal yazarın adını girin ve "{{int:proceed}}" düğmesine tıklayın". Bu, bir yazılım geliştiricisi veya viki operatörü daha sonra "adı" veya "işlendi" mesajlarını değiştirdiğinde mesajı tutarlı hale getirir. İnt-hack olmadan, geliştiriciler ve operatörler, değiştirilmeleri gerektiğinde ayarlanması gereken tüm ilgili mesajların farkında olmalıdırlar.

Belirli projelere özgü terim ve şablonları kullanmayın

MediaWiki, Wikimedia hareketi içinde ve dışında çok çeşitli insanlar tarafından kullanılır. Başlangıçta bir ansiklopedi için yapılmış olmasına rağmen, şimdi çeşitli içerik türleri için kullanılmaktadır. Bu nedenle, genel terimleri kullanın. Örneğin, "madde" gibi terimlerden kaçının ve geliştirdiğiniz özelliğin yalnızca sayfaların "madde" olarak adlandırıldığı bir sitede kullanılacağından kesinlikle emin olmadığınız sürece bunun yerine "sayfa" kullanın. İngilizce Vikipedi topluluk sayfasının adı olan "village pump" kullanmayın ve bunun yerine "community discussion page" gibi genel bir terim kullanmayın.

Tüm vikilerde belirli bir şablon bulunduğunu varsaymayın. Şablonlar viki için yereldir. Bu hem kaynak mesajlar hem de çevirileri için geçerlidir. Mesajlar şablon kullanıyorsa, yalnızca özelliğin dağıtıldığı her vikide bir şablon oluşturulduğunda çalışır. Mesajlardaki şablonları tamamen kullanmaktan kaçınmak en iyisidir. Bunları gerçekten kullanmanız gerekiyorsa, bunu mesaj belgelerinde ve uzantı kurulum talimatlarında açıkça belirtmeniz gerekir.

Cümlelerin tarihlerinden ayrı zamanlar

Bazı diller, bir cümledeki dilbilgisel olarak diğer kelimelere bağlı olan bir tarih ve saat arasına bir şey eklemelidir. Böylece tarih/saati birlikte kullanamazlar. Diğerleri kombinasyonu uygun bulabilir, bu nedenle bu gibi durumlarda üç parametre değeri (tarih/saat, tarih, saat) sağlamak genellikle en iyi seçimdir ve her bir çeviride gerektiği gibi ilk ya da son ikisini kullanılmadan bırakır.

Mesajlarda {{SITENAME}} kullanmaktan kaçının

{{SITENAME}} çeşitli dezavantajları vardır. Herhangi bir şey olabilir (kısaltma, kelime, kısa ifade, vb.) ve dile bağlı olarak, her bir olayda {{GRAMMAR}} kullanılmasını gerektirebilir. Ne olursa olsun, {{SITENAME}} olan her iletinin, kodunuzun yüklü olduğu her yeni viki için çoğu wiki dilinde incelenmesi gerekir. Çoğu durumda, bir dil için genel bir GRAMMAR yapılandırması olmadığında, viki operatörleri {{GRAMMAR}} ve {{SITENAME}} almak için PHP kodu eklemeli veya değiştirmelidir. Bu, hem aksi hem de daha fazla beceri ve daha fazla anlayış gerektirir. "Bu viki" gibi genel kaynaklarla sahip olmak daha uygundur. Bu, kurulumların yerel olarak {{SITENAME}} kullanmak için bu iletileri değiştirmesini engellemez, ancak en azından yapmak zorunda değildir ve ileti uyarlamasını erteleyebilir viki zaten çalışıyor ve kullanılıyor.

Görsel düzen ve konumlara kaynaklardan kaçının

Burada ortaya çıkan şey görünümlere bağlıdır. Çoğu zaman soldan sağa yazılan dillerin ekran düzenleri, sağdan sola yazılan diller için kullanılanlara kıyasla yansır, ancak her zaman değil ve bazı diller ve vikiler için tamamen değil. Elde taşınır cihazlar, dar pencereler ve benzerleri, daha büyük ekranlarda yan yana görünen blokların altında görünebilir. Site ve kullanıcı tarafından yazılan JavaScript betikleri ve küçük araçları, parçaları öngörülemeyen şekillerde saklayabildiğinden ve yapabildiğinden, gizlediğinden, gerçek düzeni bilmenin güvenilir bir yolu yoktur.

Kullanıcı arabirimi dili sayfanın içerik dili olmayabilir ve düzen, koşullara bağlı olarak ikisinin bir karışımı olabileceğinden, düzen bilgilerini içerik dillerine bağlamak yanlıştır. Akustik ekran okuyucular ve diğer yardımcı cihazlar gibi görsel olmayan kullanıcı aracılarının görsel yerleşim kavramı bile yoktur. Bu nedenle, anlamsal yerleşim terimleri hala kullanılabilmesine rağmen, vakaların çoğunda görsel yerleşim konumlarına kaynaklamamalısınız ("formdaki önceki adımlar", "vb.").

MediaWiki, arayüzün geçerli yönlülüğüne bağlı olarak farklı mesajların veya mesaj parçalarının gösterilmesini desteklemez (T30997 sayfasına bakın).

Doğu ve Kuzey Asya yukarıdan aşağıya yazma için [2] tarayıcısı ve MediaWiki desteği, ekran düzenlerini daha da tahmin edilemez hale getirecek. en az sekiz olası düzen (sol/sağ başlangıç konumu, üst/alt başlangıç konumu ve hangisi önce gerçekleşir).

Ekran renklerine kaynak vermekten kaçının

Bir şeyin oluşturulduğu renk, kaplamalar, site ve kullanıcı tarafından yazılan JavaScript betikleri ve küçük araçları ve yerel kullanıcı aracısı erişilebilirlik veya teknolojik sınırlamalar nedeniyle fazla gezer gibi birçok faktöre bağlıdır. Akustik ekran okuyucular ve diğer yardımcı cihazlar gibi görsel olmayan kullanıcı aracılarının renk kavramı bile yoktur. Bu nedenle, ekran renklerine kaynaklamamalısınız. (Aynı nedenden ötürü, kullanıcıyı durumu bilgilendirmek için bir mekanizma olarak yalnızca renge güvenmemelisiniz.)

Her giriş alanından önce ve sonra mesaj öğeleri var

Bu önerilen bir kılavuzdur, MediaWiki geliştirmede standart haline gelmemiştir

İngilizce, iki nokta üst üste alanı boşluğu giriş alanı biçiminde bilgi isteminin etkin bir şekilde kullanılmasına izin verirken, diğer pek çok dil bunu yapmaz. İngilizcede bile "Distance (in metres): ___" yerine "Distance: ___ metres" kullanmak istersiniz. <textarea> öğelerini bir kenara bırakarak, "Distance: ___ metres" desenini izleyen her bir girdi alanını düşünmelisiniz. Yani:

  • 2nd biri İngilizce ve diğer bazı dillerde boş olsa bile iki mesaj verin veya
  • girişlerin $i parametreleri aracılığıyla yerleştirilmesine izin verin.

Mesajlarda çevrilmemiş HTML işaretlemesinden kaçının

<div>'ler, üstündeki veya altındaki cetveller ve benzeri gibi çeviri gerektirmeyen HTML biçimlendirmeleri genellikle iletilerin bir parçası olmamalıdır. Gereksiz yere çevirmenleri yükler, mesaj dosyası boyutunu artırır ve çeviri sürecinde yanlışlıkla değiştirilme veya atlanma riski taşırlar. Genel olarak, mümkünse mesajlarda ham HTML'den kaçının.

Mesajlar genellikle düşündüğünüzden daha uzundur!

Yabancı dil mesaj dosyalarını gözden geçirerek, neredeyse hiç Çince mesajlardan daha kısa, İngilizce olanlardan daha kısa ve genellikle İngilizce olanlardan daha uzun mesajlar bulursunuz.

Özellikle formlarda, giriş alanlarının önünde, İngilizce mesajlar kısa ve kısa olma eğilimindedir. Bu genellikle çevirilerde tutulmaz. Diller, İngilizce olarak mevcut teknik kelime dağarcığına sahip olmayabilir ve bazı kavramları açıklamak için birden fazla kelime hatta tam cümleler gerektirebilir. Örneğin, kısa bir İngilizce mesajı olan "TSV file:" bir dile tam anlamıyla çevrilmesi gerekebilir:

Lütfen buraya, her biri bir dizi bilgi alanı olarak düzenlenmiş, söz konusu bilgi alanlarının çitle çevrildiği ve aralarındaki çitlerin tek olduğu sıralı olarak düzenlenmiş bir dizi daktilo satırından oluşan bir bilgisayar verisi topluluğunu gösteren bir ad yazın. Bir daktilo şaryosunu her biri önceden tanımlanmış bir sonraki konuma kaydırır. İşte başlıyoruz: _____ (teşekkür ederiz)

Kuşkusuz, bu aşırı bir örnek, ama özelliği elde edersiniz. Bu cümleyi, her kelimenin kendine ait bir satırı kapladığı ve giriş alanının sonraki sütunda dikey olarak ortalandığı bir formdaki bir sütunda düşünün. :-(

Farklı şeyleri veya kavramları göstermek için çok yakın, benzer veya özdeş kelimeler kullanmaktan kaçının

Örneğin, sayfalarda, söz konusu sayfanın geçmiş sürümlerini içeren daha eski revizyonlar (belirli bir tarih, saat ve düzenleme) olabilir. Revizyon ve sürüm kelimeleri birbirinin yerine kullanılabilir. Sürümlendirilimiş sayfalar revize edildiğinde bir problem ortaya çıkar ve yani revize etme işleminden de bahsedilir. "Revizyon" kelimesinin iki eşanlamlısı farklı çevirilere sahip olduğunda bu ciddi bir sorun teşkil etmeyebilir. Ancak buna güvenmeyin. "Revizyon", "sürüm"'ün tamamen kullanılmasından kaçınmak, daha sonra yanlış yorumlanmasını önlemek için daha iyidir.

Temel kelimeler öngörülemeyen çağrışımlara sahip olabilir veya hiç mevcut olmayabilir

MediaWiki'de çok özel kullanımları nedeniyle çevrilmesi zor bazı kelimeler var. Bazıları hiç çevrilemez olabilir. Örneğin, birkaç dilde "bir şey kullanan biri" ile ilgili "kullanıcı" kelimesi yoktur. Benzer şekilde, Kölsch'de "ad alanı" ve "apartman" kelimeleri aynı kelimeyi tercüme eder. Kölsch'e bağlı kalarak, tek kelimeyle "destekçi ve katılımcı" derler, çünkü "kullanım"'a yapılan herhangi bir atıf "kötüye kullanım" anlamına da gelir. "Viki çiftliği" terimi, "viki ile dolu karar" olarak çevrilir, çünkü tek mahsullü bir çiftlik, dilde bir çelişki olacaktır ve anlaşılamayan, vb..

Çevrilmemiş kelimeler beklenmesi

Bu önerilen bir kılavuzdur, MediaWiki geliştirmede henüz standart hale gelmemiştir

İngilizce'de uygun adların, etiket adlarının, vb. ve bilgisayarların çevrilmemesi ve bunun yerine kredi kelimeleri veya yabancı kelimeler olarak alınması nadir değildir. İkinci durumda, özellikle titiz bazı çevirmenler, HTML işaretlemesiyle başka bir dile ait gibi kelimeleri işaretleyebilir, <span lang="en" xml:lang="en"></span> gibidir.

Açık güvenlik risklerine rağmen, ileti çıkışı işleyicinizin bu işaretlemeyi hareketsiz olarak geçmesini sağlamayı düşünebilirsiniz.

Açıklayıcı satır içi işaretlemeye izin verin

Bu önerilen bir kılavuzdur, MediaWiki geliştirmede henüz standart hale gelmemiştir

Bazen hedef dilde yeni başlayanlar tarafından hemen anlaşılamayan, ancak deneyimli bilgisayar kullanıcıları tarafından açıkça anlaşılabilen kısaltmalar, teknik terimler veya genellikle belirsiz kelimeler vardır. Yeni gelenleri mahsur bırakmadan uzun açıklamaların ekran karmaşasından kaçınmak için, çevirmenler fareyi üzerlerine getirdiğinizde tarayıcılar tarafından gösterilen <abbr> ek açıklamaları olarak açıklama eklemeyi seçebilirler.

Örneğin, görüntü dönüşüyle ilgili MediaWiki temel mesajı exif-orientation-8, bu da İngilizce'de yalnızca Fas Arapçası Döndürülmüş 90° CW ", Fas Arapçası şöyle çevrilmiştir:

mḍwwer 90° <abbr title="Ĝks (ṫ-ṫijah) Ĝaqarib s-Saĝa">ĜĜS</abbr>

şunu veriyor:

mḍwwer 90° ĜĜS

gerektiğinde "saat yönünün tersine" kısaltmasını açıklar.

Özgün ileti bunları kullanmasa bile, ileti çıktı işleyicinizin bu işaretlemeyi hareketsiz olarak geçmesini sağlamayı düşünebilirsiniz.

Gerektiğinde <code>, <var> ve <kbd> etiketlerini kullanın

Teknik parametreler, değerler veya klavye girişleri hakkında konuşurken <code>, <var> veya <kbd> HTML etiketlerini kullanarak bunları uygun şekilde işaretleyin. Böylece tipografik olarak normal metinden çıkarılırlar. Bu, okuyucular için anlamlarını açıklığa kavuşturarak karışıklık, hatalar ve yanlış gösterimlerden kaçınır. İleti işleyicinizin böyle bir işaretlemeye izin verdiğinden emin olun.

Semboller, iki nokta üst üste, köşeli ayraçlar, vb. mesajların parçalarıdır

Birçok sembol de yerelleştirilebilir. Bazı betiklerin Latin betiklerinden farklı türde parantezleri vardır. Bazı dillerde bir etiket veya giriş isteminden sonra iki nokta üst üste uygun olmayabilir. Bu sembollerin mesajlara dahil edilmesi daha iyi ve daha az Anglo merkezli çeviriler yapılmasına yardımcı olur ve kod karmaşasını da azaltır.

Örneğin, «Norveççe», »İsveççe», »Danca«, “Almanca” ve 「Japonca 」'da kullanılan farklı tırnak işareti kuralları vardır. [3]

Bazı metinleri yerelleştirilmiş parantezlere, köşeli parantezlere veya tırnak işaretlerine sarmanız gerekirse, parentheses ($1) veya brackets [$1] veya quotation-marks "$1" gibi mesajlar:

wfMessage( 'parentheses' )->rawParams( /* text to go inside parentheses */ )->escaped()
wfMessage( 'brackets' )->rawParams( /* text to go inside brackets */ )->escaped()
wfMessage( 'quotation-marks' )->rawParams( /* text to go inside quotation marks */ )->escaped()

Sembollerin ve noktalama işaretlerinin çeviriden sağ çıkmasını beklemeyin

Sağdan sola yazılan diller (İngilizcenin aksine) genellikle "sonraki" ve "önceki" bağlantılarla sunulan ok simgelerini değiştirir ve bir mesaj metnine göre yerleştirilmeleri de ters çevrilebilir veya edilmeyebilir. Üç nokta "vb." veya kelimelere çevrilebilir. Soru işaretleri, ünlem işaretleri, iki nokta üst üste işaretleri, bir cümlenin sonuna kadar, hiç değil veya iki kez yerleştirilir. Sonuç olarak, bunların tümünü her zaman iletilerinizin metnine ekleyin ve bunları asla programlı olarak eklemeye çalışmayın.

Tam durakları kullan

Normal cümleleri tam duraklarla sonlandırın. Bu genellikle bir çevirmenin farklı bir şekilde çevrilmesi gerekebilecek başlık veya liste öğesi olmadığını bilen tek göstergedir.

Bağlantı çengelleri

Vikimetin bağlantıları

Çengel bağlantıları birkaç teknik yolla mesajlara eklenebilir:

  1. vikimetin üzerinden: … [[bir viki sayfası|çengel]] …,
  2. vikimetin üzerinden: … [birkaç-url çengel] …, veya
  3. çengel metni MediaWiki ad alanındaki bir mesajdır. Bunu önle!

İkincisini çevirmenler için ele almak genellikle zor veya imkansızdır, buraya da parçalanmış veya 'patchwork' mesajlarından kaçının. "some-url" öğesinin boşluk içermediğinden emin olun.

Anlamlı bağlantı çengelleri kullanın

Sözlerinizi dikkat edin. Bağlantı bağlantıları, sayfaların arama motoru değerlendirmesinde önemli bir rol oynar. Hem bağlantılı kelimeler hem de hedef bağlantı. Çengelin hedef sayfayı iyi açıkladığından emin olun. Her zaman sıradan ve genel kelimelerden kaçının. Örneğin, "Buraya tıklayın" mutlak hareketsizdir,[4] çünkü hedef sayfalar neredeyse hiçbir zaman "buraya tıklayın" ile ilgili değildir. Bunu da bağlantıların etrafındaki cümlelere koymayın, çünkü "burada" tıklanacak yer değildi. Bunun yerine, bir kullanıcının bağlantıyı izlerken neye ulaşacağını söyleyen hassas eylem kelimeleri kullanın, örneğin "İsterseniz bir dosya yükleyin."

Ayrıca bakınız: Kullanıcıların nereye gittiklerini tahmin etmelerine yardımcı olun ve gizemli et gezintisi veKullanmamamızın temel nedenleri bağlantı metni olarak buraya tıklayın.

Jargon ve argodan kaçının

Mesajlarda geliştirici ve ileri düzey kullanıcı jargonundan kaçının. Mümkün olduğunca basit bir dil kullanmaya çalışın. "Başarılı", "başarılı", "başarısız", "hata" meydana geldiğinde, kullanıcıya bir şey olup olmadığını veya gerçekleşmediğini bildirmek istediğinizde hata yapmaktan kaçının. Bu, geliştiricilerin her şeyi doğru veya yanlış olarak görmesinden kaynaklanır, ancak kullanıcılar genellikle gerçekte ne olup olmadığını ve bu konuda ne yapmaları gerektiğini (eğer varsa) bilmek ister. Yani:

  • "Dosya başarıyla yeniden adlandırıldı" -> "Dosya yeniden adlandırıldı"
  • "Dosya yeniden adlandırılamadı" -> "Bu ada sahip bir dosya zaten var. Lütfen farklı bir ad seçin."

Satır başına bir cümle

Bu önerilen bir kılavuzdur, MediaWiki geliştirmede henüz standart hale gelmemiştir

Bir satırda bir cümle veya benzeri bir blok bulundurmaya çalışın. Bu, farklı dillerdeki mesajların karşılaştırılmasına yardımcı olur ve çeviri belleklerinde bölümleme ve hizalama için bir ipucu olarak kullanılabilir.

Boşluk ve satır sonlarının farkında olun

MediaWiki'nin yerelleştirilmiş iletileri genellikle vikide canlı vikilerdeki wiki işlemleri veya translatewiki.net üzerindeki çevirmenler tarafından düzenlenir. Beyaz alanın, özellikle mesajınızın başında veya sonunda, editörleri nasıl etkileyeceğinin farkında olmalısınız:

  • 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.

Mesajınızı aktif metinle başlatın ve bitirin; etrafında bir satırsonu veya paragraf sonu gerekiyorsa, çevre kodunuz döndürülen metne eklemekle ilgilenmelidir.

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:[5]

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.

Standart büyük harf kullanımı

Büyük harf kullanımı çevirmenlere tek tek kelimeler, liste veya menü öğeleri, kelime öbekleri veya tam cümleler gibi çeviri yaptıklarına dair ipuçları verir. Doğru (standart) büyük harf kullanımı, arama motorlarının sayfalarınızı değerlendirmesinde de rol oynayabilir. MediaWiki arayüz mesajlarında cümle satırı (Hızlı kahverengi tilki tembel köpeğin üstünden atlar) kullanır.

Birçok yazı sisteminin büyük harfleri olmadığını ve bunlardan bazılarının İngilizceden farklı kullandığını unutmayın. Bu nedenle, vurgu için ALL-CAPS kullanmayın. Aşağıdakilere göre CSS veya HTML <em> veya <strong> kullanın:

Vurgu

Normal metinde vurgu kalın yazı tipi veya eğik gibi metin mesajlarının bir parçası olmalıdır. Vurgu üzerine yerel sözleşmeler genellikle değişir, özellikle bazı Asya senaryolarının kendi metinleri vardır. Çevirmenler, hedef dillerine ve alanlarına vurgu yapmalıdır. Dil veya betik başına işaretlemeye izin vermek için kullanıcı arayüzünüzde "<em>" ve "<strong>" kullanmayı deneyin.

İngilizce ve Avrupa stillerinin modern ekran düzenlerinde vurgu daha az kullanılır. Nasıl tercüme edileceğine dair önemli ipuçları verebileceğinden, mesaj belgeleri cihazınıza yine de iletin. Çevirmenler hakkında bilgi sahibi olmak koşuluyla, vurgu diğer kültürel bağlamlarda uygun şekilde kullanılabilir ve kullanılmalıdır.

Yerelleştirme sistemine genel bakış

Yerelleştirmenin güncellenmesi

Yukarıda belirtildiği gibi, translatewiki.net üzerinde çeviri yapılır ve diğer sistemler önerilmez. Yerelleştirme güncelleme iş akışına üst düzey bir genel bakış:

  • Geliştiriciler sistem mesajları ekler veya değiştirir .
  • Kullanıcılar translatewiki.net üzerinde yeni veya değiştirilmiş sistem mesajlarını çevirir.
  • Otomatik araçlar, bu iletileri dışa aktarır, hem çekirdek hem de uzantılar için eklenen veya güncellenen iletileri birleştirerek ileti dosyalarının yeni sürümlerini oluşturur ve bunları Git'e taahhüt eder.
  • Vikiler git deposundan güncellenmiş sistem mesajlarını alabilir.

LocalisationUpdate uzantısı sayesinde Wikimedia projeleri ve diğer tüm vikiler yerelleştirme çalışmalarından hemen ve otomatik olarak yararlanabilir[6] Bu, en son İngilizce mesajları üretimdeki İngilizce mesajlarla karşılaştırır. Aynı değilse, üretim çevirileri güncellenir ve kullanıcıların kullanımına sunulur.

Çeviriler sürüm kontrol sistemine girdikten sonra, Wikimedia Vakfı, uzantı deposunun bir kasasını veya klonunu güncelleyen günlük bir işe sahiptir. Bu ilk olarak Eylül 2009'da kuruldu.[7]

Translatewiki.net'teki değişiklikler de koda günlük olarak aktarıldığından, bir iletideki her değişikliğin, el ile müdahale veya travmatik kod güncellemesi olmadan birkaç gün içinde mevcut tüm MediaWiki kurulumlarına potansiyel olarak uygulanabileceği anlamına gelir.

Gördüğünüz gibi bu çok adımlı bir süreçtir. Zamanla, birçok şeyin yanlış gidebileceğini öğrendik. İşlemin bozulduğunu düşünüyorsanız, lütfen Destek sayfamızda bildirdiğinizden emin olun veya Phabricator'da yeni bir hata oluşturun. Her zaman kesin bir gözlem tanımladığınızdan emin olun.

Destek isteklerini işleme

Ana sayfa: translatewiki:Translating:Localisation for developers.

Çevirmenlerin oluşturduğunuz bazı mesajlar hakkında soruları olabilir. Translatewiki.net, destek talebi sistemi sağlar. Çevirmenlere daha iyi tercüme edilebilmeleri için proje sahibine mesajlarla ilgili soru sorma olanağı sağlar. Bu kısa eğitici, translatewiki.net destek taleplerini ele alma iş akışında size yol gösterir.

Mesaj kaynakları

Kod şu kaynaklardan sistem mesajları arar:

  • MediaWiki ad alanı. Bu, standart iletiler sığmadığında veya istenmediğinde vikilerin tüm iletilerini benimsemelerini veya geçersiz kılmalarını sağlar (#Eski yerel çeviri sistemi bölümüne bakın).
    • MediaWiki:Mesaj anahtarı varsayılan mesajdır,
    • MediaWiki:Mesaj anahtarı/dil kodu kullanıcı vikinin varsayılan dilinden farklı bir dil seçtiğinde kullanılacak mesajdır.
  • Mesaj dosyalarından:
    • Çekirdek MediaWiki'nin kendisi ve şu anda en çok korunan uzantılar her dil için zyx.json adlı bir dosya kullanır, burada zyx dilin dil kodudur.
    • Bazı eski uzantılar, genellikle MyExtensionName.i18n.php olarak adlandırılan tüm dillerdeki tüm iletileri tutan birleştirilmiş bir ileti dosyası kullanır.
    • Birçok Wikimedia Vakfı vikisi WikimediaMessages uzantısından bazı iletilere erişerek WMF vikilerinde ki iletileri her MediaWiki kurulumuna dayatmadan standart hale getirmelerini sağlar.
    • Birkaç uzantı başka teknikler kullanır.

Önbellek

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

MediaWiki, kodu anlamak için biraz daha zor hale getiren yerleşik birçok önbellekleme mekanizmasına sahiptir. 1.16'dan beri iletileri .cdb dosyada veya veritabanında önbelleğe alan yeni bir önbellek sistemi vardır. Özelleştirilmiş iletiler, yapılandırmaya bağlı olarak dosya sisteminde ve memcached (veya alternatif) olarak önbelleğe alınır.

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

Önbellek depolama yeri $wgLocalisationCacheConf
'store' => 'db'
 
'store' => 'detect'
(varsayılan)
'store' => 'files'
 
'store' => 'array'
(MW ≥ 1,26'dan beri deneysel)
$wgCacheDirectory = false
(default)
l10n cache table l10n cache table hata (tanımlanmamış yol) hata (tanımlanmamış yol)
= path l10n cache table yerel dosya sistemi (CDB) yerel dosya sistemi (CDB) yerel dosya sistemi (PHP dizisi)
MediaWiki sürümü:
1.27.0 – 1.27.2

Gerrit #Id3e2d2

MediaWiki 1.27.0 ve 1.27.1'de, otomatik algılama dosya arka ucunu destekleyecek şekilde değiştirildi. 'store' => 'detect' (varsayılan) durumunda, dosya arka ucu $wgCacheDirectory yoluyla kullanılır. Bu değer ayarlanmazsa (varsayılan değerdir), 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 makinelerdeki dosyaların ç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 izlemesi

Önbellek katmanlarını daha iyi görsel olarak tasvir etmek için, burada bir mesaj alınırken hangi yöntemlerin çağrıldığını gösteren bir işlev geri izlemesi bulunur. Her katmanın açıklaması için aşağıdaki bölümlere bakın.

  • Message::fetchMessage()
  • MessageCache::get()
  • Language::getMessage()
  • LocalisationCache::getSubitem()
  • LCStore::get()

MessageCache

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

  • Veritabanındaki mesaj geçersiz kılmalarını kontrol etme
  • Aşırı basmış mesajları memcached veya $wgMessageCacheType olarak ayarlanmış şekilde önbelleğe alma
  • Dil yedeği dizisinin geri kalanının çözülmesi

Son madde önemlidir. Dil yedekleri , orijinalin sorulması gereken bir mesaj yoksa MediaWiki'nin başka bir dile düşmesine izin verir. Bir sonraki bölümde belirtildiği gibi, dil geri dönüş çözünürlüğünün çoğu daha düşük bir düzeyde gerçekleşir. Ancak, veritabanında yalnızca MessageCache katmanı geçersiz kılınmış iletiler olup olmadığını denetler. Böylece, veritabanından geçersiz kılınan mesajların yedek zincire entegre edilmesi burada yapılır. Veritabanını kullanmazsanız, tüm katman devre dışı bırakılabilir.

LocalisationCache

LocalisationCache.php sayfasına bakın

LCStore

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 önbellekleme için kullanılan BagOStuff sınıfı gibi, bir dizi farklı önbellek türü vardır ($wgLocalisationCacheConf kullanılarak yapılandırılmış):

  • "db" (varsayılan) - Veritabanındaki mesajları önbelleğe alır
  • "dosya" ($wgCacheDirectory ayarlanmışsa varsayılan) - Yerel bir dosyadaki mesajları önbelleğe almak için CDB kullanır
  • "accel" - Verileri saklamak için APC veya başka bir opcode önbellek kullanır

"Dosya" seçeneği Wikimedia Vakfı tarafından kullanılır ve veritabanına gitmekten daha hızlı ve APC önbelleğinden daha güvenilir olması nedeniyle önerilir, özellikle APC PHP 5.5 veya sonraki sürümleri ile uyumlu değildir.

Lisans

Dilde yapılan tüm düzenlemelerin MediaWiki yazılımına dahil edilmesi için GNU Genel Kamu Lisansı koşulları altında lisanslanması gerekir. Diğer uzantılar farklı lisanslar altında olabilir.

Eski yerel çeviri sistemi

MediaWiki 1.3.0 ile MediaWiki'yi yerelleştirmek için yeni bir sistem kuruldu. Kullanıcılar dil dosyasını düzenlemek ve geliştiricilerden değişikliği uygulamalarını istemek yerine, arayüz dizelerini doğrudan vikilerinden düzenleyebilirler. Bu, Ağustos 2005 itibariyle kullanılan sistemdir. İnsanlar çevirmek istedikleri mesajı Special:AllMessages içinde bulabilir ve ardından MediaWiki: ad alanında ilgili dizeyi düzenleyebilir. Düzenlendikten sonra bu değişiklikler yayınlanır. Artık güncelleme istemeye ve geliştiricilerin dosyayı kontrol etmesini ve güncellemesini beklemeye gerek kalmadı.

Sistem Vikipedi projeleri için mükemmeldir; ancak bir yan etkisi, yazılımla birlikte gönderilen MediaWiki dil dosyalarının artık güncel olmaması ve geliştiricilerin meta dosyaları gerçek dil dosyalarıyla senkronize tutmaları daha zordur.

Varsayılan dil dosyaları yeterince çevrilmiş materyal sağlamadığından iki sorunla karşı karşıyayız:

  1. Uzun süredir güncellenmeyen bir dilde oluşturulan yeni Wikimedia projelerinin arayüzün tamamen yeniden çevrilmesi gerekiyor.
  2. MediaWiki'nin diğer kullanıcıları (aynı dilde Wikimedia projeleri dahil) çevrilmemiş arayüzlerle kalmıştır. Bu, özellikle çok fazla çevirmeni olmayan küçük diller için talihsiz bir durumdur.

Bu artık büyük bir mesele değil, çünkü translatewiki.net belirgin bir şekilde ilan edilir ve neredeyse tüm çeviriler tarafından kullanılır. Yerel çeviriler bazen gerçekleşir, ancak kesinlikle önerilmezler. Yerel iletilerin çoğunlukla silinmesi, ilgili çevirilerin translatewiki.net'e taşınması ve vikiye yalnızca siteye özgü özelleştirmenin bırakılması gerekir; özellikle eski projelerde büyük bir birikim var, bu araç temizlemeye yardımcı olur.

Mesajları merkezi ve senkronize halde tutma

İngilizce mesajlar çok nadiren kodla senkronize değil. Deneyimler, tüm İngilizce mesajları aynı yerde bulundurmanın uygun olduğunu göstermiştir. İngilizce metnin gözden geçirilmesi, tıpkı çeviri gibi koda kaynaklamadan yapılabilir. Programcılar bazen varsayılan metin için çok zayıf seçimler yaparlar.

İlave

Ne yerelleştirilebilir

MediaWiki'de o kadar çok şey yerelleştirilebilir ki bunların tümü doğrudan translatewiki.net üzerinde mevcut değildir: translatewiki:Translating:MediaWiki sayfasına bakın. Bir şey kodda geliştirici müdahalesini gerektiriyorsa, Phabricator'da talep edersiniz veya Destek'de isteyebilir ve tam olarak ne yapacağını bilin.

Dilin yedeğini gösteren grafik
  • Yedek dilleri (başka bir deyişle, İngilizce olmayan varsayılan geri dönüş yerine, bir çeviri olmadığında kullanılacak daha yakın ilişkili diller)
  • Yönlülük (soldan sağa veya sağdan sola, RTL)
  • RTL'ye bağlı olarak yön işareti karakteri
  • RTL'ye bağlı ok
  • Eğik kullanılamayan diller
  • Sayı biçimlendirme (virgül-ify, yani basamak ayırıcı ekleme veya ekleme; basamak dönüştürme; basamak dönüştürme)[8]
  • Kes (çok baytlı)
  • Etkilenen diller için dilbilgisi dönüşümleri
  • Çoğul dönüşümleri
  • Bitiş sürelerini biçimlendirme[açıklama gerekli]
  • Farklar için bölümleme (Çince)
  • Dil varyantlarına dönüştürme (farklı ortografiler veya betikleri arasında)
  • Dile özgü kullanıcı tercihi seçenekleri
  • Bağlantı rotaları ve bağlantı öneki, yani: [[foo]]bar Bunlar, bir viki bağlantısının kapanış/açılış parantezlerinden önce/sonra yapıştırılabilen, ancak ekranda bağlantının bir parçası gibi (yani tıklanabilir ve aynı renkte) görüntülenen harflerdir. Varsayılan olarak bağlantı izi "a-z"'dir; diliniz tarafından kullanılan aksanlı veya Latince olmayan harfleri listeye eklemek isteyebilirsiniz.
  • Dil kodu (tercihen, IANA veri tabanı ile birlikte, şu anda RFC 5646 olan standart BCP 47'deki en son RFC'ye göre kullanılır. Kullanımdan kaldırılmış, büyük baba ve özel kullanım kodlarından kaçının: standart ISO 639'da ne anlama geldiğine bakın ve ISO 639-5'teki koleksiyonlara/dil ailelerine ve BCP için IANA veritabanına aktarılmayan ISO 639 kodlarına atanan 47 kodlardan kaçının)
  • Vurgulama türü
  • Cite uzantısının dil başına özel bir sayfa dosyası vardır, zyx dil kodu için cite_text-zyx.

Düzgün işlevsellik:

  • I18N sprintfDate
  • Romen rakamıyla biçimlendirme

Ad alanı adı takma adları

Ad alanı adı diğer adları, varolan ad alanlarını ele almak için kullanılabilecek ek adlardır. Nadiren ihtiyaç duyulurlar, ancak oldukları zaman onlara sahip olmamaları, genellikle mevcut vikilerde tahribat yaratır.

Ad alanı adı takma adlarına ihtiyacınız vardır:

  1. Bir dilin varyantları varsa ve bu varyantlar bazı ad alanlarını farklı şekilde hecelediğinde ve editörlerin varyant yazımlarını kullanabilmesini istiyorsanız. Varyantlar kullanıcı tercihlerinde seçilebilir. Kullanıcılar vikimetin dışında her zaman seçili varyantını görürler, ancak düzenleme veya arama yaparken isteğe bağlı bir varyant kullanılabilir.
  2. Varolan bir vikinin dili, geri dönüş dil(ler)i veya yerelleştirmesi değiştirildiğinde, bazı ad alanı adları değiştirilir. Eski ad alanı adlarını kullanan vikide zaten var olan bağlantıları kesmemek için, değiştirilen önceki ad alanı adlarının her birini, değişiklik yapıldığında veya daha önce, ad alanı ad diğer adlarına eklemeniz gerekir.

Genel İngilizce ad alanı adları her zaman tüm yerelleştirmelerde ad alanı adı takma adları olarak bulunur, bu nedenle bunları eklemenize gerek yoktur.

Takma adlar translatewiki.net üzerinde çevrilemez, ancak orada veya bugzilla'da talep edilebilir: translatewiki:Translating:MediaWiki#Namespace name aliases sayfasına bakın.

Bölgesel ayarlar

Bazı dilsel ortamlar coğrafyalara göre farklılık gösterir; MediaWiki'nin bölge kavramı yoktur, yalnızca dilleri ve dil varyantları vardır.

Bu ayarların dilin varsayılan ayarı olarak bir kez ayarlanması gerekir, ardından tek tek vikiler bunları yapılandırmalarında istedikleri gibi değiştirebilir.

Saat ve tarih biçimleri

Saat ve tarihler özel sayfalarda ve benzer şekilde gösterilir. İmzalar için varsayılan saat ve tarih biçimi kullanılır, bu nedenle söz konusu dilin kullanıcıları için en çok kullanılan ve en çok anlaşılan biçim olmalıdır. Ayrıca anonim kullanıcılar varsayılan biçimi görür. Kayıtlı kullanıcılar tercihlerine göre diğer formatları seçebilirler.

PHP'nin time() biçimini biliyorsanız, biçimleri kendiniz oluşturmayı deneyebilirsiniz. MediaWiki, bazı ekstra özelliklere sahip benzer bir biçim dizesi kullanır. Önceki cümleyi anlamadıysanız sorun değil. Geliştiriciler için bir örnek liste sağlayabilirsiniz.

Eski düzenleme penceresi araç çubuğu düğmeleri

Çok daha yaygın olan WikiEditor benzer özelliklere sahip "gelişmiş araç çubuğu" ile karıştırılmamalıdır.

Bir viki sayfası düzenlenirken ve bir kullanıcı Special:Preferences sayfasında izin vermişse, metin alanının üzerinde düzenleyebileceği bir dizi simge görüntülenir. Araç çubuğu düğmeleri [1] ayarlanabilir, ancak bunun için mesaj yoktur. İhtiyacımız olan, uygun boyutlu bir .png dosya kümesidir. Çok sayıda örnek commons:Category:ButtonToolbar sayfada bulunabilir ve başlamak için bir boş düğme görüntüsü vardır.

Bu yalnızca diliniz MediaWiki'de zaten etkin olduğunda yapılabilir, bu da genellikle mesajlarının iyi bir bölümünün çevrildiği anlamına gelir; Aksi takdirde beklemeniz ve daha sonra yaptırmanız gerekir.

Eksik

Bu bölüm i18n sistemindeki uzantılarla ilgili değişiklikler konusunda eksiktir. Biçim standartlaştırıldı ve mesajlar otomatik olarak yüklendi.

#Mesaj kaynakları bölüme bakın.

Harici araçların uluslararasılaştırılması

Toolforge içinde bulunanlar gibi harici araçların içselleştirilmesini ve yerelleştirilmesini kolaylaştırmak için Banana kitaplığını kullanabilirsiniz. Bazı sihirli kelimeleri kullanmanıza izin verir:

  • {{PLURAL:$1|pluralform1|pluralform2|...}}
  • {{GENDER:$2|his|her}}
  • {{grammar:genitive|$1}}
  • {{bidi:$1}}.

Kaynakça

  1. https://gerrit.wikimedia.org/r/211677
  2. http://dev.w3.org/csswg/css3-writing-modes/
  3. w:Quotation_mark#Summary_table
  4. http://www.w3.org/QA/Tips/noClickHere
  5. https://github.com/wikimedia/mediawiki/blob/REL1_34/includes/cache/MessageCache.php#L887
  6. Yerelleştirme önbelleği aracılığıyla çalışan ve örneğin Wikimedia projelerinde günlük olarak güncellenir; özel uygulama hakkında ayrıca teknik ayrıntılara bakınız.
  7. LocalisationUpdate güncellemesi; LocalisationUpdate yayında.
  8. Bunlar, ilgili language/classes/LanguageXx.php veya language/messages/MessagesXx.php dosyalarında dile göre yapılandırılır.

Ayrıca bakınız