FunkcjeWtyczkaCennikZasoby
Zmień język
ZasobyJak naprawić niepewne (fuzzy) tłumaczenia w plikach .po WordPressa

Jak naprawić niepewne (fuzzy) tłumaczenia w plikach .po WordPressa

SimplePoTranslate Team11 maja 2026
Jak naprawić niepewne (fuzzy) tłumaczenia w plikach .po WordPressa

Przetłumaczyłeś każdy ciąg znaków. Zapisałeś plik, przesłałeś .mo i odświeżyłeś swoją witrynę. A jednak, garstka etykiet wciąż uparcie wyświetla się po angielsku. Otwierasz plik .po, znajdujesz ciąg znaków, a on tam jest, perfekcyjnie przetłumaczony. Dlaczego więc WordPress go ignoruje?

Odpowiedzią jest niemal zawsze mała flaga ukryta nad wpisem: #, fuzzy. Tłumaczenie niepewne (fuzzy) to sposób gettexta na powiedzenie: „to tłumaczenie może być błędne, więc na razie mu nie ufaj”. I co kluczowe, WordPress odmawia wyświetlania niepewnych ciągów znaków na działającej witrynie, zamiast tego wracając do oryginalnego angielskiego. Jest to jedna z najczęściej błędnie rozumianych przyczyn problemu „moje tłumaczenie się nie wyświetla”.

Ten przewodnik dokładnie wyjaśnia, co oznacza flaga niepewnego tłumaczenia, dlaczego ciągle pojawia się w twoich katalogach oraz jak znaleźć i usunąć niepewne ciągi znaków w Poedit, w wierszu poleceń i na dużą skalę w całym zaległym pliku. Kiedy zrozumiesz mechanizm, tajemnica brakujących tłumaczeń zniknie.

Co właściwie oznacza flaga Fuzzy?

Flaga fuzzy to znacznik, który gettext dodaje do wpisu tłumaczenia, aby wskazać, że tłumaczenie jest niepewne i wymaga weryfikacji przez człowieka. W surowym pliku .po pojawia się jako specjalny komentarz bezpośrednio nad ciągiem znaków.

#: includes/cart.php:88
#, fuzzy
msgid "Add to cart"
msgstr "Im Warenkorb"

Ta linia #, fuzzy informuje każde narzędzie obsługujące gettext, w tym WordPressa, że znajdujący się poniżej msgstr jest prowizoryczny. Tłumaczenie istnieje, ale gettext nie uważa go za potwierdzone.

Dlaczego WordPress pomija niepewne ciągi znaków

Oto zachowanie, które zaskakuje wszystkich. Kiedy WordPress kompiluje lub odczytuje plik .mo, traktuje wpisy fuzzy jako nieprzetłumaczone. Ciąg znaków jest technicznie obecny w pliku, ale WordPress celowo go ignoruje i zamiast tego wyświetla oryginalny msgid.

Z twojej perspektywy tłumaczenie jest „gotowe”, jest tam w pliku. Ale z perspektywy WordPressa, ten ciąg znaków nie ma godnego zaufania tłumaczenia, więc renderuje angielskie źródło. To jest dokładnie powód, dla którego katalog wyglądający na ukończony może nadal wyświetlać nieprzetłumaczony tekst na front-endzie.

Ten projekt jest celowy i, uczciwie mówiąc, sensowny. Cały sens flagi fuzzy polega na zapobieganiu cichemu udostępnianiu niezweryfikowanych, potencjalnie błędnych tłumaczeń. Wyobraź sobie ciąg znaków, który pierwotnie brzmiał „Delete account” (Usuń konto) i został później zmieniony na „Deactivate account” (Dezaktywuj konto). Gdyby gettext ślepo zachował stare tłumaczenie, twoi użytkownicy mogliby zobaczyć przycisk oznaczony „Delete account”, który w rzeczywistości tylko dezaktywuje, co jest niebezpiecznym niedopasowaniem. Ukrywając niepewne ciągi znaków, gettext zmusza człowieka do potwierdzenia, że tłumaczenie nadal odpowiada nowemu znaczeniu, zanim trafi do kogokolwiek. Flaga jest mechanizmem bezpieczeństwa, a nie błędem.

Dlaczego flagi Fuzzy ciągle się pojawiają?

Flagi fuzzy nie pojawiają się przypadkowo. Są generowane automatycznie przez narzędzia gettext w dwóch głównych sytuacjach, a zrozumienie obu pozwala zapobiegać ich powstawaniu.

