Localización de contenido: manual y automática con Discourse AI

En este tema, te guiaremos a través de las funciones de localización de contenido y cómo activarlas. Las funciones se dividen en dos partes: lo que está disponible por defecto en Discourse; y Discourse AI para traducciones automáticas.

:warning: Para acceder rápidamente a las secciones relevantes, utiliza los encabezados del wiki :backhand_index_pointing_right:t2:

Localizando el contenido de tu comunidad

Una versión actualizada de Discourse (3.5.0.beta7-dev) te da acceso a varias funciones de localización disponibles para configurar en:

  • <tu-url-del-sitio>/admin/site_settings/category/content_localization
Nueva localización de contenido en Configuración del sitio 📸

Obtener información sobre tus usuarios

En primer lugar, es útil obtener información sobre tu comunidad. La siguiente consulta del explorador de datos puede darte una idea de cuántos usuarios han establecido su configuración regional en /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 ejemplo del Explorador de datos

Establecer las configuraciones regionales que tu comunidad admite

Con la información anterior, ahora estamos mejor informados sobre qué configuraciones regionales debería admitir tu comunidad.

En <tu-url-del-sitio>/admin/site_settings/category/content_localization, puedes seleccionar las configuraciones regionales a admitir.

  • Localización de contenido habilitada: activa la función que reemplaza el contenido original escrito por el usuario con contenido localizado. Sigue leyendo para conocer los modos automático y manual de localización.
  • Configuraciones regionales admitidas para la localización de contenido: la lista de idiomas que admite tu sitio.
  • Parámetro del rastreador de localización de contenido: cubierto en la sección de rastreadores a continuación.
  • Selector de idioma de localización de contenido: cubierto justo a continuación.
Lista de configuraciones regionales en la Configuración del sitio 📸

Habilitar la configuración subsiguiente Selector de idioma de localización de contenido también te permite hacer tu comunidad más accesible para usuarios que no han iniciado sesión, mostrando la lista de idiomas que has elegido en la lista de configuraciones regionales admitidas:

Selector de idioma en la esquina superior derecha de la página

Visualizar contenido localizado


Tema de bienvenida localizado en meta.discourse.org

Para los espectadores de contenido localizado (todos los visitantes del sitio), pueden pasar el cursor sobre el indicador junto a la fecha de la publicación para ver el idioma original de la misma. Este indicador solo aparece si la publicación no está en su idioma.

Si un usuario desea ver solo el contenido original, puede usar el conmutador ubicado encima de la línea de tiempo del tema para desactivar las localizaciones para todo el sitio.

Traducciones automáticas con Discourse AI :sparkles:

Discourse AI son las vitaminas esenciales para la función de localización y elimina la necesidad de realizar traducciones manuales.

Como administrador, deberás dirigirte a nuestra nueva sección de funciones de IA para Traducción.

Funciones de Discourse AI en la Configuración de administración 📸

Desplázate hacia abajo en /admin/plugins/discourse-ai/ai-features

Para cubrir algunas configuraciones y recomendaciones importantes:

  • Tasa horaria de relleno de traducción por IA: esta configuración tiene un valor predeterminado de 50. Asumiendo que la tasa es 50, tu sitio traducirá 50 publicaciones, 50 temas y 50 categorías por hora a las configuraciones regionales que hayas establecido en Configuraciones regionales admitidas para la localización de contenido. Mantén este número bajo al comenzar.
  • Categorías objetivo de traducción por IA: por defecto no hay categorías seleccionadas. Solo se traducirá el contenido de las categorías seleccionadas. Las subcategorías deben agregarse por separado. Déjalo vacío para desactivar la traducción de temas en categorías.
  • Mensajes personales de traducción por IA: por defecto es ninguno. Controla qué mensajes personales se traducen. ‘ninguno’ desactiva la traducción de MP. ‘grupo’ traduce solo los MP de grupo. ‘todos’ traduce todos los MP.
  • Incluir contenido de bot en la traducción por IA: por defecto es falso. Cuando está habilitado, las publicaciones de usuarios bot (id de usuario < 0) también se traducirán. Por defecto, el contenido de los bots se excluye de la traducción.
  • Longitud máxima de publicación de traducción por IA: por defecto es 10000. Esto es una medida de seguridad y evita que se traduzcan publicaciones que superen cierta longitud.
  • Días máximos de antigüedad para el relleno de traducción por IA: por defecto es 5. Esto significa que los temas y publicaciones con más de 5 días de antigüedad no se traducirán. Puedes aumentar este valor a un número grande para traducir todos los temas y publicaciones.
  • Agente traductor de texto sin formato de traducción por IA (y otros agentes): en comunidades más formales, los administradores pueden optar por crear su propio agente. Esto te permite establecer un prompt que esté más afinado con el idioma o el vocabulario que prefieras.

