/** * Dokumente und Anhänge. * * Nach Bereichen getrennt, weil eine **Client-Komponente die ganze Datei ins * Bündel zieht**, in der ihr Text steht. Lägen alle Texte in einer, trüge jede * Ansicht die der ganzen Anwendung mit sich herum - das Budget aus * docs/09-performance-und-ux.md wäre nach wenigen Phasen aufgebraucht. * * Serverkomponenten nehmen weiter `de` aus `lib/i18n/de.ts`: was dorthin * gezogen wird, verlässt den Server nicht. */ export const documentText = { saveAll: 'Dokument speichern', one: 'Dokument', many: 'Dokumente', number: 'Dokumentnummer', title: 'Titel', kind: 'Dokumentart', heading: 'Dokumente', empty: 'Noch kein Dokument.', create: 'Dokument anlegen', createTitle: 'Neues Dokument', createHint: 'Die Vorlage bestimmt Aufbau und Aussehen. Der Titel lässt sich später ändern.', open: 'Öffnen', finalize: 'Ausfertigen', finalizeHint: 'Danach sind Änderungen nur noch mit eigenem Recht möglich.', retract: 'Zurückziehen', retractReason: 'Begründung der Zurücknahme', reclassify: 'Klassifizierung ändern', retracted: (date: string, person: string, reason: string) => `Dokument zurückgezogen am ${date} durch ${person} · Begründung: ${reason}`, finalized: (date: string, person: string) => `Ausgefertigt am ${date} durch ${person}`, sheet: 'Aktenblatt', edit: 'Bearbeiten', print: 'Drucken', issuedAt: 'Ausgestellt', signedOn: 'Datum', unclassified: 'Ohne Klassifikation', photoEmpty: 'Lichtbild 3×4 cm', photoLater: 'Lichtbilder kommen mit der Dateiprüfung.', footerNote: 'Dieses Dokument ist klassifiziert. Nur für autorisiertes Personal.', ownerCase: 'Zur Fallakte', ownerPersonnel: 'Zur Personalakte', ownerNone: 'Ohne Besitzer', statusNames: { DRAFT: 'Entwurf', FINAL: 'Ausgefertigt', RETRACTED: 'Zurückgezogen', } as Record, layoutNames: { FORM: 'Formular', PROSE: 'Vertragstext', NOTE: 'Vermerk', DOSSIER: 'Aktenblatt', } as Record, } as const export const attachmentText = { one: 'Anhang', many: 'Anhänge', heading: 'Anhänge', empty: 'Keine Anhänge.', add: 'Datei anhängen', choose: 'Datei wählen', dropHint: 'Datei hierher ziehen oder auswählen', allowed: 'PNG, JPEG, WebP, PDF oder Text, bis 25 MB', uploading: 'Wird übertragen', checking: 'Wird geprüft', download: 'Herunterladen', release: 'Trotzdem freigeben', retract: 'Zurückziehen', retracting: 'Wird zurückgezogen', restore: 'Rücknahme aufheben', retractPrompt: 'Warum wird dieser Anhang zurückgezogen? Die Begründung steht für alle an der Datei, mindestens 10 Zeichen.', retractedBy: (datum: string, grund: string) => `Zurückgezogen am ${datum} · Begründung: ${grund}`, retractedHint: 'Die Datei wird nicht mehr ausgeliefert und verschwindet aus Lichtbildfeldern. Gelöscht ist sie nicht.', releaseHint: 'Die Datei wurde nicht auf Schadsoftware geprüft. Sie wird beim Freigeben neu kodiert, soweit das geht.', quotaUsed: (used: string, total: string) => `${used} von ${total} belegt`, statusNames: { PENDING: 'Wird geprüft', CLEAN: 'Geprüft', BLOCKED: 'Abgelehnt', FAILED: 'Prüfung unvollständig', } as Record, errors: { 'file-empty': 'Die Datei ist leer.', 'file-too-large': 'Die Datei ist größer als 25 MB.', 'quota-exceeded': 'Dein Kontingent von 500 MB ist ausgeschöpft.', 'rate-limited': 'Zu viele Uploads. In einer Minute erneut versuchen.', 'release-not-possible': 'Nur eine unvollständige Prüfung lässt sich freigeben.', 'already-retracted': 'Dieser Anhang ist bereits zurückgezogen.', 'reason-required': 'Begründung nötig, mindestens 10 Zeichen.', transfer: 'Übertragung fehlgeschlagen. Erneut versuchen.', } as Record, } as const