Tekst na mowę dla TranslatePress: co działa
TranslatePress tłumaczy wyrenderowany HTML strony w czasie rzeczywistym i przechowuje każde tłumaczenie w lokalnych tabelach bazy danych. Każdy artykuł ma jedno ID wpisu, a przełączanie języków odbywa się przez trp_translate(), a nie przez zduplikowane wpisy. Ten jeden fakt zmienia sposób działania funkcji tekstu na mowę na stronie opartej na TranslatePress.
To piąty i ostatni wpis w naszej serii o wielojęzycznym TTS. Omówiliśmy już WPML, Polylang, Weglot i GTranslate. TranslatePress plasuje się między nimi pod względem technicznym, a konfiguracja audio to odzwierciedla.
Czym TranslatePress różni się od WPML, Polylang i Weglot
WPML i Polylang tworzą osobny wpis dla każdego języka. Każde tłumaczenie ma własne ID wpisu, własny post_content i własny permalink. Generowanie audio jest proste, bo każdy język to oddzielny obiekt w WordPress.
Weglot działa zupełnie odwrotnie. Tłumaczenia znajdują się na serwerach Weglot i są wstrzykiwane na stronę przez proxy lub subdomenę. Oryginalna baza danych WordPress nigdy nie widzi przetłumaczonego tekstu, dlatego serwerowy TTS w Weglot jest trudny do wdrożenia bez haków JavaScript.
TranslatePress to rozwiązanie pośrednie. Jeden wpis na artykuł oznacza, że post_content zawiera tylko domyślny język. Każde tłumaczenie jest jednak przechowywane lokalnie w bazie danych WordPress, w tabelach wp_trp_. Można je odczytać, odpytać i przekazać do silnika TTS. To zmienia podejście do audio w porównaniu z każdym z pozostałych czterech wtyczek.
Gdzie faktycznie przechowywane są tłumaczenia
TranslatePress przechowuje tłumaczenia w dedykowanych tabelach z prefiksem wp_trp_. Każda para językowa ma własną tabelę słownikową o nazwie wp_trp_dictionary_<source>_<target>. Dostępna jest też tabela wp_trp_original_strings dla ciągów źródłowych oraz tabele gettext dla tłumaczeń motywów i wtyczek.
Przechowywanie ma określony kierunek. Niemieckie tłumaczenie angielskiej strony trafia do słownika angielsko-niemieckiego. Odczytanie go wymaga zachowania tego samego kierunku. Publiczna funkcja, której potrzebujesz, to trp_translate(), która przyjmuje ciąg treści i kod języka, a zwraca przetłumaczoną wersję.
if ( function_exists( 'trp_translate' ) ) {
$translated = trp_translate( $post->post_content, 'de_DE' );
// Pass $translated to the TTS engine, not $post->post_content.
}
Dla integracji TTS ta funkcja jest jedynym wiarygodnym źródłem treści. Bezpośrednie odczytanie post_content zawsze zwróci domyślny język, niezależnie od tego, na jakim adresie URL jest odwiedzający. Zajrzyj do dokumentacji integracji z TranslatePress, żeby sprawdzić, jak TTSWP obsługuje to po naszej stronie.

