WordPress meertalig mutilang

Tips & tricks WordPress thema volledig multi-language opzetten

Leestijd: 4 minuten (714) words
profile image

Rick de Jong

Strategie

March 21, 2013 08:04

Tips & tricks WordPress thema volledig multi-language opzetten

We'll help you a little

De afgelopen tijd heb ik veel vragen gekregen over hoe je een WordPress thema zo goed en solide mogelijk multi-language op kan zetten. Er zijn veel plugins waar je dit mee kunt bereiken, maar het blijft lastig om álles vertaald te krijgen. 

Met een redelijk achterhaald if/else statement kan je nog redelijk ver komen, maar binnen WordPress zijn er natuurlijk betere oplossingen. Wat we in deze how-to gaan behandelen is onderstaande voorbeeld: Stel je hebt de pagina's, berichten en menu's volledig vertaald met bijvoorbeeld WMPL, maar je blijft tegen het probleem aanlopen dat de 404 pagina niet vertaald kan worden, "zoeken" in de zoekbalk maar in het Nederlands blijft staan en ook "Laat een reactie achter" krijg je niet eenvoudig vertaald. 

Je zou dit - zoals net uitgelegd - met een if/else statement kunnen doen. Is de taal Nederlands, toon dan zoeken. Is de taal engels, toon dan search en in alle andere situaties toon je... niks? Maar wat als er nu ineens twee talen bijkomen, bijvoorbeeld: Spaans en Italiaans. Dan moet je het volledige thema door om de if/else statements uit te breiden. Niet handig dus!

Oplossing

Wat we gaan doen, is werken met de textdomain functie die WordPress standaard ondersteund. Het enige dat je hiervoor hoeft te doen, is onderstaande functie kopiëren in functions.php van je huidige thema.

load_theme_textdomain('tsd_vertalen', get_template_directory() . '/languages');
 $locale = get_locale();
 $locale_file = TEMPLATEPATH . '/languages/' . $locale . '.php';
if(is_readable($locale_file)) {
 require_once($locale_file);
}

Wat belangrijk is om te onthouden van deze functie, is "tsd_vertalen". Deze hebben we nodig in de rest van ons thema. De laatste stap van de voorbereiding is het aanmaken van de language map, deze mag je aanmaken in de themafolder. Je kunt dus simpelweg de map "languages" aanmaken, net als img/images en andere mappen.

Vertaalbaar

De voorbereidingen zijn nu getroffen en vanaf nu wordt het nog simpeler. We gaan woorden en zinnen vertaalbaar maken! Wat we daarvoor gaan doen is het volgende. Open een bestand, bijvoorbeeld 404.php en zoek naar een zin die vertaald moet worden. Stel dat er een regel staat met "404 - Pagina niet gevonden", dan pas je deze aan naar de volgende code:

<?php _e('404 - Pagina niet gevonden', 'tsd_vertalen'); ?>

Met deze functie geven we aan dat de regel "404 - Pagina niet gevonden" vertaald moet worden via het textdomain van "tsd_vertalen" zoals in de functie is te zien die we net in functions.php hebben gezet. Meer dan dit is er niet nodig! Je kan op deze manier de kleinste woorden en de meest lange zinnen vertalen.
 

Hoe dan?

Dat is een goede vraag; hoe vertaal je deze zinnen nu dan naar het Engels, Duits, Spaans.. En oh ja, Italiaans. Dat kan heel eenvoudig via een plugin, namelijk Codestyling Localization

Deze plugin is gratis te verkrijgen via de WordPress Repo en doorloopt alle woorden en zinnen die op deze manier ter vertaling zijn aangeboden. Vervolgens genereert de plugin automatisch een *.mo en *.po bestand voor de taal die jij aangeeft. 

Zo kun je dus op een later tijdstip heel eenvoudig een taal toevoegen aan je website en hoef je niet al je thema bestanden te doorlopen. Uiteraard kun je met een *.po editor ook zelf aan de slag gaan en handmatig een vertaling maken, maar dat vergt iets meer productkennis van de programma's die daarvoor nodig zijn en is dus - gezien de eenvoud van de Codestyling Localization plugin - overbodig.