إضافة LibreTranslate -- واجهة برمجة تطبيقات ترجمة مجانية ومفتوحة المصدر

مواصلة النقاش من مترجم ديسكورش:

LibreTranslate - صفحة المشروع على GitHub
نقاش المشروع على https://community.libretranslate.com/

واجهة برمجة تطبيقات للترجمة الآلية مجانية ومفتوحة المصدر. تعمل بالكامل على استضافة ذاتية، وتدعم العمل دون اتصال بالإنترنت، وسهلة الإعداد. تعمل بدعم من Argos Translate مفتوحة المصدر.

تثبيت ديسكورش

نسخ ولصق من ملف readme على GitHub

يمكنك استخدام إضافة مترجم ديسكورش هذه لترجمة مواضيع ديسكورش. للتثبيت، قم فقط بتعديل /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
	  ...

ثم قم بتشغيل ./launcher rebuild app. من لوحة إدارة ديسكورش، اختر بعد ذلك “LibreTranslate” كمزود للترجمة وقم بإعدادات نقطة النهاية ذات الصلة.

6 إعجابات

أنا لست المؤلف، لكنني اكتشفت للتو هذه الإضافة الرائعة. حسب علمي، لم يذكرها أحد في المنتدى. يجب تحويل هذا إلى موضوع خاص بالإضافة، ونأمل أن نتمكن من جلب المطور إلى هذه المحادثة… ما لم أكن قد أغفلت تمامًا مكان سرد هذه الإضافة بالفعل في الميتا.

إعجابَين (2)

لقد حاولت إعداد هذا ولكن في الخطوة النهائية (الحصول على ترجمة) فشلت مع رسالة الخطأ التالية:

`حدث خطأ: #<Excon::Response:0x00007f25419e6818 @data={:body=>“\u003c!doctype html\u003e\n\u003chtml lang=en\u003e\n\u003ctitle\u003e405 Method Not Allowed\u003c/title\u003e\n\u003ch1\u003eMethod Not Allowed\u003c/h1\u003e\n\u003cp\u003eThe method is not allowed for the requested URL.\u003c/p\u003e\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=“\u003c!doctype html\u003e\n\u003chtml lang=en\u003e\n\u003ctitle\u003e405 Method Not Allowed\u003c/title\u003e\n\u003ch1\u003eMethod Not Allowed\u003c/h1\u003e\n\u003cp\u003eThe method is not allowed for the requested URL.\u003c/p\u003e\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”>\n

لقد قمت بإعداد حاوية docker باستخدام docker run -d --restart unless-stopped -ti -p 5000:5000 --name="libretranslate" libretranslate/libretranslate والتي بدت جيدة بالنسبة لي وفقًا للوثائق وقمت بتعيين translator libretranslate endpoint إلى http://172.17.0.1:5000 (عنوان IP هو عنوان IP لمضيف docker).

وفقًا لرسالة الخطأ، يمكن لـ Discourse أيضًا الاتصال بـ LibreTranslate ولكن شيئًا ما لا يعمل.

أي أفكار؟

تم الحل :slight_smile: : Problem with LibreTranslate as Docker for Discourse - #3 by pierotofy - LibreTranslate API - LibreTranslate Community

تحتاج إلى التحديث إلى أحدث إصدار من Github من المكون الإضافي لـ Discourse.

إعجابَين (2)

@Roi هل يمكنك المساعدة في توضيح كيفية إعداد هذا. أنا مرتبك. لقد وجدت عنوان IP الخاص بحاوية Docker الخاصة بي باستخدام sudo docker inspect libretranslate

من المنشور الذي أشرت إليه، هل نقطة نهاية واجهة برمجة التطبيقات (API) تُعامل على أنها:

http://dockerip:5000

بدون الحاجة إلى مفتاح API؟ أنا أقوم بتشغيل libretranslate في حاوية بجانب Discourse. شكرًا!

@sunjam نعم، أستخدم:

http://172.17.0.1:5000/

حيث 172.17.0.1 هو عنوان IP الخاص بحاوية Docker الخاصة بـ Libretranslate.

ولا أستخدم مفتاح API.

إعجابَين (2)

@Roi شكراً، يبدو أن هذا هو أمر التشغيل الخاص بك:

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

نعم بطريقة ما:

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

أبلغ أيضًا عن ذلك إلى Libretranslate هنا، ولكني أواجه خطأ وتحذيرًا عند محاولة استخدام Libretranslate مع تطبيقات Multilingual و Translator.

Job exception: connect_write timeout reached
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"): held for too long, expected max: 60 secs, took an extra 1 secs”]

DistributedMutex("detect_translation_15"): held for too long, expected max: 60 secs, took an extra 1 secs

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]

إعجاب واحد (1)

مواصلة اختبار المكون الإضافي Libretranslate باستخدام المثيلات المجانية التي يوصون بها. رؤية هذا الخطأ في الاختبارات الناجحة

[details=" استثناء المهمة: {"error"=\u003e"طلب غير صالح: معلمة q مفقودة"} "]

رسالة (تم الإبلاغ عن نسختين)
استثناء المهمة: {\"error\"=\u003e\"طلب غير صالح: معلمة q مفقودة\"}


تتبع المكدس

/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]