1-إنشاء برنامج للترجمة الفورية من خلال إستخدام Yandex Translate و python

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

 

 

إنشاء برنامج للترجمة الفورية من خلال إستخدام 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-الكلمة .




 نلاحظ أنه إكتشف أن كلمة مرحبا هي باللغة العربية .






شارك الموضوع

مواضيع ذات صلة

التسميات

2016 (1) 23 (1) 24 (3) 25 (1) 26 (1) 27 (1) 28 (1) 29 (1) 30 (1) 31 (1) إتصال (1) إختراق (2) أدة (1) أدوات (1) إرسال (1) أرش (1) إسترجاع (1) إستعلام (1) أشياء (7) أشياء تفعلها (8) إصدارات (1) إصلاح (6) إصلاحrealtek (1) إضافات (1) إضافة (1) أعجوبة (1) أعجوية (1) إعداد (1) إقاف (2) أقسام (1) ألعاب (2) الفرق (1) الفلاشة (1) القسم هوم (1) الكتابة بالعربية (1) إلى جانب (1) أندرويد (1) إنشاء (1) إنشاء مستودع (1) أيات (1) أيزو (1) أيقومات (1) أيقونات (1) ايقونات (2) باتش (1) بارامتر (1) بايثون (16) برامج (56) برامج إسلامية (2) برنامج (19) برودباند (1) بعد (7) بعد التثبيت (8) بلوتوث (1) بناء (1) بناء توزيعة (1) بيئة عمل (1) تثبيت (29) تجهيز (2) تجهيو من دون (2) تحزيم (2) تحقق (1) تحويل (1) تخصيص (5) ترجمة (2) ترقية (1) تسجيل الشاشة (1) تشغيل (3) تعريف (13) تعطيل (2) تعلم (6) تفعلها (7) تفعيل (2) تقطع الأحرف (1) تقعيل (1) تنزيل (2) تورنت (1) توزيعة (1) توسعة (1) ثيم (5) ثيمات (1) جافا (1) جماليات (7) جنوم (1) حجم (1) حرق (2) حزمة (1) حل (2) دالة (1) دورة (1) روتر (1) ريدهات (2) سكربت (2) شرح (11) صورة متحركة (1) فايرفوكس (1) فتح منفذ (1) فصل (1) فلاشة (3) فيدورا (29) فيدورا بالعربي (1) قاموس (1) كالي (2) كتاب (2) كتب (2) كرت (1) كروت الشاشة (1) كلمة المرور (2) كورس (1) كورورا (1) لعبة (1) لينكس (2) لينكسو (1) ماهو (6) متغير البيئة (1) مجانا (1) محاكات (2) محاكي (1) محمل الإقلاع إصلاح (1) محمول (1) مستودعات (1) مشكلة (2) ملف نصي (1) من إصدار (1) نظام ملفات (1) نمط (2) نواة (1) هجين (4) واجهات (1) وايرلس (1) وهمي (2) ويندوز (2) access token (1) active (2) add (1) after (7) alias (1) andoid studio (1) android (2) android studio (1) Apache (2) appstream (1) arboot (1) arboot fix (1) arch (3) archiso (1) arfedoraccframework (3) arfedoracontrolcenter (3) arfedy (1) atari (1) atom (1) ayat (1) bicon (1) blivet (1) blivet-gui (1) bls (1) bluetooth (1) book (2) books (2) bootloader fix (1) boxes (3) broadband (1) broadcom (1) broadwayd (1) bugzilla (1) build (2) builddep (1) bumblebee (1) bumbleebe (2) burn (2) byzanz (1) c# (1) calamares (1) camera (1) cannot open display (1) cannot open display: :0 (1) ccna (1) cd (2) centos (1) change (2) chsh (1) cisco (1) clion (1) clone (1) code.org (1) command (2) command line (2) commands (2) comps (1) connect (1) contra (1) convert (1) copr (1) could not connect to the debugger (1) cpu (1) cpufreq (1) createrepo (1) csharp (1) css (1) curlew (1) custom (2) dbus (3) dconf (1) dd (1) Decryption (1) defragment (2) desktop (1) desktop entry (1) dictionary (1) Digital signature (1) disks (1) dnf (14) do (7) docker (1) dolphine (1) download (2) downloads manager (1) dply (1) DRI PRIME (1) driver (9) dukto (1) e2fsck (1) efi (4) el forkane (1) elforkane (1) elif (1) emergency (3) emergency mode (3) emulator (1) enable (2) Encryption (1) entries (1) error mounting /dev/sd (1) ext4 (1) extend (1) extensions (2) fakenes (1) fast startup (2) fceux (1) fedora (45) fedora 25 alpha (1) fedora cloude (1) fedora28 (1) fedoraوفيدورا (1) fedy (1) fgmac (2) fgmac-24 (1) file (1) find (1) firefox (2) fix (10) flash mem (1) flash memory (2) flashplayer (1) flatpak (4) forward (1) fpaste (1) free (1) freebsd (1) freevpn (1) function (1) game (3) games (2) gedit (1) genymotion (1) gettext (1) gif (1) gimp (1) gio (1) github (5) github.io (1) glibc-common (1) gmaclinux (2) gnome (16) gnome boxes (1) gnome disk (1) gnome shell (13) gnome terminal (1) gnome-disks (1) gnu (1) godot (1) goldendict (1) google web designer (1) gpg (2) gradio (1) group (2) grub (7) grub2 (1) grubenv (1) gstreamer (1) gtk (8) gtk+ (1) gvrecord (1) hack (2) hash (4) hdmi (3) hibernate (1) home (2) hosspot (1) html (1) http (1) hybrid (2) icon (2) icons (3) ide (1) if (1) install (32) installf (9) installing (7) intellij idea (1) internet downlaod manager (1) iso (2) java (3) jdk (2) jetbrains (1) jetbrains toolbox (1) kali (2) kde (3) kernel (1) kernel parameters (1) key (1) kickstarts (3) korora (1) krita (1) kvm (2) kvm switches (1) lamp (1) laps (1) learn (1) legacy (1) legacy bios (3) libreoffice (2) libvirt (1) life is trange (1) linux (8) lutris (1) lv (1) lvm (2) mac (4) macros (1) mageia (1) make distro (1) mariadb (1) MariaDB and PHP Lamp Server (1) markdown (2) mate terminal (1) mbr (1) md5sum (1) mirro (1) mkconfig (1) mo (1) mono (2) monodevelop (2) mount (1) mp4 (1) multi screen (1) mumble (1) murmur (1) natron (1) nautilus (2) nes (1) netbeans (1) netcut (1) nintendo (1) ntfs (2) nvidia (8) objdesktop (1) ojuba (2) oop (1) opensuse (1) openvpn (1) opera (1) optirun (2) oracle (1) os.path (1) package (2) page (1) pages (1) pantheon (1) parameter (1) parameters (1) password (2) patch (1) path (2) pdf (1) peek (1) photoshop (1) php (1) phpstorm (1) plasma (2) plugin (3) plugins (1) plymouth (1) po (1) polkit (1) port (1) portable (1) portmatp (1) PostinstallerF (1) pot (1) powerline (2) powerline-go (1) preset (1) preview (1) primary display (1) primeos (1) primus (1) primusrun (1) private key (1) programs (3) protonvpn (1) pubg (1) public key (1) put (1) pv (1) pycharm (2) pygobject (4) pygtk (5) python (56) pythonk (1) qdbus (1) qemu (3) qemu-kvm (1) query (1) radio (1) raspberry pi (4) raspbian (2) reclaim space (2) record (1) redhat (3) remix (1) remix os (1) repo (4) repofrompath (1) repository (1) reset (1) resize2fs (1) rhel (1) router (1) rpm (7) rpmbuild (1) rtl8188ee (1) rtl8192c (1) rtl8192ce (1) rtl8192cu (1) rtl8192de (1) rtl8192ee (1) rtl8192se (1) rtl8723ae (1) rtl8723be (1) rtl8723com (1) rtl8821ae (1) rubymine (1) salix (1) scratch (2) scratch2.scratch 2 (1) screencast (1) script (2) seconday display (1) self (1) send (1) server (1) settings (2) sha1256sym (1) sha256sum (1) share desktop (1) shell (2) shortcut (1) shutter (1) skel (1) skel ماهو (1) skype (1) skype.برامج (1) slackware (1) software (1) soundcloud (1) source code (1) spec (2) spin (1) sqlmap (1) ssh (3) sshd (2) st-trans (1) steam (2) store (1) su (1) sudo (2) sudoers (1) swap (2) switch (2) Switchable Graphics (1) synergy (1) systemd (1) systemd preset (1) teamviewer (1) terminal (2) theme (5) things (7) thomson (1) thread (2) threading (2) thumbnails (1) to (8) tor (2) tor browser (1) torrent (1) transfer closed with 736700 bytes remaining to read (1) translation (1) turn off (2) tuxcut (1) txt (1) ubuntu (1) uefi (5) unable to mount location (1) unity (1) unity3d (1) upgrade (1) usb (1) useradd (2) utf-8 (1) vega (1) verify (1) vg (1) vgaوتبديل (1) vi (1) video (1) vim (1) vino (1) virsh (1) virt-install (1) virt-manger (1) virtual (1) virtual box (1) virtualbox (3) vmware (3) vnc server (1) vokoscreen (1) vpn (1) web server (1) webstorm (1) wifi (1) windows (4) windows-1256 (1) wine (1) woeusb (1) X Error: BadAccess (1) X Error: BadDrawable (1) xdg-mime (1) xdman (1) xfce (1) xfconf-query (1) yum (2) zeal (1) zealdocs (1)