وقتی که چند زبانه میکنیم سایت رو میتونیم به صورت
http://127.0.0.1:8000/en/showContent/aboutUs
استفاده کنیم و سایت رو باز کنیم. ولی وقتی که این fa و یا en تو ابتدا نیست به مشکل میخوریم و خطای صفحه وجود ندارد رو میده. این روچطوری حلش کنیم؟ من هر کاری کردم نتونستم این رو اگه نیست به سگمنت اضافه کنم یا این خط ها کار نمیکنن
Route::get('{lang?}/showContent/aboutUs', array('as' => 'lang', 'uses' => 'HomeController@showAboutUsPage'))->where('lang', '.+');
خب حل شد
protected $middleware = [
\App\Http\Middleware\Language::class,
];
و
public function handle($request, Closure $next)
{
$locale = $request->segment(1);
if (!array_key_exists($locale, config('app.locales'))) {
$segments = $request->segments();
array_unshift($segments,config('app.fallback_locale'));
return redirect(implode('/', $segments));
}
app()->setLocale($locale);
return $next($request);
}
خوب این روش درستی برای دو زبانه کردن نیست
شما میتونید از middleware ها برای ایجاد چنین سیستمی استفاده کنید در دوره ساخت یک وبسایت آموزشی فروشگاهی این موضوع رو کامل آموزش دادم
اگر ندارید میتونید در گوگل هم سرچ کنید
روش کار ساده است .
یعنی شما میتونید از طریق middleware ها بیاین نوع زبان رو مشخص و بصورت کلی set کنید و داخل url هم استفاده کنید
حالت پیش فرض هم میشه قرار داد بصورت کامل مثل کد زیر
public function handle($request, Closure $next)
{
$locale = $request->segment(1);
if(! array_key_exists($locale , config('app.locales'))) {
$segments = $request->segments();
$segments[0] = config('app.fallback_locale');
return redirect(implode('/', $segments));
}
app()->setLocale($locale);
return $next($request);
}
سلام. خوب دقیقا دارم از همین روش استفاده میکنم ولی با این موردی که گفتم مشکل دارم. زمانی که زبان تو سگمنت اول نیست خطا میده میگه صفحه وجود نداره
شما زبان رو داخل web گذاشتید تو کرنل و فکر میکنم مشکل دقیقا همینه. با اینکه داخل web هم میزارم باز هم نمیتونه پیدا کنه
Route::group(['middleware' => 'web'], function () {
Route::get('/showContent/faq', 'HomeController@showFaqPage');
Route::get('/showContent/recruitment', 'HomeController@showRecruitmentPage');
Route::get('/showContent/aboutUs', 'HomeController@showAboutUsPage');
Route::get('/showContent/contactUs', 'HomeController@showContactUsPage');
});
این میدل وری که نوشتید ایراد داره مثلا تو /showContent/aboutUs اینجا هم جواب نمیده حتما باید سکمنت یکی باشه بتونه اضافه بکنه. تکی هم جواب نمیده که راه حلش اینه:
public function handle($request, Closure $next)
{
$locale = $request->segment(1);
if (!array_key_exists($locale, config('app.locales'))) {
$segments = $request->segments();
array_unshift($segments,config('app.fallback_locale'));
return redirect(implode('/', $segments));
}
app()->setLocale($locale);
return $next($request);
}
خب حل شد
protected $middleware = [
\App\Http\Middleware\Language::class,
];
و
public function handle($request, Closure $next)
{
$locale = $request->segment(1);
if (!array_key_exists($locale, config('app.locales'))) {
$segments = $request->segments();
array_unshift($segments,config('app.fallback_locale'));
return redirect(implode('/', $segments));
}
app()->setLocale($locale);
return $next($request);
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