You are currently viewing Kuratoitu ja käännetty WordPress-sivusto

Kuratoitu ja käännetty WordPress-sivusto

Minulla on iso koiriin liittyvä artikkelitietopankki Katiska. Paljon tietoa, osa koottua asiaa ja osa taasen ajan syömää nippeliä. Sivusto hostaa myös podcast-sarjaa. Katiska on jonkun  verrankin suosittu ja paljon käytetty, omassa genressään. Sivustolla on kuitenkin yksi rajoite. Se on vain suomeksi. Jos se olisi ainakin myös englanniksi, niin saattaisin saada tavoitettua isomman yleisön.

Minulla olisi kaksi mahdollista ratkaisumallia.

  • Käytän monikielisyyden tekevää pluginia, esimerkiksi Polylangia
  • Teen erillisen sivuston, johon kuratoin sisältöä ja teen käännökset erikseen

Polylang ja sen kilpailijat ovat toimivia. Asettavat hieman haasteita reverse proxylle, mutta Accept-Language ja Content-Language säädöillä niistä ylipääsee. Ongelma on siinä, että ne kääntävät enemmän tai vähemmän koko sisällön, ja joukossa on paljon asiaa, jotka eivät ole relevanttia enää tässä ajassa ja paikassa ulkopuolella Suomen. Lisäksi teksteissä on kohtia, jotka olisi syytä ns. globalisoida. Enkä pidä noiden käytettävyyttäkään parhaimpana mahdollisena — ainakaan satunnaisen kävijän silmin.

Aloin kallistumaan uuden, kuratoidun sivuston kannalle. Olen tuota suunnitellut jo useamman vuoden ja toteutus on aina jäänyt idea-asteelle oman vajaan kielitaidon takia. Minun olisi pakko käyttää käännöspalveluja. Tiedän kuinka surkeita palkkoja kääntäjille maksetaan, mutta halutut korvaukset ylittävät maksukyvyn. Kyseessä on kuitenkin vain niukin naukin mainosnäytöillä itsensä maksava projekti.

AI:n tulo

Nyt, 2025, maailma on muuttunut. Saimme uuden hypen: tekoälyn eli AI:n. En mene nyt siiheen, että suurilla generatiivisillä kielimalleilla ei ole älyn hiventäkään, ja niistä on kehittymässä massiivinen ongelma. Mutta moisella saan tehtyä siedettävän käännöksen. Toki ihmistyöllä saisi parempaa jälkeä. Tai voisi saada, koska me kaikki tiedämme elokuvien tekstitysten tasosta mitä tapahtuu, kun kääntäjälle ei makseta riittävästi. Lisäksi käännöstöissä on iät ajat käytetty ohjelmallista kääntämistä apuna ja vaikka ajatuksesta ei pidetäkään, niin ei se muuta ollut kuin pre-AI -ratkaisu.

Sisällön kohderyhmä ei itsekään osaa kirjoittaa kunnolla. Anteeksi, olen paha ihminen, mutta aika ajoin olen kyseenalaistanut myös lukutaidon. En usko heidän häiriintyvän mahdollisista kömmähdyksistä digitaalisessa käännöksessä suomesta englantiin. Kyse on samankaltaisesta asiasta kuin täytekuvien teettämisessä AI:lla. Kuvien kanssa työskenteleviä ne häiritsevät, mutta tavallinen kuluttaja ei moisia edes huomaa. Siis ei huomaa itse kuvien olemassaoloa. Moisten täytekuvien ainoa rooli on pehmentää tekstiä ja tehdä siitä… vähemmän pelottavaa. Olla sisustuksellinen elementti.

Toki kuvien tuottajia, pääosin valokuvaajia ja graafikoita, tilanne hirvittää. AI vie heidän leipänsä. Mutta, ja taas olen paha ihminen, en ole heidän asiakkaansa ollut tähänkään asti. Stock-kuvien, jotka eivät ole artikkelieni tuottavaa ja katseltavaa sisältöä, hinnoittelu on pääsääntöisesti aina liian kallis. 10-20 euroa per kuva ei ole paljon? On se, kun artikkeleja on 1600. Silloin jo 5 euroakin on liian kallis. Koko ajan on muistettava, että sivustojeni kohdalla ei ole kyse liiketoiminnasta.

Tekstieni kohdalla minulle ei edes ole moista taloudellis-moraalis-eettistä dilemmaa. Tässä tapauksessa AI kääntää omaa tekstiäni. Ihmiskääntäjä ei menetä valintani takia mitään, koska en milloinkaan olisi ollut hänen asiakkaansa muutenkaan. Olen 25 vuotta suunnitellut tätä, ja vasta nyt se toteutuu. Googlen translatorhan on pelkkä vitsi. LLM:t ovat jo lähellä tuotantotasoa käännösten suhteen.

