Localização de Conteúdo - Manual e Automática com Discourse AI

Neste tópico, vamos guiá-lo pelos recursos de Localização de Conteúdo e como ativá-los. Os recursos estão divididos em duas partes: o que está disponível por padrão no Discourse; e o Discourse AI para traduções automáticas.

:warning: Para acesso rápido às seções relevantes, use os títulos da wiki :backhand_index_pointing_right:t2:

Localizando o Conteúdo da Sua Comunidade

Uma versão atualizada do Discourse (3.5.0.beta7-dev) oferece acesso a vários recursos de localização disponíveis para configuração em:

  • <sua-url-do-site>/admin/site_settings/category/content_localization
Novo Localização de Conteúdo nas Configurações do Site 📸

Obtendo informações sobre seus usuários

Primeiramente, é bom obter algumas informações sobre sua comunidade. A seguinte consulta do Data Explorer pode dar uma ideia de quantos usuários podem ter definido seu locale em /my/preferences/interface.

SELECT locale, count(*) as count
FROM users
WHERE (locale IS NOT null AND locale <> '')
GROUP BY locale
ORDER BY count DESC
Resultados de exemplo do Data Explorer

Definindo os locais que sua comunidade suporta

Com as informações acima, agora temos mais clareza sobre quais locais sua comunidade deve suportar.

Em <sua-url-do-site>/admin/site_settings/category/content_localization, você pode selecionar os locais para suportar.

  • Content localization enabled (Localização de conteúdo ativada) - ativa o recurso que substitui o conteúdo original escrito pelo usuário por conteúdo localizado. Continue lendo para saber sobre os modos automático e manual de localização.
  • Content localization supported locales (Locais suportados para localização de conteúdo) - a lista de idiomas que seu site suporta
  • Content localization crawler param (Parâmetro do crawler para localização de conteúdo) - abordado na seção de crawlers abaixo
  • Content localization language switcher (Seletor de idioma para localização de conteúdo) - abordado logo abaixo
Lista de locais nas Configurações do Site 📸

Ativar a configuração subsequente Content localization language switcher também permite tornar sua comunidade mais acessível para usuários não logados, exibindo a lista de idiomas que você escolheu na lista de locais suportados:

Seletor de idioma no canto superior direito da página

Visualizando conteúdo localizado


Tópico de boas-vindas localizado em meta.discourse.org

Para visualizadores de conteúdo localizado (todos os visitantes do site), eles podem passar o cursor sobre o indicador ao lado da data da postagem para visualizar o idioma original da postagem. Esse indicador só aparece se a postagem não estiver no idioma do usuário.

Se um usuário desejar ver apenas o conteúdo original, pode usar a alternância acima da linha do tempo do tópico para desativar as localizações para todo o site.

Traduções automáticas com Discourse AI :sparkles:

O Discourse AI são as vitaminas essenciais para o recurso de localização e elimina a necessidade de fazer traduções manuais.

Como administrador, você deve acessar nossa nova seção de recursos de IA para Tradução.

Recursos do Discourse AI nas Configurações de Admin 📸

Role para baixo em /admin/plugins/discourse-ai/ai-features

Para cobrir algumas configurações e recomendações importantes:

  • AI translation backfill hourly rate (Taxa horária de preenchimento de tradução da IA) - esta configuração padrão é 50. Supondo que a taxa seja 50, seu site traduzirá 50 postagens, 50 tópicos e 50 categorias por hora, para os locais definidos em Content localization supported locales. Mantenha esse número baixo ao começar.
  • AI translation target categories (Categorias alvo para tradução da IA) - padrão é nenhuma categoria selecionada. Apenas o conteúdo nas categorias selecionadas será traduzido. Subcategorias devem ser adicionadas separadamente. Deixe vazio para desativar a tradução de tópicos em categorias.
  • AI translation personal messages (Mensagens pessoais para tradução da IA) - padrão é none. Controla quais mensagens pessoais são traduzidas. ‘none’ desativa a tradução de PMs. ‘group’ traduz apenas PMs de grupo. ‘all’ traduz todas as PMs.
  • AI translation include bot content (Incluir conteúdo de bots na tradução da IA) - padrão é false. Quando ativado, postagens de usuários de bot (user id < 0) também serão traduzidas. Por padrão, o conteúdo de bots é excluído da tradução.
  • AI translation max post length (Comprimento máximo da postagem para tradução da IA) - padrão é 10000. Isso é uma medida de segurança e impede que postagens acima de um determinado comprimento sejam traduzidas.
  • AI translation backfill max age days (Idade máxima em dias para preenchimento de tradução da IA) - padrão é 5. Isso significa que tópicos e postagens com mais de 5 dias não serão traduzidos. Você pode aumentar isso para um número grande para traduzir todos os tópicos e postagens.
  • AI translation post raw translator agent (e outros agentes) - Em comunidades mais formais, os administradores podem optar por criar seu próprio agente. Isso permite definir um prompt mais ajustado ao idioma ou vocabulário que você prefere.

