From 884aa0743096b4bfe946679aa48ad3f5727575df Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Fri, 23 Jun 2023 13:04:19 -0500 Subject: [PATCH 001/355] Update version tag for development of next release --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 719b13b23b6..06d7063240f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dspace-angular", - "version": "7.6.0", + "version": "7.6.1-next", "scripts": { "ng": "ng", "config:watch": "nodemon", From ae6b183faec9cda0d2932143a52e14ef94bd945c Mon Sep 17 00:00:00 2001 From: Art Lowel Date: Wed, 14 Jun 2023 18:51:42 +0200 Subject: [PATCH 002/355] 103236: fix issue where setStaleByHrefSubtring wouldn't emit after all requests were stale --- src/app/core/data/request.service.ts | 36 +++++++++++++++++++++------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/app/core/data/request.service.ts b/src/app/core/data/request.service.ts index 2d5acb2cb3d..3b7ee80ffb0 100644 --- a/src/app/core/data/request.service.ts +++ b/src/app/core/data/request.service.ts @@ -2,8 +2,8 @@ import { Injectable } from '@angular/core'; import { HttpHeaders } from '@angular/common/http'; import { createSelector, MemoizedSelector, select, Store } from '@ngrx/store'; -import { Observable } from 'rxjs'; -import { filter, map, take, tap } from 'rxjs/operators'; +import { Observable, from as observableFrom } from 'rxjs'; +import { filter, find, map, mergeMap, switchMap, take, tap, toArray } from 'rxjs/operators'; import { cloneDeep } from 'lodash'; import { hasValue, isEmpty, isNotEmpty, hasNoValue } from '../../shared/empty.util'; import { ObjectCacheEntry } from '../cache/object-cache.reducer'; @@ -292,22 +292,42 @@ export class RequestService { * Set all requests that match (part of) the href to stale * * @param href A substring of the request(s) href - * @return Returns an observable emitting whether or not the cache is removed + * @return Returns an observable emitting when those requests are all stale */ setStaleByHrefSubstring(href: string): Observable { - this.store.pipe( + const requestUUIDs$ = this.store.pipe( select(uuidsFromHrefSubstringSelector(requestIndexSelector, href)), take(1) - ).subscribe((uuids: string[]) => { + ); + requestUUIDs$.subscribe((uuids: string[]) => { for (const uuid of uuids) { this.store.dispatch(new RequestStaleAction(uuid)); } }); this.requestsOnTheirWayToTheStore = this.requestsOnTheirWayToTheStore.filter((reqHref: string) => reqHref.indexOf(href) < 0); - return this.store.pipe( - select(uuidsFromHrefSubstringSelector(requestIndexSelector, href)), - map((uuids) => isEmpty(uuids)) + // emit true after all requests are stale + return requestUUIDs$.pipe( + switchMap((uuids: string[]) => { + if (isEmpty(uuids)) { + // if there were no matching requests, emit true immediately + return [true]; + } else { + // otherwise emit all request uuids in order + return observableFrom(uuids).pipe( + // retrieve the RequestEntry for each uuid + mergeMap((uuid: string) => this.getByUUID(uuid)), + // check whether it is undefined or stale + map((request: RequestEntry) => hasNoValue(request) || isStale(request.state)), + // if it is, complete + find((stale: boolean) => stale === true), + // after all observables above are completed, emit them as a single array + toArray(), + // when the array comes in, emit true + map(() => true) + ); + } + }) ); } From 02a20c8862ca4d93919ca07e900d70a722ebbb5d Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Fri, 30 Jun 2023 16:56:37 +0200 Subject: [PATCH 003/355] 103236: Added tests for setStaleByHrefSubstring --- src/app/core/data/request.service.spec.ts | 46 ++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/app/core/data/request.service.spec.ts b/src/app/core/data/request.service.spec.ts index fe35d840d7d..4493c61a69c 100644 --- a/src/app/core/data/request.service.spec.ts +++ b/src/app/core/data/request.service.spec.ts @@ -1,6 +1,6 @@ import { Store, StoreModule } from '@ngrx/store'; import { cold, getTestScheduler } from 'jasmine-marbles'; -import { EMPTY, of as observableOf } from 'rxjs'; +import { EMPTY, Observable, of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; import { getMockObjectCacheService } from '../../shared/mocks/object-cache.service.mock'; @@ -625,4 +625,48 @@ describe('RequestService', () => { expect(done$).toBeObservable(cold('-----(t|)', { t: true })); })); }); + + describe('setStaleByHrefSubstring', () => { + let dispatchSpy: jasmine.Spy; + let getByUUIDSpy: jasmine.Spy; + + beforeEach(() => { + dispatchSpy = spyOn(store, 'dispatch'); + getByUUIDSpy = spyOn(service, 'getByUUID').and.callThrough(); + }); + + describe('with an empty/no matching requests in the state', () => { + it('should return true', () => { + const done$: Observable = service.setStaleByHrefSubstring('https://rest.api/endpoint/selfLink'); + expect(done$).toBeObservable(cold('(a|)', { a: true })); + }); + }); + + describe('with a matching request in the state', () => { + beforeEach(() => { + const state = Object.assign({}, initialState, { + core: Object.assign({}, initialState.core, { + 'index': { + 'get-request/href-to-uuid': { + 'https://rest.api/endpoint/selfLink': '5f2a0d2a-effa-4d54-bd54-5663b960f9eb' + } + } + }) + }); + mockStore.setState(state); + }); + + it('should return an Observable that emits true as soon as the request is stale', () => { + dispatchSpy.and.callFake(() => { /* empty */ }); // don't actually set as stale + getByUUIDSpy.and.returnValue(cold('a-b--c--d-', { // but fake the state in the cache + a: { state: RequestEntryState.ResponsePending }, + b: { state: RequestEntryState.Success }, + c: { state: RequestEntryState.SuccessStale }, + d: { state: RequestEntryState.Error }, + })); + const done$: Observable = service.setStaleByHrefSubstring('https://rest.api/endpoint/selfLink'); + expect(done$).toBeObservable(cold('-----(a|)', { a: true })); + }); + }); + }); }); From b2b1782cd8505cf079782811bab4238e5cc0a359 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Fri, 30 Jun 2023 20:23:51 +0200 Subject: [PATCH 004/355] Hide entity field in collection form when entities aren't initialized --- .../collection-form/collection-form.component.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/app/collection-page/collection-form/collection-form.component.ts b/src/app/collection-page/collection-form/collection-form.component.ts index 23698de84e9..b52d282f634 100644 --- a/src/app/collection-page/collection-form/collection-form.component.ts +++ b/src/app/collection-page/collection-form/collection-form.component.ts @@ -79,9 +79,8 @@ export class CollectionFormComponent extends ComColFormComponent imp // retrieve all entity types to populate the dropdowns selection entities$.subscribe((entityTypes: ItemType[]) => { - entityTypes - .filter((type: ItemType) => type.label !== NONE_ENTITY_TYPE) - .forEach((type: ItemType, index: number) => { + entityTypes = entityTypes.filter((type: ItemType) => type.label !== NONE_ENTITY_TYPE); + entityTypes.forEach((type: ItemType, index: number) => { this.entityTypeSelection.add({ disabled: false, label: type.label, @@ -93,7 +92,7 @@ export class CollectionFormComponent extends ComColFormComponent imp } }); - this.formModel = [...collectionFormModels, this.entityTypeSelection]; + this.formModel = entityTypes.length === 0 ? collectionFormModels : [...collectionFormModels, this.entityTypeSelection]; super.ngOnInit(); }); From cf777268666587d5980408d7bc3872260606ae71 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Fri, 30 Jun 2023 22:41:07 +0200 Subject: [PATCH 005/355] Fix enter not submitting collection form correctly Fixed it for communities, collections, ePersons & groups --- .../eperson-form/eperson-form.component.html | 10 +++++----- .../group-form/group-form.component.html | 4 ++-- .../comcol-form/comcol-form.component.html | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.html b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.html index e9cc48aee3d..156f2e776da 100644 --- a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.html +++ b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.html @@ -15,23 +15,23 @@

{{messagePrefix + '.edit' | translate}}

[displayCancel]="false" (submitForm)="onSubmit()">
-
-
- -
- diff --git a/src/app/access-control/group-registry/group-form/group-form.component.html b/src/app/access-control/group-registry/group-form/group-form.component.html index 0fc5a574b7d..e50a4790904 100644 --- a/src/app/access-control/group-registry/group-form/group-form.component.html +++ b/src/app/access-control/group-registry/group-form/group-form.component.html @@ -25,12 +25,12 @@

{{messagePrefix + '.head.edit' | translate}}

[displayCancel]="false" (submitForm)="onSubmit()">
-
diff --git a/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.html b/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.html index 5d7b092f740..b7b3d344b1e 100644 --- a/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.html +++ b/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.html @@ -42,7 +42,7 @@ [formModel]="formModel" [displayCancel]="false" (submitForm)="onSubmit()"> - From 3a48ed390b832c1a0a953284f6449678b2e8d361 Mon Sep 17 00:00:00 2001 From: Alan Orth Date: Wed, 5 Jul 2023 18:03:25 +0300 Subject: [PATCH 006/355] src/app: fix path to deny-request-copy component The themed-deny-request-copy.component erroneously includes the cus- tom theme's deny-request-copy component instead of its own. Closes: https://github.com/DSpace/dspace-angular/issues/2351 --- .../deny-request-copy/themed-deny-request-copy.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/request-copy/deny-request-copy/themed-deny-request-copy.component.ts b/src/app/request-copy/deny-request-copy/themed-deny-request-copy.component.ts index 664e4c541b4..1539d496225 100644 --- a/src/app/request-copy/deny-request-copy/themed-deny-request-copy.component.ts +++ b/src/app/request-copy/deny-request-copy/themed-deny-request-copy.component.ts @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; import { ThemedComponent } from 'src/app/shared/theme-support/themed.component'; -import { DenyRequestCopyComponent } from 'src/themes/custom/app/request-copy/deny-request-copy/deny-request-copy.component'; +import { DenyRequestCopyComponent } from './deny-request-copy.component'; /** * Themed wrapper for deny-request-copy.component From 7bf4da55cf8cb7017ce5c1b096e14df3d69eeff8 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Fri, 7 Jul 2023 11:56:47 -0500 Subject: [PATCH 007/355] Enable Pull Request Opened action to assign PRs to their creator --- .../pull_request_opened.yml | 26 ------------------- .github/workflows/pull_request_opened.yml | 24 +++++++++++++++++ 2 files changed, 24 insertions(+), 26 deletions(-) delete mode 100644 .github/disabled-workflows/pull_request_opened.yml create mode 100644 .github/workflows/pull_request_opened.yml diff --git a/.github/disabled-workflows/pull_request_opened.yml b/.github/disabled-workflows/pull_request_opened.yml deleted file mode 100644 index 0dc718c0b9a..00000000000 --- a/.github/disabled-workflows/pull_request_opened.yml +++ /dev/null @@ -1,26 +0,0 @@ -# This workflow runs whenever a new pull request is created -# TEMPORARILY DISABLED. Unfortunately this doesn't work for PRs created from forked repositories (which is how we tend to create PRs). -# There is no known workaround yet. See https://github.community/t/how-to-use-github-token-for-prs-from-forks/16818 -name: Pull Request opened - -# Only run for newly opened PRs against the "main" branch -on: - pull_request: - types: [opened] - branches: - - main - -jobs: - automation: - runs-on: ubuntu-latest - steps: - # Assign the PR to whomever created it. This is useful for visualizing assignments on project boards - # See https://github.com/marketplace/actions/pull-request-assigner - - name: Assign PR to creator - uses: thomaseizinger/assign-pr-creator-action@v1.0.0 - # Note, this authentication token is created automatically - # See: https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - # Ignore errors. It is possible the PR was created by someone who cannot be assigned - continue-on-error: true diff --git a/.github/workflows/pull_request_opened.yml b/.github/workflows/pull_request_opened.yml new file mode 100644 index 00000000000..9b61af72d18 --- /dev/null +++ b/.github/workflows/pull_request_opened.yml @@ -0,0 +1,24 @@ +# This workflow runs whenever a new pull request is created +name: Pull Request opened + +# Only run for newly opened PRs against the "main" or maintenance branches +# We allow this to run for `pull_request_target` so that github secrets are available +# (This is required to assign a PR back to the creator when the PR comes from a forked repo) +on: + pull_request_target: + types: [ opened ] + branches: + - main + - 'dspace-**' + +permissions: + pull-requests: write + +jobs: + automation: + runs-on: ubuntu-latest + steps: + # Assign the PR to whomever created it. This is useful for visualizing assignments on project boards + # See https://github.com/toshimaru/auto-author-assign + - name: Assign PR to creator + uses: toshimaru/auto-author-assign@v1.6.2 From a484379f69af39a6b1b83aaa310f95b47671c1f9 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Fri, 7 Jul 2023 11:56:54 -0500 Subject: [PATCH 008/355] Ensure codescan and label_merge_conflicts run on maintenance branches --- .github/workflows/codescan.yml | 10 +++++++--- .github/workflows/label_merge_conflicts.yml | 7 ++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codescan.yml b/.github/workflows/codescan.yml index 35a2e2d24aa..8b415296c71 100644 --- a/.github/workflows/codescan.yml +++ b/.github/workflows/codescan.yml @@ -5,12 +5,16 @@ # because CodeQL requires a fresh build with all tests *disabled*. name: "Code Scanning" -# Run this code scan for all pushes / PRs to main branch. Also run once a week. +# Run this code scan for all pushes / PRs to main or maintenance branches. Also run once a week. on: push: - branches: [ main ] + branches: + - main + - 'dspace-**' pull_request: - branches: [ main ] + branches: + - main + - 'dspace-**' # Don't run if PR is only updating static documentation paths-ignore: - '**/*.md' diff --git a/.github/workflows/label_merge_conflicts.yml b/.github/workflows/label_merge_conflicts.yml index c1396b6f45c..7ea33277411 100644 --- a/.github/workflows/label_merge_conflicts.yml +++ b/.github/workflows/label_merge_conflicts.yml @@ -1,11 +1,12 @@ # This workflow checks open PRs for merge conflicts and labels them when conflicts are found name: Check for merge conflicts -# Run whenever the "main" branch is updated -# NOTE: This means merge conflicts are only checked for when a PR is merged to main. +# Run this for all pushes (i.e. merges) to 'main' or maintenance branches on: push: - branches: [ main ] + branches: + - main + - 'dspace-**' # So that the `conflict_label_name` is removed if conflicts are resolved, # we allow this to run for `pull_request_target` so that github secrets are available. pull_request_target: From 1809f0585c833631f5f36d0e45c47fc9e01000cd Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Fri, 7 Jul 2023 12:05:56 -0500 Subject: [PATCH 009/355] Split docker images into separate jobs to run in parallel. Ensure 'main' codebase is tagged as 'latest' --- .github/workflows/docker.yml | 84 ++++++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 27 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9a2c838d83f..0c36d5af987 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -15,29 +15,35 @@ on: permissions: contents: read # to fetch code (actions/checkout) + +env: + # Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action) + # For a new commit on default branch (main), use the literal tag 'latest' on Docker image. + # For a new commit on other branches, use the branch name as the tag for Docker image. + # For a new tag, copy that tag name as the tag for Docker image. + IMAGE_TAGS: | + type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }} + type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }} + type=ref,event=tag + # Define default tag "flavor" for docker/metadata-action per + # https://github.com/docker/metadata-action#flavor-input + # We manage the 'latest' tag ourselves to the 'main' branch (see settings above) + TAGS_FLAVOR: | + latest=false + # Architectures / Platforms for which we will build Docker images + # If this is a PR, we ONLY build for AMD64. For PRs we only do a sanity check test to ensure Docker builds work. + # If this is NOT a PR (e.g. a tag or merge commit), also build for ARM64. + PLATFORMS: linux/amd64${{ github.event_name != 'pull_request' && ', linux/arm64' || '' }} + + jobs: - docker: + ############################################### + # Build/Push the 'dspace/dspace-angular' image + ############################################### + dspace-angular: # Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace-angular' if: github.repository == 'dspace/dspace-angular' runs-on: ubuntu-latest - env: - # Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action) - # For a new commit on default branch (main), use the literal tag 'dspace-7_x' on Docker image. - # For a new commit on other branches, use the branch name as the tag for Docker image. - # For a new tag, copy that tag name as the tag for Docker image. - IMAGE_TAGS: | - type=raw,value=dspace-7_x,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }} - type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }} - type=ref,event=tag - # Define default tag "flavor" for docker/metadata-action per - # https://github.com/docker/metadata-action#flavor-input - # We turn off 'latest' tag by default. - TAGS_FLAVOR: | - latest=false - # Architectures / Platforms for which we will build Docker images - # If this is a PR, we ONLY build for AMD64. For PRs we only do a sanity check test to ensure Docker builds work. - # If this is NOT a PR (e.g. a tag or merge commit), also build for ARM64. - PLATFORMS: linux/amd64${{ github.event_name != 'pull_request' && ', linux/arm64' || '' }} steps: # https://github.com/actions/checkout @@ -61,9 +67,6 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - ############################################### - # Build/Push the 'dspace/dspace-angular' image - ############################################### # https://github.com/docker/metadata-action # Get Metadata for docker_build step below - name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-angular' image @@ -77,7 +80,7 @@ jobs: # https://github.com/docker/build-push-action - name: Build and push 'dspace-angular' image id: docker_build - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: ./Dockerfile @@ -89,9 +92,36 @@ jobs: tags: ${{ steps.meta_build.outputs.tags }} labels: ${{ steps.meta_build.outputs.labels }} - ##################################################### - # Build/Push the 'dspace/dspace-angular' image ('-dist' tag) - ##################################################### + ############################################################# + # Build/Push the 'dspace/dspace-angular' image ('-dist' tag) + ############################################################# + dspace-angular-dist: + # Ensure this job never runs on forked repos. It's only executed for 'dspace/dspace-angular' + if: github.repository == 'dspace/dspace-angular' + runs-on: ubuntu-latest + + steps: + # https://github.com/actions/checkout + - name: Checkout codebase + uses: actions/checkout@v3 + + # https://github.com/docker/setup-buildx-action + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v2 + + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU emulation to build for multiple architectures + uses: docker/setup-qemu-action@v2 + + # https://github.com/docker/login-action + - 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@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_ACCESS_TOKEN }} + # https://github.com/docker/metadata-action # Get Metadata for docker_build_dist step below - name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-angular-dist' image @@ -107,7 +137,7 @@ jobs: - name: Build and push 'dspace-angular-dist' image id: docker_build_dist - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: ./Dockerfile.dist From 648925f3e1c0a51fc3eb61b7257e7a44ea57fee6 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Wed, 19 Jul 2023 14:01:41 +0200 Subject: [PATCH 010/355] 104312: DsDynamicLookupRelationExternalSourceTabComponent should have the form value already filled in the search input --- .../dynamic-lookup-relation-modal.component.html | 1 + ...ookup-relation-external-source-tab.component.ts | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.html index f95cd98c656..4c635b931f0 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.html +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.html @@ -42,6 +42,7 @@ diff --git a/src/app/shared/sidebar/sidebar-dropdown.component.html b/src/app/shared/sidebar/sidebar-dropdown.component.html index 0c2a1c05d25..2eadac09f75 100644 --- a/src/app/shared/sidebar/sidebar-dropdown.component.html +++ b/src/app/shared/sidebar/sidebar-dropdown.component.html @@ -1,5 +1,5 @@
-
+

