أولاً تم مناقشة عدة مسائل حول تعددية اللغات في الموقع وكيف تسير الأمور تجدها على الرابط التالي:
تعديل
يُمكن استخدام الطريقة التي تم ذكرها في الرد:
الشرح على الإصدار 5.3
ولتنفيذ تعددية اللغات عبر الإطار بشكل مُبسط ستقوم بالتحقق من اللغة ومن ثم تقوم بحفظها في جهاز المُستخدم من خلال Cookies كالتالي:
if(Cookie::get('lang') != null){
$lang = Crypt::decrypt(Cookie::get('lang'));
if(!in_array($lang, ['en', 'de', 'fr', 'it', 'ru', 'tr', 'es'])){
$lang = 'en';
Cookie::queue(Cookie::forever('lang', $lang));
}
}else{
$lang = 'en';
Cookie::queue(Cookie::forever('lang', $lang));
}
Route::get('/', function () use($lang){
return redirect($lang);
});
ولتغيير اللغة سنقوم بالتالي:
Route::get('/change-lang/{lang}', function ($lang) {
if(!in_array($lang, ['en', 'de', 'fr', 'it', 'ru', 'tr', 'es'])){
$lang = 'en';
}
$cookie = Cookie::forever('lang', $lang);
return redirect("/{$lang}")->withCookie($cookie);
});
بهذا نحن أجبرنا الزائر على تحديد لغة أو استخدام اللغة الإفتراضية بعد اسم الموقع بإعادة توجيه الطلبات والآن لاستلام جميع الطلبات بعد مُعرف اللغة في الرابط سنستخدم prefix ضمن المجموعة group ونُنادي دالة سنكتب داخلها جميع التوجيهات التي نحتاجها كالتالي:
Route::group(['prefix' => 'en'], $allLang);
Route::group(['prefix' => 'de'], $allLang);
Route::group(['prefix' => 'fr'], $allLang);
Route::group(['prefix' => 'it'], $allLang);
Route::group(['prefix' => 'ru'], $allLang);
Route::group(['prefix' => 'tr'], $allLang);
Route::group(['prefix' => 'es'], $allLang);
$allLang = function () {
Route::get('/', function (){
return View('index');
});
};
وأثناء عمل الروابط لا تنسى استخدام ال segment الأول وهو دوماً عبارة عن اللغة المُختارة كالتالي:
<a href="{{ url('/') }}/{{ Request::segment(1) }}/login">Login</a>
التعليقات