Você pode consultar AI bot - Agents sobre como configurar agentes adequados e ajustar prompts para cada função.

Progresso da Tradução

Você pode encontrar mais informações sobre como as traduções automáticas estão progredindo no gráfico de Progresso da Tradução em /admin/plugins/discourse-ai/ai-translations

Esse gráfico aparecerá se

  • todos os agentes de tradutor tiverem um LLM válido
  • discourse ai enabled (Discourse AI ativado) :check_mark:
  • ai translation enabled (tradução da IA ativada) :check_mark:
  • content localization supported locales estiver preenchido
  • ai translation backfill max age days for maior que 0
  • ai translation backfill hourly rate for maior que 0

Localização manual

Como a localização é um recurso central no Discourse, fornecemos a capacidade de preencher e editar localizações manualmente caso as traduções automáticas com o Discourse AI não estejam disponíveis.

Por padrão, administradores e moderadores estão configurados para editar localizações.

Grupos permitidos para localização nas Configurações do Site 📸


Configuração do Site de Admin para Localização de Conteúdo

Atualmente, temos localizações para conteúdo de postagem, título do tópico, nome da categoria, descrição da categoria e tags. As seções subsequentes abaixo mostrarão como elas funcionam.

Localização de categorias

Categorias localizadas são visíveis nas seguintes áreas, com nome e descrição da categoria localizados:

Onde as categorias são localizadas 📸
  1. Página inicial, barra lateral e menu suspenso de categorias
  1. Página de categorias
  1. Uma categoria específica com subcategorias

Como administrador, você deve ser capaz de acessar as configurações de categoria como de costume e encontrar o novo item de navegação “Localizações” à esquerda.

Editando localizações de categoria nas Configurações da Categoria 📸

Localização de tópicos e postagens

A partir das capturas de tela acima em Localização de categorias, você pode ter notado títulos e trechos de tópicos sendo localizados.

Existem algumas configurações pré-requisito

  • Certifique-se de que seu usuário está em content localization allowed groups (grupos permitidos para localização de conteúdo)
  • O botão addTranslation (adicionar tradução) é automaticamente adicionado ao post menu (menu de postagem) e post menu hidden items (itens ocultos do menu de postagem) quando Content localization enabled está ativado. Isso permite que o :globe_with_meridians: apareça no menu de postagem para usuários em content localization allowed groups.
  • Content localization allow author localization (Permitir localização do autor para localização de conteúdo) está ativado por padrão e permite que autores de postagens localizem seu próprio conteúdo usando o mesmo menu de postagem acima.
3 Configurações do Site 📸


:backhand_index_pointing_down:t2:

Mais uma vez, a lista de idiomas localizáveis está na configuração Content localization supported locales mencionada acima.

Editando uma postagem localizada

Caso o usuário esteja visualizando uma postagem localizada e deseje editá-la, um diálogo aparecerá perguntando qual versão eles preferem editar:

O compositor apropriado aparecerá após a decisão.

Excluindo a tradução de uma postagem para um determinado locale

Se você seguiu as instruções acima sobre a configuração do post menu corretamente, deverá ser capaz de fazer o seguinte se estiver em Content localization allowed groups:

Crawlers

Você pode permitir que crawlers vejam seu site nos vários idiomas que configurou em Content localization supported locales. A configuração do site reside na seção “Content localization” como Content localization crawler param:

O resultado seria que os crawlers podem ver o seguinte, onde cada idioma suportado tem um hreflang correspondente no head de cada tópico:

