Directionality support/tr

Farklı yönler (soldan sağa, sağdan sola) desteği çok dilli yazılımlar için önemli bir husustur. beri, destek önemli ölçüde geliştirildi.

Bu sayfa, sağdan sola arabirim ve genel olarak farklı yönlülük ile uyumlu bir özellik veya uzantı oluşturmak istiyorsanız, geliştiriciler ve wiki yöneticileri için bazı alakalı bilgiler ve yönergeler sağlar.



Kullanıcı düzeyinde ipuçları
Geliştiriciler için ayrıntılara ulaşmadan önce kullanıcılar için bazı genel ipuçları:


 * Çoğu tarayıcı, madde arama kutuları, viki sözdizimi düzenleme, düzenleme özeti vb. gibi düz metin düzenleme alanının yönünü değiştirmeyi destekler. Tarayıcılara ve işletim sistemlerine bağlı olarak, bu Ctrl-Shift (Windows'ta Chrome ve IE), Ctrl-Shift-X (Firefox), Option-Click-Change yönü (Mac) tarafından yapılır. Bu, sitenin normal yönünden farklı bir yönde yazmanıza yardımcı olacaktır.
 * Siteninkinden farklı bir yöne sahip bir dilde bir bölüm yazarken, uygun dil, dir ve sınıf niteliklerine sahip bir div etiketi ekleyin. Örneğin, Arapça Vikipedi'yi İngilizce bir bölüm yazarken, başında  ve sonunda  yazın.
 * Bir paragrafın içine sadece birkaç kelime yazarken, bunları uygun dil ve dir özelliklerine sahip bir etikete koyun. (Birçok vikide bunun için bir şablon vardır, örneğin  ).
 * Komşu bir kelimeden farklı yönlülükteki sayıları ayırmak için RLM veya LRM karakterlerini kullanın. Birçok vikide bunun için şablonlar vardır, örneğin İbranice Vikipedi'de, Arapça Vikipedi'de  , Farsça Vikipedi'de  , vb. Bir şablon kullanılabilir olduğunda, genellikle Unicode karakterinin kendisinin kullanılması tercih edilir.

RTL etiketini kullanarak, MediaWiki ile ilgili herhangi bir projede Phabricator'daki RTL işlemedeki hataları bildirebilirsiniz.

ResourceLoader
CSSJanus dahil ResourceLoader sayesinde, kullanıcı dili RTL olduğunda CSS otomatik olarak sağdan sola çevrilir. Bu, 1.18 bu yana varsayılan değerdir (önceki sürümlerde viki içerik diline bağlı). İçerik diline bağlı olması gereken nispeten az CSS vardır.


 * Dikkat: ResourceLoader haya ayıklama modu kullanırken, CSS üretim moduna kıyasla tutarsız bir şekilde görüntülenebilir. Geçici bir geçici çözüm olarak hata ayıklama kapalı RTL arabirimi olarak. (Sorun T29025 olarak takip ediliyor.)



Ne tür diller?
Ana madde:


 * $wgLang - kullanıcı dili (ve ilgili yön)
 * $wgContLang - site içerik dili (ve ilgili yön) -> burada LTR
 * Title->getPageLanguage - sayfa içerik dili (ve ilgili yön) -> varsayılan olarak site içerik diliyle aynı
 * Bazı varsayılan istisnalar vardır: aşağıya bakın
 * kanca ile uzantıları ayarlanabilir
 * Bu, İçindekiler'i (ve çok fazla alakalı olmasa da dilbilgisi gibi şeyler) bu dile ayarlar. Yalnızca bunu yapmak için parserOptions->setTargetLanguage kullanın
 * 1.17 ile uyumlu kalması gereken uzantılarda wfUILang kullanabilirsiniz, ancak bu 1.16 ve daha düşük sürümlerle uyumluluğu bozar. Bu, 1,18'de $wgLang ve daha yüksek, ancak 1,17'de $wgContLang (varsayılan olarak) döndürür.



Ne tür bir izlemeli?

 * Özel sayfalar varsayılan olarak kullanıcı dilini takip eder.
 * Kaynak kodu İngilizce olmalıdır (CSS/JS sayfaları varsayılan olarak İngilizce olarak ayarlanmıştır).
 * Çevrilmiş alt sayfaları olan sayfalar çevirinin dilini izlemelidir (ör. "Sayfa" wgContLang, "Sayfa/he" "he"'dir). Bu, MediaWiki ad alanı için varsayılan değerdir.
 * Giriş kutuları ve textareas varsayılan olarak içerik yönünü izler.
 * Farkı görüntülerken, kullanıcı dilini takip eder, ancak gerçek fark metni sayfa içerik dilinde bulunur.



Kaynak koduna ne eklemeliyim?

 * Özel sayfalarda kullanıcı dilinden farklı olan her şeyin bir  etiketi olmalıdır.
 * Örnek: viki içerik dilinde "recentchangestext" iletisini ekleyen SpecialRecentchanges->setTopText.
 * Özel ad alanlarındaki, varsayılan wiki içeriğinden farklı metin içeren her şeyin bir  etiketi de olmalıdır.
 * Fark metni sayfa içerik diliyle aynı değilse, $diff komutunu kullanın; burada $diff bir DifferenceEngine nesnesidir.



lang/dir özellikleri
HTML kullanmalısınız:

ancak bazen dinamik olarak oluşturulmuş öğelerde bu zordur ve CSS'ye geri dönebilirsiniz:



Viki içeriği
Bu bölüme göre düzenleme bölümü bağlantılarını ve ul/ol öğelerini kullanmak için  ve   sınıflarını kullanabilirsiniz.


 * Örneğin

Bu elbette maddelerin sayfa içeriği için kullanılır.


 * Dosya sayfalarında, yalnızca gerçek metnin etrafına dosya sayfasının geri kalanı özel kullanıcı arayüzü (dosya geçmişi, ...) eklenir.
 * Kategori sayfalarına normal sayfalardaki gibi eklenir, ancak kullanıcı dilindeki metin  ve   niteliklerine sahip bir   içine yerleştirilir kullanıcı diline göredir.
 * Özel sayfalara eklenmez, çünkü bunlar büyük ölçüde kullanıcı dilindedir. Özel sayfalardaki bir metin, daha sonra bu sınıflara gömülmesi gereken içerik dilinde olabilir. Örneğin, kod özeti ve kod açıklamaları için CodeReview uzantısında, viki içerik dilinde ul/ol öğeleri (* ve # vikimetin) içerebilen ve ilke olarak kullanıcı dilini açıkça kullanamayacak şekilde kullanılır.

Bu sınıflara UI öğesi eklemek yapılmamalıdır. Örneğin, kategori bağlantıları ve FlaggedRevs inceleme formu #bodyContent içinde ancak .mw-content-ltr/rtl dışında.

Yeni bir özellik, bu sınıfların bu sınıflar içinde kullanılabilmesidir. Örneğin, .mw-content-rtl bir LTR (mw-content-ltr) maddesinde kullanılabilir. Bu, çok dilli sayfalar için kullanışlıdır. Bundan önce, örneğin yerel MediaWiki:Common.css hack'lerin kullanılması gerekiyordu. Madde işareti listeleri  metninde doğru bir şekilde gösterilir. Bu nedenle viki sayfalarını düzenlerken  yerine   kullanmalısınız.

Ayrıca bakınız: Kimlikler ve sınıflar.



gövde sınıfları
Gövde etiketi, varsayılan olarak kullanıcı dilini izleyen bir  veya   sınıfına sahiptir. Bunu kullanmamalısınız, çünkü CSS kullanıcı diline göre otomatik olarak çevrilir. Gövde etiketi ayrıca takip eden yeni (1.18)   ve   sınıfına sahiptir. Buna ihtiyaç varsa, bir "userlang-ltr/rtl" ve/veya "pagelang-ltr/rtl" de eklenebilir.

float/text-align
Uygun 'right' veya 'left' değerleri veren, , , kullanabilirsiniz.

RTL arayüz dilleri için değeri (sol/sağ) çevrilen CSS  veya   kullanabilirsiniz.

Örnekler
Special:AllMessages özel bir sayfadır, yani kullanıcı dili yönünü izler. Ancak, gerçek mesajlar seçilen dilin yönünü izlemelidir.


 * Special:Allmessages = İngilizce, LTR
 * Special:Allmessages/he = İbranice, RTL

Tablodaki iletilerin içeriğini içeren hücrelerin  ve   özniteliği vardır.

PageContentLanguage kancasını kullanan uzantısı, çevrilmiş sayfalar için doğru dili (ve dolayısıyla yönü) ayarlar, ör. Wikimedia_maintenance_notice/ar bir LTR viki üzerindeki mw-content-rtl sınıfından yararlanır.



Yerel vikiler
MediaWiki:Common.css sayfaları ve akrabaları da çevrilir. Bu, gerektiğinde @noflip eklemeniz gerektiği anlamına gelir.

T33923 bakın: site CSS'si varsayılan olarak çevrilmemelidir.

Sorunlar

 * Çoğu büyük özellik ve uzantı, yaklaşık 1.19'dan bu yana geliştirilmiş bir desteğe sahiptir, bunun için translatewiki:Project:Better directionality and i18n development bakın.
 * Bilinen kalan sorunlar:
 * Harici bağlantı simgeleri kullanıcı dilinin yönüne göre çevrilir (küçük sorun)
 * -  yerine   kullanın, aksi takdirde özel sayfa   döndürür
 * - sola hizalanmış yavru kedi RTL vikilerinde sağa hizalanmalıdır (küçük sorun)
 * OmegaWiki: genel revizyona ihtiyaç var (İfade ve DefinedMeaning sayfaları kullanıcı yönünü izlemelidir) + 23035
 * Hataları ara: https://bugzilla.wikimedia.org/buglist.cgi?quicksearch=rtl



Ayrıca bakınız

 * translatewiki:Project:Better directionality and i18n development (2011 civarında) ve çok daha eski BiDi workgroup
 * Quick Intro: Unicode Bidirectional Algorithm by User:MSchottlender-WMF
 * rtl.wtf - çevrimiçi sağdan sola nasıl destekleneceğine dair maddeler ve örnekler
 * Quick Intro: Unicode Bidirectional Algorithm by User:MSchottlender-WMF
 * rtl.wtf - çevrimiçi sağdan sola nasıl destekleneceğine dair maddeler ve örnekler
 * Quick Intro: Unicode Bidirectional Algorithm by User:MSchottlender-WMF
 * rtl.wtf - çevrimiçi sağdan sola nasıl destekleneceğine dair maddeler ve örnekler
 * rtl.wtf - çevrimiçi sağdan sola nasıl destekleneceğine dair maddeler ve örnekler