Localisation du contenu : manuelle et automatique avec Discourse AI

Dans ce sujet, nous allons vous guider à travers les fonctionnalités de localisation du contenu et vous expliquer comment les activer. Ces fonctionnalités sont divisées en deux parties : ce qui est disponible par défaut dans Discourse ; et Discourse AI pour les traductions automatiques.

:warning: Pour un accès rapide aux sections pertinentes, utilisez les titres de wiki :backhand_index_pointing_right:t2:

Localiser le contenu de votre communauté

Discourse vous donne accès à plusieurs fonctionnalités de localisation configurables à l’adresse :

  • <your-site-url>/admin/site_settings/category/content_localization
Localisation du contenu dans les paramètres du site 📸

Préparation

Tout d’abord, il est bon d’obtenir quelques informations sur votre communauté via l’explorateur de données.

Locale via les préférences utilisateur

La requête suivante peut vous donner une idée du nombre d’utilisateurs qui ont peut-être défini leur locale dans /my/preferences/interface.

SELECT locale, count(*) as count
FROM users
WHERE (locale IS NOT null AND locale <> '')
GROUP BY locale
ORDER BY count DESC
Résultats exemples de l'Explorateur de données

D’où viennent vos utilisateurs

Une meilleure solution, si vous avez les événements de visualisation de page du navigateur activés (paramètre du site), est cette requête qui vous indique le pays d’origine de votre utilisateur :

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
Résultats exemples

Configuration

Grâce aux informations ci-dessus, vous êtes désormais mieux informé sur les locales que votre communauté devrait prendre en charge.

Dans <your-site-url>/admin/site_settings/category/content_localization, commencez à configurer cela.

  • Localisation du contenu activée - active la fonctionnalité qui remplace le contenu utilisateur écrit original par du contenu localisé. Lisez la suite pour les modes de localisation automatique (IA) et manuel (humain).
  • Locales prises en charge par la localisation du contenu - la liste des langues prises en charge par votre site
  • Paramètre de crawler de localisation du contenu - couvert dans la section crawlers ci-dessous
  • Sélecteur de langue de localisation du contenu - couvert juste ci-dessous
Liste des locales dans les paramètres du site 📸

Sélecteur de langue

L’activation du paramètre suivant Sélecteur de langue de localisation du contenu vous permet également de rendre votre communauté plus accessible aux utilisateurs non connectés en affichant la liste des langues que vous avez choisies dans la liste des locales prises en charge :

Sélecteur de langue en haut à droite de la page

Affichage du contenu localisé

Pour les lecteurs de contenu localisé (tous les visiteurs du site), ils peuvent passer le curseur sur l’indicateur à côté de la date du message pour afficher la langue d’origine du message. Cet indicateur n’apparaît que si le message n’est pas dans leur langue. Ils peuvent simplement cliquer sur l’indicateur pour voir également le message original.

Pour nos lecteurs connectés multilingues, ils peuvent indiquer qu’ils comprennent plusieurs langues, donc le contenu dans ces langues ne sera pas traduit.

Traductions automatiques avec Discourse AI :sparkles:

Discourse AI est essentiel pour la fonctionnalité de localisation, et supprime le besoin de faire des traductions manuelles.

En tant qu’administrateur, vous voudrez vous rendre dans notre zone dédiée de Discourse AI pour les Traductions. Cette zone dédiée couvre :

  • la progression de la traduction
  • les paramètres IA
  • les paramètres de langue de l’application

Pour couvrir certains paramètres et recommandations importants :

  • Taux horaire de remplissage de traduction IA - ce paramètre est par défaut à 50 - votre site traduira 50 messages, 50 sujets, 50 catégories, 50 balises par heure, vers les locales que vous avez définies dans Locales prises en charge par la localisation du contenu. Gardez ce nombre bas au départ.
  • Portée des catégories de traduction IA - par défaut Catégories publiques. Vous pouvez changer cela pour toutes les catégories, ou une sélection spécifique.
  • Messages personnels de traduction IA et Inclure le contenu des bots dans la traduction IA sont explicites.
  • Date de début du remplissage de traduction IA - cette valeur est vide par défaut. Si vous activez la fonctionnalité de traduction IA “aujourd’hui”, la date est automatiquement définie sur “aujourd’hui - 5 jours”
  • Agent de traduction brute de message IA (et autres agents) - Dans les communautés plus formelles, les administrateurs peuvent choisir de créer leur propre agent. Cela vous permet de définir un prompt plus adapté à la langue ou au vocabulaire que vous préférez.

