Mehrsprachigkeit der Oberfläche (Deutsch Standard, Englisch wählbar)

- Sprache je Benutzer (users.locale), Middleware SetLocale, Auswahl unter
  Einstellungen → Darstellung; angebotene Sprachen in config/app.php
- Übersetzungen über Laravel Lang (lang/de.json, lang/de/*.php), Seitentitel
  aus #[Title] werden übersetzt
- Eigene Texte und Korrekturen in lang/project/de.json, übernommen mit
  `artisan lang:apply-project` (überstehen `lang:update`)
- Tests: jede im Code verwendete Übersetzung ist vorhanden, eigene
  Übersetzungen sind übernommen, Sprachwahl und Standardsprache;
  SecurityTest prüft Texte sprachunabhängig über __()
- lang/ von Pint ausgenommen (erzeugte Dateien)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Christoph
2026-10-01 09:52:20 +02:00
co-authored by Claude Opus 5.5
parent cdd2d5b676
commit db2d5d6228
32 changed files with 4108 additions and 18 deletions
@@ -4,7 +4,21 @@
<x-heading class="sr-only">{{ __('Appearance settings') }}</x-heading>
<x-settings.layout :heading="__('Appearance')" :subheading="__('Update the appearance settings for your account')">
{{-- Hell / Dunkel / System; nutzt den Theme-Zustand aus tallstackui_darkTheme() am <html>-Element. --}}
<x-ts-theme-switch />
<div class="space-y-8">
<div class="space-y-3">
<x-heading level="3">{{ __('Theme') }}</x-heading>
{{-- Hell / Dunkel / System; nutzt den Theme-Zustand aus tallstackui_darkTheme() am <html>-Element. --}}
<x-ts-theme-switch />
</div>
<div class="max-w-xs space-y-3">
<x-heading level="3">{{ __('Language') }}</x-heading>
{{-- Sprachnamen bewusst in der jeweiligen Sprache, nicht übersetzt. --}}
<x-ts-select.native wire:model.live="locale"
:options="collect(config('app.available_locales'))->map(fn ($label, $code) => ['label' => $label, 'value' => $code])->values()->all()"
select="label:label|value:value"
data-test="locale-select" />
</div>
</div>
</x-settings.layout>
</section>