Le traduzioni dei tag generate dall'AI non funzionano perfettamente

Scorrendo le traduzioni dei tag in tedesco, ho notato una serie di problemi che sembrano derivare dalla mancanza di contesto da parte dell’IA: tratta i tag come parole isolate piuttosto che come riferimenti a funzionalità, plugin o componenti specifici di Discourse.

Nota: I sostantivi tedeschi sono sempre maiuscoli, ma i tag su meta sono in minuscolo. Le traduzioni in questo post sono quindi incoerentemente capitalizzate: ho continuato a cadere nell’uso corretto della capitalizzazione tedesca per abitudine.

La parte divertente per prima

Prima di entrare nei problemi pratici, alcune traduzioni sono semplicemente divertenti:

  • composer → “Komponist” - Questa è la persona che scrive musica
  • auto-bump → “automatische-erhöhung” - “aumento automatico”
  • fully-theme → “vollständig-thematisiert” - “affrontato completamente”
  • raspberry-pi → “Himbeere-pi” (“raspberry” come il frutto)
  • post-voting → “nach-der-Abstimmung” - “dopo il voto” (“post” letto come il prefisso latino, non come un post del forum)
  • tablet → “Tablette” - “pillole” (il farmaco, non il dispositivo)

Stessa traduzione per tag diversi

Questo è il problema più impattante nella pratica. Quando due tag ricevono la stessa traduzione, perdono la capacità di distinguere gli argomenti l’uno dall’altro.

  • year-in-review & yearly-review → “Jahresrückblick” - Attualmente il nome del plugin sembra non essere traducibile (vedo il nome inglese nella barra laterale di amministrazione e nell’elenco dei plugin installati), quindi è probabile che si utilizzi il termine inglese per riferirsi al nome del plugin. Anche se spero che un giorno tutti i plugin abbiano nomi tradotti, quindi penso che aggiungerei “Metas” a quello che raggruppa gli argomenti della recensione annuale qui, per separarli, quindi “Metas-Jahresrückblick” (la recensione annuale di Meta).
  • surveys & polls → “Umfragen” - Penso che le traduzioni di entrambi i plugin siano le stesse e finora nessuno se ne è accorto. Devo riflettere di più su una buona soluzione per questa, perché può anche facilmente entrare in conflitto con “voting” :exploding_head:
  • docs & documentation → “Dokumentation” - Proprio come yearly-review docs non è stato tradotto in tedesco, quindi non tradurrei il tag (in questo caso una traduzione in futuro sembra molto improbabile)
  • how-to & tutorial → “Anleitung” - Questo è già stato corretto. Ho trovato questa traduzione di https://diataxis.fr/ e ho suggerito il termine[1] usato lì).

Nomi propri e nomi di prodotti che non dovrebbero essere tradotti

Alcuni tag si riferiscono a strumenti, framework o prodotti specifici. Tradurli rende la funzionalità irriconoscibile.

  • raspberry-pi → “Himbeere-pi” (“raspberry” come il frutto)
  • mermaid → “Meerjungfrau” (“mermaid” come la creatura mitologica, non lo strumento per diagrammi)
  • ember → “Glut” (brace ardente da un fuoco)
  • vanilla → “Vanille” (il sapore)
  • onebox → “einzige-box” - “solo scatola”
  • intercom → “Gegensprechanlage” (un citofono come un campanello per porte - anche se intercom-widget è stato tradotto correttamente)
  • passkey → “Passwort” - “password” (una passkey è specificamente non una password)
  • perspective-api → “Perspektiven-api”
  • backups → “Sicherungen”
  • design-experiment → “Experimententwurf” - può essere “design-experiment” ma anche “draft experiment”, penserei al secondo perché per il primo avrei mantenuto “design” e parlare di bozze è abbastanza comune in Discourse.

Traduzioni di “Discourse”

La maggior parte dei tag che si riferiscono a “Discourse” sono stati tradotti in modo da non includere più il nome del software. Un’eccezione è discourse-hub.

“Theme” tradotto sistematicamente come “Thema” (argomento)

Questo è un problema sistematico in tutti i tag relativi ai temi. In tedesco, sia “theme” che “topic” si traducono con Thema, ma in un contesto Discourse sono cose molto diverse. Questo fa sì che i tag dei temi sembrino riferirsi a specifici argomenti di discussione.

Questo riguarda tutti i tag nel gruppo Official Themes.

