Localisation de contenu : manuelle et automatique avec Discourse AI

Dans ce sujet, nous vous guiderons à travers les fonctionnalités de localisation du contenu et 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 du wiki :backhand_index_pointing_right:t2:

Localiser le contenu de votre communauté

Une version mise à jour de Discourse (3.5.0.beta7-dev) vous donne accès à plusieurs fonctionnalités de localisation configurables à l’adresse :

  • <votre-url-site>/admin/site_settings/category/content_localization
Nouvelle localisation du contenu dans les paramètres du site 📸

Obtenir des informations sur vos utilisateurs

Tout d’abord, il est bon de recueillir quelques informations sur votre communauté. La requête Data Explorer 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 d'exemple de Data Explorer

Définir les locales prises en charge par votre communauté

Grâce aux informations ci-dessus, nous sommes maintenant mieux informés sur les locales que votre communauté devrait prendre en charge.

Dans <votre-url-site>/admin/site_settings/category/content_localization, vous pouvez sélectionner les locales à prendre en charge.

  • Content localization enabled - active la fonctionnalité qui remplace le contenu utilisateur écrit à l’origine par du contenu localisé. Lisez la suite pour connaître les modes automatique et manuel de localisation.
  • Content localization supported locales - la liste des langues prises en charge par votre site
  • Content localization crawler param - abordé dans la section des robots ci-dessous
  • Content localization language switcher - abordé juste après
Liste des locales dans les paramètres du site 📸

L’activation du paramètre suivant Content localization language switcher 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

Visualiser le contenu localisé


Sujet de bienvenue localisé sur meta.discourse.org

Pour les lecteurs de contenu localisé (tous les visiteurs du site), ils peuvent survoler l’indicateur à côté de la date du message pour voir la langue originale du message. Cet indicateur n’apparaît que si le message n’est pas dans leur langue.

Si un utilisateur souhaite ne voir que le contenu original, il peut utiliser le basculement au-dessus de la chronologie du sujet pour désactiver les localisations pour l’ensemble du site.

Traductions automatiques avec Discourse AI :sparkles:

Discourse AI est la vitamine essentielle pour la fonctionnalité de localisation et élimine le besoin de traductions manuelles.

En tant qu’administrateur, vous voudrez vous rendre dans notre nouvelle section des fonctionnalités IA pour la Traduction.

Fonctionnalités Discourse AI dans les paramètres d'administration 📸

Faites défiler vers le bas dans /admin/plugins/discourse-ai/ai-features

