Inhaltslokalisierung – Manuell und automatisch mit Discourse AI

In diesem Thema werden wir dich durch die Funktionen zur Inhaltslokalisierung führen und erklären, wie du sie aktivieren kannst. Die Funktionen sind in zwei Teile unterteilt: Was standardmäßig in Discourse verfügbar ist; und Discourse AI für automatische Übersetzungen.

:warning: Für schnellen Zugriff auf die relevanten Abschnitte verwende die Wiki-Überschriften :backhand_index_pointing_right:t2:

Lokalisierung des Community-Inhalts

Discourse bietet dir Zugang zu mehreren Lokalisierungsfunktionen, die unter folgendem Link konfiguriert werden können:

  • <deine-site-url>/admin/site_settings/category/content_localization
Lokalisierung in den Site-Einstellungen 📸

Vorbereitung

Zunächst ist es sinnvoll, einige Informationen über deine Community über den Data Explorer zu erhalten.

Locale über Benutzereinstellungen

Die folgende Abfrage gibt dir einen Überblick darüber, wie viele Benutzer ihre Locale in /my/preferences/interface festgelegt haben.

SELECT locale, count(*) as count
FROM users
WHERE (locale IS NOT null AND locale <> '')
GROUP BY locale
ORDER BY count DESC
Beispielergebnisse aus dem Data Explorer

Woher deine Benutzer kommen

Eine bessere Lösung, wenn du Browser pageview events enabled (Site-Einstellung) aktiviert hast, ist diese Abfrage, die dir zeigt, aus welchem Land deine Benutzer stammen:

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
Beispielergebnisse

Einrichtung

Mit den oben genannten Informationen bist du jetzt besser informiert, welche Locales deine Community unterstützen sollte.

Gehe zu <deine-site-url>/admin/site_settings/category/content_localization, um dies einzurichten.

  • Content localization enabled - schaltet die Funktion ein, die den ursprünglichen geschriebenen Benutzerinhalt durch lokalisierten Inhalt ersetzt. Lies weiter für automatische (KI) und manuelle (menschliche) Lokalisierungsmodi.
  • Content localization supported locales - die Liste der Sprachen, die deine Site unterstützt
  • Content localization crawler param - wird im Abschnitt über Crawler unten erläutert
  • Content localization language switcher - wird direkt unten erläutert
Liste der Locales in den Site-Einstellungen 📸

Sprachumschalter

Das Aktivieren der nachfolgenden Einstellung Content localization language switcher ermöglicht es dir auch, deine Community für nicht angemeldete Benutzer zugänglicher zu machen, indem du die Liste der Sprachen, die du in der Liste der unterstützten Locales ausgewählt hast, anzeigst:

Sprachumschalter oben rechts auf der Seite

Anzeigen von lokalisiertem Inhalt

Für Betrachter von lokalisiertem Inhalt (alle Site-Besucher) können sie mit dem Cursor über den Indikator neben dem Datum des Beitrags fahren, um die ursprüngliche Sprache des Beitrags anzuzeigen. Dieser Indikator wird nur angezeigt, wenn der Beitrag nicht in ihrer Sprache ist. Sie können einfach auf den Indikator tippen, um auch den ursprünglichen Beitrag zu sehen.

Für unsere mehrsprachigen angemeldeten Betrachter können sie angeben, dass sie mehrere Sprachen verstehen, sodass Inhalte in diesen Sprachen nicht übersetzt werden.

Automatische Übersetzungen mit Discourse AI :sparkles:

Discourse AI ist für die Lokalisierungsfunktion sehr wichtig und eliminiert die Notwendigkeit manueller Übersetzungen.

Als Administrator solltest du dich in den dedizierten Bereich für Übersetzungen in Discourse AI begeben. Dieser dedizierte Bereich umfasst:

  • Übersetzungsfortschritt
  • KI-Einstellungen
  • App-Spracheinstellungen

Um einige wichtige Einstellungen und Empfehlungen zu erläutern:

  • AI translation backfill hourly rate - diese Einstellung ist standardmäßig auf 50 gesetzt - deine Site wird 50 Beiträge, 50 Themen, 50 Kategorien, 50 Tags pro Stunde in die Locales übersetzen, die du in Content localization supported locales festgelegt hast. Halte diese Zahl bei der Einführung niedrig.
  • AI translation category scope - standardmäßig auf Public categories. Du kannst dies auf alle Kategorien oder eine bestimmte Auswahl ändern.
  • AI translation personal messages und AI translation include bot content sind selbsterklärend.
  • AI translation backfill start date - dieser Wert ist standardmäßig leer. Wenn du die KI-Übersetzungsfunktion “heute” aktivierst, wird das Datum automatisch auf “heute - 5 Tage” gesetzt.
  • AI translation post raw translator agent (und andere Agenten) - In formelleren Communities können Administratoren wählen, ihre eigenen Agenten zu erstellen. Dies ermöglicht es dir, einen Prompt festzulegen, der besser auf die Sprache oder den Wortschatz abgestimmt ist, den du bevorzugst.

