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

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



linnou
11-01-2013, بتوقيت غرينيتش 09:14 AM
http://www.dzbatna.com/images/icons/iconrote.gif ظƒظٹظپظٹط© ط¹ظ…ظ„ ظ…ظˆظ‚ط¹ ظ…طھط¹ط¯ط¯ ط§ظ„ظ„ط؛ظ€ظ€ط§طھ (http://www.dzbatna.com/t395151/)



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


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


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

رمز PHP:

<code style="white-space:nowrap"> <code> <html dir=\"rtl\"> <!-- نستخدمها لتحديد اتجاه محتويات الصفحة من اليسار لليمين أو العكس -->
</code> </code>

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

رمز PHP:

<code style="white-space:nowrap"> <code> <?
$a = "Hello";
// وهي طريقة تعيين قيمة معينة لمتغير بأي اسم
$a&#91;0&#93; = "Number 1";
$a&#91;1&#93; = "Number 2";
// تعيين قيمة معينة لمتغير بأي اسم ولكن على هيئة مصفوفة متعددة العناصر
echo $a;
// طباعة القيمة الموجودة في متغير ما
if($a == $b) {



$c = $d;
}
// تستخدم لتحقيق شيء ما إذا كان الشرط داخل الجملة joomla صحيحا
set******("Language", "ar");
// وضع كوكيز بجهاز الزائر لتخزين قيمة معينة فيها
$a = $_******&#91;"Language"&#93;;
// استدعاء القيمة التي في الكوكيز
$a = $_GET&#91;'a'&#93;;
// معرفة القيمة التي أرسلتها الصفحة السابقة إلى هذه الصفحة بناء على اختيار الزائر
?> </code> </code>

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

رمز PHP:

<code style="white-space:nowrap"> <code> p, td {font-family: Tahoma; font-size: 12px; color: #000000}
</code> </code>

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

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

المثال
لنفترض أن لدينا صفحة هكذا:

رمز PHP:

<code style="white-space:nowrap"> <code> <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>
</code> </code>

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

رمز PHP:

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

2- تغيير الصفحة لنجعلها تقرأ المحتويات من المصفوفة
هنا سوف نضع قبل الكود code السابق سطرا يخبر الصفحة بأن اللغة المطلوبة هي الإنجليزية (ليس لدينا غيرها للمحتويات حاليا):

رمز PHP:

<code style="white-space:nowrap"> <code> <?
$lang = "en";
?> </code> </code>

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

رمز PHP:

<code style="white-space:nowrap"> <code> <?
$a&#91;1&#93;&#91;$lang&#93;
?> </code> </code>

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

رمز PHP:

<code style="white-space:nowrap"> <code> <html dir="<? echo $a&#91;0&#93;&#91;$lang&#93;; ?>">
<head>
<title><? echo $a&#91;1&#93;&#91;$lang&#93;; ?></title>
<style type="text/css">
<? echo $a&#91;2&#93;&#91;$lang&#93;; ?>
</style>
</head>
<body>
<p><? echo $a&#91;3&#93;&#91;$lang&#93;; ?></p>
<p><a href="page.htm"><? echo $a&#91;4&#93;&#91;$lang&#93;; ?></a> <? echo $a&#91;5&#93;&#91;$lang&#93;; ?></p>
</body>
</html> </code> </code>

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

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


رمز PHP:

<code style="white-space:nowrap"> <code> <?
$a&#91;0&#93;&#91;'ar'&#93; = "rtl";
$a&#91;1&#93;&#91;'ar'&#93; = "إنترنت بلس - الصفحة الرئيسية";
$a&#91;2&#93;&#91;'ar'&#93; = "body, p, td {font-family: Tahoma; font-size: 12px; color: #ffffff}
a {color: #ff0000}
a.hover {color: #00ff00}";
$a&#91;3&#93;&#91;'ar'&#93; = "أهلا بك في موقعنا .. أنا سعيد بوجودك .";
$a&#91;4&#93;&#91;'ar'&#93; = "اضغط هنا";
$a&#91;5&#93;&#91;'ar'&#93; = "لزيارة الصفحة التالية.";
?> </code> </code>

طبعا ممكن نكرر هذه الخطوة لأي عدد من اللغات .. والطريقة -يارب- تكون واضحة ..
الآن جرب شيئا صغيرا .. فاكر في الخطوة رقم 2 لما وضعنا متغير اسمه lang وقلنا قيمته en? غيره إلى قيمة تانية وهي ar .. الآن الصفحة تعرض بالعربية ومن اليمين للشمال وبخط تاهوما وكله تمام
4- معرفة اللغة التي يريدها الزائر
الآن يمكننا عرض الصفحة بلغة من اللغتين .. لكن يجب أن نحددها من الأول طبعا .. وده مش صح .. المفروض الزائر يختار .. يبقى أولا نضع وصلات لتغيير اللغة ولتكن في كود code الصفحة نفسها .. في أي مكان بالصفحة بعد رسالة الترحيب مثلا ضع:

رمز PHP:

<code style="white-space:nowrap"> <code> <?
<a href="?lang=ar">1</a>
<a href="?lang=en">2</a>
?> </code> </code>

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

رمز PHP:

<code style="white-space:nowrap"> <code> <?
$lang = "ar"; // أو en
?> </code> </code>

ونضع التالي:

رمز PHP:

<code style="white-space:nowrap"> <code> <?
if(isset($_GET&#91;'lang'&#93;)) $lang = $_GET&#91;'lang'&#93;;
// بنشوف لو الزائر ضغط على رقم عشان يختار لغة واللا لا .. لو ايوه يبقى نخلي المتغير قيمته تكون القيمة اللي اختارها الزائر
else $lang = "ar";
// لو ما كانش اختارها ح نحددها احنا تكون عربي
?> </code> </code>

كده الزائر لما يضغط على لغة الصفحة لغتها تتغير .. جربها ..

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


رمز PHP:

<code style="white-space:nowrap"> <code> <?
if(isset($_GET&#91;'lang'&#93;)) {
$lang = $_GET&#91;'lang'&#93;;
set******("lang", $lang);
}
elseif(isset($_******&#91;'lang'&#93;)) $lang = $_******&#91;'lang'&#93;;
else $lang = "ar";
?> </code> </code>

انتهــى


ملحوظه هامه جداااااااااااا : الكلمات المشفره الى نجوم هى كلمة c o o k i e

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


منقول للفائده






ألعاب الأندرويد مجانا و حصريا (http://www.apotox.info/forum)




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى