RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design

This commit is contained in:
Valentin Mihai 2024-10-08 00:51:21 +03:00
parent 2377fbff55
commit 76d329b888
15 changed files with 598 additions and 278 deletions

View File

@ -18,6 +18,7 @@
<iqser-details-radio
*ngIf="!isImage && annotations.length === 1"
[options]="options"
(extraOptionChanged)="extraOptionChanged($event)"
formControlName="option"
></iqser-details-radio>

View File

@ -25,10 +25,19 @@ import {
SelectedAnnotationsTableComponent,
ValueColumn,
} from '../../components/selected-annotations-table/selected-annotations-table.component';
import { getEditRedactionOptions } from '../../utils/dialog-options';
import { EditRedactionData, EditRedactionOption, EditRedactResult, LegalBasisOption } from '../../utils/dialog-types';
import { getEditRedactionOptions, getRectangleRedactOptions } from '../../utils/dialog-options';
import {
EditRedactionData,
EditRedactionOption,
EditRedactResult,
LegalBasisOption,
RectangleRedactOption,
RectangleRedactOptions,
} from '../../utils/dialog-types';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { validatePageRange } from '../../utils/form-validators';
import { parseRectanglePosition, parseSelectedPageNumbers } from '../../utils/enhance-manual-redaction-request.utils';
interface TypeSelectOptions {
type: string;
@ -79,7 +88,7 @@ export class EditRedactionDialogComponent
{ label: redaction.value, bold: true },
{ label: redaction.typeLabel },
]);
options = getEditRedactionOptions();
options = this.allRectangles ? getRectangleRedactOptions('edit') : getEditRedactionOptions();
legalOptions: LegalBasisOption[] = [];
dictionaries: Dictionary[] = [];
typeSelectOptions: TypeSelectOptions[] = [];
@ -96,6 +105,14 @@ export class EditRedactionDialogComponent
super();
}
extraOptionChanged(option: DetailsRadioOption<EditRedactionOption | RectangleRedactOption>): void {
if (option.value === RectangleRedactOptions.MULTIPLE_PAGES) {
setTimeout(() => {
this.form.get('option')?.updateValueAndValidity();
}, 0);
}
}
get displayedDictionaryLabel() {
const selectedDictionaryType = this.form.controls.type.value;
if (selectedDictionaryType) {
@ -188,6 +205,13 @@ export class EditRedactionDialogComponent
const value = this.form.value;
const initialReason: LegalBasisOption = this.initialFormValue.reason;
const initialLegalBasis = initialReason?.legalBasis ?? '';
const pageNumbers = parseSelectedPageNumbers(
this.form.get('option').value.additionalInput?.value,
this.data.file,
this.data.annotations[0],
);
const position = parseRectanglePosition(this.annotations[0]);
this.close({
legalBasis: value.reason?.legalBasis ?? (this.isImage ? initialLegalBasis : ''),
section: value.section,
@ -195,6 +219,8 @@ export class EditRedactionDialogComponent
type: value.type,
value: this.allRectangles ? value.value : null,
option: value.option.value,
position,
pageNumbers,
});
}
@ -229,7 +255,7 @@ export class EditRedactionDialogComponent
disabled: this.isImported,
}),
section: new FormControl<string>({ value: sameSection ? this.annotations[0].section : null, disabled: this.isImported }),
option: new FormControl<DetailsRadioOption<EditRedactionOption>>(this.options[0]),
option: new FormControl<DetailsRadioOption<EditRedactionOption | RectangleRedactOption>>(this.options[0], validatePageRange()),
value: new FormControl<string>(this.allRectangles ? this.annotations[0].value : null),
});
}

View File

