'required|string|max:10', 'timezone' => 'required|string|max:64', ]; } public function mount(): void { // Defaults aus ENV nur für den allerersten Seed in Settings (Redis/DB) $envLocale = env('APP_LOCALE') ?? env('APP_FALLBACK_LOCALE') ?? $this->locale; $envTimezone = env('APP_TIMEZONE') ?? $this->timezone; // Wenn (noch) nichts in Settings liegt, einmalig mit ENV-Werten befüllen if (Setting::get('locale', null) === null) { Setting::set('locale', $envLocale); } if (Setting::get('timezone', null) === null) { Setting::set('timezone', $envTimezone); } // Ab hier ausschließlich aus Settings lesen (Redis → DB Fallback) $this->locale = (string) Setting::get('locale', $envLocale); $this->timezone = (string) Setting::get('timezone', $envTimezone); // Sofort für die aktuelle Request anwenden app()->setLocale($this->locale); @date_default_timezone_set($this->timezone); config([ 'app.locale' => $this->locale, 'app.fallback_locale' => $this->locale, 'app.timezone' => $this->timezone, ]); } public function save(): void { $this->validate(); // Persistieren: DB → Redis (siehe Setting::set) Setting::set('locale', $this->locale); Setting::set('timezone', $this->timezone); // Direkt in der laufenden Request aktivieren app()->setLocale($this->locale); @date_default_timezone_set($this->timezone); config([ 'app.locale' => $this->locale, 'app.fallback_locale' => $this->locale, // optional 'app.timezone' => $this->timezone, ]); $this->dispatch('toast', type: 'done', badge: 'System', title: 'Allgemein gespeichert', text: 'Sprache und Zeitzone wurden übernommen.', duration: 5000, ); } public function render() { return view('livewire.ui.system.form.general-form'); } }