Cum să remediezi traducerile fuzzy în fișierele .po WordPress

Ai tradus fiecare șir. Ai salvat fișierul, ai încărcat .mo și ai reîmprospătat site-ul. Și totuși, o mână de etichete sunt încă încăpățânat în engleză. Deschizi fișierul .po, găsești șirul și este acolo, perfect tradus. Atunci de ce WordPress îl ignoră?
Răspunsul este aproape întotdeauna un mic indicator ascuns deasupra intrării: #, fuzzy. O traducere fuzzy este modul în care gettext spune „această traducere ar putea fi greșită, așa că nu ai încredere în ea încă.” Și, esențial, WordPress refuză să afișeze șirurile fuzzy pe site-ul live, revenind în schimb la engleza originală. Aceasta este una dintre cele mai greșit înțelese cauze ale problemei „traducerea mea nu apare”.
Acest ghid explică exact ce înseamnă indicatorul de traducere fuzzy, de ce continuă să apară în cataloagele tale și cum să găsești și să cureți șirurile fuzzy în Poedit, în linia de comandă și la scară largă, pe întregul backlog. Odată ce înțelegi mecanismul, misterul traducerilor lipsă dispare.
Ce înseamnă, de fapt, indicatorul fuzzy?
Indicatorul fuzzy este un marcaj pe care gettext îl adaugă unei intrări de traducere pentru a indica faptul că traducerea este incertă și necesită o revizuire umană. În fișierul .po brut, apare ca un comentariu special direct deasupra șirului.
#: includes/cart.php:88
#, fuzzy
msgid "Add to cart"
msgstr "Im Warenkorb"
Această linie #, fuzzy spune fiecărui instrument compatibil cu gettext, inclusiv WordPress, că msgstr-ul de dedesubt este provizoriu. Traducerea există, dar gettext nu o consideră confirmată.
De ce WordPress ignoră șirurile fuzzy
Iată comportamentul care ia pe toată lumea prin surprindere. Când WordPress compilează sau citește un fișier .mo, tratează intrările fuzzy ca fiind netraduse. Șirul este tehnic prezent în fișier, dar WordPress îl ignoră în mod deliberat și afișează în schimb msgid-ul original.
Deci, din perspectiva ta, traducerea este „terminată”, este chiar acolo în fișier. Dar din perspectiva WordPress, acel șir nu are o traducere de încredere, așa că redă sursa engleză. Acesta este tocmai motivul pentru care un catalog care arată finalizat poate afișa totuși text netradus în interfața de utilizator.
Acest design este intenționat și, în mod corect, rezonabil. Întregul scop al indicatorului fuzzy este de a preveni ca traducerile neverificate, potențial greșite, să ajungă live în mod silențios. Imaginează-ți un șir care inițial era „Șterge contul” și a fost ulterior schimbat în „Dezactivează contul”. Dacă gettext ar fi păstrat orbește vechea traducere, utilizatorii tăi ar putea vedea un buton etichetat „Șterge contul” care de fapt doar dezactivează, o nepotrivire periculoasă. Prin ascunderea șirurilor fuzzy, gettext forțează o persoană să confirme că traducerea se potrivește încă cu noul sens înainte ca aceasta să ajungă la cineva. Indicatorul este un mecanism de siguranță, nu o eroare.
De ce continuă să apară indicatorii fuzzy?
Indicatorii fuzzy nu sunt aleatori. Aceștia sunt generați automat de instrumentele gettext în două situații principale, iar înțelegerea ambelor îți spune cum să le previi.
Șirul sursă s-a schimbat
Cea mai comună cauză este o actualizare a sursei. Imaginează-ți că dezvoltatorul modifică un șir în următoarea versiune a pluginului de la „Add to cart” la „Add to basket”. Când fuzionezi noul șablon în traducerea ta existentă, gettext vede că sursa nu mai corespunde cu ceea ce ai tradus inițial. În loc să arunce vechea ta traducere, o păstrează, dar o marchează ca fuzzy, spunând esențial: „engleza s-a schimbat, așa că te rog să verifici din nou dacă traducerea ta se potrivește încă.”
Potrivirea automată prin Memoria de Traducere și msgmerge
A doua cauză este potrivirea fuzzy în timpul unei fuzionări. Instrumentul msgmerge actualizează un fișier de traducere vechi în raport cu un șablon nou, iar când găsește un șir sursă care este similar, dar nu identic cu unul anterior, copiază vechea traducere și o marchează ca 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
Memoria de Traducere în editoarele desktop se comportă la fel: când completează automat o sugestie dintr-o potrivire apropiată, marchează rezultatul ca fuzzy, astfel încât să îți amintești să îl verifici. În ambele cazuri, indicatorul își face treaba. Problema este doar că intrările fuzzy rămân apoi nerevizuite, iar WordPress le ascunde în liniște.
Există o a treia sursă, mai insidioasă, despre care merită să știi: instrumentele de copiere-lipire și import în masă. Unele platforme de traducere și scripturi de import marchează fiecare intrare ca fuzzy în mod implicit, ca măsură conservatoare, așteptându-se ca o persoană să le confirme pe fiecare ulterior. Dacă imporți un catalog dintr-un alt sistem și descoperi că fiecare șir este brusc fuzzy, acesta este de obicei motivul. Traducerile pot fi perfect în regulă, dar până când indicatorii nu sunt șterși, niciuna dintre ele nu va apărea pe site-ul tău. Cunoașterea sursei indicatorilor îți spune dacă trebuie să revizuiești cu adevărat fiecare intrare sau dacă o ștergere în masă cu încredere este sigură.
Cum găsești și remediezi șirurile fuzzy?
Ștergerea șirurilor fuzzy înseamnă revizuirea fiecăruia și, odată ce confirmi că traducerea este corectă, eliminarea indicatorului. Există trei modalități practice de a face acest lucru, în funcție de amploarea lucrării.
Remediierea șirurilor fuzzy în Poedit
Poedit face acest lucru cel mai ușor. Deschide fișierul .po și utilizează controalele de căutare și filtrare pentru a afișa doar intrările fuzzy; acestea sunt codificate prin culori (de obicei portocaliu) pentru a ieși imediat în evidență. Dă clic pe fiecare, confirmă sau corectează traducerea, apoi dezactivează starea fuzzy cu scurtătura de tastatură (Editare, apoi „Traducerea este fuzzy” sau scurtătura afișată în meniu). Când salvezi, Poedit recompilează un .mo curat, iar șirurile acum confirmate vor fi afișate pe site-ul tău. Dacă ești nou în utilizarea acestui editor, ghidul complet Poedit acoperă în detaliu fluxul de lucru pentru filtrare și revizuire.
Remediierea șirurilor fuzzy în linia de comandă
Pentru automatizare sau cataloage mari, linia de comandă este mai rapidă. Poți număra intrările fuzzy și, odată ce le-ai verificat în masă, poți elimina indicatorii pentru ca WordPress să le încarce.
# 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
Fii atent la ștergerea în masă. Eliminarea indicatorilor fuzzy fără a revizui traducerile anulează scopul indicatorului și poate livra text greșit utilizatorilor tăi. Utilizează abordarea prin linia de comandă atunci când ai încredere în sursa traducerilor și ruta manuală prin Poedit atunci când nu ai.
O cale de mijloc sigură este să exporti șirurile fuzzy într-un fișier separat, să le revizuiești doar pe acelea și să le fuzionezi înapoi. Acest lucru păstrează traducerile confirmate intacte, în timp ce te concentrezi doar pe intrările care necesită într-adevăr atenție.
# Extract only the fuzzy entries for focused review
msgattrib --only-fuzzy --no-obsolete awesome-plugin-de_DE.po \
--output-file=fuzzy-only.po
Revizuirea a cincizeci de șiruri izolate este mult mai puțin predispusă la erori decât parcurgerea unui catalog de o mie de linii în căutarea rândurilor portocalii, și îți oferă o evidență clară a exact ceea ce s-a schimbat în ultima actualizare.
După ștergerea indicatorilor, salvează întotdeauna sau recompilează fișierul .mo. Starea fuzzy se află în .po, dar WordPress citește .mo binar, așa că până nu îl regenerezi, interfața ta de utilizator va continua să afișeze engleza chiar dacă .po-ul arată curat. Poedit recompilează automat la salvare; în linia de comandă rulezi msgfmt awesome-plugin-de_DE.po -o awesome-plugin-de_DE.mo. Uitarea acestui pas final de compilare este unul dintre cele mai comune motive pentru care un catalog proaspăt „de-fuzzificat” încă nu apare; traducerea este confirmată în fișierul sursă, dar binarul pe care site-ul îl încarcă efectiv este învechit.
Reține că intrările fuzzy apar adesea alături de șirurile de plural, unde un msgid_plural modificat poate marca întregul bloc de plural ca fuzzy. Dacă backlog-ul tău fuzzy este bogat în numere și cantități, ghidul nostru despre pluralele Gettext și pluralizarea complexă explică de ce acele intrări sunt deosebit de fragile în timpul fuzionărilor.
Curățarea backlog-ului fuzzy la scară largă
Un singur șir fuzzy este o soluție de treizeci de secunde. Un catalog cu patru sute de șiruri fuzzy după o actualizare majoră a unui plugin este o problemă diferită, iar în cazul a zeci de limbi devine un adevărat blocaj. Ispita de a șterge în masă indicatorii fără revizuire este exact modul în care traducerile defecte ajung în producție.
O soluție mai curată este să retraduci intrările fuzzy proaspăt, mai degrabă decât să aprobi orbește potriviri învechite. Când procesezi un catalog prin SimplePoTranslate, AI-ul conștient de context produce o traducere curentă, confirmată pentru fiecare șir modificat, astfel încât nu doar elimini un indicator de avertizare, ci înlocuiești potrivirile incerte cu traduceri reale. Blocarea Sintaxei păstrează fiecare %s, %1$s, {count} și etichetă HTML intactă în timpul procesării, iar Gruparea Inteligentă procesează cataloage mari, post-actualizare, dintr-o singură mișcare. Primești înapoi un ZIP curat cu .po, .mo, .json, .php și .xliff, fără un backlog fuzzy persistent, gata de implementare din cloud.
Merită să facem distincția între aceasta și întrebarea mai amplă de ce traducerile nu apar deloc. Indicatorii fuzzy sunt o cauză specifică, dar fișierele .mo lipsă, numele de fișiere greșite și nepotrivirile de localizare cauzează același simptom. Pentru lista completă de verificare a diagnosticului, consultă ghidul nostru de depanare pentru traducerile care nu apar în WordPress, care tratează șirurile fuzzy ca un element într-o listă mai mare.
Ești gata să cureți un întreg backlog fuzzy și să faci ca fiecare șir să apară pe site-ul tău? Încearcă SimplePoTranslate gratuit — nu este necesar un card de credit. Nivelul gratuit retraduci fișierul tău
.poproaspăt, înlocuind potrivirile fuzzy incerte cu traduceri curate, confirmate.