المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كيفية عمل موقع بعدة لغات ؟



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




<html dir="rtl"> <!-- نستخدمها لتحديد اتجاه محتويات الصفحة من اليسار لليمين أو العكس -->




2- معلومات من لغة PHP ويهمنا منها:




<?
$a = "Hello";
// وهي طريقة تعيين قيمة معينة لمتغير بأي اسم
$a[0] = "Number 1";
$a[1] = "Number 2";
// تعيين قيمة معينة لمتغير بأي اسم ولكن على هيئة مصفوفة متعددة العناصر
echo $a;
// طباعة القيمة الموجودة في متغير ما
if($a == $b) {
$c = $d;
}
// تستخدم لتحقيق شيء ما إذا كان الشرط داخل الجملة صحيحا
set******("Language", "ar");
// وضع كوكيز بجهاز الزائر لتخزين قيمة معينة فيها
$a = $_******["Language"];
// استدعاء القيمة التي في الكوكيز
$a = $_GET['a'];
// معرفة القيمة التي أرسلتها الصفحة السابقة إلى هذه الصفحة بناء على اختيار الزائر
?>



- معلومات من تقنية الستايلات CSS ومنها:




p, td {font-family: Tahoma; font-size: 12px; color: #000000}



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




<html dir="ltr">
<head>
<title>Internet Plus Home Page</title>
<style type="text/css">
body, p, td {font-family: Verdana; font-size: 14px; color: #ffffff}
a {color: #ff0000}
a.hover {color: #00ff00}
</style>
</head>
<body>
<p>Welcome to my website. I am glad you are here :) .</p>
<p><a href="page.htm">Click here</a> to visit the other page.</p>
</body>
</html>




الطريقة

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]



مما سيجعل الصفحة تبدو بهذا المنظر (بدون الكود الذي أنشأناه في الخطوة السابقة والموجود قبل الصفحة):



<html dir="<? echo $a[0][$lang]; ?>">
<head>
<title><? echo $a[1][$lang]; ?></title>
<style type="text/css">
<? echo $a[2][$lang]; ?>
</style>
</head>
<body>
<p><? echo $a[3][$lang]; ?></p>
<p><a href="page.htm"><? echo $a[4][$lang]; ?></a> <? echo $a[5][$lang]; ?></p>
</body>
</html>




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



<?
$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">1</a><br><a href="?lang=en">2</a>



كده يظهر للزائر رقم 1 للعربي و 2 للانجليزي .. بس برضو احنا محددين من الاول في الكود اللي اعلى الصفحة ان lang يساوي قيمة محددة .. الحل هو أننا نشيل السطر اللي فيه




$lang = "ar"; // أو en



ونضع التالي:


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



كده الزائر لما يضغط على لغة الصفحة لغتها تتغير .. جربها .. 5- تذكر اختيار الزائر فاضل حاجة؟ ايوه .. ان الموقع كله يفتكر اختيار الزائر! بس لأنها مش مضمونة فأنا بافضل اني ارسل قيمة lang من كل صفحة للصفحة التانية مباشرة من غير تسجيل كوكيز .. لأنه بعض الناس الكوكيز عندهم مش شغالة كويس .. انما اذا احتجتها ف ح نغير الكود اللي لسه عاملينه في الخطوة السابقة ليكون:




<?
if(isset($_GET['lang'])) {
$lang = $_GET['lang'];
set******("lang", $lang);
}
elseif(isset($_******['lang'])) $lang = $_******['lang'];
else $lang = "ar";
?>



انتهـــــــــى.



منقـول من سوالف سوفت (لأخي العندليب)



تحياتي

عاشق السمراء
12 - 03 - 2005, 23:43
مسااااااااااااء جميل ...


يعطيك العافية .. اخي المهاجر !!

كنوز
13 - 03 - 2005, 19:07
ماشاء الله اخوي ضيف حلوه طريقة الشرح
بس جان حطيت صوره للشكل عند كتابة كل كود ( طماعه آنا )
تسلم على الشرح