62 lines
1.7 KiB
PHP
62 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Web\Components\Ui;
|
|
|
|
use Livewire\Component;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class TopBar extends Component
|
|
{
|
|
public $currentLocale;
|
|
public $availableLocales = [
|
|
'de' => 'Deutsch',
|
|
'en' => 'English',
|
|
//'fr' => 'Français',
|
|
//'es' => 'Español',
|
|
];
|
|
|
|
public $localeFlags = [
|
|
'de' => '🇩🇪',
|
|
'en' => '🇬🇧',
|
|
];
|
|
|
|
public $domainName;
|
|
|
|
public function mount()
|
|
{
|
|
Log::info('Mounting TopBar');
|
|
$sessionLocale = session('locale');
|
|
if ($sessionLocale && array_key_exists($sessionLocale, $this->availableLocales)) {
|
|
app()->setLocale($sessionLocale);
|
|
$this->currentLocale = $sessionLocale;
|
|
} else {
|
|
$this->currentLocale = app()->getLocale();
|
|
}
|
|
$this->domainName = \App\Helpers\ThemeHelper::getDomainName();
|
|
}
|
|
|
|
public function switchLanguage($locale)
|
|
{
|
|
Log::info('Switching language to: ' . $locale);
|
|
|
|
if (array_key_exists($locale, $this->availableLocales)) {
|
|
app()->setLocale($locale);
|
|
session(['locale' => $locale]);
|
|
$this->currentLocale = $locale;
|
|
|
|
Log::info('Language switched successfully to: ' . $locale);
|
|
|
|
// Wichtig: In Livewire zeigt request()->url() auf /livewire/update.
|
|
// Für einen Seiten-Reload müssen wir den Browser-Referer nutzen.
|
|
$referer = request()->header('Referer') ?? '/';
|
|
return redirect()->to($referer);
|
|
}
|
|
|
|
Log::warning('Invalid locale attempted: ' . $locale);
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.web.components.ui.top-bar');
|
|
}
|
|
}
|