Localizzazione dei contenuti - Manuale e automatica con Discourse AI

In questo argomento, vi guideremo attraverso le funzionalità di localizzazione dei contenuti e come attivarle. Le funzionalità sono divise in due parti: ciò che è disponibile di default in Discourse; e Discourse AI per le traduzioni automatiche.

:warning: Per un accesso rapido alle sezioni pertinenti, utilizzate le intestazioni della wiki :backhand_index_pointing_right:t2:

Localizzare i contenuti della vostra community

Una versione aggiornata di Discourse (3.5.0.beta7-dev) vi offre accesso a diverse funzionalità di localizzazione configurabili all’indirizzo:

  • <your-site-url>/admin/site_settings/category/content_localization
Nuova localizzazione dei contenuti nelle impostazioni del sito 📸

Ottenere informazioni sui vostri utenti

Innanzitutto, è utile raccogliere alcune informazioni sulla vostra community. La seguente query di Data Explorer può darvi un’idea di quanti utenti abbiano impostato la propria lingua in /my/preferences/interface.

SELECT locale, count(*) as count
FROM users
WHERE (locale IS NOT null AND locale <> '')
GROUP BY locale
ORDER BY count DESC
Esempi di risultati da Data Explorer

Impostare le lingue supportate dalla vostra community

Con le informazioni sopra riportate, ora abbiamo una visione più chiara di quali lingue la vostra community dovrebbe supportare.

In <your-site-url>/admin/site_settings/category/content_localization, potete selezionare le lingue da supportare.

  • Content localization enabled - attiva la funzionalità che sostituisce i contenuti originali scritti dagli utenti con contenuti localizzati. Continuate a leggere per scoprire le modalità automatica e manuale di localizzazione.
  • Content localization supported locales - l’elenco delle lingue supportate dal vostro sito
  • Content localization crawler param - trattato nella sezione sui crawler più avanti
  • Content localization language switcher - trattato subito sotto
Elenco delle lingue nelle impostazioni del sito 📸

Abilitando l’impostazione successiva Content localization language switcher, è anche possibile rendere la vostra community più accessibile agli utenti non registrati, mostrando l’elenco delle lingue scelte nell’elenco delle lingue supportate:

Selettore delle lingue in alto a destra della pagina

Visualizzare i contenuti localizzati


Argomento di benvenuto localizzato su meta.discourse.org

Per i visualizzatori di contenuti localizzati (tutti i visitatori del sito), è possibile passare il cursore sull’indicatore accanto alla data del post per visualizzare la lingua originale del post. Questo indicatore appare solo se il post non è nella loro lingua.

Se un utente desidera vedere solo i contenuti originali, può utilizzare l’interruttore sopra la cronologia dell’argomento per disabilitare le localizzazioni per l’intero sito.

Traduzioni automatiche con Discourse AI :sparkles:

Discourse AI sono le vitamine essenziali per la funzionalità di localizzazione ed eliminano la necessità di effettuare traduzioni manuali.

Come amministratore, dovrete recarvi nella nuova sezione delle funzionalità AI per la Traduzione.

Funzionalità di Discourse AI nelle impostazioni di amministrazione 📸

Scorrete verso il basso in /admin/plugins/discourse-ai/ai-features

