Diskurs-Übersetzer

||||
-|-|
:discourse2: | Zusammenfassung | Discourse Translator übersetzt Beiträge in Discourse mithilfe der Microsoft-, Google- oder Yandex-Übersetzungs-APIs.
:hammer_and_wrench: | Repository-Link | https://github.com/discourse/discourse-translator
:open_book: | Installationsanleitung | So installieren Sie Plugins in Discourse

Funktionen

  • Jeder Beitrag wird nur einmal pro Lokalisierung übersetzt, was Ihnen :moneybag: spart
    • Beachten Sie, dass die Spracherkennung ebenfalls nur einmal pro Beitrag ausgeführt wird. Seien Sie vorsichtig, wenn Sie dies in alten und großen Foren aktivieren.
  • Access Token wird serverseitig zwischengespeichert, um schnellere Übersetzungen zu ermöglichen.
  • Übersetzungen sind standardmäßig auf 3 pro Minute begrenzt (Administratoren können diesen Wert konfigurieren)

Unterstützte Übersetzungsdienste

Konfigurationsschritte

Microsoft
  1. Folgen Sie den Schritten in Microsoft Translator API on Azure, um einen Abonnement-Schlüssel zu erhalten. Sie können aus einem der verfügbaren Abonnementangebote wählen.

  2. Geben Sie in Ihrem Discourse unter Admin > Einstellungen > Plugins den Abonnement-Schlüssel ein, den Sie aus den oben genannten Schritten erhalten haben.

  1. Aktivieren Sie in Ihrem Discourse unter Admin > Einstellungen > Grundeinstellungen die Option „Benutzerlokalisierung zulassen“.
Google Translator
  1. Gehen Sie zu https://console.developers.google.com

  2. Klicken Sie auf „Mein Projekt“

  1. Klicken Sie auf :heavy_plus_sign:, um ein neues Projekt zu erstellen

  1. Geben Sie Ihren Projektnamen ein und klicken Sie auf „Erstellen“

  2. Wählen Sie API aktivieren und suchen Sie nach Google Cloud Translator API. Suchen Sie die Schaltfläche Aktivieren und klicken Sie darauf, um die API zu aktivieren. Beachten Sie, dass es für die Google Translator API keine kostenlose Stufe gibt, daher wird Sie das System möglicherweise auffordern, die Abrechnung zu aktivieren.

  3. Klicken Sie nach Abschluss auf „Anmeldeinformationen“ im linken Menü

  1. Klicken Sie auf Anmeldeinformationen erstellen und wählen Sie API-Schlüssel. Kopieren Sie den API-Schlüssel und fügen Sie ihn in die Site-Einstellung translator google api key in Discourse ein.

  2. Aktivieren Sie in Discourse unter Admin > Einstellungen > Grundeinstellungen die Option „Benutzerlokalisierung zulassen“.

Einstellungen

| Name | Beschreibung
|-|
| translator enabled | Zulassen der Inline-Übersetzung von Beiträgen.
| translator | Der Anbieter des Übersetzungsdienstes.
| translator azure subscription key | Azure-Abonnement-Schlüssel
| translator azure region | Azure-Region
| translator azure custom subdomain | Erforderlich, wenn ein Virtual Network oder Firewall für Azure Cognitive Services verwendet wird. Hinweis: Geben Sie nur die benutzerdefinierte Subdomain ein, nicht den vollständigen benutzerdefinierten Endpunkt.
| translator aws region | AWS-Region
| translator aws key id | AWS-Key-ID
| translator aws secret access | AWS-Geheimschlüssel
| translator aws iam role | AWS-IAM-Rolle
| translator google api key | Google-API-Schlüssel
| translator yandex api key | Yandex-API-Schlüssel
| translator libretranslate endpoint | LibreTranslate-Endpunkt
| translator libretranslate api key | LibreTranslate-API-Schlüssel
| max translations per minute | Die Anzahl der Übersetzungen pro Minute, die ein regulärer Benutzer durchführen kann.
| restrict translation by group | Nur freigegebene Gruppen dürfen übersetzen
| restrict translation by poster group | Nur die Übersetzung von Beiträgen, die von freigegebenen Benutzern erstellt wurden, ist zulässig

Bekannte Probleme

  • Übersetzt keinen Text in Umfragen, die vom discourse-poll-Plugin erstellt wurden.
  • Bilder werden bei der Übersetzung vergrößert.

:discourse2: Von uns gehostet? Dieses Plugin ist in unserem Enterprise-Plan verfügbar.

