Tekst til tale for WPML-nettsteder: Hva som faktisk fungerer

10 min lesing 15 min å lytte
Tekst til tale for WPML-nettsteder: Hva som faktisk fungerer

Har du et WPML-nettsted og vil at hver oversettelse skal ha sin egen opplesing med riktig stemme, må pluginen du velger gjøre tre ting riktig: lese det oversatte innlegget, generere en separat lydfil per språk og oppdage gjeldende språk inne i AJAX-kall. De fleste tekst til tale-plugins feiler på ett av disse punktene. Tekst til Tale - TTSWP er bygget for å håndtere alle tre.

Dette innlegget er den praktiske motparten til vår Weglot-guide. Den tekniske vinkelen er den motsatte, så vi begynner med å forklare hvorfor.

WPML lagrer oversettelser som ekte innlegg. Weglot gjør ikke det.

WPML og Weglot løser flerspråklig WordPress på svært ulike måter, og den forskjellen avgjør hva en tekst til tale-plugin må gjøre.

WPML oppretter en separat innleggspost for hver oversettelse. Den engelske versjonen av en artikkel ligger i wp_posts med én ID. Den spanske versjonen ligger i samme tabell med en annen ID. WPML kobler dem sammen via icl_translations-tabellen. Den oversatte teksten er ekte tekst i databasen, redigert av et menneske eller via WPMLs maskinoversettelses-pipeline.

Weglot er det motsatte. Databasen inneholder bare originalen. Oversettelser produseres ved kjøretid og injiseres i HTML-outputen før siden når nettleseren. En plugin som leser fra get_post() på et Weglot-nettsted ser alltid bare kildespråket.

For tekst til tale endrer dette alt. På WPML er det riktig å lese innholdet fra databasen. Den oversatte teksten ligger allerede der. Feilmodusene handler om hvilket innlegg pluginen leser, hvilket språk den tror den er i, og om den lagrer én lydfil eller mange.

Diagram som sammenligner WPMLs separate innleggslagring med Weglots kjøretidsoversettelse, med konsekvenser for tekst til tale-lydfiler i begge modeller
WPML lagrer hver oversettelse som et ekte innlegg i databasen. Weglot oversetter ved kjøretid. De to modellene krever ulike tekst til tale-strategier.

De fire feilmodusene WPML tekst til tale-plugins treffer

Vi testet flere oppsett på et flerspråklig WPML-testmiljø. De samme fire problemene dukket opp hver gang. Har din nåværende plugin noen av disse, er ikke lyden besøkende hører den du trodde du publiserte.

1. Lydfil på feil språk på grunn av AJAX-språkdeteksjon

Dette er den stille feilen. De fleste tekst til tale-spillere henter lydfilen eller strøm-URL-en via en admin-ajax- eller REST-forespørsel etter at siden lastes inn. Inne i den forespørselen har WordPress mistet front-end-URL-konteksten. Pluginen spør WPML «hvilket språk er vi på?» og får feil svar.

Den vanlige årsaken er den gamle ICL_LANGUAGE_CODE-konstanten. Den defineres én gang tidlig i forespørselen og gjenspeiler språket WPML oppdaget ved oppstart. Under et AJAX-kall trigget fra en spansk side returnerer konstanten ofte standardspråket, ikke spansk. Tekst til tale-pluginen genererer da engelsk lyd til en spansk artikkel, eller henter en bufret engelsk fil og spiller den under den spanske lyttespilleren.

Den riktige tilnærmingen er å bruke WPMLs kjøretidsfiltre. wpml_current_language-filteret returnerer det aktive språket i det øyeblikket du spør. wpml_post_language_details-kroken returnerer språket et bestemt innlegg tilhører, noe som er enda sikrere fordi det knytter lyden til innleggs-ID-en fremfor forespørselstilstanden.

Slik oppdager du det som leser: åpne en oversatt artikkel, trykk play og lytt til det første sekundet. Hører du en engelsk stemme på en ikke-engelsk side, bruker pluginen din feil språkdeteksjonsvei.

2. Én lydfil delt mellom alle oversettelser

Noen plugins genererer lyd når det opprinnelige innlegget publiseres og knytter samme fil til alle oversettelser. Det er raskt og billig. Det er også feil. En spansk leser får engelsk opplesing, eller en syntetisk aksent som ikke stemmer med siden de leser.

