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

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

ایجاد سایت چند زبانه با لاراول یا laravel multi language ؟ با یک آموزش دیگر از فریم ورک قدرتمند لاراول در خدمت شما دوستان عزیز هستیم. در اغلب پروژه ها نیازمند پیاده سازی چند زبان مختلف برای پروژه خود داریم مثلا کارفرما درخواست زبان های فارسی، انگلیسی، عربی، آلمانی و ... را دارد که بدون مشکل و سریعا کل زبان سایت تغییر کند خوشبختانه در لاراول یک سری امکانات خوب وجود دارد برای تغییر زبان یا انتخاب زبان پیش فرض که به ما کمک می کند با کمی خلاقیت چند زبانه بودن سایت را به راحتی پیاده سازی کنیم

زمان مطالعه: 3 دقیقه
بازدید: 2117
پرسش و پاسخ: 0

این کار به دو روش می تواند انجام شود 

  • استفاده از پوشه 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();

آموزش لاراول : https://jobteam.ir/Course/178-laravel-online-course

بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده