Merge branch 'DSpace:main' into fix-8918

This commit is contained in:
im-shubham-vish
2025-09-09 11:15:56 +05:30
committed by GitHub
29 changed files with 635 additions and 1259 deletions

View File

@@ -28,15 +28,6 @@ updates:
update-types: update-types:
- "minor" - "minor"
- "patch" - "patch"
# Group together all security updates for Angular. Only accept minor/patch types.
angular-security:
applies-to: security-updates
patterns:
- "@angular*"
- "@ngtools/webpack"
update-types:
- "minor"
- "patch"
# Group together all minor/patch version updates for NgRx in a single PR # Group together all minor/patch version updates for NgRx in a single PR
ngrx: ngrx:
applies-to: version-updates applies-to: version-updates
@@ -45,14 +36,6 @@ updates:
update-types: update-types:
- "minor" - "minor"
- "patch" - "patch"
# Group together all security updates for NgRx. Only accept minor/patch types.
ngrx-security:
applies-to: security-updates
patterns:
- "@ngrx*"
update-types:
- "minor"
- "patch"
# Group together all patch version updates for eslint in a single PR # Group together all patch version updates for eslint in a single PR
eslint: eslint:
applies-to: version-updates applies-to: version-updates
@@ -62,15 +45,6 @@ updates:
update-types: update-types:
- "minor" - "minor"
- "patch" - "patch"
# Group together all security updates for eslint.
eslint-security:
applies-to: security-updates
patterns:
- "@typescript-eslint*"
- "eslint*"
update-types:
- "minor"
- "patch"
# Group together any testing related version updates # Group together any testing related version updates
testing: testing:
applies-to: version-updates applies-to: version-updates
@@ -84,19 +58,6 @@ updates:
update-types: update-types:
- "minor" - "minor"
- "patch" - "patch"
# Group together any testing related security updates
testing-security:
applies-to: security-updates
patterns:
- "@cypress*"
- "axe-*"
- "cypress*"
- "jasmine*"
- "karma*"
- "ng-mocks"
update-types:
- "minor"
- "patch"
# Group together any postcss related version updates # Group together any postcss related version updates
postcss: postcss:
applies-to: version-updates applies-to: version-updates
@@ -105,14 +66,6 @@ updates:
update-types: update-types:
- "minor" - "minor"
- "patch" - "patch"
# Group together any postcss related security updates
postcss-security:
applies-to: security-updates
patterns:
- "postcss*"
update-types:
- "minor"
- "patch"
# Group together any sass related version updates # Group together any sass related version updates
sass: sass:
applies-to: version-updates applies-to: version-updates
@@ -121,14 +74,6 @@ updates:
update-types: update-types:
- "minor" - "minor"
- "patch" - "patch"
# Group together any sass related security updates
sass-security:
applies-to: security-updates
patterns:
- "sass*"
update-types:
- "minor"
- "patch"
# Group together any webpack related version updates # Group together any webpack related version updates
webpack: webpack:
applies-to: version-updates applies-to: version-updates
@@ -137,14 +82,6 @@ updates:
update-types: update-types:
- "minor" - "minor"
- "patch" - "patch"
# Group together any webpack related seurity updates
webpack-security:
applies-to: security-updates
patterns:
- "webpack*"
update-types:
- "minor"
- "patch"
ignore: ignore:
# Restrict zone.js updates to patch level to avoid dependency conflicts with @angular/core # Restrict zone.js updates to patch level to avoid dependency conflicts with @angular/core
- dependency-name: "zone.js" - dependency-name: "zone.js"

View File

