Ondersteuning leesrichtingen

This page is a translated version of the page Directionality support and the translation is 100% complete.
i18n documenten

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

Engelse (LTR) inhoud met Hebreeuwse (RTL) interface.

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 <div lang="en" dir="ltr" class="mw-content-ltr"> in en aan het eind ‎</div>.
  • Als het maar een paar woorden in een alinea zijn, zet ze dan binnen ‎<span> tags met de toepasselijke lang en dir attributen. (Veel wiki's hebben hier een sjabloon voor, bijv. {{lang}}).
  • 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, {{RLM}} 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 Phabricator:T29025.)

Wat voor een soort talen?

Hoofdartikel: Handleiding:Language

  • $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 PageContentLanguage 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.
De schriftrichting kan verwarrend zijn, maar u kunt van mooeypoo deze video Wait, ?tahW: The Twisted Road to Right-to-Left Language Support bekijken om een beter inzicht te krijgen in welke zaken er daarbij spelen en wat mogelijke oplossingen zijn.

Wat moet ik toevoegen in de broncode?

  • Alles op een speciale pagina dat anders is dan de taal van de gebruiker moet een tag <div dir="..." lang="..."> 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 div tag te hebben.
  • Als de verschiltekst niet in de taal is van de pagina, gebruik $diff->setTextLanguage( 'code' ); waar de $diff een DifferenceEngine object is.

lang/dir attributen

U dient HTML te gebruiken:

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

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

.class { direction: ltr; }

Wiki inhoud

MediaWiki-versie:
1.18

U kunt de mw-content-ltr en mw-content-rtl classes gebruiken voor de links in het bewerkingsgedeelte en de ul/ol elementen gebaseerd op die richting.

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

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 div met lang en dir 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.

Zie ook ID's en classes.

body classes

De tag body heeft standaard een ltr of rtl 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 sitedir-ltr en sitedir-rtl class die $wgContLang->getDir() volgen. Als het nodig is kunnen ook "userlang-ltr/rtl" en/of "pagelang-ltr/rtl" worden toegevoegd.

float/text-align

U kunt $wgLang->alignStart(), $wgContLang->alignStart(), $wgLang->alignEnd(), $wgContLang->alignEnd() gebruiken, dat geeft de toepasselijke 'right' of 'left' waarden.

U kunt CSS float of text-align 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.

De cellen in de tabel die de inhoud van de berichten bevatten hebben een lang en dir attribuut.

De extensie Translate gebruikt de hook PageContentLanguage, zet de goede taal (en consequent de richting) bij vertaalde pagina's, zie bijv. meta:Wikimedia_maintenance_notice/ar die voordeel heeft van de class mw-content-rtl class op een LTR wiki.

Lokale wiki's

MediaWiki:Common.css pagina's en daaraan gerelateerd worden ook omgekeerd. Dat betekent dat u een @noflip moet toevoegen als dat niet de bedoeling is.

Zie T33923: de CSS van een website zou niet standaard moeten keren.

Aandachtspunten

Zie ook