مترجم

با استفاده از کلاس packages\base\translator که متد های آن برای راحتی استفاده به صورت ایستا و static نوشته است بدون تکرار کد ها، میتوانید نوشته های درون وبسایت را به صورت چندزبانه در آورید .برای این منظور نوشته های سایت در درون فایل های دیگری با فرم json نوشته میشوند. با استفاده از کلاس translator میتوان نوشته های فایل های ذخیره-نوشته را به صورت چند باره در میان کد ها استفاده کرد . با استفاده از کد زبان و یا کد کشور در آدرس ( به صورت جزعی از آدرس و یا به صورت یک پارامتر در آدرس) فریم ورک به صورت خودکار فایل ذخیره-نوشته متناظر با آن زبان و یا کشور را بارگزاری خواهد کرد . همچنین در تولید آدرس در صورتیکه از متد base\url استفاده کنید، این متد به صورت خودکار زبان پیشفرض را در آدرس ها قرار میدهد .

نمونه یک فایل ذخیره-نوشته

{
    "author": {
        "name" : "Jeyserver",
        "website" : "https://www.jeyserver.com/"
    },
    "rtl": true,
    "phrases":{
        "title": "Jeyserver framwork docs",
        "description": "powered by <a href=\"{url}\">Jeyserver</a> , open license framwork"
    }
}

معرفی فایل های ذخیره-نوشته

فایل ذخیره-نوشته باید برای استفاده به فرم ورک معرفی شده و مشخص شوند هر فایل برای کدام کد زبان خواهد بود . در صورتی که فایل ذخیره نوشته در رابط کاربری frontent استفاده شود ، معرفی در فایل theme.json و در غیر اینصورت در فایل package.json انجام خواهد شد .

نمونه فایل package.json

{
    "permissions": "*",
    "languages": {
        "fa_IR": "langs/fa_IR.json"
    }
}

نمونه فایل theme.json

{
    "name": "frontname",
    "title": "Site Frontend",
    "version": "1.0.0",
    "languages": {
        "fa_IR": "langs/fa_IR.json"
    }
}

نمونه معرفی فایل ذخیره-نوشته

"languages": {
    "fa_IR" : "langs/fa_IR.json"
}

و در صورتی که بیش از یک زبان داشته باشید

"languages": {
    "fa_IR" : "langs/fa_IR.json",
    "en_US" : "langs/en_US.json"
}

کد زبان های مجاز

در کلاس translator کد زبان های مجاز به صورت دو حرفی از قبل در متغیر ایستایی به نام allowlangs ذخیره شده است .

translator::$allowlangs;

کد کشور های مجاز

کد کشور های مجاز در قالب یک آرایه به صورت دوحرفی در متغیری با نام countries ذخیره شده است .

translator::$countries;

تغییر زبان

در صورتیکه بخواهید زبان پیشفرض را تنظیم و یا تغییر دهید میتوانید از متد setLang کلاس translator استفاده کنید .این متد در پارامتر خود، یک کد دوحرفی از زبان را دریافت میکند . در صورتیکه کد زبان مشخص شده در کد زبان های مجاز نباشد،با پرتاب استثنایی از جنس packages\base\translator\InvalidLangCode از ادامه روند جلوگیری خواهد کرد .

استفاده از نوشته ها

برای استفاده از نوشته ها در میان کد ها، باید از متد trans استفاده کنید . پارامتر اول این متد، نام کلید و در پارامتر دوم آرایه ای از کلید-مقدار ها دریافت میکند . در صورتیکه پارامتری در نوشته وجود داشته باشد، این متد پارامتر را در کلید آرایه مشخص شده در پارامتر دوم جستجو کرده و مقدار آن را جایگزین فرانویسه در نوشته خواهد کرد .

translator::trans(name, params);

مثال1

<?php
use \packages\base\translator;
?>
<!DOCTYPE html>
<html>
<head>
    <title><?php echo translator::trans("title"); ?></title>
</head>
</html>

مثال 2

<?php
use \packages\base\translator;
?>
<!DOCTYPE html>
<html>
<body>
<?php echo translator::trans("description", array("url" => base\url()); ?>
/* output
powered by <a href="/">Jeyserver</a> , open license framwork
\*/
</body>
</html>