مترجم
با استفاده از کلاس packages\base\Translator
که متد های آن برای راحتی استفاده به صورت ایستا و static
نوشته است بدون تکرار کد ها، میتوانید نوشته های درون وبسایت را به صورت چندزبانه در آورید .برای این منظور نوشته های سایت درون فایل های دیگری با فرم json
نوشته میشوند. با استفاده از کلاس Translator
میتوان نوشته های فایل های ذخیره-نوشته را به صورت چند باره در میان کد ها استفاده کرد . با استفاده از کد زبان و یا کد کشور در آدرس ( به صورت جزئی از آدرس و یا به صورت یک پارامتر در آدرس) فریم ورک به صورت خودکار فایل ذخیره-نوشته متناظر با آن زبان و یا کشور را بارگزاری خواهد کرد . همچنین در تولید آدرس در صورتیکه از متد base\url
استفاده کنید، این متد به صورت خودکار زبان پیشفرض را در آدرس ها قرار میدهد .
نمونه یک فایل ذخیره-نوشته
{
"author": {
"name" : "Jalno contributors",
"website" : "https://jalno.ir/"
},
"rtl": true,
"phrases":{
"title": "Jalno framwork docs",
"description": "Powered by <a href=\"{url}\">Jalno</a> , open license framwork"
}
}
تنظیمات زبان
برای کار با زبان ها در ابتدا باید تنظیماتی را در فایل config.php
که در مسیر packages/base/libraries/config
قرار دارد انجام دهیم.
در این فایل تنظیمات مربوط به زبان پیش فرض و تغییر زبان و مخفف وارد کردن زبان را میتوانیم انجام دهیم.
زبان پیش فرض
با استفاده از آپشن packages.base.translator.defaultlang
میتوانیم زبان پیش فرض سایت را مشخص کنیم. مقدار وارد شده باید کد زبان کامل باشد.
اگر این آپشن مقدار دهی نشود, هر کد زبان کاملی را میپذیرد.
کد زبان کامل از کد زبان دو حرفی_کد کشور دو حرفی تشکیل میشود
'packages.base.translator.defaultlang' => 'fa_IR' // or en_US
تغییر زبان
با استفاده از آپشن packages.base.translator.changelang
مشخص میکنیم کاربر از چه روشی زبان را مشخص کند.
سه مقدار میتواند داشته باشد :
مقدار | کاربرد |
---|---|
uri | زبان در ابتدای ادرس اضافه میشود |
parameter | انتهای آدرس اضافه میشود |
خالی باشد | کاربر نمیتواند بطور مستقیم زبان را تغییر دهد |
مثال uri :
/fa/contactus
مثال parameter :
/contactus?lang=fa
مثال از خالی بودن : زبان در آدرس اضافه نمیشود
/contactus
مخفف وارد کردن زبان
با استفاده از آپشن packages.base.translator.changelang.type
امکان مخفف وارد کردن زبان را در آدرس میدهد .
آپشن مقادیر short
, complete
میگیرد.
مثال
'packages.base.translator.changelang.type' => 'short' // /fa/contactus
'packages.base.translator.changelang.type' => 'complete' // /fa_IR/contactus
معرفی فایل های ذخیره-نوشته
فایل ذخیره-نوشته باید برای استفاده به فرم ورک معرفی شده و مشخص شوند هر فایل برای کدام کد زبان خواهد بود .
در صورتی که فایل ذخیره نوشته در رابط کاربری frontend
استفاده شود ، معرفی در فایل theme.json
و در غیر اینصورت در فایل package.json
انجام خواهد شد .
نمونه فایل package.json
{
"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"
}