Prevesti veb sajt na deset, dvadeset ili četrdeset jezika jednom jedinom VI brzo je urađeno. Teže je pitanje može li se rezultatu verovati. Jedan jezički model povremeno izmišlja reči, prevodi nazive proizvoda ili menja broj, i ne primećuje to sam. Zato smo za Odoo 19 napisali modul u kome više VI i usluga prevođenja radi na istom tekstu, anonimno međusobno ocenjuje svoje rezultate i slaže se oko formulacije koja istovremeno zvuči tačno i prirodno. Ono što nije jednoznačno dobija čoveka na odlučivanje.
Modul se zove ai_translation_consensus i dostupan je kao slobodan softver pod AGPL-3 licencom na GitHubu:
github.com/Alex0176/odoo-ai-translation-consensus
Sadržaj ovog članka
Ideja: međusobna provera umesto poverenja
Modul ume dve stvari:
- Prevođenje: dopuniti nedostajuće (ili zastarele) prevode svakog polja u Odoou koje se može prevoditi, dakle blog članke, veb stranice, menije, proizvode i sve ostalo što Odoo čuva višejezično. VI pritom ne vide samo pojedinačnu rečenicu, već susedne blokove i isečak cele stranice. Tako se pojedine reči razumeju u pravom kontekstu.
- Lektura: proveriti tekst na njegovom sopstvenom jeziku i predložiti bolje formulacije ili ispravke. Original je pritom uvek jedan od kandidata. Ako original pobedi, ništa se ne menja.
Jezgro je međusobna provera. Svaka VI je dobra u ocenjivanju tuđih tekstova, čak i kada sama povremeno pogreši. To modul koristi: Više pružalaca piše po jednu verziju, a ti isti pružaoci zatim ocenjuju sve verzije, ne znajući ko ih je napisao. Sopstvenu verziju pružalac ne ocenjuje.
Tako nastaje predlog
- Prevođenje. Svaki prevodilac paralelno piše jednu verziju.
- Čvrste provere. Bez VI se kontroliše da li su HTML tagovi, entiteti, rezervisana mesta poput
%sili{}, brojevi i linkovi ostali nepromenjeni. Verzija koja to krši ne može nikada pobediti, ma koliko tečno zvučala. - Ocenjivanje. Preostale verzije se mešaju i anonimizuju. Svaki ocenjivač za svaku daje ocenu za Tačnost i za Prirodnost (1 do 10), navodi favorita i može da predloži poboljšanje.
- Slaganje. Rang verzije je 0,5 × prosečna ocena + 5 × udeo glasova za favorita. Kao slaganje važi kada najbolja verzija ima najmanje 60 % glasova za favorita i prosečnu ocenu od najmanje 7,0.
- Druga runda. Bez slaganja najbolje verzije zajedno sa predlozima poboljšanja ocenjivača idu još jednom na ocenjivanje.
- Čovek. Ako ni tada ne bude jednoznačno, predlog čeka na odluku.
Ako postoje samo čiste usluge prevođenja bez funkcije provere (na primer DeepL), rezultat važi kao dogovoren samo ako su najmanje dve usluge isporučile potpuno isti tekst. Kod lekture rezultati moraju ostati prepoznatljivo slični originalu (sličnost najmanje 0,6, isti brojevi). Mali besplatni modeli povremeno odgovaraju na paket pomerenim ili tuđim tekstovima. Takvi odgovori se odbacuju umesto da se o njima glasa. Rečnik čuva nazive marki i čvrste pojmove.
Pružaoci: sa ključem i bez njega
Besplatne i plaćene usluge mogu biti u istom glasanju. Modul dolazi sa unapred podešenim vrednostima za mnoge pružaoce; svi su posle instalacije isključeni.
| Vrsta | Prevodi | Proverava / ispravlja | Primeri |
|---|---|---|---|
| OpenAI-kompatibilan interfejs | da | da | OpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp |
| OpenAI-kompatibilno bez ključa | da | da | Ollama na sopstvenom serveru, Pollinations |
| Anthropic | da | da | Claude |
| Google Gemini, Cohere | da | da | |
| Lokalna komanda | da | da | claude -p ili bilo koji program koji čita sa stdin i ispisuje odgovor |
| Usluge prevođenja | da | ne | DeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva |
Unese se ključ (ili naziv promenljive okruženja koja ga sadrži), pritisne se Testiraj vezu i uključi se pružalac. Nazivi modela u podrazumevanim vrednostima su polazne tačke; ko ih koristi, trebalo bi da ih uskladi sa aktuelnom listom pružaoca. Sa dva ili više pružalaca postoji prava međusobna provera, sa samo jednim niko ne proverava njegov rad. Čarobnjak na to ukazuje.
Ceo veb sajt odjednom
Čarobnjak za početak (meni VI prevod → Ovde početi) objašnjava korake i kreira prvo pravilo. Ako je modul website instaliran, automatski dolazi i premosni modul ai_translation_consensus_website. On dopunjava obim „Ceo veb sajt sa svime što je na njemu“: bira se veb sajt i predlažu se sadržaji. Modul pregleda sve modele sa poljima koja se mogu prevoditi, a koji pripadaju veb sajtu (stranice, meniji, blogovi, proizvodi, događaji, forumi, kursevi i više), i predlaže jedno pravilo po vrsti sadržaja, sa jezicima veb sajta kao ciljem.
- Ono što nije instalirano (forumi, kursevi, galerije) ne pojavljuje se i biće dodato kasnije, čim se instalira.
- Modeli prodavnice se predlažu samo ako veb sajt ima prodavnicu. Obuhvataju se samo objavljeni zapisi.
- Kontakte, firme, pružaoce plaćanja, cenovnike, vrste isporuke, programe lojalnosti i filtere snippet-a modul namerno ne nudi.
- Imena adresa stranica (
seo_name) se ne prevode. - Neželjene vrste mogu se ukloniti pre kreiranja.
Kreiranje i traženje ne koštaju ništa: pravilo samo navodi koji tekstovi traže rad. Tek pri obradi se pozivaju pružaoci i nastaju troškovi.
Kontrolna tabla, troškovi i automatski start
Kontrolna tabla za svako pravilo pokazuje koliko je tekstova gotovo, koliko čeka potvrdu ili čoveka, koliko je stavljeno u red ili neuspelo. Tome se dodaju raspodela po jeziku i pružaocu, dosadašnji i još očekivani troškovi, procenjeno preostalo vreme i prekidač za planiranu obradu.
Brojke na ovoj slici su primeri podataka i ne govore ništa o stvarnim troškovima.
- Troškovi se izračunavaju iz onoga što pružaoci zaista prijavljuju: tokeni (OpenAI, Anthropic, Gemini, Cohere) ili znakovi (DeepL, Google, Azure). Tokeni se uvek prikazuju, novac samo ako ste kod pružaoca uneli cenu po milionu tokena (ili znakova). Podrazumevane vrednosti ne sadrže cene, jer se one menjaju. Usluge koje ne prijavljuju tokene procenjuju se prema dužini teksta i označavaju kao procena.
- Prognoza: prosečni troškovi i radno vreme po tekstu puta broj tekstova u redu. To je procena koja postaje bolja sa prvim paketima.
- Automatski start: Pravila sa opcijom Pokreni samostalno kada se zapis promeni pri svakom izvršavanju planirane akcije traže samo zapise koji su promenjeni od poslednjeg traženja. Sa uključenom planiranom akcijom se izmenjena veb stranica dakle ponovo prevodi bez ikakvog ručnog zahvata.
- Obaveštenje o završetku: Kada se obradi poslednji otvoreni tekst nekog pravila, u kanalu AI Translation jednom se pojavljuje poruka „Svi jezici prevedeni“ (kod lektorisanja „Svi tekstovi provereni“).
Odobrenje od strane ljudi
Podrazumevano modul ništa ne upisuje u vaše zapise bez saglasnosti. Svaki predlog prikazuje verzije, ko ih je napisao, ocene i primedbe recenzenata. Predlog možete prihvatiti, izabrati drugu verziju, ukucati sopstvenu formulaciju ili ga odbiti.
Tekst i nazivi provajdera na ovoj slici slobodno su izmišljeni radi prikaza izgleda.
Ko veruje nekom pravilu, može uključiti Automatski preuzmi saglasnost. Predlozi bez saglasnosti i tada čekaju čoveka. Pri preuzimanju modul još jednom proverava da li se izvorni tekst u međuvremenu promenio, ponovo kontroliše provere markupa i upisuje bez praćenja i bez obaveštavanja pratilaca.
Bezbednost i zaštita podataka
- Posle instalacije je sve isključeno. Provajderi i planirana akcija su deaktivirani. Bez vašeg učešća ništa se ne šalje.
- Tekstovi napuštaju vaš server čim je uključena hostovana usluga. Pravilo se može označiti kao Poverljivo; tada tekst vide samo provajderi označeni kao da rade na sopstvenoj infrastrukturi.
- Ključevi se nalaze u polju koje vide samo administratori ili u promenljivoj okruženja na koju upućuje samo naziv. U porukama o greškama su maskirani i šalju se u zaglavljima. Izuzetak: opcioni ključ za MyMemory tamo se može proslediti samo kao parametar upita.
- Lokalna komanda izvršava program i zato je blokirana dok se sistemski parametar
ai_translation_consensus.allow_commandne postavi naTrue. Komanda se poziva bez shell-a i izvršava u praznom privremenom direktorijumu. - Prompt-Injection: Zadaci označavaju tekst kao podatke. Uputstva u prevedenom tekstu se ne izvršavaju, a rezultat koji narušava tagove ili rezervisana mesta se odbacuje.
- Besplatne usluge imaju ograničenja. Pollinations anonimno dozvoljava jedan odgovor na svakih 45 sekundi. Opcija provajdera
min_intervalpoštuje taj razmak, a odgovori „Pokušajte ponovo kasnije“ se uzimaju u obzir.
Instalacija
git clone https://github.com/Alex0176/odoo-ai-translation-consensus.git
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus /pfad/addons/
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus_website /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i ai_translation_consensus --stop-after-init
Potrebni su Odoo 19 i Python paket requests. Priložen je nemački prevod. Premosni modul ai_translation_consensus_website automatski se instalira zajedno sa modulom ako je prisutan website. Posle instalacije Odoo servis mora da se restartuje jer modul sadrži Python kod. Ko upravlja produktivnim sistemom, treba da modul prvo instalira na kopiji baze podataka.
Prvi koraci: otvorite meni AI prevod → Provajderi, testirajte usluge i uključite ih, zatim Počnite ovde i kreirajte prvo pravilo. Pomoću Traži tekstove generišu se predlozi, a pomoću Obradi jednu seriju pozivaju se provajderi. Počnite sa malim pravilom, na primer jednim blog člankom i dva jezika, i pogledajte rezultat i troškove pre nego što stavite u red celu veb-stranicu.
ograničenjima
- Kvalitet zavisi od modela koje uključite. Unakrsna provera smanjuje greške pojedinačnih modela, ali ne daje garanciju. Za pravno ili bezbednosno kritične tekstove modul ne zamenjuje izvornog govornika.
- Troškovi brzo rastu. Jedan tekst košta jedan poziv po prevodiocu, jedan poziv za proveru po recenzentu i, kod podeljenog glasanja, drugi krug. Kontekst stranice povećava ulaz svakog poziva. Pravilo sa 45 ciljnih jezika višestruko povećava broj tekstova. Ograničite izvršavanja pomoću Zapisa po pretrazi, Novih predloga po pretrazi i Predloga po cron izvršavanju, i dodajte povoljne ili lokalne modele kao recenzente.
- Samo polja sa
translate=True. Formatirani tekst se obrađuje po blokovima (Odoo-ov term mehanizam). - Cene i nazivi modela se menjaju. Podrazumevane vrednosti nisu održavan cenovnik.
- Napravljeno za Odoo 19.0 Community. Druge verzije nisu podržane.
Česta pitanja
Da li se nešto prevodi ili prepisuje bez moje saglasnosti?
Ne, sve dok ne uključite Automatski preuzmi saglasnost. Čak i tada se upisuju samo predlozi sa saglasnošću. Provajderi i planirana akcija su posle instalacije isključeni.
Da li su mi potrebni ključevi za plaćene provajdere?
Samo za provajdere koji ga zahtevaju. Sa Pollinations, MyMemory ili lokalno pokrenutim modelom (na primer Ollama) ide i bez njega. Besplatne usluge su često ograničene i spore, a za celu veb-stranicu uglavnom su pogodne samo kao dopuna.
Koliko košta jedan prevod?
To zavisi od provajdera, modela, dužine teksta i broja jezika, zato modul ne zadaje fiksne iznose. Kontrolna tabla prikazuje potrošnju i troškove čim unesete cene i procenjuje preostale troškove tekstova koji su u redu.
Mogu li tekstove da zadržim poverljivim?
Da, pomoću opcije pravila Poverljivo. Tada rade samo provajderi označeni kao da rade na vašoj sopstvenoj infrastrukturi, na primer lokalni Ollama.
Da li ovo zamenjuje Odoo-ov sopstveni prevod?
Ne. Modul koristi višejezičnost Odoo-a i upisuje u iste prevode koje inače održavate ručno.
Pod kojom licencom je?
Pod AGPL-3. Greške i poboljšanja možete prijaviti kao Issue u GitHub repozitorijumu .
Podrška kompanije Biricon IT Services
Brinemo o Odoo instalacijama za mala i srednja preduzeća: od uvođenja, preko prilagođavanja i migracija, do tekućeg rada. Ako svoju Odoo veb-stranicu vodite na više jezika, želite da obezbedite prevode pomoću veštačke inteligencije ili da bezbedno unesete modul u svoju produktivnu instancu, rado ćemo pomoći. Ostali sopstveni razvoji: Arhiviranje firme zajedno sa korisnicima portala, Brojevi dokumenata iz prefiksa, godine i brojača i Firmenbuch i provera adresa za austrijske klijente.
Stanje: 3. novembar 2026. Verzija modula 19.0.1.0.0. Slike prikazuju izmišljene primere podataka.