الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طريقة تصميم موقع متعدد اللغات

بدأه La Martir في 12 سبتمبر 2011 · 5 رد · 4,010 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يعطيكم العافية جميعا ...

أخوتي بالله ..

قرأت كثيرا بهذا المجال وجربت عدة طرق منها المعقدة كثيرا التي تستخدم 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>

والله ولي التوفيق ..

أخوكم

لامارتير

قمت برفع الكود كاملا

ولكم حق التعديل عليه

test.rar

2
#2
if($_COOKIE['language']==""){
        $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];//Detecting Default Browser language
    }
    else {
        $lang = $_COOKIE['language'];//Detecting if cookie was set
    }
    switch($lang){
 case "en":
  require("lang/english.php"); // where the content in english is stored
  break;
 case "cn":
  require("lang/chinese.php"); // where the content in chinese is stored
  break;
 case "ar":
  require("lang/arabic.php");
  break;
 case "zh-cn":
  require("lang/chinese.php");
  break;
 default:
  require("lang/english.php");
  break;
 	}

وعمل تضمين لها مثل

   include('includes/defines.php');

فى حالة استخدام ترجمة جوجل للغات عديدة تدعم UTF-8 والتي ستحفظ الملفات بها مثل العربية واليابانية

جزاك الله خيرا على الدرس

source

http://www.qianqin.de/qtranslate/forum/viewtopic.php?f=3&t=10

تم تعديل هذه المشاركة بواسطة MohamedIBrahim في 12 سبتمبر 2011 في 13:25

GoodBye

#3

جزاكم الله خيرا

ولا ننسى أن نقوم بعمل كوكيز للغة بعد اختيارها

التغير هو القانون الدائم للحياة.ودوام الحال من المحال

فلماذا لا نتغير بإرادتنا إلى ما نريد؟ قبل أن تغيرنا الحياة مجبرين إلى ما لا نريد؟

موقعي

#4

أشكر الجميع على المرور ..

وأشكر لك أضافتك الجميلة أخي محمد أنا قمت بالدرس بطريقة بسيطة لم أرد التدخول بالتعقيدات البرمجية ... ولم أشرح طريقة جوجل إنما نوهت لها تنويه فقط ..وقد وضعت utf-8 في Index.php ...

أخي الغالي ماس أشكر لك مرورك .. لوكني قمت بوضع كوكيز لللغة المختارة عن طريق ..

setcookie('lang', $lang, time() + (3600 * 24 * 30));

أشكر للجميع اضافتهم ومرورهم ..

لامارتير

#5

مشكور اخى الفاضل على الدرس الجميل

ولو اننا بحثنا بعض الشئ سنجد انه يمكن عمل ترجمة الان بتصبيق Ajax بسيط و بالتعامل مع الــ Google Language API's لكن اشكرك جزيل الشكر على المجهود الرائع

Life is not the amount of breaths you take, it's the moments that take your breath away

#6

اخي فؤاد أشكر لك مرورك فمجرد مرورك على هذا الدرس أكون سعيدا بذلك ...

أشكرك على المعلومة .. أعلم ذلك ولكن أحببت أن يكون الدرس بسيطا لم أحب أن أدخل كثيرا بالتعقيدات ..لأن بعض مبتدئي php قد لايعلمون ajax

أشكرك من أعماق قلبي

مواضيع مشابهة