@ -9,8 +9,7 @@ import {
IqserDialogComponent,
Toaster,
} from '@iqser/common-ui';
import { ManualRedactionEntryWrapper } from '@models/file/manual-redaction-entry.wrapper';
import { Dossier, File, IAddRedactionRequest, IManualRedactionEntry, SuperTypes } from '@red/domain';
import { Dossier, IAddRedactionRequest, SuperTypes } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { JustificationsService } from '@services/entity-services/justifications.service';
import { Roles } from '@users/roles';
@ -23,21 +22,17 @@ import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select
import { MatTooltip } from '@angular/material/tooltip';
import { MatCheckbox } from '@angular/material/checkbox';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { LegalBasisOption, RectangleRedactOption, RectangleRedactOptions } from '../../utils/dialog-types';
import {
LegalBasisOption,
RectangleDialogData,
RectangleDialogResult,
RectangleRedactOption,
RectangleRedactOptions,
} from '../../utils/dialog-types';
import { getRectangleRedactOptions } from '../../utils/dialog-options';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { SystemDefaults } from '../../../account/utils/dialog-defaults';
import { validatePageRange } from '../../utils/form-validators';
import { getMultiplePagesRectangle } from '../../utils/enhance-manual-redaction-request.utils';
interface RectangleDialogData {
dossierId: string;
manualRedactionEntryWrapper: ManualRedactionEntryWrapper;
file: File;
}
export interface RectangleDialogResult {
annotation: IManualRedactionEntry;
}
export const NON_READABLE_CONTENT = 'non-readable content';
@ -116,7 +111,7 @@ export class RectangleAnnotationDialog
try {
const annotation = (
this.form.get('option').value.value === RectangleRedactOptions.MULTIPLE_PAGES
? getMultiplePagesRectangle(this.#multiplePagesRectangleData)
? this.#multiplePagesRectangle
: this.data.manualRedactionEntryWrapper
).manualRedactionEntry;
super.close({
@ -127,14 +122,6 @@ export class RectangleAnnotationDialog
}
}
get #multiplePagesRectangleData() {
return {
manualRedactionEntryWrapper: this.data.manualRedactionEntryWrapper,
pages: this.form.get('option').value.additionalInput.value,
file: this.data.file,
};
}
#getForm() {
return this._formBuilder.group({
selectedText: this.data?.manualRedactionEntryWrapper?.manualRedactionEntry?.value,
@ -165,6 +152,34 @@ export class RectangleAnnotationDialog
return this.options.find(o => o.value === option);
}
get #multiplePagesRectangle() {
const value: string = this.form.get('option').value.additionalInput.value.replace(/[^0-9-,]/g, '');
const entry = { ...this.data.manualRedactionEntryWrapper.manualRedactionEntry, pageNumbers: [] };
const wrapper = {
...this.data.manualRedactionEntryWrapper,
manualRedactionEntry: entry,
};
value.split(',').forEach(range => {
const splitted = range.split('-');
const startPage = parseInt(splitted[0], 10);
const endPage = splitted.length > 1 ? parseInt(splitted[1], 10) : startPage;
if (!startPage || !endPage || startPage > this.data.file.numberOfPages || endPage > this.data.file.numberOfPages) {
throw new Error();
}
for (let page = startPage; page <= endPage; page++) {
if (page === wrapper.manualRedactionEntry.positions[0].page) {
continue;
}
wrapper.manualRedactionEntry.pageNumbers.push(page);
}
});
return wrapper;
}
#selectReason() {
if (this.legalOptions.length === 1) {
this.form.get('reason').setValue(this.legalOptions[0]);

View File

@ -14,7 +14,11 @@
></redaction-selected-annotations-table>
</div>
<iqser-details-radio [options]="options" formControlName="option"></iqser-details-radio>
<iqser-details-radio
(extraOptionChanged)="extraOptionChanged($event)"
[options]="options"
formControlName="option"
></iqser-details-radio>
<div class="iqser-input-group w-450">
<label [translate]="'remove-redaction.dialog.content.comment'"></label>
@ -31,6 +35,7 @@
<div class="dialog-actions">
<iqser-icon-button
[disabled]="disabled"
[label]="'remove-redaction.dialog.actions.save' | translate"
[submit]="true"
[type]="iconButtonTypes.primary"

View File

@ -24,14 +24,19 @@ import {
SelectedAnnotationsTableComponent,
ValueColumn,
} from '../../components/selected-annotations-table/selected-annotations-table.component';
import { getRemoveRedactionOptions } from '../../utils/dialog-options';
import { getRectangleRedactOptions, getRemoveRedactionOptions } from '../../utils/dialog-options';
import {
EditRedactionOption,
RectangleRedactOption,
RectangleRedactOptions,
RemoveRedactionData,
RemoveRedactionOption,
RemoveRedactionOptions,
RemoveRedactionResult,
ResizeOptions,
} from '../../utils/dialog-types';
import { validatePageRange } from '../../utils/form-validators';
import { parseRectanglePosition, parseSelectedPageNumbers } from '../../utils/enhance-manual-redaction-request.utils';
@Component({
templateUrl: './remove-redaction-dialog.component.html',
@ -89,6 +94,7 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
extra: false,
},
};
readonly #allRectangles = this.data.redactions.reduce((acc, a) => acc && a.AREA, true);
readonly #applyToAllDossiers = this.systemDefaultByType[this.annotationsType].extra;
readonly isSystemDefault = this.optionByType[this.annotationsType].main === SystemDefaultOption.SYSTEM_DEFAULT;
readonly isExtraOptionSystemDefault = this.optionByType[this.annotationsType].extra === 'undefined';
@ -96,15 +102,17 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
? this.systemDefaultByType[this.annotationsType].main
: this.optionByType[this.annotationsType].main;
readonly extraOptionPreference = stringToBoolean(this.optionByType[this.annotationsType].extra);
readonly options: DetailsRadioOption<RemoveRedactionOption>[] = getRemoveRedactionOptions(
this.data,
this.isSystemDefault || this.isExtraOptionSystemDefault ? this.#applyToAllDossiers : this.extraOptionPreference,
);
readonly options: DetailsRadioOption<RectangleRedactOption | RemoveRedactionOption>[] = this.#allRectangles
? getRectangleRedactOptions('remove')
: getRemoveRedactionOptions(
this.data,
this.isSystemDefault || this.isExtraOptionSystemDefault ? this.#applyToAllDossiers : this.extraOptionPreference,
);
readonly skipped = this.data.redactions.some(annotation => annotation.isSkipped);
readonly redactedTexts = this.data.redactions.map(annotation => annotation.value);
form: UntypedFormGroup = this._formBuilder.group({
comment: [null],
option: [this.defaultOption],
option: [this.defaultOption, validatePageRange()],
});
readonly selectedOption = toSignal(this.form.get('option').valueChanges.pipe(map(value => value.value)));
@ -160,14 +168,31 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
return this.options.length * 75 + 230;
}
extraOptionChanged(option: DetailsRadioOption<RemoveRedactionOption | RectangleRedactOption>): void {
if (option.value === RectangleRedactOptions.MULTIPLE_PAGES) {
setTimeout(() => {
this.form.get('option')?.updateValueAndValidity();
}, 0);
}
}
save(): void {
const pageNumbers = parseSelectedPageNumbers(
this.form.get('option').value.additionalInput?.value,
this.data.file,
this.data.redactions[0],
);
const position = parseRectanglePosition(this.data.redactions[0]);
this.close({
...this.form.getRawValue(),
bulkLocal: this.form.controls.option.value.value === ResizeOptions.IN_DOCUMENT,
pageNumbers,
position,
});
}
#getOption(option: RemoveRedactionOption): DetailsRadioOption<RemoveRedactionOption> {
#getOption(option: RemoveRedactionOption): DetailsRadioOption<RectangleRedactOption | RemoveRedactionOption> {
return this.options.find(o => o.value === option);
}
}

View File

