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

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

زمان مطالعه
5 دقیقهتعداد بازدید
5327تعداد پرسش ها
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();
به همین راحتی می تونید یک سایت چند زبانه حرفه ای با لاراول درست کنید!!! لطفا سوالات خودتون رو در بخش پرسش و پاسخ بپرسید و این مطلب را با دیگران به اشتراک بگذارید.


سئو سایت فروشگاهی بهمراه چک لیست کامل

سایت مپ نکات و موارد مهم درباره ثبت نقشه سایت در گوگل

پشتیبانی سایت + موارد، هزینه و تعرفه ها

سوشیال بوکمارک چیست و چگونه به سئو سایت کمک می کند؟

بردکرامب (Breadcrumbs) چیست؟ اهمیت و تاثیر آن در سایت

طراحی سایت وکالت حرفه ای و اختصاصی + امکانات ویژه

طراحی سایت خودرو حرفه ای و اختصاصی با امکانات ویژه

طراحی سایت استارتاپی - ساخت و طراحی تخصصی سایت استارتاپی

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

تاثیر هوش مصنوعی در سئو و رتبه بندی سایت

لینک فارسی یا انگلیسی،کدام url در سئو می تواند بهتر باشد؟

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

حذف سشن (session) سبد خرید برگشت از درگاه پرداخت در لاراول

نصب کتابخانه در پایتون

استراتژی سئو به زبان ساده

مشکل sql_mode=only_full_group_by در لاراول (laravel)

search console insights چیست؟ (سرچ کنسول اینسایت)

افزودن دکمه تماس واتساپ در سایت برنامه نویسی شده و وردپرس

رپورتاژ (ریپورتاژ) آگهی یا خبری چیست و چه تاثیری بر سئو دارد

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