آموزش ساخت سایت چند زبانه با PHP - نسخهی قابل چاپ +- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir) +-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1) +--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13) +--- موضوع: آموزش ساخت سایت چند زبانه با PHP (/showthread.php?tid=2226) |
آموزش ساخت سایت چند زبانه با PHP - agotd - 12-09-2013 02:30 PM سلام برای این پست تصمیم گرفتم بنا به درخواست یکی از دوستان آموزش ساخت سایتهای چندزبانه رو براتون آموزش بدم. برای این کار چند روش وجود داره که من یکی از روشها رو براتون توضیح میدم. در این روش از چند فایل برای نگهداری ترجمه ها استفاده میکنیم.به عنوان مثال ما میخوایم سایتی داشته باشیم که هم با زبان انگلیسی و هم زبان فارسی رو پشتیبانی کنه. برای این کار دو فایل با نام fa.php برای ذخیره ترجمه های زبان فارسی و یک فایل با نام en.php برای زبان انگلیسی میسازیم. در واقع این دو فایل حاوی یک آرایه است که یک کلید برای کلمه مورد نظر و یک مقدار برای ترجمه است. فایل fa.php کد php: <?php و محتویات فایل en.php : کد php: <?php همینطور که میبینید باید نام کلید های آرایه توی دوتا فایل یکسان باشه . خوب حالا دو تا لینک به صورت زیر میذاریم تا کاربر زبان مورد نیازخودش رو انتخاب کنه : کد php: <a href="http://phpro.ir/?lang=fa" > توی این دو تالینک در URL مقدار lang رو برابر با زبان مورد نظر قرار دادیم.حالا برای دسترسی به زبان میتونیم از آرایه $_GET استفاده کنیم : کد php: if(isset($_GET['lang'])) ابتدا چک میکنیم که آیا مقدار lang در url ست شده یا نه. اگر مقدار داشت فایل مربوط به همون زبان رو include میکنیم اگر مقدار نداشت به فایل fa.php رو include میکنیم که به این معنیه که سایت ما به صورت پیش فرض از زبان فارسی استفاده میکنه. تقریبا کار ما تمومه و باید از متغیر $lang در جایی که میخوایم استفاده کنیم. به عنوان مثال : کد php: echo $lang['hello']; حالا اگر زبان سایت ما فارسی باشه عبارت ” سلام ” و اگر انگلیسی باشه کلمه Hello نمایش داده میشه. میتونیم کارمون رو یه کم راحت تر کنیم تا لازم نباشه همه جا از دستور echo استفاده کنیم . برای این کار یک تابع با نام _e میسازیم : کد php: function _e($key){ حالا به جای دستور بالا میتونیم برای ترجمه از این تابع استفاده کنیم : کد php: _e('hello'); تا اینجا کار ما تمومه اما ممکنه گاهی اوقات ما کلیدی رو فراخوانی کنیم که در متغیر $lang وجود نداشته باشه.برای رفع این مشکل یک پارامتر دوم هم برای تابع _e میذاریم که در صورتی که کلید ما در آرایه وجود نداشته باشه مقدار پیش فرض نمایش داده بشه : کد php: function _e($key , $def = ''){ این تابع نیاز به توضیح زیادی نداره فقط در ابتدا چک کردیم که مقدار $key در آرایه وجود داره یا خیر اگر وجود نداشت مقدار $def رو به کاربر نمایش میدیم : کد php: _e('site_news' , 'اخبار سایت'); این روش به خاطر اینکه از آرایه $_GET استفاده میکنه باید از لحاظ امنیتی هم بررسی بشه که اینکار رو به خودتون واگذار میکنم.در ضمن این یک مثال کامل نیست باید بیشتر روش کار کنید هدف فقط این بود که با این روش آشنا بشید. |