Per coprire alcune impostazioni e raccomandazioni importanti:

  • AI translation backfill hourly rate - questa impostazione ha un valore predefinito di 50. Assumendo un tasso di 50, il vostro sito tradurrà 50 post, 50 argomenti e 50 categorie all’ora, nelle lingue impostate in Content localization supported locales. Mantenete questo valore basso quando iniziate.
  • AI translation target categories - predefinito su nessuna categoria selezionata. Solo i contenuti nelle categorie selezionate verranno tradotti. Le sottocategorie devono essere aggiunte separatamente. Lasciate vuoto per disabilitare la traduzione degli argomenti nelle categorie.
  • AI translation personal messages - predefinito su none. Controlla quali messaggi personali vengono tradotti. ‘none’ disabilita la traduzione dei PM. ‘group’ traduce solo i PM di gruppo. ‘all’ traduce tutti i PM.
  • AI translation include bot content - predefinito su false. Se abilitato, anche i post degli utenti bot (user id < 0) verranno tradotti. Di default, i contenuti dei bot sono esclusi dalla traduzione.
  • AI translation max post length - predefinito su 10000. Questa è una misura di sicurezza che impedisce la traduzione di post superiori a una certa lunghezza.
  • AI translation backfill max age days - predefinito su 5. Ciò significa che gli argomenti e i post più vecchi di 5 giorni non verranno tradotti. Potete aumentare questo valore a un numero elevato per tradurre tutti gli argomenti e i post.
  • AI translation post raw translator agent (e altri agenti) - In community più formali, gli amministratori possono scegliere di creare il proprio agente. Questo permette di impostare un prompt più accurato per la lingua o il vocabolario preferito.

Potete consultare AI bot - Agents per sapere come configurare agenti adatti e affinare i prompt per ciascuna funzione.

Stato della traduzione

Potete trovare ulteriori informazioni sull’avanzamento delle traduzioni automatiche nel grafico Stato della traduzione in /admin/plugins/discourse-ai/ai-translations

Questo grafico apparirà se:

  • tutti gli agenti traduttori hanno un LLM valido
  • discourse ai enabled :check_mark:
  • ai translation enabled :check_mark:
  • content localization supported locales è compilato
  • ai translation backfill max age days è maggiore di 0
  • ai translation backfill hourly rate è maggiore di 0

Localizzazione manuale

Poiché la localizzazione è una funzionalità fondamentale in Discourse, offriamo la possibilità di inserire e modificare manualmente le localizzazioni nel caso in cui le traduzioni automatiche con Discourse AI non siano disponibili.

Di default, gli amministratori e i moderatori sono configurati per modificare le localizzazioni.

Gruppi autorizzati alla localizzazione nelle impostazioni del sito 📸


Impostazione del sito amministratore per la localizzazione dei contenuti

Attualmente, abbiamo localizzazioni per il contenuto del post, il titolo dell’argomento, il nome della categoria, la descrizione della categoria e i tag. Le sezioni successive mostreranno come funzionano.

Localizzazione delle categorie

Le categorie localizzate sono visibili nelle seguenti aree, con sia il nome che la descrizione della categoria localizzati:

Luoghi in cui le categorie sono localizzate 📸
  1. Homepage, barra laterale e menu a discesa delle categorie
  1. Pagina delle categorie
  1. Una categoria specifica con sottocategorie

Come amministratore, dovreste essere in grado di accedere alle impostazioni della categoria come al solito e trovare il nuovo elemento di navigazione “Localizzazioni” sulla sinistra.

Modifica delle localizzazioni delle categorie nelle impostazioni della categoria 📸

Localizzazione di argomenti e post

Dagli screenshot precedenti in Localizzazione delle categorie, potreste aver notato che i titoli degli argomenti e gli estratti vengono localizzati.

Ci sono alcune impostazioni preliminari:

  • Assicuratevi che il vostro utente sia nei content localization allowed groups
  • Il pulsante addTranslation viene aggiunto automaticamente a post menu e post menu hidden items quando Content localization enabled è attivo. Questo permette all’icona :globe_with_meridians: di apparire nel menu del post per gli utenti nei content localization allowed groups.
  • Content localization allow author localization è abilitato di default e permette agli autori dei post di localizzare i propri contenuti utilizzando lo stesso menu del post sopra menzionato.
3 Impostazioni del sito 📸


:backhand_index_pointing_down:t2:

Ancora una volta, l’elenco delle lingue localizzabili si trova nell’impostazione Content localization supported locales menzionata sopra.

Modifica di un post localizzato

Nel caso in cui l’utente stia visualizzando un post localizzato e voglia modificarlo, apparirà una finestra di dialogo per chiedere quale versione preferisce modificare:

