BronnenHoe vertaal je .po-bestanden zonder codevariabelen te breken (%s, HTML)

Hoe vertaal je .po-bestanden zonder codevariabelen te breken (%s, HTML)

SimplePoTranslate Team25 november 2025

Het begint met een eenvoudige taak: je vertaalt je WordPress-thema naar het Spaans. Je uploadt het .mo-bestand, ververst je site en...

Fatale fout: Uncaught ArgumentCountError: Too few arguments to function sprintf()...

Of misschien laadt je site wel, maar is de lay-out kapot omdat een afsluitende </div>-tag is vertaald naar </ div>.

Dit is de nummer één angst van elke ontwikkelaar die met lokalisatie werkt. Wanneer je generieke vertaaltools (zoals Google Translate of basis AI-wrappers) gebruikt op technische .po-bestanden, behandelen ze code niet anders dan tekst. Ze proberen je variabelen te "vertalen" en breken daarbij je website.

In deze gids leggen we precies uit waarom dit gebeurt en hoe je 100% codeveiligheid kunt garanderen in je geautomatiseerde vertalingen.

De anatomie van een ramp: Waarom %s sites breekt

WordPress gebruikt het Gettext-systeem en PHP-functies zoals sprintf() om dynamische tekst te verwerken.

Je zou bijvoorbeeld een string als deze kunnen hebben: msgid "Search results for %s"

De %s is een placeholder-variabele waar PHP de zoekopdracht van de gebruiker invoegt.

Hoe generieke AI het verkeerd doet

Wanneer je deze string in een standaard Large Language Model (LLM) of vertaal-API invoert, ziet het %s gewoon als een ander raar woord. Het kan proberen de grammatica of interpunctie eromheen te repareren.

Dit zijn de meest voorkomende syntaxisfouten die we zien:

  1. De toegevoegde spatie:

    • Origineel: Hello %s
    • Slechte vertaling: Hallo % s
    • Resultaat: PHP zoekt naar %s, maar ziet % s. De variabele kan niet worden geladen, wat vaak een fatale fout veroorzaakt.
  2. De HTML-hallucinatie:

    • Origineel: Klik <strong>hier</strong> om in te loggen.
    • Slechte vertaling: Klik <strong>hier</ strong> om in te loggen.
    • Resultaat: De AI heeft een spatie toegevoegd in de afsluitende tag </ strong>. Je CSS breekt en de rest van de pagina wordt vetgedrukt.
  3. De argumentenwissel:

    • Origineel: Pagina %1$s van %2$s
    • Slechte vertaling: Pagina %2$s van %1$s
    • Resultaat: De AI besloot dat de zin beter klonk als de cijfers werden omgewisseld. Nu zegt je paginering "Pagina 10 van 1".

De valkuil van de "Handmatige reparatie"

De meeste ontwikkelaars proberen dit op te lossen door het bestand handmatig te beoordelen. Als je een kleine plug-in hebt met 50 strings, is dat prima. Maar als je een WooCommerce-winkel met 5.000 strings vertaalt?

Het scannen van 5.000 regels code op een enkele ontbrekende puntkomma of een extra spatie in een %s-variabele is onmogelijk. Het duurt uren en menselijke ogen zullen onvermijdelijk iets missen.

Regex-scripts (reguliere expressies) kunnen helpen bij het verifiëren van aanwezigheid, maar ze vangen zelden contextspecifieke herordeningsproblemen of subtiele corruptie van HTML-attributen op.

De Oplossing: "Syntaxisvergrendeling"

De enige manier om veilig een .po-bestand te vertalen, is voorkomen dat de AI de code überhaupt aanraakt. Dit vereist een proces genaamd Syntaxisvergrendeling.

Dit is de kerntechnologie achter SimplePoTranslate.

In tegenstelling tot generieke tools dumpen we niet zomaar tekst in een AI. We ontleden eerst de Gettext-structuur. Hier is hoe onze "Veilige modus" werkt:

  1. Analyse: We scannen je .po-bestand en identificeren elke variabele (%s, %d), elk positioneel argument (%1$s) en elke HTML-tag (<br/>, <span>).
  2. Extractie & Vergrendeling: We verwijderen deze elementen tijdelijk uit de string en vervangen ze door onveranderlijke tokens.
    • Invoer: Hallo <strong>%s</strong>
    • Wat de AI ziet: Hallo [TOKEN_1][TOKEN_2]
  3. Vertaling: De AI vertaalt de tekst "Hallo" naar "Hello", maar kan [TOKEN_1] of [TOKEN_2] fysiek niet wijzigen omdat ze vergrendeld zijn.
  4. Reconstructie: We voegen de originele code precies daar in de vertaalde string in waar deze thuishoort.

Het resultaat: Nul gebroken sites

Omdat de AI nooit interageert met de daadwerkelijke %s of HTML-tekens, is het wiskundig onmogelijk voor de vertaalmachine om een spatie in een variabele toe te voegen of een tag te beschadigen.

We behandelen zelfs complexe meervoudsregels (msgid_plural) voor talen zoals Russisch of Pools, en zorgen ervoor dat de juiste variabele wordt gebruikt voor de juiste telling.

Stop met gokken met je code

Je zou niet elke keer dat je een taalbestand uploadt je vingers moeten kruisen. Lokalisatie moet gaan over het bereiken van nieuwe klanten, niet over het debuggen van PHP-fouten.

SimplePoTranslate is de veiligste, meest geavanceerde cloudgebaseerde tool voor ontwikkelaars die geven om code-integriteit.

  • Cloudgebaseerd: Geen plug-ins om te installeren.
  • Contextbewust: Gebruikt AI van Gemini/GPT-4-klasse voor natuurlijke formulering.
  • Syntaxis vergrendeld: Gegarandeerde bescherming voor je variabelen.

Klaar om te vertalen zonder hoofdpijn? Begin gratis op SimplePoTranslate.com

Gerelateerde Onderwerpen