Du kannst dich unter AI bot - Agents darüber informieren, wie du geeignete Agenten konfigurierst und Prompts für jede Funktion feinabstimmst.

Manuelle Lokalisierung

Da Lokalisierung eine Kernfunktion in Discourse ist, bieten wir dir die Möglichkeit, Lokalisierungen manuell auszufüllen und zu bearbeiten, falls automatische Übersetzungen mit Discourse AI nicht verfügbar sind.

Standardmäßig sind Administratoren und Moderatoren zum Bearbeiten von Lokalisierungen eingerichtet.

Derzeit haben wir Beitragsinhalt, Thementitel, Kategoriename, Kategoriedescription, Tag-Name, Tag-Beschreibung und Seitenleistenlokalisierungen. Die nachfolgenden Abschnitte zeigen dir, wie sie funktionieren.

Kategoriennlokalisierung

Lokalisierte Kategorien sind in den folgenden Bereichen sichtbar, wobei sowohl Kategoriename als auch Beschreibung lokalisiert sind:

Orte, an denen Kategorien lokalisiert sind 📸
  1. Homepage, Seitenleiste und Kategorie-Dropdown
  1. Kategorien-Seite
  1. Eine bestimmte Kategorie mit Unterkategorien

Als Administrator solltest du wie gewohnt auf die Kategorieeinstellungen zugreifen können und den neuen Navigationspunkt “Lokalisierungen” links finden.

Bearbeiten von Kategorie-Lokalisierungen in den Kategorieeinstellungen 📸

Thema- und Beitragslokalisierung

Aus den oben gezeigten Screenshots in Kategoriennlokalisierung hast du vielleicht bemerkt, dass Thementitel und Auszüge lokalisiert werden.

Es gibt einige Voraussetzungen

  • Stelle sicher, dass dein Benutzer in content localization allowed groups ist
  • Der addTranslation-Button wird automatisch zu post menu und post menu hidden items hinzugefügt, wenn Content localization enabled aktiviert ist. Dies ermöglicht es, dass das :globe_with_meridians: im Beitragsmenü für Benutzer in content localization allowed groups angezeigt wird.
  • Content localization allow author localization ist standardmäßig aktiviert und ermöglicht es Beitragsautoren, ihre eigenen Inhalte mit demselben Beitragsmenü wie oben zu lokalisieren.
Beitragsmenü-Einstellung

Bearbeiten eines lokalisierten Beitrags

Falls der Benutzer einen lokalisierten Beitrag ansieht und diesen bearbeiten möchte, erscheint ein Dialog, der fragt, welche Version sie bearbeiten möchten:

Nach der Entscheidung erscheint der entsprechende Composer.

Benutzerdefinierte Seitenleistenlokalisierung

Seitenleistenabschnitte, die “für alle sichtbar” sind, zeigen zusätzliche Übersetzungskontrollen:

Crawler

Du kannst erlauben, dass Crawler deine Site in den verschiedenen Sprachen sehen, die du in Content localization supported locales konfiguriert hast. Die Site-Einstellung befindet sich im Abschnitt “Content localization” als Content localization crawler param:

Das Ergebnis wäre, dass Crawler Folgendes sehen können, wobei jede unterstützte Sprache einen entsprechenden hreflang im Head jedes Themas hat:

Für zusätzliche Beweise / Verifizierung

Wir haben diese Funktion ausführlich getestet und können bestätigen, dass wir nach der Einführung von X Anzahl unterstützter Sprachen korrekt indiziert werden

FAQ

Ich habe alles eingerichtet, aber automatische Übersetzung funktioniert immer noch nicht für mich
Bestätige, ob du Folgendes eingerichtet hast

  • Content localization supported locales hat mindestens eine Sprache
  • Content localization enabled ist :check_mark:
    • Allow user locale ist :check_mark: (standardmäßig aktiviert)
    • Set locale from cookie ist :check_mark:
  • Ai translation enabled ist :check_mark:
  • Du musst für jeden Übersetzungsagenten ein funktionierendes LLM eingerichtet haben

Wenn alles andere fehlschlägt, kannst du SiteSetting.ai_translation_verbose_logs aktivieren.