Traduzioni in cui mancava il contesto

  • composer → “Komponist” - Questa è la persona che scrive musica, rispetto al campo di input che in tedesco chiamiamo solitamente “Editor”.
  • tablet → “Tablette” - “pillola” o “tablet”.
  • copy-post → "kopierbeitrag” - “tassa di copia” (Il problema è la combinazione delle parole. “Beitrag” per post è corretto, ma poiché copy non è stato tradotto come verbo, sembra che Beitrag sia usato qui con il significato di tassa)

Sostantivo o verbo

Alcune funzionalità sono state tradotte come verbi invece che come sostantivi

  • chat → “plaudern” - “chattare”
  • search → “suchen” - “cercare”

“post” letto come prefisso latino, non come post del forum

  • post-voting → “nach-der-Abstimmung” - “dopo il voto”
  • post-badges → “nach-Abzeichen” - “dopo i badge”

Risultati da tag inglesi non chiari

  • hosted-support → “gehosteter-support” (Questo sembra indicare che il supporto sia ospitato invece che il supporto per clienti ospitati)

Abbreviazione

  • pm-dropdown (uguale in tedesco) senza contesto m (message) non è stato sostituito con n (Nachricht)

Traduzioni che non corrispondono alla terminologia dell’interfaccia di Discourse

Queste traduzioni sono tecnicamente tedesco corretto, ma l’interfaccia utente di Discourse utilizza termini diversi. Questo rende i tag più difficili da trovare in modo intuitivo, specialmente per gli utenti che navigano in base alla lingua dell’interfaccia.

  • impersonate → “nachahmen” - “imitare” (ma l’interfaccia usa Nutzersicht o Nutzerrolle)
  • staged-users → “Staging-Benutzer” (ma l’interfaccia dice vorbereitete Benutzer)
  • advertising → “Werbung” (ma l’interfaccia si riferisce a Anzeigen)
  • assign → “zuweisen” (ma la traduzione del plugin usa zuordnen)
  • hot-topics → “Top-Themen” (questo è stato tradotto come “top topics”, che è in realtà un elenco diverso in Discourse)
  • read-only → “nur lesbar”
  • bootstrap-mode → “Bootstrap-Modus” (ma i traduttori hanno scelto inizialmente Starthilfemodus)
  • post-notices → “Nachrichten” - “messaggi/notizie” (può essere fuorviante perché i messaggi sono una funzionalità diversa, “official notice” usa Mitteilung nell’interfaccia)
  • about-page → “über-Seite” (Questa è una traduzione letterale. Ma solitamente la traduzione tedesca è qualcosa come “about us page”. Über non significa solo about ma anche sopra.)
  • auto-bump → “automatische-erhöhung” - “aumento automatico”
  • tags → “Etiketten” (ma tag-groups e la maggior parte dei tag contenenti tag usano “tag”, il termine usato su Crowdin è Schlagwort)

Traduzioni troncate

Questo è un tipo diverso di problema: non un errore di traduzione, ma una conseguenza dei sostantivi composti tedeschi che sono significativamente più lunghi delle loro controparti inglesi, combinati con il limite di caratteri del tag.

  • content-security-policy → “inhalts-sicherheitsrichtl” (troncato, dovrebbe essere inhalts-sicherheitsrichtlinie)
  • ai-custom-prompt → “ai-benutzerdefinierte-auf” (troncato a metà parola, dovrebbe essere ai-benutzerdefinierte-aufforderung)
  • custom-category-boxes → “benutzerdefinierte-katego” (troncato a metà parola, dovrebbe essere benutzerdefinierte-kategorie-boxen, in questo caso box manca completamente dalla traduzione)

I tag contenenti “custom” diventano facilmente troppo lunghi perché “benutzerdefiniert” è una parola piuttosto lunga.

più esempi

Questi esempi suggeriscono che il processo di traduzione necessita di più contesto: idealmente sapere a quale plugin o funzionalità appartiene un tag e avere accesso alle traduzioni esistenti dell’interfaccia di Discourse come riferimento. Sono felice di sapere se altri hanno notato schemi simili in altre lingue.


@nat (su richiesta personale)


  1. Lernunterlagen ↩︎

6 Mi Piace

Grazie @Moin, mi occuperò di questo e migliorerò i nostri prompt :smiling_face:

Anche LOL

Grazie per le risate :hugs:

4 Mi Piace

@nat e se dessimo all’agente accesso allo strumento di lettura, così potrebbe raccogliere il contesto da solo?

Sarebbe troppo costoso per i post, ma piuttosto economico e aumenterebbe la qualità in tutti i modelli per casi isolati come tag e categorie.

3 Mi Piace