Para prova extra / verificação

Testamos extensivamente esse recurso e podemos confirmar que estamos sendo indexados corretamente após introduzir X números de idiomas suportados

FAQ (Perguntas Frequentes)

Configurei tudo, mas a tradução automática ainda não está funcionando para mim
Confirme se você configurou:

  • Content localization supported locales tem pelo menos um idioma
  • Content localization enabled está :check_mark:
    • Allow user locale (Permitir locale do usuário) está :check_mark: (ativado por padrão)
    • Set locale from cookie (Definir locale a partir do cookie) está :check_mark:
  • Ai translation enabled (Tradução da IA ativada) está :check_mark:
  • Ai translation backfill max age days não é 0
  • Ai translation backfill hourly rate é maior que 12
  • Você deve ter um LLM funcional configurado para cada agente de tradução

Se tudo mais falhar, você pode ativar SiteSetting.ai_translation_verbose_logs.

Cada postagem está sendo traduzida?
Se AI translation backfill limit to public content (Limitar preenchimento de tradução da IA ao conteúdo público) estiver :check_mark: , todas as postagens em categorias públicas serão traduzidas. Por padrão, postagens de bots (user id < 0) são excluídas, a menos que AI translation include bot content esteja ativado.

As traduções automáticas são salvas ou são enviadas para o LLM toda vez que alguém visualiza um tópico?
As traduções são salvas; cada postagem é enviada apenas uma vez por idioma e as traduções são reutilizadas.

Se meu fórum suporta inglês e japonês (via Content localization supported locales), e alguém escrever em espanhol, a postagem será traduzida?
Sim. Todos os tópicos e postagens serão traduzidos para inglês e japonês, independentemente do idioma em que foram escritos.

Se a postagem original for editada, ela será re-traduzida?
Sim – com um máximo de 2 vezes por dia. Quando uma postagem é editada, ela é enviada para re-tradução após um atraso do maior valor entre 5 minutos ou o SiteSetting.editing_grace_period para levar em conta edições relâmpago. Usuários autorizados em Content localization allowed groups têm a opção de enviar uma postagem para re-tradução imediatamente.

As traduções serão excluídas se eu alterar o Agente ou o LLM?
Não, as traduções geralmente persistem entre alterações de configuração, a menos que sejam explicitamente excluídas usando o item do menu de postagem ou o compositor de tradução.


24 curtidas
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

Existem recomendações para fazer isso em massa para categorias existentes? No pior dos casos, talvez via API?

2 curtidas

Hmm, ótima pergunta. Vou garantir que a documentação da API seja atualizada para o endpoint de atualização de categoria. :memo:

4 curtidas

Haverá suporte para moderador por idioma? Estou pensando em meta – onde posso estar voluntariando para verificar postagens em um idioma específico e atualizá-las manualmente. Especialmente a documentação, que pode receber alguns toques humanos. Mas você diz que apenas moderadores podem fazer isso, o que provavelmente nunca serei.

3 curtidas

Hmm boa sugestão. Acho que isso pode ser feito, mas precisaremos pensar nos detalhes de como configurar.

3 curtidas

Como acessá-la? Você poderia fornecer um comando, por favor?

O Sidekiq tem algum job vinculado? É possível acioná-lo manualmente?

1 curtida
2 curtidas

Para complementar a postagem de Moin acima, é apenas SiteSetting. ai_translation_backfill_hourly_rate quando você acessa o console. O trabalho é executado a cada cinco minutos e a taxa é limitada de acordo.

3 curtidas

Vejo que a localização já está disponível na documentação. Obrigado @nat!

3 curtidas

Isso é maravilhoso, parabéns à equipe! Estou testando agora e compartilharei minhas impressões e experiência geral.

Sentimos falta do Esperanto na lista; isso pode ser ‘simplesmente’ adicionado, ou precisa ser primeiro incorporado ao discourse-languages?

Uau, você está por dentro – eu estava prestes a relatar aqui. :laughing:

Sim, tipo isso. Queremos uma experiência totalmente localizada onde os controles (botões, rótulos, etc.) sejam traduzidos adequadamente e de forma suficiente (70% seria muito bom) via Crowdin (veja Translations - Discourse Meta), e com isso podemos oferecer suporte ao idioma.

