From 4b16efaf9ca7afcbae29838abedb5dc8787facf1 Mon Sep 17 00:00:00 2001 From: HolgerHatGarKeineNode Date: Fri, 5 Dec 2025 18:44:23 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90=20Replace=20`language-selector`=20?= =?UTF-8?q?component,=20introduce=20`livewire:language.selector`=20and=20e?= =?UTF-8?q?nhance=20sidebar=20with=20dynamic=20language=20and=20country=20?= =?UTF-8?q?selection=20options?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/layouts/app/sidebar.blade.php | 14 ++-- resources/views/livewire/auth/login.blade.php | 4 +- .../views/livewire/country/chooser.blade.php | 2 +- .../livewire/language/selector.blade.php | 68 +++++++++++++++++++ .../views/livewire/timezone/chooser.blade.php | 2 +- resources/views/livewire/welcome.blade.php | 2 +- 6 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 resources/views/livewire/language/selector.blade.php diff --git a/resources/views/components/layouts/app/sidebar.blade.php b/resources/views/components/layouts/app/sidebar.blade.php index 14af501..4431d42 100644 --- a/resources/views/components/layouts/app/sidebar.blade.php +++ b/resources/views/components/layouts/app/sidebar.blade.php @@ -99,12 +99,6 @@ - - {{ __('Sprache wechseln') }} - @@ -114,12 +108,18 @@ -
+
+ {{ __('Land auswählen') }}
+
+ {{ __('Sprache wechseln') }} + +
@if(auth()->check()) + {{ __('Zeitzone') }} @endif
diff --git a/resources/views/livewire/auth/login.blade.php b/resources/views/livewire/auth/login.blade.php index 7b66d6f..65248ec 100644 --- a/resources/views/livewire/auth/login.blade.php +++ b/resources/views/livewire/auth/login.blade.php @@ -202,7 +202,7 @@ class extends Component { {{ __('Log in mit Nostr') }} -
+
{{ __('Login with lightning ⚡') }}
@@ -245,7 +245,7 @@ class extends Component { @endif--}} - +
diff --git a/resources/views/livewire/country/chooser.blade.php b/resources/views/livewire/country/chooser.blade.php index 44e483b..fd742e3 100644 --- a/resources/views/livewire/country/chooser.blade.php +++ b/resources/views/livewire/country/chooser.blade.php @@ -23,7 +23,7 @@ new class extends Component {
+ wire:model.live.debounce="currentCountry"> diff --git a/resources/views/livewire/language/selector.blade.php b/resources/views/livewire/language/selector.blade.php new file mode 100644 index 0000000..53aa570 --- /dev/null +++ b/resources/views/livewire/language/selector.blade.php @@ -0,0 +1,68 @@ + fn() => session('lang_country', config('lang-country.fallback'))]); + +$languages = computed(function () { + // Scan lang folder for available languages + $availableLanguages = collect(glob(base_path('lang/*.json'))) + ->map(fn($file) => pathinfo($file, PATHINFO_FILENAME)) + ->toArray(); + + $allLanguages = [ + 'de' => ['name' => 'Deutsch', 'countries' => ['de-DE', 'de-AT', 'de-CH']], + 'en' => ['name' => 'English', 'countries' => ['en-GB', 'en-US', 'en-AU', 'en-CA']], + 'es' => ['name' => 'Español', 'countries' => ['es-ES', 'es-CL', 'es-CO']], + 'hu' => ['name' => 'Magyar', 'countries' => ['hu-HU']], + 'nl' => ['name' => 'Nederlands', 'countries' => ['nl-NL', 'nl-BE']], + 'pl' => ['name' => 'Polski', 'countries' => ['pl-PL']], + 'pt' => ['name' => 'Português', 'countries' => ['pt-PT']], + ]; + + // Filter languages based on available JSON files and allowed languages + $languages = array_filter($allLanguages, function ($data, $key) use ($availableLanguages) { + return in_array($key, $availableLanguages) && + count(array_intersect($data['countries'], config('lang-country.allowed'))) > 0; + }, ARRAY_FILTER_USE_BOTH); + + // Build options array + $options = []; + foreach ($languages as $langCode => $langData) { + foreach ($langData['countries'] as $langCountry) { + [$lang, $countryCode] = explode('-', $langCountry); + $options[] = [ + 'value' => $langCountry, + 'label' => $langData['name'] . ' (' . strtoupper($countryCode) . ')', + ]; + } + } + + return $options; +}); + +$updateLanguage = function () { + return redirect()->route('lang_country.switch', ['lang_country' => $this->langCountry]); +}; + +?> + +
+ + @foreach($this->languages as $option) + +
+ {{ str($option['value'])->after('-')->lower() }} + {{ $option['label'] }} +
+
+ @endforeach +
+
diff --git a/resources/views/livewire/timezone/chooser.blade.php b/resources/views/livewire/timezone/chooser.blade.php index 5537d82..010e8f2 100644 --- a/resources/views/livewire/timezone/chooser.blade.php +++ b/resources/views/livewire/timezone/chooser.blade.php @@ -39,7 +39,7 @@ new class extends Component {
+ wire:model.live.debounce="selectedTimezone"> diff --git a/resources/views/livewire/welcome.blade.php b/resources/views/livewire/welcome.blade.php index 8c45a9e..491842d 100644 --- a/resources/views/livewire/welcome.blade.php +++ b/resources/views/livewire/welcome.blade.php @@ -66,7 +66,7 @@ class extends Component {
- +