Yönlülük desteği

This page is a translated version of the page Directionality support and the translation is 85% complete.
Outdated translations are marked like this.
Uluslararasılaşma belgeleri

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

İbranice (RTL) arayüzlü İngilizce (LTR) içerik.

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 <div lang="en" dir="ltr" class="mw-content-ltr"> ve sonunda ‎</div> yazın.
  • Bir paragrafın içine sadece birkaç kelime yazarken, bunları uygun dil ve dir özelliklerine sahip ‎<span> bir etikete koyun. (Birçok vikide bunun için bir şablon vardır, örneğin {{lang}}).
  • 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 {{RLM}}, 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 Phabricator:T29025 olarak takip ediliyor.)

Ne tür diller?

Ana madde: Manual:Language

  • $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
    • PageContentLanguage 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.
Yönelmişlik kafa karıştırıcı olabilir, ancak Mooeypoo adlı kullanıcının linux.conf.au "Wait, ?tahW: The Twisted Road to Right-to-Left Language Support" başlıklı konuşmasını izleyebilir ilgili meseleleri ve çözümleri daha iyi anlamak içindir.

Kaynak koduna ne eklemeliyim?

  • Özel sayfalarda kullanıcı dilinden farklı olan her şeyin bir <div dir="..." lang="..."> 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 div 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:

Xml::rawElement( 'div', array( 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() );

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

.class { direction: ltr; }

Viki içeriği

MediaWiki sürümü:
1.18

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

Örneğin
Xml::rawElement( 'div', array(
        'class' => 'mw-content-' . $wgLang->getDir(),
        'lang' => $wgLang->getCode(),
        'dir' => $wgLang->getDir(),
        'Text'
);

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 lang ve dir niteliklerine sahip bir div 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 <div dir="ltr/rtl"> metninde doğru bir şekilde gösterilir. Bu nedenle viki sayfalarını düzenlerken <div dir="ltr/rtl"> yerine <div class="mw-content-ltr/rtl"> 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 ltr veya rtl 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 $wgContLang->getDir() takip eden yeni (1.18) sitedir-ltr ve sitedir-rtl 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 $wgLang->alignStart(), $wgContLang->alignStart(), $wgLang->alignEnd(), $wgContLang->alignEnd() kullanabilirsiniz.

RTL arayüz dilleri için değeri (sol/sağ) çevrilen CSS float veya text-align 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.

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

PageContentLanguage kancasını kullanan Translate uzantısı, çevrilmiş sayfalar için doğru dili (ve dolayısıyla yönü) ayarlar, ör. meta: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

Ayrıca bakınız