Den här webbplatsen är automatiskt översatt till flera språk med programvara utvecklad av Kohei Koyanagi. Se originalet på engelska för högsta noggrannhet.

Hur denna blogg översätts till 42 språk

Splync-bloggen har 42 språk

Detta är den 23:e artikeln på min blogg för Splync, en delad budgetspårare för par, vänner och familjer. Du kanske undrar hur jag publicerar varje inlägg på 42 språk trots att jag är en ensam ingenjör. Som ansvarsfriskrivningen högst upp på varje artikel säger, översätts denna webbplats automatiskt till flera språk med programvara jag byggt själv. För att vara tydlig: jag skriver inte manuellt en enda mening på något annat språk än engelska. Därför ber jag vänligen läsare att hänvisa till den ursprungliga engelska versionen när noggrannheten verkligen spelar roll. Ändå, efter många försök och förbättringar av översättningsprocessen, tror jag att den övergripande översättningskvaliteten är ganska bra. I denna artikel kommer jag att dela vad min programvara gör för att göra Splync-bloggen flerspråkig.

Python och OpenAI API gör det tillsammans

Jag börjar alltid med att skriva varje artikel på enkel engelska, inklusive SEO-relaterad metadata. Därefter skickar mitt Python-skript den engelska texten till OpenAI API, tillsammans med en prompt och en liten referensfil. På OpenAIs servrar läser ChatGPT-4o förfrågan och returnerar den översatta artikeln — till exempel den arabiska versionen — i JSON-format. När min MacBook tar emot den översättningen skickar skriptet omedelbart en ny begäran, denna gång för bengaliska. Skriptet loopar genom alla 42 målspråk automatiskt. Vid slutet av processen har min dator 42 översatta JSON-filer. Ett annat Python-skript bäddar sedan in varje översättning i en HTML-mall och genererar 42 HTML-filer på mindre än en sekund. Alla filer laddas upp till servern där denna blogg är värd, och varje språkversion placeras i sin egen katalog. Till sist uppdaterar ett server-side Python-skript artikelindexet och länkarna "Nästa inlägg" så att varje språks navigering förblir konsekvent. Med den ursprungliga engelska artikeln skriven i enkel text, tar hela processen vanligtvis 5 minuter eller mindre. När jag behöver göra ändringar, uppdaterar jag flera HTML-filer samtidigt med server-side Python-skript.

Vad är API

Om du inte är bekant med tekniska termer kanske du undrar hur min dator "pratar" med OpenAIs server från första början. Svaret är något som kallas ett API, Application Programming Interface. Du kan tänka på ett API som ett meddelandefönster mellan två program: ett program skickar en begäran, och det andra skickar tillbaka ett svar. Till exempel skickar mitt Python-skript ett meddelande som, "Vänligen översätt denna artikel till tyska." OpenAI tar emot det meddelandet genom API:et, förbereder översättningen och skickar tillbaka resultatet. Det fungerar precis som att göra en beställning på en restaurang: du talar om för servitören vad du vill ha, köket förbereder det, och servitören tar tillbaka det till ditt bord. Och varför behöver du en servitör från första början? Eftersom du inte går in i köket eller pratar direkt med kocken — du vet inte hur köket fungerar, och du behöver inte det. Du kanske säger, "Kan jag få en cheeseburgare?" till servitören, och servitören kanske skriker, "Beställ på gång! T21, Chihuahua!" i ett helt annat format. Ett API spelar samma roll. Det kopplar samman två olika system utan att kräva att de förstår varandras interna språk eller arbetsflöde.

Varför behöver jag OpenAI API

Nu när vi har sett vad ett API är, här är varför jag faktiskt förlitar mig på det för denna blogg. Praktiskt taget vet jag hur jag "pratar" med ChatGPT själv — men jag har 42 språk att bearbeta. Att ringa en servitör 42 gånger skulle vara tröttsamt (programmet hoppar över att översätta engelska till engelska, men konverterar ändå texten till JSON). Användning av OpenAI API låter mitt Python-skript skicka alla de begärandena automatiskt, vilket sparar mig från repetitivt arbete så att jag kan fokusera på andra saker. Jag är en ensam utvecklare, så jag måste använda min tid så effektivt som möjligt. Varje gång jag ser en uppgift som är repetitiv och har klara regler, automatiserar jag den. Resultatet är vanligtvis en process som är tusen gånger snabbare och helt felfri. Det är därför automatisering genom API är avgörande — det låter mitt skript lägga alla 42 "beställningar" direkt och tillförlitligt.

Varför 42 språk

