From efdd6acfff1322f19c833f66b2ed4732d740943e Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Thu, 6 Oct 2022 10:43:58 +0200 Subject: [PATCH 01/83] 95335: Created ListableNotificationObjectComponent --- ...istable-notification-object.component.html | 1 + ...istable-notification-object.component.scss | 0 ...able-notification-object.component.spec.ts | 43 +++++++++++++++++++ .../listable-notification-object.component.ts | 21 +++++++++ .../listable-notification-object.model.ts | 36 ++++++++++++++++ ...table-notification-object.resource-type.ts | 9 ++++ src/app/shared/shared.module.ts | 5 +++ src/assets/i18n/en.json5 | 5 ++- 8 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html create mode 100644 src/app/shared/object-list/listable-notification-object/listable-notification-object.component.scss create mode 100644 src/app/shared/object-list/listable-notification-object/listable-notification-object.component.spec.ts create mode 100644 src/app/shared/object-list/listable-notification-object/listable-notification-object.component.ts create mode 100644 src/app/shared/object-list/listable-notification-object/listable-notification-object.model.ts create mode 100644 src/app/shared/object-list/listable-notification-object/listable-notification-object.resource-type.ts diff --git a/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html new file mode 100644 index 0000000000..ba850622ed --- /dev/null +++ b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html @@ -0,0 +1 @@ +

{{ object?.message | translate }}

diff --git a/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.scss b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.spec.ts b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.spec.ts new file mode 100644 index 0000000000..3cf05f7fec --- /dev/null +++ b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.spec.ts @@ -0,0 +1,43 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ListableNotificationObjectComponent } from './listable-notification-object.component'; +import { NotificationType } from '../../notifications/models/notification-type'; +import { ListableNotificationObject } from './listable-notification-object.model'; +import { By } from '@angular/platform-browser'; +import { TranslateModule } from '@ngx-translate/core'; + +describe('ListableNotificationObjectComponent', () => { + let component: ListableNotificationObjectComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ + TranslateModule.forRoot(), + ], + declarations: [ + ListableNotificationObjectComponent, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ListableNotificationObjectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + describe('ui', () => { + it('should display the given error message', () => { + component.object = new ListableNotificationObject(NotificationType.Error, 'test error message'); + fixture.detectChanges(); + + const listableNotificationObject: Element = fixture.debugElement.query(By.css('.alert')).nativeElement; + expect(listableNotificationObject.className).toContain(NotificationType.Error); + expect(listableNotificationObject.innerHTML).toBe('test error message'); + }); + }); + + afterEach(() => { + fixture.debugElement.nativeElement.remove(); + }); +}); diff --git a/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.ts b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.ts new file mode 100644 index 0000000000..ca23ee76a2 --- /dev/null +++ b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.ts @@ -0,0 +1,21 @@ +import { Component } from '@angular/core'; +import { + AbstractListableElementComponent +} from '../../object-collection/shared/object-collection-element/abstract-listable-element.component'; +import { ListableNotificationObject } from './listable-notification-object.model'; +import { listableObjectComponent } from '../../object-collection/shared/listable-object/listable-object.decorator'; +import { ViewMode } from '../../../core/shared/view-mode.model'; +import { LISTABLE_NOTIFICATION_OBJECT } from './listable-notification-object.resource-type'; + +/** + * The component for displaying a notifications inside an object list + */ +@listableObjectComponent(ListableNotificationObject, ViewMode.ListElement) +@listableObjectComponent(LISTABLE_NOTIFICATION_OBJECT.value, ViewMode.ListElement) +@Component({ + selector: 'ds-listable-notification-object', + templateUrl: './listable-notification-object.component.html', + styleUrls: ['./listable-notification-object.component.scss'], +}) +export class ListableNotificationObjectComponent extends AbstractListableElementComponent { +} diff --git a/src/app/shared/object-list/listable-notification-object/listable-notification-object.model.ts b/src/app/shared/object-list/listable-notification-object/listable-notification-object.model.ts new file mode 100644 index 0000000000..7e25030498 --- /dev/null +++ b/src/app/shared/object-list/listable-notification-object/listable-notification-object.model.ts @@ -0,0 +1,36 @@ +import { ListableObject } from '../../object-collection/shared/listable-object.model'; +import { typedObject } from '../../../core/cache/builders/build-decorators'; +import { TypedObject } from '../../../core/cache/object-cache.reducer'; +import { LISTABLE_NOTIFICATION_OBJECT } from './listable-notification-object.resource-type'; +import { GenericConstructor } from '../../../core/shared/generic-constructor'; +import { NotificationType } from '../../notifications/models/notification-type'; +import { ResourceType } from '../../../core/shared/resource-type'; + +/** + * Object representing a notification message inside a list of objects + */ +@typedObject +export class ListableNotificationObject extends ListableObject implements TypedObject { + + static type: ResourceType = LISTABLE_NOTIFICATION_OBJECT; + type: ResourceType = LISTABLE_NOTIFICATION_OBJECT; + + protected renderTypes: string[]; + + constructor( + public notificationType: NotificationType = NotificationType.Error, + public message: string = 'listable-notification-object.default-message', + ...renderTypes: string[] + ) { + super(); + this.renderTypes = renderTypes; + } + + /** + * Method that returns as which type of object this object should be rendered. + */ + getRenderTypes(): (string | GenericConstructor)[] { + return [...this.renderTypes, this.constructor as GenericConstructor]; + } + +} diff --git a/src/app/shared/object-list/listable-notification-object/listable-notification-object.resource-type.ts b/src/app/shared/object-list/listable-notification-object/listable-notification-object.resource-type.ts new file mode 100644 index 0000000000..ed458126bb --- /dev/null +++ b/src/app/shared/object-list/listable-notification-object/listable-notification-object.resource-type.ts @@ -0,0 +1,9 @@ +import { ResourceType } from '../../../core/shared/resource-type'; + +/** + * The resource type for {@link ListableNotificationObject} + * + * Needs to be in a separate file to prevent circular + * dependencies in webpack. + */ +export const LISTABLE_NOTIFICATION_OBJECT = new ResourceType('listable-notification-object'); diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 715ee66a99..35aa880052 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -177,6 +177,9 @@ import { ScopeSelectorModalComponent } from './search-form/scope-selector-modal/ import { BitstreamRequestACopyPageComponent } from './bitstream-request-a-copy-page/bitstream-request-a-copy-page.component'; import { DsSelectComponent } from './ds-select/ds-select.component'; import { LogInOidcComponent } from './log-in/methods/oidc/log-in-oidc.component'; +import { + ListableNotificationObjectComponent +} from './object-list/listable-notification-object/listable-notification-object.component'; const MODULES = [ // Do NOT include UniversalModule, HttpModule, or JsonpModule here @@ -346,6 +349,7 @@ const COMPONENTS = [ CommunitySidebarSearchListElementComponent, SearchNavbarComponent, ScopeSelectorModalComponent, + ListableNotificationObjectComponent, ]; const ENTRY_COMPONENTS = [ @@ -402,6 +406,7 @@ const ENTRY_COMPONENTS = [ OnClickMenuItemComponent, TextMenuItemComponent, ScopeSelectorModalComponent, + ListableNotificationObjectComponent, ]; const SHARED_ITEM_PAGE_COMPONENTS = [ diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index f742273edb..dce6f9d3b7 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -4162,5 +4162,8 @@ "idle-modal.log-out": "Log out", - "idle-modal.extend-session": "Extend session" + "idle-modal.extend-session": "Extend session", + + + "listable-notification-object.default-message": "This object couldn't be retrieved", } From 9923a7158664c825e2e2a171ccf0ef1761db8e18 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Thu, 20 Oct 2022 14:24:18 +0200 Subject: [PATCH 02/83] 95335: Fixed ListableNotificationObjectComponent not taking up all the space --- .../listable-notification-object.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html index ba850622ed..ce7fe1285a 100644 --- a/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html +++ b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html @@ -1 +1 @@ -

{{ object?.message | translate }}

+
{{ object?.message | translate }}
From e1753294d42e10550ae5c73f5f677a9e1e096c63 Mon Sep 17 00:00:00 2001 From: Yana De Pauw Date: Mon, 24 Oct 2022 17:48:31 +0200 Subject: [PATCH 03/83] 96121: Fix server side language headers --- src/app/core/locale/locale.service.ts | 2 +- src/app/core/locale/server-locale.service.ts | 27 ++++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/app/core/locale/locale.service.ts b/src/app/core/locale/locale.service.ts index 1052021479..92d35c37d5 100644 --- a/src/app/core/locale/locale.service.ts +++ b/src/app/core/locale/locale.service.ts @@ -40,7 +40,7 @@ export class LocaleService { protected translate: TranslateService, protected authService: AuthService, protected routeService: RouteService, - @Inject(DOCUMENT) private document: any + @Inject(DOCUMENT) protected document: any ) { } diff --git a/src/app/core/locale/server-locale.service.ts b/src/app/core/locale/server-locale.service.ts index f438643e49..556619b946 100644 --- a/src/app/core/locale/server-locale.service.ts +++ b/src/app/core/locale/server-locale.service.ts @@ -1,12 +1,31 @@ import { LANG_ORIGIN, LocaleService } from './locale.service'; -import { Injectable } from '@angular/core'; +import { Inject, Injectable } from '@angular/core'; import { combineLatest, Observable, of as observableOf } from 'rxjs'; import { map, mergeMap, take } from 'rxjs/operators'; -import { isEmpty, isNotEmpty } from '../../shared/empty.util'; +import { hasValue, isEmpty, isNotEmpty } from '../../shared/empty.util'; +import { NativeWindowRef, NativeWindowService } from '../services/window.service'; +import { REQUEST } from '@nguniversal/express-engine/tokens'; +import { CookieService } from '../services/cookie.service'; +import { TranslateService } from '@ngx-translate/core'; +import { AuthService } from '../auth/auth.service'; +import { RouteService } from '../services/route.service'; +import { DOCUMENT } from '@angular/common'; @Injectable() export class ServerLocaleService extends LocaleService { + constructor( + @Inject(NativeWindowService) protected _window: NativeWindowRef, + @Inject(REQUEST) protected req: Request, + protected cookie: CookieService, + protected translate: TranslateService, + protected authService: AuthService, + protected routeService: RouteService, + @Inject(DOCUMENT) protected document: any + ) { + super(_window, cookie, translate, authService, routeService, document); + } + /** * Get the languages list of the user in Accept-Language format * @@ -50,6 +69,10 @@ export class ServerLocaleService extends LocaleService { if (isNotEmpty(epersonLang)) { languages.push(...epersonLang); } + if (hasValue(this.req.headers['accept-language'])) { + languages.push(...this.req.headers['accept-language'].split(',') + ); + } return languages; }) ); From 7e62e372a8a76ef0c89ab74707e5062fb0ea11be Mon Sep 17 00:00:00 2001 From: Toni Prieto Date: Sun, 9 Oct 2022 15:12:20 +0200 Subject: [PATCH 04/83] Fix for Creative Commons jurisdiction chosen is ignored --- ...mission-section-cc-licenses.component.html | 4 +-- ...sion-section-cc-licenses.component.spec.ts | 11 ++++++++ ...ubmission-section-cc-licenses.component.ts | 27 ++++++++++++++++++- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html index 6b9d542abc..f10cd04b60 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html @@ -81,7 +81,7 @@ - + {{ option.label }} @@ -136,7 +136,7 @@ - {{ 'submission.sections.ccLicense.confirmation' | translate }} + {{ 'submission.sections.ccLicense.confirmation' | translate }} diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts index 3757ca87b8..d4f696bdd6 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts @@ -16,6 +16,8 @@ import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/jso import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { createPaginatedList } from '../../../shared/testing/utils.test'; +import {ConfigurationDataService} from "../../../core/data/configuration-data.service"; +import {ConfigurationProperty} from "../../../core/shared/configuration-property.model"; describe('SubmissionSectionCcLicensesComponent', () => { @@ -156,6 +158,14 @@ describe('SubmissionSectionCcLicensesComponent', () => { remove: undefined, }); + const configurationDataService = jasmine.createSpyObj('configurationDataService', { + findByPropertyName: createSuccessfulRemoteDataObject$({ + ... new ConfigurationProperty(), + name: 'cc.license.jurisdiction', + values: ['mock-jurisdiction-value'], + }), + }); + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ @@ -170,6 +180,7 @@ describe('SubmissionSectionCcLicensesComponent', () => { { provide: SubmissionCcLicenseUrlDataService, useValue: submissionCcLicenseUrlDataService }, { provide: SectionsService, useValue: sectionService }, { provide: JsonPatchOperationsBuilder, useValue: operationsBuilder }, + { provide: ConfigurationDataService, useValue: configurationDataService }, { provide: 'collectionIdProvider', useValue: 'test collection id' }, { provide: 'sectionDataProvider', useValue: Object.assign({}, sectionObject) }, { provide: 'submissionIdProvider', useValue: 'test submission id' }, diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts index 9e6a5ae07f..0e435e7d27 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts @@ -1,7 +1,11 @@ import { Component, Inject } from '@angular/core'; import { Observable, of as observableOf, Subscription } from 'rxjs'; import { Field, Option, SubmissionCcLicence } from '../../../core/submission/models/submission-cc-license.model'; -import { getFirstSucceededRemoteData, getRemoteDataPayload } from '../../../core/shared/operators'; +import { + getFirstCompletedRemoteData, + getFirstSucceededRemoteData, + getRemoteDataPayload +} from '../../../core/shared/operators'; import { distinctUntilChanged, filter, map, take } from 'rxjs/operators'; import { SubmissionCcLicenseDataService } from '../../../core/submission/submission-cc-license-data.service'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; @@ -15,6 +19,7 @@ import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder import { isNotEmpty } from '../../../shared/empty.util'; import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder'; import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service'; +import {ConfigurationDataService} from '../../../core/data/configuration-data.service'; /** * This component represents the submission section to select the Creative Commons license. @@ -60,6 +65,11 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent */ protected modalRef: NgbModalRef; + /** + * Default jurisdiction configured + */ + defaultJurisdiction: string; + /** * The Creative Commons link saved in the workspace item. */ @@ -83,6 +93,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent protected submissionCcLicensesDataService: SubmissionCcLicenseDataService, protected submissionCcLicenseUrlDataService: SubmissionCcLicenseUrlDataService, protected operationsBuilder: JsonPatchOperationsBuilder, + protected configService: ConfigurationDataService, @Inject('collectionIdProvider') public injectedCollectionId: string, @Inject('sectionDataProvider') public injectedSectionData: SectionDataObject, @Inject('submissionIdProvider') public injectedSubmissionId: string @@ -156,6 +167,9 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent * @param field the field for which to get the selected option value. */ getSelectedOption(ccLicense: SubmissionCcLicence, field: Field): Option { + if (field.id === 'jurisdiction' && this.defaultJurisdiction !== 'none') { + return field.enums.find(option => option.id === this.defaultJurisdiction); + } return this.data.ccLicense.fields[field.id]; } @@ -256,6 +270,17 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent ).subscribe( (licenses) => this.submissionCcLicenses = licenses ), + this.configService.findByPropertyName('cc.license.jurisdiction').pipe( + getFirstCompletedRemoteData(), + getRemoteDataPayload() + ).subscribe((remoteData) => { + if (remoteData.values.length === 0) { + // No value configured, use blank value (International jurisdiction) + this.defaultJurisdiction = ''; + } else { + this.defaultJurisdiction = remoteData.values[0]; + } + }) ); } From 8a07bb64db13c4343a39a028cf773991a21b4b14 Mon Sep 17 00:00:00 2001 From: Toni Prieto Date: Wed, 26 Oct 2022 10:04:28 +0200 Subject: [PATCH 05/83] Correct lint errors --- .../submission-section-cc-licenses.component.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts index d4f696bdd6..bb83e48d21 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts @@ -16,8 +16,8 @@ import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/jso import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { createPaginatedList } from '../../../shared/testing/utils.test'; -import {ConfigurationDataService} from "../../../core/data/configuration-data.service"; -import {ConfigurationProperty} from "../../../core/shared/configuration-property.model"; +import {ConfigurationDataService} from '../../../core/data/configuration-data.service'; +import {ConfigurationProperty} from '../../../core/shared/configuration-property.model'; describe('SubmissionSectionCcLicensesComponent', () => { From 6f47e0a79c6e611f7e64449487144e0686de4b78 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Thu, 27 Oct 2022 17:58:48 +0200 Subject: [PATCH 06/83] 95335: ListableNotificationObjectComponent not taking up all the space AFTER UPDATE --- .../listable-notification-object.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html index ce7fe1285a..d29199bae3 100644 --- a/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html +++ b/src/app/shared/object-list/listable-notification-object/listable-notification-object.component.html @@ -1 +1 @@ -
{{ object?.message | translate }}
+
{{ object?.message | translate }}
From 2e486cf684eb5ac5eab7202b5a3546579795fbc4 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Wed, 12 Oct 2022 12:13:18 -0500 Subject: [PATCH 07/83] Update to latest Cypress v9 --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 347b83811d..95a4e80e8a 100644 --- a/package.json +++ b/package.json @@ -169,7 +169,7 @@ "css-loader": "^6.2.0", "css-minimizer-webpack-plugin": "^3.4.1", "cssnano": "^5.0.6", - "cypress": "9.5.1", + "cypress": "9", "cypress-axe": "^0.14.0", "debug-loader": "^0.0.1", "deep-freeze": "0.0.1", diff --git a/yarn.lock b/yarn.lock index 9542bfdbe1..5d057b0d59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4686,10 +4686,10 @@ cypress-axe@^0.14.0: resolved "https://registry.yarnpkg.com/cypress-axe/-/cypress-axe-0.14.0.tgz#5f5e70fb36b8cb3ba73a8ba01e9262ff1268d5e2" integrity sha512-7Rdjnko0MjggCmndc1wECAkvQBIhuy+DRtjF7bd5YPZRFvubfMNvrxfqD8PWQmxm7MZE0ffS4Xr43V6ZmvLopg== -cypress@9.5.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.5.1.tgz#51162f3688cedf5ffce311b914ef49a7c1ece076" - integrity sha512-H7lUWB3Svr44gz1rNnj941xmdsCljXoJa2cDneAltjI9leKLMQLm30x6jLlpQ730tiVtIbW5HdUmBzPzwzfUQg== +cypress@9: + version "9.7.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.7.0.tgz#bf55b2afd481f7a113ef5604aa8b693564b5e744" + integrity sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -4723,7 +4723,7 @@ cypress@9.5.1: listr2 "^3.8.3" lodash "^4.17.21" log-symbols "^4.0.0" - minimist "^1.2.5" + minimist "^1.2.6" ospath "^1.2.2" pretty-bytes "^5.6.0" proxy-from-env "1.0.0" From 14bafd61fe1b317ac872e65c6dc3d1c739ec6bbd Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Thu, 13 Oct 2022 12:19:40 -0500 Subject: [PATCH 08/83] Stabilize random authentication errors in e2e tests by using login form at all times. --- cypress/integration/my-dspace.spec.ts | 18 +++++++++++------ cypress/integration/submission.spec.ts | 15 ++++++++------ cypress/support/commands.ts | 27 ++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 12 deletions(-) diff --git a/cypress/integration/my-dspace.spec.ts b/cypress/integration/my-dspace.spec.ts index fa923dbcbc..48f44eecb9 100644 --- a/cypress/integration/my-dspace.spec.ts +++ b/cypress/integration/my-dspace.spec.ts @@ -4,10 +4,11 @@ import { testA11y } from 'cypress/support/utils'; describe('My DSpace page', () => { it('should display recent submissions and pass accessibility tests', () => { - cy.login(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); - cy.visit('/mydspace'); + // This page is restricted, so we will be shown the login form. Fill it out & submit. + cy.loginViaForm(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); + cy.get('ds-my-dspace-page').should('exist'); // At least one recent submission should be displayed @@ -36,10 +37,11 @@ describe('My DSpace page', () => { }); it('should have a working detailed view that passes accessibility tests', () => { - cy.login(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); - cy.visit('/mydspace'); + // This page is restricted, so we will be shown the login form. Fill it out & submit. + cy.loginViaForm(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); + cy.get('ds-my-dspace-page').should('exist'); // Click button in sidebar to display detailed view @@ -61,9 +63,11 @@ describe('My DSpace page', () => { // NOTE: Deleting existing submissions is exercised by submission.spec.ts it('should let you start a new submission & edit in-progress submissions', () => { - cy.login(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); cy.visit('/mydspace'); + // This page is restricted, so we will be shown the login form. Fill it out & submit. + cy.loginViaForm(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); + // Open the New Submission dropdown cy.get('button[data-test="submission-dropdown"]').click(); // Click on the "Item" type in that dropdown @@ -131,9 +135,11 @@ describe('My DSpace page', () => { }); it('should let you import from external sources', () => { - cy.login(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); cy.visit('/mydspace'); + // This page is restricted, so we will be shown the login form. Fill it out & submit. + cy.loginViaForm(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); + // Open the New Import dropdown cy.get('button[data-test="import-dropdown"]').click(); // Click on the "Item" type in that dropdown diff --git a/cypress/integration/submission.spec.ts b/cypress/integration/submission.spec.ts index 009c50115b..9eef596b02 100644 --- a/cypress/integration/submission.spec.ts +++ b/cypress/integration/submission.spec.ts @@ -6,11 +6,12 @@ describe('New Submission page', () => { // NOTE: We already test that new submissions can be started from MyDSpace in my-dspace.spec.ts it('should create a new submission when using /submit path & pass accessibility', () => { - cy.login(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); - // Test that calling /submit with collection & entityType will create a new submission cy.visit('/submit?collection=' + TEST_SUBMIT_COLLECTION_UUID + '&entityType=none'); + // This page is restricted, so we will be shown the login form. Fill it out & submit. + cy.loginViaForm(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); + // Should redirect to /workspaceitems, as we've started a new submission cy.url().should('include', '/workspaceitems'); @@ -33,11 +34,12 @@ describe('New Submission page', () => { }); it('should block submission & show errors if required fields are missing', () => { - cy.login(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); - // Create a new submission cy.visit('/submit?collection=' + TEST_SUBMIT_COLLECTION_UUID + '&entityType=none'); + // This page is restricted, so we will be shown the login form. Fill it out & submit. + cy.loginViaForm(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); + // Attempt an immediate deposit without filling out any fields cy.get('button#deposit').click(); @@ -92,11 +94,12 @@ describe('New Submission page', () => { }); it('should allow for deposit if all required fields completed & file uploaded', () => { - cy.login(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); - // Create a new submission cy.visit('/submit?collection=' + TEST_SUBMIT_COLLECTION_UUID + '&entityType=none'); + // This page is restricted, so we will be shown the login form. Fill it out & submit. + cy.loginViaForm(TEST_SUBMIT_USER, TEST_SUBMIT_USER_PASSWORD); + // Fill out all required fields (Title, Date) cy.get('input#dc_title').type('DSpace logo uploaded via e2e tests'); cy.get('input#dc_date_issued_year').type('2022'); diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 30951d46f1..04c217aa0f 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -19,6 +19,14 @@ declare global { * @param password password to login as */ login(email: string, password: string): typeof login; + + /** + * Login via form before accessing the next page. Useful to fill out login + * form when a cy.visit() call is to an a page which requires authentication. + * @param email email to login as + * @param password password to login as + */ + loginViaForm(email: string, password: string): typeof loginViaForm; } } } @@ -26,6 +34,8 @@ declare global { /** * Login user via REST API directly, and pass authentication token to UI via * the UI's dsAuthInfo cookie. + * WARNING: WHILE THIS METHOD WORKS, OCCASIONALLY RANDOM AUTHENTICATION ERRORS OCCUR. + * At this time "loginViaForm()" seems more consistent/stable. * @param email email to login as * @param password password to login as */ @@ -81,3 +91,20 @@ function login(email: string, password: string): void { } // Add as a Cypress command (i.e. assign to 'cy.login') Cypress.Commands.add('login', login); + + +/** + * Login user via displayed login form + * @param email email to login as + * @param password password to login as + */ + function loginViaForm(email: string, password: string): void { + // Enter email + cy.get('ds-log-in [data-test="email"]').type(email); + // Enter password + cy.get('ds-log-in [data-test="password"]').type(password); + // Click login button + cy.get('ds-log-in [data-test="login-button"]').click(); +} +// Add as a Cypress command (i.e. assign to 'cy.loginViaForm') +Cypress.Commands.add('loginViaForm', loginViaForm); \ No newline at end of file From 11154d21be0a8e34a66f041fc3e1a19473542bd0 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Thu, 13 Oct 2022 12:50:39 -0500 Subject: [PATCH 09/83] Upgrade to latest axe-core for accessibility checks in e2e tests --- package.json | 4 ++-- yarn.lock | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 95a4e80e8a..fef8e89270 100644 --- a/package.json +++ b/package.json @@ -162,14 +162,14 @@ "@types/sanitize-html": "^2.6.2", "@typescript-eslint/eslint-plugin": "5.11.0", "@typescript-eslint/parser": "5.11.0", - "axe-core": "^4.3.3", + "axe-core": "^4.4.3", "compression-webpack-plugin": "^9.2.0", "copy-webpack-plugin": "^6.4.1", "cross-env": "^7.0.3", "css-loader": "^6.2.0", "css-minimizer-webpack-plugin": "^3.4.1", "cssnano": "^5.0.6", - "cypress": "9", + "cypress": "9.7.0", "cypress-axe": "^0.14.0", "debug-loader": "^0.0.1", "deep-freeze": "0.0.1", diff --git a/yarn.lock b/yarn.lock index 5d057b0d59..7fe021a843 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3221,10 +3221,10 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axe-core@^4.3.3: - version "4.4.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" - integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== +axe-core@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" + integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== axios@0.21.4: version "0.21.4" @@ -4686,7 +4686,7 @@ cypress-axe@^0.14.0: resolved "https://registry.yarnpkg.com/cypress-axe/-/cypress-axe-0.14.0.tgz#5f5e70fb36b8cb3ba73a8ba01e9262ff1268d5e2" integrity sha512-7Rdjnko0MjggCmndc1wECAkvQBIhuy+DRtjF7bd5YPZRFvubfMNvrxfqD8PWQmxm7MZE0ffS4Xr43V6ZmvLopg== -cypress@9: +cypress@9.7.0: version "9.7.0" resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.7.0.tgz#bf55b2afd481f7a113ef5604aa8b693564b5e744" integrity sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q== From 3bf13c09617a1af4b4dff3b18380b55848c1bb2a Mon Sep 17 00:00:00 2001 From: Pierre Lasou Date: Fri, 28 Oct 2022 09:54:40 -0400 Subject: [PATCH 10/83] Addition of missing parameters Adding missing params and their french translations for : licence approval, SHERPA, external sources and processes. --- src/assets/i18n/fr.json5 | 159 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 158 insertions(+), 1 deletion(-) diff --git a/src/assets/i18n/fr.json5 b/src/assets/i18n/fr.json5 index ce258c1dda..f2e28184a5 100644 --- a/src/assets/i18n/fr.json5 +++ b/src/assets/i18n/fr.json5 @@ -3509,6 +3509,9 @@ // "menu.section.export_metadata": "Metadata", "menu.section.export_metadata": "Métadonnées", + + // "menu.section.export_batch": "Batch Export (ZIP)", + "menu.section.export_batch": "Exporter en lot (ZIP)", // "menu.section.icon.access_control": "Access Control menu section", "menu.section.icon.access_control": "Section du menu relative au contrôle d'accès", @@ -4016,6 +4019,32 @@ // "process.overview.new": "New", "process.overview.new": "Nouveau", + + // "process.overview.table.actions": "Actions", + "process.overview.table.actions": "Actions", + + // "process.overview.delete": "Delete {{count}} processes", + "process.overview.delete": "Supprimer {{count}} processus", + + // "process.overview.delete.processing": "{{count}} process(es) are being deleted. Please wait for the deletion to fully complete. Note that this can take a while.", + "process.overview.delete.processing": "{{count}} processus sont en train d'être supprimer. Patientez jusqu'à ce que la suppression soit terminée. Notez que cela peut prendre un certain temps.", + + // "process.overview.delete.body": "Are you sure you want to delete {{count}} process(es)?", + "process.overview.delete.body": "Êtes vous sûr de vouloir supprimer {{count}} processus?", + + // "process.overview.delete.header": "Delete processes", + "process.overview.delete.header": "Supprimer les processus", + + // "process.bulk.delete.error.head": "Error on deleteing process", + "process.bulk.delete.error.head": "Erreur lors de la suppression de processus", + + // "process.bulk.delete.error.body": "The process with ID {{processId}} could not be deleted. The remaining processes will continue being deleted. ", + "process.bulk.delete.error.body": "Le processus numéro {{processId}} n'a pu être supprimé. Les processus restants continuent à être supprimés. ", + + // "process.bulk.delete.success": "{{count}} process(es) have been succesfully deleted", + "process.bulk.delete.success": "{{count}} processus ont été supprimés.", + + // "profile.breadcrumbs": "Update Profile", "profile.breadcrumbs": "Mise à jour profil", @@ -5018,6 +5047,30 @@ // "submission.import-external.source.arxiv": "arXiv", "submission.import-external.source.arxiv": "arXiv", + + // "submission.import-external.source.ads": "NASA/ADS", + "submission.import-external.source.ads": "NASA/ADS", + + // "submission.import-external.source.cinii": "CiNii", + "submission.import-external.source.cinii": "CiNii", + + // "submission.import-external.source.crossref": "CrossRef", + "submission.import-external.source.crossref": "CrossRef (DOI)", + + // "submission.import-external.source.scielo": "SciELO", + "submission.import-external.source.scielo": "SciELO", + + // "submission.import-external.source.scopus": "Scopus", + "submission.import-external.source.scopus": "Scopus", + + // "submission.import-external.source.vufind": "VuFind", + "submission.import-external.source.vufind": "VuFind", + + // "submission.import-external.source.wos": "Web Of Science", + "submission.import-external.source.wos": "Web Of Science", + + // "submission.import-external.source.orcidWorks": "ORCID", + "submission.import-external.source.orcidWorks": "ORCID", // "submission.import-external.source.loading": "Loading ...", "submission.import-external.source.loading": "En cours de chargement ...", @@ -5039,6 +5092,9 @@ // "submission.import-external.source.pubmed": "Pubmed", "submission.import-external.source.pubmed": "Pubmed", + + // "submission.import-external.source.pubmedeu": "Pubmed Europe", + "submission.import-external.source.pubmedeu": "Pubmed Europe", // "submission.import-external.source.lcname": "Library of Congress Names", "submission.import-external.source.lcname": "Autorités de noms de la Bibliothèque du Congrès", @@ -5676,6 +5732,95 @@ // "submission.sections.accesses.form.until-placeholder": "Until", "submission.sections.accesses.form.until-placeholder": "Jusqu'au", + + // "submission.sections.license.granted-label": "I confirm the license above", + "submission.sections.license.granted-label": "J'approuve la licence ci-dessus", + + // "submission.sections.license.required": "You must accept the license", + "submission.sections.license.required": "Vous devez accepter la licence", + + // "submission.sections.license.notgranted": "You must accept the license", + "submission.sections.license.notgranted": "Vous devez accepter la licence", + + // "submission.sections.sherpa.publication.information": "Publication information", + "submission.sections.sherpa.publication.information": "Information sur la publication", + + // "submission.sections.sherpa.publication.information.title": "Title", + "submission.sections.sherpa.publication.information.title": "Titre", + + // "submission.sections.sherpa.publication.information.issns": "ISSNs", + "submission.sections.sherpa.publication.information.issns": "ISSNs", + + // "submission.sections.sherpa.publication.information.url": "URL", + "submission.sections.sherpa.publication.information.url": "URL", + + // "submission.sections.sherpa.publication.information.publishers": "Publisher", + "submission.sections.sherpa.publication.information.publishers": "Éditeur", + + // "submission.sections.sherpa.publication.information.romeoPub": "Romeo Pub", + "submission.sections.sherpa.publication.information.romeoPub": "Romeo Pub", + + // "submission.sections.sherpa.publication.information.zetoPub": "Zeto Pub", + "submission.sections.sherpa.publication.information.zetoPub": "Zeto Pub", + + // "submission.sections.sherpa.publisher.policy": "Publisher Policy", + "submission.sections.sherpa.publisher.policy": "Politique de l'éditeur", + + // "submission.sections.sherpa.publisher.policy.description": "The below information was found via Sherpa Romeo. Based on the policies of your publisher, it provides advice regarding whether an embargo may be necessary and/or which files you are allowed to upload. If you have questions, please contact your site administrator via the feedback form in the footer.", + "submission.sections.sherpa.publisher.policy.description": "L'information ci-dessous provient de Sherpa Romeo. Elle vous permet de savoir quelle version vous êtes autorisé-e à déposer et si une restriction de diffusion (embargo) doit être appliquée. Si vous avez des questions, contactez votre administrateur en utilisant le formulaire en pied de page.", + + // "submission.sections.sherpa.publisher.policy.openaccess": "Open Access pathways permitted by this journal's policy are listed below by article version. Click on a pathway for a more detailed view", + "submission.sections.sherpa.publisher.policy.openaccess": "Les voies de libre accès autorisées par la politique de cette revue sont listées ci-dessous par version d'article. Cliquez sur l'une des voies pour plus de détails.", + + // "submission.sections.sherpa.publisher.policy.more.information": "For more information, please see the following links:", + "submission.sections.sherpa.publisher.policy.more.information": "Pour plus d'information, cliquez sur le lien suivant:", + + // "submission.sections.sherpa.publisher.policy.version": "Version", + "submission.sections.sherpa.publisher.policy.version": "Version", + + // "submission.sections.sherpa.publisher.policy.embargo": "Embargo", + "submission.sections.sherpa.publisher.policy.embargo": "Embargo", + + // "submission.sections.sherpa.publisher.policy.noembargo": "No Embargo", + "submission.sections.sherpa.publisher.policy.noembargo": "Aucun embargo", + + // "submission.sections.sherpa.publisher.policy.nolocation": "None", + "submission.sections.sherpa.publisher.policy.nolocation": "Aucun", + + // "submission.sections.sherpa.publisher.policy.license": "License", + "submission.sections.sherpa.publisher.policy.license": "License", + + // "submission.sections.sherpa.publisher.policy.prerequisites": "Prerequisites", + "submission.sections.sherpa.publisher.policy.prerequisites": "Prérequis", + + // "submission.sections.sherpa.publisher.policy.location": "Location", + "submission.sections.sherpa.publisher.policy.location": "Lieu", + + // "submission.sections.sherpa.publisher.policy.conditions": "Conditions", + "submission.sections.sherpa.publisher.policy.conditions": "Conditions", + + // "submission.sections.sherpa.publisher.policy.refresh": "Refresh", + "submission.sections.sherpa.publisher.policy.refresh": "Rafraîchir", + + // "submission.sections.sherpa.record.information": "Record Information", + "submission.sections.sherpa.record.information": "Information", + + // "submission.sections.sherpa.record.information.id": "ID", + "submission.sections.sherpa.record.information.id": "ID", + + // "submission.sections.sherpa.record.information.date.created": "Date Created", + "submission.sections.sherpa.record.information.date.created": "Date de création", + + // "submission.sections.sherpa.record.information.date.modified": "Last Modified", + "submission.sections.sherpa.record.information.date.modified": "Dernière modification", + + // "submission.sections.sherpa.record.information.uri": "URI", + "submission.sections.sherpa.record.information.uri": "URI", + + // "submission.sections.sherpa.error.message": "There was an error retrieving sherpa informations", + "submission.sections.sherpa.error.message": "Une erreur s'est produite lors de la recherche d'infomation dans Sherpa.", + + // "submission.submit.breadcrumbs": "New submission", "submission.submit.breadcrumbs": "Nouvelle soumission", @@ -5759,6 +5904,12 @@ // "submission.workflow.tasks.pool.show-detail": "Show detail", "submission.workflow.tasks.pool.show-detail": "Afficher le détail", + + // "submission.workspace.generic.view": "View", + "submission.workspace.generic.view": "Voir", + + // "submission.workspace.generic.view-help": "Select this option to view the item's metadata.", + "submission.workspace.generic.view-help": "Sélecionner cette option pour voir les métadonnées de l'item.", // "thumbnail.default.alt": "Thumbnail Image", "thumbnail.default.alt": "Vignette d'image", @@ -5899,9 +6050,15 @@ // "workflow-item.send-back.button.confirm": "Send back", "workflow-item.send-back.button.confirm": "Renvoyer", - // "workflow-item.view.breadcrumbs": "Workflow View", + // "workflow-item.view.breadcrumbs": "Workflow View", "workflow-item.view.breadcrumbs": "Vue d'ensemble du Workflow", + // "workspace-item.view.breadcrumbs": "Workspace View", + "workspace-item.view.breadcrumbs": "Vue du tableau de suivi", + + // "workspace-item.view.title": "Workspace View", + "workspace-item.view.title": "Vue du tableau de suivi", + // "idle-modal.header": "Session will expire soon", "idle-modal.header": "La session expirera bientôt", From bd4f1f3c7075b0fd00fed93214a853f01b08d496 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Fri, 28 Oct 2022 16:57:21 +0200 Subject: [PATCH 11/83] 96433: Fixed issue where ExpandableNavbarSectionComponent was not loaded fast enough --- src/app/navbar/navbar.module.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/navbar/navbar.module.ts b/src/app/navbar/navbar.module.ts index af2bf036bd..de3244099d 100644 --- a/src/app/navbar/navbar.module.ts +++ b/src/app/navbar/navbar.module.ts @@ -21,6 +21,7 @@ const effects = [ const ENTRY_COMPONENTS = [ // put only entry components that use custom decorator NavbarSectionComponent, + ExpandableNavbarSectionComponent, ThemedExpandableNavbarSectionComponent, ]; @@ -34,11 +35,9 @@ const ENTRY_COMPONENTS = [ CoreModule.forRoot() ], declarations: [ + ...ENTRY_COMPONENTS, NavbarComponent, ThemedNavbarComponent, - NavbarSectionComponent, - ExpandableNavbarSectionComponent, - ThemedExpandableNavbarSectionComponent, ], providers: [], exports: [ From 70fe46aeed4ea174e314251e91982e150000a30e Mon Sep 17 00:00:00 2001 From: Jens Vannerum Date: Mon, 31 Oct 2022 16:34:25 +0100 Subject: [PATCH 12/83] 96062: Theme the CollectionDropdownComponent --- .../collection-selector.component.html | 4 +-- .../themed-collection-dropdown.component.ts | 33 +++++++++++++++++++ src/app/shared/shared.module.ts | 3 ++ .../submission-form-collection.component.html | 4 +-- ...-import-external-collection.component.html | 4 +-- .../collection-dropdown.component.html | 0 .../collection-dropdown.component.scss | 0 .../collection-dropdown.component.ts | 15 +++++++++ src/themes/custom/eager-theme.module.ts | 2 ++ 9 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 src/app/shared/collection-dropdown/themed-collection-dropdown.component.ts create mode 100644 src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.html create mode 100644 src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.scss create mode 100644 src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.ts diff --git a/src/app/my-dspace-page/collection-selector/collection-selector.component.html b/src/app/my-dspace-page/collection-selector/collection-selector.component.html index a87118fc4e..6e2a1925c5 100644 --- a/src/app/my-dspace-page/collection-selector/collection-selector.component.html +++ b/src/app/my-dspace-page/collection-selector/collection-selector.component.html @@ -5,7 +5,7 @@ diff --git a/src/app/shared/collection-dropdown/themed-collection-dropdown.component.ts b/src/app/shared/collection-dropdown/themed-collection-dropdown.component.ts new file mode 100644 index 0000000000..27c883099d --- /dev/null +++ b/src/app/shared/collection-dropdown/themed-collection-dropdown.component.ts @@ -0,0 +1,33 @@ +import { CollectionDropdownComponent, CollectionListEntry } from './collection-dropdown.component'; +import { ThemedComponent } from '../theme-support/themed.component'; +import { Component, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'ds-themed-collection-dropdown', + styleUrls: [], + templateUrl: '../../shared/theme-support/themed.component.html', +}) +export class ThemedCollectionDropdownComponent extends ThemedComponent { + + @Input() entityType: string; + + @Output() searchComplete = new EventEmitter(); + + @Output() theOnlySelectable = new EventEmitter(); + + @Output() selectionChange = new EventEmitter(); + + protected inAndOutputNames: (keyof CollectionDropdownComponent & keyof this)[] = ['entityType', 'searchComplete', 'theOnlySelectable', 'selectionChange']; + + protected getComponentName(): string { + return 'CollectionDropdownComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../themes/${themeName}/app/shared/collection-dropdown/collection-dropdown.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./collection-dropdown.component`); + } +} diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index f723f081d3..02bccb2510 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -323,6 +323,7 @@ import { } from '../item-page/simple/field-components/specific-field/title/item-page-title-field.component'; import { MarkdownPipe } from './utils/markdown.pipe'; import { GoogleRecaptchaModule } from '../core/google-recaptcha/google-recaptcha.module'; +import { ThemedCollectionDropdownComponent } from './collection-dropdown/themed-collection-dropdown.component'; const MODULES = [ CommonModule, @@ -480,6 +481,7 @@ const COMPONENTS = [ BitstreamDownloadPageComponent, BitstreamRequestACopyPageComponent, CollectionDropdownComponent, + ThemedCollectionDropdownComponent, EntityDropdownComponent, ExportMetadataSelectorComponent, ImportBatchSelectorComponent, @@ -558,6 +560,7 @@ const ENTRY_COMPONENTS = [ ClaimedTaskActionsReturnToPoolComponent, ClaimedTaskActionsEditMetadataComponent, CollectionDropdownComponent, + ThemedCollectionDropdownComponent, FileDownloadLinkComponent, BitstreamDownloadPageComponent, BitstreamRequestACopyPageComponent, diff --git a/src/app/submission/form/collection/submission-form-collection.component.html b/src/app/submission/form/collection/submission-form-collection.component.html index d897cc31fd..15b6ff280e 100644 --- a/src/app/submission/form/collection/submission-form-collection.component.html +++ b/src/app/submission/form/collection/submission-form-collection.component.html @@ -35,9 +35,9 @@ class="dropdown-menu" id="collectionControlsDropdownMenu" aria-labelledby="collectionControlsMenuButton"> - - + diff --git a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.html b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.html index 29c99732c3..475f2a3b67 100644 --- a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.html +++ b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.html @@ -6,11 +6,11 @@ diff --git a/src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.html b/src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.scss b/src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.ts b/src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.ts new file mode 100644 index 0000000000..4fdbd9125b --- /dev/null +++ b/src/themes/custom/app/shared/collection-dropdown/collection-dropdown.component.ts @@ -0,0 +1,15 @@ +import { + CollectionDropdownComponent as BaseComponent +} from '../../../../../app/shared/collection-dropdown/collection-dropdown.component'; +import { Component } from '@angular/core'; + +@Component({ + selector: 'ds-collection-dropdown', + templateUrl: '../../../../../app/shared/collection-dropdown/collection-dropdown.component.html', + // templateUrl: './collection-dropdown.component.html', + styleUrls: ['../../../../../app/shared/collection-dropdown/collection-dropdown.component.scss'] + // styleUrls: ['./collection-dropdown.component.scss'] +}) +export class CollectionDropdownComponent extends BaseComponent { + +} diff --git a/src/themes/custom/eager-theme.module.ts b/src/themes/custom/eager-theme.module.ts index 4e3c6f8b46..6bca518092 100644 --- a/src/themes/custom/eager-theme.module.ts +++ b/src/themes/custom/eager-theme.module.ts @@ -43,6 +43,7 @@ import { import { CommunityListElementComponent } from './app/shared/object-list/community-list-element/community-list-element.component'; import { CollectionListElementComponent} from './app/shared/object-list/collection-list-element/collection-list-element.component'; +import { CollectionDropdownComponent } from './app/shared/collection-dropdown/collection-dropdown.component'; /** @@ -58,6 +59,7 @@ const ENTRY_COMPONENTS = [ CommunityListElementComponent, CollectionListElementComponent, + CollectionDropdownComponent, ]; const DECLARATIONS = [ From 02499f8019f3d47849df7d3662d2899e772444d2 Mon Sep 17 00:00:00 2001 From: Jens Vannerum Date: Mon, 31 Oct 2022 19:42:07 +0100 Subject: [PATCH 13/83] 96062: Theme the ExternalSourceEntryImportModalComponent --- ...-relation-external-source-tab.component.ts | 2 +- ...nal-source-entry-import-modal.component.ts | 22 +++++++++++++++++++ src/app/shared/form/form.module.ts | 4 ++++ ...l-source-entry-import-modal.component.html | 0 ...l-source-entry-import-modal.component.scss | 0 ...nal-source-entry-import-modal.component.ts | 15 +++++++++++++ src/themes/custom/lazy-theme.module.ts | 4 ++++ 7 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/themed-external-source-entry-import-modal.component.ts create mode 100644 src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.html create mode 100644 src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.scss create mode 100644 src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.ts diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.ts index e5ea98e537..0c41586eab 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.ts @@ -15,7 +15,7 @@ import { fadeIn, fadeInOut } from '../../../../../animations/fade'; import { PaginationComponentOptions } from '../../../../../pagination/pagination-component-options.model'; import { RelationshipOptions } from '../../../models/relationship-options.model'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; -import { ExternalSourceEntryImportModalComponent } from './external-source-entry-import-modal/external-source-entry-import-modal.component'; +import { ThemedExternalSourceEntryImportModalComponent as ExternalSourceEntryImportModalComponent } from './external-source-entry-import-modal/themed-external-source-entry-import-modal.component'; import { hasValue } from '../../../../../empty.util'; import { SelectableListService } from '../../../../../object-list/selectable-list/selectable-list.service'; import { Item } from '../../../../../../core/shared/item.model'; diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/themed-external-source-entry-import-modal.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/themed-external-source-entry-import-modal.component.ts new file mode 100644 index 0000000000..26e6097c2d --- /dev/null +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/themed-external-source-entry-import-modal.component.ts @@ -0,0 +1,22 @@ +import { ExternalSourceEntryImportModalComponent } from './external-source-entry-import-modal.component'; +import { ThemedComponent } from '../../../../../../theme-support/themed.component'; +import { Component } from '@angular/core'; + +@Component({ + selector: 'ds-themed-external-source-entry-import-modal', + styleUrls: [], + templateUrl: '../../../../../../../shared/theme-support/themed.component.html', +}) +export class ThemedExternalSourceEntryImportModalComponent extends ThemedComponent { + protected getComponentName(): string { + return 'ExternalSourceEntryImportModalComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../../../../../themes/${themeName}/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./external-source-entry-import-modal.component`); + } +} diff --git a/src/app/shared/form/form.module.ts b/src/app/shared/form/form.module.ts index 62ab5bd647..741d51b616 100644 --- a/src/app/shared/form/form.module.ts +++ b/src/app/shared/form/form.module.ts @@ -30,6 +30,9 @@ import { ExistingRelationListElementComponent } from './builder/ds-dynamic-form- import { ExternalSourceEntryImportModalComponent } from './builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component'; import { CustomSwitchComponent } from './builder/ds-dynamic-form-ui/models/custom-switch/custom-switch.component'; import { DynamicFormsNGBootstrapUIModule } from '@ng-dynamic-forms/ui-ng-bootstrap'; +import { + ThemedExternalSourceEntryImportModalComponent +} from './builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/themed-external-source-entry-import-modal.component'; const COMPONENTS = [ CustomSwitchComponent, @@ -53,6 +56,7 @@ const COMPONENTS = [ ExistingMetadataListElementComponent, ExistingRelationListElementComponent, ExternalSourceEntryImportModalComponent, + ThemedExternalSourceEntryImportModalComponent, FormComponent ]; diff --git a/src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.html b/src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.scss b/src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.ts b/src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.ts new file mode 100644 index 0000000000..cd1de5d159 --- /dev/null +++ b/src/themes/custom/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.ts @@ -0,0 +1,15 @@ +import { + ExternalSourceEntryImportModalComponent as BaseComponent +} from '../../../../../../../../../../app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component'; +import { Component } from '@angular/core'; + +@Component({ + selector: 'ds-external-source-entry-import-modal', + styleUrls: ['../../../../../../../../../../app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.scss'], + // styleUrls: ['./external-source-entry-import-modal.component.scss'], + templateUrl: '../../../../../../../../../../app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.html', + // templateUrl: './external-source-entry-import-modal.component.html' +}) +export class ExternalSourceEntryImportModalComponent extends BaseComponent { + +} diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index d2ac0ae787..2ff4af7946 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -114,6 +114,9 @@ import { ObjectListComponent } from './app/shared/object-list/object-list.compon import { BrowseByMetadataPageComponent } from './app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component'; import { BrowseByDatePageComponent } from './app/browse-by/browse-by-date-page/browse-by-date-page.component'; import { BrowseByTitlePageComponent } from './app/browse-by/browse-by-title-page/browse-by-title-page.component'; +import { + ExternalSourceEntryImportModalComponent +} from './app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component'; const DECLARATIONS = [ FileSectionComponent, @@ -168,6 +171,7 @@ const DECLARATIONS = [ BrowseByMetadataPageComponent, BrowseByDatePageComponent, BrowseByTitlePageComponent, + ExternalSourceEntryImportModalComponent, ]; From 46f108072059f4a5ec8dc5868a229ac06ac10fe6 Mon Sep 17 00:00:00 2001 From: AndrukhivAndriy <79985930+AndrukhivAndriy@users.noreply.github.com> Date: Tue, 1 Nov 2022 03:00:45 -0700 Subject: [PATCH 14/83] Add: Ukrainian translation --- src/assets/i18n/uk.json5 | 5475 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 5475 insertions(+) create mode 100644 src/assets/i18n/uk.json5 diff --git a/src/assets/i18n/uk.json5 b/src/assets/i18n/uk.json5 new file mode 100644 index 0000000000..b0413d9353 --- /dev/null +++ b/src/assets/i18n/uk.json5 @@ -0,0 +1,5475 @@ +{ + + // "401.help": "You're not authorized to access this page. You can use the button below to get back to the home page.", + + "401.help": "Ви не авторизовані для доступу до цієї сторінки. Ви можете скористатися кнопкою нижче, щоб повернутися на головну сторінку.", + + // "401.link.home-page": "Take me to the home page", + + "401.link.home-page": "Перейти на головну сторінку", + + // "401.unauthorized": "unauthorized", + + "401.unauthorized": "Ви не авторизовані", + + + + // "403.help": "You don't have permission to access this page. You can use the button below to get back to the home page.", + + "403.help": "Ви не маєте дозволу на доступ до цієї сторінки. Ви можете скористатися кнопкою нижче, щоб повернутися на головну сторінку.", + + // "403.link.home-page": "Take me to the home page", + + "403.link.home-page": "Перейти на головну сторінку", + + // "403.forbidden": "forbidden", + + "403.forbidden": "заборонено", + + + + // "404.help": "We can't find the page you're looking for. The page may have been moved or deleted. You can use the button below to get back to the home page. ", + "404.help": "Ми не можемо знайти сторінку, яку ви шукаєте. Можливо, сторінку було переміщено або видалено. Ви можете скористатися кнопкою нижче, щоб повернутися на головну сторінку. ", + + // "404.link.home-page": "Take me to the home page", + "404.link.home-page": "Перейти на головну сторінку", + + // "404.page-not-found": "page not found", + "404.page-not-found": "сторінка не знайдена", + + // "admin.curation-tasks.breadcrumbs": "System curation tasks", + + "admin.curation-tasks.breadcrumbs": "Управління системою", + + // "admin.curation-tasks.title": "System curation tasks", + + "admin.curation-tasks.title": "Управління системою", + + // "admin.curation-tasks.header": "System curation tasks", + + "admin.curation-tasks.header": "Управління системою", + + // "admin.registries.bitstream-formats.breadcrumbs": "Format registry", + + "admin.registries.bitstream-formats.breadcrumbs": "Реєстр форматів", + + // "admin.registries.bitstream-formats.create.breadcrumbs": "Bitstream format", + + "admin.registries.bitstream-formats.create.breadcrumbs": "Формат файлів", + + // "admin.registries.bitstream-formats.create.failure.content": "An error occurred while creating the new bitstream format.", + "admin.registries.bitstream-formats.create.failure.content": "Під час створення нового файлу сталася помилка.", + + // "admin.registries.bitstream-formats.create.failure.head": "Failure", + "admin.registries.bitstream-formats.create.failure.head": "Крах", + + // "admin.registries.bitstream-formats.create.head": "Create Bitstream format", + "admin.registries.bitstream-formats.create.head": "Створити формат файлу", + + // "admin.registries.bitstream-formats.create.new": "Add a new bitstream format", + "admin.registries.bitstream-formats.create.new": "Додати новий формат файлу", + + // "admin.registries.bitstream-formats.create.success.content": "The new bitstream format was successfully created.", + "admin.registries.bitstream-formats.create.success.content": "Новий формат файлу був успішно створений.", + + // "admin.registries.bitstream-formats.create.success.head": "Success", + "admin.registries.bitstream-formats.create.success.head": "Успішно", + + // "admin.registries.bitstream-formats.delete.failure.amount": "Failed to remove {{ amount }} format(s)", + "admin.registries.bitstream-formats.delete.failure.amount": "Неможливо видалити {{ amount }} формат(и)", + + // "admin.registries.bitstream-formats.delete.failure.head": "Failure", + "admin.registries.bitstream-formats.delete.failure.head": "Крах", + + // "admin.registries.bitstream-formats.delete.success.amount": "Successfully removed {{ amount }} format(s)", + "admin.registries.bitstream-formats.delete.success.amount": "Успішно видалено {{ amount }} формат(и)", + + // "admin.registries.bitstream-formats.delete.success.head": "Success", + "admin.registries.bitstream-formats.delete.success.head": "Успіх", + + // "admin.registries.bitstream-formats.description": "This list of bitstream formats provides information about known formats and their support level.", + "admin.registries.bitstream-formats.description": "Цей список форматів файлів містить інформацію про відомі формати та рівень їх підтримки.", + + // "admin.registries.bitstream-formats.edit.breadcrumbs": "Bitstream format", + + "admin.registries.bitstream-formats.edit.breadcrumbs": "Формат файлу", + + // "admin.registries.bitstream-formats.edit.description.hint": "", + "admin.registries.bitstream-formats.edit.description.hint": "", + + // "admin.registries.bitstream-formats.edit.description.label": "Description", + "admin.registries.bitstream-formats.edit.description.label": "Опис", + + // "admin.registries.bitstream-formats.edit.extensions.hint": "Extensions are file extensions that are used to automatically identify the format of uploaded files. You can enter several extensions for each format.", + "admin.registries.bitstream-formats.edit.extensions.hint": "Розширення — це розширення файлів, які використовуються для автоматичного визначення формату завантажених файлів. Ви можете ввести кілька розширень для кожного формату.", + + // "admin.registries.bitstream-formats.edit.extensions.label": "File extensions", + "admin.registries.bitstream-formats.edit.extensions.label": "Розширення файлу", + + // "admin.registries.bitstream-formats.edit.extensions.placeholder": "Enter a file extension without the dot", + "admin.registries.bitstream-formats.edit.extensions.placeholder": "Ввведіть розширення файлу без крапки", + + // "admin.registries.bitstream-formats.edit.failure.content": "An error occurred while editing the bitstream format.", + "admin.registries.bitstream-formats.edit.failure.content": "Виникла помилка при редагуванні формату файлу.", + + // "admin.registries.bitstream-formats.edit.failure.head": "Failure", + "admin.registries.bitstream-formats.edit.failure.head": "Крах", + + // "admin.registries.bitstream-formats.edit.head": "Bitstream format: {{ format }}", + "admin.registries.bitstream-formats.edit.head": "Формат файлу: {{ format }}", + + // "admin.registries.bitstream-formats.edit.internal.hint": "Formats marked as internal are hidden from the user, and used for administrative purposes.", + "admin.registries.bitstream-formats.edit.internal.hint": "Формати, позначені як внутрішні, приховані від користувача та використовуються в адміністративних цілях.", + + // "admin.registries.bitstream-formats.edit.internal.label": "Internal", + "admin.registries.bitstream-formats.edit.internal.label": "Внутрішні", + + // "admin.registries.bitstream-formats.edit.mimetype.hint": "The MIME type associated with this format, does not have to be unique.", + "admin.registries.bitstream-formats.edit.mimetype.hint": "Тип MIME, пов’язаний із цим форматом, не обов’язково має бути унікальним.", + + // "admin.registries.bitstream-formats.edit.mimetype.label": "MIME Type", + "admin.registries.bitstream-formats.edit.mimetype.label": "Тип MIME ", + + // "admin.registries.bitstream-formats.edit.shortDescription.hint": "A unique name for this format, (e.g. Microsoft Word XP or Microsoft Word 2000)", + "admin.registries.bitstream-formats.edit.shortDescription.hint": "Унікальна назва формату, (наприклад Microsoft Word XP or Microsoft Word 2000)", + + // "admin.registries.bitstream-formats.edit.shortDescription.label": "Name", + "admin.registries.bitstream-formats.edit.shortDescription.label": "Ім'я", + + // "admin.registries.bitstream-formats.edit.success.content": "The bitstream format was successfully edited.", + "admin.registries.bitstream-formats.edit.success.content": "Формат файлу успішно відредаговано.", + + // "admin.registries.bitstream-formats.edit.success.head": "Success", + "admin.registries.bitstream-formats.edit.success.head": "Успішно", + + // "admin.registries.bitstream-formats.edit.supportLevel.hint": "The level of support your institution pledges for this format.", + "admin.registries.bitstream-formats.edit.supportLevel.hint": "Рівень підтримки, який ваша установа обіцяє для цього формату.", + + // "admin.registries.bitstream-formats.edit.supportLevel.label": "Support level", + "admin.registries.bitstream-formats.edit.supportLevel.label": "Рівень підтримки", + + // "admin.registries.bitstream-formats.head": "Bitstream Format Registry", + "admin.registries.bitstream-formats.head": "Реєстр формату файлу", + + // "admin.registries.bitstream-formats.no-items": "No bitstream formats to show.", + "admin.registries.bitstream-formats.no-items": "Немає форматів файлів.", + + // "admin.registries.bitstream-formats.table.delete": "Delete selected", + "admin.registries.bitstream-formats.table.delete": "Видалити видалене", + + // "admin.registries.bitstream-formats.table.deselect-all": "Deselect all", + "admin.registries.bitstream-formats.table.deselect-all": "Зняти вибір із усіх", + + // "admin.registries.bitstream-formats.table.internal": "internal", + "admin.registries.bitstream-formats.table.internal": "внутрішні", + + // "admin.registries.bitstream-formats.table.mimetype": "MIME Type", + "admin.registries.bitstream-formats.table.mimetype": "Тип MIME", + + // "admin.registries.bitstream-formats.table.name": "Name", + "admin.registries.bitstream-formats.table.name": "Ім'я", + + // "admin.registries.bitstream-formats.table.return": "Return", + "admin.registries.bitstream-formats.table.return": "Повернутись", + + // "admin.registries.bitstream-formats.table.supportLevel.KNOWN": "Known", + "admin.registries.bitstream-formats.table.supportLevel.KNOWN": "Відомо", + + // "admin.registries.bitstream-formats.table.supportLevel.SUPPORTED": "Supported", + "admin.registries.bitstream-formats.table.supportLevel.SUPPORTED": "Підтримується", + + // "admin.registries.bitstream-formats.table.supportLevel.UNKNOWN": "Unknown", + "admin.registries.bitstream-formats.table.supportLevel.UNKNOWN": "Невідомо", + + // "admin.registries.bitstream-formats.table.supportLevel.head": "Support Level", + "admin.registries.bitstream-formats.table.supportLevel.head": "Рівні підтримки", + + // "admin.registries.bitstream-formats.title": "DSpace Angular :: Bitstream Format Registry", + "admin.registries.bitstream-formats.title": "Репозитарій :: реєстр формату файлу", + + + + // "admin.registries.metadata.breadcrumbs": "Metadata registry", + // TODO New key - Add a translation + "admin.registries.metadata.breadcrumbs": "Реєстр метаданих", + + // "admin.registries.metadata.description": "The metadata registry maintains a list of all metadata fields available in the repository. These fields may be divided amongst multiple schemas. However, DSpace requires the qualified Dublin Core schema.", + "admin.registries.metadata.description": "Реєстр метаданих підтримує список усіх полів метаданих, доступних у репозитарії. Ці поля можна розділити на кілька схем. Однак для ПЗ DSpace потрібна схема Dublin Core.", + + // "admin.registries.metadata.form.create": "Create metadata schema", + "admin.registries.metadata.form.create": "Створити схему метаданих", + + // "admin.registries.metadata.form.edit": "Edit metadata schema", + "admin.registries.metadata.form.edit": "Редагувати схему метаданих", + + // "admin.registries.metadata.form.name": "Name", + "admin.registries.metadata.form.name": "Ім'я", + + // "admin.registries.metadata.form.namespace": "Namespace", + "admin.registries.metadata.form.namespace": "Простір", + + // "admin.registries.metadata.head": "Metadata Registry", + "admin.registries.metadata.head": "Реєстр метаданих", + + // "admin.registries.metadata.schemas.no-items": "No metadata schemas to show.", + "admin.registries.metadata.schemas.no-items": "Немає схеми метаданих.", + + // "admin.registries.metadata.schemas.table.delete": "Delete selected", + "admin.registries.metadata.schemas.table.delete": "Видалити виділене", + + // "admin.registries.metadata.schemas.table.id": "ID", + "admin.registries.metadata.schemas.table.id": "Ідентифікатор", + + // "admin.registries.metadata.schemas.table.name": "Name", + "admin.registries.metadata.schemas.table.name": "Ім'я", + + // "admin.registries.metadata.schemas.table.namespace": "Namespace", + "admin.registries.metadata.schemas.table.namespace": "Простір", + + // "admin.registries.metadata.title": "DSpace Angular :: Metadata Registry", + "admin.registries.metadata.title": "Репозитарій :: Реєстр метаданих", + + + + // "admin.registries.schema.breadcrumbs": "Metadata schema", + + "admin.registries.schema.breadcrumbs": "Схема метаданих", + + // "admin.registries.schema.description": "This is the metadata schema for \"{{namespace}}\".", + "admin.registries.schema.description": "Це схема метаданих для \"{{namespace}}\".", + + // "admin.registries.schema.fields.head": "Schema metadata fields", + "admin.registries.schema.fields.head": "Поля схеми метаданих", + + // "admin.registries.schema.fields.no-items": "No metadata fields to show.", + "admin.registries.schema.fields.no-items": "Немає полів метаданих.", + + // "admin.registries.schema.fields.table.delete": "Delete selected", + "admin.registries.schema.fields.table.delete": "Видалити виділене", + + // "admin.registries.schema.fields.table.field": "Field", + "admin.registries.schema.fields.table.field": "Поле", + + // "admin.registries.schema.fields.table.scopenote": "Scope Note", + "admin.registries.schema.fields.table.scopenote": "Примітка щодо сфери застосування", + + // "admin.registries.schema.form.create": "Create metadata field", + "admin.registries.schema.form.create": "Створити поле метаданих", + + // "admin.registries.schema.form.edit": "Edit metadata field", + "admin.registries.schema.form.edit": "Редагувати поле метаданих", + + // "admin.registries.schema.form.element": "Element", + "admin.registries.schema.form.element": "Елементи", + + // "admin.registries.schema.form.qualifier": "Qualifier", + "admin.registries.schema.form.qualifier": "Кваліфікатор", + + // "admin.registries.schema.form.scopenote": "Scope Note", + "admin.registries.schema.form.scopenote": "Примітка щодо сфери застосування", + + // "admin.registries.schema.head": "Metadata Schema", + "admin.registries.schema.head": "Схема метаданих", + + // "admin.registries.schema.notification.created": "Successfully created metadata schema \"{{prefix}}\"", + "admin.registries.schema.notification.created": "Схема метаданих \"{{prefix}}\" успішно створена", + + // "admin.registries.schema.notification.deleted.failure": "Failed to delete {{amount}} metadata schemas", + "admin.registries.schema.notification.deleted.failure": "Неможливо видалити {{amount}} схему метаданих", + + // "admin.registries.schema.notification.deleted.success": "Successfully deleted {{amount}} metadata schemas", + "admin.registries.schema.notification.deleted.success": "{{amount}} схема метаданих успішно видалена", + + // "admin.registries.schema.notification.edited": "Successfully edited metadata schema \"{{prefix}}\"", + "admin.registries.schema.notification.edited": "Схема метаданих \"{{prefix}}\" успішно відредагована", + + // "admin.registries.schema.notification.failure": "Error", + "admin.registries.schema.notification.failure": "Помилка", + + // "admin.registries.schema.notification.field.created": "Successfully created metadata field \"{{field}}\"", + "admin.registries.schema.notification.field.created": "Поле метаданих \"{{field}}\" успішно створено", + + // "admin.registries.schema.notification.field.deleted.failure": "Failed to delete {{amount}} metadata fields", + "admin.registries.schema.notification.field.deleted.failure": "Неможливо видалити {{amount}} поле(я) метаданих", + + // "admin.registries.schema.notification.field.deleted.success": "Successfully deleted {{amount}} metadata fields", + "admin.registries.schema.notification.field.deleted.success": "{{amount}} поля метаданих успішно видалено", + + // "admin.registries.schema.notification.field.edited": "Successfully edited metadata field \"{{field}}\"", + "admin.registries.schema.notification.field.edited": "\"{{field}}\" поле метаданих успішно відредаговано", + + // "admin.registries.schema.notification.success": "Success", + "admin.registries.schema.notification.success": "Успіх", + + // "admin.registries.schema.return": "Return", + "admin.registries.schema.return": "Повернутись", + + // "admin.registries.schema.title": "DSpace Angular :: Metadata Schema Registry", + "admin.registries.schema.title": "Репозитарій :: реєстр схеми метаданих", + + + + // "admin.access-control.epeople.actions.delete": "Delete EPerson", + + "admin.access-control.epeople.actions.delete": "Видалити користувача", + + // "admin.access-control.epeople.actions.impersonate": "Impersonate EPerson", + + "admin.access-control.epeople.actions.impersonate": "Видати себе за користувача", + + // "admin.access-control.epeople.actions.reset": "Скинути пароль", + + "admin.access-control.epeople.actions.reset": "Скинути пароль", + + // "admin.access-control.epeople.actions.stop-impersonating": "Stop impersonating EPerson", + // TODO New key - Add a translation + "admin.access-control.epeople.actions.stop-impersonating": "Зупинити видавати себе за користувача", + + // "admin.access-control.epeople.title": "Репозитарій :: EPeople", + "admin.access-control.epeople.title": "Репозитарій :: Користувачі", + + // "admin.access-control.epeople.head": "EPeople", + "admin.access-control.epeople.head": "Користувачі", + + // "admin.access-control.epeople.search.head": "Search", + "admin.access-control.epeople.search.head": "Шукати", + + // "admin.access-control.epeople.button.see-all": "Browse All", + "admin.access-control.epeople.button.see-all": "Переглянути всі", + + // "admin.access-control.epeople.search.scope.metadata": "Metadata", + "admin.access-control.epeople.search.scope.metadata": "Метадані", + + // "admin.access-control.epeople.search.scope.email": "E-mail (exact)", + "admin.access-control.epeople.search.scope.email": "E-mail", + + // "admin.access-control.epeople.search.button": "Шукати", + "admin.access-control.epeople.search.button": "Шукати", + + // "admin.access-control.epeople.button.add": "Add EPerson", + "admin.access-control.epeople.button.add": "Додати користувача", + + // "admin.access-control.epeople.table.id": "ID", + "admin.access-control.epeople.table.id": "ID", + + // "admin.access-control.epeople.table.name": "Name", + "admin.access-control.epeople.table.name": "Ім'я", + + // "admin.access-control.epeople.table.email": "E-mail (exact)", + "admin.access-control.epeople.table.email": "E-mail", + + // "admin.access-control.epeople.table.edit": "Edit", + "admin.access-control.epeople.table.edit": "Редагувати", + + // "admin.access-control.epeople.table.edit.buttons.edit": "Edit \"{{name}}\"", + "admin.access-control.epeople.table.edit.buttons.edit": "Редагувати \"{{name}}\"", + + // "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"", + "admin.access-control.epeople.table.edit.buttons.remove": "Видалити \"{{name}}\"", + + // "admin.access-control.epeople.no-items": "No EPeople to show.", + "admin.access-control.epeople.no-items": "Користувачі відсутні.", + + // "admin.access-control.epeople.form.create": "Create EPerson", + "admin.access-control.epeople.form.create": "Створити користувача", + + // "admin.access-control.epeople.form.edit": "Edit EPerson", + "admin.access-control.epeople.form.edit": "Редагувати користувача", + + // "admin.access-control.epeople.form.firstName": "First name", + "admin.access-control.epeople.form.firstName": "Ім'я", + + // "admin.access-control.epeople.form.lastName": "Last name", + "admin.access-control.epeople.form.lastName": "Прізвище", + + // "admin.access-control.epeople.form.email": "E-mail", + "admin.access-control.epeople.form.email": "E-mail", + + // "admin.access-control.epeople.form.emailHint": "Must be valid e-mail address", + "admin.access-control.epeople.form.emailHint": "E-mail повинен бути правильний", + + // "admin.access-control.epeople.form.canLogIn": "Can log in", + "admin.access-control.epeople.form.canLogIn": "Може увійти", + + // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", + "admin.access-control.epeople.form.requireCertificate": "Вимагати сертифікат", + + // "admin.access-control.epeople.form.notification.created.success": "Successfully created EPerson \"{{name}}\"", + "admin.access-control.epeople.form.notification.created.success": "Користувач \"{{name}}\" успішно створений", + + // "admin.access-control.epeople.form.notification.created.failure": "Failed to create EPerson \"{{name}}\"", + "admin.access-control.epeople.form.notification.created.failure": "Неможливо створити користувача \"{{name}}\"", + + // "admin.access-control.epeople.form.notification.created.failure.emailInUse": "Failed to create EPerson \"{{name}}\", email \"{{email}}\" already in use.", + "admin.access-control.epeople.form.notification.created.failure.emailInUse": "Неможливо створити користувача \"{{name}}\", e-pasts \"{{email}}\" вже використовується.", + + // "admin.access-control.epeople.form.notification.edited.failure.emailInUse": "Failed to edit EPerson \"{{name}}\", email \"{{email}}\" already in use.", + "admin.access-control.epeople.form.notification.edited.failure.emailInUse": "Неможливо редагувати користувача \"{{name}}\", e-pasts \"{{email}}\" вже використовується.", + + // "admin.access-control.epeople.form.notification.edited.success": "Successfully edited EPerson \"{{name}}\"", + "admin.access-control.epeople.form.notification.edited.success": "Користувач \"{{name}}\" успішно відредагований", + + // "admin.access-control.epeople.form.notification.edited.failure": "Failed to edit EPerson \"{{name}}\"", + "admin.access-control.epeople.form.notification.edited.failure": "Неможливо відредагувати користувача \"{{name}}\"", + + // "admin.access-control.epeople.form.notification.deleted.success": "Successfully deleted EPerson \"{{name}}\"", + + "admin.access-control.epeople.form.notification.deleted.success": "Користувач \"{{name}}\" успішно видалений", + + // "admin.access-control.epeople.form.notification.deleted.failure": "Failed to delete EPerson \"{{name}}\"", + + "admin.access-control.epeople.form.notification.deleted.failure": "Неможливо видалити користувача \"{{name}}\"", + + // "admin.access-control.epeople.form.groupsEPersonIsMemberOf": "Member of these groups:", + "admin.access-control.epeople.form.groupsEPersonIsMemberOf": "Член груп:", + + // "admin.access-control.epeople.form.table.id": "ID", + "admin.access-control.epeople.form.table.id": "ID", + + // "admin.access-control.epeople.form.table.name": "Name", + "admin.access-control.epeople.form.table.name": "Ім'я", + + // "admin.access-control.epeople.form.memberOfNoGroups": "This EPerson is not a member of any groups", + "admin.access-control.epeople.form.memberOfNoGroups": "Користувач не є членом жодної групи", + + // "admin.access-control.epeople.form.goToGroups": "Add to groups", + "admin.access-control.epeople.form.goToGroups": "Додати до груп", + + // "admin.access-control.epeople.notification.deleted.failure": "Failed to delete EPerson: \"{{name}}\"", + "admin.access-control.epeople.notification.deleted.failure": "Неможливо видалити користувача: \"{{name}}\"", + + // "admin.access-control.epeople.notification.deleted.success": "Successfully deleted EPerson: \"{{name}}\"", + "admin.access-control.epeople.notification.deleted.success": "Користувача \"{{name}}\" успішно видалено", + + + + // "admin.access-control.groups.title": "Репозитарій :: Групи", + "admin.access-control.groups.title": "Репозитарій :: Групи", + + // "admin.access-control.groups.title.singleGroup": "DSpace Angular :: Edit Group", + + "admin.access-control.groups.title.singleGroup": "Репозитарій :: Редагувати групу", + + // "admin.access-control.groups.title.addGroup": "DSpace Angular :: New Group", + + "admin.access-control.groups.title.addGroup": "Репозитарій :: Створити нову групу", + + // "admin.access-control.groups.head": "Groups", + "admin.access-control.groups.head": "Групи", + + // "admin.access-control.groups.button.add": "Add group", + "admin.access-control.groups.button.add": "Створити нову групу", + + // "admin.access-control.groups.search.head": "Search groups", + "admin.access-control.groups.search.head": "Шукати групу", + + // "admin.access-control.groups.button.see-all": "Browse all", + "admin.access-control.groups.button.see-all": "Переглянути всі", + + // "admin.access-control.groups.search.button": "Search", + "admin.access-control.groups.search.button": "Шукати", + + // "admin.access-control.groups.table.id": "ID", + "admin.access-control.groups.table.id": "ID", + + // "admin.access-control.groups.table.name": "Name", + "admin.access-control.groups.table.name": "Ім'я", + + // "admin.access-control.groups.table.members": "Members", + "admin.access-control.groups.table.members": "Члени", + + // "admin.access-control.groups.table.edit": "Edit", + "admin.access-control.groups.table.edit": "Редагувати", + + // "admin.access-control.groups.table.edit.buttons.edit": "Edit \"{{name}}\"", + "admin.access-control.groups.table.edit.buttons.edit": "Редагувати \"{{name}}\"", + + // "admin.access-control.groups.table.edit.buttons.remove": "Delete \"{{name}}\"", + "admin.access-control.groups.table.edit.buttons.remove": "Видалити \"{{name}}\"", + + // "admin.access-control.groups.no-items": "No groups found with this in their name or this as UUID", + "admin.access-control.groups.no-items": "Групи не знайдено за Вашими критеріями ", + + // "admin.access-control.groups.notification.deleted.success": "Successfully deleted group \"{{name}}\"", + "admin.access-control.groups.notification.deleted.success": "Група \"{{name}}\" успішно видалена", + + // "admin.access-control.groups.notification.deleted.failure.title": "Failed to delete group \"{{name}}\"", + + "admin.access-control.groups.notification.deleted.failure.title": "Групу \"{{name}}\" видалити неможливо", + + // "admin.access-control.groups.notification.deleted.failure.content": "Cause: \"{{cause}}\"", + + "admin.access-control.groups.notification.deleted.failure.content": "Причина: \"{{cause}}\"", + + + + // "admin.access-control.groups.form.alert.permanent": "This group is permanent, so it can't be edited or deleted. You can still add and remove group members using this page.", + + "admin.access-control.groups.form.alert.permanent": "Ця група є постійна, тому її не можна редагувати чи видаляти. Ви все ще можете так це додавати та видаляти учасників групи за допомогою цієї сторінки.", + + // "admin.access-control.groups.form.alert.workflowGroup": "This group can’t be modified or deleted because it corresponds to a role in the submission and workflow process in the \"{{name}}\" {{comcol}}. You can delete it from the \"assign roles\" tab on the edit {{comcol}} page. You can still add and remove group members using this page.", + + "admin.access-control.groups.form.alert.workflowGroup": "Цю групу не можна змінити або видалити, оскільки вона відповідає за ролі в процесі подання чи опрацювання документів в \"{{name}}\" {{comcol}}. Ви можете видалити її \"assign roles\" на сторінці {{comcol}} вкладки Редагування. Ви все ще можете додавати та видаляти учасників групи за допомогою цієї сторінки.", + + // "admin.access-control.groups.form.head.create": "Create group", + "admin.access-control.groups.form.head.create": "Створити групу", + + // "admin.access-control.groups.form.head.edit": "Edit group", + "admin.access-control.groups.form.head.edit": "Редагувати групу", + + // "admin.access-control.groups.form.groupName": "Group name", + "admin.access-control.groups.form.groupName": "Ім'я групи", + + // "admin.access-control.groups.form.groupDescription": "Description", + "admin.access-control.groups.form.groupDescription": "Опис", + + // "admin.access-control.groups.form.notification.created.success": "Successfully created Group \"{{name}}\"", + "admin.access-control.groups.form.notification.created.success": "Група \"{{name}}\" успішно створена", + + // "admin.access-control.groups.form.notification.created.failure": "Failed to create Group \"{{name}}\"", + "admin.access-control.groups.form.notification.created.failure": "Неможливо створити групу \"{{name}}\"", + + // "admin.access-control.groups.form.notification.created.failure.groupNameInUse": "Failed to create Group with name: \"{{name}}\", make sure the name is not already in use.", + "admin.access-control.groups.form.notification.created.failure.groupNameInUse": "Неможливо створити групу: \"{{name}}\". Це ім'я вже зайняте .", + + // "admin.access-control.groups.form.notification.edited.failure": "Failed to edit Group \"{{name}}\"", + + "admin.access-control.groups.form.notification.edited.failure": "Неможливо редагувати групу \"{{name}}\"", + + // "admin.access-control.groups.form.notification.edited.failure.groupNameInUse": "Ім'я \"{{name}}\" вже використовується!", + + "admin.access-control.groups.form.notification.edited.failure.groupNameInUse": "Ім'я \"{{name}}\" вже використовується!", + + // "admin.access-control.groups.form.notification.edited.success": "Група \"{{name}}\" успішно відредагована", + + "admin.access-control.groups.form.notification.edited.success": "Група \"{{name}}\" успішно відредагована", + + // "admin.access-control.groups.form.actions.delete": "Delete Group", + + "admin.access-control.groups.form.actions.delete": "Видалити групу", + + // "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"", + + "admin.access-control.groups.form.delete-group.modal.header": "Видалити групу \"{{ dsoName }}\"", + + // "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\"", + + "admin.access-control.groups.form.delete-group.modal.info": "Ви впевнені, що хочете видалити групу \"{{ dsoName }}\"?", + + // "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel", + + "admin.access-control.groups.form.delete-group.modal.cancel": "Відмінити", + + // "admin.access-control.groups.form.delete-group.modal.confirm": "Delete", + + "admin.access-control.groups.form.delete-group.modal.confirm": "Видалити", + + // "admin.access-control.groups.form.notification.deleted.success": "Successfully deleted group \"{{ name }}\"", + + "admin.access-control.groups.form.notification.deleted.success": "Група \"{{ name }}\" успішно видалена", + + // "admin.access-control.groups.form.notification.deleted.failure.title": "Failed to delete group \"{{ name }}\"", + + "admin.access-control.groups.form.notification.deleted.failure.title": "Неможливо видалити групу \"{{ name }}\"", + + // "admin.access-control.groups.form.notification.deleted.failure.content": "Cause: \"{{ cause }}\"", + + "admin.access-control.groups.form.notification.deleted.failure.content": "Причина: \"{{ cause }}\"", + + // "admin.access-control.groups.form.members-list.head": "EPeople", + "admin.access-control.groups.form.members-list.head": "Користувачі", + + // "admin.access-control.groups.form.members-list.search.head": "Add EPeople", + "admin.access-control.groups.form.members-list.search.head": "Додати користувача", + + // "admin.access-control.groups.form.members-list.button.see-all": "Browse All", + "admin.access-control.groups.form.members-list.button.see-all": "Переглянути всіх", + + // "admin.access-control.groups.form.members-list.headMembers": "Current Members", + "admin.access-control.groups.form.members-list.headMembers": "Поточні учасники групи", + + // "admin.access-control.groups.form.members-list.search.scope.metadata": "Metadata", + "admin.access-control.groups.form.members-list.search.scope.metadata": "Метадані", + + // "admin.access-control.groups.form.members-list.search.scope.email": "E-mail (exact)", + "admin.access-control.groups.form.members-list.search.scope.email": "E-mail", + + // "admin.access-control.groups.form.members-list.search.button": "Search", + "admin.access-control.groups.form.members-list.search.button": "Шукати", + + // "admin.access-control.groups.form.members-list.table.id": "ID", + "admin.access-control.groups.form.members-list.table.id": "ID", + + // "admin.access-control.groups.form.members-list.table.name": "Name", + "admin.access-control.groups.form.members-list.table.name": "Ім'я", + + // "admin.access-control.groups.form.members-list.table.edit": "Remove / Add", + "admin.access-control.groups.form.members-list.table.edit": "Видалити / Додати", + + // "admin.access-control.groups.form.members-list.table.edit.buttons.remove": "Remove member with name \"{{name}}\"", + "admin.access-control.groups.form.members-list.table.edit.buttons.remove": "Видалити учасника групи з ім'ям \"{{name}}\"", + + // "admin.access-control.groups.form.members-list.notification.success.addMember": "Successfully added member: \"{{name}}\"", + "admin.access-control.groups.form.members-list.notification.success.addMember": "Учасника \"{{name}}\" успішно додано", + + // "admin.access-control.groups.form.members-list.notification.failure.addMember": "Failed to add member: \"{{name}}\"", + "admin.access-control.groups.form.members-list.notification.failure.addMember": "Неможливо додати \"{{name}}\"", + + // "admin.access-control.groups.form.members-list.notification.success.deleteMember": "Successfully deleted member: \"{{name}}\"", + "admin.access-control.groups.form.members-list.notification.success.deleteMember": "Учасника \"{{name}}\" успішно видалено", + + // "admin.access-control.groups.form.members-list.notification.failure.deleteMember": "Failed to delete member: \"{{name}}\"", + "admin.access-control.groups.form.members-list.notification.failure.deleteMember": "Неможливо видалити учасника \"{{name}}\"", + + // "admin.access-control.groups.form.members-list.table.edit.buttons.add": "Add member with name \"{{name}}\"", + "admin.access-control.groups.form.members-list.table.edit.buttons.add": "Додати учасника з ім'ям \"{{name}}\"", + + // "admin.access-control.groups.form.members-list.notification.failure.noActiveGroup": "No current active group, submit a name first.", + "admin.access-control.groups.form.members-list.notification.failure.noActiveGroup": "Відсутня активна/поточна група. Виберіть спочатку її ім'я", + + // "admin.access-control.groups.form.members-list.no-members-yet": "No members in group yet, search and add.", + "admin.access-control.groups.form.members-list.no-members-yet": "У групі відсутні учасники. Проведіть пошук та додайте", + + // "admin.access-control.groups.form.members-list.no-items": "No EPeople found in that search", + "admin.access-control.groups.form.members-list.no-items": "Не знайдено жодного учасника групи", + + // "admin.access-control.groups.form.subgroups-list.notification.failure": "Something went wrong: \"{{cause}}\"", + + "admin.access-control.groups.form.subgroups-list.notification.failure": "Щось пішло не так: \"{{cause}}\"", + + // "admin.access-control.groups.form.subgroups-list.head": "Groups", + "admin.access-control.groups.form.subgroups-list.head": "Групи", + + // "admin.access-control.groups.form.subgroups-list.search.head": "Add Subgroup", + "admin.access-control.groups.form.subgroups-list.search.head": "Додати групу", + + // "admin.access-control.groups.form.subgroups-list.button.see-all": "Browse All", + "admin.access-control.groups.form.subgroups-list.button.see-all": "Переглянути всі", + + // "admin.access-control.groups.form.subgroups-list.headSubgroups": "Current Subgroups", + "admin.access-control.groups.form.subgroups-list.headSubgroups": "Поточні підгрупи", + + // "admin.access-control.groups.form.subgroups-list.search.button": "Search", + "admin.access-control.groups.form.subgroups-list.search.button": "Шукати", + + // "admin.access-control.groups.form.subgroups-list.table.id": "ID", + "admin.access-control.groups.form.subgroups-list.table.id": "ID", + + // "admin.access-control.groups.form.subgroups-list.table.name": "Name", + "admin.access-control.groups.form.subgroups-list.table.name": "Ім'я", + + // "admin.access-control.groups.form.subgroups-list.table.edit": "Remove / Add", + "admin.access-control.groups.form.subgroups-list.table.edit": "Видалити / Додати", + + // "admin.access-control.groups.form.subgroups-list.table.edit.buttons.remove": "Remove subgroup with name \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.table.edit.buttons.remove": "Видалити підгрупу \"{{name}}\"", + + // "admin.access-control.groups.form.subgroups-list.table.edit.buttons.add": "Add subgroup with name \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.table.edit.buttons.add": "Додати підгрупу \"{{name}}\"", + + // "admin.access-control.groups.form.subgroups-list.table.edit.currentGroup": "Current group", + "admin.access-control.groups.form.subgroups-list.table.edit.currentGroup": "Поточна група", + + // "admin.access-control.groups.form.subgroups-list.notification.success.addSubgroup": "Successfully added subgroup: \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.notification.success.addSubgroup": "Підгрупа \"{{name}}\" успішно додана", + + // "admin.access-control.groups.form.subgroups-list.notification.failure.addSubgroup": "Failed to add subgroup: \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.notification.failure.addSubgroup": "Неможливо додати підгрупу \"{{name}}\"", + + // "admin.access-control.groups.form.subgroups-list.notification.success.deleteSubgroup": "Successfully deleted subgroup: \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.notification.success.deleteSubgroup": "Підгрупа \"{{name}}\" успішно видалена", + + // "admin.access-control.groups.form.subgroups-list.notification.failure.deleteSubgroup": "Failed to delete subgroup: \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.notification.failure.deleteSubgroup": "Неможливо видалити підгрупу \"{{name}}\"", + + // "admin.access-control.groups.form.subgroups-list.notification.failure.noActiveGroup": "No current active group, submit a name first.", + "admin.access-control.groups.form.subgroups-list.notification.failure.noActiveGroup": "Відсутня активна група. Спочатку вкажіть ім'я", + + // "admin.access-control.groups.form.subgroups-list.notification.failure.subgroupToAddIsActiveGroup": "This is the current group, can't be added.", + "admin.access-control.groups.form.subgroups-list.notification.failure.subgroupToAddIsActiveGroup": "Це поточна група. Вона не може бути додана", + + // "admin.access-control.groups.form.subgroups-list.no-items": "No groups found with this in their name or this as UUID", + "admin.access-control.groups.form.subgroups-list.no-items": "Група не знайдена за критерієм імені чи UUID", + + // "admin.access-control.groups.form.subgroups-list.no-subgroups-yet": "No subgroups in group yet.", + "admin.access-control.groups.form.subgroups-list.no-subgroups-yet": "Жодної підгрупи у групі немає.", + + // "admin.access-control.groups.form.return": "Return to groups", + "admin.access-control.groups.form.return": "Повернутись до груп", + + + + // "admin.search.breadcrumbs": "Administrative Search", + "admin.search.breadcrumbs": "Пошук адміністратора", + + // "admin.search.collection.edit": "Edit", + "admin.search.collection.edit": "Редагувати", + + // "admin.search.community.edit": "Edit", + "admin.search.community.edit": "Редагувати", + + // "admin.search.item.delete": "Delete", + "admin.search.item.delete": "Видалити", + + // "admin.search.item.edit": "Edit", + "admin.search.item.edit": "Редагувати", + + // "admin.search.item.make-private": "Make Private", + "admin.search.item.make-private": "Зробити приватним", + + // "admin.search.item.make-public": "Make Public", + "admin.search.item.make-public": "Зробити публічним", + + // "admin.search.item.move": "Move", + "admin.search.item.move": "Перемістити", + + // "admin.search.item.reinstate": "Reinstate", + "admin.search.item.reinstate": "Відновити", + + // "admin.search.item.withdraw": "Withdraw", + "admin.search.item.withdraw": "Вилучити", + + // "admin.search.title": "Administrative Search", + "admin.search.title": "Пошук адміністратора", + + // "administrativeView.search.results.head": "Administrative Search", + "administrativeView.search.results.head": "Пошук адміністратора", + + + + + // "admin.workflow.breadcrumbs": "Administer Workflow", + "admin.workflow.breadcrumbs": "Адміністрування робочого процесу", + + // "admin.workflow.title": "Administer Workflow", + "admin.workflow.title": "Адміністрування робочого процесу", + + // "admin.workflow.item.workflow": "Workflow", + "admin.workflow.item.workflow": "Робочий процес", + + // "admin.workflow.item.delete": "Delete", + "admin.workflow.item.delete": "Видалити", + + // "admin.workflow.item.send-back": "Send back", + "admin.workflow.item.send-back": "Повернути назад", + + + + // "admin.metadata-import.breadcrumbs": "Import Metadata", + + "admin.metadata-import.breadcrumbs": "Імпортувати метадані", + + // "admin.metadata-import.title": "Import Metadata", + + "admin.metadata-import.title": "Імпортувати метадані", + + // "admin.metadata-import.page.header": "Import Metadata", + + "admin.metadata-import.page.header": "Імпортувати метадані", + + // "admin.metadata-import.page.help": "You can drop or browse CSV files that contain batch metadata operations on files here", + // TODO New key - Add a translation + "admin.metadata-import.page.help": "Тут можна скинути або переглянути файли CSV, які містять пакетні операції з метаданими", + + // "admin.metadata-import.page.dropMsg": "Drop a metadata CSV to import", + + "admin.metadata-import.page.dropMsg": "Скинути метадані CSV для імпорту", + + // "admin.metadata-import.page.dropMsgReplace": "Drop to replace the metadata CSV to import", + + "admin.metadata-import.page.dropMsgReplace": "Скинути для заміни метаданих CSV для імпорту", + + // "admin.metadata-import.page.button.return": "Return", + + "admin.metadata-import.page.button.return": "Повернутись", + + // "admin.metadata-import.page.button.proceed": "Proceed", + + "admin.metadata-import.page.button.proceed": "Продовжити", + + // "admin.metadata-import.page.error.addFile": "Select file first!", + + "admin.metadata-import.page.error.addFile": "Спочатку виберіть файл", + + + + + // "auth.errors.invalid-user": "Invalid email address or password.", + "auth.errors.invalid-user": "Неправильний емейл чи пароль.", + + // "auth.messages.expired": "Your session has expired. Please log in again.", + "auth.messages.expired": "Час сесії вичерпано. Увійдіть знову.", + + + + // "bitstream.edit.bitstream": "Bitstream: ", + "bitstream.edit.bitstream": "Файл: ", + + // "bitstream.edit.form.description.hint": "Optionally, provide a brief description of the file, for example \"Main article\" or \"Experiment data readings\".", + "bitstream.edit.form.description.hint": "За бажанням надайте, наприклад, короткий опис файлу, \"Galvanais raksts\" або \"експериментальні читання даних\".", + + // "bitstream.edit.form.description.label": "Description", + "bitstream.edit.form.description.label": "Опис", + + // "bitstream.edit.form.embargo.hint": "The first day from which access is allowed. This date cannot be modified on this form. To set an embargo date for a bitstream, go to the Item Status tab, click Authorizations..., create or edit the bitstream's READ policy, and set the Start Date as desired.", + "bitstream.edit.form.embargo.hint": "Перший день, з якого доступ дозволено. Ця дата може бути змінена у цій формі. Для ембарго на цей файл перейдіть у вкладку Статус документа(item), та клацніть Авторизація..., створіть чи відредагуйте політику доступу Читання (READ) та задайте Дата старту.", + + // "bitstream.edit.form.embargo.label": "Embargo until specific date", + "bitstream.edit.form.embargo.label": "Ембарго до дати", + + // "bitstream.edit.form.fileName.hint": "Change the filename for the bitstream. Note that this will change the display bitstream URL, but old links will still resolve as long as the sequence ID does not change.", + "bitstream.edit.form.fileName.hint": "Змініть назву файла. Зверніть увагу, що це вплине на посилання. Проте мали б прцювати і старе посилання доки не зміниться ID документу.", + + // "bitstream.edit.form.fileName.label": "Filename", + "bitstream.edit.form.fileName.label": "Ім'я файлу", + + // "bitstream.edit.form.newFormat.label": "Describe new format", + "bitstream.edit.form.newFormat.label": "Опишіть новий формат", + + // "bitstream.edit.form.newFormat.hint": "The application you used to create the file, and the version number (for example, \"ACMESoft SuperApp version 1.5\").", + "bitstream.edit.form.newFormat.hint": "Програмне забезпечення та його версія, яке Ви використали при створенні файлу (наприклад, \" ACMESoft SuperApp versija 1.5 \").", + + // "bitstream.edit.form.primaryBitstream.label": "Primary bitstream", + "bitstream.edit.form.primaryBitstream.label": "Головний файл", + + // "bitstream.edit.form.selectedFormat.hint": "If the format is not in the above list, select \"format not in list\" above and describe it under \"Describe new format\".", + "bitstream.edit.form.selectedFormat.hint": "Якщо формату немає у переліку, будь ласка опишіть його.", + + // "bitstream.edit.form.selectedFormat.label": "Selected Format", + "bitstream.edit.form.selectedFormat.label": "Вибрані формати", + + // "bitstream.edit.form.selectedFormat.unknown": "Format not in list", + "bitstream.edit.form.selectedFormat.unknown": "Формату немає у переліку", + + // "bitstream.edit.notifications.error.format.title": "An error occurred saving the bitstream's format", + "bitstream.edit.notifications.error.format.title": "Сталась помилка при збереженні формату файла.", + + // "bitstream.edit.notifications.saved.content": "Your changes to this bitstream were saved.", + "bitstream.edit.notifications.saved.content": "Зміни до цього файлу були збережені.", + + // "bitstream.edit.notifications.saved.title": "Bitstream saved", + "bitstream.edit.notifications.saved.title": "Файл збережено", + + // "bitstream.edit.title": "Edit bitstream", + "bitstream.edit.title": "Редагувати файл", + + + + // "browse.comcol.by.author": "By Author", + "browse.comcol.by.author": "За автором", + + // "browse.comcol.by.dateissued": "За датою", + "browse.comcol.by.dateissued": "За датою", + + // "browse.comcol.by.subject": "By Subject", + "browse.comcol.by.subject": "За темою", + + // "browse.comcol.by.title": "By Title", + "browse.comcol.by.title": "За назвою", + + // "browse.comcol.head": "Browse", + "browse.comcol.head": "Переглянути", + + // "browse.empty": "No items to show.", + "browse.empty": "Немає документів.", + + // "browse.metadata.author": "Author", + "browse.metadata.author": "Автор", + + // "browse.metadata.dateissued": "Issue Date", + "browse.metadata.dateissued": "Дата публікації", + + // "browse.metadata.subject": "Subject", + "browse.metadata.subject": "Ключові слова", + + // "browse.metadata.title": "Title", + "browse.metadata.title": "Назва", + + // "browse.metadata.author.breadcrumbs": "Browse by Author", + "browse.metadata.author.breadcrumbs": "Переглянути за автором", + + // "browse.metadata.dateissued.breadcrumbs": "Browse by Date", + "browse.metadata.dateissued.breadcrumbs": "Переглянути за датою", + + // "browse.metadata.subject.breadcrumbs": "Browse by Subject", + "browse.metadata.subject.breadcrumbs": "Переглянути за ключовими словами", + + // "browse.metadata.title.breadcrumbs": "Browse by Title", + "browse.metadata.title.breadcrumbs": "Переглянути за назвою", + + // "browse.startsWith.choose_start": "(Choose start)", + "browse.startsWith.choose_start": "(виберіть початок)", + + // "browse.startsWith.choose_year": "(Choose year)", + "browse.startsWith.choose_year": "(виберіть рік)", + + // "browse.startsWith.jump": "Jump to a point in the index:", + "browse.startsWith.jump": "Перейти на індекс:", + + // "browse.startsWith.months.april": "April", + "browse.startsWith.months.april": "Квітень", + + // "browse.startsWith.months.august": "August", + "browse.startsWith.months.august": "Серпень", + + // "browse.startsWith.months.december": "December", + "browse.startsWith.months.december": "Грудень", + + // "browse.startsWith.months.february": "February", + "browse.startsWith.months.february": "Лютий", + + // "browse.startsWith.months.january": "January", + "browse.startsWith.months.january": "Січень", + + // "browse.startsWith.months.july": "July", + "browse.startsWith.months.july": "Липень", + + // "browse.startsWith.months.june": "June", + "browse.startsWith.months.june": "Червень", + + // "browse.startsWith.months.march": "March", + "browse.startsWith.months.march": "Березень", + + // "browse.startsWith.months.may": "May", + "browse.startsWith.months.may": "Травень", + + // "browse.startsWith.months.none": "(Choose month)", + "browse.startsWith.months.none": "(Виберіть місяць)", + + // "browse.startsWith.months.november": "November", + "browse.startsWith.months.november": "Листопад", + + // "browse.startsWith.months.october": "October", + "browse.startsWith.months.october": "Жовтень", + + // "browse.startsWith.months.september": "September", + "browse.startsWith.months.september": "Вересень", + + // "browse.startsWith.submit": "Go", + "browse.startsWith.submit": "Перейти", + + // "browse.startsWith.type_date": "Or type in a date (year-month):", + "browse.startsWith.type_date": "Або введіть дату (рік-місяць):", + + // "browse.startsWith.type_text": "Or enter first few letters:", + "browse.startsWith.type_text": "Або введіть перші символи:", + + // "browse.title": "Browsing {{ collection }} by {{ field }} {{ value }}", + "browse.title": "Перегляд {{ collection }} за {{ field }} {{ value }}", + + + // "chips.remove": "Remove chip", + // TODO "chips.remove": "Remove chip", + "chips.remove": "Remove chip", + + + + // "collection.create.head": "Create a Collection", + "collection.create.head": "Створити зібрання", + + // "collection.create.notifications.success": "Successfully created the Collection", + "collection.create.notifications.success": "Зібрання успішно створено", + + // "collection.create.sub-head": "Create a Collection for Community {{ parent }}", + "collection.create.sub-head": "Створити зібрання у колекції {{ parent }}", + + // "collection.curate.header": "Curate Collection: {{collection}}", + // TODO New key - Add a translation + "collection.curate.header": "Curate Collection: {{collection}}", + + // "collection.delete.cancel": "Cancel", + "collection.delete.cancel": "Відмінити", + + // "collection.delete.confirm": "Confirm", + "collection.delete.confirm": "Підтвердити", + + // "collection.delete.head": "Delete Collection", + "collection.delete.head": "Видалити зібрання", + + // "collection.delete.notification.fail": "Collection could not be deleted", + "collection.delete.notification.fail": "Зібрання не може бути видалене", + + // "collection.delete.notification.success": "Successfully deleted collection", + "collection.delete.notification.success": "Зібрання успішно видалено", + + // "collection.delete.text": "Are you sure you want to delete collection \"{{ dso }}\"", + "collection.delete.text": "Ви впевнені, що хочете видалити зібрання \"{{ dso }}\"?", + + + + // "collection.edit.delete": "Delete this collection", + "collection.edit.delete": "Видалити це зібрання", + + // "collection.edit.head": "Edit Collection", + "collection.edit.head": "Редагувати зібрання", + + // "collection.edit.breadcrumbs": "Edit Collection", + "collection.edit.breadcrumbs": "Редагувати зібрання", + + + + // "collection.edit.tabs.mapper.head": "Item Mapper", + + "collection.edit.tabs.mapper.head": "Карта документа", + + // "collection.edit.tabs.item-mapper.title": "Collection Edit - Item Mapper", + + "collection.edit.tabs.item-mapper.title": "Редагування зібрання - Карта документа", + + // "collection.edit.item-mapper.cancel": "Cancel", + "collection.edit.item-mapper.cancel": "Відмінити", + + // "collection.edit.item-mapper.collection": "Collection: \"{{name}}\"", + "collection.edit.item-mapper.collection": "Зібрання: \"{{name}}\"", + + // "collection.edit.item-mapper.confirm": "Map selected items", + "collection.edit.item-mapper.confirm": "Карта вибраних документів", + + // "collection.edit.item-mapper.description": "This is the item mapper tool that allows collection administrators to map items from other collections into this collection. You can search for items from other collections and map them, or browse the list of currently mapped items.", + "collection.edit.item-mapper.description": "Це інструмент відображення елементів документа, який дозволяє адміністраторам колекції відображати елементи з інших колекцій у цю колекцію. Ви можете шукати елементи з інших колекцій і відображати їх, або переглядати список відображених елементів.", + + // "collection.edit.item-mapper.head": " - Map Items from Other Collections", + "collection.edit.item-mapper.head": "Карта документа - карта документів з іншого зібрання", + + // "collection.edit.item-mapper.no-search": "Please enter a query to search", + "collection.edit.item-mapper.no-search": "Введіть запит для пошуку", + + // "collection.edit.item-mapper.notifications.map.error.content": "Errors occurred for mapping of {{amount}} items.", + "collection.edit.item-mapper.notifications.map.error.content": "Виникла помилка {{amount}} при відображені елементів документа.", + + // "collection.edit.item-mapper.notifications.map.error.head": "Mapping errors", + "collection.edit.item-mapper.notifications.map.error.head": "Помилка відображення елементів документа", + + // "collection.edit.item-mapper.notifications.map.success.content": "Successfully mapped {{amount}} items.", + "collection.edit.item-mapper.notifications.map.success.content": "Документ {{amount}} успішно mapped.", + + // "collection.edit.item-mapper.notifications.map.success.head": "Mapping completed", + // TODO "collection.edit.item-mapper.notifications.map.success.head": "Mapping completed" + "collection.edit.item-mapper.notifications.map.success.head": "Mapping completed", + + // "collection.edit.item-mapper.notifications.unmap.error.content": "Errors occurred for removing the mappings of {{amount}} items.", + "collection.edit.item-mapper.notifications.unmap.error.content": "Виникла помилка mappings документа {{amount}}.", + + // "collection.edit.item-mapper.notifications.unmap.error.head": "Remove mapping errors", + "collection.edit.item-mapper.notifications.unmap.error.head": "Видалити помилки mapping", + + // "collection.edit.item-mapper.notifications.unmap.success.content": "Successfully removed the mappings of {{amount}} items.", + "collection.edit.item-mapper.notifications.unmap.success.content": "Успішно видалено mappings документа {{amount}}.", + + // "collection.edit.item-mapper.notifications.unmap.success.head": "Remove mapping completed", + // TODO "collection.edit.item-mapper.notifications.unmap.success.head": "Remove mapping completed", + "collection.edit.item-mapper.notifications.unmap.success.head": "Remove mapping completed", + + // "collection.edit.item-mapper.remove": "Remove selected item mappings", + "collection.edit.item-mapper.remove": "Видалити mapping документа", + + // "collection.edit.item-mapper.tabs.browse": "Browse mapped items", + "collection.edit.item-mapper.tabs.browse": "Переглянути елементи документа", + + // "collection.edit.item-mapper.tabs.map": "Map new items", + "collection.edit.item-mapper.tabs.map": "mapping нових документів", + + + + // "collection.edit.logo.label": "Collection logo", + "collection.edit.logo.label": "Логотип зібрання", + + // "collection.edit.logo.notifications.add.error": "Uploading Collection logo failed. Please verify the content before retrying.", + "collection.edit.logo.notifications.add.error": "Завантаження логотипу зібрання не вдалось.", + + // "collection.edit.logo.notifications.add.success": "Upload Collection logo successful.", + "collection.edit.logo.notifications.add.success": "Логотип зібрання успішно завантажено.", + + // "collection.edit.logo.notifications.delete.success.title": "Logo deleted", + "collection.edit.logo.notifications.delete.success.title": "Логотип видалено", + + // "collection.edit.logo.notifications.delete.success.content": "Successfully deleted the collection's logo", + "collection.edit.logo.notifications.delete.success.content": "Логотип зібрання успішно видалено.", + + // "collection.edit.logo.notifications.delete.error.title": "Error deleting logo", + "collection.edit.logo.notifications.delete.error.title": "Виникла помилка при видаленні логотипа", + + // "collection.edit.logo.upload": "Drop a Collection Logo to upload", + "collection.edit.logo.upload": "Виберіть логотип зібрання для завантаження", + + + + // "collection.edit.notifications.success": "Successfully edited the Collection", + "collection.edit.notifications.success": "Зібрання успішно відредаговано", + + // "collection.edit.return": "Return", + "collection.edit.return": "Повернутись", + + + + // "collection.edit.tabs.curate.head": "Curate", + // TODO "collection.edit.tabs.curate.head": "Curate", + "collection.edit.tabs.curate.head": "Curate", + + // "collection.edit.tabs.curate.title": "Collection Edit - Curate", + // TODO "collection.edit.tabs.curate.title": "Collection Edit - Curate", + "collection.edit.tabs.curate.title": "Collection Edit - Curate", + + // "collection.edit.tabs.authorizations.head": "Authorizations", + + "collection.edit.tabs.authorizations.head": "Авторизація", + + // "collection.edit.tabs.authorizations.title": "Collection Edit - Authorizations", + + "collection.edit.tabs.authorizations.title": "Редагування зібрання - авторизація ", + + // "collection.edit.tabs.metadata.head": "Edit Metadata", + "collection.edit.tabs.metadata.head": "Редагувати метадані", + + // "collection.edit.tabs.metadata.title": "Collection Edit - Metadata", + "collection.edit.tabs.metadata.title": "Редагування зібрання - метадані", + + // "collection.edit.tabs.roles.head": "Assign Roles", + "collection.edit.tabs.roles.head": "Призначити ролі", + + // "collection.edit.tabs.roles.title": "Collection Edit - Roles", + "collection.edit.tabs.roles.title": "Редагування зібрання - ролі", + + // "collection.edit.tabs.source.external": "This collection harvests its content from an external source", + "collection.edit.tabs.source.external": "Вміст зібрання взято із зовнішнього джерела інформації", + + // "collection.edit.tabs.source.form.errors.oaiSource.required": "You must provide a set id of the target collection.", + "collection.edit.tabs.source.form.errors.oaiSource.required": "Ви повинні надати ідентифікатор цільового зібрання", + + // "collection.edit.tabs.source.form.harvestType": "Content being harvested", + "collection.edit.tabs.source.form.harvestType": "Вміст отримано", + + // "collection.edit.tabs.source.form.head": "Configure an external source", + "collection.edit.tabs.source.form.head": "Налаштувати зовнішні джерела інформації", + + // "collection.edit.tabs.source.form.metadataConfigId": "Metadata Format", + "collection.edit.tabs.source.form.metadataConfigId": "Формат метаданих", + + // "collection.edit.tabs.source.form.oaiSetId": "OAI specific set id", + // TODO "collection.edit.tabs.source.form.oaiSetId": "OAI specific set id" + "collection.edit.tabs.source.form.oaiSetId": "OAI specific set id", + + // "collection.edit.tabs.source.form.oaiSource": "OAI Provider", + "collection.edit.tabs.source.form.oaiSource": "OAI Провайдер", + + // "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Harvest metadata and bitstreams (requires ORE support)", + "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Завантажити метадані та файли (потрібна ORE підтримка)", + + // "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Harvest metadata and references to bitstreams (requires ORE support)", + "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Завантажити метадані та посилання на файли (потрібна ORE підтримка)", + + // "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Harvest metadata only", + "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Завантажити тільки метадані", + + // "collection.edit.tabs.source.head": "Content Source", + "collection.edit.tabs.source.head": "Джерело вмісту", + + // "collection.edit.tabs.source.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", + "collection.edit.tabs.source.notifications.discarded.content": "Ваші зміни скасовано. Щоб відновити зміни, натисніть кнопку -Скасувати-", + + // "collection.edit.tabs.source.notifications.discarded.title": "Changed discarded", + "collection.edit.tabs.source.notifications.discarded.title": "Ваші зміни скасовано", + + // "collection.edit.tabs.source.notifications.invalid.content": "Your changes were not saved. Please make sure all fields are valid before you save.", + "collection.edit.tabs.source.notifications.invalid.content": "Ваші зміни не збережено. Перед збереженням переконайтеся, що всі поля правильно заповнені.", + + // "collection.edit.tabs.source.notifications.invalid.title": "Metadata invalid", + "collection.edit.tabs.source.notifications.invalid.title": "Помилки у метаданих", + + // "collection.edit.tabs.source.notifications.saved.content": "Your changes to this collection's content source were saved.", + "collection.edit.tabs.source.notifications.saved.content": "Ваші зміни до вмісту зібрання збережено.", + + // "collection.edit.tabs.source.notifications.saved.title": "Content Source saved", + "collection.edit.tabs.source.notifications.saved.title": "Вміст джерела даних збереено", + + // "collection.edit.tabs.source.title": " - Content Source", + "collection.edit.tabs.source.title": "Редагування зібрання - джерела даних", + + + + // "collection.edit.template.add-button": "Add", + + "collection.edit.template.add-button": "Додати", + + // "collection.edit.template.breadcrumbs": "Item template", + + "collection.edit.template.breadcrumbs": "Шаблон документа", + + // "collection.edit.template.cancel": "Cancel", + + "collection.edit.template.cancel": "Відмінити", + + // "collection.edit.template.delete-button": "Delete", + + "collection.edit.template.delete-button": "Видалити", + + // "collection.edit.template.edit-button": "Edit", + + "collection.edit.template.edit-button": "Редагувати", + + // "collection.edit.template.head": "Edit Template Item for Collection \"{{ collection }}\"", + + "collection.edit.template.head": "Редагувати шаблон документа зібрання \"{{ collection }}\"", + + // "collection.edit.template.label": "Template item", + + "collection.edit.template.label": "Шаблон документа", + + // "collection.edit.template.notifications.delete.error": "Failed to delete the item template", + + "collection.edit.template.notifications.delete.error": "Не вдалося видалити шаблон елемента", + + // "collection.edit.template.notifications.delete.success": "Шаблон документа успішно видалено", + + "collection.edit.template.notifications.delete.success": "Шаблон документа успішно видалено", + + // "collection.edit.template.title": "Edit Template Item", + + "collection.edit.template.title": "Редагувати шаблон документа", + + + + // "collection.form.abstract": "Short Description", + "collection.form.abstract": "Короткий опис", + + // "collection.form.description": "Introductory text (HTML)", + "collection.form.description": "Вступний текст (HTML)", + + // "collection.form.errors.title.required": "Please enter a collection name", + "collection.form.errors.title.required": "Введіть назву зібрання", + + // "collection.form.license": "License", + "collection.form.license": "Ліцензійна угода", + + // "collection.form.provenance": "Provenance", + "collection.form.provenance": "Походження", + + // "collection.form.rights": "Copyright text (HTML)", + "collection.form.rights": "Копірайт (HTML)", + + // "collection.form.tableofcontents": "News (HTML)", + "collection.form.tableofcontents": "Новини (HTML)", + + // "collection.form.title": "Name", + "collection.form.title": "Ім'я", + + + + // "collection.listelement.badge": "Collection", + + "collection.listelement.badge": "Зібрання", + + +//"home.recent-submissions.head": "Recent Submissions", +"home.recent-submissions.head": "Нові надходження", + + +//"thumbnail.default.alt": "Thumbnail Image", +"thumbnail.default.alt": "Ескіз", + +// "thumbnail.default.placeholder": "No Thumbnail Available", +"thumbnail.default.placeholder": "Ескіз недоступний", + +// "thumbnail.project.alt": "Project Logo", + "thumbnail.project.alt": "Логотип проекту", + +// TODO "thumbnail.project.placeholder": "Project Placeholder Image", + "thumbnail.project.placeholder": "Project Placeholder Image", + +// "thumbnail.orgunit.alt": "OrgUnit Logo", +"thumbnail.orgunit.alt": "Логотип організації", + + "thumbnail.orgunit.placeholder": "OrgUnit Placeholder Image", + +// "thumbnail.person.alt": "Profile Picture", +"thumbnail.person.alt": "Зображення профілю", + + // "thumbnail.person.placeholder": "No Profile Picture Available", +"thumbnail.person.placeholder": "Зображення профілю відсутне", + + + + // "collection.page.browse.recent.head": "Recent Submissions", + "collection.page.browse.recent.head": "Нові надходження", + + // "collection.page.browse.recent.empty": "No items to show", + "collection.page.browse.recent.empty": "Немає документів", + + // "collection.page.edit": "Edit this collection", + + "collection.page.edit": "Редагувати зібрання", + + // "collection.page.handle": "Permanent URI for this collection", + "collection.page.handle": "Постійне посилання зібрання", + + // "collection.page.license": "License", + "collection.page.license": "Ліцензійна угода", + + // "collection.page.news": "News", + "collection.page.news": "Новини", + + + + // "collection.select.confirm": "Confirm selected", + "collection.select.confirm": "Підтвердити вибрані", + + // "collection.select.empty": "No collections to show", + "collection.select.empty": "Зібрання відсутні", + + // "collection.select.table.title": "Title", + "collection.select.table.title": "Назва", + + + + // "collection.source.update.notifications.error.content": "The provided settings have been tested and didn't work.", + "collection.source.update.notifications.error.content": "Введені налаштування перевірені та не працюють.", + + // "collection.source.update.notifications.error.title": "Server Error", + "collection.source.update.notifications.error.title": "Помилка роботи сервера, трясця його матері", + + + + // "communityList.tabTitle": "DSpace - Community List", + "communityList.tabTitle": "Репозитарій - Фонди", + + // "communityList.title": "List of Communities", + "communityList.title": "Перелік фондів", + + // "communityList.showMore": "Show More", + "communityList.showMore": "Детальніше", + + + + // "community.create.head": "Create a Community", + "community.create.head": "Створити фонд", + + // "community.create.notifications.success": "Successfully created the Community", + "community.create.notifications.success": "Фонд успішно створено", + + // "community.create.sub-head": "Create a Sub-Community for Community {{ parent }}", + "community.create.sub-head": "Створити підфонд фонду {{ parent }}", + + // "community.curate.header": "Curate Community: {{community}}", + + "community.curate.header": "Основний фонд: {{community}}", + + // "community.delete.cancel": "Cancel", + "community.delete.cancel": "Відмінити", + + // "community.delete.confirm": "Confirm", + "community.delete.confirm": "Підтвердити", + + // "community.delete.head": "Delete Community", + "community.delete.head": "Видалити фонд", + + // "community.delete.notification.fail": "Community could not be deleted", + "community.delete.notification.fail": "Фонд не може бути видалено", + + // "community.delete.notification.success": "Successfully deleted community", + "community.delete.notification.success": "Фонд успішно видалено", + + // "community.delete.text": "Are you sure you want to delete community \"{{ dso }}\"", + "community.delete.text": "Ви впевнені, що хочете видалити фонд \"{{ dso }}\"", + + // "community.edit.delete": "Delete this community", + "community.edit.delete": "Видалити цей фонд", + + // "community.edit.head": "Edit Community", + "community.edit.head": "Редагувати фонд", + + // "community.edit.breadcrumbs": "Edit Community", + "community.edit.breadcrumbs": "Редагувати фонд", + + + // "community.edit.logo.label": "Community logo", + "community.edit.logo.label": "Логотип фонду", + + // "community.edit.logo.notifications.add.error": "Uploading Community logo failed. Please verify the content before retrying.", + "community.edit.logo.notifications.add.error": "Помилка завантаження логотипу фонду. Перевірте все ще раз.", + + // "community.edit.logo.notifications.add.success": "Upload Community logo successful.", + "community.edit.logo.notifications.add.success": "Успішне завантаження логотипу фонду", + + // "community.edit.logo.notifications.delete.success.title": "Logo deleted", + "community.edit.logo.notifications.delete.success.title": "Логотип видалено", + + // "community.edit.logo.notifications.delete.success.content": "Successfully deleted the community's logo", + "community.edit.logo.notifications.delete.success.content": "Логотип фонду успішно видалено", + + // "community.edit.logo.notifications.delete.error.title": "Error deleting logo", + "community.edit.logo.notifications.delete.error.title": "Помилка видалення логотипу", + + // "community.edit.logo.upload": "Drop a Community Logo to upload", + "community.edit.logo.upload": "Виберіть логотип фонду для завантаження", + + + + // "community.edit.notifications.success": "Successfully edited the Community", + "community.edit.notifications.success": "Фонд успішно відредаговано", + + // "community.edit.notifications.unauthorized": "You do not have privileges to make this change", + + "community.edit.notifications.unauthorized": "У Вас немає повноважень для змін", + + // "community.edit.notifications.error": "An error occured while editing the Community", + + "community.edit.notifications.error": "Виникла помилка при редагуванні фонду", + + // "community.edit.return": "Return", + "community.edit.return": "Повернутись", + + + + // "community.edit.tabs.curate.head": "Curate", + "community.edit.tabs.curate.head": "Основне/Curate", + + // "community.edit.tabs.curate.title": "Community Edit - Curate", + "community.edit.tabs.curate.title": "Редагування фонду - основне", + + // "community.edit.tabs.metadata.head": "Edit Metadata", + "community.edit.tabs.metadata.head": "Реадгувати метадані", + + // "community.edit.tabs.metadata.title": "Community Edit - Metadata", + "community.edit.tabs.metadata.title": "Редагування фонду - метадані", + + // "community.edit.tabs.roles.head": "Assign Roles", + "community.edit.tabs.roles.head": "Призначити ролі", + + // "community.edit.tabs.roles.title": "Community Edit - Roles", + "community.edit.tabs.roles.title": "Редаувати фонд - ролі", + + // "community.edit.tabs.authorizations.head": "Authorizations", + + "community.edit.tabs.authorizations.head": "Авторизація", + + // "community.edit.tabs.authorizations.title": "Community Edit - Authorizations", + + "community.edit.tabs.authorizations.title": "Редагування фонду - авторизація", + + + + // "community.listelement.badge": "Community", + + "community.listelement.badge": "Фонд", + + + + // "comcol-role.edit.no-group": "None", + + "comcol-role.edit.no-group": "Жодної", + + // "comcol-role.edit.create": "Create", + + "comcol-role.edit.create": "Створити", + + // "comcol-role.edit.restrict": "Restrict", + + "comcol-role.edit.restrict": "Обмежити", + + // "comcol-role.edit.delete": "Delete", + + "comcol-role.edit.delete": "Видалити", + + + // "comcol-role.edit.community-admin.name": "Administrators", + + "comcol-role.edit.community-admin.name": "Адміністратори", + + // "comcol-role.edit.collection-admin.name": "Administrators", + + "comcol-role.edit.collection-admin.name": "Адміністратори", + + + // "comcol-role.edit.community-admin.description": "Community administrators can create sub-communities or collections, and manage or assign management for those sub-communities or collections. In addition, they decide who can submit items to any sub-collections, edit item metadata (after submission), and add (map) existing items from other collections (subject to authorization).", + // TODO New key - Add a translation + "comcol-role.edit.community-admin.description": "Адміністратори фонду можуть створювати підфонди або зібрання, а також керувати цими. Крім того, вони вирішують, хто може надсилати документи до будь-якого зібрання, редагувати метадані документа (після надсилання) і додавати (відображати) існуючі елементи з інших зібрань(за умови наданих повноважень).", + + // "comcol-role.edit.collection-admin.description": "Collection administrators decide who can submit items to the collection, edit item metadata (after submission), and add (map) existing items from other collections to this collection (subject to authorization for that collection).", + + "comcol-role.edit.collection-admin.description": "Адміністратори зібрання вирішують, хто може надсилати документи до зібрання, редагувати метадані документів (після надсилання) і додавати документи з інших зібрань (за умови наданих повноважень).", + + + // "comcol-role.edit.submitters.name": "Submitters", + + "comcol-role.edit.submitters.name": "Подавачі/Submitters", + + // "comcol-role.edit.submitters.description": "The E-People and Groups that have permission to submit new items to this collection.", + + "comcol-role.edit.submitters.description": "Користувачі та групи у яких є повноваження вносити документи до цього зібрання.", + + + // "comcol-role.edit.item_read.name": "Default item read access", + + "comcol-role.edit.item_read.name": "Доступ на читання документа", + + // "comcol-role.edit.item_read.description": "E-People and Groups that can read new items submitted to this collection. Changes to this role are not retroactive. Existing items in the system will still be viewable by those who had read access at the time of their addition.", + + "comcol-role.edit.item_read.description": "Користувачі та групи, які можуть читати нові документи, що надіслані до цього зібрання. Зміни цієї ролі не мають зворотної сили. Існуючі документи в системі все ще будуть доступні для перегляду тим, хто мав доступ для читання на момент їх додавання.", + + // "comcol-role.edit.item_read.anonymous-group": "Default read for incoming items is currently set to Anonymous.", + + "comcol-role.edit.item_read.anonymous-group": "Для групи Anonymous встановлено права документа на читання.", + + + // "comcol-role.edit.bitstream_read.name": "Доступ на читання для файла", + + "comcol-role.edit.bitstream_read.name": "Доступ на читання для файла", + + // "comcol-role.edit.bitstream_read.description": "Community administrators can create sub-communities or collections, and manage or assign management for those sub-communities or collections. In addition, they decide who can submit items to any sub-collections, edit item metadata (after submission), and add (map) existing items from other collections (subject to authorization).", + + "comcol-role.edit.bitstream_read.description": "Адміністратори фонду можуть створювати підфонди або зібрання, а також керувати ними. Крім того, вони вирішують, хто може надсилати документи до будь-якого зібрання, редагувати метадані документа (після надсилання) і додавати документи з інших колекцій (за умови наявності прав доступу)..", + + // "comcol-role.edit.bitstream_read.anonymous-group": "Default read for incoming bitstreams is currently set to Anonymous.", + + "comcol-role.edit.bitstream_read.anonymous-group": "Для групи Anonymous встановлено права файла на читання", + + + // "comcol-role.edit.editor.name": "Редактори", + + "comcol-role.edit.editor.name": "Редактори", + + // "comcol-role.edit.editor.description": "Editors are able to edit the metadata of incoming submissions, and then accept or reject them.", + + "comcol-role.edit.editor.description": "Редактори мають повноваження редагувати метадані, приймати та відхиляти їх, зокрема, для документів, що заносяться у репозитарій.", + + + // "comcol-role.edit.finaleditor.name": "Final editors", + + "comcol-role.edit.finaleditor.name": "Остаточні редактори", + + // "comcol-role.edit.finaleditor.description": "Final editors are able to edit the metadata of incoming submissions, but will not be able to reject them.", + + "comcol-role.edit.finaleditor.description": "Остаточні редактори мають повноваження редагувати метадані, але не мають права відхилити документ.", + + + // "comcol-role.edit.reviewer.name": "Reviewers", + + "comcol-role.edit.reviewer.name": "Рецензенти", + + // "comcol-role.edit.reviewer.description": "Reviewers are able to accept or reject incoming submissions. However, they are not able to edit the submission's metadata.", + + "comcol-role.edit.reviewer.description": "Рецензенти можуть приймати або відхиляти вхідні документи. Однак вони не можуть редагувати метадані.", + + + + // "community.form.abstract": "Short Description", + "community.form.abstract": "Короткий опис", + + // "community.form.description": "Introductory text (HTML)", + "community.form.description": "Вхідний текст (HTML)", + + // "community.form.errors.title.required": "Please enter a community name", + "community.form.errors.title.required": "Будь ласка, введіть назву фонду", + + // "community.form.rights": "Copyright text (HTML)", + "community.form.rights": "Копірайт (HTML)", + + // "community.form.tableofcontents": "News (HTML)", + "community.form.tableofcontents": "Новини (HTML)", + + // "community.form.title": "Name", + "community.form.title": "Ім'я", + + // "community.page.edit": "Edit this community", + + "community.page.edit": "Редагувати фонд", + + // "community.page.handle": "Permanent URI for this community", + "community.page.handle": "Постійне посилання на фонд", + + // "community.page.license": "License", + "community.page.license": "Ліцензійна угода", + + // "community.page.news": "News", + "community.page.news": "Новини", + + // "community.all-lists.head": "Subcommunities and Collections", + "community.all-lists.head": "Підфонди та зібрання", + + // "community.sub-collection-list.head": "Collections of this Community", + "community.sub-collection-list.head": "Зібрання у цьому фонді", + + // "community.sub-community-list.head": "Communities of this Community", + "community.sub-community-list.head": "Фонди, що знаходяться у цьому фонді", + + + // "cookies.consent.accept-all": "Accept all", + "cookies.consent.accept-all": "Прийняти все", + + // "cookies.consent.accept-selected": "Accept selected", + "cookies.consent.accept-selected": "Прийняти вибране", + + // "cookies.consent.app.opt-out.description": "This app is loaded by default (but you can opt out)", + "cookies.consent.app.opt-out.description": "Цей додаток був завантажений по замовчуванню. Але Ви можете відмовитись від нього", + + // "cookies.consent.app.opt-out.title": "(opt-out)", + "cookies.consent.app.opt-out.title": "(відмовитись)", + + // "cookies.consent.app.purpose": "purpose", + "cookies.consent.app.purpose": "ціль", + + // "cookies.consent.app.required.description": "This application is always required", + "cookies.consent.app.required.description": "Цей додаток завжди потрібний", + + // "cookies.consent.app.required.title": "(always required)", + "cookies.consent.app.required.title": "(завжди потрібний)", + + // "cookies.consent.update": "There were changes since your last visit, please update your consent.", + "cookies.consent.update": "З часу вашого останнього відвідування відбулися зміни, підтвердьте це.", + + // "cookies.consent.close": "Close", + "cookies.consent.close": "Закрити", + + // "cookies.consent.decline": "Decline", + "cookies.consent.decline": "Відхилити", + + // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: Authentication, Preferences, Acknowledgement and Statistics.
To learn more, please read our {privacyPolicy}.", + "cookies.consent.content-notice.description": "Ми збираємо та обробляємо вашу особисту інформацію для таких цілей: автентифікація, налаштування та статистика.
Щоб дізнатися більше, прочитайте нашу політику {privacyPolicy}.", + + // "cookies.consent.content-notice.learnMore": "Customize", + "cookies.consent.content-notice.learnMore": "Налаштувати", + + // "cookies.consent.content-modal.description": "Here you can see and customize the information that we collect about you.", + "cookies.consent.content-modal.description": "Тут ви можете переглянути та налаштувати збір інформаціїпро Вас.", + + // "cookies.consent.content-modal.privacy-policy.name": "privacy policy", + "cookies.consent.content-modal.privacy-policy.name": "політика приватності", + + // "cookies.consent.content-modal.privacy-policy.text": " {privacyPolicy}.", + "cookies.consent.content-modal.privacy-policy.text": "Детальніше - {privacyPolicy}.", + + // "cookies.consent.content-modal.title": "Information that we collect", + "cookies.consent.content-modal.title": "Інформація, яку ми збираємо", + + // "cookies.consent.app.title.authentication": "Authentication", + "cookies.consent.app.title.authentication": "Увійти", + + // "cookies.consent.app.description.authentication": "Required for signing you in", + "cookies.consent.app.description.authentication": "Необхідно для входу", + + // "cookies.consent.app.title.preferences": "Preferences", + "cookies.consent.app.title.preferences": "Налаштування", + + // "cookies.consent.app.description.preferences": "Required for saving your preferences", + "cookies.consent.app.description.preferences": "Необхідно для збереження ваших налаштувань", + + // "cookies.consent.app.title.acknowledgement": "Acknowledgement", + "cookies.consent.app.title.acknowledgement": "Підтвердження", + + // "cookies.consent.app.description.acknowledgement": "Required for saving your acknowledgements and consents", + "cookies.consent.app.description.acknowledgement": "Необхідний для збереження Ваших підтверджень і згод", + + // "cookies.consent.app.title.google-analytics": "Google Analytics", + "cookies.consent.app.title.google-analytics": "Google Analytics", + + // "cookies.consent.app.description.google-analytics": "Allows us to track statistical data", + "cookies.consent.app.description.google-analytics": "Дозволяє нам відстежувати статистичні дані", + + // "cookies.consent.purpose.functional": "Functional", + "cookies.consent.purpose.functional": "Функціональний", + + // "cookies.consent.purpose.statistical": "Statistical", + "cookies.consent.purpose.statistical": "Статичний", + + + // "curation-task.task.checklinks.label": "Check Links in Metadata", + "curation-task.task.checklinks.label": "Перевірте посилання у метаданих", + + // "curation-task.task.noop.label": "NOOP", + // TODO New key - Add a translation + "curation-task.task.noop.label": "NOOP", + + // "curation-task.task.profileformats.label": "Profile Bitstream Formats", + "curation-task.task.profileformats.label": "Профіль форматів файлів", + + // "curation-task.task.requiredmetadata.label": "Check for Required Metadata", + "curation-task.task.requiredmetadata.label": "Перевірте наявність необхідних метаданих", + + // "curation-task.task.translate.label": "Microsoft Translator", + "curation-task.task.translate.label": "Microsoft Translator", + + // "curation-task.task.vscan.label": "Virus Scan", + "curation-task.task.vscan.label": "Перевірка на віруси", + + + + // "curation.form.task-select.label": "Task:", + "curation.form.task-select.label": "Завдання:", + + // "curation.form.submit": "Start", + "curation.form.submit": "Почати", + + // "curation.form.submit.success.head": "The curation task has been started successfully", + "curation.form.submit.success.head": "Завдання успішно розпочате", + + // "curation.form.submit.success.content": "You will be redirected to the corresponding process page.", + "curation.form.submit.success.content": "Ви будете перенаправлені на сторінку відповідного процесу.", + + // "curation.form.submit.error.head": "Running the curation task failed", + "curation.form.submit.error.head": "Не вдалося виконати завдання", + + // "curation.form.submit.error.content": "An error occured when trying to start the curation task.", + "curation.form.submit.error.content": "Виникла помилка при спробі розпочати завдання.", + + // "curation.form.handle.label": "Handle:", + + "curation.form.handle.label": "Handle:", + + // "curation.form.handle.hint": "Hint: Enter [your-handle-prefix]/0 to run a task across entire site (not all tasks may support this capability)", + "curation.form.handle.hint": "Підказка: Введіть [your-handle-prefix]/0 для запуску завдання на весь сайт (не всі види завдань це підтримують)", + + + + // "dso-selector.create.collection.head": "New collection", + "dso-selector.create.collection.head": "Нове зібрання", + + // "dso-selector.create.collection.sub-level": "Create a new collection in", + "dso-selector.create.collection.sub-level": "Створити нове зібрання в", + + // "dso-selector.create.community.head": "New community", + "dso-selector.create.community.head": "Новий фонд", + + // "dso-selector.create.community.sub-level": "Create a new community in", + "dso-selector.create.community.sub-level": "Створити новий фонд в", + + // "dso-selector.create.community.top-level": "Create a new top-level community", + "dso-selector.create.community.top-level": "Створити фонд верхнього рівня", + + // "dso-selector.create.item.head": "New item", + "dso-selector.create.item.head": "Новий документ", + + // "dso-selector.create.item.sub-level": "Create a new item in", + "dso-selector.create.item.sub-level": "Створити новий документ в", + + // "dso-selector.create.submission.head": "New submission", + // TODO New key - Add a translation + "dso-selector.create.submission.head": "New submission", + + // "dso-selector.edit.collection.head": "Edit collection", + "dso-selector.edit.collection.head": "Редагувати зібрання", + + // "dso-selector.edit.community.head": "Edit community", + "dso-selector.edit.community.head": "Редагувати фонд", + + // "dso-selector.edit.item.head": "Edit item", + "dso-selector.edit.item.head": "Редагувати документ", + + // "dso-selector.export-metadata.dspaceobject.head": "Export metadata from", + "dso-selector.export-metadata.dspaceobject.head": "Експорт метаданих з", + + // "dso-selector.no-results": "No {{ type }} found", + "dso-selector.no-results": "{{ type }} не знайдено", + + // "dso-selector.placeholder": "Search for a {{ type }}", + "dso-selector.placeholder": "Шукати {{ type }}", + + + + // "confirmation-modal.export-metadata.header": "Export metadata for {{ dsoName }}", + "confirmation-modal.export-metadata.header": "Експорт метаданих для {{ dsoName }}", + + // "confirmation-modal.export-metadata.info": "Are you sure you want to export metadata for {{ dsoName }}", + "confirmation-modal.export-metadata.info": "Ви впевнені, що хочете експортувати метадані для {{ dsoName }}?", + + // "confirmation-modal.export-metadata.cancel": "Cancel", + "confirmation-modal.export-metadata.cancel": "Скасувати", + + // "confirmation-modal.export-metadata.confirm": "Export", + "confirmation-modal.export-metadata.confirm": "Скасувати", + + // "confirmation-modal.delete-eperson.header": "Delete EPerson \"{{ dsoName }}\"", + "confirmation-modal.delete-eperson.header": "Видалити користувача \"{{ dsoName }}\"", + + // "confirmation-modal.delete-eperson.info": "Are you sure you want to delete EPerson \"{{ dsoName }}\"", + "confirmation-modal.delete-eperson.info": "Ви впевнені, що хочете видалити користувача \"{{ dsoName }}\"?", + + // "confirmation-modal.delete-eperson.cancel": "Cancel", + "confirmation-modal.delete-eperson.cancel": "Скасувати", + + // "confirmation-modal.delete-eperson.confirm": "Delete", + "confirmation-modal.delete-eperson.confirm": "Видалити", + + + // "error.bitstream": "Error fetching bitstream", + "error.bitstream": "Виникла помилка при отриманні файлу", + + // "error.browse-by": "Error fetching items", + "error.browse-by": "Виникла помилка при отриманні документа", + + // "error.collection": "Error fetching collection", + "error.collection": "Виникла помилка при отриманні зібрання", + + // "error.collections": "Error fetching collections", + "error.collections": "Виникла помилка при отриманні зібрань", + + // "error.community": "Error fetching community", + "error.community": "Виникла помилка при отриманні фонду", + + // "error.identifier": "No item found for the identifier", + "error.identifier": "Жодного документу не знайдено за вказаним ідентифікатором", + + // "error.default": "Error", + "error.default": "Виникла якась помилка, шляк трафить", + + // "error.item": "Error fetching item", + "error.item": "Виникла помилка при отриманні документа", + + // "error.items": "Error fetching items", + "error.items": "Виникла помилка при отриманні документів", + + // "error.objects": "Error fetching objects", + "error.objects": "Виникла помилка при отриманні об'єктів", + + // "error.recent-submissions": "Error fetching recent submissions", + "error.recent-submissions": "Виникла помилка при отриманні останніх submissions ", + + // "error.search-results": "Error fetching search results", + "error.search-results": "Виникла помилка при отриманні пошукових результатів", + + // "error.sub-collections": "Error fetching sub-collections", + "error.sub-collections": "Виникла помилка при отриманні підзібрання", + + // "error.sub-communities": "Error fetching sub-communities", + "error.sub-communities": "Виникла помилка при отриманні підфонду", + + // "error.submission.sections.init-form-error": "An error occurred during section initialize, please check your input-form configuration. Details are below :

", + "error.submission.sections.init-form-error": "Сталася помилка. Перевірте конфігурацію форми введення. Подробиці нижче:

", + + // "error.top-level-communities": "Error fetching top-level communities", + "error.top-level-communities": "Виникла помилка при отриманні фонду верхнього рівня", + + // "error.validation.license.notgranted": "You must grant this license to complete your submission. If you are unable to grant this license at this time you may save your work and return later or remove the submission.", + "error.validation.license.notgranted": "Ви повинні дати згоду на умови ліцензії, щоб завершити submission. Якщо ви не можете погодитись на умови ліцензії на даний момент, ви можете зберегти свою роботу та повернутися пізніше або видалити submission.", + + // "error.validation.pattern": "This input is restricted by the current pattern: {{ pattern }}.", + "error.validation.pattern": "Вхідна інформація обмежена поточним шаблоном: {{ pattern }}.", + + // "error.validation.filerequired": "The file upload is mandatory", + "error.validation.filerequired": "Завантаження файлу є обов'язковим", + + + + // "file-section.error.header": "Error obtaining files for this item", + "file-section.error.header": "Помилка отримання файлів для цього документа", + + + + // "footer.copyright": "copyright © 2002-{{ year }}", + "footer.copyright": "copyright © 2002-{{ year }}", + + // "footer.link.dspace": "DSpace software", + //TODO Change your univer + "footer.link.dspace": "DSpace software and Lviv Polytechnic National University", + + // "footer.link.lyrasis": "LYRASIS", + "footer.link.lyrasis": "LYRASIS", + + // "footer.link.cookies": "Cookie settings", + "footer.link.cookies": "Налаштування куків", + + // "footer.link.privacy-policy": "Privacy policy", + "footer.link.privacy-policy": "Політика приватності", + + // "footer.link.end-user-agreement":"End User Agreement", + "footer.link.end-user-agreement":"Угода користувача", + + + + // "forgot-email.form.header": "Forgot Password", + "forgot-email.form.header": "Забули пароль?", + + // "forgot-email.form.info": "Enter Register an account to subscribe to collections for email updates, and submit new items to DSpace.", + "forgot-email.form.info": "Зареєструйтесь для отримання повідомлень про нові надходження та отримайте можливість вносити документи.", + + // "forgot-email.form.email": "Email Address *", + "forgot-email.form.email": "Email *", + + // "forgot-email.form.email.error.required": "Please fill in an email address", + "forgot-email.form.email.error.required": "Введіть email", + + // "forgot-email.form.email.error.pattern": "Please fill in a valid email address", + "forgot-email.form.email.error.pattern": "Ви повинні ввести правильний email", + + // "forgot-email.form.email.hint": "This address will be verified and used as your login name.", + "forgot-email.form.email.hint": "Ми провіримо цей email. Використовуйте його для входу у репозитарій", + + // "forgot-email.form.submit": "Submit", + "forgot-email.form.submit": "Надіслати", + + // "forgot-email.form.success.head": "Verification email sent", + "forgot-email.form.success.head": "На Ваш email було надіслане повідомлення", + + // "forgot-email.form.success.content": "An email has been sent to {{ email }} containing a special URL and further instructions.", + "forgot-email.form.success.content": "На {{ email }} було надіслане повідомлення, що містить спеціальне посилання та подальші інструкції.", + + // "forgot-email.form.error.head": "Error when trying to register email", + "forgot-email.form.error.head": "Виникла помилка при реєстрації email", + + // "forgot-email.form.error.content": "An error occured when registering the following email address: {{ email }}", + "forgot-email.form.error.content": "Виникла помилка при реєстрації email: {{ email }}", + + + + // "forgot-password.title": "Forgot Password", + "forgot-password.title": "Забули пароль?", + + // "forgot-password.form.head": "Forgot Password", + "forgot-password.form.head": "Забули пароль?", + + // "forgot-password.form.info": "Enter a new password in the box below, and confirm it by typing it again into the second box. It should be at least six characters long.", + "forgot-password.form.info": "Введіть новий пароль у поле нижче та підтвердьте його, ввівши його ще раз у друге поле. Він має містити щонайменше 6 символів.", + + // "forgot-password.form.card.security": "Security", + "forgot-password.form.card.security": "Безпека", + + // "forgot-password.form.identification.header": "Identify", + "forgot-password.form.identification.header": "Ідентифікація", + + // "forgot-password.form.identification.email": "Email address: ", + "forgot-password.form.identification.email": "Email: ", + + // "forgot-password.form.label.password": "Password", + "forgot-password.form.label.password": "Пароль", + + // "forgot-password.form.label.passwordrepeat": "Retype to confirm", + "forgot-password.form.label.passwordrepeat": "Введіть ще раз для підтвердження", + + // "forgot-password.form.error.empty-password": "Please enter a password in the box below.", + "forgot-password.form.error.empty-password": "Введіть пароль у поле нижче.", + + // "forgot-password.form.error.matching-passwords": "The passwords do not match.", + "forgot-password.form.error.matching-passwords": "Паролі не співпадають.", + + // "forgot-password.form.error.password-length": "The password should be at least 6 characters long.", + "forgot-password.form.error.password-length": "Довжина пароля повинна становити не менше 6 символів.", + + // "forgot-password.form.notification.error.title": "Error when trying to submit new password", + "forgot-password.form.notification.error.title": "Виникла помилка при реєстрації нового пароля", + + // "forgot-password.form.notification.success.content": "The password reset was successful. You have been logged in as the created user.", + "forgot-password.form.notification.success.content": "Пароль успішно скинуто. Ви увійшли під щойно створеним користувачем.", + + // "forgot-password.form.notification.success.title": "Password reset completed", + "forgot-password.form.notification.success.title": "Пароль скинуто успішно", + + // "forgot-password.form.submit": "Submit password", + "forgot-password.form.submit": "Надіслати пароль", + + + + // "form.add": "Add", + "form.add": "Додати", + + // "form.add-help": "Click here to add the current entry and to add another one", + "form.add-help": "Натисніть тут, щоб додати поточний запис і додати інший", + + // "form.cancel": "Cancel", + "form.cancel": "Скасувати", + + // "form.clear": "Clear", + "form.clear": "Очистити", + + // "form.clear-help": "Click here to remove the selected value", + "form.clear-help": "Натисніть тут, щоб видалити вибране значення", + + // "form.edit": "Edit", + "form.edit": "Редагувати", + + // "form.edit-help": "Click here to edit the selected value", + "form.edit-help": "Натисніть тут, щоб змінити вибране значення", + + // "form.first-name": "First name", + "form.first-name": "Ім'я", + + // "form.group-collapse": "Collapse", + "form.group-collapse": "Згорнути", + + // "form.group-collapse-help": "Click here to collapse", + "form.group-collapse-help": "Натисніть тут щоб згорнути", + + // "form.group-expand": "Expand", + "form.group-expand": "Розгорнути", + + // "form.group-expand-help": "Click here to expand and add more elements", + "form.group-expand-help": "Натисніть тут, щоб розгорнути та додати більше елементів", + + // "form.last-name": "Last name", + "form.last-name": "Прізвище", + + // "form.loading": "Loading...", + "form.loading": "Вантажиться...", + + // "form.lookup": "Lookup", + "form.lookup": "Пошук", + + // "form.lookup-help": "Click here to look up an existing relation", + "form.lookup-help": "Клацніть тут, щоб знайти існуючий зв’язок", + + // "form.no-results": "No results found", + "form.no-results": "Нічого не знайдено", + + // "form.no-value": "No value entered", + "form.no-value": "Значення не введено", + + // "form.other-information": {}, + "form.other-information": {}, + + // "form.remove": "Remove", + "form.remove": "Видалити", + + // "form.save": "Save", + "form.save": "Зберегти", + + // "form.save-help": "Save changes", + "form.save-help": "Зберегти зміни", + + // "form.search": "Search", + "form.search": "Пошук", + + // "form.search-help": "Click here to look for an existing correspondence", + "form.search-help": "Клацніть тут, щоб знайти наявне листування", + + // "form.submit": "Submit", + "form.submit": "Надіслати", + + + + // "home.description": "", + "home.description": "", + + // "home.breadcrumbs": "Home", + "home.breadcrumbs": "Головна", + + // "home.title": "DSpace Angular :: Home", + // TODO Change univer name + "home.title": "Репозитарій Львівської політехніки :: Головна", + + // "home.top-level-communities.head": "Communities in DSpace", + "home.top-level-communities.head": "Фонди", + + // "home.top-level-communities.help": "Select a community to browse its collections.", + "home.top-level-communities.help": "Виберіть фонд, щоб переглянути його зібрання.", + + + + // "info.end-user-agreement.accept": "I have read and I agree to the End User Agreement", + "info.end-user-agreement.accept": "Я прочитав та погоджуюсь із користувацькою угодою", + + // "info.end-user-agreement.accept.error": "An error occurred accepting the End User Agreement", + "info.end-user-agreement.accept.error": "Виникла помилки при при фіксуванні Вашої згоди на користувацьку угоду", + + // "info.end-user-agreement.accept.success": "Successfully updated the End User Agreement", + "info.end-user-agreement.accept.success": "Користувацьку угоду успішно оновлено", + + // "info.end-user-agreement.breadcrumbs": "End User Agreement", + "info.end-user-agreement.breadcrumbs": "Користувацька угода", + + // "info.end-user-agreement.buttons.cancel": "Cancel", + "info.end-user-agreement.buttons.cancel": "Відмінити", + + // "info.end-user-agreement.buttons.save": "Save", + "info.end-user-agreement.buttons.save": "Зберегти", + + // "info.end-user-agreement.head": "End User Agreement", + "info.end-user-agreement.head": "Користувацька угода", + + // "info.end-user-agreement.title": "End User Agreement", + "info.end-user-agreement.title": "Користувацька угода", + + // "info.privacy.breadcrumbs": "Privacy Statement", + "info.privacy.breadcrumbs": "Заява про конфіденційність", + + // "info.privacy.head": "Privacy Statement", + "info.privacy.head": "Заява про конфіденційність", + + // "info.privacy.title": "Privacy Statement", + "info.privacy.title": "Заява про конфіденційність", + + + + // "item.alerts.private": "This item is private", + "item.alerts.private": "Доступ до документа закритий", + + // "item.alerts.withdrawn": "This item has been withdrawn", + "item.alerts.withdrawn": "Цей документ було вилучено", + + + + // "item.edit.authorizations.heading": "With this editor you can view and alter the policies of an item, plus alter policies of individual item components: bundles and bitstreams. Briefly, an item is a container of bundles, and bundles are containers of bitstreams. Containers usually have ADD/REMOVE/READ/WRITE policies, while bitstreams only have READ/WRITE policies.", + "item.edit.authorizations.heading": "За допомогою цього редактора ви можете переглядати та змінювати політики документа, а також змінювати політики окремих компонентів документа. Документ — це множина пакетів, а пакети — це множина файлів. Контейнери зазвичай мають політики ADD/REMOVE/READ/WRITE, тоді як файли мають лише політики READ/WRITE.", + + // "item.edit.authorizations.title": "Edit item's Policies", + "item.edit.authorizations.title": "Редагувати політики документа", + + + + // "item.badge.private": "Private", + "item.badge.private": "Приватне", + + // "item.badge.withdrawn": "Withdrawn", + "item.badge.withdrawn": "Вилучено", + + + + // "item.bitstreams.upload.bundle": "Bundle", + "item.bitstreams.upload.bundle": "контейнер файлів", + + // "item.bitstreams.upload.bundle.placeholder": "Select a bundle", + "item.bitstreams.upload.bundle.placeholder": "Виберіть контейнер файлів", + + // "item.bitstreams.upload.bundle.new": "Create bundle", + "item.bitstreams.upload.bundle.new": "Створити контейнер файлів", + + // "item.bitstreams.upload.bundles.empty": "This item doesn\'t contain any bundles to upload a bitstream to.", + "item.bitstreams.upload.bundles.empty": "Цей документ не містить контейнеру файлів, щоб завантажити файл.", + + // "item.bitstreams.upload.cancel": "Cancel", + "item.bitstreams.upload.cancel": "Відмінити", + + // "item.bitstreams.upload.drop-message": "Drop a file to upload", + "item.bitstreams.upload.drop-message": "Виберіть файл для завантаження", + + // "item.bitstreams.upload.item": "Item: ", + "item.bitstreams.upload.item": "Документ: ", + + // "item.bitstreams.upload.notifications.bundle.created.content": "Successfully created new bundle.", + "item.bitstreams.upload.notifications.bundle.created.content": "Контейнер файлів створено.", + + // "item.bitstreams.upload.notifications.bundle.created.title": "Created bundle", + "item.bitstreams.upload.notifications.bundle.created.title": "Контейнер файлів створено.", + + // "item.bitstreams.upload.notifications.upload.failed": "Upload failed. Please verify the content before retrying.", + "item.bitstreams.upload.notifications.upload.failed": "Не вдалось завантажити. Перевірте вміст даних", + + // "item.bitstreams.upload.title": "Upload bitstream", + "item.bitstreams.upload.title": "Завантажити файл", + + + + // "item.edit.bitstreams.bundle.edit.buttons.upload": "Upload", + "item.edit.bitstreams.bundle.edit.buttons.upload": "Завантажити", + + // "item.edit.bitstreams.bundle.displaying": "Currently displaying {{ amount }} bitstreams of {{ total }}.", + "item.edit.bitstreams.bundle.displaying": "Зараз відображаються {{ amount }}файли {{ total }}.", + + // "item.edit.bitstreams.bundle.load.all": "Load all ({{ total }})", + "item.edit.bitstreams.bundle.load.all": "Завантажити все ({{ total }})", + + // "item.edit.bitstreams.bundle.load.more": "Load more", + "item.edit.bitstreams.bundle.load.more": "Завантажити ще", + + // "item.edit.bitstreams.bundle.name": "BUNDLE: {{ name }}", + "item.edit.bitstreams.bundle.name": "Контейнер файлів: {{ name }}", + + // "item.edit.bitstreams.discard-button": "Discard", + "item.edit.bitstreams.discard-button": "Відхилити", + + // "item.edit.bitstreams.edit.buttons.download": "Download", + "item.edit.bitstreams.edit.buttons.download": "Завантажити", + + // "item.edit.bitstreams.edit.buttons.drag": "Drag", + "item.edit.bitstreams.edit.buttons.drag": "Перетягнути", + + // "item.edit.bitstreams.edit.buttons.edit": "Edit", + "item.edit.bitstreams.edit.buttons.edit": "Редагувати", + + // "item.edit.bitstreams.edit.buttons.remove": "Remove", + "item.edit.bitstreams.edit.buttons.remove": "Видалити", + + // "item.edit.bitstreams.edit.buttons.undo": "Undo changes", + "item.edit.bitstreams.edit.buttons.undo": "Відмінити зміни", + + // "item.edit.bitstreams.empty": "This item doesn't contain any bitstreams. Click the upload button to create one.", + "item.edit.bitstreams.empty": "Цей документ не містить жодного файлу. Клацніть для завантаження", + + // "item.edit.bitstreams.headers.actions": "Actions", + "item.edit.bitstreams.headers.actions": "Дії", + + // "item.edit.bitstreams.headers.bundle": "Bundle", + "item.edit.bitstreams.headers.bundle": "Контецнер файлів", + + // "item.edit.bitstreams.headers.description": "Description", + "item.edit.bitstreams.headers.description": "Опис", + + // "item.edit.bitstreams.headers.format": "Format", + "item.edit.bitstreams.headers.format": "Формат", + + // "item.edit.bitstreams.headers.name": "Name", + "item.edit.bitstreams.headers.name": "Назва", + + // "item.edit.bitstreams.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", + "item.edit.bitstreams.notifications.discarded.content": "Ваші зміни скасовано. Щоб відновити зміни, натисніть кнопку -Назад-.", + + // "item.edit.bitstreams.notifications.discarded.title": "Changes discarded", + "item.edit.bitstreams.notifications.discarded.title": "Зміни скасовано", + + // "item.edit.bitstreams.notifications.move.failed.title": "Error moving bitstreams", + "item.edit.bitstreams.notifications.move.failed.title": "Помилка переміщення файлу", + + // "item.edit.bitstreams.notifications.move.saved.content": "Your move changes to this item's bitstreams and bundles have been saved.", + "item.edit.bitstreams.notifications.move.saved.content": "Зміни до документа збережені.", + + // "item.edit.bitstreams.notifications.move.saved.title": "Move changes saved", + "item.edit.bitstreams.notifications.move.saved.title": "Зміни до документа збережені", + + // "item.edit.bitstreams.notifications.outdated.content": "The item you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts", + "item.edit.bitstreams.notifications.outdated.content": "Документ, над яким ви зараз працюєте, був змінений іншим користувачем. Ваші поточні зміни відхилено, щоб запобігти конфліктам", + + // "item.edit.bitstreams.notifications.outdated.title": "Changes outdated", + "item.edit.bitstreams.notifications.outdated.title": "Зміни застаріли", + + // "item.edit.bitstreams.notifications.remove.failed.title": "Error deleting bitstream", + "item.edit.bitstreams.notifications.remove.failed.title": "Помилка видалення файла", + + // "item.edit.bitstreams.notifications.remove.saved.content": "Your removal changes to this item's bitstreams have been saved.", + "item.edit.bitstreams.notifications.remove.saved.content": "Ваші зміни до документа збережено.", + + // "item.edit.bitstreams.notifications.remove.saved.title": "Removal changes saved", + "item.edit.bitstreams.notifications.remove.saved.title": "Ваші зміни до документа збережено", + + // "item.edit.bitstreams.reinstate-button": "Undo", + "item.edit.bitstreams.reinstate-button": "Назад", + + // "item.edit.bitstreams.save-button": "Save", + "item.edit.bitstreams.save-button": "Зберегти", + + // "item.edit.bitstreams.upload-button": "Upload", + "item.edit.bitstreams.upload-button": "Завантажити", + + + + // "item.edit.delete.cancel": "Cancel", + "item.edit.delete.cancel": "Відмінити", + + // "item.edit.delete.confirm": "Delete", + "item.edit.delete.confirm": "Видалити", + + // "item.edit.delete.description": "Are you sure this item should be completely deleted? Caution: At present, no tombstone would be left.", + "item.edit.delete.description": "Ви впевнені, що цей документ потрібно повністю видалити? Застереження: можливості відновити не буде.", + + // "item.edit.delete.error": "An error occurred while deleting the item", + "item.edit.delete.error": "Виникла помилка при видаленні документа", + + // "item.edit.delete.header": "Delete item: {{ id }}", + "item.edit.delete.header": "Видалити документ: {{ id }}", + + // "item.edit.delete.success": "The item has been deleted", + "item.edit.delete.success": "Документ видалено", + + // "item.edit.head": "Edit Item", + "item.edit.head": "Редагувати документ", + + // "item.edit.breadcrumbs": "Edit Item", + "item.edit.breadcrumbs": "Редагувати документ", + + + // "item.edit.tabs.mapper.head": "Collection Mapper", + "item.edit.tabs.mapper.head": "Карта зібрання", + + // "item.edit.tabs.item-mapper.title": "Item Edit - Collection Mapper", + "item.edit.tabs.item-mapper.title": "Редагування документа - карта зібрання", + + // "item.edit.item-mapper.buttons.add": "Map item to selected collections", + "item.edit.item-mapper.buttons.add": "Карта документа до вибраного зібрання", + + // "item.edit.item-mapper.buttons.remove": "Remove item's mapping for selected collections", + "item.edit.item-mapper.buttons.remove": "Видалити карту документа для вибраного зібрання", + + // "item.edit.item-mapper.cancel": "Cancel", + "item.edit.item-mapper.cancel": "Відмінити", + + // "item.edit.item-mapper.description": "This is the item mapper tool that allows administrators to map this item to other collections. You can search for collections and map them, or browse the list of collections the item is currently mapped to.", + "item.edit.item-mapper.description": "Це інструмент карти документа, який дозволяє адміністраторам прив'язувати цей документ до інших зібрань. Ви можете шукати зібрання та прив'язувати їх, або переглядати список зібрань на які посилається документ.", + + // "item.edit.item-mapper.head": "Item Mapper - Map Item to Collections", + "item.edit.item-mapper.head": "Карта документа - прив'язка документа до зібрання", + + // "item.edit.item-mapper.item": "Item: \"{{name}}\"", + "item.edit.item-mapper.item": "Документ: \"{{name}}\"", + + // "item.edit.item-mapper.no-search": "Please enter a query to search", + "item.edit.item-mapper.no-search": "Введіть запит для пошуку", + + // "item.edit.item-mapper.notifications.add.error.content": "Errors occurred for mapping of item to {{amount}} collections.", + "item.edit.item-mapper.notifications.add.error.content": "Виникла помилка прив'язування документа до{{amount}} зібрання.", + + // "item.edit.item-mapper.notifications.add.error.head": "Mapping errors", + "item.edit.item-mapper.notifications.add.error.head": "Помилка прив'язування", + + // "item.edit.item-mapper.notifications.add.success.content": "Successfully mapped item to {{amount}} collections.", + "item.edit.item-mapper.notifications.add.success.content": "Документ успішно прив'язано до {{amount}} зібрання.", + + // "item.edit.item-mapper.notifications.add.success.head": "Mapping completed", + "item.edit.item-mapper.notifications.add.success.head": "Прив'язування завершене", + + // "item.edit.item-mapper.notifications.remove.error.content": "Errors occurred for the removal of the mapping to {{amount}} collections.", + "item.edit.item-mapper.notifications.remove.error.content": "Виникла помилка прив'язування документа до {{amount}} зібрання.", + + // "item.edit.item-mapper.notifications.remove.error.head": "Removal of mapping errors", + "item.edit.item-mapper.notifications.remove.error.head": "Виникла помилка прив'язування", + + // "item.edit.item-mapper.notifications.remove.success.content": "Successfully removed mapping of item to {{amount}} collections.", + "item.edit.item-mapper.notifications.remove.success.content": "Прив'язування документа до {{amount}} зібрання успішно видалено.", + + // "item.edit.item-mapper.notifications.remove.success.head": "Removal of mapping completed", + "item.edit.item-mapper.notifications.remove.success.head": "Прив'язування видалено", + + // "item.edit.item-mapper.tabs.browse": "Browse mapped collections", + "item.edit.item-mapper.tabs.browse": "Переглянути прив'язки зібрання", + + // "item.edit.item-mapper.tabs.map": "Map new collections", + "item.edit.item-mapper.tabs.map": "Прив'язати нове зібрання", + + + + // "item.edit.metadata.add-button": "Add", + "item.edit.metadata.add-button": "Додати", + + // "item.edit.metadata.discard-button": "Discard", + "item.edit.metadata.discard-button": "Відмінити", + + // "item.edit.metadata.edit.buttons.edit": "Edit", + "item.edit.metadata.edit.buttons.edit": "Редагувати", + + // "item.edit.metadata.edit.buttons.remove": "Remove", + "item.edit.metadata.edit.buttons.remove": "Видалити", + + // "item.edit.metadata.edit.buttons.undo": "Undo changes", + "item.edit.metadata.edit.buttons.undo": "Відмінити зміни", + + // "item.edit.metadata.edit.buttons.unedit": "Stop editing", + "item.edit.metadata.edit.buttons.unedit": "Зупинити редагування", + + // "item.edit.metadata.empty": "The item currently doesn't contain any metadata. Click Add to start adding a metadata value.", + "item.edit.metadata.empty": "Документ не містить жодних метаданих. Клікніть Додати щоб почати додавати метадані.", + + // "item.edit.metadata.headers.edit": "Edit", + "item.edit.metadata.headers.edit": "Редагувати", + + // "item.edit.metadata.headers.field": "Field", + "item.edit.metadata.headers.field": "Поле", + + // "item.edit.metadata.headers.language": "Lang", + "item.edit.metadata.headers.language": "Мова", + + // "item.edit.metadata.headers.value": "Value", + "item.edit.metadata.headers.value": "Значення", + + // "item.edit.metadata.metadatafield.invalid": "Please choose a valid metadata field", + "item.edit.metadata.metadatafield.invalid": "Виберіть відповідне поле метаданих", + + // "item.edit.metadata.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", + "item.edit.metadata.notifications.discarded.content": "Ваші зміни скасовано. Щоб відновити зміни, натисніть кнопку -Повернутись-.", + + // "item.edit.metadata.notifications.discarded.title": "Changed discarded", + "item.edit.metadata.notifications.discarded.title": "Ваші зміни скасовано", + + // "item.edit.metadata.notifications.error.title": "An error occurred", + "item.edit.metadata.notifications.error.title": "Ваші зміни скасовано", + + // "item.edit.metadata.notifications.invalid.content": "Your changes were not saved. Please make sure all fields are valid before you save.", + "item.edit.metadata.notifications.invalid.content": "Ваші зміни не збережено. Перед збереженням переконайтеся, що всі поля вірно заповнені.", + + // "item.edit.metadata.notifications.invalid.title": "Metadata invalid", + "item.edit.metadata.notifications.invalid.title": "Помилкові метадані", + + // "item.edit.metadata.notifications.outdated.content": "The item you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts", + "item.edit.metadata.notifications.outdated.content": "Документ, над яким ви зараз працюєте, був змінений іншим користувачем. Ваші поточні зміни відхилено, щоб запобігти конфліктам", + + // "item.edit.metadata.notifications.outdated.title": "Changed outdated", + "item.edit.metadata.notifications.outdated.title": "Зміни застаріли", + + // "item.edit.metadata.notifications.saved.content": "Your changes to this item's metadata were saved.", + "item.edit.metadata.notifications.saved.content": "Ваші зміни метаданих документа збережено.", + + // "item.edit.metadata.notifications.saved.title": "Metadata saved", + "item.edit.metadata.notifications.saved.title": "Метадані збережено", + + // "item.edit.metadata.reinstate-button": "Undo", + "item.edit.metadata.reinstate-button": "Повернутись", + + // "item.edit.metadata.save-button": "Save", + "item.edit.metadata.save-button": "Зберегти", + + + + // "item.edit.modify.overview.field": "Field", + "item.edit.modify.overview.field": "Поле", + + // "item.edit.modify.overview.language": "Language", + "item.edit.modify.overview.language": "Мова", + + // "item.edit.modify.overview.value": "Value", + "item.edit.modify.overview.value": "Значення", + + + + // "item.edit.move.cancel": "Cancel", + "item.edit.move.cancel": "Відмінити", + + // "item.edit.move.description": "Select the collection you wish to move this item to. To narrow down the list of displayed collections, you can enter a search query in the box.", + "item.edit.move.description": "Виберіть зібрання, до якої потрібно перемістити цей документ. Щоб звузити список відображених зібрань, ви можете ввести пошуковий запит у поле.", + + // "item.edit.move.error": "An error occurred when attempting to move the item", + "item.edit.move.error": "Під час спроби перемістити документ - сталася помилка", + + // "item.edit.move.head": "Move item: {{id}}", + "item.edit.move.head": "Перемістити документ: {{id}}", + + // "item.edit.move.inheritpolicies.checkbox": "Inherit policies", + "item.edit.move.inheritpolicies.checkbox": "Наслідувати політики", + + // "item.edit.move.inheritpolicies.description": "Inherit the default policies of the destination collection", + "item.edit.move.inheritpolicies.description": "Наслідувати політики за замовчуванням цільового зібрання", + + // "item.edit.move.move": "Move", + "item.edit.move.move": "Перенести", + + // "item.edit.move.processing": "Moving...", + "item.edit.move.processing": "Переносимо...", + + // "item.edit.move.search.placeholder": "Enter a search query to look for collections", + "item.edit.move.search.placeholder": "Введіть пошуковий запит для пошуку зібрання", + + // "item.edit.move.success": "The item has been moved successfully", + "item.edit.move.success": "Документ успішно перенесено", + + // "item.edit.move.title": "Move item", + "item.edit.move.title": "Перенести документ", + + + + // "item.edit.private.cancel": "Cancel", + "item.edit.private.cancel": "Відмінити", + + // "item.edit.private.confirm": "Make it Private", + "item.edit.private.confirm": "Закрити доступ", + + // "item.edit.private.description": "Are you sure this item should be made private in the archive?", + "item.edit.private.description": "Ви впевнені, що хочете закрити доступ до документа?", + + // "item.edit.private.error": "An error occurred while making the item private", + "item.edit.private.error": "Виникла помилка при закритті доступу до документа", + + // "item.edit.private.header": "Make item private: {{ id }}", + "item.edit.private.header": "Закрити доступ документу: {{ id }}", + + // "item.edit.private.success": "The item is now private", + "item.edit.private.success": "Доступ до документа закритий", + + + + // "item.edit.public.cancel": "Cancel", + "item.edit.public.cancel": "ВІдмінити", + + // "item.edit.public.confirm": "Make it Public", + "item.edit.public.confirm": "Зробити загальнодоступним", + + // "item.edit.public.description": "Are you sure this item should be made public in the archive?", + "item.edit.public.description": "Ви впевнені, що хочете зробити вільним доступ до документа?", + + // "item.edit.public.error": "An error occurred while making the item public", + "item.edit.public.error": "Виникла помилка при відкритті доступу до документа", + + // "item.edit.public.header": "Make item public: {{ id }}", + "item.edit.public.header": "Зробити документ загальнодоступним: {{ id }}", + + // "item.edit.public.success": "The item is now public", + "item.edit.public.success": "Документ тепер загальнодоступний", + + + + // "item.edit.reinstate.cancel": "Cancel", + "item.edit.reinstate.cancel": "Відмінити", + + // "item.edit.reinstate.confirm": "Reinstate", + "item.edit.reinstate.confirm": "Відновити", + + // "item.edit.reinstate.description": "Are you sure this item should be reinstated to the archive?", + "item.edit.reinstate.description": "Ви дійсно хочете відновити документ?", + + // "item.edit.reinstate.error": "An error occurred while reinstating the item", + "item.edit.reinstate.error": "Виникла помилка при відновленні документа", + + // "item.edit.reinstate.header": "Reinstate item: {{ id }}", + "item.edit.reinstate.header": "Відновлення документа: {{ id }}", + + // "item.edit.reinstate.success": "The item was reinstated successfully", + "item.edit.reinstate.success": "Документ був успішно відновлений", + + + + // "item.edit.relationships.discard-button": "Discard", + "item.edit.relationships.discard-button": "Відмінити", + + // "item.edit.relationships.edit.buttons.add": "Add", + "item.edit.relationships.edit.buttons.add": "Додати", + + // "item.edit.relationships.edit.buttons.remove": "Remove", + "item.edit.relationships.edit.buttons.remove": "Видалити", + + // "item.edit.relationships.edit.buttons.undo": "Undo changes", + "item.edit.relationships.edit.buttons.undo": "Повернути зміни", + + // "item.edit.relationships.no-relationships": "No relationships", + "item.edit.relationships.no-relationships": "Відсутні зв'язки", + + // "item.edit.relationships.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", + "item.edit.relationships.notifications.discarded.content": "Ваші зміни скасовано. Щоб відновити зміни, натисніть кнопку -Повернутись-", + + // "item.edit.relationships.notifications.discarded.title": "Changes discarded", + "item.edit.relationships.notifications.discarded.title": "Зміни скасовано", + + // "item.edit.relationships.notifications.failed.title": "Error editing relationships", + "item.edit.relationships.notifications.failed.title": "Помилка редагування зв'яків", + + // "item.edit.relationships.notifications.outdated.content": "The item you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts", + "item.edit.relationships.notifications.outdated.content": "Документ, над яким ви зараз працюєте, був змінений іншим користувачем. Ваші поточні зміни відхилено, щоб запобігти конфліктам", + + // "item.edit.relationships.notifications.outdated.title": "Changes outdated", + "item.edit.relationships.notifications.outdated.title": "Зміни застаріли", + + // "item.edit.relationships.notifications.saved.content": "Your changes to this item's relationships were saved.", + "item.edit.relationships.notifications.saved.content": "Зміни до зв'язків документа успішно збережено.", + + // "item.edit.relationships.notifications.saved.title": "Relationships saved", + "item.edit.relationships.notifications.saved.title": "Зв'язки збережено", + + // "item.edit.relationships.reinstate-button": "Undo", + "item.edit.relationships.reinstate-button": "Повернутись", + + // "item.edit.relationships.save-button": "Save", + "item.edit.relationships.save-button": "Зберегти", + + // "item.edit.relationships.no-entity-type": "Add 'dspace.entity.type' metadata to enable relationships for this item", + "item.edit.relationships.no-entity-type": "Додайте 'dspace.entity.type' для створення зв'язків для документа", + + + + // "item.edit.tabs.bitstreams.head": "Bitstreams", + "item.edit.tabs.bitstreams.head": "Файли", + + // "item.edit.tabs.bitstreams.title": "Редагування докумена - Файли", + "item.edit.tabs.bitstreams.title": "Редагування докумена - Файли", + + // "item.edit.tabs.curate.head": "Curate", + // TODO translate + "item.edit.tabs.curate.head": "Curate", + + // "item.edit.tabs.curate.title": "Item Edit - Curate", + // TODO translate + "item.edit.tabs.curate.title": "Редагування документа - Curate", + + // "item.edit.tabs.metadata.head": "Metadata", + "item.edit.tabs.metadata.head": "Метадані", + + // "item.edit.tabs.metadata.title": "Item Edit - Metadata", + "item.edit.tabs.metadata.title": "Редагування документа - метадані", + + // "item.edit.tabs.relationships.head": "Relationships", + "item.edit.tabs.relationships.head": "Зв'язки", + + // "item.edit.tabs.relationships.title": "Редагування документа - зв'язки", + "item.edit.tabs.relationships.title": "Редагування документа - зв'язки", + + // "item.edit.tabs.status.buttons.authorizations.button": "Authorizations...", + "item.edit.tabs.status.buttons.authorizations.button": "Авторизація...", + + // "item.edit.tabs.status.buttons.authorizations.label": "Edit item's authorization policies", + "item.edit.tabs.status.buttons.authorizations.label": "Редагувати політики доступу документа", + + // "item.edit.tabs.status.buttons.delete.button": "Permanently delete", + "item.edit.tabs.status.buttons.delete.button": "Видалити назавжди", + + // "item.edit.tabs.status.buttons.delete.label": "Completely expunge item", + "item.edit.tabs.status.buttons.delete.label": "Повністю видалити документ", + + // "item.edit.tabs.status.buttons.mappedCollections.button": "Mapped collections", + "item.edit.tabs.status.buttons.mappedCollections.button": "Прив'язані зібрання", + + // "item.edit.tabs.status.buttons.mappedCollections.label": "Manage mapped collections", + "item.edit.tabs.status.buttons.mappedCollections.label": "Керувати прив'язаними зібраннями", + + // "item.edit.tabs.status.buttons.move.button": "Move...", + "item.edit.tabs.status.buttons.move.button": "Перемістити...", + + // "item.edit.tabs.status.buttons.move.label": "Move item to another collection", + "item.edit.tabs.status.buttons.move.label": "Перемістити документ до іншого зібрання", + + // "item.edit.tabs.status.buttons.private.button": "Make it private...", + "item.edit.tabs.status.buttons.private.button": "Закрити доступ...", + + // "item.edit.tabs.status.buttons.private.label": "Make item private", + "item.edit.tabs.status.buttons.private.label": "Закрити доступ до документа", + + // "item.edit.tabs.status.buttons.public.button": "Make it public...", + "item.edit.tabs.status.buttons.public.button": "Зробити загальнодоступним...", + + // "item.edit.tabs.status.buttons.public.label": "Make item public", + "item.edit.tabs.status.buttons.public.label": "Зробити документ загальнодоступним", + + // "item.edit.tabs.status.buttons.reinstate.button": "Reinstate...", + "item.edit.tabs.status.buttons.reinstate.button": "Відновити...", + + // "item.edit.tabs.status.buttons.reinstate.label": "Reinstate item into the repository", + "item.edit.tabs.status.buttons.reinstate.label": "Відновити документ в репозиторій", + + // "item.edit.tabs.status.buttons.withdraw.button": "Withdraw...", + "item.edit.tabs.status.buttons.withdraw.button": "Вилучити...", + + // "item.edit.tabs.status.buttons.withdraw.label": "Withdraw item from the repository", + "item.edit.tabs.status.buttons.withdraw.label": "Вилучити документ з репозиторію", + + // "item.edit.tabs.status.description": "Welcome to the item management page. From here you can withdraw, reinstate, move or delete the item. You may also update or add new metadata / bitstreams on the other tabs.", + "item.edit.tabs.status.description": "Вітаємо на сторінці керування документами. Тут ви можете вилучити, відновити, перемістити або видалити елемент. Ви також можете оновити або додати нові метадані чи файли на інших вкладках.", + + // "item.edit.tabs.status.head": "Status", + "item.edit.tabs.status.head": "Статус", + + // "item.edit.tabs.status.labels.handle": "Handle", + "item.edit.tabs.status.labels.handle": "Handle", + + // "item.edit.tabs.status.labels.id": "Item Internal ID", + "item.edit.tabs.status.labels.id": "Внутрішнє ID", + + // "item.edit.tabs.status.labels.itemPage": "Item Page", + "item.edit.tabs.status.labels.itemPage": "Сторінка документа", + + // "item.edit.tabs.status.labels.lastModified": "Last Modified", + "item.edit.tabs.status.labels.lastModified": "Останні редагування", + + // "item.edit.tabs.status.title": "Item Edit - Status", + "item.edit.tabs.status.title": "Редагування документа - статус", + + // "item.edit.tabs.versionhistory.head": "Version History", + "item.edit.tabs.versionhistory.head": "Історія версій", + + // "item.edit.tabs.versionhistory.title": "Item Edit - Version History", + "item.edit.tabs.versionhistory.title": "Редагування документа - історія версій", + + // "item.edit.tabs.versionhistory.under-construction": "Editing or adding new versions is not yet possible in this user interface.", + "item.edit.tabs.versionhistory.under-construction": "Редагування або додавання нових версій ще неможливе в цьому інтерфейсі користувача.", + + // "item.edit.tabs.view.head": "View Item", + "item.edit.tabs.view.head": "Перегляд документа", + + // "item.edit.tabs.view.title": "Item Edit - View", + "item.edit.tabs.view.title": "Редагування документа - перегляд", + + + + // "item.edit.withdraw.cancel": "Cancel", + "item.edit.withdraw.cancel": "Відмінити", + + // "item.edit.withdraw.confirm": "Withdraw", + "item.edit.withdraw.confirm": "Вилучити", + + // "item.edit.withdraw.description": "Are you sure this item should be withdrawn from the archive?", + "item.edit.withdraw.description": "Ви впевнені, що бажаєте вилучити документ?", + + // "item.edit.withdraw.error": "An error occurred while withdrawing the item", + "item.edit.withdraw.error": "Виникла помилка при вилученні документа", + + // "item.edit.withdraw.header": "Withdraw item: {{ id }}", + "item.edit.withdraw.header": "Вилучити документ: {{ id }}", + + // "item.edit.withdraw.success": "The item was withdrawn successfully", + "item.edit.withdraw.success": "Документ був успішно вилучений", + + + + // "item.listelement.badge": "Item", + "item.listelement.badge": "Документ", + + // "item.page.description": "Description", + "item.page.description": "Опис", + + // "item.page.edit": "Edit this item", + "item.page.edit": "Редагувати цей документ", + + // "item.page.journal-issn": "Journal ISSN", + "item.page.journal-issn": "Номер ISSN", + + // "item.page.journal-title": "Journal Title", + "item.page.journal-title": "Назва журналу", + + // "item.page.publisher": "Publisher", + "item.page.publisher": "Видавець", + + // "item.page.titleprefix": "Item: ", + "item.page.titleprefix": "Документ: ", + + // "item.page.volume-title": "Volume Title", + "item.page.volume-title": "Назва тому", + + // "item.search.results.head": "Результат пошуку за документами", + "item.search.results.head": "Результат пошуку за документами", + + // "item.search.title": "DSpace Angular :: Item Search", + "item.search.title": "Репозитарій :: Пошук документів", + + + + // "item.page.abstract": "Abstract", + "item.page.abstract": "Анотація", + + // "item.page.author": "Authors", + "item.page.author": "Автори", + + // "item.page.citation": "Citation", + "item.page.citation": "Бібліографічний опис", + + // "item.page.collections": "Collections", + "item.page.collections": "Зібрання", + + // "item.page.date": "Date", + "item.page.date": "Дата", + + // "item.page.edit": "Edit this item", + "item.page.edit": "Редагувати цей документ", + + // "item.page.files": "Files", + "item.page.files": "Файли", + + // "item.page.filesection.description": "Description:", + "item.page.filesection.description": "Опис:", + + // "item.page.filesection.download": "Download", + "item.page.filesection.download": "Завантажити", + + // "item.page.filesection.format": "Format:", + "item.page.filesection.format": "Формат:", + + // "item.page.filesection.name": "Name:", + "item.page.filesection.name": "Назва:", + + // "item.page.filesection.size": "Size:", + "item.page.filesection.size": "Розмір:", + + // "item.page.journal.search.title": "Articles in this journal", + "item.page.journal.search.title": "Публікації у цьому виданні", + + // "item.page.link.full": "Full item page", + "item.page.link.full": "Повна інформація про документ", + + // "item.page.link.simple": "Simple item page", + "item.page.link.simple": "Скорочена інформація про документ", + + // "item.page.person.search.title": "Articles by this author", + "item.page.person.search.title": "Публікації за автором", + + // "item.page.related-items.view-more": "Show {{ amount }} more", + "item.page.related-items.view-more": "Показати {{ amount }} більше", + + // "item.page.related-items.view-less": "Hide last {{ amount }}", + "item.page.related-items.view-less": "Приховати останні {{ amount }}", + + // "item.page.relationships.isAuthorOfPublication": "Publications", + "item.page.relationships.isAuthorOfPublication": "Публікації", + + // "item.page.relationships.isJournalOfPublication": "Publications", + "item.page.relationships.isJournalOfPublication": "Публікації", + + // "item.page.relationships.isOrgUnitOfPerson": "Authors", + "item.page.relationships.isOrgUnitOfPerson": "Автори", + + // "item.page.relationships.isOrgUnitOfProject": "Research Projects", + "item.page.relationships.isOrgUnitOfProject": "Дослідницькі проекти", + + // "item.page.subject": "Keywords", + "item.page.subject": "Ключові слова", + + // "item.page.uri": "URI", + "item.page.uri": "URI", + + // "item.page.bitstreams.view-more": "Show more", + "item.page.bitstreams.view-more": "Показати більше", + + // "item.page.bitstreams.collapse": "Collapse", + "item.page.bitstreams.collapse": "Згорнути", + + // "item.page.filesection.original.bundle" : "Original bundle", + "item.page.filesection.original.bundle" : "Контейнер файлів", + + // "item.page.filesection.license.bundle" : "License bundle", + "item.page.filesection.license.bundle" : "Ліцензійна угода", + + // "item.preview.dc.identifier.uri": "Identifier:", + "item.preview.dc.identifier.uri": "Ідентифікатор:", + + // "item.preview.dc.contributor.author": "Authors:", + "item.preview.dc.contributor.author": "Автори:", + + // "item.preview.dc.date.issued": "Published date:", + "item.preview.dc.date.issued": "Дата публікації:", + + // "item.preview.dc.description.abstract": "Abstract:", + "item.preview.dc.description.abstract": "Анотація:", + + // "item.preview.dc.identifier.other": "Other identifier:", + "item.preview.dc.identifier.other": "Інший ідентифікатор:", + + // "item.preview.dc.language.iso": "Language:", + "item.preview.dc.language.iso": "Мова:", + + // "item.preview.dc.subject": "Subjects:", + "item.preview.dc.subject": "Ключові слова:", + + // "item.preview.dc.title": "Title:", + "item.preview.dc.title": "Назва:", + + // "item.preview.person.familyName": "Surname:", + "item.preview.person.familyName": "Прізвище:", + + // "item.preview.person.givenName": "Name:", + "item.preview.person.givenName": "Ім'я:", + + // "item.preview.person.identifier.orcid": "ORCID:", + "item.preview.person.identifier.orcid": "ORCID:", + + + // "item.select.confirm": "Confirm selected", + "item.select.confirm": "Підтвердити вибрані", + + // "item.select.empty": "No items to show", + "item.select.empty": "Таких документів немає", + + // "item.select.table.author": "Author", + "item.select.table.author": "Автор", + + // "item.select.table.collection": "Collection", + "item.select.table.collection": "Зібрання", + + // "item.select.table.title": "Title", + "item.select.table.title": "Назва", + + + // "item.version.history.empty": "There are no other versions for this item yet.", + "item.version.history.empty": "Іншої версії цього документу немає.", + + // "item.version.history.head": "Version History", + "item.version.history.head": "Історія версій", + + // "item.version.history.return": "Return", + "item.version.history.return": "Повернутись", + + // "item.version.history.selected": "Selected version", + "item.version.history.selected": "Вибрана версія", + + // "item.version.history.table.version": "Version", + "item.version.history.table.version": "Версія", + + // "item.version.history.table.item": "Item", + "item.version.history.table.item": "Документ", + + // "item.version.history.table.editor": "Editor", + "item.version.history.table.editor": "Редактор", + + // "item.version.history.table.date": "Date", + "item.version.history.table.date": "Дата", + + // "item.version.history.table.summary": "Summary", + "item.version.history.table.summary": "Анотація/Summary", + + + + // "item.version.notice": "This is not the latest version of this item. The latest version can be found here.", + "item.version.notice": "Це не остання версія документа. Останню версію можна знайти за покликанням ТУТ.", + + + + // "journal.listelement.badge": "Journal", + "journal.listelement.badge": "Видання", + + // "journal.page.description": "Description", + "journal.page.description": "Опис", + + // "journal.page.edit": "Edit this item", + "journal.page.edit": "Редагувати цей документ", + + // "journal.page.editor": "Editor-in-Chief", + "journal.page.editor": "Головний редактор", + + // "journal.page.issn": "ISSN", + "journal.page.issn": "ISSN", + + // "journal.page.publisher": "Publisher", + "journal.page.publisher": "Видавець", + + // "journal.page.titleprefix": "Journal: ", + "journal.page.titleprefix": "Видання: ", + + // "journal.search.results.head": "Journal Search Results", + "journal.search.results.head": "Пошук у виданні", + + // "journal.search.title": "DSpace Angular :: Journal Search", + "journal.search.title": "Репозитарій :: пошук видання", + + + + // "journalissue.listelement.badge": "Journal Issue", + "journalissue.listelement.badge": "Випуск видання", + + // "journalissue.page.description": "Description", + "journalissue.page.description": "Опис", + + // "journalissue.page.edit": "Edit this item", + "journalissue.page.edit": "Редагувати цей документ", + + // "journalissue.page.issuedate": "Issue Date", + "journalissue.page.issuedate": "Дата випуску", + + // "journalissue.page.journal-issn": "Journal ISSN", + "journalissue.page.journal-issn": "ISSN", + + // "journalissue.page.journal-title": "Journal Title", + "journalissue.page.journal-title": "Назва видання", + + // "journalissue.page.keyword": "Keywords", + "journalissue.page.keyword": "Ключові слова", + + // "journalissue.page.number": "Number", + "journalissue.page.number": "Номер", + + // "journalissue.page.titleprefix": "Journal Issue: ", + "journalissue.page.titleprefix": "Випуск видання: ", + + + + // "journalvolume.listelement.badge": "Journal Volume", + "journalvolume.listelement.badge": "Том видання", + + // "journalvolume.page.description": "Description", + "journalvolume.page.description": "Опис", + + // "journalvolume.page.edit": "Edit this item", + + "journalvolume.page.edit": "Редагувати цей документ", + + // "journalvolume.page.issuedate": "Issue Date", + "journalvolume.page.issuedate": "Дата випуску", + + // "journalvolume.page.titleprefix": "Journal Volume: ", + "journalvolume.page.titleprefix": "Том видання: ", + + // "journalvolume.page.volume": "Volume", + "journalvolume.page.volume": "Том", + + + + // "loading.bitstream": "Loading bitstream...", + "loading.bitstream": "Файл вантажится...", + + // "loading.bitstreams": "Loading bitstreams...", + "loading.bitstreams": "Файли вантажаться...", + + // "loading.browse-by": "Loading items...", + "loading.browse-by": "Документи вантажаться...", + + // "loading.browse-by-page": "Loading page...", + "loading.browse-by-page": "Сторінка вантажится...", + + // "loading.collection": "Loading collection...", + "loading.collection": "Зібрання вантажиться...", + + // "loading.collections": "Loading collections...", + "loading.collections": "Зібрання вантажаться...", + + // "loading.content-source": "Loading content source...", + "loading.content-source": "Джерело даних вантажиться...", + + // "loading.community": "Loading community...", + "loading.community": "Фонд вантажиться...", + + // "loading.default": "Loading...", + "loading.default": "Вантажиться...", + + // "loading.item": "Loading item...", + "loading.item": "Документ вантажиться...", + + // "loading.items": "Loading items...", + "loading.items": "Документи вантажаться...", + + // "loading.mydspace-results": "Loading items...", + "loading.mydspace-results": "Документи вантажаться..", + + // "loading.objects": "Loading...", + "loading.objects": "Вантажиться...", + + // "loading.recent-submissions": "Loading recent submissions...", + "loading.recent-submissions": "Вантажаться останні підписки...", + + // "loading.search-results": "Loading search results...", + "loading.search-results": "Результати вантажаться...", + + // "loading.sub-collections": "Loading sub-collections...", + "loading.sub-collections": "Підзібрання вантажаться...", + + // "loading.sub-communities": "Loading sub-communities...", + "loading.sub-communities": "Підфонди вантажаться...", + + // "loading.top-level-communities": "Loading top-level communities...", + "loading.top-level-communities": "Фонди верхнього рівня вантажаться...", + + + + // "login.form.email": "Email address", + "login.form.email": "Email", + + // "login.form.forgot-password": "Have you forgotten your password?", + "login.form.forgot-password": "Забули пароль?", + + // "login.form.header": "Please log in to DSpace", + "login.form.header": "Увійдіть у репозитарій", + + // "login.form.new-user": "New user? Click here to register.", + "login.form.new-user": "Новий користувач? Зареєструйтесь.", + + // "login.form.or-divider": "or", + "login.form.or-divider": "або", + + // "login.form.password": "Password", + "login.form.password": "Пароль", + + // "login.form.shibboleth": "Log in with Shibboleth", + "login.form.shibboleth": "Увійти через Shibboleth/наразі не підримується/", + + // "login.form.submit": "Log in", + "login.form.submit": "Увійти", + + // "login.title": "Login", + "login.title": "Користувач", + + // "login.breadcrumbs": "Login", + "login.breadcrumbs": "Користувач", + + + + // "logout.form.header": "Log out from DSpace", + "logout.form.header": "Вийти з репозиторію", + + // "logout.form.submit": "Log out", + "logout.form.submit": "Вийти", + + // "logout.title": "Logout", + "logout.title": "Вийти", + + + + // "menu.header.admin": "Admin", + "menu.header.admin": "Адмін", + + // "menu.header.image.logo": "Repository logo", + "menu.header.image.logo": "Логотип репозиторію", + + + + // "menu.section.access_control": "Access Control", + "menu.section.access_control": "Контроль доступу", + + // "menu.section.access_control_authorizations": "Authorizations", + "menu.section.access_control_authorizations": "Авторизація", + + // "menu.section.access_control_groups": "Groups", + "menu.section.access_control_groups": "Групи", + + // "menu.section.access_control_people": "People", + "menu.section.access_control_people": "Користувачі", + + + + // "menu.section.admin_search": "Admin Search", + "menu.section.admin_search": "Пошук адміністратора", + + + + // "menu.section.browse_community": "This Community", + "menu.section.browse_community": "Цей фонд", + + // "menu.section.browse_community_by_author": "By Author", + "menu.section.browse_community_by_author": "За автором", + + // "menu.section.browse_community_by_issue_date": "By Issue Date", + "menu.section.browse_community_by_issue_date": "За датою видання", + + // "menu.section.browse_community_by_title": "By Title", + "menu.section.browse_community_by_title": "За назвою", + + // "menu.section.browse_global": "All of DSpace", + "menu.section.browse_global": "Пошук за критеріями", + + // "menu.section.browse_global_by_author": "By Author", + "menu.section.browse_global_by_author": "За автором", + + // "menu.section.browse_global_by_dateissued": "By Issue Date", + "menu.section.browse_global_by_dateissued": "За датою видання", + + // "menu.section.browse_global_by_subject": "By Subject", + "menu.section.browse_global_by_subject": "За ключовими словами", + + // "menu.section.browse_global_by_title": "By Title", + "menu.section.browse_global_by_title": "За назвою", + + // "menu.section.browse_global_communities_and_collections": "Communities & Collections", + "menu.section.browse_global_communities_and_collections": "Фонди та зібрання", + + + + // "menu.section.control_panel": "Control Panel", + "menu.section.control_panel": "Панель управління", + + // "menu.section.curation_task": "Curation Task", + "menu.section.curation_task": "Поточні завдання", + + + + // "menu.section.edit": "Edit", + "menu.section.edit": "Редагувати", + + // "menu.section.edit_collection": "Collection", + "menu.section.edit_collection": "Зібрання", + + // "menu.section.edit_community": "Community", + "menu.section.edit_community": "Фонд", + + // "menu.section.edit_item": "Item", + "menu.section.edit_item": "Документ", + + + + // "menu.section.export": "Export", + "menu.section.export": "Експорт", + + // "menu.section.export_collection": "Collection", + "menu.section.export_collection": "Зібрання", + + // "menu.section.export_community": "Community", + "menu.section.export_community": "Фонд", + + // "menu.section.export_item": "Item", + "menu.section.export_item": "Документ", + + // "menu.section.export_metadata": "Metadata", + "menu.section.export_metadata": "Метадані", + + + + // "menu.section.icon.access_control": "Access Control menu section", + "menu.section.icon.access_control": "Меню контролю доступу", + + // "menu.section.icon.admin_search": "Admin search menu section", + "menu.section.icon.admin_search": "Меню пошуку адміна", + + // "menu.section.icon.control_panel": "Control Panel menu section", + "menu.section.icon.control_panel": "Меню панелі управління", + + // "menu.section.icon.curation_task": "Curation Task menu section", + "menu.section.icon.curation_task": "Меню поточних завдань", + + // "menu.section.icon.edit": "Edit menu section", + "menu.section.icon.edit": "Редагувати розділ меню", + + // "menu.section.icon.export": "Export menu section", + "menu.section.icon.export": "Експорт розділу меню", + + // "menu.section.icon.find": "Find menu section", + "menu.section.icon.find": "Знайти розділ меню", + + // "menu.section.icon.import": "Import menu section", + "menu.section.icon.import": "Імпорт розділу меню", + + // "menu.section.icon.new": "New menu section", + "menu.section.icon.new": "Новий розділ меню", + + // "menu.section.icon.pin": "Pin sidebar", + "menu.section.icon.pin": "Закріпити бічну панель", + + // "menu.section.icon.processes": "Processes menu section", + + "menu.section.icon.processes": "Процеси розділу меню", + + // "menu.section.icon.registries": "Registries menu section", + "menu.section.icon.registries": "Реєстр розділів меню", + + // "menu.section.icon.statistics_task": "Statistics Task menu section", + "menu.section.icon.statistics_task": "Статистика розділу меню", + + // "menu.section.icon.unpin": "Unpin sidebar", + "menu.section.icon.unpin": "Відкріпити бічну панель", + + + + // "menu.section.import": "Import", + "menu.section.import": "Імпорт", + + // "menu.section.import_batch": "Batch Import (ZIP)", + "menu.section.import_batch": "Імпорт контейнера файлів (ZIP)", + + // "menu.section.import_metadata": "Metadata", + "menu.section.import_metadata": "Метадані", + + + + // "menu.section.new": "New", + "menu.section.new": "Новий", + + // "menu.section.new_collection": "Collection", + "menu.section.new_collection": "Зібрання", + + // "menu.section.new_community": "Community", + "menu.section.new_community": "Фонд", + + // "menu.section.new_item": "Item", + "menu.section.new_item": "Документ", + + // "menu.section.new_item_version": "Item Version", + "menu.section.new_item_version": "Версія документа", + + // "menu.section.new_process": "Process", + + "menu.section.new_process": "Процес", + + + + // "menu.section.pin": "Pin sidebar", + "menu.section.pin": "Закріпити бічне меню", + + // "menu.section.unpin": "Unpin sidebar", + "menu.section.unpin": "Відкріпити бічне меню", + + + + // "menu.section.processes": "Processes", + "menu.section.processes": "Процеси", + + + + // "menu.section.registries": "Registries", + "menu.section.registries": "Реєстри", + + // "menu.section.registries_format": "Format", + "menu.section.registries_format": "Формати", + + // "menu.section.registries_metadata": "Metadata", + "menu.section.registries_metadata": "Метадані", + + + + // "menu.section.statistics": "Statistics", + "menu.section.statistics": "Статистика", + + // "menu.section.statistics_task": "Statistics Task", + "menu.section.statistics_task": "Завдання статистики", + + + + // "menu.section.toggle.access_control": "Toggle Access Control section", + "menu.section.toggle.access_control": "Переключити розділ контролю доступу", + + // "menu.section.toggle.control_panel": "Toggle Control Panel section", + "menu.section.toggle.control_panel": "Переключити панель контролю доступу", + + // "menu.section.toggle.curation_task": "Toggle Curation Task section", + "menu.section.toggle.curation_task": "Переключити розділ завдань", + + // "menu.section.toggle.edit": "Toggle Edit section", + "menu.section.toggle.edit": "Переключити розділ редагування", + + // "menu.section.toggle.export": "Toggle Export section", + "menu.section.toggle.export": "Переключити розділ експорту", + + // "menu.section.toggle.find": "Toggle Find section", + "menu.section.toggle.find": "Переключити розділ пошуку", + + // "menu.section.toggle.import": "Toggle Import section", + "menu.section.toggle.import": "Переключити розділ імпорту", + + // "menu.section.toggle.new": "Toggle New section", + "menu.section.toggle.new": "Переключити новий розділ", + + // "menu.section.toggle.registries": "Toggle Registries section", + "menu.section.toggle.registries": "Переключити розділ реєстрів", + + // "menu.section.toggle.statistics_task": "Toggle Statistics Task section", + "menu.section.toggle.statistics_task": "Переключити розділ статистики", + + + // "menu.section.workflow": "Administer Workflow", + + "menu.section.workflow": "Керування процесу подачі документа", + + + // "mydspace.description": "", + "mydspace.description": "", + + // "mydspace.general.text-here": "here", + + "mydspace.general.text-here": "тут", + + // "mydspace.messages.controller-help": "Select this option to send a message to item's submitter.", + "mydspace.messages.controller-help": "Виберіть цей параметр, щоб надіслати повідомлення відправнику елемента.", + + // "mydspace.messages.description-placeholder": "Insert your message here...", + "mydspace.messages.description-placeholder": "Введіть своє повідомлення ...", + + // "mydspace.messages.hide-msg": "Hide message", + "mydspace.messages.hide-msg": "Приховати повідомлення", + + // "mydspace.messages.mark-as-read": "Mark as read", + "mydspace.messages.mark-as-read": "Позначити як прочитане", + + // "mydspace.messages.mark-as-unread": "Mark as unread", + "mydspace.messages.mark-as-unread": "Позначти як непрочитане", + + // "mydspace.messages.no-content": "No content.", + "mydspace.messages.no-content": "Нема змісту.", + + // "mydspace.messages.no-messages": "No messages yet.", + "mydspace.messages.no-messages": "Повідомлень немає.", + + // "mydspace.messages.send-btn": "Send", + "mydspace.messages.send-btn": "Надіслати", + + // "mydspace.messages.show-msg": "Show message", + "mydspace.messages.show-msg": "Показати повідомлення", + + // "mydspace.messages.subject-placeholder": "Subject...", + "mydspace.messages.subject-placeholder": "Тема...", + + // "mydspace.messages.submitter-help": "Select this option to send a message to controller.", + "mydspace.messages.submitter-help": "Виберіть цю опцію, щоб надіслати повідомлення на перевірку.", + + // "mydspace.messages.title": "Messages", + "mydspace.messages.title": "Повідомлення", + + // "mydspace.messages.to": "To", + "mydspace.messages.to": "До", + + // "mydspace.new-submission": "New submission", + "mydspace.new-submission": "Надійшли нові документи", + + // "mydspace.new-submission-external": "Import metadata from external source", + + "mydspace.new-submission-external": "Імпортувати метадані зі зовнішнього джерела", + + // "mydspace.new-submission-external-short": "Import metadata", + + "mydspace.new-submission-external-short": "Імпортувати метадані", + + // "mydspace.results.head": "Your submissions", + "mydspace.results.head": "Ваші відправлені документи", + + // "mydspace.results.no-abstract": "No Abstract", + "mydspace.results.no-abstract": "Анотація відсутня", + + // "mydspace.results.no-authors": "No Authors", + "mydspace.results.no-authors": "Автори відсутні", + + // "mydspace.results.no-collections": "No Collections", + "mydspace.results.no-collections": "Відсутні зібрання", + + // "mydspace.results.no-date": "No Date", + "mydspace.results.no-date": "Відсутня дата", + + // "mydspace.results.no-files": "No Files", + "mydspace.results.no-files": "Відсутні файли", + + // "mydspace.results.no-results": "There were no items to show", + "mydspace.results.no-results": "Документів не знайдено", + + // "mydspace.results.no-title": "No title", + "mydspace.results.no-title": "Назва відсутня", + + // "mydspace.results.no-uri": "No Uri", + "mydspace.results.no-uri": "Відсутнє покликання", + + // "mydspace.show.workflow": "All tasks", + "mydspace.show.workflow": "Всі завдання", + + // "mydspace.show.workspace": "Your Submissions", + "mydspace.show.workspace": "Ваші надіслані документи ", + + // "mydspace.status.archived": "Archived", + "mydspace.status.archived": "Заархівовані", + + // "mydspace.status.validation": "Validation", + "mydspace.status.validation": "Перевірка", + + // "mydspace.status.waiting-for-controller": "Waiting for controller", + "mydspace.status.waiting-for-controller": "Чекаємо контролера", + + // "mydspace.status.workflow": "Workflow", + "mydspace.status.workflow": "Робочий процес", + + // "mydspace.status.workspace": "Workspace", + "mydspace.status.workspace": "Робоче середовище", + + // "mydspace.title": "MyDSpace", + "mydspace.title": "Моє середовище", + + // "mydspace.upload.upload-failed": "Error creating new workspace. Please verify the content uploaded before retry.", + "mydspace.upload.upload-failed": "Помилка створення нового робочого середовища. Перш ніж повторити спробу, перевірте завантажений вміст.", + + // "mydspace.upload.upload-failed-manyentries": "Unprocessable file. Detected too many entries but allowed only one for file.", + + "mydspace.upload.upload-failed-manyentries": "Файл неможливо опрацювати. Виявлено забагато звернень, але дозволено лише одне для файлу..", + + // "mydspace.upload.upload-failed-moreonefile": "Unprocessable request. Only one file is allowed.", + + "mydspace.upload.upload-failed-moreonefile": "Запит неможливо працювати. Дозволений тільки один файл", + + // "mydspace.upload.upload-multiple-successful": "{{qty}} new workspace items created.", + "mydspace.upload.upload-multiple-successful": "{{qty}} нових робочих середовищ створено.", + + // "mydspace.upload.upload-successful": "New workspace item created. Click {{here}} for edit it.", + "mydspace.upload.upload-successful": "Створено нове робоче середовище. Клацніть {{here}} для редагування.", + + // "mydspace.view-btn": "View", + "mydspace.view-btn": "Перегляд", + + + + // "nav.browse.header": "All of DSpace", + "nav.browse.header": "Пошук за критеріями", + + // "nav.community-browse.header": "By Community", + "nav.community-browse.header": "У фонді", + + // "nav.language": "Language switch", + "nav.language": "Змінити мову", + + // "nav.login": "Log In", + "nav.login": "Увійти", + + // "nav.logout": "Log Out", + "nav.logout": "Вийти", + + // "nav.mydspace": "MyDSpace", + "nav.mydspace": "Моє середовище", + + // "nav.profile": "Profile", + "nav.profile": "Профіль", + + // "nav.search": "Search", + "nav.search": "Пошук", + + // "nav.statistics.header": "Statistics", + "nav.statistics.header": "Статистика", + + // "nav.stop-impersonating": "Stop impersonating EPerson", + + "nav.stop-impersonating": "Припиніть видавати себе за користувача", + + + + // "orgunit.listelement.badge": "Organizational Unit", + "orgunit.listelement.badge": "Організаціна одиниця", + + // "orgunit.page.city": "City", + "orgunit.page.city": "Місто", + + // "orgunit.page.country": "Country", + "orgunit.page.country": "Країна", + + // "orgunit.page.dateestablished": "Date established", + "orgunit.page.dateestablished": "Дата встановлення", + + // "orgunit.page.description": "Description", + "orgunit.page.description": "Опис", + + // "orgunit.page.edit": "Edit this item", + + "orgunit.page.edit": "Редагувати цей документ", + + // "orgunit.page.id": "ID", + "orgunit.page.id": "ID", + + // "orgunit.page.titleprefix": "Organizational Unit: ", + "orgunit.page.titleprefix": "Організаціна одиниця: ", + + + + // "pagination.results-per-page": "Results Per Page", + "pagination.results-per-page": "Результатів на сторінці", + + // "pagination.showing.detail": "{{ range }} of {{ total }}", + "pagination.showing.detail": "{{ range }} з {{ total }}", + + // "pagination.showing.label": "Now showing ", + "pagination.showing.label": "Зараз показуємо ", + + // "pagination.sort-direction": "Sort Options", + "pagination.sort-direction": "Налаштування сортування", + + + + // "person.listelement.badge": "Person", + "person.listelement.badge": "Користувач", + + // "person.listelement.no-title": "No name found", + + "person.listelement.no-title": "Ім'я не знайдено", + + // "person.page.birthdate": "Birth Date", + "person.page.birthdate": "Дата народження", + + // "person.page.edit": "Edit this item", + + "person.page.edit": "Редагувати документ", + + // "person.page.email": "Email Address", + "person.page.email": "Email", + + // "person.page.firstname": "First Name", + "person.page.firstname": "Ім'я", + + // "person.page.jobtitle": "Job Title", + "person.page.jobtitle": "Посада", + + // "person.page.lastname": "Last Name", + "person.page.lastname": "Прізвище", + + // "person.page.link.full": "Show all metadata", + "person.page.link.full": "Показати всі метадані", + + // "person.page.orcid": "ORCID", + "person.page.orcid": "ORCID", + + // "person.page.staffid": "Staff ID", + "person.page.staffid": "Персональний ID", + + // "person.page.titleprefix": "Person: ", + "person.page.titleprefix": "Користувач: ", + + // "person.search.results.head": "Person Search Results", + "person.search.results.head": "Результати пошуку користувача", + + // "person.search.title": "DSpace Angular :: Person Search", + "person.search.title": "Репозиторій :: Користувацький пошук", + + + + // "process.new.select-parameters": "Parameters", + "process.new.select-parameters": "Параметри", + + // "process.new.cancel": "Cancel", + "process.new.cancel": "Відмінити", + + // "process.new.submit": "Submit", + "process.new.submit": "Надіслати", + + // "process.new.select-script": "Script", + "process.new.select-script": "Скрипт", + + // "process.new.select-script.placeholder": "Choose a script...", + "process.new.select-script.placeholder": "Виберіть скрипт...", + + // "process.new.select-script.required": "Script is required", + "process.new.select-script.required": "Потрібно вибрати скрипт", + + // "process.new.parameter.file.upload-button": "Select file...", + "process.new.parameter.file.upload-button": "Виберіть файл...", + + // "process.new.parameter.file.required": "Please select a file", + "process.new.parameter.file.required": "Виберіть файл", + + // "process.new.parameter.string.required": "Parameter value is required", + "process.new.parameter.string.required": "Цей параметр є обв'язковим", + + // "process.new.parameter.type.value": "value", + "process.new.parameter.type.value": "значення", + + // "process.new.parameter.type.file": "file", + "process.new.parameter.type.file": "файл", + + // "process.new.parameter.required.missing": "The following parameters are required but still missing:", + "process.new.parameter.required.missing": "Наступні параметри є обов’язковими, але все ще відсутні:", + + // "process.new.notification.success.title": "Success", + "process.new.notification.success.title": "Успіх", + + // "process.new.notification.success.content": "The process was successfully created", + "process.new.notification.success.content": "Процес успішно запущено", + + // "process.new.notification.error.title": "Error", + "process.new.notification.error.title": "Виникла якась помилка, бодай би вона скисла", + + // "process.new.notification.error.content": "An error occurred while creating this process", + "process.new.notification.error.content": "Виникла помилка при створенні процесу", + + // "process.new.header": "Create a new process", + "process.new.header": "Створити новий процес", + + // "process.new.title": "Create a new process", + "process.new.title": "Створити новий процес", + + // "process.new.breadcrumbs": "Create a new process", + "process.new.breadcrumbs": "Створити новий процес", + + + + // "process.detail.arguments" : "Arguments", + "process.detail.arguments" : "Аргументи", + + // "process.detail.arguments.empty" : "This process doesn't contain any arguments", + "process.detail.arguments.empty" : "Процес не містить жодних аргументів", + + // "process.detail.back" : "Back", + "process.detail.back" : "Повернутись", + + // "process.detail.output" : "Process Output", + "process.detail.output" : "Прооцес завершено", + + // "process.detail.logs.button": "Retrieve process output", + "process.detail.logs.button": "Отримати вихідні дані процесу", + + // "process.detail.logs.loading": "Retrieving", + "process.detail.logs.loading": "Отримання", + + // "process.detail.logs.none": "This process has no output", + "process.detail.logs.none": "Процес не генерує вихідних даних", + + // "process.detail.output-files" : "Output Files", + "process.detail.output-files" : "Вихідні файли", + + // "process.detail.output-files.empty" : "This process doesn't contain any output files", + "process.detail.output-files.empty" : "Процес не містить жодних вихдних файлів", + + // "process.detail.script" : "Script", + "process.detail.script" : "Скрипт", + + // "process.detail.title" : "Process: {{ id }} - {{ name }}", + "process.detail.title" : "Процеси: {{ id }} - {{ name }}", + + // "process.detail.start-time" : "Start time", + "process.detail.start-time" : "Дата старту", + + // "process.detail.end-time" : "Finish time", + "process.detail.end-time" : "Дата завершення", + + // "process.detail.status" : "Status", + "process.detail.status" : "Статус", + + // "process.detail.create" : "Create similar process", + "process.detail.create" : "Створіть аналогічний процес", + + + + // "process.overview.table.finish" : "Finish time", + "process.overview.table.finish" : "Дата завершення", + + // "process.overview.table.id" : "Process ID", + "process.overview.table.id" : "ID процесу", + + // "process.overview.table.name" : "Name", + "process.overview.table.name" : "Назва", + + // "process.overview.table.start" : "Start time", + "process.overview.table.start" : "Дата старту", + + // "process.overview.table.status" : "Status", + "process.overview.table.status" : "Статус", + + // "process.overview.table.user" : "User", + "process.overview.table.user" : "Користувач", + + // "process.overview.title": "Processes Overview", + "process.overview.title": "Огляд процесів", + + // "process.overview.breadcrumbs": "Processes Overview", + "process.overview.breadcrumbs": "Огляд процесів", + + // "process.overview.new": "New", + "process.overview.new": "Новий", + + + // "profile.breadcrumbs": "Update Profile", + "profile.breadcrumbs": "Оновити профіль", + + // "profile.card.identify": "Identify", + "profile.card.identify": "Ідентифікувати", + + // "profile.card.security": "Security", + "profile.card.security": "Безпека", + + // "profile.form.submit": "Update Profile", + "profile.form.submit": "Оновити профіль", + + // "profile.groups.head": "Authorization groups you belong to", + "profile.groups.head": "Групи до яких Ви належите", + + // "profile.head": "Update Profile", + "profile.head": "Оновити профіль", + + // "profile.metadata.form.error.firstname.required": "First Name is required", + "profile.metadata.form.error.firstname.required": "Ім'я є обов'язковим полем", + + // "profile.metadata.form.error.lastname.required": "Last Name is required", + "profile.metadata.form.error.lastname.required": "Прізвище є обов'язковим полем", + + // "profile.metadata.form.label.email": "Email Address", + "profile.metadata.form.label.email": "Email", + + // "profile.metadata.form.label.firstname": "First Name", + "profile.metadata.form.label.firstname": "Ім'я", + + // "profile.metadata.form.label.language": "Language", + "profile.metadata.form.label.language": "Мова", + + // "profile.metadata.form.label.lastname": "Last Name", + "profile.metadata.form.label.lastname": "Прізвище", + + // "profile.metadata.form.label.phone": "Contact Telephone", + "profile.metadata.form.label.phone": "Номер телефону", + + // "profile.metadata.form.notifications.success.content": "Your changes to the profile were saved.", + "profile.metadata.form.notifications.success.content": "Зміни до профілю збережені.", + + // "profile.metadata.form.notifications.success.title": "Profile saved", + "profile.metadata.form.notifications.success.title": "Профіль збережено", + + // "profile.notifications.warning.no-changes.content": "No changes were made to the Profile.", + "profile.notifications.warning.no-changes.content": "Не було змін до профілю.", + + // "profile.notifications.warning.no-changes.title": "No changes", + "profile.notifications.warning.no-changes.title": "Без змін", + + // "profile.security.form.error.matching-passwords": "The passwords do not match.", + "profile.security.form.error.matching-passwords": "Паролі не співпадають.", + + // "profile.security.form.error.password-length": "The password should be at least 6 characters long.", + "profile.security.form.error.password-length": "Довжина пароля повинна становити не менше 6 символів.", + + // "profile.security.form.info": "Optionally, you can enter a new password in the box below, and confirm it by typing it again into the second box. It should be at least six characters long.", + "profile.security.form.info": "За бажанням ви можете ввести новий пароль у поле нижче та підтвердити його, ввівши його ще раз у друге поле. Він має містити щонайменше шість символів.", + + // "profile.security.form.label.password": "Password", + "profile.security.form.label.password": "Пароль", + + // "profile.security.form.label.passwordrepeat": "Retype to confirm", + "profile.security.form.label.passwordrepeat": "Повторіть", + + // "profile.security.form.notifications.success.content": "Your changes to the password were saved.", + "profile.security.form.notifications.success.content": "Зміни до паролю збережені.", + + // "profile.security.form.notifications.success.title": "Password saved", + "profile.security.form.notifications.success.title": "Пароль збережено", + + // "profile.security.form.notifications.error.title": "Error changing passwords", + "profile.security.form.notifications.error.title": "Помилка зміни пароля", + + // "profile.security.form.notifications.error.not-long-enough": "The password has to be at least 6 characters long.", + "profile.security.form.notifications.error.not-long-enough": "Пароль повинен містити щонайменше 6 символів.", + + // "profile.security.form.notifications.error.not-same": "The provided passwords are not the same.", + "profile.security.form.notifications.error.not-same": "Паролі не співпадають.", + + // "profile.title": "Update Profile", + "profile.title": "Оновити профіль", + + + + // "project.listelement.badge": "Research Project", + "project.listelement.badge": "Дослідницький проект", + + // "project.page.contributor": "Contributors", + "project.page.contributor": "Дописувачі", + + // "project.page.description": "Description", + "project.page.description": "Опис", + + // "project.page.edit": "Edit this item", + + "project.page.edit": "Редагувати документ", + + // "project.page.expectedcompletion": "Expected Completion", + "project.page.expectedcompletion": "Очікуване завершеня", + + // "project.page.funder": "Funders", + "project.page.funder": "Фундатори", + + // "project.page.id": "ID", + "project.page.id": "ID", + + // "project.page.keyword": "Keywords", + "project.page.keyword": "Ключові слова", + + // "project.page.status": "Status", + "project.page.status": "Статус", + + // "project.page.titleprefix": "Research Project: ", + "project.page.titleprefix": "Досліницький проект: ", + + // "project.search.results.head": "Project Search Results", + "project.search.results.head": "Результати пошуку за проектом", + + + + // "publication.listelement.badge": "Publication", + "publication.listelement.badge": "Публікація", + + // "publication.page.description": "Description", + "publication.page.description": "Опис", + + // "publication.page.edit": "Edit this item", + "publication.page.edit": "Редагувати документ", + + // "publication.page.journal-issn": "Journal ISSN", + "publication.page.journal-issn": "ISSN", + + // "publication.page.journal-title": "Journal Title", + "publication.page.journal-title": "Назва видання", + + // "publication.page.publisher": "Publisher", + "publication.page.publisher": "Видання", + + // "publication.page.titleprefix": "Publication: ", + "publication.page.titleprefix": "Публікація: ", + + // "publication.page.volume-title": "Volume Title", + "publication.page.volume-title": "Назва тому", + + // "publication.search.results.head": "Publication Search Results", + "publication.search.results.head": "Результати пошуку", + + // "publication.search.title": "DSpace Angular :: Publication Search", + "publication.search.title": "Репозиторій :: пощук публікацій", + + + // "register-email.title": "New user registration", + "register-email.title": "Реєстрація нового користувача", + + // "register-page.create-profile.header": "Create Profile", + "register-page.create-profile.header": "Створити профіль", + + // "register-page.create-profile.identification.header": "Identify", + "register-page.create-profile.identification.header": "Ідентифікувати", + + // "register-page.create-profile.identification.email": "Email Address", + "register-page.create-profile.identification.email": "Email", + + // "register-page.create-profile.identification.first-name": "First Name *", + "register-page.create-profile.identification.first-name": "Ім'я *", + + // "register-page.create-profile.identification.first-name.error": "Please fill in a First Name", + "register-page.create-profile.identification.first-name.error": "Заповніть поле імені", + + // "register-page.create-profile.identification.last-name": "Last Name *", + + "register-page.create-profile.identification.last-name": "Прізвище *", + + // "register-page.create-profile.identification.last-name.error": "Please fill in a Last Name", + + "register-page.create-profile.identification.last-name.error": "Заповніть поле прізвища", + + // "register-page.create-profile.identification.contact": "Contact Telephone", + + "register-page.create-profile.identification.contact": "Номер телефону", + + // "register-page.create-profile.identification.language": "Language", + + "register-page.create-profile.identification.language": "Мова", + + // "register-page.create-profile.security.header": "Security", + + "register-page.create-profile.security.header": "Безпека", + + // "register-page.create-profile.security.info": "Please enter a password in the box below, and confirm it by typing it again into the second box. It should be at least six characters long.", + + "register-page.create-profile.security.info": "Будь ласка, введіть пароль у поле нижче та підтвердьте його, ввівши його ще раз у друге поле. Він має містити щонайменше шість символів.", + + // "register-page.create-profile.security.label.password": "Password *", + + "register-page.create-profile.security.label.password": "Пароль *", + + // "register-page.create-profile.security.label.passwordrepeat": "Retype to confirm *", + + "register-page.create-profile.security.label.passwordrepeat": "Повторіть для ідтвердження *", + + // "register-page.create-profile.security.error.empty-password": "Please enter a password in the box below.", + + "register-page.create-profile.security.error.empty-password": "Введіть пароль у поле нижче.", + + // "register-page.create-profile.security.error.matching-passwords": "The passwords do not match.", + + "register-page.create-profile.security.error.matching-passwords": "Паролі не співпадають.", + + // "register-page.create-profile.security.error.password-length": "The password should be at least 6 characters long.", + + "register-page.create-profile.security.error.password-length": "Довжина пароля повинна бути не менше 6 символів.", + + // "register-page.create-profile.submit": "Complete Registration", + + "register-page.create-profile.submit": "Повна реєстрація", + + // "register-page.create-profile.submit.error.content": "Something went wrong while registering a new user.", + + "register-page.create-profile.submit.error.content": "Щось пішло не так при реєстрації нового користувача.", + + // "register-page.create-profile.submit.error.head": "Registration failed", + + "register-page.create-profile.submit.error.head": "Реєстрація не вдалась", + + // "register-page.create-profile.submit.success.content": "The registration was successful. You have been logged in as the created user.", + + "register-page.create-profile.submit.success.content": "Реєстрація пройшла успішно. Ви увійшли як новий користувач.", + + // "register-page.create-profile.submit.success.head": "Registration completed", + + "register-page.create-profile.submit.success.head": "Реєстрацію завершено", + + + // "register-page.registration.header": "New user registration", + + "register-page.registration.header": "Реєстрація нового користувача", + + // "register-page.registration.info": "Register an account to subscribe to collections for email updates, and submit new items to DSpace.", + + "register-page.registration.info": "Зареєструйтесь для отримання сповіщень про нові надходження та отримайте можливіть надсилати нові документи у репозиторій.", + + // "register-page.registration.email": "Email Address *", + + "register-page.registration.email": "Email *", + + // "register-page.registration.email.error.required": "Please fill in an email address", + + "register-page.registration.email.error.required": "Заповніть поле email", + + // "register-page.registration.email.error.pattern": "Please fill in a valid email address", + + "register-page.registration.email.error.pattern": "Введіть правильну емейл адресу", + + // "register-page.registration.email.hint": "This address will be verified and used as your login name.", + + "register-page.registration.email.hint": "Використовуйие цю адресу щоб увійти у репозиторій. Але перед тим вона буде перевірена", + + // "register-page.registration.submit": "Register", + + "register-page.registration.submit": "Реєстрація", + + // "register-page.registration.success.head": "Verification email sent", + + "register-page.registration.success.head": "email для підтвердження Вам надіслано", + + // "register-page.registration.success.content": "An email has been sent to {{ email }} containing a special URL and further instructions.", + + "register-page.registration.success.content": "email для підтвердження Вам надіслано на вказану скриньку {{ email }}. Там Ви знайдете покликання для підтвердження адреми та подальші кроки.", + + // "register-page.registration.error.head": "Error when trying to register email", + + "register-page.registration.error.head": "Виникла помилка при реєстрації email", + + // "register-page.registration.error.content": "An error occured when registering the following email address: {{ email }}", + + "register-page.registration.error.content": "Виникла помилка при реєстрації email: {{ email }}", + + + + // "relationships.add.error.relationship-type.content": "No suitable match could be found for relationship type {{ type }} between the two items", + // TODO New key - Add a translation + "relationships.add.error.relationship-type.content": "Не вдалося знайти відповідний тип відносин {{ type }} між двома документами", + + // "relationships.add.error.server.content": "The server returned an error", + + "relationships.add.error.server.content": "Сервер повідомив про помилку", + + // "relationships.add.error.title": "Unable to add relationship", + + "relationships.add.error.title": "Неможливо додати зв'язок", + + // "relationships.isAuthorOf": "Authors", + "relationships.isAuthorOf": "Автори", + + // "relationships.isAuthorOf.Person": "Authors (persons)", + + "relationships.isAuthorOf.Person": "Автори", + + // "relationships.isAuthorOf.OrgUnit": "Authors (organizational units)", + + "relationships.isAuthorOf.OrgUnit": "Автори (структурна одиниця, наприклад університет)", + + // "relationships.isIssueOf": "Journal Issues", + "relationships.isIssueOf": "Випуски видання", + + // "relationships.isJournalIssueOf": "Journal Issue", + "relationships.isJournalIssueOf": "Випуск видання", + + // "relationships.isJournalOf": "Journals", + "relationships.isJournalOf": "Видання", + + // "relationships.isOrgUnitOf": "Organizational Units", + "relationships.isOrgUnitOf": "Структурні одиниці", + + // "relationships.isPersonOf": "Authors", + "relationships.isPersonOf": "Автори", + + // "relationships.isProjectOf": "Research Projects", + "relationships.isProjectOf": "Дослідницькі проекти", + + // "relationships.isPublicationOf": "Publications", + "relationships.isPublicationOf": "Публікації", + + // "relationships.isPublicationOfJournalIssue": "Articles", + "relationships.isPublicationOfJournalIssue": "Публікації", + + // "relationships.isSingleJournalOf": "Journal", + "relationships.isSingleJournalOf": "Видання", + + // "relationships.isSingleVolumeOf": "Journal Volume", + "relationships.isSingleVolumeOf": "Том видання", + + // "relationships.isVolumeOf": "Journal Volumes", + "relationships.isVolumeOf": "Томи видання", + + // "relationships.isContributorOf": "Contributors", + "relationships.isContributorOf": "Дописувачі", + + + + // "resource-policies.add.button": "Add", + + "resource-policies.add.button": "Додати", + + // "resource-policies.add.for.": "Add a new policy", + + "resource-policies.add.for.": "Додати нову політику", + + // "resource-policies.add.for.bitstream": "Add a new Bitstream policy", + + "resource-policies.add.for.bitstream": "Додати нову політику для файлу", + + // "resource-policies.add.for.bundle": "Add a new Bundle policy", + + "resource-policies.add.for.bundle": "AДодати нову політику для контейнеру файлів", + + // "resource-policies.add.for.item": "Add a new Item policy", + + "resource-policies.add.for.item": "Додати нову політику для документа", + + // "resource-policies.add.for.community": "Add a new Community policy", + + "resource-policies.add.for.community": "Додати нову політику для фонду", + + // "resource-policies.add.for.collection": "Add a new Collection policy", + + "resource-policies.add.for.collection": "Додати нову політику для зібрання", + + // "resource-policies.create.page.heading": "Create new resource policy for ", + + "resource-policies.create.page.heading": "Створити нову ресурсну політику для ", + + // "resource-policies.create.page.failure.content": "An error occurred while creating the resource policy.", + + "resource-policies.create.page.failure.content": "Виникла помилка при створенні ресурсної політики.", + + // "resource-policies.create.page.success.content": "Operation successful", + + "resource-policies.create.page.success.content": "Операція пройшла успішно", + + // "resource-policies.create.page.title": "Create new resource policy", + + "resource-policies.create.page.title": "Створити нову ресурсну політику", + + // "resource-policies.delete.btn": "Delete selected", + + "resource-policies.delete.btn": "Видалити вибране", + + // "resource-policies.delete.btn.title": "Delete selected resource policies", + + "resource-policies.delete.btn.title": "Видалити вибрані ресурсні політики", + + // "resource-policies.delete.failure.content": "An error occurred while deleting selected resource policies.", + + "resource-policies.delete.failure.content": "Виникла помилка при видаленні вибраних ресурсних політик.", + + // "resource-policies.delete.success.content": "Операція пройшла успішно", + + "resource-policies.delete.success.content": "Операція пройшла успішно", + + // "resource-policies.edit.page.heading": "Edit resource policy ", + + "resource-policies.edit.page.heading": "Редагувати ресурсну політику ", + + // "resource-policies.edit.page.failure.content": "An error occurred while editing the resource policy.", + + "resource-policies.edit.page.failure.content": "Виникла помилка при редагуванні ресурсної політики.", + + // "resource-policies.edit.page.success.content": "Operation successful", + + "resource-policies.edit.page.success.content": "Операція пройшла успішно", + + // "resource-policies.edit.page.title": "Edit resource policy", + + "resource-policies.edit.page.title": "Редагувати ресурсну політику", + + // "resource-policies.form.action-type.label": "Select the action type", + + "resource-policies.form.action-type.label": "Виберіть тип дії", + + // "resource-policies.form.action-type.required": "You must select the resource policy action.", + + "resource-policies.form.action-type.required": "Ви повинні вибрати дію політики ресурсів.", + + // "resource-policies.form.eperson-group-list.label": "The eperson or group that will be granted the permission", + + "resource-policies.form.eperson-group-list.label": "Особа чи група, якій буде надано дозвіл", + + // "resource-policies.form.eperson-group-list.select.btn": "Select", + + "resource-policies.form.eperson-group-list.select.btn": "Вибрати", + + // "resource-policies.form.eperson-group-list.tab.eperson": "Search for a ePerson", + + "resource-policies.form.eperson-group-list.tab.eperson": "Вибрати користувача", + + // "resource-policies.form.eperson-group-list.tab.group": "Search for a group", + + "resource-policies.form.eperson-group-list.tab.group": "Шукати групу", + + // "resource-policies.form.eperson-group-list.table.headers.action": "Action", + + "resource-policies.form.eperson-group-list.table.headers.action": "Дія", + + // "resource-policies.form.eperson-group-list.table.headers.id": "ID", + // TODO New key - Add a translation + "resource-policies.form.eperson-group-list.table.headers.id": "ID", + + // "resource-policies.form.eperson-group-list.table.headers.name": "Name", + + "resource-policies.form.eperson-group-list.table.headers.name": "Назва", + + // "resource-policies.form.date.end.label": "End Date", + + "resource-policies.form.date.end.label": "Кінцева дата", + + // "resource-policies.form.date.start.label": "Start Date", + + "resource-policies.form.date.start.label": "Дата початку", + + // "resource-policies.form.description.label": "Description", + + "resource-policies.form.description.label": "Опис", + + // "resource-policies.form.name.label": "Name", + + "resource-policies.form.name.label": "Назва", + + // "resource-policies.form.policy-type.label": "Select the policy type", + + "resource-policies.form.policy-type.label": "Виберіть тип політики", + + // "resource-policies.form.policy-type.required": "You must select the resource policy type.", + + "resource-policies.form.policy-type.required": "Спочатку ви повинні вибрати тип політики ресурсів.", + + // "resource-policies.table.headers.action": "Action", + + "resource-policies.table.headers.action": "Дія", + + // "resource-policies.table.headers.date.end": "End Date", + + "resource-policies.table.headers.date.end": "Кінцева дата", + + // "resource-policies.table.headers.date.start": "Start Date", + + "resource-policies.table.headers.date.start": "Дата початку", + + // "resource-policies.table.headers.edit": "Edit", + + "resource-policies.table.headers.edit": "Редагувати", + + // "resource-policies.table.headers.edit.group": "Edit group", + + "resource-policies.table.headers.edit.group": "Редагувати групу", + + // "resource-policies.table.headers.edit.policy": "Edit policy", + + "resource-policies.table.headers.edit.policy": "Редагувати політику", + + // "resource-policies.table.headers.eperson": "EPerson", + + "resource-policies.table.headers.eperson": "Користувач", + + // "resource-policies.table.headers.group": "Group", + + "resource-policies.table.headers.group": "Група", + + // "resource-policies.table.headers.id": "ID", + + "resource-policies.table.headers.id": "ID", + + // "resource-policies.table.headers.name": "Name", + + "resource-policies.table.headers.name": "Назва", + + // "resource-policies.table.headers.policyType": "type", + + "resource-policies.table.headers.policyType": "Тип", + + // "resource-policies.table.headers.title.for.bitstream": "Policies for Bitstream", + + "resource-policies.table.headers.title.for.bitstream": "Політики для файла", + + // "resource-policies.table.headers.title.for.bundle": "Policies for Bundle", + + "resource-policies.table.headers.title.for.bundle": "Політики для контейнера файлів", + + // "resource-policies.table.headers.title.for.item": "Policies for Item", + + "resource-policies.table.headers.title.for.item": "Політики для документа", + + // "resource-policies.table.headers.title.for.community": "Policies for Community", + + "resource-policies.table.headers.title.for.community": "Політики для фонду", + + // "resource-policies.table.headers.title.for.collection": "Policies for Collection", + + "resource-policies.table.headers.title.for.collection": "Політики для зібрання", + + + + // "search.description": "", + "search.description": "", + + // "search.switch-configuration.title": "Show", + "search.switch-configuration.title": "Показати", + + // "search.title": "DSpace Angular :: Search", + "search.title": "Репозиторій :: Пошук", + + // "search.breadcrumbs": "Search", + "search.breadcrumbs": "Шукати", + + + // "search.filters.applied.f.author": "Author", + "search.filters.applied.f.author": "Автор", + + // "search.filters.applied.f.dateIssued.max": "End date", + "search.filters.applied.f.dateIssued.max": "Кінцева дата", + + // "search.filters.applied.f.dateIssued.min": "Start date", + "search.filters.applied.f.dateIssued.min": "Дата початку", + + // "search.filters.applied.f.dateSubmitted": "Date submitted", + "search.filters.applied.f.dateSubmitted": "Дата надсилання", + + // "search.filters.applied.f.discoverable": "Private", + "search.filters.applied.f.discoverable": "Закритий", + + // "search.filters.applied.f.entityType": "Item Type", + "search.filters.applied.f.entityType": "Тип документа", + + // "search.filters.applied.f.has_content_in_original_bundle": "Has files", + "search.filters.applied.f.has_content_in_original_bundle": "Містить файли", + + // "search.filters.applied.f.itemtype": "Type", + "search.filters.applied.f.itemtype": "Тип", + + // "search.filters.applied.f.namedresourcetype": "Status", + "search.filters.applied.f.namedresourcetype": "Статус", + + // "search.filters.applied.f.subject": "Subject", + "search.filters.applied.f.subject": "Ключові слова", + + // "search.filters.applied.f.submitter": "Submitter", + "search.filters.applied.f.submitter": "Надсилач", + + // "search.filters.applied.f.jobTitle": "Job Title", + "search.filters.applied.f.jobTitle": "Посада", + + // "search.filters.applied.f.birthDate.max": "End birth date", + "search.filters.applied.f.birthDate.max": "End birth date", + + // "search.filters.applied.f.birthDate.min": "Start birth date", + "search.filters.applied.f.birthDate.min": "Start birth date", + + // "search.filters.applied.f.withdrawn": "Withdrawn", + "search.filters.applied.f.withdrawn": "Вилучено", + + + + // "search.filters.filter.author.head": "Author", + "search.filters.filter.author.head": "Автор", + + // "search.filters.filter.author.placeholder": "Author name", + "search.filters.filter.author.placeholder": "Ім'я автора", + + // "search.filters.filter.birthDate.head": "Birth Date", + "search.filters.filter.birthDate.head": "Дата народження", + + // "search.filters.filter.birthDate.placeholder": "Birth Date", + "search.filters.filter.birthDate.placeholder": "Дата народження", + + // "search.filters.filter.creativeDatePublished.head": "Date Published", + "search.filters.filter.creativeDatePublished.head": "Дата публікації", + + // "search.filters.filter.creativeDatePublished.placeholder": "Date Published", + "search.filters.filter.creativeDatePublished.placeholder": "Дата публікації", + + // "search.filters.filter.creativeWorkEditor.head": "Editor", + "search.filters.filter.creativeWorkEditor.head": "Редактор", + + // "search.filters.filter.creativeWorkEditor.placeholder": "Editor", + "search.filters.filter.creativeWorkEditor.placeholder": "Редактор", + + // "search.filters.filter.creativeWorkKeywords.head": "Subject", + "search.filters.filter.creativeWorkKeywords.head": "Ключові слова", + + // "search.filters.filter.creativeWorkKeywords.placeholder": "Subject", + "search.filters.filter.creativeWorkKeywords.placeholder": "Ключові слова", + + // "search.filters.filter.creativeWorkPublisher.head": "Publisher", + "search.filters.filter.creativeWorkPublisher.head": "Видавець", + + // "search.filters.filter.creativeWorkPublisher.placeholder": "Publisher", + "search.filters.filter.creativeWorkPublisher.placeholder": "Видавець", + + // "search.filters.filter.dateIssued.head": "Date", + "search.filters.filter.dateIssued.head": "Дата", + + // "search.filters.filter.dateIssued.max.placeholder": "Minimum Date", + "search.filters.filter.dateIssued.max.placeholder": "Мінімальна дата", + + // "search.filters.filter.dateIssued.min.placeholder": "Maximum Date", + "search.filters.filter.dateIssued.min.placeholder": "Максимальна дата", + + // "search.filters.filter.dateSubmitted.head": "Date submitted", + "search.filters.filter.dateSubmitted.head": "Дата надсилання", + + // "search.filters.filter.dateSubmitted.placeholder": "Date submitted", + "search.filters.filter.dateSubmitted.placeholder": "Дата надсилання", + + // "search.filters.filter.discoverable.head": "Private", + "search.filters.filter.discoverable.head": "Закритий", + + // "search.filters.filter.withdrawn.head": "Withdrawn", + "search.filters.filter.withdrawn.head": "Вилучено", + + // "search.filters.filter.entityType.head": "Item Type", + "search.filters.filter.entityType.head": "Тип документа", + + // "search.filters.filter.entityType.placeholder": "Item Type", + "search.filters.filter.entityType.placeholder": "Тип документа", + + // "search.filters.filter.has_content_in_original_bundle.head": "Has files", + "search.filters.filter.has_content_in_original_bundle.head": "Містить файли", + + // "search.filters.filter.itemtype.head": "Type", + "search.filters.filter.itemtype.head": "Тип", + + // "search.filters.filter.itemtype.placeholder": "Type", + "search.filters.filter.itemtype.placeholder": "Тип", + + // "search.filters.filter.jobTitle.head": "Job Title", + "search.filters.filter.jobTitle.head": "Посада", + + // "search.filters.filter.jobTitle.placeholder": "Job Title", + "search.filters.filter.jobTitle.placeholder": "Посада", + + // "search.filters.filter.knowsLanguage.head": "Known language", + "search.filters.filter.knowsLanguage.head": "Known language", + + // "search.filters.filter.knowsLanguage.placeholder": "Known language", + "search.filters.filter.knowsLanguage.placeholder": "Known language", + + // "search.filters.filter.namedresourcetype.head": "Status", + "search.filters.filter.namedresourcetype.head": "Статус", + + // "search.filters.filter.namedresourcetype.placeholder": "Status", + "search.filters.filter.namedresourcetype.placeholder": "Статус", + + // "search.filters.filter.objectpeople.head": "People", + "search.filters.filter.objectpeople.head": "Користувачі", + + // "search.filters.filter.objectpeople.placeholder": "People", + "search.filters.filter.objectpeople.placeholder": "Користувачі", + + // "search.filters.filter.organizationAddressCountry.head": "Country", + "search.filters.filter.organizationAddressCountry.head": "Країна", + + // "search.filters.filter.organizationAddressCountry.placeholder": "Country", + "search.filters.filter.organizationAddressCountry.placeholder": "Країна", + + // "search.filters.filter.organizationAddressLocality.head": "City", + "search.filters.filter.organizationAddressLocality.head": "Місто", + + // "search.filters.filter.organizationAddressLocality.placeholder": "City", + "search.filters.filter.organizationAddressLocality.placeholder": "Місто", + + // "search.filters.filter.organizationFoundingDate.head": "Date Founded", + "search.filters.filter.organizationFoundingDate.head": "Дата заснування", + + // "search.filters.filter.organizationFoundingDate.placeholder": "Date Founded", + "search.filters.filter.organizationFoundingDate.placeholder": "Дата заснування", + + // "search.filters.filter.scope.head": "Scope", + "search.filters.filter.scope.head": "Область застосування", + + // "search.filters.filter.scope.placeholder": "Scope filter", + "search.filters.filter.scope.placeholder": "Фільтр області застосування", + + // "search.filters.filter.show-less": "Collapse", + "search.filters.filter.show-less": "Згорнути", + + // "search.filters.filter.show-more": "Show more", + "search.filters.filter.show-more": "Детальніше", + + // "search.filters.filter.subject.head": "Subject", + "search.filters.filter.subject.head": "Ключові слова", + + // "search.filters.filter.subject.placeholder": "Subject", + "search.filters.filter.subject.placeholder": "Ключові слова", + + // "search.filters.filter.submitter.head": "Submitter", + "search.filters.filter.submitter.head": "Користувач, який надсилає", + + // "search.filters.filter.submitter.placeholder": "Submitter", + "search.filters.filter.submitter.placeholder": "Користувач, який надсилає", + + + + // "search.filters.entityType.JournalIssue": "Journal Issue", + "search.filters.entityType.JournalIssue": "Випуск видання", + + // "search.filters.entityType.JournalVolume": "Journal Volume", + "search.filters.entityType.JournalVolume": "Том видання", + + // "search.filters.entityType.OrgUnit": "Organizational Unit", + "search.filters.entityType.OrgUnit": "Структурна одиниця", + + // "search.filters.has_content_in_original_bundle.true": "Yes", + "search.filters.has_content_in_original_bundle.true": "Так", + + // "search.filters.has_content_in_original_bundle.false": "No", + "search.filters.has_content_in_original_bundle.false": "Ні", + + // "search.filters.discoverable.true": "No", + "search.filters.discoverable.true": "Ні", + + // "search.filters.discoverable.false": "Yes", + "search.filters.discoverable.false": "Так", + + // "search.filters.withdrawn.true": "Yes", + "search.filters.withdrawn.true": "Так", + + // "search.filters.withdrawn.false": "No", + "search.filters.withdrawn.false": "Ні", + + + // "search.filters.head": "Filters", + "search.filters.head": "Фільтри", + + // "search.filters.reset": "Reset filters", + "search.filters.reset": "Скинути фільтри", + + + + // "search.form.search": "Search", + "search.form.search": "Пошук", + + // "search.form.search_dspace": "Search DSpace", + "search.form.search_dspace": "Пошук у репозиторії", + + // "search.form.search_mydspace": "Search MyDSpace", + "search.form.search_mydspace": "Шукати у своїх документах", + + + + // "search.results.head": "Search Results", + "search.results.head": "Результати пошуку", + + // "search.results.no-results": "Your search returned no results. Having trouble finding what you're looking for? Try putting", + "search.results.no-results": "Ваш пошук не дав результатів. Вам важко знайти те, що ви шукаєте? Спробуйте поставити", + + // "search.results.no-results-link": "quotes around it", + "search.results.no-results-link": "лапки навколо запиту", + + // "search.results.empty": "Your search returned no results.", + "search.results.empty": "Ваш пошук не дав результатів.", + + + + // "search.sidebar.close": "Back to results", + "search.sidebar.close": "Повернутись до результатів", + + // "search.sidebar.filters.title": "Filters", + "search.sidebar.filters.title": "Фільтри", + + // "search.sidebar.open": "Search Tools", + "search.sidebar.open": "Засоби пошуку", + + // "search.sidebar.results": "results", + "search.sidebar.results": "результатів", + + // "search.sidebar.settings.rpp": "Results per page", + "search.sidebar.settings.rpp": "Результатів на сторінку", + + // "search.sidebar.settings.sort-by": "Sort By", + "search.sidebar.settings.sort-by": "Сортувати за", + + // "search.sidebar.settings.title": "Settings", + "search.sidebar.settings.title": "Налаштування", + + + + // "search.view-switch.show-detail": "Show detail", + "search.view-switch.show-detail": "Показати деталі", + + // "search.view-switch.show-grid": "Show as grid", + "search.view-switch.show-grid": "Показати у вигляді матриці", + + // "search.view-switch.show-list": "Show as list", + "search.view-switch.show-list": "Показати як список", + + + + // "sorting.ASC": "Ascending", + + "sorting.ASC": "У порядку збільшення", + + // "sorting.DESC": "Descending", + + "sorting.DESC": "У порядку зменшення", + + // "sorting.dc.title.ASC": "Title Ascending", + "sorting.dc.title.ASC": "У порядку збільшення за назвою", + + // "sorting.dc.title.DESC": "Title Descending", + "sorting.dc.title.DESC": "У порядку зменшення за назвою", + + // "sorting.score.DESC": "Relevance", + "sorting.score.DESC": "Актуальність", + + + + // "statistics.title": "Statistics", + + "statistics.title": "Статистика", + + // "statistics.header": "Statistics for {{ scope }}", + + "statistics.header": "Статистика для {{ scope }}", + + // "statistics.breadcrumbs": "Statistics", + + "statistics.breadcrumbs": "Статистика", + + // "statistics.page.no-data": "No data available", + + "statistics.page.no-data": "Дані відсутні", + + // "statistics.table.no-data": "No data available", + + "statistics.table.no-data": "Дані відсутні", + + // "statistics.table.title.TotalVisits": "Total visits", + + "statistics.table.title.TotalVisits": "Всього відвідувань", + + // "statistics.table.title.TotalVisitsPerMonth": "Total visits per month", + + "statistics.table.title.TotalVisitsPerMonth": "Всього відвідувань за місяць", + + // "statistics.table.title.TotalDownloads": "File Visits", + + "statistics.table.title.TotalDownloads": "Скачувань файлів", + + // "statistics.table.title.TopCountries": "Top country views", + + "statistics.table.title.TopCountries": "Топ за країнами", + + // "statistics.table.title.TopCities": "Top city views", + + "statistics.table.title.TopCities": "Топ за містами", + + // "statistics.table.header.views": "Views", + + "statistics.table.header.views": "Перегляди", + + + + // "submission.edit.title": "Edit Submission", + "submission.edit.title": "Редагувати внесення нового документа", + + // "submission.general.cannot_submit": "You have not the privilege to make a new submission.", + "submission.general.cannot_submit": "У Вас немає повноважень щоб внести новий документ.", + + // "submission.general.deposit": "Deposit", + "submission.general.deposit": "Депозит", + + // "submission.general.discard.confirm.cancel": "Cancel", + "submission.general.discard.confirm.cancel": "Відмінити", + + // "submission.general.discard.confirm.info": "This operation can't be undone. Are you sure?", + "submission.general.discard.confirm.info": "Цю операцію неможливо відмінити. Ви впевнені?", + + // "submission.general.discard.confirm.submit": "Yes, I'm sure", + "submission.general.discard.confirm.submit": "Так, я впевнений", + + // "submission.general.discard.confirm.title": "Discard submission", + "submission.general.discard.confirm.title": "Скасувати надсилання документа", + + // "submission.general.discard.submit": "Discard", + "submission.general.discard.submit": "Скасувати", + + // "submission.general.save": "Save", + "submission.general.save": "Зберегти", + + // "submission.general.save-later": "Save for later", + "submission.general.save-later": "Зберегти на потім", + + + // "submission.import-external.page.title": "Import metadata from an external source", + + "submission.import-external.page.title": "Імпортувати метадані із зовнішніх джерел", + + // "submission.import-external.title": "Import metadata from an external source", + + "submission.import-external.title": "Імпортувати метадані із зовнішніх джерел", + + // "submission.import-external.page.hint": "Enter a query above to find items from the web to import in to DSpace.", + + "submission.import-external.page.hint": "Введіть запит вище, щоб знайти елементи з Інтернету для імпорту в репозиторій", + + // "submission.import-external.back-to-my-dspace": "Back to MyDSpace", + + "submission.import-external.back-to-my-dspace": "Повернутись до репозиторію", + + // "submission.import-external.search.placeholder": "Search the external source", + + "submission.import-external.search.placeholder": "Шукати зовнішнє джерело даних", + + // "submission.import-external.search.button": "Search", + + "submission.import-external.search.button": "Пошук", + + // "submission.import-external.search.button.hint": "Write some words to search", + + "submission.import-external.search.button.hint": "Напишіть ключові слова для пошуку", + + // "submission.import-external.search.source.hint": "Pick an external source", + + "submission.import-external.search.source.hint": "Виберіть зовнішнє джерело даних", + + // "submission.import-external.source.arxiv": "arXiv", + + "submission.import-external.source.arxiv": "arXiv", + + // "submission.import-external.source.loading": "Loading ...", + + "submission.import-external.source.loading": "Завантажуюсь ...", + + // "submission.import-external.source.sherpaJournal": "SHERPA Journals", + + "submission.import-external.source.sherpaJournal": "SHERPA видання", + + // "submission.import-external.source.sherpaPublisher": "SHERPA Publishers", + + "submission.import-external.source.sherpaPublisher": "SHERPA видавці", + + // "submission.import-external.source.orcid": "ORCID", + + "submission.import-external.source.orcid": "ORCID", + + // "submission.import-external.source.pubmed": "Pubmed", + + "submission.import-external.source.pubmed": "Pubmed", + + // "submission.import-external.source.lcname": "Library of Congress Names", + + "submission.import-external.source.lcname": "Бібліотека Congress Names", + + // "submission.import-external.preview.title": "Item Preview", + + "submission.import-external.preview.title": "Перегляд документа", + + // "submission.import-external.preview.subtitle": "The metadata below was imported from an external source. It will be pre-filled when you start the submission.", + + "submission.import-external.preview.subtitle": "Наведені нижче метадані імпортовано із зовнішнього джерела. Їх буде попередньо заповнено, коли ви почнете надсилати документ у репозиторій.", + + // "submission.import-external.preview.button.import": "Start submission", + + "submission.import-external.preview.button.import": "Почати вносити документ", + + // "submission.import-external.preview.error.import.title": "Submission error", + + "submission.import-external.preview.error.import.title": "Виникла помилка при внесенні документа", + + // "submission.import-external.preview.error.import.body": "An error occurs during the external source entry import process.", + + "submission.import-external.preview.error.import.body": "Виникла помилка при імпорті даних.", + + // "submission.sections.describe.relationship-lookup.close": "Close", + "submission.sections.describe.relationship-lookup.close": "Закрити", + + // "submission.sections.describe.relationship-lookup.external-source.added": "Successfully added local entry to the selection", + "submission.sections.describe.relationship-lookup.external-source.added": "Локальний запис успішно додано", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.isAuthorOfPublication": "Import remote author", + + "submission.sections.describe.relationship-lookup.external-source.import-button-title.isAuthorOfPublication": "Імпорт віддаленого автора", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal": "Import remote journal", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal": "Імпорт віддаленого видання", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Issue": "Import remote journal issue", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Issue": "Імпорт віддаленого випуску видання", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Volume": "Import remote journal volume", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Volume": "Імпорт віддаленого тому видання", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.title": "Import Remote Author", + + "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.title": "Імпорт віддаленого автора", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.local-entity": "Successfully added local author to the selection", + + "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.local-entity": "Локального автора успішно додано до вибраних", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.new-entity": "Successfully imported and added external author to the selection", + + "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.new-entity": "Локального автора успішно імпортовано та додано до вибраних", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.authority": "Authority", + "submission.sections.describe.relationship-lookup.external-source.import-modal.authority": "Authority", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.authority.new": "Import as a new local authority entry", + "submission.sections.describe.relationship-lookup.external-source.import-modal.authority.new": "Import as a new local authority entry", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.cancel": "Cancel", + "submission.sections.describe.relationship-lookup.external-source.import-modal.cancel": "Відмінити", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.collection": "Select a collection to import new entries to", + "submission.sections.describe.relationship-lookup.external-source.import-modal.collection": "Виберіть зібрання, до якого потрібно імпортувати нові записи", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.entities": "Entities", + "submission.sections.describe.relationship-lookup.external-source.import-modal.entities": "Сутності", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.entities.new": "Import as a new local entity", + "submission.sections.describe.relationship-lookup.external-source.import-modal.entities.new": "Імпотрувати як нову локальну сутність", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.lcname": "Importing from LC Name", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.lcname": "Імпортувати з LC назвою", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.orcid": "Importing from ORCID", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.orcid": "Імпортувати з ORCID", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaJournal": "Importing from Sherpa Journal", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaJournal": "Імпортувати з Sherpa видання", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaPublisher": "Importing from Sherpa Publisher", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaPublisher": "Імпортувати з Sherpa видання", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.pubmed": "Importing from PubMed", + + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.pubmed": "Імпортувати з PubMed", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.arxiv": "Importing from arXiv", + + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.arxiv": "Імпортувати з arXiv", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.import": "Import", + "submission.sections.describe.relationship-lookup.external-source.import-modal.import": "Імпорт", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.title": "Import Remote Journal", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.title": "Імпорт віддаленого видання", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.local-entity": "Successfully added local journal to the selection", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.local-entity": "Нове видання успішно додане до вибраних", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.new-entity": "Successfully imported and added external journal to the selection", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.new-entity": "Нове видання успішно імпортовано та додане до вибраних", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.title": "Import Remote Journal Issue", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.title": "Імпорт віддаленого випуску видання", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.local-entity": "Successfully added local journal issue to the selection", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.local-entity": "Випуск видання успішно додане до вибраних", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.new-entity": "Successfully imported and added external journal issue to the selection", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.new-entity": "Випуск видання успішно імпортовано та додане до вибраних", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.title": "Import Remote Journal Volume", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.title": "Імпорт віддаленого тому видання", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.local-entity": "Successfully added local journal volume to the selection", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.local-entity": "Том видання успішно додано до вибраних", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.new-entity": "Successfully imported and added external journal volume to the selection", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.new-entity": "Том видання успішно імпортовано та додано до вибраних", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Select a local match:", + "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Виберіть локальний збіг", + + // "submission.sections.describe.relationship-lookup.search-tab.deselect-all": "Deselect all", + "submission.sections.describe.relationship-lookup.search-tab.deselect-all": "Видалити позначення для всіх", + + // "submission.sections.describe.relationship-lookup.search-tab.deselect-page": "Deselect page", + "submission.sections.describe.relationship-lookup.search-tab.deselect-page": "Видалити позначення сторінки", + + // "submission.sections.describe.relationship-lookup.search-tab.loading": "Loading...", + "submission.sections.describe.relationship-lookup.search-tab.loading": "Вантажиться...", + + // "submission.sections.describe.relationship-lookup.search-tab.placeholder": "Search query", + "submission.sections.describe.relationship-lookup.search-tab.placeholder": "Пошуковий запит", + + // "submission.sections.describe.relationship-lookup.search-tab.search": "Go", + "submission.sections.describe.relationship-lookup.search-tab.search": "Вперед", + + // "submission.sections.describe.relationship-lookup.search-tab.select-all": "Select all", + "submission.sections.describe.relationship-lookup.search-tab.select-all": "Виділити все", + + // "submission.sections.describe.relationship-lookup.search-tab.select-page": "Select page", + "submission.sections.describe.relationship-lookup.search-tab.select-page": "Виділити сторінку", + + // "submission.sections.describe.relationship-lookup.selected": "Selected {{ size }} items", + "submission.sections.describe.relationship-lookup.selected": "Позначені {{ size }} документи", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isAuthorOfPublication": "Local Authors ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isAuthorOfPublication": "Локальні автори ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalOfPublication": "Local Journals ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalOfPublication": "Локальні видання ({{ count }})", + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Project": "Local Projects ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.Project": "Локальні проекти ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Publication": "Local Publications ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.Publication": "Локальні публікації ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Person": "Local Authors ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.Person": "Локальні автори ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.OrgUnit": "Local Organizational Units ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.OrgUnit": "Локальні структурні одиниці({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataPackage": "Local Data Packages ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataPackage": "Локальні пакети даних ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataFile": "Local Data Files ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataFile": "Локальні файли даних ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Journal": "Local Journals ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.Journal": "Локальні видання ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalIssueOfPublication": "Local Journal Issues ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalIssueOfPublication": "Локальні випуски видань ({{ count }})", + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.JournalIssue": "Local Journal Issues ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.JournalIssue": "Локальні випуски видань ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalVolumeOfPublication": "Local Journal Volumes ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalVolumeOfPublication": "Локальні томи видань ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.JournalVolume": "Local Journal Volumes ({{ count }})", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.JournalVolume": "Локальні томи видань({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Sherpa Journals ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Sherpa видання ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaPublisher": "Sherpa Publishers ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaPublisher": "Sherpa видавці ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.orcid": "ORCID ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.orcid": "ORCID ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.lcname": "LC Names ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.lcname": "LC назви ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.pubmed": "PubMed ({{ count }})", + // TODO New key - Add a translation + "submission.sections.describe.relationship-lookup.search-tab.tab-title.pubmed": "PubMed ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.arxiv": "arXiv ({{ count }})", + // TODO New key - Add a translation + "submission.sections.describe.relationship-lookup.search-tab.tab-title.arxiv": "arXiv ({{ count }})", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfPublication": "Search for Funding Agencies", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfPublication": "Пошук фінансових агентств", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingOfPublication": "Search for Funding", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingOfPublication": "Пошук фінансування", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Search for Organizational Units", + + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Пошук структурних одиниць", + + // "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Current Selection ({{ count }})", + "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Вибрані позиції ({{ count }})", + + // "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Journal Issues", + + "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Випуски видання", + + // "submission.sections.describe.relationship-lookup.title.JournalIssue": "Journal Issues", + + "submission.sections.describe.relationship-lookup.title.JournalIssue": "Випуски видання", + + // "submission.sections.describe.relationship-lookup.title.isJournalVolumeOfPublication": "Journal Volumes", + + "submission.sections.describe.relationship-lookup.title.isJournalVolumeOfPublication": "Томи видання", + + // "submission.sections.describe.relationship-lookup.title.JournalVolume": "Journal Volumes", + + "submission.sections.describe.relationship-lookup.title.JournalVolume": "Томи видання", + + // "submission.sections.describe.relationship-lookup.title.isJournalOfPublication": "Journals", + + "submission.sections.describe.relationship-lookup.title.isJournalOfPublication": "Видання", + + // "submission.sections.describe.relationship-lookup.title.isAuthorOfPublication": "Authors", + + "submission.sections.describe.relationship-lookup.title.isAuthorOfPublication": "Автори", + + // "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfPublication": "Funding Agency", + + "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfPublication": "Фінансова агенція", + + // "submission.sections.describe.relationship-lookup.title.Project": "Projects", + + "submission.sections.describe.relationship-lookup.title.Project": "Проекти", + + // "submission.sections.describe.relationship-lookup.title.Publication": "Publications", + + "submission.sections.describe.relationship-lookup.title.Publication": "Публікації", + + // "submission.sections.describe.relationship-lookup.title.Person": "Authors", + + "submission.sections.describe.relationship-lookup.title.Person": "Автори", + + // "submission.sections.describe.relationship-lookup.title.OrgUnit": "Organizational Units", + + "submission.sections.describe.relationship-lookup.title.OrgUnit": "Структурні одиниці", + + // "submission.sections.describe.relationship-lookup.title.DataPackage": "Data Packages", + + "submission.sections.describe.relationship-lookup.title.DataPackage": "Пакети даних", + + // "submission.sections.describe.relationship-lookup.title.DataFile": "Data Files", + + "submission.sections.describe.relationship-lookup.title.DataFile": "Файли даних", + + // "submission.sections.describe.relationship-lookup.title.Funding Agency": "Funding Agency", + "submission.sections.describe.relationship-lookup.title.Funding Agency": "Фінансова агенція", + + // "submission.sections.describe.relationship-lookup.title.isFundingOfPublication": "Funding", + + "submission.sections.describe.relationship-lookup.title.isFundingOfPublication": "Фінансування", + + // "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Parent Organizational Unit", + + "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Головна структурна одиниця", + + // "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Toggle dropdown", + "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Перемкнути спадне меню", + + // "submission.sections.describe.relationship-lookup.selection-tab.settings": "Settings", + "submission.sections.describe.relationship-lookup.selection-tab.settings": "Налаштування", + + // "submission.sections.describe.relationship-lookup.selection-tab.no-selection": "Your selection is currently empty.", + "submission.sections.describe.relationship-lookup.selection-tab.no-selection": "Ви нічого не вибрали", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.isAuthorOfPublication": "Selected Authors", + + "submission.sections.describe.relationship-lookup.selection-tab.title.isAuthorOfPublication": "Вибрані автори", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalOfPublication": "Selected Journals", + + "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalOfPublication": "Вибрані видання", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalVolumeOfPublication": "Selected Journal Volume", + + "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalVolumeOfPublication": "Вибрані томи видання", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.Project": "Selected Projects", + + "submission.sections.describe.relationship-lookup.selection-tab.title.Project": "Вибрані проекти", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.Publication": "Selected Publications", + + "submission.sections.describe.relationship-lookup.selection-tab.title.Publication": "Вибрані публікації", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.Person": "Selected Authors", + + "submission.sections.describe.relationship-lookup.selection-tab.title.Person": "Вибрані автори", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.OrgUnit": "Selected Organizational Units", + + "submission.sections.describe.relationship-lookup.selection-tab.title.OrgUnit": "Вибрані структурні одиниці", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.DataPackage": "Selected Data Packages", + + "submission.sections.describe.relationship-lookup.selection-tab.title.DataPackage": "Вибрані пакети даних", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.DataFile": "Selected Data Files", + + "submission.sections.describe.relationship-lookup.selection-tab.title.DataFile": "ВИбрані файли даних", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.Journal": "Selected Journals", + "submission.sections.describe.relationship-lookup.selection-tab.title.Journal": "Вибрані видання", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalIssueOfPublication": "Selected Issue", + + "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalIssueOfPublication": "Вибрані випуски", + // "submission.sections.describe.relationship-lookup.selection-tab.title.JournalVolume": "Selected Journal Volume", + + "submission.sections.describe.relationship-lookup.selection-tab.title.JournalVolume": "Вибрані томи видання", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingAgencyOfPublication": "Selected Funding Agency", + + "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingAgencyOfPublication": "Вибрана фінансова агенція", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Selected Funding", + + "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Вибране фінансування", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.JournalIssue": "Selected Issue", + + "submission.sections.describe.relationship-lookup.selection-tab.title.JournalIssue": "Вибрані випуски", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.isChildOrgUnitOf": "Selected Organizational Unit", + + "submission.sections.describe.relationship-lookup.selection-tab.title.isChildOrgUnitOf": "Вибрані структурні одиниці", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaJournal": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaJournal": "Результати пошуку", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaPublisher": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaPublisher": "Результати пошуку", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.orcid": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title.orcid": "Результати пошуку", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.orcidv2": "Search Results", + + "submission.sections.describe.relationship-lookup.selection-tab.title.orcidv2": "Результати пошуку", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.lcname": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title.lcname": "Результати пошуку", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.pubmed": "Search Results", + + "submission.sections.describe.relationship-lookup.selection-tab.title.pubmed": "Результати пошуку", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.arxiv": "Search Results", + + "submission.sections.describe.relationship-lookup.selection-tab.title.arxiv": "Результати пошуку", + + // "submission.sections.describe.relationship-lookup.name-variant.notification.content": "Would you like to save \"{{ value }}\" as a name variant for this person so you and others can reuse it for future submissions? If you don\'t you can still use it for this submission.", + "submission.sections.describe.relationship-lookup.name-variant.notification.content": "Чи бажаєте ви зберегти \"{{ value }}\" як варіант імені для цього користувача, щоб ви та інші могли повторно використовувати його для майбутніх надсилань? Якщо ви цього не зробите, ви можете використовувати його для цього надсилання.", + + // "submission.sections.describe.relationship-lookup.name-variant.notification.confirm": "Save a new name variant", + "submission.sections.describe.relationship-lookup.name-variant.notification.confirm": "Збережіть новий варіант імені", + + // "submission.sections.describe.relationship-lookup.name-variant.notification.decline": "Use only for this submission", + "submission.sections.describe.relationship-lookup.name-variant.notification.decline": "Використовуйте тільки для даного надсилання документів", + + // "submission.sections.ccLicense.type": "License Type", + + "submission.sections.ccLicense.type": "Тип ліцензії", + + // "submission.sections.ccLicense.select": "Select a license type…", + + "submission.sections.ccLicense.select": "Биберіть тип ліцензії…", + + // "submission.sections.ccLicense.change": "Change your license type…", + + "submission.sections.ccLicense.change": "Змініть тип ліцензії…", + + // "submission.sections.ccLicense.none": "No licenses available", + + "submission.sections.ccLicense.none": "Нема ліцензії", + + // "submission.sections.ccLicense.option.select": "Select an option…", + + "submission.sections.ccLicense.option.select": "Виберіть опцію…", + + // "submission.sections.ccLicense.link": "You’ve selected the following license:", + + "submission.sections.ccLicense.link": "Ви вибрали ліцензію:", + + // "submission.sections.ccLicense.confirmation": "I grant the license above", + + "submission.sections.ccLicense.confirmation": "Я даю згоду на цю ліцензію", + + // "submission.sections.general.add-more": "Add more", + "submission.sections.general.add-more": "Додати більше", + + // "submission.sections.general.collection": "Collection", + "submission.sections.general.collection": "Зібрання", + + // "submission.sections.general.deposit_error_notice": "There was an issue when submitting the item, please try again later.", + "submission.sections.general.deposit_error_notice": "Під час надсилання елемента виникла проблема. Повторіть спробу пізніше.", + + // "submission.sections.general.deposit_success_notice": "Submission deposited successfully.", + "submission.sections.general.deposit_success_notice": "Подання документа успшно збережено.", + + // "submission.sections.general.discard_error_notice": "There was an issue when discarding the item, please try again later.", + "submission.sections.general.discard_error_notice": "Під час внесення документа виникла проблема. Повторіть спробу пізніше", + + // "submission.sections.general.discard_success_notice": "Submission discarded successfully.", + "submission.sections.general.discard_success_notice": "Подання успішно відхилено.", + + // "submission.sections.general.metadata-extracted": "New metadata have been extracted and added to the {{sectionId}} section.", + "submission.sections.general.metadata-extracted": "Нові метадані видобуто та додано до {{sectionId}} секції.", + + // "submission.sections.general.metadata-extracted-new-section": "New {{sectionId}} section has been added to submission.", + "submission.sections.general.metadata-extracted-new-section": "Нова {{sectionId}} секція додана до подання документа.", + + // "submission.sections.general.no-collection": "No collection found", + "submission.sections.general.no-collection": "Зібрання не знайдено", + + // "submission.sections.general.no-sections": "No options available", + "submission.sections.general.no-sections": "Опції відсутні", + + // "submission.sections.general.save_error_notice": "There was an issue when saving the item, please try again later.", + "submission.sections.general.save_error_notice": "Під час збереження документа виникла проблема. Повторіть спробу пізніше.", + + // "submission.sections.general.save_success_notice": "Submission saved successfully.", + "submission.sections.general.save_success_notice": "Подання успішно збережено.", + + // "submission.sections.general.search-collection": "Search for a collection", + "submission.sections.general.search-collection": "Пошук зібрання", + + // "submission.sections.general.sections_not_valid": "There are incomplete sections.", + "submission.sections.general.sections_not_valid": "Неповні розділи.", + + + + // "submission.sections.submit.progressbar.CClicense": "Creative commons license", + + "submission.sections.submit.progressbar.CClicense": "СС ліцензії", + + // "submission.sections.submit.progressbar.describe.recycle": "Recycle", + "submission.sections.submit.progressbar.describe.recycle": "Переробити", + + // "submission.sections.submit.progressbar.describe.stepcustom": "Describe", + "submission.sections.submit.progressbar.describe.stepcustom": "Описати", + + // "submission.sections.submit.progressbar.describe.stepone": "Describe", + "submission.sections.submit.progressbar.describe.stepone": "Описати", + + // "submission.sections.submit.progressbar.describe.steptwo": "Describe", + "submission.sections.submit.progressbar.describe.steptwo": "Описати", + + // "submission.sections.submit.progressbar.detect-duplicate": "Potential duplicates", + "submission.sections.submit.progressbar.detect-duplicate": "Можливі дублікати", + + // "submission.sections.submit.progressbar.license": "Deposit license", + "submission.sections.submit.progressbar.license": "Ліцензія", + + // "submission.sections.submit.progressbar.upload": "Upload files", + "submission.sections.submit.progressbar.upload": "Завантажені файли", + + + + // "submission.sections.upload.delete.confirm.cancel": "Cancel", + "submission.sections.upload.delete.confirm.cancel": "Відмінити", + + // "submission.sections.upload.delete.confirm.info": "This operation can't be undone. Are you sure?", + "submission.sections.upload.delete.confirm.info": "Ця операція не може бути відмінена. Ви впевнені?", + + // "submission.sections.upload.delete.confirm.submit": "Yes, I'm sure", + "submission.sections.upload.delete.confirm.submit": "Так, я впевнений", + + // "submission.sections.upload.delete.confirm.title": "Delete bitstream", + "submission.sections.upload.delete.confirm.title": "Видалити файл", + + // "submission.sections.upload.delete.submit": "Delete", + "submission.sections.upload.delete.submit": "Видалити", + + // "submission.sections.upload.drop-message": "Drop files to attach them to the item", + "submission.sections.upload.drop-message": "Перетягніть файли, щоб приєднати їх до документа", + + // "submission.sections.upload.form.access-condition-label": "Access condition type", + "submission.sections.upload.form.access-condition-label": "Умови доступу", + + // "submission.sections.upload.form.date-required": "Date is required.", + "submission.sections.upload.form.date-required": "Поле дати є обов\'язковим для заповнення.", + + // "submission.sections.upload.form.from-label": "Grant access from", + + "submission.sections.upload.form.from-label": "Надати доступ з", + + // "submission.sections.upload.form.from-placeholder": "From", + "submission.sections.upload.form.from-placeholder": "З", + + // "submission.sections.upload.form.group-label": "Group", + "submission.sections.upload.form.group-label": "Група", + + // "submission.sections.upload.form.group-required": "Group is required.", + "submission.sections.upload.form.group-required": "Група є обов\'язковою.", + + // "submission.sections.upload.form.until-label": "Grant access until", + + "submission.sections.upload.form.until-label": "Надати доступ до", + + // "submission.sections.upload.form.until-placeholder": "Until", + "submission.sections.upload.form.until-placeholder": "До", + + // "submission.sections.upload.header.policy.default.nolist": "Uploaded files in the {{collectionName}} collection will be accessible according to the following group(s):", + "submission.sections.upload.header.policy.default.nolist": "Завантажені файли зібрань {{collectionName}} будуть доступні групам:", + + // "submission.sections.upload.header.policy.default.withlist": "Please note that uploaded files in the {{collectionName}} collection will be accessible, in addition to what is explicitly decided for the single file, with the following group(s):", + "submission.sections.upload.header.policy.default.withlist": "Зверніть увагу, що завантажені файли в {{collectionName}} зібрання будуть доступні, для користувачів, що входять у групу(и):", + + // "submission.sections.upload.info": "Here you will find all the files currently in the item. You can update the file metadata and access conditions or upload additional files just dragging & dropping them everywhere in the page", + "submission.sections.upload.info": "Тут ви знайдете всі файли, які зараз містяться в документі. Ви можете оновити метадані файлу та умови доступу або завантажити додаткові файли, просто перетягнувши їх сюди на сторінці", + + // "submission.sections.upload.no-entry": "No", + "submission.sections.upload.no-entry": "Ні", + + // "submission.sections.upload.no-file-uploaded": "No file uploaded yet.", + "submission.sections.upload.no-file-uploaded": "Наразі файл не завантажено.", + + // "submission.sections.upload.save-metadata": "Save metadata", + "submission.sections.upload.save-metadata": "Зберегти метадані", + + // "submission.sections.upload.undo": "Cancel", + "submission.sections.upload.undo": "Відмінити", + + // "submission.sections.upload.upload-failed": "Upload failed", + "submission.sections.upload.upload-failed": "Помилка завантаження", + + // "submission.sections.upload.upload-successful": "Upload successful", + "submission.sections.upload.upload-successful": "Успішно завантажено", + + + + // "submission.submit.title": "Submission", + "submission.submit.title": "Надсилання документів", + + + + // "submission.workflow.generic.delete": "Delete", + "submission.workflow.generic.delete": "Видалити", + + // "submission.workflow.generic.delete-help": "If you would to discard this item, select \"Delete\". You will then be asked to confirm it.", + "submission.workflow.generic.delete-help": "Якщо ви хочете видалити цей елемент, виберіть \"Видалити\". Потім вас попросять підтвердити це.", + + // "submission.workflow.generic.edit": "Edit", + "submission.workflow.generic.edit": "Редагувати", + + // "submission.workflow.generic.edit-help": "Select this option to change the item's metadata.", + "submission.workflow.generic.edit-help": "Виберіть цю опцію для зміни метаданих документа.", + + // "submission.workflow.generic.view": "View", + "submission.workflow.generic.view": "Перегляд", + + // "submission.workflow.generic.view-help": "Select this option to view the item's metadata.", + "submission.workflow.generic.view-help": "Виберіть цю опцію для перегляду метаданих документа.", + + + + // "submission.workflow.tasks.claimed.approve": "Approve", + "submission.workflow.tasks.claimed.approve": "Затвердити", + + // "submission.workflow.tasks.claimed.approve_help": "If you have reviewed the item and it is suitable for inclusion in the collection, select \"Approve\".", + "submission.workflow.tasks.claimed.approve_help": "Якщо ви переглянули документ і він підходить для включення в зібрання, виберіть \"Затвердити\".", + + // "submission.workflow.tasks.claimed.edit": "Edit", + "submission.workflow.tasks.claimed.edit": "Редагувати", + + // "submission.workflow.tasks.claimed.edit_help": "Select this option to change the item's metadata.", + "submission.workflow.tasks.claimed.edit_help": "Виберіть цю опцію для зміни метаданих документа.", + + // "submission.workflow.tasks.claimed.reject.reason.info": "Please enter your reason for rejecting the submission into the box below, indicating whether the submitter may fix a problem and resubmit.", + "submission.workflow.tasks.claimed.reject.reason.info": "Будь ласка, введіть причину відхилення надсилання документа в полі нижче, вказавши, чи може заявник вирішити проблему та повторно подати.", + + // "submission.workflow.tasks.claimed.reject.reason.placeholder": "Describe the reason of reject", + "submission.workflow.tasks.claimed.reject.reason.placeholder": "Опишіть причину відхилення", + + // "submission.workflow.tasks.claimed.reject.reason.submit": "Reject item", + "submission.workflow.tasks.claimed.reject.reason.submit": "Вдхилити документ", + + // "submission.workflow.tasks.claimed.reject.reason.title": "Reason", + "submission.workflow.tasks.claimed.reject.reason.title": "Причина", + + // "submission.workflow.tasks.claimed.reject.submit": "Reject", + "submission.workflow.tasks.claimed.reject.submit": "Відхилити", + + // "submission.workflow.tasks.claimed.reject_help": "If you have reviewed the item and found it is not suitable for inclusion in the collection, select \"Reject\". You will then be asked to enter a message indicating why the item is unsuitable, and whether the submitter should change something and resubmit.", + "submission.workflow.tasks.claimed.reject_help": "Якщо ви переглянули документ і виявили, що він не підходить для включення в зібрання, виберіть \"Відхилити\". Після цього вас попросять ввести інформацію про причину відхилення і чи повинен автор щось змінити та повторно подати.", + + // "submission.workflow.tasks.claimed.return": "Return to pool", + "submission.workflow.tasks.claimed.return": "Повернути до черги", + + // "submission.workflow.tasks.claimed.return_help": "Return the task to the pool so that another user may perform the task.", + "submission.workflow.tasks.claimed.return_help": "Поверніть завдання до черги, щоб інший користувач міг виконати завдання.", + + + + // "submission.workflow.tasks.generic.error": "Error occurred during operation...", + "submission.workflow.tasks.generic.error": "Виникла помилка...", + + // "submission.workflow.tasks.generic.processing": "Processing...", + "submission.workflow.tasks.generic.processing": "Опрацювання...", + + // "submission.workflow.tasks.generic.submitter": "Submitter", + "submission.workflow.tasks.generic.submitter": "Користувач, котрий надсилає", + + // "submission.workflow.tasks.generic.success": "Operation successful", + "submission.workflow.tasks.generic.success": "Операція пройшла успішно", + + + + // "submission.workflow.tasks.pool.claim": "Claim", + "submission.workflow.tasks.pool.claim": "Претензія", + + // "submission.workflow.tasks.pool.claim_help": "Assign this task to yourself.", + "submission.workflow.tasks.pool.claim_help": "Доручіть собі це завдання.", + + // "submission.workflow.tasks.pool.hide-detail": "Hide detail", + "submission.workflow.tasks.pool.hide-detail": "Приховати деталі", + + // "submission.workflow.tasks.pool.show-detail": "Show detail", + "submission.workflow.tasks.pool.show-detail": "Показати деталі", + + + + // "title": "DSpace", + "title": "Репозиторій", + + + + // "vocabulary-treeview.header": "Hierarchical tree view", + + "vocabulary-treeview.header": "Перегляд деревовидної структури", + + // "vocabulary-treeview.load-more": "Load more", + + "vocabulary-treeview.load-more": "Детальніше", + + // "vocabulary-treeview.search.form.reset": "Reset", + + "vocabulary-treeview.search.form.reset": "Скинути", + + // "vocabulary-treeview.search.form.search": "Search", + + "vocabulary-treeview.search.form.search": "Шукати", + + // "vocabulary-treeview.search.no-result": "There were no items to show", + + "vocabulary-treeview.search.no-result": "Не знайдено жодних документів", + + // "vocabulary-treeview.tree.description.nsi": "The Norwegian Science Index", + + "vocabulary-treeview.tree.description.nsi": "Norwegian Science індекс", + + // "vocabulary-treeview.tree.description.srsc": "Research Subject Categories", + + "vocabulary-treeview.tree.description.srsc": "Категорії дослідницьких напрямків", + + + + // "uploader.browse": "browse", + "uploader.browse": "перегляд", + + // "uploader.drag-message": "Drag & Drop your files here", + "uploader.drag-message": "Перетягніть файли сюди", + + // "uploader.or": ", or ", + // TODO Source message changed - Revise the translation + "uploader.or": ", або", + + // "uploader.processing": "Processing", + "uploader.processing": "Опрацювання", + + // "uploader.queue-length": "Queue length", + "uploader.queue-length": "Довжина черги", + + // "virtual-metadata.delete-item.info": "Select the types for which you want to save the virtual metadata as real metadata", + "virtual-metadata.delete-item.info": "Виберіть типи, для яких ви хочете зберегти віртуальні метадані як справжні метадані", + + // "virtual-metadata.delete-item.modal-head": "The virtual metadata of this relation", + "virtual-metadata.delete-item.modal-head": "Віртуальні метадані цього відношення", + + // "virtual-metadata.delete-relationship.modal-head": "Select the items for which you want to save the virtual metadata as real metadata", + "virtual-metadata.delete-relationship.modal-head": "Виберіть документи, для яких ви хочете зберегти віртуальні метадані як справжні метадані", + + + + // "workflowAdmin.search.results.head": "Administer Workflow", + "workflowAdmin.search.results.head": "Робочий процес адміністратора", + + + + // "workflow-item.delete.notification.success.title": "Deleted", + + "workflow-item.delete.notification.success.title": "Видалено", + + // "workflow-item.delete.notification.success.content": "This workflow item was successfully deleted", + + "workflow-item.delete.notification.success.content": "Робочий процес внесення документа був успішно видалений", + + // "workflow-item.delete.notification.error.title": "Something went wrong", + + "workflow-item.delete.notification.error.title": "Щось пішло не так", + + // "workflow-item.delete.notification.error.content": "The workflow item could not be deleted", + + "workflow-item.delete.notification.error.content": "Документ з робочого процесу не може бути видалений", + + // "workflow-item.delete.title": "Delete workflow item", + + "workflow-item.delete.title": "Видалити документ з робочого процесу", + + // "workflow-item.delete.header": "Delete workflow item", + + "workflow-item.delete.header": "Видалити документ з робочого процесу", + + // "workflow-item.delete.button.cancel": "Cancel", + + "workflow-item.delete.button.cancel": "Відмінити", + + // "workflow-item.delete.button.confirm": "Delete", + + "workflow-item.delete.button.confirm": "Видалити", + + + // "workflow-item.send-back.notification.success.title": "Sent back to submitter", + + "workflow-item.send-back.notification.success.title": "Відіслати назад до користувача, котрий надіслав цей документ", + + // "workflow-item.send-back.notification.success.content": "This workflow item was successfully sent back to the submitter", + + "workflow-item.send-back.notification.success.content": "Цей документ був відісланий назад до користувача, котрий надіслав цей документ", + + // "workflow-item.send-back.notification.error.title": "Something went wrong", + + "workflow-item.send-back.notification.error.title": "Щось пішло не так", + + // "workflow-item.send-back.notification.error.content": "The workflow item could not be sent back to the submitter", + + "workflow-item.send-back.notification.error.content": "Цей документ НЕ може біти відісланий назад до користувача, котрий надіслав цей документ", + + // "workflow-item.send-back.title": "Send workflow item back to submitter", + + "workflow-item.send-back.title": "Надіслати документ назад до користувача, котрий його надіслав", + + // "workflow-item.send-back.header": "Send workflow item back to submitter", + + "workflow-item.send-back.header": "Надіслати документ назад до користувача, котрий його надіслав", + + // "workflow-item.send-back.button.cancel": "Cancel", + + "workflow-item.send-back.button.cancel": "Відмінити", + + // "workflow-item.send-back.button.confirm": "Send back" + + "workflow-item.send-back.button.confirm": "Надіслати назад" + + +} From c6fd55baf49878f1e7deb9466505ec86542cf2c8 Mon Sep 17 00:00:00 2001 From: Jens Vannerum Date: Wed, 2 Nov 2022 12:55:21 +0100 Subject: [PATCH 15/83] 96062: Alter test to match themed component --- .../collection-selector.component.spec.ts | 7 +++++-- ...submission-import-external-collection.component.spec.ts | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/app/my-dspace-page/collection-selector/collection-selector.component.spec.ts b/src/app/my-dspace-page/collection-selector/collection-selector.component.spec.ts index ce54d326fc..af043b447b 100644 --- a/src/app/my-dspace-page/collection-selector/collection-selector.component.spec.ts +++ b/src/app/my-dspace-page/collection-selector/collection-selector.component.spec.ts @@ -128,10 +128,13 @@ describe('CollectionSelectorComponent', () => { beforeEach(() => { scheduler = getTestScheduler(); - fixture = TestBed.createComponent(CollectionSelectorComponent); + fixture = TestBed.overrideComponent(CollectionSelectorComponent, { + set: { + template: '' + } + }).createComponent(CollectionSelectorComponent); component = fixture.componentInstance; fixture.detectChanges(); - }); it('should create', () => { diff --git a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts index 4f3c54b642..9edab06c6f 100644 --- a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts +++ b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts @@ -122,7 +122,7 @@ describe('SubmissionImportExternalCollectionComponent test suite', () => { fixture.detectChanges(); fixture.whenStable().then(() => { - const dropdownMenu = fixture.debugElement.query(By.css('ds-collection-dropdown')).nativeElement; + const dropdownMenu = fixture.debugElement.query(By.css('ds-themed-collection-dropdown')).nativeElement; expect(dropdownMenu.classList).toContain('d-none'); }); })); From 434e0cb9071b65720d871b2ca4b6e5631350265d Mon Sep 17 00:00:00 2001 From: nwoodward Date: Thu, 27 Oct 2022 16:11:03 -0500 Subject: [PATCH 16/83] fix function to match default value of websvc.opensearch.svccontext --- src/app/shared/rss-feed/rss.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/shared/rss-feed/rss.component.ts b/src/app/shared/rss-feed/rss.component.ts index 3fdb859bdc..0dd523c6bc 100644 --- a/src/app/shared/rss-feed/rss.component.ts +++ b/src/app/shared/rss-feed/rss.component.ts @@ -114,7 +114,7 @@ export class RSSComponent implements OnInit, OnDestroy { * @returns The combine URL to opensearch */ formulateRoute(uuid: string, opensearch: string, sort: SortOptions, query: string): string { - let route = 'search?format=atom'; + let route = '?format=atom'; if (uuid) { route += `&scope=${uuid}`; } @@ -126,7 +126,7 @@ export class RSSComponent implements OnInit, OnDestroy { } else { route += `&query=*`; } - route = '/' + opensearch + '/' + route; + route = '/' + opensearch + route; return route; } From 2235072beaad9a82f657b8dbc72b0dffcfd90127 Mon Sep 17 00:00:00 2001 From: nwoodward Date: Thu, 27 Oct 2022 17:07:14 -0500 Subject: [PATCH 17/83] changed path in tests to match default value for websvc.opensearch.svccontext --- src/app/shared/rss-feed/rss.component.spec.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/shared/rss-feed/rss.component.spec.ts b/src/app/shared/rss-feed/rss.component.spec.ts index fd7f2c5321..aa2a2a63bc 100644 --- a/src/app/shared/rss-feed/rss.component.spec.ts +++ b/src/app/shared/rss-feed/rss.component.spec.ts @@ -96,17 +96,17 @@ describe('RssComponent', () => { }); it('should formulate the correct url given params in url', () => { - const route = comp.formulateRoute(uuid, 'opensearch', options, query); + const route = comp.formulateRoute(uuid, 'opensearch/search', options, query); expect(route).toBe('/opensearch/search?format=atom&scope=2cfcf65e-0a51-4bcb-8592-b8db7b064790&sort=dc.title&sort_direction=DESC&query=test'); }); it('should skip uuid if its null', () => { - const route = comp.formulateRoute(null, 'opensearch', options, query); + const route = comp.formulateRoute(null, 'opensearch/search', options, query); expect(route).toBe('/opensearch/search?format=atom&sort=dc.title&sort_direction=DESC&query=test'); }); it('should default to query * if none provided', () => { - const route = comp.formulateRoute(null, 'opensearch', options, null); + const route = comp.formulateRoute(null, 'opensearch/search', options, null); expect(route).toBe('/opensearch/search?format=atom&sort=dc.title&sort_direction=DESC&query=*'); }); }); From 63011bc41dfc31c63fb1921e89bfd0f76b0ac8d6 Mon Sep 17 00:00:00 2001 From: nwoodward Date: Wed, 2 Nov 2022 10:38:55 -0500 Subject: [PATCH 18/83] removed sorting parameters from RSSComponent --- src/app/shared/rss-feed/rss.component.spec.ts | 16 ++++++---------- src/app/shared/rss-feed/rss.component.ts | 10 ++-------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/app/shared/rss-feed/rss.component.spec.ts b/src/app/shared/rss-feed/rss.component.spec.ts index aa2a2a63bc..61b54a1125 100644 --- a/src/app/shared/rss-feed/rss.component.spec.ts +++ b/src/app/shared/rss-feed/rss.component.spec.ts @@ -1,5 +1,4 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; import { ConfigurationDataService } from '../../core/data/configuration-data.service'; import { RemoteData } from '../../core/data/remote-data'; import { GroupDataService } from '../../core/eperson/group-data.service'; @@ -23,7 +22,6 @@ import { RouterMock } from '../mocks/router.mock'; describe('RssComponent', () => { let comp: RSSComponent; - let options: SortOptions; let fixture: ComponentFixture; let uuid: string; let query: string; @@ -63,7 +61,6 @@ describe('RssComponent', () => { pageSize: 10, currentPage: 1 }), - sort: new SortOptions('dc.title', SortDirection.ASC), })); groupDataService = jasmine.createSpyObj('groupsDataService', { findListByHref: createSuccessfulRemoteDataObject$(createPaginatedList([])), @@ -88,7 +85,6 @@ describe('RssComponent', () => { })); beforeEach(() => { - options = new SortOptions('dc.title', SortDirection.DESC); uuid = '2cfcf65e-0a51-4bcb-8592-b8db7b064790'; query = 'test'; fixture = TestBed.createComponent(RSSComponent); @@ -96,18 +92,18 @@ describe('RssComponent', () => { }); it('should formulate the correct url given params in url', () => { - const route = comp.formulateRoute(uuid, 'opensearch/search', options, query); - expect(route).toBe('/opensearch/search?format=atom&scope=2cfcf65e-0a51-4bcb-8592-b8db7b064790&sort=dc.title&sort_direction=DESC&query=test'); + const route = comp.formulateRoute(uuid, 'opensearch/search', query); + expect(route).toBe('/opensearch/search?format=atom&scope=2cfcf65e-0a51-4bcb-8592-b8db7b064790&query=test'); }); it('should skip uuid if its null', () => { - const route = comp.formulateRoute(null, 'opensearch/search', options, query); - expect(route).toBe('/opensearch/search?format=atom&sort=dc.title&sort_direction=DESC&query=test'); + const route = comp.formulateRoute(null, 'opensearch/search', query); + expect(route).toBe('/opensearch/search?format=atom&query=test'); }); it('should default to query * if none provided', () => { - const route = comp.formulateRoute(null, 'opensearch/search', options, null); - expect(route).toBe('/opensearch/search?format=atom&sort=dc.title&sort_direction=DESC&query=*'); + const route = comp.formulateRoute(null, 'opensearch/search', null); + expect(route).toBe('/opensearch/search?format=atom&query=*'); }); }); diff --git a/src/app/shared/rss-feed/rss.component.ts b/src/app/shared/rss-feed/rss.component.ts index 0dd523c6bc..8a33aeeb68 100644 --- a/src/app/shared/rss-feed/rss.component.ts +++ b/src/app/shared/rss-feed/rss.component.ts @@ -12,7 +12,6 @@ import { ConfigurationDataService } from '../../core/data/configuration-data.ser import { getFirstCompletedRemoteData } from '../../core/shared/operators'; import { environment } from '../../../../src/environments/environment'; import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service'; -import { SortOptions } from '../../core/cache/models/sort-options.model'; import { PaginationService } from '../../core/pagination/pagination.service'; import { Router } from '@angular/router'; import { map, switchMap } from 'rxjs/operators'; @@ -39,7 +38,6 @@ export class RSSComponent implements OnInit, OnDestroy { uuid: string; configuration$: Observable; - sortOption$: Observable; subs: Subscription[] = []; @@ -93,7 +91,7 @@ export class RSSComponent implements OnInit, OnDestroy { return null; } this.uuid = this.groupDataService.getUUIDFromString(this.router.url); - const route = environment.rest.baseUrl + this.formulateRoute(this.uuid, openSearchUri, searchOptions.sort, searchOptions.query); + const route = environment.rest.baseUrl + this.formulateRoute(this.uuid, openSearchUri, searchOptions.query); this.addLinks(route); this.linkHeadService.addTag({ href: environment.rest.baseUrl + '/' + openSearchUri + '/service', @@ -109,18 +107,14 @@ export class RSSComponent implements OnInit, OnDestroy { * Function created a route given the different params available to opensearch * @param uuid The uuid if a scope is present * @param opensearch openSearch uri - * @param sort The sort options for the opensearch request * @param query The query string that was provided in the search * @returns The combine URL to opensearch */ - formulateRoute(uuid: string, opensearch: string, sort: SortOptions, query: string): string { + formulateRoute(uuid: string, opensearch: string, query: string): string { let route = '?format=atom'; if (uuid) { route += `&scope=${uuid}`; } - if (sort && sort.direction && sort.field && sort.field !== 'id') { - route += `&sort=${sort.field}&sort_direction=${sort.direction}`; - } if (query) { route += `&query=${query}`; } else { From 9c05a116a847171a1068039bdf899b9d91592739 Mon Sep 17 00:00:00 2001 From: Toni Prieto Date: Wed, 2 Nov 2022 18:28:24 +0100 Subject: [PATCH 19/83] Fix use case with cc.license.jurisdiction key commented out --- .../cc-license/submission-section-cc-licenses.component.html | 2 +- .../cc-license/submission-section-cc-licenses.component.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html index f10cd04b60..0796da5a64 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html @@ -81,7 +81,7 @@ - + {{ option.label }} diff --git a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts index 0e435e7d27..c8cd898f96 100644 --- a/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts +++ b/src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts @@ -167,7 +167,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent * @param field the field for which to get the selected option value. */ getSelectedOption(ccLicense: SubmissionCcLicence, field: Field): Option { - if (field.id === 'jurisdiction' && this.defaultJurisdiction !== 'none') { + if (field.id === 'jurisdiction' && this.defaultJurisdiction !== undefined && this.defaultJurisdiction !== 'none') { return field.enums.find(option => option.id === this.defaultJurisdiction); } return this.data.ccLicense.fields[field.id]; @@ -274,7 +274,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent getFirstCompletedRemoteData(), getRemoteDataPayload() ).subscribe((remoteData) => { - if (remoteData.values.length === 0) { + if (remoteData === undefined || remoteData.values.length === 0) { // No value configured, use blank value (International jurisdiction) this.defaultJurisdiction = ''; } else { From 98ea3ebbff1a3bb74bcd72769d4c89a51f9b978a Mon Sep 17 00:00:00 2001 From: Sufiyan Shaikh Date: Thu, 3 Nov 2022 15:33:49 +0530 Subject: [PATCH 20/83] [DSC-807-MAIN] Aggiornare labels nella sezione Health della demo --- src/assets/i18n/en.json5 | 8 ++++---- src/assets/i18n/es.json5 | 8 ++++---- src/assets/i18n/hi.json5 | 8 ++++---- src/assets/i18n/kk.json5 | 16 ++++++++-------- src/assets/i18n/pt-BR.json5 | 10 +++++----- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 1c9caeba9b..a806588701 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -1687,13 +1687,13 @@ "health-page.section.geoIp.title": "GeoIp", - "health-page.section.solrAuthorityCore.title": "Sor: authority core", + "health-page.section.solrAuthorityCore.title": "Solr: authority core", - "health-page.section.solrOaiCore.title": "Sor: oai core", + "health-page.section.solrOaiCore.title": "Solr: oai core", - "health-page.section.solrSearchCore.title": "Sor: search core", + "health-page.section.solrSearchCore.title": "Solr: search core", - "health-page.section.solrStatisticsCore.title": "Sor: statistics core", + "health-page.section.solrStatisticsCore.title": "Solr: statistics core", "health-page.section-info.app.title": "Application Backend", diff --git a/src/assets/i18n/es.json5 b/src/assets/i18n/es.json5 index 023baad6de..02169514c4 100644 --- a/src/assets/i18n/es.json5 +++ b/src/assets/i18n/es.json5 @@ -2430,16 +2430,16 @@ // "health-page.section.geoIp.title": "GeoIp", "health-page.section.geoIp.title": "GeoIp", - // "health-page.section.solrAuthorityCore.title": "Sor: authority core", + // "health-page.section.solrAuthorityCore.title": "Solr: authority core", "health-page.section.solrAuthorityCore.title": "Solr: authority core", - // "health-page.section.solrOaiCore.title": "Sor: oai core", + // "health-page.section.solrOaiCore.title": "Solr: oai core", "health-page.section.solrOaiCore.title": "Solr: oai core", - // "health-page.section.solrSearchCore.title": "Sor: search core", + // "health-page.section.solrSearchCore.title": "Solr: search core", "health-page.section.solrSearchCore.title": "Solr: search core", - // "health-page.section.solrStatisticsCore.title": "Sor: statistics core", + // "health-page.section.solrStatisticsCore.title": "Solr: statistics core", "health-page.section.solrStatisticsCore.title": "Solr: statistics core", // "health-page.section-info.app.title": "Application Backend", diff --git a/src/assets/i18n/hi.json5 b/src/assets/i18n/hi.json5 index 13d0b10cb2..4a59dc1b1b 100644 --- a/src/assets/i18n/hi.json5 +++ b/src/assets/i18n/hi.json5 @@ -1569,13 +1569,13 @@ "health-page.section.no-issues": "कोई समस्या नहीं मिली", - "health-page.section.solrAuthorityCore.title": "Sor: प्राधिकरण कोर", + "health-page.section.solrAuthorityCore.title": "Solr: प्राधिकरण कोर", - "health-page.section.solrOaiCore.title": "Sor: oai कोर", + "health-page.section.solrOaiCore.title": "Solr: oai कोर", - "health-page.section.solrSearchCore.title": "Sor: मूल खोज", + "health-page.section.solrSearchCore.title": "Solr: मूल खोज", - "health-page.section.solrStatisticsCore.title": "Sor: सांख्यिकी कोर", + "health-page.section.solrStatisticsCore.title": "Solr: सांख्यिकी कोर", "health-page.status": "स्थिति", diff --git a/src/assets/i18n/kk.json5 b/src/assets/i18n/kk.json5 index 66db055f50..8e46ee73ce 100644 --- a/src/assets/i18n/kk.json5 +++ b/src/assets/i18n/kk.json5 @@ -2445,17 +2445,17 @@ // "health-page.section.geoIp.title": "GeoIp", "health-page.section.geoIp.title": "GeoIp", - // "health-page.section.solrAuthorityCore.title": "Sor: authority core", - "health-page.section.solrAuthorityCore.title": "Sor: биліктің өзегі", + // "health-page.section.solrAuthorityCore.title": "Solr: authority core", + "health-page.section.solrAuthorityCore.title": "Solr: биліктің өзегі", - // "health-page.section.solrOaiCore.title": "Sor: oai core", - "health-page.section.solrOaiCore.title": "Sor: oai өзегі", + // "health-page.section.solrOaiCore.title": "Solr: oai core", + "health-page.section.solrOaiCore.title": "Solr: oai өзегі", - // "health-page.section.solrSearchCore.title": "Sor: search core", - "health-page.section.solrSearchCore.title": "Sor: іздеу өзегі", + // "health-page.section.solrSearchCore.title": "Solr: search core", + "health-page.section.solrSearchCore.title": "Solr: іздеу өзегі", - // "health-page.section.solrStatisticsCore.title": "Sor: statistics core", - "health-page.section.solrStatisticsCore.title": "Sor: статистиканың өзегі", + // "health-page.section.solrStatisticsCore.title": "Solr: statistics core", + "health-page.section.solrStatisticsCore.title": "Solr: статистиканың өзегі", // "health-page.section-info.app.title": "Application Backend", "health-page.section-info.app.title": "Қосымшаның серверлік бөлігі", diff --git a/src/assets/i18n/pt-BR.json5 b/src/assets/i18n/pt-BR.json5 index 04b66d41d9..77b06a6566 100644 --- a/src/assets/i18n/pt-BR.json5 +++ b/src/assets/i18n/pt-BR.json5 @@ -2378,17 +2378,17 @@ // "health-page.section.geoIp.title": "GeoIp", "health-page.section.geoIp.title": "GeoIp", - // "health-page.section.solrAuthorityCore.title": "Sor: authority core", + // "health-page.section.solrAuthorityCore.title": "Solr: authority core", "health-page.section.solrAuthorityCore.title": "Solr: authority core", - // "health-page.section.solrOaiCore.title": "Sor: oai core", + // "health-page.section.solrOaiCore.title": "Solr: oai core", "health-page.section.solrOaiCore.title": "Solr: oai core", - // "health-page.section.solrSearchCore.title": "Sor: search core", + // "health-page.section.solrSearchCore.title": "Solr: search core", "health-page.section.solrSearchCore.title": "Solr: core pesquisa", - // "health-page.section.solrStatisticsCore.title": "Sor: statistics core", - "health-page.section.solrStatisticsCore.title": "Soilr: estatisticas core", + // "health-page.section.solrStatisticsCore.title": "Solr: statistics core", + "health-page.section.solrStatisticsCore.title": "Solr: estatisticas core", // "health-page.section-info.app.title": "Application Backend", "health-page.section-info.app.title": "Aplicação de Backend", From 5c2c60db8b0e4757a2518b4c81c9cfe89c85e1bf Mon Sep 17 00:00:00 2001 From: Giuseppe Digilio Date: Thu, 3 Nov 2022 15:08:16 +0100 Subject: [PATCH 21/83] [CST-7376] fix issue with timezone within the test class --- src/app/shared/date.util.spec.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/shared/date.util.spec.ts b/src/app/shared/date.util.spec.ts index d7c418e8ae..992a3f31fa 100644 --- a/src/app/shared/date.util.spec.ts +++ b/src/app/shared/date.util.spec.ts @@ -22,7 +22,7 @@ describe('Date Utils', () => { }); it('should convert NgbDateStruct to YYYY-MM-DDThh:mm:ssZ string', () => { // NOTE: month is zero indexed which is why it increases by one - const date = new Date(2022, 5, 3); + const date = new Date(Date.UTC(2022, 5, 3)) expect(dateToISOFormat(dateToNgbDateStruct(date))).toEqual('2022-06-03T00:00:00Z'); }); }); @@ -30,22 +30,22 @@ describe('Date Utils', () => { describe('dateToString', () => { it('should convert Date to YYYY-MM-DD string', () => { // NOTE: month is zero indexed which is why it increases by one - expect(dateToString(new Date(2022, 5, 3))).toEqual('2022-06-03'); + expect(dateToString(new Date(Date.UTC(2022, 5, 3)))).toEqual('2022-06-03'); }); it('should convert Date with time to YYYY-MM-DD string', () => { // NOTE: month is zero indexed which is why it increases by one - expect(dateToString(new Date(2022, 5, 3, 3, 24, 0))).toEqual('2022-06-03'); + expect(dateToString(new Date(Date.UTC(2022, 5, 3, 3, 24, 0)))).toEqual('2022-06-03'); }); it('should convert Month only to YYYY-MM-DD string', () => { // NOTE: month is zero indexed which is why it increases by one - expect(dateToString(new Date(2022, 5))).toEqual('2022-06-01'); + expect(dateToString(new Date(Date.UTC(2022, 5)))).toEqual('2022-06-01'); }); it('should convert ISO Date to YYYY-MM-DD string', () => { expect(dateToString(new Date('2022-06-03T03:24:00Z'))).toEqual('2022-06-03'); }); it('should convert NgbDateStruct to YYYY-MM-DD string', () => { // NOTE: month is zero indexed which is why it increases by one - const date = new Date(2022, 5, 3); + const date = new Date(Date.UTC(2022, 5, 3)); expect(dateToString(dateToNgbDateStruct(date))).toEqual('2022-06-03'); }); }); From da6da6209b2c362601620dd32b53951062ddc467 Mon Sep 17 00:00:00 2001 From: Giuseppe Digilio Date: Thu, 3 Nov 2022 15:46:36 +0100 Subject: [PATCH 22/83] [CST-7376] fix lint error --- src/app/shared/date.util.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/shared/date.util.spec.ts b/src/app/shared/date.util.spec.ts index 992a3f31fa..4576ea497c 100644 --- a/src/app/shared/date.util.spec.ts +++ b/src/app/shared/date.util.spec.ts @@ -22,7 +22,7 @@ describe('Date Utils', () => { }); it('should convert NgbDateStruct to YYYY-MM-DDThh:mm:ssZ string', () => { // NOTE: month is zero indexed which is why it increases by one - const date = new Date(Date.UTC(2022, 5, 3)) + const date = new Date(Date.UTC(2022, 5, 3)); expect(dateToISOFormat(dateToNgbDateStruct(date))).toEqual('2022-06-03T00:00:00Z'); }); }); From 6d1d446c0d23e939d4e3eb26100feeeae9ee6cbf Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Thu, 3 Nov 2022 15:03:47 -0500 Subject: [PATCH 23/83] Update to the latest version of all GitHub actions --- .github/workflows/build.yml | 14 +++++++------- .github/workflows/docker.yml | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3dfb79ddc9..c58e09edf2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,11 +32,11 @@ jobs: steps: # https://github.com/actions/checkout - name: Checkout codebase - uses: actions/checkout@v2 + uses: actions/checkout@v3 # https://github.com/actions/setup-node - name: Install Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} @@ -61,7 +61,7 @@ jobs: id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - name: Cache Yarn dependencies - uses: actions/cache@v2 + uses: actions/cache@v3 with: # Cache entire Yarn cache directory (see previous step) path: ${{ steps.yarn-cache-dir-path.outputs.dir }} @@ -88,7 +88,7 @@ jobs: # Upload coverage reports to Codecov (for one version of Node only) # https://github.com/codecov/codecov-action - name: Upload coverage to Codecov.io - uses: codecov/codecov-action@v2 + uses: codecov/codecov-action@v3 if: matrix.node-version == '16.x' # Using docker-compose start backend using CI configuration @@ -103,7 +103,7 @@ jobs: # https://github.com/cypress-io/github-action # (NOTE: to run these e2e tests locally, just use 'ng e2e') - name: Run e2e tests (integration tests) - uses: cypress-io/github-action@v2 + uses: cypress-io/github-action@v4 with: # Run tests in Chrome, headless mode browser: chrome @@ -119,7 +119,7 @@ jobs: # Cypress always creates a video of all e2e tests (whether they succeeded or failed) # Save those in an Artifact - name: Upload e2e test videos to Artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 if: always() with: name: e2e-test-videos @@ -128,7 +128,7 @@ jobs: # If e2e tests fail, Cypress creates a screenshot of what happened # Save those in an Artifact - name: Upload e2e test failure screenshots to Artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 if: failure() with: name: e2e-test-screenshots diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 350fea6c34..908c5c34fd 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -42,11 +42,11 @@ jobs: steps: # https://github.com/actions/checkout - name: Checkout codebase - uses: actions/checkout@v2 + uses: actions/checkout@v3 # https://github.com/docker/setup-buildx-action - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 # https://github.com/docker/setup-qemu-action - name: Set up QEMU emulation to build for multiple architectures @@ -56,7 +56,7 @@ jobs: - name: Login to DockerHub # Only login if not a PR, as PRs only trigger a Docker build and not a push if: github.event_name != 'pull_request' - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_ACCESS_TOKEN }} @@ -68,7 +68,7 @@ jobs: # Get Metadata for docker_build step below - name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-angular' image id: meta_build - uses: docker/metadata-action@v3 + uses: docker/metadata-action@v4 with: images: dspace/dspace-angular tags: ${{ env.IMAGE_TAGS }} @@ -77,7 +77,7 @@ jobs: # https://github.com/docker/build-push-action - name: Build and push 'dspace-angular' image id: docker_build - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v3 with: context: . file: ./Dockerfile From 9e843e36fa53c4290459c110a31be884b8867e24 Mon Sep 17 00:00:00 2001 From: Vincenzo Mecca Date: Fri, 4 Nov 2022 10:43:16 +0100 Subject: [PATCH 24/83] [1950] [DURACOM-101] Regex validator improved feat: - New regexp to validate pattern used for regex validation; --- .../form/builder/parsers/field-parser.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/app/shared/form/builder/parsers/field-parser.ts b/src/app/shared/form/builder/parsers/field-parser.ts index 86a7d99e41..e2a907056e 100644 --- a/src/app/shared/form/builder/parsers/field-parser.ts +++ b/src/app/shared/form/builder/parsers/field-parser.ts @@ -1,7 +1,7 @@ -import {Inject, InjectionToken} from '@angular/core'; +import { Inject, InjectionToken } from '@angular/core'; -import uniqueId from 'lodash/uniqueId'; -import {DynamicFormControlLayout, DynamicFormControlRelation, MATCH_VISIBLE, OR_OPERATOR} from '@ng-dynamic-forms/core'; +import { uniqueId } from 'lodash'; +import { DynamicFormControlLayout, DynamicFormControlRelation, MATCH_VISIBLE, OR_OPERATOR } from '@ng-dynamic-forms/core'; import { hasValue, isNotEmpty, isNotNull, isNotUndefined } from '../../../empty.util'; import { FormFieldModel } from '../models/form-field.model'; @@ -22,6 +22,7 @@ export const SUBMISSION_ID: InjectionToken = new InjectionToken( export const CONFIG_DATA: InjectionToken = new InjectionToken('configData'); export const INIT_FORM_VALUES: InjectionToken = new InjectionToken('initFormValues'); export const PARSER_OPTIONS: InjectionToken = new InjectionToken('parserOptions'); +export const REGEX_FIELD_VALIDATOR: RegExp = new RegExp('(\\/?)(.+)\\1([gimsuy]*)', 'i'); export abstract class FieldParser { @@ -43,7 +44,7 @@ export abstract class FieldParser { public abstract modelFactory(fieldValue?: FormFieldMetadataValueObject, label?: boolean): any; public parse() { - if (((this.getInitValueCount() > 1 && !this.configData.repeatable) || (this.configData.repeatable)) + if (((this.getInitValueCount() > 1 && !this.configData.repeatable) || (this.configData.repeatable)) && (this.configData.input.type !== ParserType.List) && (this.configData.input.type !== ParserType.Tag) ) { @@ -315,6 +316,7 @@ export abstract class FieldParser { * fields in type bind, made up of a 'match' outcome (make this field visible), an 'operator' * (OR) and a 'when' condition (the bindValues array). * @param configuredTypeBindValues array of types from the submission definition (CONFIG_DATA) + * @param typeField * @private * @return DynamicFormControlRelation[] array with one relation in it, for type bind matching to show a field */ @@ -344,7 +346,13 @@ export abstract class FieldParser { } protected addPatternValidator(controlModel) { - const regex = new RegExp(this.configData.input.regex); + const validatorMatcher = this.configData.input.regex.match(REGEX_FIELD_VALIDATOR); + let regex; + if (validatorMatcher != null && validatorMatcher.length > 3) { + regex = new RegExp(validatorMatcher[2], validatorMatcher[3]); + } else { + regex = new RegExp(this.configData.input.regex); + } controlModel.validators = Object.assign({}, controlModel.validators, { pattern: regex }); controlModel.errorMessages = Object.assign( {}, From 2ed8f8bad85a5c57299e34e84f6da1ea2150e249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Fern=C3=A1ndez=20Celorio?= Date: Fri, 4 Nov 2022 10:40:29 +0000 Subject: [PATCH 25/83] Numbre of bitstreams in item page is now configurable --- config/config.example.yml | 7 ++++ .../full-file-section.component.ts | 33 ++++++++++--------- .../file-section/file-section.component.ts | 9 +++-- src/config/default-app-config.ts | 11 ++++++- src/config/item-config.interface.ts | 11 +++++++ src/environments/environment.test.ts | 11 ++++++- 6 files changed, 62 insertions(+), 20 deletions(-) diff --git a/config/config.example.yml b/config/config.example.yml index 27400f0041..52a0720230 100644 --- a/config/config.example.yml +++ b/config/config.example.yml @@ -207,6 +207,13 @@ item: undoTimeout: 10000 # 10 seconds # Show the item access status label in items lists showAccessStatuses: false + simpleView: + bitstreamPageSize: 5 + fullView: + # Number of entries in the bitstream list in the full item view page. + # Rounded to the nearest size in the list of selectable sizes on the + # settings menu. See pageSizeOptions in 'pagination-component-options.model.ts'. + bitstreamPageSize: 5 # Collection Page Config collection: diff --git a/src/app/item-page/full/field-components/file-section/full-file-section.component.ts b/src/app/item-page/full/field-components/file-section/full-file-section.component.ts index e21c1a32eb..89134a321e 100644 --- a/src/app/item-page/full/field-components/file-section/full-file-section.component.ts +++ b/src/app/item-page/full/field-components/file-section/full-file-section.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Inject, Input, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { BitstreamDataService } from '../../../../core/data/bitstream-data.service'; @@ -14,6 +14,7 @@ import { NotificationsService } from '../../../../shared/notifications/notificat import { TranslateService } from '@ngx-translate/core'; import { hasValue, isEmpty } from '../../../../shared/empty.util'; import { PaginationService } from '../../../../core/pagination/pagination.service'; +import { AppConfig, APP_CONFIG } from 'src/config/app-config.interface'; /** * This component renders the file section of the item @@ -34,26 +35,28 @@ export class FullFileSectionComponent extends FileSectionComponent implements On originals$: Observable>>; licenses$: Observable>>; - pageSize = 5; - originalOptions = Object.assign(new PaginationComponentOptions(), { - id: 'obo', - currentPage: 1, - pageSize: this.pageSize - }); - - licenseOptions = Object.assign(new PaginationComponentOptions(), { - id: 'lbo', - currentPage: 1, - pageSize: this.pageSize - }); + originalOptions: PaginationComponentOptions; + licenseOptions: PaginationComponentOptions; constructor( bitstreamDataService: BitstreamDataService, protected notificationsService: NotificationsService, protected translateService: TranslateService, - protected paginationService: PaginationService + protected paginationService: PaginationService, + @Inject(APP_CONFIG) protected appConfig: AppConfig ) { - super(bitstreamDataService, notificationsService, translateService); + super(bitstreamDataService, notificationsService, translateService, appConfig); + this.originalOptions = Object.assign(new PaginationComponentOptions(), { + id: 'obo', + currentPage: 1, + pageSize: this.appConfig.item.fullView.bitstreamPageSize + }); + + this.licenseOptions = Object.assign(new PaginationComponentOptions(), { + id: 'lbo', + currentPage: 1, + pageSize: this.appConfig.item.fullView.bitstreamPageSize + }); } ngOnInit(): void { diff --git a/src/app/item-page/simple/field-components/file-section/file-section.component.ts b/src/app/item-page/simple/field-components/file-section/file-section.component.ts index d28b579996..a0e40376e5 100644 --- a/src/app/item-page/simple/field-components/file-section/file-section.component.ts +++ b/src/app/item-page/simple/field-components/file-section/file-section.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Inject, Input, OnInit } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { BitstreamDataService } from '../../../../core/data/bitstream-data.service'; @@ -10,6 +10,7 @@ import { PaginatedList } from '../../../../core/data/paginated-list.model'; import { NotificationsService } from '../../../../shared/notifications/notifications.service'; import { TranslateService } from '@ngx-translate/core'; import { getFirstCompletedRemoteData } from '../../../../core/shared/operators'; +import { AppConfig, APP_CONFIG } from 'src/config/app-config.interface'; /** * This component renders the file section of the item @@ -35,13 +36,15 @@ export class FileSectionComponent implements OnInit { isLastPage: boolean; - pageSize = 5; + pageSize: number; constructor( protected bitstreamDataService: BitstreamDataService, protected notificationsService: NotificationsService, - protected translateService: TranslateService + protected translateService: TranslateService, + @Inject(APP_CONFIG) protected appConfig: AppConfig ) { + this.pageSize = this.appConfig.item.simpleView.bitstreamPageSize } ngOnInit(): void { diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts index f489abc53b..3940ea1c19 100644 --- a/src/config/default-app-config.ts +++ b/src/config/default-app-config.ts @@ -245,7 +245,16 @@ export class DefaultAppConfig implements AppConfig { undoTimeout: 10000 // 10 seconds }, // Show the item access status label in items lists - showAccessStatuses: false + showAccessStatuses: false, + simpleView: { + bitstreamPageSize: 5 + }, + fullView: { + // Number of entries in the bitstream list in the full item view page. + // Rounded to the nearest size in the list of selectable sizes on the + // settings menu. See pageSizeOptions in 'pagination-component-options.model.ts'. + bitstreamPageSize: 5 + } }; // Collection Page Config diff --git a/src/config/item-config.interface.ts b/src/config/item-config.interface.ts index f842c37c05..1351911334 100644 --- a/src/config/item-config.interface.ts +++ b/src/config/item-config.interface.ts @@ -6,4 +6,15 @@ export interface ItemConfig extends Config { }; // This is used to show the access status label of items in results lists showAccessStatuses: boolean; + + simpleView: { + bitstreamPageSize: number; + }; + + fullView: { + // Number of entries in the bitstream list in the full item view page. + // Rounded to the nearest size in the list of selectable sizes on the + // settings menu. See pageSizeOptions in 'pagination-component-options.model.ts'. + bitstreamPageSize: number; + } } diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts index edd1cb9109..7410b17f37 100644 --- a/src/environments/environment.test.ts +++ b/src/environments/environment.test.ts @@ -229,7 +229,16 @@ export const environment: BuildConfig = { undoTimeout: 10000 // 10 seconds }, // Show the item access status label in items lists - showAccessStatuses: false + showAccessStatuses: false, + simpleView: { + bitstreamPageSize: 5 + }, + fullView: { + // Number of entries in the bitstream list in the full item view page. + // Rounded to the nearest size in the list of selectable sizes on the + // settings menu. See pageSizeOptions in 'pagination-component-options.model.ts'. + bitstreamPageSize: 5 + } }, collection: { edit: { From 87a211ca669b4f882a56661572887f49ae8fcbe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Fern=C3=A1ndez=20Celorio?= Date: Mon, 7 Nov 2022 12:20:00 +0100 Subject: [PATCH 26/83] Tests fixed --- .../file-section/full-file-section.component.spec.ts | 5 ++++- .../file-section/file-section.component.spec.ts | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/app/item-page/full/field-components/file-section/full-file-section.component.spec.ts b/src/app/item-page/full/field-components/file-section/full-file-section.component.spec.ts index 396e6c3216..3a8e45475d 100644 --- a/src/app/item-page/full/field-components/file-section/full-file-section.component.spec.ts +++ b/src/app/item-page/full/field-components/file-section/full-file-section.component.spec.ts @@ -21,6 +21,8 @@ import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-o import { PaginationService } from '../../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub'; import { FindListOptions } from '../../../../core/data/find-list-options.model'; +import { APP_CONFIG } from 'src/config/app-config.interface'; +import { environment } from 'src/environments/environment'; describe('FullFileSectionComponent', () => { let comp: FullFileSectionComponent; @@ -72,7 +74,8 @@ describe('FullFileSectionComponent', () => { providers: [ { provide: BitstreamDataService, useValue: bitstreamDataService }, { provide: NotificationsService, useValue: new NotificationsServiceStub() }, - { provide: PaginationService, useValue: paginationService } + { provide: PaginationService, useValue: paginationService }, + { provide: APP_CONFIG, useValue: environment }, ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/item-page/simple/field-components/file-section/file-section.component.spec.ts b/src/app/item-page/simple/field-components/file-section/file-section.component.spec.ts index 2d185aef9c..83f92d5af8 100644 --- a/src/app/item-page/simple/field-components/file-section/file-section.component.spec.ts +++ b/src/app/item-page/simple/field-components/file-section/file-section.component.spec.ts @@ -17,6 +17,8 @@ import { MetadataFieldWrapperComponent } from '../../../field-components/metadat import { createPaginatedList } from '../../../../shared/testing/utils.test'; import { NotificationsService } from '../../../../shared/notifications/notifications.service'; import { NotificationsServiceStub } from '../../../../shared/testing/notifications-service.stub'; +import { APP_CONFIG } from 'src/config/app-config.interface'; +import { environment } from 'src/environments/environment'; describe('FileSectionComponent', () => { let comp: FileSectionComponent; @@ -65,7 +67,8 @@ describe('FileSectionComponent', () => { declarations: [FileSectionComponent, VarDirective, FileSizePipe, MetadataFieldWrapperComponent], providers: [ { provide: BitstreamDataService, useValue: bitstreamDataService }, - { provide: NotificationsService, useValue: new NotificationsServiceStub() } + { provide: NotificationsService, useValue: new NotificationsServiceStub() }, + { provide: APP_CONFIG, useValue: environment } ], schemas: [NO_ERRORS_SCHEMA] From 1e523382d06633aaf0c88b700b2a953aeedd9423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Fern=C3=A1ndez=20Celorio?= Date: Mon, 7 Nov 2022 16:50:46 +0100 Subject: [PATCH 27/83] Fix lint error --- .../field-components/file-section/file-section.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/item-page/simple/field-components/file-section/file-section.component.ts b/src/app/item-page/simple/field-components/file-section/file-section.component.ts index a0e40376e5..2907a33482 100644 --- a/src/app/item-page/simple/field-components/file-section/file-section.component.ts +++ b/src/app/item-page/simple/field-components/file-section/file-section.component.ts @@ -44,7 +44,7 @@ export class FileSectionComponent implements OnInit { protected translateService: TranslateService, @Inject(APP_CONFIG) protected appConfig: AppConfig ) { - this.pageSize = this.appConfig.item.simpleView.bitstreamPageSize + this.pageSize = this.appConfig.item.simpleView.bitstreamPageSize; } ngOnInit(): void { From 6c226be7e80e3364faba8dc0313dde5fd89ab33a Mon Sep 17 00:00:00 2001 From: Pierre Lasou Date: Mon, 7 Nov 2022 13:31:45 -0500 Subject: [PATCH 28/83] Changes to fr.json5 New commit to include changes after review of commit 3bf13c09617a1af4b4dff3b18380b55848c1bb2a --- src/assets/i18n/fr.json5 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/assets/i18n/fr.json5 b/src/assets/i18n/fr.json5 index f2e28184a5..11d15ec6db 100644 --- a/src/assets/i18n/fr.json5 +++ b/src/assets/i18n/fr.json5 @@ -4027,10 +4027,10 @@ "process.overview.delete": "Supprimer {{count}} processus", // "process.overview.delete.processing": "{{count}} process(es) are being deleted. Please wait for the deletion to fully complete. Note that this can take a while.", - "process.overview.delete.processing": "{{count}} processus sont en train d'être supprimer. Patientez jusqu'à ce que la suppression soit terminée. Notez que cela peut prendre un certain temps.", + "process.overview.delete.processing": "{{count}} processus sont en train d'être supprimés. Patientez jusqu'à ce que la suppression soit terminée. Notez que cela peut prendre un certain temps.", // "process.overview.delete.body": "Are you sure you want to delete {{count}} process(es)?", - "process.overview.delete.body": "Êtes vous sûr de vouloir supprimer {{count}} processus?", + "process.overview.delete.body": "Êtes-vous certain-e de vouloir supprimer {{count}} processus?", // "process.overview.delete.header": "Delete processes", "process.overview.delete.header": "Supprimer les processus", @@ -4039,7 +4039,7 @@ "process.bulk.delete.error.head": "Erreur lors de la suppression de processus", // "process.bulk.delete.error.body": "The process with ID {{processId}} could not be deleted. The remaining processes will continue being deleted. ", - "process.bulk.delete.error.body": "Le processus numéro {{processId}} n'a pu être supprimé. Les processus restants continuent à être supprimés. ", + "process.bulk.delete.error.body": "Le processus numéro {{processId}} n'a pu être supprimé. Les processus restants continueront à être supprimés. ", // "process.bulk.delete.success": "{{count}} process(es) have been succesfully deleted", "process.bulk.delete.success": "{{count}} processus ont été supprimés.", @@ -5767,13 +5767,13 @@ "submission.sections.sherpa.publisher.policy": "Politique de l'éditeur", // "submission.sections.sherpa.publisher.policy.description": "The below information was found via Sherpa Romeo. Based on the policies of your publisher, it provides advice regarding whether an embargo may be necessary and/or which files you are allowed to upload. If you have questions, please contact your site administrator via the feedback form in the footer.", - "submission.sections.sherpa.publisher.policy.description": "L'information ci-dessous provient de Sherpa Romeo. Elle vous permet de savoir quelle version vous êtes autorisé-e à déposer et si une restriction de diffusion (embargo) doit être appliquée. Si vous avez des questions, contactez votre administrateur en utilisant le formulaire en pied de page.", + "submission.sections.sherpa.publisher.policy.description": "L'information ci-dessous provient de Sherpa Romeo. Elle vous permet de savoir quelle version vous êtes autorisé-e à déposer et si une restriction de diffusion (embargo) doit être appliquée. Si vous avez des questions, contactez votre administrateur-trice en utilisant le formulaire en pied de page.", // "submission.sections.sherpa.publisher.policy.openaccess": "Open Access pathways permitted by this journal's policy are listed below by article version. Click on a pathway for a more detailed view", "submission.sections.sherpa.publisher.policy.openaccess": "Les voies de libre accès autorisées par la politique de cette revue sont listées ci-dessous par version d'article. Cliquez sur l'une des voies pour plus de détails.", // "submission.sections.sherpa.publisher.policy.more.information": "For more information, please see the following links:", - "submission.sections.sherpa.publisher.policy.more.information": "Pour plus d'information, cliquez sur le lien suivant:", + "submission.sections.sherpa.publisher.policy.more.information": "Pour plus d'information, cliquez sur le lien suivant :", // "submission.sections.sherpa.publisher.policy.version": "Version", "submission.sections.sherpa.publisher.policy.version": "Version", @@ -5788,7 +5788,7 @@ "submission.sections.sherpa.publisher.policy.nolocation": "Aucun", // "submission.sections.sherpa.publisher.policy.license": "License", - "submission.sections.sherpa.publisher.policy.license": "License", + "submission.sections.sherpa.publisher.policy.license": "Licence", // "submission.sections.sherpa.publisher.policy.prerequisites": "Prerequisites", "submission.sections.sherpa.publisher.policy.prerequisites": "Prérequis", @@ -5909,7 +5909,7 @@ "submission.workspace.generic.view": "Voir", // "submission.workspace.generic.view-help": "Select this option to view the item's metadata.", - "submission.workspace.generic.view-help": "Sélecionner cette option pour voir les métadonnées de l'item.", + "submission.workspace.generic.view-help": "Sélectionner cette option pour voir les métadonnées de l'item.", // "thumbnail.default.alt": "Thumbnail Image", "thumbnail.default.alt": "Vignette d'image", From f7e78dccd129458c6f4828e8ac1fe309d925a64a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Fern=C3=A1ndez=20Celorio?= Date: Mon, 7 Nov 2022 19:27:54 +0000 Subject: [PATCH 29/83] Use the same property for both item pages --- config/config.example.yml | 6 ++--- .../full-file-section.component.ts | 24 +++++++++---------- .../file-section/file-section.component.ts | 2 +- src/config/default-app-config.ts | 9 +++---- src/config/item-config.interface.ts | 10 +++----- src/environments/environment.test.ts | 9 +++---- 6 files changed, 23 insertions(+), 37 deletions(-) diff --git a/config/config.example.yml b/config/config.example.yml index 52a0720230..bb4c691f6b 100644 --- a/config/config.example.yml +++ b/config/config.example.yml @@ -207,13 +207,11 @@ item: undoTimeout: 10000 # 10 seconds # Show the item access status label in items lists showAccessStatuses: false - simpleView: - bitstreamPageSize: 5 - fullView: + bitstream: # Number of entries in the bitstream list in the full item view page. # Rounded to the nearest size in the list of selectable sizes on the # settings menu. See pageSizeOptions in 'pagination-component-options.model.ts'. - bitstreamPageSize: 5 + pageSize: 5 # Collection Page Config collection: diff --git a/src/app/item-page/full/field-components/file-section/full-file-section.component.ts b/src/app/item-page/full/field-components/file-section/full-file-section.component.ts index 89134a321e..3be0d58c81 100644 --- a/src/app/item-page/full/field-components/file-section/full-file-section.component.ts +++ b/src/app/item-page/full/field-components/file-section/full-file-section.component.ts @@ -35,8 +35,17 @@ export class FullFileSectionComponent extends FileSectionComponent implements On originals$: Observable>>; licenses$: Observable>>; - originalOptions: PaginationComponentOptions; - licenseOptions: PaginationComponentOptions; + originalOptions = Object.assign(new PaginationComponentOptions(), { + id: 'obo', + currentPage: 1, + pageSize: this.appConfig.item.bitstream.pageSize + }); + + licenseOptions = Object.assign(new PaginationComponentOptions(), { + id: 'lbo', + currentPage: 1, + pageSize: this.appConfig.item.bitstream.pageSize + }); constructor( bitstreamDataService: BitstreamDataService, @@ -46,17 +55,6 @@ export class FullFileSectionComponent extends FileSectionComponent implements On @Inject(APP_CONFIG) protected appConfig: AppConfig ) { super(bitstreamDataService, notificationsService, translateService, appConfig); - this.originalOptions = Object.assign(new PaginationComponentOptions(), { - id: 'obo', - currentPage: 1, - pageSize: this.appConfig.item.fullView.bitstreamPageSize - }); - - this.licenseOptions = Object.assign(new PaginationComponentOptions(), { - id: 'lbo', - currentPage: 1, - pageSize: this.appConfig.item.fullView.bitstreamPageSize - }); } ngOnInit(): void { diff --git a/src/app/item-page/simple/field-components/file-section/file-section.component.ts b/src/app/item-page/simple/field-components/file-section/file-section.component.ts index 2907a33482..08e792fc8b 100644 --- a/src/app/item-page/simple/field-components/file-section/file-section.component.ts +++ b/src/app/item-page/simple/field-components/file-section/file-section.component.ts @@ -44,7 +44,7 @@ export class FileSectionComponent implements OnInit { protected translateService: TranslateService, @Inject(APP_CONFIG) protected appConfig: AppConfig ) { - this.pageSize = this.appConfig.item.simpleView.bitstreamPageSize; + this.pageSize = this.appConfig.item.bitstream.pageSize; } ngOnInit(): void { diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts index 3940ea1c19..f87a5b868b 100644 --- a/src/config/default-app-config.ts +++ b/src/config/default-app-config.ts @@ -246,14 +246,11 @@ export class DefaultAppConfig implements AppConfig { }, // Show the item access status label in items lists showAccessStatuses: false, - simpleView: { - bitstreamPageSize: 5 - }, - fullView: { - // Number of entries in the bitstream list in the full item view page. + bitstream: { + // Number of entries in the bitstream list in the item view page. // Rounded to the nearest size in the list of selectable sizes on the // settings menu. See pageSizeOptions in 'pagination-component-options.model.ts'. - bitstreamPageSize: 5 + pageSize: 5 } }; diff --git a/src/config/item-config.interface.ts b/src/config/item-config.interface.ts index 1351911334..35cb5260ae 100644 --- a/src/config/item-config.interface.ts +++ b/src/config/item-config.interface.ts @@ -7,14 +7,10 @@ export interface ItemConfig extends Config { // This is used to show the access status label of items in results lists showAccessStatuses: boolean; - simpleView: { - bitstreamPageSize: number; - }; - - fullView: { - // Number of entries in the bitstream list in the full item view page. + bitstream: { + // Number of entries in the bitstream list in the item view page. // Rounded to the nearest size in the list of selectable sizes on the // settings menu. See pageSizeOptions in 'pagination-component-options.model.ts'. - bitstreamPageSize: number; + pageSize: number; } } diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts index 7410b17f37..ec49ff6009 100644 --- a/src/environments/environment.test.ts +++ b/src/environments/environment.test.ts @@ -230,14 +230,11 @@ export const environment: BuildConfig = { }, // Show the item access status label in items lists showAccessStatuses: false, - simpleView: { - bitstreamPageSize: 5 - }, - fullView: { - // Number of entries in the bitstream list in the full item view page. + bitstream: { + // Number of entries in the bitstream list in the item view page. // Rounded to the nearest size in the list of selectable sizes on the // settings menu. See pageSizeOptions in 'pagination-component-options.model.ts'. - bitstreamPageSize: 5 + pageSize: 5 } }, collection: { From cc86ba539fc0d66ddcaf0777c2a0fb1e3476b15f Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Mon, 24 Oct 2022 16:59:51 -0500 Subject: [PATCH 30/83] Turn on no-unused-imports rule and remove all unused imports --- .eslintrc.json | 4 ++-- .../metadata-import-page.component.ts | 6 +----- .../bitstream-formats/bitstream-formats.component.ts | 3 +-- .../metadata-registry/metadata-registry.component.spec.ts | 3 --- .../metadata-schema/metadata-schema.component.spec.ts | 3 --- .../admin/admin-sidebar/admin-sidebar.component.spec.ts | 1 - src/app/app.component.ts | 1 - .../bitstream-page/legacy-bitstream-url.resolver.spec.ts | 2 +- src/app/browse-by/browse-by-guard.spec.ts | 1 - .../collection-item-mapper.component.spec.ts | 4 ++-- .../collection-source/collection-source.component.ts | 3 +-- .../community-page-sub-collection-list.component.spec.ts | 4 ---- .../community-page-sub-community-list.component.spec.ts | 3 --- src/app/core/auth/selectors.ts | 1 - src/app/core/shared/hal-endpoint.service.spec.ts | 2 +- src/app/core/shared/search/search.service.ts | 1 - src/app/correlation-id/correlation-id.service.spec.ts | 2 +- src/app/curation-form/curation-form.component.ts | 2 +- .../top-level-community-list.component.spec.ts | 3 --- .../item-authorizations.component.spec.ts | 7 ++----- ...aginated-drag-and-drop-bitstream-list.component.spec.ts | 3 --- .../file-section/full-file-section.component.spec.ts | 3 --- .../simple/item-types/shared/item.component.spec.ts | 1 - .../my-dspace-page/my-dspace-configuration.service.spec.ts | 4 ---- .../process-page/detail/process-detail.component.spec.ts | 1 - src/app/register-page/registration.guard.spec.ts | 1 - .../delete-comcol-page.component.spec.ts | 1 - .../ds-dynamic-type-bind-relation.service.spec.ts | 2 +- .../shared/interfaces/modal-before-dismiss.interface.ts | 1 - src/app/shared/menu/menu-item/link-menu-item.component.ts | 2 +- src/app/shared/menu/menu-item/text-menu-item.component.ts | 2 +- .../approve/claimed-task-actions-approve.component.spec.ts | 2 +- .../listable-object/listable-object.decorator.spec.ts | 1 - .../sidebar-search-list-element.component.spec.ts | 1 - ...abstract-paginated-drag-and-drop-list.component.spec.ts | 2 -- src/app/shared/pagination/pagination.component.spec.ts | 3 +-- .../search-label/search-label.component.spec.ts | 2 -- .../starts-with/date/starts-with-date.component.spec.ts | 3 --- .../starts-with/text/starts-with-text.component.spec.ts | 6 +----- src/app/shared/testing/group-mock.ts | 1 - ...submission-import-external-collection.component.spec.ts | 2 +- .../submission/submit/submission-submit.component.spec.ts | 2 +- 42 files changed, 21 insertions(+), 81 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 44f53ecb58..b95b54b979 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,7 +6,7 @@ "eslint-plugin-import", "eslint-plugin-jsdoc", "eslint-plugin-deprecation", - "eslint-plugin-unused-imports", + "unused-imports", "eslint-plugin-lodash" ], "overrides": [ @@ -205,7 +205,7 @@ "import/order": "off", "import/no-deprecated": "warn", "import/no-namespace": "error", - + "unused-imports/no-unused-imports": "error", "lodash/import-scope": [ "error", "method" diff --git a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts index deb16c0d73..4236d152dc 100644 --- a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts +++ b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts @@ -1,12 +1,8 @@ import { Location } from '@angular/common'; -import { Component, OnInit } from '@angular/core'; +import { Component } from '@angular/core'; import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; -import { AuthService } from '../../core/auth/auth.service'; import { METADATA_IMPORT_SCRIPT_NAME, ScriptDataService } from '../../core/data/processes/script-data.service'; -import { EPerson } from '../../core/eperson/models/eperson.model'; import { ProcessParameter } from '../../process-page/processes/process-parameter.model'; import { isNotEmpty } from '../../shared/empty.util'; import { NotificationsService } from '../../shared/notifications/notifications.service'; diff --git a/src/app/admin/admin-registries/bitstream-formats/bitstream-formats.component.ts b/src/app/admin/admin-registries/bitstream-formats/bitstream-formats.component.ts index 7fcc86e25d..162bf2bdb2 100644 --- a/src/app/admin/admin-registries/bitstream-formats/bitstream-formats.component.ts +++ b/src/app/admin/admin-registries/bitstream-formats/bitstream-formats.component.ts @@ -1,12 +1,11 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; -import {combineLatest, combineLatest as observableCombineLatest, Observable, of as observableOf, zip} from 'rxjs'; +import { combineLatest as observableCombineLatest, Observable} from 'rxjs'; import { RemoteData } from '../../../core/data/remote-data'; import { PaginatedList } from '../../../core/data/paginated-list.model'; import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; import { BitstreamFormat } from '../../../core/shared/bitstream-format.model'; import { BitstreamFormatDataService } from '../../../core/data/bitstream-format-data.service'; import { map, mergeMap, switchMap, take, toArray } from 'rxjs/operators'; -import { hasValue } from '../../../shared/empty.util'; import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; diff --git a/src/app/admin/admin-registries/metadata-registry/metadata-registry.component.spec.ts b/src/app/admin/admin-registries/metadata-registry/metadata-registry.component.spec.ts index 74bfc5f0a4..944288a7a5 100644 --- a/src/app/admin/admin-registries/metadata-registry/metadata-registry.component.spec.ts +++ b/src/app/admin/admin-registries/metadata-registry/metadata-registry.component.spec.ts @@ -19,10 +19,7 @@ import { RestResponse } from '../../../core/cache/response.models'; import { MetadataSchema } from '../../../core/metadata/metadata-schema.model'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { PaginationService } from '../../../core/pagination/pagination.service'; -import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; describe('MetadataRegistryComponent', () => { let comp: MetadataRegistryComponent; diff --git a/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.spec.ts b/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.spec.ts index d63b4ed84f..2b660a6363 100644 --- a/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.spec.ts +++ b/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.spec.ts @@ -23,11 +23,8 @@ import { MetadataSchema } from '../../../core/metadata/metadata-schema.model'; import { MetadataField } from '../../../core/metadata/metadata-field.model'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { VarDirective } from '../../../shared/utils/var.directive'; -import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; describe('MetadataSchemaComponent', () => { let comp: MetadataSchemaComponent; diff --git a/src/app/admin/admin-sidebar/admin-sidebar.component.spec.ts b/src/app/admin/admin-sidebar/admin-sidebar.component.spec.ts index cbcfae43d8..88efd2a711 100644 --- a/src/app/admin/admin-sidebar/admin-sidebar.component.spec.ts +++ b/src/app/admin/admin-sidebar/admin-sidebar.component.spec.ts @@ -16,7 +16,6 @@ import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { RouterTestingModule } from '@angular/router/testing'; import { ActivatedRoute } from '@angular/router'; import { AuthorizationDataService } from '../../core/data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../../core/data/feature-authorization/feature-id'; import createSpy = jasmine.createSpy; import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; import { Item } from '../../core/shared/item.model'; diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 40a7e38606..ba7b738227 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -31,7 +31,6 @@ import { models } from './core/core.module'; import { ThemeService } from './shared/theme-support/theme.service'; import { IdleModalComponent } from './shared/idle-modal/idle-modal.component'; import { distinctNext } from './core/shared/distinct-next'; -import { ModalBeforeDismiss } from './shared/interfaces/modal-before-dismiss.interface'; @Component({ selector: 'ds-app', diff --git a/src/app/bitstream-page/legacy-bitstream-url.resolver.spec.ts b/src/app/bitstream-page/legacy-bitstream-url.resolver.spec.ts index 045582cb26..aec8cd22f4 100644 --- a/src/app/bitstream-page/legacy-bitstream-url.resolver.spec.ts +++ b/src/app/bitstream-page/legacy-bitstream-url.resolver.spec.ts @@ -1,5 +1,5 @@ import { LegacyBitstreamUrlResolver } from './legacy-bitstream-url.resolver'; -import { of as observableOf, EMPTY } from 'rxjs'; +import { EMPTY } from 'rxjs'; import { BitstreamDataService } from '../core/data/bitstream-data.service'; import { RemoteData } from '../core/data/remote-data'; import { TestScheduler } from 'rxjs/testing'; diff --git a/src/app/browse-by/browse-by-guard.spec.ts b/src/app/browse-by/browse-by-guard.spec.ts index fc483d87e2..933c95a3cb 100644 --- a/src/app/browse-by/browse-by-guard.spec.ts +++ b/src/app/browse-by/browse-by-guard.spec.ts @@ -1,7 +1,6 @@ import { first } from 'rxjs/operators'; import { BrowseByGuard } from './browse-by-guard'; import { of as observableOf } from 'rxjs'; -import { BrowseDefinitionDataService } from '../core/browse/browse-definition-data.service'; import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils'; import { BrowseDefinition } from '../core/shared/browse-definition.model'; import { BrowseByDataType } from './browse-by-switcher/browse-by-decorator'; diff --git a/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.spec.ts b/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.spec.ts index 8304b01daa..db844b588f 100644 --- a/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.spec.ts +++ b/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.spec.ts @@ -16,7 +16,7 @@ import { Collection } from '../../core/shared/collection.model'; import { RemoteData } from '../../core/data/remote-data'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; -import { ChangeDetectionStrategy, EventEmitter } from '@angular/core'; +import { EventEmitter } from '@angular/core'; import { HostWindowService } from '../../shared/host-window.service'; import { HostWindowServiceStub } from '../../shared/testing/host-window-service.stub'; import { By } from '@angular/platform-browser'; @@ -41,7 +41,7 @@ import { } from '../../shared/remote-data.utils'; import { createPaginatedList } from '../../shared/testing/utils.test'; import { AuthorizationDataService } from '../../core/data/feature-authorization/authorization-data.service'; -import { MyDSpacePageComponent, SEARCH_CONFIG_SERVICE } from '../../my-dspace-page/my-dspace-page.component'; +import { SEARCH_CONFIG_SERVICE } from '../../my-dspace-page/my-dspace-page.component'; import { SearchConfigurationServiceStub } from '../../shared/testing/search-configuration-service.stub'; import { GroupDataService } from '../../core/eperson/group-data.service'; import { LinkHeadService } from '../../core/services/link-head.service'; diff --git a/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.ts b/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.ts index 51e8d926eb..512faa5311 100644 --- a/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.ts +++ b/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.ts @@ -8,8 +8,7 @@ import { DynamicInputModel, DynamicOptionControlModel, DynamicRadioGroupModel, - DynamicSelectModel, - DynamicTextAreaModel + DynamicSelectModel } from '@ng-dynamic-forms/core'; import { Location } from '@angular/common'; import { TranslateService } from '@ngx-translate/core'; diff --git a/src/app/community-page/sub-collection-list/community-page-sub-collection-list.component.spec.ts b/src/app/community-page/sub-collection-list/community-page-sub-collection-list.component.spec.ts index 6a9de52f1f..bca3c42a95 100644 --- a/src/app/community-page/sub-collection-list/community-page-sub-collection-list.component.spec.ts +++ b/src/app/community-page/sub-collection-list/community-page-sub-collection-list.component.spec.ts @@ -17,9 +17,6 @@ import { PageInfo } from '../../core/shared/page-info.model'; import { HostWindowService } from '../../shared/host-window.service'; import { HostWindowServiceStub } from '../../shared/testing/host-window-service.stub'; import { SelectableListService } from '../../shared/object-list/selectable-list/selectable-list.service'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; -import { of as observableOf } from 'rxjs'; import { PaginationService } from '../../core/pagination/pagination.service'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; import { ThemeService } from '../../shared/theme-support/theme.service'; @@ -29,7 +26,6 @@ import { GroupDataService } from '../../core/eperson/group-data.service'; import { LinkHeadService } from '../../core/services/link-head.service'; import { ConfigurationDataService } from '../../core/data/configuration-data.service'; import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service'; -import { SearchServiceStub } from '../../shared/testing/search-service.stub'; import { ConfigurationProperty } from '../../core/shared/configuration-property.model'; import { createPaginatedList } from '../../shared/testing/utils.test'; import { SearchConfigurationServiceStub } from '../../shared/testing/search-configuration-service.stub'; diff --git a/src/app/community-page/sub-community-list/community-page-sub-community-list.component.spec.ts b/src/app/community-page/sub-community-list/community-page-sub-community-list.component.spec.ts index c75c5b6f6c..0a14fe6dd1 100644 --- a/src/app/community-page/sub-community-list/community-page-sub-community-list.component.spec.ts +++ b/src/app/community-page/sub-community-list/community-page-sub-community-list.component.spec.ts @@ -17,9 +17,6 @@ import { HostWindowService } from '../../shared/host-window.service'; import { HostWindowServiceStub } from '../../shared/testing/host-window-service.stub'; import { CommunityDataService } from '../../core/data/community-data.service'; import { SelectableListService } from '../../shared/object-list/selectable-list/selectable-list.service'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; -import { of as observableOf } from 'rxjs'; import { PaginationService } from '../../core/pagination/pagination.service'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; import { ThemeService } from '../../shared/theme-support/theme.service'; diff --git a/src/app/core/auth/selectors.ts b/src/app/core/auth/selectors.ts index 1d002b3908..ce8d38d6ba 100644 --- a/src/app/core/auth/selectors.ts +++ b/src/app/core/auth/selectors.ts @@ -7,7 +7,6 @@ import { createSelector } from '@ngrx/store'; * notation packages up all of the exports into a single object. */ import { AuthState } from './auth.reducer'; -import { AppState } from '../../app.reducer'; import { CoreState } from '../core-state.model'; import { coreSelector } from '../core.selectors'; diff --git a/src/app/core/shared/hal-endpoint.service.spec.ts b/src/app/core/shared/hal-endpoint.service.spec.ts index 78a296496a..56e890b318 100644 --- a/src/app/core/shared/hal-endpoint.service.spec.ts +++ b/src/app/core/shared/hal-endpoint.service.spec.ts @@ -3,7 +3,7 @@ import { getMockRequestService } from '../../shared/mocks/request.service.mock'; import { RequestService } from '../data/request.service'; import { HALEndpointService } from './hal-endpoint.service'; import { EndpointMapRequest } from '../data/request.models'; -import { combineLatest as observableCombineLatest, Observable, of as observableOf } from 'rxjs'; +import { combineLatest as observableCombineLatest, of as observableOf } from 'rxjs'; import { environment } from '../../../environments/environment'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; diff --git a/src/app/core/shared/search/search.service.ts b/src/app/core/shared/search/search.service.ts index 2b1c6a573b..9befd8ea13 100644 --- a/src/app/core/shared/search/search.service.ts +++ b/src/app/core/shared/search/search.service.ts @@ -3,7 +3,6 @@ import { combineLatest as observableCombineLatest, Observable } from 'rxjs'; import { Injectable, OnDestroy } from '@angular/core'; import { map, switchMap, take } from 'rxjs/operators'; import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { PaginatedList } from '../../data/paginated-list.model'; import { ResponseParsingService } from '../../data/parsing.service'; import { RemoteData } from '../../data/remote-data'; import { GetRequest } from '../../data/request.models'; diff --git a/src/app/correlation-id/correlation-id.service.spec.ts b/src/app/correlation-id/correlation-id.service.spec.ts index 64a4d1068a..816c3694a5 100644 --- a/src/app/correlation-id/correlation-id.service.spec.ts +++ b/src/app/correlation-id/correlation-id.service.spec.ts @@ -1,7 +1,7 @@ import { CorrelationIdService } from './correlation-id.service'; import { CookieServiceMock } from '../shared/mocks/cookie.service.mock'; import { UUIDService } from '../core/shared/uuid.service'; -import { MockStore, provideMockStore } from '@ngrx/store/testing'; +import { MockStore } from '@ngrx/store/testing'; import { TestBed } from '@angular/core/testing'; import { Store, StoreModule } from '@ngrx/store'; import { appReducers, AppState, storeModuleConfig } from '../app.reducer'; diff --git a/src/app/curation-form/curation-form.component.ts b/src/app/curation-form/curation-form.component.ts index 422c955037..4b67580e77 100644 --- a/src/app/curation-form/curation-form.component.ts +++ b/src/app/curation-form/curation-form.component.ts @@ -5,7 +5,7 @@ import { getFirstCompletedRemoteData } from '../core/shared/operators'; import { find, map } from 'rxjs/operators'; import { NotificationsService } from '../shared/notifications/notifications.service'; import { TranslateService } from '@ngx-translate/core'; -import { hasValue, isEmpty, isNotEmpty, hasNoValue } from '../shared/empty.util'; +import { hasValue, isEmpty, isNotEmpty } from '../shared/empty.util'; import { RemoteData } from '../core/data/remote-data'; import { Router } from '@angular/router'; import { ProcessDataService } from '../core/data/processes/process-data.service'; diff --git a/src/app/home-page/top-level-community-list/top-level-community-list.component.spec.ts b/src/app/home-page/top-level-community-list/top-level-community-list.component.spec.ts index 5dbf1ff8a2..d1a3d3631f 100644 --- a/src/app/home-page/top-level-community-list/top-level-community-list.component.spec.ts +++ b/src/app/home-page/top-level-community-list/top-level-community-list.component.spec.ts @@ -17,9 +17,6 @@ import { HostWindowService } from '../../shared/host-window.service'; import { HostWindowServiceStub } from '../../shared/testing/host-window-service.stub'; import { CommunityDataService } from '../../core/data/community-data.service'; import { SelectableListService } from '../../shared/object-list/selectable-list/selectable-list.service'; -import { of as observableOf } from 'rxjs'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; import { PaginationService } from '../../core/pagination/pagination.service'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; import { ThemeService } from '../../shared/theme-support/theme.service'; diff --git a/src/app/item-page/edit-item-page/item-authorizations/item-authorizations.component.spec.ts b/src/app/item-page/edit-item-page/item-authorizations/item-authorizations.component.spec.ts index 2fe8a562c6..5d2afbaf4c 100644 --- a/src/app/item-page/edit-item-page/item-authorizations/item-authorizations.component.spec.ts +++ b/src/app/item-page/edit-item-page/item-authorizations/item-authorizations.component.spec.ts @@ -1,12 +1,11 @@ -import { Observable } from 'rxjs/internal/Observable'; import { waitForAsync, ComponentFixture, inject, TestBed } from '@angular/core/testing'; import { Component, NO_ERRORS_SCHEMA } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { of as observableOf, of } from 'rxjs'; +import { of as observableOf } from 'rxjs'; import { TranslateModule } from '@ngx-translate/core'; import { cold } from 'jasmine-marbles'; -import { ItemAuthorizationsComponent, BitstreamMapValue } from './item-authorizations.component'; +import { ItemAuthorizationsComponent } from './item-authorizations.component'; import { Bitstream } from '../../../core/shared/bitstream.model'; import { Bundle } from '../../../core/shared/bundle.model'; import { Item } from '../../../core/shared/item.model'; @@ -14,8 +13,6 @@ import { LinkService } from '../../../core/cache/builders/link.service'; import { getMockLinkService } from '../../../shared/mocks/link-service.mock'; import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { createPaginatedList, createTestComponent } from '../../../shared/testing/utils.test'; -import { PaginatedList, buildPaginatedList } from '../../../core/data/paginated-list.model'; -import { PageInfo } from '../../../core/shared/page-info.model'; describe('ItemAuthorizationsComponent test suite', () => { let comp: ItemAuthorizationsComponent; diff --git a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/paginated-drag-and-drop-bitstream-list/paginated-drag-and-drop-bitstream-list.component.spec.ts b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/paginated-drag-and-drop-bitstream-list/paginated-drag-and-drop-bitstream-list.component.spec.ts index 133b13cb27..7317eb93be 100644 --- a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/paginated-drag-and-drop-bitstream-list/paginated-drag-and-drop-bitstream-list.component.spec.ts +++ b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/paginated-drag-and-drop-bitstream-list/paginated-drag-and-drop-bitstream-list.component.spec.ts @@ -17,10 +17,7 @@ import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote- import { createPaginatedList } from '../../../../../shared/testing/utils.test'; import { RequestService } from '../../../../../core/data/request.service'; import { PaginationService } from '../../../../../core/pagination/pagination.service'; -import { PaginationComponentOptions } from '../../../../../shared/pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../../../../core/cache/models/sort-options.model'; import { PaginationServiceStub } from '../../../../../shared/testing/pagination-service.stub'; -import { FindListOptions } from '../../../../../core/data/find-list-options.model'; describe('PaginatedDragAndDropBitstreamListComponent', () => { let comp: PaginatedDragAndDropBitstreamListComponent; diff --git a/src/app/item-page/full/field-components/file-section/full-file-section.component.spec.ts b/src/app/item-page/full/field-components/file-section/full-file-section.component.spec.ts index 396e6c3216..1059ed12da 100644 --- a/src/app/item-page/full/field-components/file-section/full-file-section.component.spec.ts +++ b/src/app/item-page/full/field-components/file-section/full-file-section.component.spec.ts @@ -16,11 +16,8 @@ import { MockBitstreamFormat1 } from '../../../../shared/mocks/item.mock'; import { By } from '@angular/platform-browser'; import { NotificationsService } from '../../../../shared/notifications/notifications.service'; import { NotificationsServiceStub } from '../../../../shared/testing/notifications-service.stub'; -import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-options.model'; import { PaginationService } from '../../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub'; -import { FindListOptions } from '../../../../core/data/find-list-options.model'; describe('FullFileSectionComponent', () => { let comp: FullFileSectionComponent; diff --git a/src/app/item-page/simple/item-types/shared/item.component.spec.ts b/src/app/item-page/simple/item-types/shared/item.component.spec.ts index b14e56a58e..c479f04809 100644 --- a/src/app/item-page/simple/item-types/shared/item.component.spec.ts +++ b/src/app/item-page/simple/item-types/shared/item.component.spec.ts @@ -28,7 +28,6 @@ import { TruncatableService } from '../../../../shared/truncatable/truncatable.s import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; import { GenericItemPageFieldComponent } from '../../field-components/specific-field/generic/generic-item-page-field.component'; import { compareArraysUsing, compareArraysUsingIds } from './item-relationships-utils'; -import { ItemComponent } from './item.component'; import { createPaginatedList } from '../../../../shared/testing/utils.test'; import { RouteService } from '../../../../core/services/route.service'; import { MetadataValue } from '../../../../core/shared/metadata.models'; diff --git a/src/app/my-dspace-page/my-dspace-configuration.service.spec.ts b/src/app/my-dspace-page/my-dspace-configuration.service.spec.ts index b87c77c5e9..669a97764a 100644 --- a/src/app/my-dspace-page/my-dspace-configuration.service.spec.ts +++ b/src/app/my-dspace-page/my-dspace-configuration.service.spec.ts @@ -11,10 +11,6 @@ import { cold, hot } from 'jasmine-marbles'; import { MyDSpaceConfigurationValueType } from './my-dspace-configuration-value-type'; import { PaginationServiceStub } from '../shared/testing/pagination-service.stub'; import { Context } from '../core/shared/context.model'; -import { LinkService } from '../core/cache/builders/link.service'; -import { HALEndpointService } from '../core/shared/hal-endpoint.service'; -import { RequestService } from '../core/data/request.service'; -import { RemoteDataBuildService } from '../core/cache/builders/remote-data-build.service'; import { HALEndpointServiceStub } from '../shared/testing/hal-endpoint-service.stub'; import { getMockRemoteDataBuildService } from '../shared/mocks/remote-data-build.service.mock'; diff --git a/src/app/process-page/detail/process-detail.component.spec.ts b/src/app/process-page/detail/process-detail.component.spec.ts index e4ab7d1082..8749553eae 100644 --- a/src/app/process-page/detail/process-detail.component.spec.ts +++ b/src/app/process-page/detail/process-detail.component.spec.ts @@ -15,7 +15,6 @@ import { } from '@angular/core/testing'; import { VarDirective } from '../../shared/utils/var.directive'; import { TranslateModule } from '@ngx-translate/core'; -import { RouterTestingModule } from '@angular/router/testing'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { ProcessDetailFieldComponent } from './process-detail-field/process-detail-field.component'; import { Process } from '../processes/process.model'; diff --git a/src/app/register-page/registration.guard.spec.ts b/src/app/register-page/registration.guard.spec.ts index 89eaff7a02..9fb8dd3a33 100644 --- a/src/app/register-page/registration.guard.spec.ts +++ b/src/app/register-page/registration.guard.spec.ts @@ -2,7 +2,6 @@ import { RegistrationGuard } from './registration.guard'; import { EpersonRegistrationService } from '../core/data/eperson-registration.service'; import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; import { AuthService } from '../core/auth/auth.service'; -import { Location } from '@angular/common'; import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject, diff --git a/src/app/shared/comcol/comcol-forms/delete-comcol-page/delete-comcol-page.component.spec.ts b/src/app/shared/comcol/comcol-forms/delete-comcol-page/delete-comcol-page.component.spec.ts index bc73e4134b..1040e31c57 100644 --- a/src/app/shared/comcol/comcol-forms/delete-comcol-page/delete-comcol-page.component.spec.ts +++ b/src/app/shared/comcol/comcol-forms/delete-comcol-page/delete-comcol-page.component.spec.ts @@ -11,7 +11,6 @@ import { NO_ERRORS_SCHEMA } from '@angular/core'; import { DeleteComColPageComponent } from './delete-comcol-page.component'; import { NotificationsService } from '../../../notifications/notifications.service'; import { NotificationsServiceStub } from '../../../testing/notifications-service.stub'; -import { RequestService } from '../../../../core/data/request.service'; import { getTestScheduler } from 'jasmine-marbles'; import { ComColDataService } from '../../../../core/data/comcol-data.service'; import { createFailedRemoteDataObject$, createNoContentRemoteDataObject$ } from '../../../remote-data.utils'; diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts index f8bc7ea886..7f0c7e2e35 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts @@ -10,7 +10,7 @@ import { } from '@ng-dynamic-forms/core'; import { - mockInputWithTypeBindModel, MockRelationModel, mockDcTypeInputModel + mockInputWithTypeBindModel, MockRelationModel } from '../../../mocks/form-models.mock'; import {DsDynamicTypeBindRelationService} from './ds-dynamic-type-bind-relation.service'; import {FormFieldMetadataValueObject} from '../models/form-field-metadata-value.model'; diff --git a/src/app/shared/interfaces/modal-before-dismiss.interface.ts b/src/app/shared/interfaces/modal-before-dismiss.interface.ts index fca28e1cff..f884432fb8 100644 --- a/src/app/shared/interfaces/modal-before-dismiss.interface.ts +++ b/src/app/shared/interfaces/modal-before-dismiss.interface.ts @@ -1,4 +1,3 @@ -import { NgbModalConfig, NgbModal } from '@ng-bootstrap/ng-bootstrap'; /** * If a component implementing this interface is used to create a modal (i.e. it is passed to {@link NgbModal#open}), diff --git a/src/app/shared/menu/menu-item/link-menu-item.component.ts b/src/app/shared/menu/menu-item/link-menu-item.component.ts index c9a60f0c28..78d5b2fc6f 100644 --- a/src/app/shared/menu/menu-item/link-menu-item.component.ts +++ b/src/app/shared/menu/menu-item/link-menu-item.component.ts @@ -1,4 +1,4 @@ -import { Component, Inject, Input, OnInit } from '@angular/core'; +import { Component, Inject, OnInit } from '@angular/core'; import { LinkMenuItemModel } from './models/link.model'; import { rendersMenuItemForType } from '../menu-item.decorator'; import { isNotEmpty } from '../../empty.util'; diff --git a/src/app/shared/menu/menu-item/text-menu-item.component.ts b/src/app/shared/menu/menu-item/text-menu-item.component.ts index af690d198c..25549f53a8 100644 --- a/src/app/shared/menu/menu-item/text-menu-item.component.ts +++ b/src/app/shared/menu/menu-item/text-menu-item.component.ts @@ -1,4 +1,4 @@ -import { Component, Inject, Input } from '@angular/core'; +import { Component, Inject } from '@angular/core'; import { TextMenuItemModel } from './models/text.model'; import { rendersMenuItemForType } from '../menu-item.decorator'; import { MenuItemType } from '../menu-item-type.model'; diff --git a/src/app/shared/mydspace-actions/claimed-task/approve/claimed-task-actions-approve.component.spec.ts b/src/app/shared/mydspace-actions/claimed-task/approve/claimed-task-actions-approve.component.spec.ts index ce67da1349..f43316c4e1 100644 --- a/src/app/shared/mydspace-actions/claimed-task/approve/claimed-task-actions-approve.component.spec.ts +++ b/src/app/shared/mydspace-actions/claimed-task/approve/claimed-task-actions-approve.component.spec.ts @@ -1,5 +1,5 @@ import { ChangeDetectionStrategy, Injector, NO_ERRORS_SCHEMA } from '@angular/core'; -import { async, ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { of, of as observableOf } from 'rxjs'; diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.spec.ts b/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.spec.ts index eb5219fab8..f7d00510f6 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.spec.ts +++ b/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.spec.ts @@ -1,5 +1,4 @@ /* eslint-disable max-classes-per-file */ -import { Item } from '../../../../core/shared/item.model'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { DEFAULT_VIEW_MODE, getListableObjectComponent, listableObjectComponent } from './listable-object.decorator'; import { Context } from '../../../../core/shared/context.model'; diff --git a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec.ts b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec.ts index 897ec43491..226c1be33e 100644 --- a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec.ts +++ b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec.ts @@ -11,7 +11,6 @@ import { createSuccessfulRemoteDataObject$ } from '../../remote-data.utils'; import { HALResource } from '../../../core/shared/hal-resource.model'; import { ChildHALResource } from '../../../core/shared/child-hal-resource.model'; import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { DSONameServiceMock } from '../../mocks/dso-name.service.mock'; export function createSidebarSearchListElementTests( componentClass: any, diff --git a/src/app/shared/pagination-drag-and-drop/abstract-paginated-drag-and-drop-list.component.spec.ts b/src/app/shared/pagination-drag-and-drop/abstract-paginated-drag-and-drop-list.component.spec.ts index 7db53425d5..bac6b89583 100644 --- a/src/app/shared/pagination-drag-and-drop/abstract-paginated-drag-and-drop-list.component.spec.ts +++ b/src/app/shared/pagination-drag-and-drop/abstract-paginated-drag-and-drop-list.component.spec.ts @@ -11,8 +11,6 @@ import { createSuccessfulRemoteDataObject } from '../remote-data.utils'; import { createPaginatedList } from '../testing/utils.test'; import { ObjectValuesPipe } from '../utils/object-values-pipe'; import { PaginationService } from '../../core/pagination/pagination.service'; -import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; import { PaginationServiceStub } from '../testing/pagination-service.stub'; import { FieldUpdates } from '../../core/data/object-updates/field-updates.model'; diff --git a/src/app/shared/pagination/pagination.component.spec.ts b/src/app/shared/pagination/pagination.component.spec.ts index 2d913da8a3..30ace4b2b9 100644 --- a/src/app/shared/pagination/pagination.component.spec.ts +++ b/src/app/shared/pagination/pagination.component.spec.ts @@ -32,8 +32,7 @@ import { SortDirection, SortOptions } from '../../core/cache/models/sort-options import { createTestComponent } from '../testing/utils.test'; import { storeModuleConfig } from '../../app.reducer'; import { PaginationService } from '../../core/pagination/pagination.service'; -import { BehaviorSubject, of as observableOf } from 'rxjs'; -import { PaginationServiceStub } from '../testing/pagination-service.stub'; +import { BehaviorSubject } from 'rxjs'; import { FindListOptions } from '../../core/data/find-list-options.model'; function expectPages(fixture: ComponentFixture, pagesDef: string[]): void { diff --git a/src/app/shared/search/search-labels/search-label/search-label.component.spec.ts b/src/app/shared/search/search-labels/search-label/search-label.component.spec.ts index 50bcbc6938..b2be2ae53f 100644 --- a/src/app/shared/search/search-labels/search-label/search-label.component.spec.ts +++ b/src/app/shared/search/search-labels/search-label/search-label.component.spec.ts @@ -12,11 +12,9 @@ import { SearchServiceStub } from '../../../testing/search-service.stub'; import { SearchConfigurationServiceStub } from '../../../testing/search-configuration-service.stub'; import { SearchService } from '../../../../core/shared/search/search.service'; import { PaginationComponentOptions } from '../../../pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-options.model'; import { PaginationService } from '../../../../core/pagination/pagination.service'; import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; import { PaginationServiceStub } from '../../../testing/pagination-service.stub'; -import { FindListOptions } from '../../../../core/data/find-list-options.model'; describe('SearchLabelComponent', () => { let comp: SearchLabelComponent; diff --git a/src/app/shared/starts-with/date/starts-with-date.component.spec.ts b/src/app/shared/starts-with/date/starts-with-date.component.spec.ts index 3cd22a625f..2407f21fdf 100644 --- a/src/app/shared/starts-with/date/starts-with-date.component.spec.ts +++ b/src/app/shared/starts-with/date/starts-with-date.component.spec.ts @@ -11,11 +11,8 @@ import { StartsWithDateComponent } from './starts-with-date.component'; import { ActivatedRouteStub } from '../../testing/active-router.stub'; import { EnumKeysPipe } from '../../utils/enum-keys-pipe'; import { RouterStub } from '../../testing/router.stub'; -import { PaginationComponentOptions } from '../../pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../testing/pagination-service.stub'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; describe('StartsWithDateComponent', () => { let comp: StartsWithDateComponent; diff --git a/src/app/shared/starts-with/text/starts-with-text.component.spec.ts b/src/app/shared/starts-with/text/starts-with-text.component.spec.ts index c08ef5cfdc..b717c72d76 100644 --- a/src/app/shared/starts-with/text/starts-with-text.component.spec.ts +++ b/src/app/shared/starts-with/text/starts-with-text.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { ActivatedRoute, NavigationExtras, Router } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { CommonModule } from '@angular/common'; import { RouterTestingModule } from '@angular/router/testing'; import { TranslateModule } from '@ngx-translate/core'; @@ -8,12 +8,8 @@ import { EnumKeysPipe } from '../../utils/enum-keys-pipe'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { By } from '@angular/platform-browser'; import { StartsWithTextComponent } from './starts-with-text.component'; -import { PaginationComponentOptions } from '../../pagination/pagination-component-options.model'; -import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; -import { of as observableOf } from 'rxjs'; import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../testing/pagination-service.stub'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; describe('StartsWithTextComponent', () => { let comp: StartsWithTextComponent; diff --git a/src/app/shared/testing/group-mock.ts b/src/app/shared/testing/group-mock.ts index a6db4c922e..0d6f924c01 100644 --- a/src/app/shared/testing/group-mock.ts +++ b/src/app/shared/testing/group-mock.ts @@ -1,6 +1,5 @@ import { Group } from '../../core/eperson/models/group.model'; import { EPersonMock } from './eperson.mock'; -import { of } from 'rxjs'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; export const GroupMock2: Group = Object.assign(new Group(), { diff --git a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts index 4f3c54b642..0f0ee579a1 100644 --- a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts +++ b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, NO_ERRORS_SCHEMA } from '@angular/core'; +import { Component, NO_ERRORS_SCHEMA } from '@angular/core'; import { ComponentFixture, fakeAsync, inject, TestBed, waitForAsync } from '@angular/core/testing'; import { TranslateModule } from '@ngx-translate/core'; import { createTestComponent } from '../../../shared/testing/utils.test'; diff --git a/src/app/submission/submit/submission-submit.component.spec.ts b/src/app/submission/submit/submission-submit.component.spec.ts index 1b76082d1b..da569e4e5d 100644 --- a/src/app/submission/submit/submission-submit.component.spec.ts +++ b/src/app/submission/submit/submission-submit.component.spec.ts @@ -1,4 +1,4 @@ -import { waitForAsync, ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; +import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { ActivatedRoute, Router } from '@angular/router'; import { NO_ERRORS_SCHEMA, ViewContainerRef } from '@angular/core'; From 68ecf4815157ce8a2f859193d2075939640efa15 Mon Sep 17 00:00:00 2001 From: LisAtUP <117272473+LisAtUP@users.noreply.github.com> Date: Fri, 11 Nov 2022 12:20:30 +0200 Subject: [PATCH 31/83] Update el.json5 --- src/assets/i18n/el.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/i18n/el.json5 b/src/assets/i18n/el.json5 index e8ae4ab2e9..35cad25fd2 100644 --- a/src/assets/i18n/el.json5 +++ b/src/assets/i18n/el.json5 @@ -76,7 +76,7 @@ "admin.access-control.groups.form.delete-group.modal.info": "Είστε βέβαιοι ότι θέλετε να διαγράψετε την ομάδα \"{{ dsoName }}\"", "admin.access-control.groups.form.groupCommunity": "Κοινότητα ή Συλλογή", "admin.access-control.groups.form.groupDescription": "Περιγραφή", - "admin.access-control.groups.form.groupName": "Ονομα ομάδας", + "admin.access-control.groups.form.groupName": "Όνομα ομάδας", "admin.access-control.groups.form.head.create": "Δημιουργία ομάδας", "admin.access-control.groups.form.head.edit": "Επεξεργασία ομάδας", "admin.access-control.groups.form.members-list.button.see-all": "Περιήγηση σε όλα", From 84cb8fe09d574ef08c3bc48d83e74188498efdc4 Mon Sep 17 00:00:00 2001 From: "Mark H. Wood" Date: Thu, 3 Nov 2022 12:21:37 -0400 Subject: [PATCH 32/83] Make 'yarn install' succeed. Make 'yarn install' succeed. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 705dc8e345..993b8e079e 100644 --- a/package.json +++ b/package.json @@ -177,7 +177,7 @@ "eslint": "^8.2.0", "eslint-plugin-deprecation": "^1.3.2", "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jsdoc": "^38.0.6", + "eslint-plugin-jsdoc": "^39.3.6", "eslint-plugin-lodash": "^7.4.0", "eslint-plugin-unused-imports": "^2.0.0", "express-static-gzip": "^2.1.5", From fd43adea755537c5cefb7e0ff972c015b84ddf93 Mon Sep 17 00:00:00 2001 From: "Mark H. Wood" Date: Thu, 3 Nov 2022 12:40:51 -0400 Subject: [PATCH 33/83] Check in updated yarn lockfile (newbie error). --- yarn.lock | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/yarn.lock b/yarn.lock index f229ed4fcc..703fd01e62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1487,14 +1487,14 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@es-joy/jsdoccomment@~0.22.1": - version "0.22.1" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.22.1.tgz#3c86d458780231769215a795105bd3b03b2616f2" - integrity sha512-/WMkqLYfwCf0waCAMC8Eddt3iAOdghkDF5vmyKEu8pfO66KRFY1L15yks8mfgURiwOAOJpAQ3blvB3Znj6ZwBw== +"@es-joy/jsdoccomment@~0.36.0": + version "0.36.0" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.36.0.tgz#e3898aad334281a10ceb3c0ec406297a79f2b043" + integrity sha512-u0XZyvUF6Urb2cSivSXA8qXIpT/CxkHcdtZKoWusAzgzmsTWpg0F2FpWXsolHmMUyVY3dLWaoy+0ccJ5uf2QjA== dependencies: comment-parser "1.3.1" esquery "^1.4.0" - jsdoc-type-pratt-parser "~2.2.5" + jsdoc-type-pratt-parser "~3.1.0" "@eslint/eslintrc@^1.2.1": version "1.2.1" @@ -5700,18 +5700,17 @@ eslint-plugin-import@^2.25.4: resolve "^1.20.0" tsconfig-paths "^3.12.0" -eslint-plugin-jsdoc@^38.0.6: - version "38.0.6" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-38.0.6.tgz#b26843bdc445202b9f0e3830bda39ec5aacbfa97" - integrity sha512-Wvh5ERLUL8zt2yLZ8LLgi8RuF2UkjDvD+ri1/i7yMpbfreK2S29B9b5JC7iBIoFR7KDaEWCLnUPHTqgwcXX1Sg== +eslint-plugin-jsdoc@^39.3.6: + version "39.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.6.2.tgz#dcc86cec7cce47aa1a646e38debd5bdf76f63742" + integrity sha512-dvgY/W7eUFoAIIiaWHERIMI61ZWqcz9YFjEeyTzdPlrZc3TY/3aZm5aB91NUoTLWYZmO/vFlYSuQi15tF7uE5A== dependencies: - "@es-joy/jsdoccomment" "~0.22.1" + "@es-joy/jsdoccomment" "~0.36.0" comment-parser "1.3.1" debug "^4.3.4" escape-string-regexp "^4.0.0" esquery "^1.4.0" - regextras "^0.8.0" - semver "^7.3.5" + semver "^7.3.8" spdx-expression-parse "^3.0.1" eslint-plugin-lodash@^7.4.0: @@ -7764,10 +7763,10 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdoc-type-pratt-parser@~2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz#c9f93afac7ee4b5ed4432fe3f09f7d36b05ed0ff" - integrity sha512-2a6eRxSxp1BW040hFvaJxhsCMI9lT8QB8t14t+NY5tC5rckIR0U9cr2tjOeaFirmEOy6MHvmJnY7zTBHq431Lw== +jsdoc-type-pratt-parser@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz#a4a56bdc6e82e5865ffd9febc5b1a227ff28e67e" + integrity sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw== jsdom@19.0.0: version "19.0.0" @@ -11114,11 +11113,6 @@ regexpu-core@^5.0.1: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" -regextras@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.8.0.tgz#ec0f99853d4912839321172f608b544814b02217" - integrity sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ== - registry-auth-token@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" @@ -11609,6 +11603,13 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" From 7690d36e4b5cf2d12c309e4bc6fff2c30e4e67ab Mon Sep 17 00:00:00 2001 From: "Mark H. Wood" Date: Thu, 17 Nov 2022 09:00:11 -0500 Subject: [PATCH 34/83] Update Node versions with which to test. --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c58e09edf2..49061a8ebf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,7 +25,7 @@ jobs: strategy: # Create a matrix of Node versions to test against (in parallel) matrix: - node-version: [14.x, 16.x] + node-version: [16.x, 18.x] # Do NOT exit immediately if one matrix job fails fail-fast: false # These are the actual CI steps to perform per job From 9a695fedc7bb6992858cce5f2768ce2c9d08f902 Mon Sep 17 00:00:00 2001 From: Sufiyan Shaikh Date: Wed, 23 Nov 2022 20:33:11 +0530 Subject: [PATCH 35/83] [CST-7693] Missing Translations added --- .../create-community-parent-selector.component.html | 2 +- .../scope-selector-modal.component.html | 2 +- src/assets/i18n/en.json5 | 10 ++++++++++ .../create-community-parent-selector.component.html | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html b/src/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html index 84fdd34c01..4a22672988 100644 --- a/src/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html +++ b/src/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html @@ -9,7 +9,7 @@


- or + {{'dso-selector.create.community.or-divider' | translate}}

diff --git a/src/app/shared/search-form/scope-selector-modal/scope-selector-modal.component.html b/src/app/shared/search-form/scope-selector-modal/scope-selector-modal.component.html index bf5c15e963..e7165a9213 100644 --- a/src/app/shared/search-form/scope-selector-modal/scope-selector-modal.component.html +++ b/src/app/shared/search-form/scope-selector-modal/scope-selector-modal.component.html @@ -9,7 +9,7 @@


- or + {{'dso-selector.' + action + '.' + objectType.toString().toLowerCase() + '.or-divider' | translate}}

diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index a806588701..bf4b193ba1 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -1320,6 +1320,8 @@ "curation-task.task.vscan.label": "Virus Scan", + "curation-task.task.registerdoi.label": "Register DOI", + "curation.form.task-select.label": "Task:", @@ -1366,6 +1368,8 @@ "dso-selector.create.community.head": "New community", + "dso-selector.create.community.or-divider": "or", + "dso-selector.create.community.sub-level": "Create a new community in", "dso-selector.create.community.top-level": "Create a new top-level community", @@ -1400,6 +1404,8 @@ "dso-selector.set-scope.community.button": "Search all of DSpace", + "dso-selector.set-scope.community.or-divider": "or", + "dso-selector.set-scope.community.input-header": "Search for a community or collection", "dso-selector.claim.item.head": "Profile tips", @@ -4037,6 +4043,8 @@ "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfProject": "Funder of the Project", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isPublicationOfAuthor": "Publication of the Author", + "submission.sections.describe.relationship-lookup.selection-tab.title.openAIREFunding": "Funding OpenAIRE API", "submission.sections.describe.relationship-lookup.selection-tab.title.isProjectOfPublication": "Project", @@ -4081,6 +4089,8 @@ "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Parent Organizational Unit", + "submission.sections.describe.relationship-lookup.title.isPublicationOfAuthor": "Publication", + "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Toggle dropdown", "submission.sections.describe.relationship-lookup.selection-tab.settings": "Settings", diff --git a/src/themes/custom/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html b/src/themes/custom/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html index 84fdd34c01..4a22672988 100644 --- a/src/themes/custom/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html +++ b/src/themes/custom/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html @@ -9,7 +9,7 @@


- or + {{'dso-selector.create.community.or-divider' | translate}}

From 6e2279d155975700b442839d59aee6cd89d8fb3a Mon Sep 17 00:00:00 2001 From: Vincenzo Mecca Date: Mon, 28 Nov 2022 11:25:50 +0100 Subject: [PATCH 36/83] [1950][DURACOM-101] Fixed linting --- src/app/shared/form/builder/parsers/field-parser.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/shared/form/builder/parsers/field-parser.ts b/src/app/shared/form/builder/parsers/field-parser.ts index e2a907056e..d446877897 100644 --- a/src/app/shared/form/builder/parsers/field-parser.ts +++ b/src/app/shared/form/builder/parsers/field-parser.ts @@ -1,6 +1,6 @@ import { Inject, InjectionToken } from '@angular/core'; -import { uniqueId } from 'lodash'; +import uniqueId from 'lodash/uniqueId'; import { DynamicFormControlLayout, DynamicFormControlRelation, MATCH_VISIBLE, OR_OPERATOR } from '@ng-dynamic-forms/core'; import { hasValue, isNotEmpty, isNotNull, isNotUndefined } from '../../../empty.util'; @@ -22,7 +22,7 @@ export const SUBMISSION_ID: InjectionToken = new InjectionToken( export const CONFIG_DATA: InjectionToken = new InjectionToken('configData'); export const INIT_FORM_VALUES: InjectionToken = new InjectionToken('initFormValues'); export const PARSER_OPTIONS: InjectionToken = new InjectionToken('parserOptions'); -export const REGEX_FIELD_VALIDATOR: RegExp = new RegExp('(\\/?)(.+)\\1([gimsuy]*)', 'i'); +export const REGEX_FIELD_VALIDATOR = new RegExp('(\\/?)(.+)\\1([gimsuy]*)', 'i'); export abstract class FieldParser { From 9eb4a7e22ea01258df60178e76c44c0205a4c32d Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Tue, 29 Nov 2022 17:20:35 +0100 Subject: [PATCH 37/83] 95335: Removed duplicate i18n key --- src/assets/i18n/en.json5 | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 826e871efa..10a37f2b2d 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -4811,7 +4811,5 @@ "person.orcid.registry.auth": "ORCID Authorizations", "home.recent-submissions.head": "Recent Submissions", - "idle-modal.extend-session": "Extend session", - "listable-notification-object.default-message": "This object couldn't be retrieved", } From 4ba5eba5565e4b231c7d53953152e6c25fc3708f Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Wed, 30 Nov 2022 13:30:09 +0100 Subject: [PATCH 38/83] 95335: Display error message when DSOSelectorComponent can't successfully retrieve the next page of DSOs --- .../dso-selector/dso-selector.component.html | 6 +-- .../dso-selector/dso-selector.component.ts | 37 +++++++++++++------ src/assets/i18n/en.json5 | 2 + 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/app/shared/dso-selector/dso-selector/dso-selector.component.html b/src/app/shared/dso-selector/dso-selector/dso-selector.component.html index 8abb8ad558..c4f5dbc4cd 100644 --- a/src/app/shared/dso-selector/dso-selector/dso-selector.component.html +++ b/src/app/shared/dso-selector/dso-selector/dso-selector.component.html @@ -21,12 +21,12 @@