Werden die automatischen Übersetzungen gespeichert, oder werden sie jedes Mal an das LLM gesendet, wenn jemand ein Thema ansieht?
Die Übersetzungen werden gespeichert, jeder Beitrag wird nur einmal pro Sprache gesendet und die Übersetzungen werden wiederverwendet.

Wenn mein Forum Englisch und Japanisch unterstützt (über Content localization supported locales), und jemand auf Spanisch schreibt, wird ihr Beitrag übersetzt?
Ja. Alle Themen und Beiträge werden in Englisch und Japanisch übersetzt, unabhängig von der geschriebenen Sprache.

Wenn der ursprüngliche Beitrag bearbeitet wird, wird er erneut übersetzt?
Ja – mit einem Maximum von 2 Malen pro Tag. Wenn ein Beitrag bearbeitet wird, wird er nach einer Verzögerung von 5 Minuten oder dem SiteSetting.editing_grace_period (je nachdem, was größer ist) zur erneuten Übersetzung gesendet, um Ninja-Edits zu berücksichtigen. Authorisierte Benutzer in Content localization allowed groups haben die Option, einen Beitrag sofort zur erneuten Übersetzung zu senden.

Werden Übersetzungen gelöscht, wenn ich den Agenten oder das LLM ändere?
Nein, Übersetzungen bleiben in der Regel bei Änderungen der Einstellungen erhalten, es sei denn, sie werden explizit über das Beitragsmenü oder den Übersetzungs-Composer gelöscht.


25 „Gefällt mir“
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

Gibt es Empfehlungen, dies für bestehende Kategorien in großen Mengen zu tun? Im schlimmsten Fall, vielleicht über die API?

2 „Gefällt mir“

Hmm, gute Frage. Ich werde dafür sorgen, dass die API-Dokumentation für den Endpunkt zur Kategorieaktualisierung aktualisiert wird. :memo:

4 „Gefällt mir“

Wird es Unterstützung für Moderatoren pro Sprache geben? Ich denke an Meta – wo ich mich vielleicht freiwillig für die Überprüfung von Beiträgen in einer bestimmten Sprache und deren manuelle Aktualisierung melden würde. Insbesondere Dokumentationen, die einige menschliche Berührungen vertragen könnten. Aber Sie sagen, nur Moderatoren können es tun, was ich wahrscheinlich nie sein werde.

3 „Gefällt mir“

Gute Idee. Ich denke, das kann gemacht werden, aber wir müssen über die Details nachdenken, wie es eingerichtet werden kann.

3 „Gefällt mir“

Wie greife ich darauf zu? Könnten Sie bitte einen Befehl angeben?

Hat Sidekiq einen Job damit verknüpft? Ist es möglich, ihn manuell auszulösen?

1 „Gefällt mir“
2 „Gefällt mir“

Um Moin’s Beitrag oben zu ergänzen: Es ist einfach SiteSetting. ai_translation_backfill_hourly_rate, sobald Sie die Konsole erreicht haben. Der Job läuft alle fünf Minuten und die Ratenbegrenzung erfolgt entsprechend.

3 „Gefällt mir“

Ich sehe, dass die Lokalisierung jetzt in der Dokumentation verfügbar ist. Danke, @nat!

3 „Gefällt mir“

Das ist wunderbar, Lob an das Team! Ich teste es gerade und werde meine Gedanken und meine Gesamterfahrung teilen.

Esperanto fehlt auf der Liste; kann es ‘einfach’ hinzugefügt werden, oder muss es zuerst in discourse-languages integriert werden?

Wow, du bist ja auf Zack – ich wollte das gerade melden. :laughing:

Ja, irgendwie schon. Wir wollen ein vollständiges lokalisiertes Erlebnis, bei dem die Steuerelemente (Schaltflächen, Beschriftungen usw.) ordnungsgemäß und ausreichend (70 % wären wirklich gut) über Crowdin übersetzt werden (siehe Translations - Discourse Meta), und damit können wir die Unterstützung für die Sprache anbieten.

2 „Gefällt mir“

Funktioniert die Inhaltslokalisierung mit Dokumentationskategorien? Mir scheint, dass der Seitenleisteninhalt nicht übersetzt wird, obwohl ich das Index-Thema lokalisiere.

Außerdem ist mir ein seltsames Verhalten aufgefallen. Wenn ich ein lokalisiertes Thema in der Originalsprache sehe und aktualisiere, wechselt es zur lokalisierten Version. Ich muss manuell wieder zur Originalversion wechseln.

3 „Gefällt mir“

Oh, fantastischer Fang, ja, es funktioniert noch nicht, aber @nat wird sich darum kümmern!

Ich frage mich, ob dies ein Katalysator für die Entwicklung einer besseren Abstraktion / eines besseren Datenmodells für die Sidebar-Dokumentationslinks ist.

