i18n: Fix 19 more hardcoded English strings in admin pages and components
Fixed: - compliance-overview: Compliance Monitoring Dashboard, Onboarding Status, Data Retention Policies, Active Policies, Consultation Log - exam-proctoring: Exam Proctoring, Active Sessions, Total Sessions - signage: Emergency Signage, Normal option - compliance-wizard: Data Retention Periods, Consultation Checklist, Compliance Setup Complete - dashboard-customizer: Add Widget - data-import-export: Data Management Best Practices, Export data regularly - district-management: Access Denied - exam-session-monitor: Exam Mode Active - professional-calendar: Fixed 'Create Neues Ereignis' typo - sidebar: Toggle Sidebar All admin pages and shared components now fully German.
This commit is contained in:
1 parent
491bdd18a5
commit
91d6980c21
10 files changed
+19
-19
No files matched your search
@@ -56,7 +56,7 @@ export default function ComplianceDashboard() {
|
|||||||
return (
|
return (
|
||||||
<div className="space-y-8 p-8">
|
<div className="space-y-8 p-8">
|
||||||
<div>
|
<div>
|
||||||
<h1 className="text-3xl font-bold text-slate-900">Compliance Monitoring Dashboard</h1>
|
<h1 className="text-3xl font-bold text-slate-900">Compliance-Monitoring-Dashboard</h1>
|
||||||
<p className="text-slate-600 mt-2">
|
<p className="text-slate-600 mt-2">
|
||||||
Track your school's data protection compliance status and document management
|
Track your school's data protection compliance status and document management
|
||||||
</p>
|
</p>
|
||||||
@@ -73,7 +73,7 @@ export default function ComplianceDashboard() {
|
|||||||
<AlertCircle className="w-8 h-8 text-yellow-600" />
|
<AlertCircle className="w-8 h-8 text-yellow-600" />
|
||||||
)}
|
)}
|
||||||
<div>
|
<div>
|
||||||
<p className="text-sm text-slate-600">Onboarding Status</p>
|
<p className="text-sm text-slate-600">Onboarding-Status</p>
|
||||||
<p className="font-semibold text-slate-900">
|
<p className="font-semibold text-slate-900">
|
||||||
{data.status?.onboardingCompleted ? "Complete" : "Pending"}
|
{data.status?.onboardingCompleted ? "Complete" : "Pending"}
|
||||||
</p>
|
</p>
|
||||||
@@ -87,7 +87,7 @@ export default function ComplianceDashboard() {
|
|||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<FileText className="w-8 h-8 text-blue-600" />
|
<FileText className="w-8 h-8 text-blue-600" />
|
||||||
<div>
|
<div>
|
||||||
<p className="text-sm text-slate-600">Data Retention Policies</p>
|
<p className="text-sm text-slate-600">Datenaufbewahrungsrichtlinien</p>
|
||||||
<p className="font-semibold text-slate-900">
|
<p className="font-semibold text-slate-900">
|
||||||
{data.policiesConfigured} / {data.policiesReviewed} reviewed
|
{data.policiesConfigured} / {data.policiesReviewed} reviewed
|
||||||
</p>
|
</p>
|
||||||
@@ -124,7 +124,7 @@ export default function ComplianceDashboard() {
|
|||||||
{/* Data Retention Policies */}
|
{/* Data Retention Policies */}
|
||||||
<Card>
|
<Card>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>Active Data Retention Policies</CardTitle>
|
<CardTitle>Aktive Datenaufbewahrungsrichtlinien</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription>
|
||||||
Configured retention periods for each data category
|
Configured retention periods for each data category
|
||||||
</CardDescription>
|
</CardDescription>
|
||||||
@@ -170,7 +170,7 @@ export default function ComplianceDashboard() {
|
|||||||
{data.consultations.length > 0 && (
|
{data.consultations.length > 0 && (
|
||||||
<Card>
|
<Card>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>Consultation Log</CardTitle>
|
<CardTitle>Beratungsprotokoll</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription>
|
||||||
Staff and parent body consultations per module
|
Staff and parent body consultations per module
|
||||||
</CardDescription>
|
</CardDescription>
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ export default function ExamProctoringPage() {
|
|||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<div>
|
<div>
|
||||||
<h1 className="text-3xl font-bold text-gray-900">Exam Proctoring</h1>
|
<h1 className="text-3xl font-bold text-gray-900">Prüfungsüberwachung</h1>
|
||||||
<p className="text-gray-600 mt-1">Monitor active exam sessions and suspicious activity</p>
|
<p className="text-gray-600 mt-1">Monitor active exam sessions and suspicious activity</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -121,7 +121,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">Active Sessions</p>
|
<p className="text-gray-600 text-sm font-medium">Aktive Sitzungen</p>
|
||||||
<p className="text-2xl font-bold text-gray-900 mt-1">{activeCount}</p>
|
<p className="text-2xl font-bold text-gray-900 mt-1">{activeCount}</p>
|
||||||
</div>
|
</div>
|
||||||
<Clock className="w-8 h-8 text-blue-500" />
|
<Clock className="w-8 h-8 text-blue-500" />
|
||||||
@@ -141,7 +141,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">Total Sessions</p>
|
<p className="text-gray-600 text-sm font-medium">Sitzungen gesamt</p>
|
||||||
<p className="text-2xl font-bold text-gray-900 mt-1">{sessions.length}</p>
|
<p className="text-2xl font-bold text-gray-900 mt-1">{sessions.length}</p>
|
||||||
</div>
|
</div>
|
||||||
<Eye className="w-8 h-8 text-purple-500" />
|
<Eye className="w-8 h-8 text-purple-500" />
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ export default function SignageAdminPage() {
|
|||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<div>
|
<div>
|
||||||
<h1 className="text-3xl font-bold text-gray-900">Emergency Signage</h1>
|
<h1 className="text-3xl font-bold text-gray-900">Notfall-Digital-Schild</h1>
|
||||||
<p className="text-gray-600 mt-1">Manage displays, messages, and emergency alerts</p>
|
<p className="text-gray-600 mt-1">Manage displays, messages, and emergency alerts</p>
|
||||||
</div>
|
</div>
|
||||||
<Button onClick={() => setShowNewMessage(true)} size="lg" className="gap-2">
|
<Button onClick={() => setShowNewMessage(true)} size="lg" className="gap-2">
|
||||||
|
|||||||
@@ -330,7 +330,7 @@ export function ComplianceWizard({ schoolId, onComplete }: ComplianceWizardProps
|
|||||||
{state.step === 2 && (
|
{state.step === 2 && (
|
||||||
<Card>
|
<Card>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>Data Retention Periods</CardTitle>
|
<CardTitle>Aufbewahrungsfristen</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription>
|
||||||
Configure retention periods for each data category (state-specific defaults provided)
|
Configure retention periods for each data category (state-specific defaults provided)
|
||||||
</CardDescription>
|
</CardDescription>
|
||||||
@@ -358,7 +358,7 @@ export function ComplianceWizard({ schoolId, onComplete }: ComplianceWizardProps
|
|||||||
{state.step === 3 && (
|
{state.step === 3 && (
|
||||||
<Card>
|
<Card>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>Consultation Checklist</CardTitle>
|
<CardTitle>Beratungs-Checkliste</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription>
|
||||||
Log consultations with staff and parent bodies per module
|
Log consultations with staff and parent bodies per module
|
||||||
</CardDescription>
|
</CardDescription>
|
||||||
@@ -502,7 +502,7 @@ export function ComplianceWizard({ schoolId, onComplete }: ComplianceWizardProps
|
|||||||
{state.step === 5 && (
|
{state.step === 5 && (
|
||||||
<Card>
|
<Card>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>Compliance Setup Complete</CardTitle>
|
<CardTitle>Compliance-Einrichtung abgeschlossen</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription>
|
||||||
Review your configuration before finalizing
|
Review your configuration before finalizing
|
||||||
</CardDescription>
|
</CardDescription>
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ export function DashboardCustomizer({
|
|||||||
<Dialog open={showWidgetGallery} onOpenChange={setShowWidgetGallery}>
|
<Dialog open={showWidgetGallery} onOpenChange={setShowWidgetGallery}>
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
<DialogTitle>Add Widget</DialogTitle>
|
<DialogTitle>Widget hinzufügen</DialogTitle>
|
||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
<div className="grid grid-cols-2 gap-4">
|
<div className="grid grid-cols-2 gap-4">
|
||||||
{availableWidgets.map((type) => (
|
{availableWidgets.map((type) => (
|
||||||
|
|||||||
@@ -1465,13 +1465,13 @@ export default function DataImportExportView() {
|
|||||||
<div className="flex items-start gap-3 p-4 rounded-xl bg-emerald-50 dark:bg-emerald-950/30 border border-emerald-200 dark:border-emerald-800">
|
<div className="flex items-start gap-3 p-4 rounded-xl bg-emerald-50 dark:bg-emerald-950/30 border border-emerald-200 dark:border-emerald-800">
|
||||||
<Info className="h-5 w-5 text-emerald-600 mt-0.5 shrink-0" />
|
<Info className="h-5 w-5 text-emerald-600 mt-0.5 shrink-0" />
|
||||||
<div className="text-sm text-emerald-800 dark:text-emerald-200">
|
<div className="text-sm text-emerald-800 dark:text-emerald-200">
|
||||||
<p className="font-medium mb-1">Data Management Best Practices</p>
|
<p className="font-medium mb-1">Best Practices für Datenverwaltung</p>
|
||||||
<ul className="list-disc list-inside space-y-1 text-xs">
|
<ul className="list-disc list-inside space-y-1 text-xs">
|
||||||
<li>Always create a backup before performing bulk operations</li>
|
<li>Always create a backup before performing bulk operations</li>
|
||||||
<li>Review the data preview before importing to catch errors early</li>
|
<li>Review the data preview before importing to catch errors early</li>
|
||||||
<li>Use column mapping to ensure correct field alignment</li>
|
<li>Use column mapping to ensure correct field alignment</li>
|
||||||
<li>Run cleanup periodically to remove orphaned records</li>
|
<li>Run cleanup periodically to remove orphaned records</li>
|
||||||
<li>Export data regularly for archival purposes</li>
|
<li>Exportieren Sie regelmäßig Daten zur Archivierung</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ export default function DistrictManagementView() {
|
|||||||
<div className="flex items-center justify-center h-96">
|
<div className="flex items-center justify-center h-96">
|
||||||
<div className="text-center space-y-3">
|
<div className="text-center space-y-3">
|
||||||
<AlertTriangle className="h-12 w-12 text-amber-500 mx-auto" />
|
<AlertTriangle className="h-12 w-12 text-amber-500 mx-auto" />
|
||||||
<p className="text-lg font-semibold text-gray-700 dark:text-gray-300">Access Denied</p>
|
<p className="text-lg font-semibold text-gray-700 dark:text-gray-300">Zugriff verweigert</p>
|
||||||
<p className="text-sm text-gray-500 dark:text-gray-400">You need admin privileges to access this view.</p>
|
<p className="text-sm text-gray-500 dark:text-gray-400">You need admin privileges to access this view.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ export function ExamSessionMonitor({
|
|||||||
<div className="flex items-center gap-4">
|
<div className="flex items-center gap-4">
|
||||||
<div className="flex items-center gap-2 text-sm">
|
<div className="flex items-center gap-2 text-sm">
|
||||||
<Eye className="w-4 h-4 text-gray-500" />
|
<Eye className="w-4 h-4 text-gray-500" />
|
||||||
<span className="text-gray-600">Exam Mode Active</span>
|
<span className="text-gray-600">Prüfungsmodus aktiv</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{securityMetrics.riskScore > 0 && (
|
{securityMetrics.riskScore > 0 && (
|
||||||
|
|||||||
@@ -603,7 +603,7 @@ function EventCreatorDialog({
|
|||||||
<Dialog open onOpenChange={onClose}>
|
<Dialog open onOpenChange={onClose}>
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
<DialogTitle>Create Neues Ereignis</DialogTitle>
|
<DialogTitle>Neues Ereignis erstellen</DialogTitle>
|
||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
|
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
|
|||||||
@@ -274,7 +274,7 @@ function SidebarTrigger({
|
|||||||
{...props}
|
{...props}
|
||||||
>
|
>
|
||||||
<PanelLeftIcon />
|
<PanelLeftIcon />
|
||||||
<span className="sr-only">Toggle Sidebar</span>
|
<span className="sr-only">Seitenleiste umschalten</span>
|
||||||
</Button>
|
</Button>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user