ZasobyJak tłumaczyć pliki .po bez psucia zmiennych kodu (%s, HTML)

Jak tłumaczyć pliki .po bez psucia zmiennych kodu (%s, HTML)

Zespół SimplePoTranslate25 listopada 2025

Zaczyna się od prostego zadania: tłumaczysz swój motyw WordPress na język hiszpański. Przesyłasz plik .mo, odświeżasz stronę i...

Błąd krytyczny: Uncaught ArgumentCountError: Too few arguments to function sprintf()...

A może Twoja witryna się ładuje, ale układ jest zniszczony, ponieważ tag zamykający </div> został przetłumaczony na </ div>.

To największy strach każdego programisty pracującego z lokalizacją. Kiedy używasz ogólnych narzędzi tłumaczeniowych (takich jak Tłumacz Google lub podstawowe wrappery AI) na technicznych plikach .po, nie traktują one kodu inaczej niż tekstu. Próbują „przetłumaczyć” Twoje zmienne, a robiąc to, psują Twoją witrynę.

W tym przewodniku wyjaśnimy dokładnie, dlaczego tak się dzieje i jak zapewnić 100% bezpieczeństwo kodu w automatycznych tłumaczeniach.

Anatomia katastrofy: dlaczego %s psuje strony

WordPress używa systemu Gettext i funkcji PHP, takich jak sprintf(), do obsługi dynamicznego tekstu.

Na przykład możesz mieć taki ciąg: msgid "Search results for %s"

%s to zmienna zastępcza, w której PHP wstawi zapytanie wyszukiwania użytkownika.

Jak ogólna AI to źle robi

Kiedy podajesz ten ciąg do standardowego dużego modelu językowego (LLM) lub interfejsu API tłumaczenia, widzi on %s jako kolejne dziwne słowo. Może próbować naprawić gramatykę lub interpunkcję wokół niego.

Oto najczęstsze błędy składniowe, które widzimy:

  1. Dodana spacja:

    • Oryginał: Hello %s
    • Złe tłumaczenie: Cześć % s
    • Wynik: PHP szuka %s, ale widzi % s. Zmienna nie ładuje się, często powodując błąd krytyczny.
  2. Halucynacja HTML:

    • Oryginał: Kliknij <strong>tutaj</strong>, aby się zalogować.
    • Złe tłumaczenie: Kliknij <strong>tutaj</ strong>, aby się zalogować.
    • Wynik: AI dodało spację wewnątrz tagu zamykającego </ strong>. Twój CSS się psuje, a reszta strony staje się pogrubiona.
  3. Zamiana argumentów:

    • Oryginał: Strona %1$s z %2$s
    • Złe tłumaczenie: Strona %2$s z %1$s
    • Wynik: AI uznało, że zdanie brzmi lepiej, jeśli liczby zostaną zamienione. Teraz Twoja paginacja mówi „Strona 10 z 1”.

Pułapka „Ręcznej naprawy”

Większość programistów próbuje rozwiązać ten problem, ręcznie przeglądając plik. Jeśli masz małą wtyczkę z 50 ciągami, to w porządku. Ale jeśli tłumaczysz sklep WooCommerce z 5000 ciągów?

Skanowanie 5000 wierszy kodu w poszukiwaniu jednego brakującego średnika lub dodatkowej spacji wewnątrz zmiennej %s jest niemożliwe. Zajmuje to godziny, a ludzkie oczy nieuchronnie coś przeoczą.

Skrypty Regex (wyrażenia regularne) mogą pomóc zweryfikować obecność, ale rzadko wykrywają problemy ze zmianą kolejności specyficzne dla kontekstu lub subtelne uszkodzenie atrybutów HTML.

Rozwiązanie: „Blokada składni”

Jedynym sposobem na bezpieczne przetłumaczenie pliku .po jest uniemożliwienie AI dotykania kodu w pierwszej kolejności. Wymaga to procesu zwanego Blokadą składni.

To jest podstawowa technologia stojąca za SimplePoTranslate.

W przeciwieństwie do ogólnych narzędzi, nie wrzucamy po prostu tekstu do AI. Najpierw analizujemy strukturę Gettext. Oto jak działa nasz „Tryb bezpieczny”:

  1. Analiza: Skanujemy Twój plik .po i identyfikujemy każdą zmienną (%s, %d), każdy argument pozycyjny (%1$s) i każdy tag HTML (<br/>, <span>).
  2. Ekstrakcja i blokowanie: Tymczasowo usuwamy te elementy z ciągu i zastępujemy je niezmiennymi tokenami.
    • Wejście: Cześć <strong>%s</strong>
    • Co widzi AI: Cześć [TOKEN_1][TOKEN_2]
  3. Tłumaczenie: AI tłumaczy tekst „Cześć” na „Hello”, ale fizycznie nie może zmienić [TOKEN_1] ani [TOKEN_2], ponieważ są zablokowane.
  4. Rekonstrukcja: Wstawiamy oryginalny kod z powrotem do przetłumaczonego ciągu dokładnie tam, gdzie powinien się znajdować.

Wynik: Zero zepsutych stron

Ponieważ AI nigdy nie wchodzi w interakcję z rzeczywistymi znakami %s lub HTML, matematycznie niemożliwe jest, aby silnik tłumaczenia dodał spację wewnątrz zmiennej lub uszkodził tag.

Obsługujemy nawet złożone reguły liczby mnogiej (msgid_plural) dla języków takich jak rosyjski czy polski, zapewniając użycie odpowiedniej zmiennej dla odpowiedniej liczby.

Przestań grać w hazard ze swoim kodem

Nie powinieneś musieć trzymać kciuków za każdym razem, gdy przesyłasz plik językowy. Lokalizacja powinna polegać na docieraniu do nowych klientów, a nie na debugowaniu błędów PHP.

SimplePoTranslate to najbezpieczniejsze, najbardziej zaawansowane narzędzie oparte na chmurze dla programistów, którzy dbają o integralność kodu.

  • Oparte na chmurze: Brak wtyczek do zainstalowania.
  • Świadome kontekstu: Wykorzystuje AI klasy Gemini/GPT-4 do naturalnego formułowania.
  • Zablokowana składnia: Gwarantowana ochrona Twoich zmiennych.

Gotowy do tłumaczenia bez bólu głowy? Zacznij za darmo na SimplePoTranslate.com