Vous pouvez consulter AI bot - Agents sur la manière de configurer des agents appropriés et d’affiner les prompts pour chaque fonction.

Localisation manuelle

Comme la localisation est une fonctionnalité principale dans Discourse, nous vous fournissons la possibilité de remplir et de modifier les localisations manuellement au cas où les traductions automatiques avec Discourse AI ne seraient pas disponibles.

Par défaut, les administrateurs et modérateurs sont configurés pour modifier les localisations.

Actuellement, nous avons le contenu des messages, le titre du sujet, le nom de la catégorie, la description de la catégorie, le nom de la balise, la description de la balise, et les localisations de la barre latérale. Les sections suivantes vous montreront comment elles fonctionnent.

Localisation des catégories

Les catégories localisées sont visibles dans les zones suivantes, avec le nom et la description de la catégorie localisés :

Emplacements où les catégories sont localisées 📸
  1. Page d’accueil, barre latérale et menu déroulant des catégories
  1. Page des catégories
  1. Une catégorie spécifique avec des sous-catégories

En tant qu’administrateur, vous devriez pouvoir accéder aux paramètres de catégorie comme d’habitude, et trouver le nouvel élément de navigation “Localisations” à gauche.

Modification des localisations de catégorie dans les paramètres de catégorie 📸

Localisation des sujets et messages

À partir des captures d’écran ci-dessus dans Localisation des catégories, vous avez peut-être remarqué que les titres de sujets et les extraits étaient localisés.

Il y a quelques paramètres prérequis

  • Assurez-vous que votre utilisateur est dans groupes autorisés pour la localisation du contenu
  • Le bouton addTranslation est automatiquement ajouté au menu du message et aux éléments cachés du menu du message lorsque Localisation du contenu activée est activée. Cela permet au :globe_with_meridians: d’apparaître dans le menu du message pour les utilisateurs dans groupes autorisés pour la localisation du contenu.
  • Autoriser la localisation par l'auteur est activé par défaut, et permet aux auteurs de messages de localiser leur propre contenu en utilisant le même menu du message ci-dessus.
paramètre du menu du message

Modification d’un message localisé

Au cas où l’utilisateur verrait un message localisé, et voudrait modifier le message, une boîte de dialogue apparaîtra pour demander quelle version ils préfèrent modifier :

Le rédacteur approprié apparaîtra après avoir décidé.

Localisation personnalisée de la barre latérale

Les sections de la barre latérale qui sont “visibles pour tout le monde” montrent également des contrôles de traduction supplémentaires :

Crawlers

Vous pouvez permettre aux crawlers de voir votre site dans les diverses langues que vous avez configurées dans Locales prises en charge par la localisation du contenu. Le paramètre du site réside dans la section “Localisation du contenu” en tant que Paramètre de crawler de localisation du contenu :

Le résultat serait que les crawlers peuvent voir ce qui suit, où chaque langue prise en charge a un hreflang correspondant dans la tête de chaque sujet :

Pour une preuve / vérification supplémentaire

Nous avons testé cette fonctionnalité de manière intensive, et pouvons confirmer que nous sommes correctement indexés après l’introduction de X nombres de langues prises en charge

FAQ

J’ai configuré les choses, mais la traduction automatique ne fonctionne toujours pas pour moi
Confirmez si vous avez configuré ces éléments

  • Locales prises en charge par la localisation du contenu a au moins une langue
  • Localisation du contenu activée est :check_mark:
    • Autoriser la locale utilisateur est :check_mark: (activé par défaut)
    • Définir la locale depuis un cookie est :check_mark:
  • Traduction IA activée est :check_mark:
  • Vous devez avoir un LLM fonctionnel défini pour chaque agent de traduction

