diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f0bf36d42..2a80fd880 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -11,4 +11,30 @@ workflow:
include:
- project: 'gitlab/gitlab'
ref: 'main'
- file: 'ci-templates/docker_build_nexus.yml'
+ file: 'ci-templates/docker_build_nexus_v2.yml'
+
+localazy update:
+ image: node:20.5
+ cache:
+ - key:
+ files:
+ - yarn.lock
+ paths:
+ - .yarn-cache/
+ script:
+ - git config user.email "${CI_EMAIL}"
+ - git config user.name "${CI_USERNAME}"
+ - git remote add gitlab_origin https://${CI_USERNAME}:${CI_ACCESS_TOKEN}@gitlab.knecon.com/redactmanager/red-ui.git
+ - cd tools/localazy
+ - yarn install --cache-folder .yarn-cache
+ - yarn start
+ - cd ../..
+ - git add .
+ - git commit -m "push back localazy update"
+ - git push gitlab_origin HEAD:${CI_COMMIT_REF_NAME} -o ci.skip
+
+ rules:
+ - if: $LOCALAZY_RUN
+ - changes:
+ - tools/localazy/**/*
+ - red-ui/src/assets/i18n/**/*
diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json
index 9b30ccfc9..d5b1b3744 100644
--- a/apps/red-ui/src/assets/i18n/redact/de.json
+++ b/apps/red-ui/src/assets/i18n/redact/de.json
@@ -1,12 +1,12 @@
{
"accept-recommendation-dialog": {
"header": {
- "add-to-dictionary": "",
- "request-add-to-dictionary": ""
+ "add-to-dictionary": "Add to dictionary",
+ "request-add-to-dictionary": "Request add to dictionary"
},
- "multiple-values": ""
+ "multiple-values": "Multiple recommendations selected"
},
- "account-settings": "Account Einstellungen",
+ "account-settings": "Kontoeinstellungen",
"actions": {
"all": "Alle",
"none": "Keine"
@@ -14,17 +14,17 @@
"add-annotation": {
"dialog": {
"actions": {
- "cancel": "",
- "save": ""
+ "cancel": "Abbrechen",
+ "save": "Speichern"
},
"content": {
- "comment": "",
- "comment-placeholder": "",
- "selected-text": "",
- "type": "",
- "type-placeholder": ""
+ "comment": "Comment",
+ "comment-placeholder": "Add remarks or mentions...",
+ "selected-text": "Ausgewählter Text:",
+ "type": "Type",
+ "type-placeholder": "Select type ..."
},
- "title": ""
+ "title": "Add annotation"
}
},
"add-dossier-dialog": {
@@ -48,7 +48,7 @@
},
"template": {
"label": "Dossier-Vorlage",
- "placeholder": ""
+ "placeholder": "Choose Dossier Template"
}
},
"header-new": "Dossier erstellen",
@@ -61,30 +61,30 @@
},
"form": {
"apply-updates-default": {
- "description": "",
- "heading": ""
+ "description": "Apply dictionary updates to all dossiers by default",
+ "heading": "Entity configuration"
},
"description": "Beschreibung",
"description-placeholder": "Beschreibung eingeben",
"hidden-text": {
- "description": "",
- "heading": "",
- "title": ""
+ "description": "Hidden text is invisible to human readers but can be detected and read by software and machines. For example, the OCR output of scanned documents is stored as hidden text.",
+ "heading": "Hidden elements in redacted documents",
+ "title": "Keep hidden text"
},
"image-metadata": {
- "description": "",
- "title": ""
+ "description": "Images in documents might contain additional information as metadata. This could include the creator, the date or the location of the image.",
+ "title": "Keep image metadata"
},
"name": "Name der Dossier-Vorlage",
"name-placeholder": "Namen eingeben",
"overlapping-elements": {
- "description": "",
- "title": ""
+ "description": "Overlapping elements in the document can potentially contain hidden sensitive information. Removing overlapping elements may result in a bigger file size and an increased processing duration.",
+ "title": "Keep overlapping elements"
},
"upload-settings": {
- "heading": "",
- "ocr-by-default": "",
- "remove-watermark": ""
+ "heading": "Upload settings",
+ "ocr-by-default": "Automatically perform OCR on document upload",
+ "remove-watermark": "Remove watermarks before processing OCR"
},
"valid-from": "Gültig ab",
"valid-to": "Gültig bis"
@@ -107,46 +107,46 @@
},
"add-edit-dossier-state": {
"form": {
- "color": "",
- "color-placeholder": "",
- "name": "",
- "name-placeholder": "",
- "rank": ""
+ "color": "Hex Color",
+ "color-placeholder": "#",
+ "name": "Status Name",
+ "name-placeholder": "Enter Name",
+ "rank": "Rank"
},
- "save": "",
- "success": "",
- "title": ""
+ "save": "Save State",
+ "success": "Successfully {type, select, edit{updated} create{created} other{}} the dossier state!",
+ "title": "{type, select, edit{Edit {name}} create{Create} other{}} Dossier State"
},
"add-edit-entity": {
"error": {
- "entity-already-exists": "",
- "generic": "",
- "invalid-color-or-rank": ""
+ "entity-already-exists": "Entity with this name already exists!",
+ "generic": "Failed to save entity!",
+ "invalid-color-or-rank": "Invalid color or rank! Rank is already used by another entity or the color is not a valid hexColor!"
},
"form": {
- "case-sensitive": "",
- "color": "",
- "color-placeholder": "",
- "default-reason": "",
- "default-reason-placeholder": "",
- "description": "",
- "description-placeholder": "",
- "dossier-dictionary-only": "",
- "has-dictionary": "",
- "hint": "",
- "manage-entries-in-dictionary-editor-only": "",
- "name": "",
- "name-placeholder": "",
- "rank": "",
- "rank-placeholder": "",
- "redaction": "",
- "technical-name": "",
- "technical-name-hint": "",
- "template-and-dossier-dictionaries": ""
+ "case-sensitive": "Case Sensitive",
+ "color": "{type, select, redaction{Redaction} hint{Hint} recommendation{Recommendation} skipped{Skipped Redaction} ignored{Ignored Hint} other{}} Color",
+ "color-placeholder": "#",
+ "default-reason": "Default Reason",
+ "default-reason-placeholder": "No Default Reason",
+ "description": "Description",
+ "description-placeholder": "Enter Description",
+ "dossier-dictionary-only": "Dossier dictionary only",
+ "has-dictionary": "Has dictionary",
+ "hint": "Hint",
+ "manage-entries-in-dictionary-editor-only": "Manage entries in Dictionary editor only",
+ "name": "Display Name",
+ "name-placeholder": "Enter Name",
+ "rank": "Rank",
+ "rank-placeholder": "1000",
+ "redaction": "Redaction",
+ "technical-name": "Technical Name",
+ "technical-name-hint": "{type, select, edit{Autogenerated based on the initial display name.} create{Autogenerates based on the display name and cannot be edited after saving.} other{}}",
+ "template-and-dossier-dictionaries": "Template & dossier dictionaries"
},
"success": {
- "create": "",
- "edit": ""
+ "create": "Entity added!",
+ "edit": "Entity updated. Please note that other users need to refresh the browser to see your changes."
}
},
"add-edit-file-attribute": {
@@ -208,63 +208,65 @@
"add-hint": {
"dialog": {
"actions": {
- "cancel": "",
- "save": ""
+ "cancel": "Cancel",
+ "save": "Save"
},
"content": {
- "comment": "",
- "comment-placeholder": "",
+ "comment": "Comment",
+ "comment-placeholder": "Add remarks or mentions ...",
"options": {
"in-dossier": {
- "description": "",
- "extraOptionLabel": "",
- "label": ""
+ "description": "Add hint in every document in {dossierName}.",
+ "extraOptionLabel": "Apply to all dossiers",
+ "label": "Add hint in dossier"
},
"only-here": {
- "description": "",
- "label": ""
+ "description": "Add hint only at this position in this document.",
+ "label": "Add hint only here"
}
},
- "selected-text": "",
- "type": "",
- "type-placeholder": ""
+ "selected-text": "Selected text:",
+ "type": "Type",
+ "type-placeholder": "Select type ..."
},
- "title": ""
+ "title": "Add hint"
}
},
"admin-side-nav": {
- "audit": "",
- "component-rule-editor": "",
- "configurations": "",
- "default-colors": "",
- "dictionary": "",
- "digital-signature": "",
- "dossier-attributes": "",
- "dossier-states": "",
- "dossier-template-info": "",
+ "audit": "Audit",
+ "configurations": "Configurations",
+ "default-colors": "Default Colors",
+ "dictionary": "Dictionary",
+ "digital-signature": "Digital Signature",
+ "dossier-attributes": "Dossier Attributes",
+ "dossier-states": "Dossier States",
+ "dossier-template-info": "Info",
"dossier-templates": "Dossier-Vorlage",
- "entities": "",
- "entity-info": "",
- "false-positive": "",
- "false-recommendations": "",
- "file-attributes": "",
- "justifications": "",
- "license-information": "",
- "reports": "",
- "rule-editor": "",
+ "entities": "Entities",
+ "entity-info": "Info",
+ "false-positive": "False Positive",
+ "false-recommendations": "False Recommendations",
+ "file-attributes": "File Attributes",
+ "justifications": "Justifications",
+ "license-information": "License Information",
+ "reports": "Reports",
+ "rule-editor": "Rule Editor",
"settings": "Einstellungen",
- "user-management": "",
- "watermarks": ""
+ "user-management": "User Management",
+ "watermarks": "Watermarks"
+ },
+ "annotation": {
+ "pending": "(Pending Analysis)"
},
"annotation-actions": {
"accept-recommendation": {
"label": "Empfehlung annehmen"
},
"convert-highlights": {
- "label": ""
+ "label": "Convert Selected Earmarks"
},
"edit-redaction": {
- "label": ""
+ "label": "Edit"
},
"force-hint": {
"label": "Hinweis erzwingen"
@@ -319,16 +321,16 @@
"success": "In der Anmerkung genannte Begründung wurde bearbeitet."
},
"change-type": {
- "error": "",
- "success": ""
+ "error": "Failed to edit type: {error}",
+ "success": "Type was edited."
},
"decline": {
"error": "Fehler beim Ablehnen des Vorschlags: {error}",
"success": "Vorschlag abgelehnt"
},
"force-hint": {
- "error": "",
- "success": ""
+ "error": "Failed to save hint: {error}",
+ "success": "Hint added!"
},
"force-redaction": {
"error": "Die Schwärzung konnte nicht gespeichert werden!",
@@ -338,21 +340,21 @@
"error": "Rekategorisierung des Bildes gescheitert: {error}",
"success": "Bild wurde einer neuen Kategorie zugeordnet."
},
- "remove-hint": {
- "error": "",
- "success": ""
- },
"remove": {
"error": "Fehler beim Entfernen der Schwärzung: {error}",
"success": "Schwärzung entfernt!"
},
+ "remove-hint": {
+ "error": "Failed to remove hint: {error}",
+ "success": "Hint removed!"
+ },
"request-change-legal-basis": {
"error": "Fehler beim Vorschlagen der Änderung der Begründung:",
"success": "Die Änderung der in der Anmerkung genannten Begründung wurde beantragt."
},
"request-force-hint": {
- "error": "",
- "success": ""
+ "error": "Failed to save hint suggestion: {error}",
+ "success": "Hint suggestion saved"
},
"request-force-redaction": {
"error": "Fehler beim Speichern des Schwärzungsvorschlags: {error}",
@@ -362,14 +364,14 @@
"error": "Fehler beim Vorschlagen der Neukategorisierung des Bilds: {error}",
"success": "Bild-Neuklassifizierung angefordert."
},
- "request-remove-hint": {
- "error": "",
- "success": ""
- },
"request-remove": {
"error": "Fehler beim Erstellen des Vorschlags für das Entfernen der Schwärzung: {error}",
"success": "Entfernen der Schwärzung wurde vorgeschlagen!"
},
+ "request-remove-hint": {
+ "error": "Failed to request removal of hint: {error}",
+ "success": "Requested to remove hint!"
+ },
"suggest": {
"error": "Vorschlag einer Schwärzung wurde nicht gespeichert: {error}",
"success": "Vorschlag einer Schwärzung gespeichert"
@@ -381,10 +383,13 @@
}
},
"remove-annotation": {
- "remove-redaction": ""
+ "remove-redaction": "Remove"
},
"remove-highlights": {
- "label": ""
+ "label": "Remove Selected Earmarks"
+ },
+ "resize": {
+ "label": "Größe ändern"
},
"resize-accept": {
"label": "Größe speichern"
@@ -392,18 +397,15 @@
"resize-cancel": {
"label": "Größenänderung abbrechen"
},
- "resize": {
- "label": "Größe ändern"
- },
"see-references": {
- "label": ""
+ "label": "See References"
},
"show": "Zeigen",
"undo": "Rückgängig"
},
"annotation-changes": {
- "forced-hint": "",
- "forced-redaction": "",
+ "forced-hint": "Hint forced",
+ "forced-redaction": "Redaction forced",
"header": "Manuelle Änderungen:",
"legal-basis": "Grund geändert",
"recategorized": "Bildkategorie geändert",
@@ -419,46 +421,43 @@
"declined-suggestion": "Abgelehnter Vorschlag",
"hint": "Hinweis",
"ignored-hint": "Ignorierter Hinweis",
- "manual-hint": "",
+ "manual-hint": "Manual Hint",
"manual-redaction": "Manuelle Schwärzung",
"recommendation": "Empfehlung",
"redaction": "Schwärzung",
"skipped": "Übersprungen",
"suggestion-add": "Vorschlag für Schwärzung",
"suggestion-add-dictionary": "Vorschlag für neuen Wörterbucheintrag",
- "suggestion-add-false-positive": "",
+ "suggestion-add-false-positive": "Suggested add to false positive",
"suggestion-change-legal-basis": "Vorschlag für Änderung der Rechtsgrundlage",
- "suggestion-force-hint": "",
+ "suggestion-force-hint": "Suggestion force hint",
"suggestion-force-redaction": "Vorschlag für erzwungene Schwärzung",
"suggestion-recategorize-image": "Vorschlag für Rekategorisierung eines Bilds",
"suggestion-remove": "Vorschlagen, die Schwärzung zu entfernen",
"suggestion-remove-dictionary": "Vorschlag für Löschung eines Wörterbucheintrags",
"suggestion-resize": "Vorgeschlagene Größenänderung",
- "text-highlight": ""
- },
- "annotation": {
- "pending": ""
+ "text-highlight": "Earmark"
},
"archived-dossiers-listing": {
"no-data": {
- "title": ""
+ "title": "No archived dossiers."
},
"no-match": {
- "title": ""
+ "title": "No archived dossiers match your current filters."
},
"table-col-names": {
- "dossier-state": "",
- "last-modified": "",
- "name": "",
- "owner": ""
+ "dossier-state": "Dossier State",
+ "last-modified": "Archived Time",
+ "name": "Name",
+ "owner": "Owner"
},
"table-header": {
- "title": ""
+ "title": "{length} Archived {length, plural, one{Dossier} other{Dossiers}}"
}
},
"assign-dossier-owner": {
"dialog": {
- "approver": "",
+ "approver": "Approver",
"approvers": "Genehmiger",
"make-approver": "Zum Genehmiger ernennen",
"no-reviewers": "Es gibt noch keine Reviewer.\nBitte aus der Liste unten auswählen.",
@@ -504,7 +503,7 @@
"license": "Lizenz",
"project": "Projekt",
"project-template": "Projekt-Vorlage",
- "settings": "",
+ "settings": "Settings",
"user": "Nutzer"
},
"no-data": {
@@ -543,7 +542,7 @@
},
"header": "Begründung für die Schwärzung bearbeiten"
},
- "color": "",
+ "color": "Color",
"comments": {
"add-comment": "Kommentar eingeben",
"comments": "{count} {count, plural, one{Kommentar} other{Kommentare}}",
@@ -558,55 +557,42 @@
"title": "Aktion bestätigen"
}
},
- "component-rules-screen": {
- "error": {
- "generic": ""
- },
- "errors-found": "",
- "revert-changes": "",
- "save-changes": "",
- "success": {
- "generic": ""
- },
- "title": "",
- "warning-text": ""
- },
"configurations": "Einstellungen",
"confirm-archive-dossier": {
- "archive": "",
- "cancel": "",
+ "archive": "Archive Dossier",
+ "cancel": "Cancel",
"checkbox": {
- "documents": ""
+ "documents": "All documents will be archived and cannot be put back to active"
},
- "details": "",
- "title": "",
- "toast-error": "",
- "warning": ""
+ "details": "Restoring an archived dossier is not possible anymore, once it got archived.",
+ "title": "Archive {dossierName}",
+ "toast-error": "Please confirm that you understand the ramifications of your action!",
+ "warning": "Are you sure you want to archive the dossier?"
},
"confirm-delete-attribute": {
"cancel": "{count, plural, one{Attribut} other{Attribute}} behalten",
"delete": "{count, plural, one{Attribut} other{Attribute}} löschen",
- "dossier-impacted-documents": "",
- "dossier-lost-details": "",
- "file-impacted-documents": "",
- "file-lost-details": "",
+ "dossier-impacted-documents": "All dossiers based on this template will be affected",
+ "dossier-lost-details": "All values for this attribute will be lost",
+ "file-impacted-documents": "All documents {count, plural, one{it is} other{they are}} used on will be impacted",
+ "file-lost-details": "All inputted details on the documents will be lost",
"impacted-report": "{reportsCount}",
"title": "{count, plural, one{{name}} other{Datei-Attribute}} löschen",
"toast-error": "Bitte bestätigen Sie, dass Ihnen die Konsequenzen dieser Aktion bewusst sind!",
"warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!"
},
"confirm-delete-dossier-state": {
- "cancel": "",
- "delete": "",
- "delete-replace": "",
+ "cancel": "Cancel",
+ "delete": "Delete",
+ "delete-replace": "Delete and Replace",
"form": {
- "state": "",
- "state-placeholder": ""
+ "state": "Replace State",
+ "state-placeholder": "Choose another state"
},
- "question": "",
- "success": "",
- "title": "",
- "warning": ""
+ "question": "Replace the {count, plural, one{dossier's} other{dossiers'}} state with another state",
+ "success": "Successfully deleted state!",
+ "title": "Delete Dossier State",
+ "warning": "The {name} state is assigned to {count} {count, plural, one{dossier} other{dossiers}}."
},
"confirm-delete-users": {
"cancel": "{usersCount, plural, one{Benutzer} other{Benutzer}} behalten",
@@ -618,30 +604,30 @@
"warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!"
},
"confirmation-dialog": {
- "approve-file-without-analysis": {
- "confirmationText": "",
- "denyText": "",
- "question": "",
- "title": ""
- },
"approve-file": {
"question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?",
"title": "Warnung!"
},
- "approve-multiple-files-without-analysis": {
- "confirmationText": "",
- "denyText": "",
- "question": "",
- "title": ""
+ "approve-file-without-analysis": {
+ "confirmationText": "Approve without analysis",
+ "denyText": "Cancel",
+ "question": "Analysis required to detect new redactions.",
+ "title": "Warning!"
},
"approve-multiple-files": {
"question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?",
"title": "Warnung!"
},
+ "approve-multiple-files-without-analysis": {
+ "confirmationText": "Approve without analysis",
+ "denyText": "Cancel",
+ "question": "Analysis required to detect new redactions for at least one file.",
+ "title": "Warning"
+ },
"assign-file-to-me": {
"question": {
"multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?",
- "single": ""
+ "single": "This document is currently assigned to someone else. Are you sure you want to replace it and assign yourself to this document?"
},
"title": "Neuen Reviewer zuweisen"
},
@@ -660,8 +646,8 @@
"title": "Dokument löschen"
},
"delete-items": {
- "question": "",
- "title": ""
+ "question": "Are you sure you want to delete {itemsCount, plural, one{this item} other{these items}}?",
+ "title": "Delete {itemsCount, plural, one{{name}} other{Selected Items}}"
},
"delete-justification": {
"question": "Möchten Sie {count, plural, one{diese Begründung} other{diese Begründung}} wirklich löschen?",
@@ -675,11 +661,11 @@
"title": "Hochladen von Berichtsvorlagen"
},
"unsaved-changes": {
- "confirmation-text": "",
- "details": "",
- "discard-changes-text": "",
- "question": "",
- "title": ""
+ "confirmation-text": "Save and Leave",
+ "details": "If you leave the tab without saving, all the unsaved changes will be lost.",
+ "discard-changes-text": "DISCARD CHANGES",
+ "question": "Are you sure you want to leave the tab? You have unsaved changes.",
+ "title": "You have unsaved changes"
},
"upload-report-template": {
"alternate-confirmation-text": "Als Bericht für mehrere Dokumente hochladen",
@@ -692,12 +678,12 @@
"content": "Begründung",
"dashboard": {
"empty-template": {
- "description": "",
- "new-dossier": ""
+ "description": "This template does not contain any dossiers. Start by creating a dossier to use it on.",
+ "new-dossier": "New Dossier"
},
"greeting": {
- "subtitle": "",
- "title": ""
+ "subtitle": "Here's what's happening in your redaction teams today.",
+ "title": "Welcome, {name}!"
}
},
"default-colors-screen": {
@@ -715,14 +701,14 @@
"analysisColor": "Analyse",
"appliedRedactionColor": "Applied Redaction",
"dictionaryRequestColor": "Wörterbuch",
- "hintColor": "",
+ "hintColor": "Hint",
"ignoredHintColor": "Ignorierter Hinweis",
"previewColor": "Vorschau",
- "recommendationColor": "",
- "redactionColor": "",
+ "recommendationColor": "Recommendation",
+ "redactionColor": "Redaction Color",
"requestAdd": "Neuen Wörterbucheintrag vorschlagen",
"requestRemove": "Anfrage entfernt",
- "skippedColor": "",
+ "skippedColor": "Skipped",
"updatedColor": "Aktualisiert"
}
},
@@ -735,9 +721,9 @@
"select-dossier": "Dossier auswählen",
"select-dossier-template": "Dossiervorlage auswählen"
},
- "download": "",
+ "download": "Download current entries",
"error": {
- "400": "",
+ "400": "Cannot update dictionary because at least one of the newly added words where recognized as a general term that appear too often in texts.",
"entries-too-short": "Einige Einträge im Wörterbuch unterschreiten die Mindestlänge von 2 Zeichen. Diese sind rot markiert.",
"generic": "Es ist ein Fehler aufgetreten ... Das Wörterbuch konnte nicht aktualisiert werden!"
},
@@ -752,57 +738,57 @@
"digital-signature": "Digitale Signatur",
"digital-signature-dialog": {
"actions": {
- "back": "",
- "cancel": "",
- "certificate-not-valid-error": "",
- "continue": "",
- "save": "",
- "save-error": "",
- "save-success": ""
+ "back": "Back",
+ "cancel": "Cancel",
+ "certificate-not-valid-error": "Uploaded Certificate is not valid!",
+ "continue": "Continue",
+ "save": "Save Configurations",
+ "save-error": "Failed to save digital signature!",
+ "save-success": "Digital Signature Certificate successfully saved!"
},
"forms": {
"kms": {
- "certificate-content": "",
- "certificate-name": "",
- "kms-access-key": "",
- "kms-id": "",
- "kms-region": "",
- "kms-secret-key": "",
- "kms-service-endpoint": ""
+ "certificate-content": "Certificate Content",
+ "certificate-name": "Certificate Name",
+ "kms-access-key": "KMS Access Key",
+ "kms-id": "KMS Id",
+ "kms-region": "KMS Region",
+ "kms-secret-key": "KMS Secret Key",
+ "kms-service-endpoint": "KMS Service Endpoint"
},
"pkcs": {
- "certificate-name": "",
- "contact-information": "",
- "location": "",
- "password-key": "",
- "reason": ""
+ "certificate-name": "Certificate Name",
+ "contact-information": "Contact Information",
+ "location": "Location",
+ "password-key": "Password Key",
+ "reason": "Reason"
}
},
"options": {
"kms": {
- "description": "",
- "label": ""
+ "description": "Provide a corresponding PEM file containing the certificate, along with Amazon KMS credentials needed for securing the private key.",
+ "label": "I use an Amazon KMS private key"
},
"pkcs": {
- "description": "",
- "label": ""
+ "description": "A PKCS#12 file is a file that bundles the private key and the X.509 certificate. The password protection is required to secure the private key. Unprotected PKCS#12 files are not supported.",
+ "label": "I want to upload a PKCS#12 file"
}
},
"title": {
- "before-configuration": "",
- "kms": "",
- "pkcs": ""
+ "before-configuration": "Configure Digital Signature Certificate",
+ "kms": "Configure a Certificate with Amazon KMS",
+ "pkcs": "Configure a PKCS#12 Certificate"
},
- "upload-warning-message": ""
+ "upload-warning-message": "To configure the certificate, you first need to upload it."
},
"digital-signature-screen": {
"action": {
"delete-error": "Die digitale Signatur konnte nicht entfernt werden, bitte versuchen Sie es erneut.",
"delete-success": "Die digitale Signatur wurde gelöscht. Geschwärzte Dateien werden nicht länger mit einer Signatur versehen!",
- "remove": "",
+ "remove": "Remove",
"save": "Digitale Signatur speichern",
- "save-error": "",
- "save-success": ""
+ "save-error": "Failed to save digital signature!",
+ "save-success": "Digital Signature Certificate successfully saved!"
},
"no-data": {
"action": "Zertifikat hochladen",
@@ -848,7 +834,7 @@
"dossier-details": {
"assign-members": "Mitglieder zuweisen",
"collapse": "Details ausblenden",
- "document-status": "",
+ "document-status": "Document Processing States",
"edit-owner": "Eigentümer bearbeiten",
"expand": "Details zeigen",
"members": "Mitglieder",
@@ -859,9 +845,9 @@
"dossier-listing": {
"add-new": "Neues Dossier",
"archive": {
- "action": "",
- "archive-failed": "",
- "archive-succeeded": ""
+ "action": "Archive Dossier",
+ "archive-failed": "Failed to archive dossier {dossierName}!",
+ "archive-succeeded": "Successfully archived dossier {dossierName}."
},
"delete": {
"action": "Dossier löschen",
@@ -885,8 +871,8 @@
"title": "Die ausgewählten Filter treffen auf kein Dossier zu."
},
"quick-filters": {
- "member": "",
- "owner": ""
+ "member": "Dossier Member",
+ "owner": "Dossier Owner"
},
"reanalyse": {
"action": "Gesamtes Dossier analysieren"
@@ -896,9 +882,9 @@
"total-people": "Anzahl der Benutzer"
},
"table-col-names": {
- "documents-status": "",
- "dossier-state": "",
- "last-modified": "",
+ "documents-status": "Documents State",
+ "dossier-state": "Dossier State",
+ "last-modified": "Last modified",
"name": "Name",
"needs-work": "Arbeitsvorrat",
"owner": "Besitzer"
@@ -913,7 +899,7 @@
"assign-approver": "Genehmiger zuordnen",
"assign-me": "Mir zuteilen",
"assign-reviewer": "Überprüfer zuordnen",
- "back-to-new": "",
+ "back-to-new": "Back to New",
"bulk": {
"delete": "Dokumente löschen",
"reanalyse": "Dokumente analysieren"
@@ -929,7 +915,7 @@
},
"charts": {
"documents-in-dossier": "Dokumente",
- "pages-in-dossier": ""
+ "pages-in-dossier": "Pages"
},
"description": "Beschreibung",
"dictionary": "Dossier-Wörterbuch",
@@ -960,7 +946,7 @@
"edit": "Dossier bearbeiten",
"upload-document": "Dokument hochgeladen"
},
- "import-redactions": "",
+ "import-redactions": "Import redactions",
"new-rule": {
"toast": {
"actions": {
@@ -983,19 +969,19 @@
"recent": "Neu ({hours} h)",
"unassigned": "Niemandem zugewiesen"
},
+ "reanalyse": {
+ "action": "Datei analysieren"
+ },
"reanalyse-dossier": {
"error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.",
"success": "Dateien für Reanalyse vorgesehen."
},
- "reanalyse": {
- "action": "Datei analysieren"
- },
- "start-auto-analysis": "",
- "stop-auto-analysis": "",
+ "start-auto-analysis": "Enable auto-analysis",
+ "stop-auto-analysis": "Stop auto-analysis",
"table-col-names": {
"added-on": "Hinzugefügt",
"assigned-to": "Zugewiesen an",
- "last-modified": "",
+ "last-modified": "Last modified",
"name": "Name",
"needs-work": "Arbeitsvorrat",
"pages": "Seiten",
@@ -1008,59 +994,67 @@
"under-review": "In Review",
"upload-files": "Sie können Dateien überall per Drag and Drop platzieren..."
},
- "dossier-permissions": "",
+ "dossier-permissions": "Dossier Permissions",
"dossier-state": {
- "placeholder": ""
+ "placeholder": "Undefined"
},
"dossier-states-listing": {
"action": {
- "delete": "",
- "edit": ""
+ "delete": "Delete State",
+ "edit": "Edit State"
},
- "add-new": "",
+ "add-new": "New State",
"chart": {
- "dossier-states": ""
+ "dossier-states": "{count, plural, one{Dossier State} other{Dossier States}}"
},
"error": {
- "conflict": "",
- "generic": ""
+ "conflict": "Dossier state with this name already exists!",
+ "generic": "Failed to save dossier state!"
},
"no-data": {
- "title": ""
+ "title": "There are no dossier states."
},
"no-match": {
- "title": ""
+ "title": "No dossier states match your current filters."
},
- "search": "",
+ "search": "Search...",
"table-col-names": {
- "dossiers-count": "",
- "name": "",
- "rank": ""
+ "dossiers-count": "Dossiers Count",
+ "name": "Name",
+ "rank": "Rank"
},
"table-header": {
- "title": ""
+ "title": "{length} dossier {length, plural, one{state} other{states}}"
}
},
"dossier-template-info-screen": {
- "created-by": "",
- "created-on": "",
- "entities": "",
- "entries": "",
- "modified-on": "",
- "valid-from": "",
- "valid-to": ""
+ "created-by": "Created by",
+ "created-on": "Created on: {date}",
+ "entities": "{count} {count, plural, one{entity} other{entities}}",
+ "entries": "{count} {count, plural, one{entry} other{entries}}",
+ "modified-on": "Modified on: {date}",
+ "valid-from": "Valid from: {date}",
+ "valid-to": "Valid to: {date}"
},
"dossier-template-stats": {
"active-dossiers": "Aktive Dossiers",
- "analyzed-pages": "",
- "archived-dossiers": "",
- "deleted-dossiers": "",
+ "analyzed-pages": "{count} {count, plural, one{Page} other {Pages}} analyzed",
+ "archived-dossiers": "{count} {count, plural, one{Dossier} other {Dossiers}} in Archive",
+ "deleted-dossiers": "{count} {count, plural, one{Dossier} other {Dossiers}} in Trash",
"total-documents": "Anzahl der Dokumente",
- "total-people": ""
+ "total-people": "{count} {count, plural, one{User} other {Users}}"
+ },
+ "dossier-templates": {
+ "label": "Dossier-Vorlagen",
+ "status": {
+ "active": "Active",
+ "inactive": "Inactive",
+ "incomplete": "Incomplete"
+ }
},
"dossier-templates-listing": {
"action": {
- "clone": "",
+ "clone": "Clone Template",
"delete": "Dossier-Vorlage",
"edit": "Vorlage bearbeiten"
},
@@ -1085,57 +1079,49 @@
"created-on": "Erstellt am",
"modified-on": "Geändert am",
"name": "Name",
- "status": "",
- "valid-from": "",
- "valid-to": ""
+ "status": "Status",
+ "valid-from": "Gültig ab",
+ "valid-to": "Valid to"
},
"table-header": {
"title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}"
}
},
- "dossier-templates": {
- "label": "Dossier-Vorlagen",
- "status": {
- "active": "",
- "inactive": "",
- "incomplete": ""
- }
- },
"dossier-watermark-selector": {
- "heading": "",
- "no-watermark": "",
- "preview": "",
- "watermark": ""
+ "heading": "Watermarks on documents",
+ "no-watermark": "There is no watermark defined for the dossier template.
Contact your app admin to define one.",
+ "preview": "Watermark application on preview documents",
+ "watermark": "Watermark application on redacted documents"
},
"dossiers-type-switch": {
- "active": "",
- "archive": ""
+ "active": "Active",
+ "archive": "Archived"
},
"download-dialog": {
"actions": {
- "save": ""
+ "save": "Download"
},
"form": {
- "redaction-preview-color": "",
- "redaction-preview-color-placeholder": ""
+ "redaction-preview-color": "Preview color",
+ "redaction-preview-color-placeholder": "#000000"
},
- "header": "",
- "unapproved-files-warning": ""
+ "header": "Download options",
+ "unapproved-files-warning": "This download contains unapproved file(s)."
},
"download-includes": "Wählen Sie die Dokumente für Ihr Download-Paket aus",
"download-status": {
- "error": "",
+ "error": "The download preparation failed, please recheck the selected files and download option settings.",
"queued": "Ihr Download wurde zur Warteschlange hinzugefügt. Hier finden Sie alle angeforderten Downloads: My Downloads."
},
"download-type": {
"annotated": "PDF mit Anmerkungen",
- "delta-preview": "",
+ "delta-preview": "Delta PDF",
"flatten": "PDF verflachen",
"label": "{length} Dokumenten{length, plural, one{version} other{versionen}}",
"original": "Optimiertes PDF",
"preview": "PDF-Vorschau",
"redacted": "geschwärztes PDF",
- "redacted-only": ""
+ "redacted-only": "Redacted PDF (approved documents only)"
},
"downloads-list": {
"actions": {
@@ -1188,11 +1174,11 @@
"delete-successful": "Dossier wurde gelöscht.",
"dictionary": {
"entries": "{length} {length, plural, one{entry} other{entries}}",
- "false-positive-entries": "",
- "false-positives": "",
- "false-recommendation-entries": "",
- "false-recommendations": "",
- "to-redact": ""
+ "false-positive-entries": "{length} false positive {length, plural, one{entry} other{entries}}",
+ "false-positives": "False Positives",
+ "false-recommendation-entries": "{length} false recommendation {length, plural, one{entry} other{entries}}",
+ "false-recommendations": "False Recommendations",
+ "to-redact": "To Redact"
},
"general-info": {
"form": {
@@ -1201,8 +1187,8 @@
"placeholder": "Beschreibung eingeben"
},
"dossier-state": {
- "label": "",
- "no-state-placeholder": ""
+ "label": "Dossier State",
+ "no-state-placeholder": "This dossier template has no states"
},
"due-date": "Termin",
"name": {
@@ -1213,7 +1199,7 @@
}
},
"header": "{dossierName} bearbeiten",
- "missing-owner": "",
+ "missing-owner": "You cannot edit the dossier because the owner is missing!",
"nav-items": {
"choose-download": "Wählen Sie die Dokumente für Ihr Download-Paket aus:",
"dictionary": "Wörterbuch",
@@ -1230,31 +1216,30 @@
"edit-redaction": {
"dialog": {
"actions": {
- "cancel": "",
- "save": ""
+ "cancel": "Cancel",
+ "save": "Save changes"
},
"content": {
- "comment": "",
- "comment-placeholder": "",
- "legal-basis": "",
+ "comment": "Comment",
+ "comment-placeholder": "Add remarks or mentions ...",
+ "legal-basis": "Legal basis",
"options": {
"in-dossier": {
- "description": "",
- "extraOptionLabel": "",
- "label": ""
+ "description": "Edit redaction in every document in {dossierName}.",
+ "extraOptionLabel": "Apply to all dossiers",
+ "label": "Change type in dossier"
},
"only-here": {
- "description": "",
- "label": ""
+ "description": "Edit redaction only at this position in this document.",
+ "label": "Change type only here"
}
},
- "reason": "",
- "redacted-text": "",
- "section": "",
- "type": "",
- "unchanged": ""
+ "reason": "Reason",
+ "redacted-text": "Redacted text",
+ "section": "Paragraph / Location",
+ "type": "Type"
},
- "title": ""
+ "title": "Edit {type, select, image{Image} hint{Hint} other{Redaction}}"
}
},
"entities-listing": {
@@ -1275,7 +1260,7 @@
},
"search": "Suche ...",
"table-col-names": {
- "dictionary-entries": "",
+ "dictionary-entries": "Dictionary entries",
"hint-redaction": "Hinweis/Schwärzung",
"rank": "Rang",
"type": "Typ"
@@ -1287,10 +1272,10 @@
"entity": {
"info": {
"actions": {
- "revert": "",
- "save": ""
+ "revert": "Revert",
+ "save": "Save Changes"
},
- "heading": ""
+ "heading": "Edit Entity"
}
},
"error": {
@@ -1299,23 +1284,23 @@
"action": "Zurück zur Übersicht",
"label": "Dieses Dossier wurde gelöscht!"
},
- "file-dossier": {
- "action": "Zurück zur Übersicht",
- "label": "Das Dossier dieser Datei wurde gelöscht!"
- },
"file": {
"action": "Zurück zum Dossier",
"label": "Diese Datei wurde gelöscht!"
+ },
+ "file-dossier": {
+ "action": "Zurück zur Übersicht",
+ "label": "Das Dossier dieser Datei wurde gelöscht!"
}
},
"file-preview": {
- "action": "",
- "label": ""
+ "action": "Refresh",
+ "label": "An unknown error occurred. Please refresh the page"
},
"http": {
"generic": "Aktion mit Code {status} fehlgeschlagen"
},
- "missing-types": "",
+ "missing-types": "The dossier template has missing types ({missingTypes}). Data might not be displayed correctly.",
"offline": "Du bist offline",
"online": "Du bist online",
"reload": "Neu laden",
@@ -1323,35 +1308,35 @@
},
"exact-date": "{day} {month} {year} um {hour}:{minute} Uhr",
"file": "Datei",
+ "file-attribute": {
+ "update": {
+ "error": "Failed to update file attribute value!",
+ "success": "File attribute value has been updated successfully!"
+ }
+ },
"file-attribute-encoding-types": {
- "ascii": "",
- "iso": "",
- "utf8": ""
+ "ascii": "ASCII",
+ "iso": "ISO-8859-1",
+ "utf8": "UTF-8"
},
"file-attribute-types": {
"date": "Datum",
"number": "Nummer",
"text": "Freier Text"
},
- "file-attribute": {
- "update": {
- "error": "",
- "success": ""
- }
- },
"file-attributes-configurations": {
- "cancel": "",
+ "cancel": "Cancel",
"form": {
- "delimiter": "",
- "encoding-type": "",
- "key-column": "",
- "support-csv-mapping": ""
+ "delimiter": "Delimiter",
+ "encoding-type": "Encoding Type",
+ "key-column": "Key Column",
+ "support-csv-mapping": "Support CSV Mapping"
},
- "save": "",
- "title": "",
+ "save": "Save Configurations",
+ "title": "Configurations",
"update": {
- "error": "",
- "success": ""
+ "error": "Failed to update the configuration!",
+ "success": "Configuration has been updated successfully!"
}
},
"file-attributes-csv-import": {
@@ -1418,7 +1403,7 @@
"bulk-actions": {
"delete": "Ausgewählte Attribute löschen"
},
- "configurations": "",
+ "configurations": "Configurations",
"error": {
"conflict": "Es gibt bereits ein Attribute mit diesem Name!",
"generic": "Attribute konnte nicht erstellt werden!"
@@ -1457,21 +1442,21 @@
"exclude-pages": "Seiten von Schwärzung ausschließen",
"excluded-from-redaction": "Von Schwärzung ausgeschlossen",
"fullscreen": "Vollbildmodus",
- "get-tables": "",
+ "get-tables": "Draw tables",
"highlights": {
- "convert": "",
- "remove": ""
+ "convert": "Convert earmarks",
+ "remove": "Remove earmarks"
},
"last-assignee": "Zuletzt überprüft von:",
"no-data": {
"title": "Auf dieser Seite gibt es keine Anmerkungen."
},
- "open-rss-view": "",
+ "open-rss-view": "Open Structured Component Management View",
"quick-nav": {
"jump-first": "Zur ersten Seite springen",
"jump-last": "Zur letzten Seite springen"
},
- "reanalyse-notification": "",
+ "reanalyse-notification": "Start re-analysis",
"redacted": "Vorschau",
"redacted-tooltip": "In der Schwärzungsvorschau sehen Sie nur die Schwärzungen. Es handelt sich also um eine Vorschau der endgültigen geschwärzten Version. Diese Ansicht ist nur verfügbar, wenn für die Datei keine Änderungen ausstehen und keine Reanalyse erforderlich ist",
"standard": "Standard",
@@ -1481,14 +1466,14 @@
"jump-to-next": "Springe zu Nächster",
"jump-to-previous": "Springe zu Vorheriger",
"label": "Arbeitsvorrat",
- "no-annotations": "",
+ "no-annotations": "There are no available annotations.",
"page-is": "Diese Seite ist",
- "reset": "",
+ "reset": "reset",
"select": "Auswählen",
"select-all": "Alle",
"select-none": "Keine",
- "the-filters": "",
- "wrong-filters": ""
+ "the-filters": "the filters",
+ "wrong-filters": "The selected filter combination is not possible. Please adjust or"
},
"document-info": {
"close": "Dokumenteninformation schließen",
@@ -1512,12 +1497,12 @@
"removed-from-redaction": "Von der Schwärzung ausgeschlossen"
},
"highlights": {
- "label": ""
+ "label": "Earmarks"
},
"is-excluded": "Schwärzungen für dieses Dokument deaktiviert."
},
- "text-highlights": "",
- "text-highlights-tooltip": "",
+ "text-highlights": "Earmarks",
+ "text-highlights-tooltip": "Shows all text-earmarks and allows removing or importing them as redactions",
"toggle-analysis": {
"disable": "Schwärzen deaktivieren",
"enable": "Schwärzen aktivieren",
@@ -1525,21 +1510,21 @@
}
},
"file-status": {
- "analyse": "",
+ "analyse": "Analyzing",
"approved": "Genehmigt",
"error": "Reanalyse erforderlich",
"figure-detection-analyzing": "",
- "full-processing": "",
+ "full-processing": "Processing",
"full-reprocess": "Wird analysiert",
"image-analyzing": "Bildanalyse",
"indexing": "Wird analysiert",
- "initial-processing": "",
- "ner-analyzing": "",
+ "initial-processing": "Initial processing...",
+ "ner-analyzing": "NER Analyzing",
"new": "Neu",
"ocr-processing": "OCR-Analyse",
"processed": "Verarbeitet",
"processing": "Wird analysiert...",
- "re-processing": "",
+ "re-processing": "Re-processing...",
"reprocess": "Wird analysiert",
"table-parsing-analyzing": "Table Parsing",
"unassigned": "Nicht zugewiesen",
@@ -1549,18 +1534,9 @@
},
"file-upload": {
"type": {
- "csv": ""
+ "csv": "File attributes were imported successfully from uploaded CSV file."
}
},
- "filter-menu": {
- "filter-options": "Filteroptionen",
- "filter-types": "Filter",
- "label": "Filter",
- "pages-without-annotations": "",
- "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen",
- "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten",
- "with-comments": "Nur Anmerkungen mit Kommentaren"
- },
"filter": {
"analysis": "Analyse erforderlich",
"comment": "Kommentare",
@@ -1571,10 +1547,19 @@
"suggestion": "Vorgeschlagene Schwärzung",
"updated": "Aktualisiert"
},
+ "filter-menu": {
+ "filter-options": "Filteroptionen",
+ "filter-types": "Filter",
+ "label": "Filter",
+ "pages-without-annotations": "Only pages without annotations",
+ "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen",
+ "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten",
+ "with-comments": "Nur Anmerkungen mit Kommentaren"
+ },
"filters": {
"assigned-people": "Beauftragt",
- "documents-status": "",
- "dossier-state": "",
+ "documents-status": "Documents State",
+ "dossier-state": "Dossier State",
"dossier-templates": "Regelsätze",
"empty": "Leer",
"filter-by": "Filter:",
@@ -1621,16 +1606,16 @@
"subtitle": "SMTP (Simple Mail Transfer Protocol) ermöglicht es Ihnen, Ihre E-Mails über die angegebenen Servereinstellungen zu versenden.",
"system-preferences": {
"labels": {
- "download-cleanup-download-files-hours": "",
- "download-cleanup-not-download-files-hours": "",
- "soft-delete-cleanup-time": ""
+ "download-cleanup-download-files-hours": "Delete downloaded packages automatically after X hours",
+ "download-cleanup-not-download-files-hours": "Keep the generated download package for X hours",
+ "soft-delete-cleanup-time": "Keep deleted files and dossiers for X hours in trash"
},
"placeholders": {
- "download-cleanup-download-files-hours": "",
- "download-cleanup-not-download-files-hours": "",
- "soft-delete-cleanup-time": ""
+ "download-cleanup-download-files-hours": "(hours)",
+ "download-cleanup-not-download-files-hours": "(hours)",
+ "soft-delete-cleanup-time": "(hours)"
},
- "title": ""
+ "title": "System Preferences"
},
"test": {
"error": "Die Test-E-Mail konnte nicht gesendet werden! Bitte überprüfen Sie die E-Mail-Adresse.",
@@ -1640,55 +1625,55 @@
},
"help-mode": {
"bottom-text": "Hilfe-Modus",
- "button-text": "",
+ "button-text": "Help Mode (H)",
"clicking-anywhere-on": "Klicken Sie auf eine beliebige Stelle des Bildschirms um zu sehen, welche Bereiche interaktiv sind. Wenn Sie mit der Maus über einen interaktiven Bereich fahren, verändert sich der Mauszeiger, um Ihnen zu zeigen, ob ein Element interaktiv ist.",
"instructions": "Hilfe-Modus-Anleitungen öffnen",
"welcome-to-help-mode": " Willkommen im Hilfe-Modus!
Klicken Sie auf interaktive Elemente, um in einem neuen Tab Infos dazu zu erhalten. "
},
"highlight-action-dialog": {
"actions": {
- "cancel": ""
+ "cancel": "Cancel"
},
"convert": {
- "confirmation": "",
- "details": "",
+ "confirmation": "The {count} selected {count, plural, one{earmark} other{earmarks}} will be converted",
+ "details": "All earmarks from the document will be converted to Imported Redactions, using the color set up in the Default Colors section of the app.",
"options": {
"all-pages": {
- "description": "",
- "label": ""
+ "description": "The earmarks in the selected HEX color will be converted on all pages of the document.",
+ "label": "Convert on all pages"
},
"this-page": {
- "description": "",
- "label": ""
+ "description": "The earmarks in the selected HEX color will be converted only on the current page in view.",
+ "label": "Convert only on this page"
}
},
- "save": "",
- "title": ""
+ "save": "Convert Earmarks",
+ "title": "Convert earmarks to imported redactions"
},
"form": {
"color": {
- "label": ""
+ "label": "Earmark HEX Color"
}
},
"remove": {
- "confirmation": "",
- "details": "",
+ "confirmation": "The {count} selected {count, plural, one{earmark} other{earmarks}} will be removed from the document",
+ "details": "Removing earmarks from the document will delete all the rectangles and leave a white background behind the highlighted text.",
"options": {
"all-pages": {
- "description": "",
- "label": ""
+ "description": "The earmarks in the selected HEX color will be removed on all pages of the document.",
+ "label": "Remove on all pages"
},
"this-page": {
- "description": "",
- "label": ""
+ "description": "The earmarks in the selected HEX color will be removed only on the current page in view.",
+ "label": "Remove only on this page"
}
},
- "save": "",
- "title": ""
+ "save": "Remove Earmarks",
+ "title": "Remove earmarks"
},
- "success": ""
+ "success": "{operation, select, convert{Converting earmarks in progress...} delete{Successfully removed earmarks!} other{}} "
},
- "highlights": "",
+ "highlights": "{color} - {length} {length, plural, one{earmark} other{earmarks}}",
"image-category": {
"formula": "Formel",
"image": "Bild",
@@ -1697,20 +1682,20 @@
},
"import-redactions-dialog": {
"actions": {
- "cancel": "",
- "import": ""
+ "cancel": "Cancel",
+ "import": "Import"
},
- "details": "",
+ "details": "To apply redactions from another document, you first need to upload it.",
"http": {
- "error": "",
- "success": ""
+ "error": "Failed to import redactions! {error}",
+ "success": "Redactions have been imported!"
},
- "import-only-for-pages": "",
+ "import-only-for-pages": "Import only for pages",
"range": {
- "label": "",
- "placeholder": ""
+ "label": "Minus(-) for range and comma(,) for enumeration.",
+ "placeholder": "e.g. 1-20,22,32"
},
- "title": ""
+ "title": "Import document with redactions"
},
"initials-avatar": {
"unassigned": "Unbekannt",
@@ -1737,22 +1722,21 @@
},
"license-info-screen": {
"backend-version": "Backend-Version der Anwendung",
- "capacity-details": "",
"capacity": {
- "active-documents": "",
- "all-documents": "",
- "archived-documents": "",
- "exceeded-capacity": "",
- "storage-capacity": "",
- "trash-documents": "",
- "unused": ""
+ "active-documents": "Active Documents",
+ "all-documents": "Retention Capacity Used",
+ "archived-documents": "Archived Documents",
+ "exceeded-capacity": "Exceeded Capacity",
+ "storage-capacity": "Capacity",
+ "trash-documents": "Documents in Trash",
+ "unused": "Unused Storage"
},
+ "capacity-details": "Capacity Details",
"copyright-claim-text": "Copyright © 2020 - {currentYear} knecon AG (powered by IQSER)",
"copyright-claim-title": "Copyright",
"current-analyzed-pages": "In aktuellem Lizenzzeitraum analysierte Seiten",
- "current-volume-analyzed": "",
+ "current-volume-analyzed": "Data Volume Analyzed in Licensing Period",
"custom-app-title": "Name der Anwendung",
- "email-report": "E-Mail-Bericht",
"email": {
"body": {
"analyzed": "Im aktuellen Lizenzzeitraum insgesamt analysierte Seiten: {pages}.",
@@ -1760,80 +1744,81 @@
},
"title": "Lizenzbericht {licenseCustomer}"
},
+ "email-report": "E-Mail-Bericht",
"end-user-license-text": "Die Nutzung dieses Produkts unterliegt den Bedingungen der Endbenutzer-Lizenzvereinbarung für den RedactManager, sofern darin nichts anderweitig festgelegt.",
"end-user-license-title": "Endbenutzer-Lizenzvereinbarung",
- "license-title": "",
- "licensed-capacity": "",
+ "license-title": "License Title",
+ "licensed-capacity": "Licensed Capacity",
"licensed-page-count": "Anzahl der lizenzierten Seiten",
"licensed-to": "Lizenziert für",
"licensing-details": "Lizenzdetails",
"licensing-period": "Laufzeit der Lizenz",
"ocr-analyzed-pages": "Mit OCR konvertierte Seiten",
"pages": {
- "analyzed-data-per-month": "",
+ "analyzed-data-per-month": "Analyzed Data per Month",
"cumulative-pages": "Seiten insgesamt",
- "cumulative-volume": "",
+ "cumulative-volume": "Cumulative Analyzed Data Volume",
"pages-per-month": "Seiten pro Monat",
- "statistics-by-capacity": "",
- "statistics-by-pages": "",
- "total-analyzed-data": "",
+ "statistics-by-capacity": "Statistics by Capacity",
+ "statistics-by-pages": "Statistics by Pages",
+ "total-analyzed-data": "Total Analyzed Data",
"total-pages": "Gesamtzahl der Seiten"
},
"status": {
"active": "Aktiv",
- "inactive": ""
+ "inactive": "Inactive"
},
"total-analyzed": "Seit {date} insgesamt analysierte Seiten",
- "total-ocr-analyzed": "",
- "total-volume-analyzed": "",
+ "total-ocr-analyzed": "Total OCR Processed Pages",
+ "total-volume-analyzed": "Total Data Volume Analyzed",
"unlicensed-analyzed": "Über Lizenz hinaus analysierte Seiten",
"usage-details": "Nutzungsdetails"
},
"license-information": "Lizenzinformationen",
- "load-all-annotations-success": "",
- "load-all-annotations-threshold-exceeded": "",
- "load-all-annotations-threshold-exceeded-checkbox": "",
- "loading": "",
+ "load-all-annotations-success": "All annotations were loaded and are now visible in the document thumbnails",
+ "load-all-annotations-threshold-exceeded": "Caution, document contains more than {threshold} annotations. Drawing all annotations will affect the performance of the app and could even block it. Do you want to proceed?",
+ "load-all-annotations-threshold-exceeded-checkbox": "Do not show this warning again",
+ "loading": "Loading",
"manual-annotation": {
"dialog": {
"actions": {
"save": "Speichern"
},
"content": {
- "apply-on-multiple-pages": "",
- "apply-on-multiple-pages-hint": "",
- "apply-on-multiple-pages-placeholder": "",
+ "apply-on-multiple-pages": "Apply on multiple pages",
+ "apply-on-multiple-pages-hint": "Minus(-) for range and comma(,) for enumeration.",
+ "apply-on-multiple-pages-placeholder": "e.g. 1-20,22,32",
"classification": "Wert / Klassifizierung",
"comment": "Kommentar",
"dictionary": "Wörterbuch",
- "edit-selected-text": "",
+ "edit-selected-text": "Edit selected text",
"legalBasis": "Rechtsgrundlage",
"reason": "Begründung",
"reason-placeholder": "Wählen Sie eine Begründung aus ...",
"rectangle": "Benutzerdefinierter Bereich",
"section": "Absatz / Ort",
"text": "Ausgewählter Text:",
- "type": ""
+ "type": "Entity"
},
- "error": "",
+ "error": "Error! Invalid page selection",
"header": {
- "false-positive": "",
+ "false-positive": "Set false positive",
"force-hint": "Hinweis erzwingen",
"force-redaction": "Schwärzung erzwingen",
- "hint": "",
- "redact": "",
- "redaction": ""
+ "hint": "Add hint",
+ "redact": "Redact",
+ "redaction": "Redaction"
}
}
},
- "minutes": "",
- "no-active-license": "",
+ "minutes": "minutes",
+ "no-active-license": "Invalid or corrupt license – Please contact your administrator",
"notification": {
"assign-approver": "Sie wurden dem Dokument {fileHref, select, null{{fileName}} other{{fileName}}} im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} als Genehmiger zugewiesen!",
"assign-reviewer": "Sie wurden dem Dokument {fileHref, select, null{{fileName}} other{{fileName}}} im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} als Reviewer zugewiesen!",
"document-approved": "{fileHref, select, null{{fileName}} other{{fileName}}} wurde genehmigt!",
"dossier-deleted": "Dossier: {dossierName} wurde gelöscht!",
- "dossier-owner-deleted": "",
+ "dossier-owner-deleted": "The owner of dossier: {dossierName} has been deleted!",
"dossier-owner-removed": "Der Dossier-Owner von {dossierHref, select, null{{dossierName}} other{{dossierName}}} wurde entfernt!",
"dossier-owner-set": "Eigentümer von {dossierHref, select, null{{dossierName}} other{{dossierName}}} geändert zu {user}!",
"download-ready": "Ihr Download ist fertig!",
@@ -1844,6 +1829,13 @@
"user-promoted-to-approver": "{user} wurde im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} zum Genehmiger ernannt!",
"user-removed-as-dossier-member": "{user} wurde als Mitglied von: {dossierHref, select, null{{dossierName}} other{{dossierName}}} entfernt!"
},
+ "notifications": {
+ "button-text": "Notifications",
+ "deleted-dossier": "Deleted Dossier",
+ "label": "Benachrichtigungen",
+ "mark-all-as-read": "Alle als gelesen markieren",
+ "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}"
+ },
"notifications-screen": {
"category": {
"email-notifications": "E-Mail Benachrichtigungen",
@@ -1857,7 +1849,6 @@
"dossier": "Dossierbezogene Benachrichtigungen",
"other": "Andere Benachrichtigungen"
},
- "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten",
"options": {
"ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin",
"ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin",
@@ -1875,6 +1866,7 @@
"USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde",
"USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere"
},
+ "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten",
"schedule": {
"daily": "Tägliche Zusammenfassung",
"instant": "Sofortig",
@@ -1882,53 +1874,46 @@
},
"title": "Benachrichtigungseinstellungen"
},
- "notifications": {
- "button-text": "",
- "deleted-dossier": "",
- "label": "Benachrichtigungen",
- "mark-all-as-read": "Alle als gelesen markieren",
- "mark-as": ""
- },
"ocr": {
"confirmation-dialog": {
- "cancel": "",
- "question": "",
- "title": ""
+ "cancel": "Cancel",
+ "question": "Manual changes could get lost if OCR makes changes at those positions. Are you sure you want to proceed?",
+ "title": "Warning: the file has manual adjustments!"
}
},
"overwrite-files-dialog": {
- "archive-question": "",
- "archive-title": "",
+ "archive-question": "Dossier is not empty, so files might overlap with the contents of the archive you are uploading. Choose how to proceed in case of duplicates:",
+ "archive-title": "Uploading a ZIP archive",
"file-question": "{filename} ist bereits vorhanden. Wie möchten Sie fortfahren?",
"file-title": "Das Dokument existiert bereits!",
"options": {
- "all-files": "",
+ "all-files": "Apply to all files of current upload",
"cancel": "Alle Uploads abbrechen",
- "current-files": "",
+ "current-files": "Apply to current file",
"full-overwrite": {
- "description": "",
- "label": ""
+ "description": "Manual changes done to the existing file will be removed and you are able to start over with redactions.",
+ "label": "Overwrite and start over"
},
"partial-overwrite": {
- "description": "",
- "label": ""
+ "description": "Manual changes are kept only if the affected redactions are still at the same position in the file. Some redactions could be misplaced if the content of the file changed.",
+ "label": "Overwrite and keep manual changes"
},
- "proceed": "",
+ "proceed": "Proceed",
"skip": {
- "description": "",
- "label": ""
+ "description": "The upload will be skipped and the existing file will not be replaced.",
+ "label": "Keep the existing file and do not overwrite"
}
},
- "remember": ""
+ "remember": "Remember choice and don't ask me again"
},
"page": "Seite",
"page-rotation": {
- "apply": "",
+ "apply": "APPLY",
"confirmation-dialog": {
- "question": "",
- "title": ""
+ "question": "You have unapplied page rotations. Choose how to proceed:",
+ "title": "Pending page rotations"
},
- "discard": ""
+ "discard": "DISCARD"
},
"pagination": {
"next": "Nächste",
@@ -1937,170 +1922,162 @@
"pdf-viewer": {
"text-popup": {
"actions": {
- "search": ""
+ "search": "Search for selection"
}
},
"toggle-layers": "{active, select, true{Disable} false{Enable} other{}} layout grid",
- "toggle-readable-redactions": "",
+ "toggle-readable-redactions": "Show redactions {active, select, true{as in final document} false{in preview color} other{}}",
"toggle-tooltips": "{active, select, true{Disable} false{Enable} other{}} Kurzinfos für Anmerkungen"
},
"permissions-screen": {
"dossier": {
- "access": "",
- "view": ""
+ "access": "Access Dossier",
+ "view": "View Dossier"
},
- "label": "",
+ "label": "{targetObject, select, Dossier{Dossier} other{}} Permissions",
"mapped": {
- "approve": "",
- "everyone-else": "",
- "owner": "",
- "review": ""
+ "approve": "Approvers",
+ "everyone-else": "Everyone else",
+ "owner": "Owner",
+ "review": "Reviewers"
},
"table-col-names": {
- "permission": ""
+ "permission": "Permission"
},
"table-header": {
- "title": ""
+ "title": "{length} {length, plural, one{Permission} other{Permissions}}"
}
},
"preferences-screen": {
"actions": {
- "save": ""
+ "save": "Save changes"
},
"form": {
- "auto-expand-filters-on-action": "",
- "load-all-annotations-warning": "",
- "open-structured-view-by-default": "",
- "table-extraction-type": ""
+ "auto-expand-filters-on-action": "Auto-expand filters on my actions",
+ "load-all-annotations-warning": "Warning regarding loading all annotations at once in file preview",
+ "open-structured-view-by-default": "Display structured component management modal by default",
+ "table-extraction-type": "Table extraction type"
},
- "label": "",
- "title": "",
- "warnings-description": "",
- "warnings-label": "",
- "warnings-subtitle": "",
- "warnings-title": ""
- },
- "processing-status": {
- "ocr": "",
- "pending": "",
- "processed": "",
- "processing": ""
+ "label": "Preferences",
+ "title": "Edit preferences",
+ "warnings-description": "Selecting the \"Do not show this message again\" checkbox will skip the warning dialog the next time you trigger it.",
+ "warnings-label": "Prompts and Dialogs",
+ "warnings-subtitle": "Do not show again options",
+ "warnings-title": "Prompts and Dialogs Settings"
},
"processing": {
- "basic": "",
- "ocr": ""
+ "basic": "Processing",
+ "ocr": "OCR"
+ },
+ "processing-status": {
+ "ocr": "OCR",
+ "pending": "Pending",
+ "processed": "Processed",
+ "processing": "Processing"
},
"readonly": "Lesemodus",
- "readonly-archived": "",
+ "readonly-archived": "Read only (archived)",
"redact-text": {
"dialog": {
"actions": {
- "cancel": "",
- "save": ""
+ "cancel": "Cancel",
+ "save": "Save"
},
"content": {
- "comment": "",
- "comment-placeholder": "",
- "edit-text": "",
- "legal-basis": "",
+ "comment": "Comment",
+ "comment-placeholder": "Add remarks or mentions ...",
+ "edit-text": "Edit text",
+ "legal-basis": "Legal Basis",
"options": {
"in-dossier": {
- "description": "",
- "extraOptionLabel": "",
- "label": ""
+ "description": "Add redaction in every document in {dossierName}.",
+ "extraOptionLabel": "Apply to all dossiers",
+ "label": "Redact in dossier"
},
"only-here": {
- "description": "",
- "label": ""
+ "description": "Add redaction only at this position in this document.",
+ "label": "Redact only here"
}
},
- "reason": "",
- "reason-placeholder": "",
- "revert-text": "",
- "selected-text": "",
- "text": "",
- "type": "",
- "type-placeholder": ""
+ "reason": "Reason",
+ "reason-placeholder": "Select a reason ...",
+ "revert-text": "Revert to selected text",
+ "selected-text": "Selected text:",
+ "text": "Text:",
+ "type": "Type",
+ "type-placeholder": "Select type ..."
},
- "title": ""
+ "title": "Redact text"
}
},
"redaction-abbreviation": "R",
- "references": "",
+ "references": "{count} {count, plural, one{reference} other{references}}",
"remove-annotation": {
"dialog": {
"actions": {
- "cancel": "",
- "save": ""
+ "cancel": "Cancel",
+ "save": "Save"
},
"content": {
- "comment": "",
- "comment-placeholder": "",
- "list-item": "",
- "list-item-false-positive": "",
+ "comment": "Comment",
+ "comment-placeholder": "Add remarks or mentions ...",
"options": {
"false-positive": {
- "description": "",
- "description-bulk": "",
- "label": ""
+ "description": "\"{value}\" is not a \"{type}\" in this context: \"{context}\".",
+ "label": "False positive"
},
"in-dossier": {
- "description": "",
- "description-bulk": "",
- "label": "",
- "label-bulk": ""
+ "description": "Do not annotate \"{value}\" as \"{type}\" in any dossier.",
+ "label": "No longer annotate as \"{type}\""
},
"only-here": {
- "description": "",
- "description-bulk": "",
- "label": ""
+ "description": "Do not annotate \"{value}\" at this position in the current document.",
+ "label": "Remove here"
}
- },
- "redacted-text": ""
+ }
},
- "title": ""
+ "title": "Remove annotation"
}
},
"remove-redaction": {
"dialog": {
"actions": {
- "cancel": "",
- "save": ""
+ "cancel": "Cancel",
+ "save": "Save"
},
"content": {
- "comment": "",
- "comment-placeholder": "",
+ "comment": "Comment",
+ "comment-placeholder": "Add remarks or mentions ...",
"options": {
"do-not-recommend": {
- "description": "",
- "description-bulk": "",
- "extraOptionLabel": "",
- "label": ""
+ "description": "Do not recommend \"{value}\" as {type} in any document of the current dossier.",
+ "extraOptionLabel": "Apply to all dossiers",
+ "label": "Remove from dossier"
},
"false-positive": {
- "description": "",
- "extraOptionLabel": "",
- "label": ""
+ "description": "\"{value}\" is not a {type} in this context: \"{context}\".",
+ "extraOptionLabel": "Apply to all dossiers",
+ "label": "False positive"
},
"in-dossier": {
- "description": "",
- "extraOptionLabel": "",
- "label": ""
+ "description": "Do not {type} \"{value}\" in any document of the current dossier.",
+ "extraOptionLabel": "Apply to all dossiers",
+ "label": "Remove from dossier"
},
"only-here": {
- "description": "",
- "label": ""
+ "description": "Do not {type, select, undefined{redact} other{type}} \"{value}\" at this position in the current document.",
+ "label": "Remove here"
}
}
},
- "title": ""
+ "title": "Remove {type}"
}
},
"report-type": {
"label": "{length} {length, plural, one{Berichtstyp} other{Berichtstypen}}"
},
"reports-screen": {
- "description": "",
+ "description": "Below, you will find a list of placeholders for dossier- and document-specific information. You can include these placeholders in your report templates.",
"descriptions": {
"dossier-attributes": "Dieser Platzhalter wird durch den Wert des Dossier-Attributs {attribute} ersetzt.",
"file-attributes": "Dieser Platzhalter wird durch den Wert des Dateiattributs {attribute} ersetzt.",
@@ -2118,17 +2095,17 @@
},
"redaction": {
"entity": {
- "display-name": ""
+ "display-name": "This placeholder is replaced by the name of the entity the redaction is based on."
},
"excerpt": "Dieser Platzhalter wird durch einen Textausschnitt ersetzt, der die Schwärzung enthält.",
"justification": "Dieser Platzhalter wird durch die Begründung der Schwärzung ersetzt. Es ist eine Kombination aus dem Rechtsverweis (justificationParagraph) und dem Begründungstext (justificationReason).",
- "justification-legal-basis": "",
+ "justification-legal-basis": "This placeholder is replaced by the legal basis for the redaction.",
"justification-paragraph": "Dieser Platzhalter wird durch den Rechtshinweis der Begründung der Redaktion ersetzt.",
"justification-reason": "Dieser Platzhalter wird durch den Begründungstext der Schwärzung ersetzt.",
- "justification-text": "",
+ "justification-text": "This placeholder is replaced by the justification text.",
"page": "Dieser Platzhalter wird durch die Seitenzahl der Redaktion ersetzt.",
"paragraph": "Dieser Platzhalter wird durch den Absatz ersetzt, der die Schwärzung enthält.",
- "value": ""
+ "value": "This placeholder is replaced by the value that was redacted."
},
"time": {
"h-m": "Dieser Platzhalter wird durch den Zeitpunkt ersetzt, zu dem der Bericht erstellt wurde."
@@ -2138,7 +2115,7 @@
"invalid-upload": "Ungültiges Upload-Format ausgewählt! Unterstützt werden Dokumente im .xlsx- und im .docx-Format",
"multi-file-report": "(Mehrere Dateien)",
"report-documents": "Dokumente für den Bericht",
- "setup": "",
+ "setup": "Click the upload button on the right to upload your redaction report templates.",
"table-header": {
"description": "Beschreibung",
"placeholders": "Platzhalter"
@@ -2163,42 +2140,42 @@
"resize-annotation": {
"dialog": {
"actions": {
- "cancel": "",
- "save": ""
+ "cancel": "Cancel",
+ "save": "Save Changes"
},
"content": {
- "comment": "",
- "original-text": "",
- "resized-text": ""
+ "comment": "Comment",
+ "original-text": "Original annotation:",
+ "resized-text": "Resized annotation:"
},
- "header": ""
+ "header": "Resize annotation"
}
},
"resize-redaction": {
"dialog": {
"actions": {
- "cancel": "",
- "save": ""
+ "cancel": "Cancel",
+ "save": "Save Changes"
},
"content": {
- "comment": "",
+ "comment": "Comment",
"options": {
"in-dossier": {
- "description": "",
- "extraOptionLabel": "",
- "label": "",
- "tooltip": ""
+ "description": "Resize in every document in {dossierName}.",
+ "extraOptionLabel": "Apply to all dossiers",
+ "label": "Resize in dossier",
+ "tooltip": "Only available for dictionary-based types"
},
"only-here": {
- "description": "",
- "label": ""
+ "description": "Resize only at this position in this document.",
+ "label": "Resize only here"
}
},
- "original-text": "",
- "resized-text": "",
- "type": ""
+ "original-text": "Original text:",
+ "resized-text": "Resized text:",
+ "type": "Type"
},
- "header": ""
+ "header": "Resize {type}"
}
},
"roles": {
@@ -2213,36 +2190,41 @@
},
"rss-dialog": {
"actions": {
- "cancel-edit": "",
- "close": "",
+ "cancel-edit": "Cancel",
+ "close": "Close",
"display-by-default": "",
- "edit": "",
- "export-json": "",
- "export-xml": "",
- "save": "",
- "undo": ""
+ "edit": "Edit",
+ "export-json": "Export JSON",
+ "export-xml": "Export XML",
+ "save": "Save",
+ "undo": "Undo"
},
- "annotations": "",
+ "annotations": "{type} found on {pageCount, plural, one{page} other{pages}} {pages} by rule #{ruleNumber}",
"table-header": {
- "annotation-references": "",
- "component": "",
- "transformation-rule": "",
- "value": ""
+ "annotation-references": "Annotation references",
+ "component": "Component",
+ "transformation-rule": "Transformation rule",
+ "value": "Value"
},
- "title": ""
+ "title": "Structured Component Management"
},
"rules-screen": {
"error": {
"generic": "Es ist ein Fehler aufgetreten ... Die Regeln konnten nicht aktualisiert werden!"
},
- "errors-found": "",
"revert-changes": "Anmeldedaten speichern",
"save-changes": "Änderungen speichern",
"success": {
"generic": "Die Regeln wurden aktualisiert!"
},
- "title": "",
- "warning-text": ""
+ "title": "Rule Editor",
+ "warning-text": "Warning: experimental feature!"
+ },
+ "search": {
+ "active-dossiers": "ganze Plattform",
+ "all-dossiers": "all documents",
+ "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen",
+ "this-dossier": "in diesem Dossier"
},
"search-screen": {
"cols": {
@@ -2253,13 +2235,13 @@
"status": "Status"
},
"filters": {
- "assignee": "",
+ "assignee": "Assignee",
"by-dossier": "Nach Dossier filtern",
- "by-template": "",
- "only-active": "",
- "search-by-template-placeholder": "",
+ "by-template": "Dossier Template",
+ "only-active": "Active dossiers only",
+ "search-by-template-placeholder": "Dossier Template name...",
"search-placeholder": "Dossiername...",
- "status": ""
+ "status": "Status"
},
"missing": "Fehlt",
"must-contain": "Muss enthalten",
@@ -2267,14 +2249,8 @@
"no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.",
"table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}"
},
- "search": {
- "active-dossiers": "ganze Plattform",
- "all-dossiers": "",
- "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen",
- "this-dossier": "in diesem Dossier"
- },
- "seconds": "",
- "size": "",
+ "seconds": "seconds",
+ "size": "Size",
"smtp-auth-config": {
"actions": {
"cancel": "Abbrechen",
@@ -2288,14 +2264,14 @@
"title": "Authentifizierung aktivieren"
},
"tenant-resolve": {
- "contact-administrator": "",
+ "contact-administrator": "Cannot remember the workspace? Please contact your administrator.",
"header": {
- "first-time": "",
- "join-another-domain": "",
- "sign-in-previous-domain": "",
- "youre-logged-out": ""
+ "first-time": "Sign in for the first time to a workspace",
+ "join-another-domain": "Or join another workspace",
+ "sign-in-previous-domain": "Sign in to a previously used workspace",
+ "youre-logged-out": "You have successfully been logged out."
},
- "input-placeholder": ""
+ "input-placeholder": "your workspace"
},
"time": {
"days": "{days} {days, plural, one{Tag} other{Tage}}",
@@ -2303,22 +2279,22 @@
"less-than-an-hour": "< 1 Stunde",
"no-time-left": "Frist für Wiederherstellung verstrichen"
},
- "today": "",
+ "today": "Today",
"toggle-auto-analysis-message": {
- "error": "",
- "success": ""
+ "error": "Something went wrong.",
+ "success": "{toggleOperation} automatic processing."
},
"top-bar": {
"navigation-items": {
"back": "Zurück",
- "back-to-dashboard": "",
- "dashboard": "",
+ "back-to-dashboard": "Back to Home",
+ "dashboard": "Home",
"my-account": {
"children": {
"account": "Konto",
"admin": "Einstellungen",
"downloads": "Meine Downloads",
- "join-another-tenant": "",
+ "join-another-tenant": "Join another workspace",
"language": {
"de": "Deutsch",
"en": "Englisch",
@@ -2349,7 +2325,7 @@
},
"table-col-names": {
"deleted-on": "Gelöscht am",
- "dossier": "",
+ "dossier": "Dossier",
"name": "Name",
"owner": "Eigentümer",
"time-to-restore": "Verbleibende Zeit für Wiederherstellung"
@@ -2361,19 +2337,19 @@
"type": "Typ",
"unapproved-suggestions": {
"confirmation-dialog": {
- "checkbox-text": "",
- "confirmation-text": "",
- "deny-text": "",
- "not-displayed-question": "",
- "success-confirmation-text": "",
- "title": ""
+ "checkbox-text": "Do not show this message again",
+ "confirmation-text": "Continue to Preview",
+ "deny-text": "Cancel",
+ "not-displayed-question": "The document contains unapproved suggestions that are not included in the preview.",
+ "success-confirmation-text": "Prompts about unapproved suggestions were disabled. Change this preference in account settings.",
+ "title": "Document with unapproved suggestions"
}
},
"unknown": "Unbekannt",
"update-profile": {
"errors": {
- "bad-request": "",
- "generic": ""
+ "bad-request": "Error: {message}.",
+ "generic": "An error has occurred while updating the profile."
}
},
"upload-dictionary-dialog": {
@@ -2386,7 +2362,7 @@
"title": "Das Wörterbuch hat bereits Einträge!"
},
"upload-file": {
- "upload-area-text": ""
+ "upload-area-text": "Click or drag & drop anywhere on this area..."
},
"upload-status": {
"dialog": {
@@ -2398,7 +2374,7 @@
},
"error": {
"file-size": "Datei zu groß. Die maximal zulässige Größe beträgt {size} MB.",
- "file-type": "",
+ "file-type": "This file type is not accepted.",
"generic": "Fehler beim Hochladen des Dokuments. {error}"
}
},
@@ -2428,7 +2404,7 @@
},
"user-management": "Benutzerverwaltung",
"user-menu": {
- "button-text": ""
+ "button-text": "User menu"
},
"user-profile": "Mein Profil",
"user-profile-screen": {
@@ -2439,21 +2415,21 @@
"confirm-password": {
"form": {
"password": {
- "label": ""
+ "label": "Password"
}
},
- "header": "",
- "save": ""
+ "header": "Confirm your password",
+ "save": "Submit"
},
"form": {
- "dark-theme": "",
+ "dark-theme": "Dark Theme",
"email": "Email",
"first-name": "Vorname",
"last-name": "Nachname"
},
"title": "Profil bearbeiten",
"update": {
- "success": ""
+ "success": "Successfully updated profile!"
}
},
"user-stats": {
@@ -2470,59 +2446,59 @@
"workflow": "Arbeitsablauf"
},
"viewer-header": {
- "load-all-annotations": ""
+ "load-all-annotations": "Load all annotations"
},
"watermark-screen": {
"action": {
"change-success": "Das Wasserzeichen wurde aktualisiert!",
- "created-success": "",
+ "created-success": "Watermark has been created!",
"error": "Fehler beim Aktualisieren des Wasserzeichens",
"revert": "Rückgängig machen",
"save": "Änderungen speichern"
},
"alignment": {
- "align-bottom": "",
- "align-horizontal-centers": "",
- "align-left": "",
- "align-right": "",
- "align-top": "",
- "align-vertical-centers": ""
+ "align-bottom": "Align bottom",
+ "align-horizontal-centers": "Align horizontal centers",
+ "align-left": "Align left",
+ "align-right": "Align right",
+ "align-top": "Align top",
+ "align-vertical-centers": "Align vertical centers"
},
"form": {
- "alignment": "",
+ "alignment": "Alignment",
"color": "Farbe",
- "color-placeholder": "",
+ "color-placeholder": "#",
"font-size": "Schriftgröße",
"font-type": "Schriftart",
- "name-label": "",
- "name-placeholder": "",
+ "name-label": "Watermark Name",
+ "name-placeholder": "Choose a name to identify the watermark",
"opacity": "Deckkraft",
"orientation": "Ausrichtung",
- "text-label": "",
+ "text-label": "Watermark Text",
"text-placeholder": "Text eingeben"
}
},
"watermarks-listing": {
"action": {
- "delete": "",
- "delete-success": "",
- "edit": ""
+ "delete": "Delete",
+ "delete-success": "Watermark has been deleted!",
+ "edit": "Edit"
},
- "add-new": "",
+ "add-new": "New Watermark",
"no-data": {
- "title": ""
+ "title": "There are no watermarks yet."
},
"table-col-names": {
- "created-by": "",
- "created-on": "",
- "modified-on": "",
- "name": "",
- "status": ""
+ "created-by": "Created by",
+ "created-on": "Created on",
+ "modified-on": "Modified on",
+ "name": "Name",
+ "status": "Status"
},
"table-header": {
- "title": ""
+ "title": "Watermarks"
},
- "watermark-is-used": ""
+ "watermark-is-used": "This watermark is already in use, are you sure you want to delete it?"
},
"workflow": {
"selection": {
@@ -2533,4 +2509,4 @@
}
},
"yesterday": "Gestern"
-}
+}
\ No newline at end of file
diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json
index 862b5baa7..ee22eb94e 100644
--- a/apps/red-ui/src/assets/i18n/redact/en.json
+++ b/apps/red-ui/src/assets/i18n/redact/en.json
@@ -2533,4 +2533,4 @@
}
},
"yesterday": "Yesterday"
-}
+}
\ No newline at end of file
diff --git a/libs/common-ui b/libs/common-ui
index d1df30b56..60ace0115 160000
--- a/libs/common-ui
+++ b/libs/common-ui
@@ -1 +1 @@
-Subproject commit d1df30b56ea5abd03b0c8623f68fc96db9fef271
+Subproject commit 60ace0115100fe43591cabe973b5cb0067def173
diff --git a/package.json b/package.json
index 9ac65274f..0a6337b83 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"nx": "nx",
"start": "nx serve",
"update": "nx migrate latest",
+ "localazy": "ts-node tools/localazy/src/index.ts",
"migrate": "nx migrate --run-migrations",
"workspace-generator": "nx workspace-generator",
"analyze": "nx build --stats-json && webpack-bundle-analyzer dist/apps/red-ui/stats.json",
@@ -75,6 +76,7 @@
"@angular/compiler-cli": "16.2.2",
"@angular/language-service": "16.2.2",
"@bartholomej/ngx-translate-extract": "^8.0.2",
+ "@localazy/ts-api": "^1.0.0",
"@nx/eslint-plugin": "16.7.4",
"@nx/jest": "16.7.4",
"@nx/linter": "16.7.4",
diff --git a/tools/localazy/.gitignore b/tools/localazy/.gitignore
new file mode 100644
index 000000000..d6ae6f5be
--- /dev/null
+++ b/tools/localazy/.gitignore
@@ -0,0 +1,2 @@
+yarn.lock
+node_modules/
diff --git a/tools/localazy/package.json b/tools/localazy/package.json
new file mode 100644
index 000000000..65e81bae4
--- /dev/null
+++ b/tools/localazy/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "localazy",
+ "version": "1.0.0",
+ "dependencies": {
+ "@types/node": "^20.5.7"
+ },
+ "scripts": {
+ "start": "ts-node src/index.ts"
+ },
+ "devDependencies": {
+ "@localazy/ts-api": "^1.0.0",
+ "ts-node": "10.9.1",
+ "typescript": "5.1.3"
+ }
+}
diff --git a/tools/localazy/src/constants.ts b/tools/localazy/src/constants.ts
new file mode 100644
index 000000000..c560ad948
--- /dev/null
+++ b/tools/localazy/src/constants.ts
@@ -0,0 +1,2 @@
+export const TOKEN: string = process.env.LOCALAZY_TOKEN || '';
+export const FILENAME = 'i18n.json';
diff --git a/tools/localazy/src/functions.ts b/tools/localazy/src/functions.ts
new file mode 100644
index 000000000..60c658c48
--- /dev/null
+++ b/tools/localazy/src/functions.ts
@@ -0,0 +1,63 @@
+import { FILENAME, TOKEN } from './constants';
+import LocalazyApi from '@localazy/ts-api';
+import { Key } from '@localazy/ts-api/dist/models/responses/keys-in-file';
+import { get, set } from './utils';
+import * as fs from 'fs';
+
+const api = LocalazyApi({
+ projectToken: TOKEN,
+ baseUrl: 'https://api.localazy.com',
+});
+
+export async function getProjectId(): Promise {
+ const projects = await api.listProjects();
+ return projects[0].id;
+}
+
+export async function getFileId(projectId: string): Promise {
+ const files = await api.listFiles({ projectId });
+ return files.find(file => file.name === FILENAME)!.id;
+}
+
+export async function uploadLocal(projectId: string, lang: 'en' | 'de'): Promise {
+ const langFile = (await import(`./../../../apps/red-ui/src/assets/i18n/redact/${lang}.json`)).default;
+
+ await api.import({
+ projectId,
+ files: [
+ {
+ name: FILENAME,
+ content: { type: 'json', features: ['plural_icu', 'filter_untranslated'], [lang]: langFile },
+ },
+ ],
+ deprecate: 'project',
+ });
+}
+
+export async function downloadLanguage(projectId: string, fileId: string, lang: 'en' | 'de'): Promise {
+ const response = await api.getFileContents({ projectId, fileId, lang });
+ return JSON.parse(await response.text());
+}
+
+export async function listKeys(projectId: string, fileId: string, lang: 'en' | 'de'): Promise {
+ const response = await api.listKeysInFileForLanguage({ projectId, fileId, lang });
+ console.log(`Downloaded ${response.keys.length} keys for ${lang} language`);
+ return response.keys;
+}
+
+export async function updateLocalEn(keys: Key[]): Promise {
+ const enFile = (await import('./../../../apps/red-ui/src/assets/i18n/redact/en.json')).default;
+
+ keys.forEach(({ key, value }) => {
+ if (get(enFile, key) !== undefined) {
+ set(enFile, key, value);
+ }
+ });
+
+ await fs.promises.writeFile('./../../apps/red-ui/src/assets/i18n/redact/en.json', JSON.stringify(enFile, null, 2));
+}
+
+export async function updateLocalDe(projectId: string, fileId: string): Promise {
+ const deFile = await downloadLanguage(projectId, fileId, 'de');
+ await fs.promises.writeFile('./../../apps/red-ui/src/assets/i18n/redact/de.json', JSON.stringify(deFile, null, 2));
+}
diff --git a/tools/localazy/src/index.ts b/tools/localazy/src/index.ts
new file mode 100644
index 000000000..a6a9f8866
--- /dev/null
+++ b/tools/localazy/src/index.ts
@@ -0,0 +1,33 @@
+import { downloadLanguage, getFileId, getProjectId, listKeys, updateLocalDe, updateLocalEn, uploadLocal } from './functions';
+
+async function execute() {
+ const projectId = await getProjectId();
+ const fileId = await getFileId(projectId);
+
+ /** Update local en (source) file with potential remotely updated translations. */
+ const remoteKeys = await listKeys(projectId, fileId, 'en');
+ await updateLocalEn(remoteKeys);
+
+ /** Upload local en (source) file in order to add new keys and deprecate unused keys. */
+ await uploadLocal(projectId, 'en');
+
+ /** Download updated de file. */
+ await updateLocalDe(projectId, fileId);
+}
+
+async function uploadLocals() {
+ const projectId = await getProjectId();
+ await uploadLocal(projectId, 'de');
+}
+
+async function downloadDe() {
+ const projectId = await getProjectId();
+ const fileId = await getFileId(projectId);
+
+ console.log({ projectId, fileId });
+ console.log(await downloadLanguage(projectId, fileId, 'de'));
+}
+
+execute().then();
+// uploadLocals().then();
+// downloadDe().then();
diff --git a/tools/localazy/src/utils.ts b/tools/localazy/src/utils.ts
new file mode 100644
index 000000000..053be0303
--- /dev/null
+++ b/tools/localazy/src/utils.ts
@@ -0,0 +1,16 @@
+export function get(object: any, path: string[]): any {
+ return path.reduce((o, k) => (o || {})[k], object);
+}
+
+export function set(object: any, path: string[], value: any): void {
+ path.reduce((o, k, i) => {
+ if (i === path.length - 1) {
+ o[k] = value;
+ } else {
+ if (o[k] === undefined) {
+ o[k] = {};
+ }
+ }
+ return o[k];
+ }, object);
+}
diff --git a/tools/localazy/tsconfig.json b/tools/localazy/tsconfig.json
new file mode 100644
index 000000000..b7593cf3e
--- /dev/null
+++ b/tools/localazy/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "module": "commonjs",
+ "lib": ["es6", "DOM"],
+ "outDir": "build",
+ "strict": true,
+ "noImplicitAny": true,
+ "esModuleInterop": true,
+ "resolveJsonModule": true
+ }
+}
diff --git a/yarn.lock b/yarn.lock
index 0c12bb2d7..da1f14aea 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2494,6 +2494,11 @@
resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
+"@localazy/ts-api@^1.0.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@localazy/ts-api/-/ts-api-1.1.0.tgz#e36edbea775fa950a6dcd54693686ed63fa67218"
+ integrity sha512-0iLFWRxmKPkuruASye4A6CQoYMDGLqQmPLS76zKhPywwNTc89oIlaWrkl63c2EP70NzHxKu6BnpmJAjqFSeXrg==
+
"@materia-ui/ngx-monaco-editor@^6.0.0":
version "6.0.0"
resolved "https://registry.yarnpkg.com/@materia-ui/ngx-monaco-editor/-/ngx-monaco-editor-6.0.0.tgz#9ae93666019e9a6d4f787370b4373cbb63a04a38"