Pour couvrir certains paramètres et recommandations importants :

  • AI translation backfill hourly rate - ce paramètre est défini par défaut sur 50. En supposant un taux de 50, votre site traduira 50 messages, 50 sujets et 50 catégories par heure, vers les locales que vous avez définies dans Content localization supported locales. Gardez ce nombre bas au début.
  • AI translation target categories - par défaut, aucune catégorie n’est sélectionnée. Seul le contenu des catégories sélectionnées sera traduit. Les sous-catégories doivent être ajoutées séparément. Laissez vide pour désactiver la traduction des sujets dans les catégories.
  • AI translation personal messages - par défaut sur none. Contrôle quels messages personnels sont traduits. ‘none’ désactive la traduction des MP. ‘group’ traduit uniquement les MP de groupe. ‘all’ traduit tous les MP.
  • AI translation include bot content - par défaut sur false. Lorsqu’il est activé, les messages des utilisateurs bot (user id < 0) seront également traduits. Par défaut, le contenu des bots est exclu de la traduction.
  • AI translation max post length - par défaut sur 10000. Il s’agit d’une mesure de sécurité qui empêche la traduction des messages dépassant une certaine longueur.
  • AI translation backfill max age days - par défaut sur 5. Cela signifie que les sujets et messages plus anciens que 5 jours ne seront pas traduits. Vous pouvez augmenter ce nombre pour traduire tous les sujets et messages.
  • AI translation post raw translator agent (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 finement adapté à la langue ou au vocabulaire que vous préférez.

Vous pouvez consulter AI bot - Agents pour savoir comment configurer des agents appropriés et affiner les prompts pour chaque fonction.

Progression de la traduction

Vous trouverez plus d’informations sur la progression des traductions automatiques dans le graphique de progression de la traduction sur /admin/plugins/discourse-ai/ai-translations

Ce graphique apparaîtra si :

  • tous les agents de traduction ont un LLM valide
  • discourse ai enabled :check_mark:
  • ai translation enabled :check_mark:
  • content localization supported locales est rempli
  • ai translation backfill max age days est supérieur à 0
  • ai translation backfill hourly rate est supérieur à 0

Localisation manuelle

Comme la localisation est une fonctionnalité de base 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 les modérateurs sont configurés pour modifier les localisations.

Groupes autorisés à la localisation dans les paramètres du site 📸


Paramètre du site admin pour la localisation du contenu

Actuellement, nous disposons de localisations pour le contenu des messages, le titre du sujet, le nom de la catégorie, la description de la catégorie et les balises. 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 :

Endroits 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 “Localizations” sur la gauche.

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

Localisation des sujets et des messages

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

Il existe certains paramètres préalables :

  • Assurez-vous que votre utilisateur fait partie des content localization allowed groups
  • Le bouton addTranslation est automatiquement ajouté au post menu et aux post menu hidden items lorsque Content localization enabled est activé. Cela permet à l’icône :globe_with_meridians: d’apparaître dans le menu des messages pour les utilisateurs appartenant aux content localization allowed groups.
  • Content localization allow author localization est activé par défaut et permet aux auteurs de messages de localiser leur propre contenu en utilisant le même menu de messages que ci-dessus.
3 paramètres du site 📸


:backhand_index_pointing_down:t2:

Encore une fois, la liste des langues localisables se trouve dans le paramètre Content localization supported locales mentionné ci-dessus.

Modifier un message localisé

Si l’utilisateur consulte un message localisé et souhaite le modifier, une boîte de dialogue apparaîtra pour demander quelle version il préfère éditer :

L’éditeur approprié apparaîtra après la décision.

Supprimer la traduction d’un message pour une locale donnée

Si vous avez suivi correctement les instructions ci-dessus concernant le paramètre post menu, vous devriez pouvoir effectuer les opérations suivantes si vous appartenez aux Content localization allowed groups :

Robots (Crawlers)

Vous pouvez permettre aux robots d’accéder à votre site dans les différentes langues que vous avez configurées dans Content localization supported locales. Le paramètre du site se trouve dans la section “Content localization” sous Content localization crawler param :

Le résultat est que les robots peuvent voir ce qui suit, où chaque langue prise en charge a un hreflang correspondant dans l’en-tête de chaque sujet :

Pour une preuve/vérification supplémentaire

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

FAQ

J’ai tout configuré, mais la traduction automatique ne fonctionne toujours pas pour moi
Vérifiez si vous avez configuré les éléments suivants :

  • Content localization supported locales contient au moins une langue
  • Content localization enabled est :check_mark:
    • Allow user locale est :check_mark: (activé par défaut)
    • Set locale from cookie est :check_mark:
  • Ai translation enabled est :check_mark:
  • Ai translation backfill max age days n’est pas 0
  • Ai translation backfill hourly rate est supérieur à 12
  • Vous devez avoir un LLM fonctionnel configuré pour chaque agent de traduction

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

Chaque message est-il traduit ?
Si AI translation backfill limit to public content est :check_mark: , tous les messages des catégories publiques seront traduits. Par défaut, les messages des bots (user id < 0) sont exclus sauf si AI translation include bot content est activé.

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

Si mon forum prend en charge l’anglais et le japonais (via Content localization supported locales), 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 d’écriture.

Si le message original est modifié, est-il re-traduit ?
Oui – avec un maximum de 2 fois par jour. Lorsqu’un message est modifié, il est envoyé pour re-traduction après un délai égal au plus grand entre 5 minutes et le SiteSetting.editing_grace_period pour tenir compte des modifications furtives. Les utilisateurs autorisés dans les Content localization allowed groups ont la possibilité d’envoyer un message pour re-traduction immédiatement.

Les traductions seront-elles supprimées si je change l’agent ou le LLM ?
Non, les traductions persistent généralement lors des changements de paramètres, sauf si elles sont explicitement supprimées via l’élément de menu de message ou l’éditeur de traduction.


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

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.