feat: generalize UI wording — Verein→Organisation, Mannschaft→Team

Makes the German UI labels domain-neutral (Verein/Firma both fit "Organisation"),
Mannschaft was pure sports vocabulary and is replaced with Team.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0143yYvjesjHndBACoweyK67
This commit is contained in:
patrickandClaude Sonnet 5 committed 2026-09-11 18:35:54 +02:00
1 parent 597f7a8135
commit 1c013b301c
5 files changed
+11 -11

No files matched your search

@@ -61,7 +61,7 @@ export function CreateOrganizationForm() {
return (
<Card className="max-w-sm">
<CardHeader>
<CardTitle className="text-lg">Verein anlegen</CardTitle>
<CardTitle className="text-lg">Organisation anlegen</CardTitle>
</CardHeader>
<CardContent>
<Form {...form}>
@@ -94,7 +94,7 @@ export function CreateOrganizationForm() {
/>
{error && <p className="text-sm text-destructive">{error}</p>}
<Button type="submit" disabled={form.formState.isSubmitting}>
{form.formState.isSubmitting ? "Lege an…" : "Verein anlegen"}
{form.formState.isSubmitting ? "Lege an…" : "Organisation anlegen"}
</Button>
</form>
</Form>
@@ -23,7 +23,7 @@ interface TileDef {
const tileDefs: TileDef[] = [
{ key: "members", label: "Mitglieder", icon: Users, href: "/members" },
{ key: "departments", label: "Abteilungen", icon: Layers, href: "/departments" },
{ key: "teams", label: "Mannschaften", icon: Shield, href: "/teams" },
{ key: "teams", label: "Teams", icon: Shield, href: "/teams" },
{ key: "chatRooms", label: "Chatgruppen", icon: MessageSquare },
{ key: "invitations", label: "Einladungen", icon: Mail },
];
@@ -15,17 +15,17 @@ export function OrganizationSwitcher() {
}
if (error) {
return <p className="text-sm text-destructive">Vereine konnten nicht geladen werden</p>;
return <p className="text-sm text-destructive">Organisationen konnten nicht geladen werden</p>;
}
if (organizations.length === 0) {
return <p className="text-sm text-muted-foreground">Kein Verein zugeordnet</p>;
return <p className="text-sm text-muted-foreground">Keine Organisation zugeordnet</p>;
}
return (
<Select value={activeOrganizationId ?? undefined} onValueChange={setActiveOrganizationId}>
<SelectTrigger className="w-48">
<SelectValue placeholder="Verein wählen" />
<SelectValue placeholder="Organisation wählen" />
</SelectTrigger>
<SelectContent>
{organizations.map((organization) => (
+1 -1
View File
@@ -71,7 +71,7 @@ export function MembersPage() {
</div>
{!activeOrganizationId && (
<p className="text-sm text-muted-foreground">Kein Verein ausgewählt.</p>
<p className="text-sm text-muted-foreground">Keine Organisation ausgewählt.</p>
)}
{error && <p className="text-sm text-destructive">Fehler beim Laden: {error}</p>}
{statusError && <p className="text-sm text-destructive">{statusError}</p>}
+4 -4
View File
@@ -85,7 +85,7 @@ export function TeamsPage() {
return (
<main className="min-h-screen p-6 space-y-6">
<div className="flex items-center justify-between">
<h1 className="text-2xl font-semibold">Mannschaften</h1>
<h1 className="text-2xl font-semibold">Teams</h1>
<Button variant="outline" asChild>
<Link to="/">Zurück zum Dashboard</Link>
</Button>
@@ -93,7 +93,7 @@ export function TeamsPage() {
<Card className="max-w-lg">
<CardContent className="pt-6 space-y-3">
<Input placeholder="Name der Mannschaft" value={name} onChange={(e) => setName(e.target.value)} />
<Input placeholder="Name des Teams" value={name} onChange={(e) => setName(e.target.value)} />
<div className="flex gap-2">
<Select value={departmentId} onValueChange={setDepartmentId}>
<SelectTrigger>
@@ -121,7 +121,7 @@ export function TeamsPage() {
</Select>
</div>
<Button onClick={onCreate} disabled={!name.trim() || !departmentId || !seasonId}>
Mannschaft anlegen
Team anlegen
</Button>
{departments.length === 0 && (
<p className="text-xs text-muted-foreground">Erst eine Abteilung anlegen.</p>
@@ -137,7 +137,7 @@ export function TeamsPage() {
{loading ? (
<p className="text-sm text-muted-foreground">Lädt…</p>
) : teams.length === 0 ? (
<p className="text-sm text-muted-foreground">Keine Mannschaften</p>
<p className="text-sm text-muted-foreground">Keine Teams</p>
) : (
teams.map((team) => (
<Card key={team.id}>