سایت چند زبانه با لاراول

زمان مطالعه
5 دقیقهتعداد بازدید
3019تعداد پرسش ها
9برچسب ها :
تکنیک های لاراول
سایت چند زبانه با لاراول

زمان مطالعه
5 دقیقهتعداد بازدید
3019تعداد پرسش ها
9برچسب ها :
تکنیک های لاراولایجاد سایت چند زبانه با لاراول یا laravel multi language ؟ با یک آموزش دیگر از فریم ورک قدرتمند لاراول در خدمت شما دوستان عزیز هستیم. در اغلب پروژه ها نیازمند پیاده سازی چند زبان مختلف برای پروژه خود داریم مثلا کارفرما درخواست زبان های فارسی، انگلیسی، عربی، آلمانی و ... را دارد که بدون مشکل و سریعا کل زبان سایت تغییر کند خوشبختانه در لاراول یک سری امکانات خوب وجود دارد برای تغییر زبان یا انتخاب زبان پیش فرض که به ما کمک می کند با کمی خلاقیت چند زبانه بودن سایت را به راحتی پیاده سازی کنیم این کار به دو روش می تواند انجام شود
- استفاده از پوشه lang در مسیر resource با آرایه های php
- استفاده از پوشه lang در مسیر resource با آرایه های json
که ما میخواهیم از استاندارد خود لاراول (روش اول) استفاده کنیم روش دوم زیاد جالب و استاندارد نیست. برای این کار چند مرحله کار باید انجام شود
تنظیم زبان فارسی در لاراول بعنوان زبان پیش فرض
در مسیر اصلی پروژه فایل config/app.php را باز کنید و خطوط زیر را تغییر دهید
'locale' => 'fa', // زبان پیش فرض فارسی
'fallback_locale' => 'en', //زبان دوم در صورت یافت نشدن زبان اول
'timezone' => 'Asia/Tehran', // منطقه زمانی برای ایران
ایجاد فایل های زبان های مختلف در لاراول
سپس از پوشه en در مسیر resource/lang یکی کپی با اسم fa ایجاد می کنیم و تمام فایل های داخل این پوشه را به فارسی ترجمه می کنیم خود لاراول پوشه fa را بعنوان زبان پیش فرض در نظر می گیرد چون در فایل config این تنظیمات را انجام دادیم. به صورت اتوماتیک نوشته های validation لاراول به زبان فارسی که ما درست کردیم ارجاع داده می شود.
شما می توانید فایل های بیشتری از روی یکی از فایل های موجود در پوشه fa درست کنید با اسم های متناسب با صفحه یا قسمت مورد نظر خود، به مثال ذیل توجه کنید فایلی با اسم container.php در مسیر یاد شده ایجاد کردیم
return [
'System' => 'سیستم',
'President' => 'مدیریت',
'User' => 'کاربران',
'text' => 'مطالب',
'Calendar' => 'تقویم کاری',
'Survey' => 'نظرسنجی ها',
'Test' => 'آزمون ها',
];
برای استفاده از این ترجمه در هر جایی (blade , controller , model) می توانید به روش ذیل اقدام کنید
مثال در blade
{{ __('container.Calendar') }}
مثال در داخل controller
$title=__('container.Calendar');
تغییر زبان به صورت داینامیک در لاراول
با این کد شما می توانید زبان پیش فرض را تغییر دهید به یک زبان دیگر ، مثلا اگر زبان فارسی بود الان با کد زیر به انگلیسی تغییر می کند
App::setLocale('en');
و با کد ذیل نیز می توانیم زبان فعلی را تشخیص دهیم
App::getLocale();
اگر بخواهیم این قسمت را به صورت اتوماتیک توسط انتخاب کاربر سایت تغییر دهیم مراحل ذیل را انجام می دهیم
- ساخت یک کنترلر با نام دلخواه (اینجا من LangController انتخاب کردم) و دوتا تابع به اسم en برای ست کردن زبان انگلیسی و fa برای زبان فارسی ساختم
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
class LangController extends Controller {
public function en(){ // زبان انگلیسی
App::setLocale('en');
return redirect()->back();
}
public function fa(){ //زبان فارسی
App::setLocale('fa');
return redirect()->back();
}
}
- ایجاد مسیر برای تغییر زبان Route در فایل web.php
Route::get('en','LangController@en')->name('en');
Route::get('fa','LangController@fa')->name('fa');
این ساده ترین روش ممکن بود برای ساخت یک سایت چند زبانه با لاراول ولی چند نکته رو باید مد نظر قرار بدید که احتمالا هر سایتی شاید در دیتابیس در جدول مورد نظرشون امکان پست گذاری برای زبان های مختلف رو داشته باشند مثلا یک فیلد language داشته باشد که برابر با fa یا en باشد در هر کنترلری شما با کد ذیل می توانید مشخص کنید که زبان فعلی کدام است و کوئری خودتون رو براساس همین مقدار از دیتابیس واکشی کنید.
$lang=App::getLocale();
$query=Post::where('language',$lang)->get();
به همین راحتی می تونید یک سایت چند زبانه حرفه ای با لاراول درست کنید!!! لطفا سوالات خودتون رو در بخش پرسش و پاسخ بپرسید و این مطلب را با دیگران به اشتراک بگذارید.