Zmienił się ciąg źródłowy

Najczęstszą przyczyną jest aktualizacja źródła. Wyobraź sobie, że deweloper zmienia ciąg znaków w następnej wersji wtyczki z „Add to cart” na „Add to basket”. Kiedy łączysz nowy szablon z istniejącym tłumaczeniem, gettext widzi, że źródło nie pasuje już do tego, co pierwotnie przetłumaczyłeś. Zamiast wyrzucać stare tłumaczenie, zachowuje je, ale oznacza je jako fuzzy, mówiąc w zasadzie: „angielska wersja się zmieniła, więc proszę ponownie sprawdzić, czy twoje tłumaczenie nadal pasuje”.

Automatyczne dopasowywanie przez pamięć tłumaczeniową i msgmerge

Drugą przyczyną jest dopasowywanie fuzzy podczas łączenia. Narzędzie msgmerge aktualizuje stary plik tłumaczenia w stosunku do nowego szablonu, a gdy znajdzie ciąg źródłowy, który jest podobny, ale nie identyczny z poprzednim, kopiuje stare tłumaczenie i oznacza je jako 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

Pamięć tłumaczeniowa w edytorach desktopowych zachowuje się tak samo: kiedy automatycznie wypełnia sugestię z bliskiego dopasowania, oznacza wynik jako fuzzy, abyś pamiętał o jego weryfikacji. W obu przypadkach flaga spełnia swoje zadanie. Problem polega jedynie na tym, że niepewne wpisy pozostają niezweryfikowane, a WordPress po cichu je ukrywa.

Istnieje trzecie, bardziej podstępne źródło, o którym warto wiedzieć: narzędzia do kopiowania-wklejania i masowego importu. Niektóre platformy tłumaczeniowe i skrypty importu domyślnie oznaczają każdy wpis jako fuzzy, jako środek ostrożności, oczekując, że człowiek potwierdzi każdy z nich później. Jeśli importujesz katalog z innego systemu i stwierdzasz, że każdy pojedynczy ciąg znaków nagle jest fuzzy, to zazwyczaj jest tego powód. Tłumaczenia mogą być idealne, ale dopóki flagi nie zostaną usunięte, żadne z nich nie pojawi się na twojej witrynie. Znajomość źródła flag mówi ci, czy rzeczywiście musisz przejrzeć każdy wpis, czy też bezpieczne jest pewne masowe usunięcie.

Jak znaleźć i naprawić niepewne ciągi znaków?

Usunięcie niepewnych ciągów znaków oznacza przeglądanie każdego z nich i, po potwierdzeniu poprawności tłumaczenia, usunięcie flagi. Istnieją trzy praktyczne sposoby, aby to zrobić, w zależności od rozmiaru zadania.

Naprawianie niepewnych ciągów znaków w Poedit

Poedit czyni to najłatwiejszym. Otwórz plik .po i użyj funkcji wyszukiwania i filtrowania, aby wyświetlić tylko wpisy fuzzy; są one oznaczone kolorem (zazwyczaj pomarańczowym), więc od razu się wyróżniają. Kliknij każdy z nich, potwierdź lub popraw tłumaczenie, a następnie wyłącz stan fuzzy za pomocą skrótu klawiszowego (Edytuj, a następnie „Tłumaczenie jest niepewne”, lub skrót pokazany w menu). Po zapisaniu Poedit ponownie skompiluje czysty plik .mo, a potwierdzone ciągi znaków zostaną wyświetlone na twojej witrynie. Jeśli jesteś nowym użytkownikiem tego edytora, kompletny przewodnik po Poedit szczegółowo opisuje przepływ pracy związany z filtrowaniem i przeglądem.

Naprawianie niepewnych ciągów znaków w wierszu poleceń

W przypadku automatyzacji lub dużych katalogów, wiersz poleceń jest szybszy. Możesz zliczyć wpisy fuzzy i, po ich zbiorczej weryfikacji, usunąć flagi, aby WordPress mógł je załadować.

# 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

Zachowaj ostrożność przy masowym usuwaniu. Usunięcie flag fuzzy bez przeglądu tłumaczeń niweczy cel flagi i może dostarczyć użytkownikom naprawdę błędny tekst. Użyj podejścia z wiersza poleceń, gdy ufasz źródłu tłumaczeń, a ręczną metodę Poedit, gdy nie ufasz.