Joten suunnitelma on:

  • käynnistää uusi sivusto uudella domainilla
  • merkitä olevalla sivustolla käännettävät tekstit
  • kääntää ne AI:lla, tässä OpenAI:n GPT-4o mallilla
  • poistaa sisäiset linkitykset ja muita vastaavia elementtejä
  • oikolukea ja muokata pakolliset asia
  • julkaista käännetyt uudella sivustolla
  • laittaa meta-tiedot kohdalleen

Kaikki olisi myös automatisoitava niin pitkälle kuin mahdollista, koska käsitöitä jää kuitenkin aika paljon.

Käännöksen tekevät skriptit

Ihan alkuun on mainittava, että allaolevaa käytetään Hetznerin VPS:ssä, jossa on Ubuntu 25.04. Hostaajalla ei ole suurtakaan merkitystä, mutta en tiedä toimiiko mitään muualla kuin Debian-pohjaisissa. Ja hyvin oleellinen asia ymmärtää on, että en ole koodari. En edes alan harrastelija.

Aikoinaan käännökset jäivät tekemättä, koska oma kielitaito on siihen liian surkea. Pidgin-tasoa. Sen ongelman ratkaisi AI.

Nyt prosessia rajoittaa osaamattomuuteni koodauksessa. Minulla muuttaa joku tai jokin joka kuukausi WordPressin hakemistojen omistajaksi rootin. Joten jotta päivitykset (ja yhden WooCommercen ajanvarausten käsittely) toimisi, niin minun pitäisi muistaa komentaa joka kuukauden ensimmäinen päivä chown -R www-data:www-data /var/www/. Tein kerran tuon tekevän bash-skriptin ja laitoin sen croniin. Seurauksena oli, että seuraavan kuukauden ensimmäinen päivä koko hakemistorakenteeni juuresta ylöspäin oli www-dataomistuksessa. Se hajotti aika paljon, ja oli melkoisen työläs korjata — koska en osannut, niin jouduin korjaamaan joka hemmetin hakemistokohdan omistajan käsin.

Joten en ehkä ala itse rakentamaan tarvittavaa skriptausta.

Tein sen minkä jokainen nykyään tekee, mukaanlukien työnsä menettämistä pelkäävät koodarit, ja pyysin ChatGPT:ltä apua. Selitin tarkkaan mikä on lähtötilanne ja ongelma. Se teki minulle ratkaisun.

Eihän se heti toiminut. Vasta ehkä viides tai kuudes versio teki suunnilleen sen mitä halusin. Osan virheistä osasin korjata itse, osan korjasi ChatGPT ja osassa ChatGPT korjasi minun tekemäni korjaukset.

Nyt proseduurini on, että merkitsen alkuperäisellä sivustolla käännettävät artikkelit tagilla translate. Sitten komennan shellin puolella kääntämisen päälle, jolloin WP CLI:n ja pythonin yhteistyöllä tagatut tekstit lähetetään OpenAI:n GPT:lle käännettäväksi, julkaistaan uudella sivustolla luonnoksina (draft) ja alkuperäisessä tagi muutetaantranslated.

Ai miksikö tagit ovat englanniksi? Koska jenkkisukuinen ChatGPT niin halusi, enkä vaihtanut, koska se ei minua häiritse. Itseasiassa pyysin sitä tekemään pienen lisäosan, joka piilottaa nuo tagit artikkeleista. Nehän eivät käyttäjää kiinnosta.

Käytetyt skriptit

Aito koodari voisi tuhahtaa, että onpa vaikeasti tehty. Kaikki olisi pitänyt paketoida yhteen ohjelmaan, mutta minulla on kaksi skriptiä. Ja varmaan tiedotkin olisi pitänyt hakea REST API:lla. Entä virhetilanteet? Aivan varmasti noin onkin, mutta minulle tuo riittää. En halunnut painia yhtään kauempaa ChatGPT:n kanssa kuin oli pakko. Minulla tavoite ei ole luoda kaunista koodia, vaan saada kertaluontoinen asia tehtyä.

Toki minulla menee tähän projektiin varmaan puoli vuotta, mutta silti se on kertaluontoinen (ellen innostu tekemään muitakin kieliversioita, ja silloin toteutus muuttuu, koska pystyn käyttämään pohjana jo valmista englanninkielistä kuratoitua sivustoa).

Käytössä on siis kaksi skriptiä:

  • bash-skripti, joka hakee WP CLI:n avulla otsikot ja leipätekstin niistä artikkeleista, joilla ontranslate tagi
  • python-skripti, joka
    • siivoaa linkitykset jne.
    • lähettää API:n avulla käännettävät tekstit GPT-4o mallille
    • julkaisee uudella sivustolla käännetyt WP CLI:n avulla
    • muuttaa tagin translate -> translated alkuperäisellä sivustolla

Löydät ne täältä:

https://github.com/eksiscloud/LinguaBridgeWP

Voit myös ladata ne suoraan täältä. Silloin saat version, jota käytän itse.

Lataa “kaanna-kaikki.sh” kaanna-kaikki.sh – Ladatty 7 kertaa – 961,00 t

 