@@ -25,7 +25,7 @@ However, reviewers may request that you complete any actions in this list if you
- [ ] My PR **doesn't introduce circular dependencies** (verified via `npm run check-circ-deps`) - [ ] My PR **doesn't introduce circular dependencies** (verified via `npm run check-circ-deps`)
- [ ] My PR **includes [TypeDoc](https://typedoc.org/) comments** for _all new (or modified) public methods and classes_. It also includes TypeDoc for large or complex private methods. - [ ] My PR **includes [TypeDoc](https://typedoc.org/) comments** for _all new (or modified) public methods and classes_. It also includes TypeDoc for large or complex private methods.
- [ ] My PR **passes all specs/tests and includes new/updated specs or tests** based on the [Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Testing+Guide). - [ ] My PR **passes all specs/tests and includes new/updated specs or tests** based on the [Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Testing+Guide).
- [ ] My PR **aligns with [Accessibility guidelines](https://wiki.lyrasis.org/display/DSDOC8x/Accessibility)** if it makes changes to the user interface. - [ ] My PR **aligns with [Accessibility guidelines](https://wiki.lyrasis.org/display/DSDOC9x/Accessibility)** if it makes changes to the user interface.
- [ ] My PR **uses i18n (internationalization) keys** instead of hardcoded English text, to allow for translations. - [ ] My PR **uses i18n (internationalization) keys** instead of hardcoded English text, to allow for translations.
- [ ] My PR **includes details on how to test it**. I've provided clear instructions to reviewers on how to successfully test this fix or feature. - [ ] My PR **includes details on how to test it**. I've provided clear instructions to reviewers on how to successfully test this fix or feature.
- [ ] If my PR includes new libraries/dependencies (in `package.json`), I've made sure their licenses align with the [DSpace BSD License](https://github.com/DSpace/DSpace/blob/main/LICENSE) based on the [Licensing of Contributions](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions) documentation. - [ ] If my PR includes new libraries/dependencies (in `package.json`), I've made sure their licenses align with the [DSpace BSD License](https://github.com/DSpace/DSpace/blob/main/LICENSE) based on the [Licensing of Contributions](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions) documentation.

View File

@@ -40,14 +40,14 @@ jobs:
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
# https://github.com/github/codeql-action # https://github.com/github/codeql-action
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v2 uses: github/codeql-action/init@v3
with: with:
languages: javascript languages: javascript
# Autobuild attempts to build any compiled languages # Autobuild attempts to build any compiled languages
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@v2 uses: github/codeql-action/autobuild@v3
# Perform GitHub Code Scanning. # Perform GitHub Code Scanning.
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2 uses: github/codeql-action/analyze@v3

View File

@@ -10,7 +10,7 @@ DSpace is a community built and supported project. We do not have a centralized
## Contribute new code via a Pull Request ## Contribute new code via a Pull Request
We accept [GitHub Pull Requests (PRs)](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) at any time from anyone. We accept [GitHub Pull Requests (PRs)](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) at any time from anyone.
Contributors to each release are recognized in our [Release Notes](https://wiki.lyrasis.org/display/DSDOC8x/Release+Notes). Contributors to each release are recognized in our [Release Notes](https://wiki.lyrasis.org/display/DSDOC9x/Release+Notes).
Code Contribution Checklist Code Contribution Checklist
- [ ] PRs _should_ be smaller in size (ideally less than 1,000 lines of code, not including comments & tests) - [ ] PRs _should_ be smaller in size (ideally less than 1,000 lines of code, not including comments & tests)
@@ -18,7 +18,7 @@ Code Contribution Checklist
- [ ] PRs **must** not introduce circular dependencies (verified via `yarn check-circ-deps`) - [ ] PRs **must** not introduce circular dependencies (verified via `yarn check-circ-deps`)
- [ ] PRs **must** include [TypeDoc](https://typedoc.org/) comments for _all new (or modified) public methods and classes_. Large or complex private methods should also have TypeDoc. - [ ] PRs **must** include [TypeDoc](https://typedoc.org/) comments for _all new (or modified) public methods and classes_. Large or complex private methods should also have TypeDoc.
- [ ] PRs **must** pass all automated pecs/tests and includes new/updated specs or tests based on the [Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Testing+Guide). - [ ] PRs **must** pass all automated pecs/tests and includes new/updated specs or tests based on the [Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Testing+Guide).
- [ ] User interface changes **must** align with [Accessibility guidelines](https://wiki.lyrasis.org/display/DSDOC8x/Accessibility) - [ ] User interface changes **must** align with [Accessibility guidelines](https://wiki.lyrasis.org/display/DSDOC9x/Accessibility)
- [ ] PRs **must** use i18n (internationalization) keys instead of hardcoded English text, to allow for translations. - [ ] PRs **must** use i18n (internationalization) keys instead of hardcoded English text, to allow for translations.
- [ ] Details on how to test the PR **must** be provided. Reviewers must be aware of any steps they need to take to successfully test your fix or feature. - [ ] Details on how to test the PR **must** be provided. Reviewers must be aware of any steps they need to take to successfully test your fix or feature.
- [ ] If a PR includes new libraries/dependencies (in `package.json`), then their software licenses **must** align with the [DSpace BSD License](https://github.com/DSpace/dspace-angular/blob/main/LICENSE) based on the [Licensing of Contributions](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions) documentation. - [ ] If a PR includes new libraries/dependencies (in `package.json`), then their software licenses **must** align with the [DSpace BSD License](https://github.com/DSpace/dspace-angular/blob/main/LICENSE) based on the [Licensing of Contributions](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions) documentation.

View File

@@ -10,7 +10,7 @@ Overview
DSpace open source software is a turnkey repository application used by more than DSpace open source software is a turnkey repository application used by more than
2,000 organizations and institutions worldwide to provide durable access to digital resources. 2,000 organizations and institutions worldwide to provide durable access to digital resources.
For more information, visit http://www.dspace.org/ For more information, visit https://www.dspace.org/
DSpace consists of both a Java-based backend and an Angular-based frontend. DSpace consists of both a Java-based backend and an Angular-based frontend.
@@ -30,7 +30,7 @@ Downloads
Documentation for each release may be viewed online or downloaded via our [Documentation Wiki](https://wiki.lyrasis.org/display/DSDOC/). Documentation for each release may be viewed online or downloaded via our [Documentation Wiki](https://wiki.lyrasis.org/display/DSDOC/).
The latest DSpace Installation instructions are available at: The latest DSpace Installation instructions are available at:
https://wiki.lyrasis.org/display/DSDOC7x/Installing+DSpace https://wiki.lyrasis.org/display/DSDOC9x/Installing+DSpace
Quick start Quick start
----------- -----------
@@ -349,7 +349,7 @@ See our [DSpace Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code
Documentation Documentation
-------------- --------------
Official DSpace documentation is available in the DSpace wiki at https://wiki.lyrasis.org/display/DSDOC7x/ Official DSpace documentation is available in the DSpace wiki at https://wiki.lyrasis.org/display/DSDOC9x/
Some UI specific configuration documentation is also found in the [`./docs`](docs) folder of this codebase. Some UI specific configuration documentation is also found in the [`./docs`](docs) folder of this codebase.
@@ -552,7 +552,7 @@ Additional support options are at https://wiki.lyrasis.org/display/DSPACE/Suppor
DSpace also has an active service provider network. If you'd rather hire a service provider to DSpace also has an active service provider network. If you'd rather hire a service provider to
install, upgrade, customize or host DSpace, then we recommend getting in touch with one of our install, upgrade, customize or host DSpace, then we recommend getting in touch with one of our
[Registered Service Providers](http://www.dspace.org/service-providers). [Registered Service Providers](https://dspace.org/registered-service-providers/).
Issue Tracker Issue Tracker
@@ -565,7 +565,7 @@ DSpace uses GitHub to track issues:
License License
------- -------
DSpace source code is freely available under a standard [BSD 3-Clause license](https://opensource.org/licenses/BSD-3-Clause). DSpace source code is freely available under a standard [BSD 3-Clause license](https://opensource.org/licenses/BSD-3-Clause).
The full license is available in the [LICENSE](LICENSE) file or online at http://www.dspace.org/license/ The full license is available in the [LICENSE](LICENSE) file or online at https://www.dspace.org/license/
DSpace uses third-party libraries which may be distributed under different licenses. Those licenses are listed DSpace uses third-party libraries which may be distributed under different licenses. Those licenses are listed
in the [LICENSES_THIRD_PARTY](LICENSES_THIRD_PARTY) file. in the [LICENSES_THIRD_PARTY](LICENSES_THIRD_PARTY) file.

View File

@@ -248,6 +248,8 @@ export class BrowseByMetadataComponent implements OnInit, OnChanges, OnDestroy {
if (typeof params.startsWith === 'string') { if (typeof params.startsWith === 'string') {
this.startsWith = params.startsWith.trim(); this.startsWith = params.startsWith.trim();
} else {
this.startsWith = '';
} }
if (isNotEmpty(this.value)) { if (isNotEmpty(this.value)) {

View File

@@ -53,7 +53,7 @@
<div class="content-container align-self-center"> <div class="content-container align-self-center">
<p class="m-0"> <p class="m-0">
<a class="text-white" <a class="text-white"
href="http://www.dspace.org/" role="link" tabindex="0">{{ 'footer.link.dspace' | translate}}</a> href="https://www.dspace.org/" role="link" tabindex="0">{{ 'footer.link.dspace' | translate}}</a>
{{ 'footer.copyright' | translate:{year: dateObj | date:'y'} }} {{ 'footer.copyright' | translate:{year: dateObj | date:'y'} }}
<a class="text-white" <a class="text-white"
href="https://www.lyrasis.org/" role="link" tabindex="0">{{ 'footer.link.lyrasis' | translate}}</a> href="https://www.lyrasis.org/" role="link" tabindex="0">{{ 'footer.link.lyrasis' | translate}}</a>

View File

@@ -44,6 +44,12 @@ describe('TabbedRelatedEntitiesSearchComponent', () => {
provide: ActivatedRoute, provide: ActivatedRoute,
useValue: { useValue: {
queryParams: of({ tab: mockRelationType }), queryParams: of({ tab: mockRelationType }),
snapshot: {
queryParams: {
scope: 'collection-uuid',
query: 'test',
},
},
}, },
}, },
{ provide: Router, useValue: router }, { provide: Router, useValue: router },
@@ -89,8 +95,10 @@ describe('TabbedRelatedEntitiesSearchComponent', () => {
relativeTo: (comp as any).route, relativeTo: (comp as any).route,
queryParams: { queryParams: {
tab: event.nextId, tab: event.nextId,
query: 'test',
scope: 'collection-uuid',
'spc.page': 1,
}, },
queryParamsHandling: 'merge',
}); });
}); });
}); });

View File

@@ -89,8 +89,10 @@ export class TabbedRelatedEntitiesSearchComponent implements OnInit {
relativeTo: this.route, relativeTo: this.route,
queryParams: { queryParams: {
tab: event.nextId, tab: event.nextId,
query: this.route.snapshot.queryParams.query,
scope: this.route.snapshot.queryParams.scope,
'spc.page': 1,
}, },
queryParamsHandling: 'merge',
}); });
} }

