From 3a48ed390b832c1a0a953284f6449678b2e8d361 Mon Sep 17 00:00:00 2001 From: Alan Orth Date: Wed, 5 Jul 2023 18:03:25 +0300 Subject: [PATCH 0001/1005] 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 0002/1005] 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 0003/1005] 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 0004/1005] 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 4965bdee5f1c340cc604bba4240f3ca23682ea4b Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Fri, 28 Jul 2023 14:10:44 -0500 Subject: [PATCH 0005/1005] Add action to automatically create a port PR when specified (cherry picked from commit 338b63ebb8ed847dfd2d2d872b2bc0a4994c7b83) --- .../workflows/port_merged_pull_request.yml | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/port_merged_pull_request.yml diff --git a/.github/workflows/port_merged_pull_request.yml b/.github/workflows/port_merged_pull_request.yml new file mode 100644 index 00000000000..50faf3f8867 --- /dev/null +++ b/.github/workflows/port_merged_pull_request.yml @@ -0,0 +1,44 @@ +# This workflow will attempt to port a merged pull request to +# the branch specified in a "port to" label (if exists) +name: Port merged Pull Request + +# Only run for merged 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 when the PR comes from a forked repo) +on: + pull_request_target: + types: [ closed ] + branches: + - main + - 'dspace-**' + +permissions: + contents: write # so action can add comments + pull-requests: write # so action can create pull requests + +jobs: + port_pr: + runs-on: ubuntu-latest + # Don't run on closed *unmerged* pull requests + if: github.event.pull_request.merged + steps: + # Checkout code + - uses: actions/checkout@v3 + # Port PR to other branch (ONLY if labeled with "port to") + # See https://github.com/korthout/backport-action + - name: Create backport pull requests + uses: korthout/backport-action@v1 + with: + # Trigger based on a "port to [branch]" label on PR + # (This label must specify the branch name to port to) + label_pattern: '^port to ([^ ]+)$' + # Title to add to the (newly created) port PR + pull_title: '[Port ${target_branch}] ${pull_title}' + # Description to add to the (newly created) port PR + pull_description: 'Port of #${pull_number} by @${pull_author} to `${target_branch}`.' + # Copy all labels from original PR to (newly created) port PR + # NOTE: The labels matching 'label_pattern' are automatically excluded + copy_labels_pattern: '.*' + # Use a personal access token (PAT) to create PR as 'dspace-bot' user. + # A PAT is required in order for the new PR to trigger its own actions (for CI checks) + github_token: ${{ secrets.PR_PORT_TOKEN }} \ No newline at end of file From 867ae9c341368113c1d9a6746f95e03b136df76d Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Fri, 28 Jul 2023 14:11:08 -0500 Subject: [PATCH 0006/1005] Minor update to label_merge_conflicts to ignore any errors (seem random at this time) (cherry picked from commit d75d12b423206e0261372b372c27c04c36336cff) --- .github/workflows/label_merge_conflicts.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/label_merge_conflicts.yml b/.github/workflows/label_merge_conflicts.yml index 7ea33277411..ccc6c401c0b 100644 --- a/.github/workflows/label_merge_conflicts.yml +++ b/.github/workflows/label_merge_conflicts.yml @@ -25,6 +25,8 @@ jobs: # See: https://github.com/prince-chrismc/label-merge-conflicts-action - name: Auto-label PRs with merge conflicts uses: prince-chrismc/label-merge-conflicts-action@v3 + # Ignore any failures -- may occur (randomly?) for older, outdated PRs. + continue-on-error: true # Add "merge conflict" label if a merge conflict is detected. Remove it when resolved. # Note, the authentication token is created automatically # See: https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token From 1b9656b1351a0de44e15c3d26cab56645b200956 Mon Sep 17 00:00:00 2001 From: Alan Orth Date: Fri, 30 Jun 2023 09:49:01 +0300 Subject: [PATCH 0007/1005] src/assets/i18n: update Finnish language strings Contributed by Reeta Kuukoski from the National Library of Finland. --- src/assets/i18n/fi.json5 | 3382 +++++++++++++++++++++++++++++++++----- 1 file changed, 2975 insertions(+), 407 deletions(-) diff --git a/src/assets/i18n/fi.json5 b/src/assets/i18n/fi.json5 index 62e7e6bffe2..c56fcb6fecc 100644 --- a/src/assets/i18n/fi.json5 +++ b/src/assets/i18n/fi.json5 @@ -9,8 +9,6 @@ // "401.unauthorized": "unauthorized", "401.unauthorized": "valtuuttamaton", - - // "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": "Sinulla ei ole oikeutta nähdä sivua. Voit palata etusivulle alla olevalla painikkeella.", @@ -20,10 +18,17 @@ // "403.forbidden": "forbidden", "403.forbidden": "kielletty", + // "500.page-internal-server-error": "Service Unavailable", + "500.page-internal-server-error": "Palvelu ei ole saatavilla", + // "500.help": "The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.", + "500.help": "Palvelin ei tilapäisesti pysty käsittelemään pyyntöäsi huoltokatkon tai kapasiteettiongelmien vuoksi. Yritä myöhemmin uudelleen.", + + // "500.link.home-page": "Take me to the home page", + "500.link.home-page": "Palaa etusivulle", // "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": "Hakemaasi sivua ei löytynyt. Sivu on voitu siirtää tai poistaa. Painamalla alapuolella olevaa nappia palaat etusivulle. ", + "404.help": "Hakemaasi sivua ei löytynyt. Sivu on voitu siirtää tai poistaa. Painamalla alapuolella olevaa painiketta palaat etusivulle. ", // "404.link.home-page": "Take me to the home page", "404.link.home-page": "Palaa etusivulle", @@ -31,6 +36,36 @@ // "404.page-not-found": "page not found", "404.page-not-found": "sivua ei löytynyt", + // "error-page.description.401": "unauthorized", + "error-page.description.401": "valtuuttamaton", + + // "error-page.description.403": "forbidden", + "error-page.description.403": "kielletty", + + // "error-page.description.500": "Service Unavailable", + "error-page.description.500": "Palvelu ei ole saatavilla", + + // "error-page.description.404": "page not found", + "error-page.description.404": "sivua ei löytynyt", + + // "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": "Virhe ORCID-kirjautumisessa. Varmista, että olet tuonut ORCID-tilisi sähköpostiosoitteen DSpaceen. Jos virhe jatkuu, ota yhteyttä ylläpitäjään.", + + // "access-status.embargo.listelement.badge": "Embargo", + "access-status.embargo.listelement.badge": "Embargo", + + // "access-status.metadata.only.listelement.badge": "Metadata only", + "access-status.metadata.only.listelement.badge": "Vain metadata", + + // "access-status.open.access.listelement.badge": "Open Access", + "access-status.open.access.listelement.badge": "Open Access", + + // "access-status.restricted.listelement.badge": "Restricted", + "access-status.restricted.listelement.badge": "Rajattu", + + // "access-status.unknown.listelement.badge": "Unknown", + "access-status.unknown.listelement.badge": "Tuntematon", + // "admin.curation-tasks.breadcrumbs": "System curation tasks", "admin.curation-tasks.breadcrumbs": "Järjestelmän kuratointitehtävät", @@ -157,11 +192,11 @@ // "admin.registries.bitstream-formats.table.name": "Name", "admin.registries.bitstream-formats.table.name": "Nimi", - // "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": "Return", - "admin.registries.bitstream-formats.table.return": "Palaa", + // "admin.registries.bitstream-formats.table.return": "Back", + "admin.registries.bitstream-formats.table.return": "Paluu", // "admin.registries.bitstream-formats.table.supportLevel.KNOWN": "Known", "admin.registries.bitstream-formats.table.supportLevel.KNOWN": "Tunnettu", @@ -175,10 +210,8 @@ // "admin.registries.bitstream-formats.table.supportLevel.head": "Support Level", "admin.registries.bitstream-formats.table.supportLevel.head": "Tukitaso", - // "admin.registries.bitstream-formats.title": "DSpace Angular :: Bitstream Format Registry", - "admin.registries.bitstream-formats.title": "DSpace Angular :: Tiedostoformaattirekisteri", - - + // "admin.registries.bitstream-formats.title": "Bitstream Format Registry", + "admin.registries.bitstream-formats.title": "Tiedostoformaattirekisteri", // "admin.registries.metadata.breadcrumbs": "Metadata registry", "admin.registries.metadata.breadcrumbs": "Metadatarekisteri", @@ -216,10 +249,8 @@ // "admin.registries.metadata.schemas.table.namespace": "Namespace", "admin.registries.metadata.schemas.table.namespace": "Nimiavaruus", - // "admin.registries.metadata.title": "DSpace Angular :: Metadata Registry", - "admin.registries.metadata.title": "DSpace Angular :: Metadatarekisteri", - - + // "admin.registries.metadata.title": "Metadata Registry", + "admin.registries.metadata.title": "Metadatarekisteri", // "admin.registries.schema.breadcrumbs": "Metadata schema", "admin.registries.schema.breadcrumbs": "Metadataskeema", @@ -293,13 +324,11 @@ // "admin.registries.schema.notification.success": "Success", "admin.registries.schema.notification.success": "Valmis", - // "admin.registries.schema.return": "Return", - "admin.registries.schema.return": "Palaa", - - // "admin.registries.schema.title": "DSpace Angular :: Metadata Schema Registry", - "admin.registries.schema.title": "DSpace Angular :: Metadataskeemarekisteri", - + // "admin.registries.schema.return": "Back", + "admin.registries.schema.return": "Paluu", + // "admin.registries.schema.title": "Metadata Schema Registry", + "admin.registries.schema.title": "Metadataskeemarekisteri", // "admin.access-control.epeople.actions.delete": "Delete EPerson", "admin.access-control.epeople.actions.delete": "Poista käyttäjä", @@ -313,7 +342,10 @@ // "admin.access-control.epeople.actions.stop-impersonating": "Stop impersonating EPerson", "admin.access-control.epeople.actions.stop-impersonating": "Lopeta käyttäjänä esiintyminen", - // "admin.access-control.epeople.title": "DSpace Angular :: EPeople", + // "admin.access-control.epeople.breadcrumbs": "EPeople", + "admin.access-control.epeople.breadcrumbs": "Käyttäjät", + + // "admin.access-control.epeople.title": "EPeople", "admin.access-control.epeople.title": "DSpace Angular :: Käyttäjät", // "admin.access-control.epeople.head": "EPeople", @@ -334,6 +366,9 @@ // "admin.access-control.epeople.search.button": "Search", "admin.access-control.epeople.search.button": "Hae", + // "admin.access-control.epeople.search.placeholder": "Search people...", + "admin.access-control.epeople.search.placeholder": "Hae käyttäjiä...", + // "admin.access-control.epeople.button.add": "Add EPerson", "admin.access-control.epeople.button.add": "Lisää käyttäjä", @@ -352,6 +387,9 @@ // "admin.access-control.epeople.table.edit.buttons.edit": "Edit \"{{name}}\"", "admin.access-control.epeople.table.edit.buttons.edit": "Muokkaa \"{{name}}\"", + // "admin.access-control.epeople.table.edit.buttons.edit-disabled": "You are not authorized to edit this group", + "admin.access-control.epeople.table.edit.buttons.edit-disabled": "Sinulla ei ole valtuuksia muokata tätä ryhmää", + // "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"", "admin.access-control.epeople.table.edit.buttons.remove": "Poista \"{{name}}\"", @@ -382,6 +420,9 @@ // "admin.access-control.epeople.form.requireCertificate": "Requires certificate", "admin.access-control.epeople.form.requireCertificate": "Vaatii sertifikaatin", + // "admin.access-control.epeople.form.return": "Back", + "admin.access-control.epeople.form.return": "Paluu", + // "admin.access-control.epeople.form.notification.created.success": "Successfully created EPerson \"{{name}}\"", "admin.access-control.epeople.form.notification.created.success": "Käyttäjä \"{{name}}\" luotu", @@ -415,6 +456,9 @@ // "admin.access-control.epeople.form.table.name": "Name", "admin.access-control.epeople.form.table.name": "Nimi", + // "admin.access-control.epeople.form.table.collectionOrCommunity": "Collection/Community", + "admin.access-control.epeople.form.table.collectionOrCommunity": "Kokoelma/Yhteisö", + // "admin.access-control.epeople.form.memberOfNoGroups": "This EPerson is not a member of any groups", "admin.access-control.epeople.form.memberOfNoGroups": "Tämä käyttäjä ei kuulu mihinkään ryhmään", @@ -427,16 +471,23 @@ // "admin.access-control.epeople.notification.deleted.success": "Successfully deleted EPerson: \"{{name}}\"", "admin.access-control.epeople.notification.deleted.success": "Käyttäjä poistettu: \"{{name}}\"", + // "admin.access-control.groups.title": "Groups", + "admin.access-control.groups.title": "Ryhmät", + // "admin.access-control.groups.breadcrumbs": "Groups", + "admin.access-control.groups.breadcrumbs": "Ryhmät", - // "admin.access-control.groups.title": "DSpace Angular :: Groups", - "admin.access-control.groups.title": "DSpace Angular :: Ryhmät", + // "admin.access-control.groups.singleGroup.breadcrumbs": "Edit Group", + // "admin.access-control.groups.singleGroup.breadcrumbs": "Ryhmän muokkaus", - // "admin.access-control.groups.title.singleGroup": "DSpace Angular :: Edit Group", - "admin.access-control.groups.title.singleGroup": "DSpace Angular :: Ryhmän muokkaus", + // "admin.access-control.groups.title.singleGroup": "Edit Group", + "admin.access-control.groups.title.singleGroup": "Ryhmän muokkaus", - // "admin.access-control.groups.title.addGroup": "DSpace Angular :: New Group", - "admin.access-control.groups.title.addGroup": "DSpace Angular :: Uusi ryhmä", + // "admin.access-control.groups.title.addGroup": "New Group", + "admin.access-control.groups.title.addGroup": "Uusi ryhmä", + + // "admin.access-control.groups.addGroup.breadcrumbs": "New Group", + "admin.access-control.groups.addGroup.breadcrumbs": "uusi ryhmä", // "admin.access-control.groups.head": "Groups", "admin.access-control.groups.head": "Ryhmät", @@ -453,12 +504,18 @@ // "admin.access-control.groups.search.button": "Search", "admin.access-control.groups.search.button": "Hae", + // "admin.access-control.groups.search.placeholder": "Search groups...", + "admin.access-control.groups.search.placeholder": "Hae ryhmiä...", + // "admin.access-control.groups.table.id": "ID", "admin.access-control.groups.table.id": "ID", // "admin.access-control.groups.table.name": "Name", "admin.access-control.groups.table.name": "Nimi", + // "admin.access-control.groups.table.collectionOrCommunity": "Collection/Community", + "admin.access-control.groups.table.collectionOrCommunity": "Kokoelma/Yhteisö", + // "admin.access-control.groups.table.members": "Members", "admin.access-control.groups.table.members": "Jäsenet", @@ -483,8 +540,6 @@ // "admin.access-control.groups.notification.deleted.failure.content": "Cause: \"{{cause}}\"", "admin.access-control.groups.notification.deleted.failure.content": "Syy: \"{{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": "Tämä ryhmä on pysyvä, eikä sitä voi muokata tai poistaa. Ryhmään voi kuitenkin lisätä ja poistaa jäseniä tällä sivulla.", @@ -500,6 +555,9 @@ // "admin.access-control.groups.form.groupName": "Group name", "admin.access-control.groups.form.groupName": "Ryhmän nimi", + // "admin.access-control.groups.form.groupCommunity": "Community or Collection", + "admin.access-control.groups.form.groupCommunity": "Yhteisö tai kokoelma", + // "admin.access-control.groups.form.groupDescription": "Description", "admin.access-control.groups.form.groupDescription": "Kuvaus", @@ -572,6 +630,15 @@ // "admin.access-control.groups.form.members-list.table.name": "Name", "admin.access-control.groups.form.members-list.table.name": "Nimi", + // "admin.access-control.groups.form.members-list.table.identity": "Identity", + "admin.access-control.groups.form.members-list.table.identity": "Identiteetti", + + // "admin.access-control.groups.form.members-list.table.email": "Email", + "admin.access-control.groups.form.members-list.table.email": "Sähköpostiosoite", + + // "admin.access-control.groups.form.members-list.table.netid": "NetID", + "admin.access-control.groups.form.members-list.table.netid": "Käyttäjätunnus", + // "admin.access-control.groups.form.members-list.table.edit": "Remove / Add", "admin.access-control.groups.form.members-list.table.edit": "Poista / Lisää", @@ -626,6 +693,9 @@ // "admin.access-control.groups.form.subgroups-list.table.name": "Name", "admin.access-control.groups.form.subgroups-list.table.name": "Nimi", + // "admin.access-control.groups.form.subgroups-list.table.collectionOrCommunity": "Collection/Community", + "admin.access-control.groups.form.subgroups-list.table.collectionOrCommunity": "Kokoelma/Yhteisö", + // "admin.access-control.groups.form.subgroups-list.table.edit": "Remove / Add", "admin.access-control.groups.form.subgroups-list.table.edit": "Poista / Lisää", @@ -662,10 +732,18 @@ // "admin.access-control.groups.form.subgroups-list.no-subgroups-yet": "No subgroups in group yet.", "admin.access-control.groups.form.subgroups-list.no-subgroups-yet": "Ryhmällä ei ole alaryhmiä.", - // "admin.access-control.groups.form.return": "Return to groups", - "admin.access-control.groups.form.return": "Palaa ryhmiin", + // "admin.access-control.groups.form.return": "Back", + "admin.access-control.groups.form.return": "Paluu", + // "admin.access-control.groups.form.tooltip.editGroupPage": "On this page, you can modify the properties and members of a group. In the top section, you can edit the group name and description, unless this is an admin group for a collection or community, in which case the group name and description are auto-generated and cannot be edited. In the following sections, you can edit group membership. See [the wiki](https://wiki.lyrasis.org/display/DSDOC7x/Create+or+manage+a+user+group) for more details.", + "admin.access-control.groups.form.tooltip.editGroupPage": "Tällä sivulla voit muokata ryhmän ominaisuuksia ja jäseniä. Yläosassa voit muokata ryhmän nimeä ja kuvausta, paitsi jos kyseessä on kokoelman tai yhteisön ylläpitäjäryhmä, jolloin ryhmän nimi ja kuvaus luodaan automaattisesti, eikä niitä voi muokata. Muissa osioissa voit muokata ryhmän jäsenyyttä. Katso lisätietoja wiki-sivulta (https://wiki.lyrasis.org/display/DSDOC7x/Create+or+manage+a+user+group).", + // "admin.access-control.groups.form.tooltip.editGroup.addEpeople": "To add or remove an EPerson to/from this group, either click the 'Browse All' button or use the search bar below to search for users (use the dropdown to the left of the search bar to choose whether to search by metadata or by email). Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages. Once you are ready, save your changes by clicking the 'Save' button in the top section.", + "admin.access-control.groups.form.tooltip.editGroup.addEpeople": "Voit lisätä tai poistaa ryhmän käyttäjän joko napsauttamalla 'Selaa kaikkia' -painiketta tai käyttämällä alla olevaa hakupalkkia käyttäjien etsimiseen (käytä hakupalkin vasemmalla puolella olevaa pudotusvalikkoa valitaksesi, haetaanko metatietojen vai sähköpostin perusteella). Napsauta sitten plus-kuvaketta jokaisen käyttäjän kohdalla, jonka haluat lisätä alla olevaan luetteloon, tai roskakorikuvaketta jokaisen käyttäjän kohdalla, jonka haluat poistaa. Alla olevassa luettelossa voi olla useita sivuja: voit siirtyä seuraaville sivuille luettelon alapuolella olevilla sivunohjaimilla. Kun olet valmis, tallenna muutokset napsauttamalla yläosassa olevaa Tallenna-painiketta.", + + // "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "To add or remove a Subgroup to/from this group, either click the 'Browse All' button or use the search bar below to search for users. Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages. Once you are ready, save your changes by clicking the 'Save' button in the top section.", + // TODO New key - Add a translation - ree made ticket 2321 to DSpace's github + "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "Jos haluat lisätä tai poistaa alaryhmän tähän ryhmään tai tästä ryhmästä, napsauta joko 'Selaa kaikkia' -painiketta tai käytä alla olevaa hakupalkkia käyttäjien etsimiseen. Napsauta sitten luettelossa plus-kuvaketta jokaisen käyttäjän kohdalla, jonka haluat lisätä, tai roskakorikuvaketta jokaisen käyttäjän kohdalla, jonka haluat poistaa. Luettelossa voi olla useita sivuja: voit siirtyä seuraaville sivuille luettelon alapuolella olevilla sivunohjaimilla. Kun olet valmis, tallenna muutokset napsauttamalla yläosassa olevaa Tallenna-painiketta.", // "admin.search.breadcrumbs": "Administrative Search", "admin.search.breadcrumbs": "Ylläpitäjän haku", @@ -682,17 +760,17 @@ // "admin.search.item.edit": "Edit", "admin.search.item.edit": "Muokkaa", - // "admin.search.item.make-private": "Make Private", + // "admin.search.item.make-private": "Make non-discoverable", "admin.search.item.make-private": "Tee yksityiseksi", - // "admin.search.item.make-public": "Make Public", + // "admin.search.item.make-public": "Make discoverable", "admin.search.item.make-public": "Tee julkiseksi", // "admin.search.item.move": "Move", "admin.search.item.move": "Siirrä", // "admin.search.item.reinstate": "Reinstate", - "admin.search.item.reinstate": "Palauta käyttöön", + "admin.search.item.reinstate": "Palauta", // "admin.search.item.withdraw": "Withdraw", "admin.search.item.withdraw": "Poista käytöstä", @@ -703,9 +781,6 @@ // "administrativeView.search.results.head": "Administrative Search", "administrativeView.search.results.head": "Ylläpitäjän haku", - - - // "admin.workflow.breadcrumbs": "Administer Workflow", "admin.workflow.breadcrumbs": "Hallinnoi työnkulkua", @@ -715,43 +790,191 @@ // "admin.workflow.item.workflow": "Workflow", "admin.workflow.item.workflow": "Työnkulku", + // "admin.workflow.item.workspace": "Workspace", + "admin.workflow.item.workspace": "Työtila", + // "admin.workflow.item.delete": "Delete", "admin.workflow.item.delete": "Poista", // "admin.workflow.item.send-back": "Send back", "admin.workflow.item.send-back": "Lähetä takaisin", + // "admin.workflow.item.policies": "Policies", + "admin.workflow.item.policies": "Käytännöt", + // "admin.workflow.item.supervision": "Supervision", + "admin.workflow.item.supervision": "Valvonta", // "admin.metadata-import.breadcrumbs": "Import Metadata", "admin.metadata-import.breadcrumbs": "Importoi metadata", + // "admin.batch-import.breadcrumbs": "Import Batch", + "admin.batch-import.breadcrumbs": "Importoi erä", + // "admin.metadata-import.title": "Import Metadata", "admin.metadata-import.title": "Importoi metadata", + // "admin.batch-import.title": "Import Batch", + "admin.batch-import.title": "Importoi erä", + // "admin.metadata-import.page.header": "Import Metadata", "admin.metadata-import.page.header": "Importoi metadata", + // "admin.batch-import.page.header": "Import Batch", + "admin.batch-import.page.header": "Importoi erä", + // "admin.metadata-import.page.help": "You can drop or browse CSV files that contain batch metadata operations on files here", "admin.metadata-import.page.help": "Voit pudottaa tähän tai selata CSV-tiedostoja, joilla voit tehdä metadatatoimintoja usealle tietueelle", + // "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": "Valitse kokoelma, johon tietueet importoidaan. Sen jälkeen pudota tai selaa esiin importoitavat tietueet sisältävä Simple Archive Format (SAF) -ZIP-tiedosto.", + + // "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": "Importoinnin voi tehdä joko lataamalla tiedoston tai URL-osoitteen kautta. Käytä yllä olevaa kytkintä valitaksesi syöttötavan.", + // "admin.metadata-import.page.dropMsg": "Drop a metadata CSV to import", "admin.metadata-import.page.dropMsg": "Pudota CSV-metadata importoimista varten", + // "admin.batch-import.page.dropMsg": "Drop a batch ZIP to import", + "admin.batch-import.page.dropMsg": "Pudota erän ZIP-tiedosto importoimista varten", + // "admin.metadata-import.page.dropMsgReplace": "Drop to replace the metadata CSV to import", "admin.metadata-import.page.dropMsgReplace": "Pudota korvataksesi importoitava CSV-metadata", - // "admin.metadata-import.page.button.return": "Return", + // "admin.batch-import.page.dropMsgReplace": "Drop to replace the batch ZIP to import", + "admin.batch-import.page.dropMsgReplace": "Pudota korvataksesi importoitava erän ZIP-tiedosto", + + // "admin.metadata-import.page.button.return": "Back", "admin.metadata-import.page.button.return": "Paluu", // "admin.metadata-import.page.button.proceed": "Proceed", "admin.metadata-import.page.button.proceed": "Jatka", + // "admin.metadata-import.page.button.select-collection": "Select Collection", + "admin.metadata-import.page.button.select-collection": "Valitse kokoelma", + // "admin.metadata-import.page.error.addFile": "Select file first!", "admin.metadata-import.page.error.addFile": "Valitse ensin tiedosto!", + // "admin.metadata-import.page.error.addFileUrl": "Insert file url first!", + "admin.metadata-import.page.error.addFileUrl": "Syötä tiedoston URL ensin!", + + // "admin.batch-import.page.error.addFile": "Select Zip file first!", + "admin.batch-import.page.error.addFile": "Valitse ZIP-tiedosto ensin!", + + // "admin.metadata-import.page.toggle.upload": "Upload", + "admin.metadata-import.page.toggle.upload": "Lataa", + + // "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": "Syötä erän ZIP-URL importoitavaksi", + + // "admin.metadata-import.page.validateOnly": "Validate Only", + "admin.metadata-import.page.validateOnly": "Pelkkä validointi", + + // "admin.metadata-import.page.validateOnly.hint": "When selected, the uploaded CSV will be validated. You will receive a report of detected changes, but no changes will be saved.", + "admin.metadata-import.page.validateOnly.hint": "Kun tämä valitaan, ladattu CSV-tiedosto validoidaan. Saat raportin havaituista muutoksista, mutta muutoksia ei tallenneta.", + + // "advanced-workflow-action.rating.form.rating.label": "Rating", + "advanced-workflow-action.rating.form.rating.label": "Arviointi", + + // "advanced-workflow-action.rating.form.rating.error": "You must rate the item", + "advanced-workflow-action.rating.form.rating.error": "Sinun on arvioitava tietua", + + // "advanced-workflow-action.rating.form.review.label": "Review", + "advanced-workflow-action.rating.form.review.label": "Tarkasta", + + // "advanced-workflow-action.rating.form.review.error": "You must enter a review to submit this rating", + "advanced-workflow-action.rating.form.review.error": "Sinun on annettava arvostelu lähettääksesi tämän arvioinnin", + + // "advanced-workflow-action.rating.description": "Please select a rating below", + "advanced-workflow-action.rating.description": "Valitse arviointi alapuolelta", + + // "advanced-workflow-action.rating.description-requiredDescription": "Please select a rating below and also add a review", + "advanced-workflow-action.rating.description-requiredDescription": "Valitse arviointi alapuolelta. Lisää myös arvostelu", + + // "advanced-workflow-action.select-reviewer.description-single": "Please select a single reviewer below before submitting", + "advanced-workflow-action.select-reviewer.description-single": "Valitse yksi tarkastaja alapuolelta ennen lähettämistä", + + // "advanced-workflow-action.select-reviewer.description-multiple": "Please select one or more reviewers below before submitting", + "advanced-workflow-action.select-reviewer.description-multiple": "Valitse yksi tai useampi tarkastaja alapuolelta ennen lähettämistä", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.head": "EPeople", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.head": "Käyttäjät", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.head": "Add EPeople", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.head": "Lisää käyttäjiä", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.button.see-all": "Browse All", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.button.see-all": "Selaa kaikkia", + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.headMembers": "Current Members", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.headMembers": "Nykyiset jäsenet", + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.metadata": "Metadata", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.metadata": "Metadata", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.email": "E-mail (exact)", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.email": "Sähköpostiosoite (oikea)", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.button": "Search", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.button": "Hae", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.id": "ID", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.id": "ID", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.name": "Name", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.name": "Nimi", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.identity": "Identity", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.identity": "Identiteetti", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.email": "Email", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.email": "Sähköpostiosoite", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.netid": "NetID", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.netid": "Käyttäjätunnus", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit": "Remove / Add", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit": "Poista / Lisää", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.remove": "Remove member with name \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.remove": "Poista jäsen nimellä \"{{name}}\"", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.addMember": "Successfully added member: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.addMember": "Jäsen lisätty: \"{{name}}\"", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.addMember": "Failed to add member: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.addMember": "Jäsenen lisäys epäonnistui: \"{{name}}\"", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.deleteMember": "Successfully deleted member: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.deleteMember": "Jäsen poistettu: \"{{name}}\"", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.deleteMember": "Failed to delete member: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.deleteMember": "Jäsenen poisto epäonnistui: \"{{name}}\"", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.add": "Add member with name \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.add": "Lisää jäsen nimellä \"{{name}}\"", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.noActiveGroup": "No current active group, submit a name first.", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.noActiveGroup": "Ei aktiivista ryhmää, syötä ensin nimi", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-members-yet": "No members in group yet, search and add.", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-members-yet": "Ryhmässä ei ole vielä jäseniä, hae ja lisää.", + + // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-items": "No EPeople found in that search", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-items": "Haku ei palauttanut käyttäjiä", + + // "advanced-workflow-action.select-reviewer.no-reviewer-selected.error": "No reviewer selected.", + "advanced-workflow-action.select-reviewer.no-reviewer-selected.error": "Ei valittua tarkastajaa.", + + // "admin.batch-import.page.validateOnly.hint": "When selected, the uploaded ZIP will be validated. You will receive a report of detected changes, but no changes will be saved.", + "admin.batch-import.page.validateOnly.hint": "Kun tämä valitaan, ladattu ZIP-tiedosto validoidaan. the uploaded ZIP will be validated. Saat raportin havaituista muutoksista, mutta muutoksia ei tallenneta.", + + // "admin.batch-import.page.remove": "remove", + "admin.batch-import.page.remove": "poista", // "auth.errors.invalid-user": "Invalid email address or password.", "auth.errors.invalid-user": "Virheellinen sähköpostiosoite tai salasana.", @@ -759,7 +982,23 @@ // "auth.messages.expired": "Your session has expired. Please log in again.", "auth.messages.expired": "Istuntosi on vanhentunut. Kirjaudu uudelleen.", + // "auth.messages.token-refresh-failed": "Refreshing your session token failed. Please log in again.", + "auth.messages.token-refresh-failed": "Istuntotunnisteen päivittäminen epäonnistui. Kirjaudu uudelleen.", + + // "bitstream.download.page": "Now downloading {{bitstream}}...", + "bitstream.download.page": "Nyt ladataan {{bitstream}}...", + + // "bitstream.download.page.back": "Back", + "bitstream.download.page.back": "Paluu", + + // "bitstream.edit.authorizations.link": "Edit bitstream's Policies", + "bitstream.edit.authorizations.link": "Muokkaa tiedostokäytäntöjä", + + // "bitstream.edit.authorizations.title": "Edit bitstream's Policies", + "bitstream.edit.authorizations.title": "Muokkaa tiedostokäytäntöjä", + // "bitstream.edit.return": "Back", + "bitstream.edit.return": "Paluu", // "bitstream.edit.bitstream": "Bitstream: ", "bitstream.edit.bitstream": "Tiedosto: ", @@ -803,6 +1042,33 @@ // "bitstream.edit.notifications.error.format.title": "An error occurred saving the bitstream's format", "bitstream.edit.notifications.error.format.title": "Virhe tallennettaessa tiedoston formaattia", + // "bitstream.edit.notifications.error.primaryBitstream.title": "An error occurred saving the primary bitstream", + "bitstream.edit.notifications.error.primaryBitstream.title": "Virhe tallennettaessa päätiedostoa", + + // "bitstream.edit.form.iiifLabel.label": "IIIF Label", + "bitstream.edit.form.iiifLabel.label": "IIIF-nimike", + + // "bitstream.edit.form.iiifLabel.hint": "Canvas label for this image. If not provided default label will be used.", + "bitstream.edit.form.iiifLabel.hint": "Kuvan canvasin nimike. Ellei nimikettä anneta, käytetään oletusnimikettä.", + + // "bitstream.edit.form.iiifToc.label": "IIIF Table of Contents", + "bitstream.edit.form.iiifToc.label": "IIIF-sisällysluettelo", + + // "bitstream.edit.form.iiifToc.hint": "Adding text here makes this the start of a new table of contents range.", + "bitstream.edit.form.iiifToc.hint": "Jos tekstiä lisätään tähän, tästä alkaa uusi sisällysluetteloaihe.", + + // "bitstream.edit.form.iiifWidth.label": "IIIF Canvas Width", + "bitstream.edit.form.iiifWidth.label": "IIIF-canvasin leveys", + + // "bitstream.edit.form.iiifWidth.hint": "The canvas width should usually match the image width.", + "bitstream.edit.form.iiifWidth.hint": "Canvasin leveyden tulee vastata kuvan leveyttä.", + + // "bitstream.edit.form.iiifHeight.label": "IIIF Canvas Height", + "bitstream.edit.form.iiifHeight.label": "IIIF-canvasin korkeus", + + // "bitstream.edit.form.iiifHeight.hint": "The canvas height should usually match the image height.", + "bitstream.edit.form.iiifHeight.hint": "Canvasin korkeuden tulee vastata kuvan korkeutta.", + // "bitstream.edit.notifications.saved.content": "Your changes to this bitstream were saved.", "bitstream.edit.notifications.saved.content": "Muutokset tiedostoon on tallennettu.", @@ -812,7 +1078,65 @@ // "bitstream.edit.title": "Edit bitstream", "bitstream.edit.title": "Muokkaa tiedostoa", + // "bitstream-request-a-copy.alert.canDownload1": "You already have access to this file. If you want to download the file, click ", + "bitstream-request-a-copy.alert.canDownload1": "Sinulla on jo pääsy tähän tiedostoon. Jos haluat ladata tiedoston, napsauta ", + + // "bitstream-request-a-copy.alert.canDownload2": "here", + "bitstream-request-a-copy.alert.canDownload2": "tässä", + + // "bitstream-request-a-copy.header": "Request a copy of the file", + "bitstream-request-a-copy.header": "Pyydä tiedostokopiota", + + // "bitstream-request-a-copy.intro": "Enter the following information to request a copy for the following item: ", + "bitstream-request-a-copy.intro": "Syötä seuraavat tiedot pyytääksesi kopiota tietueesta: ", + + // "bitstream-request-a-copy.intro.bitstream.one": "Requesting the following file: ", + "bitstream-request-a-copy.intro.bitstream.one": "Pyydetään seuraavaa tiedostoa: ", + + // "bitstream-request-a-copy.intro.bitstream.all": "Requesting all files. ", + "bitstream-request-a-copy.intro.bitstream.all": "Pyydetään kaikkia tiedostoja. ", + + // "bitstream-request-a-copy.name.label": "Name *", + "bitstream-request-a-copy.name.label": "Nimi *", + + // "bitstream-request-a-copy.name.error": "The name is required", + "bitstream-request-a-copy.name.error": "Nimi on pakollinen tieto", + + // "bitstream-request-a-copy.email.label": "Your e-mail address *", + "bitstream-request-a-copy.email.label": "Sähköpostiosoite *", + + // "bitstream-request-a-copy.email.hint": "This email address is used for sending the file.", + "bitstream-request-a-copy.email.hint": "Tätä sähköpostiosoitetta käytetään tiedostoa lähetettäessä.", + + // "bitstream-request-a-copy.email.error": "Please enter a valid email address.", + "bitstream-request-a-copy.email.error": "Syötä toimiva sähköpostiosoite.", + + // "bitstream-request-a-copy.allfiles.label": "Files", + "bitstream-request-a-copy.allfiles.label": "Tiedostot", + + // "bitstream-request-a-copy.files-all-false.label": "Only the requested file", + "bitstream-request-a-copy.files-all-false.label": "Vain pyydetty tiedosto", + + // "bitstream-request-a-copy.files-all-true.label": "All files (of this item) in restricted access", + "bitstream-request-a-copy.files-all-true.label": "Kaikilla (tämän tietueen) tiedostoilla on rajattu käyttöoikeus", + + // "bitstream-request-a-copy.message.label": "Message", + "bitstream-request-a-copy.message.label": "Viesti", + + // "bitstream-request-a-copy.return": "Back", + "bitstream-request-a-copy.return": "Paluu", + // "bitstream-request-a-copy.submit": "Request copy", + "bitstream-request-a-copy.submit": "Pyydä kopio", + + // "bitstream-request-a-copy.submit.success": "The item request was submitted successfully.", + "bitstream-request-a-copy.submit.success": "Tietuepyyntö on lähetetty.", + + // "bitstream-request-a-copy.submit.error": "Something went wrong with submitting the item request.", + "bitstream-request-a-copy.submit.error": "Tapahtui virhe lähetettäessä tietuepyyntöä", + + // "browse.back.all-results": "All browse results", + "browse.back.all-results": "Kaikki selaustulokset", // "browse.comcol.by.author": "By Author", "browse.comcol.by.author": "Tekijän mukaan", @@ -823,6 +1147,9 @@ // "browse.comcol.by.subject": "By Subject", "browse.comcol.by.subject": "Asiasanan mukaan", + // "browse.comcol.by.srsc": "By Subject Category", + "browse.comcol.by.srsc": "Aihekategorian mukaan", + // "browse.comcol.by.title": "By Title", "browse.comcol.by.title": "Nimekkeen mukaan", @@ -853,17 +1180,35 @@ // "browse.metadata.subject.breadcrumbs": "Browse by Subject", "browse.metadata.subject.breadcrumbs": "Selaa asiasanan mukaan", + // "browse.metadata.srsc.breadcrumbs": "Browse by Subject Category", + "browse.metadata.srsc.breadcrumbs": "Selaa aihekategorian luokan mukaan", + // "browse.metadata.title.breadcrumbs": "Browse by Title", "browse.metadata.title.breadcrumbs": "Selaa nimekkeen mukaan", + // "pagination.next.button": "Next", + "pagination.next.button": "Seuraava", + + // "pagination.previous.button": "Previous", + "pagination.previous.button": "Edellinen", + + // "pagination.next.button.disabled.tooltip": "No more pages of results", + "pagination.next.button.disabled.tooltip": "Ei enempää tulossivuja", + + // "browse.startsWith": ", starting with {{ startsWith }}", + "browse.startsWith": ", alkaa kirjaimella {{ startsWith }}", + // "browse.startsWith.choose_start": "(Choose start)", "browse.startsWith.choose_start": "(Valitse alku)", // "browse.startsWith.choose_year": "(Choose year)", "browse.startsWith.choose_year": "(Valitse vuosi)", - // "browse.startsWith.jump": "Jump to a point in the index:", - "browse.startsWith.jump": "Hyppää indeksin kohtaan:", + // "browse.startsWith.choose_year.label": "Choose the issue year", + "browse.startsWith.choose_year.label": "Valitse julkaisuvuosi", + + // "browse.startsWith.jump": "Filter results by year or month", + "browse.startsWith.jump": "Suodata tulokset vuoden tai kuukauden mukaan", // "browse.startsWith.months.april": "April", "browse.startsWith.months.april": "Huhtikuu", @@ -895,6 +1240,9 @@ // "browse.startsWith.months.none": "(Choose month)", "browse.startsWith.months.none": "(Valitse kuukausi)", + // "browse.startsWith.months.none.label": "Choose the issue month", + "browse.startsWith.months.none.label": "Valitse julkaisukuukausi", + // "browse.startsWith.months.november": "November", "browse.startsWith.months.november": "Marraskuu", @@ -904,23 +1252,44 @@ // "browse.startsWith.months.september": "September", "browse.startsWith.months.september": "Syyskuu", - // "browse.startsWith.submit": "Go", - "browse.startsWith.submit": "Ok", + // "browse.startsWith.submit": "Browse", + "browse.startsWith.submit": "Selaa", + + // "browse.startsWith.type_date": "Filter results by date", + "browse.startsWith.type_date": "Suodata tulokset päivämäärän mukaan", - // "browse.startsWith.type_date": "Or type in a date (year-month):", - "browse.startsWith.type_date": "Tai anna päiväys (vuosi-kuukausi):", + // "browse.startsWith.type_date.label": "Or type in a date (year-month) and click on the Browse button", + "browse.startsWith.type_date.label": "Tai syötä päiväys (vuosi-kuukausi) ja napsauta Selaa-painiketta", - // "browse.startsWith.type_text": "Or enter first few letters:", - "browse.startsWith.type_text": "Tai anna muutama alkukirjain:", + // "browse.startsWith.type_text": "Filter results by typing the first few letters", + "browse.startsWith.type_text": "Suodata tuloksia antamalla muutama alkukirjain", - // "browse.title": "Browsing {{ collection }} by {{ field }} {{ value }}", - "browse.title": "Selataan {{ collection }}-kokoelmaa {{ field }}-kentän arvolla {{ value }}", + // "browse.startsWith.input": "Filter", + "browse.startsWith.input": "Suodata", + // "browse.taxonomy.button": "Browse", + "browse.taxonomy.button": "Selaa", + + // "browse.title": "Browsing {{ collection }} by {{ field }}{{ startsWith }} {{ value }}", + "browse.title": "Selataan {{ collection }}-kokoelmaa {{ field }}{{ startsWith }}-kentän arvolla {{ value }}", + + // "browse.title.page": "Browsing {{ collection }} by {{ field }} {{ value }}", + "browse.title.page": "Selataan {{ collection }}-kokoelmaa {{ field }}-kentän arvolla {{ value }}", + + // "search.browse.item-back": "Back to Results", + "search.browse.item-back": "Paluu tuloksiin", // "chips.remove": "Remove chip", "chips.remove": "Poista chip", + // "claimed-approved-search-result-list-element.title": "Approved", + "claimed-approved-search-result-list-element.title": "Hyväksytty", + + // "claimed-declined-search-result-list-element.title": "Rejected, sent back to submitter", + "claimed-declined-search-result-list-element.title": "Hylätty, lähetetty takaisin tallentajalle", + // "claimed-declined-task-search-result-list-element.title": "Declined, sent back to Review Manager's workflow", + "claimed-declined-task-search-result-list-element.title": "Kieltäydytty, lähetetty takaisin päätarkastajan työnkulkuun", // "collection.create.head": "Create a Collection", "collection.create.head": "Luo kokoelma", @@ -940,6 +1309,9 @@ // "collection.delete.confirm": "Confirm", "collection.delete.confirm": "Vahvista", + // "collection.delete.processing": "Deleting", + "collection.delete.processing": "Poistetaan", + // "collection.delete.head": "Delete Collection", "collection.delete.head": "Poista kokoelma", @@ -952,8 +1324,6 @@ // "collection.delete.text": "Are you sure you want to delete collection \"{{ dso }}\"", "collection.delete.text": "Haluatko varmasti poistaa kokoelman \"{{ dso }}\"", - - // "collection.edit.delete": "Delete this collection", "collection.edit.delete": "Poista kokoelma", @@ -963,8 +1333,6 @@ // "collection.edit.breadcrumbs": "Edit Collection", "collection.edit.breadcrumbs": "Muokkaa kokoelmaa", - - // "collection.edit.tabs.mapper.head": "Item Mapper", "collection.edit.tabs.mapper.head": "Tietueliitosväline", @@ -1016,13 +1384,20 @@ // "collection.edit.item-mapper.remove": "Remove selected item mappings", "collection.edit.item-mapper.remove": "Poista valitut tietueliitokset", + // "collection.edit.item-mapper.search-form.placeholder": "Search items...", + "collection.edit.item-mapper.search-form.placeholder": "Hae tietueita...", + // "collection.edit.item-mapper.tabs.browse": "Browse mapped items", "collection.edit.item-mapper.tabs.browse": "Selaa liitettyjä tietueita", // "collection.edit.item-mapper.tabs.map": "Map new items", "collection.edit.item-mapper.tabs.map": "Liitä uusia tietueita", + // "collection.edit.logo.delete.title": "Delete logo", + "collection.edit.logo.delete.title": "Poista logo", + // "collection.edit.logo.delete-undo.title": "Undo delete", + "collection.edit.logo.delete-undo.title": "Kumoa poisto", // "collection.edit.logo.label": "Collection logo", "collection.edit.logo.label": "Kokoelman logo", @@ -1045,15 +1420,11 @@ // "collection.edit.logo.upload": "Drop a Collection Logo to upload", "collection.edit.logo.upload": "Pudota kokoelman logo ladattavaksi", - - // "collection.edit.notifications.success": "Successfully edited the Collection", "collection.edit.notifications.success": "Kokoelman muokkaus onnistui", - // "collection.edit.return": "Return", - "collection.edit.return": "Palaa", - - + // "collection.edit.return": "Back", + "collection.edit.return": "Paluu", // "collection.edit.tabs.curate.head": "Curate", "collection.edit.tabs.curate.head": "Kuratoi", @@ -1067,6 +1438,15 @@ // "collection.edit.tabs.authorizations.title": "Collection Edit - Authorizations", "collection.edit.tabs.authorizations.title": "Kokoelman muokkaus - Käyttöoikeudet", + // "collection.edit.item.authorizations.load-bundle-button": "Load more bundles", + "collection.edit.item.authorizations.load-bundle-button": "Lataa lisää nippuja", + + // "collection.edit.item.authorizations.load-more-button": "Load more", + "collection.edit.item.authorizations.load-more-button": "Lataa lisää", + + // "collection.edit.item.authorizations.show-bitstreams-button": "Show bitstream policies for bundle", + "collection.edit.item.authorizations.show-bitstreams-button": "Näytä nipun tiedostokäytännöt", + // "collection.edit.tabs.metadata.head": "Edit Metadata", "collection.edit.tabs.metadata.head": "Muokkaa metadataa", @@ -1115,7 +1495,7 @@ // "collection.edit.tabs.source.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", "collection.edit.tabs.source.notifications.discarded.content": "Muutokset hylätty. Valitse 'Kumoa' palauttaaksesi muutokset", - // "collection.edit.tabs.source.notifications.discarded.title": "Changed discarded", + // "collection.edit.tabs.source.notifications.discarded.title": "Changes discarded", "collection.edit.tabs.source.notifications.discarded.title": "Muutokset hylätty", // "collection.edit.tabs.source.notifications.invalid.content": "Your changes were not saved. Please make sure all fields are valid before you save.", @@ -1133,8 +1513,6 @@ // "collection.edit.tabs.source.title": "Collection Edit - Content Source", "collection.edit.tabs.source.title": "Kokoelman muokkaus - Sisältölähde", - - // "collection.edit.template.add-button": "Add", "collection.edit.template.add-button": "Lisää", @@ -1150,12 +1528,18 @@ // "collection.edit.template.edit-button": "Edit", "collection.edit.template.edit-button": "Muokkaa", + // "collection.edit.template.error": "An error occurred retrieving the template item", + "collection.edit.template.error": "Virhe noudettaessa mallitietuetta", + // "collection.edit.template.head": "Edit Template Item for Collection \"{{ collection }}\"", "collection.edit.template.head": "Muokkaa kokoelman \"{{ collection }}\" mallitietuetta", // "collection.edit.template.label": "Template item", "collection.edit.template.label": "Mallitietue", + // "collection.edit.template.loading": "Loading template item...", + "collection.edit.template.loading": "Ladataan mallitietuetta...", + // "collection.edit.template.notifications.delete.error": "Failed to delete the item template", "collection.edit.template.notifications.delete.error": "Tietueen mallipohjan poisto epäonnistui", @@ -1165,8 +1549,6 @@ // "collection.edit.template.title": "Edit Template Item", "collection.edit.template.title": "Muokkaa mallitietuetta", - - // "collection.form.abstract": "Short Description", "collection.form.abstract": "Lyhyt kuvaus", @@ -1191,13 +1573,12 @@ // "collection.form.title": "Name", "collection.form.title": "Nimi", - + // "collection.form.entityType": "Entity Type", + "collection.form.entityType": "Entiteettityyppi", // "collection.listelement.badge": "Collection", "collection.listelement.badge": "Kokoelma", - - // "collection.page.browse.recent.head": "Recent Submissions", "collection.page.browse.recent.head": "Viimeksi lisätyt", @@ -1216,8 +1597,6 @@ // "collection.page.news": "News", "collection.page.news": "Uutiset", - - // "collection.select.confirm": "Confirm selected", "collection.select.confirm": "Vahvista valinta", @@ -1227,7 +1606,74 @@ // "collection.select.table.title": "Title", "collection.select.table.title": "Nimeke", + // "collection.source.controls.head": "Harvest Controls", + "collection.source.controls.head": "Harvointikontrollit", + + // "collection.source.controls.test.submit.error": "Something went wrong with initiating the testing of the settings", + "collection.source.controls.test.submit.error": "Virhe asetusten testaamisen valmistelussa", + + // "collection.source.controls.test.failed": "The script to test the settings has failed", + "collection.source.controls.test.failed": "Asetusten testausskripti epäonnistui", + + // "collection.source.controls.test.completed": "The script to test the settings has successfully finished", + "collection.source.controls.test.completed": "Asetusten testausskripti suoritettu", + + // "collection.source.controls.test.submit": "Test configuration", + "collection.source.controls.test.submit": "Testikonfiguraatio", + + // "collection.source.controls.test.running": "Testing configuration...", + "collection.source.controls.test.running": "Testataan konfiguraatiota...", + + // "collection.source.controls.import.submit.success": "The import has been successfully initiated", + "collection.source.controls.import.submit.success": "Importointi valmisteltu", + + // "collection.source.controls.import.submit.error": "Something went wrong with initiating the import", + "collection.source.controls.import.submit.error": "Virhe importoinnin valmistelussa", + + // "collection.source.controls.import.submit": "Import now", + "collection.source.controls.import.submit": "Importoi nyt", + // "collection.source.controls.import.running": "Importing...", + "collection.source.controls.import.running": "Importoidaan...", + + // "collection.source.controls.import.failed": "An error occurred during the import", + "collection.source.controls.import.failed": "Virhe importoinnissa", + + // "collection.source.controls.import.completed": "The import completed", + "collection.source.controls.import.completed": "Importointi valmis", + + // "collection.source.controls.reset.submit.success": "The reset and reimport has been successfully initiated", + "collection.source.controls.reset.submit.success": "Nollaus ja uudelleenimportointi valmisteltu", + + // "collection.source.controls.reset.submit.error": "Something went wrong with initiating the reset and reimport", + "collection.source.controls.reset.submit.error": "Virhe nollauksen ja uudelleenimportoinnin valmistelussa", + + // "collection.source.controls.reset.failed": "An error occurred during the reset and reimport", + "collection.source.controls.reset.failed": "Virhe nollauksessa ja uudelleenimportoinnissa", + + // "collection.source.controls.reset.completed": "The reset and reimport completed", + "collection.source.controls.reset.completed": "Nollaus ja uudelleenimportointi valmis", + + // "collection.source.controls.reset.submit": "Reset and reimport", + "collection.source.controls.reset.submit": "Nollaus ja uudelleenimportointi", + + // "collection.source.controls.reset.running": "Resetting and reimporting...", + "collection.source.controls.reset.running": "Nollataan ja uudelleenimportoidaan...", + + // "collection.source.controls.harvest.status": "Harvest status:", + "collection.source.controls.harvest.status": "Harvestoinnin tila:", + + // "collection.source.controls.harvest.start": "Harvest start time:", + "collection.source.controls.harvest.start": "Harvestoinnin aloitusaika:", + + // "collection.source.controls.harvest.last": "Last time harvested:", + "collection.source.controls.harvest.last": "Harvestoitu viimeksi::", + + // "collection.source.controls.harvest.message": "Harvest info:", + "collection.source.controls.harvest.message": "Harvestointitiedot:", + + // "collection.source.controls.harvest.no-information": "N/A", + "collection.source.controls.harvest.no-information": "Ei saatavilla", // "collection.source.update.notifications.error.content": "The provided settings have been tested and didn't work.", "collection.source.update.notifications.error.content": "Annetut asetukset on testattu. Ne eivät toimi.", @@ -1235,10 +1681,11 @@ // "collection.source.update.notifications.error.title": "Server Error", "collection.source.update.notifications.error.title": "Palvelinvirhe", + // "communityList.breadcrumbs": "Community List", + "communityList.breadcrumbs": "Yhteisöluettelo", - - // "communityList.tabTitle": "DSpace - Community List", - "communityList.tabTitle": "DSpace - Yhteisöluettelo", + // "communityList.tabTitle": "Community List", + "communityList.tabTitle": "Yhteisöluettelo", // "communityList.title": "List of Communities", "communityList.title": "Luettelo yhteisöistä", @@ -1246,8 +1693,6 @@ // "communityList.showMore": "Show More", "communityList.showMore": "Näytä lisää", - - // "community.create.head": "Create a Community", "community.create.head": "Luo yhteisö", @@ -1266,6 +1711,9 @@ // "community.delete.confirm": "Confirm", "community.delete.confirm": "Vahvista", + // "community.delete.processing": "Deleting...", + "community.delete.processing": "Poistetaan...", + // "community.delete.head": "Delete Community", "community.delete.head": "Poista yhteisö", @@ -1287,6 +1735,11 @@ // "community.edit.breadcrumbs": "Edit Community", "community.edit.breadcrumbs": "Muokkaa yhteisöä", + // "community.edit.logo.delete.title": "Delete logo", + "community.edit.logo.delete.title": "Poista logo", + + // "community.edit.logo.delete-undo.title": "Undo delete", + "community.edit.logo.delete-undo.title": "Kumoa poisto", // "community.edit.logo.label": "Community logo", "community.edit.logo.label": "Yhteisön logo", @@ -1309,8 +1762,6 @@ // "community.edit.logo.upload": "Drop a Community Logo to upload", "community.edit.logo.upload": "Pudota yhteisön logo ladattavaksi", - - // "community.edit.notifications.success": "Successfully edited the Community", "community.edit.notifications.success": "Yhteisön muokkaus onnistui", @@ -1320,10 +1771,8 @@ // "community.edit.notifications.error": "An error occured while editing the Community", "community.edit.notifications.error": "Virhe muokattaessa yhteisöä", - // "community.edit.return": "Return", - "community.edit.return": "Palaa", - - + // "community.edit.return": "Back", + "community.edit.return": "Paluu", // "community.edit.tabs.curate.head": "Curate", "community.edit.tabs.curate.head": "Kuratoi", @@ -1349,25 +1798,26 @@ // "community.edit.tabs.authorizations.title": "Community Edit - Authorizations", "community.edit.tabs.authorizations.title": "Yhteisön muokkaus - Käyttöoikeudet", - - // "community.listelement.badge": "Community", "community.listelement.badge": "Yhteisö", - - // "comcol-role.edit.no-group": "None", "comcol-role.edit.no-group": "Ei mitään", // "comcol-role.edit.create": "Create", "comcol-role.edit.create": "Luo", + // "comcol-role.edit.create.error.title": "Failed to create a group for the '{{ role }}' role", + "comcol-role.edit.create.error.title": "Ryhmän luonti '{{ role }}'-roolille epäonnistui", + // "comcol-role.edit.restrict": "Restrict", "comcol-role.edit.restrict": "Rajoita", // "comcol-role.edit.delete": "Delete", "comcol-role.edit.delete": "Poista", + // "comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group", + "comcol-role.edit.delete.error.title": "'{{ role }}'-roolin ryhmän poisto epäonnistui", // "comcol-role.edit.community-admin.name": "Administrators", "comcol-role.edit.community-admin.name": "Ylläpitäjät", @@ -1375,21 +1825,18 @@ // "comcol-role.edit.collection-admin.name": "Administrators", "comcol-role.edit.collection-admin.name": "Ylläpitäjät", - // "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": "Yhteisön ylläpitäjät voivat luoda alayhteisöjä tai kokoelmia ja hallita niitä sekä myöntää niihin hallintaoikeuksia. He päättävät, kuka saa tallentaa tietueita alakokoelmiin, muokata metadataa (tallennuksen jälkeen) ja lisätä (liittää) olemassa olevia tietueita muista kokoelmista (käyttöoikeuksien puitteissa).", // "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": "Kokoelman ylläpitäjät päättävät, kuka saa tallentaa tietueita alakokoelmiin, muokata metadataa (tallennuksen jälkeen) ja lisätä (liittää) olemassa olevia tietueita muista kokoelmista (k.o. kokoelman käyttöoikeuksien puitteissa).", - // "comcol-role.edit.submitters.name": "Submitters", "comcol-role.edit.submitters.name": "Tallentajat", // "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": "Käyttäjät ja ryhmät, joilla on oikeus tallentaa uusia tietueita tähän kokoelmaan", - // "comcol-role.edit.item_read.name": "Default item read access", "comcol-role.edit.item_read.name": "Tietueen oletuslukuoikeus", @@ -1399,7 +1846,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": "Uusien tietuiden oletuslukuoikeus on tällä hetkellä Anonymous.", - // "comcol-role.edit.bitstream_read.name": "Default bitstream read access", "comcol-role.edit.bitstream_read.name": "Tiedostojen oletuslukuoikeus", @@ -1409,28 +1855,29 @@ // "comcol-role.edit.bitstream_read.anonymous-group": "Default read for incoming bitstreams is currently set to Anonymous.", "comcol-role.edit.bitstream_read.anonymous-group": "Uusien tiedostojen oletuslukuoikeus on tällä hetkellä Anonymous.", - // "comcol-role.edit.editor.name": "Editors", "comcol-role.edit.editor.name": "Muokkaajat", // "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": "Muokkaajat voivat muokata uusien tallennusten metadataa sekä hyväksyä tai hylätä tallennukset.", - // "comcol-role.edit.finaleditor.name": "Final editors", "comcol-role.edit.finaleditor.name": "Loppumuokkaajat", // "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": "Loppumuokkaajat voivat muokata uusien tallennusten metadataa. He eivät voi hylätä tallennuksia.", - // "comcol-role.edit.reviewer.name": "Reviewers", "comcol-role.edit.reviewer.name": "Tarkastajat", // "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": "Tarkastajat voivat hyväksyä tai hylätä uudet tallennukset. He eivät voi muokata tallennusten metadataa.", + // "comcol-role.edit.scorereviewers.name": "Score Reviewers", + "comcol-role.edit.scorereviewers.name": "Arvosanatarkastajat", + // "comcol-role.edit.scorereviewers.description": "Reviewers are able to give a score to incoming submissions, this will define whether the submission will be rejected or not.", + "comcol-role.edit.scorereviewers.description": "Tarkastajat voivat antaa tallennettaville julkaisuille arvosanan, joka määrittää, hylätäänkö vai hyväksytäänkö tallennus.", // "community.form.abstract": "Short Description", "community.form.abstract": "Lyhyt kuvaus", @@ -1471,8 +1918,6 @@ // "community.sub-community-list.head": "Communities of this Community", "community.sub-community-list.head": "Yhteisön alayhteisöt", - - // "cookies.consent.accept-all": "Accept all", "cookies.consent.accept-all": "Hyväksy kaikki", @@ -1494,6 +1939,12 @@ // "cookies.consent.app.required.title": "(always required)", "cookies.consent.app.required.title": "(aina pakollinen)", + // "cookies.consent.app.disable-all.description": "Use this switch to enable or disable all services.", + "cookies.consent.app.disable-all.description": "Tästä kytkimestä voit ottaa kaikki palvelut käyttöön tai poistaa ne käytöstä", + + // "cookies.consent.app.disable-all.title": "Enable or disable all services", + "cookies.consent.app.disable-all.title": "Ota käyttöön tai poista käytöstä kaikki palvelut", + // "cookies.consent.update": "There were changes since your last visit, please update your consent.", "cookies.consent.update": "Viime käyntisi jälkeen on tehty muutoksia. Ole hyvä ja päivitä suostumuksesi.", @@ -1503,9 +1954,21 @@ // "cookies.consent.decline": "Decline", "cookies.consent.decline": "Kieltäydy", + // "cookies.consent.ok": "That's ok", + "cookies.consent.ok": "OK", + + // "cookies.consent.save": "Save", + "cookies.consent.save": "Tallenna", + + // "cookies.consent.content-notice.title": "Cookie Consent", + "cookies.consent.content-notice.title": "Evästeiden hyväksyntä", + // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: Authentication, Preferences, Acknowledgement and Statistics.
To learn more, please read our {privacyPolicy}.", "cookies.consent.content-notice.description": "Keräämme ja käsittelemme tietojasi seuraaviin tarkoituksiin: todentaminen, asetukset, kuittaus ja tilastot.
Lisätietoa saat lukemalla tämän: {privacyPolicy}.", + // "cookies.consent.content-notice.description.no-privacy": "We collect and process your personal information for the following purposes: Authentication, Preferences, Acknowledgement and Statistics.", + "cookies.consent.content-notice.description.no-privacy": "Keräämme ja käsittelemme tietojasi seuraaviin tarkoituksiin: todentaminen, asetukset, kuittaus ja tilastot.", + // "cookies.consent.content-notice.learnMore": "Customize", "cookies.consent.content-notice.learnMore": "Räätälöi", @@ -1521,7 +1984,11 @@ // "cookies.consent.content-modal.title": "Information that we collect", "cookies.consent.content-modal.title": "Keräämämme tieto", + // "cookies.consent.content-modal.services": "services", + "cookies.consent.content-modal.services": "palvelut", + // "cookies.consent.content-modal.service": "service", + "cookies.consent.content-modal.service": "palvelu", // "cookies.consent.app.title.authentication": "Authentication", "cookies.consent.app.title.authentication": "Todentaminen", @@ -1529,30 +1996,29 @@ // "cookies.consent.app.description.authentication": "Required for signing you in", "cookies.consent.app.description.authentication": "Vaadittu kirjautumista varten", - // "cookies.consent.app.title.preferences": "Preferences", "cookies.consent.app.title.preferences": "Asetukset", // "cookies.consent.app.description.preferences": "Required for saving your preferences", "cookies.consent.app.description.preferences": "Vaadittu asetustesi tallentamista varten", - - // "cookies.consent.app.title.acknowledgement": "Acknowledgement", "cookies.consent.app.title.acknowledgement": "Kuittaus", // "cookies.consent.app.description.acknowledgement": "Required for saving your acknowledgements and consents", "cookies.consent.app.description.acknowledgement": "Vaadittu kuittaustesi ja hyväksyntäsi tallentamista varten", - - // "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": "Sallii tilastollisen datan seurannan", + // "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": "Käytämme Googlen reCAPTCHA-palvelua rekisteröinnin ja salasanan palauttamisen yhteydessä.", // "cookies.consent.purpose.functional": "Functional", "cookies.consent.purpose.functional": "Toiminnallinen", @@ -1560,8 +2026,16 @@ // "cookies.consent.purpose.statistical": "Statistical", "cookies.consent.purpose.statistical": "Tilastollinen", + // "cookies.consent.purpose.registration-password-recovery": "Registration and Password recovery", + "cookies.consent.purpose.registration-password-recovery": "Rekisteröinti ja salasanan palauttaminen", + + // "cookies.consent.purpose.sharing": "Sharing", + "cookies.consent.purpose.sharing": "Jakaminen", - // "curation-task.task.checklinks.label": "Check Links in Metadata", + // "curation-task.task.citationpage.label": "Generate Citation Page", + "curation-task.task.citationpage.label": "Luo viittaussivu", + + // "curation-task.task.checklinks.label": "Check Links in Metadata", "curation-task.task.checklinks.label": "Tarkista metadatan linkit", // "curation-task.task.noop.label": "NOOP", @@ -1579,7 +2053,8 @@ // "curation-task.task.vscan.label": "Virus Scan", "curation-task.task.vscan.label": "Virusskannaus", - + // "curation-task.task.register-doi.label": "Register DOI", + "curation-task.task.register-doi.label": "Rekisteröi DOI", // "curation.form.task-select.label": "Task:", "curation.form.task-select.label": "Tehtävä:", @@ -1599,13 +2074,38 @@ // "curation.form.submit.error.content": "An error occured when trying to start the curation task.", "curation.form.submit.error.content": "Virhe kuratointitehtävää aloitettaessa.", + // "curation.form.submit.error.invalid-handle": "Couldn't determine the handle for this object", + "curation.form.submit.error.invalid-handle": "Kohteen handlea ei voitu määrittää", + // "curation.form.handle.label": "Handle:", "curation.form.handle.label": "Handle:", // "curation.form.handle.hint": "Hint: Enter [your-handle-prefix]/0 to run a task across entire site (not all tasks may support this capability)", "curation.form.handle.hint": "Vinkki: Syötä [oma-handle-prefix]/0 suorittaaksesi tehtävän koko sivustolla (kaikki tehtävät eivät tue tätä toimintoa)", + // "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": "Hyvä {{ recipientName }},\nValitettavasti emme voi lähettää kopiota pyytämistänne tiedostoista (dokumentti \"{{ itemUrl }}\" ({{ itemName }})), joiden tekijä olen. Ystävällisin terveisin \n{{ authorName }} <{{ authorEmail }}>", + + // "deny-request-copy.email.subject": "Request copy of document", + "deny-request-copy.email.subject": "Dokumenttikopion pyyntö", + + // "deny-request-copy.error": "An error occurred", + "deny-request-copy.error": "Tapahtui virhe", + + // "deny-request-copy.header": "Deny document copy request", + "deny-request-copy.header": "Epää dokumenttikopion pyyntö", + + // "deny-request-copy.intro": "This message will be sent to the applicant of the request", + "deny-request-copy.intro": "Tämä viesti lähetetään pyynnön esittäjälle", + + // "deny-request-copy.success": "Successfully denied item request", + "deny-request-copy.success": "Tietuepyyntö evätty", + // "dso.name.untitled": "Untitled", + "dso.name.untitled": "Nimetön", + + // "dso.name.unnamed": "Unnamed", + "dso.name.unnamed": "Nimeämätön", // "dso-selector.create.collection.head": "New collection", "dso-selector.create.collection.head": "Uusi kokoelma", @@ -1616,6 +2116,9 @@ // "dso-selector.create.community.head": "New community", "zxzcommunity.head": "Uusi yhteisö", + // "dso-selector.create.community.or-divider": "or", + "dso-selector.create.community.or-divider": "tai", + // "dso-selector.create.community.sub-level": "Create a new community in", "dso-selector.create.community.sub-level": "Luo uusi yhteisö tänne: ", @@ -1640,16 +2143,92 @@ // "dso-selector.edit.item.head": "Edit item", "dso-selector.edit.item.head": "Muokkaa tietuetta", + // "dso-selector.error.title": "An error occurred searching for a {{ type }}", + "dso-selector.error.title": "Virhe etsittäessä tyyppiä {{ type }}", + // "dso-selector.export-metadata.dspaceobject.head": "Export metadata from", "dso-selector.export-metadata.dspaceobject.head": "Eksportoi metadata täältä: ", + // "dso-selector.export-batch.dspaceobject.head": "Export Batch (ZIP) from", + "dso-selector.export-batch.dspaceobject.head": "Eksportoi erä (ZIP): ", + + // "dso-selector.import-batch.dspaceobject.head": "Import batch from", + "dso-selector.import-batch.dspaceobject.head": "Importoi erä: ", + // "dso-selector.no-results": "No {{ type }} found", "dso-selector.no-results": "Ei {{ type }}-tyyppiä.", // "dso-selector.placeholder": "Search for a {{ type }}", "dso-selector.placeholder": "Hae {{ type }}-tyyppiä", + // "dso-selector.select.collection.head": "Select a collection", + "dso-selector.select.collection.head": "Valitse kokoelma", + + // "dso-selector.set-scope.community.head": "Select a search scope", + "dso-selector.set-scope.community.head": "Valitse hakualue", + + // "dso-selector.set-scope.community.button": "Search all of DSpace", + "dso-selector.set-scope.community.button": "Hae koko julkaisuarkistosta", + + // "dso-selector.set-scope.community.or-divider": "or", + "dso-selector.set-scope.community.or-divider": "tai", + // "dso-selector.set-scope.community.input-header": "Search for a community or collection", + "dso-selector.set-scope.community.input-header": "Hae yhteisöä tai kokoelmaa", + + // "dso-selector.claim.item.head": "Profile tips", + "dso-selector.claim.item.head": "Profiilivinkkejä", + + // "dso-selector.claim.item.body": "These are existing profiles that may be related to you. If you recognize yourself in one of these profiles, select it and on the detail page, among the options, choose to claim it. Otherwise you can create a new profile from scratch using the button below.", + "dso-selector.claim.item.body": "Nämä ovat olemassa olevia profiileja, jotka saattavat liittyä sinuun. Jos tunnistat jonkin näistä profiileista omaksesi, valitse se ja valitse tarkentavan sivun vaihtoehdoista, että otat sen itsellesi. Muussa tapauksessa voit luoda uuden profiilin käyttämällä alla olevaa painiketta.", + + // "dso-selector.claim.item.not-mine-label": "None of these are mine", + "dso-selector.claim.item.not-mine-label": "Mikään näistä ei ole minun", + + // "dso-selector.claim.item.create-from-scratch": "Create a new one", + "dso-selector.claim.item.create-from-scratch": "Luo uusi", + + // "dso-selector.results-could-not-be-retrieved": "Something went wrong, please refresh again ↻", + "dso-selector.results-could-not-be-retrieved": "Tapahtui virhe, päivitä uudelleen ↻", + + // "supervision-group-selector.header": "Supervision Group Selector", + "supervision-group-selector.header": "Ohjausryhmän valitsin", + + // "supervision-group-selector.select.type-of-order.label": "Select a type of Order", + "supervision-group-selector.select.type-of-order.label": "Valitse tilauksen tyyppi", + + // "supervision-group-selector.select.type-of-order.option.none": "NONE", + "supervision-group-selector.select.type-of-order.option.none": "EI MITÄÄN", + + // "supervision-group-selector.select.type-of-order.option.editor": "EDITOR", + "supervision-group-selector.select.type-of-order.option.editor": "MUOKKAAJA", + + // "supervision-group-selector.select.type-of-order.option.observer": "OBSERVER", + "supervision-group-selector.select.type-of-order.option.observer": "KATSELIJA", + + // "supervision-group-selector.select.group.label": "Select a Group", + "supervision-group-selector.select.group.label": "Valitse ryhmä", + + // "supervision-group-selector.button.cancel": "Cancel", + "supervision-group-selector.button.cancel": "Peruuta", + + // "supervision-group-selector.button.save": "Save", + "supervision-group-selector.button.save": "Tallenna", + + // "supervision-group-selector.select.type-of-order.error": "Please select a type of order", + "supervision-group-selector.select.type-of-order.error": "Valitse tilauksen tyyppi", + + // "supervision-group-selector.select.group.error": "Please select a group", + "supervision-group-selector.select.group.error": "Valitse ryhmä", + + // "supervision-group-selector.notification.create.success.title": "Successfully created supervision order for group {{ name }}", + "supervision-group-selector.notification.create.success.title": "Ohjausmääräys luotu {{ name }}-ryhmälle", + + // "supervision-group-selector.notification.create.failure.title": "Error", + "supervision-group-selector.notification.create.failure.title": "Virhe", + + // "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": "Tietueelle on jo ohjausmääräys valitulle ryhmälle", // "confirmation-modal.export-metadata.header": "Export metadata for {{ dsoName }}", "confirmation-modal.export-metadata.header": "Eksportoi {{ dsoName }}:n metadata", @@ -1663,11 +2242,23 @@ // "confirmation-modal.export-metadata.confirm": "Export", "confirmation-modal.export-metadata.confirm": "Eksportoi", + // "confirmation-modal.export-batch.header": "Export batch (ZIP) for {{ dsoName }}", + "confirmation-modal.export-batch.header": "Exportoi erä (ZIP) {{ dsoName }}", + + // "confirmation-modal.export-batch.info": "Are you sure you want to export batch (ZIP) for {{ dsoName }}", + "confirmation-modal.export-batch.info": "Haluatko varmasti eksportoida erän (ZIP) {{ dsoName }}?", + + // "confirmation-modal.export-batch.cancel": "Cancel", + "confirmation-modal.export-batch.cancel": "Peruuta", + + // "confirmation-modal.export-batch.confirm": "Export", + "confirmation-modal.export-batch.confirm": "Eksportoi", + // "confirmation-modal.delete-eperson.header": "Delete EPerson \"{{ dsoName }}\"", "confirmation-modal.delete-eperson.header": "Poista käyttäjä \"{{ dsoName }}\"", // "confirmation-modal.delete-eperson.info": "Are you sure you want to delete EPerson \"{{ dsoName }}\"", - "confirmation-modal.delete-eperson.info": "Haluatko varmasti poistaa käyttäjän \"{{ dsoName }}\"", + "confirmation-modal.delete-eperson.info": "Haluatko varmasti poistaa käyttäjän \"{{ dsoName }}\"?", // "confirmation-modal.delete-eperson.cancel": "Cancel", "confirmation-modal.delete-eperson.cancel": "Peruuta", @@ -1675,6 +2266,29 @@ // "confirmation-modal.delete-eperson.confirm": "Delete", "confirmation-modal.delete-eperson.confirm": "Poista", + // "confirmation-modal.delete-profile.header": "Delete Profile", + "confirmation-modal.delete-profile.header": "Poista profiili", + + // "confirmation-modal.delete-profile.info": "Are you sure you want to delete your profile", + "confirmation-modal.delete-profile.info": "Haluatko varmasti poistaa profiilisi?", + + // "confirmation-modal.delete-profile.cancel": "Cancel", + "confirmation-modal.delete-profile.cancel": "Peruuta", + + // "confirmation-modal.delete-profile.confirm": "Delete", + "confirmation-modal.delete-profile.confirm": "Poista", + + // "confirmation-modal.delete-subscription.header": "Delete Subscription", + "confirmation-modal.delete-subscription.header": "Poista tilaus", + + // "confirmation-modal.delete-subscription.info": "Are you sure you want to delete subscription for \"{{ dsoName }}\"", + "confirmation-modal.delete-subscription.info": "Haluatko varmasti poistaa tilauksen: \"{{ dsoName }}\"", + + // "confirmation-modal.delete-subscription.cancel": "Cancel", + "confirmation-modal.delete-subscription.cancel": "Peruuta", + + // "confirmation-modal.delete-subscription.confirm": "Delete", + "confirmation-modal.delete-subscription.confirm": "Poista", // "error.bitstream": "Error fetching bitstream", "error.bitstream": "Virhe tiedostoa noudettaessa", @@ -1712,6 +2326,9 @@ // "error.search-results": "Error fetching search results", "error.search-results": "Virhe hakutuloksia noudettaessa", + // "error.invalid-search-query": "Search query is not valid. Please check Solr query syntax best practices for further information about this error.", + "error.invalid-search-query": "Hakulauseke on virheellinen. Tarkista Solr-kyselysyntaksi ja sieltä parhaat käytännöt saadaksesi lisätietoja.", + // "error.sub-collections": "Error fetching sub-collections", "error.sub-collections": "Virhe alakokoelmia noudettaessa", @@ -1733,12 +2350,44 @@ // "error.validation.filerequired": "The file upload is mandatory", "error.validation.filerequired": "Tiedoston lataus on pakollinen", + // "error.validation.required": "This field is required", + "error.validation.required": "Kenttä on pakollinen", + // "error.validation.NotValidEmail": "This E-mail is not a valid email", + "error.validation.NotValidEmail": "Sähköpostiosoite ei ole toimiva sähköpostiosoite.", - // "file-section.error.header": "Error obtaining files for this item", - "file-section.error.header": "Virhe tietueen tiedostoja noudettaessa", + // "error.validation.emailTaken": "This E-mail is already taken", + "error.validation.emailTaken": "Sähköpostiosoite on jo käytössä", + // "error.validation.groupExists": "This group already exists", + "error.validation.groupExists": "Ryhmä on jo olemassa", + // "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": "Kenttään ei voi syöttää pisteitä, pilkkuja tai välilyöntejä. Käytä tämän kentän sijasta Elementti- ja Tarkenne-kenttiä.", + + // "error.validation.metadata.name.max-length": "This field may not contain more than 32 characters", + "error.validation.metadata.name.max-length": "Kenttään voi laittaa vain 32 merkkiä", + + // "error.validation.metadata.namespace.max-length": "This field may not contain more than 256 characters", + "error.validation.metadata.namespace.max-length": "Kenttään voi laittaa vain 256 merkkiä", + + // "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": "Kenttään ei voi syöttää pisteitä, pilkkuja tai välilyöntejä. Käytä tämän kentän sijasta Elementti- ja Tarkenne-kenttiä.", + + // "error.validation.metadata.element.max-length": "This field may not contain more than 64 characters", + "error.validation.metadata.element.max-length": "Kenttään voi laittaa vain 64 merkkiä", + + // "error.validation.metadata.qualifier.invalid-pattern": "This field cannot contain dots, commas or spaces", + "error.validation.metadata.qualifier.invalid-pattern": "Kenttään ei voi syöttää pisteitä, pilkkuja tai välilyöntejä", + + // "error.validation.metadata.qualifier.max-length": "This field may not contain more than 64 characters", + "error.validation.metadata.qualifier.max-length": "Kenttään voi laittaa vain 64 merkkiä", + + // "feed.description": "Syndication feed", + "feed.description": "Jakelusyöte", + + // "file-section.error.header": "Error obtaining files for this item", + "file-section.error.header": "Virhe tietueen tiedostoja noudettaessa", // "footer.copyright": "copyright © 2002-{{ year }}", "footer.copyright": "tekijänoikeus © 2002-{{ year }}", @@ -1755,16 +2404,17 @@ // "footer.link.privacy-policy": "Privacy policy", "footer.link.privacy-policy": "Yksilönsuoja", - // "footer.link.end-user-agreement":"End User Agreement", - "footer.link.end-user-agreement": "Käyttöehdot", - + // "footer.link.end-user-agreement": "End User Agreement", + "footer.link.end-user-agreement": "Käyttöoikeussopimus", + // "footer.link.feedback": "Send Feedback", + "footer.link.feedback": "Lähetä palautetta", // "forgot-email.form.header": "Forgot Password", "forgot-email.form.header": "Unohtunut salasana", - // "forgot-email.form.info": "Enter Register an account to subscribe to collections for email updates, and submit new items to DSpace.", - "forgot-email.form.info": "Rekisteröi käyttäjätili voidaksesi tilata sähköposti-ilmoituksia kokoelmien päivityksistä ja lisätä uusia tietueita julkaisuarkistoon.", + // "forgot-email.form.info": "Enter the email address associated with the account.", + "forgot-email.form.info": "Syötä tiliin liittyvä sähköpostiosoite.", // "forgot-email.form.email": "Email Address *", "forgot-email.form.email": "Sähköpostiosoite *", @@ -1772,28 +2422,26 @@ // "forgot-email.form.email.error.required": "Please fill in an email address", "forgot-email.form.email.error.required": "Anna sähköpostiosoite", - // "forgot-email.form.email.error.pattern": "Please fill in a valid email address", - "forgot-email.form.email.error.pattern": "Anna oikea sähköpostiosoite", + // "forgot-email.form.email.error.not-email-form": "Please fill in a valid email address", + "forgot-email.form.email.error.not-email-form": "Anna toimiva sähköpostiosoite", - // "forgot-email.form.email.hint": "This address will be verified and used as your login name.", - "forgot-email.form.email.hint": "Osoite varmistetaan, ja se toimii käyttäjätunnuksenasi kirjautumisessa.", + // "forgot-email.form.email.hint": "An email will be sent to this address with a further instructions.", + "forgot-email.form.email.hint": "Sähköpostiosoitteeseen lähetetään viesti, jossa on lisäohjeita.", - // "forgot-email.form.submit": "Submit", - "forgot-email.form.submit": "Lähetä", + // "forgot-email.form.submit": "Reset password", + "forgot-email.form.submit": "Nollaa salasana", - // "forgot-email.form.success.head": "Verification email sent", - "forgot-email.form.success.head": "Varmistusviesti lähetetty", + // "forgot-email.form.success.head": "Password reset email sent", + "forgot-email.form.success.head": "Salasanan nollausviesti lähetetty", // "forgot-email.form.success.content": "An email has been sent to {{ email }} containing a special URL and further instructions.", "forgot-email.form.success.content": "Viesti on lähetetty osoitteeseen {{ email }}. Viestissä on URL-osoite ja lisäohjeita.", - // "forgot-email.form.error.head": "Error when trying to register email", - "forgot-email.form.error.head": "Virhe sähköpostiosoitetta rekisteröitäessä", - - // "forgot-email.form.error.content": "An error occured when registering the following email address: {{ email }}", - "forgot-email.form.error.content": "Virhe rekisteröitäessä tätä sähköpostiosoitetta: {{ email }}", - + // "forgot-email.form.error.head": "Error when trying to reset password", + "forgot-email.form.error.head": "Virhe salasanaa nollattaessa", + // "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": "Virhe nollattaessa tähän sähköpostiosoitteeseen liittyvän tilin salasanaa {{ email }}", // "forgot-password.title": "Forgot Password", "forgot-password.title": "Unohtunut salasana", @@ -1801,8 +2449,8 @@ // "forgot-password.form.head": "Forgot Password", "forgot-password.form.head": "Unohtunut salasana", - // "forgot-password.form.info": "Enter a new password in the box below, and confirm it by typing it again into the second box. It should be at least six characters long.", - "forgot-password.form.info": "Syötä uusi salasana alla olevaan kenttään ja vahvista se kirjoittamalla salasana uudelleen seuraavaan kenttään. Salasanan on oltava vähintään kuusi merkkiä pitkä.", + // "forgot-password.form.info": "Enter a new password in the box below, and confirm it by typing it again into the second box.", + "forgot-password.form.info": "Syötä uusi salasana alla olevaan kenttään ja vahvista se kirjoittamalla salasana uudelleen seuraavaan kenttään.", // "forgot-password.form.card.security": "Security", "forgot-password.form.card.security": "Turvallisuus", @@ -1825,9 +2473,6 @@ // "forgot-password.form.error.matching-passwords": "The passwords do not match.", "forgot-password.form.error.matching-passwords": "Salasanat eivät täsmää.", - // "forgot-password.form.error.password-length": "The password should be at least 6 characters long.", - "forgot-password.form.error.password-length": "Salasanan on oltava vähintään 6 merkkiä pitkä.", - // "forgot-password.form.notification.error.title": "Error when trying to submit new password", "forgot-password.form.notification.error.title": "Virhe uutta salasanaa lähetettäessä", @@ -1840,10 +2485,8 @@ // "forgot-password.form.submit": "Submit password", "forgot-password.form.submit": "Lähetä salasana", - - - // "form.add": "Add", - "form.add": "Lisää", + // "form.add": "Add more", + "form.add": "Lisää vielä", // "form.add-help": "Click here to add the current entry and to add another one", "form.add-help": "Valitse lisätäksesi nykyisen kohteen ja toisen kohteen", @@ -1855,13 +2498,19 @@ "form.clear": "Tyhjennä", // "form.clear-help": "Click here to remove the selected value", - "form.clear-help": "Napauta tästä poistaaksesi valitun arvon", + "form.clear-help": "Napsauta tästä poistaaksesi valitun arvon", + + // "form.discard": "Discard", + "form.discard": "Hylkää", + + // "form.drag": "Drag", + "form.drag": "Raahaa", // "form.edit": "Edit", "form.edit": "Muokkaa", // "form.edit-help": "Click here to edit the selected value", - "form.edit-help": "Napauta tästä muokataksesi valittua arvoa", + "form.edit-help": "Napsauta tästä muokataksesi valittua arvoa", // "form.first-name": "First name", "form.first-name": "Etunimi", @@ -1896,6 +2545,24 @@ // "form.no-value": "No value entered", "form.no-value": "Ei syötettyä arvoa", + // "form.other-information.email": "Email", + "form.other-information.email": "Sähköpostiosoite", + + // "form.other-information.first-name": "First Name", + "form.other-information.first-name": "Etunimi", + + // "form.other-information.insolr": "In Solr Index", + "form.other-information.insolr": "Solr-indeksissä", + + // "form.other-information.institution": "Institution", + "form.other-information.institution": "Instituutio", + + // "form.other-information.last-name": "Last Name", + "form.other-information.last-name": "Sukunimi", + + // "form.other-information.orcid": "ORCID", + "form.other-information.orcid": "ORCID-tunniste", + // "form.remove": "Remove", "form.remove": "Poista", @@ -1911,10 +2578,134 @@ // "form.search-help": "Click here to look for an existing correspondence", "form.search-help": "Valitse etsiäksesi olemassa olevaa vastaavuutta", - // "form.submit": "Submit", - "form.submit": "Lähetä", + // "form.submit": "Save", + "form.submit": "Tallenna", + + // "form.create": "Create", + "form.create": "Luo", + + // "form.repeatable.sort.tip": "Drop the item in the new position", + "form.repeatable.sort.tip": "Pudota tietue uuteen paikkaan", + + // "grant-deny-request-copy.deny": "Don't send copy", + "grant-deny-request-copy.deny": "Älä lähetä kopiota", + + // "grant-deny-request-copy.email.back": "Back", + "grant-deny-request-copy.email.back": "Paluu", + + // "grant-deny-request-copy.email.message": "Optional additional message", + "grant-deny-request-copy.email.message": "Valinnainen lisäviesti", + + // "grant-deny-request-copy.email.message.empty": "Please enter a message", + "grant-deny-request-copy.email.message.empty": "Kirjoita viesti", + + // "grant-deny-request-copy.email.permissions.info": "You may use this occasion to reconsider the access restrictions on the document, to avoid having to respond to these requests. If you’d like to ask the repository administrators to remove these restrictions, please check the box below.", + "grant-deny-request-copy.email.permissions.info": "Voit harkita uudelleen dokumentin pääsyrajoituksia, jotta sinun ei tarvitse vastata näihin pyyntöihin. Rastita alla oleva ruutu pyytääksesi julkaisuarkiston ylläpitäjää poistamaan rajoitukset.", + + // "grant-deny-request-copy.email.permissions.label": "Change to open access", + "grant-deny-request-copy.email.permissions.label": "Valitse Open Access", + + // "grant-deny-request-copy.email.send": "Send", + "grant-deny-request-copy.email.send": "Lähetä", + + // "grant-deny-request-copy.email.subject": "Subject", + "grant-deny-request-copy.email.subject": "Asiasana", + + // "grant-deny-request-copy.email.subject.empty": "Please enter a subject", + "grant-deny-request-copy.email.subject.empty": "Syötä asiasana", + + // "grant-deny-request-copy.grant": "Send copy", + "grant-deny-request-copy.grant": "Lähetä kopio", + + // "grant-deny-request-copy.header": "Document copy request", + "grant-deny-request-copy.header": "Dokumenttikopion pyyntö", + + // "grant-deny-request-copy.home-page": "Take me to the home page", + "grant-deny-request-copy.home-page": "Palaa etusivulle", + + // "grant-deny-request-copy.intro1": "If you are one of the authors of the document {{ name }}, then please use one of the options below to respond to the user's request.", + "grant-deny-request-copy.intro1": "Jos olet dokumentin {{ name }} tekijä, vastaa käyttäjän pyyntöön jollakin alla olevista vaihtoehdoista.", + + // "grant-deny-request-copy.intro2": "After choosing an option, you will be presented with a suggested email reply which you may edit.", + "grant-deny-request-copy.intro2": "Valittuasi vaihtoehdon näet sähköpostiviestiehdotuksen. Voit muokata ehdotusta halutessasi.", + + // "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": "Pyyntö on käsitelty. Voit käyttää alla olevaa painiketta palataksesi etusivulle.", + + // "grant-request-copy.email.subject": "Request copy of document", + "grant-request-copy.email.subject": "Pyydä kopiota dokumentista", + + // "grant-request-copy.error": "An error occurred", + "grant-request-copy.error": "Tapahtui virhe", + + // "grant-request-copy.header": "Grant document copy request", + "grant-request-copy.header": "Hyväksy dokumenttikopion pyyntö", + + // "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": "Viesti lähetetään pyynnön esittäjälle. Pyydetyt dokumentit liitetään viestiin.", + + // "grant-request-copy.success": "Successfully granted item request", + "grant-request-copy.success": "Tietuepyyntö hyväksytty", + + // "health.breadcrumbs": "Health", + "health.breadcrumbs": "Järjestelmän kunto", + + // "health-page.heading": "Health", + "health-page.heading": "Järjestelmän kunto", + + // "health-page.info-tab": "Info", + "health-page.info-tab": "Tiedot", + + // "health-page.status-tab": "Status", + "health-page.status-tab": "Tila", + + // "health-page.error.msg": "The health check service is temporarily unavailable", + "health-page.error.msg": "Järjestelmän kunnon tarkistus on väliaikaisesti poissa käytöstä", + + // "health-page.property.status": "Status code", + "health-page.property.status": "Tilakoodi", + + // "health-page.section.db.title": "Database", + "health-page.section.db.title": "Tietokanta", + + // "health-page.section.geoIp.title": "GeoIp", + "health-page.section.geoIp.title": "GeoIp", + + // "health-page.section.solrAuthorityCore.title": "Solr: authority core", + "health-page.section.solrAuthorityCore.title": "Solr: auktoriteettiydin", + + // "health-page.section.solrOaiCore.title": "Solr: oai core", + "health-page.section.solrOaiCore.title": "Solr: OAI-ydin", + + // "health-page.section.solrSearchCore.title": "Solr: search core", + "health-page.section.solrSearchCore.title": "Solr: hakuydin", + + // "health-page.section.solrStatisticsCore.title": "Solr: statistics core", + "health-page.section.solrStatisticsCore.title": "Solr: tilastoydin", + + // "health-page.section-info.app.title": "Application Backend", + "health-page.section-info.app.title": "Taustasovellus", + + // "health-page.section-info.java.title": "Java", + "health-page.section-info.java.title": "Java", + + // "health-page.status": "Status", + "health-page.status": "Tila", + + // "health-page.status.ok.info": "Operational", + "health-page.status.ok.info": "Toiminnassa", + + // "health-page.status.error.info": "Problems detected", + "health-page.status.error.info": "Ongelmia havaittu", + + // "health-page.status.warning.info": "Possible issues detected", + "health-page.status.warning.info": "Mahdollisia ongelmia havaittu", + // "health-page.title": "Health", + "health-page.title": "Järjestelmän kunto", + // "health-page.section.no-issues": "No issues detected", + "health-page.section.no-issues": "Ei havaittuja ongelmia", // "home.description": "", "home.description": "", @@ -1922,11 +2713,11 @@ // "home.breadcrumbs": "Home", "home.breadcrumbs": "Etusivu", - // "home.search-form.placeholder": "Search the repository ...", + // "home.search-form.placeholder": "Search the repository ...", "home.search-form.placeholder": "Hae julkaisuarkistosta ...", - // "home.title": "DSpace Angular :: Home", - "home.title": "DSpace Angular :: Etusivu", + // "home.title": "Home", + "home.title": "Etusivu", // "home.top-level-communities.head": "Communities in DSpace", "home.top-level-communities.head": "Julkaisuarkiston yhteisöt", @@ -1934,19 +2725,17 @@ // "home.top-level-communities.help": "Select a community to browse its collections.", "home.top-level-communities.help": "Valitse yhteisö, jonka kokoelmia haluat selata.", - - // "info.end-user-agreement.accept": "I have read and I agree to the End User Agreement", - "info.end-user-agreement.accept": "Olen lukenut ja hyväksyn käyttöehdot", + "info.end-user-agreement.accept": "Olen lukenut ja hyväksyn käyttöoikeussopimuksen", // "info.end-user-agreement.accept.error": "An error occurred accepting the End User Agreement", - "info.end-user-agreement.accept.error": "Virhe hyväksyttäessä käyttöehtoja", + "info.end-user-agreement.accept.error": "Virhe hyväksyttäessä käyttöoikeussopimusta", // "info.end-user-agreement.accept.success": "Successfully updated the End User Agreement", - "info.end-user-agreement.accept.success": "Käyttöehdot päivitetty", + "info.end-user-agreement.accept.success": "Käyttöoikeussopimus päivitetty", // "info.end-user-agreement.breadcrumbs": "End User Agreement", - "info.end-user-agreement.breadcrumbs": "Käyttöehdot", + "info.end-user-agreement.breadcrumbs": "Käyttöoikeussopimus", // "info.end-user-agreement.buttons.cancel": "Cancel", "info.end-user-agreement.buttons.cancel": "Peruuta", @@ -1955,10 +2744,13 @@ "info.end-user-agreement.buttons.save": "Tallenna", // "info.end-user-agreement.head": "End User Agreement", - "info.end-user-agreement.head": "Käyttöehdot", + "info.end-user-agreement.head": "Käyttöoikeussopimus", // "info.end-user-agreement.title": "End User Agreement", - "info.end-user-agreement.title": "Käyttöehdot", + "info.end-user-agreement.title": "Käyttöoikeussopimus", + + // "info.end-user-agreement.hosting-country": "the United States", + "info.end-user-agreement.hosting-country": "Suomi", // "info.privacy.breadcrumbs": "Privacy Statement", "info.privacy.breadcrumbs": "Tietosuojalauseke", @@ -1969,39 +2761,68 @@ // "info.privacy.title": "Privacy Statement", "info.privacy.title": "Tietosuojalauseke", + // "info.feedback.breadcrumbs": "Feedback", + "info.feedback.breadcrumbs": "Palaute", + + // "info.feedback.head": "Feedback", + "info.feedback.head": "Palaute", + + // "info.feedback.title": "Feedback", + "info.feedback.title": "Palaute", + + // "info.feedback.info": "Thanks for sharing your feedback about the DSpace system. Your comments are appreciated!", + "info.feedback.info": "Kiitos antamastasi palautteesta. Havaintosi ovat arvokkaita!", + + // "info.feedback.email_help": "This address will be used to follow up on your feedback.", + "info.feedback.email_help": "Tätä osoitetta käytetään palautteesi käsittelyssä.", + + // "info.feedback.send": "Send Feedback", + "info.feedback.send": "Lähetä palautetta", + // "info.feedback.comments": "Comments", + "info.feedback.comments": "Kommentit", - // "item.alerts.private": "This item is private", + // "info.feedback.email-label": "Your Email", + "info.feedback.email-label": "Sähköpostiosoitteesi", + + // "info.feedback.create.success": "Feedback Sent Successfully!", + "info.feedback.create.success": "Palaute lähetetty!", + + // "info.feedback.error.email.required": "A valid email address is required", + "info.feedback.error.email.required": "Toimiva sähköpostiosoite on pakollinen", + + // "info.feedback.error.message.required": "A comment is required", + "info.feedback.error.message.required": "Kommentti on pakollinen", + + // "info.feedback.page-label": "Page", + "info.feedback.page-label": "Sivu", + + // "info.feedback.page_help": "Tha page related to your feedback", + "info.feedback.page_help": "Sivu, johon palautteesi kohdistuu", + + // "item.alerts.private": "This item is non-discoverable", "item.alerts.private": "Tietue on yksityinen", // "item.alerts.withdrawn": "This item has been withdrawn", "item.alerts.withdrawn": "Tietue on poistettu käytöstä", - - // "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": "Tässä voit tarkastella ja muokata tietuekäytäntöjä sekä tietueen yksittäisten komponenttien eli nippujen ja tiedostojen käytäntöjä. Tietue on nippujen säiliö ja niput ovat tiedostojen säiliöitä. Säiliöillä on yleensä LISÄYS/POISTO/LUKU/KIRJOITUS-käytännöt, mutta tiedostoihin sovelletaan vain LUKU/KIRJOITUS-käytäntöjä.", - - // "item.edit.authorizations.title": "Edit item's Policies", "item.edit.authorizations.title": "Muokkaa tietuekäytäntöjä", - - - // "item.badge.private": "Private", + // "item.badge.private": "Non-discoverable", "item.badge.private": "Yksityinen", // "item.badge.withdrawn": "Withdrawn", "item.badge.withdrawn": "Poistettu käytöstä", - - // "item.bitstreams.upload.bundle": "Bundle", "item.bitstreams.upload.bundle": "Nippu", - // "item.bitstreams.upload.bundle.placeholder": "Select a bundle", - "item.bitstreams.upload.bundle.placeholder": "Valitse nippu", + // "item.bitstreams.upload.bundle.placeholder": "Select a bundle or input new bundle name", + "item.bitstreams.upload.bundle.placeholder": "Valitse nippu tai syötä uuden nipun nimi", // "item.bitstreams.upload.bundle.new": "Create bundle", "item.bitstreams.upload.bundle.new": "Luo nippu", @@ -2030,8 +2851,6 @@ // "item.bitstreams.upload.title": "Upload bitstream", "item.bitstreams.upload.title": "Lataa tiedosto", - - // "item.edit.bitstreams.bundle.edit.buttons.upload": "Upload", "item.edit.bitstreams.bundle.edit.buttons.upload": "Lataus", @@ -2063,7 +2882,7 @@ "item.edit.bitstreams.edit.buttons.remove": "Poista", // "item.edit.bitstreams.edit.buttons.undo": "Undo changes", - "item.edit.bitstreams.edit.buttons.undo": "Peruuta muutokset", + "item.edit.bitstreams.edit.buttons.undo": "Kumoa muutokset", // "item.edit.bitstreams.empty": "This item doesn't contain any bitstreams. Click the upload button to create one.", "item.edit.bitstreams.empty": "Tietueeseen ei liity tiedostoja. Valitse latauspainike luodaksesi tiedoston.", @@ -2122,8 +2941,6 @@ // "item.edit.bitstreams.upload-button": "Upload", "item.edit.bitstreams.upload-button": "Lataa", - - // "item.edit.delete.cancel": "Cancel", "item.edit.delete.cancel": "Peruuta", @@ -2148,6 +2965,8 @@ // "item.edit.breadcrumbs": "Edit Item", "item.edit.breadcrumbs": "Muokkaa tietuetta", + // "item.edit.tabs.disabled.tooltip": "You're not authorized to access this tab", + "item.edit.tabs.disabled.tooltip": "Sinulla ei ole valtuuksia tähän välilehteen", // "item.edit.tabs.mapper.head": "Collection Mapper", "item.edit.tabs.mapper.head": "Kokoelmaliitosväline", @@ -2155,6 +2974,69 @@ // "item.edit.tabs.item-mapper.title": "Item Edit - Collection Mapper", "item.edit.tabs.item-mapper.title": "Tietueen muokkaus - Kokoelmaliitosväline", + // "item.edit.identifiers.doi.status.UNKNOWN": "Unknown", + "item.edit.identifiers.doi.status.UNKNOWN": "Tuntematon", + + // "item.edit.identifiers.doi.status.TO_BE_REGISTERED": "Queued for registration", + "item.edit.identifiers.doi.status.TO_BE_REGISTERED": "Rekisteröintijonossa", + + // "item.edit.identifiers.doi.status.TO_BE_RESERVED": "Queued for reservation", + "item.edit.identifiers.doi.status.TO_BE_RESERVED": "Varausjonossa", + + // "item.edit.identifiers.doi.status.IS_REGISTERED": "Registered", + "item.edit.identifiers.doi.status.IS_REGISTERED": "Rekisteröity", + + // "item.edit.identifiers.doi.status.IS_RESERVED": "Reserved", + "item.edit.identifiers.doi.status.IS_RESERVED": "Varattu", + + // "item.edit.identifiers.doi.status.UPDATE_RESERVED": "Reserved (update queued)", + "item.edit.identifiers.doi.status.UPDATE_RESERVED": "Varattu (päivitysjonossa)", + + // "item.edit.identifiers.doi.status.UPDATE_REGISTERED": "Registered (update queued)", + "item.edit.identifiers.doi.status.UPDATE_REGISTERED": "Rekisteröity (päivitysjonossa)", + + // "item.edit.identifiers.doi.status.UPDATE_BEFORE_REGISTRATION": "Queued for update and registration", + "item.edit.identifiers.doi.status.UPDATE_BEFORE_REGISTRATION": "Päivitys- ja rekisteröintijonossa", + + // "item.edit.identifiers.doi.status.TO_BE_DELETED": "Queued for deletion", + "item.edit.identifiers.doi.status.TO_BE_DELETED": "Poistojonossa", + + // "item.edit.identifiers.doi.status.DELETED": "Deleted", + "item.edit.identifiers.doi.status.DELETED": "Poistettu", + + // "item.edit.identifiers.doi.status.PENDING": "Pending (not registered)", + "item.edit.identifiers.doi.status.PENDING": "Vireillä (ei rekisteröity)", + + // "item.edit.identifiers.doi.status.MINTED": "Minted (not registered)", + "item.edit.identifiers.doi.status.MINTED": "Luotu (ei rekisteröity)", + + // "item.edit.tabs.status.buttons.register-doi.label": "Register a new or pending DOI", + "item.edit.tabs.status.buttons.register-doi.label": "Rekisteröi uusi tai vireillä oleva DOI", + + // "item.edit.tabs.status.buttons.register-doi.button": "Register DOI...", + "item.edit.tabs.status.buttons.register-doi.button": "Rekisteröi DOI...", + + // "item.edit.register-doi.header": "Register a new or pending DOI", + "item.edit.register-doi.header": "Rekisteröi uusi tai vireillä oleva DOI", + + // "item.edit.register-doi.description": "Review any pending identifiers and item metadata below and click Confirm to proceed with DOI registration, or Cancel to back out", + "item.edit.register-doi.description": "Tarkasta vireillä olevat tunnisteet ja tietueitten metadata alapuolella. Napsauta Vahvista jatkaaksesi DOI-tunnuksen rekisteröintiä tai Peruuta peruuttaaksesi.", + + // "item.edit.register-doi.confirm": "Confirm", + "item.edit.register-doi.confirm": "Vahvista", + + // "item.edit.register-doi.cancel": "Cancel", + "item.edit.register-doi.cancel": "Peruuta", + + // "item.edit.register-doi.success": "DOI queued for registration successfully.", + "item.edit.register-doi.success": "DOI lisätty rekisteröintijonoon.", + + // "item.edit.register-doi.error": "Error registering DOI", + "item.edit.register-doi.error": "Virhe rekisteröitäessä DOI-tunnusta", + + // "item.edit.register-doi.to-update": "The following DOI has already been minted and will be queued for registration online", + "item.edit.register-doi.to-update": "DOI on jo luotu ja lisätään rekisteröintijonoon verkossa", + // "item.edit.item-mapper.buttons.add": "Map item to selected collections", "item.edit.item-mapper.buttons.add": "Liitä tietue valittuihin kokoelmiin", @@ -2200,20 +3082,27 @@ // "item.edit.item-mapper.notifications.remove.success.head": "Removal of mapping completed", "item.edit.item-mapper.notifications.remove.success.head": "Liitos poistettu", + // "item.edit.item-mapper.search-form.placeholder": "Search collections...", + "item.edit.item-mapper.search-form.placeholder": "Hae kokoelmia...", + // "item.edit.item-mapper.tabs.browse": "Browse mapped collections", "item.edit.item-mapper.tabs.browse": "Selaa liitettyjä kokoelmia", // "item.edit.item-mapper.tabs.map": "Map new collections", "item.edit.item-mapper.tabs.map": "Liitä uusia kokoelmia", - - // "item.edit.metadata.add-button": "Add", "item.edit.metadata.add-button": "Lisää", // "item.edit.metadata.discard-button": "Discard", "item.edit.metadata.discard-button": "Hylkää", + // "item.edit.metadata.edit.buttons.confirm": "Confirm", + "item.edit.metadata.edit.buttons.confirm": "Vahvista", + + // "item.edit.metadata.edit.buttons.drag": "Drag to reorder", + "item.edit.metadata.edit.buttons.drag": "Raahaa uudelleenjärjestääksesi", + // "item.edit.metadata.edit.buttons.edit": "Edit", "item.edit.metadata.edit.buttons.edit": "Muokkaa", @@ -2226,6 +3115,9 @@ // "item.edit.metadata.edit.buttons.unedit": "Stop editing", "item.edit.metadata.edit.buttons.unedit": "Lopeta muokkaus", + // "item.edit.metadata.edit.buttons.virtual": "This is a virtual metadata value, i.e. a value inherited from a related entity. It can’t be modified directly. Add or remove the corresponding relationship in the \"Relationships\" tab", + "item.edit.metadata.edit.buttons.virtual": "Tämä on virtuaalinen metadata-arvo eli arvo, joka on peritty liittyvältä entiteetiltä. Sitä ei voi muokata suoraan. Lisää tai poista yhteys \"Suhteet\"-välilehdellä,", + // "item.edit.metadata.empty": "The item currently doesn't contain any metadata. Click Add to start adding a metadata value.", "item.edit.metadata.empty": "Tietueessa ei ole metadataa. Valitse Lisää lisätäksesi metadataa.", @@ -2241,13 +3133,16 @@ // "item.edit.metadata.headers.value": "Value", "item.edit.metadata.headers.value": "Arvo", + // "item.edit.metadata.metadatafield.error": "An error occurred validating the metadata field", + "item.edit.metadata.metadatafield.error": "Virhe validoitaessa metadatakenttää", + // "item.edit.metadata.metadatafield.invalid": "Please choose a valid metadata field", "item.edit.metadata.metadatafield.invalid": "Valitse oikea metadatakenttä", // "item.edit.metadata.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", "item.edit.metadata.notifications.discarded.content": "Muutokset hylätty. Valitse 'Kumoa' palauttaaksesi muutokset", - // "item.edit.metadata.notifications.discarded.title": "Changed discarded", + // "item.edit.metadata.notifications.discarded.title": "Changes discarded", "item.edit.metadata.notifications.discarded.title": "Muutokset hylätty", // "item.edit.metadata.notifications.error.title": "An error occurred", @@ -2262,7 +3157,7 @@ // "item.edit.metadata.notifications.outdated.content": "The item you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts", "item.edit.metadata.notifications.outdated.content": "Toinen käyttäjä on muuttanut parhaillaan muokkaamaasi tietuetta. Tekemäsi muutokset on hylätty ristiriitojen estämiseksi", - // "item.edit.metadata.notifications.outdated.title": "Changed outdated", + // "item.edit.metadata.notifications.outdated.title": "Changes outdated", "item.edit.metadata.notifications.outdated.title": "Muutokset vanhentuneet", // "item.edit.metadata.notifications.saved.content": "Your changes to this item's metadata were saved.", @@ -2272,13 +3167,14 @@ "item.edit.metadata.notifications.saved.title": "Metadata tallennettu", // "item.edit.metadata.reinstate-button": "Undo", - "item.edit.metadata.reinstate-button": "Peruuta", + "item.edit.metadata.reinstate-button": "Kumoa", + + // "item.edit.metadata.reset-order-button": "Undo reorder", + "item.edit.metadata.reset-order-button": "Kumoa uudelleenjärjestäminen", // "item.edit.metadata.save-button": "Save", "item.edit.metadata.save-button": "Tallenna", - - // "item.edit.modify.overview.field": "Field", "item.edit.modify.overview.field": "Kenttä", @@ -2288,10 +3184,14 @@ // "item.edit.modify.overview.value": "Value", "item.edit.modify.overview.value": "Arvo", + // "item.edit.move.cancel": "Back", + "item.edit.move.cancel": "Paluu", + // "item.edit.move.save-button": "Save", + "item.edit.move.save-button": "Tallenna", - // "item.edit.move.cancel": "Cancel", - "item.edit.move.cancel": "Peruuta", + // "item.edit.move.discard-button": "Discard", + "item.edit.move.discard-button": "Hylkää", // "item.edit.move.description": "Select the collection you wish to move this item to. To narrow down the list of displayed collections, you can enter a search query in the box.", "item.edit.move.description": "Valitse kokoelma, johon haluat siirtää tietueen. Voit antaa hakulausekkeen kokoelmien määrän pienentämiseksi.", @@ -2323,48 +3223,42 @@ // "item.edit.move.title": "Move item", "item.edit.move.title": "Siirrä tietue", - - // "item.edit.private.cancel": "Cancel", "item.edit.private.cancel": "Peruuta", - // "item.edit.private.confirm": "Make it Private", + // "item.edit.private.confirm": "Make it non-discoverable", "item.edit.private.confirm": "Muuta yksityiseksi", - // "item.edit.private.description": "Are you sure this item should be made private in the archive?", - "item.edit.private.description": "Haluatko varmasti muuttaa tietueen yksityiseksi?", + // "item.edit.private.description": "Are you sure this item should be made non-discoverable in the archive?", + "item.edit.private.description": "Haluatko varmasti muuttaa tietueen yksityiseksi? Yksityinen tietue ei löydy haettaessa.", - // "item.edit.private.error": "An error occurred while making the item private", + // "item.edit.private.error": "An error occurred while making the item non-discoverable", "item.edit.private.error": "Virhe muutettaessa tietuetta yksityiseksi", - // "item.edit.private.header": "Make item private: {{ id }}", - "item.edit.private.header": "Muuta yksityiseksi tietue: {{ id }}", + // "item.edit.private.header": "Make item non-discoverable: {{ id }}", + "item.edit.private.header": "Muuta tietue yksityiseksi: {{ id }}", - // "item.edit.private.success": "The item is now private", + // "item.edit.private.success": "The item is now non-discoverable", "item.edit.private.success": "Tietue on yksityinen", - - // "item.edit.public.cancel": "Cancel", "item.edit.public.cancel": "Peruuta", - // "item.edit.public.confirm": "Make it Public", + // "item.edit.public.confirm": "Make it discoverable", "item.edit.public.confirm": "Muuta julkiseksi", - // "item.edit.public.description": "Are you sure this item should be made public in the archive?", - "item.edit.public.description": "Haluatko varmasti muuttaa tietueen julkiseksi?", + // "item.edit.public.description": "Are you sure this item should be made discoverable in the archive?", + "item.edit.public.description": "Haluatko varmasti muuttaa tietueen julkiseksi? Julkinen tietue löytyy haettaessa.", - // "item.edit.public.error": "An error occurred while making the item public", + // "item.edit.public.error": "An error occurred while making the item discoverable", "item.edit.public.error": "Virhe muutettaessa tietuetta julkiseksi", - // "item.edit.public.header": "Make item public: {{ id }}", - "item.edit.public.header": "Muuta julkiseksi tietue: {{ id }}", + // "item.edit.public.header": "Make item discoverable: {{ id }}", + "item.edit.public.header": "Muuta tietue julkiseksi: {{ id }}", - // "item.edit.public.success": "The item is now public", + // "item.edit.public.success": "The item is now discoverable", "item.edit.public.success": "Tietue on julkinen", - - // "item.edit.reinstate.cancel": "Cancel", "item.edit.reinstate.cancel": "Peruuta", @@ -2383,8 +3277,6 @@ // "item.edit.reinstate.success": "The item was reinstated successfully", "item.edit.reinstate.success": "Tietue palautettu käyttöön", - - // "item.edit.relationships.discard-button": "Discard", "item.edit.relationships.discard-button": "Hylkää", @@ -2395,13 +3287,13 @@ "item.edit.relationships.edit.buttons.remove": "Poista", // "item.edit.relationships.edit.buttons.undo": "Undo changes", - "item.edit.relationships.edit.buttons.undo": "Peruuta muutokset", + "item.edit.relationships.edit.buttons.undo": "Kumoa muutokset", // "item.edit.relationships.no-relationships": "No relationships", "item.edit.relationships.no-relationships": "Ei yhteyksiä", // "item.edit.relationships.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", - "item.edit.relationships.notifications.discarded.content": "Muutoksesi hylättiin. Valitse 'Peruuta' palauttaaksesi ne.", + "item.edit.relationships.notifications.discarded.content": "Muutoksesi hylättiin. Valitse 'Kumoa' palauttaaksesi ne.", // "item.edit.relationships.notifications.discarded.title": "Changes discarded", "item.edit.relationships.notifications.discarded.title": "Muutokset hylätty", @@ -2422,7 +3314,7 @@ "item.edit.relationships.notifications.saved.title": "Yhteydet tallennettu", // "item.edit.relationships.reinstate-button": "Undo", - "item.edit.relationships.reinstate-button": "Peruuta", + "item.edit.relationships.reinstate-button": "Kumoa", // "item.edit.relationships.save-button": "Save", "item.edit.relationships.save-button": "Tallenna", @@ -2430,6 +3322,9 @@ // "item.edit.relationships.no-entity-type": "Add 'dspace.entity.type' metadata to enable relationships for this item", "item.edit.relationships.no-entity-type": "Lisää 'dspace.entity.type' -metadataa aktivoidaksesi yhteydet tietueessa", + // "item.edit.return": "Back", + "item.edit.return": "Paluu", + // "item.edit.tabs.bitstreams.head": "Bitstreams", "item.edit.tabs.bitstreams.head": "Tietueen tiedostot", @@ -2442,6 +3337,9 @@ // "item.edit.tabs.curate.title": "Item Edit - Curate", "item.edit.tabs.curate.title": "Tietueen muokkaus - Kuratointi", + // "item.edit.curate.title": "Curate Item: {{item}}", + "item.edit.curate.title": "Kuratoi tietuetta: {{item}}", + // "item.edit.tabs.metadata.head": "Metadata", "item.edit.tabs.metadata.head": "Tietueen metadata", @@ -2478,23 +3376,26 @@ // "item.edit.tabs.status.buttons.move.label": "Move item to another collection", "item.edit.tabs.status.buttons.move.label": "Siirrä tietue toiseen kokoelmaan", - // "item.edit.tabs.status.buttons.private.button": "Make it private...", + // "item.edit.tabs.status.buttons.private.button": "Make it non-discoverable...", "item.edit.tabs.status.buttons.private.button": "Muuta yksityiseksi...", - // "item.edit.tabs.status.buttons.private.label": "Make item private", + // "item.edit.tabs.status.buttons.private.label": "Make item non-discoverable", "item.edit.tabs.status.buttons.private.label": "Muuta tietue yksityiseksi", - // "item.edit.tabs.status.buttons.public.button": "Make it public...", + // "item.edit.tabs.status.buttons.public.button": "Make it discoverable...", "item.edit.tabs.status.buttons.public.button": "Muuta julkiseksi...", - // "item.edit.tabs.status.buttons.public.label": "Make item public", + // "item.edit.tabs.status.buttons.public.label": "Make item discoverable", "item.edit.tabs.status.buttons.public.label": "Muuta tietue julkiseksi", // "item.edit.tabs.status.buttons.reinstate.button": "Reinstate...", "item.edit.tabs.status.buttons.reinstate.button": "Palauta käyttöön...", // "item.edit.tabs.status.buttons.reinstate.label": "Reinstate item into the repository", - "item.edit.tabs.status.buttons.reinstate.label": "Palauta tietue arkistoon", + "item.edit.tabs.status.buttons.reinstate.label": "Palauta tietue julkaisuarkistoon", + + // "item.edit.tabs.status.buttons.unauthorized": "You're not authorized to perform this action", + "item.edit.tabs.status.buttons.unauthorized": "Sinulla ei ole valtuuksia suorittaa tätä toimintoa", // "item.edit.tabs.status.buttons.withdraw.button": "Withdraw this item", "item.edit.tabs.status.buttons.withdraw.button": "Poista tämä kohde", @@ -2509,7 +3410,7 @@ "item.edit.tabs.status.head": "Tietueen tila", // "item.edit.tabs.status.labels.handle": "Handle", - "item.edit.tabs.status.labels.handle": "Handle-tunnus", + "item.edit.tabs.status.labels.handle": "Handle", // "item.edit.tabs.status.labels.id": "Item Internal ID", "item.edit.tabs.status.labels.id": "Tietueen sisäinen ID", @@ -2538,8 +3439,6 @@ // "item.edit.tabs.view.title": "Item Edit - View", "item.edit.tabs.view.title": "Tietueen muokkaus - Näytä", - - // "item.edit.withdraw.cancel": "Cancel", "item.edit.withdraw.cancel": "Peruuta", @@ -2558,7 +3457,8 @@ // "item.edit.withdraw.success": "The item was withdrawn successfully", "item.edit.withdraw.success": "Tietue poistettu käytöstä", - + // "item.orcid.return": "Back", + "item.orcid.return": "Paluu", // "item.listelement.badge": "Item", "item.listelement.badge": "Tietue", @@ -2584,10 +3484,38 @@ // "item.search.results.head": "Item Search Results", "item.search.results.head": "Tietuehaun tulokset", - // "item.search.title": "DSpace Angular :: Item Search", - "item.search.title": "DSpace Angular :: Tietuehaku", + // "item.search.title": "Item Search", + "item.search.title": "Tietuehaku", + + // "item.truncatable-part.show-more": "Show more", + "item.truncatable-part.show-more": "Näytä lisää", + // "item.truncatable-part.show-less": "Collapse", + "item.truncatable-part.show-less": "Sulje", + // "workflow-item.search.result.delete-supervision.modal.header": "Delete Supervision Order", + "workflow-item.search.result.delete-supervision.modal.header": "Poista ohjausmääräys", + + // "workflow-item.search.result.delete-supervision.modal.info": "Are you sure you want to delete Supervision Order", + "workflow-item.search.result.delete-supervision.modal.info": "Haluatko varmasti poistaa ohjausmääräyksen?", + + // "workflow-item.search.result.delete-supervision.modal.cancel": "Cancel", + "workflow-item.search.result.delete-supervision.modal.cancel": "Peruuta", + + // "workflow-item.search.result.delete-supervision.modal.confirm": "Delete", + "workflow-item.search.result.delete-supervision.modal.confirm": "Poista", + + // "workflow-item.search.result.notification.deleted.success": "Successfully deleted supervision order \"{{name}}\"", + "workflow-item.search.result.notification.deleted.success": "Ohjausmääräys poistettu \"{{name}}\"", + + // "workflow-item.search.result.notification.deleted.failure": "Failed to delete supervision order \"{{name}}\"", + "workflow-item.search.result.notification.deleted.failure": "Ohjausmääräyksen poisto epäonnistui \"{{name}}\"", + + // "workflow-item.search.result.list.element.supervised-by": "Supervised by:", + "workflow-item.search.result.list.element.supervised-by": "Ohjaajana:", + + // "workflow-item.search.result.list.element.supervised.remove-tooltip": "Remove supervision group", + "workflow-item.search.result.list.element.supervised.remove-tooltip": "Poista ohjausryhmä", // "item.page.abstract": "Abstract", "item.page.abstract": "Tiivistelmä", @@ -2601,6 +3529,12 @@ // "item.page.collections": "Collections", "item.page.collections": "Kokoelmat", + // "item.page.collections.loading": "Loading...", + "item.page.collections.loading": "Ladataan...", + + // "item.page.collections.load-more": "Load more", + "item.page.collections.load-more": "Lataa lisää", + // "item.page.date": "Date", "item.page.date": "Päivämäärä", @@ -2634,6 +3568,12 @@ // "item.page.link.simple": "Simple item page", "item.page.link.simple": "Tietueen suppeat tiedot", + // "item.page.orcid.title": "ORCID", + "item.page.orcid.title": "ORCID-tunniste", + + // "item.page.orcid.tooltip": "Open ORCID setting page", + "item.page.orcid.tooltip": "Avaa ORCID-asetusten sivu", + // "item.page.person.search.title": "Articles by this author", "item.page.person.search.title": "Tekijän artikkelit", @@ -2667,12 +3607,27 @@ // "item.page.bitstreams.collapse": "Collapse", "item.page.bitstreams.collapse": "Sulje", - // "item.page.filesection.original.bundle" : "Original bundle", + // "item.page.filesection.original.bundle": "Original bundle", "item.page.filesection.original.bundle": "Alkuperäinen nippu", - // "item.page.filesection.license.bundle" : "License bundle", + // "item.page.filesection.license.bundle": "License bundle", "item.page.filesection.license.bundle": "Lisenssinippu", + // "item.page.return": "Back", + "item.page.return": "Paluu", + + // "item.page.version.create": "Create new version", + "item.page.version.create": "Luo uusi versio", + + // "item.page.version.hasDraft": "A new version cannot be created because there is an inprogress submission in the version history", + "item.page.version.hasDraft": "Uutta versiota ei voida luoda, koska versiohistoriassa on kesken oleva tallennus.", + + // "item.page.claim.button": "Claim", + "item.page.claim.button": "Ota itsellesi", + + // "item.page.claim.tooltip": "Claim this item as profile", + "item.page.claim.tooltip": "Ota tämä kohde profiiliksi", + // "item.preview.dc.identifier.uri": "Identifier:", "item.preview.dc.identifier.uri": "Tunnus:", @@ -2680,7 +3635,7 @@ "item.preview.dc.contributor.author": "Tekijät:", // "item.preview.dc.date.issued": "Published date:", - "item.preview.dc.date.issued": "Julkaisuajankohta:", + "item.preview.dc.date.issued": "Julkaisuaika:", // "item.preview.dc.description.abstract": "Abstract:", "item.preview.dc.description.abstract": "Tiivistelmä:", @@ -2697,6 +3652,33 @@ // "item.preview.dc.title": "Title:", "item.preview.dc.title": "Nimeke:", + // "item.preview.dc.type": "Type:", + "item.preview.dc.type": "Tyyppi:", + + // "item.preview.oaire.citation.issue": "Issue", + "item.preview.oaire.citation.issue": "Numero", + + // "item.preview.oaire.citation.volume": "Volume", + "item.preview.oaire.citation.volume": "Vuosikerta", + + // "item.preview.dc.relation.issn": "ISSN", + "item.preview.dc.relation.issn": "ISSN-tunnus", + + // "item.preview.dc.identifier.isbn": "ISBN", + "item.preview.dc.identifier.isbn": "ISBN", + + // "item.preview.dc.identifier": "Identifier:", + "item.preview.dc.identifier": "Tunnisteet:", + + // "item.preview.dc.relation.ispartof": "Journal or Serie", + "item.preview.dc.relation.ispartof": "Kausijulkaisu tai sarja", + + // "item.preview.dc.identifier.doi": "DOI", + "item.preview.dc.identifier.doi": "DOI", + + // "item.preview.dc.publisher": "Publisher:", + "item.preview.dc.publisher": "Julkaisija:", + // "item.preview.person.familyName": "Surname:", "item.preview.person.familyName": "Sukunimi:", @@ -2706,6 +3688,23 @@ // "item.preview.person.identifier.orcid": "ORCID:", "item.preview.person.identifier.orcid": "ORCID-tunniste:", + // "item.preview.project.funder.name": "Funder:", + "item.preview.project.funder.name": "Rahoittaja:", + + // "item.preview.project.funder.identifier": "Funder Identifier:", + "item.preview.project.funder.identifier": "Rahoittajan tunniste:", + + // "item.preview.oaire.awardNumber": "Funding ID:", + "item.preview.oaire.awardNumber": "Rahoitustunnus:", + + // "item.preview.dc.title.alternative": "Acronym:", + "item.preview.dc.title.alternative": "Kirjainlyhemme:", + + // "item.preview.dc.coverage.spatial": "Jurisdiction:", + "item.preview.dc.coverage.spatial": "Toimivalta:", + + // "item.preview.oaire.fundingStream": "Funding Stream:", + "item.preview.oaire.fundingStream": "Rahoituslähde:", // "item.select.confirm": "Confirm selected", "item.select.confirm": "Vahvista valinta", @@ -2722,19 +3721,21 @@ // "item.select.table.title": "Title", "item.select.table.title": "Nimeke", - // "item.version.history.empty": "There are no other versions for this item yet.", "item.version.history.empty": "Tietueesta ei ole muita versioita.", // "item.version.history.head": "Version History", "item.version.history.head": "Versiohistoria", - // "item.version.history.return": "Return", - "item.version.history.return": "Palaa", + // "item.version.history.return": "Back", + "item.version.history.return": "Paluu", // "item.version.history.selected": "Selected version", "item.version.history.selected": "Valittu versio", + // "item.version.history.selected.alert": "You are currently viewing version {{version}} of the item.", + "item.version.history.selected.alert": "Tarkastelet tietueen versiota {{version}}.", + // "item.version.history.table.version": "Version", "item.version.history.table.version": "Versio", @@ -2750,12 +3751,191 @@ // "item.version.history.table.summary": "Summary", "item.version.history.table.summary": "Yhteenveto", + // "item.version.history.table.workspaceItem": "Workspace item", + "item.version.history.table.workspaceItem": "Työtilan tietue", + + // "item.version.history.table.workflowItem": "Workflow item", + "item.version.history.table.workflowItem": "Työtilan tietue", + + // "item.version.history.table.actions": "Action", + "item.version.history.table.actions": "Toiminto", + + // "item.version.history.table.action.editWorkspaceItem": "Edit workspace item", + "item.version.history.table.action.editWorkspaceItem": "Muokkaa työtilan tietuetta", + + // "item.version.history.table.action.editSummary": "Edit summary", + "item.version.history.table.action.editSummary": "Muokkaa yhteenvetoa", + + // "item.version.history.table.action.saveSummary": "Save summary edits", + "item.version.history.table.action.saveSummary": "Tallenna yhteenvedon muokkaukset", + + // "item.version.history.table.action.discardSummary": "Discard summary edits", + "item.version.history.table.action.discardSummary": "Hylkää yhteenvedon muokkaukset", + + // "item.version.history.table.action.newVersion": "Create new version from this one", + "item.version.history.table.action.newVersion": "Luo tästä uusi versio", + + // "item.version.history.table.action.deleteVersion": "Delete version", + "item.version.history.table.action.deleteVersion": "Poista versio", + // "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": "Uutta versiota ei voida luoda, koska versiohistoriassa on kesken oleva tallennus.", // "item.version.notice": "This is not the latest version of this item. The latest version can be found here.", "item.version.notice": "Tämä ei ole tietueen uusin versio. Uusin versio löytyy täältä.", + // "item.version.create.modal.header": "New version", + "item.version.create.modal.header": "uusi versio", + + // "item.version.create.modal.text": "Create a new version for this item", + "item.version.create.modal.text": "Luodaan tietueesta uusi versio", + + // "item.version.create.modal.text.startingFrom": "starting from version {{version}}", + "item.version.create.modal.text.startingFrom": "alkaen versiosta {{version}}", + + // "item.version.create.modal.button.confirm": "Create", + "item.version.create.modal.button.confirm": "Luo", + + // "item.version.create.modal.button.confirm.tooltip": "Create new version", + "item.version.create.modal.button.confirm.tooltip": "Luo uusi versio", + + // "item.version.create.modal.button.cancel": "Cancel", + "item.version.create.modal.button.cancel": "Peruuta", + + // "item.version.create.modal.button.cancel.tooltip": "Do not create new version", + "item.version.create.modal.button.cancel.tooltip": "Älä luo uutta versiota", + + // "item.version.create.modal.form.summary.label": "Summary", + "item.version.create.modal.form.summary.label": "Yhteenveto", + + // "item.version.create.modal.form.summary.placeholder": "Insert the summary for the new version", + "item.version.create.modal.form.summary.placeholder": "Syötä uuden version yhteenveto", + + // "item.version.create.modal.submitted.header": "Creating new version...", + "item.version.create.modal.submitted.header": "Luodaan uutta versiota...", + + // "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": "Uutta versiota luodaan. Luonti voi kestää, jos tietueella on paljon yhteyksiä.", + + // "item.version.create.notification.success": "New version has been created with version number {{version}}", + "item.version.create.notification.success": "Uusi versio on luotu, sen versionumero on {{version}}", + + // "item.version.create.notification.failure": "New version has not been created", + "item.version.create.notification.failure": "Uutta versiota ei luotu", + + // "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": "Uutta versiota ei voida luoda, koska versiohistoriassa on kesken oleva tallennus.", + + // "item.version.delete.modal.header": "Delete version", + "item.version.delete.modal.header": "Poista versio", + + // "item.version.delete.modal.text": "Do you want to delete version {{version}}?", + "item.version.delete.modal.text": "Haluatko poistaa version {{version}}?", + + // "item.version.delete.modal.button.confirm": "Delete", + "item.version.delete.modal.button.confirm": "Poista", + // "item.version.delete.modal.button.confirm.tooltip": "Delete this version", + "item.version.delete.modal.button.confirm.tooltip": "Poista tämä versio", + + // "item.version.delete.modal.button.cancel": "Cancel", + "item.version.delete.modal.button.cancel": "Peruuta", + + // "item.version.delete.modal.button.cancel.tooltip": "Do not delete this version", + "item.version.delete.modal.button.cancel.tooltip": "Älä poista tätä versiota", + + // "item.version.delete.notification.success": "Version number {{version}} has been deleted", + "item.version.delete.notification.success": "Versio versionumerolla {{version}} poistettu", + + // "item.version.delete.notification.failure": "Version number {{version}} has not been deleted", + "item.version.delete.notification.failure": "Versiota versionumerolla {{version}} ei poistettu", + + // "item.version.edit.notification.success": "The summary of version number {{version}} has been changed", + "item.version.edit.notification.success": "Version versionumerolla {{version}} yhteenveto on muuttunut", + + // "item.version.edit.notification.failure": "The summary of version number {{version}} has not been changed", + "item.version.edit.notification.failure": "Version versionumerolla {{version}} yhteenvetoa ei ole muutettu", + + // "itemtemplate.edit.metadata.add-button": "Add", + "itemtemplate.edit.metadata.add-button": "Lisää", + + // "itemtemplate.edit.metadata.discard-button": "Discard", + "itemtemplate.edit.metadata.discard-button": "Hylkää", + + // "itemtemplate.edit.metadata.edit.buttons.confirm": "Confirm", + "itemtemplate.edit.metadata.edit.buttons.confirm": "Vahvista", + + // "itemtemplate.edit.metadata.edit.buttons.drag": "Drag to reorder", + "itemtemplate.edit.metadata.edit.buttons.drag": "Raahaa uudelleenjärjestääksesi", + + // "itemtemplate.edit.metadata.edit.buttons.edit": "Edit", + "itemtemplate.edit.metadata.edit.buttons.edit": "Muokkaa", + + // "itemtemplate.edit.metadata.edit.buttons.remove": "Remove", + "itemtemplate.edit.metadata.edit.buttons.remove": "Poista", + + // "itemtemplate.edit.metadata.edit.buttons.undo": "Undo changes", + "itemtemplate.edit.metadata.edit.buttons.undo": "Kumoa muutokset", + + // "itemtemplate.edit.metadata.edit.buttons.unedit": "Stop editing", + "itemtemplate.edit.metadata.edit.buttons.unedit": "Lopeta muokkaus", + + // "itemtemplate.edit.metadata.empty": "The item template currently doesn't contain any metadata. Click Add to start adding a metadata value.", + "itemtemplate.edit.metadata.empty": "Mallipohjassa ei ole metadataa. Napsauta Lisää lisätäksesi metadata-arvoja.", + + // "itemtemplate.edit.metadata.headers.edit": "Edit", + "itemtemplate.edit.metadata.headers.edit": "Muokkaa", + + // "itemtemplate.edit.metadata.headers.field": "Field", + "itemtemplate.edit.metadata.headers.field": "Kenttä", + + // "itemtemplate.edit.metadata.headers.language": "Lang", + "itemtemplate.edit.metadata.headers.language": "Kieli", + + // "itemtemplate.edit.metadata.headers.value": "Value", + "itemtemplate.edit.metadata.headers.value": "Arvo", + + // "itemtemplate.edit.metadata.metadatafield.error": "An error occurred validating the metadata field", + "itemtemplate.edit.metadata.metadatafield.error": "Virhe metadatakenttää validoitaessa", + + // "itemtemplate.edit.metadata.metadatafield.invalid": "Please choose a valid metadata field", + "itemtemplate.edit.metadata.metadatafield.invalid": "Valitse kelvollinen metadatakenttä ", + + // "itemtemplate.edit.metadata.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", + "itemtemplate.edit.metadata.notifications.discarded.content": "Muutoksesi hylättiin. Palauta muutokset napsauttamalla Kumoa-painiketta", + + // "itemtemplate.edit.metadata.notifications.discarded.title": "Changes discarded", + "itemtemplate.edit.metadata.notifications.discarded.title": "Muutokset peruttu", + + // "itemtemplate.edit.metadata.notifications.error.title": "An error occurred", + "itemtemplate.edit.metadata.notifications.error.title": "Tapahtui virhe", + + // "itemtemplate.edit.metadata.notifications.invalid.content": "Your changes were not saved. Please make sure all fields are valid before you save.", + "itemtemplate.edit.metadata.notifications.invalid.content": "Muutoksia ei tallennettu. Tarkista kaikkien kenttien oikeellisuus ennen tallennusta.", + + // "itemtemplate.edit.metadata.notifications.invalid.title": "Metadata invalid", + "itemtemplate.edit.metadata.notifications.invalid.title": "Virheellinen metadata", + + // "itemtemplate.edit.metadata.notifications.outdated.content": "The item template you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts", + "itemtemplate.edit.metadata.notifications.outdated.content": "Toinen käyttäjä on muokannut käsittelemääsi mallipohjaa. Muutoksesi on hylätty konfliktien välttämiseksi.", + + // "itemtemplate.edit.metadata.notifications.outdated.title": "Changes outdated", + "itemtemplate.edit.metadata.notifications.outdated.title": "Muutokset vanhentuneet", + + // "itemtemplate.edit.metadata.notifications.saved.content": "Your changes to this item template's metadata were saved.", + "itemtemplate.edit.metadata.notifications.saved.content": "Muutokset mallipohjan metadataan on tallennettu.", + + // "itemtemplate.edit.metadata.notifications.saved.title": "Metadata saved", + "itemtemplate.edit.metadata.notifications.saved.title": "Metadata tallennettu", + + // "itemtemplate.edit.metadata.reinstate-button": "Undo", + "itemtemplate.edit.metadata.reinstate-button": "Kumoa", + + // "itemtemplate.edit.metadata.reset-order-button": "Undo reorder", + "itemtemplate.edit.metadata.reset-order-button": "Kumoa uudelleenjärjestäminen", + + // "itemtemplate.edit.metadata.save-button": "Save", + "itemtemplate.edit.metadata.save-button": "Tallenna", // "journal.listelement.badge": "Journal", "journal.listelement.badge": "Kausijulkaisu", @@ -2781,10 +3961,11 @@ // "journal.search.results.head": "Journal Search Results", "journal.search.results.head": "Kausijulkaisuhaun tulokset", - // "journal.search.title": "DSpace Angular :: Journal Search", - "journal.search.title": "DSpace Angular :: Kausijulkaisuhaku", - + // "journal-relationships.search.results.head": "Journal Search Results", + "journal-relationships.search.results.head": "Kausijulkaisuhaun tulokset", + // "journal.search.title": "Journal Search", + "journal.search.title": "Kausijulkaisuhaku", // "journalissue.listelement.badge": "Journal Issue", "journalissue.listelement.badge": "Kausijulkaisun numero", @@ -2813,8 +3994,6 @@ // "journalissue.page.titleprefix": "Journal Issue: ", "journalissue.page.titleprefix": "Kausijulkaisun numero: ", - - // "journalvolume.listelement.badge": "Journal Volume", "journalvolume.listelement.badge": "Kausijulkaisun vuosikerta", @@ -2833,7 +4012,38 @@ // "journalvolume.page.volume": "Volume", "journalvolume.page.volume": "Vuosikerta", + // "iiifsearchable.listelement.badge": "Document Media", + "iiifsearchable.listelement.badge": "Dokumenttimedia", + + // "iiifsearchable.page.titleprefix": "Document: ", + "iiifsearchable.page.titleprefix": "Dokumentti: ", + + // "iiifsearchable.page.doi": "Permanent Link: ", + "iiifsearchable.page.doi": "Pysyvä linkki: ", + + // "iiifsearchable.page.issue": "Issue: ", + "iiifsearchable.page.issue": "Numero: ", + + // "iiifsearchable.page.description": "Description: ", + "iiifsearchable.page.description": "Kuvaus: ", + // "iiifviewer.fullscreen.notice": "Use full screen for better viewing.", + "iiifviewer.fullscreen.notice": "Käytä koko näytön tilaa nähdäksesi paremmin", + + // "iiif.listelement.badge": "Image Media", + "iiif.listelement.badge": "Kuvamedia", + + // "iiif.page.titleprefix": "Image: ", + "iiif.page.titleprefix": "Kuva: ", + + // "iiif.page.doi": "Permanent Link: ", + "iiif.page.doi": "Pysyvä linkki: ", + + // "iiif.page.issue": "Issue: ", + "iiif.page.issue": "Numero: ", + + // "iiif.page.description": "Description: ", + "iiif.page.description": "Kuvaus: ", // "loading.bitstream": "Loading bitstream...", "loading.bitstream": "Ladataan tiedostoa...", @@ -2889,8 +4099,6 @@ // "loading.top-level-communities": "Loading top-level communities...", "loading.top-level-communities": "Ladataan ylätason yhteisöjä...", - - // "login.form.email": "Email address", "login.form.email": "Sähköpostiosoite", @@ -2906,6 +4114,12 @@ // "login.form.or-divider": "or", "login.form.or-divider": "tai", + // "login.form.oidc": "Log in with OIDC", + "login.form.oidc": "Kirjaudu OIDC-tunnuksella", + + // "login.form.orcid": "Log in with ORCID", + "login.form.orcid": "Kirjaudu ORCID-tunnuksella", + // "login.form.password": "Password", "login.form.password": "Salasana", @@ -2921,8 +4135,6 @@ // "login.breadcrumbs": "Login", "login.breadcrumbs": "Sisäänkirjautuminen", - - // "logout.form.header": "Log out from DSpace", "logout.form.header": "Kirjaudu ulos", @@ -2932,15 +4144,14 @@ // "logout.title": "Logout", "logout.title": "Uloskirjautuminen", - - - // "menu.header.admin": "Admin", - "menu.header.admin": "Ylläpitäjä", + // "menu.header.admin": "Management", + "menu.header.admin": "Hallinto", // "menu.header.image.logo": "Repository logo", "menu.header.image.logo": "Arkiston logo", - + // "menu.header.admin.description": "Management menu", + "menu.header.admin.description": "Hallintovalikko", // "menu.section.access_control": "Access Control", "menu.section.access_control": "Pääsyoikeudet", @@ -2954,13 +4165,9 @@ // "menu.section.access_control_people": "People", "menu.section.access_control_people": "Käyttäjät", - - // "menu.section.admin_search": "Admin Search", "menu.section.admin_search": "Ylläpitäjän haku", - - // "menu.section.browse_community": "This Community", "menu.section.browse_community": "Tämä yhteisö", @@ -2968,7 +4175,7 @@ "menu.section.browse_community_by_author": "Tekijän mukaan", // "menu.section.browse_community_by_issue_date": "By Issue Date", - "menu.section.browse_community_by_issue_date": "Julkaisuajankohdan mukaan", + "menu.section.browse_community_by_issue_date": "Julkaisuajan mukaan", // "menu.section.browse_community_by_title": "By Title", "menu.section.browse_community_by_title": "Nimekkeen mukaan", @@ -2980,27 +4187,26 @@ "menu.section.browse_global_by_author": "Tekijän mukaan", // "menu.section.browse_global_by_dateissued": "By Issue Date", - "menu.section.browse_global_by_dateissued": "Julkaisuajankohdan mukaan", + "menu.section.browse_global_by_dateissued": "Julkaisuajan mukaan", // "menu.section.browse_global_by_subject": "By Subject", "menu.section.browse_global_by_subject": "Asiasanan mukaan", + // "menu.section.browse_global_by_srsc": "By Subject Category", + "menu.section.browse_global_by_srsc": "Aihekategorian mukaan", + // "menu.section.browse_global_by_title": "By Title", "menu.section.browse_global_by_title": "Nimekkeen mukaan", // "menu.section.browse_global_communities_and_collections": "Communities & Collections", "menu.section.browse_global_communities_and_collections": "Yhteisöt & kokoelmat", - - // "menu.section.control_panel": "Control Panel", "menu.section.control_panel": "Hallintapaneeli", // "menu.section.curation_task": "Curation Task", "menu.section.curation_task": "Kuratointitehtävä", - - // "menu.section.edit": "Edit", "menu.section.edit": "Muokkaa", @@ -3013,8 +4219,6 @@ // "menu.section.edit_item": "Item", "menu.section.edit_item": "Tietue", - - // "menu.section.export": "Export", "menu.section.export": "Eksportoi", @@ -3030,7 +4234,8 @@ // "menu.section.export_metadata": "Metadata", "menu.section.export_metadata": "Metadata", - + // "menu.section.export_batch": "Batch Export (ZIP)", + "menu.section.export_batch": "Erän eksportointi(ZIP)", // "menu.section.icon.access_control": "Access Control menu section", "menu.section.icon.access_control": "Pääsyoikeudet", @@ -3041,8 +4246,8 @@ // "menu.section.icon.control_panel": "Control Panel menu section", "menu.section.icon.control_panel": "Hallintapaneeli", - // "menu.section.icon.curation_task": "Curation Task menu section", - "menu.section.icon.curation_task": "Kuratointi", + // "menu.section.icon.curation_tasks": "Curation Task menu section", + "menu.section.icon.curation_tasks": "Kuratointitehtävä", // "menu.section.icon.edit": "Edit menu section", "menu.section.icon.edit": "Muokkaus", @@ -3053,6 +4258,9 @@ // "menu.section.icon.find": "Find menu section", "menu.section.icon.find": "Haku", + // "menu.section.icon.health": "Health check menu section", + "menu.section.icon.health": "Järjestelmän kunnon tarkistus", + // "menu.section.icon.import": "Import menu section", "menu.section.icon.import": "Importointi", @@ -3062,8 +4270,8 @@ // "menu.section.icon.pin": "Pin sidebar", "menu.section.icon.pin": "Kiinnitä sivupalkki", - // "menu.section.icon.processes": "Processes menu section", - "menu.section.icon.processes": "Prosessit", + // "menu.section.icon.processes": "Processes Health", + "menu.section.icon.processes": "Prosessien kunto", // "menu.section.icon.registries": "Registries menu section", "menu.section.icon.registries": "Rekisterit", @@ -3071,11 +4279,12 @@ // "menu.section.icon.statistics_task": "Statistics Task menu section", "menu.section.icon.statistics_task": "Tilastot", + // "menu.section.icon.workflow": "Administer workflow menu section", + "menu.section.icon.workflow": "Työnkulku hallinta", + // "menu.section.icon.unpin": "Unpin sidebar", "menu.section.icon.unpin": "Vapauta sivupalkki", - - // "menu.section.import": "Import", "menu.section.import": "Importoi", @@ -3085,8 +4294,6 @@ // "menu.section.import_metadata": "Metadata", "menu.section.import_metadata": "Metadata", - - // "menu.section.new": "New", "menu.section.new": "Uusi", @@ -3105,20 +4312,17 @@ // "menu.section.new_process": "Process", "menu.section.new_process": "Prosessi", - - // "menu.section.pin": "Pin sidebar", "menu.section.pin": "Kiinnitä sivupalkki", // "menu.section.unpin": "Unpin sidebar", "menu.section.unpin": "Vapauta sivupalkki", - - // "menu.section.processes": "Processes", "menu.section.processes": "Prosessit", - + // "menu.section.health": "Health", + "menu.section.health": "Järjestelmän kunto", // "menu.section.registries": "Registries", "menu.section.registries": "Rekisterit", @@ -3129,57 +4333,60 @@ // "menu.section.registries_metadata": "Metadata", "menu.section.registries_metadata": "Metadata", - - // "menu.section.statistics": "Statistics", "menu.section.statistics": "Tilastot", // "menu.section.statistics_task": "Statistics Task", "menu.section.statistics_task": "Tilastointitehtävä", - - // "menu.section.toggle.access_control": "Toggle Access Control section", - "menu.section.toggle.access_control": "Vaihda Pääsyoikeudet-osion tilaa", + "menu.section.toggle.access_control": "Näytä/piilota Pääsyoikeudet-osio", // "menu.section.toggle.control_panel": "Toggle Control Panel section", - "menu.section.toggle.control_panel": "Vaihda Hallintapaneeli-osion tilaa", + "menu.section.toggle.control_panel": "Näytä/piilota Hallintapaneeli-osio", // "menu.section.toggle.curation_task": "Toggle Curation Task section", - "menu.section.toggle.curation_task": "Vaihda Kuratointitehtävä-osion tilaa", + "menu.section.toggle.curation_task": "Näytä/piilota Kuratointitehtävä-osio", // "menu.section.toggle.edit": "Toggle Edit section", - "menu.section.toggle.edit": "Vaihda Muokkaus-osion tilaa", + "menu.section.toggle.edit": "Näytä/piilota Muokkaus-osio", // "menu.section.toggle.export": "Toggle Export section", - "menu.section.toggle.export": "Vaihda Eksportointi-osion tilaa", + "menu.section.toggle.export": "Näytä/piilota Eksportointi-osio", // "menu.section.toggle.find": "Toggle Find section", - "menu.section.toggle.find": "Vaihda Haku-osion tilaa", + "menu.section.toggle.find": "Näytä/piilota Haku-osio", // "menu.section.toggle.import": "Toggle Import section", - "menu.section.toggle.import": "Vaihda Importointi-osion tilaa", + "menu.section.toggle.import": "Näytä/piilota Importointi-osio", // "menu.section.toggle.new": "Toggle New section", - "menu.section.toggle.new": "Vaihda Uusi-osion tilaa", + "menu.section.toggle.new": "Näytä/piilota Uusi-osio", // "menu.section.toggle.registries": "Toggle Registries section", - "menu.section.toggle.registries": "Vaihda Rekisterit-osion tilaa", + "menu.section.toggle.registries": "Näytä/piilota Rekisterit-osio", // "menu.section.toggle.statistics_task": "Toggle Statistics Task section", - "menu.section.toggle.statistics_task": "Vaihda Tilastointitehtävä-osion tilaa", - + "menu.section.toggle.statistics_task": "Näytä/piilota Tilastointitehtävä-osio", // "menu.section.workflow": "Administer Workflow", "menu.section.workflow": "Hallinnoi työnkulkua", + // "metadata-export-search.tooltip": "Export search results as CSV", + "metadata-export-search.tooltip": "Eksportoi Hakutulokset CSV-tiedostona", + + // "metadata-export-search.submit.success": "The export was started successfully", + "metadata-export-search.submit.success": "Eksportointi aloitettu", + + // "metadata-export-search.submit.error": "Starting the export has failed", + "metadata-export-search.submit.error": "Eksportoinnin aloittaminen epäonnistui", + + // "mydspace.breadcrumbs": "MyDSpace", + "mydspace.breadcrumbs": "Oma DSpace", // "mydspace.description": "", "mydspace.description": "", - // "mydspace.general.text-here": "here", - "mydspace.general.text-here": "tässä", - // "mydspace.messages.controller-help": "Select this option to send a message to item's submitter.", "mydspace.messages.controller-help": "Valitse tämä, jos haluat lähettää viestin tietueen tallentajalle.", @@ -3255,26 +4462,32 @@ // "mydspace.results.no-uri": "No Uri", "mydspace.results.no-uri": "Ei URL-osoitetta", - // "mydspace.show.workflow": "All tasks", - "mydspace.show.workflow": "Kaikki tehtävät", + // "mydspace.search-form.placeholder": "Search in mydspace...", + "mydspace.search-form.placeholder": "Hae omasta DSpacesta...", + + // "mydspace.show.workflow": "Workflow tasks", + "mydspace.show.workflow": "Työnkulun tehtävät", // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Tallennuksesi", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Arkistoitu", + // "mydspace.show.supervisedWorkspace": "Supervised items", + "mydspace.show.supervisedWorkspace": "Valvotut tietueet", + + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Arkistoitu", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Tarkastaminen", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Validointi", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Odotetaan tarkastajaa", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Odottaa tarkastajaa", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Työnkulku", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Työnkulku", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Työtila", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Työtila", // "mydspace.title": "MyDSpace", "mydspace.title": "Oma DSpace", @@ -3291,31 +4504,35 @@ // "mydspace.upload.upload-multiple-successful": "{{qty}} new workspace items created.", "mydspace.upload.upload-multiple-successful": "{{qty}} uutta työtilaa luotu.", - // "mydspace.upload.upload-successful": "New workspace item created. Click {{here}} for edit it.", - "mydspace.upload.upload-successful": "Uusi työtila luotu. Napauta tästä muokataksesi sitä.", - // "mydspace.view-btn": "View", "mydspace.view-btn": "Näytä", - - // "nav.browse.header": "All of DSpace", "nav.browse.header": "Koko julkaisuarkisto", // "nav.community-browse.header": "By Community", "nav.community-browse.header": "Yhteisön mukaan", + // "nav.context-help-toggle": "Toggle context help", + "nav.context-help-toggle": "Näytä/piilota tilannekohtainen ohje", + // "nav.language": "Language switch", "nav.language": "Kielivalinta", // "nav.login": "Log In", "nav.login": "Kirjaudu sisään", + // "nav.user-profile-menu-and-logout": "User profile menu and Log Out", + "nav.user-profile-menu-and-logout": "Käyttäjäprofiilivalikko ja uloskirjautuminen", + // "nav.logout": "Log Out", "nav.logout": "Kirjaudu ulos", + // "nav.main.description": "Main navigation bar", + "nav.main.description": "Päänavigointipalkki", + // "nav.mydspace": "MyDSpace", - "nav.mydspace": "Omat tiedot", + "nav.mydspace": "Oma DSpace", // "nav.profile": "Profile", "nav.profile": "Profiili", @@ -3323,17 +4540,33 @@ // "nav.search": "Search", "nav.search": "Hae", + // "nav.search.button": "Submit search", + "nav.search.button": "Lähetä haku", + // "nav.statistics.header": "Statistics", "nav.statistics.header": "Tilastot", // "nav.stop-impersonating": "Stop impersonating EPerson", "nav.stop-impersonating": "Lopeta käyttäjänä esiintyminen", + // "nav.subscriptions": "Subscriptions", + "nav.subscriptions": "Tilaukset", + + // "nav.toggle": "Toggle navigation", + "nav.toggle": "Näytä/piilota navigointi", + // "nav.user.description": "User profile bar", + "nav.user.description": "Käyttäjäprofiilipalkki", + + // "none.listelement.badge": "Item", + "none.listelement.badge": "Tietue", // "orgunit.listelement.badge": "Organizational Unit", "orgunit.listelement.badge": "Organisaatioyksikkö", + // "orgunit.listelement.no-title": "Untitled", + "orgunit.listelement.no-title": "Nimetön", + // "orgunit.page.city": "City", "orgunit.page.city": "Kaupunki", @@ -3355,7 +4588,8 @@ // "orgunit.page.titleprefix": "Organizational Unit: ", "orgunit.page.titleprefix": "Organisaatioyksikkö: ", - + // "pagination.options.description": "Pagination options", + "pagination.options.description": "Sivutusvaihtoehdot", // "pagination.results-per-page": "Results Per Page", "pagination.results-per-page": "Tuloksia sivulla", @@ -3369,8 +4603,6 @@ // "pagination.sort-direction": "Sort Options", "pagination.sort-direction": "Lajitteluvalinnat", - - // "person.listelement.badge": "Person", "person.listelement.badge": "Käyttäjä", @@ -3395,6 +4627,9 @@ // "person.page.lastname": "Last Name", "person.page.lastname": "Sukunimi", + // "person.page.name": "Name", + "person.page.name": "Nimi", + // "person.page.link.full": "Show all metadata", "person.page.link.full": "Näytä kaikki metadata", @@ -3408,12 +4643,13 @@ "person.page.titleprefix": "Käyttäjä: ", // "person.search.results.head": "Person Search Results", - "person.search.results.head": "Käyttäjähaun tulokset", - - // "person.search.title": "DSpace Angular :: Person Search", - "person.search.title": "DSpace Angular :: Käyttäjähaku", + "person.search.results.head": "Henkilöhaun tulokset", + // "person-relationships.search.results.head": "Person Search Results", + "person-relationships.search.results.head": "Henkilöhaun tulokset", + // "person.search.title": "Person Search", + "person.search.title": "Henkilöhaku", // "process.new.select-parameters": "Parameters", "process.new.select-parameters": "Parametrit", @@ -3421,8 +4657,8 @@ // "process.new.cancel": "Cancel", "process.new.cancel": "Peruuta", - // "process.new.submit": "Submit", - "process.new.submit": "Lähetä", + // "process.new.submit": "Save", + "process.new.submit": "Tallenna", // "process.new.select-script": "Script", "process.new.select-script": "Skripti", @@ -3463,6 +4699,9 @@ // "process.new.notification.error.content": "An error occurred while creating this process", "process.new.notification.error.content": "Virhe prosessia luotaessa", + // "process.new.notification.error.max-upload.content": "The file exceeds the maximum upload size", + "process.new.notification.error.max-upload.content": "Tiedoston koko ylittää latauksen maksimikoon", + // "process.new.header": "Create a new process", "process.new.header": "Luo uusi prosessi", @@ -3472,18 +4711,16 @@ // "process.new.breadcrumbs": "Create a new process", "process.new.breadcrumbs": "Luo uusi prosessi", + // "process.detail.arguments": "Arguments", + "process.detail.arguments": "Perustelut", + // "process.detail.arguments.empty": "This process doesn't contain any arguments", + "process.detail.arguments.empty": "Prosessiin ei liity perusteluja", - // "process.detail.arguments" : "Arguments", - "process.detail.arguments": "Muuttujat", - - // "process.detail.arguments.empty" : "This process doesn't contain any arguments", - "process.detail.arguments.empty": "Prosessiin ei liity muuttujia", - - // "process.detail.back" : "Back", + // "process.detail.back": "Back", "process.detail.back": "Paluu", - // "process.detail.output" : "Process Output", + // "process.detail.output": "Process Output", "process.detail.output": "Prosessin tulos", // "process.detail.logs.button": "Retrieve process output", @@ -3495,48 +4732,70 @@ // "process.detail.logs.none": "This process has no output", "process.detail.logs.none": "Prosessilla ei tulosta", - // "process.detail.output-files" : "Output Files", + // "process.detail.output-files": "Output Files", "process.detail.output-files": "Tulostiedostot", - // "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": "Prosessilla ei ole tulostiedostoja", - // "process.detail.script" : "Script", + // "process.detail.script": "Script", "process.detail.script": "Skripti", - // "process.detail.title" : "Process: {{ id }} - {{ name }}", + // "process.detail.title": "Process: {{ id }} - {{ name }}", "process.detail.title": "Prosessi: {{ id }} - {{ name }}", - // "process.detail.start-time" : "Start time", + // "process.detail.start-time": "Start time", "process.detail.start-time": "Aloitusaika", - // "process.detail.end-time" : "Finish time", + // "process.detail.end-time": "Finish time", "process.detail.end-time": "Lopetusaika", - // "process.detail.status" : "Status", + // "process.detail.status": "Status", "process.detail.status": "Tila", - // "process.detail.create" : "Create similar process", + // "process.detail.create": "Create similar process", "process.detail.create": "Luo vastaava prosessi", + // "process.detail.actions": "Actions", + "process.detail.actions": "Toiminnot", + + // "process.detail.delete.button": "Delete process", + "process.detail.delete.button": "Poista prosessi", + + // "process.detail.delete.header": "Delete process", + "process.detail.delete.header": "Poista prosessi", + + // "process.detail.delete.body": "Are you sure you want to delete the current process?", + "process.detail.delete.body": "Haluatko varmasti poistaa nykyisen prosessin?", + + // "process.detail.delete.cancel": "Cancel", + "process.detail.delete.cancel": "Peruuta", + + // "process.detail.delete.confirm": "Delete process", + "process.detail.delete.confirm": "Poista prosessi", + + // "process.detail.delete.success": "The process was successfully deleted.", + "process.detail.delete.success": "Prosessi on poistettu.", + // "process.detail.delete.error": "Something went wrong when deleting the process", + "process.detail.delete.error": "Virhe prosessia poistettaessa", - // "process.overview.table.finish" : "Finish time", - "process.overview.table.finish": "Lopetusaika", + // "process.overview.table.finish": "Finish time (UTC)", + "process.overview.table.finish": "Lopetusaika (UTC)", - // "process.overview.table.id" : "Process ID", + // "process.overview.table.id": "Process ID", "process.overview.table.id": "Prosessin ID", - // "process.overview.table.name" : "Name", + // "process.overview.table.name": "Name", "process.overview.table.name": "Nimi", - // "process.overview.table.start" : "Start time", - "process.overview.table.start": "Aloitusaika", + // "process.overview.table.start": "Start time (UTC)", + "process.overview.table.start": "Aloitusaika (UTC)", - // "process.overview.table.status" : "Status", + // "process.overview.table.status": "Status", "process.overview.table.status": "Tila", - // "process.overview.table.user" : "User", + // "process.overview.table.user": "User", "process.overview.table.user": "Käyttäjä", // "process.overview.title": "Processes Overview", @@ -3548,6 +4807,32 @@ // "process.overview.new": "New", "process.overview.new": "Uusi", + // "process.overview.table.actions": "Actions", + "process.overview.table.actions": "Toiminnot", + + // "process.overview.delete": "Delete {{count}} processes", + "process.overview.delete": "Poista {{count}} prosessi(a)", + + // "process.overview.delete.clear": "Clear delete selection", + "process.overview.delete.clear": "Tyhjennä poistettavien valinta", + + // "process.overview.delete.processing": "{{count}} process(es) are being deleted. Please wait for the deletion to fully complete. Note that this can take a while.", + "process.overview.delete.processing": "{{count}} prosessi(a) poistetaan. Odota poiston päättymistä. Poisto saattaa kestää hetken.", + + // "process.overview.delete.body": "Are you sure you want to delete {{count}} process(es)?", + "process.overview.delete.body": "Haluatko varmasti poistaa {{count}} prosessin/prosessia?", + + // "process.overview.delete.header": "Delete processes", + "process.overview.delete.header": "Poista prosessi", + + // "process.bulk.delete.error.head": "Error on deleteing process", + "process.bulk.delete.error.head": "Virhe poistettaessa prosessia", + + // "process.bulk.delete.error.body": "The process with ID {{processId}} could not be deleted. The remaining processes will continue being deleted. ", + "process.bulk.delete.error.body": "Prosessia, jonka ID on {{processId}}, ei voitu poistaa. Muiden prosessien poistamista jatketaan.", + + // "process.bulk.delete.success": "{{count}} process(es) have been succesfully deleted", + "process.bulk.delete.success": "{{count}} prosessi(a) poistettu", // "profile.breadcrumbs": "Update Profile", "profile.breadcrumbs": "Päivitä profiili", @@ -3558,11 +4843,14 @@ // "profile.card.security": "Security", "profile.card.security": "Suojaus", - // "profile.form.submit": "Update Profile", - "profile.form.submit": "Päivitä profiili", + // "profile.form.submit": "Save", + "profile.form.submit": "Tallenna", // "profile.groups.head": "Authorization groups you belong to", - "profile.groups.head": "Ryhmät, joihin kuulut", + "profile.groups.head": "Käyttöoikeusryhmät, joihin kuulut", + + // "profile.special.groups.head": "Authorization special groups you belong to", + "profile.special.groups.head": "Erityiset käyttöoikeusryhmät, joihin kuulut", // "profile.head": "Update Profile", "profile.head": "Päivitä profiili", @@ -3603,11 +4891,8 @@ // "profile.security.form.error.matching-passwords": "The passwords do not match.", "profile.security.form.error.matching-passwords": "Salasanat eivät täsmää.", - // "profile.security.form.error.password-length": "The password should be at least 6 characters long.", - "profile.security.form.error.password-length": "Salasanan on oltava vähintään 6 merkkiä pitkä.", - - // "profile.security.form.info": "Optionally, you can enter a new password in the box below, and confirm it by typing it again into the second box. It should be at least six characters long.", - "profile.security.form.info": "Voit kirjoittaa uuden salasanan alla olevaan kenttään ja varmentaa sen kirjoittamalla sen uudelleen seuraavaan kenttään. Salasanan pituus on vähintään kuusi merkkiä.", + // "profile.security.form.info": "Optionally, you can enter a new password in the box below, and confirm it by typing it again into the second box.", + "profile.security.form.info": "Voit kirjoittaa uuden salasanan alla olevaan kenttään ja varmentaa sen kirjoittamalla sen uudelleen seuraavaan kenttään.", // "profile.security.form.label.password": "Password", "profile.security.form.label.password": "Salasana", @@ -3615,6 +4900,9 @@ // "profile.security.form.label.passwordrepeat": "Retype to confirm", "profile.security.form.label.passwordrepeat": "Kirjoita uudelleen", + // "profile.security.form.label.current-password": "Current password", + "profile.security.form.label.current-password": "Nykyinen salasana", + // "profile.security.form.notifications.success.content": "Your changes to the password were saved.", "profile.security.form.notifications.success.content": "Muuttunut salasana on tallennettu.", @@ -3624,16 +4912,20 @@ // "profile.security.form.notifications.error.title": "Error changing passwords", "profile.security.form.notifications.error.title": "Virhe salasanaa muutettaessa", - // "profile.security.form.notifications.error.not-long-enough": "The password has to be at least 6 characters long.", - "profile.security.form.notifications.error.not-long-enough": "Salasanan on oltava vähintään 6 merkkiä pitkä.", + // "profile.security.form.notifications.error.change-failed": "An error occurred while trying to change the password. Please check if the current password is correct.", + "profile.security.form.notifications.error.change-failed": "Tapahtui virhe salasanaa muutettaessa. Tarkista, että nykyinen salasana on oikea.", // "profile.security.form.notifications.error.not-same": "The provided passwords are not the same.", "profile.security.form.notifications.error.not-same": "Annetut salasanat eivät täsmää.", + // "profile.security.form.notifications.error.general": "Please fill required fields of security form.", + "profile.security.form.notifications.error.general": "Täytä suojauslomakkeen vaaditut kentät.", + // "profile.title": "Update Profile", "profile.title": "Päivitä profiili", - + // "profile.card.researcher": "Researcher Profile", + "profile.card.researcher": "Tutkijaprofiili", // "project.listelement.badge": "Research Project", "project.listelement.badge": "Tutkimusprojekti", @@ -3668,7 +4960,8 @@ // "project.search.results.head": "Project Search Results", "project.search.results.head": "Projektihaun tulokset", - + // "project-relationships.search.results.head": "Project Search Results", + "project-relationships.search.results.head": "Projektihaun tulokset", // "publication.listelement.badge": "Publication", "publication.listelement.badge": "Julkaisu", @@ -3697,9 +4990,20 @@ // "publication.search.results.head": "Publication Search Results", "publication.search.results.head": "Aineistohaun tulokset", - // "publication.search.title": "DSpace Angular :: Publication Search", - "publication.search.title": "DSpace Angular :: Aineistohaku", + // "publication-relationships.search.results.head": "Publication Search Results", + "publication-relationships.search.results.head": "Aineistohaun tulokset", + + // "publication.search.title": "Publication Search", + "publication.search.title": "Aineistohaku", + // "media-viewer.next": "Next", + "media-viewer.next": "Seuraava", + + // "media-viewer.previous": "Previous", + "media-viewer.previous": "Edellinen", + + // "media-viewer.playlist": "Playlist", + "media-viewer.playlist": "Soittolista", // "register-email.title": "New user registration", "register-email.title": "Uuden käyttäjän rekisteröinti", @@ -3734,8 +5038,8 @@ // "register-page.create-profile.security.header": "Security", "register-page.create-profile.security.header": "Suojaus", - // "register-page.create-profile.security.info": "Please enter a password in the box below, and confirm it by typing it again into the second box. It should be at least six characters long.", - "register-page.create-profile.security.info": "Syötä salasana alla olevaan kenttään ja vahvista se kirjoittamalla salasana uudelleen seuraavaan kenttään. Salasanan on oltava vähintään kuusi merkkiä pitkä.", + // "register-page.create-profile.security.info": "Please enter a password in the box below, and confirm it by typing it again into the second box.", + "register-page.create-profile.security.info": "Syötä salasana alla olevaan kenttään ja vahvista se kirjoittamalla salasana uudelleen seuraavaan kenttään.", // "register-page.create-profile.security.label.password": "Password *", "register-page.create-profile.security.label.password": "Salasana *", @@ -3749,14 +5053,11 @@ // "register-page.create-profile.security.error.matching-passwords": "The passwords do not match.", "register-page.create-profile.security.error.matching-passwords": "Salasanat eivät täsmää.", - // "register-page.create-profile.security.error.password-length": "The password should be at least 6 characters long.", - "register-page.create-profile.security.error.password-length": "Salasanan on oltava vähintään 6 merkkiä pitkä.", - // "register-page.create-profile.submit": "Complete Registration", "register-page.create-profile.submit": "Viimeistele rekisteröinti", // "register-page.create-profile.submit.error.content": "Something went wrong while registering a new user.", - "register-page.create-profile.submit.error.content": "Tapahtui virhe uuden käyttäjän rekisteröinnissä.", + "register-page.create-profile.submit.error.content": "Virhe uuden käyttäjän rekisteröinnissä.", // "register-page.create-profile.submit.error.head": "Registration failed", "register-page.create-profile.submit.error.head": "Rekisteröinti epäonnistui", @@ -3767,7 +5068,6 @@ // "register-page.create-profile.submit.success.head": "Registration completed", "register-page.create-profile.submit.success.head": "Rekisteröinti valmis", - // "register-page.registration.header": "New user registration", "register-page.registration.header": "Uuden käyttäjän rekisteröinti", @@ -3780,8 +5080,11 @@ // "register-page.registration.email.error.required": "Please fill in an email address", "register-page.registration.email.error.required": "Anna sähköpostiosoite", - // "register-page.registration.email.error.pattern": "Please fill in a valid email address", - "register-page.registration.email.error.pattern": "Anna toimiva sähköpostiosoite, ole hyvä", + // "register-page.registration.email.error.not-email-form": "Please fill in a valid email address.", + "register-page.registration.email.error.not-email-form": "Anna toimiva sähköpostiosoite", + + // "register-page.registration.email.error.not-valid-domain": "Use email with allowed domains: {{ domains }}", + "register-page.registration.email.error.not-valid-domain": "Käytä sähköpostiosoitetta näillä verkkoalueilla: {{ domains }}", // "register-page.registration.email.hint": "This address will be verified and used as your login name.", "register-page.registration.email.hint": "Osoite varmistetaan, ja se toimii käyttäjätunnuksenasi kirjautumisessa.", @@ -3801,7 +5104,29 @@ // "register-page.registration.error.content": "An error occured when registering the following email address: {{ email }}", "register-page.registration.error.content": "Virhe rekisteröitäessä tätä sähköpostiosoitetta: {{ email }}", + // "register-page.registration.error.recaptcha": "Error when trying to authenticate with recaptcha", + "register-page.registration.error.recaptcha": "Virhe autentikoitaessa recaptcha-toiminnolla", + + // "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": "Rekisteröityäksesi sinun on hyväksyttävä Rekisteröinnin ja salasanan palauttamisen (Google reCaptcha) evästeet.", + + // "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": "Annettu sähköpostiosoite ei ole rekisteröinnille sallittujen verkkoalueiden joukossa. Sallitut verkkoalueet ovat {{ domains }}", + + // "register-page.registration.google-recaptcha.open-cookie-settings": "Open cookie settings", + "register-page.registration.google-recaptcha.open-cookie-settings": "Avaa evästeasetukset", + // "register-page.registration.google-recaptcha.notification.title": "Google reCaptcha", + "register-page.registration.google-recaptcha.notification.title": "Google reCaptcha", + + // "register-page.registration.google-recaptcha.notification.message.error": "An error occurred during reCaptcha verification", + "register-page.registration.google-recaptcha.notification.message.error": "Virhe reCaptcha-todennuksessa", + + // "register-page.registration.google-recaptcha.notification.message.expired": "Verification expired. Please verify again.", + "register-page.registration.google-recaptcha.notification.message.expired": "Todentaminen vanhentunut. Todenna uudelleen.", + + // "register-page.registration.info.maildomain": "Accounts can be registered for mail addresses of the domains", + "register-page.registration.info.maildomain": "Tili voidaan rekisteröidä näiden verkkoalueiden sähköpostiosoitteille", // "relationships.add.error.relationship-type.content": "No suitable match could be found for relationship type {{ type }} between the two items", "relationships.add.error.relationship-type.content": "Ei {{ type }}-tyyppistä yhteysvastaavuutta kahden tietueen välillä", @@ -3857,7 +5182,23 @@ // "relationships.isContributorOf": "Contributors", "relationships.isContributorOf": "Muut tekijät", + // "relationships.isContributorOf.OrgUnit": "Contributor (Organizational Unit)", + "relationships.isContributorOf.OrgUnit": "Osallistuja (Organisaatioyksikkö)", + + // "relationships.isContributorOf.Person": "Contributor", + "relationships.isContributorOf.Person": "Osallistuja", + // "relationships.isFundingAgencyOf.OrgUnit": "Funder", + "relationships.isFundingAgencyOf.OrgUnit": "Rahoittaja", + + // "repository.image.logo": "Repository logo", + "repository.image.logo": "Julkaisuarkiston logo", + + // "repository.title": "DSpace Repository", + "repository.title": "Julkaisuarkisto", + + // "repository.title.prefix": "DSpace Repository :: ", + "repository.title.prefix": "Julkaisuarkisto :: ", // "resource-policies.add.button": "Add", "resource-policies.add.button": "Lisää", @@ -3910,6 +5251,12 @@ // "resource-policies.edit.page.failure.content": "An error occurred while editing the resource policy.", "resource-policies.edit.page.failure.content": "Virhe muokattaessa resurssikäytäntöä.", + // "resource-policies.edit.page.target-failure.content": "An error occurred while editing the target (ePerson or group) of the resource policy.", + "resource-policies.edit.page.target-failure.content": "Tapahtui virhe muokattaessa resurssikäytännön kohdetta (käyttäjä tai ryhmä).", + + // "resource-policies.edit.page.other-failure.content": "An error occurred while editing the resource policy. The target (ePerson or group) has been successfully updated.", + "resource-policies.edit.page.other-failure.content": "Tapahtui virhe resurssikäytäntöä muokattaessa. Kohde (käyttäjä tai ryhmä) on päivitetty onnistuneesti.", + // "resource-policies.edit.page.success.content": "Operation successful", "resource-policies.edit.page.success.content": "Toiminto onnistui", @@ -3943,10 +5290,25 @@ // "resource-policies.form.eperson-group-list.table.headers.name": "Name", "resource-policies.form.eperson-group-list.table.headers.name": "Nimi", + // "resource-policies.form.eperson-group-list.modal.header": "Cannot change type", + "resource-policies.form.eperson-group-list.modal.header": "Tyypin muuttaminen ei onnistu", + + // "resource-policies.form.eperson-group-list.modal.text1.toGroup": "It is not possible to replace an ePerson with a group.", + "resource-policies.form.eperson-group-list.modal.text1.toGroup": "Käyttäjän korvaaminen ryhmällä ei ole mahdollista.", + + // "resource-policies.form.eperson-group-list.modal.text1.toEPerson": "It is not possible to replace a group with an ePerson.", + "resource-policies.form.eperson-group-list.modal.text1.toEPerson": "Ryhmän korvaaminen käyttäjällä ei ole mahdollista.", + + // "resource-policies.form.eperson-group-list.modal.text2": "Delete the current resource policy and create a new one with the desired type.", + "resource-policies.form.eperson-group-list.modal.text2": "Poista nykyinen resurssikäytäntö ja luo uusi halutulla tyypillä.", + + // "resource-policies.form.eperson-group-list.modal.close": "Ok", + "resource-policies.form.eperson-group-list.modal.close": "Ok", + // "resource-policies.form.date.end.label": "End Date", "resource-policies.form.date.end.label": "Loppupäivämäärä", - // "resource-policies.form.date.start.label": "Start Date + // "resource-policies.form.date.start.label": "Start Date", "resource-policies.form.date.start.label": "Alkupäivämäärä", // "resource-policies.form.description.label": "Description", @@ -4009,21 +5371,19 @@ // "resource-policies.table.headers.title.for.collection": "Policies for Collection", "resource-policies.table.headers.title.for.collection": "Kokoelmakäytännöt", - - // "search.description": "", "search.description": "", // "search.switch-configuration.title": "Show", "search.switch-configuration.title": "Näytä", - // "search.title": "DSpace Angular :: Search", - "search.title": "DSpace Angular :: Hae", + // "search.title": "Search", + "search.title": "Hae", // "search.breadcrumbs": "Search", "search.breadcrumbs": "Hae", - // "search.search-form.placeholder": "Search the repository ...", + // "search.search-form.placeholder": "Search the repository ...", "search.search-form.placeholder": "Hae julkaisuarkistosta ...", // "search.filters.applied.f.author": "Author", @@ -4038,7 +5398,7 @@ // "search.filters.applied.f.dateSubmitted": "Date submitted", "search.filters.applied.f.dateSubmitted": "Tallennusajankohta", - // "search.filters.applied.f.discoverable": "Private", + // "search.filters.applied.f.discoverable": "Non-discoverable", "search.filters.applied.f.discoverable": "Yksityinen", // "search.filters.applied.f.entityType": "Item Type", @@ -4068,28 +5428,41 @@ // "search.filters.applied.f.birthDate.min": "Start birth date", "search.filters.applied.f.birthDate.min": "Varhaisin syntymäaika", + // "search.filters.applied.f.supervisedBy": "Supervised by", + "search.filters.applied.f.supervisedBy": "Ohjaajana:", + // "search.filters.applied.f.withdrawn": "Withdrawn", "search.filters.applied.f.withdrawn": "Poistettu käytöstä", - - // "search.filters.filter.author.head": "Author", "search.filters.filter.author.head": "Tekijä", // "search.filters.filter.author.placeholder": "Author name", "search.filters.filter.author.placeholder": "Tekijän nimi", + // "search.filters.filter.author.label": "Search author name", + "search.filters.filter.author.label": "Hae tekijän nimellä", + // "search.filters.filter.birthDate.head": "Birth Date", "search.filters.filter.birthDate.head": "Syntymäaika", // "search.filters.filter.birthDate.placeholder": "Birth Date", "search.filters.filter.birthDate.placeholder": "Syntymäaika", + // "search.filters.filter.birthDate.label": "Search birth date", + "search.filters.filter.birthDate.label": "Hae syntymäajalla", + + // "search.filters.filter.collapse": "Collapse filter", + "search.filters.filter.collapse": "Sulje suodatin", + // "search.filters.filter.creativeDatePublished.head": "Date Published", - "search.filters.filter.creativeDatePublished.head": "Julkaisuajankohta", + "search.filters.filter.creativeDatePublished.head": "Julkaisuaika", // "search.filters.filter.creativeDatePublished.placeholder": "Date Published", - "search.filters.filter.creativeDatePublished.placeholder": "Julkaisuajankohta", + "search.filters.filter.creativeDatePublished.placeholder": "Julkaisuaika", + + // "search.filters.filter.creativeDatePublished.label": "Search date published", + "search.filters.filter.creativeDatePublished.label": "Hae julkaisuaikaa", // "search.filters.filter.creativeWorkEditor.head": "Editor", "search.filters.filter.creativeWorkEditor.head": "Toimittaja", @@ -4097,26 +5470,41 @@ // "search.filters.filter.creativeWorkEditor.placeholder": "Editor", "search.filters.filter.creativeWorkEditor.placeholder": "Toimittaja", + // "search.filters.filter.creativeWorkEditor.label": "Search editor", + "search.filters.filter.creativeWorkEditor.label": "Hae toimittajaa", + // "search.filters.filter.creativeWorkKeywords.head": "Subject", "search.filters.filter.creativeWorkKeywords.head": "Asiasana", // "search.filters.filter.creativeWorkKeywords.placeholder": "Subject", "search.filters.filter.creativeWorkKeywords.placeholder": "Asiasana", + // "search.filters.filter.creativeWorkKeywords.label": "Search subject", + "search.filters.filter.creativeWorkKeywords.label": "Hae asiasanaa", + // "search.filters.filter.creativeWorkPublisher.head": "Publisher", "search.filters.filter.creativeWorkPublisher.head": "Julkaisija", // "search.filters.filter.creativeWorkPublisher.placeholder": "Publisher", "search.filters.filter.creativeWorkPublisher.placeholder": "Julkaisija", + // "search.filters.filter.creativeWorkPublisher.label": "Search publisher", + "search.filters.filter.creativeWorkPublisher.label": "Hae julkaisijaa", + // "search.filters.filter.dateIssued.head": "Date", "search.filters.filter.dateIssued.head": "Päivämäärä", - // "search.filters.filter.dateIssued.max.placeholder": "Minimum Date", - "search.filters.filter.dateIssued.max.placeholder": "Alkupäivämäärä", + // "search.filters.filter.dateIssued.max.placeholder": "Maximum Date", + "search.filters.filter.dateIssued.max.placeholder": "Suurin päivämäärä", + + // "search.filters.filter.dateIssued.max.label": "End", + "search.filters.filter.dateIssued.max.label": "Loppu", - // "search.filters.filter.dateIssued.min.placeholder": "Maximum Date", - "search.filters.filter.dateIssued.min.placeholder": "Loppupäivämäärä", + // "search.filters.filter.dateIssued.min.placeholder": "Minimum Date", + "search.filters.filter.dateIssued.min.placeholder": "Pienin päivämäärä", + + // "search.filters.filter.dateIssued.min.label": "Start", + "search.filters.filter.dateIssued.min.label": "Alku", // "search.filters.filter.dateSubmitted.head": "Date submitted", "search.filters.filter.dateSubmitted.head": "Tallennusajankohta", @@ -4124,7 +5512,10 @@ // "search.filters.filter.dateSubmitted.placeholder": "Date submitted", "search.filters.filter.dateSubmitted.placeholder": "Tallennnusajankohta", - // "search.filters.filter.discoverable.head": "Private", + // "search.filters.filter.dateSubmitted.label": "Search date submitted", + "search.filters.filter.dateSubmitted.label": "Hakupäivä lähetetty", + + // "search.filters.filter.discoverable.head": "Non-discoverable", "search.filters.filter.discoverable.head": "Yksityinen", // "search.filters.filter.withdrawn.head": "Withdrawn", @@ -4136,6 +5527,12 @@ // "search.filters.filter.entityType.placeholder": "Item Type", "search.filters.filter.entityType.placeholder": "Tietueen tyyppi", + // "search.filters.filter.entityType.label": "Search item type", + "search.filters.filter.entityType.label": "Hae tietueen tyyppiä", + + // "search.filters.filter.expand": "Expand filter", + "search.filters.filter.expand": "Laajenna suodinta", + // "search.filters.filter.has_content_in_original_bundle.head": "Has files", "search.filters.filter.has_content_in_original_bundle.head": "On tiedostoja", @@ -4145,53 +5542,80 @@ // "search.filters.filter.itemtype.placeholder": "Type", "search.filters.filter.itemtype.placeholder": "Tyyppi", + // "search.filters.filter.itemtype.label": "Search type", + "search.filters.filter.itemtype.label": "Hakutyyppi", + // "search.filters.filter.jobTitle.head": "Job Title", "search.filters.filter.jobTitle.head": "Tehtävänimike", // "search.filters.filter.jobTitle.placeholder": "Job Title", "search.filters.filter.jobTitle.placeholder": "Tehtävänimike", + // "search.filters.filter.jobTitle.label": "Search job title", + "search.filters.filter.jobTitle.label": "Hae tehtävänimikettä", + // "search.filters.filter.knowsLanguage.head": "Known language", "search.filters.filter.knowsLanguage.head": "Tunnettu kieli", // "search.filters.filter.knowsLanguage.placeholder": "Known language", "search.filters.filter.knowsLanguage.placeholder": "Tunnettu kieli", + // "search.filters.filter.knowsLanguage.label": "Search known language", + "search.filters.filter.knowsLanguage.label": "Hae tunnettua kieltä", + // "search.filters.filter.namedresourcetype.head": "Status", "search.filters.filter.namedresourcetype.head": "Tila", // "search.filters.filter.namedresourcetype.placeholder": "Status", "search.filters.filter.namedresourcetype.placeholder": "Tila", + // "search.filters.filter.namedresourcetype.label": "Search status", + "search.filters.filter.namedresourcetype.label": "Haun tila", + // "search.filters.filter.objectpeople.head": "People", "search.filters.filter.objectpeople.head": "Käyttäjät", // "search.filters.filter.objectpeople.placeholder": "People", "search.filters.filter.objectpeople.placeholder": "Käyttäjät", + // "search.filters.filter.objectpeople.label": "Search people", + "search.filters.filter.objectpeople.label": "Hae ihmisiä", + // "search.filters.filter.organizationAddressCountry.head": "Country", "search.filters.filter.organizationAddressCountry.head": "Maa", // "search.filters.filter.organizationAddressCountry.placeholder": "Country", "search.filters.filter.organizationAddressCountry.placeholder": "Maa", + // "search.filters.filter.organizationAddressCountry.label": "Search country", + "search.filters.filter.organizationAddressCountry.label": "Hae maata", + // "search.filters.filter.organizationAddressLocality.head": "City", "search.filters.filter.organizationAddressLocality.head": "Kaupunki", // "search.filters.filter.organizationAddressLocality.placeholder": "City", "search.filters.filter.organizationAddressLocality.placeholder": "Kaupunki", + // "search.filters.filter.organizationAddressLocality.label": "Search city", + "search.filters.filter.organizationAddressLocality.label": "Hae kaupunkia", + // "search.filters.filter.organizationFoundingDate.head": "Date Founded", "search.filters.filter.organizationFoundingDate.head": "Perustamispäivämäärä", // "search.filters.filter.organizationFoundingDate.placeholder": "Date Founded", "search.filters.filter.organizationFoundingDate.placeholder": "Perustamispäivämäärä", + // "search.filters.filter.organizationFoundingDate.label": "Search date founded", + "search.filters.filter.organizationFoundingDate.label": "Hae perustamispäivämäärää", + // "search.filters.filter.scope.head": "Scope", "search.filters.filter.scope.head": "Rajaus", // "search.filters.filter.scope.placeholder": "Scope filter", - "search.filters.filter.scope.placeholder": "Haun tarkennus", + "search.filters.filter.scope.placeholder": "Hakusuodattimet", + + // "search.filters.filter.scope.label": "Search scope filter", + "search.filters.filter.scope.label": "Hae hakusuodatinta", // "search.filters.filter.show-less": "Collapse", "search.filters.filter.show-less": "Sulje", @@ -4205,13 +5629,29 @@ // "search.filters.filter.subject.placeholder": "Subject", "search.filters.filter.subject.placeholder": "Asiasana", + // "search.filters.filter.subject.label": "Search subject", + "search.filters.filter.subject.label": "Hae asiasanaa", + // "search.filters.filter.submitter.head": "Submitter", "search.filters.filter.submitter.head": "Tallentaja", // "search.filters.filter.submitter.placeholder": "Submitter", "search.filters.filter.submitter.placeholder": "Tallentaja", + // "search.filters.filter.submitter.label": "Search submitter", + "search.filters.filter.submitter.label": "Hae tallentajaa", + + // "search.filters.filter.show-tree": "Browse {{ name }} tree", + "search.filters.filter.show-tree": "Selaa {{ name }}-puuta", + + // "search.filters.filter.supervisedBy.head": "Supervised By", + "search.filters.filter.supervisedBy.head": "Ohjaajana:", + // "search.filters.filter.supervisedBy.placeholder": "Supervised By", + "search.filters.filter.supervisedBy.placeholder": "Ohjaajana:", + + // "search.filters.filter.supervisedBy.label": "Search Supervised By", + "search.filters.filter.supervisedBy.label": "Hae ohjaajan mukaan", // "search.filters.entityType.JournalIssue": "Journal Issue", "search.filters.entityType.JournalIssue": "Kausijulkaisun numero", @@ -4240,25 +5680,23 @@ // "search.filters.withdrawn.false": "No", "search.filters.withdrawn.false": "Ei", - // "search.filters.head": "Filters", "search.filters.head": "Suodattimet", // "search.filters.reset": "Reset filters", "search.filters.reset": "Tyhjennä suodattimet", - + // "search.filters.search.submit": "Submit", + "search.filters.search.submit": "Lähetä", // "search.form.search": "Search", "search.form.search": "Hae", - // "search.form.search_dspace": "Search DSpace", - "search.form.search_dspace": "Hae arkistosta", - - // "search.form.search_mydspace": "Search MyDSpace", - "search.form.search_mydspace": "Hae omista tiedoista", - + // "search.form.search_dspace": "All repository", + "search.form.search_dspace": "Koko julkaisuarkisto", + // "search.form.scope.all": "All of DSpace", + "search.form.scope.all": "Koko julkaisuarkisto", // "search.results.head": "Search Results", "search.results.head": "Hakutulokset", @@ -4272,7 +5710,17 @@ // "search.results.empty": "Your search returned no results.", "search.results.empty": "Ei hakutuloksia.", + // "search.results.view-result": "View", + "search.results.view-result": "Näytä", + + // "search.results.response.500": "An error occurred during query execution, please try again later", + "search.results.response.500": "Virhe hakua suoritettaessa, yritä myöhemmin uudelleen", + // "default.search.results.head": "Search Results", + "default.search.results.head": "Hakutulokset", + + // "default-relationships.search.results.head": "Search Results", + "default-relationships.search.results.head": "Hakutulokset", // "search.sidebar.close": "Back to results", "search.sidebar.close": "Paluu tuloksiin", @@ -4295,8 +5743,6 @@ // "search.sidebar.settings.title": "Settings", "search.sidebar.settings.title": "Asetukset", - - // "search.view-switch.show-detail": "Show detail", "search.view-switch.show-detail": "Näytä lisätiedot", @@ -4306,8 +5752,6 @@ // "search.view-switch.show-list": "Show as list", "search.view-switch.show-list": "Näytä luettelona", - - // "sorting.ASC": "Ascending", "sorting.ASC": "Laskeva", @@ -4320,10 +5764,29 @@ // "sorting.dc.title.DESC": "Title Descending", "sorting.dc.title.DESC": "Nimeke (Ö-A)", - // "sorting.score.DESC": "Relevance", - "sorting.score.DESC": "Relevanssi", + // "sorting.score.ASC": "Least Relevant", + "sorting.score.ASC": "Vähiten relevantti", + // "sorting.score.DESC": "Most Relevant", + "sorting.score.DESC": "Relevantein", + // "sorting.dc.date.issued.ASC": "Date Issued Ascending", + "sorting.dc.date.issued.ASC": "Julkaisuaika nouseva", + + // "sorting.dc.date.issued.DESC": "Date Issued Descending", + "sorting.dc.date.issued.DESC": "Julkaisuaika laskeva", + + // "sorting.dc.date.accessioned.ASC": "Accessioned Date Ascending", + "sorting.dc.date.accessioned.ASC": "Hyväksymispäivä nouseva", + + // "sorting.dc.date.accessioned.DESC": "Accessioned Date Descending", + "sorting.dc.date.accessioned.DESC": "Hyväksymispäivä laskeva", + + // "sorting.lastModified.ASC": "Last modified Ascending", + "sorting.lastModified.ASC": "Viimeksi muokattu nouseva", + + // "sorting.lastModified.DESC": "Last modified Descending", + "sorting.lastModified.DESC": "Viimeksi muokattu laskeva", // "statistics.title": "Statistics", "statistics.title": "Tilastot", @@ -4358,12 +5821,19 @@ // "statistics.table.header.views": "Views", "statistics.table.header.views": "Katseluita", + // "statistics.table.no-name": "(object name could not be loaded)", + "statistics.table.no-name": "(kohteen nimeä ei voitu ladata)", + // "submission.edit.breadcrumbs": "Edit Submission", + "submission.edit.breadcrumbs": "Muokkaa tallennusta", // "submission.edit.title": "Edit Submission", "submission.edit.title": "Muokkaa tallennusta", - // "submission.general.cannot_submit": "You have not the privilege to make a new submission.", + // "submission.general.cancel": "Cancel", + "submission.general.cancel": "Peruuta", + + // "submission.general.cannot_submit": "You don't have permission to make a new submission.", "submission.general.cannot_submit": "Sinulla ei ole oikeuksia aineiston tallentamiseen.", // "submission.general.deposit": "Deposit", @@ -4384,21 +5854,50 @@ // "submission.general.discard.submit": "Discard", "submission.general.discard.submit": "Hylkää", + // "submission.general.info.saved": "Saved", + "submission.general.info.saved": "Tallennettu", + + // "submission.general.info.pending-changes": "Unsaved changes", + "submission.general.info.pending-changes": "Tallentamattomat muutokset", + // "submission.general.save": "Save", "submission.general.save": "Tallenna", // "submission.general.save-later": "Save for later", "submission.general.save-later": "Tallenna myöhemmäksi", - // "submission.import-external.page.title": "Import metadata from an external source", "submission.import-external.page.title": "Importoi metadata ulkoisesta lähteestä", // "submission.import-external.title": "Import metadata from an external source", "submission.import-external.title": "Importoi metadata ulkoisesta lähteestä", + // "submission.import-external.title.Journal": "Import a journal from an external source", + "submission.import-external.title.Journal": "Importoi Muokkaa kausijulkaisu ulkoisesta lähteestä", + + // "submission.import-external.title.JournalIssue": "Import a journal issue from an external source", + "submission.import-external.title.JournalIssue": "Importoi kausijulkaisun numero ulkoisesta lähteestä", + + // "submission.import-external.title.JournalVolume": "Import a journal volume from an external source", + "submission.import-external.title.JournalVolume": "Importoi kausijulkaisun vuosikerta ulkoisesta lähteestä", + + // "submission.import-external.title.OrgUnit": "Import a publisher from an external source", + "submission.import-external.title.OrgUnit": "Importoi julkaisija ulkoisesta lähteestä", + + // "submission.import-external.title.Person": "Import a person from an external source", + "submission.import-external.title.Person": "Importoi käyttäjä ulkoisesta lähteestä", + + // "submission.import-external.title.Project": "Import a project from an external source", + "submission.import-external.title.Project": "Importoi projekti ulkoisesta lähteestä", + + // "submission.import-external.title.Publication": "Import a publication from an external source", + "submission.import-external.title.Publication": "Importoi julkaisu ulkoisesta lähteestä", + + // "submission.import-external.title.none": "Import metadata from an external source", + "submission.import-external.title.none": "Importoi metadata ulkoisesta lähteestä", + // "submission.import-external.page.hint": "Enter a query above to find items from the web to import in to DSpace.", - "submission.import-external.page.hint": "Anna hakulauseke etsiäksesi verkosta arkistoon importoitavia tietueita.", + "submission.import-external.page.hint": "Anna hakulauseke etsiäksesi verkosta julkaisuarkistoon importoitavia tietueita.", // "submission.import-external.back-to-my-dspace": "Back to MyDSpace", "submission.import-external.back-to-my-dspace": "Paluu omiin tietoihin", @@ -4418,27 +5917,84 @@ // "submission.import-external.source.arxiv": "arXiv", "submission.import-external.source.arxiv": "arXiv", + // "submission.import-external.source.ads": "NASA/ADS", + "submission.import-external.source.ads": "NASA/ADS", + + // "submission.import-external.source.cinii": "CiNii", + "submission.import-external.source.cinii": "CiNii", + + // "submission.import-external.source.crossref": "CrossRef", + "submission.import-external.source.crossref": "CrossRef", + + // "submission.import-external.source.datacite": "DataCite", + "submission.import-external.source.datacite": "DataCite", + + // "submission.import-external.source.scielo": "SciELO", + "submission.import-external.source.scielo": "SciELO", + + // "submission.import-external.source.scopus": "Scopus", + "submission.import-external.source.scopus": "Scopus", + + // "submission.import-external.source.vufind": "VuFind", + "submission.import-external.source.vufind": "VuFind", + + // "submission.import-external.source.wos": "Web Of Science", + "submission.import-external.source.wos": "Web Of Science", + + // "submission.import-external.source.orcidWorks": "ORCID", + "submission.import-external.source.orcidWorks": "ORCID", + + // "submission.import-external.source.epo": "European Patent Office (EPO)", + "submission.import-external.source.epo": "Euroopan patenttivirasto (EPO)", + // "submission.import-external.source.loading": "Loading ...", "submission.import-external.source.loading": "Ladataan ...", // "submission.import-external.source.sherpaJournal": "SHERPA Journals", "submission.import-external.source.sherpaJournal": "SHERPA-kausijulkaisut", + // "submission.import-external.source.sherpaJournalIssn": "SHERPA Journals by ISSN", + "submission.import-external.source.sherpaJournalIssn": "SHERPA-kausijulkaisut ISSN-tunnuksen mukaan", + // "submission.import-external.source.sherpaPublisher": "SHERPA Publishers", "submission.import-external.source.sherpaPublisher": "SHERPA-kustantajat", + // "submission.import-external.source.openAIREFunding": "Funding OpenAIRE API", + "submission.import-external.source.openAIREFunding": "OpenAIRE API-rahoitus", + // "submission.import-external.source.orcid": "ORCID", "submission.import-external.source.orcid": "ORCID-tunniste", // "submission.import-external.source.pubmed": "Pubmed", "submission.import-external.source.pubmed": "Pubmed", + // "submission.import-external.source.pubmedeu": "Pubmed Europe", + "submission.import-external.source.pubmedeu": "Euroopan Pubmed", + // "submission.import-external.source.lcname": "Library of Congress Names", "submission.import-external.source.lcname": "Library of Congress -nimet", // "submission.import-external.preview.title": "Item Preview", "submission.import-external.preview.title": "Tietueen esikatselu", + // "submission.import-external.preview.title.Publication": "Publication Preview", + "submission.import-external.preview.title.Publication": "Julkaisun esikatselu", + + // "submission.import-external.preview.title.none": "Item Preview", + "submission.import-external.preview.title.none": "Tietueen esikatselu", + + // "submission.import-external.preview.title.Journal": "Journal Preview", + "submission.import-external.preview.title.Journal": "Kausijulkaisun esikatselu", + + // "submission.import-external.preview.title.OrgUnit": "Organizational Unit Preview", + "submission.import-external.preview.title.OrgUnit": "Organisaatioyksikön esikatselu", + + // "submission.import-external.preview.title.Person": "Person Preview", + "submission.import-external.preview.title.Person": "Käyttäjän esikatselu", + + // "submission.import-external.preview.title.Project": "Project Preview", + "submission.import-external.preview.title.Project": "Projektin esikatselu", + // "submission.import-external.preview.subtitle": "The metadata below was imported from an external source. It will be pre-filled when you start the submission.", "submission.import-external.preview.subtitle": "Alla oleva metadata importoitiin ulkoisesta lähteestä. Sillä esitäytetään metadata, kun aloitat tallennuksen.", @@ -4469,6 +6025,48 @@ // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Volume": "Import remote journal volume", "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Volume": "Importoi kausijulkaisun vuosikerta ulkoisesta lähteestä", + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.isProjectOfPublication": "Project", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.isProjectOfPublication": "Projekti", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.none": "Import remote item", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.none": "Importoi tietue ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Event": "Import remote event", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Event": "Importoi tapahtuma ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Product": "Import remote product", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Product": "Importoi tuote ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Equipment": "Import remote equipment", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Equipment": "Importoi laite ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.OrgUnit": "Import remote organizational unit", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.OrgUnit": "Importoi organisaatioyksikkö ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Funding": "Import remote fund", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Funding": "Importoi rahoitus ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Person": "Import remote person", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Person": "Importoi käyttäjä ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Patent": "Import remote patent", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Patent": "Importoi patentti ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Project": "Import remote project", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Project": "Importoi projekti ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Publication": "Import remote publication", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Publication": "Importoi julkaisu ulkoisesta lähteestä", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.isProjectOfPublication.added.new-entity": "New Entity Added!", + "submission.sections.describe.relationship-lookup.external-source.import-modal.isProjectOfPublication.added.new-entity": "Uusi entiteetti lisätty", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.isProjectOfPublication.title": "Project", + "submission.sections.describe.relationship-lookup.external-source.import-modal.isProjectOfPublication.title": "Projekti", + + // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.openAIREFunding": "Funding OpenAIRE API", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.openAIREFunding": "Funding OpenAIRE API-rahoitus", + // "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.title": "Import Remote Author", "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.title": "Importoi tekijä ulkoisesta lähteestä", @@ -4562,6 +6160,9 @@ // "submission.sections.describe.relationship-lookup.search-tab.search": "Go", "submission.sections.describe.relationship-lookup.search-tab.search": "Ok", + // "submission.sections.describe.relationship-lookup.search-tab.search-form.placeholder": "Search...", + "submission.sections.describe.relationship-lookup.search-tab.search-form.placeholder": "Haetaan...", + // "submission.sections.describe.relationship-lookup.search-tab.select-all": "Select all", "submission.sections.describe.relationship-lookup.search-tab.select-all": "Valitse kaikki", @@ -4637,13 +6238,39 @@ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Search for Organizational Units", "submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Hae organisaatioyksiköitä", + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.openAIREFunding": "Funding OpenAIRE API", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.openAIREFunding": "OpenAIRE API -rahoitus", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isProjectOfPublication": "Projects", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isProjectOfPublication": "Projektit", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfProject": "Funder of the Project", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfProject": "Projektin rahoittaja", + + // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isPublicationOfAuthor": "Publication of the Author", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isPublicationOfAuthor": "Tekijän julkaisu", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.openAIREFunding": "Funding OpenAIRE API", + "submission.sections.describe.relationship-lookup.selection-tab.title.openAIREFunding": "OpenAIRE API API-rahoitus", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.isProjectOfPublication": "Project", + "submission.sections.describe.relationship-lookup.selection-tab.title.isProjectOfPublication": "Projekti", + + // "submission.sections.describe.relationship-lookup.title.isProjectOfPublication": "Projects", + "submission.sections.describe.relationship-lookup.title.isProjectOfPublication": "Projektit", + + // "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfProject": "Funder of the Project", + "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfProject": "Projektin rahoittaja", + + // "submission.sections.describe.relationship-lookup.selection-tab.search-form.placeholder": "Search...", + "submission.sections.describe.relationship-lookup.selection-tab.search-form.placeholder": "Haetaan...", + // "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Current Selection ({{ count }})", "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Nykyinen valinta ({{ count }})", // "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Journal Issues", "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Kausijulkaisun numerot", - // "submission.sections.describe.relationship-lookup.title.JournalIssue": "Journal Issues", "submission.sections.describe.relationship-lookup.title.JournalIssue": "Kausijulkaisun numerot", @@ -4689,8 +6316,11 @@ // "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Parent Organizational Unit", "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Ylempi organisaatioyksikkö", + // "submission.sections.describe.relationship-lookup.title.isPublicationOfAuthor": "Publication", + "submission.sections.describe.relationship-lookup.title.isPublicationOfAuthor": "Julkaisu", + // "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Toggle dropdown", - "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Vaihda valikon tilaa", + "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Näytä/piilota pudotusvalikko", // "submission.sections.describe.relationship-lookup.selection-tab.settings": "Settings", "submission.sections.describe.relationship-lookup.selection-tab.settings": "Asetukset", @@ -4767,6 +6397,24 @@ // "submission.sections.describe.relationship-lookup.selection-tab.title.arxiv": "Search Results", "submission.sections.describe.relationship-lookup.selection-tab.title.arxiv": "Hakutulokset", + // "submission.sections.describe.relationship-lookup.selection-tab.title.crossref": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title.crossref": "Hakutulokset", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.epo": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title.epo": "Hakutulokset", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.scopus": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title.scopus": "Hakutulokset", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.scielo": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title.scielo": "Hakutulokset", + + // "submission.sections.describe.relationship-lookup.selection-tab.title.wos": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title.wos": "Hakutulokset", + + // "submission.sections.describe.relationship-lookup.selection-tab.title": "Search Results", + "submission.sections.describe.relationship-lookup.selection-tab.title": "Hakutulokset", + // "submission.sections.describe.relationship-lookup.name-variant.notification.content": "Would you like to save \"{{ value }}\" as a name variant for this person so you and others can reuse it for future submissions? If you don't you can still use it for this submission.", "submission.sections.describe.relationship-lookup.name-variant.notification.content": "Haluatko tallentaa nimen \"{{ value }}\" käyttäjän vaihtoehtoiseksi nimeksi, jota muutkin voivat käyttää uudelleen myös tulevissa tallennuksissa? Ellet tallenna nimeä, voit silti käyttää sitä tässä tallennuksessa.", @@ -4792,14 +6440,17 @@ "submission.sections.ccLicense.option.select": "Valitse vaihtoehto…", // "submission.sections.ccLicense.link": "You’ve selected the following license:", - "submission.sections.ccLicense.link": "Olet valinunt seuraavan lisenssin:", + "submission.sections.ccLicense.link": "Olet valinnut seuraavan lisenssin:", // "submission.sections.ccLicense.confirmation": "I grant the license above", - "submission.sections.ccLicense.confirmation": "Myönnän yllä olevan lisenssin", + "submission.sections.ccLicense.confirmation": "Hyväksyn yllä olevan lisenssin", // "submission.sections.general.add-more": "Add more", "submission.sections.general.add-more": "Lisää enemmän", + // "submission.sections.general.cannot_deposit": "Deposit cannot be completed due to errors in the form.
Please fill out all required fields to complete the deposit.", + "submission.sections.general.cannot_deposit": "Tallennus ei onnistu, koska lomakkeella on virheitä.
Täytä kaikki pakolliset kentät viimeistelläksesi tallennuksen.", + // "submission.sections.general.collection": "Collection", "submission.sections.general.collection": "Kokoelma", @@ -4839,7 +6490,26 @@ // "submission.sections.general.sections_not_valid": "There are incomplete sections.", "submission.sections.general.sections_not_valid": "Tallennuksessa keskeneräisiä osioita.", + // "submission.sections.identifiers.info": "The following identifiers will be created for your item:", + "submission.sections.identifiers.info": "Tietueellesi luodaan seuraavat tunnisteet:", + + // "submission.sections.identifiers.no_handle": "No handles have been minted for this item.", + "submission.sections.identifiers.no_handle": "Tietueelle ei ole luotu handleja.", + // "submission.sections.identifiers.no_doi": "No DOIs have been minted for this item.", + "submission.sections.identifiers.no_doi": "Tietueelle ei ole luotu DOI-tunnuksia.", + + // "submission.sections.identifiers.handle_label": "Handle: ", + "submission.sections.identifiers.handle_label": "Handle: ", + + // "submission.sections.identifiers.doi_label": "DOI: ", + "submission.sections.identifiers.doi_label": "DOI: ", + + // "submission.sections.identifiers.otherIdentifiers_label": "Other identifiers: ", + "submission.sections.identifiers.otherIdentifiers_label": "Muut tunnisteet: ", + + // "submission.sections.submit.progressbar.accessCondition": "Item access conditions", + "submission.sections.submit.progressbar.accessCondition": "Tietueen pääsyoikeudet", // "submission.sections.submit.progressbar.CClicense": "Creative commons license", "submission.sections.submit.progressbar.CClicense": "Creative commons -lisenssi", @@ -4859,19 +6529,65 @@ // "submission.sections.submit.progressbar.detect-duplicate": "Potential duplicates", "submission.sections.submit.progressbar.detect-duplicate": "Mahdollisia kaksoiskappaleita", + // "submission.sections.submit.progressbar.identifiers": "Identifiers", + "submission.sections.submit.progressbar.identifiers": "Tunnisteet", + // "submission.sections.submit.progressbar.license": "Deposit license", "submission.sections.submit.progressbar.license": "Tallennuslisenssi", + // "submission.sections.submit.progressbar.sherpapolicy": "Sherpa policies", + "submission.sections.submit.progressbar.sherpapolicy": "Sherpa-käytännöt", + // "submission.sections.submit.progressbar.upload": "Upload files", "submission.sections.submit.progressbar.upload": "Lataa tiedostoja", + // "submission.sections.submit.progressbar.sherpaPolicies": "Publisher open access policy information", + "submission.sections.submit.progressbar.sherpaPolicies": "Tietoa julkaisijan open access -käytännöistä", + + // "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": "Ei tietoa julkausijan käytännöistä. Jos työlläsi on ISSN-tunnus, syötä se alapuolella olevan kenttään nähdäksesi siihen liittyvät julkaisijan open access -käytännöt.", + + // "submission.sections.status.errors.title": "Errors", + "submission.sections.status.errors.title": "Virheet", + // "submission.sections.status.valid.title": "Valid", + "submission.sections.status.valid.title": "Hyväksytty", + + // "submission.sections.status.warnings.title": "Warnings", + "submission.sections.status.warnings.title": "Varoitukset", + + // "submission.sections.status.errors.aria": "has errors", + "submission.sections.status.errors.aria": "sisältää virheitä", + + // "submission.sections.status.valid.aria": "is valid", + "submission.sections.status.valid.aria": "on validi", + + // "submission.sections.status.warnings.aria": "has warnings", + "submission.sections.status.warnings.aria": "sisältää varoituksia", + + // "submission.sections.status.info.title": "Additional Information", + "submission.sections.status.info.title": "Lisätiedot", + + // "submission.sections.status.info.aria": "Additional Information", + "submission.sections.status.info.aria": "Lisätiedot", + + // "submission.sections.toggle.open": "Open section", + "submission.sections.toggle.open": "Avaa osio", + + // "submission.sections.toggle.close": "Close section", + "submission.sections.toggle.close": "Sulje osio", + + // "submission.sections.toggle.aria.open": "Expand {{sectionHeader}} section", + "submission.sections.toggle.aria.open": "Laajenna {{sectionHeader}}-osio", + + // "submission.sections.toggle.aria.close": "Collapse {{sectionHeader}} section", + "submission.sections.toggle.aria.close": "Sulje {{sectionHeader}}-osio", // "submission.sections.upload.delete.confirm.cancel": "Cancel", "submission.sections.upload.delete.confirm.cancel": "Peruuta", // "submission.sections.upload.delete.confirm.info": "This operation can't be undone. Are you sure?", - "submission.sections.upload.delete.confirm.info": "Tätä toimintoa ei voi peruuttaa. Oletko varma?", + "submission.sections.upload.delete.confirm.info": "Tätä toimintoa ei voi perua. Oletko varma?", // "submission.sections.upload.delete.confirm.submit": "Yes, I'm sure", "submission.sections.upload.delete.confirm.submit": "Kyllä, olen varma", @@ -4882,18 +6598,36 @@ // "submission.sections.upload.delete.submit": "Delete", "submission.sections.upload.delete.submit": "Poista", + // "submission.sections.upload.download.title": "Download bitstream", + "submission.sections.upload.download.title": "Lataa tiedosto", + // "submission.sections.upload.drop-message": "Drop files to attach them to the item", "submission.sections.upload.drop-message": "Pudota tiedostot liittääksesi ne tietueeseen", + // "submission.sections.upload.edit.title": "Edit bitstream", + "submission.sections.upload.edit.title": "Muokkaa tiedostoa", + // "submission.sections.upload.form.access-condition-label": "Access condition type", "submission.sections.upload.form.access-condition-label": "Pääsyoikeustyyppi", + // "submission.sections.upload.form.access-condition-hint": "Select an access condition to apply on the bitstream once the item is deposited", + "submission.sections.upload.form.access-condition-hint": "Valitse pääsyoikeus, jota sovelletaan tiedostoon tietueen tallentamisen jälkeen", + // "submission.sections.upload.form.date-required": "Date is required.", "submission.sections.upload.form.date-required": "Päivämäärä on pakollinen tieto.", + // "submission.sections.upload.form.date-required-from": "Grant access from date is required.", + "submission.sections.upload.form.date-required-from": "Pääsyoikeuden alkupäivä on pakollinen tieto.", + + // "submission.sections.upload.form.date-required-until": "Grant access until date is required.", + "submission.sections.upload.form.date-required-until": "Pääsyoikeuden loppupäivä on pakollinen tieto.", + // "submission.sections.upload.form.from-label": "Grant access from", "submission.sections.upload.form.from-label": "Pääsyoikeus alkaa", + // "submission.sections.upload.form.from-hint": "Select the date from which the related access condition is applied", + "submission.sections.upload.form.from-hint": "Valitse päivämäärä josta lukien pääsyoikeutta sovelletaan", + // "submission.sections.upload.form.from-placeholder": "From", "submission.sections.upload.form.from-placeholder": "Alkaen", @@ -4906,6 +6640,9 @@ // "submission.sections.upload.form.until-label": "Grant access until", "submission.sections.upload.form.until-label": "Pääsyoikeus päättyy", + // "submission.sections.upload.form.until-hint": "Select the date until which the related access condition is applied", + "submission.sections.upload.form.until-hint": "Valitse päivämäärä, johon asti pääsyoikeus on voimassa", + // "submission.sections.upload.form.until-placeholder": "Until", "submission.sections.upload.form.until-placeholder": "Asti", @@ -4915,7 +6652,7 @@ // "submission.sections.upload.header.policy.default.withlist": "Please note that uploaded files in the {{collectionName}} collection will be accessible, in addition to what is explicitly decided for the single file, with the following group(s):", "submission.sections.upload.header.policy.default.withlist": "Yksittäisten tiedostojen pääsyrajoitusten lisäksi {{collectionName}}-kokoelmaan ladatut tiedostot ovat seuraavien ryhmien saatavilla:", - // "submission.sections.upload.info": "Here you will find all the files currently in the item. You can update the file metadata and access conditions or upload additional files just dragging & dropping them everywhere in the page", + // "submission.sections.upload.info": "Here you will find all the files currently in the item. You can update the file metadata and access conditions or upload additional files by dragging & dropping them anywhere on the page.", "submission.sections.upload.info": "Tietueen kaikki tiedostot on lueteltu tässä. Voit päivittää tiedoston metadataa ja pääsyehtoja tai ladata lisää tiedostoja raahaamalla ne mihin hyvänsä sivun kohtaan.", // "submission.sections.upload.no-entry": "No", @@ -4936,18 +6673,149 @@ // "submission.sections.upload.upload-successful": "Upload successful", "submission.sections.upload.upload-successful": "Lataus valmis", + // "submission.sections.accesses.form.discoverable-description": "When checked, this item will be discoverable in search/browse. When unchecked, the item will only be available via a direct link and will never appear in search/browse.", + "submission.sections.accesses.form.discoverable-description": "Kun tämä on valittu, tietue on löydettävissä haussa ja selailtaessa. Kun tätä ei ole valittu, tietue on saatavilla vain suoran linkin kautta, eikä se näy haussa tai selailtaessa.", + + // "submission.sections.accesses.form.discoverable-label": "Discoverable", + "submission.sections.accesses.form.discoverable-label": "Löydettävissä", + + // "submission.sections.accesses.form.access-condition-label": "Access condition type", + "submission.sections.accesses.form.access-condition-label": "Pääsyoikeustyyppi", + + // "submission.sections.accesses.form.access-condition-hint": "Select an access condition to apply on the item once it is deposited", + "submission.sections.accesses.form.access-condition-hint": "Valitse pääsyoikeus, jota sovelletaan tietueeseen tallentamisen jälkeen", + + // "submission.sections.accesses.form.date-required": "Date is required.", + "submission.sections.accesses.form.date-required": "Päivämäärä on pakollinen tieto.", + + // "submission.sections.accesses.form.date-required-from": "Grant access from date is required.", + "submission.sections.accesses.form.date-required-from": "Pääsyoikeuden alkupäivä on pakollinen tieto.", + + // "submission.sections.accesses.form.date-required-until": "Grant access until date is required.", + "submission.sections.accesses.form.date-required-until": "Pääsyoikeuden loppupäivä on pakollinen tieto.", + + // "submission.sections.accesses.form.from-label": "Grant access from", + "submission.sections.accesses.form.from-label": "Pääsyoikeus alkaa", + + // "submission.sections.accesses.form.from-hint": "Select the date from which the related access condition is applied", + "submission.sections.accesses.form.from-hint": "Valitse päivämäärä, josta alkaen pääsyoikeutta sovelletaan", + + // "submission.sections.accesses.form.from-placeholder": "From", + "submission.sections.accesses.form.from-placeholder": "Alkaen", + + // "submission.sections.accesses.form.group-label": "Group", + "submission.sections.accesses.form.group-label": "Ryhmä", + + // "submission.sections.accesses.form.group-required": "Group is required.", + "submission.sections.accesses.form.group-required": "Ryhmä on pakollinen tieto.", + + // "submission.sections.accesses.form.until-label": "Grant access until", + "submission.sections.accesses.form.until-label": "Pääsyoikeus päättyy", + + // "submission.sections.accesses.form.until-hint": "Select the date until which the related access condition is applied", + "submission.sections.accesses.form.until-hint": "Valitse päivämäärä, johon asti pääsyoikeutta sovelletaan", + + // "submission.sections.accesses.form.until-placeholder": "Until", + "submission.sections.accesses.form.until-placeholder": "Asti", + + // "submission.sections.license.granted-label": "I confirm the license above", + "submission.sections.license.granted-label": "Vahvistan edellä olevan lisenssin", + + // "submission.sections.license.required": "You must accept the license", + "submission.sections.license.required": "Sinun on hyväksyttävä lisenssi", + + // "submission.sections.license.notgranted": "You must accept the license", + "submission.sections.license.notgranted": "Sinun on hyväksyttävä lisenssi", + + // "submission.sections.sherpa.publication.information": "Publication information", + "submission.sections.sherpa.publication.information": "Julkaisun tiedot", + + // "submission.sections.sherpa.publication.information.title": "Title", + "submission.sections.sherpa.publication.information.title": "Nimeke", + + // "submission.sections.sherpa.publication.information.issns": "ISSNs", + "submission.sections.sherpa.publication.information.issns": "ISSN-tunnukset", + + // "submission.sections.sherpa.publication.information.url": "URL", + "submission.sections.sherpa.publication.information.url": "URL", + + // "submission.sections.sherpa.publication.information.publishers": "Publisher", + "submission.sections.sherpa.publication.information.publishers": "Julkaisija", + + // "submission.sections.sherpa.publication.information.romeoPub": "Romeo Pub", + "submission.sections.sherpa.publication.information.romeoPub": "Romeo Pub", + + // "submission.sections.sherpa.publication.information.zetoPub": "Zeto Pub", + "submission.sections.sherpa.publication.information.zetoPub": "Zeto Pub", + + // "submission.sections.sherpa.publisher.policy": "Publisher Policy", + "submission.sections.sherpa.publisher.policy": "Julkaisukäytännöt", + + // "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": "Alla olevat tiedot on noudettu Sherpa Romeosta. Julkaisijan käytännöt määrittävät, vaaditaanko embargoa ja mitkä tiedostoista ovat ladattavissa. Jos sinulla on kysyttävää, ota yhteyttä ylläpitäjään.", + + // "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": "Tämän kausijulkaisun käytäntöjen sallimat Open Access -reitit on lueteltu alla artikkeliversioittain. Napsauttamalla polkua saat yksityiskohtaisempia tietoja", + + // "submission.sections.sherpa.publisher.policy.more.information": "For more information, please see the following links:", + "submission.sections.sherpa.publisher.policy.more.information": "Lisätietoa saat seuraavista linkeistä:", + + // "submission.sections.sherpa.publisher.policy.version": "Version", + "submission.sections.sherpa.publisher.policy.version": "Versio", + // "submission.sections.sherpa.publisher.policy.embargo": "Embargo", + "submission.sections.sherpa.publisher.policy.embargo": "Embargo", - // "submission.submit.title": "Tallennus", - "submission.submit.title": "Julkaisu", + // "submission.sections.sherpa.publisher.policy.noembargo": "No Embargo", + "submission.sections.sherpa.publisher.policy.noembargo": "Ei embargoa", + // "submission.sections.sherpa.publisher.policy.nolocation": "None", + "submission.sections.sherpa.publisher.policy.nolocation": "Ei mitään", + // "submission.sections.sherpa.publisher.policy.license": "License", + "submission.sections.sherpa.publisher.policy.license": "Lisenssi", + + // "submission.sections.sherpa.publisher.policy.prerequisites": "Prerequisites", + "submission.sections.sherpa.publisher.policy.prerequisites": "Vaatimukset", + + // "submission.sections.sherpa.publisher.policy.location": "Location", + "submission.sections.sherpa.publisher.policy.location": "Sijainti", + + // "submission.sections.sherpa.publisher.policy.conditions": "Conditions", + "submission.sections.sherpa.publisher.policy.conditions": "Ehdot", + + // "submission.sections.sherpa.publisher.policy.refresh": "Refresh", + "submission.sections.sherpa.publisher.policy.refresh": "Päivitä", + + // "submission.sections.sherpa.record.information": "Record Information", + "submission.sections.sherpa.record.information": "Tietueen tiedot", + + // "submission.sections.sherpa.record.information.id": "ID", + "submission.sections.sherpa.record.information.id": "ID", + + // "submission.sections.sherpa.record.information.date.created": "Date Created", + "submission.sections.sherpa.record.information.date.created": "Luontipäivä", + + // "submission.sections.sherpa.record.information.date.modified": "Last Modified", + "submission.sections.sherpa.record.information.date.modified": "Viimeksi muokattu", + + // "submission.sections.sherpa.record.information.uri": "URI", + "submission.sections.sherpa.record.information.uri": "URI", + + // "submission.sections.sherpa.error.message": "There was an error retrieving sherpa informations", + "submission.sections.sherpa.error.message": "Virhe haettaessa Sherpa-tietoja", + + // "submission.submit.breadcrumbs": "New submission", + "submission.submit.breadcrumbs": "Uusi tallennus", + + // "submission.submit.title": "New submission", + "submission.submit.title": "Uusi tallennus", // "submission.workflow.generic.delete": "Delete", "submission.workflow.generic.delete": "Poista", - // "submission.workflow.generic.delete-help": "If you would to discard this item, select \"Delete\". You will then be asked to confirm it.", - "submission.workflow.generic.delete-help": "Valitse \"Poista\" hylätäksesi tietueen. Poisto pyydetään vielä vahvistamaan.", + // "submission.workflow.generic.delete-help": "Select this option to discard this item. You will then be asked to confirm it.", + "submission.workflow.generic.delete-help": "Valitse hylätäksesi tietueen. Poisto pyydetään vielä vahvistamaan.", // "submission.workflow.generic.edit": "Edit", "submission.workflow.generic.edit": "Muokkaa", @@ -4961,7 +6829,17 @@ // "submission.workflow.generic.view-help": "Select this option to view the item's metadata.", "submission.workflow.generic.view-help": "Valitse tämä katsoaksesi tietueen metadataa.", + // "submission.workflow.generic.submit_select_reviewer": "Select Reviewer", + "submission.workflow.generic.submit_select_reviewer": "Valitse tarkastaja", + // "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": "Arvioi", + + // "submission.workflow.generic.submit_score-help": "", + "submission.workflow.generic.submit_score-help": "", // "submission.workflow.tasks.claimed.approve": "Approve", "submission.workflow.tasks.claimed.approve": "Hyväksy", @@ -4975,6 +6853,12 @@ // "submission.workflow.tasks.claimed.edit_help": "Select this option to change the item's metadata.", "submission.workflow.tasks.claimed.edit_help": "Valitse tämä muuttaaksesi tietueen metadataa.", + // "submission.workflow.tasks.claimed.decline": "Decline", + "submission.workflow.tasks.claimed.decline": "Hylkää", + + // "submission.workflow.tasks.claimed.decline_help": "", + "submission.workflow.tasks.claimed.decline_help": "", + // "submission.workflow.tasks.claimed.reject.reason.info": "Please enter your reason for rejecting the submission into the box below, indicating whether the submitter may fix a problem and resubmit.", "submission.workflow.tasks.claimed.reject.reason.info": "Syötä kenttään syy tallennuksen hylkäämiselle. Kerro myös, voiko tallentaja korjata ongelman ja lähettää aineiston uudelleen.", @@ -4999,8 +6883,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": "Palauta tehtävä tehtäväjonoon, jotta toinen käyttäjä voi suorittaa tehtävän.", - - // "submission.workflow.tasks.generic.error": "Error occurred during operation...", "submission.workflow.tasks.generic.error": "Virhe toimintoa suoritettaessa...", @@ -5013,8 +6895,6 @@ // "submission.workflow.tasks.generic.success": "Operation successful", "submission.workflow.tasks.generic.success": "Toiminto onnistui", - - // "submission.workflow.tasks.pool.claim": "Claim", "submission.workflow.tasks.pool.claim": "Ota itsellesi", @@ -5027,12 +6907,146 @@ // "submission.workflow.tasks.pool.show-detail": "Show detail", "submission.workflow.tasks.pool.show-detail": "Näytä lisätiedot", + // "submission.workspace.generic.view": "View", + "submission.workspace.generic.view": "Näytå", + // "submission.workspace.generic.view-help": "Select this option to view the item's metadata.", + "submission.workspace.generic.view-help": "Valitse tarkastellaksesi tietueen metadataa.", - // "title": "DSpace", - "title": "Julkaisuarkisto", + // "submitter.empty": "N/A", + "submitter.empty": "Ei saatavilla", + + // "subscriptions.title": "Subscriptions", + "subscriptions.title": "Tilaukset", + + // "subscriptions.item": "Subscriptions for items", + "subscriptions.item": "Tietueiden tilaukset", + + // "subscriptions.collection": "Subscriptions for collections", + "subscriptions.collection": "Kokoelmien tilaukset", + + // "subscriptions.community": "Subscriptions for communities", + "subscriptions.community": "Yhteisöjen tilaukset", + + // "subscriptions.subscription_type": "Subscription type", + "subscriptions.subscription_type": "Tilaustyyppi", + + // "subscriptions.frequency": "Subscription frequency", + "subscriptions.frequency": "Tilaustiheys", + + // "subscriptions.frequency.D": "Daily", + "subscriptions.frequency.D": "Päivittäin", + + // "subscriptions.frequency.M": "Monthly", + "subscriptions.frequency.M": "Kuukausittain", + + // "subscriptions.frequency.W": "Weekly", + "subscriptions.frequency.W": "Viikoittain", + + // "subscriptions.tooltip": "Subscribe", + "subscriptions.tooltip": "Tilaa", + + // "subscriptions.modal.title": "Subscriptions", + "subscriptions.modal.title": "Tilaukset", + + // "subscriptions.modal.type-frequency": "Type and frequency", + "subscriptions.modal.type-frequency": "Tyyppi ja tiheys", + + // "subscriptions.modal.close": "Close", + "subscriptions.modal.close": "Sulje", + + // "subscriptions.modal.delete-info": "To remove this subscription, please visit the \"Subscriptions\" page under your user profile", + "subscriptions.modal.delete-info": "Voit poistaa tilauksen käyttäjäprofiilisi \"Tilaukset\"-sivulla ", + + // "subscriptions.modal.new-subscription-form.type.content": "Content", + "subscriptions.modal.new-subscription-form.type.content": "Sisältö", + + // "subscriptions.modal.new-subscription-form.frequency.D": "Daily", + "subscriptions.modal.new-subscription-form.frequency.D": "Päivittäin", + + // "subscriptions.modal.new-subscription-form.frequency.W": "Weekly", + "subscriptions.modal.new-subscription-form.frequency.W": "Viikottain", + + // "subscriptions.modal.new-subscription-form.frequency.M": "Monthly", + "subscriptions.modal.new-subscription-form.frequency.M": "Kuukausittain", + + // "subscriptions.modal.new-subscription-form.submit": "Submit", + "subscriptions.modal.new-subscription-form.submit": "Lähetä", + + // "subscriptions.modal.new-subscription-form.processing": "Processing...", + "subscriptions.modal.new-subscription-form.processing": "Käsitellään...", + + // "subscriptions.modal.create.success": "Subscribed to {{ type }} successfully.", + "subscriptions.modal.create.success": "Tilaus {{ type }} onnistui.", + + // "subscriptions.modal.delete.success": "Subscription deleted successfully", + "subscriptions.modal.delete.success": "Tilaus poistettu", + + // "subscriptions.modal.update.success": "Subscription to {{ type }} updated successfully", + "subscriptions.modal.update.success": "Tilaus {{ type }} päivitetty", + + // "subscriptions.modal.create.error": "An error occurs during the subscription creation", + "subscriptions.modal.create.error": "Virhe tilausta luotaessa", + + // "subscriptions.modal.delete.error": "An error occurs during the subscription delete", + "subscriptions.modal.delete.error": "Virhe tilausta poistettaessa", + + // "subscriptions.modal.update.error": "An error occurs during the subscription update", + "subscriptions.modal.update.error": "Virhe tilausta päivitettäessä", + + // "subscriptions.table.dso": "Subject", + "subscriptions.table.dso": "Asiasana", + + // "subscriptions.table.subscription_type": "Subscription Type", + "subscriptions.table.subscription_type": "Tilaustyyppi", + + // "subscriptions.table.subscription_frequency": "Subscription Frequency", + "subscriptions.table.subscription_frequency": "Tilaustiheys", + + // "subscriptions.table.action": "Action", + "subscriptions.table.action": "Toiminto", + + // "subscriptions.table.edit": "Edit", + "subscriptions.table.edit": "Muokkaa", + + // "subscriptions.table.delete": "Delete", + "subscriptions.table.delete": "Poista", + + // "subscriptions.table.not-available": "Not available", + "subscriptions.table.not-available": "Ei saatavilla", + + // "subscriptions.table.not-available-message": "The subscribed item has been deleted, or you don't currently have the permission to view it", + "subscriptions.table.not-available-message": "Tilattu tietue on poistettu, tai sinulla ei ole oikeuksia nähdä sitä", + + // "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": "Sinulla ei tällä hetkellä ole tilauksia. Voit tilata yhteisön tai kokoelman sähköposti-ilmoitukset kohteen sivulla olevalla tilauspainikkeella.", + + // "thumbnail.default.alt": "Thumbnail Image", + "thumbnail.default.alt": "Pienoiskuva", + + // "thumbnail.default.placeholder": "No Thumbnail Available", + "thumbnail.default.placeholder": "Ei pienoiskuvaa saatavilla", + + // "thumbnail.project.alt": "Project Logo", + "thumbnail.project.alt": "Projektin logo", + + // "thumbnail.project.placeholder": "Project Placeholder Image", + "thumbnail.project.placeholder": "Projektin paikkamerkin kuva", + + // "thumbnail.orgunit.alt": "OrgUnit Logo", + "thumbnail.orgunit.alt": "Organisaatioykiskön logo", + + // "thumbnail.orgunit.placeholder": "OrgUnit Placeholder Image", + "thumbnail.orgunit.placeholder": "Organisaatioyksikön paikkamerkin kuva", + // "thumbnail.person.alt": "Profile Picture", + "thumbnail.person.alt": "Profiilikuva", + // "thumbnail.person.placeholder": "No Profile Picture Available", + "thumbnail.person.placeholder": "Ei profiilikuva saatavilla", + + // "title": "DSpace", + "title": "Julkaisuarkisto", // "vocabulary-treeview.header": "Hierarchical tree view", "vocabulary-treeview.header": "Hierarkkinen puunäkymä", @@ -5055,7 +7069,8 @@ // "vocabulary-treeview.tree.description.srsc": "Research Subject Categories", "vocabulary-treeview.tree.description.srsc": "Tutkimusaiheiden kategoriat", - + // "vocabulary-treeview.info": "Select a subject to add as search filter", + "vocabulary-treeview.info": "Valitse asiasana hakusuodattimeksi", // "uploader.browse": "browse", "uploader.browse": "selaa", @@ -5063,6 +7078,9 @@ // "uploader.drag-message": "Drag & Drop your files here", "uploader.drag-message": "Raahaa tiedostot tähän", + // "uploader.delete.btn-title": "Delete", + "uploader.delete.btn-title": "Poista", + // "uploader.or": ", or ", "uploader.or": " tai", @@ -5081,30 +7099,44 @@ // "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": "Valitse tietueet, joiden virtuaalisen metadatan haluat tallentaa varsinaiseksi metadataksi", + // "supervisedWorkspace.search.results.head": "Supervised Items", + "supervisedWorkspace.search.results.head": "Valvotut tietueet", + // "workspace.search.results.head": "Your submissions", + "workspace.search.results.head": "Tallennuksesi", // "workflowAdmin.search.results.head": "Administer Workflow", "workflowAdmin.search.results.head": "Hallinnoi työnkulkua", + // "workflow.search.results.head": "Workflow tasks", + "workflow.search.results.head": "Työnkulun tehtävät", + + // "supervision.search.results.head": "Workflow and Workspace tasks", + "supervision.search.results.head": "Työnkulun ja työtilan tehtävät", + // "workflow-item.edit.breadcrumbs": "Edit workflowitem", + "workflow-item.edit.breadcrumbs": "Muokkaa työnkulun tietuetta", + + // "workflow-item.edit.title": "Edit workflowitem", + "workflow-item.edit.title": "Muokkaa työnkulun tietuetta", // "workflow-item.delete.notification.success.title": "Deleted", "workflow-item.delete.notification.success.title": "Poistettu", // "workflow-item.delete.notification.success.content": "This workflow item was successfully deleted", - "workflow-item.delete.notification.success.content": "Tarkastamaton tietue poistettu", + "workflow-item.delete.notification.success.content": "Työnkulun tietue poistettu", // "workflow-item.delete.notification.error.title": "Something went wrong", "workflow-item.delete.notification.error.title": "Tapahtui virhe", // "workflow-item.delete.notification.error.content": "The workflow item could not be deleted", - "workflow-item.delete.notification.error.content": "Tarkastamatonta tietuetta ei voitu poistaa", + "workflow-item.delete.notification.error.content": "Työnkulun tietuetta ei voitu poistaa", // "workflow-item.delete.title": "Delete workflow item", - "workflow-item.delete.title": "Poista tarkastamaton tietue", + "workflow-item.delete.title": "Poista työnkulkuun tietue", // "workflow-item.delete.header": "Delete workflow item", - "workflow-item.delete.header": "Poista tarkastamaton tietue", + "workflow-item.delete.header": "Poista työnkulkuun tietue", // "workflow-item.delete.button.cancel": "Cancel", "workflow-item.delete.button.cancel": "Peruuta", @@ -5112,30 +7144,566 @@ // "workflow-item.delete.button.confirm": "Delete", "workflow-item.delete.button.confirm": "Poista", - // "workflow-item.send-back.notification.success.title": "Sent back to submitter", "workflow-item.send-back.notification.success.title": "Lähetetty takaisin tallentajalle", // "workflow-item.send-back.notification.success.content": "This workflow item was successfully sent back to the submitter", - "workflow-item.send-back.notification.success.content": "Tarkastamaton tietue lähetetty takaisin tallentajalle", + "workflow-item.send-back.notification.success.content": "Työnkulun tietue lähetetty takaisin tallentajalle", // "workflow-item.send-back.notification.error.title": "Something went wrong", "workflow-item.send-back.notification.error.title": "Tapahtui virhe", // "workflow-item.send-back.notification.error.content": "The workflow item could not be sent back to the submitter", - "workflow-item.send-back.notification.error.content": "Tarkastamatonta tietuetta ei voitu lähettää takaisin tallentajalle", + "workflow-item.send-back.notification.error.content": "Työnkulun tietuetta ei voitu lähettää takaisin tallentajalle", // "workflow-item.send-back.title": "Send workflow item back to submitter", - "workflow-item.send-back.title": "Lähetä tarkastamaton tietue takaisin tallentajalle", + "workflow-item.send-back.title": "Lähetä työnkulkuun tietue takaisin tallentajalle", // "workflow-item.send-back.header": "Send workflow item back to submitter", - "workflow-item.send-back.header": "Lähetä tarkastamaton tietue takaisin tallentajalle", + "workflow-item.send-back.header": "Lähetä työnkulun tietue takaisin tallentajalle", // "workflow-item.send-back.button.cancel": "Cancel", "workflow-item.send-back.button.cancel": "Peruuta", - // "workflow-item.send-back.button.confirm": "Send back" + // "workflow-item.send-back.button.confirm": "Send back", "workflow-item.send-back.button.confirm": "Lähetä takaisin", + // "workflow-item.view.breadcrumbs": "Workflow View", + "workflow-item.view.breadcrumbs": "Työnkulkunäkymä", + + // "workspace-item.view.breadcrumbs": "Workspace View", + "workspace-item.view.breadcrumbs": "Työnkulkunäkymä", + + // "workspace-item.view.title": "Workspace View", + "workspace-item.view.title": "Työnkulkunäkymä", + + // "workspace-item.delete.breadcrumbs": "Workspace Delete", + "workspace-item.delete.breadcrumbs": "Työnkulku - poisto", + + // "workspace-item.delete.header": "Delete workspace item", + "workspace-item.delete.header": "Poista työnkulun tietue", + + // "workspace-item.delete.button.confirm": "Delete", + "workspace-item.delete.button.confirm": "Poista", + + // "workspace-item.delete.button.cancel": "Cancel", + "workspace-item.delete.button.cancel": "Peruuta", + + // "workspace-item.delete.notification.success.title": "Deleted", + "workspace-item.delete.notification.success.title": "Poistettu", + + // "workspace-item.delete.title": "This workspace item was successfully deleted", + "workspace-item.delete.title": "Työnkulun tietue poistettu", + + // "workspace-item.delete.notification.error.title": "Something went wrong", + "workspace-item.delete.notification.error.title": "Tapahtui virhe", + + // "workspace-item.delete.notification.error.content": "The workspace item could not be deleted", + "workspace-item.delete.notification.error.content": "Työnkulun tietuetta ei voitu poistaa", + + // "workflow-item.advanced.title": "Advanced workflow", + "workflow-item.advanced.title": "Laajennettu työnkulku", + + // "workflow-item.selectrevieweraction.notification.success.title": "Selected reviewer", + "workflow-item.selectrevieweraction.notification.success.title": "Valittu tarkastaja", + + // "workflow-item.selectrevieweraction.notification.success.content": "The reviewer for this workflow item has been successfully selected", + "workflow-item.selectrevieweraction.notification.success.content": "Työnkulun tarkastaja on valittu", + + // "workflow-item.selectrevieweraction.notification.error.title": "Something went wrong", + "workflow-item.selectrevieweraction.notification.error.title": "Tapahtui virhe", + + // "workflow-item.selectrevieweraction.notification.error.content": "Couldn't select the reviewer for this workflow item", + "workflow-item.selectrevieweraction.notification.error.content": "Työnkulun tietueelle ei voitu valita tarkastajaa", + + // "workflow-item.selectrevieweraction.title": "Select Reviewer", + "workflow-item.selectrevieweraction.title": "Valitse tarkastaja", + + // "workflow-item.selectrevieweraction.header": "Select Reviewer", + "workflow-item.selectrevieweraction.header": "Valitse tarkastaja", + + // "workflow-item.selectrevieweraction.button.cancel": "Cancel", + "workflow-item.selectrevieweraction.button.cancel": "Peruuta", + + // "workflow-item.selectrevieweraction.button.confirm": "Confirm", + "workflow-item.selectrevieweraction.button.confirm": "Vahvista", + + // "workflow-item.scorereviewaction.notification.success.title": "Rating review", + "workflow-item.scorereviewaction.notification.success.title": "Arviointikatselmus", + + // "workflow-item.scorereviewaction.notification.success.content": "The rating for this item workflow item has been successfully submitted", + "workflow-item.scorereviewaction.notification.success.content": "Tietueen arviointi on lähetetty", + + // "workflow-item.scorereviewaction.notification.error.title": "Something went wrong", + "workflow-item.scorereviewaction.notification.error.title": "Tapahtui virhe", + + // "workflow-item.scorereviewaction.notification.error.content": "Couldn't rate this item", + "workflow-item.scorereviewaction.notification.error.content": "Tietueen arviointi epäonnistui", + + // "workflow-item.scorereviewaction.title": "Rate this item", + "workflow-item.scorereviewaction.title": "Arvioi tietue", + + // "workflow-item.scorereviewaction.header": "Rate this item", + "workflow-item.scorereviewaction.header": "Arvioi tietue", + + // "workflow-item.scorereviewaction.button.cancel": "Cancel", + "workflow-item.scorereviewaction.button.cancel": "Peruuta", + + // "workflow-item.scorereviewaction.button.confirm": "Confirm", + "workflow-item.scorereviewaction.button.confirm": "Vahvista", + + // "idle-modal.header": "Session will expire soon", + "idle-modal.header": "Istunto vanhenee pian", + + // "idle-modal.info": "For security reasons, user sessions expire after {{ timeToExpire }} minutes of inactivity. Your session will expire soon. Would you like to extend it or log out?", + "idle-modal.info": "Turvallisuussyistä käyttäjän istunto vanhenee, kun käyttäjä on ollut epäaktiivinen {{ timeToExpire }} minuuttia. Istuntosi vanhenee pian. Haluatko pidentää istuntoasi vai kirjautua ulos?", + + // "idle-modal.log-out": "Log out", + "idle-modal.log-out": "Kirjaudu ulos", + + // "idle-modal.extend-session": "Extend session", + "idle-modal.extend-session": "Pidennä istuntoa", + + // "researcher.profile.action.processing": "Processing...", + "researcher.profile.action.processing": "Käsitellään...", + + // "researcher.profile.associated": "Researcher profile associated", + "researcher.profile.associated": "Tutkijaprofiili liitetty", + + // "researcher.profile.change-visibility.fail": "An unexpected error occurs while changing the profile visibility", + "researcher.profile.change-visibility.fail": "Odottamaton virhe muutettaessa profiilin näkyvyyttä", + + // "researcher.profile.create.new": "Create new", + "researcher.profile.create.new": "Luo uusi", + + // "researcher.profile.create.success": "Researcher profile created successfully", + "researcher.profile.create.success": "Tutkijaprofiili luotu", + + // "researcher.profile.create.fail": "An error occurs during the researcher profile creation", + "researcher.profile.create.fail": "Virhe luotaessa tutkijaprofiilia", + + // "researcher.profile.delete": "Delete", + "researcher.profile.delete": "Poista", + + // "researcher.profile.expose": "Expose", + "researcher.profile.expose": "Paljasta", + + // "researcher.profile.hide": "Hide", + "researcher.profile.hide": "Piilota", + + // "researcher.profile.not.associated": "Researcher profile not yet associated", + "researcher.profile.not.associated": "Tutkijaprofiilia ei ole vielä liitetty", + + // "researcher.profile.view": "View", + "researcher.profile.view": "Näytä", + + // "researcher.profile.private.visibility": "PRIVATE", + "researcher.profile.private.visibility": "YKSITYINEN", + + // "researcher.profile.public.visibility": "PUBLIC", + "researcher.profile.public.visibility": "JULKINEN", + + // "researcher.profile.status": "Status:", + "researcher.profile.status": "Tila :", + + // "researcherprofile.claim.not-authorized": "You are not authorized to claim this item. For more details contact the administrator(s).", + "researcherprofile.claim.not-authorized": "Sinulla ei ole valtuuksia ottaa itsellesi tätä tietuetta. Lisätietoa saat ylläpitäjiltä.", + + // "researcherprofile.error.claim.body": "An error occurred while claiming the profile, please try again later", + "researcherprofile.error.claim.body": "Tapahtui virhe profiilia haettaessa, yritä myöhemmin uudelleen", + + // "researcherprofile.error.claim.title": "Error", + "researcherprofile.error.claim.title": "Virhe", + + // "researcherprofile.success.claim.body": "Profile claimed with success", + "researcherprofile.success.claim.body": "Profiili haettu", + + // "researcherprofile.success.claim.title": "Success", + "researcherprofile.success.claim.title": "Valmis", + + // "person.page.orcid.create": "Create an ORCID ID", + "person.page.orcid.create": "Luo ORCID-tunniste", + + // "person.page.orcid.granted-authorizations": "Granted authorizations", + "person.page.orcid.granted-authorizations": "Myönnetyt valtuudet", + + // "person.page.orcid.grant-authorizations": "Grant authorizations", + "person.page.orcid.grant-authorizations": "Myönnä valtuuksia", + + // "person.page.orcid.link": "Connect to ORCID ID", + "person.page.orcid.link": "Yhdistä ORCID-tunniste", + + // "person.page.orcid.link.processing": "Linking profile to ORCID...", + "person.page.orcid.link.processing": "Liitetään profiilia ORCID-tunnisteeseen...", + + // "person.page.orcid.link.error.message": "Something went wrong while connecting the profile with ORCID. If the problem persists, contact the administrator.", + "person.page.orcid.link.error.message": "Virhe yhdistettäessä profiilia ORCID-tunnisteeseen. Jos virhe jatkuu, ota yhteyttä ylläpitäjään.", + + // "person.page.orcid.orcid-not-linked-message": "The ORCID iD of this profile ({{ orcid }}) has not yet been connected to an account on the ORCID registry or the connection is expired.", + "person.page.orcid.orcid-not-linked-message": "Tämän profiilin ORCID-tunnistetta ({{ orcid }}) ei ole vielä yhdistetty tiliin ORCID-rekisterissä tai yhteys on vanhentunut.", + + // "person.page.orcid.unlink": "Disconnect from ORCID", + "person.page.orcid.unlink": "Katkaise yhteys ORCIDiin", + + // "person.page.orcid.unlink.processing": "Processing...", + "person.page.orcid.unlink.processing": "Käsitellään...", + + // "person.page.orcid.missing-authorizations": "Missing authorizations", + "person.page.orcid.missing-authorizations": "Puuttuvia valtuuksia", + + // "person.page.orcid.missing-authorizations-message": "The following authorizations are missing:", + "person.page.orcid.missing-authorizations-message": "Seuraavat valtuudet puuttuvat:", + + // "person.page.orcid.no-missing-authorizations-message": "Great! This box is empty, so you have granted all access rights to use all functions offers by your institution.", + "person.page.orcid.no-missing-authorizations-message": "Hyvä! Tämä laatikko on tyhjä, joten olet myöntänyt kaikki käyttöoikeudet instituutiosi tarjoamiin toimintoihin.", + + // "person.page.orcid.no-orcid-message": "No ORCID iD associated yet. By clicking on the button below it is possible to link this profile with an ORCID account.", + "person.page.orcid.no-orcid-message": "ORCID-tunnistetta ei ole vielä liitetty. Painamalla alapuolella olevaa painiketta voit yhdistää tämän profiilin ORCID-tiliin.", + + // "person.page.orcid.profile-preferences": "Profile preferences", + "person.page.orcid.profile-preferences": "Profiiliasetukset", + + // "person.page.orcid.funding-preferences": "Funding preferences", + "person.page.orcid.funding-preferences": "Rahoitusasetukset", + + // "person.page.orcid.publications-preferences": "Publication preferences", + "person.page.orcid.publications-preferences": "Julkaisuasetukset", + + // "person.page.orcid.remove-orcid-message": "If you need to remove your ORCID, please contact the repository administrator", + "person.page.orcid.remove-orcid-message": "Jos haluat poistaa ORCID-tunnuksesi, ota yhteyttä julkaisuarkiston ylläpitäjään", + + // "person.page.orcid.save.preference.changes": "Update settings", + "person.page.orcid.save.preference.changes": "Muokkaa asetuksia", + + // "person.page.orcid.sync-profile.affiliation": "Affiliation", + "person.page.orcid.sync-profile.affiliation": "Affiliaatio", + + // "person.page.orcid.sync-profile.biographical": "Biographical data", + "person.page.orcid.sync-profile.biographical": "Elämäkerralliset tiedot", + + // "person.page.orcid.sync-profile.education": "Education", + "person.page.orcid.sync-profile.education": "Koulutus", + + // "person.page.orcid.sync-profile.identifiers": "Identifiers", + "person.page.orcid.sync-profile.identifiers": "Tunnisteet", + + // "person.page.orcid.sync-fundings.all": "All fundings", + "person.page.orcid.sync-fundings.all": "Kaikki rahoitukset", + + // "person.page.orcid.sync-fundings.mine": "My fundings", + "person.page.orcid.sync-fundings.mine": "Omat rahoitukset", + + // "person.page.orcid.sync-fundings.my_selected": "Selected fundings", + "person.page.orcid.sync-fundings.my_selected": "Valitut rahoitukset", + + // "person.page.orcid.sync-fundings.disabled": "Disabled", + "person.page.orcid.sync-fundings.disabled": "Poistettu käytöstä", + + // "person.page.orcid.sync-publications.all": "All publications", + "person.page.orcid.sync-publications.all": "Kaikki julkaisut", + + // "person.page.orcid.sync-publications.mine": "My publications", + "person.page.orcid.sync-publications.mine": "Omat julkaisut", + + // "person.page.orcid.sync-publications.my_selected": "Selected publications", + "person.page.orcid.sync-publications.my_selected": "Valitut julkaisut", + + // "person.page.orcid.sync-publications.disabled": "Disabled", + "person.page.orcid.sync-publications.disabled": "Poistettu käytöstä", + + // "person.page.orcid.sync-queue.discard": "Discard the change and do not synchronize with the ORCID registry", + "person.page.orcid.sync-queue.discard": "Hylkää muutos. Älä synkronoi ORCID-rekisterin kanssa.", + + // "person.page.orcid.sync-queue.discard.error": "The discarding of the ORCID queue record failed", + "person.page.orcid.sync-queue.discard.error": "ORCID-jonotietueen hylkääminen epäonnistui", + + // "person.page.orcid.sync-queue.discard.success": "The ORCID queue record have been discarded successfully", + "person.page.orcid.sync-queue.discard.success": "ORCID-jonotietue hylätty", + + // "person.page.orcid.sync-queue.empty-message": "The ORCID queue registry is empty", + "person.page.orcid.sync-queue.empty-message": "ORCID-jonorekisteri on tyhjä", + + // "person.page.orcid.sync-queue.table.header.type": "Type", + "person.page.orcid.sync-queue.table.header.type": "Tyyppi", + + // "person.page.orcid.sync-queue.table.header.description": "Description", + "person.page.orcid.sync-queue.table.header.description": "Kuvaus", + + // "person.page.orcid.sync-queue.table.header.action": "Action", + "person.page.orcid.sync-queue.table.header.action": "Toiminto", + + // "person.page.orcid.sync-queue.description.affiliation": "Affiliations", + "person.page.orcid.sync-queue.description.affiliation": "Affiliaatiot", + + // "person.page.orcid.sync-queue.description.country": "Country", + "person.page.orcid.sync-queue.description.country": "Maa", + + // "person.page.orcid.sync-queue.description.education": "Educations", + "person.page.orcid.sync-queue.description.education": "Koulutukset", + + // "person.page.orcid.sync-queue.description.external_ids": "External ids", + "person.page.orcid.sync-queue.description.external_ids": "Ulkoiset tunnisteet", + + // "person.page.orcid.sync-queue.description.other_names": "Other names", + "person.page.orcid.sync-queue.description.other_names": "Muut nimet", + + // "person.page.orcid.sync-queue.description.qualification": "Qualifications", + "person.page.orcid.sync-queue.description.qualification": "Pätevyydet", + + // "person.page.orcid.sync-queue.description.researcher_urls": "Researcher urls", + "person.page.orcid.sync-queue.description.researcher_urls": "Tutkijan URL-osoitteet", + + // "person.page.orcid.sync-queue.description.keywords": "Keywords", + "person.page.orcid.sync-queue.description.keywords": "Avainsanat", + + // "person.page.orcid.sync-queue.tooltip.insert": "Add a new entry in the ORCID registry", + "person.page.orcid.sync-queue.tooltip.insert": "Lisää uusi kohde ORCID-rekisteriin", + + // "person.page.orcid.sync-queue.tooltip.update": "Update this entry on the ORCID registry", + "person.page.orcid.sync-queue.tooltip.update": "Päivitä tämä kohde ORCID-rekisterissä", + + // "person.page.orcid.sync-queue.tooltip.delete": "Remove this entry from the ORCID registry", + "person.page.orcid.sync-queue.tooltip.delete": "Poista tämä kohde ORCID-rekisteristä", + + // "person.page.orcid.sync-queue.tooltip.publication": "Publication", + "person.page.orcid.sync-queue.tooltip.publication": "Julkaisu", + + // "person.page.orcid.sync-queue.tooltip.project": "Project", + "person.page.orcid.sync-queue.tooltip.project": "Projekti", + + // "person.page.orcid.sync-queue.tooltip.affiliation": "Affiliation", + "person.page.orcid.sync-queue.tooltip.affiliation": "Affiliaatio", + + // "person.page.orcid.sync-queue.tooltip.education": "Education", + "person.page.orcid.sync-queue.tooltip.education": "Koulutus", + + // "person.page.orcid.sync-queue.tooltip.qualification": "Qualification", + "person.page.orcid.sync-queue.tooltip.qualification": "Pätevyys", + + // "person.page.orcid.sync-queue.tooltip.other_names": "Other name", + "person.page.orcid.sync-queue.tooltip.other_names": "Toinen nimi", + + // "person.page.orcid.sync-queue.tooltip.country": "Country", + "person.page.orcid.sync-queue.tooltip.country": "Maa", + + // "person.page.orcid.sync-queue.tooltip.keywords": "Keyword", + "person.page.orcid.sync-queue.tooltip.keywords": "Asiasana", + + // "person.page.orcid.sync-queue.tooltip.external_ids": "External identifier", + "person.page.orcid.sync-queue.tooltip.external_ids": "Ulkoinen tunniste", + + // "person.page.orcid.sync-queue.tooltip.researcher_urls": "Researcher url", + "person.page.orcid.sync-queue.tooltip.researcher_urls": "Tutkijan URL-osoite", + + // "person.page.orcid.sync-queue.send": "Synchronize with ORCID registry", + "person.page.orcid.sync-queue.send": "Synkronoi ORCID-rekisterin kanssa", + + // "person.page.orcid.sync-queue.send.unauthorized-error.title": "The submission to ORCID failed for missing authorizations.", + "person.page.orcid.sync-queue.send.unauthorized-error.title": "ORCID-tunnisteen lähettäminen epäonnistui puuttuvien käyttöoikeuksien takia.", + + // "person.page.orcid.sync-queue.send.unauthorized-error.content": "Click here to grant again the required permissions. If the problem persists, contact the administrator", + "person.page.orcid.sync-queue.send.unauthorized-error.content": "Napsauta tästä myöntääksesi vaaditut käyttöoikeudet. Jos virhe jatkuu, ota yhteyttä ylläpitäjään.", + + // "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": "ORCID-lähetys epäonnistui, koska ORCID-rekisteriin lähetetty resurssi ei ole kelvollinen", + + // "person.page.orcid.sync-queue.send.error": "The submission to ORCID failed", + "person.page.orcid.sync-queue.send.error": "ORCID-lähetys epäonnistui", + + // "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": "ORCID-lähetys epäonnistui, koska lähetetty resurssi on jo ORCID-rekisterissä", + + // "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": "Resurssia ei enää ole ORCID-rekisterissä..", + + // "person.page.orcid.sync-queue.send.success": "The submission to ORCID was completed successfully", + "person.page.orcid.sync-queue.send.success": "ORCID-lähetys onnistui", + + // "person.page.orcid.sync-queue.send.validation-error": "The data that you want to synchronize with ORCID is not valid", + "person.page.orcid.sync-queue.send.validation-error": "ORCIDin kanssa synkronoitava data ei ole kelvollista", + + // "person.page.orcid.sync-queue.send.validation-error.amount-currency.required": "The amount's currency is required", + "person.page.orcid.sync-queue.send.validation-error.amount-currency.required": "Valuutta on pakollinen tieto", + + // "person.page.orcid.sync-queue.send.validation-error.external-id.required": "The resource to be sent requires at least one identifier", + "person.page.orcid.sync-queue.send.validation-error.external-id.required": "Lähetettävällä resurssilla on oltava ainakin yksi tunniste", + + // "person.page.orcid.sync-queue.send.validation-error.title.required": "The title is required", + "person.page.orcid.sync-queue.send.validation-error.title.required": "Nimeke on pakollinen tieto", + + // "person.page.orcid.sync-queue.send.validation-error.type.required": "The dc.type is required", + "person.page.orcid.sync-queue.send.validation-error.type.required": "dc.type on pakollinen tieto", + + // "person.page.orcid.sync-queue.send.validation-error.start-date.required": "The start date is required", + "person.page.orcid.sync-queue.send.validation-error.start-date.required": "Alkupäivämäärä on pakollinen tieto", + + // "person.page.orcid.sync-queue.send.validation-error.funder.required": "The funder is required", + "person.page.orcid.sync-queue.send.validation-error.funder.required": "Rahoittaja on pakollinen tieto", + + // "person.page.orcid.sync-queue.send.validation-error.country.invalid": "Invalid 2 digits ISO 3166 country", + "person.page.orcid.sync-queue.send.validation-error.country.invalid": "Virheelliset kaksi merkkiä ISO 3166 -maatunnisteessa", + + // "person.page.orcid.sync-queue.send.validation-error.organization.required": "The organization is required", + "person.page.orcid.sync-queue.send.validation-error.organization.required": "Organisaatio on pakollinen tieto", + + // "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": "Organisaation nimi on pakollinen tieto", + + // "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": "Julkaisuajan on oltava vuoden 1900 jälkeen", + + // "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": "Organisaatiolla on oltava osoite", + + // "person.page.orcid.sync-queue.send.validation-error.organization.city-required": "The address of the organization to be sent requires a city", + "person.page.orcid.sync-queue.send.validation-error.organization.city-required": "Organisaation osoitteessa on oltava kaupunki", + + // "person.page.orcid.sync-queue.send.validation-error.organization.country-required": "The address of the organization to be sent requires a valid 2 digits ISO 3166 country", + "person.page.orcid.sync-queue.send.validation-error.organization.country-required": "Organisaation osoitteessa on oltava oikeelliset kaksi ISO 3166 -maatunnisteen merkkiä", + + // "person.page.orcid.sync-queue.send.validation-error.disambiguated-organization.required": "An identifier to disambiguate organizations is required. Supported ids are GRID, Ringgold, Legal Entity identifiers (LEIs) and Crossref Funder Registry identifiers", + "person.page.orcid.sync-queue.send.validation-error.disambiguated-organization.required": "Tunniste vaaditaan organisaatioiden erottelemiseksi. Tuetut tunnisteet ovat GRID, Ringgold, Legal Entity identifier -tunnisteet (LEIt) ja Crossrefin rahoittaharekisterin tunnisteet (FUNDREF)", + + // "person.page.orcid.sync-queue.send.validation-error.disambiguated-organization.value-required": "The organization's identifiers requires a value", + "person.page.orcid.sync-queue.send.validation-error.disambiguated-organization.value-required": "Organisaation tunnisteilla on oltava arvo", + + // "person.page.orcid.sync-queue.send.validation-error.disambiguation-source.required": "The organization's identifiers requires a source", + "person.page.orcid.sync-queue.send.validation-error.disambiguation-source.required": "Organisaation tunnisteilla on oltava lähde", + + // "person.page.orcid.sync-queue.send.validation-error.disambiguation-source.invalid": "The source of one of the organization identifiers is invalid. Supported sources are RINGGOLD, GRID, LEI and FUNDREF", + "person.page.orcid.sync-queue.send.validation-error.disambiguation-source.invalid": "Organisaation tunnisteen lähde ei ole validi. Tuetut lähteet ovat RINGGOLD, GRID, LEI ja FUNDREF", + + // "person.page.orcid.synchronization-mode": "Synchronization mode", + "person.page.orcid.synchronization-mode": "Synkronointimoodi", + + // "person.page.orcid.synchronization-mode.batch": "Batch", + "person.page.orcid.synchronization-mode.batch": "Erä", + + // "person.page.orcid.synchronization-mode.label": "Synchronization mode", + "person.page.orcid.synchronization-mode.label": "Synkronointimoodi", + + // "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": "Valitse, miten haluat synkronoinnin ORCIDiin tapahtuvan. Vaihtoehdot ovat \"Manuaalinen\" (sinun on lähetettävä tietosi ORCIDiin manuaalisesti) tai \"Erä\" (järjestelmä lähettää tietosi ORCIDiin ajastetun skriptin avulla).", + + // "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": "Valitse, lähetetäänkö linkitetyt projektisi ORCID-rekisterin rahoitustietoluetteloon.", + + // "person.page.orcid.synchronization-mode-publication-message": "Select whether to send your linked Publication entities to your ORCID record's list of works.", + "person.page.orcid.synchronization-mode-publication-message": "Valitse, lähetetäänkö linkitetyt julkaisusi ORCID-rekisterin luetteloon.", + + // "person.page.orcid.synchronization-mode-profile-message": "Select whether to send your biographical data or personal identifiers to your ORCID record.", + "person.page.orcid.synchronization-mode-profile-message": "Valitse, lähetetäänkö elämäkerralliset tietosi tai henkilökohtaiset tunnisteesi ORCID-rekisteriin.", + + // "person.page.orcid.synchronization-settings-update.success": "The synchronization settings have been updated successfully", + "person.page.orcid.synchronization-settings-update.success": "Synkronisointiasetukset päivitetty", + + // "person.page.orcid.synchronization-settings-update.error": "The update of the synchronization settings failed", + "person.page.orcid.synchronization-settings-update.error": "Synkronisointiasetusten päivittäminen epäonnistui", + + // "person.page.orcid.synchronization-mode.manual": "Manual", + "person.page.orcid.synchronization-mode.manual": "Manuaalinen", + + // "person.page.orcid.scope.authenticate": "Get your ORCID iD", + "person.page.orcid.scope.authenticate": "Hae ORCID-tunnisteesi", + + // "person.page.orcid.scope.read-limited": "Read your information with visibility set to Trusted Parties", + // TODO New key - Add a translation + "person.page.orcid.scope.read-limited": "Read your information with visibility set to Trusted Parties", + + // "person.page.orcid.scope.activities-update": "Add/update your research activities", + "person.page.orcid.scope.activities-update": "Lisää/päivitä tutkimustoimiasi", + + // "person.page.orcid.scope.person-update": "Add/update other information about you", + "person.page.orcid.scope.person-update": "Lisää/päivitä muita tietojasi", + + // "person.page.orcid.unlink.success": "The disconnection between the profile and the ORCID registry was successful", + "person.page.orcid.unlink.success": "Yhteys katkaistu profiilin ja ORCID-rekisterin välillä", + + // "person.page.orcid.unlink.error": "An error occurred while disconnecting between the profile and the ORCID registry. Try again", + "person.page.orcid.unlink.error": "Tapahtui virhe katkaistaessa yhteyttä profiilin ja ORCID-rekisterin välillä. Yritä uudelleen", + + // "person.orcid.sync.setting": "ORCID Synchronization settings", + "person.orcid.sync.setting": "ORCIDin synkronisointiasetukset", + + // "person.orcid.registry.queue": "ORCID Registry Queue", + "person.orcid.registry.queue": "ORCIDin rekisteröintijono", + + // "person.orcid.registry.auth": "ORCID Authorizations", + "person.orcid.registry.auth": "ORCID-käyttöoikeudet", + + // "home.recent-submissions.head": "Recent Submissions", + "home.recent-submissions.head": "Viimeksi tallennetut", + + // "listable-notification-object.default-message": "This object couldn't be retrieved", + "listable-notification-object.default-message": "Kohdetta ei voitu noutaa", + + // "system-wide-alert-banner.retrieval.error": "Something went wrong retrieving the system-wide alert banner", + "system-wide-alert-banner.retrieval.error": "Virhe noudettaessa järjestelmänlaajuista hälytysbanneria", + + // "system-wide-alert-banner.countdown.prefix": "In", + "system-wide-alert-banner.countdown.prefix": "Aikaa", + + // "system-wide-alert-banner.countdown.days": "{{days}} day(s),", + "system-wide-alert-banner.countdown.days": "{{days}} päivää(ä),", + + // "system-wide-alert-banner.countdown.hours": "{{hours}} hour(s) and", + "system-wide-alert-banner.countdown.hours": "{{hours}} tunti(a) and", + + // "system-wide-alert-banner.countdown.minutes": "{{minutes}} minute(s):", + "system-wide-alert-banner.countdown.minutes": "{{minutes}} minuutti(a):", + + // "menu.section.system-wide-alert": "System-wide Alert", + "menu.section.system-wide-alert": "Järjestelmänlaajuinen hälytys", + + // "system-wide-alert.form.header": "System-wide Alert", + "system-wide-alert.form.header": "Järjestelmänlaajuinen hälytys", + + // "system-wide-alert-form.retrieval.error": "Something went wrong retrieving the system-wide alert", + "system-wide-alert-form.retrieval.error": "Virhe noudettaessa järjestelmänlaajuista hälytystä", + + // "system-wide-alert.form.cancel": "Cancel", + "system-wide-alert.form.cancel": "Peruuta", + + // "system-wide-alert.form.save": "Save", + "system-wide-alert.form.save": "Tallenna", + + // "system-wide-alert.form.label.active": "ACTIVE", + "system-wide-alert.form.label.active": "AKTIIVINEN", + + // "system-wide-alert.form.label.inactive": "INACTIVE", + "system-wide-alert.form.label.inactive": "EI-AKTIIVINEN", + + // "system-wide-alert.form.error.message": "The system wide alert must have a message", + "system-wide-alert.form.error.message": "Järjestelmänlaajuisessa hälytyksessä on oltava viesti", + + // "system-wide-alert.form.label.message": "Alert message", + "system-wide-alert.form.label.message": "Hälytysviesti", + + // "system-wide-alert.form.label.countdownTo.enable": "Enable a countdown timer", + "system-wide-alert.form.label.countdownTo.enable": "Ota käyttöön lähtölaskennan ajastin", + + // "system-wide-alert.form.label.countdownTo.hint": "Hint: Set a countdown timer. When enabled, a date can be set in the future and the system-wide alert banner will perform a countdown to the set date. When this timer ends, it will disappear from the alert. The server will NOT be automatically stopped.", + "system-wide-alert.form.label.countdownTo.hint": "Vinkki: Aseta lähtölaskennan ajastin. Kun se on käytössä, voidaan päivämäärä asettaa tulevaisuuteen, jolloin järjestelmänlaajuinen hälytysbanneri suorittaa lähtölaskennan asetettuun päivämäärään. Kun ajastin päättyy, hälytys katoaa. Palvelinta EI pysäytetä automaattisesti.", + + // "system-wide-alert.form.label.preview": "System-wide alert preview", + "system-wide-alert.form.label.preview": "Järjestelmänlaajuisen hälytyksen esikatselu", + + // "system-wide-alert.form.update.success": "The system-wide alert was successfully updated", + "system-wide-alert.form.update.success": "Järjestelmänlaajuinen hälytys päivitetty", + + // "system-wide-alert.form.update.error": "Something went wrong when updating the system-wide alert", + "system-wide-alert.form.update.error": "Virhe päivitettäessä järjestelmänlaajuista hälytystä", + + // "system-wide-alert.form.create.success": "The system-wide alert was successfully created", + "system-wide-alert.form.create.success": "Järjestelmänlaajuinen hälytys luotu", + + // "system-wide-alert.form.create.error": "Something went wrong when creating the system-wide alert", + "system-wide-alert.form.create.error": "Virhe luotaessa järjestelmänlaajuista hälytystä", + + // "admin.system-wide-alert.breadcrumbs": "System-wide Alerts", + "admin.system-wide-alert.breadcrumbs": "Järjestelmänlaajuiset hälytykset", + + // "admin.system-wide-alert.title": "System-wide Alerts", + "admin.system-wide-alert.title": "Järjestelmänlaajuiset hälytykset", -} +} \ No newline at end of file From 7c379db7eec9196e1fcbd5eacbcbd67246c4546f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Aug 2023 21:23:09 +0000 Subject: [PATCH 0008/1005] Bump semver from 5.7.1 to 5.7.2 Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2) --- updated-dependencies: - dependency-name: semver dependency-type: indirect ... Signed-off-by: dependabot[bot] (cherry picked from commit 0b0c60e38c1aecb690f15b1af20df655bd028c5f) --- yarn.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/yarn.lock b/yarn.lock index 730966fcdb5..21de68a480a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10114,33 +10114,33 @@ selfsigned@^2.1.1: dependencies: node-forge "^1" -semver@7.3.8, semver@^7.3.5, semver@^7.3.8: +semver@7.3.8: version "7.3.8" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" semver@^5.3.0, semver@^5.6.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.7: - version "7.4.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz" - integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw== +semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" semver@~7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== send@0.16.2: From 0dc74165dc58bbeb36bd95ef86b6666e5245997f Mon Sep 17 00:00:00 2001 From: Mirko Scherf Date: Thu, 20 Jul 2023 14:53:28 +0200 Subject: [PATCH 0009/1005] refactor: rename aletr-type.ts to alert-type.ts --- .../group-registry/group-form/group-form.component.ts | 2 +- .../edit-item-template-page.component.ts | 2 +- .../dso-shared/dso-edit-metadata/dso-edit-metadata.component.ts | 2 +- .../health-panel/health-component/health-component.component.ts | 2 +- src/app/item-page/alerts/item-alerts.component.ts | 2 +- .../item-version-history/item-version-history.component.ts | 2 +- .../item-page/orcid-page/orcid-queue/orcid-queue.component.ts | 2 +- src/app/item-page/versions/item-versions.component.ts | 2 +- .../item-page/versions/notice/item-versions-notice.component.ts | 2 +- src/app/process-page/detail/process-detail.component.ts | 2 +- src/app/register-email-form/register-email-form.component.ts | 2 +- .../access-control-form-container.component.ts | 2 +- src/app/shared/alert/{aletr-type.ts => alert-type.ts} | 0 src/app/shared/alert/alert.component.spec.ts | 2 +- src/app/shared/alert/alert.component.ts | 2 +- src/app/shared/error/error.component.ts | 2 +- .../sections/container/section-container.component.ts | 2 +- .../sections/identifiers/section-identifiers.component.ts | 2 +- .../publisher-policy/publisher-policy.component.ts | 2 +- .../sherpa-policies/section-sherpa-policies.component.ts | 2 +- src/app/submission/sections/upload/section-upload.component.ts | 2 +- 21 files changed, 20 insertions(+), 20 deletions(-) rename src/app/shared/alert/{aletr-type.ts => alert-type.ts} (100%) diff --git a/src/app/access-control/group-registry/group-form/group-form.component.ts b/src/app/access-control/group-registry/group-form/group-form.component.ts index 3c0547cca50..693e283b4a0 100644 --- a/src/app/access-control/group-registry/group-form/group-form.component.ts +++ b/src/app/access-control/group-registry/group-form/group-form.component.ts @@ -37,7 +37,7 @@ import { getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload } from '../../../core/shared/operators'; -import { AlertType } from '../../../shared/alert/aletr-type'; +import { AlertType } from '../../../shared/alert/alert-type'; import { ConfirmationModalComponent } from '../../../shared/confirmation-modal/confirmation-modal.component'; import { hasValue, isNotEmpty, hasValueOperator } from '../../../shared/empty.util'; import { FormBuilderService } from '../../../shared/form/builder/form-builder.service'; diff --git a/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.ts b/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.ts index 6425996fd2b..238ec5e37a2 100644 --- a/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.ts +++ b/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.ts @@ -8,7 +8,7 @@ import { ItemTemplateDataService } from '../../core/data/item-template-data.serv import { getCollectionEditRoute } from '../collection-page-routing-paths'; import { Item } from '../../core/shared/item.model'; import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators'; -import { AlertType } from '../../shared/alert/aletr-type'; +import { AlertType } from '../../shared/alert/alert-type'; import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; @Component({ diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.ts b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.ts index d67a7ea738d..d44817be842 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.ts +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.ts @@ -1,5 +1,5 @@ import { Component, Inject, Injector, Input, OnDestroy, OnInit, ViewChild } from '@angular/core'; -import { AlertType } from '../../shared/alert/aletr-type'; +import { AlertType } from '../../shared/alert/alert-type'; import { DSpaceObject } from '../../core/shared/dspace-object.model'; import { DsoEditMetadataForm } from './dso-edit-metadata-form'; import { map } from 'rxjs/operators'; diff --git a/src/app/health-page/health-panel/health-component/health-component.component.ts b/src/app/health-page/health-panel/health-component/health-component.component.ts index e212a072891..f2391c9c4cf 100644 --- a/src/app/health-page/health-panel/health-component/health-component.component.ts +++ b/src/app/health-page/health-panel/health-component/health-component.component.ts @@ -3,7 +3,7 @@ import { Component, Input } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { HealthComponent } from '../../models/health-component.model'; -import { AlertType } from '../../../shared/alert/aletr-type'; +import { AlertType } from '../../../shared/alert/alert-type'; /** * A component to render a "health component" object. diff --git a/src/app/item-page/alerts/item-alerts.component.ts b/src/app/item-page/alerts/item-alerts.component.ts index d7a84db015c..2b1df58c9f7 100644 --- a/src/app/item-page/alerts/item-alerts.component.ts +++ b/src/app/item-page/alerts/item-alerts.component.ts @@ -1,6 +1,6 @@ import { Component, Input } from '@angular/core'; import { Item } from '../../core/shared/item.model'; -import { AlertType } from '../../shared/alert/aletr-type'; +import { AlertType } from '../../shared/alert/alert-type'; @Component({ selector: 'ds-item-alerts', diff --git a/src/app/item-page/edit-item-page/item-version-history/item-version-history.component.ts b/src/app/item-page/edit-item-page/item-version-history/item-version-history.component.ts index 18878109c29..3845c03578a 100644 --- a/src/app/item-page/edit-item-page/item-version-history/item-version-history.component.ts +++ b/src/app/item-page/edit-item-page/item-version-history/item-version-history.component.ts @@ -5,7 +5,7 @@ import { Item } from '../../../core/shared/item.model'; import { map } from 'rxjs/operators'; import { getFirstSucceededRemoteData } from '../../../core/shared/operators'; import { ActivatedRoute } from '@angular/router'; -import { AlertType } from '../../../shared/alert/aletr-type'; +import { AlertType } from '../../../shared/alert/alert-type'; @Component({ selector: 'ds-item-version-history', diff --git a/src/app/item-page/orcid-page/orcid-queue/orcid-queue.component.ts b/src/app/item-page/orcid-page/orcid-queue/orcid-queue.component.ts index 6079287f711..3e88826952e 100644 --- a/src/app/item-page/orcid-page/orcid-queue/orcid-queue.component.ts +++ b/src/app/item-page/orcid-page/orcid-queue/orcid-queue.component.ts @@ -15,7 +15,7 @@ import { getFirstCompletedRemoteData } from '../../../core/shared/operators'; import { hasValue } from '../../../shared/empty.util'; import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; -import { AlertType } from '../../../shared/alert/aletr-type'; +import { AlertType } from '../../../shared/alert/alert-type'; import { Item } from '../../../core/shared/item.model'; import { OrcidAuthService } from '../../../core/orcid/orcid-auth.service'; diff --git a/src/app/item-page/versions/item-versions.component.ts b/src/app/item-page/versions/item-versions.component.ts index 700a35552c2..e7ee9d5ea29 100644 --- a/src/app/item-page/versions/item-versions.component.ts +++ b/src/app/item-page/versions/item-versions.component.ts @@ -23,7 +23,7 @@ import { PaginatedList } from '../../core/data/paginated-list.model'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { VersionHistoryDataService } from '../../core/data/version-history-data.service'; import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; -import { AlertType } from '../../shared/alert/aletr-type'; +import { AlertType } from '../../shared/alert/alert-type'; import { followLink } from '../../shared/utils/follow-link-config.model'; import { hasValue, hasValueOperator } from '../../shared/empty.util'; import { PaginationService } from '../../core/pagination/pagination.service'; diff --git a/src/app/item-page/versions/notice/item-versions-notice.component.ts b/src/app/item-page/versions/notice/item-versions-notice.component.ts index 8a8f5ff76f7..0e5e45806b7 100644 --- a/src/app/item-page/versions/notice/item-versions-notice.component.ts +++ b/src/app/item-page/versions/notice/item-versions-notice.component.ts @@ -12,7 +12,7 @@ import { } from '../../../core/shared/operators'; import { map, startWith, switchMap } from 'rxjs/operators'; import { VersionHistoryDataService } from '../../../core/data/version-history-data.service'; -import { AlertType } from '../../../shared/alert/aletr-type'; +import { AlertType } from '../../../shared/alert/alert-type'; import { getItemPageRoute } from '../../item-page-routing-paths'; @Component({ diff --git a/src/app/process-page/detail/process-detail.component.ts b/src/app/process-page/detail/process-detail.component.ts index a379dfe3376..be0b6ad0f64 100644 --- a/src/app/process-page/detail/process-detail.component.ts +++ b/src/app/process-page/detail/process-detail.component.ts @@ -17,7 +17,7 @@ import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators'; import { URLCombiner } from '../../core/url-combiner/url-combiner'; -import { AlertType } from '../../shared/alert/aletr-type'; +import { AlertType } from '../../shared/alert/alert-type'; import { hasValue } from '../../shared/empty.util'; import { ProcessStatus } from '../processes/process-status.model'; import { Process } from '../processes/process.model'; diff --git a/src/app/register-email-form/register-email-form.component.ts b/src/app/register-email-form/register-email-form.component.ts index ddb77b669cb..df7e9bea5ef 100644 --- a/src/app/register-email-form/register-email-form.component.ts +++ b/src/app/register-email-form/register-email-form.component.ts @@ -13,7 +13,7 @@ import {isNotEmpty} from '../shared/empty.util'; import {BehaviorSubject, combineLatest, Observable, of, switchMap} from 'rxjs'; import {map, startWith, take} from 'rxjs/operators'; import {CAPTCHA_NAME, GoogleRecaptchaService} from '../core/google-recaptcha/google-recaptcha.service'; -import {AlertType} from '../shared/alert/aletr-type'; +import {AlertType} from '../shared/alert/alert-type'; import {KlaroService} from '../shared/cookies/klaro.service'; import {CookieService} from '../core/services/cookie.service'; import { Subscription } from 'rxjs'; diff --git a/src/app/shared/access-control-form-container/access-control-form-container.component.ts b/src/app/shared/access-control-form-container/access-control-form-container.component.ts index 69a598f7ce8..cddd1b1a29d 100644 --- a/src/app/shared/access-control-form-container/access-control-form-container.component.ts +++ b/src/app/shared/access-control-form-container/access-control-form-container.component.ts @@ -15,7 +15,7 @@ import { import { BulkAccessConfigDataService } from '../../core/config/bulk-access-config-data.service'; import { getFirstCompletedRemoteData } from '../../core/shared/operators'; import { BulkAccessConditionOptions } from '../../core/config/models/bulk-access-condition-options.model'; -import { AlertType } from '../alert/aletr-type'; +import { AlertType } from '../alert/alert-type'; import { createAccessControlInitialFormState } from './access-control-form-container-intial-state'; diff --git a/src/app/shared/alert/aletr-type.ts b/src/app/shared/alert/alert-type.ts similarity index 100% rename from src/app/shared/alert/aletr-type.ts rename to src/app/shared/alert/alert-type.ts diff --git a/src/app/shared/alert/alert.component.spec.ts b/src/app/shared/alert/alert.component.spec.ts index 21e4d197b7f..11411c7de02 100644 --- a/src/app/shared/alert/alert.component.spec.ts +++ b/src/app/shared/alert/alert.component.spec.ts @@ -8,7 +8,7 @@ import { TranslateModule } from '@ngx-translate/core'; import { AlertComponent } from './alert.component'; import { createTestComponent } from '../testing/utils.test'; -import { AlertType } from './aletr-type'; +import { AlertType } from './alert-type'; describe('AlertComponent test suite', () => { diff --git a/src/app/shared/alert/alert.component.ts b/src/app/shared/alert/alert.component.ts index 93535d20575..07a8efbd7df 100644 --- a/src/app/shared/alert/alert.component.ts +++ b/src/app/shared/alert/alert.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'; import { trigger } from '@angular/animations'; -import { AlertType } from './aletr-type'; +import { AlertType } from './alert-type'; import { fadeOutLeave, fadeOutState } from '../animations/fade'; /** diff --git a/src/app/shared/error/error.component.ts b/src/app/shared/error/error.component.ts index 9a6b0660bb3..6572598c8b1 100644 --- a/src/app/shared/error/error.component.ts +++ b/src/app/shared/error/error.component.ts @@ -3,7 +3,7 @@ import { Component, Input } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { Subscription } from 'rxjs'; -import { AlertType } from '../alert/aletr-type'; +import { AlertType } from '../alert/alert-type'; @Component({ selector: 'ds-error', diff --git a/src/app/submission/sections/container/section-container.component.ts b/src/app/submission/sections/container/section-container.component.ts index 8f9ebfbfda7..3331629f332 100644 --- a/src/app/submission/sections/container/section-container.component.ts +++ b/src/app/submission/sections/container/section-container.component.ts @@ -3,7 +3,7 @@ import { Component, Injector, Input, OnInit, ViewChild } from '@angular/core'; import { SectionsDirective } from '../sections.directive'; import { SectionDataObject } from '../models/section-data.model'; import { rendersSectionType } from '../sections-decorator'; -import { AlertType } from '../../../shared/alert/aletr-type'; +import { AlertType } from '../../../shared/alert/alert-type'; /** * This component represents a section that contains the submission license form. diff --git a/src/app/submission/sections/identifiers/section-identifiers.component.ts b/src/app/submission/sections/identifiers/section-identifiers.component.ts index 2dc70f668e5..ac4af63adb2 100644 --- a/src/app/submission/sections/identifiers/section-identifiers.component.ts +++ b/src/app/submission/sections/identifiers/section-identifiers.component.ts @@ -7,7 +7,7 @@ import { SectionModelComponent } from '../models/section.model'; import { renderSectionFor } from '../sections-decorator'; import { SectionDataObject } from '../models/section-data.model'; import { SubmissionService } from '../../submission.service'; -import { AlertType } from '../../../shared/alert/aletr-type'; +import { AlertType } from '../../../shared/alert/alert-type'; import { SectionsService } from '../sections.service'; import { WorkspaceitemSectionIdentifiersObject } from '../../../core/submission/models/workspaceitem-section-identifiers.model'; diff --git a/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.ts b/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.ts index 96ada3904c2..25407f5a7bb 100644 --- a/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.ts +++ b/src/app/submission/sections/sherpa-policies/publisher-policy/publisher-policy.component.ts @@ -1,7 +1,7 @@ import { Component, Input } from '@angular/core'; import { Policy } from '../../../../core/submission/models/sherpa-policies-details.model'; -import { AlertType } from '../../../../shared/alert/aletr-type'; +import { AlertType } from '../../../../shared/alert/alert-type'; /** * This component represents a section that contains the publisher policy informations. diff --git a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.ts b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.ts index e55b75146f6..eb273a84202 100644 --- a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.ts +++ b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.ts @@ -1,4 +1,4 @@ -import { AlertType } from '../../../shared/alert/aletr-type'; +import { AlertType } from '../../../shared/alert/alert-type'; import { Component, Inject } from '@angular/core'; import { BehaviorSubject, Observable, of, Subscription } from 'rxjs'; diff --git a/src/app/submission/sections/upload/section-upload.component.ts b/src/app/submission/sections/upload/section-upload.component.ts index eefed8a36b5..10203adbc0d 100644 --- a/src/app/submission/sections/upload/section-upload.component.ts +++ b/src/app/submission/sections/upload/section-upload.component.ts @@ -21,7 +21,7 @@ import { SectionsType } from '../sections-type'; import { renderSectionFor } from '../sections-decorator'; import { SectionDataObject } from '../models/section-data.model'; import { SubmissionObjectEntry } from '../../objects/submission-objects.reducer'; -import { AlertType } from '../../../shared/alert/aletr-type'; +import { AlertType } from '../../../shared/alert/alert-type'; import { RemoteData } from '../../../core/data/remote-data'; import { Group } from '../../../core/eperson/models/group.model'; import { SectionsService } from '../sections.service'; From a7ed053d152df6ec45df02fd458928b2e39bb0b0 Mon Sep 17 00:00:00 2001 From: Kim Shepherd Date: Thu, 29 Jun 2023 16:09:54 +0200 Subject: [PATCH 0010/1005] catch and handle unsuccessful "convert rels to items" responses (cherry picked from commit a35b7d8356e17f4cdd8568389695b1685b27eb84) --- .../shared/item-relationships-utils.ts | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/src/app/item-page/simple/item-types/shared/item-relationships-utils.ts b/src/app/item-page/simple/item-types/shared/item-relationships-utils.ts index b4c3da2cdc3..0c4e82178f5 100644 --- a/src/app/item-page/simple/item-types/shared/item-relationships-utils.ts +++ b/src/app/item-page/simple/item-types/shared/item-relationships-utils.ts @@ -5,8 +5,7 @@ import { RemoteData } from '../../../../core/data/remote-data'; import { Relationship } from '../../../../core/shared/item-relationships/relationship.model'; import { Item } from '../../../../core/shared/item.model'; import { - getFirstSucceededRemoteDataPayload, - getFirstSucceededRemoteData + getFirstCompletedRemoteData } from '../../../../core/shared/operators'; import { hasValue } from '../../../../shared/empty.util'; import { InjectionToken } from '@angular/core'; @@ -77,24 +76,42 @@ export const relationsToItems = (thisId: string) => * @param {string} thisId The item's id of which the relations belong to * @returns {(source: Observable) => Observable} */ -export const paginatedRelationsToItems = (thisId: string) => - (source: Observable>>): Observable>> => +export const paginatedRelationsToItems = (thisId: string) => (source: Observable>>): Observable>> => source.pipe( - getFirstSucceededRemoteData(), + getFirstCompletedRemoteData(), switchMap((relationshipsRD: RemoteData>) => { return observableCombineLatest( relationshipsRD.payload.page.map((rel: Relationship) => observableCombineLatest([ - rel.leftItem.pipe(getFirstSucceededRemoteDataPayload()), - rel.rightItem.pipe(getFirstSucceededRemoteDataPayload())] + rel.leftItem.pipe( + getFirstCompletedRemoteData(), + map((rd: RemoteData) => { + if (rd.hasSucceeded) { + return rd.payload; + } else { + return null; + } + }) + ), + rel.rightItem.pipe( + getFirstCompletedRemoteData(), + map((rd: RemoteData) => { + if (rd.hasSucceeded) { + return rd.payload; + } else { + return null; + } + }) + ), + ] ) - )).pipe( + ) + ).pipe( map((arr) => - arr - .map(([leftItem, rightItem]) => { - if (leftItem.id === thisId) { + arr.map(([leftItem, rightItem]) => { + if (hasValue(leftItem) && leftItem.id === thisId) { return rightItem; - } else if (rightItem.id === thisId) { + } else if (hasValue(rightItem) && rightItem.id === thisId) { return leftItem; } }) From f746d45ac153f64c27a5e080083f11137dd1dccf Mon Sep 17 00:00:00 2001 From: milanmajchrak Date: Thu, 20 Jul 2023 12:46:30 +0200 Subject: [PATCH 0011/1005] Show error message from the error response (cherry picked from commit e6546b4499fe87a9308dab7ff2c6767f9f256c67) --- src/app/profile-page/profile-page.component.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/app/profile-page/profile-page.component.ts b/src/app/profile-page/profile-page.component.ts index 343314999ba..d49bdedb838 100644 --- a/src/app/profile-page/profile-page.component.ts +++ b/src/app/profile-page/profile-page.component.ts @@ -161,7 +161,7 @@ export class ProfilePageComponent implements OnInit { } else { this.notificationsService.error( this.translate.instant(this.PASSWORD_NOTIFICATIONS_PREFIX + 'error.title'), - this.translate.instant(this.PASSWORD_NOTIFICATIONS_PREFIX + 'error.change-failed') + this.getPasswordErrorMessage(response) ); } }); @@ -199,4 +199,18 @@ export class ProfilePageComponent implements OnInit { return this.isResearcherProfileEnabled$.asObservable(); } + /** + * Returns an error message from a password validation request with a specific reason or + * a default message without specific reason. + * @param response from the validation password patch request. + */ + getPasswordErrorMessage(response) { + if (response.hasFailed && isNotEmpty(response.errorMessage)) { + // Response has a specific error message. Show this message in the error notification. + return this.translate.instant(response.errorMessage); + } + // Show default error message notification. + return this.translate.instant(this.PASSWORD_NOTIFICATIONS_PREFIX + 'error.change-failed'); + } + } From c3b9a1d5c6ed98fadb53b95eb5ca4de7174bca54 Mon Sep 17 00:00:00 2001 From: Mirko Scherf Date: Fri, 21 Jul 2023 10:43:13 +0200 Subject: [PATCH 0012/1005] fix(i18n): add and update missing status strings New strings for status filter entries: search.filters.namedresourcetype.* Refactored strings introduced with #2068 (refactor badged), e.g. mydspace.status.archived -> mydspace.status.mydspaceArchived --- src/assets/i18n/ar.json5 | 20 ++++++++++---------- src/assets/i18n/bn.json5 | 20 ++++++++++---------- src/assets/i18n/ca.json5 | 20 ++++++++++---------- src/assets/i18n/cs.json5 | 20 ++++++++++---------- src/assets/i18n/de.json5 | 35 +++++++++++++++++++++++++---------- src/assets/i18n/el.json5 | 10 +++++----- src/assets/i18n/en.json5 | 10 ++++++++++ src/assets/i18n/es.json5 | 20 ++++++++++---------- src/assets/i18n/fr.json5 | 20 ++++++++++---------- src/assets/i18n/gd.json5 | 20 ++++++++++---------- src/assets/i18n/hi.json5 | 10 +++++----- src/assets/i18n/hu.json5 | 20 ++++++++++---------- src/assets/i18n/it.json5 | 20 ++++++++++---------- src/assets/i18n/ja.json5 | 20 ++++++++++---------- src/assets/i18n/kk.json5 | 20 ++++++++++---------- src/assets/i18n/lv.json5 | 20 ++++++++++---------- src/assets/i18n/nl.json5 | 20 ++++++++++---------- src/assets/i18n/pl.json5 | 10 +++++----- src/assets/i18n/pt-BR.json5 | 20 ++++++++++---------- src/assets/i18n/pt-PT.json5 | 20 ++++++++++---------- src/assets/i18n/sv.json5 | 20 ++++++++++---------- src/assets/i18n/sw.json5 | 20 ++++++++++---------- src/assets/i18n/tr.json5 | 20 ++++++++++---------- src/assets/i18n/uk.json5 | 20 ++++++++++---------- src/assets/i18n/vi.json5 | 10 +++++----- 25 files changed, 245 insertions(+), 220 deletions(-) diff --git a/src/assets/i18n/ar.json5 b/src/assets/i18n/ar.json5 index 70f5fdadb1d..3069104dd9a 100644 --- a/src/assets/i18n/ar.json5 +++ b/src/assets/i18n/ar.json5 @@ -4276,25 +4276,25 @@ // TODO New key - Add a translation "mydspace.show.workspace": "Your Submissions", - // "mydspace.status.archived": "Archived", + // "mydspace.status.mydspaceArchived": "Archived", // TODO New key - Add a translation - "mydspace.status.archived": "Archived", + "mydspace.status.mydspaceArchived": "Archived", - // "mydspace.status.validation": "Validation", + // "mydspace.status.mydspaceValidation": "Validation", // TODO New key - Add a translation - "mydspace.status.validation": "Validation", + "mydspace.status.mydspaceValidation": "Validation", - // "mydspace.status.waiting-for-controller": "Waiting for controller", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", // TODO New key - Add a translation - "mydspace.status.waiting-for-controller": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Waiting for controller", - // "mydspace.status.workflow": "Workflow", + // "mydspace.status.mydspaceWorkflow": "Workflow", // TODO New key - Add a translation - "mydspace.status.workflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Workflow", - // "mydspace.status.workspace": "Workspace", + // "mydspace.status.mydspaceWorkspace": "Workspace", // TODO New key - Add a translation - "mydspace.status.workspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Workspace", // "mydspace.title": "MyDSpace", // TODO New key - Add a translation diff --git a/src/assets/i18n/bn.json5 b/src/assets/i18n/bn.json5 index cc05d128287..c70cc6f4595 100644 --- a/src/assets/i18n/bn.json5 +++ b/src/assets/i18n/bn.json5 @@ -3880,20 +3880,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "আপনার জমাগুলো", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "সংরক্ষণাগারভুক্ত", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "সংরক্ষণাগারভুক্ত", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "বৈধতা", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "বৈধতা", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "নিয়ামক জন্য অপেক্ষা করছে", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "নিয়ামক জন্য অপেক্ষা করছে", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "ওয়ার্কফ্লো", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "ওয়ার্কফ্লো", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "কর্মক্ষেত্র", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "কর্মক্ষেত্র", // "mydspace.title": "MyDSpace", "mydspace.title": "আমার ডিস্পেস", diff --git a/src/assets/i18n/ca.json5 b/src/assets/i18n/ca.json5 index 34279548bb2..ad8fe49424e 100644 --- a/src/assets/i18n/ca.json5 +++ b/src/assets/i18n/ca.json5 @@ -4190,20 +4190,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Els seus enviaments", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Arxivat", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Arxivat", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Validació", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Validació", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Esperant el controlador", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Esperant el controlador", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Flux de treball", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Flux de treball", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Espai de treball", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Espai de treball", // "mydspace.title": "MyDSpace", "mydspace.title": "El meu DSpace", diff --git a/src/assets/i18n/cs.json5 b/src/assets/i18n/cs.json5 index f3155e9f57a..7f9583a50eb 100644 --- a/src/assets/i18n/cs.json5 +++ b/src/assets/i18n/cs.json5 @@ -4187,25 +4187,25 @@ // TODO New key - Add a translation "mydspace.show.workspace": "Your Submissions", - // "mydspace.status.archived": "Archived", + // "mydspace.status.mydspaceArchived": "Archived", // TODO New key - Add a translation - "mydspace.status.archived": "Archived", + "mydspace.status.mydspaceArchived": "Archived", - // "mydspace.status.validation": "Validation", + // "mydspace.status.mydspaceValidation": "Validation", // TODO New key - Add a translation - "mydspace.status.validation": "Validation", + "mydspace.status.mydspaceValidation": "Validation", - // "mydspace.status.waiting-for-controller": "Waiting for controller", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", // TODO New key - Add a translation - "mydspace.status.waiting-for-controller": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Waiting for controller", - // "mydspace.status.workflow": "Workflow", + // "mydspace.status.mydspaceWorkflow": "Workflow", // TODO New key - Add a translation - "mydspace.status.workflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Workflow", - // "mydspace.status.workspace": "Workspace", + // "mydspace.status.mydspaceWorkspace": "Workspace", // TODO New key - Add a translation - "mydspace.status.workspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Workspace", // "mydspace.title": "MyDSpace", // TODO New key - Add a translation diff --git a/src/assets/i18n/de.json5 b/src/assets/i18n/de.json5 index b03dc21e5a5..4ebce8012d6 100644 --- a/src/assets/i18n/de.json5 +++ b/src/assets/i18n/de.json5 @@ -3484,20 +3484,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Ihre Veröffentlichungen", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Archiviert", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Archiviert", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Validierung", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Validierung", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Warten auf die Überprüfung", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Warten auf die Überprüfung", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Geschäftsgang", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Geschäftsgang", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Arbeitsbereich", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Arbeitsbereich", // "mydspace.title": "MyDSpace", "mydspace.title": "Mein DSpace", @@ -4487,6 +4487,21 @@ // "search.filters.discoverable.false": "Yes", "search.filters.discoverable.false": "Ja", + // "search.filters.namedresourcetype.Archived": "Archived", + "search.filters.namedresourcetype.Archived": "Archiviert", + + // "search.filters.namedresourcetype.Validation": "Validation", + "search.filters.namedresourcetype.Validation": "Validierung", + + // "search.filters.namedresourcetype.Waiting for Controller": "Waiting for Controller", + "search.filters.namedresourcetype.Waiting for Controller": "Warten auf die Überprüfung", + + // "search.filters.namedresourcetype.Workflow": "Workflow", + "search.filters.namedresourcetype.Workflow": "Geschäftsgang", + + // "search.filters.namedresourcetype.Workspace": "Workspace", + "search.filters.namedresourcetype.Workspace": "Arbeitsbereich", + // "search.filters.withdrawn.true": "Yes", "search.filters.withdrawn.true": "Ja", diff --git a/src/assets/i18n/el.json5 b/src/assets/i18n/el.json5 index af8a4fce490..176eadff628 100644 --- a/src/assets/i18n/el.json5 +++ b/src/assets/i18n/el.json5 @@ -1315,11 +1315,11 @@ "mydspace.search-form.placeholder": "Αναζήτηση στο mydspace...", "mydspace.show.workflow": "Εργασίες ροής εργασιών", "mydspace.show.workspace": "Οι Υποβολές σας", - "mydspace.status.archived": "Αρχειοθετημένα", - "mydspace.status.validation": "Επικύρωση", - "mydspace.status.waiting-for-controller": "Αναμονή για τον ελεγκτή", - "mydspace.status.workflow": "Ροή εργασιών", - "mydspace.status.workspace": "Χώρος εργασίας", + "mydspace.status.mydspaceArchived": "Αρχειοθετημένα", + "mydspace.status.mydspaceValidation": "Επικύρωση", + "mydspace.status.mydspaceWaitingController": "Αναμονή για τον ελεγκτή", + "mydspace.status.mydspaceWorkflow": "Ροή εργασιών", + "mydspace.status.mydspaceWorkspace": "Χώρος εργασίας", "mydspace.title": "MyDSpace", "mydspace.upload.upload-failed": "Σφάλμα κατά τη δημιουργία νέου χώρου εργασίας. Επαληθεύστε το περιεχόμενο που ανεβάσατε πριν δοκιμάσετε ξανά.", "mydspace.upload.upload-failed-manyentries": "Μη επεξεργάσιμο αρχείο. Εντοπίστηκαν πάρα πολλές καταχωρίσεις, αλλά επιτρέπεται μόνο μία για αρχείο.", diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 6c91bae4c16..5c17fc8e426 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -3812,6 +3812,16 @@ "search.filters.discoverable.false": "Yes", + "search.filters.namedresourcetype.Archived": "Archived", + + "search.filters.namedresourcetype.Validation": "Validation", + + "search.filters.namedresourcetype.Waiting for Controller": "Waiting for Controller", + + "search.filters.namedresourcetype.Workflow": "Workflow", + + "search.filters.namedresourcetype.Workspace": "Workspace", + "search.filters.withdrawn.true": "Yes", "search.filters.withdrawn.false": "No", diff --git a/src/assets/i18n/es.json5 b/src/assets/i18n/es.json5 index 7a2f2fa3db9..5a0e40af42b 100644 --- a/src/assets/i18n/es.json5 +++ b/src/assets/i18n/es.json5 @@ -4560,20 +4560,20 @@ // "mydspace.show.supervisedWorkspace": "Supervised items", "mydspace.show.supervisedWorkspace": "Ítems supervisados", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Archivado", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Archivado", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Validación", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Validación", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Esperando al controlador", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Esperando al controlador", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Flujo de trabajo", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Flujo de trabajo", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Espacio de trabajo", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Espacio de trabajo", // "mydspace.title": "MyDSpace", "mydspace.title": "Mi DSpace", diff --git a/src/assets/i18n/fr.json5 b/src/assets/i18n/fr.json5 index 8ee4dc7d224..699ca5cc27b 100644 --- a/src/assets/i18n/fr.json5 +++ b/src/assets/i18n/fr.json5 @@ -3822,20 +3822,20 @@ //"mydspace.show.supervisedWorkspace": "Supervised items", "mydspace.show.supervisedWorkspace": "Items supervisés", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Archivés", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Archivés", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "En cours de validation", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "En cours de validation", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "En attente d'assignation", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "En attente d'assignation", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "En traitement", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "En traitement", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Dépôts en cours", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Dépôts en cours", // "mydspace.title": "MyDSpace", "mydspace.title": "Mon compte DSpace", diff --git a/src/assets/i18n/gd.json5 b/src/assets/i18n/gd.json5 index 6096073d56e..55a53bc6f1b 100644 --- a/src/assets/i18n/gd.json5 +++ b/src/assets/i18n/gd.json5 @@ -3867,20 +3867,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Do Chur-a-steachan", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "San Tasglann", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "San Tasglann", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Dearbhadh", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Dearbhadh", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "A' feitheamh riaghladair", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "A' feitheamh riaghladair", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Sruth-obrach", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Sruth-obrach", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Raon-obrach", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Raon-obrach", // "mydspace.title": "MyDSpace", "mydspace.title": "MoDSpace", diff --git a/src/assets/i18n/hi.json5 b/src/assets/i18n/hi.json5 index 53fc106187c..68eb6c1f127 100644 --- a/src/assets/i18n/hi.json5 +++ b/src/assets/i18n/hi.json5 @@ -2677,15 +2677,15 @@ "mydspace.show.workspace": "आपकी प्रस्तुतियां", - "mydspace.status.archived": "संग्रहीत", + "mydspace.status.mydspaceArchived": "संग्रहीत", - "mydspace.status.validation": "सत्यापन", + "mydspace.status.mydspaceValidation": "सत्यापन", - "mydspace.status.waiting-for-controller": "नियंत्रक की प्रतीक्षा कर रहा है", + "mydspace.status.mydspaceWaitingController": "नियंत्रक की प्रतीक्षा कर रहा है", - "mydspace.status.workflow": "कार्यप्रवाह", + "mydspace.status.mydspaceWorkflow": "कार्यप्रवाह", - "mydspace.status.workspace": "कार्यस्थान", + "mydspace.status.mydspaceWorkspace": "कार्यस्थान", "mydspace.title": "मेरा डीस्पेस", diff --git a/src/assets/i18n/hu.json5 b/src/assets/i18n/hu.json5 index 373d73aec53..e1076c75122 100644 --- a/src/assets/i18n/hu.json5 +++ b/src/assets/i18n/hu.json5 @@ -4983,20 +4983,20 @@ // TODO New key - Add a translation "mydspace.show.supervisedWorkspace": "Supervised items", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Tárolva", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Tárolva", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Érvényesítés", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Érvényesítés", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Várakozás a kontrollerre", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Várakozás a kontrollerre", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Munkafolyamat", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Munkafolyamat", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Munkafelület", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Munkafelület", // "mydspace.title": "MyDSpace", "mydspace.title": "MyDSpace", diff --git a/src/assets/i18n/it.json5 b/src/assets/i18n/it.json5 index 4131d0bee66..1a97eca501e 100644 --- a/src/assets/i18n/it.json5 +++ b/src/assets/i18n/it.json5 @@ -4813,20 +4813,20 @@ // TODO New key - Add a translation "mydspace.show.supervisedWorkspace": "Supervised items", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Archiviati", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Archiviati", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Convalida", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Convalida", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "In attesa del controllo", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "In attesa del controllo", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Workflow", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Workflow", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Workspace", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Workspace", // "mydspace.title": "MyDSpace", "mydspace.title": "MyDSpace", diff --git a/src/assets/i18n/ja.json5 b/src/assets/i18n/ja.json5 index 94dfc9aa98a..da2385fd62f 100644 --- a/src/assets/i18n/ja.json5 +++ b/src/assets/i18n/ja.json5 @@ -4276,25 +4276,25 @@ // TODO New key - Add a translation "mydspace.show.workspace": "Your Submissions", - // "mydspace.status.archived": "Archived", + // "mydspace.status.mydspaceArchived": "Archived", // TODO New key - Add a translation - "mydspace.status.archived": "Archived", + "mydspace.status.mydspaceArchived": "Archived", - // "mydspace.status.validation": "Validation", + // "mydspace.status.mydspaceValidation": "Validation", // TODO New key - Add a translation - "mydspace.status.validation": "Validation", + "mydspace.status.mydspaceValidation": "Validation", - // "mydspace.status.waiting-for-controller": "Waiting for controller", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", // TODO New key - Add a translation - "mydspace.status.waiting-for-controller": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Waiting for controller", - // "mydspace.status.workflow": "Workflow", + // "mydspace.status.mydspaceWorkflow": "Workflow", // TODO New key - Add a translation - "mydspace.status.workflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Workflow", - // "mydspace.status.workspace": "Workspace", + // "mydspace.status.mydspaceWorkspace": "Workspace", // TODO New key - Add a translation - "mydspace.status.workspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Workspace", // "mydspace.title": "MyDSpace", // TODO New key - Add a translation diff --git a/src/assets/i18n/kk.json5 b/src/assets/i18n/kk.json5 index 354eb1104a1..d23dc23c475 100644 --- a/src/assets/i18n/kk.json5 +++ b/src/assets/i18n/kk.json5 @@ -4139,20 +4139,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Сіздің өтініштеріңіз", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Мұрағатталған", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Мұрағатталған", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Валидация", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Валидация", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Контроллерді күтуде", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Контроллерді күтуде", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Жұмыс барысы", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Жұмыс барысы", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Жұмыс кеңістігі", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Жұмыс кеңістігі", // "mydspace.title": "MyDSpace", "mydspace.title": "MyDSpace", diff --git a/src/assets/i18n/lv.json5 b/src/assets/i18n/lv.json5 index 9b4058a3e66..81e2383a1f8 100644 --- a/src/assets/i18n/lv.json5 +++ b/src/assets/i18n/lv.json5 @@ -3492,20 +3492,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Jūsu Iesniegumi", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Arhivēts", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Arhivēts", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Validācija", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Validācija", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Gaida kontrolieri", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Gaida kontrolieri", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Darba plūsma", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Darba plūsma", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Darbavieta", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Darbavieta", // "mydspace.title": "MyDSpace", "mydspace.title": "Mans DSpace", diff --git a/src/assets/i18n/nl.json5 b/src/assets/i18n/nl.json5 index 520a8ca427d..280a87b96fe 100644 --- a/src/assets/i18n/nl.json5 +++ b/src/assets/i18n/nl.json5 @@ -3764,20 +3764,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Uw Submissions", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Opgeslagen", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Opgeslagen", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Validatie", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Validatie", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Wachten op controlleur", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Wachten op controlleur", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Workflow", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Workflow", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Workspace", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Workspace", // "mydspace.title": "MyDSpace", "mydspace.title": "MyDSpace", diff --git a/src/assets/i18n/pl.json5 b/src/assets/i18n/pl.json5 index d748b94888c..35126537055 100644 --- a/src/assets/i18n/pl.json5 +++ b/src/assets/i18n/pl.json5 @@ -1207,11 +1207,11 @@ "mydspace.search-form.placeholder": "Wyszukaj w mydspace...", "mydspace.show.workflow": "Wszystkie zadania", "mydspace.show.workspace": "Twoje zadania", - "mydspace.status.archived": "Zarchiwizowano", - "mydspace.status.validation": "Walidacja", - "mydspace.status.waiting-for-controller": "Oczekiwanie na redaktora", - "mydspace.status.workflow": "Workflow", - "mydspace.status.workspace": "Wersja robocza", + "mydspace.status.mydspaceArchived": "Zarchiwizowano", + "mydspace.status.mydspaceValidation": "Walidacja", + "mydspace.status.mydspaceWaitingController": "Oczekiwanie na redaktora", + "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkspace": "Wersja robocza", "mydspace.title": "Mój DSpace", "mydspace.upload.upload-failed": "Bład podczas tworzenia nowej wersji roboczej. Sprawdź poprawność plików i spróbuj ponownie.", "mydspace.upload.upload-failed-manyentries": "Plik jest niemożliwy do przetworzenia. Wykryto wiele wejść, a dopuszczalne jest tylko jedno dla jednego pliku.", diff --git a/src/assets/i18n/pt-BR.json5 b/src/assets/i18n/pt-BR.json5 index 25f1e0fb7c9..5d852129bc3 100644 --- a/src/assets/i18n/pt-BR.json5 +++ b/src/assets/i18n/pt-BR.json5 @@ -3972,20 +3972,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Minhas Submissões", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Arquivado", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Arquivado", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Validação", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Validação", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Esperando pelo controlador", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Esperando pelo controlador", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Fluxo de trabalho", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Fluxo de trabalho", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Espaço de trabalho", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Espaço de trabalho", // "mydspace.title": "MyDSpace", "mydspace.title": "MeuDSpace", diff --git a/src/assets/i18n/pt-PT.json5 b/src/assets/i18n/pt-PT.json5 index a187ff927c0..622f8cc48b3 100644 --- a/src/assets/i18n/pt-PT.json5 +++ b/src/assets/i18n/pt-PT.json5 @@ -7713,20 +7713,20 @@ // "browse.metadata.srsc": "Subject Category", "browse.metadata.srsc": "vocabulário controlado (SRSC)", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Depositado", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Depositado", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Em validação", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Em validação", - // "mydspace.status.waiting-for-controller": "Waiting for Controller", - "mydspace.status.waiting-for-controller": "Aguarda validador", + // "mydspace.status.mydspaceWaitingController": "Waiting for Controller", + "mydspace.status.mydspaceWaitingController": "Aguarda validador", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Em fluxo de trabalho", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Em fluxo de trabalho", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Depósito por terminar", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Depósito por terminar", // "search.filters.namedresourcetype.Archived": "Archived", "search.filters.namedresourcetype.Archived": "Depositado", diff --git a/src/assets/i18n/sv.json5 b/src/assets/i18n/sv.json5 index c988577c920..4e3576ccfc0 100644 --- a/src/assets/i18n/sv.json5 +++ b/src/assets/i18n/sv.json5 @@ -3934,20 +3934,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Dina registreringar", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "I arkivet", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "I arkivet", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Validering", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Validering", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Väntar på kontrollant", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Väntar på kontrollant", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Arbetsflöde", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Arbetsflöde", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "I arbetsflödet", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "I arbetsflödet", // "mydspace.title": "MyDSpace", "mydspace.title": "Mitt DSpace", diff --git a/src/assets/i18n/sw.json5 b/src/assets/i18n/sw.json5 index 47253dea9f8..a470ee4b587 100644 --- a/src/assets/i18n/sw.json5 +++ b/src/assets/i18n/sw.json5 @@ -4276,25 +4276,25 @@ // TODO New key - Add a translation "mydspace.show.workspace": "Your Submissions", - // "mydspace.status.archived": "Archived", + // "mydspace.status.mydspaceArchived": "Archived", // TODO New key - Add a translation - "mydspace.status.archived": "Archived", + "mydspace.status.mydspaceArchived": "Archived", - // "mydspace.status.validation": "Validation", + // "mydspace.status.mydspaceValidation": "Validation", // TODO New key - Add a translation - "mydspace.status.validation": "Validation", + "mydspace.status.mydspaceValidation": "Validation", - // "mydspace.status.waiting-for-controller": "Waiting for controller", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", // TODO New key - Add a translation - "mydspace.status.waiting-for-controller": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Waiting for controller", - // "mydspace.status.workflow": "Workflow", + // "mydspace.status.mydspaceWorkflow": "Workflow", // TODO New key - Add a translation - "mydspace.status.workflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Workflow", - // "mydspace.status.workspace": "Workspace", + // "mydspace.status.mydspaceWorkspace": "Workspace", // TODO New key - Add a translation - "mydspace.status.workspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Workspace", // "mydspace.title": "MyDSpace", // TODO New key - Add a translation diff --git a/src/assets/i18n/tr.json5 b/src/assets/i18n/tr.json5 index e9869e00196..153eaa1281a 100644 --- a/src/assets/i18n/tr.json5 +++ b/src/assets/i18n/tr.json5 @@ -3257,20 +3257,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Gönderimleriniz", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Arşivlendi", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Arşivlendi", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Doğrulama", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Doğrulama", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Kontrolör bekleniyor", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Kontrolör bekleniyor", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "İş akışı", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "İş akışı", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Çalışma alanı", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Çalışma alanı", // "mydspace.title": "MyDSpace", "mydspace.title": "MyDSpace", diff --git a/src/assets/i18n/uk.json5 b/src/assets/i18n/uk.json5 index 5cbb480179e..7df55fa2369 100644 --- a/src/assets/i18n/uk.json5 +++ b/src/assets/i18n/uk.json5 @@ -3383,20 +3383,20 @@ // "mydspace.show.workspace": "Your Submissions", "mydspace.show.workspace": "Ваші надіслані документи ", - // "mydspace.status.archived": "Archived", - "mydspace.status.archived": "Заархівовані", + // "mydspace.status.mydspaceArchived": "Archived", + "mydspace.status.mydspaceArchived": "Заархівовані", - // "mydspace.status.validation": "Validation", - "mydspace.status.validation": "Перевірка", + // "mydspace.status.mydspaceValidation": "Validation", + "mydspace.status.mydspaceValidation": "Перевірка", - // "mydspace.status.waiting-for-controller": "Waiting for controller", - "mydspace.status.waiting-for-controller": "Чекаємо контролера", + // "mydspace.status.mydspaceWaitingController": "Waiting for controller", + "mydspace.status.mydspaceWaitingController": "Чекаємо контролера", - // "mydspace.status.workflow": "Workflow", - "mydspace.status.workflow": "Робочий процес", + // "mydspace.status.mydspaceWorkflow": "Workflow", + "mydspace.status.mydspaceWorkflow": "Робочий процес", - // "mydspace.status.workspace": "Workspace", - "mydspace.status.workspace": "Робоче середовище", + // "mydspace.status.mydspaceWorkspace": "Workspace", + "mydspace.status.mydspaceWorkspace": "Робоче середовище", // "mydspace.title": "MyDSpace", "mydspace.title": "Моє середовище", diff --git a/src/assets/i18n/vi.json5 b/src/assets/i18n/vi.json5 index 7627818978f..f254df34fed 100644 --- a/src/assets/i18n/vi.json5 +++ b/src/assets/i18n/vi.json5 @@ -1449,11 +1449,11 @@ "mydspace.search-form.placeholder": "Tìm kiếm trong trang cá nhân của tôi...", "mydspace.show.workflow": "Tất cả nhiệm vụ", "mydspace.show.workspace": "Tài liệu của tôi", - "mydspace.status.archived": "Đã lưu trữ", - "mydspace.status.validation": "Đang kiểm tra", - "mydspace.status.waiting-for-controller": "Đợi nhận nhiệm vụ", - "mydspace.status.workflow": "Đang kiểm duyệt", - "mydspace.status.workspace": "Đang biên mục", + "mydspace.status.mydspaceArchived": "Đã lưu trữ", + "mydspace.status.mydspaceValidation": "Đang kiểm tra", + "mydspace.status.mydspaceWaitingController": "Đợi nhận nhiệm vụ", + "mydspace.status.mydspaceWorkflow": "Đang kiểm duyệt", + "mydspace.status.mydspaceWorkspace": "Đang biên mục", "mydspace.title": "Trang cá nhân", "mydspace.upload.upload-failed": "Có lỗi xảy ra khi tạo tài liệu mới. Vui lòng xác minh nội dung đã tải lên trước khi thử lại.", "mydspace.upload.upload-failed-manyentries": "Không thể xử lý tệp tin. Có quá nhiều mục trong khi hệ thống chỉ cho phép một mục trong tệp tin.", From cfcf93ecf8bee2a22b1b0d3ddc791d092f27ef94 Mon Sep 17 00:00:00 2001 From: Kristof De Langhe Date: Mon, 17 Jul 2023 15:08:54 +0200 Subject: [PATCH 0013/1005] 104126: ProcessDetailComponent test improvement --- .../detail/process-detail.component.spec.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/app/process-page/detail/process-detail.component.spec.ts b/src/app/process-page/detail/process-detail.component.spec.ts index 9552f9a092a..9a0d89a8827 100644 --- a/src/app/process-page/detail/process-detail.component.spec.ts +++ b/src/app/process-page/detail/process-detail.component.spec.ts @@ -147,7 +147,7 @@ describe('ProcessDetailComponent', () => { providers: [ { provide: ActivatedRoute, - useValue: { data: observableOf({ process: createSuccessfulRemoteDataObject(process) }) } + useValue: { data: observableOf({ process: createSuccessfulRemoteDataObject(process) }), snapshot: { params: { id: 1 } } }, }, { provide: ProcessDataService, useValue: processService }, { provide: BitstreamDataService, useValue: bitstreamDataService }, @@ -310,10 +310,11 @@ describe('ProcessDetailComponent', () => { }); it('should call refresh method every 5 seconds, until process is completed', fakeAsync(() => { - spyOn(component, 'refresh'); - spyOn(component, 'stopRefreshTimer'); + spyOn(component, 'refresh').and.callThrough(); + spyOn(component, 'stopRefreshTimer').and.callThrough(); - process.processStatus = ProcessStatus.COMPLETED; + // start off with a running process in order for the refresh counter starts counting up + process.processStatus = ProcessStatus.RUNNING; // set findbyId to return a completed process (processService.findById as jasmine.Spy).and.returnValue(observableOf(createSuccessfulRemoteDataObject(process))); @@ -336,6 +337,10 @@ describe('ProcessDetailComponent', () => { tick(1001); // 1 second + 1 ms by the setTimeout expect(component.refreshCounter$.value).toBe(0); // 1 - 1 + // set the process to completed right before the counter checks the process + process.processStatus = ProcessStatus.COMPLETED; + (processService.findById as jasmine.Spy).and.returnValue(observableOf(createSuccessfulRemoteDataObject(process))); + tick(1000); // 1 second expect(component.refresh).toHaveBeenCalledTimes(1); From bbb50f2858f9c0fc6b6cd9ddf15ed54c7dc10e30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Aug 2023 21:28:22 +0000 Subject: [PATCH 0014/1005] Bump word-wrap from 1.2.3 to 1.2.5 Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] (cherry picked from commit 2fec33e70af5de3a2533f4ff33aabaff4aae03fc) --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 21de68a480a..e53a070d167 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11743,9 +11743,9 @@ wildcard@^2.0.0: integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== wrap-ansi@^6.2.0: version "6.2.0" From 2fd53c7ad21382fa822ef92343f90dd8ae5a1da7 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 22 Aug 2023 16:32:55 -0500 Subject: [PATCH 0015/1005] Replace mentions of demo7.dspace.org and api7.dspace.org with demo or sandbox --- README.md | 6 +++--- config/config.example.yml | 2 +- config/config.yml | 2 +- docker/README.md | 4 ++-- docker/docker-compose-dist.yml | 2 +- docs/Configuration.md | 4 ++-- src/app/core/services/browser-hard-redirect.service.ts | 4 ++-- src/app/core/services/hard-redirect.service.ts | 4 ++-- src/app/core/services/server-hard-redirect.service.ts | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 689c64a2925..ebc24f8b918 100644 --- a/README.md +++ b/README.md @@ -157,8 +157,8 @@ DSPACE_UI_SSL => DSPACE_SSL The same settings can also be overwritten by setting system environment variables instead, E.g.: ```bash -export DSPACE_HOST=api7.dspace.org -export DSPACE_UI_PORT=4200 +export DSPACE_HOST=demo.dspace.org +export DSPACE_UI_PORT=4000 ``` The priority works as follows: **environment variable** overrides **variable in `.env` file** overrides external config set by `DSPACE_APP_CONFIG_PATH` overrides **`config.(prod or dev).yml`** @@ -288,7 +288,7 @@ E2E tests (aka integration tests) use [Cypress.io](https://www.cypress.io/). Con The test files can be found in the `./cypress/integration/` folder. Before you can run e2e tests, two things are REQUIRED: -1. You MUST be running the DSpace backend (i.e. REST API) locally. The e2e tests will *NOT* succeed if run against our demo REST API (https://api7.dspace.org/server/), as that server is uncontrolled and may have content added/removed at any time. +1. You MUST be running the DSpace backend (i.e. REST API) locally. The e2e tests will *NOT* succeed if run against our demo/sandbox REST API (https://demo.dspace.org/server/ or https://sandbox.dspace.org/server/), as those sites may have content added/removed at any time. * After starting up your backend on localhost, make sure either your `config.prod.yml` or `config.dev.yml` has its `rest` settings defined to use that localhost backend. * If you'd prefer, you may instead use environment variables as described at [Configuring](#configuring). For example: ``` diff --git a/config/config.example.yml b/config/config.example.yml index ea38303fa36..b7ea190c556 100644 --- a/config/config.example.yml +++ b/config/config.example.yml @@ -22,7 +22,7 @@ ui: # 'synced' with the 'dspace.server.url' setting in your backend's local.cfg. rest: ssl: true - host: api7.dspace.org + host: sandbox.dspace.org port: 443 # NOTE: Space is capitalized because 'namespace' is a reserved string in TypeScript nameSpace: /server diff --git a/config/config.yml b/config/config.yml index b5eecd112f0..109db60ca92 100644 --- a/config/config.yml +++ b/config/config.yml @@ -1,5 +1,5 @@ rest: ssl: true - host: api7.dspace.org + host: sandbox.dspace.org port: 443 nameSpace: /server diff --git a/docker/README.md b/docker/README.md index 42deb793f91..37d071a86f8 100644 --- a/docker/README.md +++ b/docker/README.md @@ -101,8 +101,8 @@ and the backend at http://localhost:8080/server/ ## Run DSpace Angular dist build with DSpace Demo site backend -This allows you to run the Angular UI in *production* mode, pointing it at the demo backend -(https://api7.dspace.org/server/). +This allows you to run the Angular UI in *production* mode, pointing it at the demo or sandbox backend +(https://demo.dspace.org/server/ or https://sandbox.dspace.org/server/). ``` docker-compose -f docker/docker-compose-dist.yml pull diff --git a/docker/docker-compose-dist.yml b/docker/docker-compose-dist.yml index 1c75539da97..3d57174b132 100644 --- a/docker/docker-compose-dist.yml +++ b/docker/docker-compose-dist.yml @@ -24,7 +24,7 @@ services: # This is because Server Side Rendering (SSR) currently requires a public URL, # see this bug: https://github.com/DSpace/dspace-angular/issues/1485 DSPACE_REST_SSL: 'true' - DSPACE_REST_HOST: api7.dspace.org + DSPACE_REST_HOST: sandbox.dspace.org DSPACE_REST_PORT: 443 DSPACE_REST_NAMESPACE: /server image: dspace/dspace-angular:dspace-7_x-dist diff --git a/docs/Configuration.md b/docs/Configuration.md index 62fa444cc0f..01fd83c94d1 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -48,7 +48,7 @@ dspace-angular connects to your DSpace installation by using its REST endpoint. ```yaml rest: ssl: true - host: api7.dspace.org + host: demo.dspace.org port: 443 nameSpace: /server } @@ -57,7 +57,7 @@ rest: Alternately you can set the following environment variables. If any of these are set, it will override all configuration files: ``` DSPACE_REST_SSL=true - DSPACE_REST_HOST=api7.dspace.org + DSPACE_REST_HOST=demo.dspace.org DSPACE_REST_PORT=443 DSPACE_REST_NAMESPACE=/server ``` diff --git a/src/app/core/services/browser-hard-redirect.service.ts b/src/app/core/services/browser-hard-redirect.service.ts index 4ef9548899d..827e83f0b7d 100644 --- a/src/app/core/services/browser-hard-redirect.service.ts +++ b/src/app/core/services/browser-hard-redirect.service.ts @@ -38,8 +38,8 @@ export class BrowserHardRedirectService extends HardRedirectService { /** * Get the origin of the current URL * i.e. "://" [ ":" ] - * e.g. if the URL is https://demo7.dspace.org/search?query=test, - * the origin would be https://demo7.dspace.org + * e.g. if the URL is https://demo.dspace.org/search?query=test, + * the origin would be https://demo.dspace.org */ getCurrentOrigin(): string { return this.location.origin; diff --git a/src/app/core/services/hard-redirect.service.ts b/src/app/core/services/hard-redirect.service.ts index 826c7e4fa98..e6104cefb9c 100644 --- a/src/app/core/services/hard-redirect.service.ts +++ b/src/app/core/services/hard-redirect.service.ts @@ -25,8 +25,8 @@ export abstract class HardRedirectService { /** * Get the origin of the current URL * i.e. "://" [ ":" ] - * e.g. if the URL is https://demo7.dspace.org/search?query=test, - * the origin would be https://demo7.dspace.org + * e.g. if the URL is https://demo.dspace.org/search?query=test, + * the origin would be https://demo.dspace.org */ abstract getCurrentOrigin(): string; } diff --git a/src/app/core/services/server-hard-redirect.service.ts b/src/app/core/services/server-hard-redirect.service.ts index 8c45cc864b5..d71318d7b8e 100644 --- a/src/app/core/services/server-hard-redirect.service.ts +++ b/src/app/core/services/server-hard-redirect.service.ts @@ -69,8 +69,8 @@ export class ServerHardRedirectService extends HardRedirectService { /** * Get the origin of the current URL * i.e. "://" [ ":" ] - * e.g. if the URL is https://demo7.dspace.org/search?query=test, - * the origin would be https://demo7.dspace.org + * e.g. if the URL is https://demo.dspace.org/search?query=test, + * the origin would be https://demo.dspace.org */ getCurrentOrigin(): string { return this.req.protocol + '://' + this.req.headers.host; From 5853e49bd05eba84141d2bc1aa3f4ff94fabdf04 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 22 Aug 2023 16:44:10 -0500 Subject: [PATCH 0016/1005] Update default configs to use https://demo.dspace.org/server/ --- config/config.example.yml | 2 +- config/config.yml | 2 +- docker/docker-compose-dist.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/config.example.yml b/config/config.example.yml index b7ea190c556..7e611559167 100644 --- a/config/config.example.yml +++ b/config/config.example.yml @@ -22,7 +22,7 @@ ui: # 'synced' with the 'dspace.server.url' setting in your backend's local.cfg. rest: ssl: true - host: sandbox.dspace.org + host: demo.dspace.org port: 443 # NOTE: Space is capitalized because 'namespace' is a reserved string in TypeScript nameSpace: /server diff --git a/config/config.yml b/config/config.yml index 109db60ca92..dcf53893781 100644 --- a/config/config.yml +++ b/config/config.yml @@ -1,5 +1,5 @@ rest: ssl: true - host: sandbox.dspace.org + host: demo.dspace.org port: 443 nameSpace: /server diff --git a/docker/docker-compose-dist.yml b/docker/docker-compose-dist.yml index 3d57174b132..00225e8052a 100644 --- a/docker/docker-compose-dist.yml +++ b/docker/docker-compose-dist.yml @@ -24,7 +24,7 @@ services: # This is because Server Side Rendering (SSR) currently requires a public URL, # see this bug: https://github.com/DSpace/dspace-angular/issues/1485 DSPACE_REST_SSL: 'true' - DSPACE_REST_HOST: sandbox.dspace.org + DSPACE_REST_HOST: demo.dspace.org DSPACE_REST_PORT: 443 DSPACE_REST_NAMESPACE: /server image: dspace/dspace-angular:dspace-7_x-dist From 36868c06f0fb5fd66c21a5a7d39c1f45928afe55 Mon Sep 17 00:00:00 2001 From: Hardy Pottinger Date: Tue, 15 Aug 2023 10:16:50 -0500 Subject: [PATCH 0017/1005] 2437 Correct and clarify commented-out code in several custom components - Correct the path in commented-out code in the custom theme's components - Clarify that the workflow-item-sen-back.component.scss file is a stub - It has no corresponding SCSS file in the base theme (cherry picked from commit 0906234a293a3dbe9057ef13cc4c5b690b1cf25b) --- src/themes/custom/app/footer/footer.component.ts | 4 ++-- .../header-nav-wrapper/header-navbar-wrapper.component.ts | 4 ++-- .../app/shared/auth-nav-menu/auth-nav-menu.component.ts | 4 ++-- .../custom/app/shared/object-list/object-list.component.ts | 2 +- .../workflow-item-send-back.component.ts | 5 ++++- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/themes/custom/app/footer/footer.component.ts b/src/themes/custom/app/footer/footer.component.ts index de80ceb3112..81286fb6624 100644 --- a/src/themes/custom/app/footer/footer.component.ts +++ b/src/themes/custom/app/footer/footer.component.ts @@ -3,9 +3,9 @@ import { FooterComponent as BaseComponent } from '../../../../app/footer/footer. @Component({ selector: 'ds-footer', - // styleUrls: ['footer.component.scss'], + // styleUrls: ['./footer.component.scss'], styleUrls: ['../../../../app/footer/footer.component.scss'], - // templateUrl: 'footer.component.html' + // templateUrl: './footer.component.html' templateUrl: '../../../../app/footer/footer.component.html' }) export class FooterComponent extends BaseComponent { diff --git a/src/themes/custom/app/header-nav-wrapper/header-navbar-wrapper.component.ts b/src/themes/custom/app/header-nav-wrapper/header-navbar-wrapper.component.ts index 875b5f69b86..e049543630a 100644 --- a/src/themes/custom/app/header-nav-wrapper/header-navbar-wrapper.component.ts +++ b/src/themes/custom/app/header-nav-wrapper/header-navbar-wrapper.component.ts @@ -6,9 +6,9 @@ import { HeaderNavbarWrapperComponent as BaseComponent } from '../../../../app/h */ @Component({ selector: 'ds-header-navbar-wrapper', - // styleUrls: ['header-navbar-wrapper.component.scss'], + // styleUrls: ['./header-navbar-wrapper.component.scss'], styleUrls: ['../../../../app/header-nav-wrapper/header-navbar-wrapper.component.scss'], - // templateUrl: 'header-navbar-wrapper.component.html', + // templateUrl: './header-navbar-wrapper.component.html', templateUrl: '../../../../app/header-nav-wrapper/header-navbar-wrapper.component.html', }) export class HeaderNavbarWrapperComponent extends BaseComponent { diff --git a/src/themes/custom/app/shared/auth-nav-menu/auth-nav-menu.component.ts b/src/themes/custom/app/shared/auth-nav-menu/auth-nav-menu.component.ts index af54aacd444..ff5f09eb76f 100644 --- a/src/themes/custom/app/shared/auth-nav-menu/auth-nav-menu.component.ts +++ b/src/themes/custom/app/shared/auth-nav-menu/auth-nav-menu.component.ts @@ -9,9 +9,9 @@ import { fadeInOut, fadeOut } from '../../../../../app/shared/animations/fade'; */ @Component({ selector: 'ds-auth-nav-menu', - // templateUrl: 'auth-nav-menu.component.html', + // templateUrl: './auth-nav-menu.component.html', templateUrl: '../../../../../app/shared/auth-nav-menu/auth-nav-menu.component.html', - // styleUrls: ['auth-nav-menu.component.scss'], + // styleUrls: ['./auth-nav-menu.component.scss'], styleUrls: ['../../../../../app/shared/auth-nav-menu/auth-nav-menu.component.scss'], animations: [fadeInOut, fadeOut] }) diff --git a/src/themes/custom/app/shared/object-list/object-list.component.ts b/src/themes/custom/app/shared/object-list/object-list.component.ts index 49f464610f5..a3763368702 100644 --- a/src/themes/custom/app/shared/object-list/object-list.component.ts +++ b/src/themes/custom/app/shared/object-list/object-list.component.ts @@ -9,7 +9,7 @@ import { ObjectListComponent as BaseComponent} from '../../../../../app/shared/o selector: 'ds-object-list', // styleUrls: ['./object-list.component.scss'], styleUrls: ['../../../../../app/shared/object-list/object-list.component.scss'], - // templateUrl: 'object-list.component.html' + // templateUrl: './object-list.component.html' templateUrl: '../../../../../app/shared/object-list/object-list.component.html' }) diff --git a/src/themes/custom/app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component.ts b/src/themes/custom/app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component.ts index 49121e64b99..ac8ffc99a99 100644 --- a/src/themes/custom/app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component.ts +++ b/src/themes/custom/app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component.ts @@ -3,7 +3,10 @@ import { WorkflowItemSendBackComponent as BaseComponent } from '../../../../../a @Component({ selector: 'ds-workflow-item-send-back', - // styleUrls: ['workflow-item-send-back.component.scss'], + // NOTE: the SCSS file for workflow-item-action-page does not have a corresponding file in the original + // implementation, so this commented out line below is a stub, here if you + // need it, but you probably don't need it. + // styleUrls: ['./workflow-item-send-back.component.scss'], // templateUrl: './workflow-item-send-back.component.html' templateUrl: '../../../../../app/workflowitems-edit-page/workflow-item-action-page.component.html' }) From 3292222e47bbea25232a34166b31f048087c1398 Mon Sep 17 00:00:00 2001 From: Hardy Pottinger Date: Tue, 15 Aug 2023 10:26:38 -0500 Subject: [PATCH 0018/1005] fix lint error in workflow-item-send-back.component.ts (cherry picked from commit 518cc714f2286889d2e66a4f013b954660e7ba5c) --- .../workflow-item-send-back.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/themes/custom/app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component.ts b/src/themes/custom/app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component.ts index ac8ffc99a99..022c46ef22e 100644 --- a/src/themes/custom/app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component.ts +++ b/src/themes/custom/app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component.ts @@ -6,7 +6,7 @@ import { WorkflowItemSendBackComponent as BaseComponent } from '../../../../../a // NOTE: the SCSS file for workflow-item-action-page does not have a corresponding file in the original // implementation, so this commented out line below is a stub, here if you // need it, but you probably don't need it. - // styleUrls: ['./workflow-item-send-back.component.scss'], + // styleUrls: ['./workflow-item-send-back.component.scss'], // templateUrl: './workflow-item-send-back.component.html' templateUrl: '../../../../../app/workflowitems-edit-page/workflow-item-action-page.component.html' }) From fe8429ebbe0e7733478157cf22a0f25820d79e87 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Wed, 23 Aug 2023 17:05:42 -0500 Subject: [PATCH 0019/1005] Enable new skip merge commit feature --- .github/workflows/port_merged_pull_request.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/port_merged_pull_request.yml b/.github/workflows/port_merged_pull_request.yml index 50faf3f8867..109835d14d3 100644 --- a/.github/workflows/port_merged_pull_request.yml +++ b/.github/workflows/port_merged_pull_request.yml @@ -39,6 +39,8 @@ jobs: # Copy all labels from original PR to (newly created) port PR # NOTE: The labels matching 'label_pattern' are automatically excluded copy_labels_pattern: '.*' + # Skip any merge commits in the ported PR. This means only non-merge commits are cherry-picked to the new PR + merge_commits: 'skip' # Use a personal access token (PAT) to create PR as 'dspace-bot' user. # A PAT is required in order for the new PR to trigger its own actions (for CI checks) github_token: ${{ secrets.PR_PORT_TOKEN }} \ No newline at end of file From 2078b7593a707f4dace81c78c1f049d86b841e98 Mon Sep 17 00:00:00 2001 From: Koen Pauwels Date: Fri, 4 Aug 2023 12:25:20 +0200 Subject: [PATCH 0020/1005] 103818 Add warning tooltip to "Inherit policies" checkbox on item move page --- .../edit-item-page/item-move/item-move.component.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app/item-page/edit-item-page/item-move/item-move.component.html b/src/app/item-page/edit-item-page/item-move/item-move.component.html index 589aac655f5..475d36fb6fe 100644 --- a/src/app/item-page/edit-item-page/item-move/item-move.component.html +++ b/src/app/item-page/edit-item-page/item-move/item-move.component.html @@ -21,7 +21,11 @@

{{'item.edit.move.head' | translate: {id: (itemRD$ | async)?.payload?.handle

From a5b30ea3c2bebd4a4522078a05938940da7444a3 Mon Sep 17 00:00:00 2001 From: Koen Pauwels Date: Fri, 4 Aug 2023 17:10:06 +0200 Subject: [PATCH 0021/1005] 103818 Adjusted "Inherit policies" tooltip --- .../item-page/edit-item-page/item-move/item-move.component.html | 2 +- src/assets/i18n/en.json5 | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/item-page/edit-item-page/item-move/item-move.component.html b/src/app/item-page/edit-item-page/item-move/item-move.component.html index 475d36fb6fe..c1a4a5b9a94 100644 --- a/src/app/item-page/edit-item-page/item-move/item-move.component.html +++ b/src/app/item-page/edit-item-page/item-move/item-move.component.html @@ -22,7 +22,7 @@

{{'item.edit.move.head' | translate: {id: (itemRD$ | async)?.payload?.handle

-
+ {{ dsoNameService.getName(node.payload) }}   {{node.payload.archivedItemsCount}} -
+

From 46ac61dcac5e6c3169a846f63d81eada002cff59 Mon Sep 17 00:00:00 2001 From: Hrafn Malmquist Date: Tue, 22 Aug 2023 04:27:23 +0100 Subject: [PATCH 0035/1005] Replace h2 with a h1 (cherry picked from commit 05c53ad1d49da41af474322364891289494a5f02) --- src/app/community-list-page/community-list-page.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/community-list-page/community-list-page.component.html b/src/app/community-list-page/community-list-page.component.html index 9759f4405da..4392fb87d03 100644 --- a/src/app/community-list-page/community-list-page.component.html +++ b/src/app/community-list-page/community-list-page.component.html @@ -1,4 +1,4 @@
-

{{ 'communityList.title' | translate }}

+

{{ 'communityList.title' | translate }}

From 9fc4e213df758576f393975e12e0ae5b929330c4 Mon Sep 17 00:00:00 2001 From: Hrafn Malmquist Date: Tue, 22 Aug 2023 04:28:28 +0100 Subject: [PATCH 0036/1005] Add trackby function so cdktree can differentiate between new and old nodes (cherry picked from commit 5f71de885bc811152729b3fefcb6fefbeda3001e) --- .../community-list/community-list.component.html | 2 +- .../community-list/community-list.component.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/community-list-page/community-list/community-list.component.html b/src/app/community-list-page/community-list/community-list.component.html index 38c9ed1ad68..18e9e84577c 100644 --- a/src/app/community-list-page/community-list/community-list.component.html +++ b/src/app/community-list-page/community-list/community-list.component.html @@ -1,5 +1,5 @@ - + diff --git a/src/app/community-list-page/community-list/community-list.component.ts b/src/app/community-list-page/community-list/community-list.component.ts index 5b2f9308137..e4ad5d8c29f 100644 --- a/src/app/community-list-page/community-list/community-list.component.ts +++ b/src/app/community-list-page/community-list/community-list.component.ts @@ -30,6 +30,7 @@ export class CommunityListComponent implements OnInit, OnDestroy { ); dataSource: CommunityListDatasource; + trackBy = (index, node: FlatNode) => node.id; paginationConfig: FindListOptions; From e89a277702aed1b3ec462a88518bffb788ac50ac Mon Sep 17 00:00:00 2001 From: Hrafn Malmquist Date: Tue, 22 Aug 2023 04:29:01 +0100 Subject: [PATCH 0037/1005] Improve documentation (cherry picked from commit d9b6e9d81f2fba70f7c13a1377e2f2472c20d592) --- .../community-list-service.ts | 6 ++--- .../community-list.component.ts | 25 ++++++++++++++----- .../show-more-flat-node.model.ts | 2 +- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/app/community-list-page/community-list-service.ts b/src/app/community-list-page/community-list-service.ts index 99e9dbeb0de..67715716dad 100644 --- a/src/app/community-list-page/community-list-service.ts +++ b/src/app/community-list-page/community-list-service.ts @@ -25,7 +25,7 @@ import { ShowMoreFlatNode } from './show-more-flat-node.model'; import { FindListOptions } from '../core/data/find-list-options.model'; import { AppConfig, APP_CONFIG } from 'src/config/app-config.interface'; -// Helper method to combine an flatten an array of observables of flatNode arrays +// Helper method to combine and flatten an array of observables of flatNode arrays export const combineAndFlatten = (obsList: Observable[]): Observable => observableCombineLatest([...obsList]).pipe( map((matrix: any[][]) => [].concat(...matrix)), @@ -199,7 +199,7 @@ export class CommunityListService { * Transforms a community in a list of FlatNodes containing firstly a flatnode of the community itself, * followed by flatNodes of its possible subcommunities and collection * It gets called recursively for each subcommunity to add its subcommunities and collections to the list - * Number of subcommunities and collections added, is dependant on the current page the parent is at for respectively subcommunities and collections. + * Number of subcommunities and collections added, is dependent on the current page the parent is at for respectively subcommunities and collections. * @param community Community being transformed * @param level Depth of the community in the list, subcommunities and collections go one level deeper * @param parent Flatnode of the parent community @@ -275,7 +275,7 @@ export class CommunityListService { /** * Checks if a community has subcommunities or collections by querying the respective services with a pageSize = 0 - * Returns an observable that combines the result.payload.totalElements fo the observables that the + * Returns an observable that combines the result.payload.totalElements of the observables that the * respective services return when queried * @param community Community being checked whether it is expandable (if it has subcommunities or collections) */ diff --git a/src/app/community-list-page/community-list/community-list.component.ts b/src/app/community-list-page/community-list/community-list.component.ts index e4ad5d8c29f..bd1d5ecb78f 100644 --- a/src/app/community-list-page/community-list/community-list.component.ts +++ b/src/app/community-list-page/community-list/community-list.component.ts @@ -59,18 +59,28 @@ export class CommunityListComponent implements OnInit, OnDestroy { this.communityListService.saveCommunityListStateToStore(this.expandedNodes, this.loadingNode); } - // whether or not this node has children (subcommunities or collections) + /** + * Whether this node has children (subcommunities or collections) + * @param _ + * @param node + */ hasChild(_: number, node: FlatNode) { return node.isExpandable$; } - // whether or not it is a show more node (contains no data, but is indication that there are more topcoms, subcoms or collections + /** + * Whether this is a show more node that contains no data, but indicates that there is + * one or more community or collection. + * @param _ + * @param node + */ isShowMore(_: number, node: FlatNode) { return node.isShowMoreNode; } /** - * Toggles the expanded variable of a node, adds it to the expanded nodes list and reloads the tree so this node is expanded + * Toggles the expanded variable of a node, adds it to the expanded nodes list and reloads the tree + * so this node is expanded * @param node Node we want to expand */ toggleExpanded(node: FlatNode) { @@ -93,9 +103,12 @@ export class CommunityListComponent implements OnInit, OnDestroy { /** * Makes sure the next page of a node is added to the tree (top community, sub community of collection) - * > Finds its parent (if not top community) and increases its corresponding collection/subcommunity currentPage - * > Reloads tree with new page added to corresponding top community lis, sub community list or collection list - * @param node The show more node indicating whether it's an increase in top communities, sub communities or collections + * > Finds its parent (if not top community) and increases its corresponding collection/subcommunity + * currentPage + * > Reloads tree with new page added to corresponding top community lis, sub community list or + * collection list + * @param node The show more node indicating whether it's an increase in top communities, sub communities + * or collections */ getNextPage(node: FlatNode): void { this.loadingNode = node; diff --git a/src/app/community-list-page/show-more-flat-node.model.ts b/src/app/community-list-page/show-more-flat-node.model.ts index 801c9e7388a..c7b7162d213 100644 --- a/src/app/community-list-page/show-more-flat-node.model.ts +++ b/src/app/community-list-page/show-more-flat-node.model.ts @@ -1,6 +1,6 @@ /** * The show more links in the community tree are also represented by a flatNode so we know where in - * the tree it should be rendered an who its parent is (needed for the action resulting in clicking this link) + * the tree it should be rendered and who its parent is (needed for the action resulting in clicking this link) */ export class ShowMoreFlatNode { } From 8a5d6897c4a2130f56da71e04fb0e2bdba400b07 Mon Sep 17 00:00:00 2001 From: Hrafn Malmquist Date: Tue, 22 Aug 2023 04:59:23 +0100 Subject: [PATCH 0038/1005] Reorder instance method to come after member declaration (cherry picked from commit e59913acab0e782a743a4f18634e2930de9b71e8) --- .../community-list/community-list.component.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/app/community-list-page/community-list/community-list.component.ts b/src/app/community-list-page/community-list/community-list.component.ts index bd1d5ecb78f..90dd6b3c05d 100644 --- a/src/app/community-list-page/community-list/community-list.component.ts +++ b/src/app/community-list-page/community-list/community-list.component.ts @@ -28,11 +28,9 @@ export class CommunityListComponent implements OnInit, OnDestroy { treeControl = new FlatTreeControl( (node: FlatNode) => node.level, (node: FlatNode) => true ); - dataSource: CommunityListDatasource; - trackBy = (index, node: FlatNode) => node.id; - paginationConfig: FindListOptions; + trackBy = (index, node: FlatNode) => node.id; constructor( protected communityListService: CommunityListService, From 2a55e36082c78427fabfb2de8f4ab0a59f98890b Mon Sep 17 00:00:00 2001 From: Mirko Scherf Date: Wed, 26 Jul 2023 13:04:04 +0200 Subject: [PATCH 0039/1005] fix(i18m): curation-task.task.registerdoi.label changed curation-task.task.register-doi.label back to curation-task.task.registerdoi.label and added German translation (cherry picked from commit 0ec72f679bb8d1bb7611c1de2125f92cb718b1a9) --- src/assets/i18n/de.json5 | 3 ++- src/assets/i18n/en.json5 | 2 +- src/assets/i18n/es.json5 | 4 ++-- src/assets/i18n/hu.json5 | 4 ++-- src/assets/i18n/it.json5 | 4 ++-- src/assets/i18n/pt-PT.json5 | 4 ++-- src/assets/i18n/vi.json5 | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/assets/i18n/de.json5 b/src/assets/i18n/de.json5 index 4ebce8012d6..5ab57cf3e6e 100644 --- a/src/assets/i18n/de.json5 +++ b/src/assets/i18n/de.json5 @@ -1712,7 +1712,8 @@ // "curation-task.task.vscan.label": "Virus Scan", "curation-task.task.vscan.label": "Virenscan", - + // "curation-task.task.registerdoi.label": "Register DOI", + "curation-task.task.registerdoi.label": "DOI registrieren", // "curation.form.task-select.label": "Task:", "curation.form.task-select.label": "Aufgabe:", diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 5c17fc8e426..e12233eb5bb 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -1392,7 +1392,7 @@ "curation-task.task.vscan.label": "Virus Scan", - "curation-task.task.register-doi.label": "Register DOI", + "curation-task.task.registerdoi.label": "Register DOI", "curation.form.task-select.label": "Task:", diff --git a/src/assets/i18n/es.json5 b/src/assets/i18n/es.json5 index 5a0e40af42b..bb9334cf114 100644 --- a/src/assets/i18n/es.json5 +++ b/src/assets/i18n/es.json5 @@ -2080,8 +2080,8 @@ // "curation-task.task.vscan.label": "Virus Scan", "curation-task.task.vscan.label": "Búsqueda de virus", - // "curation-task.task.register-doi.label": "Register DOI", - "curation-task.task.register-doi.label": "Registro DOI", + // "curation-task.task.registerdoi.label": "Register DOI", + "curation-task.task.registerdoi.label": "Registro DOI", diff --git a/src/assets/i18n/hu.json5 b/src/assets/i18n/hu.json5 index e1076c75122..d186f6435a7 100644 --- a/src/assets/i18n/hu.json5 +++ b/src/assets/i18n/hu.json5 @@ -2228,9 +2228,9 @@ // "curation-task.task.vscan.label": "Virus Scan", "curation-task.task.vscan.label": "Virus ellenőrzés", - // "curation-task.task.register-doi.label": "Register DOI", + // "curation-task.task.registerdoi.label": "Register DOI", // TODO New key - Add a translation - "curation-task.task.register-doi.label": "Register DOI", + "curation-task.task.registerdoi.label": "Register DOI", diff --git a/src/assets/i18n/it.json5 b/src/assets/i18n/it.json5 index 1a97eca501e..4fc07cebdf7 100644 --- a/src/assets/i18n/it.json5 +++ b/src/assets/i18n/it.json5 @@ -2160,9 +2160,9 @@ // "curation-task.task.vscan.label": "Virus Scan", "curation-task.task.vscan.label": "Scansione antivirus", - // "curation-task.task.register-doi.label": "Register DOI", + // "curation-task.task.registerdoi.label": "Register DOI", // TODO New key - Add a translation - "curation-task.task.register-doi.label": "Register DOI", + "curation-task.task.registerdoi.label": "Register DOI", diff --git a/src/assets/i18n/pt-PT.json5 b/src/assets/i18n/pt-PT.json5 index 622f8cc48b3..5aa4817e881 100644 --- a/src/assets/i18n/pt-PT.json5 +++ b/src/assets/i18n/pt-PT.json5 @@ -2054,8 +2054,8 @@ // "curation-task.task.vscan.label": "Virus Scan", "curation-task.task.vscan.label": "Scan de vírus", - // "curation-task.task.register-doi.label": "Register DOI", - "curation-task.task.register-doi.label": "Registo DOI", + // "curation-task.task.registerdoi.label": "Register DOI", + "curation-task.task.registerdoi.label": "Registo DOI", // "curation.form.task-select.label": "Task:", "curation.form.task-select.label": "Tarefa:", diff --git a/src/assets/i18n/vi.json5 b/src/assets/i18n/vi.json5 index f254df34fed..f9fb33ebcbe 100644 --- a/src/assets/i18n/vi.json5 +++ b/src/assets/i18n/vi.json5 @@ -671,7 +671,7 @@ "curation-task.task.citationpage.label": "Tạo trang trích dẫn", "curation-task.task.noop.label": "NOOP", "curation-task.task.profileformats.label": "Định dạng tệp tin", - "curation-task.task.register-doi.label": "Đăng ký DOI", + "curation-task.task.registerdoi.label": "Đăng ký DOI", "curation-task.task.requiredmetadata.label": "Kiểm tra các trường dữ liệu bắt buộc", "curation-task.task.translate.label": "Bộ dịch của Microsoft", "curation-task.task.vscan.label": "Quét Virus", From 07a2e333ca5cb0f55178f9352d93b09f4fb311b2 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Sat, 26 Aug 2023 22:02:33 +0200 Subject: [PATCH 0040/1005] Implemented i18n cache busting --- package.json | 2 +- .../translate-browser.loader.ts | 4 +- .../translate-server.loader.ts | 3 +- webpack/helpers.ts | 47 +++++++++++++++---- webpack/webpack.common.ts | 11 +++-- 5 files changed, 53 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 719b13b23b6..a2dd76d01bc 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "analyze": "webpack-bundle-analyzer dist/browser/stats.json", "build": "ng build --configuration development", "build:stats": "ng build --stats-json", - "build:prod": "yarn run build:ssr", + "build:prod": "cross-env NODE_ENV=production yarn run build:ssr", "build:ssr": "ng build --configuration production && ng run dspace-angular:server:production", "test": "ng test --source-map=true --watch=false --configuration test", "test:watch": "nodemon --exec \"ng test --source-map=true --watch=true --configuration test\"", diff --git a/src/ngx-translate-loaders/translate-browser.loader.ts b/src/ngx-translate-loaders/translate-browser.loader.ts index a6188c9f15c..85d59c96f0a 100644 --- a/src/ngx-translate-loaders/translate-browser.loader.ts +++ b/src/ngx-translate-loaders/translate-browser.loader.ts @@ -5,6 +5,7 @@ import { NGX_TRANSLATE_STATE, NgxTranslateState } from './ngx-translate-state'; import { hasValue } from '../app/shared/empty.util'; import { map } from 'rxjs/operators'; import { of as observableOf, Observable } from 'rxjs'; +import { environment } from '../environments/environment'; /** * A TranslateLoader for ngx-translate to retrieve i18n messages from the TransferState, or download @@ -33,9 +34,10 @@ export class TranslateBrowserLoader implements TranslateLoader { if (hasValue(messages)) { return observableOf(messages); } else { + const translationHash: string = environment.production ? `.${(process.env.languageHashes as any)[lang + '.json5']}` : ''; // If they're not available on the transfer state (e.g. when running in dev mode), retrieve // them using HttpClient - return this.http.get('' + this.prefix + lang + this.suffix, { responseType: 'text' }).pipe( + return this.http.get(`${this.prefix}${lang}${translationHash}${this.suffix}`, { responseType: 'text' }).pipe( map((json: any) => JSON.parse(json)) ); } diff --git a/src/ngx-translate-loaders/translate-server.loader.ts b/src/ngx-translate-loaders/translate-server.loader.ts index c09c71f0499..1f47dfe95b5 100644 --- a/src/ngx-translate-loaders/translate-server.loader.ts +++ b/src/ngx-translate-loaders/translate-server.loader.ts @@ -23,8 +23,9 @@ export class TranslateServerLoader implements TranslateLoader { * @param lang the language code */ public getTranslation(lang: string): Observable { + const translationHash: string = (process.env.languageHashes as any)[lang + '.json5']; // Retrieve the file for the given language, and parse it - const messages = JSON.parse(readFileSync(`${this.prefix}${lang}${this.suffix}`, 'utf8')); + const messages = JSON.parse(readFileSync(`${this.prefix}${lang}.${translationHash}${this.suffix}`, 'utf8')); // Store the parsed messages in the transfer state so they'll be available immediately when the // app loads on the client this.storeInTransferState(lang, messages); diff --git a/webpack/helpers.ts b/webpack/helpers.ts index 43855f6c729..f0b42a8a690 100644 --- a/webpack/helpers.ts +++ b/webpack/helpers.ts @@ -1,18 +1,49 @@ -const path = require('path'); +import { readFileSync, readdirSync, statSync, Stats } from 'fs'; +import { join, resolve } from 'path'; + +const md5 = require('md5'); export const projectRoot = (relativePath) => { - return path.resolve(__dirname, '..', relativePath); + return resolve(__dirname, '..', relativePath); }; export const globalCSSImports = () => { return [ - projectRoot(path.join('src', 'styles', '_variables.scss')), - projectRoot(path.join('src', 'styles', '_mixins.scss')), + projectRoot(join('src', 'styles', '_variables.scss')), + projectRoot(join('src', 'styles', '_mixins.scss')), ]; }; +/** + * Calculates the md5 hash of a file + * + * @param filePath The path of the file + */ +export function calculateFileHash(filePath: string): string { + const fileContent: Buffer = readFileSync(filePath); + return md5(fileContent); +} -module.exports = { - projectRoot, - globalCSSImports -}; +/** + * Calculate the hashes of all the files (matching the given regex) in a certain folder + * + * @param folderPath The path of the folder + * @param regExp A regex of the files in the folder for which a hash needs to be generated + */ +export function getFileHashes(folderPath: string, regExp: RegExp): { [fileName: string]: string } { + const files: string[] = readdirSync(folderPath); + let hashes: { [fileName: string]: string } = {}; + + for (const file of files) { + if (file.match(regExp)) { + const filePath: string = join(folderPath, file); + const stats: Stats = statSync(filePath); + + if (stats.isFile()) { + hashes[file] = calculateFileHash(filePath); + } + } + } + + return hashes; +} diff --git a/webpack/webpack.common.ts b/webpack/webpack.common.ts index 1a1ecfd6efe..8d433edf393 100644 --- a/webpack/webpack.common.ts +++ b/webpack/webpack.common.ts @@ -1,4 +1,5 @@ -import { globalCSSImports, projectRoot } from './helpers'; +import { globalCSSImports, projectRoot, getFileHashes, calculateFileHash } from './helpers'; +import { EnvironmentPlugin } from 'webpack'; const CopyWebpackPlugin = require('copy-webpack-plugin'); const path = require('path'); @@ -18,12 +19,13 @@ export const copyWebpackOptions = { // use [\/|\\] to match both POSIX and Windows separators const matches = absoluteFilename.match(/.*[\/|\\]assets[\/|\\](.+)\.json5$/); if (matches) { + const fileHash: string = process.env.NODE_ENV === 'production' ? `.${calculateFileHash(absoluteFilename)}` : ''; // matches[1] is the relative path from src/assets to the JSON5 file, without the extension - return path.join('assets', matches[1] + '.json'); + return path.join('assets', `${matches[1]}${fileHash}.json`); } }, transform(content) { - return JSON.stringify(JSON5.parse(content.toString())) + return JSON.stringify(JSON5.parse(content.toString())); } }, { @@ -77,6 +79,9 @@ const SCSS_LOADERS = [ export const commonExports = { plugins: [ + new EnvironmentPlugin({ + languageHashes: getFileHashes(path.join(__dirname, '..', 'src', 'assets', 'i18n'), /.*\.json5/g), + }), new CopyWebpackPlugin(copyWebpackOptions), ], module: { From 13c0cb48ed9fd02a421fdcdfae3c578130f4c985 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Mon, 28 Aug 2023 13:53:19 -0500 Subject: [PATCH 0041/1005] Update to latest cypress (cherry picked from commit 68a3323fcaf9b97d260f5032c9eb2fa5f6096bc2) --- package.json | 2 +- yarn.lock | 49 +++++++++++++++++++++++++++++++++++-------------- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 06d7063240f..0cb2b8d41f1 100644 --- a/package.json +++ b/package.json @@ -163,7 +163,7 @@ "compression-webpack-plugin": "^9.2.0", "copy-webpack-plugin": "^6.4.1", "cross-env": "^7.0.3", - "cypress": "12.10.0", + "cypress": "12.17.4", "cypress-axe": "^1.4.0", "deep-freeze": "0.0.1", "eslint": "^8.39.0", diff --git a/yarn.lock b/yarn.lock index e53a070d167..a7c8af6c043 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1551,10 +1551,10 @@ resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== -"@cypress/request@^2.88.10": - version "2.88.11" - resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz" - integrity sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w== +"@cypress/request@2.88.12": + version "2.88.12" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590" + integrity sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -1571,7 +1571,7 @@ performance-now "^2.1.0" qs "~6.10.3" safe-buffer "^5.1.2" - tough-cookie "~2.5.0" + tough-cookie "^4.1.3" tunnel-agent "^0.6.0" uuid "^8.3.2" @@ -2457,11 +2457,16 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== -"@types/node@*", "@types/node@>=10.0.0", "@types/node@^14.14.31", "@types/node@^14.14.9": +"@types/node@*", "@types/node@>=10.0.0", "@types/node@^14.14.9": version "14.18.42" resolved "https://registry.npmjs.org/@types/node/-/node-14.18.42.tgz" integrity sha512-xefu+RBie4xWlK8hwAzGh3npDz/4VhF6icY/shU+zv/1fNn+ZVG7T7CRwe9LId9sAYRPxI+59QBPuKL3WpyGRg== +"@types/node@^16.18.39": + version "16.18.46" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.46.tgz#9f2102d0ba74a318fcbe170cbff5463f119eab59" + integrity sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" @@ -4437,14 +4442,14 @@ cypress-axe@^1.4.0: resolved "https://registry.yarnpkg.com/cypress-axe/-/cypress-axe-1.4.0.tgz#e67482bfe9e740796bf77c7823f19781a8a2faff" integrity sha512-Ut7NKfzjyKm0BEbt2WxuKtLkIXmx6FD2j0RwdvO/Ykl7GmB/qRQkwbKLk3VP35+83hiIr8GKD04PDdrTK5BnyA== -cypress@12.10.0: - version "12.10.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.10.0.tgz#b6264f77c214d63530ebac2b33c4d099bd40b715" - integrity sha512-Y0wPc221xKKW1/4iAFCphkrG2jNR4MjOne3iGn4mcuCaE7Y5EtXL83N8BzRsAht7GYfWVjJ/UeTqEdDKHz39HQ== +cypress@12.17.4: + version "12.17.4" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.17.4.tgz#b4dadf41673058493fa0d2362faa3da1f6ae2e6c" + integrity sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ== dependencies: - "@cypress/request" "^2.88.10" + "@cypress/request" "2.88.12" "@cypress/xvfb" "^1.2.4" - "@types/node" "^14.14.31" + "@types/node" "^16.18.39" "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" arch "^2.2.0" @@ -4477,9 +4482,10 @@ cypress@12.10.0: minimist "^1.2.8" ospath "^1.2.2" pretty-bytes "^5.6.0" + process "^0.11.10" proxy-from-env "1.0.0" request-progress "^3.0.0" - semver "^7.3.2" + semver "^7.5.3" supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" @@ -9267,6 +9273,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" @@ -10131,7 +10142,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -10912,6 +10923,16 @@ tough-cookie@^4.0.0, tough-cookie@^4.1.2: universalify "^0.2.0" url-parse "^1.5.3" +tough-cookie@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" From 7ebdc43ca2c5c2d8826da036aa9253158e7ad416 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Mon, 28 Aug 2023 13:55:05 -0500 Subject: [PATCH 0042/1005] Update to latest axe-core (cherry picked from commit 50899f1d1b16e322e323507ad7dd42e5173cfbe5) --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0cb2b8d41f1..849002f60ea 100644 --- a/package.json +++ b/package.json @@ -159,7 +159,7 @@ "@types/sanitize-html": "^2.9.0", "@typescript-eslint/eslint-plugin": "^5.59.1", "@typescript-eslint/parser": "^5.59.1", - "axe-core": "^4.7.0", + "axe-core": "^4.7.2", "compression-webpack-plugin": "^9.2.0", "copy-webpack-plugin": "^6.4.1", "cross-env": "^7.0.3", diff --git a/yarn.lock b/yarn.lock index a7c8af6c043..58ddfaca4b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3363,10 +3363,10 @@ aws4@^1.8.0: resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -axe-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== +axe-core@^4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.2.tgz#040a7342b20765cb18bb50b628394c21bccc17a0" + integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g== axios@0.21.4: version "0.21.4" From baecf2ac111ea4b528ea9893d00d7cee22e4d3a8 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 29 Aug 2023 11:41:03 -0500 Subject: [PATCH 0043/1005] Reenable accessibility check fixed in #2251 (cherry picked from commit 158ebb0e3268a314e18bc4855457166d8b57f2e8) --- cypress/e2e/community-list.cy.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/cypress/e2e/community-list.cy.ts b/cypress/e2e/community-list.cy.ts index 7b60b59dbc9..d91260eca1f 100644 --- a/cypress/e2e/community-list.cy.ts +++ b/cypress/e2e/community-list.cy.ts @@ -13,13 +13,6 @@ describe('Community List Page', () => { cy.get('[data-test="expand-button"]').click({ multiple: true }); // Analyze for accessibility issues - // Disable heading-order checks until it is fixed - testA11y('ds-community-list-page', - { - rules: { - 'heading-order': { enabled: false } - } - } as Options - ); + testA11y('ds-community-list-page'); }); }); From a7a807c0bb9b736ea9aa04860ae9ce8035ba5eac Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 29 Aug 2023 11:43:36 -0500 Subject: [PATCH 0044/1005] Enable excessibility checking of login menu, and remove unnecessary exclusion from header (cherry picked from commit 339ed63734d4192fb37a12e67b0395aa1669acdb) --- cypress/e2e/header.cy.ts | 3 +-- cypress/e2e/login-modal.cy.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cypress/e2e/header.cy.ts b/cypress/e2e/header.cy.ts index 236208db686..1a9b841eb7d 100644 --- a/cypress/e2e/header.cy.ts +++ b/cypress/e2e/header.cy.ts @@ -11,8 +11,7 @@ describe('Header', () => { testA11y({ include: ['ds-header'], exclude: [ - ['#search-navbar-container'], // search in navbar has duplicative ID. Will be fixed in #1174 - ['.dropdownLogin'] // "Log in" link has color contrast issues. Will be fixed in #1149 + ['#search-navbar-container'] // search in navbar has duplicative ID. Will be fixed in #1174 ], }); }); diff --git a/cypress/e2e/login-modal.cy.ts b/cypress/e2e/login-modal.cy.ts index b169634cfa0..d29c13c2f96 100644 --- a/cypress/e2e/login-modal.cy.ts +++ b/cypress/e2e/login-modal.cy.ts @@ -1,4 +1,5 @@ import { TEST_ADMIN_PASSWORD, TEST_ADMIN_USER, TEST_ENTITY_PUBLICATION } from 'cypress/support/e2e'; +import { testA11y } from 'cypress/support/utils'; const page = { openLoginMenu() { @@ -123,4 +124,15 @@ describe('Login Modal', () => { cy.location('pathname').should('eq', '/forgot'); cy.get('ds-forgot-email').should('exist'); }); + + it('should pass accessibility tests', () => { + cy.visit('/'); + + page.openLoginMenu(); + + cy.get('ds-log-in').should('exist'); + + // Analyze for accessibility issues + testA11y('ds-log-in'); + }); }); From 13ead8174abf4ab630b40e10002a17e3f988a79a Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 29 Aug 2023 11:44:03 -0500 Subject: [PATCH 0045/1005] Fix heading order issue with item page & update accessibility tests to prove it now passes (cherry picked from commit ba244bf6b14bfed06f1b1052cc6407f2537a175b) --- cypress/e2e/item-page.cy.ts | 20 ++++++++++--------- .../item-page-title-field.component.html | 4 ++-- .../metadata-field-wrapper.component.html | 2 +- .../metadata-field-wrapper.component.scss | 3 +++ 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/cypress/e2e/item-page.cy.ts b/cypress/e2e/item-page.cy.ts index 9eed711776e..9dba6eb8cea 100644 --- a/cypress/e2e/item-page.cy.ts +++ b/cypress/e2e/item-page.cy.ts @@ -1,4 +1,3 @@ -import { Options } from 'cypress-axe'; import { TEST_ENTITY_PUBLICATION } from 'cypress/support/e2e'; import { testA11y } from 'cypress/support/utils'; @@ -19,13 +18,16 @@ describe('Item Page', () => { cy.get('ds-item-page').should('be.visible'); // Analyze for accessibility issues - // Disable heading-order checks until it is fixed - testA11y('ds-item-page', - { - rules: { - 'heading-order': { enabled: false } - } - } as Options - ); + testA11y('ds-item-page'); + }); + + it('should pass accessibility tests on full item page', () => { + cy.visit(ENTITYPAGE + '/full'); + + // tag must be loaded + cy.get('ds-full-item-page').should('be.visible'); + + // Analyze for accessibility issues + testA11y('ds-full-item-page'); }); }); diff --git a/src/app/item-page/simple/field-components/specific-field/title/item-page-title-field.component.html b/src/app/item-page/simple/field-components/specific-field/title/item-page-title-field.component.html index 15960bdc9d7..85975d45335 100644 --- a/src/app/item-page/simple/field-components/specific-field/title/item-page-title-field.component.html +++ b/src/app/item-page/simple/field-components/specific-field/title/item-page-title-field.component.html @@ -1,6 +1,6 @@ -

+

{{ type.toLowerCase() + '.page.titleprefix' | translate }}
{{ dsoNameService.getName(item) }} -

+

diff --git a/src/app/shared/metadata-field-wrapper/metadata-field-wrapper.component.html b/src/app/shared/metadata-field-wrapper/metadata-field-wrapper.component.html index d69f87883bb..7748e385ca4 100644 --- a/src/app/shared/metadata-field-wrapper/metadata-field-wrapper.component.html +++ b/src/app/shared/metadata-field-wrapper/metadata-field-wrapper.component.html @@ -1,5 +1,5 @@
-
{{ label }}
+

{{ label }}

diff --git a/src/app/shared/metadata-field-wrapper/metadata-field-wrapper.component.scss b/src/app/shared/metadata-field-wrapper/metadata-field-wrapper.component.scss index 75dfd09d0d9..bf17d63d6c6 100644 --- a/src/app/shared/metadata-field-wrapper/metadata-field-wrapper.component.scss +++ b/src/app/shared/metadata-field-wrapper/metadata-field-wrapper.component.scss @@ -2,4 +2,7 @@ .simple-view-element { margin-bottom: 15px; } + .simple-view-element-header { + font-size: 1.25rem; + } } From b90d102e5e252e1bd4bb2b36b02508e36d94da30 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 29 Aug 2023 14:58:49 -0500 Subject: [PATCH 0046/1005] Update ng2-nouislider and nouislider to latest versions (cherry picked from commit 91d8b7e4f7187b68f70c1cf2906f4e6e8d8af2b9) --- package.json | 4 ++-- src/styles/_vendor.scss | 2 +- yarn.lock | 18 ++++++++++-------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 849002f60ea..9aec4e08230 100644 --- a/package.json +++ b/package.json @@ -116,12 +116,12 @@ "morgan": "^1.10.0", "ng-mocks": "^14.10.0", "ng2-file-upload": "1.4.0", - "ng2-nouislider": "^1.8.3", + "ng2-nouislider": "^2.0.0", "ngx-infinite-scroll": "^15.0.0", "ngx-pagination": "6.0.3", "ngx-sortablejs": "^11.1.0", "ngx-ui-switch": "^14.0.3", - "nouislider": "^14.6.3", + "nouislider": "^15.7.1", "pem": "1.14.7", "prop-types": "^15.8.1", "react-copy-to-clipboard": "^5.1.0", diff --git a/src/styles/_vendor.scss b/src/styles/_vendor.scss index 9d9842b9b30..b2b94c28269 100644 --- a/src/styles/_vendor.scss +++ b/src/styles/_vendor.scss @@ -1,5 +1,5 @@ // node_modules imports meant for all the themes @import '~node_modules/bootstrap/scss/bootstrap.scss'; -@import '~node_modules/nouislider/distribute/nouislider.min'; +@import '~node_modules/nouislider/dist/nouislider.min'; @import '~node_modules/ngx-ui-switch/ui-switch.component.scss'; diff --git a/yarn.lock b/yarn.lock index 58ddfaca4b7..44625c4bd01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8197,10 +8197,12 @@ ng2-file-upload@1.4.0: dependencies: tslib "^1.9.0" -ng2-nouislider@^1.8.3: - version "1.8.3" - resolved "https://registry.npmjs.org/ng2-nouislider/-/ng2-nouislider-1.8.3.tgz" - integrity sha512-Vl8tHCcJ/ioJLAs2t6FBC35sZq1P/O5ZdqdFwYxOCOMVbILGWNg+2gWZIjFstvv9pqb/mVvVUYe6qGG/mA/RBQ== +ng2-nouislider@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ng2-nouislider/-/ng2-nouislider-2.0.0.tgz#a62fd6cf3f1561be19a2691c2f68d21a46dc6006" + integrity sha512-NGbF/0w0+bZqclpSPFOlWIeVJaVwRRYFJzD1x8PClbw9GIeo7fCHoBzZ81y7K7FTJg6to+cgjSTFETPZG/Dizg== + dependencies: + tslib "^2.3.0" ngx-infinite-scroll@^15.0.0: version "15.0.0" @@ -8343,10 +8345,10 @@ normalize-url@^4.5.0: resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -nouislider@^14.6.3: - version "14.7.0" - resolved "https://registry.npmjs.org/nouislider/-/nouislider-14.7.0.tgz" - integrity sha512-4RtQ1+LHJKesDCNJrXkQcwXAWCrC2aggdLYMstS/G5fEWL+fXZbUA9pwVNHFghMGuFGRATlDLNInRaPeRKzpFQ== +nouislider@^15.7.1: + version "15.7.1" + resolved "https://registry.yarnpkg.com/nouislider/-/nouislider-15.7.1.tgz#77d55e47d9b4cd771728515713df43b489db9705" + integrity sha512-5N7C1ru/i8y3dg9+Z6ilj6+m1EfabvOoaRa7ztpxBSKKRZso4vA52DGSbBJjw5XLtFr/LZ9SgGAXqyVtlVHO5w== npm-bundled@^3.0.0: version "3.0.0" From 3cdcdaf475f19e2d264c4e3685cf94ac2fc847c5 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 29 Aug 2023 15:01:21 -0500 Subject: [PATCH 0047/1005] Fix accessibility of date sliders by adding aria-labels (cherry picked from commit 2a881791ba76091d2f85d0b068f926043ef33bc9) --- cypress/e2e/my-dspace.cy.ts | 6 +--- cypress/e2e/search-page.cy.ts | 6 +--- .../search-range-filter.component.html | 10 +++---- .../search-range-filter.component.ts | 29 +++++++++++++++++++ 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/cypress/e2e/my-dspace.cy.ts b/cypress/e2e/my-dspace.cy.ts index 79786c298a3..af4aab41f36 100644 --- a/cypress/e2e/my-dspace.cy.ts +++ b/cypress/e2e/my-dspace.cy.ts @@ -22,15 +22,11 @@ describe('My DSpace page', () => { testA11y( { include: ['ds-my-dspace-page'], - exclude: [ - ['nouislider'] // Date filter slider is missing ARIA labels. Will be fixed by #1175 - ], }, { rules: { - // Search filters fail these two "moderate" impact rules + // Search filters fail this "moderate" impact rules 'heading-order': { enabled: false }, - 'landmark-unique': { enabled: false } } } as Options ); diff --git a/cypress/e2e/search-page.cy.ts b/cypress/e2e/search-page.cy.ts index 24519cc236a..0d4f70ef037 100644 --- a/cypress/e2e/search-page.cy.ts +++ b/cypress/e2e/search-page.cy.ts @@ -30,15 +30,11 @@ describe('Search Page', () => { testA11y( { include: ['ds-search-page'], - exclude: [ - ['nouislider'] // Date filter slider is missing ARIA labels. Will be fixed by #1175 - ], }, { rules: { - // Search filters fail these two "moderate" impact rules + // Search filters fail this "moderate" impact rule 'heading-order': { enabled: false }, - 'landmark-unique': { enabled: false } } } as Options ); diff --git a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.html b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.html index 7834c4c5571..251e5ac420b 100644 --- a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.html @@ -9,8 +9,8 @@
@@ -21,8 +21,8 @@ @@ -33,7 +33,7 @@ - diff --git a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.ts b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.ts index 938f67412e4..ed20e63c52f 100644 --- a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.ts @@ -2,6 +2,7 @@ import { BehaviorSubject, combineLatest as observableCombineLatest, Subscription import { map, startWith } from 'rxjs/operators'; import { isPlatformBrowser } from '@angular/common'; import { Component, Inject, OnDestroy, OnInit, PLATFORM_ID } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service'; import { FilterType } from '../../../models/filter-type.model'; import { renderFacetFor } from '../search-filter-type-decorator'; @@ -53,11 +54,27 @@ export class SearchRangeFilterComponent extends SearchFacetFilterComponent imple */ min = 1950; + /** + * i18n Label to use for minimum field + */ + minLabel: string; + /** * Fallback maximum for the range */ max = new Date().getUTCFullYear(); + /** + * i18n Label to use for maximum field + */ + maxLabel: string; + + /** + * Base configuration for nouislider + * https://refreshless.com/nouislider/slider-options/ + */ + config = {}; + /** * The current range of the filter */ @@ -78,6 +95,7 @@ export class SearchRangeFilterComponent extends SearchFacetFilterComponent imple protected filterService: SearchFilterService, protected router: Router, protected rdbs: RemoteDataBuildService, + private translateService: TranslateService, @Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService, @Inject(IN_PLACE_SEARCH) public inPlaceSearch: boolean, @Inject(FILTER_CONFIG) public filterConfig: SearchFilterConfig, @@ -96,6 +114,8 @@ export class SearchRangeFilterComponent extends SearchFacetFilterComponent imple super.ngOnInit(); this.min = yearFromString(this.filterConfig.minValue) || this.min; this.max = yearFromString(this.filterConfig.maxValue) || this.max; + this.minLabel = this.translateService.instant('search.filters.filter.' + this.filterConfig.name + '.min.placeholder'); + this.maxLabel = this.translateService.instant('search.filters.filter.' + this.filterConfig.name + '.max.placeholder'); const iniMin = this.route.getQueryParameterValue(this.filterConfig.paramName + RANGE_FILTER_MIN_SUFFIX).pipe(startWith(undefined)); const iniMax = this.route.getQueryParameterValue(this.filterConfig.paramName + RANGE_FILTER_MAX_SUFFIX).pipe(startWith(undefined)); this.sub = observableCombineLatest(iniMin, iniMax).pipe( @@ -105,6 +125,15 @@ export class SearchRangeFilterComponent extends SearchFacetFilterComponent imple return [minimum, maximum]; }) ).subscribe((minmax) => this.range = minmax); + + // Default/base config for nouislider + this.config = { + // Ensure draggable handles have labels + handleAttributes: [ + { 'aria-label': this.minLabel }, + { 'aria-label': this.maxLabel }, + ], + }; } /** From 6df76515ba0980709049ee288e2b2b737bf3614b Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 29 Aug 2023 15:01:51 -0500 Subject: [PATCH 0048/1005] Minor fixes to cypress tests (cherry picked from commit 70a7bbe3cbdd24abaf7f6f791ef60e88a3ae8922) --- cypress/e2e/community-list.cy.ts | 1 - cypress/e2e/pagenotfound.cy.ts | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cypress/e2e/community-list.cy.ts b/cypress/e2e/community-list.cy.ts index d91260eca1f..c371f6ceae7 100644 --- a/cypress/e2e/community-list.cy.ts +++ b/cypress/e2e/community-list.cy.ts @@ -1,4 +1,3 @@ -import { Options } from 'cypress-axe'; import { testA11y } from 'cypress/support/utils'; describe('Community List Page', () => { diff --git a/cypress/e2e/pagenotfound.cy.ts b/cypress/e2e/pagenotfound.cy.ts index 43e3c3af242..d02aa8541c3 100644 --- a/cypress/e2e/pagenotfound.cy.ts +++ b/cypress/e2e/pagenotfound.cy.ts @@ -1,8 +1,13 @@ +import { testA11y } from 'cypress/support/utils'; + describe('PageNotFound', () => { it('should contain element ds-pagenotfound when navigating to page that doesnt exist', () => { // request an invalid page (UUIDs at root path aren't valid) cy.visit('/e9019a69-d4f1-4773-b6a3-bd362caa46f2', { failOnStatusCode: false }); cy.get('ds-pagenotfound').should('be.visible'); + + // Analyze for accessibility issues + testA11y('ds-pagenotfound'); }); it('should not contain element ds-pagenotfound when navigating to existing page', () => { From 63c752b3f4ad2d4a04438dd66f97c8ffff9ca87b Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 29 Aug 2023 15:10:12 -0500 Subject: [PATCH 0049/1005] Fix heading order accessibility issue in search filters/facets (cherry picked from commit 276d80895e38225fcbde38cab01d79cd31a34e9b) --- cypress/e2e/my-dspace.cy.ts | 12 +----------- cypress/e2e/search-page.cy.ts | 12 +----------- .../search-filter/search-filter.component.html | 4 ++-- .../shared/sidebar/sidebar-dropdown.component.html | 2 +- src/themes/dspace/styles/_global-styles.scss | 2 +- 5 files changed, 6 insertions(+), 26 deletions(-) diff --git a/cypress/e2e/my-dspace.cy.ts b/cypress/e2e/my-dspace.cy.ts index af4aab41f36..13f4a1b5471 100644 --- a/cypress/e2e/my-dspace.cy.ts +++ b/cypress/e2e/my-dspace.cy.ts @@ -19,17 +19,7 @@ describe('My DSpace page', () => { cy.get('.filter-toggle').click({ multiple: true }); // Analyze for accessibility issues - testA11y( - { - include: ['ds-my-dspace-page'], - }, - { - rules: { - // Search filters fail this "moderate" impact rules - 'heading-order': { enabled: false }, - } - } as Options - ); + testA11y('ds-my-dspace-page'); }); it('should have a working detailed view that passes accessibility tests', () => { diff --git a/cypress/e2e/search-page.cy.ts b/cypress/e2e/search-page.cy.ts index 0d4f70ef037..755f8eaac6c 100644 --- a/cypress/e2e/search-page.cy.ts +++ b/cypress/e2e/search-page.cy.ts @@ -27,17 +27,7 @@ describe('Search Page', () => { cy.get('[data-test="filter-toggle"]').click({ multiple: true }); // Analyze for accessibility issues - testA11y( - { - include: ['ds-search-page'], - }, - { - rules: { - // Search filters fail this "moderate" impact rule - 'heading-order': { enabled: false }, - } - } as Options - ); + testA11y('ds-search-page'); }); it('should have a working grid view that passes accessibility tests', () => { diff --git a/src/app/shared/search/search-filters/search-filter/search-filter.component.html b/src/app/shared/search/search-filters/search-filter/search-filter.component.html index a6fb0021b7f..421d1ede2c0 100644 --- a/src/app/shared/search/search-filters/search-filter/search-filter.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-filter.component.html @@ -6,9 +6,9 @@ [attr.aria-label]="(((collapsed$ | async) ? 'search.filters.filter.expand' : 'search.filters.filter.collapse') | translate) + ' ' + (('search.filters.filter.' + filter.name + '.head') | translate | lowercase)" [attr.data-test]="'filter-toggle' | dsBrowserOnly" > -
+

{{'search.filters.filter.' + filter.name + '.head'| translate}} -

+ 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 0050/1005] 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 0051/1005] 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 0052/1005] =?UTF-8?q?=F0=9F=90=9B=20fix=20when=20navbar=20?= =?UTF-8?q?expands=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 0053/1005] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Value=20of=20dro?= =?UTF-8?q?pdown=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 0062/1005] =?UTF-8?q?=F0=9F=8E=A8revert=20unnecessary=20fo?= =?UTF-8?q?rmat?= 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 0063/1005] 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 0064/1005] =?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 0065/1005] =?UTF-8?q?=F0=9F=90=9B=20fix=20bug=20of=20cachi?= =?UTF-8?q?ng=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 0066/1005] =?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 b423b49cac0e33232782c580459946e0238adf41 Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Tue, 12 Sep 2023 13:57:26 -0500 Subject: [PATCH 0067/1005] Correct text of help info on edit group page (cherry picked from commit 49247430e50a708996bef1790c7cc2af2271113a) --- src/assets/i18n/en.json5 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index d12a45b8a81..ecbc43a6602 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -508,9 +508,9 @@ "admin.access-control.groups.form.tooltip.editGroupPage": "On this page, you can modify the properties and members of a group. In the top section, you can edit the group name and description, unless this is an admin group for a collection or community, in which case the group name and description are auto-generated and cannot be edited. In the following sections, you can edit group membership. See [the wiki](https://wiki.lyrasis.org/display/DSDOC7x/Create+or+manage+a+user+group) for more details.", - "admin.access-control.groups.form.tooltip.editGroup.addEpeople": "To add or remove an EPerson to/from this group, either click the 'Browse All' button or use the search bar below to search for users (use the dropdown to the left of the search bar to choose whether to search by metadata or by email). Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages. Once you are ready, save your changes by clicking the 'Save' button in the top section.", + "admin.access-control.groups.form.tooltip.editGroup.addEpeople": "To add or remove an EPerson to/from this group, either click the 'Browse All' button or use the search bar below to search for users (use the dropdown to the left of the search bar to choose whether to search by metadata or by email). Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages.", - "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "To add or remove a Subgroup to/from this group, either click the 'Browse All' button or use the search bar below to search for users. Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages. Once you are ready, save your changes by clicking the 'Save' button in the top section.", + "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "To add or remove a Subgroup to/from this group, either click the 'Browse All' button or use the search bar below to search for groups. Then click the plus icon for each group you wish to add in the list below, or the trash can icon for each group you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages.", "admin.search.breadcrumbs": "Administrative Search", From 15c2af5fbf64bdbf1c55aa1ad85ea222544cfa39 Mon Sep 17 00:00:00 2001 From: "Mark H. Wood" Date: Tue, 22 Aug 2023 14:38:04 -0400 Subject: [PATCH 0068/1005] Graceful shutdown on SIGINT (e.g. from 'pm2 stop'). (cherry picked from commit 6709c3bb5ffe4f4c056debb1295ce499a6ea6932) --- package.json | 1 + server.ts | 23 +++++++++-- yarn.lock | 107 ++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 122 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 9aec4e08230..69fff84bb40 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,7 @@ "fast-json-patch": "^3.1.1", "filesize": "^6.1.0", "http-proxy-middleware": "^1.0.5", + "http-terminator": "^3.2.0", "isbot": "^3.6.10", "js-cookie": "2.2.1", "js-yaml": "^4.1.0", diff --git a/server.ts b/server.ts index 4feda5209a7..0fbec1beae1 100644 --- a/server.ts +++ b/server.ts @@ -32,6 +32,7 @@ import isbot from 'isbot'; import { createCertificate } from 'pem'; import { createServer } from 'https'; import { json } from 'body-parser'; +import { createHttpTerminator } from 'http-terminator'; import { readFileSync } from 'fs'; import { join } from 'path'; @@ -488,7 +489,7 @@ function saveToCache(req, page: any) { */ function hasNotSucceeded(statusCode) { const rgx = new RegExp(/^20+/); - return !rgx.test(statusCode) + return !rgx.test(statusCode); } function retrieveHeaders(response) { @@ -526,12 +527,20 @@ function serverStarted() { * @param keys SSL credentials */ function createHttpsServer(keys) { - createServer({ + const listener = createServer({ key: keys.serviceKey, cert: keys.certificate }, app).listen(environment.ui.port, environment.ui.host, () => { serverStarted(); }); + + // Graceful shutdown when signalled + const terminator = createHttpTerminator({server: listener}); + process.on('SIGINT', ()=> { + console.debug('Closing HTTPS server on signal'); + terminator.terminate().catch(e => { console.error(e); }); + console.debug('HTTPS server closed'); + }); } function run() { @@ -540,9 +549,17 @@ function run() { // Start up the Node server const server = app(); - server.listen(port, host, () => { + const listener = server.listen(port, host, () => { serverStarted(); }); + + // Graceful shutdown when signalled + const terminator = createHttpTerminator({server: listener}); + process.on('SIGINT', ()=> { + console.debug('Closing HTTP server on signal'); + terminator.terminate().catch(e => { console.error(e); }); + console.debug('HTTP server closed.'); + }); } function start() { diff --git a/yarn.lock b/yarn.lock index 44625c4bd01..c5a82d9e75d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1761,6 +1761,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.39.0.tgz#58b536bcc843f4cd1e02a7e6171da5c040f4d44b" integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng== +"@fastify/deepmerge@^1.0.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@fastify/deepmerge/-/deepmerge-1.3.0.tgz#8116858108f0c7d9fd460d05a7d637a13fe3239a" + integrity sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A== + "@fortawesome/fontawesome-free@^6.4.0": version "6.4.0" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz#1ee0c174e472c84b23cb46c995154dc383e3b4fe" @@ -3066,9 +3071,9 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@8.12.0, ajv@^8.8.0: +ajv@8.12.0, ajv@^8.10.0, ajv@^8.8.0: version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" @@ -3543,6 +3548,11 @@ boolbase@^1.0.0: resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== +boolean@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== + bootstrap@^4.6.1: version "4.6.2" resolved "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz" @@ -4647,6 +4657,11 @@ del@^2.2.0: pinkie-promise "^2.0.0" rimraf "^2.2.8" +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" @@ -5585,6 +5600,18 @@ fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@^2.0.0: resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +fast-json-stringify@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-5.8.0.tgz#b229ed01ac5f92f3b82001a916c31324652f46d7" + integrity sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ== + dependencies: + "@fastify/deepmerge" "^1.0.0" + ajv "^8.10.0" + ajv-formats "^2.1.1" + fast-deep-equal "^3.1.3" + fast-uri "^2.1.0" + rfdc "^1.2.0" + fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" @@ -5595,6 +5622,18 @@ fast-memoize@^2.5.1: resolved "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz" integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== +fast-printf@^1.6.9: + version "1.6.9" + resolved "https://registry.yarnpkg.com/fast-printf/-/fast-printf-1.6.9.tgz#212f56570d2dc8ccdd057ee93d50dd414d07d676" + integrity sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg== + dependencies: + boolean "^3.1.4" + +fast-uri@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.2.0.tgz#519a0f849bef714aad10e9753d69d8f758f7445a" + integrity sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg== + fastest-levenshtein@^1.0.12: version "1.0.16" resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" @@ -6027,9 +6066,9 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" -globalthis@^1.0.3: +globalthis@^1.0.2, globalthis@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" @@ -6378,6 +6417,16 @@ http-signature@~1.3.6: jsprim "^2.0.2" sshpk "^1.14.1" +http-terminator@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/http-terminator/-/http-terminator-3.2.0.tgz#bc158d2694b733ca4fbf22a35065a81a609fb3e9" + integrity sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g== + dependencies: + delay "^5.0.0" + p-wait-for "^3.2.0" + roarr "^7.0.4" + type-fest "^2.3.3" + https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" @@ -8617,6 +8666,11 @@ ospath@^1.2.2: resolved "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz" integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" @@ -8660,11 +8714,25 @@ p-retry@^4.5.0: "@types/retry" "0.12.0" retry "^0.13.1" +p-timeout@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +p-wait-for@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-wait-for/-/p-wait-for-3.2.0.tgz#640429bcabf3b0dd9f492c31539c5718cb6a3f1f" + integrity sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA== + dependencies: + p-timeout "^3.0.0" + pacote@15.1.0: version "15.1.0" resolved "https://registry.npmjs.org/pacote/-/pacote-15.1.0.tgz" @@ -9907,9 +9975,9 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.3.0: +rfdc@^1.2.0, rfdc@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.6.3: @@ -9926,6 +9994,18 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +roarr@^7.0.4: + version "7.15.1" + resolved "https://registry.yarnpkg.com/roarr/-/roarr-7.15.1.tgz#e4d93105c37b5ea7dd1200d96a3500f757ddc39f" + integrity sha512-0ExL9rjOXeQPvQvQo8IcV8SR2GTXmDr1FQFlY2HiAV+gdVQjaVZNOx9d4FI2RqFFsd0sNsiw2TRS/8RU9g0ZfA== + dependencies: + boolean "^3.1.4" + fast-json-stringify "^5.8.0" + fast-printf "^1.6.9" + globalthis "^1.0.2" + safe-stable-stringify "^2.4.3" + semver-compare "^1.0.0" + rtl-css-js@^1.13.1: version "1.16.1" resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz" @@ -10008,6 +10088,11 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" +safe-stable-stringify@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" @@ -10127,6 +10212,11 @@ selfsigned@^2.1.1: dependencies: node-forge "^1" +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== + semver@7.3.8: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" @@ -11081,6 +11171,11 @@ type-fest@^0.21.3: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^2.3.3: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" From 46e2f4e22cc469beb2408e6857a6d5711a4d6b2a Mon Sep 17 00:00:00 2001 From: "Mark H. Wood" Date: Tue, 22 Aug 2023 15:46:55 -0400 Subject: [PATCH 0069/1005] Properly await termination. (cherry picked from commit 4449737aed9b96c13ba6a34e2ff72feb1aaebe92) --- server.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/server.ts b/server.ts index 0fbec1beae1..baa73215037 100644 --- a/server.ts +++ b/server.ts @@ -536,10 +536,12 @@ function createHttpsServer(keys) { // Graceful shutdown when signalled const terminator = createHttpTerminator({server: listener}); - process.on('SIGINT', ()=> { - console.debug('Closing HTTPS server on signal'); - terminator.terminate().catch(e => { console.error(e); }); - console.debug('HTTPS server closed'); + process.on('SIGINT', () => { + void (async ()=> { + console.debug('Closing HTTPS server on signal'); + await terminator.terminate().catch(e => { console.error(e); }); + console.debug('HTTPS server closed'); + })(); }); } @@ -555,10 +557,12 @@ function run() { // Graceful shutdown when signalled const terminator = createHttpTerminator({server: listener}); - process.on('SIGINT', ()=> { - console.debug('Closing HTTP server on signal'); - terminator.terminate().catch(e => { console.error(e); }); - console.debug('HTTP server closed.'); + process.on('SIGINT', () => { + void (async () => { + console.debug('Closing HTTP server on signal'); + await terminator.terminate().catch(e => { console.error(e); }); + console.debug('HTTP server closed.');return undefined; + })(); }); } From d6cabd1d01209655a1b6a1a8e468a4924b7243fb Mon Sep 17 00:00:00 2001 From: "Mark H. Wood" Date: Tue, 22 Aug 2023 17:07:20 -0400 Subject: [PATCH 0070/1005] Document a modified method as required by PR guidelines. (cherry picked from commit bf9b2b82e1d1d6cd7a901b674d8df92af073794c) --- server.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server.ts b/server.ts index baa73215037..da085f372fd 100644 --- a/server.ts +++ b/server.ts @@ -545,6 +545,9 @@ function createHttpsServer(keys) { }); } +/** + * Create an HTTP server with the configured port and host. + */ function run() { const port = environment.ui.port || 4000; const host = environment.ui.host || '/'; From 3e8d180f1b92adc2c69a4f74d864d165150611ea Mon Sep 17 00:00:00 2001 From: Yana De Pauw Date: Mon, 18 Sep 2023 16:43:32 +0200 Subject: [PATCH 0071/1005] 106974: Angular SSR menu issues --- src/app/core/core.effects.ts | 2 ++ src/app/shared/menu/menu.actions.ts | 11 ++++++- src/app/shared/menu/menu.effects.spec.ts | 41 ++++++++++++++++++++++++ src/app/shared/menu/menu.effects.ts | 23 +++++++++++++ src/app/shared/menu/menu.reducer.spec.ts | 13 +++++++- src/app/shared/menu/menu.reducer.ts | 19 ++++++----- src/app/shared/menu/menu.service.spec.ts | 27 ++++++++++++++-- src/app/shared/menu/menu.service.ts | 3 +- 8 files changed, 126 insertions(+), 13 deletions(-) create mode 100644 src/app/shared/menu/menu.effects.spec.ts create mode 100644 src/app/shared/menu/menu.effects.ts diff --git a/src/app/core/core.effects.ts b/src/app/core/core.effects.ts index b569df290d5..1724e88743b 100644 --- a/src/app/core/core.effects.ts +++ b/src/app/core/core.effects.ts @@ -7,6 +7,7 @@ import { ServerSyncBufferEffects } from './cache/server-sync-buffer.effects'; import { ObjectUpdatesEffects } from './data/object-updates/object-updates.effects'; import { RouteEffects } from './services/route.effects'; import { RouterEffects } from './router/router.effects'; +import { MenuEffects } from '../shared/menu/menu.effects'; export const coreEffects = [ RequestEffects, @@ -18,4 +19,5 @@ export const coreEffects = [ ObjectUpdatesEffects, RouteEffects, RouterEffects, + MenuEffects, ]; diff --git a/src/app/shared/menu/menu.actions.ts b/src/app/shared/menu/menu.actions.ts index f02fd73292e..268c149c5ba 100644 --- a/src/app/shared/menu/menu.actions.ts +++ b/src/app/shared/menu/menu.actions.ts @@ -18,6 +18,7 @@ export const MenuActionTypes = { EXPAND_MENU: type('dspace/menu/EXPAND_MENU'), SHOW_MENU: type('dspace/menu/SHOW_MENU'), HIDE_MENU: type('dspace/menu/HIDE_MENU'), + REINIT_MENUS: type('dspace/menu/REINIT_MENUS'), COLLAPSE_MENU_PREVIEW: type('dspace/menu/COLLAPSE_MENU_PREVIEW'), EXPAND_MENU_PREVIEW: type('dspace/menu/EXPAND_MENU_PREVIEW'), ADD_SECTION: type('dspace/menu-section/ADD_SECTION'), @@ -115,6 +116,13 @@ export class ExpandMenuPreviewAction implements Action { } } +/** + * Action used to re-initialise the menus + */ +export class ReinitMenuAction implements Action { + type = MenuActionTypes.REINIT_MENUS; +} + // MENU SECTION ACTIONS /** * Action used to perform state changes for a section of a certain menu @@ -224,4 +232,5 @@ export type MenuAction = | DeactivateMenuSectionAction | ToggleActiveMenuSectionAction | CollapseMenuPreviewAction - | ExpandMenuPreviewAction; + | ExpandMenuPreviewAction + | ReinitMenuAction; diff --git a/src/app/shared/menu/menu.effects.spec.ts b/src/app/shared/menu/menu.effects.spec.ts new file mode 100644 index 00000000000..5da53286747 --- /dev/null +++ b/src/app/shared/menu/menu.effects.spec.ts @@ -0,0 +1,41 @@ +import { Observable } from 'rxjs'; +import { TestBed, waitForAsync } from '@angular/core/testing'; +import { provideMockActions } from '@ngrx/effects/testing'; +import { cold, hot } from 'jasmine-marbles'; +import { MenuEffects } from './menu.effects'; +import { ReinitMenuAction } from './menu.actions'; +import { StoreAction, StoreActionTypes } from '../../store.actions'; + +describe('MenuEffects', () => { + let menuEffects: MenuEffects; + let actions: Observable; + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + providers: [ + MenuEffects, + provideMockActions(() => actions), + ], + }); + })); + + beforeEach(() => { + menuEffects = TestBed.inject(MenuEffects); + }); + + describe('reinitDSOMenus', () => { + describe('When a REHYDRATE action is triggered', () => { + let action; + beforeEach(() => { + action = new StoreAction(StoreActionTypes.REHYDRATE, null); + }); + it('should return a ReinitMenuAction', () => { + actions = hot('--a-', {a: action}); + const expected = cold('--b-', {b: new ReinitMenuAction}); + + expect(menuEffects.reinitDSOMenus).toBeObservable(expected); + }); + }); + }); + + +}); diff --git a/src/app/shared/menu/menu.effects.ts b/src/app/shared/menu/menu.effects.ts new file mode 100644 index 00000000000..2787f80b78a --- /dev/null +++ b/src/app/shared/menu/menu.effects.ts @@ -0,0 +1,23 @@ +import { map } from 'rxjs/operators'; +import { Injectable } from '@angular/core'; +import { Actions, createEffect, ofType } from '@ngrx/effects'; + +import { StoreActionTypes } from '../../store.actions'; +import { ReinitMenuAction } from './menu.actions'; + +@Injectable() +export class MenuEffects { + + /** + * When the store is rehydrated in the browser, re-initialise the menus to ensure + * the menus with functions are loaded correctly. + */ + reinitDSOMenus = createEffect(() => this.actions$ + .pipe(ofType(StoreActionTypes.REHYDRATE), + map(() => new ReinitMenuAction()) + )); + + constructor(private actions$: Actions) { + } + +} diff --git a/src/app/shared/menu/menu.reducer.spec.ts b/src/app/shared/menu/menu.reducer.spec.ts index 2865e887fca..8f540c016d5 100644 --- a/src/app/shared/menu/menu.reducer.spec.ts +++ b/src/app/shared/menu/menu.reducer.spec.ts @@ -9,7 +9,7 @@ import { ExpandMenuAction, ExpandMenuPreviewAction, HideMenuAction, - HideMenuSectionAction, + HideMenuSectionAction, ReinitMenuAction, RemoveMenuSectionAction, ShowMenuAction, ShowMenuSectionAction, @@ -317,6 +317,17 @@ describe('menusReducer', () => { // is mutated, and any uncaught exception will cause the test to fail }); + it('should reset the menu state to the initial state when performing the REINIT_MENUS action without affecting the previous state', () => { + dummyState[MenuID.ADMIN].visible = true; + const state = dummyState; + deepFreeze([state]); + + const action = new ReinitMenuAction(); + const menusState = menusReducer(state, action); + expect(menusState).toEqual(initialMenusState); + + }); + it('should set add a new section for the correct menu in response to the ADD_SECTION action', () => { const state = dummyState; const action = new AddMenuSectionAction(menuID, visibleSection1); diff --git a/src/app/shared/menu/menu.reducer.ts b/src/app/shared/menu/menu.reducer.ts index c7ea017cc24..4c9ee31403a 100644 --- a/src/app/shared/menu/menu.reducer.ts +++ b/src/app/shared/menu/menu.reducer.ts @@ -26,36 +26,39 @@ import { MenuID } from './menu-id.model'; * @returns {MenusState} The new, reducer MenusState */ export function menusReducer(state: MenusState = initialMenusState, action: MenuAction): MenusState { - const menuState: MenuState = state[action.menuID]; switch (action.type) { case MenuActionTypes.COLLAPSE_MENU: { - const newMenuState = Object.assign({}, menuState, { collapsed: true }); + const newMenuState = Object.assign({}, state[action.menuID], { collapsed: true }); return Object.assign({}, state, { [action.menuID]: newMenuState }); } case MenuActionTypes.EXPAND_MENU: { - const newMenuState = Object.assign({}, menuState, { collapsed: false }); + const newMenuState = Object.assign({}, state[action.menuID], { collapsed: false }); return Object.assign({}, state, { [action.menuID]: newMenuState }); } case MenuActionTypes.COLLAPSE_MENU_PREVIEW: { - const newMenuState = Object.assign({}, menuState, { previewCollapsed: true }); + const newMenuState = Object.assign({}, state[action.menuID], { previewCollapsed: true }); return Object.assign({}, state, { [action.menuID]: newMenuState }); } case MenuActionTypes.EXPAND_MENU_PREVIEW: { - const newMenuState = Object.assign({}, menuState, { previewCollapsed: false }); + const newMenuState = Object.assign({}, state[action.menuID], { previewCollapsed: false }); return Object.assign({}, state, { [action.menuID]: newMenuState }); } case MenuActionTypes.TOGGLE_MENU: { + const menuState = state[action.menuID]; const newMenuState = Object.assign({}, menuState, { collapsed: !menuState.collapsed }); return Object.assign({}, state, { [action.menuID]: newMenuState }); } case MenuActionTypes.SHOW_MENU: { - const newMenuState = Object.assign({}, menuState, { visible: true }); + const newMenuState = Object.assign({}, state[action.menuID], { visible: true }); return Object.assign({}, state, { [action.menuID]: newMenuState }); } case MenuActionTypes.HIDE_MENU: { - const newMenuState = Object.assign({}, menuState, { visible: false }); + const newMenuState = Object.assign({}, state[action.menuID], { visible: false }); return Object.assign({}, state, { [action.menuID]: newMenuState }); } + case MenuActionTypes.REINIT_MENUS: { + return Object.assign({}, initialMenusState); + } case MenuActionTypes.ADD_SECTION: { return addSection(state, action as AddMenuSectionAction); } @@ -230,7 +233,7 @@ function toggleActiveSection(state: MenusState, action: ToggleActiveMenuSectionA * @param {MenuSection} section The section that will be added or replaced in the state * @returns {MenusState} The new reduced state */ -function putSectionState(state: MenusState, action: MenuAction, section: MenuSection): MenusState { +function putSectionState(state: MenusState, action: MenuSectionAction, section: MenuSection): MenusState { const menuState: MenuState = state[action.menuID]; const newSections = Object.assign({}, menuState.sections, { [section.id]: section diff --git a/src/app/shared/menu/menu.service.spec.ts b/src/app/shared/menu/menu.service.spec.ts index 0d8d669a0aa..6af7c54d58c 100644 --- a/src/app/shared/menu/menu.service.spec.ts +++ b/src/app/shared/menu/menu.service.spec.ts @@ -41,6 +41,7 @@ describe('MenuService', () => { let routeDataMenuSection: MenuSection; let routeDataMenuSectionResolved: MenuSection; let routeDataMenuChildSection: MenuSection; + let routeDataMenuOverwrittenChildSection: MenuSection; let toBeRemovedMenuSection: MenuSection; let alreadyPresentMenuSection: MenuSection; let route; @@ -127,6 +128,17 @@ describe('MenuService', () => { link: '' } as LinkMenuItemModel }; + routeDataMenuOverwrittenChildSection = { + id: 'mockChildSection', + parentID: 'mockSection', + active: false, + visible: true, + model: { + type: MenuItemType.LINK, + text: 'menu.section.mockChildOverwrittenSection', + link: '' + } as LinkMenuItemModel + }; toBeRemovedMenuSection = { id: 'toBeRemovedSection', active: false, @@ -167,7 +179,17 @@ describe('MenuService', () => { [MenuID.PUBLIC]: routeDataMenuChildSection } } + }, + firstChild: { + snapshot: { + data: { + menu: { + [MenuID.PUBLIC]: routeDataMenuOverwrittenChildSection + } + } + } } + } } }; @@ -541,7 +563,7 @@ describe('MenuService', () => { }); describe('buildRouteMenuSections', () => { - it('should add and remove menu sections depending on the current route', () => { + it('should add and remove menu sections depending on the current route and overwrite menu sections when they have the same ID with the child route version', () => { spyOn(service, 'addSection'); spyOn(service, 'removeSection'); @@ -550,7 +572,8 @@ describe('MenuService', () => { service.buildRouteMenuSections(MenuID.PUBLIC); expect(service.addSection).toHaveBeenCalledWith(MenuID.PUBLIC, routeDataMenuSectionResolved); - expect(service.addSection).toHaveBeenCalledWith(MenuID.PUBLIC, routeDataMenuChildSection); + expect(service.addSection).not.toHaveBeenCalledWith(MenuID.PUBLIC, routeDataMenuChildSection); + expect(service.addSection).toHaveBeenCalledWith(MenuID.PUBLIC, routeDataMenuOverwrittenChildSection); expect(service.addSection).not.toHaveBeenCalledWith(MenuID.PUBLIC, alreadyPresentMenuSection); expect(service.removeSection).toHaveBeenCalledWith(MenuID.PUBLIC, toBeRemovedMenuSection.id); }); diff --git a/src/app/shared/menu/menu.service.ts b/src/app/shared/menu/menu.service.ts index fac3b3fba70..0ec7d67f252 100644 --- a/src/app/shared/menu/menu.service.ts +++ b/src/app/shared/menu/menu.service.ts @@ -399,7 +399,8 @@ export class MenuService { } if (!last) { - return [...menuSections, ...this.resolveRouteMenuSections(route.firstChild, menuID)]; + const childMenuSections = this.resolveRouteMenuSections(route.firstChild, menuID); + return [...menuSections.filter(menu => !(childMenuSections).map(childMenu => childMenu.id).includes(menu.id)), ...childMenuSections]; } else { return [...menuSections]; } From 47029c0a78d14c8e9d0557040223c0490eed42dd Mon Sep 17 00:00:00 2001 From: Alan Orth Date: Mon, 18 Sep 2023 14:40:19 +0300 Subject: [PATCH 0072/1005] src/app/shared/search: don't capitalize metadata values Don't capitalize metadata values for display purposes. --- .../search-facet-selected-option.component.html | 2 +- .../search-labels/search-label/search-label.component.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.html b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.html index d5f88c53332..42fa7f9e6b5 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.html @@ -4,7 +4,7 @@ [queryParams]="removeQueryParams" queryParamsHandling="merge"> diff --git a/src/app/shared/search/search-labels/search-label/search-label.component.html b/src/app/shared/search/search-labels/search-label/search-label.component.html index bffb7f9329b..17c5a487181 100644 --- a/src/app/shared/search/search-labels/search-label/search-label.component.html +++ b/src/app/shared/search/search-labels/search-label/search-label.component.html @@ -1,4 +1,4 @@ - {{('search.filters.applied.' + key) | translate}}: {{'search.filters.' + filterName + '.' + value | translate: {default: normalizeFilterValue(value)} }} From 742b2d920a58acac444514c13cb7f7d7b16d70a6 Mon Sep 17 00:00:00 2001 From: Sascha Szott Date: Tue, 19 Sep 2023 17:04:10 +0200 Subject: [PATCH 0073/1005] remove obsolete label element in metadata-schema.component.html (cherry picked from commit 6847c30e582773b492747dc5dc88d4406f003a91) --- .../metadata-schema/metadata-schema.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.html b/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.html index 557741df80c..a3242bccc07 100644 --- a/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.html +++ b/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.html @@ -41,7 +41,7 @@

{{'admin.registries.schema.fields.head' | translate}}

{{field.id}} - {{schema?.prefix}}.{{field.element}}{{field.qualifier}} + {{schema?.prefix}}.{{field.element}}{{field.qualifier ? '.' + field.qualifier : ''}} {{field.scopeNote}} From c7fe310d81cb87b9692d4c85d35b46b45b890892 Mon Sep 17 00:00:00 2001 From: Sascha Szott Date: Fri, 22 Sep 2023 10:39:17 +0200 Subject: [PATCH 0074/1005] removed trailing whitespaces as suggested by reviewer (cherry picked from commit 43f19e7d918d0457184160744e9f781db9cd491c) --- .../metadata-schema/metadata-schema.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.html b/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.html index a3242bccc07..2fe53dfcd84 100644 --- a/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.html +++ b/src/app/admin/admin-registries/metadata-schema/metadata-schema.component.html @@ -41,7 +41,7 @@

{{'admin.registries.schema.fields.head' | translate}}

{{field.id}} - {{schema?.prefix}}.{{field.element}}{{field.qualifier ? '.' + field.qualifier : ''}} + {{schema?.prefix}}.{{field.element}}{{field.qualifier ? '.' + field.qualifier : ''}} {{field.scopeNote}} From f77d01c01fc45c81ed530ea560b0e0742c5c049e Mon Sep 17 00:00:00 2001 From: DSpace Bot <68393067+dspace-bot@users.noreply.github.com> Date: Mon, 25 Sep 2023 04:53:45 -0500 Subject: [PATCH 0075/1005] [Port dspace-7_x] Update fi.json5 (#2516) * Update fi.json5 Two last translations to the Finnish file. (cherry picked from commit c3a908bccb5ebb52c08c57efd7d02c91e0e5de02) --- src/assets/i18n/fi.json5 | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/assets/i18n/fi.json5 b/src/assets/i18n/fi.json5 index c56fcb6fecc..ede41ffb0c2 100644 --- a/src/assets/i18n/fi.json5 +++ b/src/assets/i18n/fi.json5 @@ -742,8 +742,7 @@ "admin.access-control.groups.form.tooltip.editGroup.addEpeople": "Voit lisätä tai poistaa ryhmän käyttäjän joko napsauttamalla 'Selaa kaikkia' -painiketta tai käyttämällä alla olevaa hakupalkkia käyttäjien etsimiseen (käytä hakupalkin vasemmalla puolella olevaa pudotusvalikkoa valitaksesi, haetaanko metatietojen vai sähköpostin perusteella). Napsauta sitten plus-kuvaketta jokaisen käyttäjän kohdalla, jonka haluat lisätä alla olevaan luetteloon, tai roskakorikuvaketta jokaisen käyttäjän kohdalla, jonka haluat poistaa. Alla olevassa luettelossa voi olla useita sivuja: voit siirtyä seuraaville sivuille luettelon alapuolella olevilla sivunohjaimilla. Kun olet valmis, tallenna muutokset napsauttamalla yläosassa olevaa Tallenna-painiketta.", // "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "To add or remove a Subgroup to/from this group, either click the 'Browse All' button or use the search bar below to search for users. Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages. Once you are ready, save your changes by clicking the 'Save' button in the top section.", - // TODO New key - Add a translation - ree made ticket 2321 to DSpace's github - "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "Jos haluat lisätä tai poistaa alaryhmän tähän ryhmään tai tästä ryhmästä, napsauta joko 'Selaa kaikkia' -painiketta tai käytä alla olevaa hakupalkkia käyttäjien etsimiseen. Napsauta sitten luettelossa plus-kuvaketta jokaisen käyttäjän kohdalla, jonka haluat lisätä, tai roskakorikuvaketta jokaisen käyttäjän kohdalla, jonka haluat poistaa. Luettelossa voi olla useita sivuja: voit siirtyä seuraaville sivuille luettelon alapuolella olevilla sivunohjaimilla. Kun olet valmis, tallenna muutokset napsauttamalla yläosassa olevaa Tallenna-painiketta.", + "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "Jos haluat lisätä tai poistaa alaryhmän tähän ryhmään tai tästä ryhmästä, napsauta joko 'Selaa kaikkia' -painiketta tai käytä alla olevaa hakupalkkia ryhmien etsimiseen. Napsauta sitten luettelossa plus-kuvaketta jokaisen ryhmän kohdalla, jonka haluat lisätä, tai roskakorikuvaketta jokaisen ryhmän kohdalla, jonka haluat poistaa. Luettelossa voi olla useita sivuja: voit siirtyä seuraaville sivuille luettelon alapuolella olevilla sivunohjaimilla. Kun olet valmis, tallenna muutokset napsauttamalla yläosassa olevaa Tallenna-painiketta.", // "admin.search.breadcrumbs": "Administrative Search", "admin.search.breadcrumbs": "Ylläpitäjän haku", @@ -7607,8 +7606,7 @@ "person.page.orcid.scope.authenticate": "Hae ORCID-tunnisteesi", // "person.page.orcid.scope.read-limited": "Read your information with visibility set to Trusted Parties", - // TODO New key - Add a translation - "person.page.orcid.scope.read-limited": "Read your information with visibility set to Trusted Parties", + "person.page.orcid.scope.read-limited": "Lue omat tietosi Trusted Parties -näkyvyysasetuksilla", // "person.page.orcid.scope.activities-update": "Add/update your research activities", "person.page.orcid.scope.activities-update": "Lisää/päivitä tutkimustoimiasi", @@ -7706,4 +7704,4 @@ // "admin.system-wide-alert.title": "System-wide Alerts", "admin.system-wide-alert.title": "Järjestelmänlaajuiset hälytykset", -} \ No newline at end of file +} From d6d5a2891c492ab2a5f5389cdca126ae344f8f05 Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Fri, 1 Sep 2023 21:09:40 +0200 Subject: [PATCH 0076/1005] Fix routes not working with baseHref (cherry picked from commit 18febff7a6c8e92d3d30016e6a4d93f7fe521dd0) --- .../item-edit-bitstream/item-edit-bitstream.component.html | 2 +- .../item-edit-bitstream.component.spec.ts | 6 +++++- src/app/shared/cookies/klaro-configuration.ts | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.html b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.html index 0f0fad21993..a3e29ac10c2 100644 --- a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.html +++ b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.html @@ -25,7 +25,7 @@
- diff --git a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.spec.ts b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.spec.ts index aafa5a4fe45..f3c897aa738 100644 --- a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.spec.ts +++ b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream/item-edit-bitstream.component.spec.ts @@ -13,6 +13,7 @@ import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-dat import { getBitstreamDownloadRoute } from '../../../../app-routing-paths'; import { By } from '@angular/platform-browser'; import { BrowserOnlyMockPipe } from '../../../../shared/testing/browser-only-mock.pipe'; +import { RouterTestingModule } from '@angular/router/testing'; let comp: ItemEditBitstreamComponent; let fixture: ComponentFixture; @@ -72,7 +73,10 @@ describe('ItemEditBitstreamComponent', () => { ); TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot()], + imports: [ + RouterTestingModule.withRoutes([]), + TranslateModule.forRoot(), + ], declarations: [ ItemEditBitstreamComponent, VarDirective, diff --git a/src/app/shared/cookies/klaro-configuration.ts b/src/app/shared/cookies/klaro-configuration.ts index a41b641dec1..c818ddc19cb 100644 --- a/src/app/shared/cookies/klaro-configuration.ts +++ b/src/app/shared/cookies/klaro-configuration.ts @@ -22,7 +22,7 @@ export const GOOGLE_ANALYTICS_KLARO_KEY = 'google-analytics'; export const klaroConfiguration: any = { storageName: ANONYMOUS_STORAGE_NAME_KLARO, - privacyPolicy: '/info/privacy', + privacyPolicy: './info/privacy', /* Setting 'hideLearnMore' to 'true' will hide the "learn more / customize" link in From 1c38d9259ae614ea8ff27f7fae6ec9ffd8979a0c Mon Sep 17 00:00:00 2001 From: DSpace Bot <68393067+dspace-bot@users.noreply.github.com> Date: Tue, 26 Sep 2023 02:08:07 -0500 Subject: [PATCH 0077/1005] [Port dspace-7_x] Serbian (Latin) translation (#2520) * Serbian (latin) translation added. --------- Co-authored-by: imilos --- config/config.example.yml | 5 +- src/assets/i18n/sr-lat.json5 | 2616 ++++++++++++++++++++++++++++++ src/config/default-app-config.ts | 1 + 3 files changed, 2621 insertions(+), 1 deletion(-) create mode 100644 src/assets/i18n/sr-lat.json5 diff --git a/config/config.example.yml b/config/config.example.yml index d2efad4fe2e..42c61235b9b 100644 --- a/config/config.example.yml +++ b/config/config.example.yml @@ -208,6 +208,9 @@ languages: - code: pt-BR label: Português do Brasil active: true + - code: sr-lat + label: Srpski (lat) + active: true - code: fi label: Suomi active: true @@ -379,4 +382,4 @@ vocabularies: # Default collection/community sorting order at Advanced search, Create/update community and collection when there are not a query. comcolSelectionSort: sortField: 'dc.title' - sortDirection: 'ASC' \ No newline at end of file + sortDirection: 'ASC' diff --git a/src/assets/i18n/sr-lat.json5 b/src/assets/i18n/sr-lat.json5 new file mode 100644 index 00000000000..df8cfa18c9d --- /dev/null +++ b/src/assets/i18n/sr-lat.json5 @@ -0,0 +1,2616 @@ +{ + // Initial version provided by University of Kragujevac, Serbia 2023. + "401.help": "Niste ovlašćeni da pristupite ovoj stranici. Možete koristiti dugme ispod da se vratite na početnu stranicu.", + "401.link.home-page": "Odvedi me na početnu stranicu", + "401.unauthorized": "Neovlašćen pristup", + "403.help": "Nemate dozvolu da pristupite ovoj stranici. Možete koristiti dugme ispod da se vratite na početnu stranicu.", + "403.link.home-page": "Odvedi me na početnu stranicu", + "403.forbidden": "Zabranjen pristup", + "500.page-internal-server-error": "Usluga nije dostupna", + "500.help": "Server privremeno nije u mogućnosti da servisira vaš zahtev zbog zastoja u održavanju ili problema sa kapacitetom. Pokušajte ponovo kasnije.", + "500.link.home-page": "Odvedi me na početnu stranicu", + "404.help": "Ne možemo da pronađemo stranicu koju tražite. Stranica je možda premeštena ili izbrisana. Možete koristiti dugme ispod da se vratite na početnu stranicu.", + "404.link.home-page": "Odvedi me na početnu stranicu", + "404.page-not-found": "Stranica nije pronađena", + "error-page.description.401": "Neovlašćen pristup", + "error-page.description.403": "Zabranjen pristup", + "error-page.description.500": "Usluga nije dostupna", + "error-page.description.404": "Stranica nije pronađena", + "error-page.orcid.generic-error": "Došlo je do greške prilikom prijavljivanja preko ORCID-a. Uverite se da ste podelili imejl adresu svog ORCID naloga sa DSpace-om. Ako greška i dalje postoji, kontaktirajte administratora", + "access-status.embargo.listelement.badge": "Embargo", + "access-status.metadata.only.listelement.badge": "Samo metapodaci", + "access-status.open.access.listelement.badge": "Otvoren pristup", + "access-status.restricted.listelement.badge": "Ograničen pristup", + "access-status.unknown.listelement.badge": "Nepoznato", + "admin.curation-tasks.breadcrumbs": "Zadaci kuriranja sistema", + "admin.curation-tasks.title": "Zadaci kuriranja sistema", + "admin.curation-tasks.header": "Zadaci kuriranja sistema", + "admin.registries.bitstream-formats.breadcrumbs": "Formatirajte registar", + "admin.registries.bitstream-formats.create.breadcrumbs": "Format bitstream-a", + "admin.registries.bitstream-formats.create.failure.content": "Došlo je do greške pri kreiranju novog formata bitstream-a.", + "admin.registries.bitstream-formats.create.failure.head": "Neuspešno", + "admin.registries.bitstream-formats.create.head": "Kreirajte format bitstream-a", + "admin.registries.bitstream-formats.create.new": "Dodajte novi format bitstream-a", + "admin.registries.bitstream-formats.create.success.content": "Novi format bitstrim-a je uspešno kreiran.", + "admin.registries.bitstream-formats.create.success.head": "Uspešno", + "admin.registries.bitstream-formats.delete.failure.amount": "Uklanjanje {{ amount }} formata nije uspelo", + "admin.registries.bitstream-formats.delete.failure.head": "Neuspešno", + "admin.registries.bitstream-formats.delete.success.amount": "Uspešno uklonjen {{ amount }} format", + "admin.registries.bitstream-formats.delete.success.head": "Uspešno", + "admin.registries.bitstream-formats.description": "Ova lista formata bitstream-a pruža informacije o poznatim formatima i nivou njihove podrške.", + "admin.registries.bitstream-formats.edit.breadcrumbs": "Format bitstream-a", + "admin.registries.bitstream-formats.edit.description.hint": "", + "admin.registries.bitstream-formats.edit.description.label": "Opis", + "admin.registries.bitstream-formats.edit.extensions.hint": "Ekstenzije su ekstenzije fajlova koje se koriste za automatsku identifikaciju formata otpremljenih fajlova. Možete da unesete nekoliko ekstenzija za svaki format.", + "admin.registries.bitstream-formats.edit.extensions.label": "Ekstenzije fajlova", + "admin.registries.bitstream-formats.edit.extensions.placeholder": "Unesite ekstenziju fajla bez tačke", + "admin.registries.bitstream-formats.edit.failure.content": "Došlo je do greške pri uređivanju formata bitstream-a", + "admin.registries.bitstream-formats.edit.failure.head": "Neuspešno", + "admin.registries.bitstream-formats.edit.head": "Format bitstream-a: {{ format }}", + "admin.registries.bitstream-formats.edit.internal.hint": "Formati označeni kao interni su skriveni od korisnika i koriste se u administrativne svrhe.", + "admin.registries.bitstream-formats.edit.internal.label": "Unutrašnje", + "admin.registries.bitstream-formats.edit.mimetype.hint": "MIME tip povezan sa ovim formatom ne mora biti jedinstven.", + "admin.registries.bitstream-formats.edit.mimetype.label": "MIME tip", + "admin.registries.bitstream-formats.edit.shortDescription.hint": "Jedinstveno ime za ovaj format, (npr. Microsoft Word XP ili Microsoft Word 2000)", + "admin.registries.bitstream-formats.edit.shortDescription.label": "Ime", + "admin.registries.bitstream-formats.edit.success.content": "Format bitstream-a je uspešno izmenjen.", + "admin.registries.bitstream-formats.edit.success.head": "Uspešno", + "admin.registries.bitstream-formats.edit.supportLevel.hint": "Nivo podrške koju vaša institucija obećava za ovaj format.", + "admin.registries.bitstream-formats.edit.supportLevel.label": "Nivo podrške", + "admin.registries.bitstream-formats.head": "Registar formata bitstream-a", + "admin.registries.bitstream-formats.no-items": "Nema formata bitova za prikaz.", + "admin.registries.bitstream-formats.table.delete": "Izbriši izabrano", + "admin.registries.bitstream-formats.table.deselect-all": "Poništite sve", + "admin.registries.bitstream-formats.table.internal": "Unutrašnje", + "admin.registries.bitstream-formats.table.mimetype": "MIME tip", + "admin.registries.bitstream-formats.table.name": "Ime", + "admin.registries.bitstream-formats.table.id": "ID", + "admin.registries.bitstream-formats.table.return": "Nazad", + "admin.registries.bitstream-formats.table.supportLevel.KNOWN": "Poznato", + "admin.registries.bitstream-formats.table.supportLevel.SUPPORTED": "Podržano", + "admin.registries.bitstream-formats.table.supportLevel.UNKNOWN": "Nepoznato", + "admin.registries.bitstream-formats.table.supportLevel.head": "Nivo podrške", + "admin.registries.bitstream-formats.title": "Registar formata bitstream-a", + "admin.registries.metadata.breadcrumbs": "Registar metapodataka", + "admin.registries.metadata.description": "Registar metapodataka održava listu svih polja metapodataka dostupnih u spremištu. Ova polja mogu biti podeljena na više šema. Međutim, DSpace zahteva kvalifikovanu Dublin Core šemu", + "admin.registries.metadata.form.create": "Kreirajte šemu metapodataka", + "admin.registries.metadata.form.edit": "Uredite šemu metapodataka", + "admin.registries.metadata.form.name": "Ime", + "admin.registries.metadata.form.namespace": "Prostor imena", + "admin.registries.metadata.head": "Registar metapodataka", + "admin.registries.metadata.schemas.no-items": "Nema šema metapodataka za prikaz.", + "admin.registries.metadata.schemas.table.delete": "Izbriši izabrano", + "admin.registries.metadata.schemas.table.id": "ID", + "admin.registries.metadata.schemas.table.name": "Ime", + "admin.registries.metadata.schemas.table.namespace": "Prostor imena", + "admin.registries.metadata.title": "Registar metapodataka", + "admin.registries.schema.breadcrumbs": "Šema metapodataka", + "admin.registries.schema.description": "Ovo je šema metapodataka za \"{{namespace}}\".", + "admin.registries.schema.fields.head": "Polja metapodataka šeme", + "admin.registries.schema.fields.no-items": "Nema polja metapodataka za prikaz.", + "admin.registries.schema.fields.table.delete": "Izbriši izabrano", + "admin.registries.schema.fields.table.field": "Polje", + "admin.registries.schema.fields.table.id": "ID", + "admin.registries.schema.fields.table.scopenote": "Scope napomena", + "admin.registries.schema.form.create": "Kreirajte polje za metapodatke", + "admin.registries.schema.form.edit": "Izmenite polje za metapodatke", + "admin.registries.schema.form.element": "Element", + "admin.registries.schema.form.qualifier": "Kvalifikator", + "admin.registries.schema.form.scopenote": "Scope napomena", + "admin.registries.schema.head": "Šema metapodataka", + "admin.registries.schema.notification.created": "Uspešno kreirana šema metapodataka \"{{prefix}}\"", + "admin.registries.schema.notification.deleted.failure": "Neuspešno brisanje {{amount}} šema metapodataka", + "admin.registries.schema.notification.deleted.success": "Uspešno izbrisane {{amount}} šeme metapodataka", + "admin.registries.schema.notification.edited": "Uspešno izmenjena šema metapodataka \"{{prefix}}\"", + "admin.registries.schema.notification.failure": "Greška", + "admin.registries.schema.notification.field.created": "Uspešno kreirano polje metapodataka \"{{field}}\"", + "admin.registries.schema.notification.field.deleted.failure": "Neuspešno brisanje {{amount}} polja metapodataka ", + "admin.registries.schema.notification.field.deleted.success": "Uspešno izbrisana {{amount}} polja metapodataka", + "admin.registries.schema.notification.field.edited": "Uspešno izmenjeno polje metapodataka \"{{field}}\"", + "admin.registries.schema.notification.success": "Uspešno", + "admin.registries.schema.return": "Nazad", + "admin.registries.schema.title": "Registar šeme metapodataka", + "admin.access-control.bulk-access.breadcrumbs": "Upravljanje masovnim pristupom", + "administrativeBulkAccess.search.results.head": "Rezultati pretrage", + "admin.access-control.bulk-access": "Upravljanje masovnim pristupom", + "admin.access-control.bulk-access.title": "Upravljanje masovnim pristupom", + "admin.access-control.bulk-access-browse.header": "Korak 1: Izaberite objekte", + "admin.access-control.bulk-access-browse.search.header": "Pretraga", + "admin.access-control.bulk-access-browse.selected.header": "Trenutni izbor ({{number}})", + "admin.access-control.bulk-access-settings.header": "Korak 2: Operacija koju treba izvršiti", + "admin.access-control.epeople.actions.delete": "Izbrišite EPerson", + "admin.access-control.epeople.actions.impersonate": "Oponašati EPerson", + "admin.access-control.epeople.actions.reset": "Resetujte šifru", + "admin.access-control.epeople.actions.stop-impersonating": "Zaustavi predstavljanje kao EPerson", + "admin.access-control.epeople.breadcrumbs": "EPeople", + "admin.access-control.epeople.title": "EPeople", + "admin.access-control.epeople.head": "EPeople", + "admin.access-control.epeople.search.head": "Pretraga", + "admin.access-control.epeople.button.see-all": "Pregledajte sve", + "admin.access-control.epeople.search.scope.metadata": "Metapodaci", + "admin.access-control.epeople.search.scope.email": "E-mail (tačno)", + "admin.access-control.epeople.search.button": "Pretraga", + "admin.access-control.epeople.search.placeholder": "Pretražite ljude...", + "admin.access-control.epeople.button.add": "Dodajte EPerson", + "admin.access-control.epeople.table.id": "ID", + "admin.access-control.epeople.table.name": "Ime", + "admin.access-control.epeople.table.email": "E-mail (tačno)", + "admin.access-control.epeople.table.edit": "Izmena", + "admin.access-control.epeople.table.edit.buttons.edit": "Izmenite \"{{name}}\"", + "admin.access-control.epeople.table.edit.buttons.edit-disabled": "Niste ovlašćeni za uređivanje ove grupe", + "admin.access-control.epeople.table.edit.buttons.remove": "Izbrišite \"{{name}}\"", + "admin.access-control.epeople.no-items": "Nema EPeople za prikaz.", + "admin.access-control.epeople.form.create": "Kreirajte EPerson", + "admin.access-control.epeople.form.edit": "Izmenite EPerson", + "admin.access-control.epeople.form.firstName": "Ime", + "admin.access-control.epeople.form.lastName": "Prezime", + "admin.access-control.epeople.form.email": "E-mail", + "admin.access-control.epeople.form.emailHint": "Mora biti važeća e-mail adresa", + "admin.access-control.epeople.form.canLogIn": "Može se prijaviti", + "admin.access-control.epeople.form.requireCertificate": "Potreban je sertifikat", + "admin.access-control.epeople.form.return": "Nazad", + "admin.access-control.epeople.form.notification.created.success": "Uspešno kreiran EPerson \"{{name}}\"", + "admin.access-control.epeople.form.notification.created.failure": "Neuspešno kreiranje EPerson \"{{name}}\"", + "admin.access-control.epeople.form.notification.created.failure.emailInUse": "Neuspešno kreiranje EPerson \"{{name}}\", email \"{{email}}\" se već koristi.", + "admin.access-control.epeople.form.notification.edited.failure.emailInUse": "Neuspešna izmena EPerson \"{{name}}\", email \"{{email}}\" se već koristi.", + "admin.access-control.epeople.form.notification.edited.success": "Uspešno izmenjen EPerson \"{{name}}\"", + "admin.access-control.epeople.form.notification.edited.failure": "Neuspešna izmena EPerson \"{{name}}\" ", + "admin.access-control.epeople.form.notification.deleted.success": "Uspešno izbrisan EPerson \"{{name}}\"", + "admin.access-control.epeople.form.notification.deleted.failure": "Neuspešno brisanje EPerson \"{{name}}\" ", + "admin.access-control.epeople.form.groupsEPersonIsMemberOf": "Član ovih grupa:", + "admin.access-control.epeople.form.table.id": "ID", + "admin.access-control.epeople.form.table.name": "Ime", + "admin.access-control.epeople.form.table.collectionOrCommunity": "Kolekcija/Zajednica", + "admin.access-control.epeople.form.memberOfNoGroups": "Ovaj EPerson nije član nijedne grupe", + "admin.access-control.epeople.form.goToGroups": "Dodajte grupama", + "admin.access-control.epeople.notification.deleted.failure": "Neuspešno brisanje EPerson: \"{{name}}\"", + "admin.access-control.epeople.notification.deleted.success": "Uspešno izbrisan EPerson: \"{{name}}\"", + "admin.access-control.groups.title": "Grupe", + "admin.access-control.groups.breadcrumbs": "Grupe", + "admin.access-control.groups.singleGroup.breadcrumbs": "Izmenite grupu", + "admin.access-control.groups.title.singleGroup": "Izmenite grupu", + "admin.access-control.groups.title.addGroup": "Nova grupa", + "admin.access-control.groups.addGroup.breadcrumbs": "Nova grupa", + "admin.access-control.groups.head": "Grupe", + "admin.access-control.groups.button.add": "Dodajte grupu", + "admin.access-control.groups.search.head": "Pretraga grupa", + "admin.access-control.groups.button.see-all": "Pregledajte sve", + "admin.access-control.groups.search.button": "Pretraga", + "admin.access-control.groups.search.placeholder": "Pretražite grupe...", + "admin.access-control.groups.table.id": "ID", + "admin.access-control.groups.table.name": "Ime", + "admin.access-control.groups.table.collectionOrCommunity": "Kolekcija/Zajednica", + "admin.access-control.groups.table.members": "Članovi", + "admin.access-control.groups.table.edit": "Izmeniti", + "admin.access-control.groups.table.edit.buttons.edit": "Izmenite \"{{name}}\"", + "admin.access-control.groups.table.edit.buttons.remove": "Izbrišite \"{{name}}\"", + "admin.access-control.groups.no-items": "Nije pronađena nijedna grupa sa ovim u svom imenu ili ovim kao UUID", + "admin.access-control.groups.notification.deleted.success": "Uspešno izbrisana grupa \"{{name}}\"", + "admin.access-control.groups.notification.deleted.failure.title": "Neuspešno brisanje grupe \"{{name}}\"", + "admin.access-control.groups.notification.deleted.failure.content": "Uzrok: \"{{cause}}\"", + "admin.access-control.groups.form.alert.permanent": "Ova grupa je trajna, tako da se ne može menjati ili brisati. I dalje možete da dodajete i uklanjate članove grupe koristeći ovu stranicu.", + "admin.access-control.groups.form.alert.workflowGroup": "Ova grupa se ne može izmeniti ili izbrisati jer odgovara ulozi u procesu slanja i toka posla u \"{{name}}\" {{comcol}}. Možete je izbrisati sa kartice \"dodeli uloge\" na stranici za uređivanje {{comcol}}. I dalje možete da dodajete i uklanjate članove grupe koristeći ovu stranicu.", + "admin.access-control.groups.form.head.create": "Kreiraj grupu", + "admin.access-control.groups.form.head.edit": "Izmeni grupu", + "admin.access-control.groups.form.groupName": "Naziv grupe", + "admin.access-control.groups.form.groupCommunity": "Zajednica ili kolekcija", + "admin.access-control.groups.form.groupDescription": "Opis", + "admin.access-control.groups.form.notification.created.success": "Uspešno kreirana Grupa \"{{name}}\"", + "admin.access-control.groups.form.notification.created.failure": "Neuspešno kreiranje Grupe \"{{name}}\"", + "admin.access-control.groups.form.notification.created.failure.groupNameInUse": "Neuspešno kreiranje Grupe sa imenom: \"{{name}}\", proverite da ime nije već upotrebljeno.", + "admin.access-control.groups.form.notification.edited.failure": "Neuspešna izmena Grupe \"{{name}}\"", + "admin.access-control.groups.form.notification.edited.failure.groupNameInUse": "Naziv \"{{name}}\" se već koristi!", + "admin.access-control.groups.form.notification.edited.success": "Grupa \"{{name}}\" je uspešno izmenjena", + "admin.access-control.groups.form.actions.delete": "Izbrišite grupu", + "admin.access-control.groups.form.delete-group.modal.header": "Izbrišite grupu \"{{ dsoName }}\"", + "admin.access-control.groups.form.delete-group.modal.info": "Da li ste sigurni da želite da izbrišete grupu \"{{ dsoName }}\"", + "admin.access-control.groups.form.delete-group.modal.cancel": "Poništiti, otkazati", + "admin.access-control.groups.form.delete-group.modal.confirm": "Izbrišite", + "admin.access-control.groups.form.notification.deleted.success": "Grupa \"{{ name }}\" je uspešno obrisana", + "admin.access-control.groups.form.notification.deleted.failure.title": "Brisanje grupe \"{{ name }}\" nije uspelo", + "admin.access-control.groups.form.notification.deleted.failure.content": "Uzrok: \"{{ uzrok }}\"", + "admin.access-control.groups.form.members-list.head": "EPeople", + "admin.access-control.groups.form.members-list.search.head": "Dodajte EPeople", + "admin.access-control.groups.form.members-list.button.see-all": "Pregledajte sve", + "admin.access-control.groups.form.members-list.headMembers": "Trenutni članovi", + "admin.access-control.groups.form.members-list.search.scope.metadata": "Metapodatak", + "admin.access-control.groups.form.members-list.search.scope.email": "E-mail (tačno)", + "admin.access-control.groups.form.members-list.search.button": "Pretraga", + "admin.access-control.groups.form.members-list.table.id": "ID", + "admin.access-control.groups.form.members-list.table.name": "Ime", + "admin.access-control.groups.form.members-list.table.identity": "Identitet", + "admin.access-control.groups.form.members-list.table.email": "Email", + "admin.access-control.groups.form.members-list.table.netid": "NetID", + "admin.access-control.groups.form.members-list.table.edit": "Ukloni / Dodaj", + "admin.access-control.groups.form.members-list.table.edit.buttons.remove": "Uklonite člana sa imenom \"{{name}}\"", + "admin.access-control.groups.form.members-list.notification.success.addMember": "Član je uspešno dodat: \"{{name}}\"", + "admin.access-control.groups.form.members-list.notification.failure.addMember": "Dodavanje člana nije uspelo: \"{{name}}\"", + "admin.access-control.groups.form.members-list.notification.success.deleteMember": "Uspešno obrisan član: \"{{name}}\"", + "admin.access-control.groups.form.members-list.notification.failure.deleteMember": "Brisanje člana nije uspelo: \"{{name}}\"", + "admin.access-control.groups.form.members-list.table.edit.buttons.add": "Dodaj člana sa imenom \"{{name}}\"", + "admin.access-control.groups.form.members-list.notification.failure.noActiveGroup": "Nema trenutno aktivne grupe, prvo pošaljite ime.", + "admin.access-control.groups.form.members-list.no-members-yet": "Još nema članova u grupi, pretražite i dodajte.", + "admin.access-control.groups.form.members-list.no-items": "Nijedan EPeople nije pronađen u toj pretrazi", + "admin.access-control.groups.form.subgroups-list.notification.failure": "Nešto nije u redu: \"{{cause}}\"", + "admin.access-control.groups.form.subgroups-list.head": "Grupe", + "admin.access-control.groups.form.subgroups-list.search.head": "Dodajte podgrupu", + "admin.access-control.groups.form.subgroups-list.button.see-all": "Pregledajte sve", + "admin.access-control.groups.form.subgroups-list.headSubgroups": "Trenutne podgrupe", + "admin.access-control.groups.form.subgroups-list.search.button": "Pretraga", + "admin.access-control.groups.form.subgroups-list.table.id": "ID", + "admin.access-control.groups.form.subgroups-list.table.name": "Ime", + "admin.access-control.groups.form.subgroups-list.table.collectionOrCommunity": "Kolekcija/Zajednica", + "admin.access-control.groups.form.subgroups-list.table.edit": "Ukloni / Dodaj", + "admin.access-control.groups.form.subgroups-list.table.edit.buttons.remove": "Uklonite podgrupu sa imenom \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.table.edit.buttons.add": "Dodajte podgrupu sa imenom \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.table.edit.currentGroup": "Trenutna grupa", + "admin.access-control.groups.form.subgroups-list.notification.success.addSubgroup": "Podgrupa je uspešno dodata: \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.notification.failure.addSubgroup": "Dodavanje podgrupe nije uspelo: \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.notification.success.deleteSubgroup": "Uspešno obrisana podgrupa: \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.notification.failure.deleteSubgroup": "Brisanje podgrupe nije uspelo: \"{{name}}\"", + "admin.access-control.groups.form.subgroups-list.notification.failure.noActiveGroup": "Nema trenutno aktivne grupe, prvo pošaljite ime.", + "admin.access-control.groups.form.subgroups-list.notification.failure.subgroupToAddIsActiveGroup": "Ovo je trenutna grupa, ne može se dodati.", + "admin.access-control.groups.form.subgroups-list.no-items": "Nije pronađena nijedna grupa sa ovim u svom imenu ili ovim kao UUID", + "admin.access-control.groups.form.subgroups-list.no-subgroups-yet": "Još nema podgrupa u grupi.", + "admin.access-control.groups.form.return": "Nazad", + "admin.access-control.groups.form.tooltip.editGroupPage": "Na ovoj stranici možete da menjate svojstva i članove grupe. U gornjem odeljku možete da izmenite ime i opis grupe, osim ako je ovo administratorska grupa za kolekciju ili zajednicu, u kom slučaju se ime i opis grupe automatski generišu i ne mogu se menjati. U sledećim odeljcima možete da menjate članstvo u grupi. Pogledajte [viki](https://viki.lirasis.org/displai/DSDOC7k/Create+or+manage+a+user+group) za više detalja.", + "admin.access-control.groups.form.tooltip.editGroup.addEpeople": "Da biste dodali ili uklonili Eperson u/iz ove grupe, ili kliknite na dugme 'Pregledaj sve' ili koristite traku za pretragu ispod da biste pretražili korisnike (koristite padajući meni sa leve strane trake za pretragu da biste izabrali da li ćete pretraživati prema metapodacima ili prema e-mailu). Zatim kliknite na ikonu plus za svakog korisnika kojeg želite da dodate na listu ispod ili na ikonu korpe za smeće za svakog korisnika kojeg želite da uklonite. Lista u nastavku može imati nekoliko stranica: koristite kontrole stranice ispod liste da biste prešli na sledeće stranice. Kada budete spremni, sačuvajte promene klikom na dugme \"Sačuvaj\" u gornjem delu.", + "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "Da biste dodali ili uklonili podgrupu u/iz ove grupe, kliknite na dugme 'Pregledaj sve' ili koristite traku za pretragu ispod da biste pretražili korisnike. Zatim kliknite na ikonu plus za svakog korisnika kojeg želite da dodate na listu ispod ili na ikonu korpe za smeće za svakog korisnika kojeg želite da uklonite. Lista u nastavku može imati nekoliko stranica: koristite kontrole stranice ispod liste da biste prešli na sledeće stranice. Kada budete spremni, sačuvajte promene klikom na dugme \"Sačuvaj\" u gornjem delu.", + "admin.search.breadcrumbs": "Administrativna pretraga", + "admin.search.collection.edit": "Uredite", + "admin.search.community.edit": "Uredite", + "admin.search.item.delete": "Izbrišite", + "admin.search.item.edit": "Uredite", + "admin.search.item.make-private": "Učinite nevidljivim", + "admin.search.item.make-public": "Učinite vidljivim", + "admin.search.item.move": "Pomerite", + "admin.search.item.reinstate": "Reinstate", + "admin.search.item.withdraw": "Odustati", + "admin.search.title": "Administrativna pretraga", + "administrativeView.search.results.head": "Administrativna pretraga", + "admin.workflow.breadcrumbs": "Administriranje radnog procesa", + "admin.workflow.title": "Administriranje radnog procesa", + "admin.workflow.item.workflow": "Proces rada", + "admin.workflow.item.workspace": "Radni prostor", + "admin.workflow.item.delete": "Izbrišite", + "admin.workflow.item.send-back": "Vratite", + "admin.workflow.item.policies": "Politike", + "admin.workflow.item.supervision": "Nadzor", + "admin.metadata-import.breadcrumbs": "Uvezi metapodatke", + "admin.batch-import.breadcrumbs": "Uvezi Batch", + "admin.metadata-import.title": "Uvezi metapodatke", + "admin.batch-import.title": "Uvezi Batch", + "admin.metadata-import.page.header": "Uvezite metapodatke", + "admin.batch-import.page.header": "Uvezi Batch", + "admin.metadata-import.page.help": "Ovde možete da prevučete ili pregledate CSV fajlove koji sadrže batch operacije metapodataka za fajlove", + "admin.batch-import.page.help": "Izaberite kolekciju u koju želite da uvezete. Zatim prevucite ili potražite zip fajl jednostavnog arhivskog formata (SAF) koja uključuje stavke za uvoz", + "admin.batch-import.page.toggle.help": "Moguće je izvršiti uvoz bilo sa otpremanjem fajla ili preko URL-a, koristite gornji prekidač da biste podesili izvor unosa", + "admin.metadata-import.page.dropMsg": "Prevucite CSV sa metapodacima za uvoz", + "admin.batch-import.page.dropMsg": "Prevucite batch ZIP za uvoz", + "admin.metadata-import.page.dropMsgReplace": "Prevucite da zamenite CSV sa metapodacima za uvoz", + "admin.batch-import.page.dropMsgReplace": "Prevucite da zamenite batch ZIP za uvoz", + "admin.metadata-import.page.button.return": "Nazad", + "admin.metadata-import.page.button.proceed": "Nastavite", + "admin.metadata-import.page.button.select-collection": "Izaberite kolekciju", + "admin.metadata-import.page.error.addFile": "Prvo izaberite fajl!", + "admin.metadata-import.page.error.addFileUrl": "Prvo unesite url fajl!", + "admin.batch-import.page.error.addFile": "Prvo izaberite Zip fajl!", + "admin.metadata-import.page.toggle.upload": "Otpremite", + "admin.metadata-import.page.toggle.url": "URL", + "admin.metadata-import.page.urlMsg": "Umetnite batch ZIP URL za uvoz", + "admin.metadata-import.page.validateOnly": "Samo validiraj", + "admin.metadata-import.page.validateOnly.hint": "Kada se izabere, otpremljeni CSV će biti potvrđen. Dobićete izveštaj o utvrđenim promenama, ali promene neće biti sačuvane.", + "advanced-workflow-action.rating.form.rating.label": "Ocena", + "advanced-workflow-action.rating.form.rating.error": "Morate oceniti stavku", + "advanced-workflow-action.rating.form.review.label": "Pregled", + "advanced-workflow-action.rating.form.review.error": "Morate uneti recenziju da biste poslali ovu ocenu", + "advanced-workflow-action.rating.description": "Molimo izaberite ocenu ispod", + "advanced-workflow-action.rating.description-requiredDescription": "Molimo izaberite ocenu ispod i dodajte recenziju", + "advanced-workflow-action.select-reviewer.description-single": "Molimo izaberite jednog recenzenta ispod pre slanja", + "advanced-workflow-action.select-reviewer.description-multiple": "Molimo izaberite jednog ili više recenzenata ispod pre slanja", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.head": "EPeople", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.head": "Dodajte EPeople", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.button.see-all": "Pregledajte sve", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.headMembers": "Trenutni članovi", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.metadata": "Metapodaci", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.email": "E-mail (tačno)", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.button": "Pretraga", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.id": "ID", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.name": "Ime", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.identity": "Identitet", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.email": "Email", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.netid": "NetID", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit": "Uklonite / Dodajte", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.remove": "Uklonite člana sa imenom \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.addMember": "Uspešno dodat član: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.addMember": "Neuspešno dodavanje člana: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.deleteMember": "Uspešno izbrisan član: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.deleteMember": "Neuspešno brisanje člana: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.add": "Dodajte člana sa imenom \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.noActiveGroup": "Trenutno nema aktivne grupe, prvo unesite ime.", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-members-yet": "Još nema članova u grupi, pretražite i dodajte.", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-items": "Nijedan EPeople nije pronađen u toj pretrazi", + "advanced-workflow-action.select-reviewer.no-reviewer-selected.error": "Nije izabran recenzent.", + "admin.batch-import.page.validateOnly.hint": "Kada se izabere, otpremljeni ZIP će biti potvrđen. Dobićete izveštaj o utvrđenim promenama, ali promene neće biti sačuvane.", + "admin.batch-import.page.remove": "ukloniti", + "auth.errors.invalid-user": "Pogrešna e-mail adresa ili lozinka.", + "auth.messages.expired": "Vaša sesija je istekla. Molimo prijavite se ponovo.", + "auth.messages.token-refresh-failed": "Osvežavanje tokena sesije nije uspelo. Molimo prijavite se ponovo.", + "bitstream.download.page": "Trenutno se preuzima {{bitstream}}...", + "bitstream.download.page.back": "Nazad", + "bitstream.edit.authorizations.link": "Izmenite polise bitstream-a", + "bitstream.edit.authorizations.title": "Izmenite polise bitstream-a", + "bitstream.edit.return": "Nazad", + "bitstream.edit.bitstream": "Bitstream:", + "bitstream.edit.form.description.hint": "Opciono, navedite kratak opis fajla, na primer \"Glavni članak\" ili \"Očitavanja podataka eksperimenta\".", + "bitstream.edit.form.description.label": "Opis", + "bitstream.edit.form.embargo.hint": "Prvi dan od kojeg je pristup dozvoljen. Ovaj datum se ne može izmeniti u ovom obrascu. Da biste postavili datum zabrane za bitstream, idite na karticu Status stavke, kliknite na Ovlašćenja..., kreirajte ili izmenite politiku bitstream-ovaPROČITAJTE i postavite Datum početka po želji.", + "bitstream.edit.form.embargo.label": "Zabrana do određenog datuma", + "bitstream.edit.form.fileName.hint": "Promenite ime fajla za bitstream. Imajte na umu da će se ovim promeniti prikazani bitstream URL, ali će se stari linkovi i dalje razrešiti sve dok se ID sekvence ne promeni.", + "bitstream.edit.form.fileName.label": "Ime fajla", + "bitstream.edit.form.newFormat.label": "Opišite novi format", + "bitstream.edit.form.newFormat.hint": "Aplikacija koju ste koristili za kreiranje fajla, i broj verzije (na primer, \"ACMESoft SuperApp verzija 1.5\").", + "bitstream.edit.form.primaryBitstream.label": "Primarni bitstream", + "bitstream.edit.form.selectedFormat.hint": "Ako format nije na gornjoj listi, izaberite \"format nije na listi\" iznad i opišite ga pod \"Opišite novi format\".", + "bitstream.edit.form.selectedFormat.label": "Izabrani format", + "bitstream.edit.form.selectedFormat.unknown": "Format nije na listi", + "bitstream.edit.notifications.error.format.title": "Došlo je do greške prilikom čuvanja bitstream formata", + "bitstream.edit.notifications.error.primaryBitstream.title": "Došlo je do greške prilikom čuvanja primarnog bitstream-a", + "bitstream.edit.form.iiifLabel.label": "IIIF oznaka", + "bitstream.edit.form.iiifLabel.hint": "Oznaka canvas-a za ovu sliku. Ako nije data, koristiće se podrazumevana oznaka.", + "bitstream.edit.form.iiifToc.label": "IIIF Pregled sadržaja", + "bitstream.edit.form.iiifToc.hint": "Dodavanje teksta ovde, čini ovo mesto početkom novog opsega sadržaja.", + "bitstream.edit.form.iiifWidth.label": "IIIF širina platna", + "bitstream.edit.form.iiifWidth.hint": "Širina canvas-a obično treba da odgovara širini slike.", + "bitstream.edit.form.iiifHeight.label": "IIIF visina platna", + "bitstream.edit.form.iiifHeight.hint": "Visina canvas-a obično treba da odgovara visini slike.", + "bitstream.edit.notifications.saved.content": "Vaše promene u ovom bitstream-u su sačuvane.", + "bitstream.edit.notifications.saved.title": "Bitstream je sačuvan", + "bitstream.edit.title": "Izmenite bitstream", + "bitstream-request-a-copy.alert.canDownload1": "Već imate pristup ovom fajlu. Ako želite da preuzmete fajl, kliknite", + "bitstream-request-a-copy.alert.canDownload2": "ovde", + "bitstream-request-a-copy.header": "Zatražite kopiju fajla", + "bitstream-request-a-copy.intro": "Unesite sledeće informacije da biste zatražili kopiju sledeće stavke:", + "bitstream-request-a-copy.intro.bitstream.one": "Zahteva se sledeći fajl:", + "bitstream-request-a-copy.intro.bitstream.all": "Zahtevaju se svi fajlovi.", + "bitstream-request-a-copy.name.label": "ime *", + "bitstream-request-a-copy.name.error": "Ime je obavezno", + "bitstream-request-a-copy.email.label": "Vaša email adresa *", + "bitstream-request-a-copy.email.hint": "Ova e-mail adresa se koristi za slanje fajla.", + "bitstream-request-a-copy.email.error": "Molim Vas unesite ispravnu e-mail adresu.", + "bitstream-request-a-copy.allfiles.label": "Fajlovi", + "bitstream-request-a-copy.files-all-false.label": "Samo traženi fajl", + "bitstream-request-a-copy.files-all-true.label": "Sve fajlovi (ove stavke) u ograničenom pristupu", + "bitstream-request-a-copy.message.label": "Poruka", + "bitstream-request-a-copy.return": "Nazad", + "bitstream-request-a-copy.submit": "Zahtevaj kopiju", + "bitstream-request-a-copy.submit.success": "Zahtev za stavku je uspešno dostavljen.", + "bitstream-request-a-copy.submit.error": "Nešto nije u redu sa slanjem zahteva za stavku.", + "browse.back.all-results": "Svi rezultati pregleda", + "browse.comcol.by.author": "Po autoru", + "browse.comcol.by.dateissued": "Po datumu izdanja", + "browse.comcol.by.subject": "Po predmetu", + "browse.comcol.by.srsc": "Po kategoriji predmeta", + "browse.comcol.by.title": "Po naslovu", + "browse.comcol.head": "Pregledajte", + "browse.empty": "Nema stavki za prikaz.", + "browse.metadata.author": "Autoru", + "browse.metadata.dateissued": "Datumu izdanja", + "browse.metadata.subject": "Predmetu", + "browse.metadata.title": "Naslovu", + "browse.metadata.author.breadcrumbs": "Pregled po autoru", + "browse.metadata.dateissued.breadcrumbs": "Pregled po datumu", + "browse.metadata.subject.breadcrumbs": "Pregled po predmetu", + "browse.metadata.srsc.breadcrumbs": "Pregled po kategoriji predmeta", + "browse.metadata.title.breadcrumbs": "Pregled po naslovu", + "pagination.next.button": "Sledeće", + "pagination.previous.button": "Prethodno", + "pagination.next.button.disabled.tooltip": "Nema više stranica sa rezultatima", + "browse.startsWith": ", počevši od {{ startsWith }}", + "browse.startsWith.choose_start": "(Izaberite početak)", + "browse.startsWith.choose_year": "(Izaberite godinu)", + "browse.startsWith.choose_year.label": "Izaberite godinu izdanja", + "browse.startsWith.jump": "Filtrirajte rezultate po godini ili mesecu", + "browse.startsWith.months.april": "April", + "browse.startsWith.months.august": "Avgust", + "browse.startsWith.months.december": "Decembar", + "browse.startsWith.months.february": "Februar", + "browse.startsWith.months.january": "Januar", + "browse.startsWith.months.july": "Jul", + "browse.startsWith.months.june": "Jun", + "browse.startsWith.months.march": "Mart", + "browse.startsWith.months.may": "Maj ", + "browse.startsWith.months.none": "(Izaberite mesec)", + "browse.startsWith.months.none.label": "Izaberite mesec izdanja", + "browse.startsWith.months.november": "Novembar", + "browse.startsWith.months.october": "Oktobar", + "browse.startsWith.months.september": "Septembar", + "browse.startsWith.submit": "Pregledaj", + "browse.startsWith.type_date": "Filtrirajte rezultate po datumu", + "browse.startsWith.type_date.label": "Ili unesite datum (godina-mesec) i kliknite na dugme Pregledaj", + "browse.startsWith.type_text": "Filtrirajte rezultate upisivanjem prvih nekoliko slova", + "browse.startsWith.input": "Filter", + "browse.taxonomy.button": "Pregledaj", + "browse.title": "Pregledanje {{ collection }} prema {{ field }}{{ startsWith }} {{ value }}", + "browse.title.page": "Pregledanje {{ collection }} prema {{ field }} {{ value }}", + "search.browse.item-back": "Nazad na rezultate", + "chips.remove": "Uklonite čip", + "claimed-approved-search-result-list-element.title": "Odobreno", + "claimed-declined-search-result-list-element.title": "Odbijeno, vraćeno podnosiocu", + "claimed-declined-task-search-result-list-element.title": "Odbijeno, vraćeno menadžeru za pregled", + "collection.create.head": "Napravite kolekciju", + "collection.create.notifications.success": "Kolekcija je uspešno napravljena", + "collection.create.sub-head": "Napravite kolekciju za zajednicu {{ parent }}", + "collection.curate.header": "Sačuvaj kolekciju: {{collection}}", + "collection.delete.cancel": "Poništiti, otkazati", + "collection.delete.confirm": "Potvrdi", + "collection.delete.processing": "Brisanje", + "collection.delete.head": "Izbrišite kolekciju", + "collection.delete.notification.fail": "Kolekcija se ne može izbrisati", + "collection.delete.notification.success": "Kolekcija je uspešno izbrisana", + "collection.delete.text": "Da li ste sigurni da želite da izbrišete kolekciju \"{{ dso }}\"", + "collection.edit.delete": "Izbrišite ovu kolekciju", + "collection.edit.head": "Uredite kolekciju", + "collection.edit.breadcrumbs": "Uredite kolekciju", + "collection.edit.tabs.mapper.head": "Mapiranje stavki", + "collection.edit.tabs.item-mapper.title": "Uređivanje kolekcije - mapiranje stavki", + "collection.edit.item-mapper.cancel": "Poništiti, otkazati", + "collection.edit.item-mapper.collection": "Kolekcija: \"{{name}}\"", + "collection.edit.item-mapper.confirm": "Mapirajte izabrane stavke", + "collection.edit.item-mapper.description": "Ovo je alatka za mapiranje stavki koja omogućava administratorima kolekcije da mapiraju stavke iz drugih kolekcija u ovu kolekciju. Možete tražiti stavke iz drugih kolekcija i mapirati ih ili pregledati listu trenutno mapiranih stavki.", + "collection.edit.item-mapper.head": "Mapiranje stavki - mapa stavki iz drugih kolekcija", + "collection.edit.item-mapper.no-search": "Unesite upit za pretragu", + "collection.edit.item-mapper.notifications.map.error.content": "Došlo je do grešaka za mapiranje {{amount}} stavki.", + "collection.edit.item-mapper.notifications.map.error.head": "Greške u mapiranju", + "collection.edit.item-mapper.notifications.map.success.content": "Uspešno mapirane {{amount}} stavke.", + "collection.edit.item-mapper.notifications.map.success.head": "Mapiranje je završeno", + "collection.edit.item-mapper.notifications.unmap.error.content": "Došlo je do grešaka pri uklanjanju mapiranja stavki {{amount}}.", + "collection.edit.item-mapper.notifications.unmap.error.head": "Uklonite greške mapiranja", + "collection.edit.item-mapper.notifications.unmap.success.content": "Uspešno su uklonjena mapiranja {{amount}} stavki.", + "collection.edit.item-mapper.notifications.unmap.success.head": "Uklanjanje mapiranja je završeno", + "collection.edit.item-mapper.remove": "Uklanjanje mapiranja izabranih stavki", + "collection.edit.item-mapper.search-form.placeholder": "Pretraži stavke...", + "collection.edit.item-mapper.tabs.browse": "Pregledajte mapirane stavke", + "collection.edit.item-mapper.tabs.map": "Mapirajte nove stavke", + "collection.edit.logo.delete.title": "Izbrišite logo", + "collection.edit.logo.delete-undo.title": "Opozovi brisanje", + "collection.edit.logo.label": "Logo kolekcije", + "collection.edit.logo.notifications.add.error": "Otpremanje loga kolekcije nije uspelo. Proverite sadržaj pre ponovnog pokušaja.", + "collection.edit.logo.notifications.add.success": "Otpremanje loga kolekcije je uspešno.", + "collection.edit.logo.notifications.delete.success.title": "Logo je izbrisan", + "collection.edit.logo.notifications.delete.success.content": "Uspešno je obrisan logo kolekcije", + "collection.edit.logo.notifications.delete.error.title": "Greška pri brisanju loga", + "collection.edit.logo.upload": "Prevucite logotip kolekcije za otpremanje", + "collection.edit.notifications.success": "Uspešno uređena kolekcija", + "collection.edit.return": "Nazad", + "collection.edit.tabs.access-control.head": "Kontrola pristupa", + "collection.edit.tabs.access-control.title": "Uređivanje kolekcije - Kontrola pristupa", + "collection.edit.tabs.curate.head": "Curate", + "collection.edit.tabs.curate.title": "Uređivanje kolekcije - Curate", + "collection.edit.tabs.authorizations.head": "Ovlašćenja", + "collection.edit.tabs.authorizations.title": "Uređivanje kolekcije - ovlašćenja", + "collection.edit.item.authorizations.load-bundle-button": "Učitajte još paketa", + "collection.edit.item.authorizations.load-more-button": "Učitaj više", + "collection.edit.item.authorizations.show-bitstreams-button": "Prikaži bitstream smernice za paket", + "collection.edit.tabs.metadata.head": "Uredi metapodatke", + "collection.edit.tabs.metadata.title": "Uređivanje kolekcije - Metapodaci", + "collection.edit.tabs.roles.head": "Dodeli uloge", + "collection.edit.tabs.roles.title": "Uređivanje kolekcije - Uloge", + "collection.edit.tabs.source.external": "Ova kolekcija prikuplja svoj sadržaj iz spoljašnjeg izvora", + "collection.edit.tabs.source.form.errors.oaiSource.required": "Morate da obezbedite set ID ciljne kolekcije.", + "collection.edit.tabs.source.form.harvestType": "Sadržaj se prikuplja", + "collection.edit.tabs.source.form.head": "Konfigurišite spoljni izvor", + "collection.edit.tabs.source.form.metadataConfigId": "Format metapodataka", + "collection.edit.tabs.source.form.oaiSetId": "ID specifičnog skupa za OAI", + "collection.edit.tabs.source.form.oaiSource": "OAI provajder", + "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Sakupite metapodatke i bitstream-ove (zahteva ORE podršku)", + "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Sakupite metapodatke i reference na bitstream-ove (zahteva ORE podršku)", + "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Samo prikupljeni metapodaci", + "collection.edit.tabs.source.head": "Izvor sadržaja", + "collection.edit.tabs.source.notifications.discarded.content": "Vaše promene su odbačene. Da biste ponovo postavili svoje promene, kliknite na dugme \"Opozovi\".", + "collection.edit.tabs.source.notifications.discarded.title": "Promene su odbačene", + "collection.edit.tabs.source.notifications.invalid.content": "Vaše promene nisu sačuvane. Proverite da li su sva polja ispravna pre nego što sačuvate.", + "collection.edit.tabs.source.notifications.invalid.title": "Metapodaci su nevažeći", + "collection.edit.tabs.source.notifications.saved.content": "Vaše promene izvora sadržaja ove kolekcije su sačuvane.", + "collection.edit.tabs.source.notifications.saved.title": "Izvor sadržaja je sačuvan", + "collection.edit.tabs.source.title": "Uređivanje kolekcije – Izvor sadržaja", + "collection.edit.template.add-button": "Dodati", + "collection.edit.template.breadcrumbs": "Šablon stavke", + "collection.edit.template.cancel": "Otkazati", + "collection.edit.template.delete-button": "Izbrišite", + "collection.edit.template.edit-button": "Izmenite", + "collection.edit.template.error": "Došlo je do greške pri preuzimanju stavke šablona", + "collection.edit.template.head": "Izmenite stavku šablona za kolekciju \"{{ collection }}\"", + "collection.edit.template.label": "Stavka šablona", + "collection.edit.template.loading": "Učitava se stavka šablona...", + "collection.edit.template.notifications.delete.error": "Neuspešno brisanje šablona stavke", + "collection.edit.template.notifications.delete.success": "Uspešno obrisan šablon stavke", + "collection.edit.template.title": "Izmenite stavku šablona", + "collection.form.abstract": "Kratak opis", + "collection.form.description": "Uvodni tekst (HTML)", + "collection.form.errors.title.required": "Molimo unesite ime kolekcije", + "collection.form.license": "Licenca", + "collection.form.provenance": "Poreklo", + "collection.form.rights": "Autorski tekst (HTML)", + "collection.form.tableofcontents": "Vesti (HTML)", + "collection.form.title": "Ime", + "collection.form.entityType": "Tip entiteta", + "collection.listelement.badge": "Kolekcija", + "collection.page.browse.recent.head": "Nedavni podnesci", + "collection.page.browse.recent.empty": "Nema stavki za prikaz", + "collection.page.edit": "Izmenite ovu kolekciju", + "collection.page.handle": "Trajni URI za ovu kolekciju", + "collection.page.license": "Licenca", + "collection.page.news": "Vesti", + "collection.select.confirm": "Potvrdite izabrano", + "collection.select.empty": "Nema kolekcija za prikaz", + "collection.select.table.title": "Naslov", + "collection.source.controls.head": "Kontrola prikupljanja", + "collection.source.controls.test.submit.error": "Nešto nije u redu sa pokretanjem testiranja podešavanja", + "collection.source.controls.test.failed": "Skripta za testiranje podešavanja nije uspela", + "collection.source.controls.test.completed": "Skripta za testiranje podešavanja je uspešno završena", + "collection.source.controls.test.submit": "Testna konfiguracija", + "collection.source.controls.test.running": "Testiranje konfiguracije...", + "collection.source.controls.import.submit.success": "Uvoz je uspešno pokrenut", + "collection.source.controls.import.submit.error": "Nešto nije u redu sa pokretanjem uvoza", + "collection.source.controls.import.submit": "Uvezite sada", + "collection.source.controls.import.running": "Uvoz...", + "collection.source.controls.import.failed": "Došlo je do greške tokom uvoza", + "collection.source.controls.import.completed": "Uvoz je završen", + "collection.source.controls.reset.submit.success": "Resetovanje i ponovni uvoz su uspešno pokrenuti", + "collection.source.controls.reset.submit.error": "Nešto nije u redu sa pokretanjem resetovanja i ponovnog uvoza", + "collection.source.controls.reset.failed": "Došlo je do greške tokom resetovanja i ponovnog uvoza", + "collection.source.controls.reset.completed": "Resetovanje i ponovni uvoz su završeni", + "collection.source.controls.reset.submit": "Resetujte i ponovo uvezite", + "collection.source.controls.reset.running": "Resetovanje i ponovni uvoz...", + "collection.source.controls.harvest.status": "Status prikupljaanja:", + "collection.source.controls.harvest.start": "Vreme početka prikupljanja:", + "collection.source.controls.harvest.last": "Vreme početka prikupljanja:", + "collection.source.controls.harvest.message": "Informacije o prikupljanju:", + "collection.source.controls.harvest.no-information": "N/A", + "collection.source.update.notifications.error.content": "Navedena podešavanja su testirana i nisu funkcionisala.", + "collection.source.update.notifications.error.title": "Greška na serveru", + "communityList.breadcrumbs": "Lista zajednice", + "communityList.tabTitle": "List zajednice", + "communityList.title": "Lista zajednica", + "communityList.showMore": "Prikaži više", + "community.create.head": "Kreirajte zajednicu", + "community.create.notifications.success": "Zajednica je uspešno kreirana", + "community.create.sub-head": "Kreirajte podzajednicu za zajednicu {{ parent }}", + "community.curate.header": "Urednik zajednice: {{community}}", + "community.delete.cancel": "Otkazati", + "community.delete.confirm": "Potvrdite", + "community.delete.processing": "Brisanje...", + "community.delete.head": "Izbrišite zajednicu", + "community.delete.notification.fail": "Nije moguće izbrisati zajednicu", + "community.delete.notification.success": "Uspešno izbrisana zajednica", + "community.delete.text": "Da li ste sigurni da želite da izbrišete zajednicu \"{{ dso }}\"", + "community.edit.delete": "Izbrišite ovu zajednicu", + "community.edit.head": "Izmenite zajednicu", + "community.edit.breadcrumbs": "Izmenite zajednicu", + "community.edit.logo.delete.title": "Izbrišite logo", + "community.edit.logo.delete-undo.title": "Poništite brisanje", + "community.edit.logo.label": "Logo zajednice", + "community.edit.logo.notifications.add.error": "Otpremanje logoa zajednice nije uspelo. Molimo proverite sadržaj pre ponovnog pokušaja.", + "community.edit.logo.notifications.add.success": "Uspešno otpremanje logoa zajednice.", + "community.edit.logo.notifications.delete.success.title": "Logo je izbrisan", + "community.edit.logo.notifications.delete.success.content": "Uspešno izbrisan logo zajednice", + "community.edit.logo.notifications.delete.error.title": "Greška pri brisanju logoa", + "community.edit.logo.upload": "Unesite logo zajednice da biste ga otpremili", + "community.edit.notifications.success": "Uspešno je izmenjena zajednica", + "community.edit.notifications.unauthorized": "Nemate ovlašćenje da izvršite ovu promenu", + "community.edit.notifications.error": "Došlo je do greške pri uređivanju zajednice", + "community.edit.return": "Nazad", + "community.edit.tabs.curate.head": "Curate", + "community.edit.tabs.curate.title": "Uređivanje zajednice - Curate", + "community.edit.tabs.access-control.head": "Kontrola pristupa", + "community.edit.tabs.access-control.title": "Uređivanje zajednice - Kontrola pristupa", + "community.edit.tabs.metadata.head": "Uredi metapodatke", + "community.edit.tabs.metadata.title": "Uređivanje zajednice – Metapodaci", + "community.edit.tabs.roles.head": "Dodeli uloge", + "community.edit.tabs.roles.title": "Uređivanje zajednice - Uloge", + "community.edit.tabs.authorizations.head": "Ovlašćenja", + "community.edit.tabs.authorizations.title": "Uređivanje zajednice - ovlašćenja", + "community.listelement.badge": "Zajednica", + "comcol-role.edit.no-group": "Nijedan", + "comcol-role.edit.create": "Kreirajte", + "comcol-role.edit.create.error.title": "Pravljenje grupe za ulogu \"{{ role }}\" nije uspelo", + "comcol-role.edit.restrict": "Ograničiti", + "comcol-role.edit.delete": "Izbrišite", + "comcol-role.edit.delete.error.title": "Brisanje grupe uloga \"{{ role }}\" nije uspelo", + "comcol-role.edit.community-admin.name": "Administratori", + "comcol-role.edit.collection-admin.name": "Administratori", + "comcol-role.edit.community-admin.description": "Administratori zajednice mogu da kreiraju podzajednice ili kolekcije i da upravljaju tim podzajednicama ili zbirkama ili da im dodeljuju upravljanje. Pored toga, oni odlučuju ko može da podnese stavke u bilo koju podzbirku, uređuju metapodatke stavki (nakon podnošenja) i dodaju (mapiraju) postojeće stavke iz drugih kolekcija (predmet ovlašćenja).", + "comcol-role.edit.collection-admin.description": "Administratori kolekcije odlučuju ko može da šalje stavke u kolekciju, uređuju metapodatke stavki (nakon slanja) i dodaju (mapiraju) postojeće stavke iz drugih kolekcija u ovu kolekciju (predmet ovlašćenja za tu kolekciju).", + "comcol-role.edit.submitters.name": "Podnosioci", + "comcol-role.edit.submitters.description": "E-ljudi i grupe koje imaju dozvolu da podnose nove stavke u ovu kolekciju.", + "comcol-role.edit.item_read.name": "Podrazumevani pristup za čitanje stavke", + "comcol-role.edit.item_read.description": "E-Ljudi i grupe koje mogu da čitaju nove stavke poslate u ovu kolekciju. Promene ove uloge nisu retroaktivne. Postojeće stavke u sistemu će i dalje moći da vide oni koji su imali pristup za čitanje u vreme njihovog dodavanja.", + "comcol-role.edit.item_read.anonymous-group": "Podrazumevano čitanje za dolazne stavke je trenutno postavljeno na Anonimno.", + "comcol-role.edit.bitstream_read.name": "Podrazumevani pristup za čitanje bitstreamova", + "comcol-role.edit.bitstream_read.description": "Administratori zajednice mogu da kreiraju podzajednice ili kolekcije i da upravljaju tim podzajednicama ili zbirkama ili da im dodeljuju upravljanje. Pored toga, oni odlučuju ko može da podnese stavke u bilo koju podzbirku, uređuju metapodatke stavki (nakon podnošenja) i dodaju (mapiraju) postojeće stavke iz drugih kolekcija (predmet ovlašćenja).", + "comcol-role.edit.bitstream_read.anonymous-group": "Podrazumevano čitanje za dolazne bitstreamove je trenutno podešeno na Anonimno.", + "comcol-role.edit.editor.name": "Urednici", + "comcol-role.edit.editor.description": "Urednici mogu da uređuju metapodatke dolaznih podnesaka, a zatim da ih prihvate ili odbiju.", + "comcol-role.edit.finaleditor.name": "Konačni urednici", + "comcol-role.edit.finaleditor.description": "Konačni urednici mogu da uređuju metapodatke dolaznih podnesaka, ali neće moći da ih odbiju.", + "comcol-role.edit.reviewer.name": "Recenzenti", + "comcol-role.edit.reviewer.description": "Recenzenti mogu da prihvate ili odbiju dolazne podneske. Međutim, oni ne mogu da uređuju metapodatke podneska.", + "comcol-role.edit.scorereviewers.name": "Rezultat recenzenata", + "comcol-role.edit.scorereviewers.description": "Recenzenti mogu da daju ocenu dolaznim podnescima, što će definisati da li će podnesak biti odbijen ili ne.", + "community.form.abstract": "Kratak opis", + "community.form.description": "Uvodni tekst (HTML)", + "community.form.errors.title.required": "Unesite naziv zajednice", + "community.form.rights": "Tekst autorskih prava (HTML)", + "community.form.tableofcontents": "Vesti (HTML)", + "community.form.title": "Ime", + "community.page.edit": "Uredite ovu zajednicu", + "community.page.handle": "Stalni URI za ovu zajednicu", + "community.page.license": "Licenca", + "community.page.news": "Vesti", + "community.all-lists.head": "Podzajednice i kolekcije", + "community.sub-collection-list.head": "Kolekcije u ovoj zajednici", + "community.sub-community-list.head": "Zajednice u ovoj zajednici", + "cookies.consent.accept-all": "Prihvatite sve", + "cookies.consent.accept-selected": "Prihvatite izabrano", + "cookies.consent.app.opt-out.description": "Ova aplikacija se podrazumevano učitava (ali možete da odustanete)", + "cookies.consent.app.opt-out.title": "(odustati)", + "cookies.consent.app.purpose": "Svrha", + "cookies.consent.app.required.description": "Ova aplikacija je uvek potrebna", + "cookies.consent.app.required.title": "(uvek potrebno)", + "cookies.consent.app.disable-all.description": "Koristite ovaj prekidač da omogućite ili onemogućite sve usluge.", + "cookies.consent.app.disable-all.title": "Omogućite ili onemogućite sve usluge", + "cookies.consent.update": "Bilo je promena od vaše poslednje posete, ažurirajte svoju saglasnost.", + "cookies.consent.close": "Zatvoriti", + "cookies.consent.decline": "Odbiti", + "cookies.consent.ok": "To je u redu", + "cookies.consent.save": "sačuvati", + "cookies.consent.content-notice.title": "Saglasnost za kolačiće", + "cookies.consent.content-notice.description": "Prikupljamo i obrađujemo vaše lične podatke u sledeće svrhe: Provera autentičnosti, podešavanja, potvrda i statistika.
Da biste saznali više, pročitajte našu {privaciPolicy}.", + "cookies.consent.content-notice.description.no-privacy": "Prikupljamo i obrađujemo vaše lične podatke u sledeće svrhe: Provera autentičnosti, podešavanja, potvrda i statistika.", + "cookies.consent.content-notice.learnMore": "Prilagoditi", + "cookies.consent.content-modal.description": "Ovde možete videti i prilagoditi informacije koje prikupljamo o vama.", + "cookies.consent.content-modal.privacy-policy.name": "Pravila o privatnosti", + "cookies.consent.content-modal.privacy-policy.text": "Da saznate više, pročitajte našu {privaciPolicy}.", + "cookies.consent.content-modal.title": "Informacije koje prikupljamo", + "cookies.consent.content-modal.services": "Usluge", + "cookies.consent.content-modal.service": "Usluga", + "cookies.consent.app.title.authentication": "Provera", + "cookies.consent.app.description.authentication": "Potrebno za prijavljivanje", + "cookies.consent.app.title.preferences": "Podešavanja", + "cookies.consent.app.description.preferences": "Potrebno za čuvanje vaših podešavanja", + "cookies.consent.app.title.acknowledgement": "Potvrda", + "cookies.consent.app.description.acknowledgement": "Potrebno za čuvanje vaših potvrda i saglasnosti", + "cookies.consent.app.title.google-analytics": "Google analitike", + "cookies.consent.app.description.google-analytics": "Omogućava nam da pratimo statističke podatke", + "cookies.consent.app.title.google-recaptcha": "Google reCaptcha", + "cookies.consent.app.description.google-recaptcha": "Koristimo Google reCAPTCHA uslugu tokom registracije i oporavka lozinke", + "cookies.consent.purpose.functional": "Funkcionalni", + "cookies.consent.purpose.statistical": "Statistički", + "cookies.consent.purpose.registration-password-recovery": "Registracija i oporavak lozinke", + "cookies.consent.purpose.sharing": "Deljenje", + "curation-task.task.citationpage.label": "Generišite stranicu sa citatima", + "curation-task.task.checklinks.label": "Proverite veze u metapodacima", + "curation-task.task.noop.label": "NOOP", + "curation-task.task.profileformats.label": "Profil Bitstrim formati", + "curation-task.task.requiredmetadata.label": "Proverite potrebne metapodatke", + "curation-task.task.translate.label": "Microsoft prevodilac", + "curation-task.task.vscan.label": "Pretraga virusa", + "curation-task.task.register-doi.label": "Registrujte DOI", + "curation.form.task-select.label": "Zadatak:", + "curation.form.submit": "Početak", + "curation.form.submit.success.head": "Zadato kuriranje je uspešno pokrenuto", + "curation.form.submit.success.content": "Bićete preusmereni na odgovarajuću stranicu procesa.", + "curation.form.submit.error.head": "Neuspešno pokretanje zadatog kuriranja", + "curation.form.submit.error.content": "Došlo je do greške pri pokušaju pokretanja zadatog kuriranja.", + "curation.form.submit.error.invalid-handle": "Nije moguće odrediti ručicu za ovaj objekat", + "curation.form.handle.label": "Handle:", + "curation.form.handle.hint": "Savet: Unesite [your-handle-prefix]/0 da biste pokrenuli zadatak na celom sajtu (ovu mogućnost ne podržavaju svi zadaci)", + "deny-request-copy.email.message": "Poštovani {{ recipientName }}, \n Kao odgovor na vaš zahtev, sa žaljenjem vas obaveštavam da nije moguće poslati kopiju fajla koju ste tražili, u vezi sa dokumentom: \"{{ itemUrl }}\" ({{ itemName }}), čiji sam autor. \n Srdačan pozdrav, \n{{ authorName }} <{{ authorEmail }}>", + "deny-request-copy.email.subject": "Zatražite kopiju dokumenta", + "deny-request-copy.error": "Došlo je do greške", + "deny-request-copy.header": "Odbijen zahtev za kopiranje dokumenta", + "deny-request-copy.intro": "Ova poruka biće poslata podnosiocu zahteva", + "deny-request-copy.success": "Zahtev za stavku je odbijen uspešno", + "dso.name.untitled": "Bez naslova", + "dso.name.unnamed": "Bez imena", + "dso-selector.create.collection.head": "Nova kolekcija", + "dso-selector.create.collection.sub-level": "Kreirajte novu kolekciju u", + "dso-selector.create.community.head": "Nova zajednica", + "dso-selector.create.community.or-divider": "ili", + "dso-selector.create.community.sub-level": "Kreirajte novu zajednicu u", + "dso-selector.create.community.top-level": "Kreirajte novu zajednicu najvišeg nivoa", + "dso-selector.create.item.head": "Nova stavka", + "dso-selector.create.item.sub-level": "Kreirajte novu stavku u", + "dso-selector.create.submission.head": "Novi podnesak", + "dso-selector.edit.collection.head": "Izmenite kolekciju", + "dso-selector.edit.community.head": "Izmenite zajednicu", + "dso-selector.edit.item.head": "Izmenite stavku", + "dso-selector.error.title": "Došlo je do greške pri pretrazi {{ type }}", + "dso-selector.export-metadata.dspaceobject.head": "Izvezite metapodatke iz", + "dso-selector.export-batch.dspaceobject.head": "Izvezite paket (ZIP) iz", + "dso-selector.import-batch.dspaceobject.head": "Uvezite paket iz", + "dso-selector.no-results": "Nije pronađen {{ type }}", + "dso-selector.placeholder": "Pretražite {{ type }}", + "dso-selector.select.collection.head": "Izaberite kolekciju", + "dso-selector.set-scope.community.head": "Izaberite opseg pretrage", + "dso-selector.set-scope.community.button": "Pretražite čitav repozitorijum", + "dso-selector.set-scope.community.or-divider": "ili", + "dso-selector.set-scope.community.input-header": "Pretražite zajednicu ili kolekciju", + "dso-selector.claim.item.head": "Smernice za profil", + "dso-selector.claim.item.body": "Ovo su postojeći profili koji se možda odnose na Vas. Ako se prepoznate u jednom od ovih profila, izaberite ga i na stranici sa detaljima, među opcijama, izaberite da ga zatražite. U suprotnom, možete kreirati novi profil od nule koristeći dugme ispod.", + "dso-selector.claim.item.not-mine-label": "Nijedan od ovih nije moj", + "dso-selector.claim.item.create-from-scratch": "Kreirajte novi", + "dso-selector.results-could-not-be-retrieved": "Nešto nije u redu, molimo osvežite ponovo ↻", + "supervision-group-selector.header": "Selektor grupe za nadzor", + "supervision-group-selector.select.type-of-order.label": "Izaberite tip naloga", + "supervision-group-selector.select.type-of-order.option.none": "NIJEDAN", + "supervision-group-selector.select.type-of-order.option.editor": "UREDNIK", + "supervision-group-selector.select.type-of-order.option.observer": "POSMATRAČ", + "supervision-group-selector.select.group.label": "Izaberite grupu", + "supervision-group-selector.button.cancel": "Otkazati", + "supervision-group-selector.button.save": "Sačuvati", + "supervision-group-selector.select.type-of-order.error": "Molimo izaberite tip naloga", + "supervision-group-selector.select.group.error": "Molimo izaberite grupu", + "supervision-group-selector.notification.create.success.title": "Uspešno je kreiran nalog nadzora za grupu {{ name }}", + "supervision-group-selector.notification.create.failure.title": "Greška", + "supervision-group-selector.notification.create.already-existing": "Već postoji nalog za nadzor za ovu stavku izabrane grupe", + "confirmation-modal.export-metadata.header": "Izvoz metapodataka za {{ dsoName }}", + "confirmation-modal.export-metadata.info": "Da li ste sigurni da želite da izvezete metapodatke za {{ dsoName }}", + "confirmation-modal.export-metadata.cancel": "Otkazati", + "confirmation-modal.export-metadata.confirm": "Izvoz", + "confirmation-modal.export-batch.header": "Izvezite paket (ZIP) za {{ dsoName }}", + "confirmation-modal.export-batch.info": "Da li ste sigurni da želite da izvezete paket (ZIP) za {{ dsoName }}", + "confirmation-modal.export-batch.cancel": "Otkazati", + "confirmation-modal.export-batch.confirm": "Izvoz", + "confirmation-modal.delete-eperson.header": "Izbrišite Eperson \"{{ dsoName }}\"", + "confirmation-modal.delete-eperson.info": "Da li ste sigurni da želite da izbrišete Eperson \"{{ dsoName }}\"", + "confirmation-modal.delete-eperson.cancel": "Otkazati", + "confirmation-modal.delete-eperson.confirm": "Izbrisati", + "confirmation-modal.delete-profile.header": "Izbrišite profil", + "confirmation-modal.delete-profile.info": "Da li ste sigurni da želite da izbrišete svoj profil", + "confirmation-modal.delete-profile.cancel": "Otkazati", + "confirmation-modal.delete-profile.confirm": "Izbrisati", + "confirmation-modal.delete-subscription.header": "Ukloniti pretplatu", + "confirmation-modal.delete-subscription.info": "Da li ste sigurni da želite da izbrišete pretplatu za \"{{ dsoName }}\"", + "confirmation-modal.delete-subscription.cancel": "Otkazati", + "confirmation-modal.delete-subscription.confirm": "Izbrisati", + "error.bitstream": "Greška pri preuzimanju bitstream-a", + "error.browse-by": "Greška pri preuzimanju stavki", + "error.collection": "Greška pri preuzimanju kolekcije", + "error.collections": "Greška pri preuzimanju kolekcija", + "error.community": "Greška pri preuzimanju zajednice", + "error.identifier": "Nije pronađena nijedna stavka za identifikator", + "error.default": "Greška", + "error.item": "Greška pri preuzimanju stavke", + "error.items": "Greška pri preuzimanju stavki", + "error.objects": "Greška pri preuzimanju objekata", + "error.recent-submissions": "Greška pri preuzimanju nedavnih podnesaka", + "error.search-results": "Greška pri preuzimanju rezultata pretrage", + "error.invalid-search-query": "Upit za pretragu nije ispravan. Proverite najbolja rešenja za Solr sintaksu upita za dodatne informacije o ovoj grešci .", + "error.sub-collections": "Greška pri preuzimanju podkolekcija", + "error.sub-communities": "Greška pri preuzimanju podzajednica", + "error.submission.sections.init-form-error": "Došlo je do greške tokom inicijalizacije odeljka, molimo proverite konfiguraciju obrasca za unos. Detalji su ispod:

", + "error.top-level-communities": "Greška pri preuzimanju zajednica najvišeg nivoa", + "error.validation.license.notgranted": "Morate dodeliti ovu licencu da biste dovršili svoj podnesak. Ako u ovom trenutku niste u mogućnosti da dodelite ovu licencu, možete da sačuvate svoj rad i vratite se kasnije ili uklonite podnesak.", + "error.validation.pattern": "Ovaj unos je ograničen trenutnim obrascem: {{ pattern }}.", + "error.validation.filerequired": "Otpremanje fajla je obavezno", + "error.validation.required": "Ovo polje je obavezno", + "error.validation.NotValidEmail": "Ovaj e-mail nije važeći e-mail", + "error.validation.emailTaken": "Ova e-mail adresa je već zauzeta", + "error.validation.groupExists": "Ova grupa već postoji", + "error.validation.metadata.name.invalid-pattern": "Ovo polje ne može da sadrži tačke, zareze ili razmake. Umesto toga, koristite polja Element i kvalifikator", + "error.validation.metadata.name.max-length": "Ovo polje ne sme da sadrži više od 32 znaka", + "error.validation.metadata.namespace.max-length": "Ovo polje ne sme da sadrži više od 256 znakova", + "error.validation.metadata.element.invalid-pattern": "Ovo polje ne može da sadrži tačke, zareze ili razmake. Umesto toga, koristite polje Kvalifikator", + "error.validation.metadata.element.max-length": "Ovo polje ne sme da sadrži više od 64 znaka", + "error.validation.metadata.qualifier.invalid-pattern": "Ovo polje ne može da sadrži tačke, zareze ili razmake", + "error.validation.metadata.qualifier.max-length": "Ovo polje ne sme da sadrži više od 64 znaka", + "feed.description": "Syndication feed", + "file-section.error.header": "Greška pri pribavljanju fajlova za ovu stavku", + "footer.copyright": "autorska prava © 2002-{{ year }}", + "footer.link.dspace": "DSpace softver", + "footer.link.lyrasis": "LIRASIS", + "footer.link.cookies": "Podešavanja kolačića", + "footer.link.privacy-policy": "Pravila o privatnosti", + "footer.link.end-user-agreement": "Ugovor sa krajnjim korisnikom", + "footer.link.feedback": "Pošalji povratne informacije", + "forgot-email.form.header": "Zaboravili ste lozinku", + "forgot-email.form.info": "Unesite e-mail adresu povezanu sa nalogom.", + "forgot-email.form.email": "E-mail adresa *", + "forgot-email.form.email.error.required": "Unesite e-mail adresu", + "forgot-email.form.email.error.not-email-form": "Unesite važeću e-mail adresu", + "forgot-email.form.email.hint": "E-mail sa daljim uputstvima biće poslat na ovu adresu ", + "forgot-email.form.submit": "Resetujte lozinku", + "forgot-email.form.success.head": "Poslat je e-mail za resetovanje lozinke", + "forgot-email.form.success.content": "E-mail koji sadrži posebnu URL adresu i dalja uputstva biće poslat na {{ email }} ", + "forgot-email.form.error.head": "Greška pri pokušaju resetovanja lozinke", + "forgot-email.form.error.content": "Došlo je do greške pri pokušaju resetovanja lozinke za nalog povezan sa sledećom adresom e-pošte: {{ email }}", + "forgot-password.title": "Zaboravili ste lozinku", + "forgot-password.form.head": "Zaboravili ste lozinku", + "forgot-password.form.info": "Unesite novu lozinku u polje ispod i potvrdite je tako što ćete je ponovo ukucati u drugo polje.", + "forgot-password.form.card.security": "Bezbednost", + "forgot-password.form.identification.header": "Identifikovati", + "forgot-password.form.identification.email": "E-mail adresa:", + "forgot-password.form.label.password": "Lozinka", + "forgot-password.form.label.passwordrepeat": "Ponovo otkucajte da biste potvrdili", + "forgot-password.form.error.empty-password": "Unesite lozinku u polje ispod.", + "forgot-password.form.error.matching-passwords": "Lozinke se ne poklapaju.", + "forgot-password.form.notification.error.title": "Greška pri pokušaju slanja nove lozinke", + "forgot-password.form.notification.success.content": "Resetovanje lozinke je bilo uspešno. Prijavljeni ste kao kreirani korisnik.", + "forgot-password.form.notification.success.title": "Resetovanje lozinke je završeno", + "forgot-password.form.submit": "Pošalji lozinku", + "form.add": "Dodaj još", + "form.add-help": "Kliknite ovde da dodate trenutni unos i da dodate još jedan", + "form.cancel": "Poništiti, otkazati", + "form.clear": "Jasno", + "form.clear-help": "Kliknite ovde da biste uklonili izabranu vrednost", + "form.discard": "Odbacite", + "form.drag": "Prevucite", + "form.edit": "Uredite", + "form.edit-help": "Kliknite ovde da biste izmenili izabranu vrednost", + "form.first-name": "Ime", + "form.group-collapse": "Skupi", + "form.group-collapse-help": "Kliknite ovde za skupljanje", + "form.group-expand": "Proširiti", + "form.group-expand-help": "Kliknite ovde da biste proširili i dodali još elemenata", + "form.last-name": "Prezime", + "form.loading": "Učitavanje...", + "form.lookup": "Potražite", + "form.lookup-help": "Kliknite ovde da biste potražili postojeću vezu", + "form.no-results": "Nisu pronađeni rezultati", + "form.no-value": "Nije uneta vrednost", + "form.other-information.email": "E-mail", + "form.other-information.first-name": "Ime", + "form.other-information.insolr": "U Solr indeksu", + "form.other-information.institution": "Institucija", + "form.other-information.last-name": "Prezime", + "form.other-information.orcid": "ORCID", + "form.remove": "Uklonite", + "form.save": "Sačuvajte", + "form.save-help": "Sačuvajte izmene", + "form.search": "Pretraga", + "form.search-help": "Kliknite ovde da biste potražili postojeću prepisku", + "form.submit": "Sačuvajte", + "form.create": "Kreirajte", + "form.repeatable.sort.tip": "Spustite stavku na novu poziciju", + "grant-deny-request-copy.deny": "Ne šalji kopiju", + "grant-deny-request-copy.email.back": "Nazad", + "grant-deny-request-copy.email.message": "Opciona dodatna poruka", + "grant-deny-request-copy.email.message.empty": "Unesite poruku", + "grant-deny-request-copy.email.permissions.info": "Možete iskoristiti ovu priliku da ponovo razmotrite ograničenja pristupa dokumentu, kako biste izbegli da odgovorite na ove zahteve. Ako želite da zamolite administratore spremišta da uklone ova ograničenja, označite polje ispod.", + "grant-deny-request-copy.email.permissions.label": "Promenite u otvoreni pristup", + "grant-deny-request-copy.email.send": "Pošaljite", + "grant-deny-request-copy.email.subject": "Predmet", + "grant-deny-request-copy.email.subject.empty": "Unesite temu", + "grant-deny-request-copy.grant": "Pošaljite kopiju", + "grant-deny-request-copy.header": "Zahtev za kopiju dokumenta", + "grant-deny-request-copy.home-page": "Vrati me na početnu stranicu", + "grant-deny-request-copy.intro1": "Ako ste jedan od autora dokumenta {{ name }}, onda koristite jednu od opcija u nastavku da odgovorite na zahtev korisnika.", + "grant-deny-request-copy.intro2": "Nakon što odaberete opciju, biće vam predstavljen predloženi odgovor e-maila koji možete da izmenite.", + "grant-deny-request-copy.processed": "Ovaj zahtev je već obrađen. Možete koristiti dugme ispod da se vratite na početnu stranicu.", + "grant-request-copy.email.subject": "Zatražite kopiju dokumenta", + "grant-request-copy.error": "Došlo je do greške", + "grant-request-copy.header": "Odobrite zahtev za kopiju dokumenta", + "grant-request-copy.intro": "Podnosiocu zahteva će biti poslata poruka. Traženi dokument(i) će biti priložen.", + "grant-request-copy.success": "Zahtev za stavku je uspešno odobren", + "health.breadcrumbs": "Zdravlje", + "health-page.heading": "Zdravlje", + "health-page.info-tab": "Informacije", + "health-page.status-tab": "Status", + "health-page.error.msg": "Usluga provere zdravlja je privremeno nedostupna", + "health-page.property.status": "Statusni kod", + "health-page.section.db.title": "Baza podataka", + "health-page.section.geoIp.title": "GeoIp", + "health-page.section.solrAuthorityCore.title": "Solr: authority core", + "health-page.section.solrOaiCore.title": "Solr: oai core", + "health-page.section.solrSearchCore.title": "Solr: search core", + "health-page.section.solrStatisticsCore.title": "Solr: statistics core", + "health-page.section-info.app.title": "Backend aplikacije", + "health-page.section-info.java.title": "Java", + "health-page.status": "Status", + "health-page.status.ok.info": "Operativni", + "health-page.status.error.info": "Otkriveni su problemi", + "health-page.status.warning.info": "Otkriveni su mogući problemi", + "health-page.title": "Zdravlje", + "health-page.section.no-issues": "Nisu otkriveni problemi", + "home.description": "", + "home.breadcrumbs": "Home", + "home.search-form.placeholder": "Pretražite repozitorijum...", + "home.title": "Home", + "home.top-level-communities.head": "Zajednice u DSpace-u", + "home.top-level-communities.help": "Izaberite zajednicu da biste pregledali njene kolekcije.", + "info.end-user-agreement.accept": "Pročitao sam i prihvatam Ugovorom sa krajnjim korisnikom", + "info.end-user-agreement.accept.error": "Došlo je do greške pri prihvatanju Ugovora sa krajnjim korisnikom", + "info.end-user-agreement.accept.success": "Uspešno ažuriran Ugovor sa krajnjim korisnikom", + "info.end-user-agreement.breadcrumbs": "Ugovor sa krajnjim korisnikom", + "info.end-user-agreement.buttons.cancel": "Otkazati", + "info.end-user-agreement.buttons.save": "Sačuvati", + "info.end-user-agreement.head": "Ugovor sa krajnjim korisnikom", + "info.end-user-agreement.title": "Ugovor sa krajnjim korisnikom", + "info.end-user-agreement.hosting-country": "Sjedinjene Države", + "info.privacy.breadcrumbs": "Izjava o zaštiti privatnosti", + "info.privacy.head": "Izjava o zaštiti privatnosti", + "info.privacy.title": "Izjava o zaštiti privatnosti", + "info.feedback.breadcrumbs": "Povratna informacija", + "info.feedback.head": "Povratna informacija", + "info.feedback.title": "Povratna informacija", + "info.feedback.info": "Hvala Vam što ste podelili povratne informacije o DSpace sistemu. Cenimo Vaše komentare!", + "info.feedback.email_help": "Ova adresa će biti korišćena za praćenje vaših povratnih informacija.", + "info.feedback.send": "Pošaljite povratne informacije", + "info.feedback.comments": "Komentari", + "info.feedback.email-label": "Vaš Email", + "info.feedback.create.success": "Povratne informacije su uspešno poslate!", + "info.feedback.error.email.required": "Potrebna je važeća e-mail adresa", + "info.feedback.error.message.required": "Komentar je obavezan", + "info.feedback.page-label": "Strana", + "info.feedback.page_help": "Stranica je u vezi sa Vašim povratnim informacijama", + "item.alerts.private": "Ova stavka se ne može otkriti", + "item.alerts.withdrawn": "Ova stavka je povučena", + "item.edit.authorizations.heading": "Pomoću ovog editora možete da pregledate i menjate opcije stavke, kao i da menjate opcije pojedinačnih komponenti stavke: pakete i bitstream-ove. Ukratko, stavka je kontejner paketa, a paketi su kontejneri bitstream-ova. Kontejneri obično imaju opcije DODAVANJE/BRISANJE/ČITANJE/PISANJE, dok bitstream-ovi imaju samo opcije ČITANJE/PISANJE.", + "item.edit.authorizations.title": "Izmenite opcije stavke", + "item.badge.private": "Nevidljiv", + "item.badge.withdrawn": "Povučeno", + "item.bitstreams.upload.bundle": "Paket", + "item.bitstreams.upload.bundle.placeholder": "Izaberite paket ili unesite novo ime paketa", + "item.bitstreams.upload.bundle.new": "Kreirajte paket", + "item.bitstreams.upload.bundles.empty": "Ova stavka ne sadrži pakete za otpremanje bitstream-ova.", + "item.bitstreams.upload.cancel": "Otkazati", + "item.bitstreams.upload.drop-message": "Unesite datoteku za otpremanje", + "item.bitstreams.upload.item": "Stavka:", + "item.bitstreams.upload.notifications.bundle.created.content": "Uspešno kreiran novi paket.", + "item.bitstreams.upload.notifications.bundle.created.title": "Kreirani paket", + "item.bitstreams.upload.notifications.upload.failed": "Otpremanje neuspešno. Molimo Vas proverite sadržaj pre ponovnog pokušaja.", + "item.bitstreams.upload.title": "Otpremanje bitstream-a", + "item.edit.bitstreams.bundle.edit.buttons.upload": "Otpremiti", + "item.edit.bitstreams.bundle.displaying": "Trenutno se prikazuje {{ amount }} bitstream-ova od {{ total }}.", + "item.edit.bitstreams.bundle.load.all": "Učitajte sve ({{ total }})", + "item.edit.bitstreams.bundle.load.more": "Učitajte još", + "item.edit.bitstreams.bundle.name": "PAKET: {{ name }}", + "item.edit.bitstreams.discard-button": "Odbaciti", + "item.edit.bitstreams.edit.buttons.download": "Preuzimanje", + "item.edit.bitstreams.edit.buttons.drag": "Prevucite", + "item.edit.bitstreams.edit.buttons.edit": "Izmeniti", + "item.edit.bitstreams.edit.buttons.remove": "Ukloniti", + "item.edit.bitstreams.edit.buttons.undo": "Poništiti promene", + "item.edit.bitstreams.empty": "Ova stavka ne sadrži bitstream-ove. Kliknite na dugme za otpremanje da biste ga kreirali.", + "item.edit.bitstreams.headers.actions": "Radnje", + "item.edit.bitstreams.headers.bundle": "Paket", + "item.edit.bitstreams.headers.description": "Opis", + "item.edit.bitstreams.headers.format": "Format", + "item.edit.bitstreams.headers.name": "Ime", + "item.edit.bitstreams.notifications.discarded.content": "Vaše promene su odbačene. Da biste ponovo postavili svoje promene, kliknite na dugme \"Opozovi\".", + "item.edit.bitstreams.notifications.discarded.title": "Promene su odbačene", + "item.edit.bitstreams.notifications.move.failed.title": "Greška pri pokretanju bitstream-ova", + "item.edit.bitstreams.notifications.move.saved.content": "Promene koje ste pokrenuli u bitstream-ovima i paketima ove stavke su sačuvane.", + "item.edit.bitstreams.notifications.move.saved.title": "Pokrenute promene su sačuvane", + "item.edit.bitstreams.notifications.outdated.content": "Stavku na kojoj trenutno radite je promenio drugi korisnik. Vaše trenutne promene se odbacuju da bi se sprečili konflikti", + "item.edit.bitstreams.notifications.outdated.title": "Zastarele promene", + "item.edit.bitstreams.notifications.remove.failed.title": "Greška pri brisanju bitstream-a", + "item.edit.bitstreams.notifications.remove.saved.content": "Vaše izmene u vezi sa uklanjanjem bitstream-ova ove stavke su sačuvane.", + "item.edit.bitstreams.notifications.remove.saved.title": "Promene uklanjanja su sačuvane", + "item.edit.bitstreams.reinstate-button": "Poništiti", + "item.edit.bitstreams.save-button": "Sačuvati", + "item.edit.bitstreams.upload-button": "Otpremiti", + "item.edit.delete.cancel": "Otkazati", + "item.edit.delete.confirm": "Izbrisati", + "item.edit.delete.description": "Da li ste sigurni da ovu stavku treba potpuno izbrisati? Oprez: Trenutno ne bi ostao nijedan obrisani zapis.", + "item.edit.delete.error": "Došlo je do greške prilikom brisanja stavke", + "item.edit.delete.header": "Izbrišite stavku: {{ id }}", + "item.edit.delete.success": "Stavka je izbrisana", + "item.edit.head": "Uredite stavku", + "item.edit.breadcrumbs": "Uredite stavku", + "item.edit.tabs.disabled.tooltip": "Niste ovlašćeni da pristupite ovoj kartici", + "item.edit.tabs.mapper.head": "Mapiranje kolekcije", + "item.edit.tabs.item-mapper.title": "Uređivanje stavke - mapiranje kolekcije", + "item.edit.identifiers.doi.status.UNKNOWN": "Nepoznato", + "item.edit.identifiers.doi.status.TO_BE_REGISTERED": "Na čekanju za registraciju", + "item.edit.identifiers.doi.status.TO_BE_RESERVED": "Na čekanju za rezervaciju", + "item.edit.identifiers.doi.status.IS_REGISTERED": "Registrovano", + "item.edit.identifiers.doi.status.IS_RESERVED": "Rezervisano", + "item.edit.identifiers.doi.status.UPDATE_RESERVED": "Rezervisano (na čekanju za ažuriranje)", + "item.edit.identifiers.doi.status.UPDATE_REGISTERED": "Registrovano (na čekanju za ažuriranje)", + "item.edit.identifiers.doi.status.UPDATE_BEFORE_REGISTRATION": "Na čekanju za ažuriranje i registraciju", + "item.edit.identifiers.doi.status.TO_BE_DELETED": "Na čekanju za brisanje", + "item.edit.identifiers.doi.status.DELETED": "Izbrisano", + "item.edit.identifiers.doi.status.PENDING": "Na čekanju (nije registrovano)", + "item.edit.identifiers.doi.status.MINTED": "Minted (nije registrovano)", + "item.edit.tabs.status.buttons.register-doi.label": "Registrujte novi ili DOI na čekanju", + "item.edit.tabs.status.buttons.register-doi.button": "Registrujte DOI...", + "item.edit.register-doi.header": "Registrujte novi ili DOI na čekanju", + "item.edit.register-doi.description": "Pregledajte sve identifikatore i stavke metapodataka na čekanju ispod i kliknite na Potvrdi da biste nastavili sa DOI registracijom, ili Otkaži da biste se povukli", + "item.edit.register-doi.confirm": "Potvrditi", + "item.edit.register-doi.cancel": "Poništiti, otkazati", + "item.edit.register-doi.success": "DOI na čekanju za registraciju uspešno.", + "item.edit.register-doi.error": "Greška pri registraciji DOI", + "item.edit.register-doi.to-update": "Sledeći DOI je već minted i biće na čekanju za registraciju na mreži", + "item.edit.item-mapper.buttons.add": "Mapirajte stavku u izabrane kolekcije", + "item.edit.item-mapper.buttons.remove": "Uklonite mapiranje stavke za izabrane kolekcije", + "item.edit.item-mapper.cancel": "Poništiti, otkazati", + "item.edit.item-mapper.description": "Ovo je alatka za mapiranje stavki koja omogućava administratorima da mapiraju ovu stavku u druge kolekcije. Možete pretražiti kolekcije i mapirati ih ili pregledati listu kolekcija na koje je stavka trenutno mapirana.", + "item.edit.item-mapper.head": "Mapiranje stavke – mapirajte stavku u kolekcije", + "item.edit.item-mapper.item": "Stavka: \"{{name}}\"", + "item.edit.item-mapper.no-search": "Unesite upit za pretragu", + "item.edit.item-mapper.notifications.add.error.content": "Došlo je do grešaka pri mapiranju stavke u {{amount}} kolekcije.", + "item.edit.item-mapper.notifications.add.error.head": "Greške u mapiranju", + "item.edit.item-mapper.notifications.add.success.content": "Stavka je uspešno mapirana u {{amount}} kolekcije.", + "item.edit.item-mapper.notifications.add.success.head": "Mapiranje je završeno", + "item.edit.item-mapper.notifications.remove.error.content": "Došlo je do grešaka pri uklanjanju mapiranja na {{amount}} kolekcije.", + "item.edit.item-mapper.notifications.remove.error.head": "Uklanjanje grešaka u mapiranju", + "item.edit.item-mapper.notifications.remove.success.content": "Uspešno je uklonjeno mapiranje stavke u {{amount}} kolekcije.", + "item.edit.item-mapper.notifications.remove.success.head": "Uklanjanje mapiranja je završeno", + "item.edit.item-mapper.search-form.placeholder": "Pretraži kolekcije...", + "item.edit.item-mapper.tabs.browse": "Pregledajte mapirane kolekcije", + "item.edit.item-mapper.tabs.map": "Mapirajte nove kolekcije", + "item.edit.metadata.add-button": "Dodati", + "item.edit.metadata.discard-button": "Odbaciti", + "item.edit.metadata.edit.buttons.confirm": "Potvrditi", + "item.edit.metadata.edit.buttons.drag": "Prevucite da biste promenili redosled", + "item.edit.metadata.edit.buttons.edit": "Urediti", + "item.edit.metadata.edit.buttons.remove": "Ukloniti", + "item.edit.metadata.edit.buttons.undo": "Poništiti promene", + "item.edit.metadata.edit.buttons.unedit": "Zaustaviti uređivanje", + "item.edit.metadata.edit.buttons.virtual": "Ovo je virtuelna vrednost metapodataka, odnosno vrednost nasleđena od povezanog entiteta. Ne može se direktno menjati. Dodajte ili uklonite odgovarajući odnos na kartici \"Odnosi\".", + "item.edit.metadata.empty": "Stavka trenutno ne sadrži nikakve metapodatke. Kliknite na Dodaj da biste počeli da dodajete vrednost metapodataka.", + "item.edit.metadata.headers.edit": "Urediti", + "item.edit.metadata.headers.field": "Polje", + "item.edit.metadata.headers.language": "Jezik", + "item.edit.metadata.headers.value": "Vrednost", + "item.edit.metadata.metadatafield.error": "Došlo je do greške pri proveri polja metapodataka", + "item.edit.metadata.metadatafield.invalid": "Izaberite važeće polje za metapodatke", + "item.edit.metadata.notifications.discarded.content": "Vaše promene su odbačene. Da biste vratili svoje promene, kliknite na dugme \"Poništi\".", + "item.edit.metadata.notifications.discarded.title": "Promene su odbačene", + "item.edit.metadata.notifications.error.title": "Došlo je do greške", + "item.edit.metadata.notifications.invalid.content": "Vaše promene nisu sačuvane. Uverite se da su sva polja važeća pre nego što sačuvate.", + "item.edit.metadata.notifications.invalid.title": "Metapodaci su nevažeći", + "item.edit.metadata.notifications.outdated.content": "Stavku na kojoj trenutno radite je promenio drugi korisnik. Vaše trenutne promene se odbacuju da bi se sprečili konflikti", + "item.edit.metadata.notifications.outdated.title": "Promene su zastarele", + "item.edit.metadata.notifications.saved.content": "Vaše promene metapodataka ove stavke su sačuvane.", + "item.edit.metadata.notifications.saved.title": "Metapodaci su sačuvani", + "item.edit.metadata.reinstate-button": "Poništiti", + "item.edit.metadata.reset-order-button": "Poništite promenu redosleda", + "item.edit.metadata.save-button": "Sačuvati", + "item.edit.modify.overview.field": "Polje", + "item.edit.modify.overview.language": "Jezik", + "item.edit.modify.overview.value": "Vrednost", + "item.edit.move.cancel": "Nazad", + "item.edit.move.save-button": "Sačuvati", + "item.edit.move.discard-button": "Odbaciti", + "item.edit.move.description": "Izaberite kolekciju u koju želite da premestite ovu stavku. Da biste suzili listu prikazanih kolekcija, možete da unesete upit za pretragu u okvir.", + "item.edit.move.error": "Došlo je do greške pri pokušaju premeštanja stavke", + "item.edit.move.head": "Premestite stavku: {{id}}", + "item.edit.move.inheritpolicies.checkbox": "Smernice nasleđivanja", + "item.edit.move.inheritpolicies.description": "Nasledite podrazumevane smernice odredišne kolekcije", + "item.edit.move.move": "Premestite", + "item.edit.move.processing": "Premeštanje...", + "item.edit.move.search.placeholder": "Unesite upit za pretragu da biste potražili kolekcije", + "item.edit.move.success": "Stavka je uspešno premeštena", + "item.edit.move.title": "Premestite stavku", + "item.edit.private.cancel": "Poništiti, otkazati", + "item.edit.private.confirm": "Učinite nepristupačnim", + "item.edit.private.description": "Da li ste sigurni da ova stavka treba da bude nepristupačna u arhivi?", + "item.edit.private.error": "Došlo je do greške pri postavljanju nepristupačne stavke", + "item.edit.private.header": "Učinite stavku nepristupačnom: {{ id }}", + "item.edit.private.success": "Stavka je sada nepristupačna", + "item.edit.public.cancel": "Poništiti, otkazati", + "item.edit.public.confirm": "Učinite pristupačnim", + "item.edit.public.description": "Da li ste sigurni da ova stavka treba da bude pristupačna u arhivi?", + "item.edit.public.error": "Došlo je do greške pri omogućavanju vidljivosti stavke", + "item.edit.public.header": "Učinite stavku vidljivom: {{ id }}", + "item.edit.public.success": "Stavka je sada vidljiva", + "item.edit.reinstate.cancel": "Otkazati", + "item.edit.reinstate.confirm": "Obnoviti", + "item.edit.reinstate.description": "Da li ste sigurni da ovu stavku treba vratiti u arhivu?", + "item.edit.reinstate.error": "Došlo je do greške pri vraćanju stavke", + "item.edit.reinstate.header": "Vratite stavku: {{ id }}", + "item.edit.reinstate.success": "Stavka je uspešno vraćena", + "item.edit.relationships.discard-button": "Odbaciti", + "item.edit.relationships.edit.buttons.add": "Dodati", + "item.edit.relationships.edit.buttons.remove": "Ukloniti", + "item.edit.relationships.edit.buttons.undo": "Poništiti promene", + "item.edit.relationships.no-relationships": "Nema relacija", + "item.edit.relationships.notifications.discarded.content": "Vaše promene su odbačene. Da biste vratili svoje promene, kliknite na dugme \"Poništiti\".", + "item.edit.relationships.notifications.discarded.title": "Promene su odbačene", + "item.edit.relationships.notifications.failed.title": "Greška pri izmeni relacija", + "item.edit.relationships.notifications.outdated.content": "Stavku na kojoj trenutno radite je promenio drugi korisnik. Vaše trenutne promene su odbačene da bi se sprečili konflikti", + "item.edit.relationships.notifications.outdated.title": "Zastarele promene", + "item.edit.relationships.notifications.saved.content": "Vaše promene u relacijama ove stavke su sačuvane.", + "item.edit.relationships.notifications.saved.title": "Relacije su sačuvane", + "item.edit.relationships.reinstate-button": "Poništi", + "item.edit.relationships.save-button": "Sačuvati", + "item.edit.relationships.no-entity-type": "Dodajte metapodatke \"dspace.entity.type\" da biste omogućili relacije za ovu stavku", + "item.edit.return": "Nazad", + "item.edit.tabs.bitstreams.head": "Bitstream-ovi", + "item.edit.tabs.bitstreams.title": "Izmena stavke - Bitstream-ovi", + "item.edit.tabs.curate.head": "Kuriranje", + "item.edit.tabs.curate.title": "Izmena stavke - Kuriranje", + "item.edit.curate.title": "Kuriranje stavke: {{item}}", + "item.edit.tabs.access-control.head": "Kontrola pristupa", + "item.edit.tabs.access-control.title": "Izmena stavke - Kontrola pristupa", + "item.edit.tabs.metadata.head": "Metapodaci", + "item.edit.tabs.metadata.title": "Izmena stavke – Metapodaci", + "item.edit.tabs.relationships.head": "Relacije", + "item.edit.tabs.relationships.title": "Izmena stavke - Relacije", + "item.edit.tabs.status.buttons.authorizations.button": "Ovlašćenja...", + "item.edit.tabs.status.buttons.authorizations.label": "Izmenite smernice ovlašćenja stavke", + "item.edit.tabs.status.buttons.delete.button": "Trajno izbrisati", + "item.edit.tabs.status.buttons.delete.label": "Potpuno izbrisati stavku", + "item.edit.tabs.status.buttons.mappedCollections.button": "Mapirane kolekcije", + "item.edit.tabs.status.buttons.mappedCollections.label": "Upravljajte mapiranim kolekcijama", + "item.edit.tabs.status.buttons.move.button": "Premesti ovu stavku u drugu kolekciju", + "item.edit.tabs.status.buttons.move.label": "Premesti stavku u drugu kolekciju", + "item.edit.tabs.status.buttons.private.button": "Postavite da bude nevidljivo...", + "item.edit.tabs.status.buttons.private.label": "Postavite stavku da bude nevidljiva", + "item.edit.tabs.status.buttons.public.button": "Postavite da bude vidljivo...", + "item.edit.tabs.status.buttons.public.label": "Postavite stavku da bude vidljiva", + "item.edit.tabs.status.buttons.reinstate.button": "Ponovo postavite...", + "item.edit.tabs.status.buttons.reinstate.label": "Vratite stavku u repozitorijum", + "item.edit.tabs.status.buttons.unauthorized": "Niste ovlašćeni da izvršite ovu radnju", + "item.edit.tabs.status.buttons.withdraw.button": "Povucite ovu stavku", + "item.edit.tabs.status.buttons.withdraw.label": "Povucite stavku iz repozitorijuma", + "item.edit.tabs.status.description": "Dobrodošli na stranicu za upravljanje stavkama. Odavde možete povući, vratiti, premestiti ili izbrisati stavku. Takođe možete ažurirati ili dodati nove metapodatke / bitstream-ove na drugim karticama.", + "item.edit.tabs.status.head": "Status", + "item.edit.tabs.status.labels.handle": "Handle", + "item.edit.tabs.status.labels.id": "Interni ID stavke", + "item.edit.tabs.status.labels.itemPage": "Stranica stavke", + "item.edit.tabs.status.labels.lastModified": "Poslednja izmena", + "item.edit.tabs.status.title": "Izmena stavke - Status", + "item.edit.tabs.versionhistory.head": "Istorija verzija", + "item.edit.tabs.versionhistory.title": "Izmena stavke - Istorija verzija", + "item.edit.tabs.versionhistory.under-construction": "Izmena ili dodavanje novih verzija još uvek nije moguće u ovom korisničkom interfejsu.", + "item.edit.tabs.view.head": "Prikaži stavku", + "item.edit.tabs.view.title": "Izmeni stavku - Prikaži", + "item.edit.withdraw.cancel": "Otkazati", + "item.edit.withdraw.confirm": "Povucite", + "item.edit.withdraw.description": "Da li ste sigurni da ovu stavku treba povući iz arhive?", + "item.edit.withdraw.error": "Došlo je do greške pri povlačenju stavke", + "item.edit.withdraw.header": "Povucite stavku: {{ id }}", + "item.edit.withdraw.success": "Stavka je uspešno povučena", + "item.orcid.return": "Nazad", + "item.listelement.badge": "Stavka", + "item.page.description": "Opis", + "item.page.journal-issn": "ISSN časopisa", + "item.page.journal-title": "Naslov časopisa", + "item.page.publisher": "Izdavač", + "item.page.titleprefix": "Stavka:", + "item.page.volume-title": "Naslov sveske", + "item.search.results.head": "Rezultati pretrage stavki", + "item.search.title": "Pretraga stavke", + "item.truncatable-part.show-more": "Prikažite još", + "item.truncatable-part.show-less": "Skupiti", + "workflow-item.search.result.delete-supervision.modal.header": "Izbrišite nalog za nadzor", + "workflow-item.search.result.delete-supervision.modal.info": "Da li ste sigurni da želite da izbrišete nalog za nadzor", + "workflow-item.search.result.delete-supervision.modal.cancel": "Otkazati", + "workflow-item.search.result.delete-supervision.modal.confirm": "Izbrisati", + "workflow-item.search.result.notification.deleted.success": "Uspešno je izbrisan nalog za nadzor \"{{name}}\"", + "workflow-item.search.result.notification.deleted.failure": "Neuspešno brisanje naloga za nadzor \"{{name}}\"", + "workflow-item.search.result.list.element.supervised-by": "Pregledao:", + "workflow-item.search.result.list.element.supervised.remove-tooltip": "Ukloniti grupu za nadzor", + "item.page.abstract": "Sažetak", + "item.page.author": "Autori", + "item.page.citation": "Citat", + "item.page.collections": "Kolekcije", + "item.page.collections.loading": "Učitavanje...", + "item.page.collections.load-more": "Učitajte još", + "item.page.date": "Datum", + "item.page.edit": "Izmenite ovu stavku", + "item.page.files": "Fajlovi", + "item.page.filesection.description": "Opis:", + "item.page.filesection.download": "Preuzimanje", + "item.page.filesection.format": "Format:", + "item.page.filesection.name": "ime:", + "item.page.filesection.size": "Veličina:", + "item.page.journal.search.title": "Članci u ovom časopisu", + "item.page.link.full": "Pun zapis stavke", + "item.page.link.simple": "Jednostavan zapis stavke", + "item.page.orcid.title": "ORCID", + "item.page.orcid.tooltip": "Otvorite stranicu za podešavanje ORCID-a", + "item.page.person.search.title": "Članci ovog autora", + "item.page.related-items.view-more": "Prikaži još {{ amount}}", + "item.page.related-items.view-less": "Sakrij poslednji {{ amount}}", + "item.page.relationships.isAuthorOfPublication": "Publikacije", + "item.page.relationships.isJournalOfPublication": "Publikacije", + "item.page.relationships.isOrgUnitOfPerson": "Autori", + "item.page.relationships.isOrgUnitOfProject": "Istraživački projekti", + "item.page.subject": "Ključne reči", + "item.page.uri": "URI", + "item.page.bitstreams.view-more": "Prikaži više", + "item.page.bitstreams.collapse": "Skupiti", + "item.page.filesection.original.bundle": "Originalni paket", + "item.page.filesection.license.bundle": "Licencni paket", + "item.page.return": "Nazad", + "item.page.version.create": "Kreirajte novu verziju", + "item.page.version.hasDraft": "Nova verzija se ne može kreirati zato što je u toku podnošenje", + "item.page.claim.button": "Potvrda", + "item.page.claim.tooltip": "Potvrdi ovu stavku kao profil", + "item.preview.dc.identifier.uri": "Identifikator:", + "item.preview.dc.contributor.author": "Autori:", + "item.preview.dc.date.issued": "Datum objavljivanja:", + "item.preview.dc.description.abstract": "Sažetak:", + "item.preview.dc.identifier.other": "Drugi identifikator:", + "item.preview.dc.language.iso": "Jezik:", + "item.preview.dc.subject": "Predmeti:", + "item.preview.dc.title": "Naslov:", + "item.preview.dc.type": "Tip:", + "item.preview.oaire.citation.issue": "Izdanje", + "item.preview.oaire.citation.volume": "Opseg", + "item.preview.dc.relation.issn": "ISSN", + "item.preview.dc.identifier.isbn": "ISBN", + "item.preview.dc.identifier": "Identifikator:", + "item.preview.dc.relation.ispartof": "Časopis ili serija", + "item.preview.dc.identifier.doi": "DOI", + "item.preview.dc.publisher": "Izdavač:", + "item.preview.person.familyName": "prezime:", + "item.preview.person.givenName": "Ime:", + "item.preview.person.identifier.orcid": "ORCID:", + "item.preview.project.funder.name": "Finansijer:", + "item.preview.project.funder.identifier": "Identifikator finansijera:", + "item.preview.oaire.awardNumber": "ID finansiranja:", + "item.preview.dc.title.alternative": "Akronim:", + "item.preview.dc.coverage.spatial": "Jurisdikcija:", + "item.preview.oaire.fundingStream": "Tok finansiranja:", + "item.select.confirm": "Potvrdite izabrano", + "item.select.empty": "Nema stavki za prikaz", + "item.select.table.author": "Autor", + "item.select.table.collection": "Kolekcija", + "item.select.table.title": "Naslov", + "item.version.history.empty": "Još uvek nema drugih verzija za ovu stavku.", + "item.version.history.head": "Istorija verzija", + "item.version.history.return": "Nazad", + "item.version.history.selected": "Izabrana verzija", + "item.version.history.selected.alert": "Trenutno gledate verziju {{verzija}} stavke.", + "item.version.history.table.version": "Verzija", + "item.version.history.table.item": "Stavka", + "item.version.history.table.editor": "Urednik", + "item.version.history.table.date": "Datum", + "item.version.history.table.summary": "Rezime", + "item.version.history.table.workspaceItem": "Stavka radnog prostora", + "item.version.history.table.workflowItem": "Stavka procesa rada", + "item.version.history.table.actions": "Postupak", + "item.version.history.table.action.editWorkspaceItem": "Uredite stavku radnog prostora", + "item.version.history.table.action.editSummary": "Uredite rezime", + "item.version.history.table.action.saveSummary": "Sačuvajte izmene rezimea", + "item.version.history.table.action.discardSummary": "Odbacite izmene rezimea", + "item.version.history.table.action.newVersion": "Kreirajte novu verziju od ovog", + "item.version.history.table.action.deleteVersion": "Izbrišite verziju", + "item.version.history.table.action.hasDraft": "Nova verzija se ne može kreirati zato što je u toku prihvat u istoriji verzija", + "item.version.notice": "Ovo nije najnovija verzija ove stavke. Najnoviju verziju možete pronaći ovde.", + "item.version.create.modal.header": "Nova verzija", + "item.version.create.modal.text": "Napravite novu verziju za ovu stavku", + "item.version.create.modal.text.startingFrom": "počevši od verzije {{version}}", + "item.version.create.modal.button.confirm": "Kreirajte", + "item.version.create.modal.button.confirm.tooltip": "Kreirajte novu verziju", + "item.version.create.modal.button.cancel": "Poništiti, otkazati", + "item.version.create.modal.button.cancel.tooltip": "Ne kreirajte novu verziju", + "item.version.create.modal.form.summary.label": "Rezime", + "item.version.create.modal.form.summary.placeholder": "Ubacite rezime za novu verziju", + "item.version.create.modal.submitted.header": "Kreiranje nove verzije...", + "item.version.create.modal.submitted.text": "Nova verzija je u izradi. Ovo može potrajati neko vreme ako stavka ima mnogo veza.", + "item.version.create.notification.success": "Nova verzija je napravljena sa brojem verzije {{version}}", + "item.version.create.notification.failure": "Nova verzija nije kreirana", + "item.version.create.notification.inProgress": "Nova verzija se ne može kreirati zato što je u toku prihvat u istoriji verzija", + "item.version.delete.modal.header": "Izbrišite verziju", + "item.version.delete.modal.text": "Da li želite da izbrišete verziju {{version}}?", + "item.version.delete.modal.button.confirm": "Izbrišite", + "item.version.delete.modal.button.confirm.tooltip": "Izbrišite ovu verziju", + "item.version.delete.modal.button.cancel": "Poništiti, otkazati", + "item.version.delete.modal.button.cancel.tooltip": "Nemojte brisati ovu verziju", + "item.version.delete.notification.success": "Verzija broj {{version}} je izbrisana", + "item.version.delete.notification.failure": "Verzija broj {{version}} nije izbrisana", + "item.version.edit.notification.success": "Sažetak verzije broj {{version}} je promenjen", + "item.version.edit.notification.failure": "Sažetak verzije broj {{version}} nije promenjen", + "itemtemplate.edit.metadata.add-button": "Dodati", + "itemtemplate.edit.metadata.discard-button": "Odbaciti", + "itemtemplate.edit.metadata.edit.buttons.confirm": "Potvrditi", + "itemtemplate.edit.metadata.edit.buttons.drag": "Prevucite da biste promenili redosled", + "itemtemplate.edit.metadata.edit.buttons.edit": "Izmeniti", + "itemtemplate.edit.metadata.edit.buttons.remove": "Ukloniti", + "itemtemplate.edit.metadata.edit.buttons.undo": "Poništiti promene", + "itemtemplate.edit.metadata.edit.buttons.unedit": "Zaustavite izmene", + "itemtemplate.edit.metadata.empty": "Šablon stavke trenutno ne sadrži nikakve metapodatke. Kliknite na Dodaj da biste započeli dodavanje vrednosti metapodataka.", + "itemtemplate.edit.metadata.headers.edit": "Izmeniti", + "itemtemplate.edit.metadata.headers.field": "Polje", + "itemtemplate.edit.metadata.headers.language": "Jezik", + "itemtemplate.edit.metadata.headers.value": "Vrednost", + "itemtemplate.edit.metadata.metadatafield.error": "Došlo je do greške prilikom provere polja metapodataka", + "itemtemplate.edit.metadata.metadatafield.invalid": "Molimo izaberite važeće polje metapodataka", + "itemtemplate.edit.metadata.notifications.discarded.content": "Vaše promene su odbačene. Da biste vratili svoje promene, kliknite na dugme \"Poništi\".", + "itemtemplate.edit.metadata.notifications.discarded.title": "Promene su odbačene", + "itemtemplate.edit.metadata.notifications.error.title": "Došlo je do greške", + "itemtemplate.edit.metadata.notifications.invalid.content": "Vaše promene nisu sačuvane. Molimo proverite da li su sva polja ispravna pre nego što sačuvate.", + "itemtemplate.edit.metadata.notifications.invalid.title": "Metapodaci su nevažeći", + "itemtemplate.edit.metadata.notifications.outdated.content": "Drugi korisnik je promenio šablon stavke na kome trenutno radite. Vaše trenutne promene se odbacuju da bi se sprečili konflikti", + "itemtemplate.edit.metadata.notifications.outdated.title": "Promene su zastarele", + "itemtemplate.edit.metadata.notifications.saved.content": "Vaše promene metapodataka ovog šablona stavke su sačuvane.", + "itemtemplate.edit.metadata.notifications.saved.title": "Metapodaci su sačuvani", + "itemtemplate.edit.metadata.reinstate-button": "Poništiti", + "itemtemplate.edit.metadata.reset-order-button": "Poništiti promenu redosleda", + "itemtemplate.edit.metadata.save-button": "Sačuvati", + "journal.listelement.badge": "Časopis", + "journal.page.description": "Opis", + "journal.page.edit": "Uredite ovu stavku", + "journal.page.editor": "Glavni urednik", + "journal.page.issn": "ISSN", + "journal.page.publisher": "Izdavač", + "journal.page.titleprefix": "Časopis:", + "journal.search.results.head": "Rezultati pretrage časopisa", + "journal-relationships.search.results.head": "Rezultati pretrage časopisa", + "journal.search.title": "Pretraga časopisa", + "journalissue.listelement.badge": "Izdanje časopisa", + "journalissue.page.description": "Opis", + "journalissue.page.edit": "Izmenite ovu stavku", + "journalissue.page.issuedate": "Datum izdanja", + "journalissue.page.journal-issn": "Časopis ISSN", + "journalissue.page.journal-title": "Naslov časopisa", + "journalissue.page.keyword": "Ključne reči", + "journalissue.page.number": "Broj", + "journalissue.page.titleprefix": "Izdanje časopisa:", + "journalvolume.listelement.badge": "Sveska časopisa", + "journalvolume.page.description": "Opis", + "journalvolume.page.edit": "Izmenite ovu stavku", + "journalvolume.page.issuedate": "Datum izdanja", + "journalvolume.page.titleprefix": "Sveska časopisa:", + "journalvolume.page.volume": "Sveska", + "iiifsearchable.listelement.badge": "Spisak medija", + "iiifsearchable.page.titleprefix": "Dokument:", + "iiifsearchable.page.doi": "Trajna veza:", + "iiifsearchable.page.issue": "Izdanje:", + "iiifsearchable.page.description": "Opis:", + "iiifviewer.fullscreen.notice": "Koristite ceo ekran da bolje vidite.", + "iiif.listelement.badge": "Image Media", + "iiif.page.titleprefix": "Slika:", + "iiif.page.doi": "Trajna veza:", + "iiif.page.issue": "Izdanje:", + "iiif.page.description": "Opis:", + "loading.bitstream": "Učitavanje bitstream-a...", + "loading.bitstreams": "Učitavanje bitstream-ova...", + "loading.browse-by": "Učitavanje stavki...", + "loading.browse-by-page": "Učitavanje stranice...", + "loading.collection": "Učitavanje kolekcije...", + "loading.collections": "Učitavanje kolekcija...", + "loading.content-source": "Učitavanje izvora sadržaja...", + "loading.community": "Učitavanje zajednice...", + "loading.default": "Učitavanje...", + "loading.item": "Učitavanje stavke...", + "loading.items": "Učitavanje stavki...", + "loading.mydspace-results": "Učitavanje stavki...", + "loading.objects": "Učitavanje...", + "loading.recent-submissions": "Učitavanje nedavnih podnesaka...", + "loading.search-results": "Učitavanje rezultata pretrage...", + "loading.sub-collections": "Učitavanje potkolekcija...", + "loading.sub-communities": "Učitavanje podzajednica...", + "loading.top-level-communities": "Učitavanje zajednica najvišeg nivoa...", + "login.form.email": "Email adresa", + "login.form.forgot-password": "Zaboravili ste lozinku?", + "login.form.header": "Molimo prijavite se na DSpace", + "login.form.new-user": "Novi korisnik? Kliknite ovde da se registrujete.", + "login.form.or-divider": "ili", + "login.form.oidc": "Prijavite se sa OIDC", + "login.form.orcid": "Prijavite se sa ORCID-om", + "login.form.password": "Lozinka", + "login.form.shibboleth": "Prijavite se sa Shibboleth", + "login.form.submit": "Prijavite se", + "login.title": "Prijavite se", + "login.breadcrumbs": "Prijavite se", + "logout.form.header": "Odjavite se sa DSpace-a", + "logout.form.submit": "Odjavite se", + "logout.title": "Odjavite se", + "menu.header.admin": "Menadžment", + "menu.header.image.logo": "Logo repozitorijuma", + "menu.header.admin.description": "Menadžment meni", + "menu.section.access_control": "Kontrola pristupa", + "menu.section.access_control_authorizations": "Ovlašćenja", + "menu.section.access_control_bulk": "Upravljanje masovnim pristupom", + "menu.section.access_control_groups": "Grupe", + "menu.section.access_control_people": "Ljudi", + "menu.section.admin_search": "Admin pretraga", + "menu.section.browse_community": "Ova zajednica", + "menu.section.browse_community_by_author": "Po autoru", + "menu.section.browse_community_by_issue_date": "Po datumu izdanja", + "menu.section.browse_community_by_title": "Po naslovu", + "menu.section.browse_global": "Čitav repozitorijum", + "menu.section.browse_global_by_author": "Po autoru", + "menu.section.browse_global_by_dateissued": "Po datumu izdanja", + "menu.section.browse_global_by_subject": "Po predmetu", + "menu.section.browse_global_by_srsc": "Po kategoriji predmeta", + "menu.section.browse_global_by_title": "Po naslovu", + "menu.section.browse_global_communities_and_collections": "Zajednice i kolekcije", + "menu.section.control_panel": "Kontrolna tabla", + "menu.section.curation_task": "Kurativni zadatak", + "menu.section.edit": "Urediti", + "menu.section.edit_collection": "Kolekcija", + "menu.section.edit_community": "Zajednica", + "menu.section.edit_item": "Stavka", + "menu.section.export": "Izvoz", + "menu.section.export_collection": "Kolekcija", + "menu.section.export_community": "Zajednica", + "menu.section.export_item": "Stavka", + "menu.section.export_metadata": "Metapodaci", + "menu.section.export_batch": "Grupni izvoz (ZIP)", + "menu.section.icon.access_control": "Odeljak menija Kontrola pristupa", + "menu.section.icon.admin_search": "Odeljak menija za admin pretragu", + "menu.section.icon.control_panel": "Odeljak menija kontrolne table", + "menu.section.icon.curation_tasks": "Odeljak menija Zadatak kuriranja", + "menu.section.icon.edit": "Uredite odeljak menija", + "menu.section.icon.export": "Izvezite odeljak menija", + "menu.section.icon.find": "Pronađite odeljak menija", + "menu.section.icon.health": "Odeljak menija za zdravstvenu proveru", + "menu.section.icon.import": "Uvezite odeljak menija", + "menu.section.icon.new": "Novi odeljak menija", + "menu.section.icon.pin": "Zakačite bočnu traku", + "menu.section.icon.processes": "Procesi provere zdravlja", + "menu.section.icon.registries": "Odeljak menija Registri", + "menu.section.icon.statistics_task": "Odeljak menija Statistički zadatak", + "menu.section.icon.workflow": "Odeljak menija Administracija procesa rada", + "menu.section.icon.unpin": "Otkačite bočnu traku", + "menu.section.import": "Uvoz", + "menu.section.import_batch": "Grupni uvoz (ZIP)", + "menu.section.import_metadata": "Metapodaci", + "menu.section.new": "Novo", + "menu.section.new_collection": "Kolekcija", + "menu.section.new_community": "Zajednica", + "menu.section.new_item": "Stavka", + "menu.section.new_item_version": "Verzija stavke", + "menu.section.new_process": "Proces", + "menu.section.pin": "Zakačite bočnu traku", + "menu.section.unpin": "Otkačite bočnu traku", + "menu.section.processes": "Procesi", + "menu.section.health": "Zdravlje", + "menu.section.registries": "Registri", + "menu.section.registries_format": "Format", + "menu.section.registries_metadata": "Metapodaci", + "menu.section.statistics": "Statistika", + "menu.section.statistics_task": "Statistički zadatak", + "menu.section.toggle.access_control": "Uključite odeljak Kontrola pristupa", + "menu.section.toggle.control_panel": "Uključite odeljak Kontrolna tabla", + "menu.section.toggle.curation_task": "Uključi/isključi odeljak Zadatak kuriranja", + "menu.section.toggle.edit": "Uključite odeljak Uredi", + "menu.section.toggle.export": "Uključite odeljak Izvezi", + "menu.section.toggle.find": "Uključi odeljak Pronađi", + "menu.section.toggle.import": "Uključite odeljak Uvezi", + "menu.section.toggle.new": "Uključite novi odeljak", + "menu.section.toggle.registries": "Uključite odeljak Registri", + "menu.section.toggle.statistics_task": "Uključi/isključi odeljak statistički zadatak", + "menu.section.workflow": "Administracija procesa rada", + "metadata-export-search.tooltip": "Izvezite rezultate pretrage kao CSV", + "metadata-export-search.submit.success": "Izvoz je uspešno započet", + "metadata-export-search.submit.error": "Pokretanje izvoza nije uspelo", + "mydspace.breadcrumbs": "Moj DSpace", + "mydspace.description": "", + "mydspace.messages.controller-help": "Izaberite ovu opciju da biste poslali poruku podnosiocu stavke.", + "mydspace.messages.description-placeholder": "Unesite svoju poruku ovde...", + "mydspace.messages.hide-msg": "Sakrijte poruku", + "mydspace.messages.mark-as-read": "Označite kao pročitano", + "mydspace.messages.mark-as-unread": "Označite kao nepročitanu", + "mydspace.messages.no-content": "Bez sadržaja.", + "mydspace.messages.no-messages": "Još nema poruka.", + "mydspace.messages.send-btn": "Pošalji", + "mydspace.messages.show-msg": "Prikaži poruku", + "mydspace.messages.subject-placeholder": "Predmet...", + "mydspace.messages.submitter-help": "Izaberite ovu opciju da biste poslali poruku kontroloru.", + "mydspace.messages.title": "Poruke", + "mydspace.messages.to": "Do", + "mydspace.new-submission": "Novi podnesak", + "mydspace.new-submission-external": "Uvezite metapodatke iz spoljnog izvora", + "mydspace.new-submission-external-short": "Uvezite metapodatke", + "mydspace.results.head": "Vaši podnesci", + "mydspace.results.no-abstract": "Nema sažetka", + "mydspace.results.no-authors": "Nema autora", + "mydspace.results.no-collections": "Nema kolekcija", + "mydspace.results.no-date": "Nema datuma", + "mydspace.results.no-files": "Nema fajlova", + "mydspace.results.no-results": "Nema stavki za prikaz", + "mydspace.results.no-title": "Bez naslova", + "mydspace.results.no-uri": "Nema URI", + "mydspace.search-form.placeholder": "Pretraga u mydspace...", + "mydspace.show.workflow": "Radni zadaci", + "mydspace.show.workspace": "Vaši podnesci", + "mydspace.show.supervisedWorkspace": "Nadzirane stavke", + "mydspace.status.mydspaceArchived": "Arhivirano", + "mydspace.status.mydspaceValidation": "Validacija", + "mydspace.status.mydspaceWaitingController": "Čeka se kontroler", + "mydspace.status.mydspaceWorkflow": "Radni proces", + "mydspace.status.mydspaceWorkspace": "Radni prostor", + "mydspace.title": "MyDSpace", + "mydspace.upload.upload-failed": "Greška pri kreiranju novog radnog prostora. Molimo proverite otpremljeni sadržaj pre nego što pokušate ponovo.", + "mydspace.upload.upload-failed-manyentries": "Neobrađen fajl. Otkriveno je previše unosa, ali je dozvoljen samo za jedan fajl.", + "mydspace.upload.upload-failed-moreonefile": "Neobrađen zahtev. Dozvoljen je samo jedan fajl.", + "mydspace.upload.upload-multiple-successful": "{{qty}} novih stavki radnog prostora je kreirano.", + "mydspace.view-btn": "Pogled", + "nav.browse.header": "Čitav repozitorijum", + "nav.community-browse.header": "Od zajednice", + "nav.context-help-toggle": "Uključite dodatnu pomoć", + "nav.language": "Promena jezika", + "nav.login": "Prijavi se", + "nav.user-profile-menu-and-logout": "Meni korisničkog profila i odjava", + "nav.logout": "Odjaviti se", + "nav.main.description": "Glavna navigaciona traka", + "nav.mydspace": "MyDSpace", + "nav.profile": "Profil", + "nav.search": "Pretraga", + "nav.search.button": "Pošaljite pretragu", + "nav.statistics.header": "Statistika", + "nav.stop-impersonating": "Prestanite da se predstavljate kao Eperson", + "nav.subscriptions": "Pretplate", + "nav.toggle": "Uključivanje navigacije", + "nav.user.description": "Traka korisničkog profila", + "none.listelement.badge": "Stavka", + "orgunit.listelement.badge": "Organizaciona jedinica", + "orgunit.listelement.no-title": "Bez naslova", + "orgunit.page.city": "Grad", + "orgunit.page.country": "Država", + "orgunit.page.dateestablished": "Datum postavljanja", + "orgunit.page.description": "Opis", + "orgunit.page.edit": "Izmeniti ovu stavku", + "orgunit.page.id": "ID", + "orgunit.page.titleprefix": "Organizaciona jedinica:", + "pagination.options.description": "Opcije straničenja", + "pagination.results-per-page": "Rezultati po stranici", + "pagination.showing.detail": "{{ range }} od {{ total }}", + "pagination.showing.label": "Prikazuje se", + "pagination.sort-direction": "Opcije sortiranja", + "person.listelement.badge": "Osoba", + "person.listelement.no-title": "Ime nije pronađeno", + "person.page.birthdate": "Datum rođenja", + "person.page.edit": "Izmeniti ovu stavku", + "person.page.email": "Email adresa", + "person.page.firstname": "Ime", + "person.page.jobtitle": "Zvanje", + "person.page.lastname": "Prezime", + "person.page.name": "Ime", + "person.page.link.full": "Prikaži sve metapodatke", + "person.page.orcid": "ORCID", + "person.page.staffid": "ID zaposlenih", + "person.page.titleprefix": "Osoba:", + "person.search.results.head": "Rezultati pretrage osoba", + "person-relationships.search.results.head": "Rezultati pretrage osoba", + "person.search.title": "Pretraga osoba", + "process.new.select-parameters": "Parametri", + "process.new.cancel": "Otkazati", + "process.new.submit": "Sačuvati", + "process.new.select-script": "Skripta", + "process.new.select-script.placeholder": "Izaberite skriptu...", + "process.new.select-script.required": "Skripta je obavezna", + "process.new.parameter.file.upload-button": "Izaberite fajl...", + "process.new.parameter.file.required": "Molimo izaberite fajl", + "process.new.parameter.string.required": "Vrednost parametra je obavezna", + "process.new.parameter.type.value": "vrednost", + "process.new.parameter.type.file": "fajl", + "process.new.parameter.required.missing": "Sledeći parametri su obavezni, ali još uvek nedostaju:", + "process.new.notification.success.title": "Uspeh", + "process.new.notification.success.content": "Proces je uspešno kreiran", + "process.new.notification.error.title": "Greška", + "process.new.notification.error.content": "Došlo je do greške pri kreiranju ovog procesa", + "process.new.notification.error.max-upload.content": "Fajl prevazilazi maksimalnu veličinu za otpremanje", + "process.new.header": "Kreirajte novi proces", + "process.new.title": "Kreirajte novi proces", + "process.new.breadcrumbs": "Kreirajte novi proces", + "process.detail.arguments": "Argumenti", + "process.detail.arguments.empty": "Ovaj proces ne sadrži argumente", + "process.detail.back": "Nazad", + "process.detail.output": "Izlaz procesa", + "process.detail.logs.button": "Preuzmite izlaz procesa", + "process.detail.logs.loading": "Preuzimanje", + "process.detail.logs.none": "Ovaj proces nema izlaz", + "process.detail.output-files": "Izlazni fajlovi", + "process.detail.output-files.empty": "Ovaj proces ne sadrži izlazne fajlove", + "process.detail.script": "Skripta", + "process.detail.title": "Proces: {{ id }} - {{ name }}", + "process.detail.start-time": "Vreme početka", + "process.detail.end-time": "Vreme završetka", + "process.detail.status": "Status", + "process.detail.create": "Napravite sličan proces", + "process.detail.actions": "Akcije", + "process.detail.delete.button": "Izbrišite proces", + "process.detail.delete.header": "Izbrišite proces", + "process.detail.delete.body": "Da li ste sigurni da želite da izbrišete trenutni proces?", + "process.detail.delete.cancel": "Poništiti, otkazati", + "process.detail.delete.confirm": "Izbrišite proces", + "process.detail.delete.success": "Proces je uspešno obrisan.", + "process.detail.delete.error": "Nešto je pošlo naopako prilikom brisanja procesa", + "process.overview.table.finish": "Vreme završetka (UTC)", + "process.overview.table.id": "ID procesa", + "process.overview.table.name": "Ime", + "process.overview.table.start": "Vreme početka (UTC)", + "process.overview.table.status": "Status", + "process.overview.table.user": "Korisnik", + "process.overview.title": "Pregled procesa", + "process.overview.breadcrumbs": "Pregled procesa", + "process.overview.new": "Novo", + "process.overview.table.actions": "Akcije", + "process.overview.delete": "Izbrišite {{count}} procesa", + "process.overview.delete.clear": "Očistite izbor za brisanje", + "process.overview.delete.processing": "Brišu se procesi ({{count}}). Sačekajte da se brisanje u potpunosti završi. Imajte na umu da ovo može potrajati.", + "process.overview.delete.body": "Da li ste sigurni da želite da izbrišete {{count}} proces(e)?", + "process.overview.delete.header": "Izbrišite procese", + "process.bulk.delete.error.head": "Greška u procesu brisanja", + "process.bulk.delete.error.body": "Nije moguće izbrisati proces sa ID-om {{processId}}. Preostali procesi će nastaviti da se brišu.", + "process.bulk.delete.success": "Procesi ({{count}}) su uspešno izbrisani", + "profile.breadcrumbs": "Ažuriranje profila", + "profile.card.identify": "Identitet", + "profile.card.security": "Bezbednost", + "profile.form.submit": "Sačuvati", + "profile.groups.head": "Grupe ovlašćenja kojima pripadate", + "profile.special.groups.head": "Autorizacija posebnih grupa kojima pripadate", + "profile.head": "Ažuriranje profil", + "profile.metadata.form.error.firstname.required": "Ime je obavezno", + "profile.metadata.form.error.lastname.required": "Prezime je obavezno", + "profile.metadata.form.label.email": "Email adresa", + "profile.metadata.form.label.firstname": "Ime", + "profile.metadata.form.label.language": "Jezik", + "profile.metadata.form.label.lastname": "Prezime", + "profile.metadata.form.label.phone": "Kontakt telefon", + "profile.metadata.form.notifications.success.content": "Vaše promene na profilu su sačuvane.", + "profile.metadata.form.notifications.success.title": "Profil je sačuvan", + "profile.notifications.warning.no-changes.content": "Nisu napravljene nikakve promene na profilu.", + "profile.notifications.warning.no-changes.title": "Bez promene", + "profile.security.form.error.matching-passwords": "Lozinke se ne poklapaju.", + "profile.security.form.info": "Opciono, možete da unesete novu lozinku u polje ispod i potvrdite je tako što ćete je ponovo ukucati u drugo polje.", + "profile.security.form.label.password": "Lozinka", + "profile.security.form.label.passwordrepeat": "Ponovo otkucajte da biste potvrdili", + "profile.security.form.label.current-password": "Trenutna lozinka", + "profile.security.form.notifications.success.content": "Vaše promene lozinke su sačuvane.", + "profile.security.form.notifications.success.title": "Lozinka je sačuvana", + "profile.security.form.notifications.error.title": "Greška pri promeni lozinki", + "profile.security.form.notifications.error.change-failed": "Došlo je do greške pri pokušaju promene lozinke. Proverite da li je trenutna lozinka tačna.", + "profile.security.form.notifications.error.not-same": "Navedene lozinke nisu iste.", + "profile.security.form.notifications.error.general": "Popunite obavezna polja bezbednosnog obrasca.", + "profile.title": "Ažuriranje profila", + "profile.card.researcher": "Profil istraživača", + "project.listelement.badge": "Istraživački projekat", + "project.page.contributor": "Saradnici", + "project.page.description": "Opis", + "project.page.edit": "Uredite ovu stavku", + "project.page.expectedcompletion": "Očekivani završetak", + "project.page.funder": "finansijeri", + "project.page.id": "ID", + "project.page.keyword": "Ključne reči", + "project.page.status": "Status", + "project.page.titleprefix": "Istraživački projekat:", + "project.search.results.head": "Rezultati pretrage projekta", + "project-relationships.search.results.head": "Rezultati pretrage projekta", + "publication.listelement.badge": "Publikacija", + "publication.page.description": "Opis", + "publication.page.edit": "Uredite ovu stavku", + "publication.page.journal-issn": "Časopis ISSN", + "publication.page.journal-title": "Naslov časopisa", + "publication.page.publisher": "Izdavač", + "publication.page.titleprefix": "Publikacija:", + "publication.page.volume-title": "Naslov sveske", + "publication.search.results.head": "Rezultati pretrage publikacije", + "publication-relationships.search.results.head": "Rezultati pretrage publikacije", + "publication.search.title": "Pretraga publikacija", + "media-viewer.next": "Sledeće", + "media-viewer.previous": "Prethodno", + "media-viewer.playlist": "Play lista", + "register-email.title": "Registracija novog korisnika", + "register-page.create-profile.header": "Napravite profil", + "register-page.create-profile.identification.header": "Identifikovati", + "register-page.create-profile.identification.email": "Email adresa", + "register-page.create-profile.identification.first-name": "Ime *", + "register-page.create-profile.identification.first-name.error": "Molimo unesite ime", + "register-page.create-profile.identification.last-name": "Prezime *", + "register-page.create-profile.identification.last-name.error": "Molimo unesite prezime", + "register-page.create-profile.identification.contact": "Kontakt telefon", + "register-page.create-profile.identification.language": "Jezik", + "register-page.create-profile.security.header": "Bezbednost", + "register-page.create-profile.security.info": "Molimo unesite lozinku u polje ispod i potvrdite je tako što ćete je ponovo uneti u drugo polje.", + "register-page.create-profile.security.label.password": "Lozinka *", + "register-page.create-profile.security.label.passwordrepeat": "Unesite ponovo da potvrdite *", + "register-page.create-profile.security.error.empty-password": "Molimo unesite lozinku u polje ispod.", + "register-page.create-profile.security.error.matching-passwords": "Lozinke se ne poklapaju.", + "register-page.create-profile.submit": "Završite registraciju", + "register-page.create-profile.submit.error.content": "Nešto nije u redu prilikom registracije novog korisnika.", + "register-page.create-profile.submit.error.head": "Neuspešna registracija", + "register-page.create-profile.submit.success.content": "Registracija je uspešna. Prijavljeni ste kao kreirani korisnik.", + "register-page.create-profile.submit.success.head": "Registracija je završena", + "register-page.registration.header": "Registracija novog korisnika", + "register-page.registration.info": "Registrujte nalog da biste se pretplatili na kolekcije za ažuriranja putem email-a i pošaljite nove stavke na DSpace.", + "register-page.registration.email": "Email adresa *", + "register-page.registration.email.error.required": "Molimo unesite email adresu", + "register-page.registration.email.error.not-email-form": "Molimo unesite važeću email adresu.", + "register-page.registration.email.error.not-valid-domain": "Koristite email sa dozvoljenim domenima: {{ domains }}", + "register-page.registration.email.hint": "Ova adresa će biti verifikovana i korišćena kao vaše korisničko ime.", + "register-page.registration.submit": "Registrovati", + "register-page.registration.success.head": "Verifikacioni email je poslat", + "register-page.registration.success.content": "Email je poslat na {{ email }} koji sadrži poseban URL i dalja uputstva.", + "register-page.registration.error.head": "Greška pri pokušaju registracije email-a", + "register-page.registration.error.content": "Došlo je do greške pri registraciji sledeće email adrese: {{ email }}", + "register-page.registration.error.recaptcha": "Greška pri pokušaju autentifikacije pomoću recaptcha", + "register-page.registration.google-recaptcha.must-accept-cookies": "Da biste se registrovali, morate prihvatiti kolačiće za registraciju i vraćanje lozinke (Google reCaptcha).", + "register-page.registration.error.maildomain": "Ova email adresa nije na listi domena koji se mogu registrovati. Dozvoljeni domeni su {{ domains }}", + "register-page.registration.google-recaptcha.open-cookie-settings": "Otvorite podešavanja kolačića", + "register-page.registration.google-recaptcha.notification.title": "Google reCaptcha", + "register-page.registration.google-recaptcha.notification.message.error": "Došlo je do greške tokom reCaptcha verifikacije", + "register-page.registration.google-recaptcha.notification.message.expired": "Verifikacija je istekla. Molimo potvrdite ponovo.", + "register-page.registration.info.maildomain": "Nalozi se mogu registrovati za email adrese domena", + "relationships.add.error.relationship-type.content": "Nije pronađeno odgovarajuće podudaranje za tip veze {{ type }} između dve stavke", + "relationships.add.error.server.content": "Server je vratio grešku", + "relationships.add.error.title": "Nije moguće dodati vezu", + "relationships.isAuthorOf": "Autori", + "relationships.isAuthorOf.Person": "Autori (osoba)", + "relationships.isAuthorOf.OrgUnit": "Autori (organizacione jedinice)", + "relationships.isIssueOf": "Izdanja časopisa", + "relationships.isJournalIssueOf": "Izdanja časopsa", + "relationships.isJournalOf": "Časopisi", + "relationships.isOrgUnitOf": "Organizacione jedinice", + "relationships.isPersonOf": "Autori", + "relationships.isProjectOf": "Istraživački projekti", + "relationships.isPublicationOf": "Izdanja", + "relationships.isPublicationOfJournalIssue": "Članci", + "relationships.isSingleJournalOf": "Časopis", + "relationships.isSingleVolumeOf": "Sveska časopisa", + "relationships.isVolumeOf": "Sveske časopisa", + "relationships.isContributorOf": "Saradnici", + "relationships.isContributorOf.OrgUnit": "Saradnik (Organizaciona jedinica)", + "relationships.isContributorOf.Person": "Saradnik", + "relationships.isFundingAgencyOf.OrgUnit": "Osnivač", + "repository.image.logo": "Logo repozitorijuma", + "repository.title": "DSpace Repozitorijum", + "repository.title.prefix": "DSpace Repozitorijum ::", + "resource-policies.add.button": "Dodati", + "resource-policies.add.for.": "Dodajte nove smernice", + "resource-policies.add.for.bitstream": "Dodajte nove bitstream smernice", + "resource-policies.add.for.bundle": "Dodajte nove smernice paketa", + "resource-policies.add.for.item": "Dodajte nove smernice stavki", + "resource-policies.add.for.community": "Dodajte nove smernice zajednice", + "resource-policies.add.for.collection": "Dodajte nove smernice kolekcija", + "resource-policies.create.page.heading": "Kreirajte nove smernice resursa za", + "resource-policies.create.page.failure.content": "Došlo je do greške pri kreiranju smernica resursa.", + "resource-policies.create.page.success.content": "Operacija uspela", + "resource-policies.create.page.title": "Kreirajte nove smernice resursa", + "resource-policies.delete.btn": "Izbrišite izabrano", + "resource-policies.delete.btn.title": "Izbrišite izabrane smernice resursa", + "resource-policies.delete.failure.content": "Došlo je do greške prilikom brisanja izabranih smernica resursa.", + "resource-policies.delete.success.content": "Operacija uspela", + "resource-policies.edit.page.heading": "Izmenite smernice resursa", + "resource-policies.edit.page.failure.content": "Došlo je do greške prilikom izmene smernica resursa.", + "resource-policies.edit.page.target-failure.content": "Došlo je do greške prilikom izmene cilja (ePerson ili grupe) smernica resursa.", + "resource-policies.edit.page.other-failure.content": "Došlo je do greške prilikom izmene smernica resursa. Cilj (ePerson ili grupa) je uspešno ažuriran.", + "resource-policies.edit.page.success.content": "Operacija uspela", + "resource-policies.edit.page.title": "Izmena smernica resursa", + "resource-policies.form.action-type.label": "Izabrati vrstu akcije", + "resource-policies.form.action-type.required": "Morate da izaberete akciju polise resursa.", + "resource-policies.form.eperson-group-list.label": "Eperson ili grupa koja će dobiti ovlašćenje", + "resource-policies.form.eperson-group-list.select.btn": "Izabrati", + "resource-policies.form.eperson-group-list.tab.eperson": "Potražite ePerson", + "resource-policies.form.eperson-group-list.tab.group": "Potražite grupu", + "resource-policies.form.eperson-group-list.table.headers.action": "Postupak", + "resource-policies.form.eperson-group-list.table.headers.id": "ID", + "resource-policies.form.eperson-group-list.table.headers.name": "Ime", + "resource-policies.form.eperson-group-list.modal.header": "Ne može se promeniti tip", + "resource-policies.form.eperson-group-list.modal.text1.toGroup": "Nije moguće zameniti ePerson sa grupom.", + "resource-policies.form.eperson-group-list.modal.text1.toEPerson": "Nije moguće zameniti grupu sa ePerson.", + "resource-policies.form.eperson-group-list.modal.text2": "Izbrišite trenutne polise resursa i kreirajte nove sa željenim tipom.", + "resource-policies.form.eperson-group-list.modal.close": "Ok", + "resource-policies.form.date.end.label": "Datum završetka", + "resource-policies.form.date.start.label": "Datum početka", + "resource-policies.form.description.label": "Opis", + "resource-policies.form.name.label": "Ime", + "resource-policies.form.policy-type.label": "Izaberite tip polise", + "resource-policies.form.policy-type.required": "Morate da izaberete tip polise resursa.", + "resource-policies.table.headers.action": "Postupak", + "resource-policies.table.headers.date.end": "Datum završetka", + "resource-policies.table.headers.date.start": "Datum početka", + "resource-policies.table.headers.edit": "Izmeniti", + "resource-policies.table.headers.edit.group": "Izmeniti grupu", + "resource-policies.table.headers.edit.policy": "Izmeniti smernice", + "resource-policies.table.headers.eperson": "Eperson", + "resource-policies.table.headers.group": "Grupa", + "resource-policies.table.headers.id": "ID", + "resource-policies.table.headers.name": "Ime", + "resource-policies.table.headers.policyType": "tip", + "resource-policies.table.headers.title.for.bitstream": "Smernice za bitstream", + "resource-policies.table.headers.title.for.bundle": "Smernice za paket", + "resource-policies.table.headers.title.for.item": "Smernice za stavku", + "resource-policies.table.headers.title.for.community": "Smernice za zajednicu", + "resource-policies.table.headers.title.for.collection": "Smernice za kolekciju", + "search.description": "", + "search.switch-configuration.title": "Prikaži", + "search.title": "Pretraga", + "search.breadcrumbs": "Pretraga", + "search.search-form.placeholder": "Pretražite spremište...", + "search.filters.applied.f.author": "Autor", + "search.filters.applied.f.dateIssued.max": "Datum završetka", + "search.filters.applied.f.dateIssued.min": "Datum početka", + "search.filters.applied.f.dateSubmitted": "Datum prihvatanja", + "search.filters.applied.f.discoverable": "Nije moguće otkriti", + "search.filters.applied.f.entityType": "Tip stavke", + "search.filters.applied.f.has_content_in_original_bundle": "Ima fajlove", + "search.filters.applied.f.itemtype": "Tip", + "search.filters.applied.f.namedresourcetype": "Status", + "search.filters.applied.f.subject": "Predmet", + "search.filters.applied.f.submitter": "Podnosilac", + "search.filters.applied.f.jobTitle": "Zvanje", + "search.filters.applied.f.birthDate.max": "Rođenje - krajnji datum", + "search.filters.applied.f.birthDate.min": "Rođenje - početni datum", + "search.filters.applied.f.supervisedBy": "Pregledao", + "search.filters.applied.f.withdrawn": "Povučen", + "search.filters.filter.author.head": "Autor", + "search.filters.filter.author.placeholder": "Ime autora", + "search.filters.filter.author.label": "Pretražite ime autora", + "search.filters.filter.birthDate.head": "Datum rođenja", + "search.filters.filter.birthDate.placeholder": "Datum rođenja", + "search.filters.filter.birthDate.label": "Pretražite datum rođenja", + "search.filters.filter.collapse": "Skupi filter", + "search.filters.filter.creativeDatePublished.head": "Datum objavljivanja", + "search.filters.filter.creativeDatePublished.placeholder": "Datum objavljivanja", + "search.filters.filter.creativeDatePublished.label": "Pretražite datum objavljivanja", + "search.filters.filter.creativeWorkEditor.head": "Editor", + "search.filters.filter.creativeWorkEditor.placeholder": "Editor", + "search.filters.filter.creativeWorkEditor.label": "Pretraga urednika", + "search.filters.filter.creativeWorkKeywords.head": "Predmet", + "search.filters.filter.creativeWorkKeywords.placeholder": "Predmet", + "search.filters.filter.creativeWorkKeywords.label": "Predmet pretrage", + "search.filters.filter.creativeWorkPublisher.head": "Izdavač", + "search.filters.filter.creativeWorkPublisher.placeholder": "Izdavač", + "search.filters.filter.creativeWorkPublisher.label": "Pretraga izdavača", + "search.filters.filter.dateIssued.head": "Datum", + "search.filters.filter.dateIssued.max.placeholder": "Maksimalni datum", + "search.filters.filter.dateIssued.max.label": "Kraj", + "search.filters.filter.dateIssued.min.placeholder": "Minimalni datum", + "search.filters.filter.dateIssued.min.label": "Početak", + "search.filters.filter.dateSubmitted.head": "Datum prihvatanja", + "search.filters.filter.dateSubmitted.placeholder": "Datum prihvatanja", + "search.filters.filter.dateSubmitted.label": "Pretraga datuma prihvatanja", + "search.filters.filter.discoverable.head": "Nije moguće otkriti", + "search.filters.filter.withdrawn.head": "Povučen", + "search.filters.filter.entityType.head": "Tip stavke", + "search.filters.filter.entityType.placeholder": "Tip stavke", + "search.filters.filter.entityType.label": "Pretražite tip stavke", + "search.filters.filter.expand": "Proširi filter", + "search.filters.filter.has_content_in_original_bundle.head": "Ima fajlove", + "search.filters.filter.itemtype.head": "Tip", + "search.filters.filter.itemtype.placeholder": "Tip", + "search.filters.filter.itemtype.label": "Tip pretrage", + "search.filters.filter.jobTitle.head": "Zvanje", + "search.filters.filter.jobTitle.placeholder": "Zvanje", + "search.filters.filter.jobTitle.label": "Pretraga zvanja", + "search.filters.filter.knowsLanguage.head": "Poznati jezik", + "search.filters.filter.knowsLanguage.placeholder": "Poznati jezik", + "search.filters.filter.knowsLanguage.label": "Pretražite poznati jezik", + "search.filters.filter.namedresourcetype.head": "Status", + "search.filters.filter.namedresourcetype.placeholder": "Status", + "search.filters.filter.namedresourcetype.label": "Status pretrage", + "search.filters.filter.objectpeople.head": "Ljudi", + "search.filters.filter.objectpeople.placeholder": "Ljudi", + "search.filters.filter.objectpeople.label": "Pretražite ljude", + "search.filters.filter.organizationAddressCountry.head": "Država", + "search.filters.filter.organizationAddressCountry.placeholder": "Država", + "search.filters.filter.organizationAddressCountry.label": "Pretražite državu", + "search.filters.filter.organizationAddressLocality.head": "Grad", + "search.filters.filter.organizationAddressLocality.placeholder": "Grad", + "search.filters.filter.organizationAddressLocality.label": "Pretražite grad", + "search.filters.filter.organizationFoundingDate.head": "Datum osnivanja", + "search.filters.filter.organizationFoundingDate.placeholder": "Datum osnivanja", + "search.filters.filter.organizationFoundingDate.label": "Pretražite datum osnivanja", + "search.filters.filter.scope.head": "Opseg", + "search.filters.filter.scope.placeholder": "Filter opsega", + "search.filters.filter.scope.label": "Pretražite filter opsega", + "search.filters.filter.show-less": "Skupiti", + "search.filters.filter.show-more": "Prikaži više", + "search.filters.filter.subject.head": "Predmet", + "search.filters.filter.subject.placeholder": "Predmet", + "search.filters.filter.subject.label": "Predmet pretrage", + "search.filters.filter.submitter.head": "Podnosilac", + "search.filters.filter.submitter.placeholder": "Podnosilac", + "search.filters.filter.submitter.label": "Podnosilac pretrage", + "search.filters.filter.show-tree": "Pregledajte stablo {{ name }}", + "search.filters.filter.supervisedBy.head": "Pregledao", + "search.filters.filter.supervisedBy.placeholder": "Pregledao", + "search.filters.filter.supervisedBy.label": "Pretragu nadgledao", + "search.filters.entityType.JournalIssue": "Izdanja časopisa", + "search.filters.entityType.JournalVolume": "Sveska časopisa", + "search.filters.entityType.OrgUnit": "Organizaciona jedinica", + "search.filters.has_content_in_original_bundle.true": "Da", + "search.filters.has_content_in_original_bundle.false": "Ne", + "search.filters.discoverable.true": "Ne", + "search.filters.discoverable.false": "Da", + "search.filters.namedresourcetype.Archived": "Arhivirano", + "search.filters.namedresourcetype.Validation": "Ispravnost", + "search.filters.namedresourcetype.Waiting for Controller": "Čeka se kontrolor", + "search.filters.namedresourcetype.Workflow": "Proces rada", + "search.filters.namedresourcetype.Workspace": "Radni prostor", + "search.filters.withdrawn.true": "Da", + "search.filters.withdrawn.false": "Ne", + "search.filters.head": "Filteri", + "search.filters.reset": "Resetovanje filtera", + "search.filters.search.submit": "Prihvatite", + "search.form.search": "Pretraga", + "search.form.search_dspace": "Svi repozitorijumi", + "search.form.scope.all": "Čitav repozitorijum", + "search.results.head": "Rezultati pretrage", + "search.results.no-results": "Vaša pretraga nije dala rezultate. Imate problema sa pronalaženjem onoga što tražite? Pokušajte da stavite", + "search.results.no-results-link": "navodnike oko toga", + "search.results.empty": "Vaša pretraga nije dala rezultate.", + "search.results.view-result": "Pogledati", + "search.results.response.500": "Došlo je do greške tokom izvršavanja upita, molimo pokušajte ponovo kasnije", + "default.search.results.head": "Rezultati pretrage", + "default-relationships.search.results.head": "Rezultati pretrage", + "search.sidebar.close": "Povratak na rezultate", + "search.sidebar.filters.title": "Filteri", + "search.sidebar.open": "Alati za pretragu", + "search.sidebar.results": "rezultati", + "search.sidebar.settings.rpp": "Rezultati po strani", + "search.sidebar.settings.sort-by": "Sortirati po", + "search.sidebar.settings.title": "Podešavanja", + "search.view-switch.show-detail": "Prikazati detalje", + "search.view-switch.show-grid": "Prikazati kao mrežu", + "search.view-switch.show-list": "Prikazati kao listu", + "sorting.ASC": "Rastuće", + "sorting.DESC": "Opadajuće", + "sorting.dc.title.ASC": "Naslov rastuće", + "sorting.dc.title.DESC": "Naslov opadajuće", + "sorting.score.ASC": "Najmanje relevantno", + "sorting.score.DESC": "Najrelevantnije", + "sorting.dc.date.issued.ASC": "Datum izdanja rastuće", + "sorting.dc.date.issued.DESC": "Datum izdanja opadajuće", + "sorting.dc.date.accessioned.ASC": "Datum pristupa rastuće", + "sorting.dc.date.accessioned.DESC": "Datum pristupa opadajuće", + "sorting.lastModified.ASC": "Poslednja izmena rastuće", + "sorting.lastModified.DESC": "Poslednja izmena opadajuće", + "statistics.title": "Statistika", + "statistics.header": "Statistika za {{ scope }}", + "statistics.breadcrumbs": "Statistika", + "statistics.page.no-data": "Nema dostupnih podataka", + "statistics.table.no-data": "Nema dostupnih podataka", + "statistics.table.title.TotalVisits": "Ukupno poseta", + "statistics.table.title.TotalVisitsPerMonth": "Ukupno poseta mesečno", + "statistics.table.title.TotalDownloads": "Posete fajlovima", + "statistics.table.title.TopCountries": "Najviše pregleda po državama", + "statistics.table.title.TopCities": "Najviše pregleda po gradovima", + "statistics.table.header.views": "Pogledi", + "statistics.table.no-name": "(ime objekta se ne može učitati)", + "submission.edit.breadcrumbs": "Izmena podneska", + "submission.edit.title": "Izmena podneska", + "submission.general.cancel": "Otkazati", + "submission.general.cannot_submit": "Nemate dozvolu da podnesete novu prijavu.", + "submission.general.deposit": "Depozit", + "submission.general.discard.confirm.cancel": "Otkazati", + "submission.general.discard.confirm.info": "Ova operacija se ne može opozvati. Da li ste sigurni?", + "submission.general.discard.confirm.submit": "Da siguran sam", + "submission.general.discard.confirm.title": "Odbacite podnesak", + "submission.general.discard.submit": "Odbaciti", + "submission.general.info.saved": "Sačuvano", + "submission.general.info.pending-changes": "Nesačuvane promene", + "submission.general.save": "Sačuvati", + "submission.general.save-later": "Sačuvati za kasnije", + "submission.import-external.page.title": "Uvezite metapodatke iz spoljnog izvora", + "submission.import-external.title": "Uvezite metapodatke iz spoljnog izvora", + "submission.import-external.title.Journal": "Uvezite časopis iz spoljnog izvora", + "submission.import-external.title.JournalIssue": "Uvezite izdanje časopisa iz spoljnog izvora", + "submission.import-external.title.JournalVolume": "Uvezite volume časopisa iz spoljnog izvora", + "submission.import-external.title.OrgUnit": "Uvezite izdavača iz spoljnog izvora", + "submission.import-external.title.Person": "Uvezite osobu iz spoljnog izvora", + "submission.import-external.title.Project": "Uvezite projekat iz spoljnog izvora", + "submission.import-external.title.Publication": "Uvezite publikaciju iz spoljnog izvora", + "submission.import-external.title.none": "Uvezite metapodatke iz spoljnog izvora", + "submission.import-external.page.hint": "Unesite upit iznad da biste pronašli stavke sa veba za uvoz u DSpace.", + "submission.import-external.back-to-my-dspace": "Nazad na MyDSpace", + "submission.import-external.search.placeholder": "Pretraga spoljnog izvora", + "submission.import-external.search.button": "Pretraga", + "submission.import-external.search.button.hint": "Napišite nekoliko reči za pretragu", + "submission.import-external.search.source.hint": "Izaberite spoljni izvor", + "submission.import-external.source.arxiv": "arXiv", + "submission.import-external.source.ads": "NASA/ADS", + "submission.import-external.source.cinii": "CiNii", + "submission.import-external.source.crossref": "CrossRef", + "submission.import-external.source.datacite": "DataCite", + "submission.import-external.source.scielo": "SciELO", + "submission.import-external.source.scopus": "Scopus", + "submission.import-external.source.vufind": "VuFind", + "submission.import-external.source.wos": "Naučna mreža", + "submission.import-external.source.orcidWorks": "ORCID", + "submission.import-external.source.epo": "Evropski zavod za patente (EPO)", + "submission.import-external.source.loading": "Učitavanje...", + "submission.import-external.source.sherpaJournal": "SHERPA časopisi", + "submission.import-external.source.sherpaJournalIssn": "SHERPA časopisi od ISSN", + "submission.import-external.source.sherpaPublisher": "SHERPA Publishers", + "submission.import-external.source.openAIREFunding": "Finansiranje OpenAIRE API-ja", + "submission.import-external.source.orcid": "ORCID", + "submission.import-external.source.pubmed": "Pubmed", + "submission.import-external.source.pubmedeu": "Pubmed Europe", + "submission.import-external.source.lcname": "Biblioteka Kongresnih imena", + "submission.import-external.preview.title": "Pregled stavke", + "submission.import-external.preview.title.Publication": "Pregled publikacije", + "submission.import-external.preview.title.none": "Pregled stavke", + "submission.import-external.preview.title.Journal": "Pregled časopisa", + "submission.import-external.preview.title.OrgUnit": "Pregled organizacione jedinice", + "submission.import-external.preview.title.Person": "Pregled osobe", + "submission.import-external.preview.title.Project": "Pregled projekta", + "submission.import-external.preview.subtitle": "Metapodaci u nastavku su uvezeni iz spoljnog izvora. Biće unapred popunjen kada započnete prihvatanje.", + "submission.import-external.preview.button.import": "Počnite sa prihvatanjem", + "submission.import-external.preview.error.import.title": "Greška pri prihvatanju", + "submission.import-external.preview.error.import.body": "Došlo je do greške tokom ulaznog procesa uvoza spoljašnjeg izvora.", + "submission.sections.describe.relationship-lookup.close": "Zatvori", + "submission.sections.describe.relationship-lookup.external-source.added": "Uspešno je dodat lokalni ulaz u izbor", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.isAuthorOfPublication": "Uvezite udaljenog autora", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal": "Uvezite udaljeni dnevnik", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Issue": "Uvezite udaljeno izdanje časopisa", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Volume": "Uvezite udaljeni opseg časopisa", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.isProjectOfPublication": "Projekat", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.none": "Uvezite udaljenu stavku", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Event": "Uvezite udaljeni događaj", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Product": "Uvezite udaljeni proizvod", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Equipment": "Uvezite udaljenu opremu", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.OrgUnit": "Uvezite udaljenu organizacionu jedinicu", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Funding": "Uvezite udaljeni fond", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Person": "Uvezite udaljenu osobu", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Patent": "Uvezite udaljeni patent", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Project": "Uvezite udaljeni projekat", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.Publication": "Uvezite udaljenu publikaciju", + "submission.sections.describe.relationship-lookup.external-source.import-modal.isProjectOfPublication.added.new-entity": "Dodat je novi entitet!", + "submission.sections.describe.relationship-lookup.external-source.import-modal.isProjectOfPublication.title": "Projekat", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.openAIREFunding": "Finansiranje OpenAIRE API-ja", + "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.title": "Uvezi udaljenog autora", + "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.local-entity": "Lokalni autor je uspešno dodat u izbor", + "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.new-entity": "Spoljašnji autor je uspešno uvezen i dodat u izbor", + "submission.sections.describe.relationship-lookup.external-source.import-modal.authority": "Uprava", + "submission.sections.describe.relationship-lookup.external-source.import-modal.authority.new": "Uvezite kao novi ulaz lokalne uprave", + "submission.sections.describe.relationship-lookup.external-source.import-modal.cancel": "Poništiti, otkazati", + "submission.sections.describe.relationship-lookup.external-source.import-modal.collection": "Izaberite kolekciju u koju ćete uvesti nove ulaze", + "submission.sections.describe.relationship-lookup.external-source.import-modal.entities": "Entiteti", + "submission.sections.describe.relationship-lookup.external-source.import-modal.entities.new": "Uvezite kao novi lokalni entitet", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.lcname": "Uvezite iz LC imena", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.orcid": "Uvezite iz ORCID-a", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaJournal": "Uvezite iz časopisa Sherpa", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaPublisher": "Uvezite iz Sherpa izdavača", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.pubmed": "Uvezite iz PubMed-a", + "submission.sections.describe.relationship-lookup.external-source.import-modal.head.arxiv": "Uvezite iz arXiv", + "submission.sections.describe.relationship-lookup.external-source.import-modal.import": "Uvoz", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.title": "Uvezite udaljeni časopis", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.local-entity": "Uspešno dodat lokalni časopis u izbor", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.new-entity": "Uspešno uvezen i dodat spoljašnji časopis u izbor", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.title": "Uvezite udaljeno izdanje časopisa", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.local-entity": "Uspešno je dodat lokalni broj časopisa u izbor", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.new-entity": "Uspešno uvezen i dodat spoljašnji broj časopisa u izbor", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.title": "Uvezite udaljeni opseg časopisa", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.local-entity": "Uspešno je dodat lokalni volumen časopisa u izbor", + "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.new-entity": "Uspešno uvezen i dodat spoljašnji opseg časopisa u izbor", + "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Izaberite lokalno podudaranje:", + "submission.sections.describe.relationship-lookup.search-tab.deselect-all": "Poništite sve", + "submission.sections.describe.relationship-lookup.search-tab.deselect-page": "Opozovite izbor stranice", + "submission.sections.describe.relationship-lookup.search-tab.loading": "Učitavanje...", + "submission.sections.describe.relationship-lookup.search-tab.placeholder": "Upit za pretragu", + "submission.sections.describe.relationship-lookup.search-tab.search": "Idi", + "submission.sections.describe.relationship-lookup.search-tab.search-form.placeholder": "Pretraga...", + "submission.sections.describe.relationship-lookup.search-tab.select-all": "Izaberi sve", + "submission.sections.describe.relationship-lookup.search-tab.select-page": "Izaberite stranicu", + "submission.sections.describe.relationship-lookup.selected": "Izabrane stavke {{ size }}", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isAuthorOfPublication": "Lokalni autori ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalOfPublication": "Lokalni časopisi ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.Project": "Lokalni projekti ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.Publication": "Lokalne publikacije ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.Person": "Lokalni autori ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.OrgUnit": "Lokalne organizacione jedinice ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataPackage": "Lokalni paketi podataka ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataFile": "Lokalni fajlovi podataka ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.Journal": "Lokalni časopisi ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalIssueOfPublication": "Lokalna izdanja časopisa ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.JournalIssue": "Lokalna izdanja časopisa ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalVolumeOfPublication": "Lokalni opseg časopisa ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.JournalVolume": "Lokalni opseg časopisa ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Sherpa časopisi ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaPublisher": "Sherpa izdavači({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.orcid": "ORCID ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.lcname": "LC imena ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.pubmed": "PubMed ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.arxiv": "arXiv ({{ count }})", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfPublication": "Potražite finansijere", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingOfPublication": "Potražite sredstva", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Potražite organizacione jedinice", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.openAIREFunding": "Finansiranje OpenAIRE API-ja", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isProjectOfPublication": "Projekti", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfProject": "Finansijer projekta", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isPublicationOfAuthor": "Publikacija autora", + "submission.sections.describe.relationship-lookup.selection-tab.title.openAIREFunding": "Finansiranje OpenAIRE API-ja", + "submission.sections.describe.relationship-lookup.selection-tab.title.isProjectOfPublication": "Projekat", + "submission.sections.describe.relationship-lookup.title.isProjectOfPublication": "Projekti", + "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfProject": "Finansijer projekta", + "submission.sections.describe.relationship-lookup.selection-tab.search-form.placeholder": "Pretraga...", + "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Trenutni izbor ({{ count }})", + "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Izdanja časopisa", + "submission.sections.describe.relationship-lookup.title.JournalIssue": "Izdanja časopisa", + "submission.sections.describe.relationship-lookup.title.isJournalVolumeOfPublication": "Sveske časopisa", + "submission.sections.describe.relationship-lookup.title.JournalVolume": "Sveske časopisa", + "submission.sections.describe.relationship-lookup.title.isJournalOfPublication": "Časopisi", + "submission.sections.describe.relationship-lookup.title.isAuthorOfPublication": "Autori", + "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfPublication": "Finansijska agencija", + "submission.sections.describe.relationship-lookup.title.Project": "Projekti", + "submission.sections.describe.relationship-lookup.title.Publication": "Publikacije", + "submission.sections.describe.relationship-lookup.title.Person": "Autori", + "submission.sections.describe.relationship-lookup.title.OrgUnit": "Organizacione jedinice", + "submission.sections.describe.relationship-lookup.title.DataPackage": "Paketi podataka", + "submission.sections.describe.relationship-lookup.title.DataFile": "Fajlovi sa podacima", + "submission.sections.describe.relationship-lookup.title.Funding Agency": "Finansijska agencija", + "submission.sections.describe.relationship-lookup.title.isFundingOfPublication": "Finansiranje", + "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Matična organizaciona jedinica", + "submission.sections.describe.relationship-lookup.title.isPublicationOfAuthor": "Publikacija", + "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Uključite padajući meni", + "submission.sections.describe.relationship-lookup.selection-tab.settings": "Podešavanja", + "submission.sections.describe.relationship-lookup.selection-tab.no-selection": "Vaš izbor je trenutno prazan.", + "submission.sections.describe.relationship-lookup.selection-tab.title.isAuthorOfPublication": "Izabrani autori", + "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalOfPublication": "Izabrani časopisi", + "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalVolumeOfPublication": "Izabrana sveska časopisa", + "submission.sections.describe.relationship-lookup.selection-tab.title.Project": "Izabrani projekti", + "submission.sections.describe.relationship-lookup.selection-tab.title.Publication": "Izabrane publikacije", + "submission.sections.describe.relationship-lookup.selection-tab.title.Person": "Izabrani autori", + "submission.sections.describe.relationship-lookup.selection-tab.title.OrgUnit": "Izabrane organizacione jedinice", + "submission.sections.describe.relationship-lookup.selection-tab.title.DataPackage": "Izabrani paketi podataka", + "submission.sections.describe.relationship-lookup.selection-tab.title.DataFile": "Izabrani fajlovi sa podacima", + "submission.sections.describe.relationship-lookup.selection-tab.title.Journal": "Izabrani časopisi", + "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalIssueOfPublication": "Izabrano izdanje", + "submission.sections.describe.relationship-lookup.selection-tab.title.JournalVolume": "Izabrana sveska časopisa", + "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingAgencyOfPublication": "Izabrana finansijska agencija", + "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Izabrano finansiranje", + "submission.sections.describe.relationship-lookup.selection-tab.title.JournalIssue": "Izabrano izdanje", + "submission.sections.describe.relationship-lookup.selection-tab.title.isChildOrgUnitOf": "Izabrana organizaciona jedinica", + "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaJournal": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaPublisher": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.orcid": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.orcidv2": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.lcname": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.pubmed": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.arxiv": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.crossref": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.epo": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.scopus": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.scielo": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title.wos": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.selection-tab.title": "Rezultati pretrage", + "submission.sections.describe.relationship-lookup.name-variant.notification.content": "Da li želite da sačuvate \"{{ value }}\" kao varijantu imena za ovu osobu da biste vi i drugi mogli da ga ponovo koristite za buduće slanje? Ako to ne uradite, i dalje možete da ga koristite za ovaj podnesak.", + "submission.sections.describe.relationship-lookup.name-variant.notification.confirm": "Sačuvajte novu varijantu imena", + "submission.sections.describe.relationship-lookup.name-variant.notification.decline": "Koristi se samo za ovaj podnesak", + "submission.sections.ccLicense.type": "Tip licence", + "submission.sections.ccLicense.select": "Izaberite tip licence…", + "submission.sections.ccLicense.change": "Promenite tip licence…", + "submission.sections.ccLicense.none": "Nema dostupnih licenci", + "submission.sections.ccLicense.option.select": "Izaberite opciju…", + "submission.sections.ccLicense.link": "Izabrali ste sledeću licencu:", + "submission.sections.ccLicense.confirmation": "Dodeljujem licencu iznad", + "submission.sections.general.add-more": "Dodajte još", + "submission.sections.general.cannot_deposit": "Prijava se ne može dovršiti zbog grešaka u obrascu.
Popunite sva obavezna polja da biste dovršili prijavu.", + "submission.sections.general.collection": "Kolekcija", + "submission.sections.general.deposit_error_notice": "Došlo je do problema prilikom slanja stavke, molimo pokušajte ponovo kasnije.", + "submission.sections.general.deposit_success_notice": "Prijava je uspešno podneta.", + "submission.sections.general.discard_error_notice": "Došlo je do problema pri odbacivanju stavke, molimo pokušajte ponovo kasnije.", + "submission.sections.general.discard_success_notice": "Slanje je uspešno odbačeno.", + "submission.sections.general.metadata-extracted": "Novi metapodaci su izdvojeni i dodati u odeljak {{sectionId}}.", + "submission.sections.general.metadata-extracted-new-section": "Novi odeljak {{sectionId}} je dodat u prijavu.", + "submission.sections.general.no-collection": "Nije pronađena kolekcija", + "submission.sections.general.no-sections": "Nema dostupnih opcija", + "submission.sections.general.save_error_notice": "Došlo je do problema prilikom čuvanja stavke, molimo pokušajte ponovo kasnije.", + "submission.sections.general.save_success_notice": "Prijava je uspešno sačuvana.", + "submission.sections.general.search-collection": "Potražite kolekciju", + "submission.sections.general.sections_not_valid": "Postoje nepotpuni odeljci.", + "submission.sections.identifiers.info": "Sledeći identifikatori će biti kreirani za vašu stavku:", + "submission.sections.identifiers.no_handle": "Za ovu stavku nije vezan handle.", + "submission.sections.identifiers.no_doi": "Nijedan DOIs nije vezan za ovu stavku.", + "submission.sections.identifiers.handle_label": "Handle:", + "submission.sections.identifiers.doi_label": "DOI:", + "submission.sections.identifiers.otherIdentifiers_label": "Ostali identifikatori:", + "submission.sections.submit.progressbar.accessCondition": "Uslovi pristupanja stavki", + "submission.sections.submit.progressbar.CClicense": "Creative Commons licenca", + "submission.sections.submit.progressbar.describe.recycle": "Reciklaža", + "submission.sections.submit.progressbar.describe.stepcustom": "Opisati", + "submission.sections.submit.progressbar.describe.stepone": "Opisati", + "submission.sections.submit.progressbar.describe.steptwo": "Opisati", + "submission.sections.submit.progressbar.detect-duplicate": "Potencijalni duplikati", + "submission.sections.submit.progressbar.identifiers": "Identifikatori", + "submission.sections.submit.progressbar.license": "Dozvola za depozit", + "submission.sections.submit.progressbar.sherpapolicy": "Sherpa propisi", + "submission.sections.submit.progressbar.upload": "Dodaj fajlove", + "submission.sections.submit.progressbar.sherpaPolicies": "Informacije o politici otvorenog pristupa izdavača", + "submission.sections.sherpa-policy.title-empty": "Nema dostupnih informacija o smernicama za izdavače. Ako vaš rad ima pridruženi ISSN, unesite ga iznad da biste videli sve povezane smernice otvorenog pristupa za izdavače.", + "submission.sections.status.errors.title": "Greške", + "submission.sections.status.valid.title": "Važeće", + "submission.sections.status.warnings.title": "Upozorenja", + "submission.sections.status.errors.aria": "Ima greške", + "submission.sections.status.valid.aria": "Važeće je", + "submission.sections.status.warnings.aria": "Ima upozorenja", + "submission.sections.status.info.title": "Dodatne Informacije", + "submission.sections.status.info.aria": "Dodatne Informacije", + "submission.sections.toggle.open": "Otvori odeljak", + "submission.sections.toggle.close": "Zatvori odeljak", + "submission.sections.toggle.aria.open": "Proširite {{sectionHeader}} odeljak", + "submission.sections.toggle.aria.close": "Skupite {{sectionHeader}} odeljak", + "submission.sections.upload.delete.confirm.cancel": "Poništiti, otkazati", + "submission.sections.upload.delete.confirm.info": "Ova operacija se ne može opozvati. Jeste li sigurni?", + "submission.sections.upload.delete.confirm.submit": "Da, siguran sam", + "submission.sections.upload.delete.confirm.title": "Izbrišite bitstream", + "submission.sections.upload.delete.submit": "Izbrišite", + "submission.sections.upload.download.title": "Preuzmite bitstream", + "submission.sections.upload.drop-message": "Spustite fajlove da biste ih priložili stavci", + "submission.sections.upload.edit.title": "Uredite bitstream", + "submission.sections.upload.form.access-condition-label": "Tip uslova pristupa", + "submission.sections.upload.form.access-condition-hint": "Izaberite uslov pristupa koji ćete primeniti na bitstream kada se stavka deponuje", + "submission.sections.upload.form.date-required": "Datum je obavezan.", + "submission.sections.upload.form.date-required-from": "Obavezno odobrenje pristupa od datuma.", + "submission.sections.upload.form.date-required-until": "Obavezno odobrenje pristupa do datuma.", + "submission.sections.upload.form.from-label": "Odobrenje pristupa od", + "submission.sections.upload.form.from-hint": "Izaberite datum od koga se primenjuje odgovarajući uslov pristupa", + "submission.sections.upload.form.from-placeholder": "Od", + "submission.sections.upload.form.group-label": "Grupa", + "submission.sections.upload.form.group-required": "Grupa je obavezna.", + "submission.sections.upload.form.until-label": "Odobrenje pristupa do", + "submission.sections.upload.form.until-hint": "Izaberite datum do kojeg se primenjuje odgovarajući uslov pristupa", + "submission.sections.upload.form.until-placeholder": "Sve dok", + "submission.sections.upload.header.policy.default.nolist": "Otpremljeni fajlovi u kolekciji {{collectionName}} biće dostupne prema sledećim grupama:", + "submission.sections.upload.header.policy.default.withlist": "Imajte na umu da će otpremljeni fajlovi u kolekciji {{collectionName}} biti dostupni, pored onoga što je izričito odlučeno za jedan fajl, sa sledećim grupama:", + "submission.sections.upload.info": "Ovde ćete pronaći sve fajlove koji se trenutno nalaze u stavci. Možete da ažurirate metapodatke fajla i uslove pristupa ili otpremite dodatne fajlove tako što ćete ih prevući i otpustiti bilo gde na stranici.", + "submission.sections.upload.no-entry": "Ne", + "submission.sections.upload.no-file-uploaded": "Još uvek nije otpremljen nijedan fajl.", + "submission.sections.upload.save-metadata": "Sačuvaj metapodatke", + "submission.sections.upload.undo": "Poništiti, otkazati", + "submission.sections.upload.upload-failed": "Otpremanje nije uspelo", + "submission.sections.upload.upload-successful": "Otpremanje je uspešno", + "submission.sections.accesses.form.discoverable-description": "Kada je označeno, ova stavka će biti vidljiva u pretrazi/pregledu. Kada nije označeno, stavka će biti dostupna samo preko direktne veze i nikada se neće pojaviti u pretrazi/pregledu.", + "submission.sections.accesses.form.discoverable-label": "Otkrivanje", + "submission.sections.accesses.form.access-condition-label": "Tip uslova pristupa", + "submission.sections.accesses.form.access-condition-hint": "Izaberite uslov pristupa koji ćete primeniti na stavku kada se deponuje", + "submission.sections.accesses.form.date-required": "Datum je obavezan.", + "submission.sections.accesses.form.date-required-from": "Obavezno odobrenje pristupa od datuma.", + "submission.sections.accesses.form.date-required-until": "Obavezno odobrenje pristupa do datuma.", + "submission.sections.accesses.form.from-label": "Odobrenje pristupa od", + "submission.sections.accesses.form.from-hint": "Izaberite datum od koga se primenjuje odgovarajući uslov pristupa", + "submission.sections.accesses.form.from-placeholder": "Od", + "submission.sections.accesses.form.group-label": "Grupa", + "submission.sections.accesses.form.group-required": "Grupa je obavezna.", + "submission.sections.accesses.form.until-label": "Odobrenje pristupa do", + "submission.sections.accesses.form.until-hint": "Izaberite datum do kojeg se primenjuje odgovarajući uslov pristupa", + "submission.sections.accesses.form.until-placeholder": "Sve dok", + "submission.sections.license.granted-label": "Potvrđujem gore navedenu licencu", + "submission.sections.license.required": "Morate prihvatiti licencu", + "submission.sections.license.notgranted": "Morate prihvatiti licencu", + "submission.sections.sherpa.publication.information": "Informacije o publikaciji", + "submission.sections.sherpa.publication.information.title": "Naslov", + "submission.sections.sherpa.publication.information.issns": "ISSN-ovi", + "submission.sections.sherpa.publication.information.url": "URL", + "submission.sections.sherpa.publication.information.publishers": "Izdavač", + "submission.sections.sherpa.publication.information.romeoPub": "Romeo Pub", + "submission.sections.sherpa.publication.information.zetoPub": "Zeto Pub", + "submission.sections.sherpa.publisher.policy": "Propis za izdavače", + "submission.sections.sherpa.publisher.policy.description": "Informacije u nastavku su pronađene preko SherpaRomea. Na osnovu smernica vašeg izdavača, on pruža savete o tome da li je embargo možda neophodan i/ili koje datoteke možete da otpremite. Ako imate pitanja, kontaktirajte svog administratora sajta putem obrasca za povratne informacije u podnožju.", + "submission.sections.sherpa.publisher.policy.openaccess": "Putevi otvorenog pristupa dozvoljeni politikom ovog časopisa navedeni su u nastavku prema verziji članka. Kliknite na putanju za detaljniji prikaz", + "submission.sections.sherpa.publisher.policy.more.information": "Za više informacija pogledajte sledeće linkove:", + "submission.sections.sherpa.publisher.policy.version": "Verzija", + "submission.sections.sherpa.publisher.policy.embargo": "Embargo", + "submission.sections.sherpa.publisher.policy.noembargo": "Nema embarga", + "submission.sections.sherpa.publisher.policy.nolocation": "Nijedan", + "submission.sections.sherpa.publisher.policy.license": "Licenca", + "submission.sections.sherpa.publisher.policy.prerequisites": "Preduslovi", + "submission.sections.sherpa.publisher.policy.location": "Lokacija", + "submission.sections.sherpa.publisher.policy.conditions": "Uslovi", + "submission.sections.sherpa.publisher.policy.refresh": "Osvežite", + "submission.sections.sherpa.record.information": "Zapišite informaciju", + "submission.sections.sherpa.record.information.id": "ID", + "submission.sections.sherpa.record.information.date.created": "Datum kreiranja", + "submission.sections.sherpa.record.information.date.modified": "Poslednja izmena", + "submission.sections.sherpa.record.information.uri": "URI", + "submission.sections.sherpa.error.message": "Došlo je do greške pri preuzimanju Sherpa informacija", + "submission.submit.breadcrumbs": "Novi podnesak", + "submission.submit.title": "Novi podnesak", + "submission.workflow.generic.delete": "Izbrišite", + "submission.workflow.generic.delete-help": "Izaberite ovu opciju da biste odbacili ovu stavku. Zatim će biti zatraženo da to potvrdite.", + "submission.workflow.generic.edit": "Uredite", + "submission.workflow.generic.edit-help": "Izaberite ovu opciju da biste promenili metapodatke stavke.", + "submission.workflow.generic.view": "Pogledajte", + "submission.workflow.generic.view-help": "Izaberite ovu opciju da biste videli metapodatke stavke.", + "submission.workflow.generic.submit_select_reviewer": "Izaberite recenzenta", + "submission.workflow.generic.submit_select_reviewer-help": "izaberite pomoć recenzenta", + "submission.workflow.generic.submit_score": "Ocena", + "submission.workflow.generic.submit_score-help": "rezultat-pomoć", + "submission.workflow.tasks.claimed.approve": "Odobriti", + "submission.workflow.tasks.claimed.approve_help": "Ako ste pregledali stavku i ako je pogodna za pridruživanje kolekciji, izaberite \"Odobriti\".", + "submission.workflow.tasks.claimed.edit": "Izmeniti", + "submission.workflow.tasks.claimed.edit_help": "Izaberite ovu opciju da biste promenili metapodatke stavke.", + "submission.workflow.tasks.claimed.decline": "Odbiti", + "submission.workflow.tasks.claimed.decline_help": "odbiti pomoć", + "submission.workflow.tasks.claimed.reject.reason.info": "Unesite razlog za odbijanje prijave u polje ispod, navodeći da li podnosilac može da reši problem i ponovo pošalje.", + "submission.workflow.tasks.claimed.reject.reason.placeholder": "Opišite razlog odbijanja", + "submission.workflow.tasks.claimed.reject.reason.submit": "Odbacite stavku", + "submission.workflow.tasks.claimed.reject.reason.title": "Razlog", + "submission.workflow.tasks.claimed.reject.submit": "Odbiti", + "submission.workflow.tasks.claimed.reject_help": "Ako ste pregledali stavku i utvrdili da nije prikladna za pridruživanje kolekciji, izaberite \"Odbij\". Od vas će se zatim tražiti da unesete poruku koja navodi zašto je stavka neprikladna i da li podnosilac treba nešto da promeni i ponovo pošalje.", + "submission.workflow.tasks.claimed.return": "Povratak u grupu", + "submission.workflow.tasks.claimed.return_help": "Vratite zadatak u grupu tako da drugi korisnik može da izvrši zadatak.", + "submission.workflow.tasks.generic.error": "Došlo je do greške u radu...", + "submission.workflow.tasks.generic.processing": "Obrada...", + "submission.workflow.tasks.generic.submitter": "Podnosilac", + "submission.workflow.tasks.generic.success": "Operacija uspela", + "submission.workflow.tasks.pool.claim": "Potraživanje", + "submission.workflow.tasks.pool.claim_help": "Dodelite ovaj zadatak sebi.", + "submission.workflow.tasks.pool.hide-detail": "Sakriti detalje", + "submission.workflow.tasks.pool.show-detail": "Prikazati detalje", + "submission.workspace.generic.view": "Pogledati", + "submission.workspace.generic.view-help": "Izaberite ovu opciju da biste videli metapodatke stavke.", + "submitter.empty": "N/A", + "subscriptions.title": "Pretplate", + "subscriptions.item": "Pretplate na stavke", + "subscriptions.collection": "Pretplate na kolekcije", + "subscriptions.community": "Pretplate za zajednice", + "subscriptions.subscription_type": "Vrsta pretplate", + "subscriptions.frequency": "Učestalost pretplate", + "subscriptions.frequency.D": "Dnevno", + "subscriptions.frequency.M": "Mesečno", + "subscriptions.frequency.W": "Nedeljno", + "subscriptions.tooltip": "Pretplatiti se", + "subscriptions.modal.title": "Pretplate", + "subscriptions.modal.type-frequency": "Vrsta i učestalost", + "subscriptions.modal.close": "Zatvoriti", + "subscriptions.modal.delete-info": "Da biste uklonili ovu pretplatu, molimo posetite stranicu \"Pretplate\" ispod vašeg korisničkog profila", + "subscriptions.modal.new-subscription-form.type.content": "Sadržaj", + "subscriptions.modal.new-subscription-form.frequency.D": "Dnevno", + "subscriptions.modal.new-subscription-form.frequency.W": "Nedeljno", + "subscriptions.modal.new-subscription-form.frequency.M": "Mesečno", + "subscriptions.modal.new-subscription-form.submit": "Podnesi", + "subscriptions.modal.new-subscription-form.processing": "Obrada...", + "subscriptions.modal.create.success": "Uspešno ste pretplaćeni na {{ type }}.", + "subscriptions.modal.delete.success": "Pretplata je uspešno izbrisana", + "subscriptions.modal.update.success": "Pretplata na {{ type }} je uspešno ažurirana", + "subscriptions.modal.create.error": "Došlo je do greške tokom kreiranja pretplate", + "subscriptions.modal.delete.error": "Došlo je do greške tokom brisanja pretplate", + "subscriptions.modal.update.error": "Došlo je do greške tokom ažuriranja pretplate", + "subscriptions.table.dso": "Predmet", + "subscriptions.table.subscription_type": "Vrsta pretplate", + "subscriptions.table.subscription_frequency": "Učestalost pretplate", + "subscriptions.table.action": "Postupak", + "subscriptions.table.edit": "Izmeniti", + "subscriptions.table.delete": "Izbrisati", + "subscriptions.table.not-available": "Nije dostupno", + "subscriptions.table.not-available-message": "Pretplaćena stavka je izbrisana ili trenutno nemate dozvolu da je vidite", + "subscriptions.table.empty.message": "Trenutno nemate nijednu pretplatu. Da biste se pretplatili na ažuriranja putem email-a za zajednicu ili kolekciju, koristite dugme za pretplatu na stranici objekta.", + "thumbnail.default.alt": "Umanjena slika", + "thumbnail.default.placeholder": "Nema dostupnih umanjenih slika", + "thumbnail.project.alt": "Logo projekta", + "thumbnail.project.placeholder": "Slika referenta projekta", + "thumbnail.orgunit.alt": "Logo organizacione jedinice", + "thumbnail.orgunit.placeholder": "Slika referenta organizacione jedinice", + "thumbnail.person.alt": "Profilna slika", + "thumbnail.person.placeholder": "Slika profila nije dostupna", + "title": "DSpace", + "vocabulary-treeview.header": "Prikaz hijerarhijskog stabla", + "vocabulary-treeview.load-more": "Učitati još", + "vocabulary-treeview.search.form.reset": "Resetovati", + "vocabulary-treeview.search.form.search": "Pretraga", + "vocabulary-treeview.search.no-result": "Nije bilo stavki za prikaz", + "vocabulary-treeview.tree.description.nsi": "The Norwegian Science Index", + "vocabulary-treeview.tree.description.srsc": "Kategorije predmeta istraživanja", + "vocabulary-treeview.info": "Izaberite temu koju želite da dodate kao filter za pretragu", + "uploader.browse": "pretraži", + "uploader.drag-message": "Prevucite i stavite svoje fajlove ovde", + "uploader.delete.btn-title": "Obriši", + "uploader.or": ", ili", + "uploader.processing": "Obrada otpremljenih fajlova... (sada je bezbedno zatvoriti ovu stranicu)", + "uploader.queue-length": "Dužina reda", + "virtual-metadata.delete-item.info": "Izaberite tipove za koje želite da sačuvate virtuelne metapodatke kao stvarne metapodatke", + "virtual-metadata.delete-item.modal-head": "Virtuelni metapodaci ove relacije", + "virtual-metadata.delete-relationship.modal-head": "Izaberite stavke za koje želite da sačuvate virtuelne metapodatke kao stvarne metapodatke", + "supervisedWorkspace.search.results.head": "Nadzirane stavke", + "workspace.search.results.head": "Vaši podnesci", + "workflowAdmin.search.results.head": "Upravljanje radnim procesom", + "workflow.search.results.head": "Radni zadaci", + "supervision.search.results.head": "Zadaci radnog procesa i radnog prostora", + "workflow-item.edit.breadcrumbs": "Izmena stavke radnog procesa", + "workflow-item.edit.title": "Izmena stavke radnog procesa", + "workflow-item.delete.notification.success.title": "Izbrisano", + "workflow-item.delete.notification.success.content": "Ova stavka radnog procesa je uspešno izbrisana", + "workflow-item.delete.notification.error.title": "Nešto nije u redu", + "workflow-item.delete.notification.error.content": "Nije moguće izbrisati stavku procesa rada", + "workflow-item.delete.title": "Izbrišite stavku radnog procesa", + "workflow-item.delete.header": "Izbrišite stavku radnog procesa", + "workflow-item.delete.button.cancel": "Poništiti, otkazati", + "workflow-item.delete.button.confirm": "Izbrišite", + "workflow-item.send-back.notification.success.title": "Vraćeno podnosiocu", + "workflow-item.send-back.notification.success.content": "Ova stavka radnog procesa je uspešno vraćena podnosiocu", + "workflow-item.send-back.notification.error.title": "Nešto nije u redu", + "workflow-item.send-back.notification.error.content": "Stavka radnog procesa nije mogla da se vrati podnosiocu", + "workflow-item.send-back.title": "Vratite stavku radnog procesa podnosiocu", + "workflow-item.send-back.header": "Vratite stavku radnog procesa podnosiocu", + "workflow-item.send-back.button.cancel": "Poništiti, otkazati", + "workflow-item.send-back.button.confirm": "Vratiti", + "workflow-item.view.breadcrumbs": "Prikaz radnog procesa", + "workspace-item.view.breadcrumbs": "Prikaz radnog prostora", + "workspace-item.view.title": "Prikaz radnog prostora", + "workspace-item.delete.breadcrumbs": "Izbrišite radni prostor", + "workspace-item.delete.header": "Izbrišite stavku radnog prostora", + "workspace-item.delete.button.confirm": "Izbrišite", + "workspace-item.delete.button.cancel": "Poništiti, otkazati", + "workspace-item.delete.notification.success.title": "Izbrisan", + "workspace-item.delete.title": "Ova stavka radnog prostora je uspešno izbrisana", + "workspace-item.delete.notification.error.title": "Nešto nije u redu", + "workspace-item.delete.notification.error.content": "Nije moguće izbrisati stavku radnog prostora", + "workflow-item.advanced.title": "Napredni radni proces", + "workflow-item.selectrevieweraction.notification.success.title": "Izabrani recenzent", + "workflow-item.selectrevieweraction.notification.success.content": "Recenzent za ovu stavku radnog procesa je uspešno izabran", + "workflow-item.selectrevieweraction.notification.error.title": "Nešto nije u redu", + "workflow-item.selectrevieweraction.notification.error.content": "Nije moguće izabrati recenzenta za ovu stavku radnog procesa", + "workflow-item.selectrevieweraction.title": "Izaberite recenzenta", + "workflow-item.selectrevieweraction.header": "Izaberite recenzenta", + "workflow-item.selectrevieweraction.button.cancel": "Poništiti, otkazati", + "workflow-item.selectrevieweraction.button.confirm": "Potvrdite", + "workflow-item.scorereviewaction.notification.success.title": "Ocena pregleda", + "workflow-item.scorereviewaction.notification.success.content": "Ocena za ovu stavku radnog procesa je uspešno poslata", + "workflow-item.scorereviewaction.notification.error.title": "Nešto nije u redu", + "workflow-item.scorereviewaction.notification.error.content": "Nije moguće oceniti ovu stavku", + "workflow-item.scorereviewaction.title": "Ocenite ovu stavku", + "workflow-item.scorereviewaction.header": "Ocenite ovu stavku", + "workflow-item.scorereviewaction.button.cancel": "Poništiti, otkazati", + "workflow-item.scorereviewaction.button.confirm": "Potvrdite", + "idle-modal.header": "Sesija uskoro ističe", + "idle-modal.info": "Iz bezbednosnih razloga, korisničke sesije ističu posle {{ timeToExpire }} minuta neaktivnosti. Vaša sesija uskoro ističe. Da li želite da produžite ili da se odjavite?", + "idle-modal.log-out": "Odjaviti se", + "idle-modal.extend-session": "Produžite sesiju", + "researcher.profile.action.processing": "Obrada...", + "researcher.profile.associated": "Povezani profil istraživača", + "researcher.profile.change-visibility.fail": "Došlo je do neočekivane greške prilikom promene vidljivosti profila", + "researcher.profile.create.new": "Kreiraj novi", + "researcher.profile.create.success": "Profil istraživača je uspešno kreiran", + "researcher.profile.create.fail": "Došlo je do greške tokom kreiranja profila istraživača", + "researcher.profile.delete": "Izbrišite", + "researcher.profile.expose": "Izlaganje", + "researcher.profile.hide": "Sakrijte", + "researcher.profile.not.associated": "Profil istraživača još nije povezan", + "researcher.profile.view": "Pogled", + "researcher.profile.private.visibility": "PRIVATNO", + "researcher.profile.public.visibility": "JAVNO", + "researcher.profile.status": "Status:", + "researcherprofile.claim.not-authorized": "Niste ovlašćeni da potvrdite ovu stavku. Za više detalja kontaktirajte administratora(e).", + "researcherprofile.error.claim.body": "Došlo je do greške pri potvrđivanju profila, molimo vas pokušajte ponovo kasnije", + "researcherprofile.error.claim.title": "Greška", + "researcherprofile.success.claim.body": "Profil je uspešno potvrđen", + "researcherprofile.success.claim.title": "Uspešno", + "person.page.orcid.create": "Kreirajte ORCID ID", + "person.page.orcid.granted-authorizations": "Odobrena ovlašćenja", + "person.page.orcid.grant-authorizations": "Odobrite ovlašćenja", + "person.page.orcid.link": "Povežite se na ORCID ID", + "person.page.orcid.link.processing": "Povezivanje profila sa ORCID-om...", + "person.page.orcid.link.error.message": "Nešto je pošlo naopako pri povezivanju profila sa ORCID-om. Ako se problem i dalje javlja, kontaktirajte administratora.", + "person.page.orcid.orcid-not-linked-message": "ORCID ID ovog profila ({{ orcid }}) još uvek nije povezan sa nalogom u ORCID registru ili je veza istekla.", + "person.page.orcid.unlink": "Prekinite vezu sa ORCID-om", + "person.page.orcid.unlink.processing": "Obrada...", + "person.page.orcid.missing-authorizations": "Nedostaju ovlašćenja", + "person.page.orcid.missing-authorizations-message": "Nedostaju sledeća ovlašćenja:", + "person.page.orcid.no-missing-authorizations-message": "Divno! Ovo polje je prazno, tako da ste odobrili sva prava pristupa za korišćenje svih funkcija koje nudi vaša institucija.", + "person.page.orcid.no-orcid-message": "Još uvek nije povezan ORCID ID. Klikom na dugme ispod moguće je povezati ovaj profil sa ORCID nalogom.", + "person.page.orcid.profile-preferences": "Prioriteti profila", + "person.page.orcid.funding-preferences": "Prioriteti finansiranja", + "person.page.orcid.publications-preferences": "Prioriteti publikacije", + "person.page.orcid.remove-orcid-message": "Ako treba da uklonite svoj ORCID, kontaktirajte administratora repozitorijuma", + "person.page.orcid.save.preference.changes": "Podešavanja ažuriranja", + "person.page.orcid.sync-profile.affiliation": "Pripadnost", + "person.page.orcid.sync-profile.biographical": "Biografski podaci", + "person.page.orcid.sync-profile.education": "Obrazovanje", + "person.page.orcid.sync-profile.identifiers": "Identifikatori", + "person.page.orcid.sync-fundings.all": "Sva sredstva", + "person.page.orcid.sync-fundings.mine": "Moja sredstva", + "person.page.orcid.sync-fundings.my_selected": "Odabrana sredstva", + "person.page.orcid.sync-fundings.disabled": "Onemogućeno", + "person.page.orcid.sync-publications.all": "Sve publikacije", + "person.page.orcid.sync-publications.mine": "Moje publikacije", + "person.page.orcid.sync-publications.my_selected": "Izabrane publikacije", + "person.page.orcid.sync-publications.disabled": "Onemogućeno", + "person.page.orcid.sync-queue.discard": "Odbacite promenu i nemojte da se sinhronizujete sa ORCID registrom", + "person.page.orcid.sync-queue.discard.error": "Odbacivanje zapisa ORCID reda nije uspelo", + "person.page.orcid.sync-queue.discard.success": "Zapis ORCID reda je uspešno odbačen", + "person.page.orcid.sync-queue.empty-message": "Zapis ORCID registra je prazan", + "person.page.orcid.sync-queue.table.header.type": "Tip", + "person.page.orcid.sync-queue.table.header.description": "Opis", + "person.page.orcid.sync-queue.table.header.action": "Postupak", + "person.page.orcid.sync-queue.description.affiliation": "Pripadnosti", + "person.page.orcid.sync-queue.description.country": "Država", + "person.page.orcid.sync-queue.description.education": "Obrazovanja", + "person.page.orcid.sync-queue.description.external_ids": "Spoljašnji id", + "person.page.orcid.sync-queue.description.other_names": "Druga imena", + "person.page.orcid.sync-queue.description.qualification": "Kvalifikacije", + "person.page.orcid.sync-queue.description.researcher_urls": "URL-ovi istraživača", + "person.page.orcid.sync-queue.description.keywords": "Ključne reči", + "person.page.orcid.sync-queue.tooltip.insert": "Dodajte novi unos u ORCID registar", + "person.page.orcid.sync-queue.tooltip.update": "Ažurirajte ovaj unos u ORCID registru", + "person.page.orcid.sync-queue.tooltip.delete": "Uklonite ovaj unos iz ORCID registra", + "person.page.orcid.sync-queue.tooltip.publication": "Publikacija", + "person.page.orcid.sync-queue.tooltip.project": "Projekat", + "person.page.orcid.sync-queue.tooltip.affiliation": "Pripadnost", + "person.page.orcid.sync-queue.tooltip.education": "Оbrazovanje", + "person.page.orcid.sync-queue.tooltip.qualification": "Kvalifikacija", + "person.page.orcid.sync-queue.tooltip.other_names": "Drugo ime", + "person.page.orcid.sync-queue.tooltip.country": "Država", + "person.page.orcid.sync-queue.tooltip.keywords": "Ključna reč", + "person.page.orcid.sync-queue.tooltip.external_ids": "Spoljašnji identifikator", + "person.page.orcid.sync-queue.tooltip.researcher_urls": "URL istraživača", + "person.page.orcid.sync-queue.send": "Sinhronizacija sa ORCID registrom", + "person.page.orcid.sync-queue.send.unauthorized-error.title": "Pristupanje ORCID-u nije uspelo zbog nedostajućih ovlašćenja.", + "person.page.orcid.sync-queue.send.unauthorized-error.content": "Kliknite ovde da ponovo dodelite potrebne dozvole. Ako se problem nastavi, kontaktirajte administratora", + "person.page.orcid.sync-queue.send.bad-request-error": "Slanje ORCID-u nije uspelo jer resurs poslat u ORCID registar nije važeći", + "person.page.orcid.sync-queue.send.error": "Slanje ORCID-u nije uspelo", + "person.page.orcid.sync-queue.send.conflict-error": "Slanje ORCID-u nije uspelo jer se resurs već nalazi u ORCID registru", + "person.page.orcid.sync-queue.send.not-found-warning": "Resurs se više ne nalazi u ORCID registru.", + "person.page.orcid.sync-queue.send.success": "Slanje ORCID-u je uspešno završeno", + "person.page.orcid.sync-queue.send.validation-error": "Podaci koje želite da sinhronizujete sa ORCID-om nisu ispravni", + "person.page.orcid.sync-queue.send.validation-error.amount-currency.required": "Valuta je obavezna", + "person.page.orcid.sync-queue.send.validation-error.external-id.required": "Resurs koji se šalje zahteva najmanje jedan identifikator", + "person.page.orcid.sync-queue.send.validation-error.title.required": "Naslov je obavezan", + "person.page.orcid.sync-queue.send.validation-error.type.required": "Dc.type je obavezan", + "person.page.orcid.sync-queue.send.validation-error.start-date.required": "Datum početka je obavezan", + "person.page.orcid.sync-queue.send.validation-error.funder.required": "Finansijer je neophodan", + "person.page.orcid.sync-queue.send.validation-error.country.invalid": "Nevažeće 2 cifre ISO 3166 zemlja", + "person.page.orcid.sync-queue.send.validation-error.organization.required": "Potrebna je organizacija", + "person.page.orcid.sync-queue.send.validation-error.organization.name-required": "Naziv organizacije je obavezan", + "person.page.orcid.sync-queue.send.validation-error.publication.date-invalid": "Datum objavljivanja mora biti godinu dana posle 1900. godine", + "person.page.orcid.sync-queue.send.validation-error.organization.address-required": "Organizacija zahteva adresu", + "person.page.orcid.sync-queue.send.validation-error.organization.city-required": "Adresa organizacije koja se šalje zahteva grad", + "person.page.orcid.sync-queue.send.validation-error.organization.country-required": "Adresa organizacije koja se šalje zahteva važeće 2 cifre ISO 3166 zemlje", + "person.page.orcid.sync-queue.send.validation-error.disambiguated-organization.required": "Potreban je identifikator za nedvosmislenost organizacija. Podržani ID-ovi su GRID, Ringgold, Legal Entity identifiers (LEIs) i Crossref Funder Registry identifiers", + "person.page.orcid.sync-queue.send.validation-error.disambiguated-organization.value-required": "Identifikatori organizacije zahtevaju vrednost", + "person.page.orcid.sync-queue.send.validation-error.disambiguation-source.required": "Identifikatorima organizacije je potreban izvor", + "person.page.orcid.sync-queue.send.validation-error.disambiguation-source.invalid": "Izvor jednog od identifikatora organizacije je nevažeći. Podržani izvori su RINGGOLD, GRID, LEI i FUNDREF", + "person.page.orcid.synchronization-mode": "Način sinhronizacije", + "person.page.orcid.synchronization-mode.batch": "Batch", + "person.page.orcid.synchronization-mode.label": "Način sinhronizacije", + "person.page.orcid.synchronization-mode-message": "Molimo izaberite kako želite da se sinhronizacija sa ORCID-om odvija. Opcije uključuju \"Manual\" (morate ručno da pošaljete svoje podatke ORCID-u) ili \"Batch\" (sistem će poslati vaše podatke ORCID-u preko planirane skripte).", + "person.page.orcid.synchronization-mode-funding-message": "Izaberite da li želite da pošaljete vaše povezane entitete projekta na listu informacija o finansiranju vašeg ORCID zapisa.", + "person.page.orcid.synchronization-mode-publication-message": "Izaberite da li želite da pošaljete vaše povezane entitete publikacije na listu radova vašeg ORCID zapisa.", + "person.page.orcid.synchronization-mode-profile-message": "Izaberite da li želite da pošaljete vaše biografske podatke ili lične identifikatore u vaš ORCID zapis.", + "person.page.orcid.synchronization-settings-update.success": "Podešavanja sinhronizacije su uspešno ažurirana", + "person.page.orcid.synchronization-settings-update.error": "Ažuriranje podešavanja sinhronizacije nije uspelo", + "person.page.orcid.synchronization-mode.manual": "Uputstvo", + "person.page.orcid.scope.authenticate": "Preuzmite svoj ORCID iD", + "person.page.orcid.scope.read-limited": "Čitajte svoje informacije uz vidljivost podešenu na Pouzdane strane", + "person.page.orcid.scope.activities-update": "Dodajte/ažurirajte vaše istraživačke aktivnosti", + "person.page.orcid.scope.person-update": "Dodajte/ažurirajte druge informacije o sebi", + "person.page.orcid.unlink.success": "Prekid veze između profila i ORCID registra je bio uspešan", + "person.page.orcid.unlink.error": "Došlo je do greške prilikom prekida veze između profila i ORCID registra. Pokušajte ponovo", + "person.orcid.sync.setting": "ORCID podešavanja sinhronizacije", + "person.orcid.registry.queue": "ORCID Registry Queue", + "person.orcid.registry.auth": "ORCID ovlašćenja", + "home.recent-submissions.head": "Nedavni podnesci", + "listable-notification-object.default-message": "Nije moguće preuzeti ovaj objekat", + "system-wide-alert-banner.retrieval.error": "Nešto nije u redu pri preuzimanju banera sistemskog upozorenja", + "system-wide-alert-banner.countdown.prefix": "U", + "system-wide-alert-banner.countdown.days": "{{days}} dan(i),", + "system-wide-alert-banner.countdown.hours": "{{hours}} sat(i) i", + "system-wide-alert-banner.countdown.minutes": "{{minutes}} minut(i):", + "menu.section.system-wide-alert": "Sistemsko upozorenje", + "system-wide-alert.form.header": "Sistemsko upozorenje", + "system-wide-alert-form.retrieval.error": "Nešto nije u redu pri preuzimanju sistemskog upozorenja", + "system-wide-alert.form.cancel": "Otkazati", + "system-wide-alert.form.save": "Sačuvati", + "system-wide-alert.form.label.active": "AKTIVNO", + "system-wide-alert.form.label.inactive": "NEAKTIVNO", + "system-wide-alert.form.error.message": "Sistemsko upozorenje mora sadržati poruku", + "system-wide-alert.form.label.message": "Poruka upozorenja", + "system-wide-alert.form.label.countdownTo.enable": "Uključite vremensko odbrojavanje", + "system-wide-alert.form.label.countdownTo.hint": "Savet: Podesite tajmer za odbrojavanje. Kada je uključen, datum se može podesiti u budućnosti i baner sistemskog upozorenja će izvršiti odbrojavanje do postavljenog datuma. Kada tajmer završi, nestaće iz upozorenja. Server NEĆE biti automatski zaustavljen.", + "system-wide-alert.form.label.preview": "Pregled sistemskog upozorenja", + "system-wide-alert.form.update.success": "Sistemsko upozorenje je uspešno ažurirano", + "system-wide-alert.form.update.error": "Nešto nije u redu sa ažuriranjem sistemskog upozorenja", + "system-wide-alert.form.create.success": "Sistemsko upozorenje je uspešno kreirano", + "system-wide-alert.form.create.error": "Nešto nije u redu sa kreiranjem sistemskog upozorenja", + "admin.system-wide-alert.breadcrumbs": "Sistemska upozorenja", + "admin.system-wide-alert.title": "Sistemska upozorenja", + "item-access-control-title": "Ovaj obrazac vam omogućava da izvršite promene uslova pristupa metapodacima stavke ili njenim bitstream-ovima.", + "collection-access-control-title": "Ovaj obrazac vam omogućava da izvršite izmene uslova pristupa svim stavkama ove kolekcije. Promene mogu da se izvrše ili na svim metapodacima stavke ili na celom sadržaju (bitstream-ova).", + "community-access-control-title": "Ovaj obrazac vam omogućava da izvršite promene uslova pristupa svim stavkama bilo koje kolekcije u ovoj zajednici. Promene mogu da se izvrše ili na svim metapodacima stavke ili na celom sadržaju (bitstream-ova).", + "access-control-item-header-toggle": "Metapodaci stavke", + "access-control-bitstream-header-toggle": "Bitstream-ovi", + "access-control-mode": "Način", + "access-control-access-conditions": "Uslovi pristupa", + "access-control-no-access-conditions-warning-message": "Trenutno nisu navedeni uslovi pristupa ispod. Ako se izvrši, to će zameniti trenutne uslove pristupa podrazumevanim uslovima pristupa nasleđenim iz vlasničke kolekcije.", + "access-control-replace-all": "Zamena uslova pristupa", + "access-control-add-to-existing": "Dodati postojećim", + "access-control-limit-to-specific": "Ograničite promene na određene bitstream-ove", + "access-control-process-all-bitstreams": "Ažurirajte sve bitstream-ove u stavci", + "access-control-bitstreams-selected": "izabrani bitstream-ovi", + "access-control-cancel": "Otkazati", + "access-control-execute": "Izvršiti", + "access-control-add-more": "Dodati još", + "access-control-select-bitstreams-modal.title": "Izaberite bitstream-ove", + "access-control-select-bitstreams-modal.no-items": "Nema stavki za prikaz.", + "access-control-select-bitstreams-modal.close": "Zatvoriti", + "access-control-option-label": "Vrsta uslova pristupa", + "access-control-option-note": "Izaberite uslov pristupa koji ćete primeniti na izabrane objekte.", + "access-control-option-start-date": "Pristup odobren od", + "access-control-option-start-date-note": "Izaberite datum od kojeg se primenjuje odgovarajući uslov pristupa", + "access-control-option-end-date": "Pristup odobren do", + "access-control-option-end-date-note": "Izaberite datum do kojeg se primenjuje odgovarajući uslov pristupa", +} diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts index a6e9e092e46..523ccf4f504 100644 --- a/src/config/default-app-config.ts +++ b/src/config/default-app-config.ts @@ -229,6 +229,7 @@ export class DefaultAppConfig implements AppConfig { { code: 'pl', label: 'Polski', active: true }, { code: 'pt-PT', label: 'Português', active: true }, { code: 'pt-BR', label: 'Português do Brasil', active: true }, + { code: 'sr-lat', label: 'Srpski (lat)', active: true}, { code: 'fi', label: 'Suomi', active: true }, { code: 'sv', label: 'Svenska', active: true }, { code: 'tr', label: 'Türkçe', active: true }, From 77efe52f4aee57d4e260bcf938fb9d434fbc78df Mon Sep 17 00:00:00 2001 From: DSpace Bot <68393067+dspace-bot@users.noreply.github.com> Date: Tue, 26 Sep 2023 03:04:49 -0500 Subject: [PATCH 0078/1005] [Port dspace-7_x] Fix missing or wrong Italian translations (#2522) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [DURACOM-184] fix missing or wrong Italian translations --------- Co-authored-by: Andrea Barbasso <´andrea.barbasso@4science.com´> --- src/assets/i18n/it.json5 | 1405 ++++++++++++-------------------------- 1 file changed, 451 insertions(+), 954 deletions(-) diff --git a/src/assets/i18n/it.json5 b/src/assets/i18n/it.json5 index 4fc07cebdf7..7f410ce0b17 100644 --- a/src/assets/i18n/it.json5 +++ b/src/assets/i18n/it.json5 @@ -195,7 +195,6 @@ // "admin.registries.bitstream-formats.table.name": "Name", "admin.registries.bitstream-formats.table.name": "Nome", // "admin.registries.bitstream-formats.table.id": "ID", - // TODO New key - Add a translation "admin.registries.bitstream-formats.table.id": "ID", // "admin.registries.bitstream-formats.table.return": "Back", @@ -277,7 +276,6 @@ // "admin.registries.schema.fields.table.field": "Field", "admin.registries.schema.fields.table.field": "Campo", // "admin.registries.schema.fields.table.id": "ID", - // TODO New key - Add a translation "admin.registries.schema.fields.table.id": "ID", // "admin.registries.schema.fields.table.scopenote": "Scope Note", @@ -501,7 +499,6 @@ "admin.access-control.groups.addGroup.breadcrumbs": "Nuovo Gruppo", // "admin.access-control.groups.head": "Groups", - // TODO Source message changed - Revise the translation "admin.access-control.groups.head": "Gruppi/Ruoli", // "admin.access-control.groups.button.add": "Add group", @@ -538,8 +535,7 @@ "admin.access-control.groups.table.edit.buttons.edit": "Modifica \"{{name}}\"", // "admin.access-control.groups.table.edit.buttons.remove": "Delete \"{{name}}\"", - // TODO New key - Add a translation - "admin.access-control.groups.table.edit.buttons.remove": "Delete \"{{name}}\"", + "admin.access-control.groups.table.edit.buttons.remove": "Elimina \"{{name}}\"", // "admin.access-control.groups.no-items": "No groups found with this in their name or this as UUID", "admin.access-control.groups.no-items": "Nessun gruppo trovato con questo nel loro nome o questo come UUID", @@ -751,16 +747,13 @@ "admin.access-control.groups.form.return": "Indietro", // "admin.access-control.groups.form.tooltip.editGroupPage": "On this page, you can modify the properties and members of a group. In the top section, you can edit the group name and description, unless this is an admin group for a collection or community, in which case the group name and description are auto-generated and cannot be edited. In the following sections, you can edit group membership. See [the wiki](https://wiki.lyrasis.org/display/DSDOC7x/Create+or+manage+a+user+group) for more details.", - // TODO New key - Add a translation - "admin.access-control.groups.form.tooltip.editGroupPage": "On this page, you can modify the properties and members of a group. In the top section, you can edit the group name and description, unless this is an admin group for a collection or community, in which case the group name and description are auto-generated and cannot be edited. In the following sections, you can edit group membership. See [the wiki](https://wiki.lyrasis.org/display/DSDOC7x/Create+or+manage+a+user+group) for more details.", + "admin.access-control.groups.form.tooltip.editGroupPage": "In questa pagina è possibile modificare le proprietà e i membri di un gruppo. Nella sezione in alto, è possibile modificare il nome e la descrizione del gruppo, a meno che non si tratti di un gruppo di amministratori di una collection o una community. In quel caso il nome e la descrizione del gruppo sono generati automaticamente e non possono essere modificati. Nelle sezioni successive è possibile modificare l'appartenenza al gruppo. Per maggiori dettagli, vedere [la wiki](https://wiki.lyrasis.org/display/DSDOC7x/Create+o+gestire+un+gruppo+utente)", // "admin.access-control.groups.form.tooltip.editGroup.addEpeople": "To add or remove an EPerson to/from this group, either click the 'Browse All' button or use the search bar below to search for users (use the dropdown to the left of the search bar to choose whether to search by metadata or by email). Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages. Once you are ready, save your changes by clicking the 'Save' button in the top section.", - // TODO New key - Add a translation - "admin.access-control.groups.form.tooltip.editGroup.addEpeople": "To add or remove an EPerson to/from this group, either click the 'Browse All' button or use the search bar below to search for users (use the dropdown to the left of the search bar to choose whether to search by metadata or by email). Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages. Once you are ready, save your changes by clicking the 'Save' button in the top section.", + "admin.access-control.groups.form.tooltip.editGroup.addEpeople": "Per aggiungere o rimuovere un EPerson a/da questo gruppo, cliccare sul pulsante 'Sfoglia tutti' o utilizzare la barra di ricerca in basso per cercare gli utenti (utilizzare il menu a tendina a sinistra della barra di ricerca per selezionare la ricerca per metadati o per e-mail). Cliccare quindi sull'icona + per ogni utente che si desidera aggiungere nell'elenco sottostante o sull'icona del cestino per ogni utente che si desidera rimuovere. L'elenco può avere diverse pagine: utilizzare i controlli di pagina in basso per spostarsi alle pagine successive. Per salvare le modifiche, cliccare sul pulsante 'Salvare' nella sezione in alto.", // "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "To add or remove a Subgroup to/from this group, either click the 'Browse All' button or use the search bar below to search for users. Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages. Once you are ready, save your changes by clicking the 'Save' button in the top section.", - // TODO New key - Add a translation - "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "To add or remove a Subgroup to/from this group, either click the 'Browse All' button or use the search bar below to search for users. Then click the plus icon for each user you wish to add in the list below, or the trash can icon for each user you wish to remove. The list below may have several pages: use the page controls below the list to navigate to the next pages. Once you are ready, save your changes by clicking the 'Save' button in the top section.", + "admin.access-control.groups.form.tooltip.editGroup.addSubgroups": "Per aggiungere o rimuovere un Sottogruppo a/da questo gruppo, cliccare sul pulsante 'Sfoglia tutti' o utilizzare la barra di ricerca in basso per cercare gli utenti. Cliccare quindi sull'icona + per ogni utente che si desidera aggiungere nell'elenco sottostante o sull'icona del cestino per ogni utente che si desidera rimuovere. L'elenco può avere diverse pagine: utilizzare i controlli di pagina in basso per spostarsi alle pagine successive. Per salvare le modifiche, cliccare sul pulsante 'Salva' nella sezione in alto.", // "admin.search.breadcrumbs": "Administrative Search", "admin.search.breadcrumbs": "Ricerca amministrativa", @@ -811,7 +804,6 @@ "admin.workflow.item.workflow": "Flusso di lavoro", // "admin.workflow.item.workspace": "Workspace", - // TODO New key - Add a translation "admin.workflow.item.workspace": "Workspace", // "admin.workflow.item.delete": "Delete", @@ -821,12 +813,10 @@ "admin.workflow.item.send-back": "Rinviare", // "admin.workflow.item.policies": "Policies", - // TODO New key - Add a translation - "admin.workflow.item.policies": "Policies", + "admin.workflow.item.policies": "Policy", // "admin.workflow.item.supervision": "Supervision", - // TODO New key - Add a translation - "admin.workflow.item.supervision": "Supervision", + "admin.workflow.item.supervision": "Supervisione", @@ -834,43 +824,37 @@ "admin.metadata-import.breadcrumbs": "Importare metadati", // "admin.batch-import.breadcrumbs": "Import Batch", - // TODO New key - Add a translation - "admin.batch-import.breadcrumbs": "Import Batch", + "admin.batch-import.breadcrumbs": "Batch Import", // "admin.metadata-import.title": "Import Metadata", "admin.metadata-import.title": "Importare metadati", // "admin.batch-import.title": "Import Batch", - // TODO New key - Add a translation - "admin.batch-import.title": "Import Batch", + "admin.batch-import.title": "Batch Import", // "admin.metadata-import.page.header": "Import Metadata", "admin.metadata-import.page.header": "Importare metadati", // "admin.batch-import.page.header": "Import Batch", - // TODO New key - Add a translation - "admin.batch-import.page.header": "Import Batch", + "admin.batch-import.page.header": "Batch Import", // "admin.metadata-import.page.help": "You can drop or browse CSV files that contain batch metadata operations on files here", - "admin.metadata-import.page.help": "È possibile eliminare o sfogliare i file CSV che contengono operazioni di metadati batch sui file qui", + "admin.metadata-import.page.help": "È possibile rilasciare o sfogliare i file CSV che contengono operazioni di metadati batch sui file qui", // "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", - // TODO New key - Add a translation - "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": "Selezionare la Collection in cui effettuare l'import. Quindi, rilasciare o sfogliare un file zip Simple Archive Format (SAF) che include gli elementi da importare", // "admin.metadata-import.page.dropMsg": "Drop a metadata CSV to import", "admin.metadata-import.page.dropMsg": "Rilasciare un CSV di metadati da importare", // "admin.batch-import.page.dropMsg": "Drop a batch ZIP to import", - // TODO New key - Add a translation - "admin.batch-import.page.dropMsg": "Drop a batch ZIP to import", + "admin.batch-import.page.dropMsg": "Rilasciare un batch ZIP da importare", // "admin.metadata-import.page.dropMsgReplace": "Drop to replace the metadata CSV to import", - "admin.metadata-import.page.dropMsgReplace": "Rilascia per sostituire i metadati CSV da importare", + "admin.metadata-import.page.dropMsgReplace": "Rilasciare per sostituire i metadati CSV da importare", // "admin.batch-import.page.dropMsgReplace": "Drop to replace the batch ZIP to import", - // TODO New key - Add a translation - "admin.batch-import.page.dropMsgReplace": "Drop to replace the batch ZIP to import", + "admin.batch-import.page.dropMsgReplace": "Rilasciare per sostituire il batch ZIP da importare", // "admin.metadata-import.page.button.return": "Back", "admin.metadata-import.page.button.return": "Indietro", @@ -879,15 +863,13 @@ "admin.metadata-import.page.button.proceed": "Procedere", // "admin.metadata-import.page.button.select-collection": "Select Collection", - // TODO New key - Add a translation - "admin.metadata-import.page.button.select-collection": "Select Collection", + "admin.metadata-import.page.button.select-collection": "Selezionare una Collection", // "admin.metadata-import.page.error.addFile": "Select file first!", "admin.metadata-import.page.error.addFile": "Seleziona prima il file!", // "admin.batch-import.page.error.addFile": "Select Zip file first!", - // TODO New key - Add a translation - "admin.batch-import.page.error.addFile": "Select Zip file first!", + "admin.batch-import.page.error.addFile": "Seleziona prima il file ZIP!", // "admin.metadata-import.page.validateOnly": "Validate Only", "admin.metadata-import.page.validateOnly": "Solo Validazione", @@ -896,138 +878,105 @@ "admin.metadata-import.page.validateOnly.hint": "Una volta selezionato, il CSV caricato sarà validato. Riceverai un report delle modifiche rilevate, ma nessuna modifica verrà salvata.", // "advanced-workflow-action.rating.form.rating.label": "Rating", - // TODO New key - Add a translation - "advanced-workflow-action.rating.form.rating.label": "Rating", + "advanced-workflow-action.rating.form.rating.label": "Valutazione", // "advanced-workflow-action.rating.form.rating.error": "You must rate the item", - // TODO New key - Add a translation - "advanced-workflow-action.rating.form.rating.error": "You must rate the item", + "advanced-workflow-action.rating.form.rating.error": "È necessario valutare l'item", // "advanced-workflow-action.rating.form.review.label": "Review", - // TODO New key - Add a translation - "advanced-workflow-action.rating.form.review.label": "Review", + "advanced-workflow-action.rating.form.review.label": "Revisione", // "advanced-workflow-action.rating.form.review.error": "You must enter a review to submit this rating", - // TODO New key - Add a translation - "advanced-workflow-action.rating.form.review.error": "You must enter a review to submit this rating", + "advanced-workflow-action.rating.form.review.error": "Per inviare questa valutazione è necessario inserire una revisione", // "advanced-workflow-action.rating.description": "Please select a rating below", - // TODO New key - Add a translation - "advanced-workflow-action.rating.description": "Please select a rating below", + "advanced-workflow-action.rating.description": "Selezionare una valutazione qui sotto", // "advanced-workflow-action.rating.description-requiredDescription": "Please select a rating below and also add a review", - // TODO New key - Add a translation - "advanced-workflow-action.rating.description-requiredDescription": "Please select a rating below and also add a review", + "advanced-workflow-action.rating.description-requiredDescription": "Selezionare una valutazione qui sotto e aggiungere anche una revisione", // "advanced-workflow-action.select-reviewer.description-single": "Please select a single reviewer below before submitting", - // TODO New key - Add a translation - "advanced-workflow-action.select-reviewer.description-single": "Please select a single reviewer below before submitting", + "advanced-workflow-action.select-reviewer.description-single": "Selezionare un solo revisione prima di procedere con l'inserimento", // "advanced-workflow-action.select-reviewer.description-multiple": "Please select one or more reviewers below before submitting", - // TODO New key - Add a translation - "advanced-workflow-action.select-reviewer.description-multiple": "Please select one or more reviewers below before submitting", + "advanced-workflow-action.select-reviewer.description-multiple": "Selezionare uno o più revisori prima di procedere con l'inserimento", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.head": "EPeople", - // TODO New key - Add a translation "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.head": "EPeople", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.head": "Add EPeople", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.head": "Add EPeople", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.head": "Aggiungi EPeople", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.button.see-all": "Browse All", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.button.see-all": "Browse All", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.button.see-all": "Sfoglia tutto", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.headMembers": "Current Members", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.headMembers": "Current Members", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.headMembers": "Membri attuali", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.metadata": "Metadata", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.metadata": "Metadata", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.metadata": "Metadati", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.email": "E-mail (exact)", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.email": "E-mail (exact)", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.scope.email": "E-mail (esatta)", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.button": "Search", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.button": "Search", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.search.button": "Ricerca", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.id": "ID", - // TODO New key - Add a translation "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.id": "ID", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.name": "Name", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.name": "Name", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.name": "Nome", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.identity": "Identity", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.identity": "Identity", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.identity": "Identità", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.email": "Email", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.email": "Email", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.email": "E-mail", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.netid": "NetID", - // TODO New key - Add a translation "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.netid": "NetID", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit": "Remove / Add", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit": "Remove / Add", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit": "Rimuovi / Aggiungi", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.remove": "Remove member with name \"{{name}}\"", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.remove": "Remove member with name \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.remove": "Rimuovi membro con il nome \"{{name}}\"", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.addMember": "Successfully added member: \"{{name}}\"", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.addMember": "Successfully added member: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.addMember": "Membro inserito con successo: \"{{name}}\"", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.addMember": "Failed to add member: \"{{name}}\"", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.addMember": "Failed to add member: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.addMember": "Impossibile aggiungere il membro: \"{{name}}\"", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.deleteMember": "Successfully deleted member: \"{{name}}\"", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.deleteMember": "Successfully deleted member: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.success.deleteMember": "Membro eliminato con successo: \"{{name}}\"", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.deleteMember": "Failed to delete member: \"{{name}}\"", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.deleteMember": "Failed to delete member: \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.deleteMember": "Impossibile eliminare il membro: \"{{name}}\"", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.add": "Add member with name \"{{name}}\"", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.add": "Add member with name \"{{name}}\"", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.table.edit.buttons.add": "Aggiungi membro con il nome \"{{name}}\"", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.noActiveGroup": "No current active group, submit a name first.", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.noActiveGroup": "No current active group, submit a name first.", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.notification.failure.noActiveGroup": "Nessun gruppo attivo al momento, inserire prima un nome.", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-members-yet": "No members in group yet, search and add.", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-members-yet": "No members in group yet, search and add.", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-members-yet": "Questo gruppo è vuoto, cercare e aggiungere membri.", // "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-items": "No EPeople found in that search", - // TODO New key - Add a translation - "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-items": "No EPeople found in that search", + "advanced-workflow-action-select-reviewer.groups.form.reviewers-list.no-items": "La ricerca non ha trovato EPeople", // "advanced-workflow-action.select-reviewer.no-reviewer-selected.error": "No reviewer selected.", - // TODO New key - Add a translation - "advanced-workflow-action.select-reviewer.no-reviewer-selected.error": "No reviewer selected.", + "advanced-workflow-action.select-reviewer.no-reviewer-selected.error": "Nessun revisore selezionato.", // "admin.batch-import.page.validateOnly.hint": "When selected, the uploaded ZIP will be validated. You will receive a report of detected changes, but no changes will be saved.", - // TODO New key - Add a translation - "admin.batch-import.page.validateOnly.hint": "When selected, the uploaded ZIP will be validated. You will receive a report of detected changes, but no changes will be saved.", + "admin.batch-import.page.validateOnly.hint": "Una volta selezionato, il file ZIP caricato verrà convalidato. Si riceverà un rapporto sulle modifiche rilevate, ma non verrà salvata alcuna modifica.", // "admin.batch-import.page.remove": "remove", - // TODO New key - Add a translation - "admin.batch-import.page.remove": "remove", + "admin.batch-import.page.remove": "rimuovere", // "auth.errors.invalid-user": "Invalid email address or password.", "auth.errors.invalid-user": "Indirizzo e-mail o password non validi.", @@ -1043,8 +992,7 @@ // "bitstream.download.page": "Now downloading {{bitstream}}..." , "bitstream.download.page": "Sto scaricando {{bitstream}}...", - // "bitstream.download.page.back": "Back" , - // TODO Source message changed - Revise the translation + // "bitstream.download.page.back": "Back", "bitstream.download.page.back": "Indietro", @@ -1073,7 +1021,7 @@ "bitstream.edit.form.embargo.label": "Embargo fino a data specifica", // "bitstream.edit.form.fileName.hint": "Change the filename for the bitstream. Note that this will change the display bitstream URL, but old links will still resolve as long as the sequence ID does not change.", - "bitstream.edit.form.fileName.hint": "Modificare il nome del file per il bitstream. Si noti che questo cambierà il display bitstream URL , i vecchi collegamenti verranno comunque risolti finché il sequence ID non cambierà .", + "bitstream.edit.form.fileName.hint": "Modificare il nome del file per il bitstream. Si noti che questo cambierà il display bitstream URL, i vecchi collegamenti verranno comunque risolti finché il sequence ID non cambierà.", // "bitstream.edit.form.fileName.label": "Filename", "bitstream.edit.form.fileName.label": "Filename", @@ -1246,8 +1194,7 @@ "pagination.next.button.disabled.tooltip": "Non ci sono ulteriori pagine di risultati", // "browse.startsWith": ", starting with {{ startsWith }}", - // TODO New key - Add a translation - "browse.startsWith": ", starting with {{ startsWith }}", + "browse.startsWith": ", inizia per {{ startsWith }}", // "browse.startsWith.choose_start": "(Choose start)", "browse.startsWith.choose_start": "(Scegli start)", @@ -1323,8 +1270,7 @@ // "search.browse.item-back": "Back to Results", - // TODO New key - Add a translation - "search.browse.item-back": "Back to Results", + "search.browse.item-back": "Torna ai risultati", // "chips.remove": "Remove chip", @@ -1332,23 +1278,20 @@ // "claimed-approved-search-result-list-element.title": "Approved", - // TODO New key - Add a translation - "claimed-approved-search-result-list-element.title": "Approved", + "claimed-approved-search-result-list-element.title": "Approvato", // "claimed-declined-search-result-list-element.title": "Rejected, sent back to submitter", - // TODO New key - Add a translation - "claimed-declined-search-result-list-element.title": "Rejected, sent back to submitter", + "claimed-declined-search-result-list-element.title": "Respinto, rinviato al submitter", // "claimed-declined-task-search-result-list-element.title": "Declined, sent back to Review Manager's workflow", - // TODO New key - Add a translation - "claimed-declined-task-search-result-list-element.title": "Declined, sent back to Review Manager's workflow", + "claimed-declined-task-search-result-list-element.title": "Rifiutato, rinviato al flusso di lavoro del Responsabile delle revisioni", // "collection.create.head": "Create a Collection", "collection.create.head": "Creare una collection", // "collection.create.notifications.success": "Successfully created the Collection", - "collection.create.notifications.success": "Creata con successo la collection", + "collection.create.notifications.success": "Collection creata con successo", // "collection.create.sub-head": "Create a Collection for Community {{ parent }}", "collection.create.sub-head": "Creare una collection per la Community {{ parent }}", @@ -1478,8 +1421,6 @@ // "collection.edit.logo.upload": "Drop a Collection Logo to upload", "collection.edit.logo.upload": "Rilascia un logo della collection da caricare", - - // "collection.edit.notifications.success": "Successfully edited the Collection", "collection.edit.notifications.success": "Modificata correttamente la collection", @@ -1507,8 +1448,7 @@ "collection.edit.item.authorizations.load-more-button": "Carica più risorse", // "collection.edit.item.authorizations.show-bitstreams-button": "Show bitstream policies for bundle", - // TODO New key - Add a translation - "collection.edit.item.authorizations.show-bitstreams-button": "Show bitstream policies for bundle", + "collection.edit.item.authorizations.show-bitstreams-button": "Mostra le policy del bitstream per il bundle", // "collection.edit.tabs.metadata.head": "Edit Metadata", "collection.edit.tabs.metadata.head": "Modifica metadati", @@ -1559,8 +1499,7 @@ "collection.edit.tabs.source.notifications.discarded.content": "Le modifiche sono state annullate. Per ripristinarle, fai clic sul pulsante \"Annulla\"", // "collection.edit.tabs.source.notifications.discarded.title": "Changes discarded", - // TODO Source message changed - Revise the translation - "collection.edit.tabs.source.notifications.discarded.title": "Modifiche eliminate", + "collection.edit.tabs.source.notifications.discarded.title": "Modifiche annullate", // "collection.edit.tabs.source.notifications.invalid.content": "Your changes were not saved. Please make sure all fields are valid before you save.", "collection.edit.tabs.source.notifications.invalid.content": "Le modifiche non sono state salvate. Assicurati che tutti i campi siano validi prima di salvare.", @@ -1718,16 +1657,12 @@ // "collection.source.controls.reset.running": "Resetting and reimporting...", "collection.source.controls.reset.running": "Reimpostazione e reimportazione...", // "collection.source.controls.harvest.status": "Harvest status:", - // TODO New key - Add a translation - "collection.source.controls.harvest.status": "Harvest status:", + "collection.source.controls.harvest.status": "Stato dell'harvest:", // "collection.source.controls.harvest.start": "Harvest start time:", - // TODO New key - Add a translation - "collection.source.controls.harvest.start": "Harvest start time:", + "collection.source.controls.harvest.start": "Ora di inizio dell'harvest:", // "collection.source.controls.harvest.last": "Last time harvested:", - // TODO New key - Add a translation - "collection.source.controls.harvest.last": "Last time harvested:", + "collection.source.controls.harvest.last": "Ulimo harvest effettuato:", // "collection.source.controls.harvest.message": "Harvest info:", - // TODO New key - Add a translation "collection.source.controls.harvest.message": "Harvest info:", // "collection.source.controls.harvest.no-information": "N/A", "collection.source.controls.harvest.no-information": "N/D", @@ -1954,12 +1889,10 @@ // "comcol-role.edit.scorereviewers.name": "Score Reviewers", - // TODO New key - Add a translation - "comcol-role.edit.scorereviewers.name": "Score Reviewers", + "comcol-role.edit.scorereviewers.name": "Valutatori", // "comcol-role.edit.scorereviewers.description": "Reviewers are able to give a score to incoming submissions, this will define whether the submission will be rejected or not.", - // TODO New key - Add a translation - "comcol-role.edit.scorereviewers.description": "Reviewers are able to give a score to incoming submissions, this will define whether the submission will be rejected or not.", + "comcol-role.edit.scorereviewers.description": "I valutatori possono assegnare un punteggio ai contributi in entrata, questo definirà se il contributo verrà rifiutato o meno.", @@ -2026,12 +1959,10 @@ "cookies.consent.app.required.title": "(sempre obbligatorio)", // "cookies.consent.app.disable-all.description": "Use this switch to enable or disable all services.", - // TODO New key - Add a translation - "cookies.consent.app.disable-all.description": "Use this switch to enable or disable all services.", + "cookies.consent.app.disable-all.description": "Utilizzare questo interruttore per abilitare o disabilitare tutti i servizi.", // "cookies.consent.app.disable-all.title": "Enable or disable all services", - // TODO New key - Add a translation - "cookies.consent.app.disable-all.title": "Enable or disable all services", + "cookies.consent.app.disable-all.title": "Abilitare o disabilitare tutti i servizi", // "cookies.consent.update": "There were changes since your last visit, please update your consent.", "cookies.consent.update": "Ci sono stati dei cambiamenti dal tuo ultimo accesso, aggiorna il tuo consenso.", @@ -2043,23 +1974,19 @@ "cookies.consent.decline": "Declinare", // "cookies.consent.ok": "That's ok", - // TODO New key - Add a translation - "cookies.consent.ok": "That's ok", + "cookies.consent.ok": "Accetta", // "cookies.consent.save": "Save", - // TODO New key - Add a translation - "cookies.consent.save": "Save", + "cookies.consent.save": "Salvare", // "cookies.consent.content-notice.title": "Cookie Consent", - // TODO New key - Add a translation - "cookies.consent.content-notice.title": "Cookie Consent", + "cookies.consent.content-notice.title": "Consenso ai cookie", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: Authentication, Preferences, Acknowledgement and Statistics.
To learn more, please read our {privacyPolicy}.", - "cookies.consent.content-notice.description": "Raccogliamo e processiamo le tue informazioni personali per i seguenti scopi: Autenticazione, Preferenze, Accettazione e Statistiche.
Per saperne di più, leggi la nostra {privacyPolicy}.", + "cookies.consent.content-notice.description": "Raccogliamo ed elaboriamo le tue informazioni personali per i seguenti scopi: Autenticazione, Preferenze, Accettazione e Statistiche.
Per saperne di più, leggi la nostra {privacyPolicy}.", // "cookies.consent.content-notice.description.no-privacy": "We collect and process your personal information for the following purposes: Authentication, Preferences, Acknowledgement and Statistics.", - // TODO New key - Add a translation - "cookies.consent.content-notice.description.no-privacy": "We collect and process your personal information for the following purposes: Authentication, Preferences, Acknowledgement and Statistics.", + "cookies.consent.content-notice.description.no-privacy": "Raccogliamo ed elaboriamo le tue informazioni personali per i seguenti scopi: Autenticazione, Preferenze, Accettazione e Statistiche.", // "cookies.consent.content-notice.learnMore": "Customize", "cookies.consent.content-notice.learnMore": "Personalizza", @@ -2077,12 +2004,10 @@ "cookies.consent.content-modal.title": "Informazioni che raccogliamo", // "cookies.consent.content-modal.services": "services", - // TODO New key - Add a translation - "cookies.consent.content-modal.services": "services", + "cookies.consent.content-modal.services": "servizi", // "cookies.consent.content-modal.service": "service", - // TODO New key - Add a translation - "cookies.consent.content-modal.service": "service", + "cookies.consent.content-modal.service": "servizio", // "cookies.consent.app.title.authentication": "Authentication", "cookies.consent.app.title.authentication": "Autenticazione", @@ -2116,12 +2041,10 @@ // "cookies.consent.app.title.google-recaptcha": "Google reCaptcha", - // TODO New key - Add a translation "cookies.consent.app.title.google-recaptcha": "Google reCaptcha", // "cookies.consent.app.description.google-recaptcha": "We use google reCAPTCHA service during registration and password recovery", - // TODO New key - Add a translation - "cookies.consent.app.description.google-recaptcha": "We use google reCAPTCHA service during registration and password recovery", + "cookies.consent.app.description.google-recaptcha": "Utilizziamo il servizio Google reCAPTCHA nelle fasi di registrazione e recupero password", // "cookies.consent.purpose.functional": "Functional", @@ -2131,18 +2054,15 @@ "cookies.consent.purpose.statistical": "Statistico", // "cookies.consent.purpose.registration-password-recovery": "Registration and Password recovery", - // TODO New key - Add a translation - "cookies.consent.purpose.registration-password-recovery": "Registration and Password recovery", + "cookies.consent.purpose.registration-password-recovery": "Registrazione e recupero password", // "cookies.consent.purpose.sharing": "Sharing", "cookies.consent.purpose.sharing": "Condivisione", // "curation-task.task.citationpage.label": "Generate Citation Page", - // TODO New key - Add a translation - "curation-task.task.citationpage.label": "Generate Citation Page", + "curation-task.task.citationpage.label": "Genera una pagina di citazioni", // "curation-task.task.checklinks.label": "Check Links in Metadata", - // TODO Source message changed - Revise the translation "curation-task.task.checklinks.label": "Controllare i collegamenti nei metadati", // "curation-task.task.noop.label": "NOOP", @@ -2160,9 +2080,8 @@ // "curation-task.task.vscan.label": "Virus Scan", "curation-task.task.vscan.label": "Scansione antivirus", - // "curation-task.task.registerdoi.label": "Register DOI", - // TODO New key - Add a translation - "curation-task.task.registerdoi.label": "Register DOI", + // "curation-task.task.register-doi.label": "Register DOI", + "curation-task.task.register-doi.label": "Registra DOI", @@ -2230,8 +2149,7 @@ "dso-selector.create.community.head": "Nuova Community", // "dso-selector.create.community.or-divider": "or", - // TODO New key - Add a translation - "dso-selector.create.community.or-divider": "or", + "dso-selector.create.community.or-divider": "oppure", // "dso-selector.create.community.sub-level": "Create a new community in", "dso-selector.create.community.sub-level": "Creare una nuova community in", @@ -2264,12 +2182,10 @@ "dso-selector.export-metadata.dspaceobject.head": "Esportare metadati da", // "dso-selector.export-batch.dspaceobject.head": "Export Batch (ZIP) from", - // TODO New key - Add a translation - "dso-selector.export-batch.dspaceobject.head": "Export Batch (ZIP) from", + "dso-selector.export-batch.dspaceobject.head": "Esporta batch (ZIP) da", // "dso-selector.import-batch.dspaceobject.head": "Import batch from", - // TODO New key - Add a translation - "dso-selector.import-batch.dspaceobject.head": "Import batch from", + "dso-selector.import-batch.dspaceobject.head": "Importa batch da", // "dso-selector.no-results": "No {{ type }} found", "dso-selector.no-results": "Nessun {{ type }} trovato", @@ -2287,8 +2203,7 @@ "dso-selector.set-scope.community.button": "Cerca in tutto DSpace", // "dso-selector.set-scope.community.or-divider": "or", - // TODO New key - Add a translation - "dso-selector.set-scope.community.or-divider": "or", + "dso-selector.set-scope.community.or-divider": "oppure", // "dso-selector.set-scope.community.input-header": "Search for a community or collection", "dso-selector.set-scope.community.input-header": "Cercare una community o una collection", @@ -2306,60 +2221,46 @@ "dso-selector.claim.item.create-from-scratch": "Crea uno nuovo profilo", // "dso-selector.results-could-not-be-retrieved": "Something went wrong, please refresh again ↻", - // TODO New key - Add a translation - "dso-selector.results-could-not-be-retrieved": "Something went wrong, please refresh again ↻", + "dso-selector.results-could-not-be-retrieved": "Qualcosa è andato storto, aggiorna di nuovo ↻", // "supervision-group-selector.header": "Supervision Group Selector", - // TODO New key - Add a translation - "supervision-group-selector.header": "Supervision Group Selector", + "supervision-group-selector.header": "Selezione del gruppo di supervisione", // "supervision-group-selector.select.type-of-order.label": "Select a type of Order", - // TODO New key - Add a translation - "supervision-group-selector.select.type-of-order.label": "Select a type of Order", + "supervision-group-selector.select.type-of-order.label": "Seleziona un tipo di ordine", // "supervision-group-selector.select.type-of-order.option.none": "NONE", - // TODO New key - Add a translation - "supervision-group-selector.select.type-of-order.option.none": "NONE", + "supervision-group-selector.select.type-of-order.option.none": "NESSUNO", // "supervision-group-selector.select.type-of-order.option.editor": "EDITOR", - // TODO New key - Add a translation - "supervision-group-selector.select.type-of-order.option.editor": "EDITOR", + "supervision-group-selector.select.type-of-order.option.editor": "EDITORE", // "supervision-group-selector.select.type-of-order.option.observer": "OBSERVER", - // TODO New key - Add a translation - "supervision-group-selector.select.type-of-order.option.observer": "OBSERVER", + "supervision-group-selector.select.type-of-order.option.observer": "OSSERVATORE", // "supervision-group-selector.select.group.label": "Select a Group", - // TODO New key - Add a translation - "supervision-group-selector.select.group.label": "Select a Group", + "supervision-group-selector.select.group.label": "Seleziona un gruppo", // "supervision-group-selector.button.cancel": "Cancel", - // TODO New key - Add a translation - "supervision-group-selector.button.cancel": "Cancel", + "supervision-group-selector.button.cancel": "Annulla", // "supervision-group-selector.button.save": "Save", - // TODO New key - Add a translation - "supervision-group-selector.button.save": "Save", + "supervision-group-selector.button.save": "Salva", // "supervision-group-selector.select.type-of-order.error": "Please select a type of order", - // TODO New key - Add a translation - "supervision-group-selector.select.type-of-order.error": "Please select a type of order", + "supervision-group-selector.select.type-of-order.error": "Seleziona un tipo di ordine", // "supervision-group-selector.select.group.error": "Please select a group", - // TODO New key - Add a translation - "supervision-group-selector.select.group.error": "Please select a group", + "supervision-group-selector.select.group.error": "Seleziona un gruppo", // "supervision-group-selector.notification.create.success.title": "Successfully created supervision order for group {{ name }}", - // TODO New key - Add a translation - "supervision-group-selector.notification.create.success.title": "Successfully created supervision order for group {{ name }}", + "supervision-group-selector.notification.create.success.title": "Ordine di supervisione per il gruppo {{ name }} creato con successo", // "supervision-group-selector.notification.create.failure.title": "Error", - // TODO New key - Add a translation - "supervision-group-selector.notification.create.failure.title": "Error", + "supervision-group-selector.notification.create.failure.title": "Errore", // "supervision-group-selector.notification.create.already-existing": "A supervision order already exists on this item for selected group", - // TODO New key - Add a translation - "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": "Per questo item esiste già un ordine di supervisione per il gruppo selezionato", // "confirmation-modal.export-metadata.header": "Export metadata for {{ dsoName }}", "confirmation-modal.export-metadata.header": "Esportare i metadati per {{ dsoName }}", @@ -2374,20 +2275,16 @@ "confirmation-modal.export-metadata.confirm": "Export", // "confirmation-modal.export-batch.header": "Export batch (ZIP) for {{ dsoName }}", - // TODO New key - Add a translation - "confirmation-modal.export-batch.header": "Export batch (ZIP) for {{ dsoName }}", + "confirmation-modal.export-batch.header": "Esporta batch (ZIP) per {{ dsoName }}", // "confirmation-modal.export-batch.info": "Are you sure you want to export batch (ZIP) for {{ dsoName }}", - // TODO New key - Add a translation - "confirmation-modal.export-batch.info": "Are you sure you want to export batch (ZIP) for {{ dsoName }}", + "confirmation-modal.export-batch.info": "Sei sicuro di voler esportare batch (ZIP) per {{ dsoName }}?", // "confirmation-modal.export-batch.cancel": "Cancel", - // TODO New key - Add a translation - "confirmation-modal.export-batch.cancel": "Cancel", + "confirmation-modal.export-batch.cancel": "Annulla", // "confirmation-modal.export-batch.confirm": "Export", - // TODO New key - Add a translation - "confirmation-modal.export-batch.confirm": "Export", + "confirmation-modal.export-batch.confirm": "Esporta", // "confirmation-modal.delete-eperson.header": "Delete EPerson \"{{ dsoName }}\"", "confirmation-modal.delete-eperson.header": "Elimina EPerson \"{{ dsoName }}\"", @@ -2478,11 +2375,10 @@ "error.top-level-communities": "Errore durante il recupero delle community di primo livello", // "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": "È necessario concedere questa licenza per completare la submission. Se non sei in grado di concedere questa licenza in questo momento, puoi salvare il tuo lavoro e tornare più tardi o rimuovere la submission.", + "error.validation.license.notgranted": "È necessario concedere questa licenza per completare l'immisione. Se non sei in grado di concedere questa licenza in questo momento, puoi salvare il tuo lavoro e tornare più tardi o rimuovere l'immissione.", // "error.validation.pattern": "This input is restricted by the current pattern: {{ pattern }}.", - // TODO New key - Add a translation - "error.validation.pattern": "This input is restricted by the current pattern: {{ pattern }}.", + "error.validation.pattern": "L'input è limitato dal pattern in uso: {{ pattern }}.", // "error.validation.filerequired": "The file upload is mandatory", "error.validation.filerequired": "Il caricamento del file è obbligatorio", @@ -2501,7 +2397,6 @@ // "feed.description": "Syndication feed", - // TODO New key - Add a translation "feed.description": "Syndication feed", @@ -2525,12 +2420,10 @@ // "footer.link.privacy-policy": "Privacy policy", "footer.link.privacy-policy": "Informativa sulla privacy", - // "footer.link.end-user-agreement": "End User Agreement", - // TODO Source message changed - Revise the translation + // "footer.link.end-user-agreement":"End User Agreement", "footer.link.end-user-agreement": "Accordo con l'utente finale", - // "footer.link.feedback": "Send Feedback", - // TODO Source message changed - Revise the translation + // "footer.link.feedback":"Send Feedback", "footer.link.feedback": "Invia Feedback", @@ -2539,8 +2432,7 @@ "forgot-email.form.header": "Password dimenticata", // "forgot-email.form.info": "Enter the email address associated with the account.", - // TODO Source message changed - Revise the translation - "forgot-email.form.info": "Accedi a registra un account per iscriverti alle collections, per ricevere aggiornamenti via email e per poter inserire nuovi item in DSpace.", + "forgot-email.form.info": "Inserisci l'indirizzo email associato all'account.", // "forgot-email.form.email": "Email Address *", "forgot-email.form.email": "Indirizzo email *", @@ -2549,31 +2441,25 @@ "forgot-email.form.email.error.required": "Si prega di inserire un indirizzo email", // "forgot-email.form.email.error.not-email-form": "Please fill in a valid email address", - // TODO New key - Add a translation - "forgot-email.form.email.error.not-email-form": "Please fill in a valid email address", + "forgot-email.form.email.error.not-email-form": "Si prega di inserire un idirizzo email valido", // "forgot-email.form.email.hint": "An email will be sent to this address with a further instructions.", - // TODO Source message changed - Revise the translation - "forgot-email.form.email.hint": "Questo indirizzo verrà verificato e utilizzato come login name.", + "forgot-email.form.email.hint": "Una email con ulteriori indicazioni sarà invita a questo indrizzo.", // "forgot-email.form.submit": "Reset password", - // TODO Source message changed - Revise the translation - "forgot-email.form.submit": "Salva", + "forgot-email.form.submit": "Reimposta la password", // "forgot-email.form.success.head": "Password reset email sent", - // TODO Source message changed - Revise the translation - "forgot-email.form.success.head": "Email di verifica inviata", + "forgot-email.form.success.head": "Email di reimpostazione password inviata", // "forgot-email.form.success.content": "An email has been sent to {{ email }} containing a special URL and further instructions.", "forgot-email.form.success.content": "È stata inviata un'email a {{ email }} contenente un URL speciale e ulteriori indicazioni.", // "forgot-email.form.error.head": "Error when trying to reset password", - // TODO Source message changed - Revise the translation - "forgot-email.form.error.head": "Errore durante il tentativo di registrare l'email", + "forgot-email.form.error.head": "Errore durante il tentativo di reimpostare la password", // "forgot-email.form.error.content": "An error occured when attempting to reset the password for the account associated with the following email address: {{ email }}", - // TODO New key - Add a translation - "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": "Si è verificato un errore durante il tentativo di reimpostare la password per l'account associato al seguente indirizzo email: {{ email }}", @@ -2584,8 +2470,7 @@ "forgot-password.form.head": "Password dimenticata", // "forgot-password.form.info": "Enter a new password in the box below, and confirm it by typing it again into the second box.", - // TODO Source message changed - Revise the translation - "forgot-password.form.info": "Inserisci una nuova password nella casella qui sotto e confermala digitandola di nuovo nella seconda casella. Dovrebbe avere una lunghezza di almeno sei caratteri.", + "forgot-password.form.info": "Inserisci una nuova password nella casella qui sotto e confermala digitandola di nuovo nella seconda casella.", // "forgot-password.form.card.security": "Security", "forgot-password.form.card.security": "Sicurezza", @@ -2651,21 +2536,14 @@ // "form.first-name": "First name", "form.first-name": "Nome", - // "form.group-collapse": "Collapse", - // TODO New key - Add a translation - "form.group-collapse": "Collapse", - - // "form.group-collapse-help": "Click here to collapse", - // TODO New key - Add a translation - "form.group-collapse-help": "Click here to collapse", + // "form.group.add": "Add", + "form.group.add": "Aggiungi", - // "form.group-expand": "Expand", - // TODO New key - Add a translation - "form.group-expand": "Expand", + // "form.group.close": "Close", + "form.group.close": "Chiudi", - // "form.group-expand-help": "Click here to expand and add more elements", - // TODO New key - Add a translation - "form.group-expand-help": "Click here to expand and add more elements", + // "form.group.set": "Set", + "form.group.set": "Set", // "form.last-name": "Last name", "form.last-name": "Cognome", @@ -2685,9 +2563,8 @@ // "form.no-value": "No value entered", "form.no-value": "Non è stato inserito nessun valore", - // "form.other-information": {}, - // TODO New key - Add a translation - "form.other-information": {}, + // "form.other-information": "", + "form.other-information": "", // "form.remove": "Remove", "form.remove": "Rimuovi", @@ -2708,8 +2585,7 @@ "form.submit": "Salva", // "form.create": "Create", - // TODO New key - Add a translation - "form.create": "Create", + "form.create": "Crea", // "form.repeatable.sort.tip": "Drop the item in the new position", "form.repeatable.sort.tip": "Rilascia l'item nella nuova posizione", @@ -2783,49 +2659,39 @@ // "health.breadcrumbs": "Health", - // TODO New key - Add a translation "health.breadcrumbs": "Health", // "health-page.heading": "Health", - // TODO New key - Add a translation "health-page.heading": "Health", // "health-page.info-tab": "Info", - // TODO New key - Add a translation - "health-page.info-tab": "Info", + "health-page.info-tab": "Informazioni", // "health-page.status-tab": "Status", - // TODO New key - Add a translation - "health-page.status-tab": "Status", + "health-page.status-tab": "Stato", // "health-page.error.msg": "The health check service is temporarily unavailable", "health-page.error.msg": "Il servizio di health check è temporaneamente non disponibile.", // "health-page.property.status": "Status code", - // TODO New key - Add a translation - "health-page.property.status": "Status code", + "health-page.property.status": "Codice di stato", // "health-page.section.db.title": "Database", "health-page.section.db.title": "Database", // "health-page.section.geoIp.title": "GeoIp", - // TODO New key - Add a translation "health-page.section.geoIp.title": "GeoIp", // "health-page.section.solrAuthorityCore.title": "Solr: authority core", - // TODO New key - Add a translation "health-page.section.solrAuthorityCore.title": "Solr: authority core", // "health-page.section.solrOaiCore.title": "Solr: oai core", - // TODO New key - Add a translation "health-page.section.solrOaiCore.title": "Solr: oai core", // "health-page.section.solrSearchCore.title": "Solr: search core", - // TODO New key - Add a translation "health-page.section.solrSearchCore.title": "Solr: search core", // "health-page.section.solrStatisticsCore.title": "Solr: statistics core", - // TODO New key - Add a translation "health-page.section.solrStatisticsCore.title": "Solr: statistics core", // "health-page.section-info.app.title": "Application Backend", @@ -2835,12 +2701,10 @@ "health-page.section-info.java.title": "Java", // "health-page.status": "Status", - // TODO New key - Add a translation - "health-page.status": "Status", + "health-page.status": "Stato", // "health-page.status.ok.info": "Operational", - // TODO New key - Add a translation - "health-page.status.ok.info": "Operational", + "health-page.status.ok.info": "Operativo", // "health-page.status.error.info": "Problems detected", "health-page.status.error.info": "Sono stati rilevati dei problemi", @@ -2849,7 +2713,6 @@ "health-page.status.warning.info": "Sono stati rilevati dei potenziali problemi", // "health-page.title": "Health", - // TODO New key - Add a translation "health-page.title": "Health", // "health-page.section.no-issues": "No issues detected", @@ -2869,10 +2732,9 @@ "home.title": "Home", // "home.top-level-communities.head": "Communities in DSpace", - "home.top-level-communities.head": "Community in DSpace", + "home.top-level-communities.head": "DSpace Communities", - // "home.top-level-communities.help": "Select a community to browse its collections.", - // TODO Source message changed - Revise the translation + // "home.top-level-communities.help": "Search for a collection", "home.top-level-communities.help": "Cerca una collection", @@ -2935,23 +2797,18 @@ "info.feedback.email-label": "La tua email", // "info.feedback.create.success": "Feedback Sent Successfully!", - // TODO Source message changed - Revise the translation "info.feedback.create.success": "Feedback inviato con successo!", // "info.feedback.error.email.required": "A valid email address is required", - // TODO Source message changed - Revise the translation "info.feedback.error.email.required": "Inserire un un indirizzo email valido", // "info.feedback.error.message.required": "A comment is required", - // TODO Source message changed - Revise the translation "info.feedback.error.message.required": "Inserire un commento", // "info.feedback.page-label": "Page", - // TODO Source message changed - Revise the translation "info.feedback.page-label": "Pagina", // "info.feedback.page_help": "Tha page related to your feedback", - // TODO Source message changed - Revise the translation "info.feedback.page_help": "In questa pagina trovi i tuoi feedback", @@ -2973,7 +2830,6 @@ // "item.badge.private": "Non-discoverable", - // TODO Source message changed - Revise the translation "item.badge.private": "Privato", // "item.badge.withdrawn": "Withdrawn", @@ -2985,14 +2841,12 @@ "item.bitstreams.upload.bundle": "Bundle", // "item.bitstreams.upload.bundle.placeholder": "Select a bundle or input new bundle name", - // TODO Source message changed - Revise the translation "item.bitstreams.upload.bundle.placeholder": "Seleziona un bundle o inserisci il nome di un nuovo bundle", // "item.bitstreams.upload.bundle.new": "Create bundle", "item.bitstreams.upload.bundle.new": "Crea un bundle", // "item.bitstreams.upload.bundles.empty": "This item doesn't contain any bundles to upload a bitstream to.", - // TODO Source message changed - Revise the translation "item.bitstreams.upload.bundles.empty": "Questo item non contiene alcun bundle in cui caricare un bitstream.", // "item.bitstreams.upload.cancel": "Cancel", @@ -3145,88 +2999,67 @@ "item.edit.tabs.item-mapper.title": "Modifica item - Mapper Collection", // "item.edit.identifiers.doi.status.UNKNOWN": "Unknown", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.UNKNOWN": "Unknown", + "item.edit.identifiers.doi.status.UNKNOWN": "Sconosciuto", // "item.edit.identifiers.doi.status.TO_BE_REGISTERED": "Queued for registration", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.TO_BE_REGISTERED": "Queued for registration", + "item.edit.identifiers.doi.status.TO_BE_REGISTERED": "In coda per la registrazione", // "item.edit.identifiers.doi.status.TO_BE_RESERVED": "Queued for reservation", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.TO_BE_RESERVED": "Queued for reservation", + "item.edit.identifiers.doi.status.TO_BE_RESERVED": "In coda per l'assegnazione", // "item.edit.identifiers.doi.status.IS_REGISTERED": "Registered", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.IS_REGISTERED": "Registered", + "item.edit.identifiers.doi.status.IS_REGISTERED": "Registrato", // "item.edit.identifiers.doi.status.IS_RESERVED": "Reserved", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.IS_RESERVED": "Reserved", + "item.edit.identifiers.doi.status.IS_RESERVED": "Assegnato", // "item.edit.identifiers.doi.status.UPDATE_RESERVED": "Reserved (update queued)", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.UPDATE_RESERVED": "Reserved (update queued)", + "item.edit.identifiers.doi.status.UPDATE_RESERVED": "Assegnato (aggiornamento in coda)", // "item.edit.identifiers.doi.status.UPDATE_REGISTERED": "Registered (update queued)", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.UPDATE_REGISTERED": "Registered (update queued)", + "item.edit.identifiers.doi.status.UPDATE_REGISTERED": "Registrato (aggiornamento in coda)", // "item.edit.identifiers.doi.status.UPDATE_BEFORE_REGISTRATION": "Queued for update and registration", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.UPDATE_BEFORE_REGISTRATION": "Queued for update and registration", + "item.edit.identifiers.doi.status.UPDATE_BEFORE_REGISTRATION": "In coda per aggiornamento e registrazione", // "item.edit.identifiers.doi.status.TO_BE_DELETED": "Queued for deletion", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.TO_BE_DELETED": "Queued for deletion", + "item.edit.identifiers.doi.status.TO_BE_DELETED": "In coda per l'eliminazione", // "item.edit.identifiers.doi.status.DELETED": "Deleted", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.DELETED": "Deleted", + "item.edit.identifiers.doi.status.DELETED": "Eliminato", // "item.edit.identifiers.doi.status.PENDING": "Pending (not registered)", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.PENDING": "Pending (not registered)", + "item.edit.identifiers.doi.status.PENDING": "In sospeso (non registrato)", // "item.edit.identifiers.doi.status.MINTED": "Minted (not registered)", - // TODO New key - Add a translation - "item.edit.identifiers.doi.status.MINTED": "Minted (not registered)", + "item.edit.identifiers.doi.status.MINTED": "Creato (non registrato)", // "item.edit.tabs.status.buttons.register-doi.label": "Register a new or pending DOI", - // TODO New key - Add a translation - "item.edit.tabs.status.buttons.register-doi.label": "Register a new or pending DOI", + "item.edit.tabs.status.buttons.register-doi.label": "Registra un nuovo DOI o un DOI in sospeso", // "item.edit.tabs.status.buttons.register-doi.button": "Register DOI...", - // TODO New key - Add a translation - "item.edit.tabs.status.buttons.register-doi.button": "Register DOI...", + "item.edit.tabs.status.buttons.register-doi.button": "Registra DOI...", // "item.edit.register-doi.header": "Register a new or pending DOI", - // TODO New key - Add a translation - "item.edit.register-doi.header": "Register a new or pending DOI", + "item.edit.register-doi.header": "Registra un nuovo DOI o un DOI in sospeso", // "item.edit.register-doi.description": "Review any pending identifiers and item metadata below and click Confirm to proceed with DOI registration, or Cancel to back out", - // TODO New key - Add a translation - "item.edit.register-doi.description": "Review any pending identifiers and item metadata below and click Confirm to proceed with DOI registration, or Cancel to back out", + "item.edit.register-doi.description": "Esaminare gli identificatori e i metadati dell'item in sospeso e cliccare su Conferma per procedere con la registrazione DOI, oppure su Annulla per tornare indietro", // "item.edit.register-doi.confirm": "Confirm", - // TODO New key - Add a translation - "item.edit.register-doi.confirm": "Confirm", + "item.edit.register-doi.confirm": "Conferma", // "item.edit.register-doi.cancel": "Cancel", - // TODO New key - Add a translation - "item.edit.register-doi.cancel": "Cancel", + "item.edit.register-doi.cancel": "Annulla", // "item.edit.register-doi.success": "DOI queued for registration successfully.", - // TODO New key - Add a translation - "item.edit.register-doi.success": "DOI queued for registration successfully.", + "item.edit.register-doi.success": "DOI in coda per la registrazione.", // "item.edit.register-doi.error": "Error registering DOI", - // TODO New key - Add a translation - "item.edit.register-doi.error": "Error registering DOI", + "item.edit.register-doi.error": "Errore nella registrazione del DOI", // "item.edit.register-doi.to-update": "The following DOI has already been minted and will be queued for registration online", - // TODO New key - Add a translation - "item.edit.register-doi.to-update": "The following DOI has already been minted and will be queued for registration online", + "item.edit.register-doi.to-update": "Il seguente DOI è stato già creato e sarà inserito in coda per la registrazione online", // "item.edit.item-mapper.buttons.add": "Map item to selected collections", "item.edit.item-mapper.buttons.add": "Mappare l'item nelle collections selezionate", @@ -3291,12 +3124,10 @@ "item.edit.metadata.discard-button": "Annulla", // "item.edit.metadata.edit.buttons.confirm": "Confirm", - // TODO New key - Add a translation - "item.edit.metadata.edit.buttons.confirm": "Confirm", + "item.edit.metadata.edit.buttons.confirm": "Conferma", // "item.edit.metadata.edit.buttons.drag": "Drag to reorder", - // TODO New key - Add a translation - "item.edit.metadata.edit.buttons.drag": "Drag to reorder", + "item.edit.metadata.edit.buttons.drag": "Trascina per riordinare", // "item.edit.metadata.edit.buttons.edit": "Edit", "item.edit.metadata.edit.buttons.edit": "Edita", @@ -3311,8 +3142,7 @@ "item.edit.metadata.edit.buttons.unedit": "Interrompi la modifica", // "item.edit.metadata.edit.buttons.virtual": "This is a virtual metadata value, i.e. a value inherited from a related entity. It can’t be modified directly. Add or remove the corresponding relationship in the \"Relationships\" tab", - // TODO New key - Add a translation - "item.edit.metadata.edit.buttons.virtual": "This is a virtual metadata value, i.e. a value inherited from a related entity. It can’t be modified directly. Add or remove the corresponding relationship in the \"Relationships\" tab", + "item.edit.metadata.edit.buttons.virtual": "Si tratta di un valore virtuale di metadati, cioè un valore ereditato da un'entità correlata. Non può essere modificato direttamente. Aggiungere o rimuovere la relazione corrispondente nella scheda 'Relazioni'.", // "item.edit.metadata.empty": "The item currently doesn't contain any metadata. Click Add to start adding a metadata value.", "item.edit.metadata.empty": "Attualmente l'item non contiene metadati. Fai clic su Aggiungi per iniziare ad aggiungere il valore di un metadata.", @@ -3330,8 +3160,7 @@ "item.edit.metadata.headers.value": "Valore", // "item.edit.metadata.metadatafield.error": "An error occurred validating the metadata field", - // TODO New key - Add a translation - "item.edit.metadata.metadatafield.error": "An error occurred validating the metadata field", + "item.edit.metadata.metadatafield.error": "Si è verificato un errore nella validazione del campo dei metadati", // "item.edit.metadata.metadatafield.invalid": "Please choose a valid metadata field", "item.edit.metadata.metadatafield.invalid": "Scegli un campo di metadati valido", @@ -3340,7 +3169,6 @@ "item.edit.metadata.notifications.discarded.content": "Le modifiche sono state annullate. Per ripristinarle, fai clic sul pulsante \"Annulla\"", // "item.edit.metadata.notifications.discarded.title": "Changes discarded", - // TODO Source message changed - Revise the translation "item.edit.metadata.notifications.discarded.title": "Modifiche eliminate", // "item.edit.metadata.notifications.error.title": "An error occurred", @@ -3356,7 +3184,6 @@ "item.edit.metadata.notifications.outdated.content": "L'item su cui stai attualmente lavorando è stato modificato da un altro utente. Le modifiche correnti verranno eliminate per evitare conflitti", // "item.edit.metadata.notifications.outdated.title": "Changes outdated", - // TODO Source message changed - Revise the translation "item.edit.metadata.notifications.outdated.title": "Modifiche obsolete", // "item.edit.metadata.notifications.saved.content": "Your changes to this item's metadata were saved.", @@ -3369,8 +3196,7 @@ "item.edit.metadata.reinstate-button": "Annulla", // "item.edit.metadata.reset-order-button": "Undo reorder", - // TODO New key - Add a translation - "item.edit.metadata.reset-order-button": "Undo reorder", + "item.edit.metadata.reset-order-button": "Annulla il riordinamento", // "item.edit.metadata.save-button": "Save", "item.edit.metadata.save-button": "Salva", @@ -3433,16 +3259,13 @@ "item.edit.private.cancel": "Annulla", // "item.edit.private.confirm": "Make it non-discoverable", - // TODO Source message changed - Revise the translation "item.edit.private.confirm": "Rendilo privato", // "item.edit.private.description": "Are you sure this item should be made non-discoverable in the archive?", - // TODO Source message changed - Revise the translation - "item.edit.private.description": "Sei sicuro che questo oggetto debba essere reso privato nell'archivio?", + "item.edit.private.description": "Sei sicuro che questo item debba essere reso privato nell'archivio?", // "item.edit.private.error": "An error occurred while making the item non-discoverable", - // TODO Source message changed - Revise the translation - "item.edit.private.error": "Si è verificato un errore durante la creazione di un item privato", + "item.edit.private.error": "Si è verificato un errore durante la modifica dell'item in privato", // "item.edit.private.header": "Make item non-discoverable: {{ id }}", "item.edit.private.header": "Rendi privato l'item: {{ id }}", @@ -3456,22 +3279,18 @@ "item.edit.public.cancel": "Annulla", // "item.edit.public.confirm": "Make it discoverable", - // TODO Source message changed - Revise the translation "item.edit.public.confirm": "Rendilo pubblico", // "item.edit.public.description": "Are you sure this item should be made discoverable in the archive?", - // TODO Source message changed - Revise the translation - "item.edit.public.description": "Sei sicuro che questo articolo debba essere reso pubblico nell'archivio?", + "item.edit.public.description": "Sei sicuro che questo item debba essere reso pubblico nell'archivio?", // "item.edit.public.error": "An error occurred while making the item discoverable", - // TODO Source message changed - Revise the translation - "item.edit.public.error": "Si è verificato un errore durante la creazione di un item pubblico", + "item.edit.public.error": "Si è verificato un errore durante la modifica dell'item in pubblico", // "item.edit.public.header": "Make item discoverable: {{ id }}", "item.edit.public.header": "Rendi pubblico l'item: {{ id }}", // "item.edit.public.success": "The item is now discoverable", - // TODO Source message changed - Revise the translation "item.edit.public.success": "L'item è ora pubblico", @@ -3558,7 +3377,6 @@ // "item.edit.tabs.curate.title": "Item Edit - Curate", "item.edit.tabs.curate.title": "Modifica item - Curate", // "item.edit.curate.title": "Curate Item: {{item}}", - // TODO New key - Add a translation "item.edit.curate.title": "Curate Item: {{item}}", // "item.edit.tabs.metadata.head": "Metadata", @@ -3592,26 +3410,21 @@ "item.edit.tabs.status.buttons.mappedCollections.label": "Gestire le collections mappate", // "item.edit.tabs.status.buttons.move.button": "Move this Item to a different Collection", - // TODO Source message changed - Revise the translation - "item.edit.tabs.status.buttons.move.button": "Sposta...", + "item.edit.tabs.status.buttons.move.button": "Sposta questo item in un'altra collection...", // "item.edit.tabs.status.buttons.move.label": "Move item to another collection", "item.edit.tabs.status.buttons.move.label": "Spostare l'item in un'altra collection", // "item.edit.tabs.status.buttons.private.button": "Make it non-discoverable...", - // TODO Source message changed - Revise the translation - "item.edit.tabs.status.buttons.private.button": "...", + "item.edit.tabs.status.buttons.private.button": "Rendilo privato...", // "item.edit.tabs.status.buttons.private.label": "Make item non-discoverable", - // TODO Source message changed - Revise the translation "item.edit.tabs.status.buttons.private.label": "Rendere l'item privato", // "item.edit.tabs.status.buttons.public.button": "Make it discoverable...", - // TODO Source message changed - Revise the translation - "item.edit.tabs.status.buttons.public.button": "...", + "item.edit.tabs.status.buttons.public.button": "Rendilo pubblico...", // "item.edit.tabs.status.buttons.public.label": "Make item discoverable", - // TODO Source message changed - Revise the translation "item.edit.tabs.status.buttons.public.label": "Rendere l'item pubblico", // "item.edit.tabs.status.buttons.reinstate.button": "Reinstate...", @@ -3624,8 +3437,7 @@ "item.edit.tabs.status.buttons.unauthorized": "Non sei autorizzato a eseguire questa azione", // "item.edit.tabs.status.buttons.withdraw.button": "Withdraw this item", - // TODO Source message changed - Revise the translation - "item.edit.tabs.status.buttons.withdraw.button": "Rimozione...", + "item.edit.tabs.status.buttons.withdraw.button": "Rimuovi questo item", // "item.edit.tabs.status.buttons.withdraw.label": "Withdraw item from the repository", "item.edit.tabs.status.buttons.withdraw.label": "Rimuovere l'item dal repository", @@ -3724,36 +3536,28 @@ "item.truncatable-part.show-less": "Riduci", // "workflow-item.search.result.delete-supervision.modal.header": "Delete Supervision Order", - // TODO New key - Add a translation - "workflow-item.search.result.delete-supervision.modal.header": "Delete Supervision Order", + "workflow-item.search.result.delete-supervision.modal.header": "Elimina l'ordine di supervisione", // "workflow-item.search.result.delete-supervision.modal.info": "Are you sure you want to delete Supervision Order", - // TODO New key - Add a translation - "workflow-item.search.result.delete-supervision.modal.info": "Are you sure you want to delete Supervision Order", + "workflow-item.search.result.delete-supervision.modal.info": "Sei sicuro di voler eliminare l'ordine di supervisione?", // "workflow-item.search.result.delete-supervision.modal.cancel": "Cancel", - // TODO New key - Add a translation - "workflow-item.search.result.delete-supervision.modal.cancel": "Cancel", + "workflow-item.search.result.delete-supervision.modal.cancel": "Annulla", // "workflow-item.search.result.delete-supervision.modal.confirm": "Delete", - // TODO New key - Add a translation - "workflow-item.search.result.delete-supervision.modal.confirm": "Delete", + "workflow-item.search.result.delete-supervision.modal.confirm": "Elimina", // "workflow-item.search.result.notification.deleted.success": "Successfully deleted supervision order \"{{name}}\"", - // TODO New key - Add a translation - "workflow-item.search.result.notification.deleted.success": "Successfully deleted supervision order \"{{name}}\"", + "workflow-item.search.result.notification.deleted.success": "Ordine di supervisione \"{{name}}\" eliminato con successo", // "workflow-item.search.result.notification.deleted.failure": "Failed to delete supervision order \"{{name}}\"", - // TODO New key - Add a translation - "workflow-item.search.result.notification.deleted.failure": "Failed to delete supervision order \"{{name}}\"", + "workflow-item.search.result.notification.deleted.failure": "Impossibile eliminare l'ordine di supervisione \"{{name}}\"", // "workflow-item.search.result.list.element.supervised-by": "Supervised by:", - // TODO New key - Add a translation - "workflow-item.search.result.list.element.supervised-by": "Supervised by:", + "workflow-item.search.result.list.element.supervised-by": "Supervisionato da:", // "workflow-item.search.result.list.element.supervised.remove-tooltip": "Remove supervision group", - // TODO New key - Add a translation - "workflow-item.search.result.list.element.supervised.remove-tooltip": "Remove supervision group", + "workflow-item.search.result.list.element.supervised.remove-tooltip": "Rimuovi gruppo di supervisione", @@ -3848,11 +3652,9 @@ "item.page.bitstreams.collapse": "Riduci", // "item.page.filesection.original.bundle": "Original bundle", - // TODO New key - Add a translation "item.page.filesection.original.bundle": "Original bundle", // "item.page.filesection.license.bundle": "License bundle", - // TODO New key - Add a translation "item.page.filesection.license.bundle": "License bundle", // "item.page.return": "Back", @@ -3889,8 +3691,7 @@ "item.preview.dc.language.iso": "Lingua:", // "item.preview.dc.subject": "Subjects:", - // TODO New key - Add a translation - "item.preview.dc.subject": "Subjects:", + "item.preview.dc.subject": "Soggetti:", // "item.preview.dc.title": "Title:", "item.preview.dc.title": "Titolo:", @@ -3899,30 +3700,24 @@ "item.preview.dc.type": "Tipologia:", // "item.preview.oaire.citation.issue": "Issue", - // TODO Source message changed - Revise the translation "item.preview.oaire.citation.issue": "Fascicolo", // "item.preview.oaire.citation.volume": "Volume", - // TODO Source message changed - Revise the translation "item.preview.oaire.citation.volume": "Volume", // "item.preview.dc.relation.issn": "ISSN", - // TODO Source message changed - Revise the translation "item.preview.dc.relation.issn": "ISSN", // "item.preview.dc.identifier.isbn": "ISBN", - // TODO Source message changed - Revise the translation "item.preview.dc.identifier.isbn": "ISBN", // "item.preview.dc.identifier": "Identifier:", "item.preview.dc.identifier": "Identificativo:", // "item.preview.dc.relation.ispartof": "Journal or Serie", - // TODO Source message changed - Revise the translation "item.preview.dc.relation.ispartof": "Periodico or Serie", // "item.preview.dc.identifier.doi": "DOI", - // TODO Source message changed - Revise the translation "item.preview.dc.identifier.doi": "DOI", // "item.preview.person.familyName": "Surname:", @@ -3944,8 +3739,7 @@ "item.preview.oaire.awardNumber": "ID del finanziamento:", // "item.preview.dc.title.alternative": "Acronym:", - // TODO New key - Add a translation - "item.preview.dc.title.alternative": "Acronym:", + "item.preview.dc.title.alternative": "Acronimo:", // "item.preview.dc.coverage.spatial": "Jurisdiction:", "item.preview.dc.coverage.spatial": "Giurisdizione:", @@ -4070,15 +3864,12 @@ "item.version.create.modal.submitted.text": "La nuova versione è in fase di creazione. Questa operazione potrebbe richiedere un po' di temo se l'item ha molte relazioni.", // "item.version.create.notification.success": "New version has been created with version number {{version}}", - // TODO Source message changed - Revise the translation "item.version.create.notification.success": "È stata creata una nuova versione con il numero {{version}}", // "item.version.create.notification.failure": "New version has not been created", - // TODO Source message changed - Revise the translation "item.version.create.notification.failure": "Non è stata creata una nuova versione", // "item.version.create.notification.inProgress": "A new version cannot be created because there is an inprogress submission in the version history", - // TODO Source message changed - Revise the translation "item.version.create.notification.inProgress": "Non è possibile creare una nuova versione perchè c'è già una submission in progress nella cronologia delle versioni", @@ -4101,131 +3892,100 @@ "item.version.delete.modal.button.cancel.tooltip": "Non eliminare questa versione", // "item.version.delete.notification.success": "Version number {{version}} has been deleted", - // TODO Source message changed - Revise the translation "item.version.delete.notification.success": "La versione numero {{version}} è stata eliminata", // "item.version.delete.notification.failure": "Version number {{version}} has not been deleted", - // TODO Source message changed - Revise the translation "item.version.delete.notification.failure": "La versione numero {{version}} non è stata eliminata", // "item.version.edit.notification.success": "The summary of version number {{version}} has been changed", - // TODO Source message changed - Revise the translation "item.version.edit.notification.success": "Il riepilogo della versione numero {{version}} è stato modificato", // "item.version.edit.notification.failure": "The summary of version number {{version}} has not been changed", - // TODO Source message changed - Revise the translation "item.version.edit.notification.failure": "Il riepilogo della versione numero {{version}} non è stato modificato", // "itemtemplate.edit.metadata.add-button": "Add", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.add-button": "Add", + "itemtemplate.edit.metadata.add-button": "Aggiungi", // "itemtemplate.edit.metadata.discard-button": "Discard", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.discard-button": "Discard", + "itemtemplate.edit.metadata.discard-button": "Elimina", // "itemtemplate.edit.metadata.edit.buttons.confirm": "Confirm", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.edit.buttons.confirm": "Confirm", + "itemtemplate.edit.metadata.edit.buttons.confirm": "Conferma", // "itemtemplate.edit.metadata.edit.buttons.drag": "Drag to reorder", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.edit.buttons.drag": "Drag to reorder", + "itemtemplate.edit.metadata.edit.buttons.drag": "Trascina per riordinare", // "itemtemplate.edit.metadata.edit.buttons.edit": "Edit", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.edit.buttons.edit": "Edit", + "itemtemplate.edit.metadata.edit.buttons.edit": "Modifica", // "itemtemplate.edit.metadata.edit.buttons.remove": "Remove", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.edit.buttons.remove": "Remove", + "itemtemplate.edit.metadata.edit.buttons.remove": "Rimuovi", // "itemtemplate.edit.metadata.edit.buttons.undo": "Undo changes", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.edit.buttons.undo": "Undo changes", + "itemtemplate.edit.metadata.edit.buttons.undo": "Annulla le modifiche", // "itemtemplate.edit.metadata.edit.buttons.unedit": "Stop editing", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.edit.buttons.unedit": "Stop editing", + "itemtemplate.edit.metadata.edit.buttons.unedit": "Smetti di modificare", // "itemtemplate.edit.metadata.empty": "The item template currently doesn't contain any metadata. Click Add to start adding a metadata value.", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.empty": "The item template currently doesn't contain any metadata. Click Add to start adding a metadata value.", + "itemtemplate.edit.metadata.empty": "Il template dell'item al momento non contiene nessun metadato. Clicca su 'Aggiungi' per inserire un metadato.", // "itemtemplate.edit.metadata.headers.edit": "Edit", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.headers.edit": "Edit", + "itemtemplate.edit.metadata.headers.edit": "Modifica", // "itemtemplate.edit.metadata.headers.field": "Field", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.headers.field": "Field", + "itemtemplate.edit.metadata.headers.field": "Campo", // "itemtemplate.edit.metadata.headers.language": "Lang", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.headers.language": "Lang", + "itemtemplate.edit.metadata.headers.language": "Lingua", // "itemtemplate.edit.metadata.headers.value": "Value", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.headers.value": "Value", + "itemtemplate.edit.metadata.headers.value": "Valore", // "itemtemplate.edit.metadata.metadatafield.error": "An error occurred validating the metadata field", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.metadatafield.error": "An error occurred validating the metadata field", + "itemtemplate.edit.metadata.metadatafield.error": "Si è verificato un errore durante la validazione del campo dei metadati", // "itemtemplate.edit.metadata.metadatafield.invalid": "Please choose a valid metadata field", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.metadatafield.invalid": "Please choose a valid metadata field", + "itemtemplate.edit.metadata.metadatafield.invalid": "Si prega di scegliere un campo di metadati valido", // "itemtemplate.edit.metadata.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button", + "itemtemplate.edit.metadata.notifications.discarded.content": "Le tue modifiche sono state eliminate. Per riprtinarle, cliccare sul tasto 'Annulla'", - // "itemtemplate.edit.metadata.notifications.discarded.title": "Changes discarded", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.notifications.discarded.title": "Changes discarded", + // "itemtemplate.edit.metadata.notifications.discarded.title": "Changed discarded", + "itemtemplate.edit.metadata.notifications.discarded.title": "Modifiche eliminate", // "itemtemplate.edit.metadata.notifications.error.title": "An error occurred", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.notifications.error.title": "An error occurred", + "itemtemplate.edit.metadata.notifications.error.title": "Si è verificato un errore", // "itemtemplate.edit.metadata.notifications.invalid.content": "Your changes were not saved. Please make sure all fields are valid before you save.", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.notifications.invalid.content": "Your changes were not saved. Please make sure all fields are valid before you save.", + "itemtemplate.edit.metadata.notifications.invalid.content": "Le tue modifiche non sono state salvate. Assicurati che tutti i campi siano validi prima di salvare.", // "itemtemplate.edit.metadata.notifications.invalid.title": "Metadata invalid", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.notifications.invalid.title": "Metadata invalid", + "itemtemplate.edit.metadata.notifications.invalid.title": "Metadati non validi", // "itemtemplate.edit.metadata.notifications.outdated.content": "The item template you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.notifications.outdated.content": "The item template you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts", + "itemtemplate.edit.metadata.notifications.outdated.content": "Il template dell'item su cui stai lavorando è stato modificato da un altro utente. Le tue ultime modifiche sono state eliminate per prevenire conflitti", - // "itemtemplate.edit.metadata.notifications.outdated.title": "Changes outdated", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.notifications.outdated.title": "Changes outdated", + // "itemtemplate.edit.metadata.notifications.outdated.title": "Changed outdated", + "itemtemplate.edit.metadata.notifications.outdated.title": "Modifiche obsolete", // "itemtemplate.edit.metadata.notifications.saved.content": "Your changes to this item template's metadata were saved.", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.notifications.saved.content": "Your changes to this item template's metadata were saved.", + "itemtemplate.edit.metadata.notifications.saved.content": "Le tue modifiche ai metadati di questo template sono state salvate.", // "itemtemplate.edit.metadata.notifications.saved.title": "Metadata saved", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.notifications.saved.title": "Metadata saved", + "itemtemplate.edit.metadata.notifications.saved.title": "Metadati salvati", // "itemtemplate.edit.metadata.reinstate-button": "Undo", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.reinstate-button": "Undo", + "itemtemplate.edit.metadata.reinstate-button": "Annulla", // "itemtemplate.edit.metadata.reset-order-button": "Undo reorder", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.reset-order-button": "Undo reorder", + "itemtemplate.edit.metadata.reset-order-button": "Annulla riordinamento", // "itemtemplate.edit.metadata.save-button": "Save", - // TODO New key - Add a translation - "itemtemplate.edit.metadata.save-button": "Save", + "itemtemplate.edit.metadata.save-button": "Salva", @@ -4492,27 +4252,22 @@ // "menu.section.browse_global": "All of DSpace", // TODO New key - Add a translation - "menu.section.browse_global": "All of DSpace", + "menu.section.browse_global": "Tutto DSpace", // "menu.section.browse_global_by_author": "By Author", - // TODO New key - Add a translation - "menu.section.browse_global_by_author": "By Author", + "menu.section.browse_global_by_author": "Per autore", // "menu.section.browse_global_by_dateissued": "By Issue Date", - // TODO New key - Add a translation - "menu.section.browse_global_by_dateissued": "By Issue Date", + "menu.section.browse_global_by_dateissued": "Per data di pubblicazione", // "menu.section.browse_global_by_subject": "By Subject", - // TODO New key - Add a translation - "menu.section.browse_global_by_subject": "By Subject", + "menu.section.browse_global_by_subject": "Per argomento", // "menu.section.browse_global_by_title": "By Title", - // TODO New key - Add a translation - "menu.section.browse_global_by_title": "By Title", + "menu.section.browse_global_by_title": "Per titolo", // "menu.section.browse_global_communities_and_collections": "Communities & Collections", - // TODO New key - Add a translation - "menu.section.browse_global_communities_and_collections": "Communities & Collections", + "menu.section.communities_and_collections": "Community & Collezioni", @@ -4554,7 +4309,6 @@ "menu.section.export_metadata": "Metadati", // "menu.section.export_batch": "Batch Export (ZIP)", - // TODO New key - Add a translation "menu.section.export_batch": "Batch Export (ZIP)", @@ -4580,8 +4334,7 @@ "menu.section.icon.find": "Trova sezione menu", // "menu.section.icon.health": "Health check menu section", - // TODO New key - Add a translation - "menu.section.icon.health": "Health check menu section", + "menu.section.icon.health": "Sezione del menu Health check", // "menu.section.icon.import": "Import menu section", "menu.section.icon.import": "Sezione del menu Importa", @@ -4593,8 +4346,7 @@ "menu.section.icon.pin": "Fissa la barra laterale", // "menu.section.icon.processes": "Processes Health", - // TODO Source message changed - Revise the translation - "menu.section.icon.processes": "Sezione del menu Processi", + "menu.section.icon.processes": "Processi", // "menu.section.icon.registries": "Registries menu section", "menu.section.icon.registries": "Sezione del menu Registri", @@ -4810,8 +4562,7 @@ "mydspace.show.workspace": "I tuoi contributi", // "mydspace.show.supervisedWorkspace": "Supervised items", - // TODO New key - Add a translation - "mydspace.show.supervisedWorkspace": "Supervised items", + "mydspace.show.supervisedWorkspace": "Item supervisionati", // "mydspace.status.mydspaceArchived": "Archived", "mydspace.status.mydspaceArchived": "Archiviati", @@ -4855,8 +4606,7 @@ "nav.community-browse.header": "Per Community", // "nav.context-help-toggle": "Toggle context help", - // TODO New key - Add a translation - "nav.context-help-toggle": "Toggle context help", + "nav.context-help-toggle": "Attivare la guida contestuale", // "nav.language": "Language switch", "nav.language": "Cambio di lingua", @@ -4865,12 +4615,10 @@ "nav.login": "Accedi", // "nav.user-profile-menu-and-logout": "User profile menu and Log Out", - // TODO New key - Add a translation - "nav.user-profile-menu-and-logout": "User profile menu and Log Out", + "nav.user-profile-menu-and-logout": "Menu profilo utente e Disconnetti", // "nav.logout": "Log Out", - // TODO Source message changed - Revise the translation - "nav.logout": "Menu profilo utente e Disconnetti", + "nav.logout": "Disconnetti", // "nav.main.description": "Main navigation bar", "nav.main.description": "Barra di navigazione principale", @@ -4885,8 +4633,7 @@ "nav.search": "Ricerca", // "nav.search.button": "Submit search", - // TODO New key - Add a translation - "nav.search.button": "Submit search", + "nav.search.button": "Invia ricerca", // "nav.statistics.header": "Statistics", @@ -4896,27 +4643,23 @@ "nav.stop-impersonating": "Smetti di impersonare EPerson", // "nav.subscriptions": "Subscriptions", - // TODO New key - Add a translation - "nav.subscriptions": "Subscriptions", + "nav.subscriptions": "Subscription", // "nav.toggle": "Toggle navigation", - // TODO New key - Add a translation - "nav.toggle": "Toggle navigation", + "nav.toggle": "Attivare la navigazione", // "nav.user.description": "User profile bar", - // TODO New key - Add a translation - "nav.user.description": "User profile bar", + "nav.user.description": "Barra del profilo utente", // "none.listelement.badge": "Item", - "none.listelement.badge": "Articolo", + "none.listelement.badge": "Item", // "orgunit.listelement.badge": "Organizational Unit", "orgunit.listelement.badge": "Unità organizzativa", // "orgunit.listelement.no-title": "Untitled", - // TODO New key - Add a translation - "orgunit.listelement.no-title": "Untitled", + "orgunit.listelement.no-title": "Senza titolo", // "orgunit.page.city": "City", "orgunit.page.city": "Città", @@ -4937,8 +4680,7 @@ "orgunit.page.id": "ID", // "orgunit.page.titleprefix": "Organizational Unit: ", - // TODO New key - Add a translation - "orgunit.page.titleprefix": "Organizational Unit: ", + "orgunit.page.titleprefix": "Unità organizzativa: ", @@ -4984,8 +4726,7 @@ "person.page.lastname": "Cognome", // "person.page.name": "Name", - // TODO New key - Add a translation - "person.page.name": "Name", + "person.page.name": "Nome", // "person.page.link.full": "Show all metadata", "person.page.link.full": "Mostra tutti i metadati", @@ -5000,11 +4741,10 @@ "person.page.titleprefix": "Persona: ", // "person.search.results.head": "Person Search Results", - "person.search.results.head": "Risultati della ricerca per Ricercatore", + "person.search.results.head": "Risultati della ricerca per persona", // "person-relationships.search.results.head": "Person Search Results", - // TODO New key - Add a translation - "person-relationships.search.results.head": "Person Search Results", + "person-relationships.search.results.head": "Risultati della ricerca per persona", // "person.search.title": "Person Search", "person.search.title": "Cerca i Ricercatori", @@ -5045,8 +4785,7 @@ "process.new.parameter.type.file": "file", // "process.new.parameter.required.missing": "The following parameters are required but still missing:", - // TODO New key - Add a translation - "process.new.parameter.required.missing": "The following parameters are required but still missing:", + "process.new.parameter.required.missing": "I seguenti parametri mancanti sono obbligatori:", // "process.new.notification.success.title": "Success", "process.new.notification.success.title": "Successo", @@ -5061,8 +4800,7 @@ "process.new.notification.error.content": "Si è verificato un errore durante la creazione di questo processo", // "process.new.notification.error.max-upload.content": "The file exceeds the maximum upload size", - // TODO New key - Add a translation - "process.new.notification.error.max-upload.content": "The file exceeds the maximum upload size", + "process.new.notification.error.max-upload.content": "Il file è più grande della dimensione massima di upload", // "process.new.header": "Create a new process", "process.new.header": "Creare un nuovo processo", @@ -5076,20 +4814,16 @@ // "process.detail.arguments": "Arguments", - // TODO New key - Add a translation - "process.detail.arguments": "Arguments", + "process.detail.arguments": "Parametri", // "process.detail.arguments.empty": "This process doesn't contain any arguments", - // TODO New key - Add a translation - "process.detail.arguments.empty": "This process doesn't contain any arguments", + "process.detail.arguments.empty": "Questo processo non contiene alcun parametro", // "process.detail.back": "Back", - // TODO New key - Add a translation - "process.detail.back": "Back", + "process.detail.back": "Indietro", // "process.detail.output": "Process Output", - // TODO New key - Add a translation - "process.detail.output": "Process Output", + "process.detail.output": "Output del processo", // "process.detail.logs.button": "Retrieve process output", "process.detail.logs.button": "Recupera l'output del processo", @@ -5101,94 +4835,72 @@ "process.detail.logs.none": "Questo processo non ha output", // "process.detail.output-files": "Output Files", - // TODO New key - Add a translation - "process.detail.output-files": "Output Files", + "process.detail.output-files": "File di output", // "process.detail.output-files.empty": "This process doesn't contain any output files", - // TODO New key - Add a translation - "process.detail.output-files.empty": "This process doesn't contain any output files", + "process.detail.output-files.empty": "Questo processo non contiene nessun file di output", // "process.detail.script": "Script", - // TODO New key - Add a translation "process.detail.script": "Script", // "process.detail.title": "Process: {{ id }} - {{ name }}", - // TODO New key - Add a translation - "process.detail.title": "Process: {{ id }} - {{ name }}", + "process.detail.title": "Processo: {{ id }} - {{ name }}", // "process.detail.start-time": "Start time", - // TODO New key - Add a translation - "process.detail.start-time": "Start time", + "process.detail.start-time": "Orario di inizio", // "process.detail.end-time": "Finish time", - // TODO New key - Add a translation - "process.detail.end-time": "Finish time", + "process.detail.end-time": "Orario di fine", // "process.detail.status": "Status", - // TODO New key - Add a translation - "process.detail.status": "Status", + "process.detail.status": "Stato", // "process.detail.create": "Create similar process", - // TODO New key - Add a translation - "process.detail.create": "Create similar process", + "process.detail.create": "Crea un processo analogo", // "process.detail.actions": "Actions", - // TODO New key - Add a translation - "process.detail.actions": "Actions", + "process.detail.actions": "Azioni", // "process.detail.delete.button": "Delete process", - // TODO New key - Add a translation - "process.detail.delete.button": "Delete process", + "process.detail.delete.button": "Elimina processo", // "process.detail.delete.header": "Delete process", - // TODO New key - Add a translation - "process.detail.delete.header": "Delete process", + "process.detail.delete.header": "Elimina processo", // "process.detail.delete.body": "Are you sure you want to delete the current process?", - // TODO New key - Add a translation - "process.detail.delete.body": "Are you sure you want to delete the current process?", + "process.detail.delete.body": "Sei sicuro di voler eliminare il processo corrente?", // "process.detail.delete.cancel": "Cancel", - // TODO New key - Add a translation - "process.detail.delete.cancel": "Cancel", + "process.detail.delete.cancel": "Annulla", // "process.detail.delete.confirm": "Delete process", - // TODO New key - Add a translation - "process.detail.delete.confirm": "Delete process", + "process.detail.delete.confirm": "Elimina processo", // "process.detail.delete.success": "The process was successfully deleted.", - // TODO New key - Add a translation - "process.detail.delete.success": "The process was successfully deleted.", + "process.detail.delete.success": "Il processo è stato eliminato con successo", // "process.detail.delete.error": "Something went wrong when deleting the process", - // TODO New key - Add a translation - "process.detail.delete.error": "Something went wrong when deleting the process", + "process.detail.delete.error": "Qualcosa è andato storto durante l'elininazione del processo", // "process.overview.table.finish": "Finish time (UTC)", - // TODO New key - Add a translation - "process.overview.table.finish": "Finish time (UTC)", + "process.overview.table.finish": "Orario di fine (UTC)", // "process.overview.table.id": "Process ID", - // TODO New key - Add a translation - "process.overview.table.id": "Process ID", + "process.overview.table.id": "ID del processo", // "process.overview.table.name": "Name", - // TODO New key - Add a translation - "process.overview.table.name": "Name", + "process.overview.table.name": "Nome", // "process.overview.table.start": "Start time (UTC)", - // TODO New key - Add a translation - "process.overview.table.start": "Start time (UTC)", + "process.overview.table.start": "Orario di inizio (UTC)", // "process.overview.table.status": "Status", - // TODO New key - Add a translation - "process.overview.table.status": "Status", + "process.overview.table.status": "Stato", // "process.overview.table.user": "User", - // TODO New key - Add a translation - "process.overview.table.user": "User", + "process.overview.table.user": "Utente", // "process.overview.title": "Processes Overview", "process.overview.title": "Panoramica dei processi", @@ -5200,40 +4912,31 @@ "process.overview.new": "Nuovo", // "process.overview.table.actions": "Actions", - // TODO New key - Add a translation - "process.overview.table.actions": "Actions", + "process.overview.table.actions": "Azioni", // "process.overview.delete": "Delete {{count}} processes", - // TODO New key - Add a translation - "process.overview.delete": "Delete {{count}} processes", + "process.overview.delete": "Elimina {{count}} processi", // "process.overview.delete.clear": "Clear delete selection", - // TODO New key - Add a translation - "process.overview.delete.clear": "Clear delete selection", + "process.overview.delete.clear": "Ripulisci la sezione Elimina", // "process.overview.delete.processing": "{{count}} process(es) are being deleted. Please wait for the deletion to fully complete. Note that this can take a while.", - // TODO New key - Add a translation - "process.overview.delete.processing": "{{count}} process(es) are being deleted. Please wait for the deletion to fully complete. Note that this can take a while.", + "process.overview.delete.processing": "{{count}} processi sono in fase di eliminazione. Attendere che l'attività sia completata. Potrebbe volerci qualche minuto.", // "process.overview.delete.body": "Are you sure you want to delete {{count}} process(es)?", - // TODO New key - Add a translation - "process.overview.delete.body": "Are you sure you want to delete {{count}} process(es)?", + "process.overview.delete.body": "Sei sicuro di voler eliminare {{count}} processo/i?", // "process.overview.delete.header": "Delete processes", - // TODO New key - Add a translation - "process.overview.delete.header": "Delete processes", + "process.overview.delete.header": "Elimina processi", // "process.bulk.delete.error.head": "Error on deleteing process", - // TODO New key - Add a translation - "process.bulk.delete.error.head": "Error on deleteing process", + "process.bulk.delete.error.head": "Errore nell'eliminazione dei processi", // "process.bulk.delete.error.body": "The process with ID {{processId}} could not be deleted. The remaining processes will continue being deleted. ", - // TODO New key - Add a translation - "process.bulk.delete.error.body": "The process with ID {{processId}} could not be deleted. The remaining processes will continue being deleted. ", + "process.bulk.delete.error.body": "Il processo con l'ID {{processId}} non può essere eliminato. I restanti processi saranno eliminati.", // "process.bulk.delete.success": "{{count}} process(es) have been succesfully deleted", - // TODO New key - Add a translation - "process.bulk.delete.success": "{{count}} process(es) have been succesfully deleted", + "process.bulk.delete.success": "{{count}} processi sono stati eliminati con successo", @@ -5246,16 +4949,14 @@ // "profile.card.security": "Security", "profile.card.security": "Sicurezza", - // "profile.form.submit": "Save", - // TODO Source message changed - Revise the translation + // "profile.form.submit": "Update Profile", "profile.form.submit": "Aggiorna profilo", // "profile.groups.head": "Authorization groups you belong to", "profile.groups.head": "Gruppi di autorizzazione a cui appartieni", // "profile.special.groups.head": "Authorization special groups you belong to", - // TODO New key - Add a translation - "profile.special.groups.head": "Authorization special groups you belong to", + "profile.special.groups.head": "Gruppi speciali di autorizzazione a cui appartieni", // "profile.head": "Update Profile", "profile.head": "Aggiorna profilo", @@ -5297,8 +4998,7 @@ "profile.security.form.error.matching-passwords": "Le password non corrispondono.", // "profile.security.form.info": "Optionally, you can enter a new password in the box below, and confirm it by typing it again into the second box.", - // TODO Source message changed - Revise the translation - "profile.security.form.info": "Facoltativamente, è possibile inserire una nuova password nella casella qui sotto e confermarla digitandola nuovamente nella seconda casella. Dovrebbe essere lungo almeno sei caratteri.", + "profile.security.form.info": "Facoltativamente, è possibile inserire una nuova password nella casella qui sotto e confermarla digitandola nuovamente nella seconda casella.", // "profile.security.form.label.password": "Password", "profile.security.form.label.password": "Password", @@ -5307,8 +5007,7 @@ "profile.security.form.label.passwordrepeat": "Ridigitare per confermare", // "profile.security.form.label.current-password": "Current password", - // TODO New key - Add a translation - "profile.security.form.label.current-password": "Current password", + "profile.security.form.label.current-password": "Password corrente", // "profile.security.form.notifications.success.content": "Your changes to the password were saved.", "profile.security.form.notifications.success.content": "Le modifiche apportate alla password sono state salvate.", @@ -5320,15 +5019,13 @@ "profile.security.form.notifications.error.title": "Errore durante la modifica delle password", // "profile.security.form.notifications.error.change-failed": "An error occurred while trying to change the password. Please check if the current password is correct.", - // TODO New key - Add a translation - "profile.security.form.notifications.error.change-failed": "An error occurred while trying to change the password. Please check if the current password is correct.", + "profile.security.form.notifications.error.change-failed": "Si è verificato un errore durante la modifica della password. Assicurati che la password corrente sia corretta.", // "profile.security.form.notifications.error.not-same": "The provided passwords are not the same.", "profile.security.form.notifications.error.not-same": "Le password fornite non sono le stesse.", // "profile.security.form.notifications.error.general": "Please fill required fields of security form.", - // TODO New key - Add a translation - "profile.security.form.notifications.error.general": "Please fill required fields of security form.", + "profile.security.form.notifications.error.general": "Si prega di inserire i campi richiesti nel modulo di sicurezza.", // "profile.title": "Update Profile", "profile.title": "Aggiorna profilo", @@ -5364,15 +5061,13 @@ "project.page.status": "Parole chiave", // "project.page.titleprefix": "Research Project: ", - // TODO New key - Add a translation - "project.page.titleprefix": "Research Project: ", + "project.page.titleprefix": "Progetto di ricerca: ", // "project.search.results.head": "Project Search Results", - "project.search.results.head": "Progetto di ricerca: ", + "project.search.results.head": "Risultati della ricerca per progetti", // "project-relationships.search.results.head": "Project Search Results", - // TODO New key - Add a translation - "project-relationships.search.results.head": "Project Search Results", + "project-relationships.search.results.head": "Risultati della ricerca per progetti", @@ -5395,18 +5090,16 @@ "publication.page.publisher": "Editore", // "publication.page.titleprefix": "Publication: ", - // TODO New key - Add a translation - "publication.page.titleprefix": "Publication: ", + "publication.page.titleprefix": "Pubblicazione: ", // "publication.page.volume-title": "Volume Title", "publication.page.volume-title": "Titolo volume", // "publication.search.results.head": "Publication Search Results", - "publication.search.results.head": "Risultati della ricerca di pubblicazioni", + "publication.search.results.head": "Risultati della ricerca per pubblicazioni", // "publication-relationships.search.results.head": "Publication Search Results", - // TODO New key - Add a translation - "publication-relationships.search.results.head": "Publication Search Results", + "publication-relationships.search.results.head": "Risultati della ricerca per pubblicazioni", // "publication.search.title": "Publication Search", "publication.search.title": "Ricerca pubblicazione", @@ -5456,8 +5149,7 @@ "register-page.create-profile.security.header": "Sicurezza", // "register-page.create-profile.security.info": "Please enter a password in the box below, and confirm it by typing it again into the second box.", - // TODO Source message changed - Revise the translation - "register-page.create-profile.security.info": "Inserisci una password nella casella qui sotto e confermala digitandola nuovamente nella seconda casella. Dovrebbe essere lungo almeno sei caratteri.", + "register-page.create-profile.security.info": "Inserisci una password nella casella qui sotto e confermala digitandola nuovamente nella seconda casella.", // "register-page.create-profile.security.label.password": "Password *", "register-page.create-profile.security.label.password": "Password *", @@ -5500,12 +5192,10 @@ "register-page.registration.email.error.required": "Inserire un indirizzo e-mail", // "register-page.registration.email.error.not-email-form": "Please fill in a valid email address.", - // TODO New key - Add a translation - "register-page.registration.email.error.not-email-form": "Please fill in a valid email address.", + "register-page.registration.email.error.not-email-form": "Inserisci un indirizzo e-mail valido.", // "register-page.registration.email.error.not-valid-domain": "Use email with allowed domains: {{ domains }}", - // TODO New key - Add a translation - "register-page.registration.email.error.not-valid-domain": "Use email with allowed domains: {{ domains }}", + "register-page.registration.email.error.not-valid-domain": "Utilizza una e-mail con un dominio valido: {{ domains }}", // "register-page.registration.email.hint": "This address will be verified and used as your login name.", "register-page.registration.email.hint": "Questo indirizzo verrà verificato e utilizzato come nome di accesso.", @@ -5523,39 +5213,30 @@ "register-page.registration.error.head": "Errore durante il tentativo di registrazione dell'e-mail", // "register-page.registration.error.content": "An error occured when registering the following email address: {{ email }}", - // TODO New key - Add a translation - "register-page.registration.error.content": "An error occured when registering the following email address: {{ email }}", + "register-page.registration.error.content": "Si è verificato un errore durante la registrazione del seguente indirizzo e-mail: {{ email }}", // "register-page.registration.error.recaptcha": "Error when trying to authenticate with recaptcha", - // TODO New key - Add a translation - "register-page.registration.error.recaptcha": "Error when trying to authenticate with recaptcha", + "register-page.registration.error.recaptcha": "Errore durante l'autenticazione con reCaptcha", // "register-page.registration.google-recaptcha.must-accept-cookies": "In order to register you must accept the Registration and Password recovery (Google reCaptcha) cookies.", - // TODO New key - Add a translation - "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": "Per registrarsi è obbligatorio accettare i cookie Registration and Password recovery (Google reCaptcha).", // "register-page.registration.error.maildomain": "This email address is not on the list of domains who can register. Allowed domains are {{ domains }}", - // TODO New key - Add a translation - "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": "Questo indirizzo e-mail non è nella lista dei dominii che possono essere registrati. I domini validi sono {{ domains }}", // "register-page.registration.google-recaptcha.open-cookie-settings": "Open cookie settings", - // TODO New key - Add a translation - "register-page.registration.google-recaptcha.open-cookie-settings": "Open cookie settings", + "register-page.registration.google-recaptcha.open-cookie-settings": "Aprire le impostazioni dei cookie", // "register-page.registration.google-recaptcha.notification.title": "Google reCaptcha", - // TODO New key - Add a translation "register-page.registration.google-recaptcha.notification.title": "Google reCaptcha", // "register-page.registration.google-recaptcha.notification.message.error": "An error occurred during reCaptcha verification", - // TODO New key - Add a translation - "register-page.registration.google-recaptcha.notification.message.error": "An error occurred during reCaptcha verification", + "register-page.registration.google-recaptcha.notification.message.error": "Si è verificato un errore durante la verifica reCaptcha", // "register-page.registration.google-recaptcha.notification.message.expired": "Verification expired. Please verify again.", - // TODO New key - Add a translation - "register-page.registration.google-recaptcha.notification.message.expired": "Verification expired. Please verify again.", + "register-page.registration.google-recaptcha.notification.message.expired": "Verifica scaduta. Si prega di verificare di nuovo.", // "register-page.registration.info.maildomain": "Accounts can be registered for mail addresses of the domains", - // TODO New key - Add a translation - "register-page.registration.info.maildomain": "Accounts can be registered for mail addresses of the domains", + "register-page.registration.info.maildomain": "Gli account possono essere registrati per gli indirizzi e-mail dei dominii", // "relationships.add.error.relationship-type.content": "No suitable match could be found for relationship type {{ type }} between the two items", "relationships.add.error.relationship-type.content": "Non è stata trovata alcuna corrispondenza adatta per il tipo di relazione {{ type }} tra i due item", @@ -5625,7 +5306,6 @@ "repository.image.logo": "Logo del repository", // "repository.title.prefix": "DSpace Angular :: ", - // TODO New key - Add a translation "repository.title.prefix": "DSpace Angular :: ", // "repository.title.prefixDSpace": "DSpace Angular ::", @@ -5636,60 +5316,58 @@ "resource-policies.add.button": "Aggiungi", // "resource-policies.add.for.": "Add a new policy", - "resource-policies.add.for.": "Aggiungi un nuovo criterio", + "resource-policies.add.for.": "Aggiungi una nuova policy", // "resource-policies.add.for.bitstream": "Add a new Bitstream policy", - "resource-policies.add.for.bitstream": "Aggiungi un nuovo criterio Bitstream", + "resource-policies.add.for.bitstream": "Aggiungi una nuova policy di Bitstream", // "resource-policies.add.for.bundle": "Add a new Bundle policy", - "resource-policies.add.for.bundle": "Aggiungi un nuovo criterio Bundle", + "resource-policies.add.for.bundle": "Aggiungi una nuova policy di Bundle", // "resource-policies.add.for.item": "Add a new Item policy", - "resource-policies.add.for.item": "Aggiungi un nuovo criterio item", + "resource-policies.add.for.item": "Aggiungi una nuova policy di Item", // "resource-policies.add.for.community": "Add a new Community policy", - "resource-policies.add.for.community": "Aggiungere un nuovo criterio comunitario", + "resource-policies.add.for.community": "Aggiungi una nuova policy di community", // "resource-policies.add.for.collection": "Add a new Collection policy", - "resource-policies.add.for.collection": "Aggiungere un nuovo criterio di collezione", + "resource-policies.add.for.collection": "Aggiungi una nuova policy di collezione", // "resource-policies.create.page.heading": "Create new resource policy for ", - "resource-policies.create.page.heading": "Creare nuovi criteri di risorsa per ", + "resource-policies.create.page.heading": "Creare una nuova policy di risorsa per ", // "resource-policies.create.page.failure.content": "An error occurred while creating the resource policy.", - "resource-policies.create.page.failure.content": "Si è verificato un errore durante la creazione del criterio della risorsa.", + "resource-policies.create.page.failure.content": "Si è verificato un errore durante la creazione della policy di risorsa.", // "resource-policies.create.page.success.content": "Operation successful", "resource-policies.create.page.success.content": "Operazione riuscita", // "resource-policies.create.page.title": "Create new resource policy", - "resource-policies.create.page.title": "Creare nuovi criteri risorse", + "resource-policies.create.page.title": "Creare nuove policy di risorsa", // "resource-policies.delete.btn": "Delete selected", "resource-policies.delete.btn": "Elimina selezionato", // "resource-policies.delete.btn.title": "Delete selected resource policies", - "resource-policies.delete.btn.title": "Elimina criteri risorse selezionati", + "resource-policies.delete.btn.title": "Elimina le policy di risorsa selezionate", // "resource-policies.delete.failure.content": "An error occurred while deleting selected resource policies.", - "resource-policies.delete.failure.content": "Si è verificato un errore durante l'eliminazione dei criteri delle risorse selezionati.", + "resource-policies.delete.failure.content": "Si è verificato un errore durante l'eliminazione delle policy di risorsa selezionate.", // "resource-policies.delete.success.content": "Operation successful", "resource-policies.delete.success.content": "Operazione riuscita", // "resource-policies.edit.page.heading": "Edit resource policy ", - "resource-policies.edit.page.heading": "Modifica criterio risorse", + "resource-policies.edit.page.heading": "Modifica policy di risorsa", // "resource-policies.edit.page.failure.content": "An error occurred while editing the resource policy.", - "resource-policies.edit.page.failure.content": "Si è verificato un errore durante la modifica del criterio delle risorse.", + "resource-policies.edit.page.failure.content": "Si è verificato un errore durante la modifica della policy di risorsa.", // "resource-policies.edit.page.target-failure.content": "An error occurred while editing the target (ePerson or group) of the resource policy.", - // TODO New key - Add a translation - "resource-policies.edit.page.target-failure.content": "An error occurred while editing the target (ePerson or group) of the resource policy.", + "resource-policies.edit.page.target-failure.content": "Si è verificato un errore durante la modifica dell'obiettivo (ePerson o gruppo) della policy di risorsa.", // "resource-policies.edit.page.other-failure.content": "An error occurred while editing the resource policy. The target (ePerson or group) has been successfully updated.", - // TODO New key - Add a translation - "resource-policies.edit.page.other-failure.content": "An error occurred while editing the resource policy. The target (ePerson or group) has been successfully updated.", + "resource-policies.edit.page.other-failure.content": "Si è verificato un errore durante la modifica della policy di risorsa. L'obiettio (ePerson o gruppo) è stato aggiornato con successo.", // "resource-policies.edit.page.success.content": "Operation successful", "resource-policies.edit.page.success.content": "Operazione riuscita", @@ -5725,20 +5403,16 @@ "resource-policies.form.eperson-group-list.table.headers.name": "Nome", // "resource-policies.form.eperson-group-list.modal.header": "Cannot change type", - // TODO New key - Add a translation - "resource-policies.form.eperson-group-list.modal.header": "Cannot change type", + "resource-policies.form.eperson-group-list.modal.header": "Impossibile modificare il tipo", // "resource-policies.form.eperson-group-list.modal.text1.toGroup": "It is not possible to replace an ePerson with a group.", - // TODO New key - Add a translation - "resource-policies.form.eperson-group-list.modal.text1.toGroup": "It is not possible to replace an ePerson with a group.", + "resource-policies.form.eperson-group-list.modal.text1.toGroup": "Impossibile sostituire una ePerson con un gruppo.", // "resource-policies.form.eperson-group-list.modal.text1.toEPerson": "It is not possible to replace a group with an ePerson.", - // TODO New key - Add a translation - "resource-policies.form.eperson-group-list.modal.text1.toEPerson": "It is not possible to replace a group with an ePerson.", + "resource-policies.form.eperson-group-list.modal.text1.toEPerson": "Impossibile sostituire un gruppo con una ePerson.", // "resource-policies.form.eperson-group-list.modal.text2": "Delete the current resource policy and create a new one with the desired type.", - // TODO New key - Add a translation - "resource-policies.form.eperson-group-list.modal.text2": "Delete the current resource policy and create a new one with the desired type.", + "resource-policies.form.eperson-group-list.modal.text2": "Elimina la policy di risorsa corrente e creane una nuova con il tipo desiderato.", // "resource-policies.form.eperson-group-list.modal.close": "Ok", "resource-policies.form.eperson-group-list.modal.close": "Ok", @@ -5840,7 +5514,6 @@ "search.filters.applied.f.dateSubmitted": "Data di invio", // "search.filters.applied.f.discoverable": "Non-discoverable", - // TODO Source message changed - Revise the translation "search.filters.applied.f.discoverable": "Privato", // "search.filters.applied.f.entityType": "Item Type", @@ -5856,23 +5529,22 @@ "search.filters.applied.f.namedresourcetype": "Stato", // "search.filters.applied.f.subject": "Subject", - "search.filters.applied.f.subject": "Oggetto", + "search.filters.applied.f.subject": "Soggetto", // "search.filters.applied.f.submitter": "Submitter", - "search.filters.applied.f.submitter": "Mittente", + "search.filters.applied.f.submitter": "Submitter", // "search.filters.applied.f.jobTitle": "Job Title", - "search.filters.applied.f.jobTitle": "Titolo di lavoro", + "search.filters.applied.f.jobTitle": "Ruolo", // "search.filters.applied.f.birthDate.max": "End birth date", - "search.filters.applied.f.birthDate.max": "Data di fine nascita", + "search.filters.applied.f.birthDate.max": "Data di nascita finale", // "search.filters.applied.f.birthDate.min": "Start birth date", "search.filters.applied.f.birthDate.min": "Data di nascita iniziale", // "search.filters.applied.f.supervisedBy": "Supervised by", - // TODO New key - Add a translation - "search.filters.applied.f.supervisedBy": "Supervised by", + "search.filters.applied.f.supervisedBy": "Supervisionato da", // "search.filters.applied.f.withdrawn": "Withdrawn", "search.filters.applied.f.withdrawn": "Ritirato", @@ -5961,7 +5633,6 @@ "search.filters.filter.dateSubmitted.label": "Data di ricerca inviata", // "search.filters.filter.discoverable.head": "Non-discoverable", - // TODO Source message changed - Revise the translation "search.filters.filter.discoverable.head": "Privato", // "search.filters.filter.withdrawn.head": "Withdrawn", @@ -5974,7 +5645,7 @@ "search.filters.filter.entityType.placeholder": "Tipo di item", // "search.filters.filter.entityType.label": "Search item type", - "search.filters.filter.entityType.label": "Tipo di item di ricerca", + "search.filters.filter.entityType.label": "Cerca tipo di item", // "search.filters.filter.expand": "Expand filter", "search.filters.filter.expand": "Espandi filtro", @@ -6010,13 +5681,13 @@ "search.filters.filter.knowsLanguage.label": "Cerca nella lingua nota", // "search.filters.filter.namedresourcetype.head": "Status", - "search.filters.filter.namedresourcetype.head": "Status", + "search.filters.filter.namedresourcetype.head": "Stato", // "search.filters.filter.namedresourcetype.placeholder": "Status", - "search.filters.filter.namedresourcetype.placeholder": "Status", + "search.filters.filter.namedresourcetype.placeholder": "Stato", // "search.filters.filter.namedresourcetype.label": "Search status", - "search.filters.filter.namedresourcetype.label": "Status Ricerca", + "search.filters.filter.namedresourcetype.label": "Cerca stato", // "search.filters.filter.objectpeople.head": "People", "search.filters.filter.objectpeople.head": "Ricercatori", @@ -6088,20 +5759,19 @@ "search.filters.filter.submitter.label": "Mittente della ricerca", // "search.filters.filter.show-tree": "Browse {{ name }} tree", - // TODO New key - Add a translation - "search.filters.filter.show-tree": "Browse {{ name }} tree", + "search.filters.filter.show-tree": "Sfoglia l'albero di {{ name }}", // "search.filters.filter.supervisedBy.head": "Supervised By", - // TODO New key - Add a translation - "search.filters.filter.supervisedBy.head": "Supervised By", + "search.filters.filter.supervisedBy.head": "Supervisionato da", // "search.filters.filter.supervisedBy.placeholder": "Supervised By", - // TODO New key - Add a translation - "search.filters.filter.supervisedBy.placeholder": "Supervised By", + "search.filters.filter.supervisedBy.placeholder": "Supervisionato da", // "search.filters.filter.supervisedBy.label": "Search Supervised By", - // TODO New key - Add a translation - "search.filters.filter.supervisedBy.label": "Search Supervised By", + "search.filters.filter.supervisedBy.label": "Cerca supervisionato da", + + // "search.filters.filter.types.head": "Type", + "search.filters.filter.types.head": "Tipo", @@ -6168,19 +5838,16 @@ "search.results.empty": "La tua ricerca non ha prodotto risultati.", // "search.results.view-result": "View", - // TODO New key - Add a translation - "search.results.view-result": "View", + "search.results.view-result": "Vedi", // "search.results.response.500": "An error occurred during query execution, please try again later", - // TODO New key - Add a translation - "search.results.response.500": "An error occurred during query execution, please try again later", + "search.results.response.500": "Si è verificato un errore durante l'esecuzione, si prega di riprovare più tardi", // "default.search.results.head": "Search Results", "default.search.results.head": "Risultati della ricerca", // "default-relationships.search.results.head": "Search Results", - // TODO New key - Add a translation - "default-relationships.search.results.head": "Search Results", + "default-relationships.search.results.head": "Risultati della ricerca", // "search.sidebar.close": "Back to results", @@ -6218,13 +5885,13 @@ // "sorting.ASC": "Ascending", - "sorting.ASC": "Ascendente", + "sorting.ASC": "Crescente", // "sorting.DESC": "Descending", - "sorting.DESC": "Discendente", + "sorting.DESC": "Decrescente", // "sorting.dc.title.ASC": "Title Ascending", - "sorting.dc.title.ASC": "Titolo ascendente", + "sorting.dc.title.ASC": "Titolo crescente", // "sorting.dc.title.DESC": "Title Descending", "sorting.dc.title.DESC": "Titolo decrescente", @@ -6270,32 +5937,25 @@ "statistics.table.no-data": "Nessun dato disponibile", // "statistics.table.title.TotalVisits": "Total visits", - // TODO New key - Add a translation - "statistics.table.title.TotalVisits": "Total visits", + "statistics.table.rppublicationsReports.title.TotalVisits": "Visite totali", // "statistics.table.title.TotalVisitsPerMonth": "Total visits per month", - // TODO New key - Add a translation - "statistics.table.title.TotalVisitsPerMonth": "Total visits per month", + "statistics.table.title.TotalVisitsPerMonth": "Visite totali al mese", // "statistics.table.title.TotalDownloads": "File Visits", - // TODO New key - Add a translation - "statistics.table.title.TotalDownloads": "File Visits", + "statistics.table.title.TotalDownloads": "Download", // "statistics.table.title.TopCountries": "Top country views", - // TODO New key - Add a translation - "statistics.table.title.TopCountries": "Top country views", + "statistics.table.title.TopCountries": "Migliori nazioni", // "statistics.table.title.TopCities": "Top city views", - // TODO New key - Add a translation - "statistics.table.title.TopCities": "Top city views", + "statistics.table.title.TopCities": "Migliori città", // "statistics.table.header.views": "Views", - // TODO New key - Add a translation - "statistics.table.header.views": "Views", + "statistics.table.header.views": "Visite", // "statistics.table.no-name": "(object name could not be loaded)", - // TODO New key - Add a translation - "statistics.table.no-name": "(object name could not be loaded)", + "statistics.table.no-name": "(il nome dell'oggetto non può essere caricato)", @@ -6403,7 +6063,6 @@ "submission.import-external.source.crossref": "CrossRef", // "submission.import-external.source.datacite": "DataCite", - // TODO New key - Add a translation "submission.import-external.source.datacite": "DataCite", // "submission.import-external.source.scielo": "SciELO", @@ -6452,22 +6111,19 @@ "submission.import-external.source.lcname": "Nomi della Biblioteca del Congresso", // "submission.import-external.preview.title": "Item Preview", - // TODO New key - Add a translation - "submission.import-external.preview.title": "Item Preview", + "submission.import-external.preview.title": "Anteprima item", // "submission.import-external.preview.title.Publication": "Publication Preview", "submission.import-external.preview.title.Publication": "Anteprima pubblicazione", // "submission.import-external.preview.title.none": "Item Preview", - // TODO New key - Add a translation - "submission.import-external.preview.title.none": "Item Preview", + "submission.import-external.preview.title.none": "Anteprima item", // "submission.import-external.preview.title.Journal": "Journal Preview", "submission.import-external.preview.title.Journal": "Anteprima journal", // "submission.import-external.preview.title.OrgUnit": "Organizational Unit Preview", - // TODO Source message changed - Revise the translation - "submission.import-external.preview.title.OrgUnit": "Anteprima editore", + "submission.import-external.preview.title.OrgUnit": "Anteprima struttura", // "submission.import-external.preview.title.Person": "Person Preview", "submission.import-external.preview.title.Person": "Anteprima persona", @@ -6509,8 +6165,7 @@ "submission.sections.describe.relationship-lookup.external-source.import-button-title.isProjectOfPublication": "Progetto", // "submission.sections.describe.relationship-lookup.external-source.import-button-title.none": "Import remote item", - // TODO New key - Add a translation - "submission.sections.describe.relationship-lookup.external-source.import-button-title.none": "Import remote item", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.none": "Importa item remoti", // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Event": "Import remote event", "submission.sections.describe.relationship-lookup.external-source.import-button-title.Event": "Importa evento remoto", @@ -6522,8 +6177,7 @@ "submission.sections.describe.relationship-lookup.external-source.import-button-title.Equipment": "Importare apparecchiature remote", // "submission.sections.describe.relationship-lookup.external-source.import-button-title.OrgUnit": "Import remote organizational unit", - // TODO Source message changed - Revise the translation - "submission.sections.describe.relationship-lookup.external-source.import-button-title.OrgUnit": "Importa editore remoto", + "submission.sections.describe.relationship-lookup.external-source.import-button-title.OrgUnit": "Importa unitá remota", // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Funding": "Import remote fund", "submission.sections.describe.relationship-lookup.external-source.import-button-title.Funding": "Importa fondo remoto", @@ -6625,8 +6279,7 @@ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.new-entity": "Importato e aggiunto con successo volume di journal esterno alla selezione", // "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Select a local match:", - // TODO New key - Add a translation - "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Select a local match:", + "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Seleziona una corrispondenza locale:", // "submission.sections.describe.relationship-lookup.search-tab.deselect-all": "Deselect all", "submission.sections.describe.relationship-lookup.search-tab.deselect-all": "Deseleziona tutto", @@ -6728,8 +6381,7 @@ "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfProject": "Finanziatore del progetto", // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isPublicationOfAuthor": "Publication of the Author", - // TODO New key - Add a translation - "submission.sections.describe.relationship-lookup.search-tab.tab-title.isPublicationOfAuthor": "Publication of the Author", + "submission.sections.describe.relationship-lookup.search-tab.tab-title.isPublicationOfAuthor": "Pubblicazioni dell'autore", // "submission.sections.describe.relationship-lookup.selection-tab.title.openAIREFunding": "Funding OpenAIRE API", "submission.sections.describe.relationship-lookup.selection-tab.title.openAIREFunding": "Finanziamento dell'API OpenAIRE", @@ -6798,11 +6450,10 @@ "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Unità organizzativa padre", // "submission.sections.describe.relationship-lookup.title.isPublicationOfAuthor": "Publication", - // TODO New key - Add a translation - "submission.sections.describe.relationship-lookup.title.isPublicationOfAuthor": "Publication", + "submission.sections.describe.relationship-lookup.title.isPublicationOfAuthor": "Pubblicazioni", // "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Toggle dropdown", - "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Toggle dropdown", + "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Attiva dropdown", // "submission.sections.describe.relationship-lookup.selection-tab.settings": "Settings", "submission.sections.describe.relationship-lookup.selection-tab.settings": "Impostazioni", @@ -6894,8 +6545,7 @@ // "submission.sections.describe.relationship-lookup.selection-tab.title": "Search Results", "submission.sections.describe.relationship-lookup.selection-tab.title": "Risultati della ricerca", - // "submission.sections.describe.relationship-lookup.name-variant.notification.content": "Would you like to save \"{{ value }}\" as a name variant for this person so you and others can reuse it for future submissions? If you don't you can still use it for this submission.", - // TODO Source message changed - Revise the translation + // "submission.sections.describe.relationship-lookup.name-variant.notification.content": "Would you like to save \"{{ value }}\" as a name variant for this person so you and others can reuse it for future submissions? If you don\'t you can still use it for this submission.", "submission.sections.describe.relationship-lookup.name-variant.notification.content": "Desideri salvare \"{{ value }}\" come variante del nome per questa persona in modo che tu e altri possiate riutilizzarlo per immissioni future? Se non lo fai, puoi comunque usarlo per questa immissione.", // "submission.sections.describe.relationship-lookup.name-variant.notification.confirm": "Save a new name variant", @@ -6920,8 +6570,7 @@ "submission.sections.ccLicense.option.select": "Seleziona un'opzione...", // "submission.sections.ccLicense.link": "You’ve selected the following license:", - // TODO New key - Add a translation - "submission.sections.ccLicense.link": "You’ve selected the following license:", + "submission.sections.ccLicense.link": "Hai selezionato la seguente licenza:", // "submission.sections.ccLicense.confirmation": "I grant the license above", "submission.sections.ccLicense.confirmation": "Concedo la licenza di cui sopra", @@ -6930,14 +6579,13 @@ "submission.sections.general.add-more": "Aggiungi altro", // "submission.sections.general.cannot_deposit": "Deposit cannot be completed due to errors in the form.
Please fill out all required fields to complete the deposit.", - // TODO New key - Add a translation - "submission.sections.general.cannot_deposit": "Deposit cannot be completed due to errors in the form.
Please fill out all required fields to complete the deposit.", + "submission.sections.general.cannot_deposit": "L'immissione non può essere competata a causa di errori nel modulo.
Si prega di compilare tutti i campi obbligatori.", // "submission.sections.general.collection": "Collection", - "submission.sections.general.collection": "collezione", + "submission.sections.general.collection": "Collezione", // "submission.sections.general.deposit_error_notice": "There was an issue when submitting the item, please try again later.", - "submission.sections.general.deposit_error_notice": "Si è verificato un problema durante l'immissione dell'articolo, riprova più tardi.", + "submission.sections.general.deposit_error_notice": "Si è verificato un problema durante l'immissione dell'item, riprova più tardi.", // "submission.sections.general.deposit_success_notice": "Submission deposited successfully.", "submission.sections.general.deposit_success_notice": "Immissione depositata con successo.", @@ -6960,8 +6608,7 @@ // "submission.sections.general.no-sections": "No options available", "submission.sections.general.no-sections": "Nessuna opzione disponibile", - // "submission.sections.general.save_error_notice": "There was an issue when saving the item, please try again later.", - // TODO Source message changed - Revise the translation + // "submission.sections.general.save_error_notice": "There was an unexpected error when saving the item. Refresh the page and try again. After refreshing unsaved modifications could be lost.", "submission.sections.general.save_error_notice": "Si è verificato un errore imprevisto durante il salvataggio dell'item. Aggiorna la pagina e riprova. Dopo aver aggiornato le modifiche non salvate potrebbero andare perse.", // "submission.sections.general.save_success_notice": "Submission saved successfully.", @@ -6974,28 +6621,22 @@ "submission.sections.general.sections_not_valid": "Ci sono sezioni incomplete.", // "submission.sections.identifiers.info": "The following identifiers will be created for your item:", - // TODO New key - Add a translation - "submission.sections.identifiers.info": "The following identifiers will be created for your item:", + "submission.sections.identifiers.info": "Per questo item saranno generati i seguenti identificativi:", // "submission.sections.identifiers.no_handle": "No handles have been minted for this item.", - // TODO New key - Add a translation - "submission.sections.identifiers.no_handle": "No handles have been minted for this item.", + "submission.sections.identifiers.no_handle": "Non sono stati generati handle per questo item.", // "submission.sections.identifiers.no_doi": "No DOIs have been minted for this item.", - // TODO New key - Add a translation - "submission.sections.identifiers.no_doi": "No DOIs have been minted for this item.", + "submission.sections.identifiers.no_doi": "Non sono stati generati DOI per questo item.", // "submission.sections.identifiers.handle_label": "Handle: ", - // TODO New key - Add a translation "submission.sections.identifiers.handle_label": "Handle: ", // "submission.sections.identifiers.doi_label": "DOI: ", - // TODO New key - Add a translation "submission.sections.identifiers.doi_label": "DOI: ", // "submission.sections.identifiers.otherIdentifiers_label": "Other identifiers: ", - // TODO New key - Add a translation - "submission.sections.identifiers.otherIdentifiers_label": "Other identifiers: ", + "submission.sections.identifiers.otherIdentifiers_label": "Altri identificativi: ", // "submission.sections.submit.progressbar.accessCondition": "Item access conditions", "submission.sections.submit.progressbar.accessCondition": "Condizioni di accesso all'item", @@ -7019,27 +6660,23 @@ "submission.sections.submit.progressbar.detect-duplicate": "Potenziali duplicati", // "submission.sections.submit.progressbar.identifiers": "Identifiers", - // TODO New key - Add a translation - "submission.sections.submit.progressbar.identifiers": "Identifiers", + "submission.sections.submit.progressbar.identifiers": "Identificativi", // "submission.sections.submit.progressbar.license": "Deposit license", "submission.sections.submit.progressbar.license": "Licenza di deposito", // "submission.sections.submit.progressbar.sherpapolicy": "Sherpa policies", - // TODO New key - Add a translation - "submission.sections.submit.progressbar.sherpapolicy": "Sherpa policies", + "submission.sections.submit.progressbar.sherpapolicy": "Policy di Sherpa", // "submission.sections.submit.progressbar.upload": "Upload files", "submission.sections.submit.progressbar.upload": "Carica file", // "submission.sections.submit.progressbar.sherpaPolicies": "Publisher open access policy information", - // TODO New key - Add a translation - "submission.sections.submit.progressbar.sherpaPolicies": "Publisher open access policy information", + "submission.sections.submit.progressbar.sherpaPolicies": "Informazioni sulla policy di open access dell'editore", // "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.", - // TODO New key - Add a translation - "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": "Non sono disponibili informazioni sulle policy dell'editore. Se il lavoro ha un ISSN associato, si prega di inserirlo qui sopra per vedere le policy di open access dell'editore.", // "submission.sections.status.errors.title": "Errors", "submission.sections.status.errors.title": "Errori", @@ -7060,12 +6697,10 @@ "submission.sections.status.warnings.aria": "ha avvisi", // "submission.sections.status.info.title": "Additional Information", - // TODO New key - Add a translation - "submission.sections.status.info.title": "Additional Information", + "submission.sections.status.info.title": "Informazioni aggiuntive", // "submission.sections.status.info.aria": "Additional Information", - // TODO New key - Add a translation - "submission.sections.status.info.aria": "Additional Information", + "submission.sections.status.info.aria": "Informazioni aggiuntive", // "submission.sections.toggle.open": "Open section", "submission.sections.toggle.open": "Apri sezione", @@ -7143,16 +6778,13 @@ "submission.sections.upload.form.until-placeholder": "Fino a quando", // "submission.sections.upload.header.policy.default.nolist": "Uploaded files in the {{collectionName}} collection will be accessible according to the following group(s):", - // TODO New key - Add a translation - "submission.sections.upload.header.policy.default.nolist": "Uploaded files in the {{collectionName}} collection will be accessible according to the following group(s):", + "submission.sections.upload.header.policy.default.nolist": "I file caricati nella collection {{collectionName}} saranno accessibili in base ai seguenti gruppi:", // "submission.sections.upload.header.policy.default.withlist": "Please note that uploaded files in the {{collectionName}} collection will be accessible, in addition to what is explicitly decided for the single file, with the following group(s):", - // TODO New key - Add a translation - "submission.sections.upload.header.policy.default.withlist": "Please note that uploaded files in the {{collectionName}} collection will be accessible, in addition to what is explicitly decided for the single file, with the following group(s):", + "submission.sections.upload.header.policy.default.withlist": "Si prega di notare che i file caricati nella collection {{collectionName}} saranno accessibili, in aggiunta a quanto esplicitamente deciso per il singolo file, con i seguenti gruppi:", // "submission.sections.upload.info": "Here you will find all the files currently in the item. You can update the file metadata and access conditions or upload additional files by dragging & dropping them anywhere on the page.", - // TODO Source message changed - Revise the translation - "submission.sections.upload.info": "Qui troverai tutti i file attualmente presenti nell'articolo. È possibile aggiornare i metadati dei file e le condizioni di accesso o upload di file aggiuntivi semplicemente trascinandoli e rilasciandoli ovunque nella pagina", + "submission.sections.upload.info": "Qui troverai tutti i file attualmente presenti nell'item. È possibile aggiornare i metadati dei file e le condizioni di accesso o caricare file aggiuntivi semplicemente trascinandoli e rilasciandoli ovunque nella pagina", // "submission.sections.upload.no-entry": "No", "submission.sections.upload.no-entry": "No", @@ -7218,121 +6850,92 @@ "submission.sections.accesses.form.until-placeholder": "Fino a quando", // "submission.sections.license.granted-label": "I confirm the license above", - // TODO New key - Add a translation - "submission.sections.license.granted-label": "I confirm the license above", + "submission.sections.license.granted-label": "Confermo la licenza di cui sopra", // "submission.sections.license.required": "You must accept the license", - // TODO New key - Add a translation - "submission.sections.license.required": "You must accept the license", + "submission.sections.license.required": "È necessario accettare la licenza", // "submission.sections.license.notgranted": "You must accept the license", - // TODO New key - Add a translation - "submission.sections.license.notgranted": "You must accept the license", + "submission.sections.license.notgranted": "È necessario accettare la licenza", // "submission.sections.sherpa.publication.information": "Publication information", - // TODO New key - Add a translation - "submission.sections.sherpa.publication.information": "Publication information", + "submission.sections.sherpa.publication.information": "Informazioni sulla pubblicazione", // "submission.sections.sherpa.publication.information.title": "Title", - // TODO New key - Add a translation - "submission.sections.sherpa.publication.information.title": "Title", + "submission.sections.sherpa.publication.information.title": "Titolo", // "submission.sections.sherpa.publication.information.issns": "ISSNs", - // TODO New key - Add a translation - "submission.sections.sherpa.publication.information.issns": "ISSNs", + "submission.sections.sherpa.publication.information.issns": "ISSN", // "submission.sections.sherpa.publication.information.url": "URL", - // TODO New key - Add a translation "submission.sections.sherpa.publication.information.url": "URL", // "submission.sections.sherpa.publication.information.publishers": "Publisher", - // TODO New key - Add a translation - "submission.sections.sherpa.publication.information.publishers": "Publisher", + "submission.sections.sherpa.publication.information.publishers": "Editore", // "submission.sections.sherpa.publication.information.romeoPub": "Romeo Pub", - // TODO New key - Add a translation "submission.sections.sherpa.publication.information.romeoPub": "Romeo Pub", // "submission.sections.sherpa.publication.information.zetoPub": "Zeto Pub", - // TODO New key - Add a translation "submission.sections.sherpa.publication.information.zetoPub": "Zeto Pub", // "submission.sections.sherpa.publisher.policy": "Publisher Policy", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy": "Publisher Policy", + "submission.sections.sherpa.publisher.policy": "Policy dell'editore", // "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.", - // TODO New key - Add a translation - "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": "Le informazioni riportate di seguito sono state reperite tramite Sherpa Romeo. In base alle policy del vostro editore, fornisce consigli sull'eventuale necessità di un embargo e/o su quali file è possibile caricare. In caso di domande, contattare l'amministratore del sito tramite il modulo di feedback nel piè di pagina.", // "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", - // TODO New key - Add a translation - "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": "I percorsi open access consentiti dalle policy di questa rivista sono elencati di seguito per versione dell'articolo. Clicca su un percorso per vederlo nel dettaglio", // "submission.sections.sherpa.publisher.policy.more.information": "For more information, please see the following links:", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy.more.information": "For more information, please see the following links:", + "submission.sections.sherpa.publisher.policy.more.information": "Per maggiori informazioni si prega di consultare il seguente link:", // "submission.sections.sherpa.publisher.policy.version": "Version", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy.version": "Version", + "submission.sections.sherpa.publisher.policy.version": "Versione", // "submission.sections.sherpa.publisher.policy.embargo": "Embargo", - // TODO New key - Add a translation "submission.sections.sherpa.publisher.policy.embargo": "Embargo", // "submission.sections.sherpa.publisher.policy.noembargo": "No Embargo", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy.noembargo": "No Embargo", + "submission.sections.sherpa.publisher.policy.noembargo": "Nessun embargo", // "submission.sections.sherpa.publisher.policy.nolocation": "None", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy.nolocation": "None", + "submission.sections.sherpa.publisher.policy.nolocation": "Nessuno", // "submission.sections.sherpa.publisher.policy.license": "License", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy.license": "License", + "submission.sections.sherpa.publisher.policy.license": "Licenza", // "submission.sections.sherpa.publisher.policy.prerequisites": "Prerequisites", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy.prerequisites": "Prerequisites", + "submission.sections.sherpa.publisher.policy.prerequisites": "Prerequisiti", // "submission.sections.sherpa.publisher.policy.location": "Location", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy.location": "Location", + "submission.sections.sherpa.publisher.policy.location": "Località", // "submission.sections.sherpa.publisher.policy.conditions": "Conditions", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy.conditions": "Conditions", + "submission.sections.sherpa.publisher.policy.conditions": "Condizioni", // "submission.sections.sherpa.publisher.policy.refresh": "Refresh", - // TODO New key - Add a translation - "submission.sections.sherpa.publisher.policy.refresh": "Refresh", + "submission.sections.sherpa.publisher.policy.refresh": "Ricarica", // "submission.sections.sherpa.record.information": "Record Information", - // TODO New key - Add a translation - "submission.sections.sherpa.record.information": "Record Information", + "submission.sections.sherpa.record.information": "Informazioni sulla registrazione", // "submission.sections.sherpa.record.information.id": "ID", - // TODO New key - Add a translation "submission.sections.sherpa.record.information.id": "ID", // "submission.sections.sherpa.record.information.date.created": "Date Created", - // TODO New key - Add a translation - "submission.sections.sherpa.record.information.date.created": "Date Created", + "submission.sections.sherpa.record.information.date.created": "Data di creazione", // "submission.sections.sherpa.record.information.date.modified": "Last Modified", - // TODO New key - Add a translation - "submission.sections.sherpa.record.information.date.modified": "Last Modified", + "submission.sections.sherpa.record.information.date.modified": "Ultima modifica", // "submission.sections.sherpa.record.information.uri": "URI", - // TODO New key - Add a translation "submission.sections.sherpa.record.information.uri": "URI", // "submission.sections.sherpa.error.message": "There was an error retrieving sherpa informations", - // TODO New key - Add a translation - "submission.sections.sherpa.error.message": "There was an error retrieving sherpa informations", + "submission.sections.sherpa.error.message": "Si è verificato un errore nel recuperare le informazioni da Sherpa", @@ -7347,8 +6950,7 @@ // "submission.workflow.generic.delete": "Delete", "submission.workflow.generic.delete": "Elimina", - // "submission.workflow.generic.delete-help": "Select this option to discard this item. You will then be asked to confirm it.", - // TODO Source message changed - Revise the translation + // "submission.workflow.generic.delete-help": "If you would to discard this item, select \"Delete\". You will then be asked to confirm it.", "submission.workflow.generic.delete-help": "Se si desidera eliminare questo item, selezionare \"Elimina\". Ti verrà quindi chiesto di confermarlo.", // "submission.workflow.generic.edit": "Edit", @@ -7365,20 +6967,16 @@ // "submission.workflow.generic.submit_select_reviewer": "Select Reviewer", - // TODO New key - Add a translation - "submission.workflow.generic.submit_select_reviewer": "Select Reviewer", + "submission.workflow.generic.submit_select_reviewer": "Seleziona revisore", // "submission.workflow.generic.submit_select_reviewer-help": "", - // TODO New key - Add a translation "submission.workflow.generic.submit_select_reviewer-help": "", // "submission.workflow.generic.submit_score": "Rate", - // TODO New key - Add a translation - "submission.workflow.generic.submit_score": "Rate", + "submission.workflow.generic.submit_score": "Valuta", // "submission.workflow.generic.submit_score-help": "", - // TODO New key - Add a translation "submission.workflow.generic.submit_score-help": "", @@ -7395,11 +6993,9 @@ "submission.workflow.tasks.claimed.edit_help": "Selezionare questa opzione per modificare i metadati dell'item.", // "submission.workflow.tasks.claimed.decline": "Decline", - // TODO New key - Add a translation - "submission.workflow.tasks.claimed.decline": "Decline", + "submission.workflow.tasks.claimed.decline": "Rifiuta", // "submission.workflow.tasks.claimed.decline_help": "", - // TODO New key - Add a translation "submission.workflow.tasks.claimed.decline_help": "", // "submission.workflow.tasks.claimed.reject.reason.info": "Please enter your reason for rejecting the submission into the box below, indicating whether the submitter may fix a problem and resubmit.", @@ -7490,72 +7086,55 @@ "subscriptions.frequency.W": "Settimanale", // "subscriptions.tooltip": "Subscribe", - // TODO New key - Add a translation - "subscriptions.tooltip": "Subscribe", + "subscriptions.tooltip": "Sottoscrivi", // "subscriptions.modal.title": "Subscriptions", - // TODO New key - Add a translation - "subscriptions.modal.title": "Subscriptions", + "subscriptions.modal.title": "Sottoscrizioni", // "subscriptions.modal.type-frequency": "Type and frequency", - // TODO New key - Add a translation - "subscriptions.modal.type-frequency": "Type and frequency", + "subscriptions.modal.type-frequency": "Tipo e frequenza", // "subscriptions.modal.close": "Close", - // TODO New key - Add a translation - "subscriptions.modal.close": "Close", + "subscriptions.modal.close": "Chiudi", // "subscriptions.modal.delete-info": "To remove this subscription, please visit the \"Subscriptions\" page under your user profile", - // TODO New key - Add a translation - "subscriptions.modal.delete-info": "To remove this subscription, please visit the \"Subscriptions\" page under your user profile", + "subscriptions.modal.delete-info": "Per rimuovere questa sottoscrizione si prega di visitare la pagina \"Sottoscrizioni\" nel proprio profilo utente", // "subscriptions.modal.new-subscription-form.type.content": "Content", - // TODO New key - Add a translation - "subscriptions.modal.new-subscription-form.type.content": "Content", + "subscriptions.modal.new-subscription-form.type.content": "Contenuto", // "subscriptions.modal.new-subscription-form.frequency.D": "Daily", - // TODO New key - Add a translation - "subscriptions.modal.new-subscription-form.frequency.D": "Daily", + "subscriptions.modal.new-subscription-form.frequency.D": "Giornaliero", // "subscriptions.modal.new-subscription-form.frequency.W": "Weekly", - // TODO New key - Add a translation - "subscriptions.modal.new-subscription-form.frequency.W": "Weekly", + "subscriptions.modal.new-subscription-form.frequency.W": "Settimanale", // "subscriptions.modal.new-subscription-form.frequency.M": "Monthly", - // TODO New key - Add a translation - "subscriptions.modal.new-subscription-form.frequency.M": "Monthly", + "subscriptions.modal.new-subscription-form.frequency.M": "Mensile", // "subscriptions.modal.new-subscription-form.submit": "Submit", - // TODO New key - Add a translation - "subscriptions.modal.new-subscription-form.submit": "Submit", + "subscriptions.modal.new-subscription-form.submit": "Invia", // "subscriptions.modal.new-subscription-form.processing": "Processing...", - // TODO New key - Add a translation - "subscriptions.modal.new-subscription-form.processing": "Processing...", + "subscriptions.modal.new-subscription-form.processing": "Elaborazione...", // "subscriptions.modal.create.success": "Subscribed to {{ type }} successfully.", - // TODO New key - Add a translation - "subscriptions.modal.create.success": "Subscribed to {{ type }} successfully.", + "subscriptions.modal.create.success": "Sottoscrzione a {{ type }} avvenuta con successo.", // "subscriptions.modal.delete.success": "Subscription deleted successfully", - // TODO New key - Add a translation - "subscriptions.modal.delete.success": "Subscription deleted successfully", + "subscriptions.modal.delete.success": "Sottoscrizione eliminata con successo", // "subscriptions.modal.update.success": "Subscription to {{ type }} updated successfully", - // TODO New key - Add a translation - "subscriptions.modal.update.success": "Subscription to {{ type }} updated successfully", + "subscriptions.modal.update.success": "Sottoscrizione a {{ type }} aggiornata con successo", // "subscriptions.modal.create.error": "An error occurs during the subscription creation", - // TODO New key - Add a translation - "subscriptions.modal.create.error": "An error occurs during the subscription creation", + "subscriptions.modal.create.error": "Si è verificato un errore durante la creazione della sottoscrizione", // "subscriptions.modal.delete.error": "An error occurs during the subscription delete", - // TODO New key - Add a translation - "subscriptions.modal.delete.error": "An error occurs during the subscription delete", + "subscriptions.modal.delete.error": "Si è verificato un errore durante l'eliminazione della sottoscrizione", // "subscriptions.modal.update.error": "An error occurs during the subscription update", - // TODO New key - Add a translation - "subscriptions.modal.update.error": "An error occurs during the subscription update", + "subscriptions.modal.update.error": "Si è verificato un errore durante l'aggiornamento della sottoscrizione", // "subscriptions.table.dso": "Subject", "subscriptions.table.dso": "Oggetto", @@ -7570,24 +7149,19 @@ "subscriptions.table.action": "Azione", // "subscriptions.table.edit": "Edit", - // TODO New key - Add a translation - "subscriptions.table.edit": "Edit", + "subscriptions.table.edit": "Modifica", // "subscriptions.table.delete": "Delete", - // TODO New key - Add a translation - "subscriptions.table.delete": "Delete", + "subscriptions.table.delete": "Elimina", // "subscriptions.table.not-available": "Not available", - // TODO New key - Add a translation - "subscriptions.table.not-available": "Not available", + "subscriptions.table.not-available": "Non disponibile", // "subscriptions.table.not-available-message": "The subscribed item has been deleted, or you don't currently have the permission to view it", - // TODO New key - Add a translation - "subscriptions.table.not-available-message": "The subscribed item has been deleted, or you don't currently have the permission to view it", + "subscriptions.table.not-available-message": "L'elemento sottoscritto è stato cancellato o non si ha l'autorizzazione per visualizzarlo.", // "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.", - // TODO Source message changed - Revise the translation - "subscriptions.table.empty.message": "Non hai ancora sottoscritto alcuna notifica. Per sottoscrivere la notifica relativa a un oggetto, usa il menu contestuale nella pagina di dettaglio dell'oggetto", + "subscriptions.table.empty.message": "Al momento non ci sono sottoscrizioni. Per ricevere aggiornamenti via e-mail di una Community o di una Collection, utilizzare il pulsante di sottoscrizione sulla pagina dell'oggetto", // "thumbnail.default.alt": "Thumbnail Image", @@ -7643,8 +7217,7 @@ "vocabulary-treeview.tree.description.srsc": "Categorie di argomenti di ricerca", // "vocabulary-treeview.info": "Select a subject to add as search filter", - // TODO New key - Add a translation - "vocabulary-treeview.info": "Select a subject to add as search filter", + "vocabulary-treeview.info": "Seleziona un soggetto da aggiungere come filtro di ricerca", // "uploader.browse": "browse", "uploader.browse": "sfoglia", @@ -7659,8 +7232,7 @@ "uploader.or": ", oppure ", // "uploader.processing": "Processing uploaded file(s)... (it's now safe to close this page)", - // TODO Source message changed - Revise the translation - "uploader.processing": "Elaborazione", + "uploader.processing": "Elaborazione dei file caricati... (è ora possibile chiudere questa pagina)", // "uploader.queue-length": "Queue length", "uploader.queue-length": "Lunghezza coda", @@ -7677,8 +7249,7 @@ // "supervisedWorkspace.search.results.head": "Supervised Items", - // TODO New key - Add a translation - "supervisedWorkspace.search.results.head": "Supervised Items", + "supervisedWorkspace.search.results.head": "Item supervisionati", // "workspace.search.results.head": "Your submissions", "workspace.search.results.head": "I tuoi invii", @@ -7690,8 +7261,7 @@ "workflow.search.results.head": "Task del workflow", // "supervision.search.results.head": "Workflow and Workspace tasks", - // TODO New key - Add a translation - "supervision.search.results.head": "Workflow and Workspace tasks", + "supervision.search.results.head": "Task del workflow e del workspace", @@ -7761,74 +7331,57 @@ // "workflow-item.advanced.title": "Advanced workflow", - // TODO New key - Add a translation - "workflow-item.advanced.title": "Advanced workflow", + "workflow-item.advanced.title": "Workflow avanzato", // "workflow-item.selectrevieweraction.notification.success.title": "Selected reviewer", - // TODO New key - Add a translation - "workflow-item.selectrevieweraction.notification.success.title": "Selected reviewer", + "workflow-item.selectrevieweraction.notification.success.title": "Revisore selezionato", // "workflow-item.selectrevieweraction.notification.success.content": "The reviewer for this workflow item has been successfully selected", - // TODO New key - Add a translation - "workflow-item.selectrevieweraction.notification.success.content": "The reviewer for this workflow item has been successfully selected", + "workflow-item.selectrevieweraction.notification.success.content": "Il revisore per questo item nel workflow è stato selezionato con successo", // "workflow-item.selectrevieweraction.notification.error.title": "Something went wrong", - // TODO New key - Add a translation - "workflow-item.selectrevieweraction.notification.error.title": "Something went wrong", + "workflow-item.selectrevieweraction.notification.error.title": "Qualcosa è andato storto", // "workflow-item.selectrevieweraction.notification.error.content": "Couldn't select the reviewer for this workflow item", - // TODO New key - Add a translation - "workflow-item.selectrevieweraction.notification.error.content": "Couldn't select the reviewer for this workflow item", + "workflow-item.selectrevieweraction.notification.error.content": "Non è stato possibile selezionare il revisore per questo item nel workflow", // "workflow-item.selectrevieweraction.title": "Select Reviewer", - // TODO New key - Add a translation - "workflow-item.selectrevieweraction.title": "Select Reviewer", + "workflow-item.selectrevieweraction.title": "Seleziona revisore", // "workflow-item.selectrevieweraction.header": "Select Reviewer", - // TODO New key - Add a translation - "workflow-item.selectrevieweraction.header": "Select Reviewer", + "workflow-item.selectrevieweraction.header": "Seleziona revisore", // "workflow-item.selectrevieweraction.button.cancel": "Cancel", - // TODO New key - Add a translation - "workflow-item.selectrevieweraction.button.cancel": "Cancel", + "workflow-item.selectrevieweraction.button.cancel": "Annulla", // "workflow-item.selectrevieweraction.button.confirm": "Confirm", - // TODO New key - Add a translation - "workflow-item.selectrevieweraction.button.confirm": "Confirm", + "workflow-item.selectrevieweraction.button.confirm": "Conferma", // "workflow-item.scorereviewaction.notification.success.title": "Rating review", - // TODO New key - Add a translation - "workflow-item.scorereviewaction.notification.success.title": "Rating review", + "workflow-item.scorereviewaction.notification.success.title": "Valuta revisione", // "workflow-item.scorereviewaction.notification.success.content": "The rating for this item workflow item has been successfully submitted", - // TODO New key - Add a translation - "workflow-item.scorereviewaction.notification.success.content": "The rating for this item workflow item has been successfully submitted", + "workflow-item.scorereviewaction.notification.success.content": "La valutazione per il workflow di questo item è stata inserita con successo", // "workflow-item.scorereviewaction.notification.error.title": "Something went wrong", - // TODO New key - Add a translation - "workflow-item.scorereviewaction.notification.error.title": "Something went wrong", + "workflow-item.scorereviewaction.notification.error.title": "Qualcosa è andato storto", // "workflow-item.scorereviewaction.notification.error.content": "Couldn't rate this item", - // TODO New key - Add a translation - "workflow-item.scorereviewaction.notification.error.content": "Couldn't rate this item", + "workflow-item.scorereviewaction.notification.error.content": "Non è stato possibile valutare questo item", // "workflow-item.scorereviewaction.title": "Rate this item", - // TODO New key - Add a translation - "workflow-item.scorereviewaction.title": "Rate this item", + "workflow-item.scorereviewaction.title": "Valuta questo item", // "workflow-item.scorereviewaction.header": "Rate this item", - // TODO New key - Add a translation - "workflow-item.scorereviewaction.header": "Rate this item", + "workflow-item.scorereviewaction.header": "Valuta questo item", // "workflow-item.scorereviewaction.button.cancel": "Cancel", - // TODO New key - Add a translation - "workflow-item.scorereviewaction.button.cancel": "Cancel", + "workflow-item.scorereviewaction.button.cancel": "Annulla", // "workflow-item.scorereviewaction.button.confirm": "Confirm", - // TODO New key - Add a translation - "workflow-item.scorereviewaction.button.confirm": "Confirm", + "workflow-item.scorereviewaction.button.confirm": "Conferma", // "idle-modal.header": "Session will expire soon", "idle-modal.header": "La sessione scadrà presto", @@ -7843,7 +7396,6 @@ "idle-modal.extend-session": "Estendi sessione", // "researcher.profile.action.processing": "Processing...", - // TODO Source message changed - Revise the translation "researcher.profile.action.processing": "Elaborazione...", // "researcher.profile.associated": "Researcher profile associated", @@ -7877,11 +7429,9 @@ "researcher.profile.view": "Visualizza", // "researcher.profile.private.visibility": "PRIVATE", - // TODO Source message changed - Revise the translation "researcher.profile.private.visibility": "PRIVATO", // "researcher.profile.public.visibility": "PUBLIC", - // TODO Source message changed - Revise the translation "researcher.profile.public.visibility": "PUBBLICO", // "researcher.profile.status": "Status:", @@ -7891,19 +7441,15 @@ "researcherprofile.claim.not-authorized": "Non sei autorizzato a richiedere questo item. Per maggiori dettagli contattare l'amministratore/i", // "researcherprofile.error.claim.body": "An error occurred while claiming the profile, please try again later", - // TODO Source message changed - Revise the translation "researcherprofile.error.claim.body": "Si è verificato un errore durante l'associazione del profilo, prova più tardi", // "researcherprofile.error.claim.title": "Error", - // TODO Source message changed - Revise the translation "researcherprofile.error.claim.title": "Errore", // "researcherprofile.success.claim.body": "Profile claimed with success", - // TODO Source message changed - Revise the translation "researcherprofile.success.claim.body": "Profilo associato con successo", // "researcherprofile.success.claim.title": "Success", - // TODO Source message changed - Revise the translation "researcherprofile.success.claim.title": "Successo", // "person.page.orcid.create": "Create an ORCID ID", @@ -7913,7 +7459,6 @@ "person.page.orcid.granted-authorizations": "Autorizzazioni concesse", // "person.page.orcid.grant-authorizations": "Grant authorizations", - // TODO Source message changed - Revise the translation "person.page.orcid.grant-authorizations": "Concedere autorizzazioni", // "person.page.orcid.link": "Connect to ORCID ID", @@ -7962,55 +7507,42 @@ "person.page.orcid.save.preference.changes": "Impostazioni di aggiornamento", // "person.page.orcid.sync-profile.affiliation": "Affiliation", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-profile.affiliation": "Affiliazione", // "person.page.orcid.sync-profile.biographical": "Biographical data", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-profile.biographical": "Riferimenti biografici", // "person.page.orcid.sync-profile.education": "Education", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-profile.education": "Educazione", // "person.page.orcid.sync-profile.identifiers": "Identifiers", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-profile.identifiers": "Identificativi", // "person.page.orcid.sync-fundings.all": "All fundings", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-fundings.all": "Tutti i finanziamenti", // "person.page.orcid.sync-fundings.mine": "My fundings", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-fundings.mine": "I miei finanziamenti", // "person.page.orcid.sync-fundings.my_selected": "Selected fundings", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-fundings.my_selected": "Finanziamenti selezionati", // "person.page.orcid.sync-fundings.disabled": "Disabled", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-fundings.disabled": "Disabilitato", // "person.page.orcid.sync-publications.all": "All publications", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-publications.all": "Tutte le pubblicazioni", // "person.page.orcid.sync-publications.mine": "My publications", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-publications.mine": "Le mie pubblicazioni", // "person.page.orcid.sync-publications.my_selected": "Selected publications", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-publications.my_selected": "Pubblicazioni selezionate", // "person.page.orcid.sync-publications.disabled": "Disabled", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-publications.disabled": "Disabilitato", // "person.page.orcid.sync-queue.discard": "Discard the change and do not synchronize with the ORCID registry", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-queue.discard": "Scarta la modifica e non sincronizzarla con il registro ORCID.", // "person.page.orcid.sync-queue.discard.error": "The discarding of the ORCID queue record failed", @@ -8023,15 +7555,12 @@ "person.page.orcid.sync-queue.empty-message": "Il Registro di sistema della coda ORCID è vuoto", // "person.page.orcid.sync-queue.table.header.type": "Type", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-queue.table.header.type": "Tipo", // "person.page.orcid.sync-queue.table.header.description": "Description", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-queue.table.header.description": "Descrizione", // "person.page.orcid.sync-queue.table.header.action": "Action", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-queue.table.header.action": "Azione", // "person.page.orcid.sync-queue.description.affiliation": "Affiliations", @@ -8098,7 +7627,6 @@ "person.page.orcid.sync-queue.tooltip.researcher_urls": "URL ricercatore", // "person.page.orcid.sync-queue.send": "Synchronize with ORCID registry", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-queue.send": "Sincronizza con il registro ORCID", // "person.page.orcid.sync-queue.send.unauthorized-error.title": "The submission to ORCID failed for missing authorizations.", @@ -8135,7 +7663,6 @@ "person.page.orcid.sync-queue.send.validation-error.title.required": "Il titolo è obbligatorio", // "person.page.orcid.sync-queue.send.validation-error.type.required": "The dc.type is required", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-queue.send.validation-error.type.required": "Il tipo è obbligatorio", // "person.page.orcid.sync-queue.send.validation-error.start-date.required": "The start date is required", @@ -8154,7 +7681,6 @@ "person.page.orcid.sync-queue.send.validation-error.organization.name-required": "Il nome dell'organizzazione è obbligatorio", // "person.page.orcid.sync-queue.send.validation-error.publication.date-invalid": "The publication date must be one year after 1900", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-queue.send.validation-error.publication.date-invalid": "La data di pubblicazione deve partire dal 1900", // "person.page.orcid.sync-queue.send.validation-error.organization.address-required": "The organization to be sent requires an address", @@ -8164,7 +7690,6 @@ "person.page.orcid.sync-queue.send.validation-error.organization.city-required": "L'indirizzo dell'organizzazione da inviare richiede una città", // "person.page.orcid.sync-queue.send.validation-error.organization.country-required": "The address of the organization to be sent requires a valid 2 digits ISO 3166 country", - // TODO Source message changed - Revise the translation "person.page.orcid.sync-queue.send.validation-error.organization.country-required": "L'indirizzo dell'organizzazione da inviare richiede un paese (inserire 2 cifre secondo l'ISO 3166)", // "person.page.orcid.sync-queue.send.validation-error.disambiguated-organization.required": "An identifier to disambiguate organizations is required. Supported ids are GRID, Ringgold, Legal Entity identifiers (LEIs) and Crossref Funder Registry identifiers", @@ -8189,8 +7714,7 @@ "person.page.orcid.synchronization-mode.label": "Sincronizzazione", // "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).", - // TODO Source message changed - Revise the translation - "person.page.orcid.synchronization-mode-message": "Abilitare la modalità di sincronizzazione \"manuale\" per disabilitare la sincronizzazione batch in modo da dover inviare manualmente i dati al Registro ORCID", + "person.page.orcid.synchronization-mode-message": "Selezionare la modalità di sincronizzazione con ORCID. Le opzioni includono 'Manuale' (sarà necessario inviare i dati a ORCID manualmente) o 'Batch' (il sistema invierà i dati a ORCID tramite uno script programmato).", // "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": "Scegli se sincronizzare i tuoi Progetti con la lista delle informazioni dei progetti sul profilo ORCID.", @@ -8237,107 +7761,80 @@ // "person.orcid.registry.auth": "ORCID Authorizations", "person.orcid.registry.auth": "Autorizzazioni ORCID", // "home.recent-submissions.head": "Recent Submissions", - // TODO New key - Add a translation - "home.recent-submissions.head": "Recent Submissions", + "home.recent-submissions.head": "Immissioni recenti", // "listable-notification-object.default-message": "This object couldn't be retrieved", - // TODO New key - Add a translation - "listable-notification-object.default-message": "This object couldn't be retrieved", + "listable-notification-object.default-message": "Questo oggetto non può essere recuperato", // "system-wide-alert-banner.retrieval.error": "Something went wrong retrieving the system-wide alert banner", - // TODO New key - Add a translation - "system-wide-alert-banner.retrieval.error": "Something went wrong retrieving the system-wide alert banner", + "system-wide-alert-banner.retrieval.error": "Qualcosa è andato storto nel recupero del banner di allarme di sistema", // "system-wide-alert-banner.countdown.prefix": "In", - // TODO New key - Add a translation - "system-wide-alert-banner.countdown.prefix": "In", + "system-wide-alert-banner.countdown.prefix": "Tra", // "system-wide-alert-banner.countdown.days": "{{days}} day(s),", - // TODO New key - Add a translation - "system-wide-alert-banner.countdown.days": "{{days}} day(s),", + "system-wide-alert-banner.countdown.days": "{{days}} giorni,", // "system-wide-alert-banner.countdown.hours": "{{hours}} hour(s) and", - // TODO New key - Add a translation - "system-wide-alert-banner.countdown.hours": "{{hours}} hour(s) and", + "system-wide-alert-banner.countdown.hours": "{{hours}} ore e", // "system-wide-alert-banner.countdown.minutes": "{{minutes}} minute(s):", - // TODO New key - Add a translation - "system-wide-alert-banner.countdown.minutes": "{{minutes}} minute(s):", - - + "system-wide-alert-banner.countdown.minutes": "{{minutes}} minuti:", // "menu.section.system-wide-alert": "System-wide Alert", - // TODO New key - Add a translation - "menu.section.system-wide-alert": "System-wide Alert", + "menu.section.system-wide-alert": "Allarme di sistema", // "system-wide-alert.form.header": "System-wide Alert", - // TODO New key - Add a translation - "system-wide-alert.form.header": "System-wide Alert", + "system-wide-alert.form.header": "Allarme di sistema", // "system-wide-alert-form.retrieval.error": "Something went wrong retrieving the system-wide alert", - // TODO New key - Add a translation - "system-wide-alert-form.retrieval.error": "Something went wrong retrieving the system-wide alert", + "system-wide-alert-form.retrieval.error": "Qualcosa è andato storto nel recupero dell'allarme di sistema", // "system-wide-alert.form.cancel": "Cancel", - // TODO New key - Add a translation - "system-wide-alert.form.cancel": "Cancel", + "system-wide-alert.form.cancel": "Annulla", // "system-wide-alert.form.save": "Save", - // TODO New key - Add a translation - "system-wide-alert.form.save": "Save", + "system-wide-alert.form.save": "Salva", // "system-wide-alert.form.label.active": "ACTIVE", - // TODO New key - Add a translation - "system-wide-alert.form.label.active": "ACTIVE", + "system-wide-alert.form.label.active": "ATTIVO", // "system-wide-alert.form.label.inactive": "INACTIVE", - // TODO New key - Add a translation - "system-wide-alert.form.label.inactive": "INACTIVE", + "system-wide-alert.form.label.inactive": "DISATTIVO", // "system-wide-alert.form.error.message": "The system wide alert must have a message", - // TODO New key - Add a translation - "system-wide-alert.form.error.message": "The system wide alert must have a message", + "system-wide-alert.form.error.message": "L'allarme di sistema deve avere un messaggio", // "system-wide-alert.form.label.message": "Alert message", - // TODO New key - Add a translation - "system-wide-alert.form.label.message": "Alert message", + "system-wide-alert.form.label.message": "Messaggio di allarme", // "system-wide-alert.form.label.countdownTo.enable": "Enable a countdown timer", - // TODO New key - Add a translation - "system-wide-alert.form.label.countdownTo.enable": "Enable a countdown timer", + "system-wide-alert.form.label.countdownTo.enable": "Attiva un conto alla rovescia", // "system-wide-alert.form.label.countdownTo.hint": "Hint: Set a countdown timer. When enabled, a date can be set in the future and the system-wide alert banner will perform a countdown to the set date. When this timer ends, it will disappear from the alert. The server will NOT be automatically stopped.", - // TODO New key - Add a translation - "system-wide-alert.form.label.countdownTo.hint": "Hint: Set a countdown timer. When enabled, a date can be set in the future and the system-wide alert banner will perform a countdown to the set date. When this timer ends, it will disappear from the alert. The server will NOT be automatically stopped.", + "system-wide-alert.form.label.countdownTo.hint": "Suggerimento: Imposta un conto alla rovescia. Se abilitato, è possibile impostare una data futura e il banner di allarme di sistema eseguirà un conto alla rovescia fino alla data impostata. Quando il timer terminerà, l'avviso scomparirà. Il server NON verrà arrestato automaticamente.", // "system-wide-alert.form.label.preview": "System-wide alert preview", - // TODO New key - Add a translation - "system-wide-alert.form.label.preview": "System-wide alert preview", + "system-wide-alert.form.label.preview": "Anteprima dell'allarme di sistema", // "system-wide-alert.form.update.success": "The system-wide alert was successfully updated", - // TODO New key - Add a translation - "system-wide-alert.form.update.success": "The system-wide alert was successfully updated", + "system-wide-alert.form.update.success": "L'allarme di sistema è stato aggiornato con successo", // "system-wide-alert.form.update.error": "Something went wrong when updating the system-wide alert", - // TODO New key - Add a translation - "system-wide-alert.form.update.error": "Something went wrong when updating the system-wide alert", + "system-wide-alert.form.update.error": "Qualcosa è andato storto durante l'aggiornamento dell'allarme di sistema", // "system-wide-alert.form.create.success": "The system-wide alert was successfully created", - // TODO New key - Add a translation - "system-wide-alert.form.create.success": "The system-wide alert was successfully created", + "system-wide-alert.form.create.success": "L'allarme di sistema è stato creato con successo", // "system-wide-alert.form.create.error": "Something went wrong when creating the system-wide alert", - // TODO New key - Add a translation - "system-wide-alert.form.create.error": "Something went wrong when creating the system-wide alert", + "system-wide-alert.form.create.error": "Qualcosa è andato storto nella creazione dell'allarme di sistema", // "admin.system-wide-alert.breadcrumbs": "System-wide Alerts", - // TODO New key - Add a translation - "admin.system-wide-alert.breadcrumbs": "System-wide Alerts", + "admin.system-wide-alert.breadcrumbs": "Allarmi di sistema", // "admin.system-wide-alert.title": "System-wide Alerts", - // TODO New key - Add a translation - "admin.system-wide-alert.title": "System-wide Alerts", + "admin.system-wide-alert.title": "Allarmi di sistema", } From 2aab4265a58c92c2b566287295ed2a32f4ae79e8 Mon Sep 17 00:00:00 2001 From: Davide Negretti Date: Mon, 25 Sep 2023 23:51:48 +0200 Subject: [PATCH 0079/1005] [DURACOM-185] Fix pointer on language dropdown menu (cherry picked from commit 6b5708cffda28620460f33ddc4fbf58ad9c6cb1d) --- src/app/shared/lang-switch/lang-switch.component.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/shared/lang-switch/lang-switch.component.scss b/src/app/shared/lang-switch/lang-switch.component.scss index 7b593a9bb59..ea099435a8e 100644 --- a/src/app/shared/lang-switch/lang-switch.component.scss +++ b/src/app/shared/lang-switch/lang-switch.component.scss @@ -9,3 +9,7 @@ color: var(--ds-header-icon-color-hover); } } + +.dropdown-item { + cursor: pointer; +} From 578a427f46ec35b63d741faa8820702764988d04 Mon Sep 17 00:00:00 2001 From: Yury Bondarenko Date: Thu, 20 Jul 2023 18:19:48 +0200 Subject: [PATCH 0080/1005] Move subscription button to DSO edit menu (cherry picked from commit c9558167b2dc2df22428b8d1fcfbd9b77e4b855e) --- .../collection-page.component.html | 3 - .../community-page.component.html | 3 - .../shared/dso-page/dso-edit-menu.resolver.ts | 37 +++++++++ ...so-page-subscription-button.component.html | 8 -- ...so-page-subscription-button.component.scss | 0 ...page-subscription-button.component.spec.ts | 83 ------------------- .../dso-page-subscription-button.component.ts | 57 ------------- src/app/shared/shared.module.ts | 4 - 8 files changed, 37 insertions(+), 158 deletions(-) delete mode 100644 src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.html delete mode 100644 src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.scss delete mode 100644 src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.spec.ts delete mode 100644 src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.ts diff --git a/src/app/collection-page/collection-page.component.html b/src/app/collection-page/collection-page.component.html index 02c63d316d8..3cbd08f1325 100644 --- a/src/app/collection-page/collection-page.component.html +++ b/src/app/collection-page/collection-page.component.html @@ -34,9 +34,6 @@ -
- -
diff --git a/src/app/community-page/community-page.component.html b/src/app/community-page/community-page.component.html index 6d5262d9338..671bf28fd1c 100644 --- a/src/app/community-page/community-page.component.html +++ b/src/app/community-page/community-page.component.html @@ -21,9 +21,6 @@ -
- -
diff --git a/src/app/shared/dso-page/dso-edit-menu.resolver.ts b/src/app/shared/dso-page/dso-edit-menu.resolver.ts index 80a69c2830d..1ade4578405 100644 --- a/src/app/shared/dso-page/dso-edit-menu.resolver.ts +++ b/src/app/shared/dso-page/dso-edit-menu.resolver.ts @@ -21,6 +21,9 @@ import { getDSORoute } from '../../app-routing-paths'; import { ResearcherProfileDataService } from '../../core/profile/researcher-profile-data.service'; import { NotificationsService } from '../notifications/notifications.service'; import { TranslateService } from '@ngx-translate/core'; +import { SubscriptionModalComponent } from '../subscriptions/subscription-modal/subscription-modal.component'; +import { Community } from '../../core/shared/community.model'; +import { Collection } from '../../core/shared/collection.model'; /** * Creates the menus for the dspace object pages @@ -84,6 +87,7 @@ export class DSOEditMenuResolver implements Resolve<{ [key: string]: MenuSection getDsoMenus(dso, route, state): Observable[] { return [ this.getItemMenu(dso), + this.getComColMenu(dso), this.getCommonMenu(dso, state) ]; } @@ -178,6 +182,39 @@ export class DSOEditMenuResolver implements Resolve<{ [key: string]: MenuSection } } + /** + * Get Community/Collection-specific menus + */ + protected getComColMenu(dso): Observable { + if (dso instanceof Community || dso instanceof Collection) { + return combineLatest([ + this.authorizationService.isAuthorized(FeatureID.CanSubscribe, dso.self), + ]).pipe( + map(([canSubscribe]) => { + return [ + { + id: 'subscribe', + active: false, + visible: canSubscribe, + model: { + type: MenuItemType.ONCLICK, + text: 'subscriptions.tooltip', + function: () => { + const modalRef = this.modalService.open(SubscriptionModalComponent); + modalRef.componentInstance.dso = dso; + } + } as OnClickMenuItemModel, + icon: 'bell', + index: 4 + }, + ]; + }) + ); + } else { + return observableOf([]); + } + } + /** * Claim a researcher by creating a profile * Shows notifications and/or hides the menu section on success/error diff --git a/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.html b/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.html deleted file mode 100644 index 15135009fcd..00000000000 --- a/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.html +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.scss b/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.scss deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.spec.ts b/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.spec.ts deleted file mode 100644 index 726854778dc..00000000000 --- a/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { DsoPageSubscriptionButtonComponent } from './dso-page-subscription-button.component'; -import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service'; -import { of as observableOf } from 'rxjs'; -import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap'; -import { By } from '@angular/platform-browser'; -import { DebugElement } from '@angular/core'; -import { Item } from '../../../core/shared/item.model'; -import { ITEM } from '../../../core/shared/item.resource-type'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { TranslateLoaderMock } from '../../mocks/translate-loader.mock'; - -describe('DsoPageSubscriptionButtonComponent', () => { - let component: DsoPageSubscriptionButtonComponent; - let fixture: ComponentFixture; - let de: DebugElement; - - const authorizationService = jasmine.createSpyObj('authorizationService', { - isAuthorized: jasmine.createSpy('isAuthorized') // observableOf(true) - }); - - const mockItem = Object.assign(new Item(), { - id: 'fake-id', - uuid: 'fake-id', - handle: 'fake/handle', - lastModified: '2018', - type: ITEM, - _links: { - self: { - href: 'https://localhost:8000/items/fake-id' - } - } - }); - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ - NgbModalModule, - TranslateModule.forRoot({ - loader: { - provide: TranslateLoader, - useClass: TranslateLoaderMock - } - }) - ], - declarations: [ DsoPageSubscriptionButtonComponent ], - providers: [ - { provide: AuthorizationDataService, useValue: authorizationService }, - ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(DsoPageSubscriptionButtonComponent); - component = fixture.componentInstance; - de = fixture.debugElement; - component.dso = mockItem; - }); - - describe('when is authorized', () => { - beforeEach(() => { - authorizationService.isAuthorized.and.returnValue(observableOf(true)); - fixture.detectChanges(); - }); - - it('should display subscription button', () => { - expect(de.query(By.css(' [data-test="subscription-button"]'))).toBeTruthy(); - }); - }); - - describe('when is not authorized', () => { - beforeEach(() => { - authorizationService.isAuthorized.and.returnValue(observableOf(false)); - fixture.detectChanges(); - }); - - it('should not display subscription button', () => { - expect(de.query(By.css(' [data-test="subscription-button"]'))).toBeNull(); - }); - }); -}); diff --git a/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.ts b/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.ts deleted file mode 100644 index 54cd9e6bb0d..00000000000 --- a/src/app/shared/dso-page/dso-page-subscription-button/dso-page-subscription-button.component.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; - -import { Observable, of } from 'rxjs'; -import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; - -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service'; -import { SubscriptionModalComponent } from '../../subscriptions/subscription-modal/subscription-modal.component'; -import { FeatureID } from '../../../core/data/feature-authorization/feature-id'; - -@Component({ - selector: 'ds-dso-page-subscription-button', - templateUrl: './dso-page-subscription-button.component.html', - styleUrls: ['./dso-page-subscription-button.component.scss'] -}) -/** - * Display a button that opens the modal to manage subscriptions - */ -export class DsoPageSubscriptionButtonComponent implements OnInit { - - /** - * Whether the current user is authorized to edit the DSpaceObject - */ - isAuthorized$: Observable = of(false); - - /** - * Reference to NgbModal - */ - public modalRef: NgbModalRef; - - /** - * DSpaceObject that is being viewed - */ - @Input() dso: DSpaceObject; - - constructor( - protected authorizationService: AuthorizationDataService, - private modalService: NgbModal, - ) { - } - - /** - * check if the current DSpaceObject can be subscribed by the user - */ - ngOnInit(): void { - this.isAuthorized$ = this.authorizationService.isAuthorized(FeatureID.CanSubscribe, this.dso.self); - } - - /** - * Open the modal to subscribe to the related DSpaceObject - */ - public openSubscriptionModal() { - this.modalRef = this.modalService.open(SubscriptionModalComponent); - this.modalRef.componentInstance.dso = this.dso; - } - -} diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 0f7871f7f9b..c6e2ddc3f37 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -273,9 +273,6 @@ import { AdvancedClaimedTaskActionRatingComponent } from './mydspace-actions/claimed-task/rating/advanced-claimed-task-action-rating.component'; import { ClaimedTaskActionsDeclineTaskComponent } from './mydspace-actions/claimed-task/decline-task/claimed-task-actions-decline-task.component'; -import { - DsoPageSubscriptionButtonComponent -} from './dso-page/dso-page-subscription-button/dso-page-subscription-button.component'; import { EpersonGroupListComponent } from './eperson-group-list/eperson-group-list.component'; import { EpersonSearchBoxComponent } from './eperson-group-list/eperson-search-box/eperson-search-box.component'; import { GroupSearchBoxComponent } from './eperson-group-list/group-search-box/group-search-box.component'; @@ -395,7 +392,6 @@ const COMPONENTS = [ ItemPageTitleFieldComponent, ThemedSearchNavbarComponent, ListableNotificationObjectComponent, - DsoPageSubscriptionButtonComponent, MetadataFieldWrapperComponent, ContextHelpWrapperComponent, EpersonGroupListComponent, From 6d195f5ffab678430f6379da7ee9b67b73b31870 Mon Sep 17 00:00:00 2001 From: Yury Bondarenko Date: Mon, 31 Jul 2023 15:41:25 +0200 Subject: [PATCH 0081/1005] Update DSO edit menu resolver tests - Abstract away the different "subsections" ~ DSO type (the tests should not care about this) Instead, retrieve sections of interest by ID & assert whether they're there & how they should look - Test separately for Communities, Collections & Items - Test newly added menu section (cherry picked from commit 18b7a9c7de6e399d5ed27ff22caa082ab7e8ef2a) --- .../dso-page/dso-edit-menu.resolver.spec.ts | 254 ++++++++++++++---- 1 file changed, 199 insertions(+), 55 deletions(-) diff --git a/src/app/shared/dso-page/dso-edit-menu.resolver.spec.ts b/src/app/shared/dso-page/dso-edit-menu.resolver.spec.ts index abfe618174b..e28a416f230 100644 --- a/src/app/shared/dso-page/dso-edit-menu.resolver.spec.ts +++ b/src/app/shared/dso-page/dso-edit-menu.resolver.spec.ts @@ -1,6 +1,6 @@ import { TestBed, waitForAsync } from '@angular/core/testing'; import { MenuServiceStub } from '../testing/menu-service.stub'; -import { of as observableOf } from 'rxjs'; +import { combineLatest, map, of as observableOf } from 'rxjs'; import { TranslateModule, TranslateService } from '@ngx-translate/core'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { RouterTestingModule } from '@angular/router/testing'; @@ -16,10 +16,13 @@ import { Item } from '../../core/shared/item.model'; import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; import { MenuID } from '../menu/menu-id.model'; import { MenuItemType } from '../menu/menu-item-type.model'; -import { TextMenuItemModel } from '../menu/menu-item/models/text.model'; import { LinkMenuItemModel } from '../menu/menu-item/models/link.model'; import { ResearcherProfileDataService } from '../../core/profile/researcher-profile-data.service'; import { NotificationsService } from '../notifications/notifications.service'; +import { DSpaceObject } from '../../core/shared/dspace-object.model'; +import { Community } from '../../core/shared/community.model'; +import { Collection } from '../../core/shared/collection.model'; +import flatten from 'lodash/flatten'; describe('DSOEditMenuResolver', () => { @@ -37,25 +40,44 @@ describe('DSOEditMenuResolver', () => { let notificationsService; let translate; - const route = { - data: { - menu: { - 'statistics': [{ - id: 'statistics-dummy-1', - active: false, - visible: true, - model: null - }] - } - }, - params: {id: 'test-uuid'}, + const dsoRoute = (dso: DSpaceObject) => { + return { + data: { + menu: { + 'statistics': [{ + id: 'statistics-dummy-1', + active: false, + visible: true, + model: null + }] + } + }, + params: {id: dso.uuid}, + }; }; const state = { url: 'test-url' }; - const testObject = Object.assign(new Item(), {uuid: 'test-uuid', type: 'item', _links: {self: {href: 'self-link'}}}); + const testCommunity: Community = Object.assign(new Community(), { + uuid: 'test-community-uuid', + type: 'community', + _links: {self: {href: 'self-link'}}, + }); + const testCollection: Collection = Object.assign(new Collection(), { + uuid: 'test-collection-uuid', + type: 'collection', + _links: {self: {href: 'self-link'}}, + }); + const testItem: Item = Object.assign(new Item(), { + uuid: 'test-item-uuid', + type: 'item', + _links: {self: {href: 'self-link'}}, + }); + + let testObject: DSpaceObject; + let route; const dummySections1 = [{ id: 'dummy-1', @@ -90,6 +112,10 @@ describe('DSOEditMenuResolver', () => { }]; beforeEach(waitForAsync(() => { + // test with Items unless specified otherwise + testObject = testItem; + route = dsoRoute(testItem); + menuService = new MenuServiceStub(); spyOn(menuService, 'getMenu').and.returnValue(observableOf(MENU_STATE)); @@ -154,16 +180,17 @@ describe('DSOEditMenuResolver', () => { { ...route.data.menu, [MenuID.DSO_EDIT]: [ - ...dummySections1.map((menu) => Object.assign(menu, {id: menu.id + '-test-uuid'})), - ...dummySections2.map((menu) => Object.assign(menu, {id: menu.id + '-test-uuid'})) + ...dummySections1.map((menu) => Object.assign(menu, {id: menu.id + '-test-item-uuid'})), + ...dummySections2.map((menu) => Object.assign(menu, {id: menu.id + '-test-item-uuid'})) ] } ); - expect(dSpaceObjectDataService.findById).toHaveBeenCalledWith('test-uuid', true, false); + expect(dSpaceObjectDataService.findById).toHaveBeenCalledWith('test-item-uuid', true, false); expect(resolver.getDsoMenus).toHaveBeenCalled(); done(); }); }); + it('should create all menus when a dso is found based on the route scope query param when no id param is present', (done) => { spyOn(resolver, 'getDsoMenus').and.returnValue( [observableOf(dummySections1), observableOf(dummySections2)] @@ -198,6 +225,7 @@ describe('DSOEditMenuResolver', () => { done(); }); }); + it('should return the statistics menu when no dso is found', (done) => { (dSpaceObjectDataService.findById as jasmine.Spy).and.returnValue(createFailedRemoteDataObject$()); @@ -211,49 +239,165 @@ describe('DSOEditMenuResolver', () => { }); }); }); + describe('getDsoMenus', () => { - it('should return as first part the item version, orcid and claim list ', (done) => { - const result = resolver.getDsoMenus(testObject, route, state); - result[0].subscribe((menuList) => { - expect(menuList.length).toEqual(3); - expect(menuList[0].id).toEqual('orcid-dso'); - expect(menuList[0].active).toEqual(false); - // Visible should be false due to the item not being of type person - expect(menuList[0].visible).toEqual(false); - expect(menuList[0].model.type).toEqual(MenuItemType.LINK); - - expect(menuList[1].id).toEqual('version-dso'); - expect(menuList[1].active).toEqual(false); - expect(menuList[1].visible).toEqual(true); - expect(menuList[1].model.type).toEqual(MenuItemType.ONCLICK); - expect((menuList[1].model as TextMenuItemModel).text).toEqual('message'); - expect(menuList[1].model.disabled).toEqual(false); - expect(menuList[1].icon).toEqual('code-branch'); - - expect(menuList[2].id).toEqual('claim-dso'); - expect(menuList[2].active).toEqual(false); - // Visible should be false due to the item not being of type person - expect(menuList[2].visible).toEqual(false); - expect(menuList[2].model.type).toEqual(MenuItemType.ONCLICK); - expect((menuList[2].model as TextMenuItemModel).text).toEqual('item.page.claim.button'); - done(); + describe('for Communities', () => { + beforeEach(() => { + testObject = testCommunity; + dSpaceObjectDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(testCommunity)); + route = dsoRoute(testCommunity); + }); + + it('should not return Item-specific entries', (done) => { + const result = resolver.getDsoMenus(testObject, route, state); + combineLatest(result).pipe(map(flatten)).subscribe((menu) => { + const orcidEntry = menu.find(entry => entry.id === 'orcid-dso'); + expect(orcidEntry).toBeFalsy(); + + const versionEntry = menu.find(entry => entry.id === 'version-dso'); + expect(versionEntry).toBeFalsy(); + + const claimEntry = menu.find(entry => entry.id === 'claim-dso'); + expect(claimEntry).toBeFalsy(); + + done(); + }); + }); + + it('should return Community/Collection-specific entries', (done) => { + const result = resolver.getDsoMenus(testObject, route, state); + combineLatest(result).pipe(map(flatten)).subscribe((menu) => { + const subscribeEntry = menu.find(entry => entry.id === 'subscribe'); + expect(subscribeEntry).toBeTruthy(); + expect(subscribeEntry.active).toBeFalse(); + expect(subscribeEntry.visible).toBeTrue(); + expect(subscribeEntry.model.type).toEqual(MenuItemType.ONCLICK); + done(); + }); }); + it('should return as third part the common list ', (done) => { + const result = resolver.getDsoMenus(testObject, route, state); + combineLatest(result).pipe(map(flatten)).subscribe((menu) => { + const editEntry = menu.find(entry => entry.id === 'edit-dso'); + expect(editEntry).toBeTruthy(); + expect(editEntry.active).toBeFalse(); + expect(editEntry.visible).toBeTrue(); + expect(editEntry.model.type).toEqual(MenuItemType.LINK); + expect((editEntry.model as LinkMenuItemModel).link).toEqual( + '/communities/test-community-uuid/edit/metadata' + ); + done(); + }); + }); }); - it('should return as second part the common list ', (done) => { - const result = resolver.getDsoMenus(testObject, route, state); - result[1].subscribe((menuList) => { - expect(menuList.length).toEqual(1); - expect(menuList[0].id).toEqual('edit-dso'); - expect(menuList[0].active).toEqual(false); - expect(menuList[0].visible).toEqual(true); - expect(menuList[0].model.type).toEqual(MenuItemType.LINK); - expect((menuList[0].model as LinkMenuItemModel).text).toEqual('item.page.edit'); - expect((menuList[0].model as LinkMenuItemModel).link).toEqual('/items/test-uuid/edit/metadata'); - expect(menuList[0].icon).toEqual('pencil-alt'); - done(); + + describe('for Collections', () => { + beforeEach(() => { + testObject = testCollection; + dSpaceObjectDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(testCollection)); + route = dsoRoute(testCollection); + }); + + it('should not return Item-specific entries', (done) => { + const result = resolver.getDsoMenus(testObject, route, state); + combineLatest(result).pipe(map(flatten)).subscribe((menu) => { + const orcidEntry = menu.find(entry => entry.id === 'orcid-dso'); + expect(orcidEntry).toBeFalsy(); + + const versionEntry = menu.find(entry => entry.id === 'version-dso'); + expect(versionEntry).toBeFalsy(); + + const claimEntry = menu.find(entry => entry.id === 'claim-dso'); + expect(claimEntry).toBeFalsy(); + + done(); + }); + }); + + it('should return Community/Collection-specific entries', (done) => { + const result = resolver.getDsoMenus(testObject, route, state); + combineLatest(result).pipe(map(flatten)).subscribe((menu) => { + const subscribeEntry = menu.find(entry => entry.id === 'subscribe'); + expect(subscribeEntry).toBeTruthy(); + expect(subscribeEntry.active).toBeFalse(); + expect(subscribeEntry.visible).toBeTrue(); + expect(subscribeEntry.model.type).toEqual(MenuItemType.ONCLICK); + done(); + }); + }); + + it('should return as third part the common list ', (done) => { + const result = resolver.getDsoMenus(testObject, route, state); + combineLatest(result).pipe(map(flatten)).subscribe((menu) => { + const editEntry = menu.find(entry => entry.id === 'edit-dso'); + expect(editEntry).toBeTruthy(); + expect(editEntry.active).toBeFalse(); + expect(editEntry.visible).toBeTrue(); + expect(editEntry.model.type).toEqual(MenuItemType.LINK); + expect((editEntry.model as LinkMenuItemModel).link).toEqual( + '/collections/test-collection-uuid/edit/metadata' + ); + done(); + }); }); + }); + + describe('for Items', () => { + beforeEach(() => { + testObject = testItem; + dSpaceObjectDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(testItem)); + route = dsoRoute(testItem); + }); + + it('should return Item-specific entries', (done) => { + const result = resolver.getDsoMenus(testObject, route, state); + combineLatest(result).pipe(map(flatten)).subscribe((menu) => { + const orcidEntry = menu.find(entry => entry.id === 'orcid-dso'); + expect(orcidEntry).toBeTruthy(); + expect(orcidEntry.active).toBeFalse(); + expect(orcidEntry.visible).toBeFalse(); + expect(orcidEntry.model.type).toEqual(MenuItemType.LINK); + + const versionEntry = menu.find(entry => entry.id === 'version-dso'); + expect(versionEntry).toBeTruthy(); + expect(versionEntry.active).toBeFalse(); + expect(versionEntry.visible).toBeTrue(); + expect(versionEntry.model.type).toEqual(MenuItemType.ONCLICK); + expect(versionEntry.model.disabled).toBeFalse(); + const claimEntry = menu.find(entry => entry.id === 'claim-dso'); + expect(claimEntry).toBeTruthy(); + expect(claimEntry.active).toBeFalse(); + expect(claimEntry.visible).toBeFalse(); + expect(claimEntry.model.type).toEqual(MenuItemType.ONCLICK); + done(); + }); + }); + + it('should not return Community/Collection-specific entries', (done) => { + const result = resolver.getDsoMenus(testObject, route, state); + combineLatest(result).pipe(map(flatten)).subscribe((menu) => { + const subscribeEntry = menu.find(entry => entry.id === 'subscribe'); + expect(subscribeEntry).toBeFalsy(); + done(); + }); + }); + + it('should return as third part the common list ', (done) => { + const result = resolver.getDsoMenus(testObject, route, state); + combineLatest(result).pipe(map(flatten)).subscribe((menu) => { + const editEntry = menu.find(entry => entry.id === 'edit-dso'); + expect(editEntry).toBeTruthy(); + expect(editEntry.active).toBeFalse(); + expect(editEntry.visible).toBeTrue(); + expect(editEntry.model.type).toEqual(MenuItemType.LINK); + expect((editEntry.model as LinkMenuItemModel).link).toEqual( + '/items/test-item-uuid/edit/metadata' + ); + done(); + }); + }); }); }); }); From be6dbdec66e6caf000c966a2e1e30f3acf199458 Mon Sep 17 00:00:00 2001 From: Kristof De Langhe Date: Mon, 2 Oct 2023 13:31:25 +0200 Subject: [PATCH 0082/1005] 107155: Allow caching null objects --- src/app/core/cache/object-cache.reducer.ts | 31 +++++++++++-------- src/app/core/cache/object-cache.service.ts | 16 +++++++--- .../dspace-rest-response-parsing.service.ts | 7 +++-- src/app/core/index/index.effects.ts | 4 +-- 4 files changed, 36 insertions(+), 22 deletions(-) diff --git a/src/app/core/cache/object-cache.reducer.ts b/src/app/core/cache/object-cache.reducer.ts index dc3f50db68f..7f389344fb4 100644 --- a/src/app/core/cache/object-cache.reducer.ts +++ b/src/app/core/cache/object-cache.reducer.ts @@ -166,20 +166,25 @@ export function objectCacheReducer(state = initialState, action: ObjectCacheActi * the new state, with the object added, or overwritten. */ function addToObjectCache(state: ObjectCacheState, action: AddToObjectCacheAction): ObjectCacheState { - const existing = state[action.payload.objectToCache._links.self.href] || {} as any; + const cacheLink = hasValue(action.payload.objectToCache) ? action.payload.objectToCache._links.self.href : action.payload.alternativeLink; + const existing = state[cacheLink] || {} as any; const newAltLinks = hasValue(action.payload.alternativeLink) ? [action.payload.alternativeLink] : []; - return Object.assign({}, state, { - [action.payload.objectToCache._links.self.href]: { - data: action.payload.objectToCache, - timeCompleted: action.payload.timeCompleted, - msToLive: action.payload.msToLive, - requestUUIDs: [action.payload.requestUUID, ...(existing.requestUUIDs || [])], - dependentRequestUUIDs: existing.dependentRequestUUIDs || [], - isDirty: isNotEmpty(existing.patches), - patches: existing.patches || [], - alternativeLinks: [...(existing.alternativeLinks || []), ...newAltLinks] - } as ObjectCacheEntry - }); + if (hasValue(cacheLink)) { + return Object.assign({}, state, { + [cacheLink]: { + data: action.payload.objectToCache, + timeCompleted: action.payload.timeCompleted, + msToLive: action.payload.msToLive, + requestUUIDs: [action.payload.requestUUID, ...(existing.requestUUIDs || [])], + dependentRequestUUIDs: existing.dependentRequestUUIDs || [], + isDirty: isNotEmpty(existing.patches), + patches: existing.patches || [], + alternativeLinks: [...(existing.alternativeLinks || []), ...newAltLinks] + } as ObjectCacheEntry + }); + } else { + return state; + } } /** diff --git a/src/app/core/cache/object-cache.service.ts b/src/app/core/cache/object-cache.service.ts index 9ca02162108..0330a03f02c 100644 --- a/src/app/core/cache/object-cache.service.ts +++ b/src/app/core/cache/object-cache.service.ts @@ -63,7 +63,9 @@ export class ObjectCacheService { * An optional alternative link to this object */ add(object: CacheableObject, msToLive: number, requestUUID: string, alternativeLink?: string): void { - object = this.linkService.removeResolvedLinks(object); // Ensure the object we're storing has no resolved links + if (hasValue(object)) { + object = this.linkService.removeResolvedLinks(object); // Ensure the object we're storing has no resolved links + } this.store.dispatch(new AddToObjectCacheAction(object, new Date().getTime(), msToLive, requestUUID, alternativeLink)); } @@ -139,11 +141,15 @@ export class ObjectCacheService { } ), map((entry: ObjectCacheEntry) => { - const type: GenericConstructor = getClassForType((entry.data as any).type); - if (typeof type !== 'function') { - throw new Error(`${type} is not a valid constructor for ${JSON.stringify(entry.data)}`); + if (hasValue(entry.data)) { + const type: GenericConstructor = getClassForType((entry.data as any).type); + if (typeof type !== 'function') { + throw new Error(`${type} is not a valid constructor for ${JSON.stringify(entry.data)}`); + } + return Object.assign(new type(), entry.data) as T; + } else { + return null; } - return Object.assign(new type(), entry.data) as T; }) ); } diff --git a/src/app/core/data/dspace-rest-response-parsing.service.ts b/src/app/core/data/dspace-rest-response-parsing.service.ts index 500afc4aff6..2f79edd129a 100644 --- a/src/app/core/data/dspace-rest-response-parsing.service.ts +++ b/src/app/core/data/dspace-rest-response-parsing.service.ts @@ -109,6 +109,9 @@ export class DspaceRestResponseParsingService implements ResponseParsingService if (hasValue(match)) { embedAltUrl = new URLCombiner(embedAltUrl, `?size=${match.size}`).toString(); } + if (data._embedded[property] == null) { + this.addToObjectCache(null, request, data, embedAltUrl); + } this.process(data._embedded[property], request, embedAltUrl); }); } @@ -226,7 +229,7 @@ export class DspaceRestResponseParsingService implements ResponseParsingService * @param alternativeURL an alternative url that can be used to retrieve the object */ addToObjectCache(co: CacheableObject, request: RestRequest, data: any, alternativeURL?: string): void { - if (!isCacheableObject(co)) { + if (hasValue(co) && !isCacheableObject(co)) { const type = hasValue(data) && hasValue(data.type) ? data.type : 'object'; let dataJSON: string; if (hasValue(data._embedded)) { @@ -240,7 +243,7 @@ export class DspaceRestResponseParsingService implements ResponseParsingService return; } - if (alternativeURL === co._links.self.href) { + if (hasValue(co) && alternativeURL === co._links.self.href) { alternativeURL = undefined; } diff --git a/src/app/core/index/index.effects.ts b/src/app/core/index/index.effects.ts index 18d639023f1..9ec013813d0 100644 --- a/src/app/core/index/index.effects.ts +++ b/src/app/core/index/index.effects.ts @@ -27,7 +27,7 @@ export class UUIDIndexEffects { addObject$ = createEffect(() => this.actions$ .pipe( ofType(ObjectCacheActionTypes.ADD), - filter((action: AddToObjectCacheAction) => hasValue(action.payload.objectToCache.uuid)), + filter((action: AddToObjectCacheAction) => hasValue(action.payload.objectToCache) && hasValue(action.payload.objectToCache.uuid)), map((action: AddToObjectCacheAction) => { return new AddToIndexAction( IndexName.OBJECT, @@ -46,7 +46,7 @@ export class UUIDIndexEffects { ofType(ObjectCacheActionTypes.ADD), map((action: AddToObjectCacheAction) => { const alternativeLink = action.payload.alternativeLink; - const selfLink = action.payload.objectToCache._links.self.href; + const selfLink = hasValue(action.payload.objectToCache) ? action.payload.objectToCache._links.self.href : alternativeLink; if (hasValue(alternativeLink) && alternativeLink !== selfLink) { return new AddToIndexAction( IndexName.ALTERNATIVE_OBJECT_LINK, From 709848ee25bca09efbcf4dac8d427ffd42af8e78 Mon Sep 17 00:00:00 2001 From: Marie Verdonck Date: Wed, 4 Oct 2023 17:27:04 +0200 Subject: [PATCH 0083/1005] Issue#2535: Hide add more button in submission if no disabled sections --- .../section-add/submission-form-section-add.component.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/submission/form/section-add/submission-form-section-add.component.html b/src/app/submission/form/section-add/submission-form-section-add.component.html index 939f23209ac..3740de6345d 100644 --- a/src/app/submission/form/section-add/submission-form-section-add.component.html +++ b/src/app/submission/form/section-add/submission-form-section-add.component.html @@ -3,13 +3,14 @@ placement="bottom-right" class="d-inline-block" [ngClass]="{'w-100': windowService.isXs()}"> + +
Date: Sat, 7 Oct 2023 10:43:09 +0200 Subject: [PATCH 0084/1005] translate community as 'Bereich' in de.json5 (cherry picked from commit 0139670371ffd7d8530f3d93ce9f120bc687433c) --- src/assets/i18n/de.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/i18n/de.json5 b/src/assets/i18n/de.json5 index 5ab57cf3e6e..c185a13432b 100644 --- a/src/assets/i18n/de.json5 +++ b/src/assets/i18n/de.json5 @@ -1382,7 +1382,7 @@ // "community.create.head": "Create a Community", - "community.create.head": "Sammlung anlegen", + "community.create.head": "Bereich anlegen", // "community.create.notifications.success": "Successfully created the Community", "community.create.notifications.success": "Bereich erfolgreich angelegt", From 15d2880ca43c84c071d2b3bfbbdd4e1d1aadcc71 Mon Sep 17 00:00:00 2001 From: Jens Vannerum Date: Fri, 29 Sep 2023 15:54:34 +0200 Subject: [PATCH 0085/1005] Fix browse by visual bug (cherry picked from commit d0b4e15db42298aec6803d640916c951b97eab55) --- .../browse-by-metadata-page.component.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts b/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts index 113bc67c924..75dbfcfc82a 100644 --- a/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts +++ b/src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts @@ -161,7 +161,11 @@ export class BrowseByMetadataPageComponent implements OnInit, OnDestroy { this.value = ''; } - if (typeof params.startsWith === 'string'){ + if (params.startsWith === undefined || params.startsWith === '') { + this.startsWith = undefined; + } + + if (typeof params.startsWith === 'string'){ this.startsWith = params.startsWith.trim(); } From 8f881dbb52dcedf9721c95df64c8d9d7131845d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Oct 2023 00:34:17 +0000 Subject: [PATCH 0086/1005] Bump postcss from 8.4.23 to 8.4.31 Bumps [postcss](https://github.com/postcss/postcss) from 8.4.23 to 8.4.31. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.23...8.4.31) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:development ... Signed-off-by: dependabot[bot] (cherry picked from commit 3c5079e9ce9dcadcc1fc99bfd872b65ffbe336f0) --- yarn.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index c5a82d9e75d..37ba5b84723 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9283,7 +9283,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.21, postcss@^8.2.14, postcss@^8.3.11, postcss@^8.3.7, postcss@^8.4.19: +postcss@8.4.21: version "8.4.21" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz" integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== @@ -9309,10 +9309,10 @@ postcss@^7.0.14: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.4: - version "8.4.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" - integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== +postcss@^8.2.14, postcss@^8.3.11, postcss@^8.3.7, postcss@^8.4, postcss@^8.4.19: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" From c4a60abd650b7c0bb9c1ba3bf3ed6f6e6ed2d2ff Mon Sep 17 00:00:00 2001 From: "Gantner, Florian Klaus" Date: Wed, 23 Aug 2023 18:35:34 +0200 Subject: [PATCH 0087/1005] check cssRules existence before css variables are get from stylesheet (cherry picked from commit 367cda2de02f7524465dccc112438c57dce5cafe) --- src/app/shared/sass-helper/css-variable.service.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/app/shared/sass-helper/css-variable.service.ts b/src/app/shared/sass-helper/css-variable.service.ts index 0190a05036f..f5911737a0a 100644 --- a/src/app/shared/sass-helper/css-variable.service.ts +++ b/src/app/shared/sass-helper/css-variable.service.ts @@ -26,6 +26,17 @@ export class CSSVariableService { return styleSheet.href.indexOf(window.location.origin) === 0; }; + /** + * Checks whether the specific stylesheet object has the property cssRules + * @param styleSheet The stylesheet + */ + hasCssRules = (styleSheet) => { + // Injected styles might have no css rules value + return styleSheet.hasOwnProperty('cssRules') && styleSheet.cssRules; + }; + + + /* Determine if the given rule is a CSSStyleRule See: https://developer.mozilla.org/en-US/docs/Web/API/CSSRule#Type_constants @@ -93,8 +104,10 @@ export class CSSVariableService { if (isNotEmpty(document.styleSheets)) { // styleSheets is array-like, so we convert it to an array. // Filter out any stylesheets not on this domain + // Filter out any stylesheets that have no cssRules property return [...document.styleSheets] .filter(this.isSameDomain) + .filter(this.hasCssRules) .reduce( (finalArr, sheet) => finalArr.concat( From 21dcef0a42ebbc486f5d0afc8d72db312099a2d2 Mon Sep 17 00:00:00 2001 From: "Gantner, Florian Klaus" Date: Tue, 17 Oct 2023 14:32:22 +0200 Subject: [PATCH 0088/1005] checkstyle remove unused extra lines (cherry picked from commit 5f8a9dea34159fc1e7f067b1bbcb5dabc6bf4145) --- src/app/shared/sass-helper/css-variable.service.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/app/shared/sass-helper/css-variable.service.ts b/src/app/shared/sass-helper/css-variable.service.ts index f5911737a0a..ca6384e0ee5 100644 --- a/src/app/shared/sass-helper/css-variable.service.ts +++ b/src/app/shared/sass-helper/css-variable.service.ts @@ -35,8 +35,6 @@ export class CSSVariableService { return styleSheet.hasOwnProperty('cssRules') && styleSheet.cssRules; }; - - /* Determine if the given rule is a CSSStyleRule See: https://developer.mozilla.org/en-US/docs/Web/API/CSSRule#Type_constants From bc0629e004645f596fdebd6dc09b1865ee9c1ced Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 01:56:32 +0000 Subject: [PATCH 0089/1005] Bump @babel/traverse from 7.21.4 to 7.23.2 Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.4 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] (cherry picked from commit 97f7a5e82aa30a41d64974fe4c553bd3358dc6b1) --- yarn.lock | 119 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 103 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index 37ba5b84723..dff9302cc72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -451,13 +451,21 @@ resolved "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz" integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg== -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": version "7.21.4" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz" integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.4": version "7.21.4" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz" @@ -535,7 +543,7 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/generator@^7.18.9", "@babel/generator@^7.19.3", "@babel/generator@^7.21.4": +"@babel/generator@^7.18.9", "@babel/generator@^7.19.3": version "7.21.4" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz" integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== @@ -545,6 +553,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@7.18.6", "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" @@ -610,6 +628,11 @@ resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" @@ -625,6 +648,14 @@ "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" @@ -632,6 +663,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": version "7.21.0" resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz" @@ -715,16 +753,33 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.19.4": version "7.19.4" resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz" @@ -758,11 +813,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.3", "@babel/parser@^7.14.7", "@babel/parser@^7.18.9", "@babel/parser@^7.19.3", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4": +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.3", "@babel/parser@^7.14.7", "@babel/parser@^7.18.9", "@babel/parser@^7.19.3", "@babel/parser@^7.20.7": version "7.21.4" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz" integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" @@ -1403,19 +1472,28 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.10.3", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.3", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz" - integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.4" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.4" - "@babel/types" "^7.21.4" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.10.3", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.3", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" @@ -1428,6 +1506,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" @@ -3849,7 +3936,7 @@ chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== From 2834ac33a446dc92d7cc671c77dfdec821c46f4b Mon Sep 17 00:00:00 2001 From: Tim Donohue Date: Fri, 20 Oct 2023 10:34:29 -0500 Subject: [PATCH 0090/1005] Revert "Check cssRules before css variables are read from stylesheet (#2454)" This reverts commit fa79c358c09cb52ed142ef122e08b77de880685d. (cherry picked from commit 6f73b65d530ad8d2e8297af179e111f401823bce) --- src/app/shared/sass-helper/css-variable.service.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/app/shared/sass-helper/css-variable.service.ts b/src/app/shared/sass-helper/css-variable.service.ts index ca6384e0ee5..0190a05036f 100644 --- a/src/app/shared/sass-helper/css-variable.service.ts +++ b/src/app/shared/sass-helper/css-variable.service.ts @@ -26,15 +26,6 @@ export class CSSVariableService { return styleSheet.href.indexOf(window.location.origin) === 0; }; - /** - * Checks whether the specific stylesheet object has the property cssRules - * @param styleSheet The stylesheet - */ - hasCssRules = (styleSheet) => { - // Injected styles might have no css rules value - return styleSheet.hasOwnProperty('cssRules') && styleSheet.cssRules; - }; - /* Determine if the given rule is a CSSStyleRule See: https://developer.mozilla.org/en-US/docs/Web/API/CSSRule#Type_constants @@ -102,10 +93,8 @@ export class CSSVariableService { if (isNotEmpty(document.styleSheets)) { // styleSheets is array-like, so we convert it to an array. // Filter out any stylesheets not on this domain - // Filter out any stylesheets that have no cssRules property return [...document.styleSheets] .filter(this.isSameDomain) - .filter(this.hasCssRules) .reduce( (finalArr, sheet) => finalArr.concat( From e9b70e34d5a1ae6eb1c9df8866c1f118c8286ad5 Mon Sep 17 00:00:00 2001 From: Agustina Martinez Date: Tue, 15 Aug 2023 16:53:30 +0200 Subject: [PATCH 0091/1005] Update email-request-copy.component.html Message is optional: remove req in [disabled] (cherry picked from commit 94c756d52dfedbae470cbb5febab84c69da743cd) --- .../email-request-copy/email-request-copy.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/request-copy/email-request-copy/email-request-copy.component.html b/src/app/request-copy/email-request-copy/email-request-copy.component.html index 70146ab52c6..286e87554b8 100644 --- a/src/app/request-copy/email-request-copy/email-request-copy.component.html +++ b/src/app/request-copy/email-request-copy/email-request-copy.component.html @@ -13,7 +13,7 @@
diff --git a/src/app/search-navbar/search-navbar.component.scss b/src/app/search-navbar/search-navbar.component.scss index cf46c25d914..a276482b535 100644 --- a/src/app/search-navbar/search-navbar.component.scss +++ b/src/app/search-navbar/search-navbar.component.scss @@ -12,6 +12,7 @@ input[type="text"] { cursor: pointer; position: sticky; top: 0; + border: 0 !important; color: var(--ds-header-icon-color); &:hover, &:focus { diff --git a/src/app/shared/animations/slide.ts b/src/app/shared/animations/slide.ts index 310ddbbfde9..9d18817ee39 100644 --- a/src/app/shared/animations/slide.ts +++ b/src/app/shared/animations/slide.ts @@ -55,7 +55,7 @@ export const slideSidebarPadding = trigger('slideSidebarPadding', [ export const expandSearchInput = trigger('toggleAnimation', [ state('collapsed', style({ - width: '30px', + width: '0', opacity: '0' })), state('expanded', style({ diff --git a/src/app/shared/auth-nav-menu/auth-nav-menu.component.html b/src/app/shared/auth-nav-menu/auth-nav-menu.component.html index 05f502afa1b..bbc4fa3ca70 100644 --- a/src/app/shared/auth-nav-menu/auth-nav-menu.component.html +++ b/src/app/shared/auth-nav-menu/auth-nav-menu.component.html @@ -2,7 +2,7 @@ diff --git a/src/app/shared/impersonate-navbar/impersonate-navbar.component.html b/src/app/shared/impersonate-navbar/impersonate-navbar.component.html index 9f2b66694b7..9581ba8ea87 100644 --- a/src/app/shared/impersonate-navbar/impersonate-navbar.component.html +++ b/src/app/shared/impersonate-navbar/impersonate-navbar.component.html @@ -1,4 +1,4 @@ -
- + From e82a1ebedbf41073bc306ce382233e3cf731cc1d Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Tue, 26 Sep 2023 22:16:25 +0200 Subject: [PATCH 0095/1005] Applied same gap between header icons in the dspace theme and made the search field non-focusable when collapsed (cherry picked from commit 58d31dd73f9762a341e774df261d909d97c4b3e2) --- src/app/header/header.component.scss | 3 ++- src/app/search-navbar/search-navbar.component.html | 5 ++++- src/themes/dspace/app/header/header.component.html | 2 +- src/themes/dspace/app/header/header.component.scss | 6 ++++++ src/themes/dspace/app/navbar/navbar.component.html | 12 +++++++----- src/themes/dspace/app/navbar/navbar.component.scss | 6 ++++++ 6 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/app/header/header.component.scss b/src/app/header/header.component.scss index 8a11a651956..871adf289c6 100644 --- a/src/app/header/header.component.scss +++ b/src/app/header/header.component.scss @@ -22,5 +22,6 @@ .navbar { display: flex; - gap: 0.25rem; + gap: calc(var(--bs-spacer) / 3); + align-items: center; } diff --git a/src/app/search-navbar/search-navbar.component.html b/src/app/search-navbar/search-navbar.component.html index 8a98d4c44c4..02a98905021 100644 --- a/src/app/search-navbar/search-navbar.component.html +++ b/src/app/search-navbar/search-navbar.component.html @@ -3,7 +3,10 @@ + class="bg-transparent position-absolute form-control dropdown-menu-right pl-1 pr-4" + [class.display]="searchExpanded ? 'inline-block' : 'none'" + [tabIndex]="searchExpanded ? 0 : -1" + [attr.data-test]="'header-search-box' | dsBrowserOnly"> diff --git a/src/themes/dspace/app/header/header.component.html b/src/themes/dspace/app/header/header.component.html index 87a26ca326a..4b0046bc834 100644 --- a/src/themes/dspace/app/header/header.component.html +++ b/src/themes/dspace/app/header/header.component.html @@ -5,7 +5,7 @@
-
+ - - - - - +
diff --git a/src/themes/dspace/app/navbar/navbar.component.scss b/src/themes/dspace/app/navbar/navbar.component.scss index 2bcd38d5f4d..7c2a6436877 100644 --- a/src/themes/dspace/app/navbar/navbar.component.scss +++ b/src/themes/dspace/app/navbar/navbar.component.scss @@ -54,3 +54,9 @@ a.navbar-brand img { color: var(--ds-navbar-link-color-hover); } } + +.navbar-buttons { + display: flex; + gap: calc(var(--bs-spacer) / 3); + align-items: center; +} From d7dba4bfcf31c1117923ece460db53d3f08b81dd Mon Sep 17 00:00:00 2001 From: Alexandre Vryghem Date: Thu, 28 Sep 2023 11:50:24 +0200 Subject: [PATCH 0096/1005] Fixed invalid html structure the ExpandableNavbarSectionComponent had an ul tag containing non-li tags (cherry picked from commit fa56d5dfb719c14d99080ef8fe208b5ee129c72f) --- .../admin-sidebar-section/admin-sidebar-section.component.ts | 3 +-- src/app/admin/admin-sidebar/admin-sidebar.component.html | 4 ++-- .../expandable-admin-sidebar-section.component.ts | 3 +-- .../expandable-navbar-section.component.html | 4 ++-- .../expandable-navbar-section.component.ts | 2 -- .../themed-expandable-navbar-section.component.ts | 3 +-- src/app/navbar/navbar-section/navbar-section.component.ts | 3 +-- src/app/navbar/navbar.component.html | 4 ++-- .../dso-edit-menu-expandable-section.component.ts | 1 - .../dso-edit-menu-section/dso-edit-menu-section.component.ts | 1 - src/themes/dspace/app/navbar/navbar.component.html | 4 ++-- 11 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/app/admin/admin-sidebar/admin-sidebar-section/admin-sidebar-section.component.ts b/src/app/admin/admin-sidebar/admin-sidebar-section/admin-sidebar-section.component.ts index d6cd803622b..b195526d1c0 100644 --- a/src/app/admin/admin-sidebar/admin-sidebar-section/admin-sidebar-section.component.ts +++ b/src/app/admin/admin-sidebar/admin-sidebar-section/admin-sidebar-section.component.ts @@ -12,8 +12,7 @@ import { Router } from '@angular/router'; * Represents a non-expandable section in the admin sidebar */ @Component({ - /* eslint-disable @angular-eslint/component-selector */ - selector: 'li[ds-admin-sidebar-section]', + selector: 'ds-admin-sidebar-section', templateUrl: './admin-sidebar-section.component.html', styleUrls: ['./admin-sidebar-section.component.scss'], diff --git a/src/app/admin/admin-sidebar/admin-sidebar.component.html b/src/app/admin/admin-sidebar/admin-sidebar.component.html index ef220b834ba..fe7e5595ab0 100644 --- a/src/app/admin/admin-sidebar/admin-sidebar.component.html +++ b/src/app/admin/admin-sidebar/admin-sidebar.component.html @@ -26,10 +26,10 @@

{{ 'menu.header.admin' | translate }}

- +
  • - +
  • diff --git a/src/app/navbar/expandable-navbar-section/expandable-navbar-section.component.ts b/src/app/navbar/expandable-navbar-section/expandable-navbar-section.component.ts index 5bc69bcbb4e..d32fa46a327 100644 --- a/src/app/navbar/expandable-navbar-section/expandable-navbar-section.component.ts +++ b/src/app/navbar/expandable-navbar-section/expandable-navbar-section.component.ts @@ -4,7 +4,6 @@ import { MenuService } from '../../shared/menu/menu.service'; import { slide } from '../../shared/animations/slide'; import { first } from 'rxjs/operators'; import { HostWindowService } from '../../shared/host-window.service'; -import { rendersSectionForMenu } from '../../shared/menu/menu-section.decorator'; import { MenuID } from '../../shared/menu/menu-id.model'; /** @@ -16,7 +15,6 @@ import { MenuID } from '../../shared/menu/menu-id.model'; styleUrls: ['./expandable-navbar-section.component.scss'], animations: [slide] }) -@rendersSectionForMenu(MenuID.PUBLIC, true) export class ExpandableNavbarSectionComponent extends NavbarSectionComponent implements OnInit { /** * This section resides in the Public Navbar diff --git a/src/app/navbar/expandable-navbar-section/themed-expandable-navbar-section.component.ts b/src/app/navbar/expandable-navbar-section/themed-expandable-navbar-section.component.ts index e33dca41049..8f474e99490 100644 --- a/src/app/navbar/expandable-navbar-section/themed-expandable-navbar-section.component.ts +++ b/src/app/navbar/expandable-navbar-section/themed-expandable-navbar-section.component.ts @@ -8,8 +8,7 @@ import { MenuID } from '../../shared/menu/menu-id.model'; * Themed wrapper for ExpandableNavbarSectionComponent */ @Component({ - /* eslint-disable @angular-eslint/component-selector */ - selector: 'li[ds-themed-expandable-navbar-section]', + selector: 'ds-themed-expandable-navbar-section', styleUrls: [], templateUrl: '../../shared/theme-support/themed.component.html', }) diff --git a/src/app/navbar/navbar-section/navbar-section.component.ts b/src/app/navbar/navbar-section/navbar-section.component.ts index 9f75a96f6e7..9b86aa10f2b 100644 --- a/src/app/navbar/navbar-section/navbar-section.component.ts +++ b/src/app/navbar/navbar-section/navbar-section.component.ts @@ -8,8 +8,7 @@ import { MenuID } from '../../shared/menu/menu-id.model'; * Represents a non-expandable section in the navbar */ @Component({ - /* eslint-disable @angular-eslint/component-selector */ - selector: 'li[ds-navbar-section]', + selector: 'ds-navbar-section', templateUrl: './navbar-section.component.html', styleUrls: ['./navbar-section.component.scss'] }) diff --git a/src/app/navbar/navbar.component.html b/src/app/navbar/navbar.component.html index bc1e04f5130..edfc4bb8ee0 100644 --- a/src/app/navbar/navbar.component.html +++ b/src/app/navbar/navbar.component.html @@ -8,9 +8,9 @@
  • - +
  • - +
  • 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 0126/1005] 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 0127/1005] 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 0128/1005] [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}}

    -