Lataa “translate_and_publish.py” translate_and_publish.py – Ladatty 8 kertaa – 3,83 kt


Olen kommentoinut skriptit englanniksi, mutta kysy jos et tiedä mitä niissä muokkaisit. Artikkelin lopussa on linkki foorumin kommentointiin.

Käyttö

Tarvitset kaksi asiaa:

  • OpenAI:n API-avaimen. Jos sinulla ei ole, niin joudut luomaan käyttäjätilin. Valitan, tämäkään ei ole ilmainen ratkaisu. Mutta minulle on nyt maksanut sadan pituudeltaan tämän tekstin luokkaa olevien artikkelien kääntäminen noin euron.
  • WP-CLI asennettuna
  • Kaksi WordPress-sivustoa: sen varsinaisen, josta käännät ja joka minulla on suomeksi, ja sitten sen toisen, jossa julkaistaan käännetty sisältö.

Merkitse ensin lähtösivustolla käännettävät artikkelit tagillatranslate. Kääntäminen ei tapahdu ihan sekunnissa, joten ehkä se kannattaa jättää shelliin pyörimään tmuxin tai screenin sisälle. Itse käytän tmuxia, koska koin sen olevan helpompi kuin screen. Makuasioita.

Jos käännätytät vaikka tusinan artikkelia, niin ei se tunteja vie. Ehkä viitisen minuuttia, en ole kellottanut.

Mene sen WordPressin hakemistoon, josta käännät. Polku lienee lähelle /var/www/sivuston-nimi/public_html . Komenna siellä:

search_all.sh
  • jos latasit bash-scriptin täältä, niin sen nimi on kaanna-kaikki.sh

Makuasioita, mutta minä varmaan muuttaisi tuo nimen helpommin muistettavaksi.

Huomaa: Skriptissä ei todellakaan ole minkäänlaista logiikkaa virheille. API saattaa kiukutella tai sitten pitkä artikkeli ylittää jonkun time-outin. Et saa mitään varoitusta, ja skripti jää vaan roikkumaan. Silloin ctrl-c pelastaa tilanteen.

Tagien piilotus

Ihan kaikkea meta-tietoa ei ole tarpeen näyttää satunnaiselle kävijälle. Joten ChatGPT rakensi minulle yksinkertaisen pluginin, joka piilottaa tagit translate ja translated vierailijoilta. Tuo asennetaan sille sivustolle, jossa alkuperäiset käännettävät ovat.

Lataa “hide-internal-tags.zip” hide-internal-tags.zip – Ladatty 6 kertaa – 1,63 kt

Ja kuten aina, niin ChatGPT ei tehnyt ihan sitä mitä pyysin. Tarkoitus olisi, että nuo kaksi käännöksiin liittyvää tagia piilotettaisiin kirjautumattomilta kävijöiltä, mutta se oli ehkä hieman liikaa. Tagit ovat piilotettu jopa adminilta, myös artikkelin muokkauksessa. Mutta ne näkyvät tagien arkistossa, sekä artikkelien listauksessa.

Ehkä pyydän sitä joskus korjaamaan tuon.

Elämä käännösten jälkeen?

Kovin työ on vilkaista käännetyt läpi ja korjata sieltä vanhan sivuston maininnat pois sekä muutoin muuttaa joitain pelkästään Suomeen viittaavia huomautuksia. Juurikin niiden takia en halunnut käyttää WordPressin tyypillisempiä multi-lingual ratkaisuja.

Joten käännökset itsessää olivat se vähäpätöisin työ. Sen sijaan uuden sivuston käynnistäminen viekin tunteja.

Minä käytin aivan toista domainia, kuin mitä alkuperäinen on. Nimeä ei vaan saanut käännettyä englanniksi ja suomalaisessa muodossaan se oli jopa liian vaikea lausuttavaksi. Jotkut voivat sanoa, että tapoin sivustoni SEO-arvon. Jossain määrin kyllä, mutta olen tehnyt selkokielisenkin version (tai yritin… selkokieli on todella vaikeaa kirjoittaa) ja sain muutamassa viikossa sille korkean näkyvyyden. Sama toimii tässäkin.

Ei kieliversion rakentaminen automaattisesti tai suoraan tuo hakukonenäkyvyyttä. Yhtä vähän kuin alidomainin käyttö yritettäessä ratsastaa apexin maineella.

Jakke Lehtonen

Teen B2B-markkinoille sisällöntuottoa sekä UX-testauksia. Samaan liittyy myös koulutukset yrityksille ja webmaailman kanssa muutoin painiville. Serverien sielunelämää on joutunut ohessa opettelmaan. Toinen puoli toiminnasta on koirien ravitsemuksen ja ruokinnan suunnittelua sekä varsinkin omistajien kouluttamista hoitamaan koiriaan oikein ja vielä paremmin. Profiili: Jakke Lehtonen

Keskustele foorumilla Katiskan foorumi