بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
الموضوع قيد المراجعة النهائية
مدخل وبعض المعلومات عن إنشاء برنامج بلغة بايثون يمكن ترجمته من خلال 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 فيه الكثير من المعلومات مثل برامج خاصة ممكن أن تستخدم وطريقة التواصل وإدارة فريق ترجمة وكيفية الترجمة (على طريقتهم).