Hoe je Fuzzy Vertalingen in WordPress .po Bestanden Kunt Repareren

Je hebt elke string vertaald. Je hebt het bestand opgeslagen, de .mo geüpload, en je site ververst. En toch zijn een handvol labels nog steeds hardnekkig in het Engels. Je opent het .po bestand, zoekt de string op, en daar staat hij, perfect vertaald. Dus waarom negeert WordPress het?
Het antwoord is bijna altijd een klein vlaggetje dat boven de invoer verborgen zit: #, fuzzy. Een fuzzy vertaling is gettext's manier om te zeggen "deze vertaling klopt misschien niet, dus vertrouw er nog niet op." En cruciaal is dat WordPress weigert fuzzy strings weer te geven op de live site, en in plaats daarvan terugvalt op het originele Engels. Dit is een van de meest verkeerd begrepen oorzaken van het probleem "mijn vertaling wordt niet weergegeven".
Deze gids legt precies uit wat de fuzzy vertaling vlag betekent, waarom deze steeds verschijnt in je catalogi, en hoe je fuzzy strings kunt vinden en wissen in Poedit, via de commandoregel, en op grote schaal over een hele achterstand. Zodra je het mechanisme begrijpt, verdwijnt het mysterie van de ontbrekende vertalingen.
Wat Betekent de Fuzzy Vlag Eigenlijk?
De fuzzy vlag is een markering die gettext aan een vertaalitem toevoegt om aan te geven dat de vertaling onzeker is en menselijke controle nodig heeft. In het onbewerkte .po bestand verschijnt het als een speciaal commentaar direct boven de string.
#: includes/cart.php:88
#, fuzzy
msgid "Add to cart"
msgstr "Im Warenkorb"
Die #, fuzzy regel vertelt elk gettext-compatibel hulpmiddel, inclusief WordPress, dat de msgstr eronder voorlopig is. De vertaling bestaat, maar gettext beschouwt deze niet als bevestigd.
Waarom WordPress Fuzzy Strings Overslaat
Dit is het gedrag dat iedereen verrast. Wanneer WordPress een .mo bestand compileert of leest, behandelt het fuzzy items als onvertaald. De string is technisch aanwezig in het bestand, maar WordPress negeert deze bewust en toont in plaats daarvan de originele msgid.
Dus vanuit jouw perspectief is de vertaling "klaar", hij staat gewoon in het bestand. Maar vanuit het perspectief van WordPress heeft die string geen betrouwbare vertaling, dus wordt de Engelse bron weergegeven. Dit is precies waarom een ogenschijnlijk voltooide catalogus nog steeds onvertaalde tekst op de front-end kan weergeven.
Dit ontwerp is opzettelijk en, eerlijk gezegd, zinvol. Het hele punt van de fuzzy vlag is om te voorkomen dat niet-geverifieerde, potentieel foute vertalingen stilletjes live gaan. Stel je een string voor die oorspronkelijk "Delete account" luidde en later werd gewijzigd in "Deactivate account." Als gettext blindelings de oude vertaling zou behouden, zouden je gebruikers een knop met het label "Delete account" kunnen zien die in werkelijkheid alleen deactiveert, een gevaarlijke mismatch. Door fuzzy strings te verbergen, dwingt gettext een mens om te bevestigen dat de vertaling nog steeds overeenkomt met de nieuwe betekenis voordat deze iemand bereikt. De vlag is een veiligheidsmechanisme, geen bug.
Waarom Blijven Fuzzy Vlaggen Verschijnen?
Fuzzy vlaggen zijn niet willekeurig. Ze worden automatisch gegenereerd door gettext-tools in twee hoofdsituaties, en begrip van beide vertelt je hoe je ze kunt voorkomen.
De Bronstring is Gewijzigd
De meest voorkomende oorzaak is een bronupdate. Stel je voor dat de ontwikkelaar een string in de volgende pluginversie wijzigt van "Add to cart" naar "Add to basket." Wanneer je de nieuwe sjabloon samenvoegt met je bestaande vertaling, ziet gettext dat de bron niet langer overeenkomt met wat je oorspronkelijk hebt vertaald. In plaats van je oude vertaling weg te gooien, behoudt het deze maar markeert het als fuzzy, wat eigenlijk zegt: "het Engels is gewijzigd, controleer dus opnieuw of je vertaling nog steeds past."
Automatisch Matchen door Translation Memory en msgmerge
De tweede oorzaak is fuzzy matching tijdens een samenvoeging. De msgmerge tool werkt een oud vertaalbestand bij met een nieuwe sjabloon, en wanneer het een bronstring vindt die vergelijkbaar maar niet identiek is aan een vorige, kopieert het de oude vertaling en markeert deze als fuzzy.
# Merge a new template into an existing translation.
# Similar-but-changed strings get marked #, fuzzy automatically.
msgmerge --update awesome-plugin-de_DE.po awesome-plugin.pot
Translation Memory in desktopeditors gedraagt zich op dezelfde manier: wanneer het een suggestie automatisch invult vanuit een bijna-overeenkomst, markeert het het resultaat als fuzzy zodat je eraan denkt het te verifiëren. In beide gevallen doet de vlag zijn werk. Het probleem is alleen dat de fuzzy items dan onbeoordeeld blijven, en WordPress ze stilletjes verbergt.
Er is een derde, slinkse bron die het vermelden waard is: copy-paste en bulk-import tools. Sommige vertaalplatformen en importscripts markeren elk item standaard als fuzzy als een conservatieve maatregel, waarbij ze verwachten dat een mens elk item daarna bevestigt. Als je een catalogus importeert vanuit een ander systeem en merkt dat elke string plotseling fuzzy is, is dit meestal de reden. De vertalingen kunnen perfect in orde zijn, maar totdat de vlaggen zijn gewist, zal geen van hen op je site verschijnen. Kennis van de bron van de vlaggen vertelt je of je elk item echt moet beoordelen of dat een zelfverzekerde bulkwissing veilig is.
Hoe Vind en Repareer Je Fuzzy Strings?
Fuzzy strings wissen betekent elke string beoordelen en, zodra je bevestigt dat de vertaling correct is, de vlag verwijderen. Er zijn drie praktische manieren om dit te doen, afhankelijk van de omvang van de taak.
Fuzzy Strings Repareren in Poedit
Poedit maakt dit het gemakkelijkst. Open het .po bestand en gebruik de zoek- en filterfuncties om alleen fuzzy items weer te geven; ze zijn kleurgecodeerd (meestal oranje) zodat ze onmiddellijk opvallen. Klik op elk item, bevestig of corrigeer de vertaling, en schakel vervolgens de fuzzy status uit met de sneltoets (Bewerken en vervolgens "Vertaling is Fuzzy," of de sneltoets die in het menu wordt weergegeven). Wanneer je opslaat, hercompileert Poedit een schone .mo en zullen de nu bevestigde strings op je site worden weergegeven. Als je nieuw bent met die editor, behandelt de complete Poedit gids de filter- en beoordelingsworkflow in detail.
Fuzzy Strings Repareren via de Commandoregel
Voor automatisering of grote catalogi is de commandoregel sneller. Je kunt fuzzy items tellen en, zodra je ze in bulk hebt geverifieerd, de vlaggen verwijderen zodat WordPress ze zal laden.
# Count how many fuzzy strings remain
msgattrib --only-fuzzy --no-obsolete awesome-plugin-de_DE.po | grep -c "msgid"
# Clear all fuzzy flags (only after you trust the translations)
msgattrib --clear-fuzzy --empty awesome-plugin-de_DE.po \
--output-file=awesome-plugin-de_DE.po
Wees voorzichtig met het massaal wissen. Het verwijderen van fuzzy vlaggen zonder de vertalingen te beoordelen ondermijnt het doel van de vlag en kan werkelijk verkeerde tekst naar je gebruikers sturen. Gebruik de commandoregelbenadering wanneer je de bron van de vertalingen vertrouwt, en de handmatige Poedit route wanneer je dat niet doet.
Een veilig middenweg is om de fuzzy strings naar een apart bestand te exporteren, alleen die te beoordelen en ze vervolgens weer samen te voegen. Dit houdt je bevestigde vertalingen onaangeroerd, terwijl je je alleen richt op de items die daadwerkelijk aandacht nodig hebben.
# Extract only the fuzzy entries for focused review
msgattrib --only-fuzzy --no-obsolete awesome-plugin-de_DE.po \
--output-file=fuzzy-only.po
Het beoordelen van vijftig geïsoleerde strings is veel minder foutgevoelig dan het scrollen door een catalogus van duizend regels op zoek naar oranje rijen, en het geeft je een duidelijk overzicht van precies wat er is gewijzigd in de laatste update.
Nadat je de vlaggen hebt gewist, moet je altijd het .mo bestand opnieuw opslaan of hercompileren. De fuzzy staat bevindt zich in het .po bestand, maar WordPress leest het binaire .mo bestand, dus totdat je het opnieuw genereert, blijft je front-end Engels weergeven, zelfs als het .po er schoon uitziet. Poedit hercompileert automatisch bij opslaan; via de commandoregel voer je msgfmt awesome-plugin-de_DE.po -o awesome-plugin-de_DE.mo uit. Het vergeten van deze laatste compilatiestap is een van de meest voorkomende redenen waarom een vers ont-fuzzed catalogus nog steeds niet verschijnt; de vertaling is bevestigd in het bronbestand, maar het binaire bestand dat de site daadwerkelijk laadt, is verouderd.
Merk op dat fuzzy items vaak verschijnen naast meervoudstrings, waarbij een gewijzigde msgid_plural het hele meervoudsblok als fuzzy kan markeren. Als je fuzzy achterstand veel tellingen en hoeveelheden bevat, legt onze gids over Gettext meervouden en complexe meervoudsvorming uit waarom die items bijzonder kwetsbaar zijn tijdens samenvoegingen.
De Fuzzy Achterstand Op Grote Schaal Verhelpen
Een enkele fuzzy string is een reparatie van dertig seconden. Een catalogus met vierhonderd fuzzy strings na een grote plugin-update is een ander probleem, en verspreid over een dozijn talen wordt het een echt knelpunt. De verleiding om de vlaggen massaal te wissen zonder beoordeling is precies hoe kapotte vertalingen in productie terechtkomen.
Een schonere oplossing is om de fuzzy items opnieuw te vertalen in plaats van verouderde overeenkomsten af te stempelen. Wanneer je een catalogus door SimplePoTranslate haalt, produceert de context-aware AI een actuele, bevestigde vertaling voor elke gewijzigde string, zodat je niet alleen een waarschuwingsvlag verwijdert, maar ook onzekere overeenkomsten vervangt door echte vertalingen. Syntax Locking houdt elke %s, %1$s, {count}, en HTML tag intact tijdens de verwerking, en Smart Batching verwerkt grote post-update catalogi in één keer. Je krijgt een schone ZIP terug met .po, .mo, .json, .php, en .xliff, zonder aanhoudende fuzzy achterstand, klaar om te implementeren vanuit de cloud.
Het is de moeite waard om dit te onderscheiden van de bredere vraag waarom vertalingen helemaal niet verschijnen. Fuzzy vlaggen zijn één specifieke oorzaak, maar ontbrekende .mo bestanden, verkeerde bestandsnamen en locale-mismatches veroorzaken hetzelfde symptoom. Voor de volledige diagnostische checklist, zie onze handleiding voor het oplossen van problemen met niet-weergegeven vertalingen in WordPress, die fuzzy strings als één item in een grotere lijst behandelt.
Klaar om een hele fuzzy achterstand te verhelpen en elke string op je site te laten verschijnen? Probeer SimplePoTranslate gratis — geen creditcard nodig. De gratis tier vertaalt je
.pobestand opnieuw, waarbij onzekere fuzzy overeenkomsten worden vervangen door schone, bevestigde vertalingen.