الجمعة، 18 مايو 2012

تعدد لغات الموقع

من طرف Mohammed Al-kenani  |  نشر في :  2:10 م 0 تعليقات

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


لدينا موقع محتوياته باللغة العربية ونريد أن نصنع منه نسخة باللغة الإنجليزية .. وربما نسخا بالفرنسية ولغات أخرى ..

الصعوبات




1- اتجاه الصفحة ككل سيكون مختلفا عند التحويل من أو إلى اللغة العربية .. 2- يجب تغيير كل المحتويات النصية وإتاحتها لتظهر باللغات الأخرى عن طلبها .. 3- استايلات الصفحات من أنواع الخطوط وأحجامها لا يصلح كما هو لكل اللغات ويحتاج إلى تعديل يناسب كل لغة .. 4- إذا كانت هناك أوامر طباعة محتويات باستخدام لغة برمجة (مثلا echo في لغة PHP) فيجب تغيير المحتويات المطبوعة أيضا .. 5- يجب أن يتذكر الموقع اللغة التي اختارها الزائر لتكون هي اللغة الأساسية له في كل الصفحات ..

المعلومات المستخدمة

1- معلومات عادية عن HTML ويهمنا جدا منها:

- معلومات من لغة PHP ويهمنا منها:
$a = "Hello";
// وهي طريقة تعيين قيمة معينة لمتغير بأي اسم
$a[0] = "Number 1";
$a[1] = "Number 2";
// تعيين قيمة معينة لمتغير بأي اسم ولكن على هيئة مصفوفة متعددة العناصر
echo $a;
// طباعة القيمة الموجودة في متغير ما
if($a == $b) {
$c = $d;
}
// تستخدم لتحقيق شيء ما إذا كان الشرط داخل الجملة صحيحا
setcookie("Language", "ar");
// وضع كوكيز بجهاز الزائر لتخزين قيمة معينة فيها
$a = $_COOKIE["Language"];
// استدعاء القيمة التي في الكوكيز
$a = $_GET['a'];
// معرفة القيمة التي أرسلتها الصفحة السابقة إلى هذه الصفحة بناء على اختيار الزائر
?>
معلومات من تقنية الستايلات CSS ومنها:
p, td {font-family: Tahoma; font-size: 12px; color: #000000}
فكرة الطريقة
تعتمد الطريقة على تخزين كل المحتويات النصية الموجودة بالموقع (الكتابات) من محتويات عادية معروضة للزوار أو مختفية مثل الستايل ووسم الهتمل الخاصة باتجاه الصفحة - تخزين كل هذه المتغيرات في متغير من نوع المصفوفة المزدوجة متعددة العناصر (يمكن الكلام صعب بس الطريقة سهلة إن شاء الله) .. وهكذا فبمجرد طلب الزائر للصفحة بلغة ما نستدعي المتغير الذي حدد على أنه خاص للغة التي طلبها الزائر ..
أما من ناحية تذكر الموقع للغة التي اختارها الزائر فسنستخدم الكوكيز ..

ملاحظات


1- الطريقة هنا سوف تكون على مراحل .. فإذا كنت تنوي أن تستفيد من هذه الطريقة فافتح برنامج التصميم الذي تستخدمه وابدأ في تنفيذ الأمثلة واحدا واحدا .. لأن المقصود هو الشرح وليس وضع الطريقة مرة واحدة .. 2- لا تأخذ الأمثلة نسخ ولصق .. اكتبها من جديد لأنه ممكن تكون هنا أخطاء إملائية ..
المثال
لنفترض أن لدينا صفحة هكذا:





Welcome to my website. I am glad you are here .

Click here to visit the other page.

الطريقة

هذا الكود سنجعله يوضع في أعلى الصفحة قبل أي محتويات أخرى بما فيها الهتمل:
1- تحويل كل محتويات الصفحة إلى مصفوفة
// سنقوم بوضع محتويات الصفحة المطلوبة كما هي في مصفوفة
// ولكي نعرفها أن لغة هذه المحتويات هي الإنجليزية فسوف نستخدم حرفي: en
$a = array();
$a[0]['en'] = "ltr"; // سوف يكون هذا العنصر هو المحدد لاتجاه الصفحة
$a[1]['en'] = "Internet Plus Home Page"; // عنوان الصفحة
$a[2]['en'] = "body, p, td {font-family: Verdana; font-size: 14px; color: #ffffff}
a {color: #ff0000}
a.hover {color: #00ff00}"
; // الستايل كله
$a[3]['en'] = "Welcome to my website. I am glad you are here .";
$a[4]['en'] = "Click here";
$a[5]['en'] = "to visit the other page.";
?>
2- تغيير الصفحة لنجعلها تقرأ المحتويات من المصفوفة
هنا سوف نضع قبل الكود السابق سطرا يخبر الصفحة بأن اللغة المطلوبة هي الإنجليزية (ليس لدينا غيرها للمحتويات حاليا):

$lang = "en";
?>
إذن سيمكننا استخدام المتغير الذي اسمه $lang ليكون مكان كلمة en حيث إن قيمته هي en ..
ونبدأ في تغيير الصفحة .. بدلا من كل محتوى سوف نضع المتغير الخاص بهذا المحتوى .. إذن مكان العنوان الخاص بالصفحة سنستخدم:

$a[1][$lang]
?>
مما سيجعل الصفحة تبدو بهذا المنظر (بدون الكود الذي أنشأناه في الخطوة السابقة والموجود قبل الصفحة):
echo $a[0][$lang]; ?>">





echo $a[3][$lang]; ?>

 echo $a[5][$lang]; ?>


ببساطة وضعنا المحتويات في مصفوفة (a) ووضعنا اسم اللغة في متغير (lang) .. ولذلك فسوف تظهر الصفحة الجديدة المصنوعة بالPHP كما كانت في السابق بالهتمل .. كل ده وانتهينا من عمل الصفحة بلغة واحدة بس


عايزين نضيف اللغة العربية .. طيب نرمز لها باي حروف؟ ar? أوكي .. فاكر الكود الأول اللي عملناه ووضعنا فيه كل المحتويات؟ خذ منه نسخة (copy) والصقها بعد نهاية المصفوفة الخاصة باللغة الإنجليزية .. وغير كل حروف en فيها إلى ar .. يعني يكون عندنا نسختين من المصفوفة الآن واحدة en وواحدة ar ..
3- إضافة اللغات الأخرى
غير محتويات المصفوفة الجديدة إلى الكلمات العربية المقابلة لها .. يعني ح يكون عندنا بعد كود أول خطوة:

$a[0]['ar'] = "rtl";
$a[1]['ar'] = "إنترنت بلس - الصفحة برامج";
$a[2]['ar'] = "body, p, td {font-family: Tahoma; font-size: 12px; color: #ffffff}
a {color: #ff0000}
a.hover {color: #00ff00}"
;
$a[3]['ar'] = "أهلا بك في موقعنا .. أنا سعيد بوجودك .";
$a[4]['ar'] = "اضغط هنا";
$a[5]['ar'] = "لزيارة الصفحة التالية.";
?>
طبعا ممكن نكرر هذه الخطوة لأي عدد من اللغات .. والطريقة -يارب- تكون واضحة ..
الآن جرب شيئا صغيرا .. فاكر في الخطوة رقم 2 لما وضعنا متغير اسمه lang وقلنا قيمته en? غيره إلى قيمة تانية وهي ar .. الآن الصفحة تعرض بالعربية ومن اليمين للشمال وبخط تاهوما وكله تمام

الآن يمكننا عرض الصفحة بلغة من اللغتين .. لكن يجب أن نحددها من الأول طبعا .. وده مش صح .. المفروض الزائر يختار .. يبقى أولا نضع وصلات لتغيير اللغة ولتكن في كود الصفحة نفسها .. في أي مكان بالصفحة بعد رسالة الترحيب مثلا ضع:
4- معرفة اللغة التي يريدها الزائر
<a href="?lang=ar">1a>
<
a href="?lang=en">2a>
?>
كده يظهر للزائر رقم 1 للعربي و 2 للانجليزي ..
بس برضو احنا محددين من الاول في الكود اللي اعلى الصفحة ان lang يساوي قيمة محددة .. الحل هو أننا نشيل السطر اللي فيه

$lang = "ar"; // أو en
?>
ونضع التالي:
if(isset($_GET['lang'])) $lang = $_GET['lang'];
// بنشوف لو الزائر ضغط على رقم عشان يختار لغة واللا لا .. لو ايوه يبقى نخلي المتغير قيمته تكون القيمة اللي اختارها الزائر
else $lang = "ar";
// لو ما كانش اختارها ح نحددها احنا تكون عربي
?>
كده الزائر لما يضغط على لغة الصفحة لغتها تتغير .. جربها ..


فاضل حاجة؟ ايوه .. ان الموقع كله يفتكر اختيار الزائر! بس لأنها مش مضمونة فأنا بافضل اني ارسل قيمة lang من كل صفحة للصفحة التانية مباشرة من غير تسجيل كوكيز .. لأنه بعض الناس الكوكيز عندهم مش شغالة كويس .. انما اذا احتجتها ف ح نغير الكود اللي لسه عاملينه في الخطوة السابقة ليكون:
if(isset($_GET['lang'])) {
$lang = $_GET['lang'];
setcookie("lang", $lang);
}
elseif(isset(
$_COOKIE['lang'])) $lang = $_COOKIE['lang'];
else
$lang = "ar";
?>
5- تذكر اختيار الزائر
المصدر 

التسميات :
Mohammed Al-kenani

كاتب مختص في مدونة مفكر التقنية

اشتراك

الحصول على كل المشاركات لدينا مباشرة في صندوق البريد الإلكتروني

شارك الموضوع

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

0 التعليقات:

back to top