Stel, je hebt het perfecte theme of de juiste plug-in voor je WordPress blog gevonden. Maar er is geen of alleen een slechte Nederlandse vertaling van. Wat doe je dan? In deze gedetailleerde workshop lees je hoe je de plug-in dan zelf kunt vertalen (lokaliseren).
We bespreken hier drie verschillende oplossingen:
- Lokalisatie met de plug-in Loco Translate
- Handmatig lokaliseren met de open source-software Poedit
- Handmatig lokaliseren met het vertaalplatform van WordPress
WordPress gebruikt voor themes en plug-ins automatisch de taal die onder Instellingen – Algemeen is ingesteld, mits de plug-in in die taal beschikbaar is. Technisch gaat het hier om het passende vertaalbestand.
Zelf hoef je alleen maar iets te doen als de automatische instelling niet werkt. Of als de bestaande, Nederlandstalige versie te wensen overlaat, bijvoorbeeld omdat de vertaling houterig geschreven is, spelfouten bevat of verkeerde termen gebruikt. Steeds weer gebeurt het bijvoorbeeld dat een vertaling je gebruikers aanspreekt met ‘U’ terwijl je WordPress blog de gebruikers informeel met ‘je’ aanspreekt, of omgekeerd. De meeste plug-ins houden hier geen rekening mee.
Het basisprincipe van lokalisatie
Op het eerste gezicht is er een heel gemakkelijke manier om WordPress themes of plug-ins naar het Nederlands te vertalen: de plug-in Loco Translate.
Maar ook al klinkt lokalisatie in eerste instantie vrij eenvoudig, toch kan het best ingewikkeld zijn. Daarom is het handig om eerst een paar basisprincipes te begrijpen.
WordPress gebruikt een gemeenschappelijke industriestandaard voor vertalingen, ook wel lokalisatie genoemd: GNU Gettext Portable Objects. Het idee is eenvoudig: in de softwarecode worden tekst en afzonderlijke termen op een vooraf gedefinieerde manier gebruikt, zodat ze zo nodig met andere taalversies kunnen worden uitgewisseld, zonder de programmacode zelf te veranderen.
De basistaal (Engels) is meestal al in zijn gestandaardiseerde vorm in de programmacode opgenomen. Voor vertaling zijn er verder drie soorten bestanden, die aanwezig zijn óf voor lokalisatie worden aangemaakt:
- Het .pot–bestand (Portable Object Template) bevat een lijst van alle termen en tekstelementen in het Engels die de ontwikkelaar voor lokalisatie bestemd heeft. Het bevindt zich gewoonlijk in de submap /lang/ of /languages/ van de themamap of plug-inmap. Dit bestand zorgt ervoor dat je tijdens het lokaliseren niet naar de termen en tekstpassages in de programmacode hoeft te zoeken.
- .po-bestanden (Portable Object) bevatten de oorspronkelijke termen en de respectievelijke vertalingen in gewone tekst. De bestandsnamen van de .po-bestanden geven aan om welke taalversie het gaat, bijvoorbeeld nl_NL.po voor de Nederlandse vertaling.
- .mo-bestanden (Machine Object) zijn de machine-leesbare tegenhanger van het .po-bestand. Het zijn cruciale bestanden want WordPress gebruikt het om de vertaalde termen te laden. Ze volgen dezelfde bestandsnaamconventie als het .po-bestand, dus voor het Nederlandse nl_NL.mo.
Deze bestanden zijn niet altijd beschikbaar, maar dit betekent niet dat het thema of de plug-in niet vertaald kan worden. Belangrijk is dat de ontwikkelaar zich bij het programmeren aan de standaard houdt, wat bijna altijd het geval is.
De plug-in Loco Translate maakt deze bestanden automatisch aan als dat nodig is. Vertaal je een thema of plug-in handmatig met de Poedit-editor? Dan moet je zelf de bestanden aanmaken. Daarna upload je ze naar de juiste map op je webspace. Hierover later meer.
Let op bij het updaten van een thema of plug-in
Een lastige valkuil ontstaat door updates van themes en plug-ins. Zodra de ontwikkelaars iets veranderen in de teksten of termen, werkt de lokalisatie die je zelf of met de plug-in hebt gemaakt, niet meer volledig. Soms ontstaan fouten die je erg moeilijk kunt herstellen. Daarom moet je de lokalisatie af en toe aanpassen. Als er vreemde fouten optreden, kan een verouderd taalbestand de oorzaak zijn.
De plug-in Loco Translate heeft een synchronisatiefunctie die je de huidige teksten en termen voor vertaling toont en nieuwe vertalingen synchroniseert. Je moet deze synchronisatie in de plug-in wel handmatig uitvoeren. Hierover straks meer.
1. Lokalisatie met de plug-in Loco Translate
Omdat Loco Translate alle mogelijkheden van de lokalisatie behandelt, is het gebruik van de plug-in niet erg eenvoudig. Maar er zijn talloze opties die je meestal kunt negeren. We behandelen in deze workshop alleen de essentiële basisfuncties. Voor al het andere vind je in de plug-in zeer gedetailleerde helpfuncties en documentatie.
Installeer en activeer eerst de WordPress plug-in Loco Translate. In je back-end verschijnt een nieuwe menuoptie, Loco Translate. Klik op Thema’s of Plugins om te vertalen items te kiezen in de lijst met themes en plug-ins. In ons voorbeeld is dit Mailpoet. Kies nu de taal waarmee je wilt werken – meestal: Nederlands.
Als de gewenste taalversie nog niet bestaat, maak hem dan aan door op + Nieuwe taal te klikken.
Heb je een bestaande taalversie? Dan krijg je gewoonlijk een melding dat de vertaalbestanden overschreven of verwijderd zullen worden zodra WordPress wordt bijgewerkt. Ga daarom eerst naar het tabblad Verplaatsen en kies Eigen in het vakje Voer een doelpad in voor dit bestand in. Dit zorgt ervoor dat je lokalisatie permanent bewaard blijft. Maak je een nieuwe taalversie? Dan kun je bij het aanmaken direct Eigen als doelpad instellen.
Vertalingen bewerken
Kies nu weer de juiste taal, zodat je met de eigenlijke vertaling kunt beginnen. Je ziet een lijst van alle vertaalbare termen en teksten. Zodra je op een item in de lijst klikt, zie je het Engelse origineel en de Nederlandse vertaling in de twee vensters hieronder, als die vertaling beschikbaar is natuurlijk. In het onderste veld kun je nu je eigen vertaling invoegen.
Ben je klaar bent met alle vertalingen? Klik dan op Opslaan. In de rij met die knop zie je ook een Sync–knop. Met deze functie werk je de vertaling na een update van het thema of de plug-in bij, door de termen en teksten toe te voegen die in die update zijn opgenomen. Zodra er veranderingen zijn aangebracht, zie je ze na het synchronisatieproces. Ze zijn in de lijst gemarkeerd, zodat je ze kunt corrigeren.
De markering verdwijnt zodra je de vertaling hebt bewerkt.
Let op: wijzigingen zijn meestal onmiddellijk zichtbaar. Maar als je een cache-plug-in gebruikt of je browser de website in de cache opslaat, zie je de veranderingen misschien niet meteen. Je kunt dan tijdelijk de cache-plug-in uitschakelen of het opnieuw laden van de pagina afdwingen met de toetsencombinatie Ctrl + F5.
2. Handmatig lokaliseren met de open source-software Poedit
Als je er met Loco Translate niet uitkomt of geen plug-in voor dit doel wilt installeren, heb je nog altijd de mogelijkheid om de lokalisatie handmatig te doen. Bijvoorbeeld met de gratis software Poedit voor Windows, Mac en Linux.
Met Poedit kun je de termen vertalen op een manier die vergelijkbaar is met de plug-in Loco Translate. Je hebt wel het .po of .pot-bestand nodig van het thema of de plug-in die je wilt lokaliseren.
Gewoonlijk vind je die bestanden in de submap /lang/ of /languages/ van de themamap of de plug-inmap. Steeds vaker staan de bestanden ook in /wp-content/languages/themes/ of /wp-content/languages/plug-ins/. Als het .pot of .po-bestand daar tóch ontbreekt, kun je het best op zoek gaan in het supportforum van het thema of de plug-in, of kijk op de website ervan. Vind je de bestanden daar ook niet? Stuur dan een bericht naar de ontwikkelaar en vraag ernaar.
Tekst vertalen in Poedit
Download en installeer de open source software Poedit. Klik op Openen, selecteer het te lokaliseren .po of .pot-bestand en voer nl_NL in voor een Nederlandse vertaling bij taal van de vertaling. Zijn beide bestanden beschikbaar? Neem dan het .po-bestand, want dat kan al vertalingen bevatten. Het .pot-bestand bevat alleen de termen en teksten in het Engels.
Zoals eerder in de plug-in Loco Translate zie je nu de lijst van bestaande teksten in Poedit, evenals de velden voor het Engelstalige origineel en voor de vertaling. Die kun je hier invoeren of bewerken. Rechts suggereert Poedit gemakshalve vertaalopties die je met een muisklik kunt accepteren. Gebruik de menuoptie Bewerken – Zoeken (of Ctrl + F) om naar specifieke termen te zoeken. Dit is vooral handig voor lange taalbestanden.
Belangrijk: neem alle speciale tekens van de oorspronkelijke tekst over in je vertaling en vertaal alleen de gewone tekst. Zulke speciale tekens zijn bijvoorbeeld › of © of escape-reeksen zoals aanhalingstekens \“ en dergelijke. Die herken je aan de voorafgaande backslash. Al deze speciale teksten moeten behouden blijven. Ook variabelen als %1$s of j M @ H:i moet je ongewijzigd gebruiken. Gebruik de knop Opslaan om je bewerkingen in het .po-bestand te zetten. Om de lokalisatie in WordPress te kunnen gebruiken, exporteer je de vertaling via Bestand – MO-bestand aanmaken…
De volgende stap is het in gebruik nemen van de nieuw aangemaakte taalbestanden.
3. Handmatig lokaliseren met het vertaalplatform van WordPress
Een andere optie is het vertaalplatform van WordPress zelf. Ga daarvoor naar https://translate.wordpress.org/locale/nl/default/ en kies het bijbehorende tabblad Themes of Plugins. Zoek in het veld Search projects … naar het gewenste thema of de gewenste plug-in. In ons voorbeeld is dat ‘Mailpoet’. Klik vervolgens op de knop Translate Project.
Klik nu in de lijst op Stable (laatste release).
Op de volgende pagina scroll je helemaal naar beneden. Hier vind je de optie om de huidige vertaalstatus van de plug-in of het thema als een bestand te exporteren. Selecteer all current en Portable Object Message Catalog (.po/.pot) en klik op Export.
Als je wilt, kun je in plaats daarvan natuurlijk ook meedoen aan het gemeenschappelijke vertaalproject. Maar met het .po-bestand dat je net hebt gedownload, kun je ook snel de plug-in of het thema apart vertalen, alleen voor jou.
Gelokaliseerde taalbestanden in WordPress zetten
Het toevoegen van de gelokaliseerde taalbestanden is betrekkelijk eenvoudig. Alleen als je een childthema gebruikt, moet je een kleine omweg nemen om het te laten werken.
Met de beschreven methode worden de taalbestanden niet overschreven bij het updaten van het thema of de plug-in. Dit heeft natuurlijk het voordeel dat je lokalisatie permanent bewaard blijft. Maar het probleem is net als bij Loco Translate dat wijzigingen in updates niet in je lokalisatie worden overgenomen. Met andere woorden: je moet na updates controleren of er iets belangrijks is veranderd. Zo ja, moet je de taalbestanden aanpassen.
Kom je dus vreemde fouten tegen in verband met de plug-in of het thema? Of zie je Engelstalige teksten en termen? Dan moet je de lokalisatie nog eens goed controleren en bijwerken. Bij basisupdates kan het ook gebeuren dat je taalbestanden niet meer als één geheel passen. Dan moet je lokalisatie geheel opnieuw aanmaken, dus op basis van de nieuwe taalbestanden.
Waar moeten de taalbestanden komen?
De integratie van aangepaste taalbestanden voor plug-ins en themes gebeurt via de directories in je webspace:
/wp-content/languages/themes
respectievelijk
/wp-content/languages/plug-ins
De namen voor taalbestanden moeten gestructureerd zijn volgens het volgende schema. Anders kan WordPress de lokalisatie niet herkennen:
text-domain-nl_NL.po en text-domain-nl_NL .mo
text-domain vervang je hierbij door het tekstdomein van de plug-in of het thema. Voor de plug-in Antispam Bee bijvoorbeeld luidt de bestandsnaam antispam-bee-nl_NL.po, voor het standaardthema Twenty-Twenty-One is het twentytwentyone-nl_NL.po. Doorgaans hoef jij je over het tekstdomein geen zorgen te maken, omdat je de bestandsnaam voor de taalbestanden al kent. Voor je aanpassingen heb je immers het oorspronkelijke .po-bestand gebruikt dat deze naam heeft. Als dit niet het geval is, vind je deze informatie voor themes in de commentaarregels, aan het begin van het bestand style.css. Dat staat in de map van het thema. Voor het standaardthema Twenty-Twenty-One staat het bijvoorbeeld in de map /wp-content/themes/twentytwentyone:
Voor plug-ins staat het tekstdomein meestal in de inleidende commentaarregels van het PHP-bestand. Dat vind je in de map van de plug-in.
Bijvoorbeeld de plug-in Antispam Bee: ga naar de plug-inmap /wp-content/plug-ins/antispam-bee/ en open het PHP-bestand daar (in het voorbeeld: antispam_bee.php) met een teksteditor. In de eerste regels van de programmacode vind je het tekstdomein.
Upload taalbestanden naar de juiste map
Upload je aangepaste taalbestanden .po en .mo via een FTP-programma naar de map /wp-content/languages/plug-ins/ of /wp-content/languages/themes. Natuurlijk kun je daar bestaande bestanden overschrijven, maar we raden je wel aan een back-up te maken. Zo kun je de oorspronkelijke vertaling snel kunt terugzetten als dat nodig is.
Als je later de lokalisatie wilt bijwerken of vernieuwen, hoef je alleen maar de bestanden die bij de plug-in horen te overschrijven met de nieuwe versie.
Speciaal geval: lokalisatie voor een childthema
De beschreven methode werkt niet als je een childthema gebruikt. Maar ook daar is een oplossing voor.
Maak een submap met de naam /languages in de map van je childthema.
Voordat je de zelfgemaakte taalbestanden uploadt, moet je de bestandsnamen aanpassen. In tegenstelling tot de hierboven beschreven methode mag het tekstdomein geen deel uitmaken van de bestandsnaam. In plaats daarvan zijn de bestandsnamen voor de Nederlandse versie eenvoudig: nl_NL.po en nl_NL.mo.
In het bestand functions.php van het childthema voeg je nu de volgende coderegels toe, direct onder de regel <?php:
function my_child_locale() {
load_child_theme_textdomain( 'THEME-TEXTDOMAIN', get_stylesheet_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'my_child_locale' );
Vervang THEME-TEXTDOMAIN door het tekstdomein van het hoofdthema (niet van het childthema!).
Conclusie
Op maat gemaakte vertalingen voor WordPress themes of plug-ins zijn soms ingewikkeld. Maar met wat werk kun je ze toch doorvoeren, zodra je de basisprincipes begrijpt.
Je hoeft trouwens niet alle termen en teksten te vertalen. Het is voldoende als je alleen vertaalt wat je gebruikers werkelijk zien. Voor de rest valt WordPress automatisch terug op het oorspronkelijke taalbestand. Dus als je het niet erg vindt om in de back-end met de Engelse instellingen en opties van de plug-in te werken, kun je in elk geval dat deel van het vertaalwerk achterwege laten.
Al met al blijft de moeilijkheid met eigen vertalingen dat veranderingen in de plug-in of het thema je altijd dwingen je lokalisatie aan te passen of helemaal te vernieuwen. In dit verband moet je overwegen of de aanpassingen echt nodig zijn, of dat je liever bij de standaardvertaling van de plug-in of het thema blijft. Bijvoorbeeld als je in de toekomst niet allerlei extra werk wilt hebben. Je kunt misschien ook gewoon met de Engelse versie blijven werken, of een alternatieve Nederlandstalige oplossing kiezen.
Je kunt pas een reactie plaatsen nadat je ons privacybeleid en cookies hebt geaccepteerd. Om privacyredenen mogen wij jouw persoonsgegevens anders niet verwerken.
Klik onderaan de pagina op de blauwe button OK. Nadat je de pagina opnieuw hebt geladen, kun je een reactie achterlaten.