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

**URL:** https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891
**Category:** Development
**Created:** [1 نوفمبر 2021، 8:25م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891 "2021-11-01T20:25:52Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![sunjam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sunjam/32/175682_2.png) [@sunjam](https://meta.discourse.org/u/sunjam)
#### Post date: [1 نوفمبر 2021، 8:25م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/1 "2021-11-01T20:25:52Z")

</div>

مواصلة النقاش من [مترجم ديسكورش](https://meta.discourse.org/t/discourse-translator/32630):

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

واجهة برمجة تطبيقات للترجمة الآلية مجانية ومفتوحة المصدر. تعمل بالكامل على استضافة ذاتية، وتدعم العمل دون اتصال بالإنترنت، وسهلة الإعداد. تعمل بدعم من [Argos Translate](https://github.com/argosopentech/argos-translate) مفتوحة المصدر.

- [وثائق الـ API](https://libretranslate.com/docs)

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

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

يمكنك استخدام [إضافة مترجم ديسكورش](https://github.com/LibreTranslate/discourse-translator) هذه لترجمة مواضيع [ديسكورش](https://discourse.org). للتثبيت، قم فقط بتعديل `/var/discourse/containers/app.yml`:

```plaintext
## 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” كمزود للترجمة وقم بإعدادات نقطة النهاية ذات الصلة.

---

<div class="post-metadata">

### Author: ![sunjam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sunjam/32/175682_2.png) [@sunjam](https://meta.discourse.org/u/sunjam)
#### Post date: [1 نوفمبر 2021، 8:27م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/2 "2021-11-01T20:27:08Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Roi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roi/32/130587_2.png) [@Roi](https://meta.discourse.org/u/Roi)
#### Post date: [17 ديسمبر 2022، 11:22ص UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/4 "2022-12-17T11:22:31Z")

</div>

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

`حدث خطأ: #\<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 ولكن شيئًا ما لا يعمل.

أي أفكار؟

---

<div class="post-metadata">

### Author: ![Roi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roi/32/130587_2.png) [@Roi](https://meta.discourse.org/u/Roi)
#### Post date: [20 ديسمبر 2022، 9:06م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/5 "2022-12-20T21:06:15Z")

</div>

تم الحل 🙂 : [Problem with LibreTranslate as Docker for Discourse - #3 by pierotofy - LibreTranslate API - LibreTranslate Community](https://community.libretranslate.com/t/problem-with-libretranslate-as-docker-for-discourse/445/3?u=roi)

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

---

<div class="post-metadata">

### Author: ![sunjam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sunjam/32/175682_2.png) [@sunjam](https://meta.discourse.org/u/sunjam)
#### Post date: [28 أكتوبر 2023، 4:39م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/6 "2023-10-28T16:39:39Z")

</div>

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

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

`http://dockerip:5000`

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

---

<div class="post-metadata">

### Author: ![Roi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roi/32/130587_2.png) [@Roi](https://meta.discourse.org/u/Roi)
#### Post date: [28 أكتوبر 2023، 7:21م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/7 "2023-10-28T19:21:44Z")

</div>

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

`http://172.17.0.1:5000/`

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

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

---

<div class="post-metadata">

### Author: ![sunjam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sunjam/32/175682_2.png) [@sunjam](https://meta.discourse.org/u/sunjam)
#### Post date: [28 أكتوبر 2023، 7:27م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/8 "2023-10-28T19:27:11Z")

</div>

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

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

---

<div class="post-metadata">

### Author: ![Roi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roi/32/130587_2.png) [@Roi](https://meta.discourse.org/u/Roi)
#### Post date: [28 أكتوبر 2023، 7:40م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/9 "2023-10-28T19:40:03Z")

</div>

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

`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`

---

<div class="post-metadata">

### Author: ![sunjam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sunjam/32/175682_2.png) [@sunjam](https://meta.discourse.org/u/sunjam)
#### Post date: [28 أكتوبر 2023، 8:53م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/10 "2023-10-28T20:53:53Z")

</div>

[أبلغ أيضًا عن ذلك إلى Libretranslate هنا](https://community.libretranslate.com/t/clarifying-setup-instructions-for-discourse-translator-plugin/764?u=sunjam)، ولكني أواجه خطأ وتحذيرًا عند محاولة استخدام Libretranslate مع تطبيقات [Multilingual](https://meta.discourse.org/t/multilingual-plugin/142740/122?u=sunjam) و [Translator](https://meta.discourse.org/t/discourse-translator/32630/382?u=sunjam).

> **Job exception: connect\_write timeout reached**
>
> ```plaintext
> 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”]

```plaintext
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]

---

<div class="post-metadata">

### Author: ![sunjam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sunjam/32/175682_2.png) [@sunjam](https://meta.discourse.org/u/sunjam)
#### Post date: [18 نوفمبر 2023، 2:40م UTC](https://meta.discourse.org/t/libretranslate-plugin-free-and-open-source-translation-api/207891/11 "2023-11-18T14:40:41Z")

</div>

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

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

```plaintext
رسالة (تم الإبلاغ عن نسختين)
استثناء المهمة: {\"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]
