LibreTranslate Plugin -- Kostenlose und Open-Source-Übersetzungs-API

Fortsetzung der Diskussion aus Discourse Translator:

LibreTranslate – Github-Projektseite
Projektdiskussion unter https://community.libretranslate.com/

Kostenlose und quelloffene API für maschinelle Übersetzung. 100 % selbst gehostet, offline-fähig und einfach einzurichten. Betrieben mit der quelloffenen Argos Translate.

Discourse-Installation

Kopiert aus der Github-Readme

Sie können dieses Discourse-Translator-Plugin verwenden, um Discourse-Themen zu übersetzen. Zur Installation ändern Sie einfach /var/discourse/containers/app.yml:

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/LibreTranslate/discourse-translator
	  ...

Führen Sie dann ./launcher rebuild app aus. Wählen Sie im Admin-Bereich von Discourse „LibreTranslate“ als Übersetzungsanbieter aus und konfigurieren Sie die entsprechenden Endpunkte.

Ich bin nicht der Autor, habe aber gerade dieses erstaunliche Plugin entdeckt. Soweit ich weiß, hat es noch niemand im Forum erwähnt. Das muss in ein Plugin-Thema umgewandelt werden, und hoffentlich können wir den Entwickler hier im Chat dazu bekommen … es sei denn, ich übersehe komplett, dass dieses Plugin bereits in Meta gelistet ist.

Ich habe versucht, dies einzurichten, aber im letzten Schritt (Übersetzung erhalten) erhalte ich die folgende Fehlermeldung:

Ein Fehler ist aufgetreten: #<Excon::Response:0x00007f25419e6818 @data={:body=>"<!doctype html>\n<html>\n<title>405 Method Not Allowed</title>\n<h1>Method Not Allowed</h1>\n<p>The method is not allowed for the requested URL.</p>\n", :cookies=>[], :host=>"172.17.0.1", :headers=>{"Access-Control-Allow-Credentials"=>"true", "Access-Control-Allow-Headers"=>"Authorization, Content-Type", "Access-Control-Allow-Methods"=>"GET, POST", "Access-Control-Allow-Origin"=>"*", "Access-Control-Expose-Headers"=>"Authorization", "Access-Control-Max-Age"=>"1728000", "Allow"=>"HEAD, GET, OPTIONS", "Content-Length"=>"153", "Content-Type"=>"text/html; charset=utf-8", "Date"=>"Sat, 17 Dec 2022 11:18:27 GMT", "Server"=>"waitress"}, :path=>"//languages", :port=>5000, :status=>405, :status_line=>"HTTP/1.1 405 METHOD NOT ALLOWED\r\n", :reason_phrase=>"METHOD NOT ALLOWED", :remote_ip=>"172.17.0.1", :local_port=>50848, :local_address=>"172.17.0.3"}, @body="<!doctype html>\n<html>\n<title>405 Method Not Allowed</title>\n<h1>Method Not Allowed</h1>\n<p>The method is not allowed for the requested URL.</p>\n", @headers={"Access-Control-Allow-Credentials"=>"true", "Access-Control-Allow-Headers"=>"Authorization, Content-Type", "Access-Control-Allow-Methods"=>"GET, POST", "Access-Control-Allow-Origin"=>"*", "Access-Control-Expose-Headers"=>"Authorization", "Access-Control-Max-Age"=>"1728000", "Allow"=>"HEAD, GET, OPTIONS", "Content-Length"=>"153", "Content-Type"=>"text/html; charset=utf-8", "Date"=>"Sat, 17 Dec 2022 11:18:27 GMT", "Server"=>"waitress"}, @status=405, @remote_ip="172.17.0.1", @local_port=50848, @local_address="172.17.0.3">

Ich habe einen Docker-Container mit docker run -d --restart unless-stopped -ti -p 5000:5000 --name="libretranslate" libretranslate/libretranslate eingerichtet, was laut Dokumentation für mich in Ordnung zu sein schien, und translator libretranslate endpoint auf http://172.17.0.1:5000 gesetzt (die IP ist die IP des Docker-Hosts).

Laut Fehlermeldung kann Discourse auch eine Verbindung zu LibreTranslate herstellen, aber etwas funktioniert nicht.

