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.


 * 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.
 * Op speciale pagina's wordt het niet gebruikt omdat die grotendeels in de gebruikerstaal zijn. Een deel van de tekst kan in de taal van de inhoud zijn, dan moet die test ingesloten zijn tussen die classes. Dit wordt bijvoorbeeld in de extensie CodeReview gebruikt voor de samenvatting en de opmerkingen, die kunnen ul/ol elementen bevatten (* en # wikitext) in de taal van de wiki inhoud en in principe niet in de gebruikerstaal.

Het is niet de bedoeling om iets van een UI tussen deze classes in te zetten. De categorie linken en het FlaggedRevs beoordelingsformulier zijn binnen #bodyContent maar buiten .mw-content-ltr/rtl.

Een nieuwe mogelijkheid is dat deze classes gebruikt kunnen worden tussen deze classes. Voorbeeld, .mw-content-rtl kan worden gebruikt in een LTR (mw-content-ltr) artikel. Dit is voor meertalige pagina's bruikbaar. Hiervoor moesten lokale MediaWiki:Common.css hacks worden gebruikt om bijvoorbeeld opsommingslijsten te maken om dit goed weer te geven in een  tekst. U moet daarom  gebruiken in plaats van   bij het bewerken van wiki-pagina's.

Zie ook ID's en classes.

body classes
De tag body heeft standaard een  of   class, afhankelijk van de gebruikerstaal. U moet dat niet gebruiken omdat CSS automatisch terugkeert naar de gebruikerstaal. De tag body tag heeft sinds 1.18 de classes  en   class die  volgen. Als het nodig is kunnen ook "userlang-ltr/rtl" en/of "pagelang-ltr/rtl" worden toegevoegd.

float/text-align
U kunt, , , gebruiken, dat geeft de toepasselijke 'right' of 'left' waarden.

U kunt CSS  of   gebruiken waarvoor de waarde (links/rechts) wordt gekeerd bij RTL interface talen.

Voorbeelden
Special:AllMessages is een speciale pagina die de richting van de gebruikerstaal volgt. Bij actuele berichten dient echter de richting van de geselecteerde taal te worden gevolgd.


 * Special:Allmessages = Engels, LTR
 * Special:Allmessages/he = Hebreeuws, 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