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
You can use  and   classes to make use of edit section links and ul/ol elements based on that direction.


 * E.g.

This is of course used for the page content of articles.


 * On file pages, it is only added around the actual text while the rest of the file page is custom UI (file history, ...).
 * On category pages it is added as on regular pages, but the text in the user language is embedded in a  with   and   attributes according to the user language.
 * On special pages it is not added because these are largely in the user language. A piece of text on special pages can be in the content language, which should then be embedded in these classes. It is for example used in the CodeReview extension for the code summary and code comments, which can contain ul/ol elements (* and # wikitext) in the wiki content language and in principle not the user language obviously.

Adding UI stuff within these classes should not be done. For example, the category links and FlaggedRevs review form are inside #bodyContent but outside .mw-content-ltr/rtl.

A new feature is that these classes can be used within these classes. For example, .mw-content-rtl can be used in an LTR (mw-content-ltr) article. This is useful for multilingual pages. Prior to this, local MediaWiki:Common.css hacks had to be used to make e.g. bullet lists show correctly in  text. You should therefore use  instead of  when editing wiki pages.

See also IDs and classes.

body classes
The body tag has an  or   class by default, which follows the user language. You shouldn't use that, because CSS is automatically flipped based on the user language. The body tag also features a new (1.18)  and   class which follows. If there is need for it, a "userlang-ltr/rtl" and/or "pagelang-ltr/rtl" could be added as well.

float/text-align
You can use,  ,  ,   which gives the appropriate 'right' or 'left' values.

You can use CSS  or   of which the value (left/right) is flipped for RTL interface languages.

Examples
Special:AllMessages is a special page, which means it follows the user language direction. However, the actual messages should follow the direction of the selected language.


 * Special:Allmessages = English, LTR
 * Special:Allmessages/he = Hebrew, RTL

The cells in the table containing the content of the messages, have a  &   attribute.

The extension, making use of the PageContentLanguage hook, sets the right language (and consequently direction) for translated pages, see e.g. Wikimedia_maintenance_notice/ar which benefits from the mw-content-rtl class on an LTR wiki.

Local wikis
MediaWiki:Common.css pages and relatives are also flipped. This means that you have to add @noflip where needed.

See T33923: site CSS should not be flipped by default.

Issues

 * Most major features and extensions have improved support since about 1.19, see translatewiki:Project:Better directionality and i18n development for that.
 * Known remaining issues:
 * External link icons are flipped according to user language direction (minor issue)
 * - Use  instead of , otherwise special page returns
 * - kittens aligned left should be aligned right in RTL wikis (minor issue)
 * OmegaWiki: needs general overhaul (Expression and DefinedMeaning pages should follow user direction) + 23035
 * Search bugs: https://bugzilla.wikimedia.org/buglist.cgi?quicksearch=rtl