transLATER

in prova MIT PythonDockerOllamaGitLabHugo

Repository

Scrivi ora, traduci DOPO.

transLATER: scrivi ora, traduci DOPO. La documentazione dei progetti tradotta da sola, disegni compresi

Un servizio che traduce da solo la documentazione dei tuoi progetti su GitLab, con un modello di lingua che gira a casa tua: niente servizi esterni, niente costi a parola. Scrivi nella tua lingua, fai push, e qualche minuto dopo nel repository ci sono le traduzioni. Il nome gioca con l’inglese later, «dopo»: tu scrivi adesso, la traduzione arriva poco più tardi.

Traduce:

Le traduzioni finiscono accanto agli originali, nello stesso repository:

OriginaleTraduzione
README.mdREADME.en.md
docs/img/schema.svgdocs/img/schema.en.svg
content/guide/x/index.md (Hugo)content/guide/x/index.en.md
frontend.ymlfrontend.en.yml
i18n/it.tomli18n/en.toml
.env.example, conf.yaml (i commenti).env.en.example, conf.en.yaml

In testa a ogni Markdown, originale compreso, c’è la barra delle lingue disponibili: 🌐 **Italiano** · [English](https://git.eandgcode.com/egprojects/translater/-/blob/main/README.en.md). Si scrive guardando i file che ci sono davvero, quindi una lingua aggiunta compare da sola; nelle traduzioni i link agli altri documenti e alle immagini puntano alle loro traduzioni.

GitLab ──push──► webhook ──► translater (coda, un giro alla volta) ──► commit «Traduzioni automatiche»
                                   │
                                   └──► translater-ollama (modello di lingua sulla scheda video)

Requisiti

Mentre lavora il modello prende quasi tutta la scheda video e qualche GB di RAM; dopo 5 minuti senza lavoro si scarica da solo, e fra un giro e l’altro restano solo i due programmi (un centinaio di MB). Se un altro programma sta usando la scheda video, il modello va un po’ più sul processore: più lento, ma va.

Installazione

  1. L’utente di GitLab (vedi sotto): un utente normale, Maintainer dei progetti da tradurre, e un suo token.
  2. Sul PC, in questa cartella: ./setup-translater.sh. Al primo lancio crea .env dal modello .env.example: compila dove sta il server (SERVER_SSH, SERVER_KEY), GITLAB_URL e GITLAB_TOKEN, e rilancia. Lo script si copia sul server, costruisce l’immagine, avvia i due container e scarica il modello (una volta sola). Si può anche lanciare direttamente sul server: lì le righe SERVER_* restano vuote.
  3. In ogni progetto da tradurre, un translations.yml. Al giro successivo il servizio lo trova, crea il webhook del progetto e traduce tutto; poi riparte a ogni push.

La pagina di stato è su http://IP-DEL-SERVER:8790/ (utente translater, password in .env sul server: STATO_PASSWORD): coda, ultimi giri, anteprime PNG dei disegni tradotti, tasto «Traduci ora».

L’utente di GitLab

I commit di transLATER portano l’indirizzo «noreply» di quell’utente, e il webhook li riconosce: un commit di traduzioni non fa partire un altro giro.

Il modello

Di serie gemma4:26b-a4b (Google Gemma 4, a esperti: 26 miliardi di parametri, 4 attivi per volta), scelto con una gara sugli stessi testi: sezioni con elenchi, un paragrafo con codice, il front matter di una pagina, le 36 scritte di uno schema SVG e qualche frase difficile.

ModelloVelocità (RTX 4070 12 GB + Xeon 22 core)Com’è andata
gemma4:26b-a4b (18,7 GB)43 token/sottima: glossario rispettato, grassetti e codice intatti, nel disegno sposta le parole fra le righe spezzate perché si leggano ancora
qwen3.6:35b-a3b (22,6 GB)48 token/sbuona, ma traduce anche dentro il codice (sensors/<stanza>/… → <room>) e applica male il glossario
gemma4:31b (densa, 20,4 GB)9 token/scome la 26b, cinque volte più lenta, e anche lei tocca il codice
translategemma:12b6,5 token/s (solo processore)buona ma senza contesto: «si toglie tensione» → «we are relieving stress»
translategemma:27b5,3 token/snon meglio della 12b

Si cambia con --model <nome> (qualunque modello di Ollama): la cache è per modello, quindi con un modello nuovo si ritraduce tutto. Su macchine più piccole gemma4:12b (8 GB) o gemma4:e4b (6,6 GB) sono più leggeri; la loro qualità non è stata provata.

Come traduce

Quando parte

Lo script: setup-translater.sh

ComandoCosa fa
(niente) o --install.env, immagine, avvio, download del modello
--translate <gruppo/progetto|all>mette in coda subito
--count <gruppo/progetto>quanti file e pezzi ci sono da tradurre, senza tradurre
--test <file.md|file.svg> [lingua]dal PC: traduce un file e lo riporta accanto (con le anteprime PNG per gli SVG)
--status · --logscoda e ultimi giri · segue il log
--model <nome>cambia modello
--start · --stop · --restart · --update · --uninstalli container

Licenza

MIT, vedi LICENSE. Il modello di serie ha la sua licenza (Gemma Terms of Use).