Dopo aver deciso, apparirà l’editor appropriato.

Eliminazione della traduzione di un post per una determinata lingua

Se avete seguito correttamente le istruzioni sopra riguardanti l’impostazione post menu, dovreste essere in grado di fare quanto segue se siete nei Content localization allowed groups:

Crawlers

Potete permettere ai crawler di vedere il vostro sito nelle varie lingue configurate in Content localization supported locales. L’impostazione del sito si trova nella sezione “Content localization” come Content localization crawler param:

Il risultato sarà che i crawler potranno vedere quanto segue, dove ogni lingua supportata ha un corrispondente hreflang nell’head di ogni argomento:

Per ulteriori prove/verifiche

Abbiamo testato questa funzionalità estensivamente e possiamo confermare che siamo indicizzati correttamente dopo aver introdotto X numeri di lingue supportate

FAQ

Ho configurato tutto, ma la traduzione automatica non funziona ancora per me
Verificate se avete impostato quanto segue:

  • Content localization supported locales ha almeno una lingua
  • Content localization enabled è :check_mark:
    • Allow user locale è :check_mark: (abilitato di default)
    • Set locale from cookie è :check_mark:
  • Ai translation enabled è :check_mark:
  • Ai translation backfill max age days non è 0
  • Ai translation backfill hourly rate è maggiore di 12
  • Dovete avere un LLM funzionante impostato per ogni agente di traduzione

Se tutto il resto fallisce, potete abilitare SiteSetting.ai_translation_verbose_logs.

Ogni post viene tradotto?
Se AI translation backfill limit to public content è :check_mark:, tutti i post nelle categorie pubbliche verranno tradotti. Di default, i post dei bot (user id < 0) sono esclusi a meno che AI translation include bot content non sia abilitato.

Le traduzioni automatiche vengono salvate o vengono inviate all’LLM ogni volta che qualcuno visualizza un argomento?
Le traduzioni vengono salvate; ogni post viene inviato una sola volta per lingua e le traduzioni vengono riutilizzate.

Se il mio forum supporta l’inglese e il giapponese (tramite Content localization supported locales) e qualcuno scrive in spagnolo, il suo post verrà tradotto?
Sì. Tutti gli argomenti e i post verranno tradotti in inglese e giapponese, indipendentemente dalla lingua scritta.

Se il post originale viene modificato, viene ripreso e tradotto di nuovo?
Sì – con un massimo di 2 volte al giorno. Quando un post viene modificato, viene inviato per la rielaborazione dopo un ritardo pari al massimo tra 5 minuti o il SiteSetting.editing_grace_period per tenere conto delle modifiche “ninja”. Gli utenti autorizzati nei Content localization allowed groups hanno la possibilità di inviare immediatamente un post alla rielaborazione.

Le traduzioni verranno eliminate se cambio l’agente o l’LLM?
No, le traduzioni generalmente persistono attraverso le modifiche alle impostazioni, a meno che non vengano eliminate esplicitamente utilizzando l’elemento del menu del post o l’editor di traduzione.


