Nederlands is niet de eerste taal waar een WordPress plug-in bouwer aan zal denken. Het zou je daarom best eens kunnen gebeuren dat je de keuze moet maken tussen het tolereren van enkele Engelse woorden in je website óf een plug-in in haar geheel niet gebruiken. Ik liep hier tegenaan bij het gebruik van de WP Review plugin op mijn review pagina. Daarin kwamen de engelse woorden user rating, votes en sending voor, maar er was geen nederlandse vertaling van de plug-in beschikbaar. Ik heb er toen voor gekozen om de plug-in wél te gebruiken en zelf de engelse teksten van de plug-in te overschrijven met de nederlandse termen.
Het overschrijven van teksten kun je doen door de code van de plug-in direct aan te passen, maar dat is af te raden. Je raakt je aanpassingen namelijk kwijt wanneer je een update van de plug-in doet. Tenzij je je plug-in niet update, maar dat is weer af te raden in verband met veiligheidslekken die in updates worden gedicht. Pas daarom de plug-in zelf niet aan, maar werk via een child theme. In een eerdere post heb ik het maken van een child theme al beschreven.
Child theme
In mijn post over het maken van een child theme wordt het functions.php bestand genoemd. Daar deed ik toen niets mee, maar nu kunnen we dat bestand gebruiken voor het doen van onze vertalingen. Wat we in feite gaan doen is heel specifieke woorden overschrijven. Ik ga er in deze post vanuit dat je begint met een leeg functions.php bestand, waaraan we wat PHP code kunnen toevoegen.
Vertaalfilter
WordPress heeft binnen haar codebase beschikking over filters. Hieronder staat een voorbeeld van zo’n filter om de vertalingen te realiseren. Ik ga niet te diep op de werking van de code in. De benodigde code voor het filter ziet er in zijn geheel als volgt uit:
<?php /** * Gettext overrides */ add_filter( 'gettext', 'my_translate', 10 ); function my_translate( $text ) { $lowercase = strtolower( $text ); switch( $lowercase ) { case 'user rating': $text = 'Totale waardering: '; break; case 'votes': $text = 'deelnemers'; break; case 'sending': $text = 'insturen'; break; } return $text; }
De volgende vertalingen worden in bovenstaande code gedaan:
- user rating: > Totale waardering:
- votes > deelnemers
- sending > insturen
De code is te gebruiken in combinatie met iedere plugin die gebruik maakt van gettext, de techniek die WordPress gebruikt om vertalingen te realiseren. Iedere zichzelf respecterende ontwikkelaar maakt netjes gebruik van de mogelijkheden die WordPress biedt. Gebruikt een plug-in geen gettext, dan kan dat een indicatie zijn voor de (lage) kwaliteit van de software. Overweeg in zo’n geval een andere plug-in te gebruiken.
Een klein puntje van aandacht: zorg dat alle termen die vertaald moeten worden met kleine letters zijn geschreven. Bovenstaande code werk niet als je hoofdletters overneemt naar de vertaalterm. In de uiteindelijke vertaling kun je wel gewoon hoofdletters gebruiken.
Functions.php aanpassen
Open het bestand functions.php van je child theme en plak bovenstaande code erin. Staat er al code in je functions.php, kopieer de eerste regel code uit het bovenstaande voorbeeld dan niet mee. Sla het bestand op en upload het naar je webserver. Je vertalingen zouden nu actief moeten zijn, maar het zou kunnen dat je je child theme een keer moet deactiveren en activeren om de wijzigingen daadwerkelijk door te voeren.
Wil je meer dan drie woorden of woordcombinaties vertalen, voeg dan voor elke extra term de volgende drie regels toe tussen regel 19 en 20 in de voorgaande code. Vervang daarbij ‘english’ en ‘nederlands’ met jouw termen:
case 'english': $text = 'nederlands'; break;
Ten slotte
Het bovenstaande moet je zien als een quick-fix. WordPress is Open Source, en daar maak je dankbaar gebruik van. Overweeg dus ook om iets terug te geven aan de WordPress community en te helpen bij het vertalen van WordPress of de plug-in waarin je geïnteresseerd bent.
Geef een reactie