View File

@@ -45,10 +45,10 @@ import { FormFieldMetadataValueObject } from '../../../models/form-field-metadat
import { DsDynamicTagComponent } from './dynamic-tag.component'; import { DsDynamicTagComponent } from './dynamic-tag.component';
import { DynamicTagModel } from './dynamic-tag.model'; import { DynamicTagModel } from './dynamic-tag.model';
function createKeyUpEvent(key: number) { function createKeyUpEvent(key: string) {
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */ /* eslint-disable no-empty,@typescript-eslint/no-empty-function */
const event = { const event = {
keyCode: key, preventDefault: () => { key: key, preventDefault: () => {
}, stopPropagation: () => { }, stopPropagation: () => {
}, },
}; };
@@ -278,8 +278,8 @@ describe('DsDynamicTagComponent test suite', () => {
expect(tagComp.chips.getChipsItems()).toEqual(chips.getChipsItems()); expect(tagComp.chips.getChipsItems()).toEqual(chips.getChipsItems());
}); });
it('should add an item on ENTER or key press is \',\' or \';\'', fakeAsync(() => { it('should add an item on ENTER or key press is \',\'', fakeAsync(() => {
let event = createKeyUpEvent(13); let event = createKeyUpEvent('Enter');
tagComp.currentValue = 'test value'; tagComp.currentValue = 'test value';
tagFixture.detectChanges(); tagFixture.detectChanges();
@@ -290,7 +290,7 @@ describe('DsDynamicTagComponent test suite', () => {
expect(tagComp.model.value).toEqual(['test value']); expect(tagComp.model.value).toEqual(['test value']);
expect(tagComp.currentValue).toBeNull(); expect(tagComp.currentValue).toBeNull();
event = createKeyUpEvent(188); event = createKeyUpEvent(',');
tagComp.currentValue = 'test value'; tagComp.currentValue = 'test value';
tagFixture.detectChanges(); tagFixture.detectChanges();

View File

@@ -219,13 +219,15 @@ export class DsDynamicTagComponent extends DsDynamicVocabularyComponent implemen
} }
/** /**
* Add a new tag with typed text when typing 'Enter' or ',' or ';' * Add a new tag with typed text when typing 'Enter' or ','
* Tests the key rather than keyCode as keyCodes can vary
* based on keyboard layout (and do not consider Shift mod)
* @param event the keyUp event * @param event the keyUp event
*/ */
onKeyUp(event) { onKeyUp(event) {
if (event.keyCode === 13 || event.keyCode === 188) { if (event.key === 'Enter' || event.key === ',') {
event.preventDefault(); event.preventDefault();
// Key: 'Enter' or ',' or ';' // Key: 'Enter' or ','
this.addTagsToChips(); this.addTagsToChips();
event.stopPropagation(); event.stopPropagation();
} }

View File

@@ -153,13 +153,19 @@ export class GeospatialMapComponent implements AfterViewInit, OnInit, OnDestroy
this.map = L.map(el, { this.map = L.map(el, {
center: this.DEFAULT_CENTRE_POINT, center: this.DEFAULT_CENTRE_POINT,
zoom: 11, zoom: 11,
worldCopyJump: true,
maxBoundsViscosity: 1.0,
maxBounds: [
[-85, -Infinity],
[85, Infinity],
],
}); });
const tileProviders = environment.geospatialMapViewer.tileProviders; const tileProviders = environment.geospatialMapViewer.tileProviders;
for (let i = 0; i < tileProviders.length; i++) { for (let i = 0; i < tileProviders.length; i++) {
// Add tiles to the map // Add tiles to the map
const tiles = L.tileLayer.provider(tileProviders[i], { const tiles = L.tileLayer.provider(tileProviders[i], {
maxZoom: 18, maxZoom: 18,
minZoom: 3, minZoom: 1,
}); });
tiles.addTo(this.map); tiles.addTo(this.map);
} }

View File

@@ -1,6 +1,6 @@
<div class="d-flex flex-row"> <div class="d-flex flex-row">
@if (linkType !== linkTypes.None) { @if (linkType !== linkTypes.None) {
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[]" [queryParams]="queryParams$ | async" [queryParamsHandling]="'merge'" class="lead" role="link" tabindex="0"> <a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[]" [queryParams]="queryParams$ | async" class="lead" role="link" tabindex="0">
{{object.value}} {{object.value}}
</a> </a>
} }

View File

@@ -100,7 +100,7 @@ describe('StartsWithDateComponent', () => {
}); });
it('should add a startsWith query parameter', () => { it('should add a startsWith query parameter', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }); expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
}); });
it('should automatically fill in the input field', () => { it('should automatically fill in the input field', () => {
@@ -122,7 +122,7 @@ describe('StartsWithDateComponent', () => {
}); });
it('should add a startsWith query parameter', () => { it('should add a startsWith query parameter', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }); expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
}); });
it('should automatically fill in the input field', () => { it('should automatically fill in the input field', () => {
@@ -146,7 +146,7 @@ describe('StartsWithDateComponent', () => {
}); });
it('should add a startsWith query parameter', () => { it('should add a startsWith query parameter', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }); expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
}); });
it('should automatically fill in the input field', () => { it('should automatically fill in the input field', () => {
@@ -171,7 +171,7 @@ describe('StartsWithDateComponent', () => {
}); });
it('should add a startsWith query parameter', () => { it('should add a startsWith query parameter', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }); expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
}); });
}); });