103 „Gefällt mir“
Advice for bilingual communities
Inline translation of posts into another language
Language Translation
Can we have have one post with two different language
Plugin for signatures?
Translate plugin installed, but no translate button
LibreTranslate Plugin -- Free and Open Source Translation API
Discourse Translator plugin is not showing for non-logged in users
What exactly are the effects of "allow user locale"
DeepL integration for Translator plugin
How do you use Discourse AI? Tell us and make it even better!
How do I get the forum here in German
Is Google translate really so expensive?
Anyone migrated to version 3 of Microsoft Translator API yet?
Moving up the translator icon
Image zoom is not working
Translating text in polls
Yandex Translation Service
Anyone Using Discourse Translator Plugin on small forum, Cost/month?
FYI, Full translation of Discourse including posts is possible
Mute ALL other languages
How to install a plugin on Discourse-hosted-Discourse?
Make a multi-language forum
How to handle users that don't really read the answers they get?
Localized email templates
Translates to user's local language
DeepL integration for Translator plugin
Javascript pop up block help
No errors, instance not coming back up after rebuild
DeepL support for Discourse Translator
Getting user profile custom field via JS
Google Translate shows "blank" page
What exactly are the effects of "allow user locale"
Virtual Keyboard hides critical editor buttons for 3.3.0-beta
Translation from Lugandan yields uncaught 500 error (in a different Discourse)
Is Automatic Translation for Most Content Now Official?
Everything is translated, help!
Virtual Keyboard hides critical editor buttons for 3.3.0-beta
Translation support about the topic content
Translates to user's local language
Structuring a multilingual community
Translate email notifications and digests into user preferred locale language
Implementing In-House Translation Features on Discourse
Include translated posts in search?
Translate email notifications and digests into user preferred locale language
Changing default language will not change the site TITLE or DESCRIPTION!
Yandex Translation Service
Simple idea for translator-assisted bilingual forum
MKJ's Opinionated Discourse Deployment Configuration
Help which plugin is in the screenshot
Übersetzung wie hier auf Meta

Ein Beitrag wurde in ein neues Thema aufgeteilt: Ich suche nach einer solchen Lösung, um ein LLM zur Übersetzung der Top-Beiträge meines Forums zu verwenden

Ein Beitrag wurde in ein neues Thema aufgeteilt: Hinzufügen einer Option für eine separate Konfiguration für den Spracherkennungsdienst

Ein Beitrag wurde in ein neues Thema aufgeteilt: Werden von Discourse gehostete Foren eine lokale Instanz von LibreTranslate verwenden?

Ich verwende LibreTranslate selbst gehostet, was in der Vergangenheit gut funktioniert hat, aber jetzt erhalte ich viele wiederholte Fehler wie „Job exception: The translator service is currently not available“. Ich habe die URL überprüft, die in der Vergangenheit in Ordnung war. Wenn ich auf die URL zugreife, wird die LibreTranslate-Webseite angezeigt. Es ist kein API/Token erforderlich, da meine LibreTranslate-Instanz privat ist und keinen Zugriff aus dem Internet hat.

Der Backtrace zeigt:

Nachricht (548 Kopien gemeldet)

Job exception: The translator service is currently not available.

Backtrace

