حسن عسکری
حسن عسکری
خواندن ۲ دقیقه·۱ سال پیش

How to Create Multi language in laravel

خوب حالت چند زبانه تو لاراول خیلی اسونه به تعداد زبان هایی که دارید فایل درست کنید مثلا فارسی و انگلیسی با پسوند php (:
البته اینو بگم که خود لاراول یه فولدر داره به نام lang که اگه برید توش یه فولدر دیگه توشه en که مال زبان انگلیسیه شما هم توی همون قسمت میتونید یه فولدر جدا درست کنید برا فارسی و فایل ها رو توش بزارید
سوال اینجاست که خوب فایل چی ؟ چی تو فایل باید باشه؟
بریم وارد مثال بشیم مثلا فایل fa.php

<?php return [ &quotwelcome&quot=>خوش امدید ];

شما توی این فایل ها چه انگلیسی چه فارسی میاید یه ارایه رو ریترن میکنید ولی کلید ها باید یکسان باشن
مثال فایل en.php

<?php return[ &quotwelcome&quot=>welcome ];

فکر کنم متوجه شدید از اون کلید در جاهایی که میخواهیم استفاده میکنیم

{{__(&quotfa.welcome&quot)}}

بهش میگیم از فایل faبرو ولیو کلید welcome رو بگیر و بیار نمایش بده
اگه از فولدر config وارد فایل app.php بشید در قسمت application local configuration
اونجا یه کلیدی داریم به نام local که جلوش نوشته en که اشاره به زبان اصلی سیستم داره البته توی لومن باید از فولدر بوت استرپ وارد فایل app.php بشید

ما توی app دوتا متد داریم یکی get_local که واسه گرفتن زبان و set_local که واسه ست کردن زبان استفاده میشه
اگه جایی نیاز داشتید زبان سیستم رو بگیرید و استفاده کنید مثلا بخواید بگید اگه زبانش فارسی بود دایرکشن از راست به چپ بشه

<style> @if(app()->getlocal()===&quotfa&quot) body{ direction : rtl ; } @endif </style>

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

Route::get(&quot/{local}&quot,function($local){ sessoin()->put(&quotlocal&quot,$local); return redireact()->back(); })

میتونی وقتی دوتا دکمه فارسی و انگلیسی داری بهشون href بدی /fa یا /en یا اون زبانی که دارید اینو وقتی بفرسته به این روت جای لوکال قرار داده میشه و زبان تغییر میکنه
نکته مهم اینه که شما باید میدلور تعریف کنید و توی میدلور باید اول چک کنید اگه تو سشن لوکال بود
بیاد ست لوکال بکنه

if(Session::has(&quotlocal&quot)) App::setlocal(Sessoin::get(&quotlocal&quot)); return $next($request);

بعد اون میدلور رو باید در فایل کرنل توی قسمت میدلور گروپ بخش وب اونجا اضافش کنیم تا سراسری بشه
توجه : اگه فقط روت تعریف کنید و همون جا ست لوکال رو انجام بدید وقتی به روت /fa بره دیگه نمیتونه به روت /en بره و به مشکل میخورید

لاراوللومنآموزش لاراولMulti language in laravelبوت استرپ
شاید از این پست‌ها خوشتان بیاید