بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
إنشاء برنامج للترجمة الفورية من خلال إستخدام Yandex Translate و python .
المقدمة :
سأشرح في هذه السلسلة من الدروس إنشاء سكربت أو برنامج للترجمة الفورية من خلال إستخدام Yandex Translate وهو منافس ل Google Translate .سأشرح ما نحتاج للقيام باﻷمر بشكل متفرق لاكن ساترك لكم طريقة جمع البرنامج وفي الأخر سأضع لكن رابط البرنامج الخاص بي لاكنه أكثر تعقيدا بقليل لاكن يمكنه ان يعطيكم أفكار جميلة أو تلافي أخطاء قد أكون وقعت بها أو القيام بأمور بطريقة أفضل أو أسهل .
في الحقيقة البرنامج الخاص بي أستخدمه لنفسي ولا يهمني نشره ويوجد بدائل له لاكن ما يهمني ما تعلمته أثناء برمجته وما أحاول أن أنقله للأخرين .
لإنشاء برنامج ترجمة فورية تفاعلي نحتاج هذه الأشياء :
1-نحتاج أن نستخدم ال API التي توفره Yandex ويستخدم للترجمة لهذا سنتعامل مع مكتبة requests ,بشكل بسيط ال API هي واجهة أو طريقة يتم توفيرها لتسهيل التعامل مع تطبيق ما ,وبشكل بسيط أيضا مكتبة requests هي مكتبة للتعامل مع طلبات http ونحتاج أيضا التعامل من json لأن النتيجة سيتم إرجاعها إذا صح التعبير بصيغة json.
2-أمر إختياري لاكن قد يكون مفيد نحتاج الحصول على الكلمة أو السطر المحددة من خلال الفأرة ليتم ترجمتهم وهنا سأستخدم مشروع GTK .
3-أمر إختياري لاكن قد يكون مفيد نحتاج ربط أزرار إختصار Shortcut وعند الضغط عليهم يتم ترجمة ما هو معلم بالفأرة وهنا أيضا سأستخدم مشروع GTK .
4--أمر إختياري لاكن قد يكون مفيد نحتاج إخراج النتيجة من خلال Notification وهنا ممكن إستخدام dbus للتواصل مع الواجهة والطلب منها عرض ال Notification وممكن إستخدام مشروع GTK وهذا ما سأقوم به .
ما هي المتطلبات التي تحتاجها لإكمال هذا البرنامج :
1-أي توزيعة من توزيعات لينكس (ملاحظة إستخدام API الخاص ب Yandex Translate يعمل على أي نظام تشغيل وبأي مكتبة تتعامل مع http لاكن في الشرح شرحت أشياء أخرى إختيارية خاصة بنظام لينكس مع العلم أكيد سيكون لها أشياء بديلة في أنظمة تشغيل أخرى ) .
2-مفسر بايثون إصدار ثلاثة وهو غالبا لا يحتاج تثبيت في توزيعات لينكس أي يأتي مثبت بشكل مسبق .
3-أن تكون بالفعل أكملت تعلم أساسيات بايثون والأفضل أن تقرأ ولو بشكل سطحي عن http وعن json.
4-بطبيعت الحال الترجمة ستتم من خلال تواصل مع تطبيق Yandex Translate لهذا يجب أن يكون الإنترنت متوفر أثناء عمل البرنامج .
5-ستحتاج هذه المكتابات والحزم المشكلة أني لا أعرف أسمائها إلا في توزيعة فيدورا لهذا قد تختلف هذه الأسماء من توزيعة إلى أخرى إذا لم تكن تستخدم فيدورا عليك البحث عنهم في مدير الحزم الخاص بالتوزيعة التي تستخدمها .
# libnotify
# keybinder3
# python3-requests
# pygobject3
# python3-gobject
# gtk3
6-تحتاج مفتاح خاص key يمكن الحصول عليه من خلال عمل حساب في Yandex ,يمكن الحصول على مفتاح مجاني أي أنه غير مدفوع أثناء الشرح سأتطرق لطريقة الحصول عليه.
1-الحصول على المفتاح key.
إذا كان لدينا حساب ندخل منه غير ذلك نقوم بإنشاء حساب خاص بنا .
بعد نجاح الدخول بحسابنا نضغط كما في الصورة لنحصل على مفتاح خاص بنا ننسخه ونحفظه مثلا في متغير في برنامجنا او بأي مكان سهل الوصول إليه.
2-لنبدأ بشرح كيف نستخدم ال API .
سأشرح بشكل عملي وسأقوم بعرض كل اللغات المتوفرة وإن كان هذا الأمر قد لا نحتاجه لاكن ستكون بداية جيدة لكيف ممكن التعامل مع ال API الخاص بهم من خلال المتصفح ومن ثم من خلال لغة البرمجة بايثون.
1-نلاحظ ممكن أن يتم إرجاع النتيجة بصيغة xml أو json سأستخدم في الشرح json .
2-اللغات المتوفرة والرموز الخاصة بها مثلا اللغة العربية رمزها ar و الإنجليزية en .
شروط إستخدام Yandex Translate في برنامجك منهلا مثلا عند عرض النتيجة يجب أن تعرض أيضا الكلام الظاهر في الصورة وبعض الشروط الأخرى الأفضل أن تقرأ الشروط والسياسة والإتفاقيات المتبعة من قبلهم .
للحصول على كل اللغات المدعومة من خلال متصفح نحتاج :
1-نحتاج هذا الرابط ملاحظة نزيل كل المسافة الفارغة قبل علامة الإستفهام .
2-نحتاج المفتاح الذي حصلنا عليه .
3- نحدد اللغة مثلا اللغة الإنجلزية ورمزها en.
1-الرابط .
2-ثم كلمة =key ثم المفتاح الخاص بنا .
3-ثم =ui ثم رمز en (نلاحظ أننا نفصل بين ال key و ui بعلامة & ) .
الأن الحصول على النتيجة برمجيا من خلال بايثون
من خلال مكتبة requests نرسل طلب Get لذات الرابط الذي وضعناه في المتصفح .
1-نتأكد من أن الطلب نجح من خلال التحقق من رقم الرد Response الذي حصلنا عليه ورقم 200 يعني أن الطلب نجح (الأفضل القرأءة قليلا عن http) .
2-النتيجة التي تم إرجاعها .
3-إذا صح التعبير على الرغم من أن النتيجة هي بصيغة json نلاحظ أن النتيجة هي عبارة عن نص.
من دون تفاصيل كثيرة إذا صح التعبير قمت بتحويل النص إلى قاموس dictonery من خلال مكتبة json.
إذا لم ينجح الطلب قد يرجع هذه الأرقام مشروح الرقم والخطأ الذي يعنيه .
2-الترجمة .
ذات المبدأ كما ما سبق شرحه .
1-نحتاج هذا الرابط (نزيل كل الفراغات قبل علامة الإستفهام).
2-نحتاج ال المفتاح key.
3-الكلمة أو السطر الذي يحتاج ترجمة .
4-نحتاج لغة السطر أو الكلمة التي نحتاج ترجمتها واللغة التي سيتم الترجمة لها مثلا من الإنجليزية إللى العربية نكتب الرموز الخاصة باللغتين ونفصل بينهم بعلامة الناقص en-ar .
ذات المبدأ ما تم شرحه سابقا .
1-الرابط .
2-المفتاح .
3-السطر أو الكلمة المراد ترجمتها (وضعت كلمة hello وترجمتها مرحبا ).
4-لغة المصدر واللغة الهدف مفصولين بعلامة الناقص .
نلاحظ النتيجة .
اﻷن برمجيا ذات المبدأ ما تم شرحه سابقا .
أرسلت طلب Get ثم حصلت على النتيجة وحولتها إلى قاموس ثم عرضت من القاموس القيمة للمفتاح text بعدها وجدت أن القيمة عبارة عن قائمة list لهذا حددت أني أريد أول عنصر من هذه القائمة .
(ملاحظة إذا لم تظهر اللغة العربية بشكل صحيح في ال الترمينال Terminal نستخدم ترمينال أخر konsole الخاص ب kde يعمل بشكل جيد مع اللغة العربية ) .
سبق وتم شرحه .
3-طلب إستعلام عن لغة كلمة ما أو سطر ما .
أيضا ذات المبدأ كما سبق وشرح لهذا سأحاول الإختصار .
1-الرابط (نزيل كل الفراغات قبل علامة الإستفهام).
2-المفتاح .
3-الكلمة .
نلاحظ أنه إكتشف أن كلمة مرحبا هي باللغة العربية .
رابط الجزء الثاني https://arfedora.blogspot.com/2017/08/2-yandex-translate-python.html