مدخل وبعض المعلومات عن إنشاء برنامج بلغة بايثون يمكن ترجمته

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

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



الموضوع قيد المراجعة النهائية

مدخل وبعض المعلومات عن إنشاء برنامج بلغة بايثون يمكن ترجمته من خلال gettext ومعلومات عن الترجمة بشكل عام .





1-أولا بعض المعلومات .


-ماهي الملفات التي تستخدمها gettext والمسؤولة عن ترجمة البرامج ؟

نلاحظ كما في الصورة في الأسفل مجلد locale بداخله مجلدات للغات المستخدمة مثلا اللغة العربية إختصارها حرفين ar أي arabic داخل هذا المجلد يوجد مجلد أخر LC_MESSAGES وداخل هذا المجلد يوجد ملفات الترجمة للبرامج المترجمة للعربية مثلا برنامج occ الذي هو مركز تحكم توزيعة أعجوبة ,ملف الترجمة ينتهي بالاحقة mo .





-كيف يعمل البرنامج بلغة النظام بشكل تلقائي؟

 بشكل بسيط عندما تقوم بتغير لغة النظام مثلا للغة العربية يتم إستخدام ملف الترجمة والذي ينتهي بالاحقة mo على حسب لغة النظام مثلا لنفترض لغة النظام عربية مثلا لو قمت بتشغيل برنامج  vokoscreen يتم وبشكل إفتراضي  إستخدام ملف الترجمة من هذا المسار
 usr/share/locale/ar/LC_MESSAGES/vokoscreen.mo/ طبعا إن وجد ملف الترجمة إذا لم يكن هناك ملف ترجمة يعمل البرنامج  باللغة الإفتراضية الذي كتب فيها  غالبا الإنجلزية, وهذا الأمر يسري على كل اللغات الأخرى.

ممكن أيضا إجبار البرنامج ليعمل بلغة محدد مثال كما في الأسفل برنامج أعمل عليه بعض التجارب (لا تلتفتو كثيرا لصحة الترجمة :D ) .



-ماهي الشروط ليعمل البرنامج بالترجمة المطلوبة ؟

أولا وبشكل بسيط يجب أن يكون البرنامج تم برمجته لهذا يعني مثلا سأتكلم عن بايثون وgettext يجب أن يكون تم إستخدام مكتبة gettext أثناء البرمجة (ستتوضح الأمور أثناء الشرح) .

ثانيا إنشاء ملف mo ووضعه في مكانه الصحيح .

وهذا ما سأقوم به في هذا الشرح  أي إنشاء برنامج بايثون بسيط وإنشاء ملف الترجمة له وتجربته .







2-تثبيت بعض الأشياء .


أول سنحتاج تثبيت gettext أنا أعمل من فيدورا نستبدل مدير الحزم الخاص بتوزيعتنا أظن إسم الحزمة لن يتغير بين التوزيعات .

sudo dnf install gettext

ثانيا فقط لنجاح عمل الأمثلة (بالمناسبة أستخدم بايثون إصدار ثلاثة)  .
sudo dnf install python3-gobject-base







3-إنشاء برنامج بإستخدام بايثون وإستخدام gettext .



 هذا هو البرنامج لكن من دون إستخدام gettext البرنامج فيه زرين (Button) كل زر فيه كلمة بحاجة للترجمة .



 وهذا هو ذات البرنامج لكن مع إستخدام gettext نلاحظ التغيرات عمل import لgettext ثم تهيئته ثم إستخدام _ مع الأقواص للكلمات التي سنحتاج ترجمتها.


1-المسار الذي سيتم بداخله حفظ ملف الترجمة.
 (ملاحظة نحدد فقط مسار مجلد locale ولانحتاج تحديد مسار ملف الترجمة أو مسار مجلد ar للغة العربية أم مسار مجلد LC_MESSAGES

ملاحظة أخرى ممكن إنشاء مجلد locale وar واللغات الأخرى...إلخ وLC_MESSAGES بشكل يدوي بأي مكان أخر مثلا في داخل المجلد الموجود فيه البرنامج ثم نضع مساره بدل usr/share/locale/ أساسا أظن عند إستخدام هذا المسار الإفتراضي لسنا بحاجة لتحديد مساره.






3-إنشاء ملف الترجمة وتجربة البرنامج .


 ننفذ هذا الأمر إنشاء ملف pot وهي مثل إستمارة توزع لمن يريد ترجمة البرنامج للغته ملاحظة إسم البرنامج أي السكربت الذي أعمل منه gett.py .

 xgettext -d gett -o gett.pot gett.py

 ملاحظة خيار d- ثم gett هو ال domain المذكور في البرنامج لاحظو الصورة في الأسفل .






 هذا هو ملف pot لانعدل عليه مباشرتا لهذا نغلفه .


نأخذ نسخة من ملف pot ونسميه بذات الإسم مع تغير pot إلى po وهذا هو الملف الذي سنعمل عليه لترجمة البرنامج .



 من أي محرر نصوص ندخل على ملف po هذه هي الأشياء التي سنقوم بتعديلها.

 أولا مكان fuzzy نضيف مثل تعليق كما في الصورة .

ثانيا نضيف إسم البرنامج ورقم إصداره .

ثالثا تاريخ أخر مراجعة .

رابعا  إسم المترجم وبريده الإلكتروني.

خامسا إسم فريق الترجمة والبريد الإلكتروني الخاص بهم للتواصل معهم .

سادسا اللغة .

سابعا نضع ترميز utf-8 .

ثامنا وتاسعا ترجمة الكلمات .


الأن إنشاء ملف mo ملاحظة ملف mo ليس ملف نصي يعني لا تحاولو قراءته بمحرر النصوص.

msgfmt -o gett.mo  gett.po



 ننقل ملف mo لمكانه الصحيح.

sudo cp gett.mo /usr/share/locale/ar/LC_MESSAGES/



الأن لتجربة البرنامج بلغة العربية نغير لغة النظام إلى العربية أو نضيف كما في الصورة لإجباره ليعمل باللغة العربية .

LANGUAGE=ar python3 gett.py




أخيرا تعلمنا من هذا الشرح أساسيات بناء برامج قابلة للترجمة وتعلمنا أيضا كيف ممكن ترجمت البرامج لمزيد من المعلومات تابعو هذا الرابط الخاص بفريق arabeyes فيه الكثير من المعلومات مثل برامج خاصة ممكن أن تستخدم وطريقة التواصل وإدارة فريق ترجمة وكيفية الترجمة (على طريقتهم).

شارك الموضوع

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

التسميات

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)