Files
breakpilot-lehrer/website/lib/compliance-i18n.ts
Benjamin Boenisch 5a31f52310 Initial commit: breakpilot-lehrer - Lehrer KI Platform
Services: Admin-Lehrer, Backend-Lehrer, Studio v2, Website,
Klausur-Service, School-Service, Voice-Service, Geo-Service,
BreakPilot Drive, Agent-Core

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 23:47:26 +01:00

362 lines
14 KiB
TypeScript

/**
* Compliance Framework - Internationalization (i18n)
*
* Provides bilingual terminology (DE/EN) for the compliance module.
* This helps non-technical stakeholders understand GRC concepts.
*/
export type Language = 'de' | 'en'
// Core compliance terms with translations and explanations
export const COMPLIANCE_TERMS = {
de: {
// Core concepts
control: 'Massnahme',
control_description: 'Eine technische oder organisatorische Massnahme zur Erfuellung einer Compliance-Anforderung.',
evidence: 'Nachweis',
evidence_description: 'Dokumentierter Beleg, dass eine Massnahme umgesetzt und wirksam ist.',
requirement: 'Anforderung',
requirement_description: 'Eine gesetzliche oder normative Vorgabe, die erfuellt werden muss.',
regulation: 'Verordnung',
regulation_description: 'Ein Gesetz oder Standard, der verbindliche Anforderungen definiert.',
risk: 'Risiko',
risk_description: 'Eine potenzielle Bedrohung fuer die Organisation mit Eintrittswahrscheinlichkeit und Schadenshoehe.',
// Status values
pass: 'Erfuellt',
pass_description: 'Die Massnahme ist vollstaendig umgesetzt und nachgewiesen.',
partial: 'Teilweise erfuellt',
partial_description: 'Die Massnahme ist teilweise umgesetzt, es bestehen noch Luecken.',
fail: 'Nicht erfuellt',
fail_description: 'Die Massnahme ist nicht oder unzureichend umgesetzt.',
planned: 'Geplant',
planned_description: 'Die Umsetzung der Massnahme ist geplant aber noch nicht begonnen.',
not_applicable: 'Nicht anwendbar',
not_applicable_description: 'Die Anforderung trifft auf unsere Organisation nicht zu.',
// Metrics
compliance_score: 'Erfuellungsgrad',
compliance_score_description: 'Prozentsatz der erfuellten Compliance-Anforderungen.',
coverage_level: 'Abdeckungsgrad',
coverage_level_description: 'Wie gut eine Massnahme die Anforderung erfuellt (vollstaendig/teilweise).',
risk_level: 'Risikostufe',
risk_level_description: 'Kombinierte Bewertung aus Eintrittswahrscheinlichkeit und Schadenshoehe.',
// Risk levels
low: 'Niedrig',
low_description: 'Geringes Risiko, keine sofortigen Massnahmen erforderlich.',
medium: 'Mittel',
medium_description: 'Moderates Risiko, Massnahmen sollten geplant werden.',
high: 'Hoch',
high_description: 'Hohes Risiko, zeitnahe Massnahmen erforderlich.',
critical: 'Kritisch',
critical_description: 'Kritisches Risiko, sofortige Massnahmen erforderlich.',
// Domains
governance: 'Governance',
governance_description: 'Organisatorische Steuerung und Fuehrung.',
privacy: 'Datenschutz',
privacy_description: 'Schutz personenbezogener Daten.',
iam: 'Identitaets- & Zugriffsmanagement',
iam_description: 'Verwaltung von Benutzerkonten und Zugriffsrechten.',
crypto: 'Kryptografie',
crypto_description: 'Verschluesselung und kryptografische Verfahren.',
sdlc: 'Sichere Entwicklung',
sdlc_description: 'Sicherheit im Softwareentwicklungsprozess.',
ops: 'Betrieb',
ops_description: 'IT-Betrieb, Monitoring und Incident Response.',
ai: 'KI-spezifisch',
ai_description: 'Anforderungen fuer Kuenstliche Intelligenz.',
cra: 'Supply Chain',
cra_description: 'Lieferketten-Sicherheit und Produkthaftung.',
audit: 'Audit',
audit_description: 'Pruefung und Nachvollziehbarkeit.',
// UI Elements
dashboard: 'Uebersicht',
export: 'Export',
filter: 'Filter',
search: 'Suche',
details: 'Details',
actions: 'Aktionen',
status: 'Status',
owner: 'Verantwortlich',
deadline: 'Frist',
last_review: 'Letzte Pruefung',
next_review: 'Naechste Pruefung',
// Executive Dashboard
traffic_light_status: 'Ampelstatus',
traffic_light_description: 'Schnelle Einschaetzung: Gruen = gut, Gelb = Aufmerksamkeit, Rot = kritisch.',
top_risks: 'Top Risiken',
upcoming_deadlines: 'Naechste Fristen',
trend: 'Trend',
trend_description: 'Entwicklung des Erfuellungsgrades ueber Zeit.',
workload: 'Arbeitsbelastung',
workload_description: 'Offene Aufgaben pro Team oder Person.',
// Audit & Sign-off (Sprint 3)
audit_session: 'Pruefung',
audit_session_description: 'Eine strukturierte Compliance-Pruefung mit definierten Anforderungen.',
sign_off: 'Freigabe',
sign_off_description: 'Bestaetigung eines Pruefergebnisses durch den Auditor.',
digital_signature: 'Digitale Signatur',
digital_signature_description: 'SHA-256 Hash zur unveraenderlichen Dokumentation des Pruefergebnisses.',
audit_checklist: 'Pruefungscheckliste',
audit_checklist_description: 'Liste aller zu pruefenden Anforderungen einer Audit-Session.',
completion_rate: 'Abschlussrate',
completion_rate_description: 'Prozentsatz der bereits abgeschlossenen Pruefpunkte.',
// Audit Results
compliant: 'Konform',
compliant_description: 'Die Anforderung ist vollstaendig erfuellt.',
compliant_with_notes: 'Konform mit Anmerkungen',
compliant_with_notes_description: 'Die Anforderung ist erfuellt, aber es gibt Hinweise zur Verbesserung.',
non_compliant: 'Nicht konform',
non_compliant_description: 'Die Anforderung ist nicht oder unzureichend erfuellt.',
pending_audit: 'Ausstehend',
pending_audit_description: 'Die Pruefung dieses Punktes steht noch aus.',
// Session Status
session_draft: 'Entwurf',
session_in_progress: 'In Bearbeitung',
session_completed: 'Abgeschlossen',
session_archived: 'Archiviert',
// Actions
create_session: 'Neue Session erstellen',
start_audit: 'Pruefung starten',
complete_audit: 'Pruefung abschliessen',
export_report: 'Report exportieren',
sign_item: 'Punkt signieren',
},
en: {
// Core concepts
control: 'Control',
control_description: 'A technical or organizational measure to fulfill a compliance requirement.',
evidence: 'Evidence',
evidence_description: 'Documented proof that a control is implemented and effective.',
requirement: 'Requirement',
requirement_description: 'A legal or normative obligation that must be fulfilled.',
regulation: 'Regulation',
regulation_description: 'A law or standard that defines binding requirements.',
risk: 'Risk',
risk_description: 'A potential threat to the organization with likelihood and impact.',
// Status values
pass: 'Pass',
pass_description: 'The control is fully implemented and evidenced.',
partial: 'Partial',
partial_description: 'The control is partially implemented, gaps remain.',
fail: 'Fail',
fail_description: 'The control is not or insufficiently implemented.',
planned: 'Planned',
planned_description: 'Implementation of the control is planned but not started.',
not_applicable: 'N/A',
not_applicable_description: 'The requirement does not apply to our organization.',
// Metrics
compliance_score: 'Compliance Score',
compliance_score_description: 'Percentage of fulfilled compliance requirements.',
coverage_level: 'Coverage Level',
coverage_level_description: 'How well a control fulfills the requirement (full/partial).',
risk_level: 'Risk Level',
risk_level_description: 'Combined assessment of likelihood and impact.',
// Risk levels
low: 'Low',
low_description: 'Low risk, no immediate action required.',
medium: 'Medium',
medium_description: 'Moderate risk, actions should be planned.',
high: 'High',
high_description: 'High risk, timely action required.',
critical: 'Critical',
critical_description: 'Critical risk, immediate action required.',
// Domains
governance: 'Governance',
governance_description: 'Organizational steering and leadership.',
privacy: 'Privacy',
privacy_description: 'Protection of personal data.',
iam: 'Identity & Access Management',
iam_description: 'Management of user accounts and access rights.',
crypto: 'Cryptography',
crypto_description: 'Encryption and cryptographic procedures.',
sdlc: 'Secure Development',
sdlc_description: 'Security in the software development process.',
ops: 'Operations',
ops_description: 'IT operations, monitoring, and incident response.',
ai: 'AI-specific',
ai_description: 'Requirements for Artificial Intelligence.',
cra: 'Supply Chain',
cra_description: 'Supply chain security and product liability.',
audit: 'Audit',
audit_description: 'Auditing and traceability.',
// UI Elements
dashboard: 'Dashboard',
export: 'Export',
filter: 'Filter',
search: 'Search',
details: 'Details',
actions: 'Actions',
status: 'Status',
owner: 'Owner',
deadline: 'Deadline',
last_review: 'Last Review',
next_review: 'Next Review',
// Executive Dashboard
traffic_light_status: 'Traffic Light Status',
traffic_light_description: 'Quick assessment: Green = good, Yellow = attention, Red = critical.',
top_risks: 'Top Risks',
upcoming_deadlines: 'Upcoming Deadlines',
trend: 'Trend',
trend_description: 'Development of compliance score over time.',
workload: 'Workload',
workload_description: 'Open tasks per team or person.',
// Audit & Sign-off (Sprint 3)
audit_session: 'Audit Session',
audit_session_description: 'A structured compliance audit with defined requirements.',
sign_off: 'Sign-off',
sign_off_description: 'Confirmation of an audit result by the auditor.',
digital_signature: 'Digital Signature',
digital_signature_description: 'SHA-256 hash for immutable documentation of audit results.',
audit_checklist: 'Audit Checklist',
audit_checklist_description: 'List of all requirements to be audited in a session.',
completion_rate: 'Completion Rate',
completion_rate_description: 'Percentage of completed audit items.',
// Audit Results
compliant: 'Compliant',
compliant_description: 'The requirement is fully met.',
compliant_with_notes: 'Compliant with Notes',
compliant_with_notes_description: 'The requirement is met, but there are notes for improvement.',
non_compliant: 'Non-Compliant',
non_compliant_description: 'The requirement is not or insufficiently met.',
pending_audit: 'Pending',
pending_audit_description: 'The audit of this item is still pending.',
// Session Status
session_draft: 'Draft',
session_in_progress: 'In Progress',
session_completed: 'Completed',
session_archived: 'Archived',
// Actions
create_session: 'Create Session',
start_audit: 'Start Audit',
complete_audit: 'Complete Audit',
export_report: 'Export Report',
sign_item: 'Sign Item',
},
}
// Domain mapping for display
export const DOMAIN_LABELS: Record<string, { de: string; en: string }> = {
gov: { de: 'Governance', en: 'Governance' },
priv: { de: 'Datenschutz', en: 'Privacy' },
iam: { de: 'Identitaet & Zugriff', en: 'Identity & Access' },
crypto: { de: 'Kryptografie', en: 'Cryptography' },
sdlc: { de: 'Sichere Entwicklung', en: 'Secure Dev' },
ops: { de: 'Betrieb', en: 'Operations' },
ai: { de: 'KI-spezifisch', en: 'AI-specific' },
cra: { de: 'Supply Chain', en: 'Supply Chain' },
aud: { de: 'Audit', en: 'Audit' },
}
// Status colors and labels
export const STATUS_CONFIG: Record<string, { color: string; bgColor: string; de: string; en: string }> = {
pass: { color: 'text-green-700', bgColor: 'bg-green-100', de: 'Erfuellt', en: 'Pass' },
partial: { color: 'text-yellow-700', bgColor: 'bg-yellow-100', de: 'Teilweise', en: 'Partial' },
fail: { color: 'text-red-700', bgColor: 'bg-red-100', de: 'Nicht erfuellt', en: 'Fail' },
planned: { color: 'text-slate-700', bgColor: 'bg-slate-100', de: 'Geplant', en: 'Planned' },
'n/a': { color: 'text-slate-500', bgColor: 'bg-slate-50', de: 'N/A', en: 'N/A' },
}
// Risk level colors
export const RISK_CONFIG: Record<string, { color: string; bgColor: string; de: string; en: string }> = {
low: { color: 'text-green-700', bgColor: 'bg-green-100', de: 'Niedrig', en: 'Low' },
medium: { color: 'text-yellow-700', bgColor: 'bg-yellow-100', de: 'Mittel', en: 'Medium' },
high: { color: 'text-orange-700', bgColor: 'bg-orange-100', de: 'Hoch', en: 'High' },
critical: { color: 'text-red-700', bgColor: 'bg-red-100', de: 'Kritisch', en: 'Critical' },
}
// Traffic light colors for executive dashboard
export const TRAFFIC_LIGHT_CONFIG: Record<string, { color: string; bgColor: string; borderColor: string; de: string; en: string }> = {
green: {
color: 'text-green-700',
bgColor: 'bg-green-500',
borderColor: 'border-green-500',
de: 'Gut',
en: 'Good'
},
yellow: {
color: 'text-yellow-700',
bgColor: 'bg-yellow-500',
borderColor: 'border-yellow-500',
de: 'Aufmerksamkeit',
en: 'Attention'
},
red: {
color: 'text-red-700',
bgColor: 'bg-red-500',
borderColor: 'border-red-500',
de: 'Kritisch',
en: 'Critical'
},
}
// Helper function to get term with fallback
export function getTerm(lang: Language, key: string): string {
const terms = COMPLIANCE_TERMS[lang]
return (terms as Record<string, string>)[key] || key
}
// Helper function to get description
export function getDescription(lang: Language, key: string): string {
const terms = COMPLIANCE_TERMS[lang]
return (terms as Record<string, string>)[`${key}_description`] || ''
}
// Helper to get domain label
export function getDomainLabel(domain: string, lang: Language): string {
return DOMAIN_LABELS[domain]?.[lang] || domain.toUpperCase()
}
// Helper to get status display
export function getStatusDisplay(status: string, lang: Language): { label: string; color: string; bgColor: string } {
const config = STATUS_CONFIG[status] || STATUS_CONFIG['planned']
return {
label: config[lang],
color: config.color,
bgColor: config.bgColor,
}
}
// Helper to get risk display
export function getRiskDisplay(level: string, lang: Language): { label: string; color: string; bgColor: string } {
const config = RISK_CONFIG[level] || RISK_CONFIG['medium']
return {
label: config[lang],
color: config.color,
bgColor: config.bgColor,
}
}
// Helper to get traffic light display
export function getTrafficLightDisplay(status: string, lang: Language): { label: string; color: string; bgColor: string; borderColor: string } {
const config = TRAFFIC_LIGHT_CONFIG[status] || TRAFFIC_LIGHT_CONFIG['yellow']
return {
label: config[lang],
color: config.color,
bgColor: config.bgColor,
borderColor: config.borderColor,
}
}
// Language context default
export const DEFAULT_LANGUAGE: Language = 'de'