2 „Gefällt mir“

Ja, das stimmt – es gibt viele Stellen in Discourse, die eine explizite Übersetzung benötigen, daher protokolliere ich sie nach und nach. Zuletzt haben wir auch Benachrichtigungen für Themenüberschriften lokalisiert. Dies ist ein Beispiel für ein Feature-Thema, das ich erstellt habe - Show translated user bios.

Ich werde ein neues Thema erstellen und dich @erwähnen, damit wir sicherstellen, dass wir alle Bereiche im Sidebar abdecken.

EDIT: @tvavrda wurde hier behandelt - Translate sidebar documentation links. Bitte schau es dir an und sieh, ob es Sinn ergibt.

Was meinst du mit „wieder wechseln“?

Könntest du bitte das nächste Mal, wenn es passiert, eine Videoaufnahme (einschließlich der Adressleiste) teilen? :folded_hands:t2: Fühle dich frei, mir in diesem Fall eine Direktnachricht zu senden, wenn der Inhalt nicht für die Öffentlichkeit geeignet ist. Warst du auch eingeloggt? Technisch gesehen werden diese Dinge über Cookies verfolgt, daher ist es für mich etwas rätselhaft.

1 „Gefällt mir“

Ich habe dir ein Video geschickt.

Eine weitere Beobachtung – ich kann die Unterschiede der übersetzten Inhalte nicht sehen, oder? Das könnte nützlich sein, wenn es Aktualisierungen dazu gibt. Nicht sehr wichtig, aber es wäre sinnvoll, denke ich.

Und noch eine – die Backlinks unter dem Thema zeigen keinen lokalisierten Themennamen an.

Und eine Frage: Was bringt es, Kategoriebeschreibungen in den Kategorieeinstellungen zu lokalisieren? Die Kategoriebeschreibung sollte von der lokalisierten Version des „Über uns“-Themas stammen, oder? Die lokalisierte Version unterstützt kein Markdown, daher kann ich keinen Link verwenden, was ich gerne tun würde.

1 „Gefällt mir“

Nun… die alte GitHub - discourse/discourse-docs-sidebar Komponente respektiert tatsächlich die Lokalisierung :slight_smile: Ich bin vorübergehend zu dieser gewechselt.

Ja, das wird derzeit auch nicht unterstützt und wäre ein ziemlicher Aufwand.

Wir haben eine kleine speziell farbige Anzeige (ähnlich der Anzeige für Beitragsbearbeitungen daneben), wenn eine Übersetzung veraltet sein könnte, da sich die Beitragsversion geändert hat.

1 „Gefällt mir“

Ich sehe auch einen unübersetzten Inhalt in den Zusammenfassungen angehefteter Themen. Ich sehe also eine Themenliste in der übersetzten Sprache, aber die Zusammenfassung des angehefteten Themas zeigt das Original.

1 „Gefällt mir“

Wir können Übersetzungen manuell durchführen oder korrigieren, aber können wir den Aufbau von Übersetzungen manuell auslösen? So eine Art On-Demand-Job.

Was ich mir vorstelle, ist, dass ich Übersetzungen für ein Jahr alte Themen zugelassen habe. Aber wenn dieses Jahr ab dem aktuellen Datum gezählt wird, wird sich diese Grenze ständig in Richtung bereits übersetzter Inhalte verschieben. Aber die größte Nachfrage besteht nach älteren wertvollen Inhalten, die ich schnell und ohne ziemlich langsame Massenaktionen erreichen möchte.

Ich bin neugierig, hat jemand Kostenschätzungen, nachdem die Übersetzungen aktiviert wurden? Unsere Seite existiert schon eine Weile, und obwohl ich die gesamte Seite übersetzen möchte, wenn möglich, sind die Kosten definitiv ein Anliegen. Wenn also jemand eine grobe Vorstellung von den Kosten aus seiner Erfahrung hat, z. B. 1000 Beiträge kosten 1 $, würde das enorm helfen, um eine ungefähre Kostenschätzung zu erhalten.

Wird die Inhaltlokalisierung einmal durchgeführt und dann irgendwo gespeichert, d. h. nicht nach Bedarf? Wenn ja, hindert mich etwas daran, Ollama und ein Open-Source-LLM auf meinem Desktop wie Llama 3 oder Deepseek 3 zu starten und den Job einfach laufen zu lassen, bis er fertig ist?

Bearbeitung: Ich schätze, es könnte funktionieren, um die anfänglichen Übersetzungskosten zu senken, aber es wird nicht für neuere Beiträge funktionieren, es sei denn, man beschließt, das lokale LLM dauerhaft laufen zu lassen.