Text till tal för WPML-sajter: Det som faktiskt fungerar

11 min läsning 20 min lyssning
Text till tal för WPML-sajter: Det som faktiskt fungerar

Kör du en WPML-sajt och vill att varje översättning ska ha sin egen berättarröst på rätt språk? Då måste tillägget du väljer klara tre saker: läsa det översatta inlägget, generera en separat ljudfil per språk och detektera rätt språk vid AJAX-anrop. De flesta text till tal-tillägg misslyckas med minst en av dem. Text till tal - TTSWP är byggt för att hantera alla tre.

Det här inlägget är den praktiska motsvarigheten till vår guide för Weglot. Den tekniska utgångspunkten är den motsatta, och vi börjar med att förklara varför.

WPML lagrar översättningar som riktiga inlägg. Weglot gör det inte.

WPML och Weglot löser flerspråkig WordPress på helt olika sätt, och den skillnaden avgör vad ett text till tal-tillägg behöver göra.

WPML skapar ett separat inlägg för varje översättning. Den engelska versionen av en artikel finns i wp_posts med ett ID. Den spanska versionen finns i samma tabell med ett annat ID. WPML kopplar ihop dem via tabellen icl_translations. Den översatta texten är riktig text i databasen, redigerad av en människa eller via WPMLs maskinöversättning.

Weglot fungerar tvärtom. Databasen innehåller bara originalet. Översättningarna skapas i realtid och injiceras i HTML-koden innan sidan når webbläsaren. Ett tillägg som läser från get_post() på en Weglot-sajt ser alltid bara källspråket.

För text till tal förändrar det allt. Med WPML är det korrekt att läsa inläggsinnehållet direkt från databasen. Den översatta texten finns redan där. Felpunkterna handlar om vilket inlägg tillägget läser, vilket språk det tror att det befinner sig i och om det lagrar en eller flera ljudfiler.

Diagram som jämför WPMLs separata inläggslagring med Weglots realtidsöversättning och dess konsekvenser för TTS-ljudfiler
WPML lagrar varje översättning som ett eget inlägg i databasen. Weglot översätter i realtid. De två modellerna kräver olika TTS-strategier.

De fyra vanligaste felen i WPML-anpassade TTS-tillägg

Vi testade flera uppsättningar på en flerspråkig WPML-staging-sajt. Samma fyra problem dök upp gång på gång. Har ditt nuvarande tillägg något av dessa, är ljudet som dina besökare hör inte det du tror att du publicerade.

1. Fel språk på ljudet på grund av AJAX-språkdetektering

Det här är det dolda problemet. De flesta text till tal-spelare hämtar ljudfilen eller ström-URL:en via en admin-ajax- eller REST-förfrågan efter att sidan laddats. I den förfrågan har WordPress tappat URL-kontexten från fronten. Tillägget frågar WPML «vilket språk är vi på?» och får fel svar.

Den vanliga orsaken är den gamla konstanten ICL_LANGUAGE_CODE. Den definieras en gång tidigt i förfrågan och speglar det språk WPML detekterade vid start. Under ett AJAX-anrop från en spansk sida returnerar den konstanten ofta standardspråket, inte spanska. Då genererar TTS-tillägget engelska ljud för en spansk artikel, eller hämtar en cachad engelsk fil och spelar den under den spanska spelaren.

Rätt tillvägagångssätt är att använda WPMLs runtime-filter. Filtret wpml_current_language returnerar det aktiva språket just när du frågar. Hooken wpml_post_language_details returnerar vilket språk ett specifikt inlägg tillhör, vilket är ännu säkrare eftersom det knyter ljudet till inläggs-ID:t snarare än förfrågningstillståndet.

Så här märker du det som läsare: öppna ett översatt inlägg, tryck på play och lyssna på den första sekunden. Hör du en engelsk röst på en icke-engelsk sida har tillägget fel i sin språkdetektering.

2. En ljudfil delas av alla översättningar

En del tillägg genererar ljud när originalinlägget publiceras och kopplar sedan samma fil till alla översättningar. Det är snabbt och billigt. Det är också fel. En spansk läsare får engelsk berättning, eller en syntetisk accent som inte stämmer med sidan de läser.