قرارداد طراحی وب سایت همراه با نمونه

جلوگیری از کپی محتوای سایت با سی اس اس مخصوص سئو کاران

قرارداد سئو وب سایت بهمراه نمونه

دوره طراحی سایت با وردپرس مقدماتی تا پیشرفته

آموزش چند زبانه کردن سایت در وردپرس بصورت تصویری

بهینه سازی سرعت سایت در وردپرس

طراحی سایت شرکتی + مشاوره رایگان + قیمت و زمان

طراحی سایت پوشاک | طراحی سایت فروشگاهی پوشاک + قیمت و زمان

معرفی چند سایت برای ایده گرفتن UI

استخدام کارشناس گوگل ادز + توانمندی ها + سایت های استخدام

برنامه نویس خوب، موفق و توانایی هایی که باید داشته باشید

وسط چین کردن تصاویر با css داخل متن

کلیک بر روی دکمه های موجود بر روی صفحه با جاوا اسکریپت

آموزش لیست ها (Lists) در html

تگ picture در html

تصاویر پس زمینه در html

تگ map (نقشه تصویری) در html

تصاویر (img) در html

نشانه گذاری (bookmarks) در html

تغییر رنگ لینک ها در html
ضمن عرض سلام و خسته نباشید، بنده از این روشی که فرمودید استفاده کردم با لاراول 8 منتهای مراتب setLocale کار نمیکنه، ریدایرکت انجام میشه، ولی زبان تغییری نمیکنه
دوست عزیز در لاراول 8 اول با currentLocale زبان فعلی رو بگیرید
و با App::setLocale زبان مورد نظر خودتون رو انتخاب کنید
حتما مطمئن باشید که فایل های زبان دوم رو هم ایجاد کرده باشید
بهترین راه حل اینه که جداول جدا باشه برای هر زبانی و اگر دیتایی برای زبان مورد نظر وجود داشت ذخیره بشه اگر جدا باشه خوندن اطلاعات هم راحته و برای زبان مورد نظر انتخابی فقط آخرین جدول مقصد فراخونی میشه و مشکل سنگینی کوئری نخواهید داشت اما بحث اینکه دیتای زیادی قراره ذخیره بشه یک امر طبیعی هست و مشکلی نداره اصلا دیتابیس برای ذخیره اطلاعاته دوست عزیز
با سلام خیلی خیلی ساده و روان توضیح دادین خیلی ممنونم استفاده کردیم :)
فرض مثال اگر ما در سایت مون دسته بندی با عناوین فارسی و انگلیسی داریم یعنی هر رکورد ما دارای یک فیلد عنوان فارسی دسته بندی و یک فیلد با عنوان انگلیسی دسته بندی هست. در این حالت چطور باید هر عنوان مربوط به زبان خودشو هم بخونیم و هم نمایشش بدیم.برای این حالت باید چیکار کرد؟ fa_title en_title به چه صورتی باید برای هرزبان کوئری دیتابیسو بزنیم و چطوری برای هر زبان در بلید مقدر مربوطه رو نشون بدیم؟
سلام مرسی از شما. خواستم بپرسم اگر ما مثلا برای پست هامون امکان ثبت پست به چندین زبانو در سایتمون ایجاد کنیم آیا اینطوری دیتا بیس ما به شدت سنگین نمیشه ؟ آیا را حل بهتری وجود نداره که ما برای هر پست به تعداد زبان سایت پست نزاریم؟
سلام خدمت شما دوست عزیز
بله شما می تونید هر چنتا زبان خواستید اضافه کنید با همین روشی که توضیح دادیم
اگر چند زبانه بخوایم بکنیم چی؟
میشه با این روش؟
من تازه کارم برا همین می پرسم