Irgendwelche Ideen?

Es ist gelöst :slight_smile: : Problem with LibreTranslate as Docker for Discourse - #3 by pierotofy - LibreTranslate API - LibreTranslate Community

Sie müssen auf die neueste Github-Version des Discourse-Plugins aktualisieren.

@Roi, könnten Sie bitte helfen zu klären, wie dies eingerichtet ist? Ich bin verwirrt. Ich habe die IP-Adresse meines Docker-Containers mit sudo docker inspect libretranslate gefunden.

Wird der API-Endpunkt aus Ihrem verlinkten Beitrag behandelt als:

http://dockerip:5000

ohne dass ein API-Schlüssel benötigt wird? Ich betreibe LibreTranslate in einem Container neben Discourse. Danke!

@sunjam ja, ich benutze:

http://172.17.0.1:5000/

Wobei 172.17.0.1 die IP des Libretranslate Docker-Containers ist.

Und ich benutze keinen API-Schlüssel.

@Roi Danke, das scheint Ihr Ausführungsbefehl zu sein:

docker run -d --restart unless-stopped -ti -p 5000:5000 --name="libretranslate" libretranslate/libretranslate

Irgendwie ja:

docker run -d --restart unless-stopped -ti -p 5000:5000 -e LT_LOAD_ONLY="en,de,fr,it,es,pt,nl,da,sv,pl,cs,ru" --name="libretranslate" libretranslate/libretranslate

Auch hier wird an Libretranslate berichtet, aber ich stoße auf einen Fehler und eine Warnung, wenn ich versuche, Libretranslate mit den Apps Multilingual und Translator zu verwenden.

Job-Ausnahme: connect_write Timeout erreicht
Backtrace

/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/excon-0.104.0/lib/excon/socket.rb:317:in `select_with_timeout'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/excon-0.104.0/lib/excon/socket.rb:163:in `rescue in block in connect'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/excon-0.104.0/lib/excon/socket.rb:144:in `block in connect'
/usr/local/lib/ruby/3.2.0/resolv.rb:111:in `each_address'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/excon-0.104.0/lib/excon/socket.rb:134:in `connect'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/excon-0.104.0/lib/excon/socket.rb:51:in `initialize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/excon-0.104.0/lib/excon/connection.rb:477:in `new'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/excon-0.104.0/lib/excon/connection.rb:477:in `socket'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/excon-0.104.0/lib/excon/connection.rb:121:in `request_call'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/excon-0.104.0/lib/excon/middlewares/mock.rb:57:in `request_call'

[details=“DistributedMutex("detect_translation_15"): zu lange gehalten, maximal erwartet: 60 Sek., zusätzliche Dauer: 1 Sek.”]

DistributedMutex("detect_translation_15"): zu lange gehalten, maximal erwartet: 60 Sek., zusätzliche Dauer: 1 Sek.

Backtrace

/var/www/discourse/lib/distributed_mutex.rb:103:in `warn'
/var/www/discourse/lib/distributed_mutex.rb:57:in `rescue in block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:64: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:98:in `execute'
/var/www/discourse/app/jobs/base.rb:292:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-5.0.0/lib/rails_multisite/connection_management.rb:82:in `with_connection'
/var/www/discourse/app/jobs/base.rb:279:in `block in perform'

[/details]

Weiterhin teste ich das Libretranslate-Plugin mit den empfohlenen kostenlosen Instanzen. Ich sehe diesen Fehler in Tests-bestanden

[details=“Job-Ausnahme: {"error"=\u003e"Ungültige Anfrage: fehlender q-Parameter"}”]

Nachricht (2 Kopien gemeldet)
Job-Ausnahme: {"error"=>"Ungültige Anfrage: fehlender q-Parameter"}


Backtrace

/var/www/discourse/plugins/discourse-translator/services/discourse_translator/libretranslate.rb:150:in `result'
/var/www/discourse/plugins/discourse-translator/services/discourse_translator/libretranslate.rb:84:in `detect'
/var/www/discourse/plugins/discourse-translator/plugin.rb:99: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:98:in `execute'
/var/www/discourse/app/jobs/base.rb:292:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-5.0.0/lib/rails_multisite/connection_management.rb:82:in `with_connection'

[/details]