24 Mi Piace
Content Localization and Automatic Translations for Your Community
I can't find discourse AI as a provider in the discourse translator plugin
2 language site
Machine-translate messages so users can read without knowing sender's language
Update or Replace Header Locale Selector for New Discourse Header (widgets-end-of-life) – Is Built-in Support Available?
Anonymous user language selector for Discourse
Übersetzung wie hier auf Meta
Translate Discourse automatically (without a button)
Help which plugin is in the screenshot
About auto translation
Auto Country Translation
How to Add Automatic Multilingual Translation Interface in Discourse?
3.6.0.beta2: Built-in palette editing, live AI translation progress, and better wiki tracking
The usage problem after using AI translation
AI translation backfill not working after all settings configured
AI translation backfill not working after all settings configured
Single post/header only partially translated -issue
Language Switcher Problem, Not Translating Posts
配置好 ai 翻译后,帖子已经被自动翻译,但是在帖子顶部和右侧没有显示语言切换按钮
Feature Request: Allow Users to Localize Only Their Own Topics
How to configure ai translate of `Ai translation backfill hourly rate`?
AI translation of all PMs
Seeking experience: Supporting a multilingual Discourse community
Ongoing translation in threads
I need help to configure LLM DeepSeek R1 0528 - free for Automatic translations with Discourse AI
I need help to configure LLM DeepSeek R1 0528 - free for Automatic translations with Discourse AI
Not sure how to juggle languages while setting up my francophone community
Structuring a multilingual community
Why is Discourse AI translation not working
How to set up Discourse AI for internal-only usage
Single post/header only partially translated -issue
Header Locale Selector
为啥的布署的discourse不支持修改语言
Topic list is shown in a language (DE) but has one (DE) topic not translated
If topic info is too long, tags are cut off and create a blank line
Content Localization and Automatic Translations for Your Community
Images break when the page is auto-translated by a browser translation extension (S3/R2 + CDN is configured correctly)
Bearbeitung von Übersetzen Beiträgen verbessern
Why Is the Discourse AI Translation Icon Not Appearing?
Why are posts in Swedish un-translated to Finnish, default locale?
Discourse AI Translator, Planet Icon Missing
Language switcher and language content
Multilingual user feedback on Automatic Translations
Sharing approaches to using automation to send messages to members

Ci sono raccomandazioni per farlo in blocco per le categorie esistenti? Nel peggiore dei casi, magari tramite API?

2 Mi Piace

Ottima domanda. Mi assicurerò che la documentazione API venga aggiornata per l’endpoint di aggiornamento della categoria. :memo:

4 Mi Piace

Ci sarà un supporto per moderatore per lingua? Sto pensando a meta – dove potrei fare volontariato per controllare i post in una lingua specifica e aggiornarli manualmente. Specialmente la documentazione che potrebbe accogliere alcuni tocchi umani. Ma dici solo i moderatori possono farlo che probabilmente non sarò mai.

3 Mi Piace

Ottimo suggerimento. Penso che si possa fare, ma dovremo pensare ai dettagli su come impostarlo.

3 Mi Piace

Come posso accedervi? Potresti fornire un comando per favore?

Sidekiq ha qualche job collegato? È possibile avviarlo manualmente?

1 Mi Piace
2 Mi Piace

Per aggiungere al post di Moin sopra, è sufficiente SiteSetting. ai_translation_backfill_hourly_rate una volta raggiunto la console. Il job viene eseguito ogni cinque minuti e la limitazione della velocità è di conseguenza.

3 Mi Piace

Ora vedo che la localizzazione è disponibile nella documentazione. Grazie @nat!

3 Mi Piace

È meraviglioso, complimenti al team! Lo sto testando proprio ora e condividerò i miei pensieri e la mia esperienza generale.

Ci manca l’esperanto nell’elenco; può essere semplicemente aggiunto, o deve prima essere integrato in discourse-languages?

Wow, sei sul pezzo – stavo giusto per segnalarlo qui. :laughing:

Sì, più o meno. Vogliamo un’esperienza completamente localizzata in cui i controlli (pulsanti, etichette, ecc.) siano tradotti in modo appropriato e sufficiente (il 70% sarebbe davvero buono) tramite Crowdin (vedi Translations - Discourse Meta), e con ciò possiamo fornire supporto alla lingua.

2 Mi Piace

La localizzazione dei contenuti funziona con le categorie di documentazione? Mi sembra che il contenuto della barra laterale non venga tradotto, anche se localizzo l’argomento dell’indice.

Ho anche notato uno strano comportamento. Quando vedo un argomento localizzato nella lingua originale e aggiorno, passa alla versione localizzata. Devo passare di nuovo manualmente alla versione originale.

3 Mi Piace

Oh fantastica osservazione, sì, non funziona ancora, ma @nat se ne occuperà!

Mi chiedo se questo sia un catalizzatore per arrivare a un’astrazione/modello dati migliore per i link dei documenti nella barra laterale.

