Directionality support/nl

Ondersteuning voor verschillende richtingen (lins-naar-rechts, rechts-naar-links) is een belangrijk aspect bij meertalige software. De ondersteuning is vanaf aanmerkelijk verbeterd.

Deze pagina geeft wat relevante informatie en richtlijnen voor ontwikkelaars en wiki-beheerders als die een functie of extensie willen maken die compatibel is met de rechts-naar-links interface of met verschillende richtingen in het algemeen.



Gebruikersniveau tips
Eerst wat enkele algemene tips voor gebruikers voordat we op de details voor de ontwikkelaars ingaan.


 * De meeste browsers ondersteunen het wijzigen van de richting van een platte tekstbewerkingsgebied, zoals een artikel zoekbox, wiki syntaxis bewerking, bewerkingssamenvatting, enz. Afhankelijk van browsers en besturingssystemen wordt dit gedaan met Ctrl-Shift (Chrome en IE op Windows), Ctrl-Shift-X (Firefox), Option-Click-Change richting (Mac). Hiermee zou u moeten kunnen tikken in een richting die afwijkt van de normale richting op die website.
 * Bij het invoeren in een taal die een richting heeft die anders dan die van de website, voeg een div tag toe met de goede lang, dir en class attributen. Voorbeeld: in een Engelse sectie op een Arabische Wikipedia, tik eerst  in en aan het eind.
 * Als het maar een paar woorden in een alinea zijn, zet ze dan binnen een tag met de toepasselijke lang en dir attributen. (Veel wiki's hebben hier een sjabloon voor, bijv.  ).
 * Om gescheiden getallen van een aanliggend woord met een andere schrijfrichting te scheiden, gebruik RLM of LRM tekens. Veel wiki's hebben hiervoor sjablonen, in de Hebreeuwse Wikipedia,  in de Arabische Wikipedia,  in de Iraanse Wikipedia, enz. Als er een sjabloon beschikbaar is, dan wordt er meestal de voorkeur gegeven om het teken zelf te gebruiken.

U kunt fouten in de afhandeling van RTL melden in Phabricator op elk gerelateerd MediaWiki project met gebruik van de tag RTL.

ResourceLoader
Door ResourceLoader met CSSJanus wordt de CSS automatisch gedraaid naar rechts-naar-links als de gebruikerstaal RTL is. Dit is sinds 1.18 standaard (in eerdere versies was het afhankelijk van de taal van de wiki inhoud). Er is relatief weinig CSS die afhankelijk is van de taal van de inhoud.


 * Attentie: bij gebruik van ResourceLoader's debug mode kan de CSS inconsistent worden opgebouwd vergeleken met de productie mode. Test als een tijdelijke oplossing de RTL interface zonder te debuggen. (Opmerking wordt gevolgd met T29025.)



Wat voor een soort talen?
Hoofdartikel:


 * $wgLang - gebruikerstaal (en de bijbehorende richting)
 * $wgContLang - taal van de inhoud (en de bijbehorende richting) -> hier LTR
 * Title->getPageLanguage - taal van de pagina-inhoud (en de bijbehorende richting) -> standaard dezelfde als die van de taal van de inhoud van de website
 * Er zijn standaard wat uitzonderingen:
 * Het kan in extensies met de hook worden gezet
 * Dit zet de TOC (inhoudsopgave) en zaken als grammatica (hoewel meestal niet relevant) van die taal. Om alleen dat te doen: gebruik parserOptions->setTargetLanguage
 * In extensies die met 1.17 compatibel moeten blijven, gebruik wfUILang, er is dan geen compatibiliteit met de versies voor 1.17. Dit retourneert vanaf 1.18 $wgLang, in 1.17 retourneert het $wgContLang  (standaardwaarde).



Welke taal of richting moet een soort pagina volgen?

 * Speciale pagina's gebruiken standaard de gebruikerstaal.
 * Broncode moet Engels zijn (dat is bij CSS/JS pagina's de standaard).
 * Pagina's waarbij de vertalingen subpagina's zijn dienen de taal van de vertaling te gebruiken (bijv. "Page" is wgContLang, "Page/nl" is "nl"). Dit is in de MediaWiki namespace de standaard.
 * Inputboxen en textareas gebruiken standaard de richting van de inhoud.
 * Bij het bekijken van de verschillen (diff) wordt de gebruikerstaal gebruikt, maar de actuele verschiltekst is in de taal van de inhoud van de pagina.



Wat moet ik toevoegen in de broncode?

 * Alles op een speciale pagina dat anders is dan de taal van de gebruiker moet een tag  hebben.
 * Voorbeeld: SpecialRecentchanges->setTopText die een "recentchangestext" bericht toevoegt in de taal van de wiki.
 * Alles op de custom namespaces dat tekst bevat dat anders is dan de standaard wiki inhoud dient ook een  tag te hebben.
 * Als de verschiltekst niet in de taal is van de pagina, gebruik waar de $diff een DifferenceEngine object is.



lang/dir attributen
U dient HTML te gebruiken:

maar als dat lastig is in dynamisch aangemaakte elementen kunt u terugvallen op CSS:



Wiki inhoud
U kunt de  en   classes gebruiken voor de links in het bewerkingsgedeelte en de ul/ol elementen gebaseerd op die richting.


 * Bijv.

Dit wordt natuurlijk gebruikt voor de pagina-inhoud van artikelen.

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.
 * Op bestandspagina's wordt het alleen toegevoegde rondom de actuele tekst als de rest van die pagina custom UI is (bestandsgeschiedenis, ...).
 * Op categorie-pagina's wordt het toegevoegd als op normale pagina's, maar wordt de tekst in de gebruikerstaal geplaatst in een  met   en   attributen die bij die gebruikerstaal horen.
 * On special pages it is not added because these are largely in the user language.

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



Zie ook

 * translatewiki:Project:Better directionality and i18n development (rond 2011) en daarvoor BiDi workgroup
 * Quick Intro: Unicode Bidirectional Algorithm by User:MSchottlender-WMF
 * rtl.wtf - artikelen en voorbeelden over hoe online rechts-naar-links wordt ondersteund
 * Quick Intro: Unicode Bidirectional Algorithm by User:MSchottlender-WMF
 * rtl.wtf - artikelen en voorbeelden over hoe online rechts-naar-links wordt ondersteund
 * Quick Intro: Unicode Bidirectional Algorithm by User:MSchottlender-WMF
 * rtl.wtf - artikelen en voorbeelden over hoe online rechts-naar-links wordt ondersteund
 * rtl.wtf - artikelen en voorbeelden over hoe online rechts-naar-links wordt ondersteund