يعطيكم العافية جميعا ...
أخوتي بالله ..
قرأت كثيرا بهذا المجال وجربت عدة طرق منها المعقدة كثيرا التي تستخدم define()داخل ملف config.php هذا أتركه لكم بعد استعياب الفكرة الأساسية وكيف يمكن أن نصنع موقع
متعدد اللغات ..
أمور ينبغي عليك معرفتها قبل البدء بوضع اللغات لموقعك ...
هل تريد تغير الأمور الأساسية فقط في الموقع عند تغير اللغة .. أم تريد أن تغير المحتوى كاملا للموقع ..
إذا كنت تريد تغير الأمور الأساسية فقط في الموقع كالعنوان والقوائم وبعض الأمور البسيطة المقدور عليها فاتبع هذه الطريقة التي سأكتبها لكم ..
أما في حال تغير المحتوى الكلي .. فهناك طريقتين ::
الأولى ان تلجأ بوضع أكواد لترجمة قوقل في موقعك ..
الثانية وهي الأصعب بين كل الطرق // أن تكون ملما بكل اللغات أو يكون لديك فريق ملم باللغات كثيرا .. بحيث أما أن تحل هذه الطريقة عن طريق قواعد البيانات وهذه طريقة طوييييييييييييييييييييييييييلة جدا ..
أو أن تبرمج كود يقوم بالترجمة بناء على صفحات أنت وضعتها وكلمات مفتاحية .. ليس هذا موضوعنا أعلم ولكن من باب العلم وأن أضع أمامكم الطرق الممكنة ..
الأن بما انك تعمل مع موقع متعدد اللغات فيجب عليك أن تضع الترميز utf-8 ..
سأشرح كل خطوة أقوم بها ان شاء الله تعالى ,,
أول شيء تنشء مجلد اسمه lang أو سمه ماشئت
ثم تقوم بكتابة الصفحات باللغات التي تريد ... لنفرض العربية والأنجليزية .. فلتكن الأساسية في موقعي هي العربية (عربي وأفتخر ) ..
إذا فالناتج لدينا ملفين هما . داخل مجلد lang
ar.php
en.php
ar.php
<?php $lang = array(); $lang['PAGE_TITLE'] = 'La Martir موقع'; $lang['HEADER_TITLE'] = 'مرحبا بكم إلى موقعي متعدد اللغات '; $lang['SITE_NAME'] = 'لامارتير'; $lang['MENU_HOME'] = 'الرئيسية'; $lang['MENU_ABOUT_US'] = 'من نحن'; $lang['MENU_OUR_PRODUCTS'] = 'تصاميمي'; $lang['MENU_CONTACT_US'] = 'اتصل بنا '; $lang['MENU_SITE_MAP'] = 'خريطة الموقع'; $lang['WELCOME_GST'] = 'مرحبا بك عزيزي الزائر'; $lang['WELCOME_USR'] = 'مرحبا '.$_SESSION['username']; $lang['Copy_Rights'] = 'جميع الحقوق محفوظة لدى '.$lang['PAGE_TITLE']; ?>
هنا قمنا بكتابة الأساسيات من عنوان الموقع واسم الموقع والقوائم التي أريدها في موقعها إلى أخره ...داخل مصفوفة كما رأينا ..
ثم نقوم بكتابة مثيلاتها باللغة الإنجليزية بالملف en.php
en.php
<?php $lang = array(); $lang['PAGE_TITLE'] = 'La Martir Web site'; $lang['HEADER_TITLE'] = 'Welcome To My web Site'; $lang['SITE_NAME'] = 'My Website'; $lang['MENU_HOME'] = 'Home'; $lang['MENU_ABOUT_US'] = 'About Us'; $lang['MENU_OUR_PRODUCTS'] = 'Our products'; $lang['MENU_CONTACT_US'] = 'Contact Us'; $lang['MENU_SITE_MAP'] = 'Site Map'; $lang['WELCOME_GST'] = 'Welcome Guest'; $lang['WELCOME_USR'] = 'Welcome '.$_SESSION['username']; $lang['Copy_Rights'] = 'All Copy Write Is Reserved to'.$lang['PAGE_TITLE']; ?>
نلاحظ في الملفين السابقين أني بإمكاني كتابة ما أريد بالطريقة التي أريد .. ولا أحتم عليكم الكتابة بالأحرف الكبيرة أو الصغيرة ..
الأن أكيد يتبادر إلى ذهنك سؤال طيب انا كيف أحدد اللغة المختارة ... وهل ينبغي علي أن أقوم بوضع واحدة افتراضية كما ذكرت أنا بالأعلى ..
لندخل لعمق الفكرة البرمجية ..
أولا: نحتاج إلى الجلسات والكوكيز لحفظ خيار المتصفح سواء كان زائر أو مستخدم .
ثانيا: علينا ان نضع لغة افتراضية في حال لم يحدد الزائر لغته الإفتراضية ..
لاتستصعب الأمور شوف كيف ممكن نحلها ..
بأمكانك أن تكتب الكود كله في الصفحة الأساسية .. ولكني أفضل وضعها في ملف خارجي وإرفاقه عن طريق الأمر include()
أعتذر أن كنت أسمهت كثيرا في التفاصيل ولكن قد يتسنى لجميع المستويات استيعاب فكرة اللغة ..
الملف وليكن في نفس مسار المجلد الأساسي أي خارج المجلد lang ليكن بجانب index.php
الخطوات قبل كتابة الملف كاملا :
أولا:
نتحقق إذا قام المستخدم بكبس الزر المخصص لللغة :اي خصائص المصفوفة GET. ثم نخرنها داخل الجلسات والكوكيز .
ثانيا:
نتحقق إذا كان المستخدم اختار من قبل لغته المفضلة عن طريق الجلسات أيضا والكوكيز أيضا .
ثالثا :
في حال لم يقوم بالضغط على اللغة أو لم يقم بأختيارها مسبقة فاللغة الأفتراضية هي العربية .
lang.php
<?php
session_start();
if(isset($_GET['lang']))
{
$lang = $_GET['lang'];
$_SESSION['lang'] = $lang;
setcookie('lang', $lang, time() + (3600 * 24 * 30));
}
else if(isset($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isset($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'ar';
}
if($lang=='ar'){
$lang_dir = 'ar.php';
}else if ($lang=='en') {
$lang_dir = 'en.php';
}
else
{
$lang_dir = 'ar.php';
}
include 'languages/'.$lang_dir;
?>الأن صفحة index.php
لا أظن انها بحاجة للشرح ماعلينا سوى تحديد الترميز وتضمين ملف lang
<?php
include 'lang.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><?php echo $lang['PAGE_TITLE']; ?></title>
<style>
body{
direction:rtl;
}
table#main{
width:900px;
}
div{
float:right;
}
div#languages{
width:900px;
height:50px;
background-color:#FFFFFF;
}
div#title{
color:yellow;
font-size:12px;
width:900px;
}
div#head{
background-color:#FFFFFF;
width:900px;
}
</style>
</head>
<body>
<table id="main" cellpadding="0" cellspacing="0">
<tr>
<td>
<div id="languages">
choose:
<a href="index.php?lang=ar">Arabic</a>
<a href="index.php?lang=en">English</a>
</div>
<div id="Head">
<div id="Title"><?php echo $lang['HEADER_TITLE']; ?></div>
</div>
<div class="menu">
<ul>
<li><a href="#"><?php echo $lang['MENU_HOME']; ?></a></li>
<li><a href="#"><?php echo $lang['MENU_ABOUT_US']; ?></a></li>
<li><a href="#"><?php echo $lang['MENU_OUR_PRODUCTS']; ?></a></li>
<li><a href="#"><?php echo $lang['MENU_CONTACT_US']; ?></a></li>
<li><a href="#"><?php echo $lang['MENU_SITE_MAP']; ?></a></li>
</ul>
</div>
</td>
</tr>
</table>
</body>
</html>والله ولي التوفيق ..
أخوكم
لامارتير
قمت برفع الكود كاملا
ولكم حق التعديل عليه