2 curtidas

A localização de conteúdo funciona com categorias de documentação? Parece-me que o conteúdo da barra lateral não está sendo traduzido, mesmo que eu localize o tópico do índice.

Também notei um comportamento estranho. Quando vejo um tópico localizado no idioma original e atualizo, ele muda para a versão localizada. Tenho que mudar novamente para a versão original manualmente.

3 curtidas

Ah, excelente observação, sim, ainda não está funcionando, mas o @nat acompanhará isso!

Será que isso é um catalisador para criarmos uma abstração/modelo de dados melhor para os links de documentos da barra lateral?

2 curtidas

Sim, é isso mesmo – há muitos lugares no Discourse que precisarão de tradução explícita, então estou registrando-os conforme aparecem. Mais recentemente, também localizamos as notificações para os títulos dos tópicos. Este é um exemplo de um tópico de funcionalidade que criei - Show translated user bios.

Criarei um novo tópico e @menciono você para garantir que cobrimos todas as bases na barra lateral.

EDIT: @tvavrda coberto aqui - Translate sidebar documentation links. Por favor, dê uma olhada e veja se faz sentido.

O que você quer dizer com “mudar novamente”?

Você se importaria de compartilhar uma gravação de vídeo (incluindo a barra de endereços) da próxima vez que isso acontecer? :folded_hands:t2: Sinta-se à vontade para me enviar uma mensagem direta neste caso se o conteúdo não for adequado em público. Além disso, você estava logado? Tecnicamente falando, essas coisas são rastreadas por cookies, então é um pouco intrigante para mim.

1 curtida

Enviei um vídeo para você.

Outra observação – não consigo ver as diferenças do conteúdo traduzido, certo? Isso pode ser útil se houver atualizações. Não é super importante, mas faria sentido, eu acho.

E outra – os backlinks sob o tópico não mostram um nome de tópico localizado.

E uma pergunta: Qual o sentido de localizar descrições de categorias nas configurações de categoria? A descrição da categoria deve vir da versão localizada do tópico “Sobre”, não deveria? A versão localizada não suporta markdown, então não consigo usar um link, o que eu gostaria.

1 curtida

Bem… o antigo componente GitHub - discourse/discourse-docs-sidebar realmente respeita a localização :slight_smile: Eu mudei temporariamente para aquele.

Sim, isso atualmente não é suportado e seria um grande empreendimento.

Temos um pequeno indicador de cor especial (semelhante ao indicador de edições de postagem ao lado dele) quando uma tradução pode estar desatualizada, pois a versão da postagem foi alterada.

1 curtida

Também vejo conteúdo não traduzido nos resumos dos tópicos fixados. Portanto, vejo uma lista de tópicos no idioma traduzido, mas o resumo do tópico fixado mostra o original.

1 curtida

Podemos fazer ou corrigir traduções manualmente, mas podemos acionar manualmente a construção de traduções? Tipo um trabalho sob demanda.

O que estou pensando é que permiti a tradução de tópicos com um ano de idade. Mas se esse ano for contado a partir da data atual, esse limite se moverá o tempo todo em direção ao conteúdo já traduzido. Mas a maior demanda é por conteúdo valioso mais antigo que eu gostaria de alcançar rapidamente e sem ações em massa bastante lentas.

Tenho curiosidade, alguém tem alguma estimativa de custo após ativar as traduções? Nosso site existe há algum tempo e, embora eu gostaria de traduzir o site inteiro, se possível, o custo é definitivamente uma preocupação. Portanto, se alguém tiver uma ideia aproximada do custo com base em sua experiência, por exemplo, 1000 posts resultando em um custo de US$ 1, isso ajudaria tremendamente a ter uma ideia de custo aproximada.

A localização do conteúdo é feita uma vez e depois armazenada em algum lugar, ou seja, não sob demanda? Se sim, há algo que me impeça de iniciar o Ollama e algum LLM de código aberto no meu desktop, como Llama 3 ou Deepseek 3, e simplesmente deixar o trabalho rodar até terminar?

Editar: Acho que pode funcionar para reduzir o custo inicial de tradução, mas não funcionará para posts mais recentes, a menos que se decida manter o LLM local rodando perpetuamente.