Puedes consultar AI bot - Agents para saber cómo configurar agentes adecuados y afinar los prompts para cada función.

Progreso de la traducción

Puedes encontrar más información sobre cómo están progresando las traducciones automáticas en el gráfico de progreso de traducción en /admin/plugins/discourse-ai/ai-translations.

Este gráfico aparecerá si:

  • todos los agentes traductores tienen un LLM válido
  • discourse ai habilitado :check_mark:
  • traducción por IA habilitada :check_mark:
  • configuraciones regionales admitidas para la localización de contenido está completado
  • días máximos de antigüedad para el relleno de traducción por IA es mayor que 0
  • tasa horaria de relleno de traducción por IA es mayor que 0

Localización manual

Como la localización es una función principal en Discourse, proporcionamos la capacidad de completar y editar localizaciones manualmente en caso de que las traducciones automáticas con Discourse AI no estén disponibles.

Por defecto, los administradores y moderadores están configurados para editar localizaciones.

Grupos permitidos para localización en la Configuración del sitio 📸


Configuración del sitio de administrador para localización de contenido

Actualmente, tenemos localizaciones para el contenido de las publicaciones, el título del tema, el nombre de la categoría, la descripción de la categoría y las etiquetas. Las secciones subsiguientes a continuación te mostrarán cómo funcionan.

Localización de categorías

Las categorías localizadas son visibles en las siguientes áreas, con tanto el nombre como la descripción de la categoría localizados:

Lugares donde se localizan las categorías 📸
  1. Página de inicio, barra lateral y menú desplegable de categorías
  1. Página de categorías
  1. Una categoría específica con subcategorías

Como administrador, deberías poder acceder a la configuración de categorías como de costumbre y encontrar el nuevo elemento de navegación “Localizaciones” a la izquierda.

Editando localizaciones de categorías en la Configuración de categorías 📸

Localización de temas y publicaciones

De las capturas de pantalla anteriores en Localización de categorías, es posible que hayas notado que los títulos de los temas y los extractos están localizados.

Hay algunos requisitos previos:

  • Asegúrate de que tu usuario esté en grupos permitidos para localización de contenido.
  • El botón addTranslation se agrega automáticamente al menú de publicación y a elementos ocultos del menú de publicación cuando Localización de contenido habilitada está activada. Esto permite que el :globe_with_meridians: aparezca en el menú de publicaciones para los usuarios en grupos permitidos para localización de contenido.
  • Permitir localización por autor en la localización de contenido está habilitado por defecto y permite a los autores de las publicaciones localizar su propio contenido usando el mismo menú de publicaciones mencionado anteriormente.
3 Configuraciones del sitio 📸


:backhand_index_pointing_down:t2:

Una vez más, la lista de idiomas localizables está en la configuración Configuraciones regionales admitidas para la localización de contenido mencionada anteriormente.

Editar una publicación localizada

En caso de que el usuario esté viendo una publicación localizada y quiera editarla, aparecerá un cuadro de diálogo para preguntar qué versión prefieren editar:

El compositor adecuado aparecerá después de decidir.

Eliminar la traducción de una publicación para una configuración regional determinada

Si has seguido las instrucciones anteriores sobre la configuración del menú de publicaciones correctamente, deberías poder hacer lo siguiente si estás en los grupos permitidos para localización de contenido:

Rastreadores

Puedes permitir que los rastreadores vean tu sitio en los varios idiomas que has configurado en Configuraciones regionales admitidas para la localización de contenido. La configuración del sitio reside en la sección “Localización de contenido” como Parámetro del rastreador de localización de contenido:

El resultado sería que los rastreadores pueden ver lo siguiente, donde cada idioma admitido tiene un hreflang correspondiente en el encabezado de cada tema:

Para prueba o verificación adicional

Hemos probado esta función extensivamente y podemos confirmar que estamos siendo indexados correctamente después de introducir X número de idiomas admitidos.

