تطبيق على المواقع بيى أتش بي تعديد اللغة

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

مقدمة

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

طرق أنضمة عمل موقع متعدد اللغات

السؤال الأول الذي يطرح نفسه عند تصميم موقع كيف أقوم بعمل هذا الموقع دون عمل نسختين هل أقوم بإستعمال المتغييرات بطلب من الملفات؟ هل أستعمل Array؟ ملف cvs؟.
يمكن أنه توجد طرق وبعضها وبعض مزاياها وعيوبها.

Array

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

ملف CSV

سمعت أنه يستعمل لسهولة تعامل مع غير المتخصصين الذين توكل له المهمة لأنه يمكن تغييره بأي محرر لنصوص، لكن توجد مشكلة ترميز utf8

ملف ini

مثل ملفات cvs ،الوحيد الذي يتغير هو كيفية تنضيم النصوص،وبما أنه يسهل على غير المتخصص التعمل معه لكن مشكلة في كل نتيجة ترميز utf8.

TMX

يضهر أني لا أعرف عليه شيء لكن يقوم على ملف مثل xml لكن قرائة ذالك الملف ثقيلة بعض الشيء

Gettext

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

إستعمال gettext مع بي أتش بي

سأشرح هذا النوع لمزياه وتطوره، ,ولإرضاء جميع الإستعملات الأخرى.

تنصيب gettext في أبونتو أو ديبيان

لتجارب في الحاسوب الشخصي نحتاج لتنصيبه إذا كان لم يتم تنصيبه مرافقا.
# apt-get install php-gettext
إعادة تشغيل أباتشي
/etc/init.d/apache2 restart

تنصيب محرر gettext

بضهر أنه سنحتاج محرر لهذا النوع من الملفات لبهذا أنصح بمحرر PoEdit وتنصيبه في أبونتو أو ديبيان تكون على طريقة سطر.
# apt-get install poedit
للذين لا يعرفون طعم الحرية فهناك نسخة .exe لويندوز في موقع مطور البرنامج.

الخطوة الأولى:عمل دليل

قبل كل شيء أعرف كيفية عمله
1.يتم عمل مجلد بالغات المترجمة
2. في الملفات بي أتش بي يتم تعليم السطور التي سوف تترجم ب (_) بحسب اللغات في المجلد السابق
4 . سطور أكواد لبدأ العملية
5 . الباقي تلقائي
يضهر معقد لكن يمكن أنها طريقة شرحي لا أحب نسيان شيء، لإستعماله هي طريقة جد سهلة أكثر من array.
الأن نضع مثال لتسهيل الأمور لدي مشروع إسمه webarlinux وفي المشروع مجلد templates يحتوي على ملفات أقوم بطلبها مثل header.php،footer.php،home.php وغيرها وأخيرا المشروع يوجد في /var/www
لكي لا أعقد الأمور سأستعمل ملف home.php وحده في ملف template ومحتواه سيكون عبارة على
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title><?= _("مرحبا بالعالم") ?></title>
</head>
<body>
<h1><?php echo _("مرحبا بالعالم");?></h1>
</body>
</html>

وليس علينا نسيان إستعمال _ لكل ما نود ترجمته، لكي تلقائيا يعرف gettext ما سيقوم بترجمته وكي يسهل على poedit البحث على ما سيتم ترجمته.
الأن نفوم بالبحث على PoEdit وفتحه وأول فتح له يطلب أضن الإسم والبريد نضيفهما وبعدها مباشرة file–>New Catalog وبعدها معلومات المشروع ولغة المترجم لها والترميز

مكان مجلدات المشروع والملفات التي سوف تترجم

كيفيت التعرف على المواد التي سوف تترجم كما سبق وضعنا _ لكن يمكن إستعمال نضام أخر

وعند الحفض علينا وضعه في المجلد locale الذي بدوره مقسم إلى أجزاء أخرى في المثال هذا كل المسار الحفض /var/www/webarlinux/locale/en_US/LC_MESSAGES/app.po

الخطوة الثانية: بدأ الترجمة

بعد الحفض أضن أنه تم البحث على ما سيتم ترجمته وفتح نافذه يوجد بها ما سيتم ترجمته نقوم بترجمة ونقوم بحفض الملف وبهذا يتم تلقائيا يضع ملف من صيغة أخرى في نفس المجلد والذي يستعمل لترجمة

الخطوة الثالثة: تعريف بي أتش بي بما سيقوم بترجمته

نفتح ملف الذي سيتحكم باللغة أو كل الموقع في هذه الحالة أقوم بعمل ملف index.php في ملف المشروع /var/www/webarlinux/index.php وأضع له أين يجد اللغات التي يحتاج

<?php
if(isset($_GET["lang"])=="en"){
//تفعيل اللغة المستعملة
putenv("LC_ALL=en_US.UTF-8");
setlocale(LC_ALL, "en_US.UTF-8");
//مكان ملفات الترجمة
bindtextdomain("app",  "./locale");
//إسم ملف الترجمة
textdomain("app");
}
// عمل Include للملف الويب الذي نستعمل
include("templates/home.php");
?>

وهكذا بكل سهولة نحصل على موقع متغيير اللغات في هذه الحالة على المستخدم طلب اللغة التي سيمر لها عبر ?lang=en

الخطوة الرابعة:إضافة نصوص جديدة لترجمة

إذا رجعت وأضفت نص تحتاج أن يترجم في home.php عليك وضعه تحت (_) و بهذا عند تحديث PoEdit يقوم تلقائيا بجلبه وإضافته ليتم ترجمته

وقبل الأخير أترك تجربة وتحميل كود التجربة
تجربة تحميل
وفي الأخير بالتوفيق

محمد حنين

الإسم الكامل محمد حنين أحد geek من أمد طويل ، مطور ويب، محب للحرية، مستعمل نضام لينوكس، وأخيرا مجرم باللغة العربية للأسف في وقتها. معلومات أكثر عني أو الإتصال بي Mohammed Hanine

You may also like...

2 تعليقان

  1. يقول محمد:

    أخ محمد ألاحظ بأنك تستخدم اللغة الفرنسية في الشرح ومعظمنا المشرق العربي لانفهمها

    • يقول mohammed:

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *