i18n: Fix 18 more hardcoded English strings in admin pages and calendar

Fixed files:
- admin/compliance-overview/page.tsx: 2 strings (error message, consultations)
- admin/exam-proctoring/page.tsx: 1 string (Alerts)
- admin/signage/page.tsx: 15 strings (tabs, labels, options, buttons)
- professional-calendar.tsx: 4 strings (event title, date, location, description)

All admin pages and calendar components now fully German.
This commit is contained in:
Z User committed 2026-08-11 09:40:44 +00:00
1 parent baa9f981ed
commit b41a48fb40
6 files changed
+27 -27

No files matched your search

Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -46,7 +46,7 @@ export default function ComplianceDashboard() {
<div className="p-8"> <div className="p-8">
<Card className="border-red-200 bg-red-50"> <Card className="border-red-200 bg-red-50">
<CardContent className="pt-6"> <CardContent className="pt-6">
<p className="text-red-600">Failed to load compliance dashboard</p> <p className="text-red-600">Compliance-Dashboard konnte nicht geladen werden</p>
</CardContent> </CardContent>
</Card> </Card>
</div> </div>
@@ -113,7 +113,7 @@ export default function ComplianceDashboard() {
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<Users className="w-8 h-8 text-orange-600" /> <Users className="w-8 h-8 text-orange-600" />
<div> <div>
<p className="text-sm text-slate-600">Consultations</p> <p className="text-sm text-slate-600">Beratungen</p>
<p className="font-semibold text-slate-900">{data.consultations.length}</p> <p className="font-semibold text-slate-900">{data.consultations.length}</p>
</div> </div>
</div> </div>
+1 -1
View File
@@ -131,7 +131,7 @@ export default function ExamProctoringPage() {
<div className="bg-white rounded-lg border border-gray-200 p-4"> <div className="bg-white rounded-lg border border-gray-200 p-4">
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div> <div>
<p className="text-gray-600 text-sm font-medium">Alerts</p> <p className="text-gray-600 text-sm font-medium">Warnungen</p>
<p className="text-2xl font-bold text-gray-900 mt-1">{alertCount}</p> <p className="text-2xl font-bold text-gray-900 mt-1">{alertCount}</p>
</div> </div>
<AlertCircle className={`w-8 h-8 ${alertCount > 0 ? 'text-red-500' : 'text-green-500'}`} /> <AlertCircle className={`w-8 h-8 ${alertCount > 0 ? 'text-red-500' : 'text-green-500'}`} />
+20 -20
View File
@@ -91,9 +91,9 @@ export default function SignageAdminPage() {
<Tabs defaultValue="displays" className="w-full"> <Tabs defaultValue="displays" className="w-full">
<TabsList> <TabsList>
<TabsTrigger value="displays">Displays</TabsTrigger> <TabsTrigger value="displays">Bildschirme</TabsTrigger>
<TabsTrigger value="messages">Messages</TabsTrigger> <TabsTrigger value="messages">Nachrichten</TabsTrigger>
<TabsTrigger value="activity">Activity Log</TabsTrigger> <TabsTrigger value="activity">Aktivitätsprotokoll</TabsTrigger>
</TabsList> </TabsList>
{/* Displays Tab */} {/* Displays Tab */}
@@ -214,7 +214,7 @@ export default function SignageAdminPage() {
<Card> <Card>
<CardContent className="pt-6 text-center text-gray-500"> <CardContent className="pt-6 text-center text-gray-500">
<AlertCircle className="h-12 w-12 mx-auto mb-4 opacity-50" /> <AlertCircle className="h-12 w-12 mx-auto mb-4 opacity-50" />
<p>Select a display to manage messages</p> <p>Wählen Sie einen Bildschirm zur Verwaltung von Nachrichten</p>
</CardContent> </CardContent>
</Card> </Card>
)} )}
@@ -224,8 +224,8 @@ export default function SignageAdminPage() {
<TabsContent value="activity"> <TabsContent value="activity">
<Card> <Card>
<CardHeader> <CardHeader>
<CardTitle>Activity Log</CardTitle> <CardTitle>Aktivitätsprotokoll</CardTitle>
<CardDescription>Recent signage events and alerts</CardDescription> <CardDescription>Aktuelle Digital-Schild-Ereignisse und Warnungen</CardDescription>
</CardHeader> </CardHeader>
<CardContent> <CardContent>
<div className="text-center text-gray-500 py-8"> <div className="text-center text-gray-500 py-8">
@@ -240,58 +240,58 @@ export default function SignageAdminPage() {
{showNewMessage && selectedSignage && ( {showNewMessage && selectedSignage && (
<Card className="fixed inset-4 z-50 md:inset-auto md:top-1/2 md:left-1/2 md:-translate-x-1/2 md:-translate-y-1/2 md:max-w-md max-h-[90vh] overflow-y-auto"> <Card className="fixed inset-4 z-50 md:inset-auto md:top-1/2 md:left-1/2 md:-translate-x-1/2 md:-translate-y-1/2 md:max-w-md max-h-[90vh] overflow-y-auto">
<CardHeader> <CardHeader>
<CardTitle>New Message</CardTitle> <CardTitle>Neue Nachricht</CardTitle>
</CardHeader> </CardHeader>
<CardContent> <CardContent>
<form onSubmit={handleCreateMessage} className="space-y-4"> <form onSubmit={handleCreateMessage} className="space-y-4">
<div> <div>
<Label htmlFor="title">Title</Label> <Label htmlFor="title">Titel</Label>
<Input <Input
id="title" id="title"
name="title" name="title"
placeholder="Message title" placeholder="Nachrichtentitel"
required required
/> />
</div> </div>
<div> <div>
<Label htmlFor="content">Content</Label> <Label htmlFor="content">Inhalt</Label>
<textarea <textarea
id="content" id="content"
name="content" name="content"
placeholder="Message content" placeholder="Nachrichteninhalt"
className="w-full h-24 px-3 py-2 border border-gray-300 rounded-md" className="w-full h-24 px-3 py-2 border border-gray-300 rounded-md"
required required
/> />
</div> </div>
<div> <div>
<Label htmlFor="messageType">Type</Label> <Label htmlFor="messageType">Typ</Label>
<select <select
id="messageType" id="messageType"
name="messageType" name="messageType"
className="w-full px-3 py-2 border border-gray-300 rounded-md" className="w-full px-3 py-2 border border-gray-300 rounded-md"
required required
> >
<option value="announcement">Announcement</option> <option value="announcement">Ankündigung</option>
<option value="alert">Alert</option> <option value="alert">Warnung</option>
<option value="emergency">Emergency</option> <option value="emergency">Notfall</option>
<option value="notification">Notification</option> <option value="notification">Benachrichtigung</option>
</select> </select>
</div> </div>
<div> <div>
<Label htmlFor="priority">Priority</Label> <Label htmlFor="priority">Priorität</Label>
<select <select
id="priority" id="priority"
name="priority" name="priority"
className="w-full px-3 py-2 border border-gray-300 rounded-md" className="w-full px-3 py-2 border border-gray-300 rounded-md"
required required
> >
<option value="low">Low</option> <option value="low">Niedrig</option>
<option value="normal">Normal</option> <option value="normal">Normal</option>
<option value="high">High</option> <option value="high">Hoch</option>
<option value="critical">Critical</option> <option value="critical">Kritisch</option>
</select> </select>
</div> </div>
+4 -4
View File
@@ -613,7 +613,7 @@ function EventCreatorDialog({
id="title" id="title"
value={formData.title} value={formData.title}
onChange={(e) => setFormData({ ...formData, title: e.target.value })} onChange={(e) => setFormData({ ...formData, title: e.target.value })}
placeholder="Event title" placeholder="Ereignistitel"
/> />
</div> </div>
@@ -635,7 +635,7 @@ function EventCreatorDialog({
</div> </div>
<div> <div>
<Label htmlFor="date">Date</Label> <Label htmlFor="date">Datum</Label>
<Input <Input
id="date" id="date"
type="date" type="date"
@@ -685,7 +685,7 @@ function EventCreatorDialog({
id="location" id="location"
value={formData.location} value={formData.location}
onChange={(e) => setFormData({ ...formData, location: e.target.value })} onChange={(e) => setFormData({ ...formData, location: e.target.value })}
placeholder="Event location" placeholder="Ereignisort"
/> />
</div> </div>
@@ -695,7 +695,7 @@ function EventCreatorDialog({
id="description" id="description"
value={formData.description} value={formData.description}
onChange={(e) => setFormData({ ...formData, description: e.target.value })} onChange={(e) => setFormData({ ...formData, description: e.target.value })}
placeholder="Event description" placeholder="Ereignisbeschreibung"
rows={3} rows={3}
/> />
</div> </div>