Traducerea unui site web în zece, douăzeci sau patruzeci de limbi se face rapid cu o singură IA. Mai dificilă este întrebarea dacă putem avea încredere în rezultat. Un singur model lingvistic inventează uneori cuvinte, traduce odată cu textul și denumirile de produse sau modifică un număr, iar singur nu observă. De aceea am scris pentru Odoo 19 un modul în care mai multe IA și servicii de traducere lucrează la același text, își evaluează reciproc anonim rezultatele și se pun de acord asupra formulării care sună în același timp exact și natural. Ceea ce nu este univoc primește un om pentru decizie.
Modulul se numește ai_translation_consensus și este disponibil pe GitHub ca software liber sub licența AGPL-3:
github.com/Alex0176/odoo-ai-translation-consensus
Cuprinsul acestui articol
- Ideea: verificare încrucișată în loc de încredere
- Cum apare o propunere
- Furnizori: cu și fără cheie
- Un întreg site web deodată
- Dashboard, costuri și pornire automată
- Aprobare de către oameni
- Securitate și protecția datelor
- Instalare
- Limite
- Întrebări frecvente
- Asistență din partea Biricon IT Services
Ideea: verificare încrucișată în loc de încredere
Modulul poate face două lucruri:
- Traducere: completarea traducerilor lipsă (sau învechite) ale fiecărui câmp traductibil din Odoo, deci articole de blog, pagini web, meniuri, produse și tot ce mai stochează Odoo în mai multe limbi. IA nu văd doar propoziția individuală, ci blocurile vecine și un fragment din întreaga pagină. Astfel, cuvintele individuale sunt înțelese în contextul corect.
- Corectură: verificarea textului în propria limbă și propunerea unor formulări sau corecturi mai bune. Originalul este întotdeauna unul dintre candidați. Dacă originalul câștigă, nu se modifică nimic.
Miezul este verificarea reciprocă. Orice IA este bună la evaluarea textelor străine, chiar dacă ea însăși greșește uneori. Modulul folosește acest lucru: mai mulți furnizori scriu câte o variantă, iar aceiași furnizori evaluează apoi toate variantele, fără să știe de la cine provin. Un furnizor nu își evaluează propria variantă.
Cum apare o propunere
- Traducere. Fiecare traducător scrie în paralel o variantă.
- Verificări fixe. Fără IA se controlează dacă etichetele HTML, entitățile, substituenții precum
%ssau{}, numerele și linkurile au rămas neschimbate. O variantă care încalcă acest lucru nu poate câștiga niciodată, oricât de fluentă ar suna. - Evaluare. Celelalte variante sunt amestecate și anonimizate. Fiecare evaluator acordă fiecăreia o notă pentru exactitate și pentru naturalețe (1 până la 10), numește o favorită și poate propune o îmbunătățire.
- Acord. Rangul unei variante este 0,5 × nota medie + 5 × ponderea voturilor pentru favorită. Se consideră acord dacă cea mai bună variantă are cel puțin 60 % din voturile pentru favorită și o notă medie de cel puțin 7,0.
- A doua rundă. Fără acord, cele mai bune variante, împreună cu propunerile de îmbunătățire ale evaluatorilor, intră încă o dată în evaluare.
- Om. Dacă nici atunci nu devine univoc, propunerea așteaptă o decizie.
Dacă există doar servicii pure de traducere fără funcție de verificare (de exemplu DeepL), un rezultat este considerat stabilit doar dacă cel puțin două servicii au furnizat exact același text. La corectură, rezultatele trebuie să rămână vizibil asemănătoare cu originalul (asemănare de cel puțin 0,6, aceleași numere). Modelele mici gratuite răspund uneori la un lot cu texte deplasate sau străine. Astfel de răspunsuri sunt respinse, nu supuse votului. Un glosar reține denumirile de mărci și termenii fixi.
Furnizori: cu și fără cheie
Serviciile gratuite și cele cu plată pot participa la același vot. Modulul vine cu presetări pentru mulți furnizori; toate sunt dezactivate după instalare.
| Tip | Traduce | Verifică / corectează | Exemple |
|---|---|---|---|
| Interfață compatibilă OpenAI | da | da | OpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp |
| Compatibil OpenAI fără cheie | da | da | Ollama pe propriul server, Pollinations |
| Anthropic | da | da | Claude |
| Google Gemini, Cohere | da | da | |
| Comandă locală | da | da | claude -p sau orice program care citește din stdin și afișează răspunsul |
| Servicii de traducere | da | nu | DeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva |
Se introduce cheia (sau numele unei variabile de mediu care o conține), se apasă Testați conexiunea și se activează furnizorul. Numele modelelor din presetări sunt puncte de plecare; cine le folosește ar trebui să le compare cu lista actuală a furnizorului. Cu doi sau mai mulți furnizori există o adevărată verificare încrucișată, cu unul singur nu verifică nimeni munca acestuia. Asistentul atrage atenția asupra acestui lucru.
Un întreg site web deodată
Un asistent de pornire (meniul Traducere IA → Începeți aici) explică pașii și creează prima regulă. Dacă modulul website este instalat, vine automat și modulul-punte ai_translation_consensus_website. Acesta adaugă domeniul „Un întreg site web cu tot ce se află pe el”: se alege site-ul web și se lasă să se propună conținuturile. Modulul se uită la toate modelele cu câmpuri traductibile care aparțin site-ului web (pagini, meniuri, bloguri, produse, evenimente, forumuri, cursuri și altele) și propune o regulă pe tip de conținut, cu limbile site-ului web ca țintă.
- Ce nu este instalat (forumuri, cursuri, galerii) nu apare și va fi inclus mai târziu, de îndată ce este instalat.
- Modelele de magazin sunt propuse doar dacă site-ul web are un magazin. Sunt preluate doar înregistrările publicate.
- Contactele, firmele, furnizorii de plată, listele de prețuri, modurile de livrare, programele de loialitate și filtrele de snippet nu sunt oferite intenționat de modul.
- Numele de adresă ale paginilor (
seo_name) nu sunt traduse. - Tipurile nedorite pot fi eliminate înainte de creare.
Crearea și căutarea nu costă nimic: regula listează doar ce texte necesită muncă. Abia la procesare sunt apelați furnizorii și apar costuri.
Dashboard, costuri și pornire automată
Dashboard-ul arată pe regulă câte texte sunt gata, așteaptă o confirmare sau un om, sunt în coadă sau au eșuat. La acestea se adaugă defalcarea pe limbă și furnizor, costurile de până acum și cele încă așteptate, timpul rămas estimat și comutatorul pentru procesarea programată.
Cifrele din această figură sunt date de exemplu și nu spun nimic despre costurile reale.
- Costurile sunt calculate din ceea ce raportează efectiv furnizorii: tokeni (OpenAI, Anthropic, Gemini, Cohere) sau caractere (DeepL, Google, Azure). Tokenii sunt afișați întotdeauna, banii doar dacă ați introdus prețul pe milion de tokeni (sau caractere) al furnizorului. Presetările nu conțin prețuri, deoarece acestea se schimbă. Serviciile care nu raportează tokeni sunt estimate din lungimea textului și marcate ca estimare.
- Prognoză: costul mediu și timpul de lucru pe text înmulțite cu numărul de texte din coadă. Aceasta este o estimare, care devine mai bună cu primele loturi.
- Pornire automată: regulile cu opțiunea Pornește singură când se modifică o înregistrare caută, la fiecare rulare a acțiunii programate, doar înregistrările modificate de la ultima căutare. Cu acțiunea programată activată, un site web editat este deci tradus din nou fără nicio intervenție.
- Notificare de finalizare: când ultimul text deschis al unei reguli este rezolvat, în canalul AI Translation apare o singură dată mesajul „Toate limbile au fost traduse” (la corectură: „Toate textele au fost verificate”).
Aprobare de către oameni
Implicit, modulul nu scrie nimic în înregistrările dumneavoastră fără acordul dumneavoastră. Fiecare propunere arată variantele, cine le-a scris, notele și observațiile evaluatorilor. Puteți prelua propunerea, alege o altă variantă, introduce o formulare proprie sau o puteți respinge.
Textul și numele furnizorilor din această imagine sunt inventate, pentru a ilustra afișarea.
Cine are încredere într-o regulă poate activa Preluare automată la consens. Propunerile fără consens așteaptă și atunci un om. La preluare, modulul verifică încă o dată dacă textul sursă s-a modificat între timp, reia verificările de markup și scrie fără urmărire și fără notificarea urmăritorilor.
Securitate și protecția datelor
- După instalare, totul este dezactivat. Furnizorii și acțiunea planificată sunt dezactivați. Fără intervenția dumneavoastră nu se trimite nimic.
- Textele părăsesc serverul dumneavoastră de îndată ce este implicat un serviciu găzduit. O regulă poate fi marcată ca Confidențial; în acest caz textul este văzut doar de furnizorii marcați ca rulând pe infrastructură proprie.
- Cheile se află într-un câmp vizibil doar administratorilor sau într-o variabilă de mediu la care trimite doar numele. În mesajele de eroare sunt mascate și sunt trimise în anteturi. Excepție: cheia opțională a MyMemory poate fi transmisă acolo doar ca parametru de interogare.
- Comanda locală execută un program și de aceea este blocată până când parametrul de sistem
ai_translation_consensus.allow_commandeste setat peTrue. Comanda este apelată fără shell și rulează într-un director temporar gol. - Prompt injection: Sarcinile marchează textul drept date. Instrucțiunile din textul tradus nu sunt respectate, iar un rezultat care încalcă etichete sau substituenți este respins.
- Serviciile gratuite au limite. Pollinations permite anonim un singur răspuns la 45 de secunde. Opțiunea furnizorului
min_intervalrespectă intervalul, iar răspunsurile de tip „Vă rugăm să reîncercați mai târziu” sunt luate în considerare.
Instalare
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
Sunt necesare Odoo 19 și pachetul Python requests. Este inclusă o traducere în germană. Modulul-punte ai_translation_consensus_website se instalează automat împreună cu modulul, dacă website este prezent. După instalare, serviciul Odoo trebuie repornit, deoarece modulul conține cod Python. Cine administrează un sistem de producție instalează modulul mai întâi pe o copie a bazei de date.
Primii pași: deschideți meniul Traducere AI → Furnizori, testați și activați serviciile, apoi Începeți aici și creați prima regulă. Cu Caută texte se generează propunerile, cu Procesează un lot sunt apelați furnizorii. Începeți cu o regulă mică, de exemplu un singur articol de blog și două limbi, și analizați rezultatul și costurile înainte de a pune în coadă o întreagă pagină web.
Limite
- Calitatea depinde de modelele pe care le activați. Verificarea încrucișată reduce erorile modelelor individuale, dar nu oferă nicio garanție. Pentru texte critice din punct de vedere juridic sau al securității, modulul nu înlocuiește un vorbitor nativ.
- Costurile cresc rapid. Un text costă un apel pentru fiecare traducător, un apel de verificare pentru fiecare evaluator și, în cazul votului împărțit, o a doua rundă. Contextul paginii mărește intrarea fiecărui apel. O regulă cu 45 de limbi țintă multiplică numărul de texte. Limitați rulările cu Înregistrări per căutare, Propuneri noi per căutare și Propuneri per rulare cron și adăugați ca evaluatori modele ieftine sau locale.
- Doar câmpurile cu
translate=True. Textul formatat este procesat pe blocuri (mecanismul de termeni al Odoo). - Prețurile și numele modelelor se schimbă. Setările implicite nu reprezintă o listă de prețuri actualizată.
- Construit pentru Odoo 19.0 Community. Alte versiuni nu sunt acceptate.
Întrebări frecvente
Se traduce sau se suprascrie ceva fără acordul meu?
Nu, atât timp cât nu activați Preluare automată la consens. Chiar și atunci se scriu doar propunerile cu consens. Furnizorii și acțiunea planificată sunt dezactivați după instalare.
Am nevoie de chei pentru furnizorii cu plată?
Doar pentru furnizorii care o cer. Cu Pollinations, MyMemory sau un model rulat local (de exemplu Ollama) se poate și fără. Serviciile gratuite sunt adesea limitate și lente, iar pentru o pagină web întreagă sunt de obicei potrivite doar ca supliment.
Cât costă o traducere?
Depinde de furnizor, model, lungimea textului și numărul de limbi, de aceea modulul nu impune cifre fixe. Panoul de control afișează consumul și costurile imediat ce ați introdus prețurile și estimează costurile rămase ale textelor aflate în coadă.
Pot păstra textele confidențiale?
Da, cu opțiunea de regulă Confidențial. În acest caz lucrează doar furnizorii marcați ca rulând pe infrastructura dumneavoastră proprie, de exemplu un Ollama local.
Înlocuiește acesta traducerea nativă din Odoo?
Nu. Modulul folosește multilingvismul din Odoo și scrie în aceleași traduceri pe care, altfel, le întrețineți manual.
Sub ce licență este?
Sub AGPL-3. Erorile și îmbunătățirile sunt binevenite ca issue în repository-ul GitHub .
Asistență din partea Biricon IT Services
Oferim asistență pentru instalări Odoo ale întreprinderilor mici și mijlocii: de la implementare, personalizări și migrări până la operarea curentă. Dacă doriți să vă rulați site-ul Odoo în mai multe limbi, să securizați traducerile cu AI sau să puneți un modul în siguranță în instanța dumneavoastră de producție, vă ajutăm cu plăcere. Alte dezvoltări proprii: Arhivarea unei firme împreună cu utilizatorii de portal, Numere de documente din prefix, an și contor și Firmenbuch și verificarea adreselor pentru clienți austrieci.
Stadiu: 3 noiembrie 2026. Versiunea modulului 19.0.1.0.0. Imaginile arată date de exemplu inventate.