@php
- $languages = [
+ // 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']],
+ 'nl' => ['name' => 'Nederlands', 'countries' => ['nl-NL', 'nl-BE']],
+ '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);
+
$currentLangCountry = session('lang_country', config('lang-country.fallback'));
@endphp
diff --git a/resources/views/livewire/auth/confirm-password.blade.php b/resources/views/livewire/auth/confirm-password.blade.php
index fb75ef3..11e1ad5 100644
--- a/resources/views/livewire/auth/confirm-password.blade.php
+++ b/resources/views/livewire/auth/confirm-password.blade.php
@@ -32,7 +32,7 @@ class extends Component {
session(['auth.password_confirmed_at' => time()]);
- $this->redirectIntended(default: route('dashboard', ['country' => str(session('lang_country', 'de'))->after('-')->lower()], absolute: false), navigate: true);
+ $this->redirectIntended(default: route('dashboard', ['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()], absolute: false), navigate: true);
}
}; ?>
diff --git a/resources/views/livewire/auth/login.blade.php b/resources/views/livewire/auth/login.blade.php
index 76e2fd2..6d7c70c 100644
--- a/resources/views/livewire/auth/login.blade.php
+++ b/resources/views/livewire/auth/login.blade.php
@@ -36,9 +36,12 @@ class extends Component {
public ?string $url = null;
public ?string $lnurl = null;
public ?string $qrCode = null;
+ public string $currentLangCountry = 'de-DE';
public function mount(): void
{
+ $this->currentLangCountry = session('lang_country');
+
// Nur beim ersten Mount initialisieren
if ($this->k1 === null) {
$this->k1 = bin2hex(str()->random(32));
@@ -64,7 +67,7 @@ class extends Component {
Auth::loginUsingId($user->id);
Session::regenerate();
$this->redirectIntended(
- default: route('dashboard', ['country' => str(session('lang_country', 'de'))->after('-')->lower()], absolute: false),
+ default: route('dashboard', ['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()], absolute: false),
navigate: true,
);
return;
@@ -85,9 +88,12 @@ class extends Component {
RateLimiter::clear($this->throttleKey());
Session::regenerate();
+ session([
+ 'lang_country' => $this->currentLangCountry,
+ ]);
$this->redirectIntended(
- default: route('dashboard', ['country' => str(session('lang_country', 'de'))->after('-')->lower()], absolute: false),
+ default: route('dashboard', ['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()], absolute: false),
navigate: true
);
}
@@ -134,8 +140,12 @@ class extends Component {
\App\Models\User::find(1)
->notify(new ModelCreatedNotification($user, 'users'));
auth()->login($user);
+ Session::regenerate();
+ session([
+ 'lang_country' => $this->currentLangCountry,
+ ]);
- return to_route('dashboard', ['country' => str(session('lang_country', 'de'))->after('-')->lower()]);
+ return to_route('dashboard', ['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()]);
}
return true;
diff --git a/resources/views/livewire/auth/register.blade.php b/resources/views/livewire/auth/register.blade.php
index 795e595..83e8ab1 100644
--- a/resources/views/livewire/auth/register.blade.php
+++ b/resources/views/livewire/auth/register.blade.php
@@ -35,7 +35,7 @@ class extends Component {
Auth::login($user);
- $this->redirectIntended(route('dashboard', ['country' => str(session('lang_country', 'de'))->after('-')->lower()],absolute: false), navigate: true);
+ $this->redirectIntended(route('dashboard', ['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()],absolute: false), navigate: true);
}
}; ?>
diff --git a/resources/views/livewire/auth/verify-email.blade.php b/resources/views/livewire/auth/verify-email.blade.php
index d363368..6a0ea49 100644
--- a/resources/views/livewire/auth/verify-email.blade.php
+++ b/resources/views/livewire/auth/verify-email.blade.php
@@ -17,7 +17,7 @@ class extends Component {
public function sendVerification(): void
{
if (Auth::user()->hasVerifiedEmail()) {
- $this->redirectIntended(default: route('dashboard', ['country' => str(session('lang_country', 'de'))->after('-')->lower()],absolute: false), navigate: true);
+ $this->redirectIntended(default: route('dashboard', ['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()],absolute: false), navigate: true);
return;
}
diff --git a/resources/views/livewire/cities/index.blade.php b/resources/views/livewire/cities/index.blade.php
index 3e247ee..c4de172 100644
--- a/resources/views/livewire/cities/index.blade.php
+++ b/resources/views/livewire/cities/index.blade.php
@@ -17,7 +17,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
}
public function with(): array
diff --git a/resources/views/livewire/country/chooser.blade.php b/resources/views/livewire/country/chooser.blade.php
index 9802699..fd742e3 100644
--- a/resources/views/livewire/country/chooser.blade.php
+++ b/resources/views/livewire/country/chooser.blade.php
@@ -9,7 +9,7 @@ new class extends Component {
public function mount(): void
{
- $this->currentCountry = request()->route('country', 'de');
+ $this->currentCountry = request()->route('country', config('app.domain_country'));
$this->currentRouteName = request()->route()->getName();
$this->currentRouteParams = request()->route()->parameters();
}
diff --git a/resources/views/livewire/courses/create-edit-events.blade.php b/resources/views/livewire/courses/create-edit-events.blade.php
index 959f66b..20afdc1 100644
--- a/resources/views/livewire/courses/create-edit-events.blade.php
+++ b/resources/views/livewire/courses/create-edit-events.blade.php
@@ -37,7 +37,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
$timezone = auth()->user()->timezone ?? 'Europe/Berlin';
if ($this->event) {
diff --git a/resources/views/livewire/courses/index.blade.php b/resources/views/livewire/courses/index.blade.php
index e3f1d36..5df937f 100644
--- a/resources/views/livewire/courses/index.blade.php
+++ b/resources/views/livewire/courses/index.blade.php
@@ -17,7 +17,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
}
public function with(): array
diff --git a/resources/views/livewire/courses/landingpage.blade.php b/resources/views/livewire/courses/landingpage.blade.php
index 76f892a..7b42676 100644
--- a/resources/views/livewire/courses/landingpage.blade.php
+++ b/resources/views/livewire/courses/landingpage.blade.php
@@ -17,7 +17,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
}
public function with(): array
diff --git a/resources/views/livewire/dashboard.blade.php b/resources/views/livewire/dashboard.blade.php
index fb04b03..0fe61d1 100644
--- a/resources/views/livewire/dashboard.blade.php
+++ b/resources/views/livewire/dashboard.blade.php
@@ -18,7 +18,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
}
public function addMeetup()
diff --git a/resources/views/livewire/lecturers/index.blade.php b/resources/views/livewire/lecturers/index.blade.php
index 17269e6..768aae8 100644
--- a/resources/views/livewire/lecturers/index.blade.php
+++ b/resources/views/livewire/lecturers/index.blade.php
@@ -17,7 +17,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
}
public function with(): array
diff --git a/resources/views/livewire/meetups/create-edit-events.blade.php b/resources/views/livewire/meetups/create-edit-events.blade.php
index 5c6ff78..736b8ca 100644
--- a/resources/views/livewire/meetups/create-edit-events.blade.php
+++ b/resources/views/livewire/meetups/create-edit-events.blade.php
@@ -31,7 +31,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
$timezone = auth()->user()->timezone ?? 'Europe/Berlin';
if ($this->event) {
diff --git a/resources/views/livewire/meetups/index.blade.php b/resources/views/livewire/meetups/index.blade.php
index 83ffa64..2eff688 100644
--- a/resources/views/livewire/meetups/index.blade.php
+++ b/resources/views/livewire/meetups/index.blade.php
@@ -17,7 +17,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
}
public function with(): array
diff --git a/resources/views/livewire/meetups/landingpage-event.blade.php b/resources/views/livewire/meetups/landingpage-event.blade.php
index fe5bfe5..317cb43 100644
--- a/resources/views/livewire/meetups/landingpage-event.blade.php
+++ b/resources/views/livewire/meetups/landingpage-event.blade.php
@@ -25,7 +25,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
$this->name = auth()->user()->name ?? '';
$this->loadAttendees();
}
diff --git a/resources/views/livewire/meetups/landingpage.blade.php b/resources/views/livewire/meetups/landingpage.blade.php
index 196d10b..a1176af 100644
--- a/resources/views/livewire/meetups/landingpage.blade.php
+++ b/resources/views/livewire/meetups/landingpage.blade.php
@@ -17,7 +17,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
}
public function with(): array
diff --git a/resources/views/livewire/meetups/map.blade.php b/resources/views/livewire/meetups/map.blade.php
index 29bd86f..0d1d563 100644
--- a/resources/views/livewire/meetups/map.blade.php
+++ b/resources/views/livewire/meetups/map.blade.php
@@ -16,7 +16,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
$geoCountry = \Lwwcas\LaravelCountries\Models\Country::query()
->where('iso_alpha_2', str($this->country)->upper())
->first()
diff --git a/resources/views/livewire/settings/profile.blade.php b/resources/views/livewire/settings/profile.blade.php
index 776a445..bf92acb 100644
--- a/resources/views/livewire/settings/profile.blade.php
+++ b/resources/views/livewire/settings/profile.blade.php
@@ -64,7 +64,7 @@ class extends Component {
$user = Auth::user();
if ($user->hasVerifiedEmail()) {
- $this->redirectIntended(default: route('dashboard', ['country' => str(session('lang_country', 'de'))->after('-')->lower()],absolute: false));
+ $this->redirectIntended(default: route('dashboard', ['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()],absolute: false));
return;
}
@@ -127,11 +127,22 @@ class extends Component {
@php
- $languages = [
+ // 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']],
+ 'nl' => ['name' => 'Nederlands', 'countries' => ['nl-NL', 'nl-BE']],
+ 'pt' => ['name' => 'Português', 'countries' => ['pt-PT', 'pt-BR']],
];
+
+ // Filter languages based on available JSON files
+ $languages = array_filter($allLanguages, fn($key) => in_array($key, $availableLanguages), ARRAY_FILTER_USE_KEY);
+
$currentLangCountry = session('lang_country', config('lang-country.fallback'));
@endphp
diff --git a/resources/views/livewire/venues/index.blade.php b/resources/views/livewire/venues/index.blade.php
index 6e0035d..663a0af 100644
--- a/resources/views/livewire/venues/index.blade.php
+++ b/resources/views/livewire/venues/index.blade.php
@@ -17,7 +17,7 @@ class extends Component {
public function mount(): void
{
- $this->country = request()->route('country');
+ $this->country = request()->route('country', config('app.domain_country'));
}
public function with(): array
diff --git a/resources/views/livewire/welcome.blade.php b/resources/views/livewire/welcome.blade.php
index 8f07f12..75c3e4a 100644
--- a/resources/views/livewire/welcome.blade.php
+++ b/resources/views/livewire/welcome.blade.php
@@ -13,12 +13,12 @@ class extends Component {
public function goToMeetups(): void
{
- $this->redirect(route('meetups.index', ['country' => str(session('lang_country', 'de'))->after('-')->lower()]), navigate: true);
+ $this->redirect(route('meetups.index', ['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()]), navigate: true);
}
public function goToMap(): void
{
- $this->redirect(route('meetups.map', ['country' => str(session('lang_country', 'de'))->after('-')->lower()]), navigate: true);
+ $this->redirect(route('meetups.map', ['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()]), navigate: true);
}
}; ?>
@@ -60,7 +60,7 @@ class extends Component {
{{ __('Kartenansicht öffnen') }}
-
{{ __('Login') }}
diff --git a/routes/web.php b/routes/web.php
index 247b1ff..1d4dc23 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -48,6 +48,12 @@ Route::middleware(['auth'])
return redirect('/de/dashboard'); // Zu /de weiterleiten
});
+Route::middleware([])
+ ->prefix('/{country:code?}')
+ ->group(function () {
+ Volt::route('dashboard', 'dashboard')->name('dashboard');
+ });
+
Route::middleware([])
->prefix('/{country:code}')
->group(function () {
@@ -83,7 +89,6 @@ Route::middleware([])
Route::middleware(['auth'])
->prefix('/{country:code}')
->group(function () {
- Volt::route('dashboard', 'dashboard')->name('dashboard');
Volt::route('meetup-create', 'meetups.create')->name('meetups.create');
Volt::route('meetup-edit/{meetup}', 'meetups.edit')->name('meetups.edit');
Volt::route('meetup/{meetup}/events/create', 'meetups.create-edit-events')->name('meetups.events.create');