Hmm, è una buona idea @falco.

Un altro approccio che avevo considerato era passare la descrizione del tag come contesto aggiuntivo durante la traduzione del nome del tag. Forse questo metodo è più prevedibile, che ne pensi?

4 Mi Piace

Avere accesso al glossario su Crowdin potrebbe essere molto utile per il bot che esegue la traduzione (non per tutti i siti, ma specialmente per Meta). Se è indicato lì che traduciamo “composer” come “Editor” e l’IA lo sa, potrebbe utilizzarlo nei tag, ma anche nei titoli degli argomenti e nei post.

Ho già corretto “composer” in Introducing our new composer, making writing on Discourse easier than ever, il che ha portato al mio feedback sulla modifica delle traduzioni qui: Feedback on the composer when translating a post to German, ma l’argomento è stato modificato dopo che l’ho fatto, e non sembra che la traduzione precedente venga utilizzata come contesto, quindi il post riporta di nuovo “composer”. (L’autore di musica di solito non appare nei post; solo testi più brevi come titoli degli argomenti e tag.)

Su Meta, la descrizione spesso non aggiunge molto contesto. Tutte quelle per i componenti dei temi, ad esempio, contengono semplicemente un link all’argomento del componente, non la breve descrizione all’inizio dell’argomento.

Ottima idea, facciamolo entrambi!

L’idea è utilizzare Meta come banco di prova e proxy per ciò che i nostri clienti potrebbero incontrare nel mondo reale, migliorando così la funzionalità per tutti.

Ottenere una traduzione perfetta su Meta sarebbe estremamente semplice semplicemente utilizzando l’LLM più costoso e fornendogli accesso a strumenti come l’accesso al codice sorgente e la ricerca sul web.

Non credo che alcun modello sceglierebbe le stesse traduzioni per Meta che i traduttori tedeschi hanno scelto per l’interfaccia di Discourse. “Mitarbeiter” è una traduzione perfetta per “staff”. Il fatto che alcuni traduttori abbiano deciso anni fa che non si adatta ai piccoli forum amatoriali, dove “staff” implica dipendenti retribuiti, e abbiano quindi scelto “Team”, è qualcosa che nessun AI indovinerà, perché semplicemente non è la traduzione corretta. È proprio qui che il glossario di Crowdin sarebbe utile: senza di esso, i termini generati dall’AI non corrisponderanno mai a ciò che gli amministratori vedono effettivamente nell’interfaccia, non perché l’AI non sappia tradurre, ma perché non prende le stesse decisioni di localizzazione che hanno preso i traduttori umani. È la differenza tra traduzione e localizzazione.
Lo stesso vale per altri termini come “modalità bootstrap” o “impersonificazione”.

Lo farebbe, poiché avrebbe accesso esattamente alla stessa scelta nei file config/locales/**/*.yml a scopo di riferimento.

Assolutamente, e per piccoli gruppi enumerabili, come le categorie e i tag, dare all’agente accesso alle traduzioni esistenti, che fanno parte del codice sorgente, aiuterebbe a contestualizzarle correttamente.

Non possiamo farlo per i post, poiché il costo sarebbe troppo elevato, ma è un’opzione per siti più piccoli o clienti con budget di traduzione più ampi.

Allora forse dovresti disabilitare la traduzione AI per Documentation e News and Events > Announcements :wink: Non credo sia possibile garantire che quelle traduzioni siano utili, soprattutto dato che le modifiche suggerite non aggiornano la discussione, quindi non c’è un modo semplice per notare che un argomento è stato aggiornato.

In generale, il costo è il motivo per cui ho suggerito di usare il glossario invece dei file contenenti tutte le traduzioni, perché mi aspetto che questo contenga le scelte più rilevanti una sola volta, senza aggiungere ogni singolo testo.

Non funziona così; l’agente può cercare nel codice i frammenti con corrispondenze e non carica mai l’intero contenuto nel contesto.

È un po’ come buttare via il bambino insieme all’acqua sporca, vero?

Ho appena controllato Calendar subscription URLs for external calendar apps in PT-BR e la traduzione sembra ottima, molto meglio di non avere nulla.

Ci saranno sempre margini di miglioramento in un flusso di lavoro di traduzione automatica non supervisionato, e @nat ha già reso tutto migliore oggi grazie al tuo feedback!

Nessuno si aspetta che sia perfetto, e Meta è il luogo dove possiamo adottare in anticipo le funzionalità e mostrare cosa è possibile fare in Discourse per i nostri utenti e clienti.