@ -35,7 +35,9 @@ import {
EditRedactionData,
EditRedactResult,
ForceAnnotationOptions,
RectangleRedactOptions,
RedactOrHintOptions,
RedactRecommendationData,
RemoveRedactionData,
RemoveRedactionOptions,
RemoveRedactionPermissions,
@ -49,6 +51,7 @@ import { FilePreviewStateService } from './file-preview-state.service';
import { ManualRedactionService } from './manual-redaction.service';
import { SkippedService } from './skipped.service';
import { NON_READABLE_CONTENT } from '../dialogs/rectangle-annotation-dialog/rectangle-annotation-dialog.component';
import { result } from 'lodash-es';
@Injectable()
export class AnnotationActionsService {
@ -110,11 +113,12 @@ export class AnnotationActionsService {
}
async editRedaction(annotations: AnnotationWrapper[]) {
const { dossierId, fileId } = this._state;
const { dossierId, file } = this._state;
const includeUnprocessed = annotations.every(annotation => this.#includeUnprocessed(annotation, true));
const data = {
annotations,
dossierId,
file: file(),
};
const result = await this.#getEditRedactionDialog(data).result();
@ -124,7 +128,7 @@ export class AnnotationActionsService {
let recategorizeBody: List<IRecategorizationRequest> | IBulkRecategorizationRequest;
if (result.option === RedactOrHintOptions.ONLY_HERE) {
if (result.option === RedactOrHintOptions.ONLY_HERE || result.option === RectangleRedactOptions.ONLY_THIS_PAGE) {
recategorizeBody = annotations.map(annotation => {
const body: IRecategorizationRequest = {
annotationId: annotation.id,
@ -151,7 +155,9 @@ export class AnnotationActionsService {
section: result.section,
originTypes,
originLegalBases,
rectangle: false,
rectangle: annotations[0].AREA,
pageNumbers: result.pageNumbers,
position: result.position,
};
}
@ -160,10 +166,10 @@ export class AnnotationActionsService {
.recategorizeRedactions(
recategorizeBody,
dossierId,
fileId,
file().id,
this.#getChangedFields(annotations, result),
includeUnprocessed,
result.option === RedactOrHintOptions.IN_DOCUMENT,
result.option === RedactOrHintOptions.IN_DOCUMENT || !!result.pageNumbers.length,
)
.pipe(log()),
);
@ -177,9 +183,11 @@ export class AnnotationActionsService {
};
const dossierTemplate = this._dossierTemplatesService.find(this._state.dossierTemplateId);
const isApprover = this._permissionsService.isApprover(this._state.dossier());
const { file } = this._state;
const data = {
redactions,
file: file(),
dossier: this._state.dossier(),
falsePositiveContext: redactions.map(r => this.#getFalsePositiveText(r)),
permissions: removePermissions,
@ -217,7 +225,7 @@ export class AnnotationActionsService {
async convertRecommendationToAnnotation(recommendations: AnnotationWrapper[]) {
const { dossierId, fileId } = this._state;
const data = this.#getRedactRecommendationDialogData(recommendations);
const data = this.#getRedactRecommendationDialogData(recommendations) as RedactRecommendationData;
const dialog = this._iqserDialog.openDefault(RedactRecommendationDialogComponent, { data });
const result = await dialog.result();
if (!result) {
@ -508,7 +516,7 @@ export class AnnotationActionsService {
removeFromDictionary,
isHint,
includeUnprocessed,
dialogResult.bulkLocal,
dialogResult.bulkLocal || !!dialogResult.pageNumbers.length,
),
).then();
}
@ -584,15 +592,15 @@ export class AnnotationActionsService {
redactions: AnnotationWrapper[],
dialogResult: RemoveRedactionResult,
): List<IRemoveRedactionRequest> | IBulkLocalRemoveRequest {
if (dialogResult.bulkLocal) {
if (dialogResult.bulkLocal || !!dialogResult.pageNumbers.length) {
const redaction = redactions[0];
if (redaction.value === NON_READABLE_CONTENT) {
return {
value: redaction.value,
rectangle: true,
position: redaction.entry.positions[0],
originTypes: [redaction.entry.type],
pageNumbers: [redaction.pageNumber],
pageNumbers: dialogResult.pageNumbers,
position: dialogResult.position,
};
}

View File

@ -19,7 +19,11 @@ import {
ResizeOptions,
ResizeRedactionOption,
} from './dialog-types';
import { rectangleRedactTranslations } from '@translations/rectangle-redact-translations';
import {
editRectangleTranslations,
rectangleRedactTranslations,
removeRectangleTranslations,
} from '@translations/rectangle-redact-translations';
const PIN_ICON = 'red:push-pin';
const DOCUMENT_ICON = 'iqser:document';
@ -94,23 +98,25 @@ export const getRedactOrHintOptions = (
return options;
};
export const getRectangleRedactOptions = (): DetailsRadioOption<RectangleRedactOption>[] => {
export const getRectangleRedactOptions = (action: 'add' | 'edit' | 'remove' = 'add'): DetailsRadioOption<RectangleRedactOption>[] => {
const translations =
action === 'add' ? rectangleRedactTranslations : action === 'edit' ? editRectangleTranslations : removeRectangleTranslations;
return [
{
label: rectangleRedactTranslations.onlyThisPage.label,
description: rectangleRedactTranslations.onlyThisPage.description,
label: translations.onlyThisPage.label,
description: translations.onlyThisPage.description,
icon: PIN_ICON,
value: RectangleRedactOptions.ONLY_THIS_PAGE,
},
{
label: rectangleRedactTranslations.multiplePages.label,
description: rectangleRedactTranslations.multiplePages.description,
label: translations.multiplePages.label,
description: translations.multiplePages.description,
icon: DOCUMENT_ICON,
value: RectangleRedactOptions.MULTIPLE_PAGES,
additionalInput: {
label: rectangleRedactTranslations.multiplePages.extraOptionLabel,
description: rectangleRedactTranslations.multiplePages.extraOptionDescription,
placeholder: rectangleRedactTranslations.multiplePages.extraOptionPlaceholder,
label: translations.multiplePages.extraOptionLabel,
description: translations.multiplePages.extraOptionDescription,
placeholder: translations.multiplePages.extraOptionPlaceholder,
value: '',
},
},

View File

@ -1,7 +1,7 @@
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { ManualRedactionEntryWrapper } from '@models/file/manual-redaction-entry.wrapper';
import { Dictionary, Dossier, File, IAddRedactionRequest, IManualRedactionEntry } from '@red/domain';
import { Dictionary, Dossier, File, IAddRedactionRequest, IEntityLogEntryPosition, IManualRedactionEntry } from '@red/domain';
export const EditRedactionOptions = {
ONLY_HERE: 'ONLY_HERE',
@ -65,6 +65,7 @@ export interface RedactTextData {
export interface EditRedactionData {
annotations: AnnotationWrapper[];
dossierId: string;
file: File;
isApprover?: boolean;
}
@ -93,7 +94,9 @@ export interface EditRedactResult {
comment: string;
type: string;
value: string;
option: EditRedactionOption;
option: EditRedactionOption | RectangleRedactOption;
position: IEntityLogEntryPosition;
pageNumbers?: number[];
}
export type AddHintResult = RedactTextResult;
@ -133,6 +136,7 @@ export interface RemoveRedactionPermissions {
export interface RemoveRedactionData {
redactions: AnnotationWrapper[];
dossier: Dossier;
file?: File;
falsePositiveContext: string[];
permissions: RemoveRedactionPermissions;
applyToAllDossiers: boolean;
@ -146,6 +150,17 @@ export interface RemoveRedactionResult {
option: DetailsRadioOption<RemoveRedactionOption>;
applyToAllDossiers?: boolean;
bulkLocal?: boolean;
pageNumbers?: number[];
position: IEntityLogEntryPosition;
}
export type RemoveAnnotationResult = RemoveRedactionResult;
export interface RectangleDialogData {
dossierId: string;
manualRedactionEntryWrapper: ManualRedactionEntryWrapper;
file: File;
}
export interface RectangleDialogResult {
annotation: IManualRedactionEntry;
}

View File

@ -1,6 +1,7 @@
import { Dictionary, File, IAddRedactionRequest, SuperType } from '@red/domain';
import { Dictionary, File, IAddRedactionRequest, IEntityLogEntryPosition, SuperType } from '@red/domain';
import { ManualRedactionEntryWrapper } from '@models/file/manual-redaction-entry.wrapper';
import { LegalBasisOption } from './dialog-types';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
export interface EnhanceRequestData {
readonly type: SuperType | null;
@ -46,30 +47,41 @@ export const enhanceManualRedactionRequest = (addRedactionRequest: IAddRedaction
addRedactionRequest.addToAllDossiers = data.isApprover && data.dictionaryRequest && data.applyToAllDossiers;
};
export const getMultiplePagesRectangle = (data: MultiplePagesRectangleData) => {
const value: string = data.pages.replace(/[^0-9-,]/g, '');
const entry = { ...data.manualRedactionEntryWrapper.manualRedactionEntry, pageNumbers: [] };
const wrapper = {
...data.manualRedactionEntryWrapper,
manualRedactionEntry: entry,
};
export const parseSelectedPageNumbers = (inputValue: string, file: File, annotation: AnnotationWrapper) => {
if (!inputValue) {
return [];
}
value.split(',').forEach(range => {
inputValue = inputValue.replace(/[^0-9-,]/g, '');
const pageNumbers = [];
inputValue.split(',').forEach(range => {
const splitted = range.split('-');
const startPage = parseInt(splitted[0], 10);
const endPage = splitted.length > 1 ? parseInt(splitted[1], 10) : startPage;
if (!startPage || !endPage || startPage > data.file.numberOfPages || endPage > data.file.numberOfPages) {
if (!startPage || !endPage || startPage > file.numberOfPages || endPage > file.numberOfPages) {
throw new Error();
}
for (let page = startPage; page <= endPage; page++) {
if (page === wrapper.manualRedactionEntry.positions[0].page) {
if (page === annotation.positions[0].page) {
continue;
}
wrapper.manualRedactionEntry.pageNumbers.push(page);
pageNumbers.push(page);
}
});
return wrapper;
return pageNumbers;
};
export const parseRectanglePosition = (annotation: AnnotationWrapper) => {
if (annotation.AREA) {
const position = annotation.positions[0];
return {
rectangle: [position.topLeft.x, position.topLeft.y, position.width, position.height],
pageNumber: position.page,
} as IEntityLogEntryPosition;
}
return null;
};

View File

@ -14,3 +14,31 @@ export const rectangleRedactTranslations: Record<'onlyThisPage' | 'multiplePages
extraOptionPlaceholder: _('manual-annotation.dialog.content.options.multiple-pages.extraOptionPlaceholder'),
},
} as const;
export const editRectangleTranslations: Record<'onlyThisPage' | 'multiplePages', DialogOption> = {
onlyThisPage: {
label: _('edit-rectangle.dialog.content.options.only-this-page.label'),
description: _('edit-rectangle.dialog.content.options.only-this-page.description'),
},
multiplePages: {
label: _('edit-rectangle.dialog.content.options.multiple-pages.label'),
description: _('edit-rectangle.dialog.content.options.multiple-pages.description'),
extraOptionLabel: _('edit-rectangle.dialog.content.options.multiple-pages.extraOptionLabel'),
extraOptionDescription: _('edit-rectangle.dialog.content.options.multiple-pages.extraOptionDescription'),
extraOptionPlaceholder: _('edit-rectangle.dialog.content.options.multiple-pages.extraOptionPlaceholder'),
},
} as const;
export const removeRectangleTranslations: Record<'onlyThisPage' | 'multiplePages', DialogOption> = {
onlyThisPage: {
label: _('remove-rectangle.dialog.content.options.only-this-page.label'),
description: _('remove-rectangle.dialog.content.options.only-this-page.description'),
},
multiplePages: {
label: _('remove-rectangle.dialog.content.options.multiple-pages.label'),
description: _('remove-rectangle.dialog.content.options.multiple-pages.description'),
extraOptionLabel: _('remove-rectangle.dialog.content.options.multiple-pages.extraOptionLabel'),
extraOptionDescription: _('remove-rectangle.dialog.content.options.multiple-pages.extraOptionDescription'),
extraOptionPlaceholder: _('remove-rectangle.dialog.content.options.multiple-pages.extraOptionPlaceholder'),
},
} as const;

View File

@ -243,7 +243,8 @@
}
},
"type": "Typ",
"type-placeholder": "Typ auswählen..."
"type-placeholder": "Typ auswählen...",
"value": ""
},
"title": "Hinweis hinzufügen"
}
@ -275,9 +276,6 @@
"watermarks": "Wasserzeichen"
},
"analysis-disabled": "",
"annotation": {
"pending": "(Analyse steht aus)"
},
"annotation-actions": {
"accept-recommendation": {
"label": "Empfehlung annehmen"
@ -333,14 +331,14 @@
"error": "Rekategorisierung des Bilds fehlgeschlagen: {error}",
"success": "Bild wurde einer neuen Kategorie zugeordnet."
},
"remove": {
"error": "Entfernen der Schwärzung fehlgeschlagen: {error}",
"success": "Schwärzung wurde entfernt"
},
"remove-hint": {
"error": "Entfernen des Hinweises fehlgeschlagen: {error}",
"success": "Hinweis wurde entfernt"
},
"remove": {
"error": "Entfernen der Schwärzung fehlgeschlagen: {error}",
"success": "Schwärzung wurde entfernt"
},
"undo": {
"error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}",
"success": "Rücksetzung erfolgreich"
@ -353,15 +351,15 @@
"remove-highlights": {
"label": "Ausgewählte Markierungen entfernen"
},
"resize": {
"label": "Größe ändern"
},
"resize-accept": {
"label": "Neue Größe speichern"
},
"resize-cancel": {
"label": "Größenänderung abbrechen"
},
"resize": {
"label": "Größe ändern"
},
"see-references": {
"label": "Referenzen anzeigen"
},
@ -378,6 +376,7 @@
"removed-manual": "Schwärzung/Hinweis wurde entfernt",
"resized": "Schwärzungsbereich wurde geändert"
},
"annotation-content": "",
"annotation-engines": {
"dictionary": "Basiert auf Wörterbuch",
"dossier-dictionary": "Basiert auf Dossier-Wörterbuch",
@ -395,6 +394,9 @@
"skipped": "Ignorierte Schwärzung",
"text-highlight": "Markierung"
},
"annotation": {
"pending": "(Analyse steht aus)"
},
"annotations": "Annotationen",
"archived-dossiers-listing": {
"no-data": {
@ -1018,13 +1020,13 @@
"recent": "Neu ({hours} h)",
"unassigned": "Keinem Bearbeiter zugewiesen"
},
"reanalyse": {
"action": "Datei analysieren"
},
"reanalyse-dossier": {
"error": "Einplanung der Dateien für die Reanalyse fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
"success": "Dateien für Reanalyse vorgesehen."
},
"reanalyse": {
"action": "Datei analysieren"
},
"report-download": "",
"start-auto-analysis": "Auto-Analyse aktivieren",
"stop-auto-analysis": "Auto-Analyse anhalten",
@ -1094,14 +1096,6 @@
"total-documents": "Dokumente",
"total-people": "<strong>{count}</strong> {count, plural, one{Benutzer} other {Benutzer}}"
},
"dossier-templates": {
"label": "Dossier-Vorlagen",
"status": {
"active": "Aktiv",
"inactive": "Inaktiv",
"incomplete": "Unvollständig"
}
},
"dossier-templates-listing": {
"action": {
"clone": "Vorlage klonen",
@ -1136,6 +1130,14 @@
"title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}"
}
},
"dossier-templates": {
"label": "Dossier-Vorlagen",
"status": {
"active": "Aktiv",
"inactive": "Inaktiv",
"incomplete": "Unvollständig"
}
},
"dossier-watermark-selector": {
"heading": "Wasserzeichen auf Dokumenten",
"no-watermark": "Kein Wasserzeichen in der Dossier-Vorlage verfügbar:<br>Bitten Sie Ihren Admin, eines zu konfigurieren.",
@ -1233,10 +1235,8 @@
"save": "Speichern",
"title": "{label} bearbeiten"
},
"entries": "{length} {length, plural, one{Eintrag} other{Einträge}}",
"false-positive-entries": "{length} {length, plural, one{Falsch-Positiver} other{Falsch-Positive}}",
"entries-count": "",
"false-positives": "Falsch-Positive",
"false-recommendation-entries": "{length} {length, plural, one{falsche Empfehlung} other{falsche Empfehlungen}}",
"false-recommendations": "Falsche Empfehlungen",
"to-redact": "Schwärzungen"
},
@ -1273,6 +1273,25 @@
},
"side-nav-title": "Konfiguration"
},
"edit-rectangle": {
"dialog": {
"content": {
"options": {
"multiple-pages": {
"description": "",
"extraOptionDescription": "",
"extraOptionLabel": "",
"extraOptionPlaceholder": "",
"label": ""
},
"only-this-page": {
"description": "",
"label": ""
}
}
}
}
},
"edit-redaction": {
"dialog": {
"actions": {
@ -1282,14 +1301,11 @@
"content": {
"comment": "Kommentar",
"comment-placeholder": "Bemerkungen oder Notizen hinzufügen...",
"custom-rectangle": "Bereichsschwärzung",
"imported": "Importierte Schwärzung",
"legal-basis": "Rechtsgrundlage",
"options": {
"in-dossier": {
"description": "Schwärzung in jedem Dokument in {dossierName} bearbeiten.",
"extraOptionLabel": "In alle aktiven und zukünftigen Dossiers übernehmen",
"label": "Typ in Dossier ändern"
"in-document": {
"description": "",
"label": ""
},
"only-here": {
"description": "Bearbeiten Sie die Schwärzung nur an dieser Stelle im Dokument.",
@ -1332,15 +1348,6 @@
"title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}"
}
},
"entity": {
"info": {
"actions": {
"revert": "Zurücksetzen",
"save": "Änderungen speichern"
},
"heading": "Entität bearbeiten"
}
},
"entity-rules-screen": {
"error": {
"generic": "Fehler: Aktualisierung der Entitätsregeln fehlgeschlagen."
@ -1354,19 +1361,28 @@
"title": "Entitätsregeln-Editor",
"warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} in Regeln gefunden"
},
"entity": {
"info": {
"actions": {
"revert": "Zurücksetzen",
"save": "Änderungen speichern"
},
"heading": "Entität bearbeiten"
}
},
"error": {
"deleted-entity": {
"dossier": {
"action": "Zurück zur Übersicht",
"label": "Dieses Dossier 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": {
"action": "Zurück zum Dossier",
"label": "Diese Datei wurde gelöscht!"
}
},
"file-preview": {
@ -1384,12 +1400,6 @@
},
"exact-date": "{day}. {month} {year} um {hour}:{minute} Uhr",
"file": "Datei",
"file-attribute": {
"update": {
"error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
"success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert."
}
},
"file-attribute-encoding-types": {
"ascii": "ASCII",
"iso": "ISO-8859-1",
@ -1400,6 +1410,12 @@
"number": "Nummer",
"text": "Freier Text"
},
"file-attribute": {
"update": {
"error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
"success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert."
}
},
"file-attributes-configurations": {
"cancel": "Abbrechen",
"form": {
@ -1617,15 +1633,6 @@
"csv": "Die Datei-Attribute wurden erfolgreich aus der hochgeladenen CSV-Datei importiert."
}
},
"filter": {
"analysis": "Analyse erforderlich",
"comment": "Kommentare",
"hint": "Nur Hinweise",
"image": "Bilder",
"none": "Keine Annotationen",
"redaction": "Schwärzung",
"updated": "Aktualisiert"
},
"filter-menu": {
"filter-options": "Filteroptionen",
"filter-types": "Filter",
@ -1635,6 +1642,15 @@
"unseen-pages": "Nur Annotationen auf ungesehenen Seiten",
"with-comments": "Nur Annotationen mit Kommentaren"
},
"filter": {
"analysis": "Analyse erforderlich",
"comment": "Kommentare",
"hint": "Nur Hinweise",
"image": "Bilder",
"none": "Keine Annotationen",
"redaction": "Schwärzung",
"updated": "Aktualisiert"
},
"filters": {
"assigned-people": "Bearbeiter",
"documents-status": "Dokumentenstatus",
@ -1868,13 +1884,8 @@
"save": "Speichern"
},
"content": {
"apply-on-multiple-pages": "Auf mehreren Seiten anwenden",
"apply-on-multiple-pages-hint": "Minus (-) für Bereich und Komma (,) für Aufzählung.",
"apply-on-multiple-pages-placeholder": "z. B. 1-20,22,32",
"classification": "Wert / Klassifizierung",
"comment": "Kommentar",
"dictionary": "Wörterbuch",
"edit-selected-text": "Ausgewählten Text bearbeiten",
"legalBasis": "Rechtsgrundlage",
"options": {
"multiple-pages": {
@ -1891,10 +1902,7 @@
},
"reason": "Grund",
"reason-placeholder": "Grund auswählen...",
"rectangle": "Bereichsschwärzung",
"section": "Absatz / Textstelle",
"text": "Ausgewählter Text:",
"type": "Entität"
"section": "Absatz / Textstelle"
},
"error": "Fehler: Ungültige Seitenauswahl",
"header": {
@ -1926,13 +1934,6 @@
"user-promoted-to-approver": "<b>{user}</b> wurde im Dossier <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> zum Genehmiger ernannt!",
"user-removed-as-dossier-member": "<b>{user}</b> wurde als Mitglied von: <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> entfernt!"
},
"notifications": {
"button-text": "Benachrichtigungen",
"deleted-dossier": "Gelöschtes Dossier",
"label": "Benachrichtigungen",
"mark-all-as-read": "Alle als gelesen markieren",
"mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren"
},
"notifications-screen": {
"category": {
"email-notifications": "E-Mail-Benachrichtigungen",
@ -1946,6 +1947,7 @@
"dossier": "Benachrichtigungen zu Dossiers",
"other": "Andere Benachrichtigungen"
},
"options-title": "Wählen Sie aus, bei welchen Aktivitäten Sie benachrichtigt werden möchten",
"options": {
"ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen werde",
"ASSIGN_REVIEWER": "Wenn ich einem Dokument als Prüfer zugewiesen werde",
@ -1963,7 +1965,6 @@
"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, bei welchen Aktivitäten Sie benachrichtigt werden möchten",
"schedule": {
"daily": "Tägliche Zusammenfassung",
"instant": "Sofort",
@ -1971,6 +1972,13 @@
},
"title": "Benachrichtigungseinstellungen"
},
"notifications": {
"button-text": "Benachrichtigungen",
"deleted-dossier": "Gelöschtes Dossier",
"label": "Benachrichtigungen",
"mark-all-as-read": "Alle als gelesen markieren",
"mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren"
},
"ocr": {
"confirmation-dialog": {
"cancel": "Abbrechen",
@ -2017,14 +2025,34 @@
"previous": "Vorherige"
},
"pdf-viewer": {
"header": {
"all-annotations-loaded": "",
"compare-button": "",
"layers-panel-button": "",
"left-panel-button": "",
"load-all-annotations": "",
"no-outlines-text": "",
"no-signatures-text": "",
"outline-multi-select": "",
"outlines-panel-button": "",
"pan-tool-button": "",
"rectangle-tool-button": "",
"rotate-left-button": "",
"rotate-right-button": "",
"select-tool-button": "",
"signature-panel-button": "",
"thumbnails-panel-button": "",
"toggle-layers": "",
"toggle-readable-redactions": "",
"toggle-tooltips": "",
"zoom-in-button": "",
"zoom-out-button": ""
},
"text-popup": {
"actions": {
"search": "Ausgewählten Text suchen"
}
},
"toggle-layers": "Layout-Raster {active, select, true{deaktivieren} false{aktivieren} other{}}",
"toggle-readable-redactions": "Schwärzungen {active, select, true{wie im finalen Dokument} false{in Vorschau-Farbe} other{}} anzeigen",
"toggle-tooltips": "Tooltips zu Annotationen {active, select, true{deaktivieren} false{aktivieren} other{}}"
}
},
"permissions-screen": {
"dossier": {
@ -2062,16 +2090,16 @@
"warnings-label": "Dialoge und Meldungen",
"warnings-subtitle": "„Nicht mehr anzeigen“-Optionen"
},
"processing": {
"basic": "Verarbeitung läuft",
"ocr": "OCR"
},
"processing-status": {
"ocr": "OCR",
"pending": "Ausstehend",
"processed": "Verarbeitet",
"processing": "Verarbeitung läuft"
},
"processing": {
"basic": "Verarbeitung läuft",
"ocr": "OCR"
},
"readonly": "Lesemodus",
"readonly-archived": "Lesemodus (archiviert)",
"redact-text": {
@ -2086,6 +2114,10 @@
"edit-text": "Text bearbeiten",
"legal-basis": "Rechtsgrundlage",
"options": {
"in-document": {
"description": "",
"label": ""
},
"in-dossier": {
"description": "Fügen Sie die Schwärzung zu jedem Dokument in {dossierName} hinzu.",
"extraOptionLabel": "In alle aktiven und zukünftigen Dossiers übernehmen",
@ -2101,7 +2133,8 @@
"revert-text": "Zurück zu ursprünglicher Auswahl",
"type": "Typ",
"type-placeholder": "Typ auswählen...",
"unchanged": "Ungeändert"
"unchanged": "Ungeändert",
"value": ""
},
"title": "Text schwärzen"
}
@ -2125,6 +2158,10 @@
"description-bulk": "",
"label": "In diesem Kontext aus dem Dossier entfernen"
},
"in-document": {
"description": "",
"label": ""
},
"in-dossier": {
"description": "Annotieren Sie den Begriff in diesem Dossier nicht.",
"description-bulk": "",
@ -2142,6 +2179,25 @@
"title": "{count, plural, one{Annotation} other {Annotationen}} entfernen"
}
},
"remove-rectangle": {
"dialog": {
"content": {
"options": {
"multiple-pages": {
"description": "",
"extraOptionDescription": "",
"extraOptionLabel": "",
"extraOptionPlaceholder": "",
"label": ""
},
"only-this-page": {
"description": "",
"label": ""
}
}
}
}
},
"remove-redaction": {
"dialog": {
"actions": {
@ -2165,6 +2221,10 @@
"extraOptionLabel": "In alle aktiven und zukünftigen Dossiers übernehmen",
"label": "In diesem Kontext aus Dossier entfernen"
},
"in-document": {
"description": "",
"label": ""
},
"in-dossier": {
"description": "Der Begriff wird in keinem Dokument dieses Dossiers {type, select, hint{annotiert} other{automatisch geschwärzt}}.",
"description-bulk": "Die ausgewählten Begriffe werden in diesem Dossier nicht {type, select, hint{annotiert} other{automatisch geschwärzt}}.",
@ -2307,12 +2367,6 @@
"red-user-admin": "Benutzeradmin",
"regular": "regulärer Benutzer"
},
"search": {
"active-dossiers": "Dokumente in aktiven Dossiers",
"all-dossiers": "Alle Dokumente",
"placeholder": "Dokumente durchsuchen...",
"this-dossier": "In diesem Dossier"
},
"search-screen": {
"cols": {
"assignee": "Bearbeiter",
@ -2336,6 +2390,12 @@
"no-match": "Der Suchbegriff wurde in keinem der Dokumente gefunden.",
"table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}"
},
"search": {
"active-dossiers": "Dokumente in aktiven Dossiers",
"all-dossiers": "Alle Dokumente",
"placeholder": "Dokumente durchsuchen...",
"this-dossier": "In diesem Dossier"
},
"seconds": "Sekunden",
"size": "Größe",
"smtp-auth-config": {
@ -2526,10 +2586,6 @@
"view-as": "Ansicht:",
"workflow": "Workflow-Spalten"
},
"viewer-header": {
"all-annotations-loaded": "Alle Annotationen geladen",
"load-all-annotations": "Alle Annotationen laden"
},
"watermark-screen": {
"action": {
"change-success": "Wasserzeichen wurde aktualisiert.",
@ -2558,6 +2614,10 @@
"orientation": "Textrichtung",
"text-label": "Text für Wasserzeichen",
"text-placeholder": "Text eingeben"
},
"pagination": {
"landscape": "",
"portrait": ""
}
},
"watermarks-listing": {

View File

@ -1273,6 +1273,25 @@
},
"side-nav-title": "Configurations"
},
"edit-rectangle": {
"dialog": {
"content": {
"options": {
"multiple-pages": {
"description": "Edit redaction the range of pages",
"extraOptionDescription": "Minus(-) for range and comma(,) for enumeration",
"extraOptionLabel": "Range",
"extraOptionPlaceholder": "e.g. 1-20,22,32",
"label": "Change on all pages"
},
"only-this-page": {
"description": "Edit redaction only at this position in this document",
"label": "Change only on this page"
}
}
}
}
},
"edit-redaction": {
"dialog": {
"actions": {
@ -1865,13 +1884,8 @@
"save": "Save"
},
"content": {
"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": "Value / classification",
"comment": "Comment",
"dictionary": "Dictionary",
"edit-selected-text": "Edit selected text",
"legalBasis": "Legal basis",
"options": {
"multiple-pages": {
@ -1888,10 +1902,7 @@
},
"reason": "Reason",
"reason-placeholder": "Select a reason...",
"rectangle": "Custom rectangle",
"section": "Paragraph / location",
"text": "Selected text:",
"type": "Entity"
"section": "Paragraph / location"
},
"error": "Error! Invalid page selection",
"header": {
@ -2168,6 +2179,25 @@
"title": "Remove {count, plural, one{annotation} other {annotations}}"
}
},
"remove-rectangle": {
"dialog": {
"content": {
"options": {
"multiple-pages": {
"description": "Edit redaction the range of pages",
"extraOptionDescription": "Minus(-) for range and comma(,) for enumeration",
"extraOptionLabel": "Range",
"extraOptionPlaceholder": "e.g. 1-20,22,32",
"label": "Remove on all pages"
},
"only-this-page": {
"description": "Edit redaction only at this position in this document",
"label": "Remove only on this page"
}
}
}
}
},
"remove-redaction": {
"dialog": {
"actions": {

View File

@ -243,7 +243,8 @@
}
},
"type": "Typ",
"type-placeholder": "Typ auswählen..."
"type-placeholder": "Typ auswählen...",
"value": ""
},
"title": "Hinweis hinzufügen"
}
@ -275,9 +276,6 @@
"watermarks": "Wasserzeichen"
},
"analysis-disabled": "Analyse deaktiviert",
"annotation": {
"pending": "(Analyse steht aus)"
},
"annotation-actions": {
"accept-recommendation": {
"label": "Empfehlung annehmen"
@ -333,14 +331,14 @@
"error": "Rekategorisierung des Bilds fehlgeschlagen: {error}",
"success": "Bild wurde einer neuen Kategorie zugeordnet."
},
"remove": {
"error": "Entfernen der Annotation fehlgeschlagen: {error}",
"success": "Annotation wurde entfernt"
},
"remove-hint": {
"error": "Entfernen des Hinweises fehlgeschlagen: {error}",
"success": "Hinweis wurde entfernt"
},
"remove": {
"error": "Entfernen der Annotation fehlgeschlagen: {error}",
"success": "Annotation wurde entfernt"
},
"undo": {
"error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}",
"success": "erfolgreich Rückgängig gemacht"
@ -353,15 +351,15 @@
"remove-highlights": {
"label": "Ausgewählte Markierungen entfernen"
},
"resize": {
"label": "Größe ändern"
},
"resize-accept": {
"label": "Neue Größe speichern"
},
"resize-cancel": {
"label": "Größenänderung abbrechen"
},
"resize": {
"label": "Größe ändern"
},
"see-references": {
"label": "See references"
},
@ -378,6 +376,7 @@
"removed-manual": "Schwärzung/Hinweis entfernt",
"resized": "Schwärzungsbereich wurde geändert"
},
"annotation-content": "",
"annotation-engines": {
"dictionary": "{isHint, select, true{Hinweis} other{Schwärzung}} basiert auf Wörterbuch",
"dossier-dictionary": "Annotation basiert auf Dossier-Wörterbuch",
@ -395,6 +394,9 @@
"skipped": "Übersprungen",
"text-highlight": "Markierung"
},
"annotation": {
"pending": "(Analyse steht aus)"
},
"annotations": "Annotationen",
"archived-dossiers-listing": {
"no-data": {
@ -1018,13 +1020,13 @@
"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"
},
"report-download": "Report download",
"start-auto-analysis": "Enable auto-analysis",
"stop-auto-analysis": "Stop auto-analysis",
@ -1094,14 +1096,6 @@
"total-documents": "Anzahl der Dokumente",
"total-people": "<strong>{count}</strong> {count, plural, one{user} other {users}}"
},
"dossier-templates": {
"label": "Dossier-Vorlagen",
"status": {
"active": "Active",
"inactive": "Inactive",
"incomplete": "Incomplete"
}
},
"dossier-templates-listing": {
"action": {
"clone": "Clone template",
@ -1136,6 +1130,14 @@
"title": "{length} dossier {length, plural, one{template} other{templates}}"
}
},
"dossier-templates": {
"label": "Dossier-Vorlagen",
"status": {
"active": "Active",
"inactive": "Inactive",
"incomplete": "Incomplete"
}
},
"dossier-watermark-selector": {
"heading": "Watermarks on documents",
"no-watermark": "There is no watermark defined for the dossier template.<br>Contact your app admin to define one.",
@ -1233,10 +1235,8 @@
"save": "",
"title": ""
},
"entries": "{length} {length, plural, one{entry} other{entries}} to {hint, select, true{annotate} other{redact}}",
"false-positive-entries": "{length} false positive {length, plural, one{entry} other{entries}}",
"entries-count": "",
"false-positives": "False positives",
"false-recommendation-entries": "{length} false recommendation {length, plural, one{entry} other{entries}}",
"false-recommendations": "False recommendations",
"to-redact": "To redact"
},
@ -1273,6 +1273,25 @@
},
"side-nav-title": "Konfiguration"
},
"edit-rectangle": {
"dialog": {
"content": {
"options": {
"multiple-pages": {
"description": "",
"extraOptionDescription": "",
"extraOptionLabel": "",
"extraOptionPlaceholder": "",
"label": ""
},
"only-this-page": {
"description": "",
"label": ""
}
}
}
}
},
"edit-redaction": {
"dialog": {
"actions": {
@ -1282,13 +1301,10 @@
"content": {
"comment": "Comment",
"comment-placeholder": "Add remarks or mentions...",
"custom-rectangle": "",
"imported": "",
"legal-basis": "",
"options": {
"in-dossier": {
"in-document": {
"description": "",
"extraOptionLabel": "",
"label": ""
},
"only-here": {
@ -1332,15 +1348,6 @@
"title": "{length} {length, plural, one{entity} other{entities}}"
}
},
"entity": {
"info": {
"actions": {
"revert": "Revert",
"save": "Save changes"
},
"heading": "Edit entity"
}
},
"entity-rules-screen": {
"error": {
"generic": "Something went wrong... Entity rules update failed!"
@ -1354,19 +1361,28 @@
"title": "Entity rule editor",
"warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules"
},
"entity": {
"info": {
"actions": {
"revert": "Revert",
"save": "Save changes"
},
"heading": "Edit entity"
}
},
"error": {
"deleted-entity": {
"dossier": {
"action": "Zurück zur Übersicht",
"label": "Dieses Dossier 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": {
"action": "Zurück zum Dossier",
"label": "Diese Datei wurde gelöscht!"
}
},
"file-preview": {
@ -1384,12 +1400,6 @@
},
"exact-date": "{day} {month} {year} um {hour}:{minute} Uhr",
"file": "Datei",
"file-attribute": {
"update": {
"error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
"success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert."
}
},
"file-attribute-encoding-types": {
"ascii": "ASCII",
"iso": "ISO-8859-1",
@ -1400,6 +1410,12 @@
"number": "Nummer",
"text": "Freier Text"
},
"file-attribute": {
"update": {
"error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
"success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert."
}
},
"file-attributes-configurations": {
"cancel": "Abbrechen",
"form": {
@ -1617,15 +1633,6 @@
"csv": "Die Datei-Attribute wurden erfolgreich aus der hochgeladenen CSV-Datei importiert."
}
},
"filter": {
"analysis": "Analyse erforderlich",
"comment": "Kommentare",
"hint": "Nur Hinweise",
"image": "Bilder",
"none": "Keine Annotationen",
"redaction": "Annotationen",
"updated": "Aktualisiert"
},
"filter-menu": {
"filter-options": "Filteroptionen",
"filter-types": "Filter",
@ -1635,6 +1642,15 @@
"unseen-pages": "Nur Anmerkungen auf ungesehenen Seiten",
"with-comments": "Nur Anmerkungen mit Kommentaren"
},
"filter": {
"analysis": "Analyse erforderlich",
"comment": "Kommentare",
"hint": "Nur Hinweise",
"image": "Bilder",
"none": "Keine Annotationen",
"redaction": "Annotationen",
"updated": "Aktualisiert"
},
"filters": {
"assigned-people": "Bearbeiter",
"documents-status": "Dokumentenstatus",
@ -1868,13 +1884,8 @@
"save": "Speichern"
},
"content": {
"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",
"legalBasis": "Rechtsgrundlage",
"options": {
"multiple-pages": {
@ -1891,10 +1902,7 @@
},
"reason": "Begründung",
"reason-placeholder": "Wählen Sie eine Begründung aus ...",
"rectangle": "Benutzerdefinierter Bereich",
"section": "Absatz / Ort",
"text": "Ausgewählter Text:",
"type": "Entity"
"section": "Absatz / Ort"
},
"error": "Error! Invalid page selection",
"header": {
@ -1926,13 +1934,6 @@
"user-promoted-to-approver": "<b>{user}</b> wurde im Dossier <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> zum Genehmiger ernannt!",
"user-removed-as-dossier-member": "<b>{user}</b> wurde als Mitglied von: <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> 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",
@ -1946,6 +1947,7 @@
"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",
@ -1963,7 +1965,6 @@
"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",
@ -1971,6 +1972,13 @@
},
"title": "Benachrichtigungseinstellungen"
},
"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{}}"
},
"ocr": {
"confirmation-dialog": {
"cancel": "Cancel",
@ -2017,14 +2025,34 @@
"previous": "Vorherige"
},
"pdf-viewer": {
"header": {
"all-annotations-loaded": "",
"compare-button": "",
"layers-panel-button": "",
"left-panel-button": "",
"load-all-annotations": "",
"no-outlines-text": "",
"no-signatures-text": "",
"outline-multi-select": "",
"outlines-panel-button": "",
"pan-tool-button": "",
"rectangle-tool-button": "",
"rotate-left-button": "",
"rotate-right-button": "",
"select-tool-button": "",
"signature-panel-button": "",
"thumbnails-panel-button": "",
"toggle-layers": "",
"toggle-readable-redactions": "",
"toggle-tooltips": "",
"zoom-in-button": "",
"zoom-out-button": ""
},
"text-popup": {
"actions": {
"search": "Search for selected text"
}
},
"toggle-layers": "{active, select, true{Disable} false{Enable} other{}} layout grid",
"toggle-readable-redactions": "Show components {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": {
@ -2062,16 +2090,16 @@
"warnings-label": "Prompts and dialogs",
"warnings-subtitle": "Do not show again options"
},
"processing": {
"basic": "Processing",
"ocr": "OCR"
},
"processing-status": {
"ocr": "OCR",
"pending": "Pending",
"processed": "Processed",
"processing": "Processing"
},
"processing": {
"basic": "Processing",
"ocr": "OCR"
},
"readonly": "Lesemodus",
"readonly-archived": "Read only (archived)",
"redact-text": {
@ -2086,6 +2114,10 @@
"edit-text": "",
"legal-basis": "Legal basis",
"options": {
"in-document": {
"description": "",
"label": ""
},
"in-dossier": {
"description": "Add redaction in every document in {dossierName}.",
"extraOptionLabel": "Apply to all dossiers",
@ -2101,7 +2133,8 @@
"revert-text": "",
"type": "Type",
"type-placeholder": "Select type...",
"unchanged": ""
"unchanged": "",
"value": ""
},
"title": "Redact text"
}
@ -2125,6 +2158,10 @@
"description-bulk": "The selected items should not be annotated in their respective contexts.",
"label": "False positive"
},
"in-document": {
"description": "",
"label": ""
},
"in-dossier": {
"description": "Do not annotate ''{value}'' as ''{type}'' in any dossier.",
"description-bulk": "Do not annotate the selected terms as their respective types in any dossier.",
@ -2142,6 +2179,25 @@
"title": "Remove {count, plural, one{annotation} other {annotations}}"
}
},
"remove-rectangle": {
"dialog": {
"content": {
"options": {
"multiple-pages": {
"description": "",
"extraOptionDescription": "",
"extraOptionLabel": "",
"extraOptionPlaceholder": "",
"label": ""
},
"only-this-page": {
"description": "",
"label": ""
}
}
}
}
},
"remove-redaction": {
"dialog": {
"actions": {
@ -2165,6 +2221,10 @@
"extraOptionLabel": "Apply to all dossiers",
"label": "False positive"
},
"in-document": {
"description": "",
"label": ""
},
"in-dossier": {
"description": "Do not {type} \"{value}\" in any document of the current dossier.",
"description-bulk": "",
@ -2307,12 +2367,6 @@
"red-user-admin": "Benutzer-Admin",
"regular": "Regulär"
},
"search": {
"active-dossiers": "ganze Plattform",
"all-dossiers": "all documents",
"placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen",
"this-dossier": "in diesem Dossier"
},
"search-screen": {
"cols": {
"assignee": "Bevollmächtigter",
@ -2336,6 +2390,12 @@
"no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.",
"table-header": "{length} search {length, plural, one{result} other{results}}"
},
"search": {
"active-dossiers": "ganze Plattform",
"all-dossiers": "all documents",
"placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen",
"this-dossier": "in diesem Dossier"
},
"seconds": "seconds",
"size": "Size",
"smtp-auth-config": {
@ -2526,10 +2586,6 @@
"view-as": "Ansicht als:",
"workflow": "Arbeitsablauf"
},
"viewer-header": {
"all-annotations-loaded": "All annotations loaded",
"load-all-annotations": "Load all annotations"
},
"watermark-screen": {
"action": {
"change-success": "Das Wasserzeichen wurde aktualisiert!",
@ -2558,6 +2614,10 @@
"orientation": "Ausrichtung",
"text-label": "Watermark text",
"text-placeholder": "Text eingeben"
},
"pagination": {
"landscape": "",
"portrait": ""
}
},
"watermarks-listing": {

View File

@ -1273,6 +1273,25 @@
},
"side-nav-title": "Configurations"
},
"edit-rectangle": {
"dialog": {
"content": {
"options": {
"multiple-pages": {
"description": "",
"extraOptionDescription": "",
"extraOptionLabel": "",
"extraOptionPlaceholder": "",
"label": ""
},
"only-this-page": {
"description": "",
"label": ""
}
}
}
}
},
"edit-redaction": {
"dialog": {
"actions": {
@ -1865,13 +1884,8 @@
"save": "Save"
},
"content": {
"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": "Value / classification",
"comment": "Comment",
"dictionary": "Dictionary",
"edit-selected-text": "Edit selected text",
"legalBasis": "Legal Basis",
"options": {
"multiple-pages": {
@ -1888,10 +1902,7 @@
},
"reason": "Reason",
"reason-placeholder": "Select a reason ...",
"rectangle": "Custom Rectangle",
"section": "Paragraph / Location",
"text": "Selected text:",
"type": "Entity"
"section": "Paragraph / Location"
},
"error": "Error! Invalid page selection",
"header": {
@ -2168,6 +2179,25 @@
"title": "Remove {count, plural, one{annotation} other {annotations}}"
}
},
"remove-rectangle": {
"dialog": {
"content": {
"options": {
"multiple-pages": {
"description": "",
"extraOptionDescription": "",
"extraOptionLabel": "",
"extraOptionPlaceholder": "",
"label": ""
},
"only-this-page": {
"description": "",
"label": ""
}
}
}
}
},
"remove-redaction": {
"dialog": {
"actions": {

View File

@ -1,3 +1,5 @@
import { IEntityLogEntryPosition } from './entity-log-entry';
export interface IRecategorizationRequest {
readonly annotationId?: string;
readonly comment?: string;
@ -15,9 +17,6 @@ export interface IBulkRecategorizationRequest {
readonly originTypes: string[];
readonly originLegalBases: string[];
readonly rectangle: boolean;
readonly position?: {
readonly rectangle: number[];
readonly pageNumber: number;
};
readonly position?: IEntityLogEntryPosition;
readonly pageNumbers?: number[];
}