View File

@@ -92,11 +92,10 @@ export abstract class StartsWithAbstractComponent implements OnInit, OnDestroy {
this.startsWith = undefined; this.startsWith = undefined;
} }
if (resetPage) { if (resetPage) {
this.paginationService.updateRoute(this.paginationId, { page: 1 }, { startsWith: this.startsWith }); this.paginationService.updateRoute(this.paginationId, { page: 1 }, { startsWith: this.startsWith }, undefined, { queryParamsHandling: '' });
} else { } else {
void this.router.navigate([], { void this.router.navigate([], {
queryParams: Object.assign({ startsWith: this.startsWith }), queryParams: Object.assign({ startsWith: this.startsWith }),
queryParamsHandling: 'merge',
}); });
} }
} }

View File

@@ -74,8 +74,8 @@ describe('StartsWithTextComponent', () => {
expect(comp.startsWith).toEqual(expectedValue); expect(comp.startsWith).toEqual(expectedValue);
}); });
it('should add a startsWith query parameter', () => { it('should add a startsWith query parameter and clear all others', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }); expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
}); });
}); });

View File

@@ -2593,7 +2593,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "نقوم بجمع ومعالجة معلوماتك الشخصية للأغراض التالية: <strong>الاستيثاق، والتفضيلات، والإقرار، والإحصائيات</strong>. <br/> لمعرفة المزيد، يرجى قراءة {privacyPolicy}.", "cookies.consent.content-notice.description": "نقوم بجمع ومعالجة معلوماتك الشخصية للأغراض التالية: الاستيثاق، والتفضيلات، والإقرار، والإحصائيات. لمعرفة المزيد، يرجى قراءة {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "تخصيص", "cookies.consent.content-notice.learnMore": "تخصيص",

