Estructurando una comunidad multilingüe

:bookmark: Esta guía explica diferentes enfoques para organizar un foro Discourse en una comunidad multilingüe, incluyendo los pros y contras de cada método.

:person_raising_hand: Nivel de usuario requerido: Administrador

Discourse ofrece varias formas de estructurar tu sitio para una comunidad multilingüe. Esta guía explorará los enfoques más comunes y sus ventajas y desventajas.

:spiral_notepad: Este tema ya no es la fuente de los enfoques recomendados para estructurar una comunidad multilingüe, ya que ahora recomendamos el uso de las funciones integradas de Localización de contenido en el núcleo de Discourse, con traducciones automáticas opcionales mediante el plugin Discourse AI. Para obtener más detalles, consulta Content Localization - Manual and Automatic with Discourse AI.

Usar categorías para la separación por idioma

Categoría “Otros idiomas” con subcategorías

Un enfoque consiste en crear una categoría principal llamada “Otros idiomas” con subcategorías para idiomas específicos.

Cómo implementarlo:

  1. Crea una nueva categoría llamada “Otros idiomas”.
  2. Añade subcategorías para cada idioma que quieras soportar.
  3. Anima a los usuarios a publicar en la subcategoría del idioma correspondiente.

Ventajas:

  • Separación limpia entre idiomas.
  • Posibilidad de usar etiquetas restringidas por categoría para una organización adicional dentro de cada idioma.

Desventajas:

  • Los usuarios multilingües deben seguir varias categorías con contenido similar.
  • Puede generar silos de contenido basados en el idioma.

Categorías de nivel superior separadas para cada idioma

Otro enfoque consiste en crear categorías de nivel superior separadas para cada idioma soportado.

Cómo implementarlo:

  1. Crea una nueva categoría para cada idioma que quieras soportar.
  2. Utiliza un componente de tema como Custom Header Links para añadir enlaces de cambio de idioma en la cabecera.

Ventajas:

  • Distinción clara entre las secciones por idioma.
  • Navegación sencilla para los usuarios que solo hablan un idioma.

Desventajas:

  • Puede crear una experiencia comunitaria fragmentada.
  • Difícil para los usuarios multilingües seguir las discusiones entre idiomas.
  • Puede generar silos de contenido basados en el idioma.

Usar etiquetas para la identificación del idioma

Etiquetas de idioma a nivel de foro

Este enfoque consiste en crear etiquetas para cada idioma soportado y animar a los usuarios a etiquetar sus publicaciones en consecuencia.