Bezpiecznym rozwiązaniem pośrednim jest eksportowanie niepewnych ciągów znaków do osobnego pliku, przeglądanie tylko ich i ponowne ich scalenie. Dzięki temu twoje potwierdzone tłumaczenia pozostają nienaruszone, podczas gdy ty skupiasz się tylko na wpisach, które faktycznie wymagają uwagi.

# Extract only the fuzzy entries for focused review
msgattrib --only-fuzzy --no-obsolete awesome-plugin-de_DE.po \
  --output-file=fuzzy-only.po

Przeglądanie pięćdziesięciu odizolowanych ciągów znaków jest znacznie mniej podatne na błędy niż przewijanie tysiącliniowego katalogu w poszukiwaniu pomarańczowych wierszy i daje ci czysty zapis tego, co dokładnie zmieniło się w ostatniej aktualizacji.

Po usunięciu flag zawsze ponownie zapisz lub skompiluj plik .mo. Stan fuzzy znajduje się w .po, ale WordPress odczytuje binarny plik .mo, więc dopóki go nie zregenerujesz, twój front-end będzie nadal wyświetlał angielski, mimo że .po wygląda na czysty. Poedit kompiluje automatycznie po zapisie; w wierszu poleceń uruchamiasz msgfmt awesome-plugin-de_DE.po -o awesome-plugin-de_DE.mo. Zapomnienie tego ostatniego kroku kompilacji jest jednym z najczęstszych powodów, dla których świeżo oczyszczony katalog nadal się nie pojawia; tłumaczenie jest potwierdzone w pliku źródłowym, ale plik binarny, który faktycznie ładuje witryna, jest przestarzały.

Zauważ, że wpisy fuzzy często pojawiają się obok ciągów znaków w liczbie mnogiej, gdzie zmieniony msgid_plural może oznaczyć cały blok liczby mnogiej jako fuzzy. Jeśli twoje zaległości fuzzy są obciążone liczbami i ilościami, nasz przewodnik liczby mnogie Gettext i złożona pluralizacja wyjaśnia, dlaczego te wpisy są szczególnie delikatne podczas scalania.

Usuwanie zaległych flag Fuzzy na dużą skalę

Pojedynczy niepewny ciąg znaków to trzydziestosekundowa poprawka. Katalog zawierający czterysta niepewnych ciągów znaków po dużej aktualizacji wtyczki to już inny problem, a w przypadku kilkunastu języków staje się prawdziwym wąskim gardłem. Pokusa masowego usuwania flag bez weryfikacji to dokładnie sposób, w jaki uszkodzone tłumaczenia trafiają do produkcji.

Czystym rozwiązaniem jest ponowne przetłumaczenie wpisów fuzzy na nowo, zamiast zatwierdzania przestarzałych dopasowań. Kiedy przetwarzasz katalog przez SimplePoTranslate, AI świadoma kontekstu tworzy aktualne, potwierdzone tłumaczenie dla każdego zmienionego ciągu znaków, więc nie tylko usuwasz flagę ostrzegawczą, ale zastępujesz niepewne dopasowania prawdziwymi tłumaczeniami. Syntax Locking zachowuje każdy %s, %1$s, {count} i tag HTML nienaruszony podczas przetwarzania, a Smart Batching przetwarza duże katalogi po aktualizacji za jednym razem. Otrzymujesz z powrotem czysty plik ZIP z .po, .mo, .json, .php i .xliff, bez zaległych flag fuzzy, gotowy do wdrożenia z chmury.

Warto to odróżnić od szerszego pytania, dlaczego tłumaczenia w ogóle się nie pojawiają. Flagi fuzzy są jedną konkretną przyczyną, ale brakujące pliki .mo, błędne nazwy plików i niezgodności ustawień regionalnych powodują te same objawy. Aby uzyskać pełną listę kontrolną diagnostyki, zapoznaj się z naszym przewodnikiem rozwiązywania problemów z niedziałającymi tłumaczeniami w WordPressie, który traktuje niepewne ciągi znaków jako jeden z elementów większej listy.

Gotowy, aby usunąć całe zaległe flagi fuzzy i sprawić, by każdy ciąg znaków pojawił się na twojej witrynie? Wypróbuj SimplePoTranslate za darmo — karta kredytowa nie jest wymagana. Darmowy plan ponownie tłumaczy twój plik .po na nowo, zastępując niepewne dopasowania fuzzy czystymi, potwierdzonymi tłumaczeniami.