View File

@@ -2751,7 +2751,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "আমরা নিম্নলিখিত উদ্দেশ্যে আপনার ব্যক্তিগত তথ্য সংগ্রহ এবং প্রক্রিয়া করি: <strong>প্রমাণিকরণ, পছন্দ, স্বীকৃতি এবং পরিসংখ্যান</strong>। <br/> আরও জানতে, অনুগ্রহ করে আমাদের {privacyPolicy} পড়ুন.", "cookies.consent.content-notice.description": "আমরা নিম্নলিখিত উদ্দেশ্যে আপনার ব্যক্তিগত তথ্য সংগ্রহ এবং প্রক্রিয়া করি: প্রমাণিকরণ, পছন্দ, স্বীকৃতি এবং পরিসংখ্যান আরও জানতে, অনুগ্রহ করে আমাদের {privacyPolicy} পড়ুন.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "কাস্টমাইজ করুন", "cookies.consent.content-notice.learnMore": "কাস্টমাইজ করুন",

View File

@@ -2645,7 +2645,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Vaše osobní údaje shromažďujeme a zpracováváme pro následující účely: <strong>Ověření, Preference, Potvrzení a Statistiky</strong>. <br/> Chcete-li se dozvědět více, přečtěte si prosím naše {privacyPolicy}.", "cookies.consent.content-notice.description": "Vaše osobní údaje shromažďujeme a zpracováváme pro následující účely: Ověření, Preference, Potvrzení a Statistiky. Chcete-li se dozvědět více, přečtěte si prosím naše {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Přizpůsobit", "cookies.consent.content-notice.learnMore": "Přizpůsobit",

View File

@@ -2475,7 +2475,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Wir sammeln und verarbeiten Ihre personenbezogenen Daten für die folgenden Zwecke: <strong>Authentifikation, Einstellungen, Zustimmungen und Statistiken</strong>. <br/> Um mehr zu erfahren, lesen Sie bitte unsere {privacyPolicy}.", "cookies.consent.content-notice.description": "Wir sammeln und verarbeiten Ihre personenbezogenen Daten für die folgenden Zwecke: Authentifikation, Einstellungen, Zustimmungen und Statistiken. Um mehr zu erfahren, lesen Sie bitte unsere {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Anpassen", "cookies.consent.content-notice.learnMore": "Anpassen",

View File

@@ -7207,4 +7207,10 @@
"metadata-export-search.submit.error.limit-exceeded": "Only the first {{limit}} items will be exported", "metadata-export-search.submit.error.limit-exceeded": "Only the first {{limit}} items will be exported",
"file-download-link.request-copy": "Request a copy of ", "file-download-link.request-copy": "Request a copy of ",
"item.preview.organization.url": "URL",
"item.preview.organization.address.addressLocality": "City",
"item.preview.organization.alternateName": "Alternative name",
} }

