

Voor wie het nog niet wist: WordPress vormt de basis van bijna 43 procent van alle websites wereldwijd. Bovendien is het Content Management Systeem (CMS) beschikbaar in 205 verschillende talen. Aangezien het platform wereldwijd actief is, is lokalisatie van groot belang. Het i18n-proces van WordPress speelt hierbij een cruciale rol.
De ‘lift pitch’ voor i18n is dat het een manier is om de code van je thema en plug-in voor te bereiden op vertaling. Van daaruit kun je nauwkeurige vertalingen naar andere talen toepassen, je aanpassen aan andere culturen en regio’s, en de vruchten daarvan plukken.
In dit artikel gaan we dieper in op WordPress i18n en laten we je zien hoe je dit kunt toepassen. Hoewel enige kennis van programmeren wel handig is, zullen we de stappen ook stap voor stap uitleggen – en daarbij uitleggen wat WordPress i18n precies is (en wat het doet).
Hoewel ‘leet speak’ een overblijfsel is uit een vervlogen tijdperk, is het in kringen van webontwikkelaars nog steeds springlevend. Je zult weliswaar niet veel ‘l33t’ en ‘n00b’ tegenkomen, maar wel heel veel numeroniemen: bijvoorbeeld ‘a11y’ als het over toegankelijkheid gaat.
Eigenlijk is i18n ook een numeroniem. Het staat voor ‘internationalisering’ en bestaat uit de eerste en laatste letter, gecombineerd met een getal dat aangeeft hoeveel andere letters er tussen zitten. Je zult ook merken dat lokalisatie zijn eigen numeroniem heeft: l10n. Er zijn nog meer numeroniemen, zoals globalisering (g11n), europeanisering (e13n) en nog veel meer.
Hier gaan we specifiek in op internationalisering. In de officiële toelichting van het World Wide Web Consortium (W3C) wordt opgemerkt dat het ontwerp en de ontwikkeling hier een eenvoudige lokalisatie mogelijk maken voor gebruikers uit verschillende culturen, regio’s, talen en meer.
Het is belangrijk om te weten dat internationalisering slechts een eerste stap is in het vertaalproces. Vervolgens voer je de lokalisatie uit met behulp van een geschikte vertaaloplossing.
Wat het i18n-proces zelf betreft, zijn er een aantal stappen die de WordPress-ontwikkelaar doorloopt voordat hij het werk aan de vertaler overdraagt. Kort samengevat verloopt het lokalisatieproces als volgt:
De vertaler gebruikt het .pot-bestand om de lokalisatie uit te voeren; het is dus een belangrijk onderdeel van het proces.
Voor wie het nog niet weet: POT-bestanden zijn een voorbeeld van bestanden die je met de GNU gettext-tool kunt genereren. Dit is technologie en software uit de jaren 80 die nog steeds van onschatbare waarde is voor iedereen die zich vandaag de dag bezighoudt met i18n.
Je hoeft niet precies te weten wat dit is om WordPress i18n uit te voeren, maar het is handig om in grote lijnen te begrijpen wat het doet en wat het oplevert. Beschouw gettext als een framework dat WordPress helpt bij het genereren van meertalige berichten.
Je zult vaak een aantal bestanden tegenkomen die verband houden met gettext:
Met dit alles in gedachten kun je bijna aan het i18n-proces beginnen. Allereerst is het verstandig om je WordPress-site voor te bereiden op het werk dat voor je ligt.
Zoals bij elk project dat betrekking heeft op de kernbestanden van WordPress, moet je ervoor zorgen dat je installatie ‘schoon’ is voordat je begint. Zorg er ook voor dat je eventuele wijzigingen ongedaan kunt maken, voor het geval het ergste scenario zich voordoet en je de installatie moet herstellen.
Er zijn dus twee vrijwel onontkoombare ‘voorbereidende stappen’ die voorafgaand aan het i18n-proces moeten worden doorlopen:
Wat dat laatste betreft, raden we u aan de plug-ins die u wilt behouden bij te werken en de overbodige plug-ins te verwijderen.
We gaan opnieuw aan de slag met de kernbestanden van WordPress, dus het is handig als je weet hoe deze werken en wat erin staat. Sommige begrippen die we in deze tutorial bespreken, worden niet per se uitgelegd, maar de stappen zelf wel.
Zodra al deze punten zijn afgehandeld, kun je aan de slag gaan met het i18n-proces.
In de komende paar hoofdstukken laten we je zien hoe je WordPress i18n kunt toepassen op je thema’s en plug-ins. Hoewel sommige hoofdstukken hier en daar veel code bevatten en technisch van aard zijn, zullen we alles zo gedetailleerd mogelijk uitleggen en verwijzen naar aanvullende bronnen die je mogelijk nodig hebt.
We beginnen met uit te leggen hoe je je thema’s kunt internationaliseren.
De eerste stap is het aanpassen van de header van het thema, zodat deze een tekstdomein en een domeinpad bevat. Kort gezegd:
Hiervoor hoef je alleen maar een paar woorden toe te voegen aan het header-bestand van het thema:
/*
Themanaam: My Custom Theme
Auteur: Weglot
Tekstdomein: my-theme
Domeinpad: /languages/
*/
Vervolgens moet je dat tekstdomein laden met behulp van een ‘action’ en een ‘function’:
add_action( 'after_setup_theme', 'my_theme_setup' );
function my_theme_setup() {
load_theme_textdomain( 'my-theme', get_template_directory() . '/languages' );
}
Deze code moet in het bestand `functions.php` van je thema worden geplaatst, en niet in dat van je website. Zodra je dit hebt gedaan, kun je beginnen met het uitvoeren van een ‘string-audit’. Hiervoor moet je alle tekstreeksen in je thema omringen met vertaalfuncties. Er zijn twee functies die je vaak zult gebruiken:
Deze functies vereisen twee argumenten: de tekstreeks en het tekstdomein. Bijvoorbeeld:
__()
$welcome = __( ‘Hallo! Welkom op het dashboard!’, ‘my-theme’ );
_e( ‘Weer hallo!’, ‘my-theme’ );
Hoewel de details van de verschillende vertaalfuncties buiten het bestek van dit artikel vallen, bevat het WordPress Theme Developers’ Handbook vrijwel alle informatie die je nodig hebt om deze klus te klaren.
Nu kun je een POT-bestand aanmaken. Er zijn tal van manieren om dit te doen, maar WordPress raadt Poedit aan – een gratis en open-sourceprogramma.
Zodra je Poedit hebt gedownload en geïnstalleerd, ga je in de werkbalk naar Bestand > Nieuw:

