Localização de conteúdo - manual e automática com Discourse AI

Neste tópico, vamos guiá-lo pelas funcionalidades de Localização de Conteúdo e como ativá-las. As funcionalidades são divididas 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 cabeçalhos da wiki :backhand_index_pointing_right:t2:

Localizando o Conteúdo da Sua Comunidade

O Discourse oferece acesso a várias funcionalidades de localização disponíveis para configuração em:

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

Preparação

Primeiro, é bom obter algumas informações sobre sua comunidade via Data Explorer.

Idioma via preferências do usuário

A seguinte consulta pode dar uma ideia de quantos usuários podem ter definido seu idioma 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 amostrais do Data Explorer

De onde seus usuários estão vindo

Uma solução melhor, se você tiver Eventos de visualização de página do navegador ativados (configuração do site), é esta consulta que informa de qual país seu usuário é:

SELECT
  e.country_code AS country_code,
  COUNT(*) AS pageviews
FROM browser_pageview_events e
WHERE e.country_code IS NOT NULL
  AND e.country_code <> ''
GROUP BY e.country_code
ORDER BY pageviews DESC
Resultados amostrais

Configuração

Com as informações acima, você está agora mais informado sobre quais idiomas sua comunidade deve suportar.

Em <url-do-seu-site>/admin/site_settings/category/content_localization, comece a configurar isso.

  • Localização de conteúdo ativada - ativa a funcionalidade que substitui o conteúdo escrito original do usuário por conteúdo localizado. Leia mais sobre os modos de localização automática (IA) e manual (humana).
  • Idiomas suportados pela localização de conteúdo - a lista de idiomas que seu site suporta
  • Parâmetro do rastreador de localização de conteúdo - abordado na seção de rastreadores abaixo
  • Seletor de idioma de localização de conteúdo - abordado logo abaixo
Lista de idiomas nas Configurações do Site 📸

Seletor de idioma

Ativar a configuração subsequente Seletor de idioma de localização de conteúdo também permite tornar sua comunidade mais acessível a usuários não conectados, mostrando a lista de idiomas que você escolheu na lista de idiomas suportados:

Seletor de idioma no canto superior direito da página

Visualizando conteúdo localizado

Para os visualizadores de conteúdo localizado (todos os visitantes do site), eles podem passar o cursor sobre o indicador ao lado da data da publicação para ver o idioma original da publicação. Este indicador só aparece se a publicação não estiver no idioma deles. Eles podem simplesmente clicar no indicador para ver a publicação original também.

Para nossos visualizadores conectados multilíngues, eles podem indicar que entendem vários idiomas, então o conteúdo nesses idiomas não será traduzido.

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

O Discourse AI é altamente essencial para a funcionalidade de localização e elimina a necessidade de fazer traduções manuais.

Como administrador, você deve ir para nossa área dedicada no Discourse AI para Traduções. Esta área dedicada abrange:

  • progresso da tradução
  • configurações de IA
  • configurações de idioma do aplicativo

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

  • Taxa horária de preenchimento de tradução IA - esta configuração tem como padrão 50 - seu site traduzirá 50 publicações, 50 tópicos, 50 categorias, 50 tags por hora, para os idiomas que você definiu em Idiomas suportados pela localização de conteúdo. Mantenha isso em um número baixo quando estiver começando.
  • Escopo de categoria de tradução IA - tem como padrão Categorias públicas. Você pode alterar isso para todas as categorias ou uma seleção específica.
  • Mensagens pessoais de tradução IA e Incluir conteúdo de bot na tradução IA são autoexplicativas.
  • Data de início do preenchimento de tradução IA - este valor está vazio por padrão. Se você ativar a funcionalidade de tradução IA “hoje”, a data é automaticamente definida para “hoje - 5 dias”
  • Agente tradutor de texto bruto de publicação IA (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.

Localização manual

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

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

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

Localização de categoria

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

Locais 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 poder acessar as configurações da categoria como de costume e encontrar o novo item de navegação “Localizações” à esquerda.

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

Localização de tópico e publicação

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

Existem algumas configurações pré-requisito

  • Certifique-se de que seu usuário esteja em grupos permitidos para localização de conteúdo
  • O botão addTranslation é adicionado automaticamente ao menu da publicação e itens ocultos do menu da publicação quando Localização de conteúdo ativada está ligada. Isso permite que o :globe_with_meridians: apareça no menu da publicação para usuários em grupos permitidos para localização de conteúdo.
  • Permitir localização do autor na localização de conteúdo está ativado por padrão e permite que os autores das publicações localizem seu próprio conteúdo usando o mesmo menu da publicação acima.
configuração do menu da publicação

Editando uma publicação localizada

Caso o usuário esteja visualizando uma publicação localizada e queira editar a publicação, uma caixa de diálogo aparecerá perguntando qual versão eles preferem editar:

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

Localização personalizada da barra lateral

Seções da barra lateral que são “visíveis para todos” também mostram controles adicionais de tradução:

Rastreadores

Você pode permitir que rastreadores vejam seu site nos vários idiomas que você configurou em Idiomas suportados pela localização de conteúdo. A configuração do site reside na seção “Localização de conteúdo” como Parâmetro do rastreador de localização de conteúdo:

O resultado será que os rastreadores podem ver o seguinte, onde cada idioma suportado tem um hreflang correspondente no cabeçalho de cada tópico:

Para prova/verificação extra

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

FAQ

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

  • Idiomas suportados pela localização de conteúdo tem pelo menos um idioma
  • Localização de conteúdo ativada está :check_mark:
    • Permitir idioma do usuário está :check_mark: (ativado por padrão)
    • Definir idioma a partir do cookie está :check_mark:
  • Tradução IA ativada está :check_mark:
  • Você deve ter um LLM funcionando definido para cada agente de tradução

Se nada mais funcionar, você pode ativar SiteSetting.ai_translation_verbose_logs.

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

Se meu fórum suporta inglês e japonês (via Idiomas suportados pela localização de conteúdo), e alguém escreve em espanhol, sua publicação será traduzida?
Sim. Todos os tópicos e publicações serão traduzidos para inglês e japonês, independentemente do idioma escrito.

Se a publicação original for editada, ela será re-traduzida?
Sim – com um máximo de 2 vezes por dia. Quando uma publicação é editada, ela é enviada para re-tradução após um atraso maior de 5 minutos ou do SiteSetting.editing_grace_period para levar em conta edições ninja. Usuários autorizados em grupos permitidos para localização de conteúdo têm a opção de enviar uma publicação para re-tradução imediatamente.

As traduções serão excluídas se eu mudar o Agente ou LLM?
Não, as traduções normalmente persistirão através de mudanças de configurações, a menos que sejam explicitamente excluídas usando o item do menu da publicação ou o compositor de tradução.


25 Curtiram
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
Übersetzung wie hier auf Meta
Anonymous user language selector for Discourse
Update or Replace Header Locale Selector for New Discourse Header (widgets-end-of-life) – Is Built-in Support Available?
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`?
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
AI translation of all PMs
Content localization language switcher doesn't work
This Meta Branded theme is special. Can I use it on my forum too?
Feature Request: Translation of FAQ/Terms of Service/Privacy
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 Curtiram

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

4 Curtiram

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 Curtiram

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

3 Curtiram

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

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

1 Curtiu
2 Curtiram

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 Curtiram

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

3 Curtiram

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 Curtiram

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 Curtiram

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 Curtiram

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 Curtiu

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 Curtiu

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 Curtiu

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 Curtiu

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.