Scribe

Tradurre un sito Next.js con Gemini senza far danni in produzione

Come tradurre automaticamente contenuti MDX con l'API Batch di Gemini a metà del prezzo dei token, validare ogni singola risposta prima di salvarla e pagare solo per ciò che è cambiato davvero.

View as Markdown

La traduzione automatica è così economica che portare un intero sito in dieci lingue costa meno di un caffè. La difficoltà non è mai stata il modello in sé. È tutto quello che ci gira intorno: capire cosa deve essere tradotto, intercettare gli errori del modello prima che finiscano online e non ritrovarsi a pagare per ritradurre 500 pagine solo per aver corretto un refuso in una.

Questo post spiega come Scribe gestisce tutte queste problematiche, usando questo stesso sito (dieci lingue, ogni pagina tradotta) come caso d'uso.

Traduci solo ciò che è cambiato

Ogni documento traducibile è associato a un hash del suo contenuto: i campi frontmatter selezionati e il corpo MDX. Ogni traduzione salvata ricorda l'hash di partenza. La lista delle cose da fare per un ciclo di traduzione è semplicemente ogni coppia (documento, lingua) in cui gli hash non corrispondono o la traduzione non esiste affatto.

Questo offre due vantaggi molto interessanti:

  • Correggere un refuso in un file rende obsoleta un'unica pagina, in tutte le lingue.
  • Lanciare scribe translate due volte di fila non fa assolutamente nulla la seconda volta.

Prima di spendere un centesimo, scribe translate --dry-run stampa la lista dei lavori con una stima dei token e del costo per elemento. Raggruppare i rilasci dello stesso giorno nel nostro changelog, per esempio, ha prodotto 18 elementi in sospeso per un costo stimato di 0,07 $ prima di confermare l'operazione.

Metà prezzo con l'API Batch

Di default, le traduzioni passano per l'API Batch di Gemini, che fattura i token di input e output al 50% della tariffa interattiva. Tutte le richieste vengono pianificate e inviate in blocco, per poi essere interrogate insieme. I job vengono salvati nel database SQLite non appena inviati. In questo modo puoi interrompere il processo e lanciare di nuovo scribe translate più tardi per riprendere da dove avevi lasciato.

Inoltre, i prompt sono strutturati in modo che il contenuto in inglese formi un prefisso identico per tutte le lingue di destinazione. Quando una pagina viene tradotta in nove lingue, il caching implicito del contesto di Gemini applica uno sconto sui token di input ripetuti. Le istruzioni specifiche per ogni lingua si trovano alla fine del prompt, dove non interrompono il prefisso condiviso.

Valida prima di salvare, non dopo la pubblicazione

Capiterà che il modello restituisca qualcosa di rotto: MDX non valido, un campo inventato di sana pianta, una stringa troncata. La regola per sopravvivere a tutto questo è semplice: niente entra nel database senza essere validato.

Ogni risposta viene analizzata come MDX e verificata rispetto allo schema Zod del documento. Se una risposta è errata, fallisce solo quell'elemento e non l'intero sito. Alla fine del ciclo, gli elementi falliti vengono ritentati una volta, fornendo al modello gli errori di validazione (il che risolve la maggior parte dei problemi). Se un elemento fallisce due volte, viene segnalato e lasciato non tradotto. Nel frattempo, la build continuerà a servire la versione inglese per quella lingua.

Traduzione o transcreazione?

Le traduzioni letterali sembrano manuali di istruzioni. Il prompt integrato in Scribe inquadra invece l'operazione come transcreazione: il modello si cala nei panni di un copywriter madrelingua che redige la versione localizzata del testo. Veicola l'intento di ogni frase invece di ricalcare la sintassi originale, ricrea giochi di parole e modi di dire invece di renderli letteralmente, e applica le convenzioni tipografiche della lingua di destinazione.

Puoi guidarlo ancora meglio con translate.context (l'argomento del sito, i termini del brand da non tradurre) e translate.rules (le regole di stile aziendale) nel tuo file di configurazione. Per l'elenco completo delle opzioni, consulta la guida alla traduzione.

Quanto costa nella realtà

Questo sito comprende una landing page, una sezione documentazione, un changelog e, da poco, un blog tradotto in nove lingue (oltre all'inglese). Rifare tutto da zero costa qualche dollaro. I successivi aggiornamenti incrementali costano pochi centesimi. La parte costosa dei siti multilingue non sono mai stati i token, ma la gestione. Verificare le modifiche tramite hash azzera i costi di gestione.

Inizia dalla guida introduttiva, poi lancia la tua prima traduzione tenendo a portata di mano la reference della CLI.

Tradurre un sito Next.js con Gemini senza far danni in produzione · Scribe