Sivusto, joka puhuu kymmeniä kieliä ilman kääntäjiä
Käännetty automaattisesti italiasta · lue alkuperäinen
Kuinka rakensimme tämän sivuston alla toimivan käännösjärjestelmän: tekoäly tarvittaessa, aina välimuisti, nolla havaittavaa odotusaikaa.
Perinteisen i18n:n ongelma
Vuosien ajan verkkosivuston kansainvälistäminen on ollut pieni odysseia työnkulkujen suhteen: .po -tiedostot, ihmiskääntäjät, unohtuneet avaimet, viivästyneet käyttöönotot, koska "saksa puuttuu vielä". Uuden kielen lisääminen maksoi aikaa ja rahaa; kymmenen lisääminen oli poissuljettu vaihtoehto mille tahansa pienelle yritykselle.
Viimeisimmän sukupolven LLM-mallien myötä automaattisen käännöksen laatu on saavuttanut pisteen, jossa se riittää yrityssivustolle, ei kirjallisuuteen. Kysymys ei ole enää "voimmeko kääntää sen automaattisesti", vaan "kuinka integroimme sen rikkomatta käyttäjäkokemusta".
Arkkitehtuuri lyhyesti
Sivusto tarjoillaan staattisesti italiaksi. Kun käyttäjä valitsee toisen kielen, pieni moottori astuu peliin kolmella MongoDB-kokoelmalla:
i18n_base: lähdetekstit valitulla kielellä (tänään italia), jokaisella ilmoituksella omasta kielestään, kuvauksella siitä, missä ja miksi se esiintyy sivustolla (välttämätön käännöksen laadun kannalta), sävy ja merkkimäärärajoitus. Tämä kuvaus sisältyy LLM:n kehotteeseen, jotta se tietää, kääntääkö se painiketta vai kappaletta.i18n_human: käsin muokatut käännökset, kun haluamme editoriaalista laatua LLM-tulosteen sijaan joillakin sivuilla. Ne ovat etusijalla automaattisen välimuistin edellä ja "merkkaavat" itsensä automaattisesti, kun lähdeteksti muuttuu.i18n_cache: jo luodut käännökset, indeksoitu (kenttä, kieli). Jokainen merkintä säilyttää pohjatekstin aikaleiman luomishetkellä.articoli_i18n: sama logiikka sovelletaan pidempiin sisältöihin, kuten tähän artikkeliin.
Ensimmäisellä vierailulla uudella kielellä järjestelmä pyytää LLM:ltä vain puuttuvat kentät, tallentaa vastauksen välimuistiin ja palauttaa sen selaimeen. Seuraavilla vierailuilla sama kieli saapuu välittömästi ilman lisä AI-kutsuja.
Toimiva mitätöinti
Välimuisti on järjestetty valhe: se sanoo "minun totuuteni on tämä" kunnes joku todistaa sen vääräksi. Tämän mekanismin kumoaminen on tässä yksinkertaista: jokainen välimuistissa oleva käännös tallentaa pohjatekstin aikaleiman, josta se on luotu. Kun muutat italiankielistä tekstiä ja päivität sen updated_at -arvoa, kaikki kyseisen kentän käännökset kaikilla kielillä muuttuvat automaattisesti vanhentuneiksi ja ne luodaan uudelleen tarvittaessa. Ei manuaalisia kaskadeja, ei välimuistia tyhjennettäväksi.
Käyttäjä, joka ei odota
Mielenkiintoisin osa ei ole käännös — vaan se, miten se näytetään. Kielen vaihdon yhteydessä selaimella on edessään italiankielinen sivu, jossa on pieniä latausindikaattoreita jokaisen päivitettävän tekstilohkon vieressä. Kihaus on tehdä yksi ainoa kutsu, joka kääntää kaiken yhdessä: yksinkertaista, siistiä, ja tuomitsee käyttäjän odottamaan, että LLM on saanut kaiken valmiiksi ennen kuin hän näkee mitään muutoksia.
Olemme valinneet vastakkaisen suunnan. Tekstit ryhmitellään osioittain (navigointipalkki, runko, alatunniste) ja jaetaan kolmen kentän mikropaketteihin. Kutsut lähtevät peräkkäin: ensin muutama navigointipalkin kenttä, jotka ilmestyvät muutamassa sekunnissa — käyttäjä näkee, että jotain tapahtuu ja alkaa lukea. Samalla kun hän lukee, saapuu ensimmäinen osa rungosta, sitten toinen ja lopuksi alatunniste.
Yötyö
Välimuistilla on vain yksi todellinen vihollinen: ensimmäinen vierailu. Ensimmäinen saksankielinen käyttäjä maksaa kaikkien tulevien käännösten hinnan, ja hänen kokemuksensa on se, mikä jää mieleen. Ongelman poistamiseksi (tai ainakin vähentämiseksi) taustatehtävä herää minuutin välein, valitsee odotetuimman kielen vielä kääntämättömien kielten joukosta, ottaa kääntämättömän tekstin ja lähettää sen LLM:lle. Seuraavalla minuutilla seuraava. Muutamassa päivässä yleisimmät kielet ovat jo "lämpimiä".
Yötehtävä tekee myös toisen työn: tarkistaa automaattisesti kyseenalaisten käännösten laatua ja yrittää niitä uudelleen käyttämällä eri tekoälymallia. Kun kielten välinen linjaus on tärkeää, huono käännös ei jää sellaiseksi.
Jos olet päivän ensimmäinen saksalainen ja saavut, kun järjestelmä on vielä viimeistelemässä välimuistia, sinulla on kuitenkin progressiivinen lataus pitämään sinut kiireisenä. Jos olet toinen, et edes huomaa sitä.
Mitä tästä jää käteen
Monikielinen sivusto ilman kääntäjiä, ilman hallittavia tiedostoja, ilman uuden kielen lisäämiseen tarvittavaa käyttöönottoa. Käyttäjä kirjoittaa koodin — ja, ca, eu, minkä tahansa — ja sivu kääntyy. Toinen kerta on välitön. Kolmannella kerralla olemme todennäköisesti jo tehneet sen, käännetty oikeaan aikaan tehtävällä, joka ei koskaan nuku.
Tämä sama sivu, jos luet sitä saksaksi, espanjaksi tai koreaksi, ei ole koskaan ollut kääntäjän kirjoittama. Sen on kääntänyt LLM kerran, ja siitä lähtien sitä on tarjoiltu välimuistista. Ainoa asia, joka on kirjoitettu käsin, on mitä luet nyt, jos se on italiaksi.
Oletko kiinnostunut tuomaan tämän arkkitehtuurin omalle sivustollesi? Puhutaan siitä.
Ota yhteyttä
Onko palautetta? Kirjoita meille
Viesti lähetetään vain meille. Jos kommenttisi on kiinnostava, voimme julkaista sen artikkelin loppuun, mutta vasta arvioinnin jälkeen.
Kirjoittaessasi selaimesi ratkaisee pienen laskutoimituksen – näin pidämme roskapostin loitolla ilman ulkopuolisia palveluita tai semaforien tunnistamista. Et joudu tekemään mitään, eikä tietoja lähetetä tältä sivustolta.