Eftersom WPML-översättningar är separata inlägg med separata ID:n är det rätta beteendet att generera en ny ljudfil per översatt inlägg. Varje fil lagras mot sitt eget inläggs-ID och visas bara för den översättningen. TTSWP följer den här modellen och använder inläggs-ID:t, inte originalets ID, som cachenyckel.

3. Samma röst läser alla språk

En fransk artikel berättad av en engelsktränad röst låter fel även när orden är korrekta. ElevenLabs-röster bär accent och prosodi från sin träningsdata. En röst tränad på amerikansk engelska läser franska med amerikansk accent om du inte tilldelar en röst som matchar målspråket.

Med TTSWP kan du koppla en ElevenLabs-röst till varje WPML-språk. Den spanska översättningen får en spansktränad röst, den tyska en tysk röst och så vidare. Se dokumentationen för språk-till-röst-mappning för exakt uppsättning.

4. Schema som inte anger vilket språk ljudet är på

Det här är AEO-detaljen de flesta tillägg missar. AudioObject-strukturdata bör ha en inLanguage-egenskap. Värdet ska vara en IETF BCP 47-tagg (es, de, nb-NO) som matchar sidans hreflang.

Ett matchande inLanguage-värde ger sökmotorer och AI-verktyg en tydlig, maskinläsbar signal om vilket språk ljudet är på. Det förstärker hreflang-signalen som redan finns på sidan. Saknas schemat, eller delar alla översättningar samma engelska värde, försvinner den signalen och språkmedvetna system kan inte skilja versionerna åt. Vi går igenom hur AI-motorer hanterar ljud i vår guide om AEO och ljudinnehåll.

Välj rätt ElevenLabs-modell för din WPML-täckning

ElevenLabs har flera modeller och de täcker inte samma språk. Om WPML servar ett språk som ElevenLabs inte stöder i den modell du valt kan du inte berätta den översättningen på ett bra sätt.

Aktuell täckning från 2026:

  • Multilingual v2 stöder 29 språk, inklusive engelska, spanska, franska, tyska, italienska, portugisiska, nederländska, polska, svenska, danska, finska, turkiska, arabiska, hindi, japanska, koreanska och kinesiska.
  • Flash v2.5 stöder 32 språk, alla v2-språk plus ungerska, norska och vietnamesiska, med en modelllatens på ungefär 75 ms.
  • Eleven v3 stöder 74 språk, den bredaste täckningen av alla modeller. Den har en begränsning som väger tyngre än dess extra funktioner: den är inte byggd för realtidsanvändning. ElevenLabs anger det uttryckligen. Modellen är större och använder en ljudkodek med högre kvalitet, vilket gör att genereringen tar längre tid. För realtids- eller konversationsscenarier rekommenderar ElevenLabs Flash v2.5 i stället.

För en WPML-sajt med en norsk översättning räcker inte Multilingual v2. Flash v2.5 klarar det. Behöver sajten ett språk som bara v3 stöder accepterar du längre generationstid i utbyte mot täckning. TTSWP dirigerar varje språk till en röst du väljer, så du kan blanda modeller efter behov.

Så testar du om ditt TTS-tillägg verkligen hanterar WPML

Du behöver inte läsa kod för att kontrollera det här. Fem minuter i webbläsaren berättar vad som händer.

  1. Byt språk. Öppna originalartikeln och byt sedan till en översättning via WPMLs språkväxlare. Kontrollera att URL:en ändras (till exempel till /es/) och att inläggssluggen är den översatta sluggen.
  2. Tryck play och lyssna. Rösten ska matcha sidans språk. En engelsk röst på en spansk sida betyder att tillägget misslyckades i steg ett.
  3. Inspektera ljud-URL:en. Högerklicka på spelaren och kopiera ljudkällan. Jämför den med ljud-URL:en på originalartikeln. Är båda URL:erna identiska oavsett språk delar tillägget en enda fil.
  4. Visa sidkällan och sök efter AudioObject. Leta efter ett inLanguage-fält. Det ska motsvara sidans språkkod. Saknas fältet eller är det alltid en är schemat fel.
  5. Kontrollera hreflang. inLanguage på ljudet ska matcha sidans hreflang. Avvikelser förvirrar AI-sökning och bryter per-språks-citering.

Kör den checklistan innan du köper något. Den fungerar för alla TTS-tillägg, inte bara TTSWP.