Si tout le reste échoue, vous pouvez activer SiteSetting.ai_translation_verbose_logs.

Les traductions automatiques sont-elles sauvegardées, ou sont-elles envoyées au LLM chaque fois que quelqu’un consulte un sujet ?
Les traductions sont sauvegardées, chaque message n’est envoyé qu’une fois par langue et les traductions sont réutilisées.

Si mon forum prend en charge l’anglais et le japonais (via Locales prises en charge par la localisation du contenu), et que quelqu’un écrit en espagnol, son message sera-t-il traduit ?
Oui. Tous les sujets et messages seront traduits en anglais et en japonais, quelle que soit la langue écrite.

Si le message original est modifié, est-il retraduit ?
Oui – avec un maximum de 2 fois par jour. Lorsqu’un message est modifié, il est envoyé pour une retraduction après un délai supérieur à 5 minutes ou à SiteSetting.editing_grace_period pour tenir compte des modifications ninja. Les utilisateurs autorisés dans groupes autorisés pour la localisation du contenu ont l’option d’envoyer un message pour une retraduction immédiate.

Les traductions seront-elles supprimées si je change l’Agent ou le LLM ?
Non, les traductions persisteront généralement à travers les changements de paramètres à moins d’être explicitement supprimées en utilisant l’élément du menu du message ou le rédacteur de traduction.


25 « J'aime »
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

Y a-t-il des recommandations pour le faire en masse pour les catégories existantes ? Au pire, peut-être via l’API ?

2 « J'aime »

Excellente question. Je veillerai à ce que la documentation de l’API soit mise à jour pour le point de terminaison de mise à jour de catégorie. :memo:

4 « J'aime »

Y aura-t-il un support pour un modérateur par langue ? Je pense à meta – où je pourrais faire du bénévolat pour vérifier les publications dans une langue spécifique et les mettre à jour manuellement. Surtout la documentation qui pourrait bénéficier de quelques touches humaines. Mais vous dites que seuls les modérateurs peuvent le faire, ce que je ne serai probablement jamais.

3 « J'aime »

Bonne suggestion. Je pense que cela peut être fait, mais nous devrons réfléchir aux détails de la mise en place.

3 « J'aime »

Comment y accéder ? Pourriez-vous fournir une commande s’il vous plaît ?

Sidekiq a-t-il un job lié ? Est-il possible de le déclencher manuellement ?

1 « J'aime »
2 « J'aime »

Pour ajouter au message de Moin ci-dessus, il suffit d’utiliser SiteSetting. ai_translation_backfill_hourly_rate une fois que vous êtes dans la console. Le travail s’exécute toutes les cinq minutes et limite le débit en conséquence.

3 « J'aime »

Je vois que la localisation est maintenant disponible dans la documentation. Merci @nat !

3 « J'aime »

C’est merveilleux, félicitations à l’équipe ! Je suis en train de le tester et je partagerai mes réflexions et mon expérience globale.

L’espéranto nous manque dans la liste ; peut-il simplement être ajouté, ou doit-il d’abord être intégré à discourse-languages ?

Wow, vous êtes à la pointe – j’étais sur le point de le signaler ici. :rire :

Oui, en quelque sorte. Nous voulons une expérience de localisation complète où les contrôles (boutons, étiquettes, etc.) sont traduits correctement et suffisamment (70% serait vraiment bien) via Crowdin (voir Translations - Discourse Meta), et avec cela, nous pouvons fournir un support à la langue.

2 « J'aime »

La localisation du contenu fonctionne-t-elle avec les catégories de documentation ? Il me semble que le contenu de la barre latérale n’est pas traduit, même si je localise le sujet d’index.

J’ai également remarqué un comportement étrange. Lorsque je consulte un sujet localisé dans la langue d’origine et que je le rafraîchis, il passe à la version localisée. Je dois ensuite repasser manuellement à la version d’origine.

3 « J'aime »

Ah, excellente prise, oui, ça ne fonctionne pas encore, mais @nat fera le suivi !