Pułapka kodów lokalizacji
TranslatePress używa pełnych kodów lokalizacji, a nie slugów. Język niemiecki to de_DE, a nie de. Francuski to fr_FR. Brazylijski portugalski to pt_BR. Każda integracja zakładająca dwuliterowe slugi w stylu Polylang będzie po cichu zawodzić w TranslatePress.
Dokumentacja deweloperska TranslatePress jest w tej kwestii jednoznaczna. Kod języka przekazywany do trp_translate() to lokalizacja z Ustawień, TranslatePress, Ogólne, i nie musi być taki sam jak slug języka w adresie URL. Zwykły slug jak de nie pasuje do żadnego słownika, więc funkcja wraca do oryginalnego ciągu bez żadnego ostrzeżenia. Jeśli piszesz własny kod, znormalizuj kody języka przed wywołaniem trp_translate() i zapisz ten sam format lokalizacji razem z plikami audio, żeby móc je później dopasować.
Struktura URL i cache
TranslatePress domyślnie używa podkatalogu dla każdego języka. Twoja angielska strona jest dostępna pod adresem site.com/blog/post, a wersja niemiecka pod site.com/de/blog/post. Istnieje też opcja użycia podkatalogu dla domyślnego języka, co sprawia, że wszystkie języki mają symetryczną strukturę.
To dobry scenariusz dla pamięci podręcznej. Różne adresy URL oznaczają różne klucze cache dla każdego języka. WP Rocket, LiteSpeed i pamięci podręczne CDN traktują /de/blog/post jako osobny zasób od /blog/post, więc niemieckie audio trafia razem z niemiecką stroną, a angielskie z angielską. Nasza dokumentacja integracji z cache opisuje reguły wykluczeń, jeśli są potrzebne.
Jedyne ryzyko stanowi płatny dodatek Automatic User Language Detection. Przekierowuje odwiedzających na podstawie języka przeglądarki, co może wchodzić w konflikt z pamięcią podręczną stron i serwować złe przekierowanie nieodpowiedniemu użytkownikowi. Ten sam problem opisaliśmy we wpisie o Polylang. Mniej stron z TranslatePress korzysta z detekcji, bo to płatny dodatek, ale jeśli go używasz, wyłącz logikę przekierowań z cache.
Problem z tłumaczeniem interfejsu odtwarzacza
Ten problem jest charakterystyczny dla TranslatePress. Wtyczka wykrywa i tłumaczy ciągi wstawiane przez JavaScript, co jest rzadkością. Większość narzędzi do tłumaczenia ignoruje treść renderowaną przez JS. TranslatePress przechwytuje ją w DOM po wyrenderowaniu i oferuje jej tłumaczenie.
Efektem ubocznym jest to, że etykiety odtwarzacza audio, takie jak „Play", „Pause" czy „Listen to this article", pojawiają się w edytorze TranslatePress jako ciągi do przetłumaczenia. Jeśli te ciągi zostaną przetłumaczone maszynowo bez weryfikacji, odtwarzacz może wyświetlać nieporadny lub błędny tekst przycisków, a co gorsza, błędnie przetłumaczone etykiety dostępności mogą dezorientować czytniki ekranu.
TranslatePress oferuje dwa sposoby rozwiązania tego problemu. Dodaj atrybut data-no-translation do elementu, który chcesz wykluczyć. Albo użyj selektorów wykluczeń w Ustawieniach zaawansowanych, żeby pominąć całe kontenery za pomocą selektora CSS. Oba rozwiązania są opisane w ustawieniach TranslatePress. Dla odtwarzacza TTSWP wyklucz jego kontener po klasie, a następnie pozwól, żeby nasze przetłumaczone etykiety odtwarzacza pochodziły z plików językowych wtyczki.
Co wykluczyć
- Element kontenera odtwarzacza audio
- Etykiety ARIA na kontrolkach odtwarzania, pauzy i paska postępu
- Wyświetlacze czasu i liczniki czasu trwania
- Etykiety nazw głosów lub języków renderowane przez TTSWP
Jeśli chcesz zmienić styl odtwarzacza po jego wykluczeniu, nasza dokumentacja CSS opisuje dostępne selektory.
Problem rozjazdu po edycji treści
TranslatePress przypisuje każde tłumaczenie do dokładnego ciągu źródłowego. Edytuj oryginał, a TranslatePress tworzy nowy ciąg źródłowy i odłącza istniejące tłumaczenie. Pamięć tłumaczeniowa sugeruje stare tłumaczenie z powrotem, ale dopóki człowiek tego nie potwierdzi, język docelowy wraca do źródłowego.
W kontekście tekstu na mowę oznacza to, że audio może rozjechać się z przetłumaczonym tekstem po każdej edycji. Dodanie przecinka w angielskim tekście odłącza tłumaczenie tego ciągu we wszystkich językach. Twoje niemieckie audio nadal mówi stare zdanie, ale widoczny tekst po niemiecku pokazuje już nowe.
Lista kontrolna po edycji treści:
- Potwierdź nowy ciąg źródłowy w edytorze TranslatePress dla każdego aktywnego języka.
- Wygeneruj audio ponownie najpierw dla wpisu w domyślnym języku.
- Wygeneruj audio dla każdego języka, a następnie odtwórz audio pod każdym zlokalizowanym adresem URL, żeby potwierdzić, że nowy plik odpowiada widocznemu tekstowi.
- Wyczyść pamięć podręczną strony dla każdego zlokalizowanego adresu URL, a nie tylko domyślnego.
Konfiguracja TTSWP na stronie z TranslatePress
Oto aktualny przebieg konfiguracji. Dokumentacja integracji zawsze opisuje najnowsze zachowanie wtyczki.
- Zainstaluj TTSWP z katalogu wtyczek WordPress.org. Przewodnik instalacji przeprowadzi Cię przez cały proces.
- Połącz wtyczkę z backendem TTSWP. Bezpłatne plany zawierają kredyty powitalne, dzięki którym możesz przetestować pełny przepływ przed płatnością. Sprawdź, jak połączyć swoją stronę.
- Upewnij się, że TranslatePress jest aktywny i że co najmniej jeden język docelowy jest skonfigurowany z pełnym kodem lokalizacji.
- Przypisz głos do każdego języka za pomocą mapowania języka na głos. Przypisz głos niemiecki do
de_DE, francuski dofr_FRi tak dalej. Zajrzyj do wyboru głosów, żeby przeglądać katalog. - Opublikuj lub zaktualizuj wpis. Audio generuje się najpierw dla domyślnego języka.
- Odtwórz audio pod każdym przetłumaczonym adresem URL. Generowanie odbywa się na żądanie. Gdy odwiedzający po raz pierwszy odtworzy audio w języku dodatkowym, TranslatePress przekazuje TTSWP informację o aktywnym języku, a TTSWP generuje i zapisuje w cache plik dla tego języka. Każde kolejne odtworzenie używa zapisanego pliku.
- Wyklucz odtwarzacz z tłumaczenia przez TranslatePress za pomocą
data-no-translationlub selektora w Ustawieniach zaawansowanych, żeby etykiety odtwarzacza były kontrolowane przez własne pliki językowe TTSWP.
TTSWP przechowuje jeden plik audio na wpis i język, a odtwarzacz ładuje plik odpowiadający językowi adresu URL, na którym jest odwiedzający. Pod adresem /de/blog/post odtwarzacz ładuje plik po niemiecku, a pod domyślnym adresem plik w domyślnym języku. Przy aktywnym automatycznym tłumaczeniu TTSWP odczytuje przetłumaczony tekst bezpośrednio z TranslatePress przed wysłaniem go do ElevenLabs, więc audio odpowiada temu, co widzi odwiedzający.
Bezpłatny i płatny TranslatePress dla TTS
Bezpłatny TranslatePress obsługuje jeden dodatkowy język, oferuje 2 000 słów tłumaczonych przez TranslatePress AI i umożliwia korzystanie z Google Translate z własnym kluczem API. To wystarczy do prowadzenia dwujęzycznego bloga z pasującym audio w dwóch językach.
Płatny TranslatePress dodaje nieograniczoną liczbę języków, SEO Pack z obsługą tłumaczonych slugów, meta i kontrolą hreflang, wsparcie DeepL, konta tłumaczy, dodatek Automatic User Language Detection i możliwość użycia osobnej domeny dla każdego języka. Dla strony potrzebującej więcej niż dwóch języków, tagów hreflang dla wyszukiwarek lub tłumaczeń w jakości DeepL przed generowaniem TTS, wersja płatna to praktyczny wybór. Jakość audio nie zależy od wybranego planu.
SEO i AEO z audio dla każdego języka
SEO Pack pozwala konfigurować tagi hreflang dla każdego języka, z opcjami dla lokalizacji specyficznej dla kraju, języka niezależnego od regionu lub obu. Dla wyszukiwarek i silników odpowiedzi AI to właśnie sygnalizuje, które audio odpowiada któremu regionowi.
Dodaj wpis schematu AudioObject dla każdego adresu URL języka z właściwą wartością inLanguage pasującą do hreflang. Google i Bing odczytują to powiązanie, a w naszych własnych testach silniki AI, takie jak Perplexity i ChatGPT Search, częściej cytują artykuły wzbogacone o audio, gdy schemat jest poprawny, a URL audio działa. Więcej na ten temat napisaliśmy we wpisie o AEO i audio.
Częste problemy i rozwiązania
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| Audio odtwarza się w złym języku | Tekst pobierany z post_content zamiast z trp_translate() | Przekazuj tekst przez trp_translate( $content, $locale ) z pełnym kodem lokalizacji |
| Przyciski odtwarzacza błędnie przetłumaczone | TranslatePress przechwycił etykiety odtwarzacza wstawione przez JS | Dodaj data-no-translation do kontenera odtwarzacza lub wyklucz go selektorem w Ustawieniach zaawansowanych |
| Brak audio po edycji treści | Edycja źródła odłącza tłumaczenia, a co za tym idzie, audio dla każdego języka | Potwierdź tłumaczenia w edytorze TranslatePress, a następnie wygeneruj audio dla każdego języka |
| Niezgodność kodu lokalizacji | Integracja przekazuje de zamiast de_DE | Znormalizuj do pełnej lokalizacji przed wywołaniem trp_translate() |
| Uszkodzony układ RTL dla arabskiego lub hebrajskiego | CSS odtwarzacza nie obsługuje RTL | Użyj własnego CSS, żeby odwrócić kontrolki odtwarzacza dla lokalizacji RTL |
| Cache serwuje przekierowanie do złego języka | Dodatek Automatic User Language Detection wchodzi w konflikt z pamięcią podręczną stron | Wyłącz przekierowania z cache lub wyłącz detekcję |
Uwaga o dostępności
Narracja audio wspiera kilka kryteriów sukcesu WCAG, gdy odtwarzacz jest obsługiwany klawiaturą i ma poprawne etykiety. Jeśli wykluczasz odtwarzacz z TranslatePress, zachowaj etykiety ARIA w własnych tłumaczeniach TTSWP. Nasz przewodnik po WCAG dla audio omawia kryteria szczegółowo, a główny samouczek konfiguracji to dobry punkt startowy.
Najczęściej zadawane pytania
Czy TranslatePress współpracuje z funkcją tekstu na mowę?
Tak. TranslatePress przechowuje tłumaczenia lokalnie w tabelach wp_trp_, a funkcja trp_translate() zwraca przetłumaczoną treść po stronie serwera. Integracja TTS może odczytać przetłumaczony tekst i wygenerować audio dla każdego języka, o ile przypisuje audio do ID wpisu i lokalizacji oraz używa pełnych kodów lokalizacji, takich jak de_DE, zamiast slugów.
Czy do audio potrzebuję płatnej wersji TranslatePress?
Nie. Bezpłatny TranslatePress obsługuje jeden dodatkowy język i oferuje tłumaczenie przez TranslatePress AI, Google Translate z własnym kluczem lub ręczną edycję. To wystarczy dla dwujęzycznej strony z pasującym audio. Wersja płatna dodaje nieograniczone języki, SEO Pack, DeepL i dodatki do detekcji, które przydają się przy więcej niż dwóch językach lub potrzebie kontroli hreflang.
Dlaczego przyciski odtwarzacza są źle przetłumaczone?
TranslatePress wykrywa ciągi wstawiane przez JS, więc etykiety odtwarzacza audio pojawiają się w jego edytorze i mogą być tłumaczone maszynowo. Rozwiąż to, dodając data-no-translation do kontenera odtwarzacza albo wykluczając go w Ustawieniach zaawansowanych za pomocą selektora CSS. Etykiety odtwarzacza będą wtedy pobierane z własnych plików językowych TTSWP.
Dlaczego audio przestało pasować do tłumaczenia?
Edycja oryginalnego ciągu w TranslatePress tworzy nowy ciąg źródłowy i odłącza istniejące tłumaczenie. Pamięć tłumaczeniowa sugeruje je z powrotem, ale dopóki tego nie potwierdzisz, język docelowy wraca do źródłowego. Po każdej edycji treści wygeneruj audio ponownie dla wpisu domyślnego i każdego języka, a następnie wyczyść cache dla każdego zlokalizowanego adresu URL.
Czym TranslatePress różni się od Weglot w kontekście TTS?
Weglot przechowuje tłumaczenia na własnych serwerach i wstrzykuje je na stronę, więc WordPress nigdy nie widzi przetłumaczonego tekstu po stronie serwera. TranslatePress przechowuje każde tłumaczenie w lokalnej bazie danych i udostępnia trp_translate() do dostępu po stronie serwera. To sprawia, że generowanie audio dla każdego języka jest prostsze w TranslatePress niż w Weglot.
Co zrobić dalej
Zainstaluj Tekst na mowę - TTSWP z katalogu wtyczek WordPress.org, połącz z kontem i przypisz jeden głos do każdego języka skonfigurowanego w TranslatePress. Opublikuj wpis, odtwórz audio pod każdym przetłumaczonym adresem URL i sprawdź, czy audio odpowiada widocznemu tekstowi. Jeśli coś się rozjedzie, dokumentacja integracji z TranslatePress to pierwsze miejsce do sprawdzenia.
Powiązane artykuły
Tekst na mowę dla witryn Polylang: Co naprawdę działa
Jak dodać obsługę tekstu na mowę w Polylang, która generuje osobny plik audio dla każdego tłumaczenia, dobiera właściwy głos do języka i nie psuje się przy pamięci podręcznej.
Text na mowę dla stron WPML: Co naprawdę działa
Jak dodać tekst na mowę do strony WPML, by wtyczka dobierała właściwy głos dla każdego języka, generowała osobny plik audio dla każdego tłumaczenia i radziła sobie z błędami wykrywania języka w wywołaniach AJAX.
Najlepsze wtyczki zamiany tekstu na mowę dla WordPress (2026)
Neutralny przewodnik po siedmiu najlepszych wtyczkach zamiana tekstu na mowę dla WordPress na rok 2026, z rzetelnymi mocnymi stronami, słabościami i pełną tabelą porównawczą funkcji.