Så ser en korrekt WPML TTS-uppsättning ut

Det här rekommenderar vi på en produktions-WPML-sajt. Varje steg kopplas till ett fel ovan.

ProblemFel tillvägagångssättRätt tillvägagångssätt
Språk i AJAXKonstanten ICL_LANGUAGE_CODEFiltret wpml_current_language eller wpml_post_language_details kopplat till inläggs-ID:t
LjudlagringEn fil delad av alla översättningarEn fil per översatt inläggs-ID, servad från CDN
RöstvalSamma röst för alla språkEn ElevenLabs-röst mappad per WPML-språk
ModellvalHårdkodad modell för alla språkVal per språk mellan Multilingual v2, Flash v2.5 eller Eleven v3
SchemaSaknat eller engelskt AudioObjectAudioObject med inLanguage som matchar sidans hreflang

TTSWP följer högerkolumnen som standard. Tillägget läser det översatta inlägget direkt, genererar en ny ljudfil per inläggs-ID, levererar den via CloudFront och genererar per-språks AudioObject-schema. WPML-integrationsdokumentationen går igenom uppsättningen steg för steg.

En ärlig begränsning

Ljud per språk kostar fler tecken än en delad fil. Publicerar du en artikel på 1 500 ord och översätter den till fem språk betalar du för fem genereringar, inte en. Det är priset för korrekthet. En delad fil vore billigare, men ljudet skulle inte matcha sidan. Vi rekommenderar inte att offra läsarupplevelsen för att spara krediter, och det säger vi rent ut i kreditdokumentationen.

Är budgeten tight, generera ljud bara för de språk som faktiskt får trafik. WPMLs språkstatistik och din analys berättar vilka översättningar som är värda att berätta.

Vanliga frågor

Stöder TTSWP WPML direkt?

Ja. När båda tilläggen är aktiva detekterar TTSWP WPML, läser det översatta inläggsinnehållet för varje språk och lagrar en separat ljudfil per översättning. Du tilldelar en röst per språk i TTSWP-inställningarna och publicerar sedan översättningar som vanligt. Ljudet regenereras när en översättning uppdateras. Se WPML-integrationssidan för installationssteg.

Varför läser mitt nuvarande TTS-tillägg allt på engelska på översatta sidor?

Den troligaste orsaken är den utfasade konstanten ICL_LANGUAGE_CODE inuti ett AJAX-anrop. Vid AJAX returnerar den konstanten ofta sajtstandardspråket i stället för det aktiva, så tillägget genererar eller servar engelska ljud på icke-engelska sidor. Lösningen är att byta till filtret wpml_current_language eller läsa språket direkt från inläggs-ID:t.

Kan jag använda olika ElevenLabs-röster per WPML-språk?

Ja. TTSWP mappar en ElevenLabs-röst till varje WPML-språk. Spanska översättningar läses av en spansk röst, tyska av en tysk röst och så vidare. Du kan också välja olika modeller per språk, vilket spelar roll när ett målspråk bara stöds av Flash v2.5 eller Eleven v3 och inte av Multilingual v2.

Vilka språk täcker ElevenLabs för WPML-sajter?

Multilingual v2 täcker 29 språk, Flash v2.5 täcker 32 (med norska, ungerska och vietnamesiska tillagda) och Eleven v3 täcker 74 språk. Välj den modell med bredast täckning som din latensbudget tillåter. De flesta WPML-sajter fungerar bra med Multilingual v2 eller Flash v2.5. Sajter med ovanligare språk flyttar de översättningarna till Eleven v3.

Genererar TTSWP per-språks-schema för AI-sökning?

Ja. TTSWP skapar ett AudioObject per översatt inlägg med ett inLanguage-värde som matchar sidans hreflang. Det ger sökmotorer och AI-verktyg en tydlig signal om vilket ljud som hör till vilken språkversion av artikeln, i stället för att alla översättningar taggas likadant.

Nästa steg

Kör femstegs-webbläsartestet på det TTS-tillägg du har idag. Misslyckas något steg är det det felet du behöver åtgärda innan du lägger till fler översättningar. Vill du ha en uppsättning som klarar alla fem från start, installera Text till tal - TTSWP från WordPress.org, anslut det till TTSWP-backendet och tilldela en röst per WPML-språk. Tillägget sköter resten.