Maak vervolgens een nieuwe catalogus aan. Je kunt in het hoofdscherm op de link ‘Uit bronnen extraheren’ klikken:

Vul vervolgens op het tabblad ‘Vertalingseigenschappen’ de velden voor de projectnaam, het taalteam en de primaire taal in:

Als het bestand nieuw is, kun je het hier opslaan (de bestandsnaam moet dezelfde zijn als de slug van je thema). Selecteer vervolgens het tabblad ‘Bronpaden’ en zoek de map /languages/ op je computer:

Op het laatste tabblad ‘Bronnen – Trefwoorden’ vind je een lijst met de vertaalfuncties die je in je thema hebt gebruikt:

Je kunt ze hier het beste toevoegen, hoewel het misschien lastig is om de juiste trefwoorden te vinden. Om te beginnen kun je de volgende lijst gebruiken:
__
_e
_x
_ex
_n
_nx
_n_noop
_nx_noop
translate_nooped_plural
number_format_i18n
date_i18n
esc_html__
esc_html__
esc_html_x
esc_attr__
esc_attr_e
esc_attr_x
Zodra je op ‘Bevestigen’ hebt geklikt, sla je de wijzigingen op en bekijk je je nieuwe bestanden: je ziet dan MO- en PO-bestanden op je computer staan. Als je het PO-bestand dupliceert, kun je de extensie .POT toevoegen, waarna je verder kunt gaan met de lokalisatie.
Je eerste taak hier lijkt op een thema: werk eerst de velden voor het tekstdomein en het domeinpad van de plug-in in de header bij:
/*
Naam plug-in: My Custom Plugin
URI plug-in:weglot
Beschrijving: Een aangepaste plug-in om vertaling en i18n te demonstreren.
Auteur: Weglot
Versie: 1.0
URI auteur:weglot
Tekstdomein: my-plugin
Domeinpad: /languages/
*/
We raden aan om een map /languages/ aan te maken voor het domeinpad en deze in te stellen als het domeinpad. Van daaruit kun je het tekstdomein voor de plug-in laden, maar deze keer kun je de volgende functie aan je code toevoegen, in plaats van via functions.php:
load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path );
Dit laat WordPress echter alleen weten dat er een vertaalbestand beschikbaar is. Om het te laden, moet je de functie in een actie plaatsen:
add_action( 'plugins_loaded', 'plugin_load_td' );function plugin_load_td() {
load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
Een groot deel van de string-audit verloopt op dezelfde manier als bij thema-i18n. De laatste stap is het genereren van een POT-bestand volgens dezelfde procedure als eerder; het gegenereerde bestand komt in de huidige werkdirectory terecht.
Je hebt inmiddels vast wel door hoe geweldig WordPress i18n kan zijn. Het is ideaal als je thema’s of plug-ins ontwikkelt en deze vertaalbaar wilt maken. Maar zoals bij alle geweldige dingen zijn er ook enkele nadelen.
Als een plug-in bijvoorbeeld door gebruikers gegenereerde inhoud bevat, maakt deze geen deel uit van de i18n-vertaling.
Het i18n-proces maakt vertalingen mogelijk voor statische elementen die je programmeert, zoals knoptekst. Als de gebruiker echter een specifieke zin voor een veld wil invoeren, unieke labels wil aanmaken of andere ‘client-side’ elementen wil toevoegen, kun je hier geen rekening mee houden. Dat zou weliswaar mogelijk zijn, maar het is een complexe taak die buiten het bestek van een artikel als dit valt.
Als je geen ontwikkelaar bent, helpt i18n je bovendien niet bij het vertalen van je website. Hiervoor heb je een plug-in nodig, en misschien kun je beter meteen doorgaan naar het volgende gedeelte voor een geschikte optie.
Het is ook goed om te weten dat, hoewel vertaalplugins op veel manieren kunnen helpen, een website gemiddeld vijf plugins nodig heeft om volledig meertalig te zijn. Een oplossing als Weglot snel werkt, alle vertaalbare onderdelen van een website kan detecteren en compatibel is met vrijwel elk thema en elke plug-in. Dit geldt ongeacht of die thema’s en plug-ins vertaalbaar zijn.
Bovendien Weglot het thema, de plug-in en de belangrijkste inhoudselementen uit de HTML-pagina van de frontend en maakt deze vertaalbaar. Er zijn dus geen .pot- en .po-bestanden nodig, en de gettext-methode is evenmin vereist.
In technische termen gaan we het nu hebben over de lokalisatie van uw inhoud – het daadwerkelijke vertaalproces.
Een goede vertaalstrategie is geen sinecure. Het is hard werken en vergt veel planning om ervoor te zorgen dat je content op de juiste manier verschillende culturen, regio’s en talen bereikt. Het gaat hierbij niet alleen om de vertaalde tekst in de hoofdtekst van je content. Je moet ook rekening houden met alle volgende punten:
Als je gebruikmaakt van e-commerce, zijn er ook hier tal van zaken waar je rekening mee moet houden. Je moet er bijvoorbeeld voor zorgen dat elk onderdeel op je afrekenscherm volledig vertaald is – met name de velden voor de valuta en de btw:

Bovendien is verzendinformatie een cruciaal onderdeel dat volledig en in hoge kwaliteit moet worden vertaald. Je wilt immers dat klanten geen enkel excuus hebben om niet op de knop ‘Kopen’ te klikken, ongeacht de taal die je gebruikt.

Weglot neemt een groot deel van het zware werk voor je uit handen. Het is een waardevolle bondgenoot bij je WordPress i18n-inspanningen, omdat het elk aspect van je site detecteert dat je kunt vertalen. Vervolgens voert het voor je een eerste laag machinevertaling uit:

Dit is misschien al voldoende voor uw behoeften, maar Weglot u helpen om nog een stap verder te gaan. U kunt professionele vertalingen invoeren, de bestaande vertalingen bewerken en nog veel meer. Dit biedt u alle flexibiliteit die u nodig hebt om uw website volledig te lokaliseren.
WordPress is bijna overal ter wereld beschikbaar. Daarom zijn geïnternationaliseerde thema’s en plug-ins een uitkomst bij het vertalen naar andere talen. WordPress i18n is een onmisbaar onderdeel voor ontwikkelaars die met het platform werken.
Als je je thema kunt internationaliseren zodat gebruikers vertalingen kunnen maken zonder de broncode aan te passen, zit je goed. Maar het feit dat je i18n-concepten toepast, betekent nog niet dat je thema of plug-in ook daadwerkelijk vertaald is.
Om deze stap uit te voeren, kun je het beste gebruikmaken van een oplossing zoals Weglot. Deze oplossing is compatibel met tal van verschillende platforms en technologieën en werkt uitstekend samen met WordPress. Zodra je het i18n-gedeelte van je workflow hebt afgerond, kun je Weglot inzetten Weglot nauwkeurige en eenvoudig te implementeren vertalingen in vrijwel elke taal Weglot genereren.
Om het zelf te ontdekken, Weglot een gratis proefperiode van 10 dagen Weglot , zonder aankoopverplichting.