Dukungan arah
Dukungan untuk arah menulis yang berbeda (kiri ke kanan, kanan ke kiri) merupakan aspek penting untuk perangkat lunak multibahasa Sejak MediaWiki 1.18 , dukungannya telah ditingkatkan secara signifikan

Halaman ini memberikan beberapa informasi relevan, dan panduan bagi pengembang dan administrator wiki jika Anda ingin membuat fitur atau ekstensi yang kompatibel dengan antarmuka kanan-ke-kiri dan arah yang berbeda secara umum.
Tips tingkat pengguna
Beberapa kiat umum untuk pengguna, sebelum masuk ke detail untuk pengembang:
- Sebagian besar peramban mendukung perubahan arah area pengeditan teks biasa, seperti kotak pencarian artikel, pengeditan sintaksis wiki, ringkasan pengeditan, dan lain-lain. Bergantung pada browser dan sistem operasi, ini dilakukan dengan Ctrl+⇧ Shift (Chrome dan IE pada Windows), Ctrl+⇧ Shift+X (Firefox), Opsi-Klik-Ubah arah (Mac). Ini akan membantu Anda mengetik ke arah yang berbeda dari arah situs yang biasa.
- Saat mengetik bagian dalam bahasa yang arahnya berbeda dari situs, tambahkan tag div dengan atribut lang, dir, dan class yang sesuai. Misalnya, ketika mengetik bagian bahasa Inggris di Wikipedia bahasa Arab, ketik
<div lang="en" dir="ltr" class="mw-content-ltr">
di awal dan</div>
di akhir. - Saat mengetik hanya beberapa kata dalam satu paragraf, letakkan kata tersebut di dalam tag
<span>
dengan atribut lang dan dir yang sesuai. (Banyak wiki memiliki template untuk ini, seperti {{lang}}). - Untuk memisahkan angka dari kata yang berdekatan dengan arah yang berbeda, gunakan karakter RLM atau LRM. Banyak wiki memiliki templat untuk ini, misalnya {{כ}} di Wikipedia Ibrani, {{RLM}} di Wikipedia Arab, {{رچ}} di Wikipedia Persia, dll. Jika templat tersedia, biasanya lebih disukai daripada menggunakan karakter Unicode itu sendiri.
Anda dapat melaporkan bug dalam penanganan RTL di Phabricator dalam proyek yang terkait MediaWiki menggunakan tag RTL.
Pemuat Sumber Daya
Terima kasih kepada ResourceLoader termasuk CSSJanus, CSS secara otomatis diputar ke kanan ke kiri ketika bahasa pengguna adalah RTL. Ini adalah default sejak 1.18 (dalam versi sebelumnya bergantung pada bahasa konten wiki). Ada relatif sedikit CSS yang harus tergantung pada bahasa konten.
- Perhatian: saat menggunakan mode debug ResourceLoader, CSS mungkin ditampilkan secara tidak konsisten dibandingkan dengan mode produksi. Sebagai tes RTL sementara dengan debugging off. (Issu di pelacakan sebagai Phabricator:T29025.)
Bahasa apa saja?
Artikel utama Manual:Bahasa
- $wgLang - bahasa pengguna (dan arahnya masing-masing)
- $wgContLang - bahasa konten situs (dan arahnya masing-masing) -> di sini LTR
- Title->getPageLanguage () - bahasa konten halaman (dan arah masing-masing) -> secara default sama dengan bahasa konten situs
- Ada beberapa pengecualian default: lihat di bawah ini
- Ini dapat diatur dalam ekstensi dengan hook PageContentLanguage
- Ini menetapkan TOC (dan hal-hal seperti tata bahasa, meskipun sebagian besar tidak terlalu relevan) ke bahasa tersebut. Untuk melakukannya, gunakan parserOptions->setTargetLanguage()
- Dalam ekstensi yang harus tetap kompatibel dengan 1.17, Anda dapat menggunakan wfUILang (), namun ini melanggar kompatibilitas dengan 1.16 dan di bawah. Ini mengembalikan $wgLang dalam versi 1.18 dan yang lebih tinggi tetapi $wgContLang dalam versi 1.17 (secara default).
Apa yang harus mengikuti jenis yang mana?
- Halaman khusus mengikuti bahasa pengguna secara default.
- Kode sumber harus berbahasa Inggris (Halaman CSS/JS diatur ke bahasa Inggris secara default).
- Halaman dengan terjemahan sebagai subhalaman harus mengikuti bahasa terjemahan (misalnya "halaman" adalah wgContLang, "halaman/nya" adalah "dia"). Ini adalah standar untuk ruang nama MediaWiki.
- Kotak input dan area teks mengikuti arah konten secara default.
- Saat melihat diff, ia mengikuti bahasa pengguna, tetapi teks diff yang sebenarnya menggunakan bahasa konten halaman.
Apa yang harus saya tambahkan dalam kode sumber?
- Apa pun pada halaman khusus yang berbeda dari bahasa pengguna harus memiliki tag
<div dir="..." lang="...">
.- Contoh: SpecialRecentchanges->setTopText() yang menambahkan pesan "recentchangestext" dalam bahasa konten wiki.
- Apa pun di ruang nama kustom yang berisi teks yang berbeda dari konten wiki default juga harus memiliki tag
div
. - Ketika teks diferensi tidak sama dengan bahasa konten halaman, gunakan kode $di mana $diff adalah objek DifferenceEngine.
atribut lang/dir
Anda harus menggunakan HTML:
Xml::rawElement( 'div', array( 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() );
tapi kadang-kadang itu sulit dalam elemen yang dihasilkan secara dinamis dan Anda dapat jatuh kembali pada CSS:
.class { direction: ltr; }
Konten Wiki
Versi MediaWiki: | ≥ 1.18 |
Anda dapat menggunakan kelas mw-content-ltr
dan mw-content-rtl
untuk menggunakan tautan bagian suntingan dan elemen ul/ol berdasarkan arah itu.
- Misalnya
Xml::rawElement( 'div', array(
'class' => 'mw-content-' . $wgLang->getDir(),
'lang' => $wgLang->getCode(),
'dir' => $wgLang->getDir(),
'Text'
);
Ini tentu saja digunakan untuk konten halaman artikel.
- Pada halaman berkas, ia hanya ditambahkan di sekitar teks sebenarnya, sedangkan bagian halaman berkas lainnya merupakan UI khusus (riwayat berkas, ...).
- Pada halaman kategori ditambahkan seperti pada halaman biasa, tetapi teks dalam bahasa pengguna tertanam dalam
div
dengan atributlang
dandir
sesuai dengan bahasa pengguna. - Pada halaman khusus, "tidak" ditambahkan karena sebagian besarnya menggunakan bahasa pengguna. Sebuah teks pada halaman khusus dapat berada dalam bahasa konten, yang kemudian harus tertanam dalam kelas ini. Misalnya, digunakan dalam ekstensi CodeReview untuk ringkasan kode dan komentar kode, yang dapat berisi elemen ul/ol (* dan # wikitext) dalam bahasa konten wiki dan pada prinsipnya bukan bahasa pengguna jelas.
Menambahkan UI dalam kelas ini tidak boleh dilakukan. Misalnya, tautan kategori dan formulir tinjauan FlaggedRevs berada di dalam #bodyContent tetapi di luar .mw-content-ltr/rtl.
Lihat Pula ID dan kelas.
kelas tubuh
Tag body memiliki kelas ltr
atau rtl
secara default, yang mengikuti bahasa pengguna.
Anda tidak boleh menggunakan itu, karena CSS secara otomatis dibalik berdasarkan bahasa pengguna.
Tag tubuh juga menampilkan kelas baru (1.18) sitedir-ltr
dan sitedir-rtl
yang mengikuti $wgContLang->getDir()
.
Jika diperlukan, "userlang-ltr/rtl" dan/atau "pagelang-ltr/rtl" juga dapat ditambahkan.
mengapung/perataan-teks
Anda dapat menggunakan $wgLang->alignStart()
, $wgContLang->alignStart()
, $wgLang->alignEnd()
, $wgContLang->alignEnd()
yang memberikan nilai 'kanan' atau 'kiri' yang sesuai.
Anda dapat menggunakan CSS float
atau text-align
yang nilai (kiri/kanan) diputar untuk bahasa antarmuka RTL.
Contoh
Special:AllMessages adalah halaman khusus, yang berarti itu mengikuti arahan bahasa pengguna. Namun, pesan sebenarnya harus mengikuti arah bahasa yang dipilih.
- Special:Allmessages = Inggris, LTR
- Special:Allmessages/he = Ibrani, RTL
Sel dalam tabel yang berisi konten pesan, memiliki atribut lang
& dir
.
Ekstensi Translate , memanfaatkan kait PageContentLanguage, menetapkan bahasa yang tepat (dan akibatnya arah) untuk halaman yang diterjemahkan, lihat misalnya meta:Wikimedia_maintenance_notice/ar yang mendapat manfaat dari kelas mw-content-rtl pada wiki LTR.
Wiki lokal
Halaman MediaWiki:Common.css dan halaman terkait juga dibalik. Ini berarti Anda harus menambahkan @noflip jika diperlukan.
Lihat T33923: CSS situs tidak boleh dibalik secara default.
Masalah
- Sebagian besar fitur utama dan ekstensi telah meningkatkan dukungan sejak sekitar 1.19, lihat translatewiki:Project:Better directionality and i18n development untuk itu.
- Masalah yang diketahui:
- Ikon tautan eksternal diputar sesuai arah bahasa pengguna (masalah kecil)
- LiquidThreads - Gunakan
contlang
bukanpagelang
, jika tidak halaman khusus mengembalikanuserlang
- WikiLove - Kittens dilingkungan kiri (
[[File:Blabla.jpg|left]]
) harus dilingkungan kanan di RTL wiki (masalah kecil) - OmegaWiki: perlu perbaikan umum (Halaman Expression dan DefinedMeaning harus mengikuti arahan pengguna) + 23035
- Bug pencarian: $ bugz
Lihat pula
- Manual:Interface/IDs and classes
- Pelokalan
- translatewiki:Project:Better directionality and i18n development (sekitar 2011) dan yang jauh lebih tua m:BiDi workgroup
- Manual:Hooks/PageContentLanguage
- Visual editor/Bidirectional text requirements
- Extension:RevisionSlider/Developing a RTL-accessible feature in MediaWiki - what we've learned while creating the RevisionSlider
- Pengenalan Singkat: Algoritma Dua Arah Unicode oleh User:MSchottlender-WMF
- rtl.wtf - Artikel dan contoh tentang bagaimana mendukung kanan-ke kiri online