Cómo implementarlo:

  1. Crea etiquetas para cada idioma que quieras soportar (por ejemplo, #español, #inglés, #francés).
  2. Anima a los usuarios a añadir la etiqueta de idioma correspondiente al crear temas.
  3. Opcionalmente, usa emojis en los nombres de las etiquetas para una distinción visual.

Ventajas:

  • No se necesitan categorías separadas.
  • Los usuarios multilingües pueden seguir fácilmente todo el contenido.
  • Flexible para temas que pueden involucrar varios idiomas.

Desventajas:

  • Depende del cumplimiento de los usuarios para una etiquetación precisa.
  • Puede ser menos intuitivo para los usuarios acostumbrados a la navegación basada en categorías.

Usar instancias separadas de Discourse

Para comunidades con grupos de idiomas distintos, se puede considerar el uso de instancias separadas de Discourse para cada idioma.

Cómo implementarlo:

  1. Configura una instancia separada de Discourse para cada idioma.
  2. Usa subdominios o dominios separados para cada instancia (por ejemplo, es.ejemplo.com, fr.ejemplo.com).
  3. Enlaza entre instancias en la cabecera o el pie de página utilizando un componente de tema como Custom Header Links.

Ventajas:

  • Separación completa de contenido y usuarios por idioma.
  • Posibilidad de personalizar cada instancia para su comunidad específica de idioma.

Desventajas:

  • Más complejo de gestionar múltiples instancias.
  • Difícil para los usuarios multilingües participar en comunidades de diferentes idiomas.
  • Posibilidad de discusiones duplicadas y una comunidad fragmentada.

Consideraciones adicionales

Localización de categorías y etiquetas

Discourse ahora soporta la localización de nombres de categorías, descripciones de categorías y nombres de etiquetas mediante la función integrada de Localización de contenido. Habilita content localization enabled y configura content localization supported locales en la configuración de tu sitio. Los grupos autorizados pueden proporcionar traducciones manuales, o se pueden configurar traducciones automáticas mediante el plugin Discourse AI.

Preferencias de idioma del usuario

Discourse tiene configuraciones de localización integradas, como allow user locale, set locale from accept language header, set locale from cookie y set locale from param. Estas permiten a los usuarios establecer su idioma preferido para la interfaz. Cuando la Localización de contenido está habilitada, los usuarios verán automáticamente el contenido localizado según su preferencia de localización.

Selector de idioma

La configuración content localization language switcher puede mostrar un selector de idioma en la cabecera, permitiendo a los visitantes (incluidos los usuarios anónimos) cambiar entre los idiomas soportados.

Funcionalidad de búsqueda

Asegúrate de que los usuarios puedan buscar en todos los idiomas o filtrar los resultados por idiomas específicos.

Recursos adicionales

20 Me gusta

I think https://community.wd.com have quite an elegant version of the “other languages” category. They use several such categories for different languages and added a language bar above the header (via css I suppose, but they forgot to add it to the mobile css).

They even managed to somehow exclude the language categories from the “all categories” page (also via CSS?) And also the “latest” page seems free of non-english topics, but that may be because there are non at the moment.

However, another downside of this solution is clearly that the illusion of beeing on, for example, a German WD forum is shattered when you click on “latest” because what you get are not the latest German posts.

8 Me gusta

Is there anybody who uses completely separate instances of Discourse for multi-lingual communities? This seemed like the most obvious way to do it (especially since you can set each language-subcommunity to default to use the same language in the Discourse UI).

2 Me gusta

I’m setting them up, but I do:

https://en.ancap.ch
https://br.ancap.ch
https://jp.ancap.ch
https://th.ancap.ch

and so on… they are in a multisite configuration

I prefer that each one has a link to each others in the Header (the https://br.ancap.ch one has)

6 Me gusta

I like your approach. How you did it?

1 me gusta

There’s nothing special to @swfsql’s approach.

  1. Set up a dedicated Discourse forum for each language. No need for a multisite configuration.
  2. Use a theme component like Custom Header Links or Brand header theme component to create the menu you need.
6 Me gusta

I would like to share some ideas about how to turn Discourse in a truly and multilingual space, equitable to speakers of dozens of languages, some of them multilingual, some of them not, some fluent in English some of them not, or not at all. In our organization we might be able to invest in the development of these features, after a good technical and community review.

The idea would be to use language tags with some customization. Posters would be able to tag their post with the relevant language so as to keep topics searchable by language.

Goal

The goal is to offer a discussion space that speakers of any language (and language combinations) can feel as theirs, as opposed to an English forum with a multilingual corner or a forum split in many languages becoming effectively many separate forums.

Language tags

For this, the main building block would be a tag specific to languages. This tag would be required for all topics, and it would default to English. Topics in non-English languages would be tagged accordingly.

Languages displayed

By default, the topic would display topics in all languages. Admins could configure as default just one language, a combination of languages, keep all languages…

Through a language bar that pulls from the tag titles, users could see the topics available in a specific language.

Language user preferences

Through browser detection, language chosen by the user during registration, user preferences, and other means to be determined, the system would decide which language(s) are displayed to a user.

Again, the default would be English and admins could define other combinations. The user could always go to their user preferences and set the language(s) they want to see / ignore. It would be of further use if the users could set the default language of posting, to save them from selecting a language tag each time.

Localization of categories and tags

Tags, categories and their descriptions could be localized.

Search filter

Users could search in all languages or filter for their languages defined in their profiles.

Progressive implementation

Not all these features would be deployed at once, and maybe not all these features need to be in just one plugin. It would be preferred to test and build incrementally, and start with a minimum viable product that a multilingual community could start testing.

Does this approach sound like the right one? Are there other ideas for how we could more effectively build the multilingual element of this discussion space?

9 Me gusta

¿Qué es lo que hace que una comunidad se sienta como una comunidad? En un medio predominantemente basado en texto, poder entender la comunicación escrita de los demás miembros parece clave; es decir, me pregunto si es posible superar completamente los dos escollos que mencionas (‘silos’ o ‘tokenismo’) en un medio mayoritariamente basado en texto (sin una traducción automática perfecta).

Una comunidad que me viene a la mente es https://discourse.mozilla.org

Actualmente tenemos la opción de exigir un cierto número de etiquetas en una publicación dentro de una categoría; véase The option to enforce tagging (Configuración de categoría “Número mínimo de etiquetas requeridas en un tema”).

Sin embargo, este caso de uso se beneficiaría de una configuración ligeramente diferente: “Requerir etiqueta de un grupo de etiquetas”. La forma de usarla sería:

  • Crear un tag_group con una lista definida de idiomas
  • Exigir que cada nuevo tema tenga al menos una etiqueta añadida de este grupo antes de publicarse.

@HAWK, tengo curiosidad por saber si algunos de los otros casos de uso para este tipo de configuración que mencionaste en el tema vinculado se beneficiarían de algo similar (o si están completamente cubiertos por la configuración existente “Número mínimo de etiquetas requeridas en un tema”).

Esto podría hacerse de una manera que resulte generalmente útil: un componente de navegación por etiquetas que muestre las etiquetas de un grupo específico.

Discourse permite actualmente que el usuario configure su localización (activada mediante la configuración del sitio allow user locale) y realiza una detección automática de la localización, activada por la configuración del sitio set locale from accept language header. Hay tres contextos de detección automática:

  • Invitados (navegador y encabezados)
  • Registros (lo mismo)
  • Invitaciones (lo mismo) - ¿quizás haya un problema con esto? (ver) (@schungx?)

Quizás las dos mejoras que podrían implementarse aquí serían:

  • Añadir una configuración para permitir que un usuario establezca manualmente su localización en el formulario de registro
  • Añadir un ‘cambiador de localización’ para invitados, similar al de Facebook (véase la barra inferior de la página de registro). De hecho, he creado algo así para un proyecto diferente, pero aún no lo he convertido en un plugin.

Encuentro este punto realmente interesante y creo que definitivamente valdría la pena intentarlo. Las etiquetas, categorías y descripciones de categorías son lo que un usuario suele leer primero antes de entrar en un tema real. A menudo contribuyen a la sensación del usuario sobre la comunidad. Si ven palabras y descripciones con las que se identifican, es más probable que se identifiquen con la comunidad en sí. Así que incluso si hay un idioma diferente una vez que el usuario entra en el tema, su interés y su sentido de la comunidad ya están preparados.

También es más fácil localizar las descripciones de categorías y las etiquetas que localizar temas completos. Técnicamente, esto es viable, pero aún no se ha probado. Ver más. @erlend_sh ¿Conoces algún trabajo adicional o ejemplos al respecto?

Si todas las etiquetas de idioma están en un único tag_group, el paso a seguir sería añadir un filtro de etiquetas específico para grupos de etiquetas en la página de búsqueda avanzada.

Para resumir los cambios que he mencionado anteriormente:

  • Una configuración de sitio o categoría “Requerir etiqueta de un grupo de etiquetas”
  • Un componente de navegación por etiquetas que muestre etiquetas de un grupo específico
  • Una configuración para permitir que un usuario establezca manualmente su localización en el formulario de registro
  • Un ‘cambiador de localización’ para invitados
  • Localización de etiquetas, nombres de categorías y descripciones de categorías
  • Añadir un filtro de etiquetas específico para grupos de etiquetas en la página de búsqueda avanzada
10 Me gusta

Invitaciones (ibid) - ¿quizás hay un problema con esto? (ver 1) (@schungx?)

Por lo que puedo ver, los correos electrónicos de invitación se enviarán en el idioma predeterminado del sitio, pero el usuario obtendrá su propia configuración regional al iniciar sesión.

Actualmente no hay forma de especificar el idioma de las invitaciones…

2 Me gusta

No se me ocurre nada en este momento, pero estamos viendo cada vez más comunidades multilingües, así que si eso va a simplificar ese caso de uso en particular, creo que es una solicitud legítima.

8 Me gusta

@HAWK También apoyo esta función. Puedo ver muchos usos para esto, además de requerir etiquetas de idioma. Por ejemplo, actualmente tenemos un grupo de etiquetas llamado “gestión de proyectos” con las etiquetas #idea, #alcance, #listo, #en-progreso, #celebrando, #evaluando, #hecho. Sería increíble poder obligar a las personas a etiquetar correctamente cada publicación que hagan con la etapa adecuada de gestión de proyectos dentro de ciertas categorías.

3 Me gusta

@neil, ¿qué opinas? ¿Cuánto trabajo implicaría hacer cumplir una etiqueta de un grupo de etiquetas específico?

Ten en cuenta que aún no hemos llegado a la regla de tres, pero sigo interesado en respuestas a lo anterior.

7 Me gusta

Esto sonaría interesante también para mi foro. Tenemos principalmente miembros de habla inglesa, pero también miembros de habla hispana. Siempre estamos traduciendo de un lado a otro. La idea de tener dos foros separados (en diferentes idiomas) no es lo que necesitamos. ¡Pero un sitio bilingüe con traducción automática - con idioma predeterminado especificado por el usuario - sería genial!

4 Me gusta

Sería sencillo añadir una forma de obligar a tener una etiqueta de un grupo de etiquetas. Supongo que en este caso (elegir un idioma) queremos hacer obligatorio exactamente una etiqueta, pero me imagino que a algunas personas les gustaría al menos una etiqueta (similar a la configuración de “Número mínimo de etiquetas requeridas en un tema”). Preferiría implementar “al menos una etiqueta de un grupo de etiquetas específico”, ya que podemos ver algo similar en acción en Car Talk, donde es posible que los usuarios etiqueten sus temas con todas las etiquetas de marcas y modelos de automóviles, pero eso no suele ocurrir. Además, en una comunidad multilingüe, a veces tiene sentido usar más de un idioma.

13 Me gusta

Sí, eso me suena inteligente.

6 Me gusta

Quizás la forma de hacerlo sería añadirlo como un mínimo numérico, en lugar de un booleano, para tener un control más granular y también dejar la puerta abierta para añadir un máximo.

4 Me gusta

¡Lo construí hoy! Es una configuración por categoría en la pestaña Etiquetas:

Una cosa que se puede mejorar es cómo saben las personas qué etiquetas tienen para elegir. Ahora mismo muestra el nombre del grupo de etiquetas, pero probablemente debería listar las etiquetas, o las etiquetas más populares del grupo en caso de que haya demasiadas para listar.

@debryc @angus ¿Qué opinan?

11 Me gusta

¡Esto es tan emocionante, Neil!

  1. Creo que la pantalla de configuración es perfecta.
  2. Estoy de acuerdo en que debe haber alguna indicación sobre qué etiquetas tienen para elegir.

Quizás en el menú desplegable de etiquetas del editor, se muestre primero el grupo de etiquetas y sus opciones, antes de mostrar otras etiquetas populares.

O tal vez, el mensaje de error incluya un mensaje que diga “elija una de las siguientes etiquetas antes de publicar”. ¡Los usuarios podrían hacer clic en el nombre de la etiqueta para añadirla!

5 Me gusta

Opté por este enfoque. Las etiquetas requeridas serán sugeridas por el campo de entrada de etiquetas si aún no se ha seleccionado ninguna.

6 Me gusta

Otra idea:
Para ser equitativo con múltiples idiomas, un usuario debe poder producir/expresar (texto fuente) en el idioma con el que se sienta más cómodo. Y el lector debe poder consumir/leer en el idioma con el que se sienta más cómodo (texto traducido). Para minimizar los problemas de pérdida en la traducción, sería beneficioso mostrar lado a lado tanto el texto fuente como el texto traducido. La versión base del texto traducido podría ser una versión traducida automáticamente. Y las versiones posteriores del texto traducido podrían ser mejoras aportadas por los usuarios. Al igual que en un wiki, los lectores podrían optar por ver versiones anteriores del texto traducido si sospechan problemas de pérdida en la traducción.

El usuario debe tener una forma rápida de elegir el idioma de consumo (para anular cualquier decisión tomada por el sistema o el administrador), por ejemplo, desde un menú desplegable de idiomas en la esquina superior derecha de la pantalla. Por ejemplo, un usuario invitado (no registrado) que habla inglés y viaja a China podría querer ver el texto en inglés, aunque la detección del navegador indique que el chino es el idioma local.

Me encanta esta idea de traducir etiquetas y categorías. Aunque algunos términos técnicos/científicos pueden no tener traducción y podrían necesitar permanecer en el idioma original.

3 Me gusta