2 Mi Piace

Sì, è corretto: ci sono molti punti in Discourse che richiederanno una traduzione esplicita, quindi li sto registrando man mano. Più di recente, abbiamo localizzato anche le notifiche per i titoli degli argomenti. Questo è un esempio di un argomento di funzionalità che ho creato: Show translated user bios.

Creerò un nuovo argomento e ti @ menzionerò in modo da assicurarci di coprire tutte le basi nella barra laterale.

MODIFICA: @tvavrda coperto qui: Translate sidebar documentation links. Per favore, dai un’occhiata e vedi se ha senso.

Cosa intendi con “passare di nuovo”?

Ti dispiacerebbe condividere una registrazione video (includi la barra degli indirizzi) la prossima volta che succede? :folded_hands:t2: Sentiti libero di inviarmi un messaggio privato per questo caso se il contenuto non è adatto al pubblico. Inoltre, eri connesso? Tecnicamente parlando, queste cose sono tracciate dai cookie, quindi è un po’ sconcertante per me.

1 Mi Piace

Ti ho inviato un video.

Un’altra osservazione: non posso vedere le differenze del contenuto tradotto, giusto? Potrebbe essere utile se ci fossero aggiornamenti. Non è super importante, ma avrebbe senso, immagino.

E un’altra: i backlink sotto l’argomento non mostrano un nome di argomento localizzato.

E una domanda: qual è il senso di localizzare le descrizioni delle categorie nelle impostazioni delle categorie? La descrizione della categoria dovrebbe provenire dalla versione localizzata dell’argomento “Informazioni”, non credi? La versione localizzata non supporta il markdown, quindi non posso usare un link, cosa che vorrei fare.

1 Mi Piace

Beh… il vecchio componente GitHub - discourse/discourse-docs-sidebar rispetta effettivamente la localizzazione :slight_smile: Mi sono temporaneamente spostato su quello.

Sì, anche questo al momento non è supportato e sarebbe un’impresa non da poco.

Abbiamo un piccolo indicatore di colore speciale (simile all’indicatore di modifica del post accanto ad esso) quando una traduzione potrebbe essere obsoleta poiché la versione del post è cambiata.

1 Mi Piace

Vedo anche contenuti non tradotti negli abstract degli argomenti bloccati. Vedo quindi un elenco di argomenti nella lingua tradotta, ma l’abstract dell’argomento bloccato mostra l’originale.

1 Mi Piace

Possiamo fare o correggere manualmente le traduzioni, ma possiamo attivare manualmente la creazione delle traduzioni? Una specie di lavoro su richiesta.

Quello che sto pensando è che ho permesso la traduzione per argomenti vecchi di un anno. Ma se quell’anno viene contato dalla data corrente, quel limite si sposterà continuamente verso contenuti già tradotti. Ma la maggiore richiesta riguarda contenuti più vecchi e di valore che vorrei raggiungere velocemente e senza azioni massive piuttosto lente.

Sono curioso, qualcuno ha delle cifre sui costi dopo aver attivato le traduzioni? Il nostro sito esiste da un po’ di tempo e, sebbene mi piacerebbe tradurre l’intero sito, se possibile, il costo è sicuramente una preoccupazione. Quindi, se qualcuno avesse un’idea approssimativa dei costi dalla propria esperienza, ad esempio 1000 post con un costo di 1 dollaro, ciò aiuterebbe enormemente a farsi un’idea dei costi approssimativi.

La localizzazione dei contenuti viene eseguita una sola volta e poi archiviata da qualche parte, cioè non su richiesta? Se sì, c’è qualcosa che mi impedisce di avviare Ollama e un LLM open source sul mio desktop come Llama 3 o Deepseek 3 e lasciare che il lavoro venga eseguito finché non è finito?

Modifica: Suppongo che possa funzionare per ridurre il costo iniziale della traduzione, ma non funzionerà per i post più recenti a meno che non si decida di mantenere l’LLM locale in esecuzione perpetuamente.