diff --git a/src/themes/dspace/styles/_global-styles.scss b/src/themes/dspace/styles/_global-styles.scss index e41dae0e3f2..5bd4c19bc04 100644 --- a/src/themes/dspace/styles/_global-styles.scss +++ b/src/themes/dspace/styles/_global-styles.scss @@ -17,7 +17,7 @@ background-color: var(--bs-primary); } - h5 { + h4 { font-size: 1.1rem } } From d1ebf07456681dec8b804099aca6423603d8573c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Fern=C3=A1ndez=20Celorio?= Date: Tue, 22 Aug 2023 11:59:54 +0200 Subject: [PATCH 064/355] Spanish translation updated to 7.6 (cherry picked from commit 4cc4192e93aea3eb7dddc8486fe1fad35b6103bc) --- src/assets/i18n/es.json5 | 766 ++++++++++++++++++++------------------- 1 file changed, 385 insertions(+), 381 deletions(-) diff --git a/src/assets/i18n/es.json5 b/src/assets/i18n/es.json5 index bb9334cf114..24ce7159e33 100644 --- a/src/assets/i18n/es.json5 +++ b/src/assets/i18n/es.json5 @@ -9,8 +9,6 @@ // "401.unauthorized": "unauthorized", "401.unauthorized": "no autorizado", - - // "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": "No tiene permisos para acceder a esta página. Puede utilizar el botón de abajo para volver a la página de inicio.", @@ -29,7 +27,6 @@ // "500.link.home-page": "Take me to the home page", "500.link.home-page": "Llévame a la página de inicio", - // "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": "No podemos encontrar la página que busca. La página puede haber sido movida o eliminada. Puede utilizar el botón de abajo para volver a la página de inicio. ", @@ -52,7 +49,7 @@ "error-page.description.404": "página no encontrada", // "error-page.orcid.generic-error": "An error occurred during login via ORCID. Make sure you have shared your ORCID account email address with DSpace. If the error persists, contact the administrator", - "error-page.orcid.generic-error": "Hubo un error en el login via ORCID. Asegúrese que ha compartido el correo electrónico de su cuenta ORCID con Dspace. Si continuase el error, contacte con el administrador", + "error-page.orcid.generic-error": "Hubo un error en el login vía ORCID. Asegúrese que ha compartido el correo electrónico de su cuenta ORCID con Dspace. Si continuase el error, contacte con el administrador", // "access-status.embargo.listelement.badge": "Embargo", "access-status.embargo.listelement.badge": "Embargo", @@ -194,7 +191,8 @@ // "admin.registries.bitstream-formats.table.name": "Name", "admin.registries.bitstream-formats.table.name": "Nombre", - // "admin.registries.bitstream-formats.table.id" : "ID", + + // "admin.registries.bitstream-formats.table.id": "ID", "admin.registries.bitstream-formats.table.id": "ID", // "admin.registries.bitstream-formats.table.return": "Back", @@ -215,8 +213,6 @@ // "admin.registries.bitstream-formats.title": "Bitstream Format Registry", "admin.registries.bitstream-formats.title": "Registro de formato Archivo", - - // "admin.registries.metadata.breadcrumbs": "Metadata registry", "admin.registries.metadata.breadcrumbs": "Registro de metadatos", @@ -256,8 +252,6 @@ // "admin.registries.metadata.title": "Metadata Registry", "admin.registries.metadata.title": "Registro de metadatos", - - // "admin.registries.schema.breadcrumbs": "Metadata schema", "admin.registries.schema.breadcrumbs": "Esquema de metadatos", @@ -275,7 +269,8 @@ // "admin.registries.schema.fields.table.field": "Field", "admin.registries.schema.fields.table.field": "Campo", - // "admin.registries.schema.fields.table.id" : "ID", + + // "admin.registries.schema.fields.table.id": "ID", "admin.registries.schema.fields.table.id": "ID", // "admin.registries.schema.fields.table.scopenote": "Scope Note", @@ -335,7 +330,29 @@ // "admin.registries.schema.title": "Metadata Schema Registry", "admin.registries.schema.title": "Registro de esquemas de metadatos", + // "admin.access-control.bulk-access.breadcrumbs": "Bulk Access Management", + "admin.access-control.bulk-access.breadcrumbs": "Gestión de Acceso Masivo", + + // "administrativeBulkAccess.search.results.head": "Search Results", + "administrativeBulkAccess.search.results.head": "Resultados de la búsqueda", + + // "admin.access-control.bulk-access": "Bulk Access Management", + "admin.access-control.bulk-access": "Gestión de Acceso Masivo", + + // "admin.access-control.bulk-access.title": "Bulk Access Management", + "admin.access-control.bulk-access.title": "Gestión de Acceso Masivo", + // "admin.access-control.bulk-access-browse.header": "Step 1: Select Objects", + "admin.access-control.bulk-access-browse.header": "Paso 1: Seleccione Objetos", + + // "admin.access-control.bulk-access-browse.search.header": "Search", + "admin.access-control.bulk-access-browse.search.header": "Buscar", + + // "admin.access-control.bulk-access-browse.selected.header": "Current selection({{number}})", + "admin.access-control.bulk-access-browse.selected.header": "Selección actual({{number}})", + + // "admin.access-control.bulk-access-settings.header": "Step 2: Operation to Perform", + "admin.access-control.bulk-access-settings.header": "Paso 2: Operación a realizar", // "admin.access-control.epeople.actions.delete": "Delete EPerson", "admin.access-control.epeople.actions.delete": "Eliminar usuario", @@ -347,7 +364,7 @@ "admin.access-control.epeople.actions.reset": "Restablecer la contraseña", // "admin.access-control.epeople.actions.stop-impersonating": "Stop impersonating EPerson", - "admin.access-control.epeople.actions.stop-impersonating": "Deja de hacerse pasar por usuario", + "admin.access-control.epeople.actions.stop-impersonating": "Dejar de hacerse pasar por usuario", // "admin.access-control.epeople.breadcrumbs": "EPeople", "admin.access-control.epeople.breadcrumbs": "Usuarios", @@ -478,8 +495,6 @@ // "admin.access-control.epeople.notification.deleted.success": "Successfully deleted EPerson: \"{{name}}\"", "admin.access-control.epeople.notification.deleted.success": "Usuario eliminado correctamente: \"{{ name }}\"", - - // "admin.access-control.groups.title": "Groups", "admin.access-control.groups.title": "Grupos", @@ -549,8 +564,6 @@ // "admin.access-control.groups.notification.deleted.failure.content": "Cause: \"{{cause}}\"", "admin.access-control.groups.notification.deleted.failure.content": "Causa: \"{{ 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": "Este grupo es permanente, por lo que no se puede editar ni eliminar. Sin embargo, puedes añadir y eliminar miembros del grupo utilizando esta página.", @@ -791,9 +804,6 @@ // "administrativeView.search.results.head": "Administrative Search", "administrativeView.search.results.head": "Búsqueda administrativa", - - - // "admin.workflow.breadcrumbs": "Administer Workflow", "admin.workflow.breadcrumbs": "Administrar flujo de trabajo", @@ -818,8 +828,6 @@ // "admin.workflow.item.supervision": "Supervision", "admin.workflow.item.supervision": "Supervisión", - - // "admin.metadata-import.breadcrumbs": "Import Metadata", "admin.metadata-import.breadcrumbs": "Importar metadatos", @@ -844,6 +852,9 @@ // "admin.batch-import.page.help": "Select the Collection to import into. Then, drop or browse to a Simple Archive Format (SAF) zip file that includes the Items to import", "admin.batch-import.page.help": "Seleccione la Colección a la que importar. Luego, suelte o busque el archivo zip en formato Simple Archive Format (SAF) que incluye los ítems a importar", + // "admin.batch-import.page.toggle.help": "It is possible to perform import either with file upload or via URL, use above toggle to set the input source", + "admin.batch-import.page.toggle.help": "Es posible realizar una importación tanto mediante una subida de fichero como a través de una URL. Use el selector de arriba para especificar la fuente de entrada.", + // "admin.metadata-import.page.dropMsg": "Drop a metadata CSV to import", "admin.metadata-import.page.dropMsg": "Suelta un CSV de metadatos para importar", @@ -863,14 +874,26 @@ "admin.metadata-import.page.button.proceed": "Continuar", // "admin.metadata-import.page.button.select-collection": "Select Collection", - "admin.metadata-import.page.button.select-collection": "Selecciona la Colleción", + "admin.metadata-import.page.button.select-collection": "Selecciona la Colección", // "admin.metadata-import.page.error.addFile": "Select file first!", "admin.metadata-import.page.error.addFile": "¡Seleccione el archivo primero!", + // "admin.metadata-import.page.error.addFileUrl": "Insert file url first!", + "admin.metadata-import.page.error.addFileUrl": "¡Seleccione primero la URL del archivo!", + // "admin.batch-import.page.error.addFile": "Select Zip file first!", "admin.batch-import.page.error.addFile": "¡Seleccione el archivo ZIP primero!", + // "admin.metadata-import.page.toggle.upload": "Upload", + "admin.metadata-import.page.toggle.upload": "Subir", + + // "admin.metadata-import.page.toggle.url": "URL", + "admin.metadata-import.page.toggle.url": "URL", + + // "admin.metadata-import.page.urlMsg": "Insert the batch ZIP url to import", + "admin.metadata-import.page.urlMsg": "¡Seleccione primero la URL del archivo ZIP!", + // "admin.metadata-import.page.validateOnly": "Validate Only", "admin.metadata-import.page.validateOnly": "Solo Validar", @@ -895,14 +918,12 @@ // "advanced-workflow-action.rating.description-requiredDescription": "Please select a rating below and also add a review", "advanced-workflow-action.rating.description-requiredDescription": "Por favor, seleccione una evaluación y también agregue una revisión", - // "advanced-workflow-action.select-reviewer.description-single": "Please select a single reviewer below before submitting", "advanced-workflow-action.select-reviewer.description-single": "Por favor, seleccione un revisor antes de realizar el envío", // "advanced-workflow-action.select-reviewer.description-multiple": "Please select one or more reviewers below before submitting", "advanced-workflow-action.select-reviewer.description-multiple": "Por favor, seleccione uno o mas revisores antes de realizar el envío", - // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.head": "EPeople", "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.head": "Usuario", @@ -987,15 +1008,12 @@ // "auth.messages.token-refresh-failed": "Refreshing your session token failed. Please log in again.", "auth.messages.token-refresh-failed": "No se pudo actualizar el token de la sesión. Inicie sesión de nuevo.", - - - // "bitstream.download.page": "Now downloading {{bitstream}}..." , + // "bitstream.download.page": "Now downloading {{bitstream}}...", "bitstream.download.page": "Descargando {{ bitstream }}...", - // "bitstream.download.page.back": "Back" , + // "bitstream.download.page.back": "Back", "bitstream.download.page.back": "Atrás" , - // "bitstream.edit.authorizations.link": "Edit bitstream's Policies", "bitstream.edit.authorizations.link": "Editar las políticas del archivo", @@ -1047,6 +1065,9 @@ // "bitstream.edit.notifications.error.format.title": "An error occurred saving the bitstream's format", "bitstream.edit.notifications.error.format.title": "Se produjo un error al guardar el formato del archivo.", + // "bitstream.edit.notifications.error.primaryBitstream.title": "An error occurred saving the primary bitstream", + "bitstream.edit.notifications.error.primaryBitstream.title": "Se produjo un error al guardar el archivo primario", + // "bitstream.edit.form.iiifLabel.label": "IIIF Label", "bitstream.edit.form.iiifLabel.label": "Etiqueta IIIF", @@ -1071,7 +1092,6 @@ // "bitstream.edit.form.iiifHeight.hint": "The canvas height should usually match the image height.", "bitstream.edit.form.iiifHeight.hint": "La altura del marco normalmente debería coincidir con la altura de la imagen", - // "bitstream.edit.notifications.saved.content": "Your changes to this bitstream were saved.", "bitstream.edit.notifications.saved.content": "Se guardaron sus cambios en este archivo.", @@ -1095,6 +1115,7 @@ // "bitstream-request-a-copy.intro.bitstream.one": "Requesting the following file: ", "bitstream-request-a-copy.intro.bitstream.one": "Solicitando el siguiente fichero: ", + // "bitstream-request-a-copy.intro.bitstream.all": "Requesting all files. ", "bitstream-request-a-copy.intro.bitstream.all": "Solicitando todos los ficheros. ", @@ -1137,8 +1158,6 @@ // "bitstream-request-a-copy.submit.error": "Something went wrong with submitting the item request.", "bitstream-request-a-copy.submit.error": "Hubo un fallo en el envío de la solicitud de ítem.", - - // "browse.back.all-results": "All browse results", "browse.back.all-results": "Todos los resultados de la búsqueda", @@ -1151,8 +1170,11 @@ // "browse.comcol.by.subject": "By Subject", "browse.comcol.by.subject": "Por materia", + // "browse.comcol.by.srsc": "By Subject Category", + "browse.comcol.by.srsc": "Por categoría", + // "browse.comcol.by.title": "By Title", - "browse.comcol.by.title": "Por titulo", + "browse.comcol.by.title": "Por título", // "browse.comcol.head": "Browse", "browse.comcol.head": "Examinar", @@ -1181,6 +1203,9 @@ // "browse.metadata.subject.breadcrumbs": "Browse by Subject", "browse.metadata.subject.breadcrumbs": "Examinar por materia", + // "browse.metadata.srsc.breadcrumbs": "Browse by Subject Category", + "browse.metadata.srsc.breadcrumbs": "Examinar por categoría", + // "browse.metadata.title.breadcrumbs": "Browse by Title", "browse.metadata.title.breadcrumbs": "Examinar por título", @@ -1262,21 +1287,24 @@ // "browse.startsWith.type_text": "Filter results by typing the first few letters", "browse.startsWith.type_text": "Seleccione resultados tecleando las primeras letras", + // "browse.startsWith.input": "Filter", + "browse.startsWith.input": "Filtrar", + + // "browse.taxonomy.button": "Browse", + "browse.taxonomy.button": "Examinar", + // "browse.title": "Browsing {{ collection }} by {{ field }}{{ startsWith }} {{ value }}", "browse.title": "Examinando {{ collection }} por {{ field }} {{ value }}", // "browse.title.page": "Browsing {{ collection }} by {{ field }} {{ value }}", "browse.title.page": "Examinando {{ collection }} por {{ field }} {{ value }}", - // "search.browse.item-back": "Back to Results", "search.browse.item-back": "Volver a los resultados", - // "chips.remove": "Remove chip", "chips.remove": "Quitar chip", - // "claimed-approved-search-result-list-element.title": "Approved", "claimed-approved-search-result-list-element.title": "Aprobado", @@ -1286,7 +1314,6 @@ // "claimed-declined-task-search-result-list-element.title": "Declined, sent back to Review Manager's workflow", "claimed-declined-task-search-result-list-element.title": "Declinado, enviar de vuelta al Administrador de Revisión del flujo de trabajo", - // "collection.create.head": "Create a Collection", "collection.create.head": "Crear una colección", @@ -1320,8 +1347,6 @@ // "collection.delete.text": "Are you sure you want to delete collection \"{{ dso }}\"", "collection.delete.text": "¿Estás seguro de que quieres eliminar la colección \"{{ dso }}\"?", - - // "collection.edit.delete": "Delete this collection", "collection.edit.delete": "Eliminar esta colección", @@ -1331,8 +1356,6 @@ // "collection.edit.breadcrumbs": "Edit Collection", "collection.edit.breadcrumbs": "Editar colección", - - // "collection.edit.tabs.mapper.head": "Item Mapper", "collection.edit.tabs.mapper.head": "Mapeo de ítems", @@ -1393,7 +1416,6 @@ // "collection.edit.item-mapper.tabs.map": "Map new items", "collection.edit.item-mapper.tabs.map": "Asignar nuevos ítems", - // "collection.edit.logo.delete.title": "Delete logo", "collection.edit.logo.delete.title": "Eliminar logo", @@ -1421,21 +1443,23 @@ // "collection.edit.logo.upload": "Drop a Collection Logo to upload", "collection.edit.logo.upload": "Suelta un logotipo de colección para cargarlo", - - // "collection.edit.notifications.success": "Successfully edited the Collection", "collection.edit.notifications.success": "Editó con éxito la colección", // "collection.edit.return": "Back", "collection.edit.return": "Atrás", + // "collection.edit.tabs.access-control.head": "Access Control", + "collection.edit.tabs.access-control.head": "Control de acceso", + // "collection.edit.tabs.access-control.title": "Collection Edit - Access Control", + "collection.edit.tabs.access-control.title": "Edición de colección: Control de acceso", // "collection.edit.tabs.curate.head": "Curate", "collection.edit.tabs.curate.head": "Curar", // "collection.edit.tabs.curate.title": "Collection Edit - Curate", - "collection.edit.tabs.curate.title": "Edición de colección - Curar", + "collection.edit.tabs.curate.title": "Edición de colección: Curar", // "collection.edit.tabs.authorizations.head": "Authorizations", "collection.edit.tabs.authorizations.head": "Autorizaciones", @@ -1518,8 +1542,6 @@ // "collection.edit.tabs.source.title": "Collection Edit - Content Source", "collection.edit.tabs.source.title": "Edición de colección: fuente de contenido", - - // "collection.edit.template.add-button": "Add", "collection.edit.template.add-button": "Agregar", @@ -1556,8 +1578,6 @@ // "collection.edit.template.title": "Edit Template Item", "collection.edit.template.title": "Editar plantilla de ítem", - - // "collection.form.abstract": "Short Description", "collection.form.abstract": "Breve descripción", @@ -1585,13 +1605,9 @@ // "collection.form.entityType": "Entity Type", "collection.form.entityType": "Tipo de entidad", - - // "collection.listelement.badge": "Collection", "collection.listelement.badge": "Colección", - - // "collection.page.browse.recent.head": "Recent Submissions", "collection.page.browse.recent.head": "Envíos recientes", @@ -1610,8 +1626,6 @@ // "collection.page.news": "News", "collection.page.news": "Noticias", - - // "collection.select.confirm": "Confirm selected", "collection.select.confirm": "Confirmar seleccionado", @@ -1621,63 +1635,81 @@ // "collection.select.table.title": "Title", "collection.select.table.title": "Título", - // "collection.source.controls.head": "Harvest Controls", "collection.source.controls.head": "Controles de recolección", + // "collection.source.controls.test.submit.error": "Something went wrong with initiating the testing of the settings", "collection.source.controls.test.submit.error": "Hubo fallos al realizar las pruebas de comprobación de los ajustes", + // "collection.source.controls.test.failed": "The script to test the settings has failed", "collection.source.controls.test.failed": "La prueba de los ajustes ha fallado", + // "collection.source.controls.test.completed": "The script to test the settings has successfully finished", "collection.source.controls.test.completed": "El script de prueba de los ajustes ha terminado correctamente", + // "collection.source.controls.test.submit": "Test configuration", "collection.source.controls.test.submit": "Probar la configuración", + // "collection.source.controls.test.running": "Testing configuration...", "collection.source.controls.test.running": "Probando la configuración...", + // "collection.source.controls.import.submit.success": "The import has been successfully initiated", "collection.source.controls.import.submit.success": "La importación ha comenzado correctamente", + // "collection.source.controls.import.submit.error": "Something went wrong with initiating the import", "collection.source.controls.import.submit.error": "Hubo algún fallo al iniciar la importación", + // "collection.source.controls.import.submit": "Import now", "collection.source.controls.import.submit": "Importar ahora", + // "collection.source.controls.import.running": "Importing...", "collection.source.controls.import.running": "Importando...", + // "collection.source.controls.import.failed": "An error occurred during the import", "collection.source.controls.import.failed": "Ha ocurrido un error durante la importación", + // "collection.source.controls.import.completed": "The import completed", "collection.source.controls.import.completed": "La importación finalizó", + // "collection.source.controls.reset.submit.success": "The reset and reimport has been successfully initiated", "collection.source.controls.reset.submit.success": "La restauración y reimportación ha comenzado correctamente", + // "collection.source.controls.reset.submit.error": "Something went wrong with initiating the reset and reimport", "collection.source.controls.reset.submit.error": "Ha ocurrido un error al iniciar la restauración y reimportación", + // "collection.source.controls.reset.failed": "An error occurred during the reset and reimport", "collection.source.controls.reset.failed": "Ha ocurrido un error en la restauración y reimportación", + // "collection.source.controls.reset.completed": "The reset and reimport completed", "collection.source.controls.reset.completed": "Restauración y reimportación finalizadas", + // "collection.source.controls.reset.submit": "Reset and reimport", "collection.source.controls.reset.submit": "Restauración y reimportación", + // "collection.source.controls.reset.running": "Resetting and reimporting...", "collection.source.controls.reset.running": "Restaurando y reimportando...", + // "collection.source.controls.harvest.status": "Harvest status:", "collection.source.controls.harvest.status": "Estado de la Recolección:", + // "collection.source.controls.harvest.start": "Harvest start time:", "collection.source.controls.harvest.start": "Comienzo de la recolección:", + // "collection.source.controls.harvest.last": "Last time harvested:", "collection.source.controls.harvest.last": "Fecha de la última recolección:", + // "collection.source.controls.harvest.message": "Harvest info:", "collection.source.controls.harvest.message": "Información de recolección:", + // "collection.source.controls.harvest.no-information": "N/A", "collection.source.controls.harvest.no-information": "N/A", - // "collection.source.update.notifications.error.content": "The provided settings have been tested and didn't work.", "collection.source.update.notifications.error.content": "La configuración proporcionada se ha probado y no funcionó.", // "collection.source.update.notifications.error.title": "Server Error", "collection.source.update.notifications.error.title": "Error del Servidor", - - // "communityList.breadcrumbs": "Community List", "communityList.breadcrumbs": "Lista de comunidades", @@ -1690,8 +1722,6 @@ // "communityList.showMore": "Show More", "communityList.showMore": "Mostrar más", - - // "community.create.head": "Create a Community", "community.create.head": "Crear una comunidad", @@ -1734,7 +1764,6 @@ // "community.edit.breadcrumbs": "Edit Community", "community.edit.breadcrumbs": "Editar comunidad", - // "community.edit.logo.delete.title": "Delete logo", "community.edit.logo.delete.title": "Eliminar logo", @@ -1762,8 +1791,6 @@ // "community.edit.logo.upload": "Drop a Community Logo to upload", "community.edit.logo.upload": "Suelta un logotipo de la comunidad para cargar", - - // "community.edit.notifications.success": "Successfully edited the Community", "community.edit.notifications.success": "Editó con éxito la comunidad", @@ -1776,14 +1803,18 @@ // "community.edit.return": "Back", "community.edit.return": "Atrás", - - // "community.edit.tabs.curate.head": "Curate", "community.edit.tabs.curate.head": "Curar", // "community.edit.tabs.curate.title": "Community Edit - Curate", "community.edit.tabs.curate.title": "Edición de la comunidad - Curar", + // "community.edit.tabs.access-control.head": "Access Control", + "community.edit.tabs.access-control.head": "Control de acceso", + + // "community.edit.tabs.access-control.title": "Community Edit - Access Control", + "community.edit.tabs.access-control.title": "Edición de la comunidad: Control de acceso", + // "community.edit.tabs.metadata.head": "Edit Metadata", "community.edit.tabs.metadata.head": "Editar metadatos", @@ -1802,13 +1833,9 @@ // "community.edit.tabs.authorizations.title": "Community Edit - Authorizations", "community.edit.tabs.authorizations.title": "Edición de la comunidad: autorizaciones", - - // "community.listelement.badge": "Community", "community.listelement.badge": "Comunidad", - - // "comcol-role.edit.no-group": "None", "comcol-role.edit.no-group": "Ninguno", @@ -1827,28 +1854,24 @@ // "comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group", "comcol-role.edit.delete.error.title": "Error al borrar el grupo del rol '{{ role }}'", - // "comcol-role.edit.community-admin.name": "Administrators", "comcol-role.edit.community-admin.name": "Administradores", // "comcol-role.edit.collection-admin.name": "Administrators", "comcol-role.edit.collection-admin.name": "Administradores", - // "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).", "comcol-role.edit.community-admin.description": "Los administradores de la comunidad pueden crear subcomunidades o colecciones y gestionar o asignar la gestión para esas subcomunidades o colecciones. Además, deciden quién puede enviar ítems a las subcolecciones, editar los metadatos del ítem (después del envío) y agregar (mapear) ítems existentes de otras colecciones (sujeto a autorización).", // "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": "Los administradores de la colección deciden quién puede enviar ítems a la colección, editar los metadatos del ítem (después del envío) y agregar (mapear) ítems existentes de otras colecciones a esta colección (sujeto a autorización para esa colección).", - // "comcol-role.edit.submitters.name": "Submitters", "comcol-role.edit.submitters.name": "Remitentes", // "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": "Los Usuarios y Grupos que tienen permiso para enviar nuevos ítems a esta colección.", - // "comcol-role.edit.item_read.name": "Default item read access", "comcol-role.edit.item_read.name": "Acceso de lectura predeterminado del ítem", @@ -1858,7 +1881,6 @@ // "comcol-role.edit.item_read.anonymous-group": "Default read for incoming items is currently set to Anonymous.", "comcol-role.edit.item_read.anonymous-group": "La lectura predeterminada para los ítems entrantes está configurada actualmente como Anónimo.", - // "comcol-role.edit.bitstream_read.name": "Default bitstream read access", "comcol-role.edit.bitstream_read.name": "Acceso de lectura predeterminado de archivos", @@ -1868,28 +1890,24 @@ // "comcol-role.edit.bitstream_read.anonymous-group": "Default read for incoming bitstreams is currently set to Anonymous.", "comcol-role.edit.bitstream_read.anonymous-group": "La lectura predeterminada para los archivos entrantes se establece actualmente en Anónimo.", - // "comcol-role.edit.editor.name": "Editors", "comcol-role.edit.editor.name": "Editores", // "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": "Los editores pueden editar los metadatos de los envíos entrantes y luego aceptarlos o rechazarlos.", - // "comcol-role.edit.finaleditor.name": "Final editors", "comcol-role.edit.finaleditor.name": "Editores finales", // "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": "Los editores finales pueden editar los metadatos de los envíos entrantes, pero no podrán rechazarlos.", - // "comcol-role.edit.reviewer.name": "Reviewers", "comcol-role.edit.reviewer.name": "Revisores", // "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": "Los revisores pueden aceptar o rechazar envíos entrantes. Sin embargo, no pueden editar los metadatos del envío.", - // "comcol-role.edit.scorereviewers.name": "Score Reviewers", "comcol-role.edit.scorereviewers.name": "Revisores de puntuación", @@ -1929,14 +1947,12 @@ // "community.all-lists.head": "Subcommunities and Collections", "community.all-lists.head": "Subcomunidades y colecciones", - // "community.sub-collection-list.head": "Collections of this Community", + // "community.sub-collection-list.head": "Collections in this Community", "community.sub-collection-list.head": "Colecciones de esta comunidad", - // "community.sub-community-list.head": "Communities of this Community", + // "community.sub-community-list.head": "Communities in this Community", "community.sub-community-list.head": "Comunidades de esta comunidad", - - // "cookies.consent.accept-all": "Accept all", "cookies.consent.accept-all": "Aceptar todo", @@ -2015,38 +2031,30 @@ // "cookies.consent.app.description.authentication": "Required for signing you in", "cookies.consent.app.description.authentication": "Requerido para iniciar sesión", - // "cookies.consent.app.title.preferences": "Preferences", "cookies.consent.app.title.preferences": "Preferencias", // "cookies.consent.app.description.preferences": "Required for saving your preferences", "cookies.consent.app.description.preferences": "Requerido para guardar sus preferencias", - - // "cookies.consent.app.title.acknowledgement": "Acknowledgement", "cookies.consent.app.title.acknowledgement": "Reconocimiento", // "cookies.consent.app.description.acknowledgement": "Required for saving your acknowledgements and consents", "cookies.consent.app.description.acknowledgement": "Requerido para guardar sus reconocimientos y consentimientos", - - // "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": "Nos permite rastrear datos estadísticos", - - // "cookies.consent.app.title.google-recaptcha": "Google reCaptcha", "cookies.consent.app.title.google-recaptcha": "Google reCaptcha", // "cookies.consent.app.description.google-recaptcha": "We use google reCAPTCHA service during registration and password recovery", "cookies.consent.app.description.google-recaptcha": "Utilizamos el servicio google reCAPTCHA durante el registro y la recuperación de contraseña", - // "cookies.consent.purpose.functional": "Functional", "cookies.consent.purpose.functional": "Funcional", @@ -2059,10 +2067,10 @@ // "cookies.consent.purpose.sharing": "Sharing", "cookies.consent.purpose.sharing": "Compartición", - // "curation-task.task.citationpage.label": "Generate Citation Page", + // "curation-task.task.citationpage.label": "Generate Citation Page", "curation-task.task.citationpage.label": "Generar página de cita", - // "curation-task.task.checklinks.label": "Check Links in Metadata", + // "curation-task.task.checklinks.label": "Check Links in Metadata", "curation-task.task.checklinks.label": "Comprobar enlaces en metadatos", // "curation-task.task.noop.label": "NOOP", @@ -2083,8 +2091,6 @@ // "curation-task.task.registerdoi.label": "Register DOI", "curation-task.task.registerdoi.label": "Registro DOI", - - // "curation.form.task-select.label": "Task:", "curation.form.task-select.label": "Tarea:", @@ -2112,10 +2118,8 @@ // "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": "Sugerencia: Introduzca [su-prefijo-handle]/0 para ejecutar una tarea en toda su instalación (no todas las tareas permiten esta opción)", - - // "deny-request-copy.email.message": "Dear {{ recipientName }},\nIn response to your request I regret to inform you that it's not possible to send you a copy of the file(s) you have requested, concerning the document: \"{{ itemUrl }}\" ({{ itemName }}), of which I am an author.\n\nBest regards,\n{{ authorName }} <{{ authorEmail }}>", - "deny-request-copy.email.message": "Estimado {{ recipientName }},\nEn respuesta a su solicitud, lamento informarle que no es posible enviarle una copia de los archivos que ha solicitado, en relación con el documento: \"{{ itemUrl }}\" ({{ itemName }}), del cual soy autor.\n\nSaludos cordiales,\n{{ authorName }} <{{ authorEmail }}>", + "deny-request-copy.email.message": "Estimado {{ recipientName }},\nEn respuesta a su solicitud, lamento informarle de que no es posible enviarle una copia de los archivos que ha solicitado, en relación con el documento: \"{{ itemUrl }}\" ({{ itemName }}), del cual soy autor.\n\nSaludos cordiales,\n{{ authorName }} <{{ authorEmail }}>", // "deny-request-copy.email.subject": "Request copy of document", "deny-request-copy.email.subject": "Solicitar una copia del documento", @@ -2127,17 +2131,16 @@ "deny-request-copy.header": "Denegar copia del documento", // "deny-request-copy.intro": "This message will be sent to the applicant of the request", - "deny-request-copy.intro": "Éste es el texto que será enviado al solicitante.", + "deny-request-copy.intro": "Éste es el texto que será enviado al solicitante", // "deny-request-copy.success": "Successfully denied item request", "deny-request-copy.success": "Solicitud de copia de documento denegada", - - // "dso.name.untitled": "Untitled", "dso.name.untitled": "Sin título", - + // "dso.name.unnamed": "Unnamed", + "dso.name.unnamed": "Sin nombre", // "dso-selector.create.collection.head": "New collection", "dso-selector.create.collection.head": "Nueva colección", @@ -2259,7 +2262,7 @@ // "supervision-group-selector.notification.create.failure.title": "Error", "supervision-group-selector.notification.create.failure.title": "Error", - // "supervision-group-selector.notification.create.already-existing" : "A supervision order already exists on this item for selected group", + // "supervision-group-selector.notification.create.already-existing": "A supervision order already exists on this item for selected group", "supervision-group-selector.notification.create.already-existing": "Ya existe una orden de supervisión para este ítem en el grupo selecionado", // "confirmation-modal.export-metadata.header": "Export metadata for {{ dsoName }}", @@ -2374,7 +2377,7 @@ "error.top-level-communities": "Error al recuperar las comunidades de primer nivel", // "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": "Debe conceda esta licencia de depósito para completar el envío. Si no puede conceder esta licencia en este momento, puede guardar su trabajo y regresar más tarde o bien eliminar el envío.", + "error.validation.license.notgranted": "Debe conceder esta licencia de depósito para completar el envío. Si no puede conceder esta licencia en este momento, puede guardar su trabajo y regresar más tarde o bien eliminar el envío.", // "error.validation.pattern": "This input is restricted by the current pattern: {{ pattern }}.", "error.validation.pattern": "Esta entrada está restringida por este patrón: {{ pattern }}.", @@ -2394,16 +2397,33 @@ // "error.validation.groupExists": "This group already exists", "error.validation.groupExists": "Este grupo ya existe", + // "error.validation.metadata.name.invalid-pattern": "This field cannot contain dots, commas or spaces. Please use the Element & Qualifier fields instead", + "error.validation.metadata.name.invalid-pattern": "Este campo no puede contener puntos, comas o espacios. Use preferiblemente los campos Elemento y Cualificador", + + // "error.validation.metadata.name.max-length": "This field may not contain more than 32 characters", + "error.validation.metadata.name.max-length": "Este campo no puede contener mas de 32 caracteres", + + // "error.validation.metadata.namespace.max-length": "This field may not contain more than 256 characters", + "error.validation.metadata.namespace.max-length": "Este campo no puede contener mas de 256 caracteres", + + // "error.validation.metadata.element.invalid-pattern": "This field cannot contain dots, commas or spaces. Please use the Qualifier field instead", + "error.validation.metadata.element.invalid-pattern": "Este campo no puede contener puntos, comas o espacios. Use preferiblemente el campo Cualificador", + + // "error.validation.metadata.element.max-length": "This field may not contain more than 64 characters", + "error.validation.metadata.element.max-length": "Este campo no puede contener mas de 64 caracteres", + + // "error.validation.metadata.qualifier.invalid-pattern": "This field cannot contain dots, commas or spaces", + "error.validation.metadata.qualifier.invalid-pattern": "This field cannot contain dots, commas or spaces", + + // "error.validation.metadata.qualifier.max-length": "This field may not contain more than 64 characters", + "error.validation.metadata.qualifier.max-length": "Este campo no puede contener mas de 64 caracteres", // "feed.description": "Syndication feed", "feed.description": "Hilo de sindicación", - // "file-section.error.header": "Error obtaining files for this item", "file-section.error.header": "Error al obtener archivos para este ítem", - - // "footer.copyright": "copyright © 2002-{{ year }}", "footer.copyright": "copyright © 2002-{{ year }}", @@ -2419,14 +2439,12 @@ // "footer.link.privacy-policy": "Privacy policy", "footer.link.privacy-policy": "Política de privacidad", - // "footer.link.end-user-agreement":"End User Agreement", + // "footer.link.end-user-agreement": "End User Agreement", "footer.link.end-user-agreement": "Acuerdo de usuario final", - // "footer.link.feedback":"Send Feedback", + // "footer.link.feedback": "Send Feedback", "footer.link.feedback": "Enviar Sugerencias", - - // "forgot-email.form.header": "Forgot Password", "forgot-email.form.header": "Olvido de contraseña", @@ -2460,8 +2478,6 @@ // "forgot-email.form.error.content": "An error occured when attempting to reset the password for the account associated with the following email address: {{ email }}", "forgot-email.form.error.content": "Ha ocurrido una error intentando restablecer la contraseña para la cuenta asociada al correo electrónico: {{ email }}", - - // "forgot-password.title": "Forgot Password", "forgot-password.title": "Olvido de contraseña", @@ -2504,7 +2520,6 @@ // "forgot-password.form.submit": "Submit password", "forgot-password.form.submit": "Enviar contraseña", - // "form.add": "Add more", "form.add": "Añadir más", @@ -2565,6 +2580,24 @@ // "form.no-value": "No value entered", "form.no-value": "No se introdujo ningún valor", + // "form.other-information.email": "Email", + "form.other-information.email": "Correo electrónico", + + // "form.other-information.first-name": "First Name", + "form.other-information.first-name": "Nombre", + + // "form.other-information.insolr": "In Solr Index", + "form.other-information.insolr": "en el índice Solr", + + // "form.other-information.institution": "Institution", + "form.other-information.institution": "Institución", + + // "form.other-information.last-name": "Last Name", + "form.other-information.last-name": "Apellido", + + // "form.other-information.orcid": "ORCID", + "form.other-information.orcid": "ORCID", + // "form.remove": "Remove", "form.remove": "Eliminar", @@ -2589,16 +2622,14 @@ // "form.repeatable.sort.tip": "Drop the item in the new position", "form.repeatable.sort.tip": "Suelte el ítem en la nueva posición", - - // "grant-deny-request-copy.deny": "Don't send copy", "grant-deny-request-copy.deny": "No envíe copia", // "grant-deny-request-copy.email.back": "Back", "grant-deny-request-copy.email.back": "Atrás", - // "grant-deny-request-copy.email.message": "Message", - "grant-deny-request-copy.email.message": "Mensaje", + // "grant-deny-request-copy.email.message": "Optional additional message", + "grant-deny-request-copy.email.message": "Mensaje adicional (opcional)", // "grant-deny-request-copy.email.message.empty": "Please enter a message", "grant-deny-request-copy.email.message.empty": "Por favor, introduzca un mensaje", @@ -2636,11 +2667,6 @@ // "grant-deny-request-copy.processed": "This request has already been processed. You can use the button below to get back to the home page.", "grant-deny-request-copy.processed": "Esta solicitud ya fue procesada. Puede usar los botones inferiores para regresas a la página de inicio", - - - // "grant-request-copy.email.message": "Dear {{ recipientName }},\nIn response to your request I have the pleasure to send you in attachment a copy of the file(s) concerning the document: \"{{ itemUrl }}\" ({{ itemName }}), of which I am an author.\n\nBest regards,\n{{ authorName }} <{{ authorEmail }}>", - "grant-request-copy.email.message": "Estimado {{ recipientName }},\nRespondiendo a su solicitud, le envío anexada una copia del fichero correspondiente al documento: \"{{ itemUrl }}\" ({{ itemName }}), del que soy autor.\n\nUn cordial saludo,\n{{ authorName }} <{{ authorEmail }}>", - // "grant-request-copy.email.subject": "Request copy of document", "grant-request-copy.email.subject": "Solicitar copia de documento", @@ -2650,24 +2676,23 @@ // "grant-request-copy.header": "Grant document copy request", "grant-request-copy.header": "Conceder solicitud de copia de documento", - // "grant-request-copy.intro": "This message will be sent to the applicant of the request. The requested document(s) will be attached.", - "grant-request-copy.intro": "Este mensaje se enviará al solicitante de la copia. Se le anexará una copia del documento.", + // "grant-request-copy.intro": "A message will be sent to the applicant of the request. The requested document(s) will be attached.", + "grant-request-copy.intro": "Este mensaje se enviará al solicitante de la copia. Se le anexará una copia del documento.", // "grant-request-copy.success": "Successfully granted item request", "grant-request-copy.success": "Solicitud de ítem concedida exitosamente", - // "health.breadcrumbs": "Health", "health.breadcrumbs": "Chequeos", - // "health-page.heading" : "Health", - "health-page.heading": "Chequeos", + // "health-page.heading": "Health", + "health-page.heading": "Chequeos", - // "health-page.info-tab" : "Info", - "health-page.info-tab": "Información", + // "health-page.info-tab": "Info", + "health-page.info-tab": "Información", - // "health-page.status-tab" : "Status", - "health-page.status-tab": "Estado", + // "health-page.status-tab": "Status", + "health-page.status-tab": "Estado", // "health-page.error.msg": "The health check service is temporarily unavailable", "health-page.error.msg": "El servicio de comprobación no se encuentra temporalmente disponible", @@ -2717,7 +2742,6 @@ // "health-page.section.no-issues": "No issues detected", "health-page.section.no-issues": "No se detectaron problemas", - // "home.description": "", "home.description": "", @@ -2736,8 +2760,6 @@ // "home.top-level-communities.help": "Select a community to browse its collections.", "home.top-level-communities.help": "Seleccione una comunidad para explorar sus colecciones.", - - // "info.end-user-agreement.accept": "I have read and I agree to the End User Agreement", "info.end-user-agreement.accept": "He leído y acepto el Acuerdo de usuario final.", @@ -2762,6 +2784,9 @@ // "info.end-user-agreement.title": "End User Agreement", "info.end-user-agreement.title": "Acuerdo de usuario final", + // "info.end-user-agreement.hosting-country": "the United States", + "info.end-user-agreement.hosting-country": "los Estados Unidos de América", + // "info.privacy.breadcrumbs": "Privacy Statement", "info.privacy.breadcrumbs": "Declaracion de privacidad", @@ -2795,47 +2820,39 @@ // "info.feedback.email-label": "Your Email", "info.feedback.email-label": "Su correo electrónico", - // "info.feedback.create.success" : "Feedback Sent Successfully!", + // "info.feedback.create.success": "Feedback Sent Successfully!", "info.feedback.create.success": "Envío exitoso de sugerencia", - // "info.feedback.error.email.required" : "A valid email address is required", + // "info.feedback.error.email.required": "A valid email address is required", "info.feedback.error.email.required": "se requiere una dirección válida de correo electrónico", - // "info.feedback.error.message.required" : "A comment is required", + // "info.feedback.error.message.required": "A comment is required", "info.feedback.error.message.required": "Se requiere un comentario", - // "info.feedback.page-label" : "Page", + // "info.feedback.page-label": "Page", "info.feedback.page-label": "Página", - // "info.feedback.page_help" : "Tha page related to your feedback", + // "info.feedback.page_help": "Tha page related to your feedback", "info.feedback.page_help": "La página relacionada con su sugerencia", - - // "item.alerts.private": "This item is non-discoverable", "item.alerts.private": "Este ítem es privado", // "item.alerts.withdrawn": "This item has been withdrawn", "item.alerts.withdrawn": "Este ítem ha sido retirado", - - // "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": "Con este editor puede ver y modificar las políticas de un ítem, además de modificar las políticas de los componentes individuales del ítem: paquetes y archivos. Brevemente, un ítem es un contenedor de paquetes y los paquetes son contenedores de archivos. Los contenedores suelen tener políticas AGREGAR/ELIMINAR/LEER/ESCRIBIR, mientras que los archivos solo tienen políticas LEER/ESCRIBIR.", // "item.edit.authorizations.title": "Edit item's Policies", "item.edit.authorizations.title": "Editar las políticas del ítem", - - // "item.badge.private": "Non-discoverable", "item.badge.private": "Privado", // "item.badge.withdrawn": "Withdrawn", "item.badge.withdrawn": "Retirado", - - // "item.bitstreams.upload.bundle": "Bundle", "item.bitstreams.upload.bundle": "Bloque", @@ -2869,8 +2886,6 @@ // "item.bitstreams.upload.title": "Upload bitstream", "item.bitstreams.upload.title": "Subir archivo", - - // "item.edit.bitstreams.bundle.edit.buttons.upload": "Upload", "item.edit.bitstreams.bundle.edit.buttons.upload": "Subir", @@ -2961,8 +2976,6 @@ // "item.edit.bitstreams.upload-button": "Upload", "item.edit.bitstreams.upload-button": "Subir", - - // "item.edit.delete.cancel": "Cancel", "item.edit.delete.cancel": "Cancelar", @@ -2990,7 +3003,6 @@ // "item.edit.tabs.disabled.tooltip": "You're not authorized to access this tab", "item.edit.tabs.disabled.tooltip": "No tienes autorización para acceder a esta pestaña", - // "item.edit.tabs.mapper.head": "Collection Mapper", "item.edit.tabs.mapper.head": "Mapeador de colecciones", @@ -3114,8 +3126,6 @@ // "item.edit.item-mapper.tabs.map": "Map new collections", "item.edit.item-mapper.tabs.map": "Mapear nuevas colecciones", - - // "item.edit.metadata.add-button": "Add", "item.edit.metadata.add-button": "Agregar", @@ -3200,8 +3210,6 @@ // "item.edit.metadata.save-button": "Save", "item.edit.metadata.save-button": "Guardar", - - // "item.edit.modify.overview.field": "Field", "item.edit.modify.overview.field": "Campo", @@ -3211,8 +3219,6 @@ // "item.edit.modify.overview.value": "Value", "item.edit.modify.overview.value": "Valor", - - // "item.edit.move.cancel": "Back", "item.edit.move.cancel": "Atrás", @@ -3252,8 +3258,6 @@ // "item.edit.move.title": "Move item", "item.edit.move.title": "Mover ítem", - - // "item.edit.private.cancel": "Cancel", "item.edit.private.cancel": "Cancelar", @@ -3272,8 +3276,6 @@ // "item.edit.private.success": "The item is now non-discoverable", "item.edit.private.success": "El ítem ahora es privado", - - // "item.edit.public.cancel": "Cancel", "item.edit.public.cancel": "Cancelar", @@ -3292,8 +3294,6 @@ // "item.edit.public.success": "The item is now discoverable", "item.edit.public.success": "El ítem ahora es público", - - // "item.edit.reinstate.cancel": "Cancel", "item.edit.reinstate.cancel": "Cancelar", @@ -3312,8 +3312,6 @@ // "item.edit.reinstate.success": "The item was reinstated successfully", "item.edit.reinstate.success": "El ítem se reintegró correctamente", - - // "item.edit.relationships.discard-button": "Discard", "item.edit.relationships.discard-button": "Descartar", @@ -3359,11 +3357,9 @@ // "item.edit.relationships.no-entity-type": "Add 'dspace.entity.type' metadata to enable relationships for this item", "item.edit.relationships.no-entity-type": "Agregue metadatos 'dspace.entity.type' para habilitar las relaciones para este ítem", - // "item.edit.return": "Back", "item.edit.return": "Atrás", - // "item.edit.tabs.bitstreams.head": "Bitstreams", "item.edit.tabs.bitstreams.head": "Archivos", @@ -3376,6 +3372,15 @@ // "item.edit.tabs.curate.title": "Item Edit - Curate", "item.edit.tabs.curate.title": "Edición de ítem: Curar", + // "item.edit.curate.title": "Curate Item: {{item}}", + "item.edit.curate.title": "Curar ítem: {{item}}", + + // "item.edit.tabs.access-control.head": "Access Control", + "item.edit.tabs.access-control.head": "Control de acceso", + + // "item.edit.tabs.access-control.title": "Item Edit - Access Control", + "item.edit.tabs.access-control.title": "Edición de ítem: Control de acceso", + // "item.edit.tabs.metadata.head": "Metadata", "item.edit.tabs.metadata.head": "Metadatos", @@ -3407,7 +3412,7 @@ "item.edit.tabs.status.buttons.mappedCollections.label": "Administrar colecciones mapeadas", // "item.edit.tabs.status.buttons.move.button": "Move this Item to a different Collection", - "item.edit.tabs.status.buttons.move.button": "Mover éste ítem a una colección diferente", + "item.edit.tabs.status.buttons.move.button": "Mover este ítem a una colección diferente", // "item.edit.tabs.status.buttons.move.label": "Move item to another collection", "item.edit.tabs.status.buttons.move.label": "Mover ítem a otra colección", @@ -3434,7 +3439,7 @@ "item.edit.tabs.status.buttons.unauthorized": "No estás autorizado para realizar esta acción.", // "item.edit.tabs.status.buttons.withdraw.button": "Withdraw this item", - "item.edit.tabs.status.buttons.withdraw.button": "Retirar éste ítem", + "item.edit.tabs.status.buttons.withdraw.button": "Retirar este ítem", // "item.edit.tabs.status.buttons.withdraw.label": "Withdraw item from the repository", "item.edit.tabs.status.buttons.withdraw.label": "Retirar ítem del repositorio", @@ -3475,8 +3480,6 @@ // "item.edit.tabs.view.title": "Item Edit - View", "item.edit.tabs.view.title": "Edición de ítem - Ver", - - // "item.edit.withdraw.cancel": "Cancel", "item.edit.withdraw.cancel": "Cancelar", @@ -3498,7 +3501,6 @@ // "item.orcid.return": "Back", "item.orcid.return": "Atrás", - // "item.listelement.badge": "Item", "item.listelement.badge": "Ítem", @@ -3556,8 +3558,6 @@ // "workflow-item.search.result.list.element.supervised.remove-tooltip": "Remove supervision group", "workflow-item.search.result.list.element.supervised.remove-tooltip": "Borrar grupo de supervisión", - - // "item.page.abstract": "Abstract", "item.page.abstract": "Resumen", @@ -3648,10 +3648,10 @@ // "item.page.bitstreams.collapse": "Collapse", "item.page.bitstreams.collapse": "Contraer", - // "item.page.filesection.original.bundle" : "Original bundle", + // "item.page.filesection.original.bundle": "Original bundle", "item.page.filesection.original.bundle": "Bloque original", - // "item.page.filesection.license.bundle" : "License bundle", + // "item.page.filesection.license.bundle": "License bundle", "item.page.filesection.license.bundle": "Bloque de licencias", // "item.page.return": "Back", @@ -3696,27 +3696,30 @@ // "item.preview.dc.type": "Type:", "item.preview.dc.type": "Tipo:", - // "item.preview.oaire.citation.issue" : "Issue", + // "item.preview.oaire.citation.issue": "Issue", "item.preview.oaire.citation.issue": "Número", - // "item.preview.oaire.citation.volume" : "Volume", + // "item.preview.oaire.citation.volume": "Volume", "item.preview.oaire.citation.volume": "Volumen", - // "item.preview.dc.relation.issn" : "ISSN", + // "item.preview.dc.relation.issn": "ISSN", "item.preview.dc.relation.issn": "ISSN", - // "item.preview.dc.identifier.isbn" : "ISBN", + // "item.preview.dc.identifier.isbn": "ISBN", "item.preview.dc.identifier.isbn": "ISBN", // "item.preview.dc.identifier": "Identifier:", "item.preview.dc.identifier": "Identificador:", - // "item.preview.dc.relation.ispartof" : "Journal or Serie", + // "item.preview.dc.relation.ispartof": "Journal or Series", "item.preview.dc.relation.ispartof": "Revista o Serie", - // "item.preview.dc.identifier.doi" : "DOI", + // "item.preview.dc.identifier.doi": "DOI", "item.preview.dc.identifier.doi": "DOI", + // "item.preview.dc.publisher": "Publisher:", + "item.preview.dc.publisher": "Editor:", + // "item.preview.person.familyName": "Surname:", "item.preview.person.familyName": "Apellido:", @@ -3744,8 +3747,6 @@ // "item.preview.oaire.fundingStream": "Funding Stream:", "item.preview.oaire.fundingStream": "Línea de financiación:", - - // "item.select.confirm": "Confirm selected", "item.select.confirm": "Confirmar seleccionado", @@ -3761,7 +3762,6 @@ // "item.select.table.title": "Title", "item.select.table.title": "Título", - // "item.version.history.empty": "There are no other versions for this item yet.", "item.version.history.empty": "Aún no hay otras versiones para este ítem.", @@ -3822,11 +3822,9 @@ // "item.version.history.table.action.hasDraft": "A new version cannot be created because there is an inprogress submission in the version history", "item.version.history.table.action.hasDraft": "No es posible crear una nueva versión puesto que existe en el historial de versiones un envío pendiente", - // "item.version.notice": "This is not the latest version of this item. The latest version can be found here.", "item.version.notice": "Esta no es la última versión de este ítem. La última versión se puede encontrar aquí.", - // "item.version.create.modal.header": "New version", "item.version.create.modal.header": "Nueva versión", @@ -3860,21 +3858,20 @@ // "item.version.create.modal.submitted.text": "The new version is being created. This may take some time if the item has a lot of relationships.", "item.version.create.modal.submitted.text": "Se está creando la nueva versión. Si el ítem tiene muchas relaciones, este proceso podría tardar.", - // "item.version.create.notification.success" : "New version has been created with version number {{version}}", + // "item.version.create.notification.success": "New version has been created with version number {{version}}", "item.version.create.notification.success": "Se ha creado una nueva versión con número {{version}}", - // "item.version.create.notification.failure" : "New version has not been created", + // "item.version.create.notification.failure": "New version has not been created", "item.version.create.notification.failure": "No se ha creado una nueva versión", - // "item.version.create.notification.inProgress" : "A new version cannot be created because there is an inprogress submission in the version history", + // "item.version.create.notification.inProgress": "A new version cannot be created because there is an inprogress submission in the version history", "item.version.create.notification.inProgress": "No es posible crear una nueva versión puesto que existe en el historial de versiones un envío pendiente", - // "item.version.delete.modal.header": "Delete version", "item.version.delete.modal.header": "Borrar versión", // "item.version.delete.modal.text": "Do you want to delete version {{version}}?", - "item.version.delete.modal.text": "Quiere borrar la versión {{version}}?", + "item.version.delete.modal.text": "¿Quiere borrar la versión {{version}}?", // "item.version.delete.modal.button.confirm": "Delete", "item.version.delete.modal.button.confirm": "Borrar", @@ -3888,21 +3885,18 @@ // "item.version.delete.modal.button.cancel.tooltip": "Do not delete this version", "item.version.delete.modal.button.cancel.tooltip": "No borrar esta versión", - // "item.version.delete.notification.success" : "Version number {{version}} has been deleted", + // "item.version.delete.notification.success": "Version number {{version}} has been deleted", "item.version.delete.notification.success": "Se ha borrado la versión número {{version}}", - // "item.version.delete.notification.failure" : "Version number {{version}} has not been deleted", + // "item.version.delete.notification.failure": "Version number {{version}} has not been deleted", "item.version.delete.notification.failure": "No se ha borrado la versión número {{version}}", + // "item.version.edit.notification.success": "The summary of version number {{version}} has been changed", + "item.version.edit.notification.success": "Se ha cambiado el resumen de la versión número {{version}}", - // "item.version.edit.notification.success" : "The summary of version number {{version}} has been changed", - "item.version.edit.notification.success": "Ha cambiado el resumen de la versión número {{version}}", - - // "item.version.edit.notification.failure" : "The summary of version number {{version}} has not been changed", + // "item.version.edit.notification.failure": "The summary of version number {{version}} has not been changed", "item.version.edit.notification.failure": "No ha cambiado el resumen de la versión número {{version}}", - - // "itemtemplate.edit.metadata.add-button": "Add", "itemtemplate.edit.metadata.add-button": "Agregar", @@ -3984,8 +3978,6 @@ // "itemtemplate.edit.metadata.save-button": "Save", "itemtemplate.edit.metadata.save-button": "Guardar", - - // "journal.listelement.badge": "Journal", "journal.listelement.badge": "Revista", @@ -4016,8 +4008,6 @@ // "journal.search.title": "Journal Search", "journal.search.title": "Búsqueda de revistas", - - // "journalissue.listelement.badge": "Journal Issue", "journalissue.listelement.badge": "Número de la revista", @@ -4045,8 +4035,6 @@ // "journalissue.page.titleprefix": "Journal Issue: ", "journalissue.page.titleprefix": "Número de la revista: ", - - // "journalvolume.listelement.badge": "Journal Volume", "journalvolume.listelement.badge": "Volumen de la revista", @@ -4065,7 +4053,6 @@ // "journalvolume.page.volume": "Volume", "journalvolume.page.volume": "Volumen", - // "iiifsearchable.listelement.badge": "Document Media", "iiifsearchable.listelement.badge": "Soporte (media) del documento", @@ -4099,7 +4086,6 @@ // "iiif.page.description": "Description: ", "iiif.page.description": "Descripción: ", - // "loading.bitstream": "Loading bitstream...", "loading.bitstream": "Cargando archivo...", @@ -4154,8 +4140,6 @@ // "loading.top-level-communities": "Loading top-level communities...", "loading.top-level-communities": "Cargando comunidades de primer nivel...", - - // "login.form.email": "Email address", "login.form.email": "Correo electrónico", @@ -4192,8 +4176,6 @@ // "login.breadcrumbs": "Login", "login.breadcrumbs": "Acceso", - - // "logout.form.header": "Log out from DSpace", "logout.form.header": "Cerrar sesión en DSpace", @@ -4203,8 +4185,6 @@ // "logout.title": "Logout", "logout.title": "Cerrar sesión", - - // "menu.header.admin": "Management", "menu.header.admin": "Gestión", @@ -4214,27 +4194,24 @@ // "menu.header.admin.description": "Management menu", "menu.header.admin.description": "Menú de gestión", - - // "menu.section.access_control": "Access Control", "menu.section.access_control": "Control de acceso", // "menu.section.access_control_authorizations": "Authorizations", "menu.section.access_control_authorizations": "Autorizaciones", + // "menu.section.access_control_bulk": "Bulk Access Management", + "menu.section.access_control_bulk": "Gestión de Acceso Masivo", + // "menu.section.access_control_groups": "Groups", "menu.section.access_control_groups": "Grupos", // "menu.section.access_control_people": "People", "menu.section.access_control_people": "Usuarios", - - // "menu.section.admin_search": "Admin Search", "menu.section.admin_search": "Búsqueda de administrador", - - // "menu.section.browse_community": "This Community", "menu.section.browse_community": "Esta comunidad", @@ -4259,22 +4236,21 @@ // "menu.section.browse_global_by_subject": "By Subject", "menu.section.browse_global_by_subject": "Por tema", + // "menu.section.browse_global_by_srsc": "By Subject Category", + "menu.section.browse_global_by_srsc": "Por categoría", + // "menu.section.browse_global_by_title": "By Title", "menu.section.browse_global_by_title": "Por titulo", // "menu.section.browse_global_communities_and_collections": "Communities & Collections", "menu.section.browse_global_communities_and_collections": "Comunidades", - - // "menu.section.control_panel": "Control Panel", "menu.section.control_panel": "Panel de control", // "menu.section.curation_task": "Curation Task", "menu.section.curation_task": "Tareas de curación", - - // "menu.section.edit": "Edit", "menu.section.edit": "Editar", @@ -4287,8 +4263,6 @@ // "menu.section.edit_item": "Item", "menu.section.edit_item": "Ítem", - - // "menu.section.export": "Export", "menu.section.export": "Exportar", @@ -4307,7 +4281,6 @@ // "menu.section.export_batch": "Batch Export (ZIP)", "menu.section.export_batch": "Exportación por lotes (ZIP)", - // "menu.section.icon.access_control": "Access Control menu section", "menu.section.icon.access_control": "Sección del menú de control de acceso", @@ -4356,8 +4329,6 @@ // "menu.section.icon.unpin": "Unpin sidebar", "menu.section.icon.unpin": "Desanclar la barra lateral", - - // "menu.section.import": "Import", "menu.section.import": "Importar", @@ -4367,8 +4338,6 @@ // "menu.section.import_metadata": "Metadata", "menu.section.import_metadata": "Metadatos", - - // "menu.section.new": "New", "menu.section.new": "Nuevo", @@ -4387,24 +4356,18 @@ // "menu.section.new_process": "Process", "menu.section.new_process": "Proceso", - - // "menu.section.pin": "Pin sidebar", "menu.section.pin": "Anclar barra lateral", // "menu.section.unpin": "Unpin sidebar", "menu.section.unpin": "Desanclar la barra lateral", - - // "menu.section.processes": "Processes", "menu.section.processes": "Procesos", // "menu.section.health": "Health", "menu.section.health": "Chequeo", - - // "menu.section.registries": "Registries", "menu.section.registries": "Registros", @@ -4414,16 +4377,12 @@ // "menu.section.registries_metadata": "Metadata", "menu.section.registries_metadata": "Metadatos", - - // "menu.section.statistics": "Statistics", "menu.section.statistics": "Estadísticas", // "menu.section.statistics_task": "Statistics Task", "menu.section.statistics_task": "Tarea de estadísticas", - - // "menu.section.toggle.access_control": "Toggle Access Control section", "menu.section.toggle.access_control": "Alternar sección de control de acceso", @@ -4454,19 +4413,18 @@ // "menu.section.toggle.statistics_task": "Toggle Statistics Task section", "menu.section.toggle.statistics_task": "Alternar sección de Tarea de estadísticas", - // "menu.section.workflow": "Administer Workflow", "menu.section.workflow": "Administrar flujo de trabajo", - // "metadata-export-search.tooltip": "Export search results as CSV", "metadata-export-search.tooltip": "Exportar los resultados de búsqueda a CSV", + // "metadata-export-search.submit.success": "The export was started successfully", "metadata-export-search.submit.success": "La exportación ha comenzado satisfactoriamente", + // "metadata-export-search.submit.error": "Starting the export has failed", "metadata-export-search.submit.error": "Ha fallado el comienzo de la exportación", - // "mydspace.breadcrumbs": "MyDSpace", "mydspace.breadcrumbs": "Mi DSpace", @@ -4593,8 +4551,6 @@ // "mydspace.view-btn": "View", "mydspace.view-btn": "Ver", - - // "nav.browse.header": "All of DSpace", "nav.browse.header": "Todo DSpace", @@ -4628,25 +4584,27 @@ // "nav.search": "Search", "nav.search": "Buscar", + // "nav.search.button": "Submit search", + "nav.search.button": "Buscar", + // "nav.statistics.header": "Statistics", "nav.statistics.header": "Estadísticas", // "nav.stop-impersonating": "Stop impersonating EPerson", - "nav.stop-impersonating": "Dejar de hacerse pasar por usuario", + "nav.stop-impersonating": "Dejar de impersonar al usuario", - // "nav.subscriptions" : "Subscriptions", + // "nav.subscriptions": "Subscriptions", "nav.subscriptions": "Suscripciones", - // "nav.toggle" : "Toggle navigation", + // "nav.toggle": "Toggle navigation", "nav.toggle": "Alternar navegación", - // "nav.user.description" : "User profile bar", + // "nav.user.description": "User profile bar", "nav.user.description": "Barra de perfil de usuario", // "none.listelement.badge": "Item", "none.listelement.badge": "Ítem", - // "orgunit.listelement.badge": "Organizational Unit", "orgunit.listelement.badge": "Unidad organizativa", @@ -4674,8 +4632,6 @@ // "orgunit.page.titleprefix": "Organizational Unit: ", "orgunit.page.titleprefix": "Unidad organizativa: ", - - // "pagination.options.description": "Pagination options", "pagination.options.description": "Opciones de paginación", @@ -4691,8 +4647,6 @@ // "pagination.sort-direction": "Sort Options", "pagination.sort-direction": "Opciones de ordenación", - - // "person.listelement.badge": "Person", "person.listelement.badge": "Persona", @@ -4741,8 +4695,6 @@ // "person.search.title": "Person Search", "person.search.title": "Búsqueda de personas", - - // "process.new.select-parameters": "Parameters", "process.new.select-parameters": "Parámetros", @@ -4791,6 +4743,9 @@ // "process.new.notification.error.content": "An error occurred while creating this process", "process.new.notification.error.content": "Se produjo un error al crear este proceso.", + // "process.new.notification.error.max-upload.content": "The file exceeds the maximum upload size", + "process.new.notification.error.max-upload.content": "El fichero sobrepasa el límte máximo de subida", + // "process.new.header": "Create a new process", "process.new.header": "Crea un nuevo proceso", @@ -4800,18 +4755,16 @@ // "process.new.breadcrumbs": "Create a new process", "process.new.breadcrumbs": "Crea un nuevo proceso", - - - // "process.detail.arguments" : "Arguments", + // "process.detail.arguments": "Arguments", "process.detail.arguments": "Argumentos", - // "process.detail.arguments.empty" : "This process doesn't contain any arguments", + // "process.detail.arguments.empty": "This process doesn't contain any arguments", "process.detail.arguments.empty": "Este proceso no contiene ningún argumento", - // "process.detail.back" : "Back", + // "process.detail.back": "Back", "process.detail.back": "Atrás", - // "process.detail.output" : "Process Output", + // "process.detail.output": "Process Output", "process.detail.output": "Salida del proceso", // "process.detail.logs.button": "Retrieve process output", @@ -4823,28 +4776,29 @@ // "process.detail.logs.none": "This process has no output", "process.detail.logs.none": "Este proceso no tiene salida", - // "process.detail.output-files" : "Output Files", + // "process.detail.output-files": "Output Files", "process.detail.output-files": "Archivos de salida", - // "process.detail.output-files.empty" : "This process doesn't contain any output files", + // "process.detail.output-files.empty": "This process doesn't contain any output files", "process.detail.output-files.empty": "Este proceso no contiene ningún archivo de salida", - // "process.detail.script" : "Script", + // "process.detail.script": "Script", "process.detail.script": "Secuencia de comandos", - // "process.detail.title" : "Process: {{ id }} - {{ name }}", + // "process.detail.title": "Process: {{ id }} - {{ name }}", + "process.detail.title": "Proceso: {{ id }} - {{ name }}", - // "process.detail.start-time" : "Start time", + // "process.detail.start-time": "Start time", "process.detail.start-time": "Hora de inicio", - // "process.detail.end-time" : "Finish time", + // "process.detail.end-time": "Finish time", "process.detail.end-time": "Hora de finalización", - // "process.detail.status" : "Status", + // "process.detail.status": "Status", "process.detail.status": "Estado", - // "process.detail.create" : "Create similar process", + // "process.detail.create": "Create similar process", "process.detail.create": "Crear un proceso similar", // "process.detail.actions": "Actions", @@ -4871,24 +4825,22 @@ // "process.detail.delete.error": "Something went wrong when deleting the process", "process.detail.delete.error": "Algo falló eliminando el proceso", - - - // "process.overview.table.finish" : "Finish time (UTC)", + // "process.overview.table.finish": "Finish time (UTC)", "process.overview.table.finish": "Hora de finalización (UTC)", - // "process.overview.table.id" : "Process ID", + // "process.overview.table.id": "Process ID", "process.overview.table.id": "ID de proceso", - // "process.overview.table.name" : "Name", + // "process.overview.table.name": "Name", "process.overview.table.name": "Nombre", - // "process.overview.table.start" : "Start time (UTC)", + // "process.overview.table.start": "Start time (UTC)", "process.overview.table.start": "Hora de inicio (UTC)", - // "process.overview.table.status" : "Status", + // "process.overview.table.status": "Status", "process.overview.table.status": "Estado", - // "process.overview.table.user" : "User", + // "process.overview.table.user": "User", "process.overview.table.user": "Usuario", // "process.overview.title": "Processes Overview", @@ -4927,8 +4879,6 @@ // "process.bulk.delete.success": "{{count}} process(es) have been succesfully deleted", "process.bulk.delete.success": "{{count}} proceso(s) se han eliminado correctamente", - - // "profile.breadcrumbs": "Update Profile", "profile.breadcrumbs": "Actualización del perfil", @@ -5058,8 +5008,6 @@ // "project-relationships.search.results.head": "Project Search Results", "project-relationships.search.results.head": "Resultados de búsqueda de proyectos", - - // "publication.listelement.badge": "Publication", "publication.listelement.badge": "Publicación", @@ -5093,7 +5041,6 @@ // "publication.search.title": "Publication Search", "publication.search.title": "Búsqueda de publicaciones", - // "media-viewer.next": "Next", "media-viewer.next": "Siguiente", @@ -5103,7 +5050,6 @@ // "media-viewer.playlist": "Playlist", "media-viewer.playlist": "Lista de reproducción", - // "register-email.title": "New user registration", "register-email.title": "Registro de nuevo usuario", @@ -5167,7 +5113,6 @@ // "register-page.create-profile.submit.success.head": "Registration completed", "register-page.create-profile.submit.success.head": "Registro completado", - // "register-page.registration.header": "New user registration", "register-page.registration.header": "Registro de nuevo usuario", @@ -5209,6 +5154,7 @@ // "register-page.registration.google-recaptcha.must-accept-cookies": "In order to register you must accept the Registration and Password recovery (Google reCaptcha) cookies.", "register-page.registration.google-recaptcha.must-accept-cookies": "Para registrarse debe aceptar las cookies de Registro y recuperación de contraseña (Google reCaptcha).", + // "register-page.registration.error.maildomain": "This email address is not on the list of domains who can register. Allowed domains are {{ domains }}", "register-page.registration.error.maildomain": "Este correo electrónico no esta en la lista de dominios que pueden registrarse. Los dominios permitidos son {{ domains }}", @@ -5223,6 +5169,7 @@ // "register-page.registration.google-recaptcha.notification.message.expired": "Verification expired. Please verify again.", "register-page.registration.google-recaptcha.notification.message.expired": "Verificación caducada. Verifique de nuevo.", + // "register-page.registration.info.maildomain": "Accounts can be registered for mail addresses of the domains", "register-page.registration.info.maildomain": "Las cuentas pueden registrarse para las direcciones de correo de los dominios", @@ -5289,16 +5236,14 @@ // "relationships.isFundingAgencyOf.OrgUnit": "Funder", "relationships.isFundingAgencyOf.OrgUnit": "Financiador", - // "repository.image.logo": "Repository logo", "repository.image.logo": "Logotipo del repositorio", - // "repository.title.prefix": "DSpace Angular :: ", - "repository.title.prefix": "DSpace Angular :: ", - - // "repository.title.prefixDSpace": "DSpace Angular ::", - "repository.title.prefixDSpace": "DSpace Angular ::", + // "repository.title": "DSpace Repository", + "repository.title": "Repositorio DSpace", + // "repository.title.prefix": "DSpace Repository :: ", + "repository.title.prefix": "Repositorio DSpace :: ", // "resource-policies.add.button": "Add", "resource-policies.add.button": "Agregar", @@ -5471,8 +5416,6 @@ // "resource-policies.table.headers.title.for.collection": "Policies for Collection", "resource-policies.table.headers.title.for.collection": "Políticas para la colección", - - // "search.description": "", "search.description": "", @@ -5488,7 +5431,6 @@ // "search.search-form.placeholder": "Search the repository ...", "search.search-form.placeholder": "Buscar en el repositorio ...", - // "search.filters.applied.f.author": "Author", "search.filters.applied.f.author": "Autor", @@ -5537,8 +5479,6 @@ // "search.filters.applied.f.withdrawn": "Withdrawn", "search.filters.applied.f.withdrawn": "Retirado", - - // "search.filters.filter.author.head": "Author", "search.filters.filter.author.head": "Autor", @@ -5758,8 +5698,6 @@ // "search.filters.filter.supervisedBy.label": "Search Supervised By", "search.filters.filter.supervisedBy.label": "Búsqueda Supervisada Por", - - // "search.filters.entityType.JournalIssue": "Journal Issue", "search.filters.entityType.JournalIssue": "Número de la revista", @@ -5787,7 +5725,6 @@ // "search.filters.withdrawn.false": "No", "search.filters.withdrawn.false": "No", - // "search.filters.head": "Filters", "search.filters.head": "Filtros", @@ -5797,8 +5734,6 @@ // "search.filters.search.submit": "Submit", "search.filters.search.submit": "Enviar", - - // "search.form.search": "Search", "search.form.search": "Buscar", @@ -5808,8 +5743,6 @@ // "search.form.scope.all": "All of DSpace", "search.form.scope.all": "Todo DSpace", - - // "search.results.head": "Search Results", "search.results.head": "Resultados de la búsqueda", @@ -5834,7 +5767,6 @@ // "default-relationships.search.results.head": "Search Results", "default-relationships.search.results.head": "Resultados de la búsqueda", - // "search.sidebar.close": "Back to results", "search.sidebar.close": "Volver a resultados", @@ -5856,8 +5788,6 @@ // "search.sidebar.settings.title": "Settings", "search.sidebar.settings.title": "Ajustes", - - // "search.view-switch.show-detail": "Show detail", "search.view-switch.show-detail": "Mostrar detalle", @@ -5867,8 +5797,6 @@ // "search.view-switch.show-list": "Show as list", "search.view-switch.show-list": "Mostrar como lista", - - // "sorting.ASC": "Ascending", "sorting.ASC": "Ascendente", @@ -5905,7 +5833,6 @@ // "sorting.lastModified.DESC": "Last modified Descending", "sorting.lastModified.DESC": "Última modificación Descendente", - // "statistics.title": "Statistics", "statistics.title": "Estadísticas", @@ -5942,7 +5869,6 @@ // "statistics.table.no-name": "(object name could not be loaded)", "statistics.table.no-name": "(el nombre del objeto no pudo ser cargado)", - // "submission.edit.breadcrumbs": "Edit Submission", "submission.edit.breadcrumbs": "Editar envío", @@ -5952,7 +5878,7 @@ // "submission.general.cancel": "Cancel", "submission.general.cancel": "Cancelar", - // "submission.general.cannot_submit": "You have not the privilege to make a new submission.", + // "submission.general.cannot_submit": "You don't have permission to make a new submission.", "submission.general.cannot_submit": "No tiene los permisos para realizar un nuevo envío.", // "submission.general.deposit": "Deposit", @@ -5985,7 +5911,6 @@ // "submission.general.save-later": "Save for later", "submission.general.save-later": "Guardar para más adelante", - // "submission.import-external.page.title": "Import metadata from an external source", "submission.import-external.page.title": "Importar metadatos desde una fuente externa", @@ -6297,6 +6222,7 @@ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalOfPublication": "Local Journals ({{ count }})", "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalOfPublication": "Revistas locales ({{ count }})", + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Project": "Local Projects ({{ count }})", "submission.sections.describe.relationship-lookup.search-tab.tab-title.Project": "Proyectos locales ({{ count }})", @@ -6320,16 +6246,18 @@ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalIssueOfPublication": "Local Journal Issues ({{ count }})", "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalIssueOfPublication": "Números de revista locales ({{ 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": "Números de revista locales ({{ 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": "Volúmenes de revista locales ({{ 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": "Volúmenes de revista locales ({{ count }})", // "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Sherpa Journals ({{ count }})", - "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Revistas Sherpa ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Revistas 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": "Editores Sherpa ({{ count }})", @@ -6379,9 +6307,6 @@ // "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfProject": "Funder of the Project", "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfProject": "Financiador del Proyecto", - - - // "submission.sections.describe.relationship-lookup.selection-tab.search-form.placeholder": "Search...", "submission.sections.describe.relationship-lookup.selection-tab.search-form.placeholder": "Buscar...", @@ -6390,11 +6315,13 @@ // "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Journal Issues", "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Números de revista", + // "submission.sections.describe.relationship-lookup.title.JournalIssue": "Journal Issues", "submission.sections.describe.relationship-lookup.title.JournalIssue": "Números de revista", // "submission.sections.describe.relationship-lookup.title.isJournalVolumeOfPublication": "Journal Volumes", "submission.sections.describe.relationship-lookup.title.isJournalVolumeOfPublication": "Volúmenes de la revista", + // "submission.sections.describe.relationship-lookup.title.JournalVolume": "Journal Volumes", "submission.sections.describe.relationship-lookup.title.JournalVolume": "Volúmenes de la revista", @@ -6406,6 +6333,7 @@ // "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfPublication": "Funding Agency", "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfPublication": "Agencia financiadora", + // "submission.sections.describe.relationship-lookup.title.Project": "Projects", "submission.sections.describe.relationship-lookup.title.Project": "Proyectos", @@ -6453,6 +6381,7 @@ // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalVolumeOfPublication": "Selected Journal Volume", "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalVolumeOfPublication": "Volumen de revista seleccionada", + // "submission.sections.describe.relationship-lookup.selection-tab.title.Project": "Selected Projects", "submission.sections.describe.relationship-lookup.selection-tab.title.Project": "Proyectos seleccionados", @@ -6476,6 +6405,7 @@ // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalIssueOfPublication": "Selected Issue", "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalIssueOfPublication": "Número de revista seleccionados", + // "submission.sections.describe.relationship-lookup.selection-tab.title.JournalVolume": "Selected Journal Volume", "submission.sections.describe.relationship-lookup.selection-tab.title.JournalVolume": "Volúmenes de revista seleccionados", @@ -6484,6 +6414,7 @@ // "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Selected Funding", "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Financiamientos seleccionados", + // "submission.sections.describe.relationship-lookup.selection-tab.title.JournalIssue": "Selected Issue", "submission.sections.describe.relationship-lookup.selection-tab.title.JournalIssue": "Número seleccionado", @@ -6658,7 +6589,6 @@ // "submission.sections.submit.progressbar.sherpaPolicies": "Publisher open access policy information", "submission.sections.submit.progressbar.sherpaPolicies": "Información sobre políticas editoriales de acceso abierto", - // "submission.sections.sherpa-policy.title-empty": "No publisher policy information available. If your work has an associated ISSN, please enter it above to see any related publisher open access policies.", "submission.sections.sherpa-policy.title-empty": "No se encuentra disponible la información sobre política editorial. Si tiene un ISSN asociado, introdúzcalo arriba para ver información sobre políticas editoriales de acceso abierto.", @@ -6839,10 +6769,9 @@ // "submission.sections.license.required": "You must accept the license", "submission.sections.license.required": "Debe aceptar la licencia", - // "submission.sections.license.notgranted": "You must accept the license", + // "submission.sections.license.notgranted": "You must accept the license", "submission.sections.license.notgranted": "Debe aceptar la licencia", - // "submission.sections.sherpa.publication.information": "Publication information", "submission.sections.sherpa.publication.information": "Información de la Publicación", @@ -6868,7 +6797,7 @@ "submission.sections.sherpa.publisher.policy": "Política editorial", // "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": "La siguiente informacióm se encontró via Sherpa Romeo. En base a esas políticas, se proporcionan consejos sobre las necesidad de un embargo y de aquellos ficheros que puede utilizar. Si tiene dudas, por favor, contacte con el administrador del repositorio mediante el formulario de sugerencias.", + "submission.sections.sherpa.publisher.policy.description": "La siguiente informacióm se encontró vía Sherpa Romeo. En base a esas políticas, se proporcionan consejos sobre las necesidad de un embargo y de aquellos ficheros que puede utilizar. Si tiene dudas, por favor, contacte con el administrador del repositorio mediante el formulario de sugerencias.", // "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": "Los caminos hacia el Acceso Abierto que esta revista permite se relacionan, por versión de artículo, abajo. Pulse en un camino para una visión mas detallada", @@ -6921,16 +6850,12 @@ // "submission.sections.sherpa.error.message": "There was an error retrieving sherpa informations", "submission.sections.sherpa.error.message": "Hubo un error recuperando la información de Sherpa", - - // "submission.submit.breadcrumbs": "New submission", "submission.submit.breadcrumbs": "Nuevo envío", // "submission.submit.title": "New submission", "submission.submit.title": "Nuevo envío", - - // "submission.workflow.generic.delete": "Delete", "submission.workflow.generic.delete": "Eliminar", @@ -6949,21 +6874,18 @@ // "submission.workflow.generic.view-help": "Select this option to view the item's metadata.", "submission.workflow.generic.view-help": "Seleccione esta opción para ver los metadatos del ítem.", - // "submission.workflow.generic.submit_select_reviewer": "Select Reviewer", "submission.workflow.generic.submit_select_reviewer": "Seleccionar revisor", // "submission.workflow.generic.submit_select_reviewer-help": "", "submission.workflow.generic.submit_select_reviewer-help": "", - // "submission.workflow.generic.submit_score": "Rate", "submission.workflow.generic.submit_score": "Evaluar", // "submission.workflow.generic.submit_score-help": "", "submission.workflow.generic.submit_score-help": "", - // "submission.workflow.tasks.claimed.approve": "Approve", "submission.workflow.tasks.claimed.approve": "Aprobar", @@ -7006,8 +6928,6 @@ // "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": "Devuelva la tarea al pool para que otro usuario pueda realizarla.", - - // "submission.workflow.tasks.generic.error": "Error occurred during operation...", "submission.workflow.tasks.generic.error": "Ocurrió un error durante la operación...", @@ -7020,8 +6940,6 @@ // "submission.workflow.tasks.generic.success": "Operation successful", "submission.workflow.tasks.generic.success": "Operación exitosa", - - // "submission.workflow.tasks.pool.claim": "Claim", "submission.workflow.tasks.pool.claim": "Asumir tarea", @@ -7034,13 +6952,14 @@ // "submission.workflow.tasks.pool.show-detail": "Show detail", "submission.workflow.tasks.pool.show-detail": "Mostrar detalle", - // "submission.workspace.generic.view": "View", "submission.workspace.generic.view": "Ver", // "submission.workspace.generic.view-help": "Select this option to view the item's metadata.", "submission.workspace.generic.view-help": "Seleccione esta opción para ver los metadatos del ítem.", + // "submitter.empty": "N/A", + "submitter.empty": "N/A", // "subscriptions.title": "Subscriptions", "subscriptions.title": "Suscripciones", @@ -7147,7 +7066,6 @@ // "subscriptions.table.empty.message": "You do not have any subscriptions at this time. To subscribe to email updates for a Community or Collection, use the subscription button on the object's page.", "subscriptions.table.empty.message": "Usted no tiene suscripciones. Para subscribirse a las actualizaciones por correo electrónico de una Comunidad o Colección, utilice el botón de suscripción en la página del objeto.", - // "thumbnail.default.alt": "Thumbnail Image", "thumbnail.default.alt": "Miniatura", @@ -7172,13 +7090,9 @@ // "thumbnail.person.placeholder": "No Profile Picture Available", "thumbnail.person.placeholder": "No hay imagen de perfil disponible", - - // "title": "DSpace", "title": "DSpace", - - // "vocabulary-treeview.header": "Hierarchical tree view", "vocabulary-treeview.header": "Vista de árbol jerárquico", @@ -7230,8 +7144,6 @@ // "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": "Seleccione los ítems para los que desea guardar los metadatos virtuales como metadatos reales", - - // "supervisedWorkspace.search.results.head": "Supervised Items", "supervisedWorkspace.search.results.head": "Ítems supervisados", @@ -7247,8 +7159,6 @@ // "supervision.search.results.head": "Workflow and Workspace tasks", "supervision.search.results.head": "Tareas del flujo de trabajo y del espacio de trabajo", - - // "workflow-item.edit.breadcrumbs": "Edit workflowitem", "workflow-item.edit.breadcrumbs": "Editar ítem del flujo de trabajo", @@ -7279,7 +7189,6 @@ // "workflow-item.delete.button.confirm": "Delete", "workflow-item.delete.button.confirm": "Borrar", - // "workflow-item.send-back.notification.success.title": "Sent back to submitter", "workflow-item.send-back.notification.success.title": "Devolver al remitente", @@ -7313,11 +7222,33 @@ // "workspace-item.view.title": "Workspace View", "workspace-item.view.title": "Vista del flujo de trabajo", + // "workspace-item.delete.breadcrumbs": "Workspace Delete", + "workspace-item.delete.breadcrumbs": "Borrar espacio de trabajo", + + // "workspace-item.delete.header": "Delete workspace item", + "workspace-item.delete.header": "Borrar ítem del espacio de trabajo", + + // "workspace-item.delete.button.confirm": "Delete", + "workspace-item.delete.button.confirm": "Borrar", + + // "workspace-item.delete.button.cancel": "Cancel", + "workspace-item.delete.button.cancel": "Cancelar", + + // "workspace-item.delete.notification.success.title": "Deleted", + "workspace-item.delete.notification.success.title": "Borrado", + + // "workspace-item.delete.title": "This workspace item was successfully deleted", + "workspace-item.delete.title": "Este ítem del espacio de trabajo se eliminó correctamente", + + // "workspace-item.delete.notification.error.title": "Something went wrong", + "workspace-item.delete.notification.error.title": "Algo salió mal", + + // "workspace-item.delete.notification.error.content": "The workspace item could not be deleted", + "workspace-item.delete.notification.error.content": "Este ítem del espacio de trabajo no pudo borrarse", // "workflow-item.advanced.title": "Advanced workflow", "workflow-item.advanced.title": "Flujo de trabajo avanzado", - // "workflow-item.selectrevieweraction.notification.success.title": "Selected reviewer", "workflow-item.selectrevieweraction.notification.success.title": "Revisor seleccionado", @@ -7342,7 +7273,6 @@ // "workflow-item.selectrevieweraction.button.confirm": "Confirm", "workflow-item.selectrevieweraction.button.confirm": "Confirmar", - // "workflow-item.scorereviewaction.notification.success.title": "Rating review", "workflow-item.scorereviewaction.notification.success.title": "Revisión de evaluación", @@ -7379,7 +7309,7 @@ // "idle-modal.extend-session": "Extend session", "idle-modal.extend-session": "Prolongar la sesión", - // "researcher.profile.action.processing" : "Processing...", + // "researcher.profile.action.processing": "Processing...", "researcher.profile.action.processing": "Procesando...", // "researcher.profile.associated": "Researcher profile associated", @@ -7412,10 +7342,10 @@ // "researcher.profile.view": "View", "researcher.profile.view": "Ver", - // "researcher.profile.private.visibility" : "PRIVATE", + // "researcher.profile.private.visibility": "PRIVATE", "researcher.profile.private.visibility": "PRIVADO", - // "researcher.profile.public.visibility" : "PUBLIC", + // "researcher.profile.public.visibility": "PUBLIC", "researcher.profile.public.visibility": "PÚBLICO", // "researcher.profile.status": "Status:", @@ -7424,16 +7354,16 @@ // "researcherprofile.claim.not-authorized": "You are not authorized to claim this item. For more details contact the administrator(s).", "researcherprofile.claim.not-authorized": "No está autorizado pare reclamar este ítem. Contacte con el administrador para mas detalles.", - // "researcherprofile.error.claim.body" : "An error occurred while claiming the profile, please try again later", + // "researcherprofile.error.claim.body": "An error occurred while claiming the profile, please try again later", "researcherprofile.error.claim.body": "Hubo un error reclamando el perfil, por favor, inténtelo mas tarde", - // "researcherprofile.error.claim.title" : "Error", + // "researcherprofile.error.claim.title": "Error", "researcherprofile.error.claim.title": "Error", - // "researcherprofile.success.claim.body" : "Profile claimed with success", + // "researcherprofile.success.claim.body": "Profile claimed with success", "researcherprofile.success.claim.body": "Perfil reclamado con éxito", - // "researcherprofile.success.claim.title" : "Success", + // "researcherprofile.success.claim.title": "Success", "researcherprofile.success.claim.title": "Éxito", // "person.page.orcid.create": "Create an ORCID ID", @@ -7442,7 +7372,7 @@ // "person.page.orcid.granted-authorizations": "Granted authorizations", "person.page.orcid.granted-authorizations": "Autorizaciones concedidas", - // "person.page.orcid.grant-authorizations" : "Grant authorizations", + // "person.page.orcid.grant-authorizations": "Grant authorizations", "person.page.orcid.grant-authorizations": "Conceder autorizaciones", // "person.page.orcid.link": "Connect to ORCID ID", @@ -7458,7 +7388,7 @@ "person.page.orcid.orcid-not-linked-message": "El ORCID iD de este perfil ({{ orcid }}) no se ha conectado aún con una cuenta en el registro ORCID o la conexión caducó.", // "person.page.orcid.unlink": "Disconnect from ORCID", - "person.page.orcid.unlink": "Desconectar de ORCID", + "person.page.orcid.unlink": "Desconectar de ORCID", // "person.page.orcid.unlink.processing": "Processing...", "person.page.orcid.unlink.processing": "Procesando...", @@ -7490,44 +7420,44 @@ // "person.page.orcid.save.preference.changes": "Update settings", "person.page.orcid.save.preference.changes": "Actualizar configuración", - // "person.page.orcid.sync-profile.affiliation" : "Affiliation", + // "person.page.orcid.sync-profile.affiliation": "Affiliation", "person.page.orcid.sync-profile.affiliation": "Afiliación", - // "person.page.orcid.sync-profile.biographical" : "Biographical data", + // "person.page.orcid.sync-profile.biographical": "Biographical data", "person.page.orcid.sync-profile.biographical": "Biografía", - // "person.page.orcid.sync-profile.education" : "Education", + // "person.page.orcid.sync-profile.education": "Education", "person.page.orcid.sync-profile.education": "Grados", - // "person.page.orcid.sync-profile.identifiers" : "Identifiers", + // "person.page.orcid.sync-profile.identifiers": "Identifiers", "person.page.orcid.sync-profile.identifiers": "Identificadores", - // "person.page.orcid.sync-fundings.all" : "All fundings", + // "person.page.orcid.sync-fundings.all": "All fundings", "person.page.orcid.sync-fundings.all": "Todas las financiaciones", - // "person.page.orcid.sync-fundings.mine" : "My fundings", + // "person.page.orcid.sync-fundings.mine": "My fundings", "person.page.orcid.sync-fundings.mine": "Mi financiación", - // "person.page.orcid.sync-fundings.my_selected" : "Selected fundings", + // "person.page.orcid.sync-fundings.my_selected": "Selected fundings", "person.page.orcid.sync-fundings.my_selected": "Financiaciones seleccionadas", - // "person.page.orcid.sync-fundings.disabled" : "Disabled", + // "person.page.orcid.sync-fundings.disabled": "Disabled", "person.page.orcid.sync-fundings.disabled": "Deshabilitado", - // "person.page.orcid.sync-publications.all" : "All publications", + // "person.page.orcid.sync-publications.all": "All publications", "person.page.orcid.sync-publications.all": "Todas las publicaciones", - // "person.page.orcid.sync-publications.mine" : "My publications", + // "person.page.orcid.sync-publications.mine": "My publications", "person.page.orcid.sync-publications.mine": "Mis publicaciones", - // "person.page.orcid.sync-publications.my_selected" : "Selected publications", + // "person.page.orcid.sync-publications.my_selected": "Selected publications", "person.page.orcid.sync-publications.my_selected": "Publicaciones seleccionadas", - // "person.page.orcid.sync-publications.disabled" : "Disabled", + // "person.page.orcid.sync-publications.disabled": "Disabled", "person.page.orcid.sync-publications.disabled": "Deshabilitado", - // "person.page.orcid.sync-queue.discard" : "Discard the change and do not synchronize with the ORCID registry", - "person.page.orcid.sync-queue.discard": "Deshechar el cambio y no sincronizar con ORCID", + // "person.page.orcid.sync-queue.discard": "Discard the change and do not synchronize with the ORCID registry", + "person.page.orcid.sync-queue.discard": "Deshechar el cambio y no sincronizar con el registro ORCID", // "person.page.orcid.sync-queue.discard.error": "The discarding of the ORCID queue record failed", "person.page.orcid.sync-queue.discard.error": "Falló el borrado del registro ORCID en la cola", @@ -7538,13 +7468,13 @@ // "person.page.orcid.sync-queue.empty-message": "The ORCID queue registry is empty", "person.page.orcid.sync-queue.empty-message": "La cola del registro de ORCID está vacía", - // "person.page.orcid.sync-queue.table.header.type" : "Type", + // "person.page.orcid.sync-queue.table.header.type": "Type", "person.page.orcid.sync-queue.table.header.type": "Tipo", - // "person.page.orcid.sync-queue.table.header.description" : "Description", + // "person.page.orcid.sync-queue.table.header.description": "Description", "person.page.orcid.sync-queue.table.header.description": "Descripción", - // "person.page.orcid.sync-queue.table.header.action" : "Action", + // "person.page.orcid.sync-queue.table.header.action": "Action", "person.page.orcid.sync-queue.table.header.action": "Acción", // "person.page.orcid.sync-queue.description.affiliation": "Affiliations", @@ -7610,7 +7540,7 @@ // "person.page.orcid.sync-queue.tooltip.researcher_urls": "Researcher url", "person.page.orcid.sync-queue.tooltip.researcher_urls": "URL del investigador", - // "person.page.orcid.sync-queue.send" : "Synchronize with ORCID registry", + // "person.page.orcid.sync-queue.send": "Synchronize with ORCID registry", "person.page.orcid.sync-queue.send": "Sincronizar con el registro ORCID", // "person.page.orcid.sync-queue.send.unauthorized-error.title": "The submission to ORCID failed for missing authorizations.", @@ -7620,13 +7550,13 @@ "person.page.orcid.sync-queue.send.unauthorized-error.content": "Pulse aquí para conceder de nuevo los permisos requeridos. Si el problema continuase, contacte con el administrador", // "person.page.orcid.sync-queue.send.bad-request-error": "The submission to ORCID failed because the resource sent to ORCID registry is not valid", - "person.page.orcid.sync-queue.send.bad-request-error": "El envío a ORCID falló debido a que el recurso que se envión no era válido", + "person.page.orcid.sync-queue.send.bad-request-error": "El envío a ORCID falló debido a que el recurso que se envión no era válido", // "person.page.orcid.sync-queue.send.error": "The submission to ORCID failed", "person.page.orcid.sync-queue.send.error": "Falló el envío a ORCID", // "person.page.orcid.sync-queue.send.conflict-error": "The submission to ORCID failed because the resource is already present on the ORCID registry", - "person.page.orcid.sync-queue.send.conflict-error": "El envío a ORCID falló debido a que el recurso ya existía en el registro ORCID", + "person.page.orcid.sync-queue.send.conflict-error": "El envío a ORCID falló debido a que el recurso ya existía en el registro ORCID", // "person.page.orcid.sync-queue.send.not-found-warning": "The resource does not exists anymore on the ORCID registry.", "person.page.orcid.sync-queue.send.not-found-warning": "El recurso no existe ya en el registro ORCID.", @@ -7664,8 +7594,8 @@ // "person.page.orcid.sync-queue.send.validation-error.organization.name-required": "The organization's name is required", "person.page.orcid.sync-queue.send.validation-error.organization.name-required": "Se requiere el nombre de la organización", - // "person.page.orcid.sync-queue.send.validation-error.publication.date-invalid" : "The publication date must be one year after 1900", - "person.page.orcid.sync-queue.send.validation-error.publication.date-invalid": "la fecha de la publicación debe ser posterior a 1900", + // "person.page.orcid.sync-queue.send.validation-error.publication.date-invalid": "The publication date must be one year after 1900", + "person.page.orcid.sync-queue.send.validation-error.publication.date-invalid": "La fecha de publicación debe ser posterior a 1900", // "person.page.orcid.sync-queue.send.validation-error.organization.address-required": "The organization to be sent requires an address", "person.page.orcid.sync-queue.send.validation-error.organization.address-required": "Se requiere la dirección de la organización", @@ -7698,7 +7628,7 @@ "person.page.orcid.synchronization-mode.label": "Modo sincronización", // "person.page.orcid.synchronization-mode-message": "Please select how you would like synchronization to ORCID to occur. The options include \"Manual\" (you must send your data to ORCID manually), or \"Batch\" (the system will send your data to ORCID via a scheduled script).", - "person.page.orcid.synchronization-mode-message": "Seleccione cómo prefiere realizar la sincronización con ORCID. Puede escoger \"Manual\" (usted envía los datos a ORCID manualmente), o \"Batch\" (el sistema enviará sus datos a ORCID via un programa planificado).", + "person.page.orcid.synchronization-mode-message": "Seleccione cómo prefiere realizar la sincronización con ORCID. Puede escoger \"Manual\" (usted envía los datos a ORCID manualmente), o \"Batch\" (el sistema enviará sus datos a ORCID vía un programa planificado).", // "person.page.orcid.synchronization-mode-funding-message": "Select whether to send your linked Project entities to your ORCID record's list of funding information.", "person.page.orcid.synchronization-mode-funding-message": "Seleccione si enviará información de sus entidades conectadas de tipo Proyecto a la información de financiación de ORCID.", @@ -7744,13 +7674,13 @@ // "person.orcid.registry.auth": "ORCID Authorizations", "person.orcid.registry.auth": "Autorizaciones ORCID", + // "home.recent-submissions.head": "Recent Submissions", "home.recent-submissions.head": "Envíos recientes", // "listable-notification-object.default-message": "This object couldn't be retrieved", "listable-notification-object.default-message": "Este objeto no se pudo recuperar", - // "system-wide-alert-banner.retrieval.error": "Something went wrong retrieving the system-wide alert banner", "system-wide-alert-banner.retrieval.error": "Algo salió mal al recuperar el banner de alerta del sistema", @@ -7766,8 +7696,6 @@ // "system-wide-alert-banner.countdown.minutes": "{{minutes}} minute(s):", "system-wide-alert-banner.countdown.minutes": "{{minutes}} minuto(s):", - - // "menu.section.system-wide-alert": "System-wide Alert", "menu.section.system-wide-alert": "Alerta del Sistema", @@ -7822,5 +7750,81 @@ // "admin.system-wide-alert.title": "System-wide Alerts", "admin.system-wide-alert.title": "Alertas del sistema", + // "item-access-control-title": "This form allows you to perform changes to the access conditions of the item's metadata or its bitstreams.", + "item-access-control-title": "Esta pantalla le permite realizar cambios en las condiciones de acceso a los metadatos o a los archivos del ítem.", + + // "collection-access-control-title": "This form allows you to perform changes to the access conditions of all the items owned by this collection. Changes may be performed to either all Item metadata or all content (bitstreams).", + "collection-access-control-title": "Esta pantalla le permite realizar cambios en las condiciones de acceso de todos los ítems de la colección. Puede realizar los cambios a los metadatos o a los archivos de todos los ítems.", + + // "community-access-control-title": "This form allows you to perform changes to the access conditions of all the items owned by any collection under this community. Changes may be performed to either all Item metadata or all content (bitstreams).", + "community-access-control-title": "Esta pantalla le permite realizar cambios en las condiciones de acceso de todos los ítems de todas las colecciones de esta comunidad. Puede realizar los cambios a los metadatos o a los archivos de todos los ítems.", + + // "access-control-item-header-toggle": "Item's Metadata", + "access-control-item-header-toggle": "Metadatos del ítem", + + // "access-control-bitstream-header-toggle": "Bitstreams", + "access-control-bitstream-header-toggle": "Archivos", + + // "access-control-mode": "Mode", + "access-control-mode": "Modo", + + // "access-control-access-conditions": "Access conditions", + "access-control-access-conditions": "Condiciones de accceso", + + // "access-control-no-access-conditions-warning-message": "Currently, no access conditions are specified below. If executed, this will replace the current access conditions with the default access conditions inherited from the owning collection.", + "access-control-no-access-conditions-warning-message": "No ha especificado condiciones de acceso. Si lo ejecuta, se sustituirán las condiciones actuales con las condiones heredadas de la colección de pertenencia.", + + // "access-control-replace-all": "Replace access conditions", + "access-control-replace-all": "Sustituir condiciones de accceso", + + // "access-control-add-to-existing": "Add to existing ones", + "access-control-add-to-existing": "Añadir a las existentes", + + // "access-control-limit-to-specific": "Limit the changes to specific bitstreams", + "access-control-limit-to-specific": "Limitar los cambios a ficheros específicos", + + // "access-control-process-all-bitstreams": "Update all the bitstreams in the item", + "access-control-process-all-bitstreams": "Actualizar todos los archivos del ítem", + + // "access-control-bitstreams-selected": "bitstreams selected", + "access-control-bitstreams-selected": "archivos seleccionados", + + // "access-control-cancel": "Cancel", + "access-control-cancel": "Cancelar", + + // "access-control-execute": "Execute", + "access-control-execute": "Ejecutar", + + // "access-control-add-more": "Add more", + "access-control-add-more": "Añadir mas", + + // "access-control-select-bitstreams-modal.title": "Select bitstreams", + "access-control-select-bitstreams-modal.title": "Seleccionar archivos", + + // "access-control-select-bitstreams-modal.no-items": "No items to show.", + "access-control-select-bitstreams-modal.no-items": "No hay ítems para mostrar.", + + // "access-control-select-bitstreams-modal.close": "Close", + "access-control-select-bitstreams-modal.close": "Cerrar", + + // "access-control-option-label": "Access condition type", + "access-control-option-label": "Tipo de condición de acceso", + + // "access-control-option-note": "Choose an access condition to apply to selected objects.", + "access-control-option-note": "Seleccione una condición de acceso para aplicar a los objetos seleccionados.", + + // "access-control-option-start-date": "Grant access from", + "access-control-option-start-date": "Establecer acceso desde", + + // "access-control-option-start-date-note": "Select the date from which the related access condition is applied", + "access-control-option-start-date-note": "Escoja la fecha desde la cuál se aplicarán las condiciones de acceso especificadas", + + // "access-control-option-end-date": "Grant access until", + "access-control-option-end-date": "Establecer acceso hasta", + + // "access-control-option-end-date-note": "Select the date until which the related access condition is applied", + "access-control-option-end-date-note": "Escoja la fecha hasta la cuál se aplicarán las condiciones de acceso especificadas", + + } From a4eaf02a4749142828245f58c2ab82fa36f196cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Fern=C3=A1ndez=20Celorio?= Date: Tue, 22 Aug 2023 12:57:08 +0200 Subject: [PATCH 065/355] Some lint errors fixed (cherry picked from commit 1885638ba6fadca4c99043db4ce52646bce435a3) --- src/assets/i18n/es.json5 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/assets/i18n/es.json5 b/src/assets/i18n/es.json5 index 24ce7159e33..0d5b27473cf 100644 --- a/src/assets/i18n/es.json5 +++ b/src/assets/i18n/es.json5 @@ -854,7 +854,7 @@ // "admin.batch-import.page.toggle.help": "It is possible to perform import either with file upload or via URL, use above toggle to set the input source", "admin.batch-import.page.toggle.help": "Es posible realizar una importación tanto mediante una subida de fichero como a través de una URL. Use el selector de arriba para especificar la fuente de entrada.", - + // "admin.metadata-import.page.dropMsg": "Drop a metadata CSV to import", "admin.metadata-import.page.dropMsg": "Suelta un CSV de metadatos para importar", @@ -2677,7 +2677,7 @@ "grant-request-copy.header": "Conceder solicitud de copia de documento", // "grant-request-copy.intro": "A message will be sent to the applicant of the request. The requested document(s) will be attached.", - "grant-request-copy.intro": "Este mensaje se enviará al solicitante de la copia. Se le anexará una copia del documento.", + "grant-request-copy.intro": "Este mensaje se enviará al solicitante de la copia. Se le anexará una copia del documento.", // "grant-request-copy.success": "Successfully granted item request", "grant-request-copy.success": "Solicitud de ítem concedida exitosamente", @@ -2686,13 +2686,13 @@ "health.breadcrumbs": "Chequeos", // "health-page.heading": "Health", - "health-page.heading": "Chequeos", + "health-page.heading": "Chequeos", // "health-page.info-tab": "Info", - "health-page.info-tab": "Información", + "health-page.info-tab": "Información", // "health-page.status-tab": "Status", - "health-page.status-tab": "Estado", + "health-page.status-tab": "Estado", // "health-page.error.msg": "The health check service is temporarily unavailable", "health-page.error.msg": "El servicio de comprobación no se encuentra temporalmente disponible", @@ -4744,7 +4744,7 @@ "process.new.notification.error.content": "Se produjo un error al crear este proceso.", // "process.new.notification.error.max-upload.content": "The file exceeds the maximum upload size", - "process.new.notification.error.max-upload.content": "El fichero sobrepasa el límte máximo de subida", + "process.new.notification.error.max-upload.content": "El fichero sobrepasa el límte máximo de subida", // "process.new.header": "Create a new process", "process.new.header": "Crea un nuevo proceso", From 9afbd8d746738c2b766267a8fac0da9d9f096d2e Mon Sep 17 00:00:00 2001 From: Hugo Dominguez Date: Fri, 18 Aug 2023 13:20:19 -0600 Subject: [PATCH 066/355] =?UTF-8?q?=F0=9F=90=9B=20fix=20when=20navbar=20ex?= =?UTF-8?q?pands=20on=20firefox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 60706720e47abc19b7528719e63676b9b5fa50be) --- src/themes/dspace/app/navbar/navbar.component.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/themes/dspace/app/navbar/navbar.component.scss b/src/themes/dspace/app/navbar/navbar.component.scss index d3aea9f0780..2bcd38d5f4d 100644 --- a/src/themes/dspace/app/navbar/navbar.component.scss +++ b/src/themes/dspace/app/navbar/navbar.component.scss @@ -7,7 +7,7 @@ nav.navbar { /** Mobile menu styling **/ @media screen and (max-width: map-get($grid-breakpoints, md)-0.02) { .navbar { - width: 100%; + width: 100vw; background-color: var(--bs-white); position: absolute; overflow: hidden; From f88638e9fee32b820c2d983dd112ea65cecb6540 Mon Sep 17 00:00:00 2001 From: Hugo Dominguez Date: Sun, 13 Aug 2023 12:10:25 -0600 Subject: [PATCH 067/355] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Value=20of=20dropd?= =?UTF-8?q?own=20changes=20automatically=20on=20item=20submission=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 651305952d706f6c45eb47ff37dfb94f91979760) --- .../dynamic-scrollable-dropdown.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/scrollable-dropdown/dynamic-scrollable-dropdown.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/models/scrollable-dropdown/dynamic-scrollable-dropdown.component.html index 6e2d29b7893..1ac38e9943c 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/scrollable-dropdown/dynamic-scrollable-dropdown.component.html +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/scrollable-dropdown/dynamic-scrollable-dropdown.component.html @@ -43,7 +43,7 @@
diff --git a/src/app/submission/sections/upload/file/view/section-upload-file-view.component.html b/src/app/submission/sections/upload/file/view/section-upload-file-view.component.html index b84ef6f6a8c..cc12b5dea63 100644 --- a/src/app/submission/sections/upload/file/view/section-upload-file-view.component.html +++ b/src/app/submission/sections/upload/file/view/section-upload-file-view.component.html @@ -15,15 +15,23 @@
- {{entry.value | dsTruncate:['150']}} + {{entry.value | dsTruncate:['150']}} - {{'submission.sections.upload.no-entry' | translate}} {{fileDescrKey}} + {{'submission.sections.upload.no-entry' | translate}} {{fileDescrKey}} + +
+ {{'admin.registries.bitstream-formats.edit.head' | translate:{format: fileFormat} }} +
+
+ Checksum {{fileCheckSum.checkSumAlgorithm}}: {{fileCheckSum.value}} +
diff --git a/src/app/submission/sections/upload/file/view/section-upload-file-view.component.ts b/src/app/submission/sections/upload/file/view/section-upload-file-view.component.ts index bb2fea20f83..b0ea2487e10 100644 --- a/src/app/submission/sections/upload/file/view/section-upload-file-view.component.ts +++ b/src/app/submission/sections/upload/file/view/section-upload-file-view.component.ts @@ -1,9 +1,11 @@ -import { Component, Input, OnInit } from '@angular/core'; +import {Component, Input, OnInit} from '@angular/core'; -import { WorkspaceitemSectionUploadFileObject } from '../../../../../core/submission/models/workspaceitem-section-upload-file.model'; -import { isNotEmpty } from '../../../../../shared/empty.util'; -import { Metadata } from '../../../../../core/shared/metadata.utils'; -import { MetadataMap, MetadataValue } from '../../../../../core/shared/metadata.models'; +import { + WorkspaceitemSectionUploadFileObject +} from '../../../../../core/submission/models/workspaceitem-section-upload-file.model'; +import {isNotEmpty} from '../../../../../shared/empty.util'; +import {Metadata} from '../../../../../core/shared/metadata.utils'; +import {MetadataMap, MetadataValue} from '../../../../../core/shared/metadata.models'; /** * This component allow to show bitstream's metadata @@ -38,6 +40,13 @@ export class SubmissionSectionUploadFileViewComponent implements OnInit { */ public fileDescrKey = 'Description'; + public fileFormat!: string; + + public fileCheckSum!: { + checkSumAlgorithm: string; + value: string; + }; + /** * Initialize instance variables */ @@ -46,6 +55,8 @@ export class SubmissionSectionUploadFileViewComponent implements OnInit { this.metadata[this.fileTitleKey] = Metadata.all(this.fileData.metadata, 'dc.title'); this.metadata[this.fileDescrKey] = Metadata.all(this.fileData.metadata, 'dc.description'); } + this.fileCheckSum = this.fileData.checkSum; + this.fileFormat = this.fileData.format.shortDescription; } /** From 5daf993451d8d75c3fe2260f70d2171184a0f1c9 Mon Sep 17 00:00:00 2001 From: Hugo Dominguez Date: Fri, 8 Sep 2023 11:51:42 -0600 Subject: [PATCH 076/355] =?UTF-8?q?=F0=9F=8E=A8revert=20unnecessary=20form?= =?UTF-8?q?at?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 13e4052c4da07014a1c01087bfc6d293a8bb71c5) --- .../workspaceitem-section-upload-file.model.ts | 4 ++-- .../file/view/section-upload-file-view.component.ts | 12 +++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/app/core/submission/models/workspaceitem-section-upload-file.model.ts b/src/app/core/submission/models/workspaceitem-section-upload-file.model.ts index 59a8faf6342..785d7c402fa 100644 --- a/src/app/core/submission/models/workspaceitem-section-upload-file.model.ts +++ b/src/app/core/submission/models/workspaceitem-section-upload-file.model.ts @@ -1,5 +1,5 @@ -import {SubmissionUploadFileAccessConditionObject} from './submission-upload-file-access-condition.model'; -import {WorkspaceitemSectionFormObject} from './workspaceitem-section-form.model'; +import { SubmissionUploadFileAccessConditionObject } from './submission-upload-file-access-condition.model'; +import { WorkspaceitemSectionFormObject } from './workspaceitem-section-form.model'; /** * An interface to represent submission's upload section file entry. diff --git a/src/app/submission/sections/upload/file/view/section-upload-file-view.component.ts b/src/app/submission/sections/upload/file/view/section-upload-file-view.component.ts index b0ea2487e10..b15b0ab3211 100644 --- a/src/app/submission/sections/upload/file/view/section-upload-file-view.component.ts +++ b/src/app/submission/sections/upload/file/view/section-upload-file-view.component.ts @@ -1,11 +1,9 @@ -import {Component, Input, OnInit} from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; -import { - WorkspaceitemSectionUploadFileObject -} from '../../../../../core/submission/models/workspaceitem-section-upload-file.model'; -import {isNotEmpty} from '../../../../../shared/empty.util'; -import {Metadata} from '../../../../../core/shared/metadata.utils'; -import {MetadataMap, MetadataValue} from '../../../../../core/shared/metadata.models'; +import { WorkspaceitemSectionUploadFileObject } from '../../../../../core/submission/models/workspaceitem-section-upload-file.model'; +import { isNotEmpty } from '../../../../../shared/empty.util'; +import { Metadata } from '../../../../../core/shared/metadata.utils'; +import { MetadataMap, MetadataValue } from '../../../../../core/shared/metadata.models'; /** * This component allow to show bitstream's metadata From 22538f30dc5d615675fc1eb444c803fef80bbb5f Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Fri, 8 Sep 2023 14:28:23 -0500 Subject: [PATCH 077/355] Update workspaceitem-section-upload-file.model.ts Fix code comment (cherry picked from commit 01c8a4d9c3347cb5b30d4d912a3f7e18b81f989a) --- .../models/workspaceitem-section-upload-file.model.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/core/submission/models/workspaceitem-section-upload-file.model.ts b/src/app/core/submission/models/workspaceitem-section-upload-file.model.ts index 785d7c402fa..725e646d761 100644 --- a/src/app/core/submission/models/workspaceitem-section-upload-file.model.ts +++ b/src/app/core/submission/models/workspaceitem-section-upload-file.model.ts @@ -30,7 +30,7 @@ export class WorkspaceitemSectionUploadFileObject { }; /** - * The file check sum + * The file format information */ format: { shortDescription: string, From 8d295419c7f9b0f30194d4302c739d4e0b5d2658 Mon Sep 17 00:00:00 2001 From: Hugo Dominguez Date: Sat, 19 Aug 2023 14:40:28 -0600 Subject: [PATCH 078/355] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20chain?= =?UTF-8?q?=20of=20observables=20to=20avoid=20async=20issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 2dc9fd44d7e151f7e96bff16665edf0a09226249) --- .../metadata-schema-form.component.ts | 179 ++++++++++-------- 1 file changed, 100 insertions(+), 79 deletions(-) diff --git a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts index 1992289ff77..f5fcdef78de 100644 --- a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts +++ b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts @@ -1,4 +1,10 @@ -import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core'; +import { + Component, + EventEmitter, + OnDestroy, + OnInit, + Output, +} from '@angular/core'; import { DynamicFormControlModel, DynamicFormGroupModel, @@ -8,20 +14,19 @@ import { import { UntypedFormGroup } from '@angular/forms'; import { RegistryService } from '../../../../core/registry/registry.service'; import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service'; -import { take } from 'rxjs/operators'; +import { switchMap, take } from 'rxjs/operators'; import { TranslateService } from '@ngx-translate/core'; -import { combineLatest } from 'rxjs'; +import { Observable, combineLatest } from 'rxjs'; import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model'; @Component({ selector: 'ds-metadata-schema-form', - templateUrl: './metadata-schema-form.component.html' + templateUrl: './metadata-schema-form.component.html', }) /** * A form used for creating and editing metadata schemas */ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { - /** * A unique id used for ds-form */ @@ -53,14 +58,14 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { formLayout: DynamicFormLayout = { name: { grid: { - host: 'col col-sm-6 d-inline-block' - } + host: 'col col-sm-6 d-inline-block', + }, }, namespace: { grid: { - host: 'col col-sm-6 d-inline-block' - } - } + host: 'col col-sm-6 d-inline-block', + }, + }, }; /** @@ -73,63 +78,67 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { */ @Output() submitForm: EventEmitter = new EventEmitter(); - constructor(public registryService: RegistryService, private formBuilderService: FormBuilderService, private translateService: TranslateService) { - } + constructor( + public registryService: RegistryService, + private formBuilderService: FormBuilderService, + private translateService: TranslateService + ) {} ngOnInit() { combineLatest([ this.translateService.get(`${this.messagePrefix}.name`), - this.translateService.get(`${this.messagePrefix}.namespace`) + this.translateService.get(`${this.messagePrefix}.namespace`), ]).subscribe(([name, namespace]) => { this.name = new DynamicInputModel({ - id: 'name', - label: name, - name: 'name', - validators: { - required: null, - pattern: '^[^. ,]*$', - maxLength: 32, - }, - required: true, - errorMessages: { - pattern: 'error.validation.metadata.name.invalid-pattern', - maxLength: 'error.validation.metadata.name.max-length', - }, - }); + id: 'name', + label: name, + name: 'name', + validators: { + required: null, + pattern: '^[^. ,]*$', + maxLength: 32, + }, + required: true, + errorMessages: { + pattern: 'error.validation.metadata.name.invalid-pattern', + maxLength: 'error.validation.metadata.name.max-length', + }, + }); this.namespace = new DynamicInputModel({ - id: 'namespace', - label: namespace, - name: 'namespace', - validators: { - required: null, - maxLength: 256, - }, - required: true, - errorMessages: { - maxLength: 'error.validation.metadata.namespace.max-length', - }, - }); + id: 'namespace', + label: namespace, + name: 'namespace', + validators: { + required: null, + maxLength: 256, + }, + required: true, + errorMessages: { + maxLength: 'error.validation.metadata.namespace.max-length', + }, + }); this.formModel = [ - new DynamicFormGroupModel( - { - id: 'metadatadataschemagroup', - group:[this.namespace, this.name] - }) + new DynamicFormGroupModel({ + id: 'metadatadataschemagroup', + group: [this.namespace, this.name], + }), ]; this.formGroup = this.formBuilderService.createFormGroup(this.formModel); - this.registryService.getActiveMetadataSchema().subscribe((schema: MetadataSchema) => { - if (schema == null) { - this.clearFields(); - } else { - this.formGroup.patchValue({ - metadatadataschemagroup: { - name: schema.prefix, - namespace: schema.namespace, - }, - }); - this.name.disabled = true; - } - }); + this.registryService + .getActiveMetadataSchema() + .subscribe((schema: MetadataSchema) => { + if (schema == null) { + this.clearFields(); + } else { + this.formGroup.patchValue({ + metadatadataschemagroup: { + name: schema.prefix, + namespace: schema.namespace, + }, + }); + this.name.disabled = true; + } + }); }); } @@ -147,30 +156,42 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { * Emit the updated/created schema using the EventEmitter submitForm */ onSubmit(): void { - this.registryService.clearMetadataSchemaRequests().subscribe(); - this.registryService.getActiveMetadataSchema().pipe(take(1)).subscribe( - (schema: MetadataSchema) => { - const values = { - prefix: this.name.value, - namespace: this.namespace.value - }; - if (schema == null) { - this.registryService.createOrUpdateMetadataSchema(Object.assign(new MetadataSchema(), values)).subscribe((newSchema) => { - this.submitForm.emit(newSchema); - }); - } else { - this.registryService.createOrUpdateMetadataSchema(Object.assign(new MetadataSchema(), schema, { - id: schema.id, - prefix: schema.prefix, - namespace: values.namespace, - })).subscribe((updatedSchema: MetadataSchema) => { - this.submitForm.emit(updatedSchema); - }); - } + const clearMetadataSchemaRequests$ = + this.registryService.clearMetadataSchemaRequests(); + + clearMetadataSchemaRequests$ + .pipe( + switchMap(() => + this.registryService.getActiveMetadataSchema().pipe(take(1)) + ), + switchMap((schema: MetadataSchema) => { + const metadataValues = { + prefix: this.name.value, + namespace: this.namespace.value, + }; + + let createOrUpdate$: Observable; + + if (schema == null) { + createOrUpdate$ = this.registryService.createOrUpdateMetadataSchema( + Object.assign(new MetadataSchema(), metadataValues) + ); + } else { + const updatedSchema = Object.assign(new MetadataSchema(), schema, { + namespace: metadataValues.namespace, + }); + createOrUpdate$ = + this.registryService.createOrUpdateMetadataSchema(updatedSchema); + } + + return createOrUpdate$; + }) + ) + .subscribe((updatedOrCreatedSchema: MetadataSchema) => { + this.submitForm.emit(updatedOrCreatedSchema); this.clearFields(); this.registryService.cancelEditMetadataSchema(); - } - ); + }); } /** From e3ea2cb2b001ccf08c28b1dd863bfaa0b82da146 Mon Sep 17 00:00:00 2001 From: Hugo Dominguez Date: Sat, 19 Aug 2023 15:59:33 -0600 Subject: [PATCH 079/355] =?UTF-8?q?=F0=9F=90=9B=20fix=20bug=20of=20caching?= =?UTF-8?q?=20when=20add=20new=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 9fb9e5848c70274b7917bead52643e3611308174) --- .../metadata-schema-form.component.ts | 80 ++++++++++--------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts index f5fcdef78de..61766a4a109 100644 --- a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts +++ b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts @@ -14,7 +14,7 @@ import { import { UntypedFormGroup } from '@angular/forms'; import { RegistryService } from '../../../../core/registry/registry.service'; import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service'; -import { switchMap, take } from 'rxjs/operators'; +import { switchMap, take, tap } from 'rxjs/operators'; import { TranslateService } from '@ngx-translate/core'; import { Observable, combineLatest } from 'rxjs'; import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model'; @@ -156,42 +156,48 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { * Emit the updated/created schema using the EventEmitter submitForm */ onSubmit(): void { - const clearMetadataSchemaRequests$ = - this.registryService.clearMetadataSchemaRequests(); - - clearMetadataSchemaRequests$ - .pipe( - switchMap(() => - this.registryService.getActiveMetadataSchema().pipe(take(1)) - ), - switchMap((schema: MetadataSchema) => { - const metadataValues = { - prefix: this.name.value, - namespace: this.namespace.value, - }; - - let createOrUpdate$: Observable; - - if (schema == null) { - createOrUpdate$ = this.registryService.createOrUpdateMetadataSchema( - Object.assign(new MetadataSchema(), metadataValues) - ); - } else { - const updatedSchema = Object.assign(new MetadataSchema(), schema, { - namespace: metadataValues.namespace, - }); - createOrUpdate$ = - this.registryService.createOrUpdateMetadataSchema(updatedSchema); - } - - return createOrUpdate$; - }) - ) - .subscribe((updatedOrCreatedSchema: MetadataSchema) => { - this.submitForm.emit(updatedOrCreatedSchema); - this.clearFields(); - this.registryService.cancelEditMetadataSchema(); - }); + this.registryService + .getActiveMetadataSchema() + .pipe( + take(1), + switchMap((schema: MetadataSchema) => { + const metadataValues = { + prefix: this.name.value, + namespace: this.namespace.value, + }; + + let createOrUpdate$: Observable; + + if (schema == null) { + createOrUpdate$ = + this.registryService.createOrUpdateMetadataSchema( + Object.assign(new MetadataSchema(), metadataValues) + ); + } else { + const updatedSchema = Object.assign( + new MetadataSchema(), + schema, + { + namespace: metadataValues.namespace, + } + ); + createOrUpdate$ = + this.registryService.createOrUpdateMetadataSchema( + updatedSchema + ); + } + + return createOrUpdate$; + }), + tap(() => { + this.registryService.clearMetadataSchemaRequests().subscribe(); + }) + ) + .subscribe((updatedOrCreatedSchema: MetadataSchema) => { + this.submitForm.emit(updatedOrCreatedSchema); + this.clearFields(); + this.registryService.cancelEditMetadataSchema(); + }); } /** From 161d7e069bcc074163ca5ab53c2e343742f3c719 Mon Sep 17 00:00:00 2001 From: Hugo Dominguez Date: Fri, 8 Sep 2023 11:31:26 -0600 Subject: [PATCH 080/355] =?UTF-8?q?=F0=9F=8E=A8=20revert=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 3e5524de69fa09808e3a7d0ab4042e5e3ffc98e0) --- .../metadata-schema-form.component.ts | 119 ++++++++---------- 1 file changed, 55 insertions(+), 64 deletions(-) diff --git a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts index 61766a4a109..24bf4306619 100644 --- a/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts +++ b/src/app/admin/admin-registries/metadata-registry/metadata-schema-form/metadata-schema-form.component.ts @@ -1,10 +1,4 @@ -import { - Component, - EventEmitter, - OnDestroy, - OnInit, - Output, -} from '@angular/core'; +import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core'; import { DynamicFormControlModel, DynamicFormGroupModel, @@ -21,12 +15,13 @@ import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model' @Component({ selector: 'ds-metadata-schema-form', - templateUrl: './metadata-schema-form.component.html', + templateUrl: './metadata-schema-form.component.html' }) /** * A form used for creating and editing metadata schemas */ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { + /** * A unique id used for ds-form */ @@ -58,14 +53,14 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { formLayout: DynamicFormLayout = { name: { grid: { - host: 'col col-sm-6 d-inline-block', - }, + host: 'col col-sm-6 d-inline-block' + } }, namespace: { grid: { - host: 'col col-sm-6 d-inline-block', - }, - }, + host: 'col col-sm-6 d-inline-block' + } + } }; /** @@ -78,67 +73,63 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy { */ @Output() submitForm: EventEmitter = new EventEmitter(); - constructor( - public registryService: RegistryService, - private formBuilderService: FormBuilderService, - private translateService: TranslateService - ) {} + constructor(public registryService: RegistryService, private formBuilderService: FormBuilderService, private translateService: TranslateService) { + } ngOnInit() { combineLatest([ this.translateService.get(`${this.messagePrefix}.name`), - this.translateService.get(`${this.messagePrefix}.namespace`), + this.translateService.get(`${this.messagePrefix}.namespace`) ]).subscribe(([name, namespace]) => { this.name = new DynamicInputModel({ - id: 'name', - label: name, - name: 'name', - validators: { - required: null, - pattern: '^[^. ,]*$', - maxLength: 32, - }, - required: true, - errorMessages: { - pattern: 'error.validation.metadata.name.invalid-pattern', - maxLength: 'error.validation.metadata.name.max-length', - }, - }); + id: 'name', + label: name, + name: 'name', + validators: { + required: null, + pattern: '^[^. ,]*$', + maxLength: 32, + }, + required: true, + errorMessages: { + pattern: 'error.validation.metadata.name.invalid-pattern', + maxLength: 'error.validation.metadata.name.max-length', + }, + }); this.namespace = new DynamicInputModel({ - id: 'namespace', - label: namespace, - name: 'namespace', - validators: { - required: null, - maxLength: 256, - }, - required: true, - errorMessages: { - maxLength: 'error.validation.metadata.namespace.max-length', - }, - }); + id: 'namespace', + label: namespace, + name: 'namespace', + validators: { + required: null, + maxLength: 256, + }, + required: true, + errorMessages: { + maxLength: 'error.validation.metadata.namespace.max-length', + }, + }); this.formModel = [ - new DynamicFormGroupModel({ - id: 'metadatadataschemagroup', - group: [this.namespace, this.name], - }), + new DynamicFormGroupModel( + { + id: 'metadatadataschemagroup', + group:[this.namespace, this.name] + }) ]; this.formGroup = this.formBuilderService.createFormGroup(this.formModel); - this.registryService - .getActiveMetadataSchema() - .subscribe((schema: MetadataSchema) => { - if (schema == null) { - this.clearFields(); - } else { - this.formGroup.patchValue({ - metadatadataschemagroup: { - name: schema.prefix, - namespace: schema.namespace, - }, - }); - this.name.disabled = true; - } - }); + this.registryService.getActiveMetadataSchema().subscribe((schema: MetadataSchema) => { + if (schema == null) { + this.clearFields(); + } else { + this.formGroup.patchValue({ + metadatadataschemagroup: { + name: schema.prefix, + namespace: schema.namespace, + }, + }); + this.name.disabled = true; + } + }); }); } From 0905a53db5eca45220809831663ba8d6761e55c5 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Fri, 8 Sep 2023 22:35:27 +0200 Subject: [PATCH 081/355] Fix innerText still being undefined in ssr mode --- src/app/shared/log-in/log-in.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/shared/log-in/log-in.component.html b/src/app/shared/log-in/log-in.component.html index 05d8d4370f0..857b977360e 100644 --- a/src/app/shared/log-in/log-in.component.html +++ b/src/app/shared/log-in/log-in.component.html @@ -1,7 +1,7 @@ diff --git a/src/app/shared/dso-page/dso-edit-menu/dso-edit-expandable-menu-section/dso-edit-menu-expandable-section.component.ts b/src/app/shared/dso-page/dso-edit-menu/dso-edit-expandable-menu-section/dso-edit-menu-expandable-section.component.ts index 8e4a7008afe..1925099418a 100644 --- a/src/app/shared/dso-page/dso-edit-menu/dso-edit-expandable-menu-section/dso-edit-menu-expandable-section.component.ts +++ b/src/app/shared/dso-page/dso-edit-menu/dso-edit-expandable-menu-section/dso-edit-menu-expandable-section.component.ts @@ -13,7 +13,6 @@ import { hasValue } from '../../../empty.util'; * Represents an expandable section in the dso edit menus */ @Component({ - /* tslint:disable:component-selector */ selector: 'ds-dso-edit-menu-expandable-section', templateUrl: './dso-edit-menu-expandable-section.component.html', styleUrls: ['./dso-edit-menu-expandable-section.component.scss'], diff --git a/src/app/shared/dso-page/dso-edit-menu/dso-edit-menu-section/dso-edit-menu-section.component.ts b/src/app/shared/dso-page/dso-edit-menu/dso-edit-menu-section/dso-edit-menu-section.component.ts index af3381ef716..060049ef5fc 100644 --- a/src/app/shared/dso-page/dso-edit-menu/dso-edit-menu-section/dso-edit-menu-section.component.ts +++ b/src/app/shared/dso-page/dso-edit-menu/dso-edit-menu-section/dso-edit-menu-section.component.ts @@ -10,7 +10,6 @@ import { MenuSection } from '../../../menu/menu-section.model'; * Represents a non-expandable section in the dso edit menus */ @Component({ - /* tslint:disable:component-selector */ selector: 'ds-dso-edit-menu-section', templateUrl: './dso-edit-menu-section.component.html', styleUrls: ['./dso-edit-menu-section.component.scss'] diff --git a/src/themes/dspace/app/navbar/navbar.component.html b/src/themes/dspace/app/navbar/navbar.component.html index d9631aad182..c14671cf683 100644 --- a/src/themes/dspace/app/navbar/navbar.component.html +++ b/src/themes/dspace/app/navbar/navbar.component.html @@ -10,9 +10,9 @@
  • - +
  • - +
  • - diff --git a/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts index 804ae634913..d5a5dee1f5e 100644 --- a/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts +++ b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts @@ -293,6 +293,15 @@ export class VocabularyTreeviewComponent implements OnDestroy, OnInit, OnChanges } } + add() { + const userVocabularyEntry = { + value: this.searchText, + display: this.searchText, + } as VocabularyEntryDetail; + this.select.emit(userVocabularyEntry); + } + + /** * Unsubscribe from all subscriptions */ diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 3b3578fac5d..741ff0ffc9c 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -5240,4 +5240,6 @@ "access-control-option-end-date-note": "Select the date until which the related access condition is applied", + "vocabulary-treeview.search.form.add": "Add", + } From e815b1d938066b06ec4ec887e1866327affaea7b Mon Sep 17 00:00:00 2001 From: Jens Vannerum Date: Wed, 8 Nov 2023 12:00:46 +0100 Subject: [PATCH 144/355] 108055: add user input to tag list (cherry picked from commit aac58e612d7fb01f87dc7a6a46b92c9c4c2fe685) --- .../models/tag/dynamic-tag.component.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.ts index 4abb68a53be..7805dad1f32 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.ts @@ -89,6 +89,18 @@ export class DsDynamicTagComponent extends DsDynamicVocabularyComponent implemen } }), map((list: PaginatedList) => list.page), + // Add user input as last item of the list + map((list: VocabularyEntry[]) => { + if (list && list.length > 0) { + if (isNotEmpty(this.currentValue)) { + let vocEntry = new VocabularyEntry(); + vocEntry.display = this.currentValue; + vocEntry.value = this.currentValue; + list.push(vocEntry); + } + } + return list; + }), tap(() => this.changeSearchingStatus(false)), merge(this.hideSearchingWhenUnsubscribed)); From bc21085398cfa976893de3b097a6fc3100240784 Mon Sep 17 00:00:00 2001 From: Andreas Mahnke Date: Wed, 25 Oct 2023 16:10:05 +0200 Subject: [PATCH 145/355] Support type-bind of elements based on repeatable list type-bound element (CHECKBOX_GROUP) (cherry picked from commit 09aaa46875146081cf812ed6f904178740ae8d30) --- .../ds-dynamic-type-bind-relation.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.ts index d5e735ed1a9..5f7e2e3e228 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.ts @@ -183,7 +183,8 @@ export class DsDynamicTypeBindRelationService { const initValue = (hasNoValue(relatedModel.value) || typeof relatedModel.value === 'string') ? relatedModel.value : (Array.isArray(relatedModel.value) ? relatedModel.value : relatedModel.value.value); - const valueChanges = relatedModel.valueChanges.pipe( + const updateSubject = (relatedModel.type === 'CHECKBOX_GROUP' ? relatedModel.valueUpdates : relatedModel.valueChanges); + const valueChanges = updateSubject.pipe( startWith(initValue) ); From 0d0c2dac17ecd9af8217e9231288af9bed865a50 Mon Sep 17 00:00:00 2001 From: Davide Negretti Date: Mon, 30 Oct 2023 18:27:00 +0100 Subject: [PATCH 146/355] [DURACOM-195] Simplify vertical spacing in header and breadcrumbs (cherry picked from commit a3e6d9b09a2d6e529dc28f7d1a1924b2830077e6) --- src/app/breadcrumbs/breadcrumbs.component.html | 2 +- src/app/breadcrumbs/breadcrumbs.component.scss | 5 ++--- src/app/home-page/home-news/home-news.component.html | 2 +- src/app/home-page/home-news/home-news.component.scss | 2 -- src/app/root/root.component.html | 4 ++-- src/styles/_custom_variables.scss | 2 +- src/styles/_global-styles.scss | 10 ++++++++-- .../app/home-page/home-news/home-news.component.html | 2 +- .../app/home-page/home-news/home-news.component.scss | 1 - 9 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/app/breadcrumbs/breadcrumbs.component.html b/src/app/breadcrumbs/breadcrumbs.component.html index bff792eeff4..3bba89622ff 100644 --- a/src/app/breadcrumbs/breadcrumbs.component.html +++ b/src/app/breadcrumbs/breadcrumbs.component.html @@ -1,6 +1,6 @@ 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 88efd2a711e..9522be29ce3 100644 --- a/src/app/admin/admin-sidebar/admin-sidebar.component.spec.ts +++ b/src/app/admin/admin-sidebar/admin-sidebar.component.spec.ts @@ -143,7 +143,7 @@ describe('AdminSidebarComponent', () => { describe('when the collapse link is clicked', () => { beforeEach(() => { spyOn(menuService, 'toggleMenu'); - const sidebarToggler = fixture.debugElement.query(By.css('#sidebar-collapse-toggle > a')); + const sidebarToggler = fixture.debugElement.query(By.css('#sidebar-collapse-toggle > button')); sidebarToggler.triggerEventHandler('click', { preventDefault: () => {/**/ } diff --git a/src/app/footer/footer.component.html b/src/app/footer/footer.component.html index 13d84e6e2e1..d4c0cd1a377 100644 --- a/src/app/footer/footer.component.html +++ b/src/app/footer/footer.component.html @@ -62,10 +62,11 @@
    Footer Content
    {{ 'footer.link.lyrasis' | translate}}

    -