Tekniskt sett skulle jag kunna lägga till många fler språk; det skulle bara ta några minuter extra att köra medan jag diskar. Men jag gillar personligen numret 42, "Svaret på den yttersta frågan om livet, universum och allting" från Douglas Adams bok. Utöver min anknytning till numret 42 kan det vara riskabelt att lägga till mycket små språk, eftersom AI-översättning kan bli mindre pålitlig för språk med begränsad träningsdata.

Temperatur av ChatGPT 4o

När jag först experimenterade med detta flerspråkiga översättningssätt var resultaten okej men inte perfekta. Vissa meningar blev felöversatta, överdrivet bokstavliga eller subtilt missvisande på vissa språk. Jag var också orolig för att oavsiktligt generera uttryck som kanske är olämpliga eller okänsliga i specifika kulturella sammanhang. Och självklart ville jag inte att mina översättningar skulle låta robotiska eller mekaniska. En av de avgörande faktorerna bakom översättningskvaliteten är temperatursinställningen — en parameter som styr hur "kreativ" eller "strikt" AI:n ska vara. En hög temperatur gör AI:n mer fantasifull, men också mer oförutsägbar. En låg temperatur gör att den håller sig nära originalmeningen, men kan ibland kännas stel. Det krävdes mycket försök och misstag för att hitta rätt balans: tillräckligt låg för att säkerställa noggrannhet, men inte så låg att texten blev livlös. Efter många experiment kände jag att temperatur = 0,8 var det bästa för denna bloggs behov: tillräckligt noggrann för att förbli trogen den engelska originalet, men flexibel nog för att låta naturlig på andra språk.

ChatGPT 5.x stödjer inte temperatur

Nyare modeller som ChatGPT 5 och 5.1 stödjer inte längre temperaturinställningarna alls — parametern har tagits bort och ersatts av koncept som resonemang och ansträngning, vilka påverkar hur modellen tänker snarare än hur "kreativ" den blir. Med andra ord gav ChatGPT 4o mig en fysisk ratt jag kunde vrida för att finjustera översättningsstilen, men familjen 5.x följer en helt annan filosofi. Om du informellt ber den nyaste modellen att "översätta detta med temperatur = 0,8," kan den försöka bete sig som om en sådan inställning fortfarande existerar, men internt är parametern borta. Modellen approximera helt enkelt intentionen. När OpenAI fortsätter att uppdatera sina modeller kan jag behöva justera min översättningspipeline någon dag. För nu är ChatGPT 4o mitt val för flerspråkiga översättningar — inte bara för att den förstår kontexten väl över många språk, utan också för att dess API-prissättning är rimlig för en ensam utvecklare som jag. Faktum är att 4o kan gå till historien som en av de mest älskade modellerna i OpenAIs historia.

Arbetare av OpenAI API

En fantastisk sak med OpenAI API — jämfört med att använda ChatGPT direkt i en webbläsare — är att du kan använda mer än en ChatGPT "arbetare" samtidigt. När jag skickar översättningsförfrågningar för 42 språk, skickar jag dem inte en efter en i en långsam rad. Istället kan API:et hantera många förfrågningar parallellt, som om jag plötsligt anlitade ett rum fullt av översättare som alla börjar arbeta samtidigt. Mitt Python-skript hanterar arbetsflödet som en liten produktionslinje: det förbereder den engelska artikeln, skickar ut förfrågningarna, väntar på svaren och bearbetar resultaten till JSON-filer. Under tiden kör OpenAI-servrarna flera modellinstanser samtidigt, varje översätter ett annat språk parallellt. Detta är något ChatGPT-webbplatsen eller appen inte kan göra — dessa gränssnitt ger dig en modell, en konversation, en uppgift åt gången. Men med API:et kan du skala din arbetsbelastning så brett som ditt skript tillåter. För en ensam utvecklare som mig, känns detta som att ha ett litet team av de smartaste och egolösa assistenterna. Det beror delvis på internet-hastigheten, men jag brukar ställa in arbetare = 12.

Vad jag gör för att flerspråkigöra min blogg är att diska

Jag brukade arbeta som diskare i studentcafeterian när jag studerade matematik vid Kyoto University. Även om lönen var cirka 5 USD per timme, har jag alltid gillat repetitivt manuellt arbete efter att ha spenderat flera timmar — eller ibland flera dagar — i djup intellektuell koncentration. Senare, när jag arbetade på en vitlöksfabrik i Hokkaido, var mitt jobb helt enkelt att polera tusentals vita vitlöksklyftor så att de skulle se ljusare ut på transportbandet. Åtta timmar om dagen — full fokus, jämn rytm. Det var märkligt tillfredsställande. Nu, tillbaka från de minnena, gör jag för närvarande intellektuellt arbete — skriver programvara, designar system, komponerar dessa artiklar. Men balansen har inte förändrats. Om du frågar mig hur jag lyckas publicera en bloggartikel på 42 språk själv, är det ärliga svaret: jag gör det genom att diska.