Fordi WPML-oversettelser er separate innlegg med separate ID-er, er riktig oppførsel å generere en ny lydfil per oversatt innlegg. Hver fil lagres mot sin egen innleggs-ID og serveres kun til den oversettelsen. TTSWP følger denne modellen og bruker innleggs-ID-en, ikke original-ID-en, som cache-nøkkel.

3. Samme stemme leser alle språk

En fransk artikkel lest av en engelskopplært stemme høres feil ut selv om ordene er korrekte. ElevenLabs-stemmer bærer aksent og prosodi fra treningsdataene sine. En stemme trent på amerikansk engelsk vil lese fransk med amerikansk aksent med mindre du tilordner en stemme som passer målspråket.

TTSWP lar deg knytte én ElevenLabs-stemme til hvert WPML-språk. Den spanske oversettelsen får en spanskopplært stemme, den tyske oversettelsen får en tysk stemme, og så videre. Se dokumentasjonen for språk-til-stemme-tilordning for nøyaktig oppsett.

4. Schema som ikke oppgir lydfilens språk

Dette er AEO-detaljen de fleste plugins overser. AudioObject-strukturdata bør ha en inLanguage-egenskap. Verdien bør være en IETF BCP 47-kode (es, de, nb-NO) som matcher sidens hreflang.

En matchende inLanguage-verdi gir søkemotorer og AI-verktøy et tydelig, maskinlesbart signal om hvilket språk lyden er på. Det forsterker hreflang-signalet som allerede er på siden. Mangler schemaet, eller deler alle oversettelser samme engelske verdi, forsvinner det signalet og språkbevisste systemer kan ikke skille versjonene fra hverandre. Vi dekker hvordan AI-motorer behandler lyd i vår AEO og lyd-guide.

Velge riktig ElevenLabs-modell for WPML-dekning

ElevenLabs leverer flere modeller, og de dekker ikke de samme språkene. Betjener WPML et språk ElevenLabs ikke støtter i modellen du velger, kan du ikke gi god opplesing for den oversettelsen.

Gjeldende dekning per 2026:

  • Multilingual v2 støtter 29 språk, inkludert engelsk, spansk, fransk, tysk, italiensk, portugisisk, nederlandsk, polsk, svensk, dansk, finsk, tyrkisk, arabisk, hindi, japansk, koreansk og kinesisk.
  • Flash v2.5 støtter 32 språk, alle v2-språkene pluss ungarsk, norsk og vietnamesisk, med omtrent 75 ms modell-latens.
  • Eleven v3 støtter 74 språk, den bredeste dekningen av alle modeller. Den har én begrensning som veier tyngre enn ekstradelene: den er ikke bygget for sanntidsbruk. ElevenLabs sier dette direkte. Modellen er større og bruker en høyere-fidelity stemmekodek, så generering tar lengre tid. For sanntids- eller konversasjonsbruk anbefaler ElevenLabs Flash v2.5 i stedet.

For et WPML-nettsted med norsk oversettelse vil Multilingual v2 ikke dekke det. Flash v2.5 vil. For et nettsted som trenger et språk bare v3 støtter, aksepterer du høyere genereringslatens i bytte mot dekning. TTSWP ruter hvert språk til en stemme du velger, så du kan blande modeller etter behov.

Slik tester du om din tekst til tale-plugin faktisk håndterer WPML

Du trenger ikke lese kode for å sjekke dette. Fem minutter i nettleseren viser deg hva som skjer.

  1. Bytt språk. Åpne originalartikkelen, bytt deretter til en oversettelse via WPML-språkvelgeren. Bekreft at URL-en endres (for eksempel til /es/) og at innleggets slug er den oversatte slugen.
  2. Trykk play og lytt. Stemmen bør matche sidens språk. En engelsk stemme på en spansk side betyr at pluginen feilet på punkt én.
  3. Inspiser lyd-URL-en. Høyreklikk spilleren og kopier lydkilden. Sammenlign den med lyd-URL-en på originalartikkelen. Er begge URL-ene identiske på tvers av språk, deler pluginen én fil.
  4. Se på sidens kilde og søk etter AudioObject. Se etter et inLanguage-felt. Det bør være lik sidens språkkode. Mangler feltet eller er det alltid en, er schemaet feil.
  5. Sjekk hreflang. inLanguage på lyden bør matche hreflang på siden. Misforhold forvirrer AI-søk og bryter per-språk-sitering.

Kjør denne sjekklisten før du kjøper noe som helst. Den fungerer på alle tekst til tale-plugins, ikke bare TTSWP.

Slik ser et korrekt WPML tekst til tale-oppsett ut