Preguntas frecuentes (FAQ)

He configurado las cosas, pero la traducción automática aún no funciona para mí
Confirma si tienes configurado lo siguiente:

  • Configuraciones regionales admitidas para la localización de contenido tiene al menos un idioma.
  • Localización de contenido habilitada está :check_mark:
    • Permitir configuración regional de usuario está :check_mark: (habilitado por defecto)
    • Establecer configuración regional desde cookie está :check_mark:
  • Traducción por IA habilitada está :check_mark:
  • Días máximos de antigüedad para el relleno de traducción por IA no es 0.
  • Tasa horaria de relleno de traducción por IA es mayor que 12.
  • Debes tener un LLM funcional configurado para cada agente de traducción.

Si todo lo demás falla, puedes habilitar SiteSetting.ai_translation_verbose_logs.

¿Se traduce cada publicación?
Si Límite de relleno de traducción por IA a contenido público está :check_mark:, todas las publicaciones en categorías públicas se traducirán. Por defecto, las publicaciones de bots (id de usuario < 0) se excluyen a menos que Incluir contenido de bot en la traducción por IA esté habilitado.

¿Se guardan las traducciones automáticas o se envían al LLM cada vez que alguien ve un tema?
Las traducciones se guardan; cada publicación se envía solo una vez por idioma y las traducciones se reutilizan.

Si mi foro admite inglés y japonés (vía Configuraciones regionales admitidas para la localización de contenido), y alguien escribe en español, ¿se traducirá su publicación?
Sí. Todos los temas y publicaciones se traducirán al inglés y al japonés, independientemente del idioma en que estén escritos.

Si se edita la publicación original, ¿se vuelve a traducir?
Sí, con un máximo de 2 veces por día. Cuando se edita una publicación, se envía a re-traducción después de un retraso igual al mayor de 5 minutos o el SiteSetting.editing_grace_period para tener en cuenta las ediciones ninja. Los usuarios autorizados en grupos permitidos para localización de contenido tienen la opción de enviar una publicación a re-traducir inmediatamente.

¿Se eliminarán las traducciones si cambio el Agente o el LLM?
No, las traducciones generalmente persistirán a través de los cambios de configuración a menos que se eliminen explícitamente usando el elemento del menú de publicaciones o el compositor de traducciones.


24 Me gusta
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

¿Hay alguna recomendación para hacer esto en bloque para las categorías existentes? En el peor de los casos, ¿quizás a través de la API?

2 Me gusta

Hmm, gran pregunta. Me aseguraré de que la documentación de la API se actualice para el punto final de actualización de categorías. :memo:

4 Me gusta

¿Habrá soporte para moderadores por idioma? Estoy pensando en meta, donde podría ser voluntario para revisar las publicaciones en un idioma específico y actualizarlas manualmente. Especialmente la documentación, que puede beneficiarse de algunos toques humanos. Pero dices que solo los moderadores pueden hacerlo, lo cual probablemente nunca seré.

3 Me gusta

Hmm buena sugerencia. Creo que eso se puede hacer pero tendremos que pensar en los detalles de cómo se puede configurar.

3 Me gusta

¿Cómo accedo a ella? ¿Podría proporcionar un comando, por favor?

¿Sidekiq tiene algún trabajo vinculado? ¿Es posible activarlo manualmente?

1 me gusta
2 Me gusta

Para añadir a la publicación de Moin de arriba, es solo SiteSetting. ai_translation_backfill_hourly_rate una vez que acceda a la consola. El trabajo se ejecuta cada cinco minutos y limita la tasa en consecuencia.

3 Me gusta

Veo que la localización ya está disponible en la documentación. ¡Gracias @nat!

3 Me gusta

¡Eso es maravilloso, felicitaciones al equipo! Lo estoy probando ahora mismo y compartiré mis pensamientos y mi experiencia general.

Echamos de menos el esperanto en la lista; ¿se puede añadir ‘simplemente’ o primero debe integrarse en discourse-languages?

Vaya, estás al tanto. Estaba a punto de informar aquí. :laughing:

Sí, algo así. Queremos una experiencia de localización completa donde los controles (botones, etiquetas, etc.) se traduzcan correctamente y de forma suficiente (el 70% estaría muy bien) a través de Crowdin (ver Translations - Discourse Meta), y con eso podremos ofrecer soporte al idioma.

