Nu mijn website draait met WordPress, wilde ik de content graag in meerdere talen aanbieden. Uit principe vind ik dat mijn website beschikbaar moet zijn in het Nederlands – het is tenslotte mijn moedertaal. Maar omdat de voertaal van het internet Engels is, wilde ik de content ook in het Engels kunnen aanbieden.
Tijd om te kijken wat er beschikbaar was qua WordPress plugins voor meertalige websites.
Polylang
Na wat onderzoek bleek Polylang een van de populairste plugins te zijn voor meertalige WordPress websites. De plugin heeft een goede reputatie en lijkt goed onderhouden te worden. Perfect, dacht ik.
Maar al snel liep ik tegen een probleem aan. Hoewel Polylang goed functioneert met de klassieke WordPress editor, bleek de ondersteuning voor de moderne Gutenberg editor minder uitgebreid te zijn. Als voorbeeld miste er een Gutenberg block waarmee ik een taal selectie menu aan mijn pagina’s kan toevoegen.
Voor een website die draait op de nieuwste WordPress versie met Gutenberg als editor, voelde dit als een gemiste kans.
Zelf Doen
Ik heb al eerder blokken voor Gutenberg ontwikkeld, dus de basis voor het maken van custom blocks was bekend. Het doel was simpel; een block dat de beschikbare talen van de huidige pagina ophaalt uit Polylang en deze presenteert als links waarmee bezoekers kunnen schakelen tussen talen.
Het Resultaat
Na wat experimenteren en documentatie doorspitten, lukte het om een werkende Gutenberg block te bouwen die integreert met Polylang’s functionaliteit. Je kunt het resultaat ergens op deze pagina vinden.
Voor mensen die de block zelf willen proberen: de code en plugin is beschikbaar op https://github.com/simonmeulenbeek/smb-language-switcher. Houd er rekening mee dat de plugin niet uitvoerig getest is en dat er waarschijnlijk bugs en wijzigingen voorkomen.
Problemen kunnen gemeld worden door een issue aan te maken in de repository. Pull requests zijn uiteraard ook welkom.
Nu kan ik content delen in zowel het Nederlands als het Engels, zonder afhankelijk te zijn van de beperkingen van bestaande plugins.