Her er hva vi anbefaler på et produksjons-WPML-nettsted. Hvert punkt svarer til en feilmodus ovenfor.

ProblemområdeFeil tilnærmingRiktig tilnærming
Språk i AJAXICL_LANGUAGE_CODE-konstantenwpml_current_language-filter eller wpml_post_language_details knyttet til innleggs-ID-en
LydlagringÉn fil delt mellom alle oversettelserÉn fil per oversatt innleggs-ID, servert fra CDN
StemmevalgSamme stemme for alle språkÉn ElevenLabs-stemme tilordnet per WPML-språk
ModellvalgHardkodet modell for alle språkPer-språk-valg mellom Multilingual v2, Flash v2.5 eller Eleven v3
SchemaManglende eller engelskspråklig AudioObjectAudioObject med inLanguage som matcher sidens hreflang

TTSWP følger høyre kolonne som standard. Pluginen leser det oversatte innlegget direkte, genererer en ny lydfil per innleggs-ID, leverer den via CloudFront og sender ut per-språk AudioObject-schema. WPML-integrasjonsdokumentasjonen guider deg gjennom oppsettet.

Én reell begrensning

Lyd per språk koster flere tegn enn én delt fil. Publiserer du en artikkel på 1500 ord og oversetter den til fem språk, betaler du for fem genereringer, ikke én. Det er prisen for korrekthet. Å dele én fil ville vært billigere, men lyden ville ikke matchet siden. Vi anbefaler ikke å ofre leseropplevelsen for å spare kreditter, og vi sier det rett ut i kreditt-dokumentasjonen.

Er budsjettet stramt, generer lyd bare for språkene som faktisk får trafikk. WPMLs språkstatistikk og analyseverktøyet ditt forteller deg hvilke oversettelser som er verdt å ta opp.

Ofte stilte spørsmål

Støtter TTSWP WPML uten ekstra konfigurasjon?

Ja. Når begge plugins er aktive, oppdager TTSWP WPML, leser det oversatte innholdet for hvert språk og lagrer en separat lydfil per oversettelse. Du tilordner én stemme per språk i TTSWP-innstillingene, og publiserer deretter oversettelser som normalt. Lyden regenereres når en oversettelse oppdateres. Se WPML-integrasjonssiden for oppsettsteg.

Hvorfor leser min nåværende tekst til tale-plugin alt på engelsk på oversatte sider?

Den mest sannsynlige årsaken er den utdaterte ICL_LANGUAGE_CODE-konstanten inne i et AJAX-kall. Under AJAX returnerer konstanten ofte nettstedets standardspråk i stedet for det aktive, slik at pluginen genererer eller serverer engelsk lyd på ikke-engelske sider. Løsningen er å bytte til wpml_current_language-filteret eller lese språket fra innleggs-ID-en direkte.

Kan jeg bruke forskjellige ElevenLabs-stemmer per WPML-språk?

Ja. TTSWP knytter én ElevenLabs-stemme til hvert WPML-språk. Spanske oversettelser leses av en spansk stemme, tyske av en tysk stemme, og så videre. Du kan også velge ulike modeller per språk, noe som er viktig når et målspråk bare støttes av Flash v2.5 eller Eleven v3 og ikke Multilingual v2.

Hvilke språk dekker ElevenLabs for WPML-nettsteder?

Multilingual v2 dekker 29 språk, Flash v2.5 dekker 32 (med norsk, ungarsk og vietnamesisk i tillegg), og Eleven v3 dekker 74 språk. Velg modellen med bredest dekning innenfor latensbegrensningene dine. De fleste WPML-nettsteder klarer seg godt med Multilingual v2 eller Flash v2.5. Nettsteder med sjeldnere språk flytter de oversettelsene til Eleven v3.

Sender TTSWP ut per-språk-schema for AI-søk?

Ja. TTSWP genererer et AudioObject per oversatt innlegg med en inLanguage-verdi som matcher sidens hreflang. Dette gir søkemotorer og AI-verktøy et tydelig signal om hvilken lyd som tilhører hvilken språkversjon av artikkelen, i stedet for at alle oversettelser er merket likt.

Neste steg

Kjør den femdelte nettlesertesten på tekst til tale-pluginen du bruker i dag. Feiler noe steg, er det den feilmodusen du må fikse før du legger til flere oversettelser. Vil du ha et oppsett som håndterer alle fem uten ekstra arbeid, installer Tekst til Tale - TTSWP fra WordPress.org, koble det til TTSWP-backenden og tilordne én stemme per WPML-språk. Pluginen tar seg av resten.