{"id":63143,"date":"2025-08-25T08:31:09","date_gmt":"2025-08-25T06:31:09","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=63143&#038;preview=true&#038;preview_id=63143"},"modified":"2025-10-08T13:50:43","modified_gmt":"2025-10-08T11:50:43","slug":"blokthemas-internationalisering","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/","title":{"rendered":"Gids voor ontwikkelaars: WordPress blokthema&#8217;s meertalig maken"},"content":{"rendered":"<p>Blokthema&#8217;s vertalen WordPress anders dan een typische aanpak. Traditionele PHP templatebestanden met vertaalfuncties werken niet met <a href=\"https:\/\/kinsta.com\/blog\/what-is-html\/\">HTML<\/a> templates, blokken met JavaScript en de <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-full-site-editing\/\">Site Editor<\/a>. Deze verschuiving vereist dat je anders moet omgaan met de internationaliseringssystemen van WordPress blokken.<\/p>\n<p>Deze gids biedt strategie\u00ebn om je blokthema&#8217;s meertalig te maken. Je leert hoe je door de uitdagingen van het vertalen van blokthema&#8217;s navigeert, oplossingen toepast en integreert met vertaalplugins.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Waarom traditionele vertaalmethoden niet werken met blokthema&#8217;s (en hoe je het oplost)<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-blokthema-ontwikkelen\/\">Blokthema&#8217;s<\/a> 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 <code>_()<\/code> of <code>_e()<\/code>. Dit maakt de vertaalstrings die je al hebt volledig nutteloos in statische bestanden.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-6-8\/\">WordPress 6.8<\/a> brengt een aantal verbeteringen die de internationalisatie van blokthema&#8217;s vereenvoudigen. Thema&#8217;s met de juiste <a href=\"https:\/\/docs.sevalla.com\/applications\/reference\/http-headers\">headers<\/a> voor <strong>Text Domain<\/strong> en <strong>Domain Path<\/strong> hebben niet langer <code>manual load_theme_textdomain()<\/code> calls nodig.<\/p>\n<p>In plaats daarvan laadt WordPress automatisch vertaalbestanden en geeft <code>wp-content\/languages\/themes\/<\/code> voorrang boven themamappen om de prestaties te verbeteren.<\/p>\n<p>Om te beginnen stel je je thema in volgens de klassieke aanpak door metadata toe te voegen aan het <code>style.css<\/code> bestand.<\/p>\n<pre><code class=\"language-css\">\/*\nTheme Name: My Block Theme\nText Domain: my-block-theme\nDomain Path: \/languages\n*\/\n<\/code><\/pre>\n<p>Let op dat de kop <strong>Text Domain<\/strong> moet overeenkomen met de mapnaam van je thema (meestal in <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Glossary\/Kebab_case\" target=\"_blank\" rel=\"noopener noreferrer\">kebab-case<\/a>) om ervoor te zorgen dat vertaalbestanden correct worden geladen in recente WordPress versies.<\/p>\n<p>Net als bij <code>style.css<\/code> vereist je <code>functions.php<\/code> bestand minimale instellingen:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/\/ Optional in WordPress 6.8+ but included for backward compatibility\nfunction my_block_theme_setup() {\n    load_theme_textdomain( 'my-block-theme', get_template_directory() . '\/languages' );\n}\n\nadd_action( 'after_setup_theme', 'my_block_theme_setup' );\n\n\/\/ Register block scripts with translation support\nfunction my_block_theme_scripts() {\n    wp_enqueue_script(\n        'my-block-theme-scripts',\n        get_template_directory_uri() . '\/assets\/js\/theme.js',\n        array( 'wp-i18n' ),\n        '1.0.0',\n        true\n    );\n\n    wp_set_script_translations( \n        'my-block-theme-scripts', \n        'my-block-theme', \n        get_template_directory() . '\/languages' \n    );\n}\n\nadd_action( 'wp_enqueue_scripts', 'my_block_theme_scripts' );\n<\/code><\/pre>\n<p>Het belangrijkste verschil tussen klassieke en blokthema&#8217;s is hier dat de laatste de verantwoordelijkheid voor vertalingen splitst tussen server-side PHP en client-side JavaScript. Klassieke thema&#8217;s moeten daarentegen vertrouwen op PHP om de meeste vertalingen af te handelen.<\/p>\n<h2>Zo bouw je block.json vertalingen<\/h2>\n<p>Het <a href=\"https:\/\/kinsta.com\/courses\/gutenberg-block-development\/plugin-file-block-json-file\/\">block.json<\/a> bestand is je &#8216;configuratiehub&#8217; voor het blok dat je wilt vertalen. Het instellen van de juiste internationalisatie zorgt ervoor dat je blokken zowel in de editor als op de front-end correct worden vertaald.<\/p>\n<p>De <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-metadata\/\" target=\"_blank\" rel=\"noopener noreferrer\">canonieke manier om een blok te registreren<\/a> is via <code>block.json<\/code>. Beginnen met de configuratie <code>textdomain<\/code> betekent dat WordPress de velden <strong>title<\/strong>, <b>description <\/b>en <b>keywords <\/b>kan vertalen als de <code>textdomain<\/code> is ingesteld:<\/p>\n<pre><code class=\"language-json\">{\n\t\"$schema\": \"https:\/\/schemas.wp.org\/trunk\/block.json\",\n\t\"apiVersion\": 3,\n\t\"name\": \"my-theme\/testimonial\",\n\t\"title\": \"Testimonial\",\n\t\"category\": \"text\",\n\t\"description\": \"Display customer testimonials\",\n\t\"keywords\": [\"quote\", \"review\", \"testimonial\"],\n\t\"textdomain\": \"my-block-theme\",\n\t\"attributes\": {\n\t\t\"content\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"source\": \"html\",\n\t\t\t\"selector\": \"blockquote\"\n\t\t}\n\t}\n}\n<\/code><\/pre>\n<p>Scenario&#8217;s die &#8216;context&#8217; vereisen, hebben echter een server-side registratie nodig. Context is in dit geval belangrijk omdat hetzelfde woord anders vertaald kan worden op basis van het gebruik. Bijvoorbeeld, &#8220;berichten&#8221; als zelfstandig naamwoord versus als werkwoord vereist verschillende vertalingen in veel talen:<\/p>\n<pre><code class=\"language-php\">function my_theme_register_testimonial_block() {\n\tregister_block_type_from_metadata(\n\t\tget_template_directory() . '\/blocks\/testimonial',\n\t\tarray(\n\t\t\t'title' =&gt; _x( 'Testimonial', 'block title', 'my-block-theme' ),\n\t\t\t'description' =&gt; _x(\n\t\t\t\t'Display customer testimonials', \n\t\t\t\t'block description', \n\t\t\t\t'my-block-theme'\n\t\t\t),\n\n\t\t\t'keywords' =&gt; array(\n\t\t\t\t_x( 'quote', 'block keyword', 'my-block-theme' ),\n\t\t\t\t_x( 'review', 'block keyword', 'my-block-theme' )\n\t\t\t)\n\t\t)\n\t);\n}\n\nadd_action( 'init', 'my_theme_register_testimonial_block' );\n<\/code><\/pre>\n<p>Elke <a href=\"https:\/\/kinsta.com\/nl\/blog\/uitbreiden-wp-core-blokken\/#registering-block-variations\">blokvariatie<\/a> die je toevoegt heeft ook een gestructureerde naam nodig, omdat WordPress zoekt naar specifieke patronen bij het laden van je vertalingen. Elke variatienaam wordt onderdeel van de vertaalsleutel:<\/p>\n<pre><code class=\"language-json\">{\n\t\"name\": \"my-theme\/button\",\n\t\"title\": \"Button\",\n\t\"textdomain\": \"my-block-theme\",\n\t\"variations\": [{\n\t\t\t\"name\": \"primary\",\n\t\t\t\"title\": \"Primary Button\",\n\t\t\t\"attributes\": {\n\t\t\t\t\"className\": \"is-style-primary\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"secondary\",\n\t\t\t\"title\": \"Secondary Button\",\n\t\t\t\"attributes\": {\n\t\t\t\t\"className\": \"is-style-secondary\"\n\t\t\t}\n\t\t}\n\t]\n}\n<\/code><\/pre>\n<p>JavaScript internationalisatie vereist dat je <a href=\"https:\/\/developer.wordpress.org\/apis\/internationalization\/internationalization-functions\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress i18n functies<\/a> importeert en de scriptvertalingen configureert. Dit komt omdat de <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-full-site-editing\/\">Site Editor<\/a> in de browser draait en niet op de server. Omdat PHP vertaalfuncties niet bestaan in JavaScript, biedt WordPress gelijkwaardige functies via het <code>@wordpress\/i18n<\/code> pakket:<\/p>\n<pre><code class=\"language-js\">import {\n\tregisterBlockType\n} from '@wordpress\/blocks';\nimport {\n\t__\n} from '@wordpress\/i18n';\nimport {\n\tuseBlockProps,\n\tRichText\n} from '@wordpress\/block-editor';\n\nregisterBlockType('my-theme\/testimonial', {\n\tedit: ({\n\t\tattributes,\n\t\tsetAttributes\n\t}) =&gt; {\n\t\tconst blockProps = useBlockProps();\n\n\t\treturn ( &lt; div { ...blockProps } &gt;\n\t\t\t&lt; RichText tagName = \"blockquote\" value = { attributes.content } onChange = { (content) =&gt; setAttributes({\n\t\t\t\t\tcontent\n\t\t\t\t})\n\t\t\t}\n\t\t\tplaceholder = {\n\t\t\t\t__('Add testimonial text...', 'my-block-theme')\n\t\t\t}\n\t\t\t\/&gt; &lt; cite &gt;\n\t\t\t&lt; RichText tagName = \"span\" value = { attributes.author } onChange = { (author) =&gt; setAttributes({\n\t\t\t\t\tauthor\n\t\t\t\t})\n\t\t\t}\n\t\t\tplaceholder = {\n\t\t\t\t__('Author name', 'my-block-theme')\n\t\t\t}\n\t\t\t\/&gt; &lt; \/cite&gt; &lt; \/div&gt;\n\t\t);\n\t}\n});\n<\/code><\/pre>\n<p>Daarnaast is het een goed idee om JSON <a href=\"https:\/\/kinsta.com\/nl\/blog\/zo-vertaal-je-een-website\/\">vertaalbestanden<\/a> voor JavaScript te genereren, omdat WordPress een andere indeling gebruikt voor vertalingen aan de clientzijde. PHP gebruikt <code>.mo<\/code> bestanden, maar JavaScript heeft <code>.json<\/code> bestanden nodig met specifieke naamgevingsconventies. Je kunt dit automatiseren met behulp van <a href=\"https:\/\/kinsta.com\/nl\/blog\/wp-cli\/\">WP-CLI<\/a> commando&#8217;s:<\/p>\n<pre><code class=\"language-bash\"># Extract strings from JavaScript files into POT\nwp i18n make-pot . languages\/my-block-theme.pot\n\n# Convert PO files to JSON for JavaScript\nwp i18n make-json languages\/ --no-purge --pretty-print\n<\/code><\/pre>\n<p>De resulterende JSON bestanden volgen een consistent patroon: <code>{textdomain}-{locale}-{handle}.json<\/code>. WordPress kan deze dan laden wanneer je <code>wp_set_script_translations()<\/code> aanroept.<\/p>\n<h2>Je statische HTML templates omzetten in vertaalklare PHP componenten<\/h2>\n<p>Omdat HTML templates statisch zijn, is het een uitdaging om ze te gebruiken voor de internationalisatie van blokthema&#8217;s, omdat je bestaande vertaalfuncties en -technieken niet werken.<\/p>\n<p>PHP-ondersteunde templateonderdelen kunnen dit probleem oplossen, omdat WordPress ze verwerkt als PHP-bestanden ondanks dat er naar verwezen wordt in HTML-templates. Deze hybride aanpak behoudt de structuur van het blokthema en maakt tegelijkertijd dynamische inhoud mogelijk:<\/p>\n<pre><code class=\"language-js\">&lt;!-- templates\/page.html --&gt;\n&lt;!-- wp:template-part {\"slug\":\"header\",\"tagName\":\"header\"} \/--&gt;\n&lt;!-- wp:group {\"tagName\":\"main\",\"layout\":{\"type\":\"constrained\"}} --&gt;\n\n&lt;main class=\"wp-block-group\"&gt;\n&lt;!-- wp:post-title {\"level\":1} \/--&gt;\n     &lt;!-- wp:post-content \/--&gt;\n     &lt;!-- wp:template-part {\"slug\":\"post-meta\"} \/--&gt;\n&lt;\/main&gt;\n&lt;!-- \/wp:group \u2192\n&lt;!-- wp:template-part {\"slug\":\"footer\",\"tagName\":\"footer\"} \/--&gt;\n<\/code><\/pre>\n<p>Merk op dat het templateonderdeel PHP kan bevatten:<\/p>\n<pre><code class=\"language-js\">&lt;!-- parts\/post-meta.html --&gt;\n&lt;!-- wp:group {\"className\":\"post-meta\"} --&gt;\n&lt;div class=\"wp-block-group post-meta\"&gt;\n&lt;?php\n    echo sprintf(\n      \/* translators: 1: Post date, 2: Post author *\/\n      __( 'Published on %1$s by %2$s', 'my-block-theme' ),\n      get_the_date(),\n     get_the_author()\n     );\n     ?&gt;\n&lt;\/div&gt;\n&lt;!-- \/wp:group --&gt;\n<\/code><\/pre>\n<p>Complexe blokken hebben het <code>render.php<\/code> bestand nodig omdat sommige inhoud server-side verwerking vereist die blok-attributen alleen niet aankunnen. <a href=\"https:\/\/kinsta.com\/nl\/blog\/indexering-in-mysql-mariadb\/\">Database queries<\/a>, <a href=\"https:\/\/kinsta.com\/nl\/blog\/blokken-zichtbaarheid\/\">voorwaardelijke logica<\/a> en het genereren van dynamische inhoud vereisen allemaal PHP uitvoering:<\/p>\n<pre><code class=\"language-php\">\/\/ blocks\/recent-posts\/render.php\n&lt;?php\n$recent_posts = get_posts( array( \n'numberposts' =&gt; $attributes['count'] ?? 5 \n) );\n?&gt;\n&lt;div &lt;?php echo get_block_wrapper_attributes(); ?&gt;&gt;\n&lt;h3&gt;&lt;?php echo esc_html__( 'Recent Posts', 'my-block-theme' ); ?&gt;&lt;\/h3&gt;\n     &lt;?php if ( $recent_posts ) : ?&gt;\n      &lt;ul&gt;\n      &lt;?php foreach ( $recent_posts as $post ) : ?&gt;\n           &lt;li&gt;\n           &lt;a href=\"&lt;?php echo get_permalink( $post ); ?&gt;\"&gt;\n            &lt;?php echo get_the_title( $post ); ?&gt;\n           &lt;\/a&gt;\n\n           &lt;span class=\"post-date\"&gt;\n            &lt;?php echo get_the_date( '', $post ); ?&gt;\n           &lt;\/span&gt;\n           &lt;\/li&gt;\n         &lt;?php endforeach; ?&gt;\n         &lt;\/ul&gt;\n     &lt;?php else : ?&gt;\n         &lt;p&gt;&lt;?php esc_html_e( 'No posts found.', 'my-block-theme' ); ?&gt;&lt;\/p&gt;\n     &lt;?php endif; ?&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n<p>Dit betekent dat je je Block moet configureren om het renderbestand in <code>block.json<\/code> te gebruiken:<\/p>\n<pre><code class=\"language-js\">{\n\t\"name\": \"my-theme\/recent-posts\",\n\t\"render\": \"file:.\/render.php\",\n\t\"attributes\": {\n\t\t\"count\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"default\": 5\n\t\t}\n\t}\n}\n<\/code><\/pre>\n<h2>Dynamische inhoud vertalen voor custom velden en gebruikersinvoer implementeren<\/h2>\n<p>Ondanks dat dynamische inhoud veel voorkomt op WordPress websites, kan het vertaalproblemen veroorzaken omdat het in de database staat en niet in de bestanden van je thema. Daarom moeten <a href=\"https:\/\/kinsta.com\/nl\/partners\/weglot\/\">externe vertaalplugins<\/a> die je gebruikt deze inhoud apart van statische thema-strings identificeren en beheren.<\/p>\n<p>Dit is waar <a href=\"https:\/\/kinsta.com\/nl\/blog\/advanced-custom-fields\/\">het registreren van custom velden<\/a> met de juiste metaconfiguratie waardevol is, omdat vertaalplugins inhaken op het metasysteem van WordPress om vertaalbare inhoud te detecteren. De parameter <code>show_in_rest<\/code> maakt compatibiliteit met de Site Editor mogelijk:<\/p>\n<pre><code class=\"language-php\">function my_theme_register_meta_fields() {\n    register_post_meta( 'page', 'custom_subtitle', array(\n        'type' =&gt; 'string',\n        'description' =&gt; __( 'Page subtitle', 'my-block-theme' ),\n        'single' =&gt; true,\n        'show_in_rest' =&gt; true,\n        'auth_callback' =&gt; function() {\n            return current_user_can( 'edit_posts' );\n        }\n    ));\n}\n\nadd_action( 'init', 'my_theme_register_meta_fields' );\n\n\/\/ Display with plugin compatibility\nfunction my_theme_display_subtitle( $post_id ) {\n    $subtitle = get_post_meta( $post_id, 'custom_subtitle', true );\n\n    if ( ! $subtitle ) {\n        return;\n    }\n\n    \/\/ WPML compatibility\n    \/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/wpml-hooks-reference\/)\n    if ( function_exists( 'icl_t' ) ) {\n        $subtitle = icl_t( \n            'my-block-theme', \n            'subtitle_' . $post_id, \n            $subtitle \n        );\n    }\n\n    \/\/ Polylang compatibility\n    \/\/ (documented at polylang.pro\/doc\/function-reference\/)\n    if ( function_exists( 'pll_translate_string' ) ) {\n        $subtitle = pll_translate_string( $subtitle, 'my-block-theme' );\n    }\n\n    echo '&lt;h2 class=\"page-subtitle\"&gt;' . esc_html( $subtitle ) . '&lt;\/h2&gt;';\n}\n<\/code><\/pre>\n<p>Databasequery&#8217;s hebben ook taalfiltering nodig omdat WordPress inhoud niet automatisch filtert op taal. Vertaalplugins voegen query-aanpassingen toe die je moet aanpassen:<\/p>\n<pre><code class=\"language-php\">function my_theme_get_localized_posts( $args = array() ) {\n    $defaults = array(\n        'post_type' =&gt; 'post',\n        'posts_per_page' =&gt; 10\n    );\n\n    $args = wp_parse_args( $args, $defaults );\n\n    \/\/ Polylang adds language taxonomy\n    \/\/ (documented at polylang.pro\/doc\/developpers-how-to\/)\n    if ( function_exists( 'pll_current_language' ) ) {\n        $args['lang'] = pll_current_language();\n    }\n\n    \/\/ WPML filters queries automatically when suppress_filters is false\n    \/\/ (wpml.org\/documentation\/getting-started-guide\/translating-custom-posts\/)\n\n    if ( defined( 'ICL_LANGUAGE_CODE' ) ) {\n        $args['suppress_filters'] = false;\n    }\n\n    return get_posts( $args );\n}\n<\/code><\/pre>\n<p>Je <a href=\"https:\/\/kinsta.com\/nl\/blog\/registratieformulieren-wordpress\/\">formulierverwerking<\/a> mengt dynamische en statische inhoud, maar formulierlabels, foutmeldingen en beheermeldingen moeten allemaal taalbewust worden vertaald. De e-mailontvangers kunnen ook per taal verschillen:<\/p>\n<pre><code class=\"language-php\">function my_theme_process_contact_form() {\n\tif ( ! isset( $_POST['contact_nonce'] ) || \n\t! wp_verify_nonce( $_POST['contact_nonce'], 'contact_form' ) ) {\n\treturn;\n\t}\n\n\t$name = sanitize_text_field( $_POST['name'] );\n\t$email = sanitize_email( $_POST['email'] );\n\t$message = sanitize_textarea_field( $_POST['message'] );\n\n\t\/\/ Get admin email in current language\n\t$admin_email = get_option( 'admin_email' );\n\n\t\/\/ For language-specific admin emails, use WPML's string translation\n\t\/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/wpml-hooks-reference\/)\n\n\tif ( function_exists( 'icl_t' ) ) {\n\t\t\/\/ First register the string if not already registered\n\t\tif ( function_exists( 'icl_register_string' ) ) {\n\t\t\ticl_register_string( 'my-block-theme', 'contact_email', $admin_email );\n\t\t}\n\n\t\t$admin_email = icl_t(\n\t\t\t'my-block-theme',\n\t\t\t'contact_email',\n\t\t\t$admin_email\n\t\t);\n\t}\n\n\t$subject = sprintf(\n\t\/* translators: %s: Sender name *\/\n\t__( 'Contact form submission from %s', 'my-block-theme' ),\n\t$name\n\t);\n\n\twp_mail( $admin_email, $subject, $message );\n}\n\nadd_action( 'init', 'my_theme_process_contact_form' );\n<\/code><\/pre>\n<p>Het is ook belangrijk om je navigatie taalbewust te maken, omdat menu-items, URL&#8217;s en structuur per taal kunnen verschillen. Je vertaalplugin heeft waarschijnlijk een API voor het bouwen van taalswitchers:<\/p>\n<pre><code class=\"language-php\">function my_theme_language_switcher_block() {\n    if ( ! function_exists( 'pll_the_languages' ) && \n         ! function_exists( 'icl_get_languages' ) ) {\n        return;\n    }\n\n    $output = '&lt;div class=\"language-switcher\"&gt;';\n\n    \/\/ Polylang language switcher \n    \/\/ (documented at polylang.pro\/doc\/function-reference\/)\n\n    if ( function_exists( 'pll_the_languages' ) ) {\n        $languages = pll_the_languages( array( 'raw' =&gt; 1 ) );\n        foreach ( $languages as $lang ) {\n            $output .= sprintf(\n                '&lt;a href=\"%s\" class=\"%s\"&gt;%s&lt;\/a&gt;',\n                esc_url( $lang['url'] ),\n                $lang['current_lang'] ? 'current-lang' : '',\n                esc_html( $lang['name'] )\n            );\n        }\n    }\n\n    \/\/ WPML language switcher\n    \/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/multi-language-api\/)\n    elseif ( function_exists( 'icl_get_languages' ) ) {\n        $languages = icl_get_languages();\n        foreach ( $languages as $lang ) {\n            $output .= sprintf(\n                '&lt;a href=\"%s\" class=\"%s\"&gt;%s&lt;\/a&gt;',\n                esc_url( $lang['url'] ),\n                $lang['active'] ? 'current-lang' : '',\n                esc_html( $lang['native_name'] )\n            );\n        }\n    }\n\n    $output .= '&lt;\/div&gt;';\n    return $output;\n}\n<\/code><\/pre>\n<p>Het werken met vertaalplugins zal waarschijnlijk een groot deel van je werk zijn, dus laten we dit aspect als volgende bekijken.<\/p>\n<h2>Werken met vertaalplugins: compatibiliteit en optimalisatie<\/h2>\n<p>Elke WordPress vertaalplugin behandelt blokthema&#8217;s op een unieke manier. Inzicht in de aanpak van de verschillende oplossingen helpt je om vanaf het begin compatibiliteit en flexibiliteit op te bouwen.<\/p>\n<p>WPML&#8217;s <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-full-site-editing\/\">Full Site Editing<\/a> documentatie beschrijft hoe je een specifieke configuratie nodig hebt voor blokthema&#8217;s:<\/p>\n<pre><code class=\"language-php\">\/\/ WPML FSE compatibility based on official documentation\nadd_action( 'init', function() {\n    if ( ! defined( 'WPML_VERSION' ) ) {\n    return;\n    }\n\n    \/\/ FSE themes are automatically detected in WPML 4.5.3+ \/\/ Enable FSE support\n    add_filter( 'wpml_is_fse_theme', '__return_true' );\n\n    \/\/ Register custom strings per WPML String Translation documentation\n    \/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/wpml-hooks-reference\/)\n\n    if ( function_exists( 'icl_register_string' ) ) {\n        icl_register_string(\n        'my-block-theme',\n        'footer-copyright',\n        '\u00a9 My Company.'\n        );\n    }\n});\n<\/code><\/pre>\n<p>Polylang Pro ondersteunt de Site Editor sinds versie 3.2. De plugin behandelt <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-blokthema-ontwikkelen\/\">blokthema&#8217;s<\/a> via zijn standaard string vertaalinterface:<\/p>\n<pre><code class=\"language-php\">\/\/ Polylang string registration per official documentation\nif ( function_exists( 'pll_register_string' ) ) {\n\tpll_register_string( \n\t\t'Footer Copyright',\n\t\t'\u00a9 My Company.',\n\t\t'my-block-theme',\n\t\ttrue \/\/ Multiline support\n\t);\n}\n<\/code><\/pre>\n<p><a href=\"https:\/\/translatepress.com\/docs\/developers\/exclude-certain-text-or-element-from-being-translated\/\" target=\"_blank\" rel=\"noopener noreferrer\">De documentatie van TranslatePress<\/a> laat zien dat bepaalde dynamische elementen moeten worden uitgesloten voor optimale prestaties:<\/p>\n<pre><code class=\"language-php\">\/\/ TranslatePress optimization based on official recommendations\n\/\/ (documented at translatepress.com\/docs\/developers\/)\nadd_filter( 'trp_stop_translating_page', function( $stop, $url ) {\n\t\/\/ Skip admin and API requests per TranslatePress documentation\n\tif ( is_admin() || wp_is_json_request() ) {\n\treturn true;\n\t}\n\n\t\/\/ Skip pattern preview URLs that can cause rendering issues\n    if ( strpos( $url, 'pattern-preview' ) !== false ) {\n    \treturn true;\n\t}\n\n\treturn $stop;\n}, 10, 2 );\n<\/code><\/pre>\n<p>Je kunt ook <a href=\"https:\/\/multilingualpress.org\/\">MultilingualPress<\/a> overwegen, dat anders werkt doordat het gebruikmaakt van WordPress Multisite. Elke taal draait als een eigen site met een eigen Block-thema, waardoor er geen extra vertaallaag of speciale configuratie nodig is. Deze aanpak houdt alles snel en voorkomt plugin-lock-in, omdat alles gebaseerd is op de corefunctionaliteit van WordPress die internationalisatie regelt.<\/p>\n<p>Tot slot zijn er een paar algemene tips om door te geven als je werkt met externe codebases (zoals plugins). Ten eerste, zorg ervoor dat je een <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-debugging\/\">systematische aanpak voor het debuggen<\/a> van vertaalproblemen gebruikt.<\/p>\n<pre><code class=\"language-php\">\/\/ Debug helper for translation issues\nfunction my_theme_debug_translations() {\n    if ( ! WP_DEBUG || ! current_user_can( 'manage_options' ) ) {\n    return;\n\t}\n\n\terror_log( 'Text domain loaded: ' . is_textdomain_loaded(\n    \t'my-block-theme' ) );\n         error_log( 'Current locale: ' . get_locale() );\n         error_log( 'Translation test: ' . __(\n\t\t\t'Hello World',\n            'my-block-theme'\n         )\n\t);\n\n\t\/\/ Check JSON translations for blocks\n    $json_file = WP_LANG_DIR . '\/themes\/my-block-theme-' . get_locale() . '-script-handle.json';\n\terror_log( 'JSON translation exists: ' . file_exists( $json_file ) );\n}\n\nadd_action( 'init', 'my_theme_debug_translations' );\n<\/code><\/pre>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/edge-caching\/\">Site caching<\/a> kan interfereren met vertaalupdates, dus misschien wil je caches wissen wanneer vertaalbestanden veranderen:<\/p>\n<pre><code class=\"language-bash\"># Clear WordPress transients\nwp transient delete --all\n\n# Generate fresh translation files\nwp i18n make-pot . languages\/my-block-theme.pot\nwp i18n make-json languages\/ --no-purge\n<\/code><\/pre>\n<p>Prestatieoptimalisatie wordt kritisch met vertaalplugins. Elke plugin voegt database queries en verwerkingsoverhead toe, wat weer ten goede komt aan het cachen van veelgebruikte vertalingen:<\/p>\n<pre><code class=\"language-php\">function my_theme_cached_translation( $text, $domain = 'my-block-theme' ) {\n    $cache_key = 'translation_' . md5( $text . get_locale() );\n    $cached = wp_cache_get( $cache_key, 'my_theme_translations' );\n\n    if ( false === $cached ) {\n        $cached = __( $text, $domain );\n        wp_cache_set( $cache_key, $cached, 'my_theme_translations', HOUR_IN_SECONDS );\n    }\n\n    return $cached;\n}\n<\/code><\/pre>\n<p>Als alternatief kan het verstandig zijn om caching over te slaan totdat je klaar bent om te deployen. Het gebruik van een <a href=\"https:\/\/kinsta.com\/nl\/docs\/wordpress-hosting\/testomgeving\/\">testomgeving<\/a> is hiervoor ideaal en je hebt de prestatieboost die caching biedt meestal niet nodig.<\/p>\n<h2>Samenvatting<\/h2>\n<p>De internationalisatie van het blokthema vereist dat je zowel met WordPress vertaalmethoden werkt als nieuwe benaderingen gebruikt in de Site Editor.<\/p>\n<p>Door de metadata van je thema&#8217;s te configureren, templatestrategie\u00ebn te implementeren en de vereisten van vertaalplugins te begrijpen, kun je meertalige blokthema&#8217;s maken die goed presteren en een gebruikerservaring van hoge kwaliteit bieden.<\/p>\n<p>Als je klaar bent om je site te lanceren, levert Kinsta&#8217;s <a href=\"https:\/\/kinsta.com\/nl\/wordpress-hosting\/\">managed hosting voor WordPress<\/a> de prestaties \u00e9n het wereldwijde bereik die je site nodig heeft, met ingebouwde caching, een <a href=\"https:\/\/kinsta.com\/nl\/docs\/service-informatie\/datacenter-locaties\/\">CDN met 37 locaties<\/a> en tools zoals Git-integratie en <a href=\"https:\/\/kinsta.com\/nl\/docs\/wordpress-hosting\/testomgeving\/\">testomgevingen<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Blokthema&#8217;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 &#8230;<\/p>\n","protected":false},"author":199,"featured_media":63144,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[892],"class_list":["post-63143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-wordpress-ontwikkeling"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Gids voor ontwikkelaars: WordPress blokthema&#039;s meertalig maken<\/title>\n<meta name=\"description\" content=\"WordPress blokthema&#039;s vragen om een andere aanpak voor internationalisering. In dit artikel delen we strategie\u00ebn om je site met succes meertalig te maken!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gids voor ontwikkelaars: WordPress blokthema&#039;s meertalig maken\" \/>\n<meta property=\"og:description\" content=\"WordPress blokthema&#039;s vragen om een andere aanpak voor internationalisering. In dit artikel delen we strategie\u00ebn om je site met succes meertalig te maken!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-25T06:31:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-08T11:50:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"WordPress blokthema&#039;s vragen om een andere aanpak voor internationalisering. In dit artikel delen we strategie\u00ebn om je site met succes meertalig te maken!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Gids voor ontwikkelaars: WordPress blokthema&#8217;s meertalig maken\",\"datePublished\":\"2025-08-25T06:31:09+00:00\",\"dateModified\":\"2025-10-08T11:50:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/\"},\"wordCount\":1192,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"inLanguage\":\"nl-NL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/\",\"name\":\"Gids voor ontwikkelaars: WordPress blokthema's meertalig maken\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"datePublished\":\"2025-08-25T06:31:09+00:00\",\"dateModified\":\"2025-10-08T11:50:43+00:00\",\"description\":\"WordPress blokthema's vragen om een andere aanpak voor internationalisering. In dit artikel delen we strategie\u00ebn om je site met succes meertalig te maken!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress ontwikkeling\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-ontwikkeling\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Gids voor ontwikkelaars: WordPress blokthema&#8217;s meertalig maken\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gids voor ontwikkelaars: WordPress blokthema's meertalig maken","description":"WordPress blokthema's vragen om een andere aanpak voor internationalisering. In dit artikel delen we strategie\u00ebn om je site met succes meertalig te maken!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/","og_locale":"nl_NL","og_type":"article","og_title":"Gids voor ontwikkelaars: WordPress blokthema's meertalig maken","og_description":"WordPress blokthema's vragen om een andere aanpak voor internationalisering. In dit artikel delen we strategie\u00ebn om je site met succes meertalig te maken!","og_url":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2025-08-25T06:31:09+00:00","article_modified_time":"2025-10-08T11:50:43+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","type":"image\/png"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"WordPress blokthema's vragen om een andere aanpak voor internationalisering. In dit artikel delen we strategie\u00ebn om je site met succes meertalig te maken!","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Jeremy Holcombe","Geschatte leestijd":"13 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Gids voor ontwikkelaars: WordPress blokthema&#8217;s meertalig maken","datePublished":"2025-08-25T06:31:09+00:00","dateModified":"2025-10-08T11:50:43+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/"},"wordCount":1192,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","inLanguage":"nl-NL"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/","url":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/","name":"Gids voor ontwikkelaars: WordPress blokthema's meertalig maken","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","datePublished":"2025-08-25T06:31:09+00:00","dateModified":"2025-10-08T11:50:43+00:00","description":"WordPress blokthema's vragen om een andere aanpak voor internationalisering. In dit artikel delen we strategie\u00ebn om je site met succes meertalig te maken!","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/blokthemas-internationalisering\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"WordPress ontwikkeling","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-ontwikkeling\/"},{"@type":"ListItem","position":3,"name":"Gids voor ontwikkelaars: WordPress blokthema&#8217;s meertalig maken"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/nl\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/63143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=63143"}],"version-history":[{"count":10,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/63143\/revisions"}],"predecessor-version":[{"id":63526,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/63143\/revisions\/63526"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/63143\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/63143\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/63143\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/63143\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/63143\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/63143\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/63143\/translations\/es"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/63143\/translations\/jp"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/63143\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/63144"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=63143"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=63143"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=63143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}