2 Me gusta

¿Funciona la localización de contenido con las Categorías de Documentación? Me parece que el contenido de la barra lateral no se está traduciendo aunque localice el tema del índice.

También noté un comportamiento extraño. Cuando veo un tema localizado en el idioma original y actualizo, cambia a la versión localizada. Tengo que volver a cambiar manualmente a la versión original.

3 Me gusta

Oh, qué gran acierto, sí que no está funcionando todavía, ¡pero es algo que @nat seguirá!

Me pregunto si esto es un catalizador para crear una mejor abstracción / modelo de datos para los enlaces de documentos de la barra lateral.

2 Me gusta

Sí, es correcto: hay muchos lugares en Discourse que necesitarán traducción explícita, así que los estoy registrando a medida que surgen. Más recientemente, también localizamos las notificaciones para los títulos de los temas. Este es un ejemplo de un tema de características que creé: Show translated user bios.

Crearé un nuevo tema y te mencionaré para asegurarnos de cubrir todas las bases en la barra lateral.

EDITAR: @tvavrda cubierto aquí: Translate sidebar documentation links. Por favor, échale un vistazo y mira si tiene sentido.

¿A qué te refieres con “volver a cambiar”?

¿Te importaría compartir una grabación de video (incluye la barra de direcciones) la próxima vez que suceda? :folded_hands:t2: Siéntete libre de enviarme un mensaje privado para este caso si el contenido no es adecuado en público. Además, ¿estabas conectado? Técnicamente, estas cosas se rastrean mediante cookies, así que es un poco desconcertante para mí.

1 me gusta

Te envié un video.

Otra observación: no puedo ver las diferencias del contenido traducido, ¿verdad? Eso podría ser útil si hay actualizaciones. No es súper importante, pero tendría sentido, supongo.

Y otra más: los enlaces entrantes debajo del tema no muestran un nombre de tema localizado.

Y una pregunta: ¿cuál es el propósito de localizar las descripciones de las categorías en la configuración de la categoría? La descripción de la categoría debería provenir de la versión localizada del tema “Acerca de”, ¿no? La versión localizada no admite markdown, por lo que no puedo usar un enlace, lo cual me gustaría.

1 me gusta

Bueno… el componente antiguo GitHub - discourse/discourse-docs-sidebar en realidad respeta la localización :slight_smile: Temporalmente cambié a ese.

Sí, esto actualmente tampoco es compatible y sería una tarea bastante ardua.

Tenemos un pequeño indicador de color especial (similar al indicador de ediciones de publicaciones al lado) cuando una traducción puede estar desactualizada, ya que la versión de la publicación ha cambiado.

1 me gusta

También veo contenido sin traducir en los resúmenes de los temas fijados. Así que veo una lista de temas en el idioma traducido, pero el resumen del tema fijado muestra el original.

1 me gusta

Podemos hacer o arreglar traducciones manualmente, pero ¿podemos activar manualmente la compilación de traducciones? Algo así como un trabajo bajo demanda.

Lo que estoy pensando es que he permitido la traducción de temas de hace un año. Pero si ese año se cuenta desde la fecha actual, ese límite se moverá todo el tiempo hacia el contenido ya traducido. Pero la mayor demanda es contenido valioso más antiguo al que me gustaría llegar rápido y sin acciones masivas bastante lentas.

Tengo curiosidad, ¿alguien tiene cifras de costos después de activar las traducciones? Nuestro sitio ha existido por un tiempo y, aunque me gustaría traducir todo el sitio si es posible, el costo es definitivamente una preocupación. Así que si alguien tiene una idea aproximada del costo según su experiencia, por ejemplo, 1000 publicaciones resultan en un costo de $1, eso ayudaría enormemente a tener una idea del costo aproximado.

¿La localización del contenido se hace una vez y luego se almacena en algún lugar, es decir, no bajo demanda? Si es así, ¿hay algo que me impida iniciar Ollama y algún LLM de código abierto en mi escritorio como Llama 3 o Deepseek 3 y simplemente dejar que el trabajo se ejecute hasta que termine?

Editar: Supongo que podría funcionar para reducir el costo inicial de traducción, pero no funcionará para publicaciones más nuevas a menos que uno decida mantener el LLM local funcionando perpetuamente.