Maak je WordPress thema meertalig
Om een website meertalig te maken maakt WordPress gebruik van .po (portable object) en .mo (machine object) vertaal bestanden. Deze bestanden maken gebruik van het GNU Gettext format. Elke taal heeft zijn eigen .po bestand en is in WordPress via de taalcode (bijv. nl_NL) aangeroepen. Standaard wordt de engelse versie gebruikt, tenzij je in het wp-config.php bestand de taal van de website heb gedefineerd, zoals hieronder.
define('WPLANG', 'nl_NL');
Aanroep van taal tekst
Om de tekst van zo’n vertaal bestaand aan te roepen binnen WordPress maak gebruik je 2 functies: _e en __ (twee underscores). De _e functie wordt gebruikt voor het printen van simpele tekst (echo), de __ functie om de tekst terug te geven naar bijvoorbeeld een variabele. Beide functies hebben 2 parameters: de naam van tekstvertaling en het “domein” van de tekstvertaling. Het domein is een unieke naam binnen de plugins en thema’s directories en geeft aan in welke bestand de tekstvertaling dient te worden gezocht. Indien men een Nederlandse vertaling van de onderstaande code nodig heeft, gaat WordPress op zoek naar het bestand “textdomain-nl_NL.mo”.
<?php _e( 'Some text to translate and display.', 'textdomain' ); ?>
Aanpassen van vertalingen: POEdit
Voor het maken van een .mo bestand heb je .po bestand nodig. Voor het bewerken van .po bestand zijn er verschillende tools en websites beschikbaar. Het programma wat ik hiervoor gebruik is het gratis programma POEdit. Met POEdit kun je gemakkelijk een .po bestand openen, bewerken en opslaan. Het .mo bestand wordt door POEdit direct aangemaakt volgens de opgegeven bestandsnaam.
Teksten uit je eigen thema vertalen
Indien je teksten in je eigen (sub)thema wilt vertalen, kun je in de functions.php de onderstaande code gebruiken.
add_action('after_setup_theme', 'my_theme_setup'); function my_theme_setup(){ load_theme_textdomain('my_unique_theme_name', get_stylesheet_directory() . '/languages'); }
Met de WordPress functie “load_theme_textdomain” worden jouw tekstbestanden met de namen my_unqiue_theme_name-[TaalCode].mo door WordPress ingeladen en bruikbaar in je code.