/var/www/discourse/plugins/discourse-translator/services/discourse_translator/libretranslate.rb:168:in `result'
/var/www/discourse/plugins/discourse-translator/services/discourse_translator/libretranslate.rb:85:in `detect'
/var/www/discourse/plugins/discourse-translator/plugin.rb:120:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/plugins/discourse-translator/plugin.rb:119:in `execute'
/var/www/discourse/app/jobs/base.rb:305:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.0.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:292:in `block in perform'
/var/www/discourse/app/jobs/base.rb:288:in `each'
/var/www/discourse/app/jobs/base.rb:288:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'

Haben Sie eine Idee, wie ich das beheben kann?

2 „Gefällt mir“

Die Locale-Option „Hindi“ ist in „Discourse“ noch nicht verfügbar. Die Hindi-Übersetzung ist jedoch über verschiedene Dienste verfügbar (ich verwende „Microsoft Azure“).

Wie können wir dann einrichten, dass alle/beliebigen Nicht-Hindi-Beiträge ins „Hindi“ übersetzt werden, auch wenn die Discourse-Oberfläche weiterhin auf Englisch ist? Ist das überhaupt möglich?

1 „Gefällt mir“

Ich versuche, diese Frage auch in ihr Diskursforum zu posten.

3 „Gefällt mir“

Ich habe darüber nachgedacht, diesen Übersetzer zu unserem Forum hinzuzufügen. Ich habe jedoch zwei Hauptbedenken:

1. Ist es möglich, die Übersetzungen zu ändern?
Ich möchte sicherstellen, dass bestimmte Begriffe auf eine bestimmte Weise übersetzt werden. Dazu benötige ich die Möglichkeit, die verfügbaren Übersetzungen einzusehen und bei Bedarf Änderungen vorzunehmen.

2. Wann wird ein Beitrag „neu übersetzt“?
Einige Forenbeiträge werden recht häufig bearbeitet. Wie kann ich sicherstellen, dass jeder korrigierte Tippfehler nicht zu überhöhten Übersetzungskosten führt? Wie kann ich außerdem sicherstellen, dass neue Änderungen korrekt in den Übersetzungen aktualisiert werden?

3 „Gefällt mir“

Ich glaube, das ist nicht möglich, da Sie dies auf der Ebene des Anbieters (Microsoft/Google) ändern müssten. Es sei denn, übersetzte Inhalte unterliegen der Wortersetzungs-Funktion, dann können Sie diese verwenden.

Hier ist jedoch eine Funktionsanfrage:

  1. Die erste Nachricht automatisch ins Englische übersetzen, falls sie in einer anderen Sprache verfasst wurde.
  2. Eine Schaltfläche haben, um den gesamten Thread auf einmal zu übersetzen.
  3. Die automatische Übersetzungsfunktion für das gesamte Forum auf Benutzerebene aktivieren. Das bedeutet, wenn ein Benutzer in seinem Profil angibt, dass er nur z. B. Rumänisch spricht, werden alle Inhalte ins Rumänische übersetzt. Wenn er angibt, mehrere Sprachen zu sprechen, werden Beiträge nur übersetzt, wenn sie nicht in diesen Sprachen verfasst sind.
2 „Gefällt mir“

Als Website-Administrator war ich überrascht, Folgendes zu lesen:

Wo ist diese versteckte Einstellung? :smiling_face_with_sunglasses:

1 „Gefällt mir“
./launcher enter app
rails c
SiteSetting.automatic_translation_backfill_rate = <gewünschter Wert>
exit
exit

Aber ich glaube, das gibt es in neueren Versionen sowieso nicht mehr.

2 „Gefällt mir“

Wie lernen Sie diese Dinge? :sweat_smile: Ok, danke! Ich werde auf eine Antwort vom Team warten, um sicherzugehen.

1 „Gefällt mir“

Zwei Wege: über die Suche und über ask.discourse.com

3 „Gefällt mir“
3 „Gefällt mir“

Benachrichtigungen zu übersetzten Themen erscheinen nicht in der Benachrichtigungsleiste:

1 „Gefällt mir“

Außerdem wurde mein Beitrag über einen Link in die falsche Sprache übersetzt?


Wenn ich in den Composer schaue, ist das, was ich tatsächlich geschrieben habe:

Ich habe bemerkt, dass Oneboxing auch nicht funktionierte, als ich übersetzt habe.

1 „Gefällt mir“

Die Benachrichtigung in Ihrem Screenshot verwendet den ursprünglichen Titel des Themas Ihres Beitrags, daher ist sie vorerst „korrekt“. Wir werden sicherstellen, dass Benachrichtigungen (Thementitel) in Zukunft übersetzt werden.

Was den obigen Beitrag betrifft, so hat unsere maschinelle Übersetzung gesponnen und wurde fälschlicherweise als „Spanisch (es)“ erkannt und anschließend schlecht übersetzt. Das wurde korrigiert. Wir arbeiten mit besseren Prompts für Übersetzungen.

2 „Gefällt mir“

Ich habe diesen Fehler erhalten, als ich das Discourse-Translator-Plugin installiert habe. Meine Discourse-Version ist 3.5.0.beta1.

I, [2025-04-24T01:33:20.510994 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
        82: from /usr/local/bin/bundle:25:in `<main>'
        81: from /usr/local/bin/bundle:25:in `load'
        80: from /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.5.18/exe/bundle:20:in `<top (required)>'
     ....
        10: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:87:in `with_execution_control'
        9: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:94:in `block in execute_hook'
        8: from /var/www/discourse/config/application.rb:249:in `block in <class:Application>'
        7: from /var/www/discourse/lib/plugin.rb:6:in `initialization_guard'
        6: from /var/www/discourse/config/application.rb:249:in `block (2 levels) in <class:Application>'
        5: from /var/www/discourse/config/application.rb:249:in `each'
        4: from /var/www/discourse/lib/plugin/instance.rb:629:in `notify_after_initialize'
        3: from /var/www/discourse/lib/plugin/instance.rb:629:in `each'
        2: from /var/www/discourse/lib/plugin/instance.rb:631:in `block in notify_after_initialize'
        1: from /var/www/discourse/plugins/discourse-translator/plugin.rb:40:in `block in activate!'
/var/www/discourse/plugins/discourse-translator/lib/discourse_translator/inline_translation.rb:86:in `inject': protected method `register_topic_preloader_associations' called for an instance of Plugin::Instance (NoMethodError)

Wie kann ich das beheben?

1 „Gefällt mir“

Hallo, der Fehler kann behoben werden, indem Discourse zuerst aktualisiert wird, bevor das Plugin installiert wird.

Die Methode register_topic_preloader_associations wurde von geschützt auf öffentlich erweitert.

4 „Gefällt mir“

Danke, ich habe nach dem Upgrade von Discourse auf die neueste Version erfolgreich installiert.

2 „Gefällt mir“