Je me demande si c’est un catalyseur pour trouver une meilleure abstraction / un meilleur modèle de données pour les liens de documentation de la barre latérale.

2 « J'aime »

Oui, c’est exact – il y a de nombreux endroits dans Discourse qui nécessiteront une traduction explicite, je les enregistre au fur et à mesure. Plus récemment, nous avons également localisé les notifications pour les titres de sujets. Ceci est un exemple de sujet de fonctionnalité que j’ai créé - Show translated user bios.

Je vais créer un nouveau sujet et vous @mentionner afin de nous assurer que nous couvrons toutes les bases dans la barre latérale.

EDIT : @tvavrda couvert ici - Translate sidebar documentation links. Veuillez jeter un œil et voir si cela a du sens.

Qu’entendez-vous par “repasser” ?

Pourriez-vous partager un enregistrement vidéo (incluant la barre d’adresse) la prochaine fois que cela se produira ? :folded_hands:t2: N’hésitez pas à m’envoyer un message privé pour ce cas si le contenu n’est pas adapté au public. De plus, étiez-vous connecté ? Techniquement, ces choses sont suivies par des cookies, donc c’est un peu déroutant pour moi.

1 « J'aime »

Je vous ai envoyé une vidéo.

Une autre observation : je ne peux pas voir les différences du contenu traduit, n’est-ce pas ? Cela pourrait être utile s’il y a des mises à jour. Ce n’est pas très important, mais cela aurait du sens, je suppose.

Et une autre : les liens retour sous le sujet n’affichent pas le nom du sujet localisé.

Et une question : quel est l’intérêt de localiser les descriptions de catégories dans les paramètres de catégorie ? La description de la catégorie devrait provenir de la version localisée du sujet “À propos”, n’est-ce pas ? La version localisée ne prend pas en charge le markdown, je ne peux donc pas utiliser de lien, ce que j’aimerais faire.

1 « J'aime »

Eh bien… l’ancien composant GitHub - discourse/discourse-docs-sidebar respecte en fait la localisation :slight_smile: Je suis temporairement passé à celui-ci.

Oui, ce n’est actuellement pas pris en charge non plus et ce serait une entreprise considérable.

Nous avons un petit indicateur de couleur spéciale (similaire à l’indicateur de modification de message à côté) lorsqu’une traduction peut être obsolète car la version du message a changé.

1 « J'aime »

Je vois également du contenu non traduit dans les résumés des sujets épinglés. Je vois donc une liste de sujets dans la langue traduite, mais le résumé du sujet épinglé affiche l’original.

1 « J'aime »

Nous pouvons effectuer ou corriger manuellement des traductions, mais pouvons-nous déclencher manuellement la génération de traductions ? Une sorte de tâche à la demande.

Ce que je pense, c’est que j’ai autorisé la traduction pour des sujets vieux d’un an. Mais si cette année est comptée à partir de la date actuelle, cette limite se déplacera constamment vers le contenu déjà traduit. Mais la plus grande demande concerne le contenu ancien et précieux que j’aimerais atteindre rapidement et sans actions groupées assez lentes.

Je suis curieux, quelqu’un a-t-il des chiffres sur les coûts après avoir activé les traductions ? Notre site existe depuis un certain temps, et bien que j’aimerais traduire tout le site si possible, le coût est une préoccupation majeure. Donc, si quelqu’un a une idée approximative du coût d’après son expérience, par exemple, 1000 publications résultant en un coût de 1 $, cela aiderait énormément à obtenir une idée du coût approximatif.

La localisation du contenu est-elle effectuée une seule fois puis stockée quelque part, c’est-à-dire pas à la demande ? Si oui, y a-t-il quelque chose qui m’empêche de lancer Ollama et un LLM open source sur mon bureau comme Llama 3 ou Deepseek 3 et de laisser le travail s’exécuter jusqu’à ce qu’il soit terminé ?

Edit : Je suppose que cela pourrait fonctionner pour réduire le coût initial de traduction, mais cela ne fonctionnera pas pour les nouvelles publications à moins que l’on décide de maintenir le LLM local en fonctionnement perpétuellement.