Add language switch functionality: Implemented a new route for switching languages, allowing users to change the application language dynamically. Introduced a language selector component in the navbar for improved user experience, ensuring proper localization support. Updated the switch_language helper function to streamline locale management.

This commit is contained in:
Ümit Tunç
2025-11-04 15:28:24 -03:00
parent 7da35f79bb
commit 45534be05e
3 changed files with 51 additions and 4 deletions
+1 -4
View File
@@ -181,10 +181,7 @@ if (!function_exists('switch_language')) {
} }
app()->setLocale($languageCode); app()->setLocale($languageCode);
session(['locale' => $languageCode]);
if (auth()->check()) {
session(['locale' => $languageCode]);
}
return true; return true;
} }
@@ -0,0 +1,36 @@
@php
$languages = available_languages();
$currentLang = current_language_code();
@endphp
<div class="navbar-other w-full !flex !ml-auto">
<ul class="navbar-nav !flex-row !items-center !ml-auto">
<li class="nav-item dropdown language-select uppercase group">
<a class="nav-link dropdown-item dropdown-toggle xl:!text-[.85rem] lg:!text-[.85rem] max-lg:!text-[1.05rem]" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@php
$currentLanguage = $languages->firstWhere('code', $currentLang);
@endphp
@if($currentLanguage)
{{ $currentLanguage->flag ?? '' }} {{ strtoupper($currentLanguage->code) }}
@else
{{ strtoupper($currentLang) }}
@endif
</a>
<ul class="dropdown-menu group-hover:shadow-[0_0.25rem_0.75rem_rgba(30,34,40,0.15)]">
@foreach($languages as $language)
<li class="nav-item">
<a class="dropdown-item hover:!text-[#747ed1] {{ $language->code === $currentLang ? 'active' : '' }}"
href="{{ route('language.switch', $language->code) }}">
{{ $language->flag ?? '' }} {{ strtoupper($language->code) }}
</a>
</li>
@endforeach
</ul>
</li>
<li class="nav-item"><a class="nav-link" data-bs-toggle="offcanvas" data-bs-target="#offcanvas-info"><i class="uil uil-info-circle before:content-['\eb99'] !text-[1.1rem]"></i></a></li>
<li class="nav-item xl:!hidden lg:!hidden">
<button class="hamburger offcanvas-nav-btn"><span></span></button>
</li>
</ul>
<!-- /.navbar-nav -->
</div>
+14
View File
@@ -54,6 +54,20 @@ Route::get('/debug-homepage', function () {
]); ]);
}); });
// Language Switch
Route::get('/lang/{locale}', function ($locale) {
if (function_exists('switch_language')) {
switch_language($locale);
} else {
$language = \App\Models\Language::findByCode($locale);
if ($language && $language->is_active) {
app()->setLocale($locale);
session(['locale' => $locale]);
}
}
return redirect()->back();
})->name('language.switch');
// Homepage -> admin panelinde "is_homepage" olarak işaretli sayfa dinamik olarak gösterilir // Homepage -> admin panelinde "is_homepage" olarak işaretli sayfa dinamik olarak gösterilir
Route::get('/', [PageController::class, 'index'])->name('homepage'); Route::get('/', [PageController::class, 'index'])->name('homepage');