handleiding
Tips & tricks WordPress thema volledig multi-language opzetten
door WordPress theming
inTips & tricks WordPress thema volledig multi-language opzetten
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.