Gids voor ontwikkelaars: WordPress blokthema’s meertalig maken

ict


Blokthema’s vertalen WordPress anders dan een typische aanpak. Traditionele PHP templatebestanden met vertaalfuncties werken niet met HTML templates, blokken met JavaScript en de Site Editor. Deze verschuiving vereist dat je anders moet omgaan met de internationaliseringssystemen van WordPress blokken.

Deze gids biedt strategieën om je blokthema’s meertalig te maken. Je leert hoe je door de uitdagingen van het vertalen van blokthema’s navigeert, oplossingen toepast en integreert met vertaalplugins.

Waarom traditionele vertaalmethoden niet werken met blokthema’s (en hoe je het oplost)

Blokthema’s vervangen veel van de PHP-bestanden van WordPress door HTML-templates die blok-opmaak bevatten. Deze overstap brengt echter uitdagingen met zich mee, omdat HTML-templates geen PHP-vertaalfuncties kunnen uitvoeren zoals _() of _e(). Dit maakt de vertaalstrings die je al hebt volledig nutteloos in statische bestanden.

WordPress 6.8 brengt een aantal verbeteringen die de internationalisatie van blokthema’s vereenvoudigen. Thema’s met de juiste headers voor Text Domain en Domain Path hebben niet langer manual load_theme_textdomain() calls nodig.

In plaats daarvan laadt WordPress automatisch vertaalbestanden en geeft wp-content/languages/themes/ voorrang boven themamappen om de prestaties te verbeteren.

Om te beginnen stel je je thema in volgens de klassieke aanpak door metadata toe te voegen aan het style.css bestand.

/*
Theme Name: My Block Theme
Text Domain: my-block-theme
Domain Path: /languages
*/

Let op dat de kop Text Domain moet overeenkomen met de mapnaam van je thema (meestal in kebab-case) om ervoor te zorgen dat vertaalbestanden correct worden geladen in recente WordPress versies.

Net als bij style.css vereist je functions.php bestand minimale instellingen:

<?php
// Optional in WordPress 6.8+ but included for backward compatibility
function my_block_theme_setup() 
    load_theme_textdomain( 'my-block-theme', get_template_directory() . '/languages' );


add_action( 'after_setup_theme', 'my_block_theme_setup' );

// Register block scripts with translation support
function my_block_theme_scripts() 
    wp_enqueue_script(
        'my-block-theme-scripts',
        get_template_directory_uri() . '/assets/js/theme.js',
        array( 'wp-i18n' ),
        '1.0.0',
        true
    );

    wp_set_script_translations( 
        'my-block-theme-scripts', 
        'my-block-theme', 
        get_template_directory() . '/languages' 
    );


add_action( 'wp_enqueue_scripts', 'my_block_theme_scripts' );

Het belangrijkste verschil tussen klassieke en blokthema’s is hier dat de laatste de verantwoordelijkheid voor vertalingen splitst tussen server-side PHP en client-side JavaScript. Klassieke thema’s moeten daarentegen vertrouwen op PHP om de meeste vertalingen af te handelen.



https://kinsta.com/nl/blog/blokthemas-internationalisering/