View File

@@ -2656,7 +2656,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Keräämme ja käsittelemme tietojasi seuraaviin tarkoituksiin: <strong>todentaminen, asetukset, kuittaus ja tilastot</strong>. <br/> Lisätietoa saat lukemalla tämän: {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.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Räätälöi", "cookies.consent.content-notice.learnMore": "Räätälöi",

File diff suppressed because it is too large Load Diff

View File

@@ -2781,7 +2781,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Bidh sinn a' cruinneachadh agus a' cleachdadh fiosrachadh pearsanta airson nan adhbharan seo: <strong>Dearbhadh, Roghainnean, Buidheachas agus Staitistigs</strong>. <br/> Airson tuilleadh fiosrachaidh, leugh am {Poileasaidhprìobhaideachd}.", "cookies.consent.content-notice.description": "Bidh sinn a' cruinneachadh agus a' cleachdadh fiosrachadh pearsanta airson nan adhbharan seo: Dearbhadh, Roghainnean, Buidheachas agus Staitistigs. Airson tuilleadh fiosrachaidh, leugh am {Poileasaidhprìobhaideachd}.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Customaich", "cookies.consent.content-notice.learnMore": "Customaich",

View File

@@ -2732,7 +2732,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Біз сіздің жеке ақпаратыңызды келесі мақсаттарда жинаймыз және өңдейміз: <strong>Аутентификация, Параметрлері, Растау және Статистикалар</strong>. <br/> Көбірек білу үшін, біздің {privacyPolicy} оқуыңызды өтінеміз.", "cookies.consent.content-notice.description": "Біз сіздің жеке ақпаратыңызды келесі мақсаттарда жинаймыз және өңдейміз: Аутентификация, Параметрлері, Растау және Статистикалар. Көбірек білу үшін, біздің {privacyPolicy} оқуыңызды өтінеміз.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Баптау", "cookies.consent.content-notice.learnMore": "Баптау",

View File

@@ -2484,7 +2484,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Coletamos e processamos suas informações pessoais para os seguintes propósitos: <strong>Autenticação, Preferências, Reconhecimento e Estatísticas</strong>. <br/> Para aprender mais, por favor leia nossa {privacyPolicy}.", "cookies.consent.content-notice.description": "Coletamos e processamos suas informações pessoais para os seguintes propósitos: Autenticação, Preferências, Reconhecimento e Estatísticas. Para aprender mais, por favor leia nossa {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Customizar", "cookies.consent.content-notice.learnMore": "Customizar",
@@ -11139,5 +11139,9 @@
// TODO New key - Add a translation // TODO New key - Add a translation
"file-download-link.request-copy": "Request a copy of ", "file-download-link.request-copy": "Request a copy of ",
"item.preview.organization.url": "URL",
"item.preview.organization.address.addressLocality": "Cidade",
"item.preview.organization.alternateName": "Nome alternativo",
} }

