Polyglot
Nizovi vaših aplikacija i sajtova na 43 jezika, prevedeni vašim sopstvenim modelom i provereni string po string.
- Linux or macOS
- Python 3.9+
- Local LLM
- 6 file formats

Šta radi
Polyglot uzima engleske nizove koje vaša aplikacija i sajt već imaju i prevodi ih na do 42 dodatna jezika, u fajlove i foldere koje svaka platforma očekuje, koristeći model koji sami pokrećete. Svaki niz se vraća proveren: ako nestane placeholder, tag ili ime koje čuvate, ili odgovor nije u pismu tog jezika, niz se ponovo traži, a niz koji i dalje ne prolazi ostavlja se po strani i prijavljuje umesto da se isporuči pokvaren.
- Formati koje koristite. JSON poruke (i18next, vue-i18n, next-intl, react-intl), Flutter ARB, Android strings.xml, Apple .strings, gettext .po i Markdown dokumenti, upisani u values-de, de.lproj, app_de.arb ili locale/de.
- Provera niz po niz. %1$s, {name}, {{count}}, HTML tagovi, prelomi redova, URL-ovi i vaša imena koja čuvate moraju se vratiti tačno; ispravno pismo, bez praznih ili besmislenih odgovora, ništa ostavljeno na engleskom.
- Pravi oblici množine. Ruski dobija jedan, malo, mnogo i ostalo, arapski šest oblika, japanski jedan oblik: Android množine i ICU poruke prate pravila svakog jezika.
- Samo ono što je promenjeno. Svaki dobar prevod se pamti, pa uređivanje jednog engleskog niza šalje jedan niz, a ne ceo fajl.
- Vaš ton i vaši termini. Opis proizvoda, ton, imena koja se nikada ne prevode i rečnik ulaze u svaki zahtev, a vaši komentari putuju kao napomene.
- Vaš model, vaša mašina. Bilo koji OpenAI-compatible server: vLLM, llama.cpp, Ollama ili LM Studio, ili hostovani API ako tako izaberete. Bez naplate po reči.
Testirano na pravom modelu
- Pravi model, šest formata, pet pisama: primer aplikacije sa 70 nizova u JSON, Flutter ARB, Android, Apple .strings, gettext i Markdown formatima, preveden na nemački, ruski, japanski, arapski i španski, koristeći otvoreni model sa 27 milijardi parametara na našoj mašini: 346 od 350 nizova prošlo je provere pri ulazu, za 7,5 minuta na zauzetom deljenom serveru.
- Četiri koja nisu prošla bila su greške u našim proverama, a ne u modelu: nemačka pozajmljenica, e-mail adresa i japanska poruka za množinu. Ispravili smo provere; sledeće pokretanje poslalo je samo ta četiri niza i upisalo svih 350 za 45 sekundi.
- Oblici množine ispravni iz prvog pokušaja: jedan, malo, mnogo i ostalo za ruski, šest oblika za arapski, jedan oblik za japanski.
- Svih 42 jezika: 22 veb-struke iz primera prevedene na svaki jezik koji Polyglot poznaje, od amharskog do tradicionalnog kineskog: 924 od 924 struke napisano, za 15 minuta.
- I ono što provere ne vide: na kmerskom jeziku, "You are offline" se vratilo kao "you are online". To je besprekoran kmerski, pa je prošlo. Zato dokumentacija traži izvornog govornika za struke koje su najvažnije.
Šta je unutra
Prevodilac
Šalje grupe vašem modelu, vrši provere, ponavlja pokušaj uz naveden problem, koristi memoriju prevoda, radi paralelno za više jezika.
Šest formata
Čitaoci i zapisivači koji čuvaju eskape, foldere i pravila za množinu svakog platformskog formata.
Provere
Koristive i samostalno: proverite prevod koji već imate u odnosu na njegov engleski izvor.
Primer aplikacije
Jedna mala aplikacija u svih šest formata sa svojom konfiguracijom, da je isprobate pre nego što krenete sa svojom.
Zahtevi
- Linux ili macOS sa Python 3.9 ili novijom verzijom; ništa se ne instalira preko pip-a.
- OpenAI-compatible server modela sa višejezičnim modelom za instrukcije; naš je otvoreni model sa 27 milijardi parametara.
Dobro je znati
- Provere hvataju ono što kvari aplikaciju, a ne pogrešno značenje: neka izvorni govornik pročita vaš opis proizvoda, zid plaćanja i pravni tekst.
- Unosi za množinu u gettext formatu ostaju na engleskom u ovoj verziji.
- Brzina zavisi od vašeg modela.
- Provere su besplatne i otvorenog koda: translation-checks na GitHub-u. Komplet dodaje prevodioca, šest formata, oblike množine, memoriju i godinu dana ažuriranja.
From our field notes
Pitanja
Koji jezici?
Arapski, amharski, bugarski, češki, nemački, grčki, španski, persijski, finski, filipinski, francuski, škotski gelski, hebrejski, haićanski kreolski, mađarski, jermenski, indonežanski, italijanski, japanski, kmerski, kanada, korejski, makedonski, malajski, holandski, norveški, oromo, pendžapski, poljski, portugalski (Brazil), rumunski, ruski, slovački, slovenački, srpski, švedski, tajski, turski, ukrajinski, vijetnamski i kineski, pojednostavljeni i tradicionalni, sa engleskog.
Da li je potrebna GPU?
Samom Polyglot-u ne; to odlučuje vaš server modela. Mali model radi na CPU-u, sporo; GPU pretvara veliki fajl na mnogo jezika u pitanje minuta.
Šta se dešava sa stringom koji model pogreši?
Ponovo se traži samostalno, uz naveden problem. Ako i dalje ne uspe, izostavlja se iz fajla, tako da vaša aplikacija za taj string prikazuje engleski, a pokretanje ga navodi uz razlog. Ništa pokvareno se ne upisuje.
Da li mogu da koristim hostovan API umesto toga?
Da: bilo koji servis sa OpenAI-compatible chat endpoint-om. Unesite njegov base URL i naziv modela u polyglot.json, a ključ u fajl.
Ažurirano: