چند زبانه کردن اسکریپت های PHP

شاید بارها شده نیاز داشته باشید اسکریپتی که مینویسید چندین زبان رو پشتیبانی کنه, یا این قابلیت رو داشته باشه هر زمان که نیاز بود بتونید بدون ویرایش اسکریپت یک زبان جدید به اسکریپتتون اضافه کنید

اینکار ساده هست, و تنها کاری که باید انجام بدید این هست که بجای متن های موجود در اسکریپت متغیر مشخصی قرار بدید که و اون متغیر رو بصورت آرایه مقداردهی کنید

و در نهایت در بخشی از اسکریپت مشخص کنید اگه SESSION یا COOKIE موجود بود که به زبان مشخصی اشاره داشت فایل مربوط به همون زبان رو فراخوانی کنه اسکریپت

برای اینکه ساده تر این موضوع رو درک کنید, یک نمونه اسکریپت ساده با 2 زبان انگلیسی و فارسی نوشتم که شامل 4 فایل زیر هست

فایل زبان فارسی با نام lang.fa.php :

<?php
/* -------------------------
	Language: Persian
------------------------- */

$lang = array();

$lang['PAGE_TITLE'] 	= 'عنوان فارسی سایت';
$lang['HEADER_TITLE'] 	= 'عنوان فارسی H1';
$lang['SITE_NAME'] 		= 'milad.in سایت نمونه';
$lang['HOME_CONTENT'] 	= 'این یک متن آزمایشی میباشد';

// Menu
$lang['MENU_HOME'] 		= 'خانه';
$lang['MENU_ABOUT_US'] 	= 'درباره من';
$lang['MENU_AUTHOR'] 	= 'نویسنده';
?>

فایل زبان انگلیسی با نام lang.en.php :

<?php
/* -------------------------
	Language: English
------------------------- */

$lang = array();

$lang['PAGE_TITLE'] 	= 'English Site Title';
$lang['HEADER_TITLE'] 	= 'Sample H1 Subject';
$lang['SITE_NAME'] 		= 'milad.in Sample Site';
$lang['HOME_CONTENT'] 	= 'This is a test content';

// Menu
$lang['MENU_HOME'] 		= 'Home';
$lang['MENU_ABOUT_US'] 	= 'About Us';
$lang['MENU_AUTHOR'] 	= 'Author';
?>

فایل controller.php برای ذخیره و برسی SESSION یا COOKIE و فراخوانی فایل زبان مورد نظر :

<?php
session_start();
header('Cache-control: private');

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 = 'en';
}

switch ($lang) {
  case 'en':
  $lang_file = 'lang.en.php';
  break;

  case 'fa':
  $lang_file = 'lang.fa.php';
  break;

  default:
  $lang_file = 'lang.en.php';
}
 
include_once 'languages/'.$lang_file;
?>

فایل index.php که در اصل همون اسکریپت ما هست :

e('controller.php'); ?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <title><?php echo $lang['PAGE_TITLE']; ?></title>
    <link href="http://worldup.ir/images/krq7r2c5fqqfnz36co3z.css" rel="stylesheet">
    <link href="starter-template.css" rel="stylesheet">
</head>

<body>
    <nav class="navbar navbar-fixed-top navbar-dark bg-inverse">
        <a class="navbar-brand" href="#"><?php echo $lang['SITE_NAME']; ?></a>
        <ul class="nav navbar-nav">
            <li class="nav-item active">
                <a class="nav-link" href="#"><?php echo $lang['MENU_HOME']; ?></a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#"><?php echo $lang['MENU_ABOUT_US']; ?></a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#"><?php echo $lang['MENU_AUTHOR']; ?></a>
            </li>
        </ul>
		<div class="form-inline float-xs-right">
			<a href="index.php?lang=en"><img src="http://worldup.ir/images/g2utrvespbeyrttkhxr.png" /></a>
			<a href="index.php?lang=fa"><img src="http://worldup.ir/images/extljycax4r2vd66i8n.png" /></a>
		</div>
    </nav>

    <div class="container">
        <br><br><br><br><br><br><br><br><br><br><br><br>
        <center>
            <h1><?php echo $lang['HEADER_TITLE']; ?></h1>
            <p><?php echo $lang['HOME_CONTENT']; ?></p>
        </center>

    </div>
</body>

توجه داشته باشید 2 فایل lang.en.php و lang.fa.php که در این آموزش استفاده شدن رو باید در پوشه languages قرار بدید و 2 فایل controller.php و index.php در شاخه اصلی سایت کنار پوشه languages قرار میگیرند

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Time limit is exhausted. Please reload the CAPTCHA.