View File

@@ -2761,7 +2761,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Vi samlar in och hanterar dina persondata för följande syften: <strong>Autenticering, inställningar, godkännanden och statistik</strong>. <br/> För mer information, läs {privacyPolicy}.", "cookies.consent.content-notice.description": "Vi samlar in och hanterar dina persondata för följande syften: Autenticering, inställningar, godkännanden och statistik. För mer information, läs {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Anpassa", "cookies.consent.content-notice.learnMore": "Anpassa",

View File

@@ -2852,7 +2852,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Kişisel bilgilerinizi aşağıdaki amaçlarla topluyor ve işleriz: <strong>Kimlik Doğrulama, Tercihler, Onay ve İstatistikler</strong>. <br/> Daha fazla bilgi için, lütfen okuyun {privacyPolicy}.", "cookies.consent.content-notice.description": "Kişisel bilgilerinizi aşağıdaki amaçlarla topluyor ve işleriz: Kimlik Doğrulama, Tercihler, Onay ve İstatistikler. Daha fazla bilgi için, lütfen okuyun {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Özelleştir", "cookies.consent.content-notice.learnMore": "Özelleştir",

View File

@@ -2870,7 +2870,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}", // "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation // TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Ми збираємо та обробляємо вашу особисту інформацію для таких цілей: <strong>автентифікація, налаштування та статистика</strong>. <br/> Щоб дізнатися більше, прочитайте нашу політику {privacyPolicy}.", "cookies.consent.content-notice.description": "Ми збираємо та обробляємо вашу особисту інформацію для таких цілей: автентифікація, налаштування та статистика. Щоб дізнатися більше, прочитайте нашу політику {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize", // "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Налаштувати", "cookies.consent.content-notice.learnMore": "Налаштувати",