improved user experience multi langs

pull/49/head
A1Gard 3 months ago
parent 3bb8222120
commit fcaa56f6e6

@ -1166,7 +1166,7 @@ RESULT;
*/ */
function fixUrlLang($url) function fixUrlLang($url)
{ {
if (app()->getLocale() != config('app.xlang.main')){ if ( config('app.xlang.active') && app()->getLocale() != config('app.xlang.main')){
$welcome = \route('client.welcome'); $welcome = \route('client.welcome');
return str_replace($welcome,$welcome .'/'.app()->getLocale(),$url); return str_replace($welcome,$welcome .'/'.app()->getLocale(),$url);
} }

@ -12,6 +12,18 @@ use Illuminate\Http\Request;
class CardController extends Controller class CardController extends Controller
{ {
public function __construct()
{
$this->middleware(function ($request, $next) {
if (\Session::has('locate')) {
app()->setLocale(\Session::get('locate'));
}
return $next($request);
});
}
public function productCardToggle(Product $product) public function productCardToggle(Product $product)
{ {

@ -22,6 +22,23 @@ use Spatie\Tags\Tag;
class ClientController extends Controller class ClientController extends Controller
{ {
public function __construct()
{
$this->middleware(function ($request, $next) {
if ($request->attributes->get('set_lang') != true){
app()->setLocale(config('app.locale'));
\Session::remove('locate');
}elseif (\Session::has('locate')) {
app()->setLocale(\Session::get('locate'));
}
return $next($request);
});
}
public $paginate = 12; public $paginate = 12;
// //
@ -207,8 +224,10 @@ class ClientController extends Controller
} }
public function group(Group $group) public function group($slug)
{ {
$group = Group::where('slug',$slug)->firstOrFail();
$area = 'group'; $area = 'group';
$title = $group->name; $title = $group->name;
$subtitle = $group->subtitle; $subtitle = $group->subtitle;
@ -596,10 +615,10 @@ class ClientController extends Controller
$args = []; $args = [];
foreach ($routes as $i => $route) { foreach ($routes as $i => $route) {
if ($route[0] == '{'){ if ($route[0] == '{'){
$args[] = $segments[$i]; $args[] = $segments[$i+1];
} }
} }
// dd($segments); $args[]= $request;
return $this->$method(...$args); return $this->$method(...$args);
} }

@ -11,9 +11,22 @@ class CustomerController extends Controller
// //
public function __construct() public function __construct()
{ {
$this->middleware(function ($request, $next) {
if (!auth('customer')->check()) { if (!auth('customer')->check()) {
return redirect()->route('client.sign-in'); return redirect()->route('client.sign-in');
} }
if (\Session::has('locate')) {
app()->setLocale(\Session::get('locate'));
}
return $next($request);
});
} }
public function profile() public function profile()
@ -21,10 +34,12 @@ class CustomerController extends Controller
$area = 'customer'; $area = 'customer';
$title = __("Profile"); $title = __("Profile");
$subtitle = 'You information'; $subtitle = 'You information';
return view('client.default-list', compact('area', 'title', 'subtitle'));return auth('customer')->user(); return view('client.default-list', compact('area', 'title', 'subtitle'));
return auth('customer')->user();
} }
public function save(Request $request){ public function save(Request $request)
{
$request->validate([ $request->validate([
'name' => ['required', 'string', 'max:255'], 'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255'],
@ -36,14 +51,15 @@ class CustomerController extends Controller
$customer->name = $request->name; $customer->name = $request->name;
$customer->email = $request->email; $customer->email = $request->email;
$customer->mobile = $request->mobile; $customer->mobile = $request->mobile;
if ($request->has('password') && trim($request->input('password')) != ''){ if ($request->has('password') && trim($request->input('password')) != '') {
$customer->password = bcrypt($request->password); $customer->password = bcrypt($request->password);
} }
$customer->save(); $customer->save();
return redirect()->route('client.profile')->with('message', __('Profile updated successfully')); return redirect()->route('client.profile')->with('message', __('Profile updated successfully'));
} }
public function invoice(Invoice $invoice){ public function invoice(Invoice $invoice)
{
return $invoice; return $invoice;
} }

@ -20,6 +20,10 @@ class LangControl
$segments = $request->segments(); $segments = $request->segments();
if (strlen($segments[0]) == 2 && preg_match('/[A-Za-z]/', $segments[0])) { if (strlen($segments[0]) == 2 && preg_match('/[A-Za-z]/', $segments[0])) {
app()->setLocale($segments[0]); app()->setLocale($segments[0]);
$request->attributes->set('set_lang', true);
\Session::put('locate',app()->getLocale());
\Session::save();
} else { } else {
app()->setLocale(config('app.locale')); app()->setLocale(config('app.locale'));
} }
@ -30,7 +34,6 @@ class LangControl
$newPath = '/' . implode('/', $segments); $newPath = '/' . implode('/', $segments);
$newUrl = $request->root() . $newPath . ($request->getQueryString() ? '?'.$request->getQueryString() : ''); $newUrl = $request->root() . $newPath . ($request->getQueryString() ? '?'.$request->getQueryString() : '');
$request->server->set('REQUEST_URI', $newPath);
$request->initialize( $request->initialize(
$request->query->all(), $request->query->all(),
$request->request->all(), $request->request->all(),
@ -40,6 +43,8 @@ class LangControl
$request->server->all() $request->server->all()
); );
return $next($request); return $next($request);
} }
} }

@ -5,6 +5,7 @@
" seconds ago": "ثانیه قبل", " seconds ago": "ثانیه قبل",
"!": "", "!": "",
"$role": "", "$role": "",
"%name% sale in our shop by %price% %category.name%": "%name% حراج در فروشگاه با قیمت %price% %category.name%",
"09xxxxxxxx": "", "09xxxxxxxx": "",
":ADDRESS removed": ":ADDRESS حذف شد", ":ADDRESS removed": ":ADDRESS حذف شد",
":COUNT Images uploaded successfully": ":COUNT تصویر بارگزاری شد", ":COUNT Images uploaded successfully": ":COUNT تصویر بارگزاری شد",
@ -36,7 +37,7 @@
"Add new gallery": "افزودن یک گالری", "Add new gallery": "افزودن یک گالری",
"Add new group": "افزودن یک سرفصل", "Add new group": "افزودن یک سرفصل",
"Add new language": "افزودن یک زبان جدید", "Add new language": "افزودن یک زبان جدید",
"Add new menu": "", "Add new menu": "افزودن فهرست جدید",
"Add new post": "افزودن یک نوشته", "Add new post": "افزودن یک نوشته",
"Add new product": "افزودن یک محصول", "Add new product": "افزودن یک محصول",
"Add new prop": "افزودن یک ویژگی", "Add new prop": "افزودن یک ویژگی",
@ -47,7 +48,7 @@
"Add new ticket": "افزودن یک تکیت", "Add new ticket": "افزودن یک تکیت",
"Add new transport": "افزودن یک حمل و نقل", "Add new transport": "افزودن یک حمل و نقل",
"Add new user": "افزودن یک کاربر", "Add new user": "افزودن یک کاربر",
"Add to \/ Remove from favorites": "", "Add to \/ Remove from favorites": "افزودن به یا حذف از علاقه‌مندی ها",
"Add to card": "افزودن به سبد خرید", "Add to card": "افزودن به سبد خرید",
"Add to compare list": "افزودن به مقایسه", "Add to compare list": "افزودن به مقایسه",
"Add to setting": "به تنظیم اضافه کن", "Add to setting": "به تنظیم اضافه کن",
@ -55,7 +56,9 @@
"Added by:": "اضافه شده توسط", "Added by:": "اضافه شده توسط",
"Added items view depends on theme part": "موارد اضافه شده بسته به نوع نمای انتخاب شده متفاوت خواهد بود", "Added items view depends on theme part": "موارد اضافه شده بسته به نوع نمای انتخاب شده متفاوت خواهد بود",
"Additional data": "اطلاعات تکمیلی", "Additional data": "اطلاعات تکمیلی",
"Address": "نشانی",
"Address added to :CUSTOMER": "نشانی به :CUSTOMER اضافه شد", "Address added to :CUSTOMER": "نشانی به :CUSTOMER اضافه شد",
"Address editor": "ویرایشگر نشانی",
"Addresses": "نشانی‌ها", "Addresses": "نشانی‌ها",
"Admin": "مدیر", "Admin": "مدیر",
"Advertise": "تبلیغ", "Advertise": "تبلیغ",
@ -95,7 +98,7 @@
"Category": "دسته", "Category": "دسته",
"Category name": "نام دسته", "Category name": "نام دسته",
"Category slug": "نامک دسته", "Category slug": "نامک دسته",
"Change items sort": "", "Change items sort": "تغییر ترتیب نمایش",
"Change latitude and longitude": "تغییر طول و عرض جغرافیایی", "Change latitude and longitude": "تغییر طول و عرض جغرافیایی",
"Check": "بررسی", "Check": "بررسی",
"Check all": "انتخاب همه", "Check all": "انتخاب همه",
@ -216,7 +219,7 @@
"Image deleted successfully": "تصویر حذف شد", "Image deleted successfully": "تصویر حذف شد",
"Image uploaded successfully": "تصویر افزوده شد", "Image uploaded successfully": "تصویر افزوده شد",
"Images": "تصاویر", "Images": "تصاویر",
"Increase \/ decrease by Admin": "", "Increase \/ decrease by Admin": "افزودن / کاهش توسط مدیر سایت",
"Index image": "تصویر شاخص", "Index image": "تصویر شاخص",
"Information": "اطلاعات", "Information": "اطلاعات",
"Interaction": "تعامل", "Interaction": "تعامل",
@ -232,10 +235,10 @@
"Label": "برچسب", "Label": "برچسب",
"Languages": "زبان‌ها", "Languages": "زبان‌ها",
"Languages list": "فهرست زبان‌ها", "Languages list": "فهرست زبان‌ها",
"Last month visitors devices": "", "Last month visitors devices": "دستگاه بازدیدکنندگان واپسین ماه",
"Last month visits": "بازدیدها واپسین ماه", "Last month visits": "بازدیدها واپسین ماه",
"Last week orders": "سفارشات هفته پیشین", "Last week orders": "سفارشات هفته پیشین",
"Latest ": "واپسین", "Latest ": "واپسین ",
"Latest products": "واپسین محصولات", "Latest products": "واپسین محصولات",
"Latitude": "عرض جغرافیایی", "Latitude": "عرض جغرافیایی",
"Link": "پیوند", "Link": "پیوند",
@ -251,9 +254,9 @@
"Max click": "حداکثر کلیک", "Max click": "حداکثر کلیک",
"Max click zero is unlimited": "حداکثر کلیک 0 به معنای بی‌نهایت است", "Max click zero is unlimited": "حداکثر کلیک 0 به معنای بی‌نهایت است",
"Medias": "رسانه‌ها", "Medias": "رسانه‌ها",
"Menu items": "", "Menu items": "آیتم‌های فهرست",
"Menus": "فهرست‌ها", "Menus": "فهرست‌ها",
"Menus list": "", "Menus list": "فهرست‌ها",
"Message": "پیام", "Message": "پیام",
"Message replay": "پاسخ پیام", "Message replay": "پاسخ پیام",
"Message...": "پیام...", "Message...": "پیام...",
@ -278,6 +281,7 @@
"Please, Login or complete information to pay": "لطفا وارد شوید یا اطلاعات خود را تکمیل کنید تا اجازه پرداخت داشته باشید", "Please, Login or complete information to pay": "لطفا وارد شوید یا اطلاعات خود را تکمیل کنید تا اجازه پرداخت داشته باشید",
"Post": "نوشته", "Post": "نوشته",
"Post Text": "متن نوشته", "Post Text": "متن نوشته",
"Post code": "کد پستی",
"Post reply": "پاسخ نوشته", "Post reply": "پاسخ نوشته",
"Post your comment": "دیدگاه خود را ارسال کنید", "Post your comment": "دیدگاه خود را ارسال کنید",
"Posts": "نوشته‌ها", "Posts": "نوشته‌ها",
@ -382,8 +386,8 @@
"Toggle favorite": "تغییر وضعیت علاقه‌مندی", "Toggle favorite": "تغییر وضعیت علاقه‌مندی",
"Toggle navigation": "", "Toggle navigation": "",
"Toggle selection": "برعکس کردن انتخاب", "Toggle selection": "برعکس کردن انتخاب",
"Total price": "مبلغ کل",
"Total": "همه", "Total": "همه",
"Total price": "مبلغ کل",
"Translate": "ترجمه", "Translate": "ترجمه",
"Translate model": "ترجمه ماژول", "Translate model": "ترجمه ماژول",
"Translate updated": "ترجمه افزوده شد", "Translate updated": "ترجمه افزوده شد",
@ -440,12 +444,14 @@
"an hour ago": "یک ساعت پیش", "an hour ago": "یک ساعت پیش",
"approved": "تایید شد", "approved": "تایید شد",
"area :NAME of website updated": "محیط :NAME وبسایت به روز شد", "area :NAME of website updated": "محیط :NAME وبسایت به روز شد",
"article": "مقاله",
"click here to request another": "برای ایجاد درخواست دیگر اینجا کلیک کنید", "click here to request another": "برای ایجاد درخواست دیگر اینجا کلیک کنید",
"emoji": "ایموجی", "emoji": "ایموجی",
"image": "تصویر", "image": "تصویر",
"jpg": "", "jpg": "",
"minute": "دقیقه", "minute": "دقیقه",
"minute(s)": "دقیقه", "minute(s)": "دقیقه",
"news": "خبر",
"not searchable": "غیرقابل جستجو", "not searchable": "غیرقابل جستجو",
"one second ago": "یک ثانیه پیش", "one second ago": "یک ثانیه پیش",
"password repeat": "تکرار گذرواژه", "password repeat": "تکرار گذرواژه",

@ -428,9 +428,9 @@ Route::get('whoami', function () {
Route::any('{lang}/{any}', [ClientController::class, 'lang']) Route::any('{lang}/{any}', [ClientController::class, 'lang'])
->where('any', '.*') ->where('any', '.*')
->where('lang','[A-Za-z]{2}') ->where('lang','[A-Za-z]{2}')
->middleware([\App\Http\Middleware\LangControl::class]); ->middleware([\App\Http\Middleware\LangControl::class,\App\Http\Middleware\VisitorCounter::class]);
Route::any('{lang}', [ClientController::class, 'langIndex']) Route::any('{lang}', [ClientController::class, 'langIndex'])
->where('lang','[A-Za-z]{2}') ->where('lang','[A-Za-z]{2}')
->middleware([\App\Http\Middleware\LangControl::class]); ->middleware([\App\Http\Middleware\LangControl::class,\App\Http\Middleware\VisitorCounter::class]);

Loading…
Cancel
Save