From 4fe82112d6649e0e725be4b514683ced71a1b595 Mon Sep 17 00:00:00 2001
From: Sufiyan Shaikh
Date: Mon, 18 Apr 2022 13:39:36 +0530
Subject: [PATCH 012/107] [CST-5676] Bitstream edit page is broken if no
policies are set
---
.../edit-bitstream-page.component.ts | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts b/src/app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts
index 2042efbd52..a2b8f7c9d3 100644
--- a/src/app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts
+++ b/src/app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts
@@ -706,11 +706,20 @@ export class EditBitstreamPageComponent implements OnInit, OnDestroy {
getFirstSucceededRemoteData(),
map((format: RemoteData) => format.payload.mimetype.includes('image/')));
+ let isImageBitstream = false;
+ isImage$.subscribe(res => {
+ isImageBitstream = res;
+ });
+
const isIIIFBundle$ = this.bitstream.bundle.pipe(
getFirstSucceededRemoteData(),
map((bundle: RemoteData) =>
this.dsoNameService.getName(bundle.payload).match(regexExcludeBundles) == null));
+ let isIIIFBundleBitstream = false;
+ isIIIFBundle$.subscribe(res => {
+ isIIIFBundleBitstream = res;
+ });
const isEnabled$ = this.bitstream.bundle.pipe(
getFirstSucceededRemoteData(),
map((bundle: RemoteData) => bundle.payload.item.pipe(
@@ -720,6 +729,11 @@ export class EditBitstreamPageComponent implements OnInit, OnDestroy {
item.payload.firstMetadataValue('dspace.iiif.enabled').match(regexIIIFItem) !== null)
))));
+ let isEnabledBitstream: Observable;
+ isEnabled$.subscribe(res => {
+ isEnabledBitstream = res;
+ });
+
const iiifSub = combineLatest(
isImage$,
isIIIFBundle$,
From 6480b75aed6df0aef1ef02773af0299c38b91e61 Mon Sep 17 00:00:00 2001
From: Sufiyan Shaikh
Date: Mon, 18 Apr 2022 16:27:36 +0530
Subject: [PATCH 013/107] [CST-5676] Bitstream edit page is broken if no
policies are set
---
.../edit-bitstream-page.component.ts | 31 -------------------
1 file changed, 31 deletions(-)
diff --git a/src/app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts b/src/app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts
index a2b8f7c9d3..9a59df4b95 100644
--- a/src/app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts
+++ b/src/app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component.ts
@@ -387,16 +387,6 @@ export class EditBitstreamPageComponent implements OnInit, OnDestroy {
*/
protected subs: Subscription[] = [];
- /**
- * Set to blank to detect changes in format.
- */
- bitstreamFormat = {};
-
- /**
- * Set to true to detect changes in bundle.
- */
- bitstreamBundle = {};
-
constructor(private route: ActivatedRoute,
private router: Router,
@@ -695,31 +685,15 @@ export class EditBitstreamPageComponent implements OnInit, OnDestroy {
const regexExcludeBundles = /OTHERCONTENT|THUMBNAIL|LICENSE/;
const regexIIIFItem = /true|yes/i;
- this.bitstream.format.subscribe(res => {
- this.bitstreamFormat = res;
- });
- this.bitstream.bundle.subscribe(res => {
- this.bitstreamBundle = res;
- });
-
const isImage$ = this.bitstream.format.pipe(
getFirstSucceededRemoteData(),
map((format: RemoteData) => format.payload.mimetype.includes('image/')));
- let isImageBitstream = false;
- isImage$.subscribe(res => {
- isImageBitstream = res;
- });
-
const isIIIFBundle$ = this.bitstream.bundle.pipe(
getFirstSucceededRemoteData(),
map((bundle: RemoteData) =>
this.dsoNameService.getName(bundle.payload).match(regexExcludeBundles) == null));
- let isIIIFBundleBitstream = false;
- isIIIFBundle$.subscribe(res => {
- isIIIFBundleBitstream = res;
- });
const isEnabled$ = this.bitstream.bundle.pipe(
getFirstSucceededRemoteData(),
map((bundle: RemoteData) => bundle.payload.item.pipe(
@@ -729,11 +703,6 @@ export class EditBitstreamPageComponent implements OnInit, OnDestroy {
item.payload.firstMetadataValue('dspace.iiif.enabled').match(regexIIIFItem) !== null)
))));
- let isEnabledBitstream: Observable;
- isEnabled$.subscribe(res => {
- isEnabledBitstream = res;
- });
-
const iiifSub = combineLatest(
isImage$,
isIIIFBundle$,
From f828215f48454faea42c20e0133c43f8f212b6f5 Mon Sep 17 00:00:00 2001
From: Yana De Pauw
Date: Tue, 19 Apr 2022 14:57:42 +0200
Subject: [PATCH 014/107] 88300: Implement feedback
---
src/app/browse-by/browse-by-routing.module.ts | 2 +-
.../browse-by-title-page.component.ts | 1 +
.../shared/browse-by/browse-by.component.html | 7 ++----
.../browse-by/browse-by.component.spec.ts | 23 +++++++++++++++----
.../shared/browse-by/browse-by.component.ts | 5 +++-
.../date/starts-with-date.component.spec.ts | 18 ++++-----------
.../date/starts-with-date.component.ts | 6 ++---
.../starts-with-abstract.component.ts | 16 ++++++++-----
.../text/starts-with-text.component.spec.ts | 6 +----
.../text/starts-with-text.component.ts | 4 ++--
src/assets/i18n/en.json5 | 2 ++
11 files changed, 49 insertions(+), 41 deletions(-)
diff --git a/src/app/browse-by/browse-by-routing.module.ts b/src/app/browse-by/browse-by-routing.module.ts
index 72d78f13fd..5788d3cc70 100644
--- a/src/app/browse-by/browse-by-routing.module.ts
+++ b/src/app/browse-by/browse-by-routing.module.ts
@@ -17,7 +17,7 @@ import { ThemedBrowseBySwitcherComponent } from './browse-by-switcher/themed-bro
component: ThemedBrowseBySwitcherComponent,
canActivate: [BrowseByGuard],
resolve: { breadcrumb: BrowseByI18nBreadcrumbResolver },
- data: { title: 'browse.title', breadcrumbKey: 'browse.metadata' }
+ data: { title: 'browse.title.page', breadcrumbKey: 'browse.metadata' }
}
]
}])
diff --git a/src/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts b/src/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts
index b2798b7fa8..d597c35187 100644
--- a/src/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts
+++ b/src/app/browse-by/browse-by-title-page/browse-by-title-page.component.ts
@@ -45,6 +45,7 @@ export class BrowseByTitlePageComponent extends BrowseByMetadataPageComponent {
return [Object.assign({}, routeParams, queryParams),currentPage,currentSort];
})
).subscribe(([params, currentPage, currentSort]: [Params, PaginationComponentOptions, SortOptions]) => {
+ this.startsWith = +params.startsWith || params.startsWith;
this.browseId = params.id || this.defaultBrowseId;
this.updatePageWithItems(browseParamsToOptions(params, currentPage, currentSort, this.browseId), undefined, undefined);
this.updateParent(params.scope);
diff --git a/src/app/shared/browse-by/browse-by.component.html b/src/app/shared/browse-by/browse-by.component.html
index a4c273c658..ca9474f632 100644
--- a/src/app/shared/browse-by/browse-by.component.html
+++ b/src/app/shared/browse-by/browse-by.component.html
@@ -3,8 +3,7 @@
0" @fadeIn>
{{'browse.empty' | translate}}
diff --git a/src/app/shared/browse-by/browse-by.component.spec.ts b/src/app/shared/browse-by/browse-by.component.spec.ts
index 977a40670d..ad24550798 100644
--- a/src/app/shared/browse-by/browse-by.component.spec.ts
+++ b/src/app/shared/browse-by/browse-by.component.spec.ts
@@ -17,9 +17,13 @@ import { SortDirection, SortOptions } from '../../core/cache/models/sort-options
import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils';
import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../testing/pagination-service.stub';
-import { ListableObjectComponentLoaderComponent } from '../object-collection/shared/listable-object/listable-object-component-loader.component';
+import {
+ ListableObjectComponentLoaderComponent
+} from '../object-collection/shared/listable-object/listable-object-component-loader.component';
import { ViewMode } from '../../core/shared/view-mode.model';
-import { BrowseEntryListElementComponent } from '../object-list/browse-entry-list-element/browse-entry-list-element.component';
+import {
+ BrowseEntryListElementComponent
+} from '../object-list/browse-entry-list-element/browse-entry-list-element.component';
import {
DEFAULT_CONTEXT,
listableObjectComponent,
@@ -30,6 +34,8 @@ import { ThemeService } from '../theme-support/theme.service';
import { SelectableListService } from '../object-list/selectable-list/selectable-list.service';
import { HostWindowServiceStub } from '../testing/host-window-service.stub';
import { HostWindowService } from '../host-window.service';
+import { RouteService } from '../../core/services/route.service';
+import { routeServiceStub } from '../testing/route-service.stub';
import SpyObj = jasmine.SpyObj;
@listableObjectComponent(BrowseEntry, ViewMode.ListElement, DEFAULT_CONTEXT, 'custom')
@@ -39,8 +45,6 @@ import SpyObj = jasmine.SpyObj;
})
class MockThemedBrowseEntryListElementComponent {
}
-import { RouteService } from '../../core/services/route.service';
-import { routeServiceStub } from '../testing/route-service.stub';
describe('BrowseByComponent', () => {
let comp: BrowseByComponent;
@@ -112,6 +116,8 @@ describe('BrowseByComponent', () => {
beforeEach(() => {
fixture = TestBed.createComponent(BrowseByComponent);
comp = fixture.componentInstance;
+ comp.paginationConfig = paginationConfig;
+ fixture.detectChanges();
});
it('should display a loading message when objects is empty', () => {
@@ -208,5 +214,14 @@ describe('BrowseByComponent', () => {
expect(button).toBeDefined();
});
});
+ describe('back', () => {
+ it('should navigate back to the main browse page', () => {
+ comp.back();
+ expect(paginationService.updateRoute).toHaveBeenCalledWith('test-pagination', {page: 1}, {
+ value: null,
+ startsWith: null
+ });
+ });
+ });
});
diff --git a/src/app/shared/browse-by/browse-by.component.ts b/src/app/shared/browse-by/browse-by.component.ts
index 0db2737484..1132b41124 100644
--- a/src/app/shared/browse-by/browse-by.component.ts
+++ b/src/app/shared/browse-by/browse-by.component.ts
@@ -70,7 +70,7 @@ export class BrowseByComponent implements OnInit {
/**
* Whether or not the pagination should be rendered as simple previous and next buttons instead of the normal pagination
*/
- @Input() showPaginator = false;
+ @Input() showPaginator = true;
/**
* It is used to hide or show gear
@@ -173,4 +173,7 @@ export class BrowseByComponent implements OnInit {
);
}
+ back() {
+ this.paginationService.updateRoute(this.paginationConfig.id, {page: 1}, {value: null, startsWith: null});
+ }
}
diff --git a/src/app/shared/starts-with/date/starts-with-date.component.spec.ts b/src/app/shared/starts-with/date/starts-with-date.component.spec.ts
index dfee88c955..319374fa3a 100644
--- a/src/app/shared/starts-with/date/starts-with-date.component.spec.ts
+++ b/src/app/shared/starts-with/date/starts-with-date.component.spec.ts
@@ -85,14 +85,9 @@ describe('StartsWithDateComponent', () => {
let select;
let input;
let expectedValue;
- let extras;
beforeEach(() => {
expectedValue = '' + options[0];
- extras = {
- queryParams: Object.assign({ startsWith: expectedValue }),
- queryParamsHandling: 'merge'
- };
select = fixture.debugElement.query(By.css('select#year-select')).nativeElement;
input = fixture.debugElement.query(By.css('input')).nativeElement;
@@ -106,7 +101,7 @@ describe('StartsWithDateComponent', () => {
});
it('should add a startsWith query parameter', () => {
- expect(router.navigate).toHaveBeenCalledWith([], extras);
+ expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', {page: 1}, {startsWith: expectedValue});
});
it('should automatically fill in the input field', () => {
@@ -128,7 +123,7 @@ describe('StartsWithDateComponent', () => {
});
it('should add a startsWith query parameter', () => {
- expect(router.navigate).toHaveBeenCalledWith([], extras);
+ expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', {page: 1}, {startsWith: expectedValue});
});
it('should automatically fill in the input field', () => {
@@ -141,11 +136,6 @@ describe('StartsWithDateComponent', () => {
beforeEach(() => {
expectedValue = `${options[0]}-01`;
- extras = {
- queryParams: Object.assign({ startsWith: expectedValue }),
- queryParamsHandling: 'merge'
- };
-
monthSelect = fixture.debugElement.query(By.css('select#month-select')).nativeElement;
monthSelect.value = monthSelect.options[1].value;
monthSelect.dispatchEvent(new Event('change'));
@@ -157,7 +147,7 @@ describe('StartsWithDateComponent', () => {
});
it('should add a startsWith query parameter', () => {
- expect(router.navigate).toHaveBeenCalledWith([], extras);
+ expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', {page: 1}, {startsWith: expectedValue});
});
it('should automatically fill in the input field', () => {
@@ -186,7 +176,7 @@ describe('StartsWithDateComponent', () => {
});
it('should add a startsWith query parameter', () => {
- expect(router.navigate).toHaveBeenCalledWith([], extras);
+ expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', {page: 1}, {startsWith: expectedValue});
});
});
diff --git a/src/app/shared/starts-with/date/starts-with-date.component.ts b/src/app/shared/starts-with/date/starts-with-date.component.ts
index e947fb76a2..d65d12b413 100644
--- a/src/app/shared/starts-with/date/starts-with-date.component.ts
+++ b/src/app/shared/starts-with/date/starts-with-date.component.ts
@@ -68,7 +68,7 @@ export class StartsWithDateComponent extends StartsWithAbstractComponent {
setStartsWithYearEvent(event: Event) {
this.startsWithYear = +(event.target as HTMLInputElement).value;
this.setStartsWithYearMonth();
- this.setStartsWithParam();
+ this.setStartsWithParam(true);
}
/**
@@ -78,7 +78,7 @@ export class StartsWithDateComponent extends StartsWithAbstractComponent {
setStartsWithMonthEvent(event: Event) {
this.startsWithMonth = (event.target as HTMLInputElement).value;
this.setStartsWithYearMonth();
- this.setStartsWithParam();
+ this.setStartsWithParam(true);
}
/**
@@ -131,7 +131,7 @@ export class StartsWithDateComponent extends StartsWithAbstractComponent {
} else {
this.startsWithYear = +startsWith;
}
- this.setStartsWithParam();
+ this.setStartsWithParam(false);
}
/**
diff --git a/src/app/shared/starts-with/starts-with-abstract.component.ts b/src/app/shared/starts-with/starts-with-abstract.component.ts
index b0c7015a12..3b35a11269 100644
--- a/src/app/shared/starts-with/starts-with-abstract.component.ts
+++ b/src/app/shared/starts-with/starts-with-abstract.component.ts
@@ -70,20 +70,24 @@ export abstract class StartsWithAbstractComponent implements OnInit, OnDestroy {
*/
setStartsWith(startsWith: string) {
this.startsWith = startsWith;
- this.setStartsWithParam();
+ this.setStartsWithParam(false);
}
/**
* Add/Change the url query parameter startsWith using the local variable
*/
- setStartsWithParam() {
+ setStartsWithParam(resetPage = true) {
if (this.startsWith === '-1') {
this.startsWith = undefined;
}
- this.router.navigate([], {
- queryParams: Object.assign({ startsWith: this.startsWith }),
- queryParamsHandling: 'merge'
- });
+ if (resetPage) {
+ this.paginationService.updateRoute(this.paginationId, {page: 1}, { startsWith: this.startsWith });
+ } else {
+ this.router.navigate([], {
+ queryParams: Object.assign({ startsWith: this.startsWith }),
+ queryParamsHandling: 'merge'
+ });
+ }
}
/**
diff --git a/src/app/shared/starts-with/text/starts-with-text.component.spec.ts b/src/app/shared/starts-with/text/starts-with-text.component.spec.ts
index ca7e74f7f2..5509dcdde3 100644
--- a/src/app/shared/starts-with/text/starts-with-text.component.spec.ts
+++ b/src/app/shared/starts-with/text/starts-with-text.component.spec.ts
@@ -54,10 +54,6 @@ describe('StartsWithTextComponent', () => {
describe('when filling in the input form', () => {
let form;
const expectedValue = 'A';
- const extras: NavigationExtras = {
- queryParams: Object.assign({ startsWith: expectedValue }),
- queryParamsHandling: 'merge'
- };
beforeEach(() => {
form = fixture.debugElement.query(By.css('form'));
@@ -71,7 +67,7 @@ describe('StartsWithTextComponent', () => {
});
it('should add a startsWith query parameter', () => {
- expect(router.navigate).toHaveBeenCalledWith([], extras);
+ expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', {page: 1}, {startsWith: expectedValue});
});
});
diff --git a/src/app/shared/starts-with/text/starts-with-text.component.ts b/src/app/shared/starts-with/text/starts-with-text.component.ts
index 4c18f34f4a..9f44fc4d40 100644
--- a/src/app/shared/starts-with/text/starts-with-text.component.ts
+++ b/src/app/shared/starts-with/text/starts-with-text.component.ts
@@ -28,11 +28,11 @@ export class StartsWithTextComponent extends StartsWithAbstractComponent {
/**
* Add/Change the url query parameter startsWith using the local variable
*/
- setStartsWithParam() {
+ setStartsWithParam(resetPage = true) {
if (this.startsWith === '0-9') {
this.startsWith = '0';
}
- super.setStartsWithParam();
+ super.setStartsWithParam(resetPage);
}
/**
diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5
index 2f22da8f08..8c274f640c 100644
--- a/src/assets/i18n/en.json5
+++ b/src/assets/i18n/en.json5
@@ -734,6 +734,8 @@
"browse.title": "Browsing {{ collection }} by {{ field }}{{ startsWith }} {{ value }}",
+ "browse.title.page": "Browsing {{ collection }} by {{ field }} {{ value }}",
+
"chips.remove": "Remove chip",
From 99aee55efa77f570e54c395cd3f9d3e4e36c24b4 Mon Sep 17 00:00:00 2001
From: Alexandre Vryghem
Date: Tue, 19 Apr 2022 12:57:43 +0200
Subject: [PATCH 015/107] 90873: Add environment.standardBundles.bundle
---
config/config.example.yml | 6 ++++++
src/config/app-config.interface.ts | 2 ++
src/config/default-app-config.ts | 7 +++++++
src/config/standard-bundle-config.interface.ts | 10 ++++++++++
src/environments/environment.test.ts | 5 +++++
5 files changed, 30 insertions(+)
create mode 100644 src/config/standard-bundle-config.interface.ts
diff --git a/config/config.example.yml b/config/config.example.yml
index ecb2a3cfb9..c87f94284c 100644
--- a/config/config.example.yml
+++ b/config/config.example.yml
@@ -228,6 +228,12 @@ themes:
rel: manifest
href: assets/dspace/images/favicons/manifest.webmanifest
+# The default bundles that should always be displayed as suggestions when you upload a new bundle
+standardBundles:
+ - bundle: ORIGINAL
+ - bundle: THUMBNAIL
+ - bundle: LICENSE
+
# Whether to enable media viewer for image and/or video Bitstreams (i.e. Bitstreams whose MIME type starts with 'image' or 'video').
# For images, this enables a gallery viewer where you can zoom or page through images.
# For videos, this enables embedded video streaming
diff --git a/src/config/app-config.interface.ts b/src/config/app-config.interface.ts
index 121e80cd74..1355e5cb46 100644
--- a/src/config/app-config.interface.ts
+++ b/src/config/app-config.interface.ts
@@ -14,6 +14,7 @@ import { AuthConfig } from './auth-config.interfaces';
import { UIServerConfig } from './ui-server-config.interface';
import { MediaViewerConfig } from './media-viewer-config.interface';
import { BrowseByConfig } from './browse-by-config.interface';
+import { StandardBundleConfig } from './standard-bundle-config.interface';
interface AppConfig extends Config {
ui: UIServerConfig;
@@ -32,6 +33,7 @@ interface AppConfig extends Config {
collection: CollectionPageConfig;
themes: ThemeConfig[];
mediaViewer: MediaViewerConfig;
+ standardBundles: StandardBundleConfig[];
}
const APP_CONFIG = new InjectionToken('APP_CONFIG');
diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts
index 263cfa0cdd..886242adf9 100644
--- a/src/config/default-app-config.ts
+++ b/src/config/default-app-config.ts
@@ -299,6 +299,13 @@ export class DefaultAppConfig implements AppConfig {
]
},
];
+ // The default bundles that should always be displayed when you edit or add a bundle even when no bundle has been
+ // added to the item yet.
+ standardBundles: [
+ { bundle: 'ORIGINAL' },
+ { bundle: 'THUMBNAIL' },
+ { bundle: 'LICENSE' }
+ ];
// Whether to enable media viewer for image and/or video Bitstreams (i.e. Bitstreams whose MIME type starts with "image" or "video").
// For images, this enables a gallery viewer where you can zoom or page through images.
// For videos, this enables embedded video streaming
diff --git a/src/config/standard-bundle-config.interface.ts b/src/config/standard-bundle-config.interface.ts
new file mode 100644
index 0000000000..6567454603
--- /dev/null
+++ b/src/config/standard-bundle-config.interface.ts
@@ -0,0 +1,10 @@
+import { Config } from './config.interface';
+
+export interface StandardBundleConfig extends Config {
+
+ /**
+ * Used by {@link UploadBitstreamComponent}.
+ */
+ bundle: string;
+
+}
diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts
index 1cbdca762e..23c41a6cf6 100644
--- a/src/environments/environment.test.ts
+++ b/src/environments/environment.test.ts
@@ -224,6 +224,11 @@ export const environment: BuildConfig = {
name: 'base',
},
],
+ standardBundles: [
+ { bundle: 'ORIGINAL' },
+ { bundle: 'THUMBNAIL' },
+ { bundle: 'LICENSE' }
+ ],
mediaViewer: {
image: true,
video: true
From beae47ef193dd778c61f679cb1b8f6197d32f2e7 Mon Sep 17 00:00:00 2001
From: Alexandre Vryghem
Date: Tue, 19 Apr 2022 15:55:44 +0200
Subject: [PATCH 016/107] 90873: Add default bundle suggestions on upload
bundle
---
.../upload/upload-bitstream.component.html | 2 +-
.../upload/upload-bitstream.component.spec.ts | 19 +------
.../upload/upload-bitstream.component.ts | 55 ++++++++++++++++---
src/assets/i18n/en.json5 | 2 +-
4 files changed, 51 insertions(+), 27 deletions(-)
diff --git a/src/app/item-page/bitstreams/upload/upload-bitstream.component.html b/src/app/item-page/bitstreams/upload/upload-bitstream.component.html
index 289ede209a..7a193451f7 100644
--- a/src/app/item-page/bitstreams/upload/upload-bitstream.component.html
+++ b/src/app/item-page/bitstreams/upload/upload-bitstream.component.html
@@ -1,4 +1,4 @@
-
+
diff --git a/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts b/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts
index 8fa475a2ce..a040613082 100644
--- a/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts
+++ b/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts
@@ -21,9 +21,8 @@ import { createPaginatedList } from '../../../shared/testing/utils.test';
import { RouterStub } from '../../../shared/testing/router.stub';
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub';
import { AuthServiceStub } from '../../../shared/testing/auth-service.stub';
-import { getTestScheduler } from 'jasmine-marbles';
-describe('UploadBistreamComponent', () => {
+describe('UploadBitstreamComponent', () => {
let comp: UploadBitstreamComponent;
let fixture: ComponentFixture
;
@@ -94,22 +93,6 @@ describe('UploadBistreamComponent', () => {
removeByHrefSubstring: {}
});
-
- describe('on init', () => {
- beforeEach(waitForAsync(() => {
- createUploadBitstreamTestingModule({
- bundle: bundle.id
- });
- }));
- beforeEach(() => {
- loadFixtureAndComp();
- });
- it('should initialize the bundles', () => {
- expect(comp.bundlesRD$).toBeDefined();
- getTestScheduler().expectObservable(comp.bundlesRD$).toBe('(a|)', {a: createSuccessfulRemoteDataObject([bundle])});
- });
- });
-
describe('when a file is uploaded', () => {
beforeEach(waitForAsync(() => {
createUploadBitstreamTestingModule({});
diff --git a/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts b/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts
index f68aca2252..47e55e34dc 100644
--- a/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts
+++ b/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts
@@ -1,8 +1,8 @@
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
-import { Observable, Subscription } from 'rxjs';
+import { Observable, Subscription, of as observableOf } from 'rxjs';
import { RemoteData } from '../../../core/data/remote-data';
import { Item } from '../../../core/shared/item.model';
-import { map, take } from 'rxjs/operators';
+import { map, take, switchMap } from 'rxjs/operators';
import { ActivatedRoute, Router } from '@angular/router';
import { UploaderOptions } from '../../../shared/uploader/uploader-options.model';
import { hasValue, isEmpty, isNotEmpty } from '../../../shared/empty.util';
@@ -13,11 +13,13 @@ import { TranslateService } from '@ngx-translate/core';
import { PaginatedList } from '../../../core/data/paginated-list.model';
import { Bundle } from '../../../core/shared/bundle.model';
import { BundleDataService } from '../../../core/data/bundle-data.service';
-import { getFirstSucceededRemoteDataPayload } from '../../../core/shared/operators';
+import { getFirstSucceededRemoteDataPayload, getFirstCompletedRemoteData } from '../../../core/shared/operators';
import { UploaderComponent } from '../../../shared/uploader/uploader.component';
import { RequestService } from '../../../core/data/request.service';
import { getBitstreamModuleRoute } from '../../../app-routing-paths';
import { getEntityEditRoute } from '../../item-page-routing-paths';
+import { environment } from '../../../../environments/environment';
+import { StandardBundleConfig } from '../../../../config/standard-bundle-config.interface';
@Component({
selector: 'ds-upload-bitstream',
@@ -49,9 +51,9 @@ export class UploadBitstreamComponent implements OnInit, OnDestroy {
itemRD$: Observable>;
/**
- * The item's bundles
+ * The item's bundles and default the default bundles that should be suggested (defined in environment)
*/
- bundlesRD$: Observable>>;
+ bundles: Bundle[] = [];
/**
* The ID of the currently selected bundle to upload a bitstream to
@@ -99,7 +101,6 @@ export class UploadBitstreamComponent implements OnInit, OnDestroy {
/**
* Initialize component properties:
* itemRD$ Fetched from the current route data (populated by BitstreamPageResolver)
- * bundlesRD$ List of bundles on the item
* selectedBundleId Starts off by checking if the route's queryParams contain a "bundle" parameter. If none is found,
* the ID of the first bundle in the list is selected.
* Calls setUploadUrl after setting the selected bundle
@@ -108,7 +109,39 @@ export class UploadBitstreamComponent implements OnInit, OnDestroy {
this.itemId = this.route.snapshot.params.id;
this.entityType = this.route.snapshot.params['entity-type'];
this.itemRD$ = this.route.data.pipe(map((data) => data.dso));
- this.bundlesRD$ = this.itemService.getBundles(this.itemId);
+ const bundlesRD$ = this.itemService.getBundles(this.itemId).pipe(
+ getFirstCompletedRemoteData(),
+ switchMap((remoteData: RemoteData>) => {
+ if (remoteData.hasSucceeded) {
+ if (remoteData.payload.page) {
+ this.bundles = remoteData.payload.page;
+ } else if (environment.standardBundles) {
+ this.bundles = environment.standardBundles.map((defaultBundle: StandardBundleConfig) => Object.assign(new Bundle(), {
+ _name: defaultBundle.bundle,
+ type: 'bundle'
+ })
+ );
+ }
+ if (remoteData.payload.page && environment.standardBundles) {
+ for (const defaultBundle of environment.standardBundles) {
+ let check = true;
+ remoteData.payload.page.forEach((bundle: Bundle) => {
+ // noinspection JSDeprecatedSymbols
+ if (defaultBundle.bundle === bundle.name) {
+ check = false;
+ }
+ });
+ if (check) {
+ this.bundles.push(Object.assign(new Bundle(), {
+ _name: defaultBundle.bundle,
+ type: 'bundle'
+ }));
+ }
+ }
+ }
+ return observableOf(remoteData.payload.page);
+ }
+ }));
this.selectedBundleId = this.route.snapshot.queryParams.bundle;
if (isNotEmpty(this.selectedBundleId)) {
this.bundleService.findById(this.selectedBundleId).pipe(
@@ -118,6 +151,7 @@ export class UploadBitstreamComponent implements OnInit, OnDestroy {
});
this.setUploadUrl();
}
+ this.subs.push(bundlesRD$.subscribe());
}
/**
@@ -142,6 +176,13 @@ export class UploadBitstreamComponent implements OnInit, OnDestroy {
*/
bundleNameChange() {
this.selectedBundleId = undefined;
+ for (const bundle of this.bundles) {
+ // noinspection JSDeprecatedSymbols
+ if (this.selectedBundleName === bundle.name) {
+ this.selectedBundleId = bundle.id;
+ break;
+ }
+ }
}
/**
diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5
index f33a195cfe..ccff941478 100644
--- a/src/assets/i18n/en.json5
+++ b/src/assets/i18n/en.json5
@@ -1643,7 +1643,7 @@
"item.bitstreams.upload.bundle": "Bundle",
- "item.bitstreams.upload.bundle.placeholder": "Select a bundle",
+ "item.bitstreams.upload.bundle.placeholder": "Select a bundle or input new bundle name",
"item.bitstreams.upload.bundle.new": "Create bundle",
From 01f3cbcaea3685d4cd50d167adaedf13219b26c2 Mon Sep 17 00:00:00 2001
From: Sufiyan Shaikh
Date: Wed, 20 Apr 2022 15:44:01 +0530
Subject: [PATCH 017/107] [CST-5676] Breadcrumbs changes
---
.../bitstream-page-routing.module.ts | 23 ++++++++++-----
.../bitstream-page/bitstream-page.resolver.ts | 13 +++++++++
.../bitstream-breadcrumb.resolver.ts | 28 +++++++++++++++++++
src/app/core/shared/bitstream.model.ts | 8 ++++--
4 files changed, 63 insertions(+), 9 deletions(-)
create mode 100644 src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts
diff --git a/src/app/bitstream-page/bitstream-page-routing.module.ts b/src/app/bitstream-page/bitstream-page-routing.module.ts
index 27b9db9a05..5da9135846 100644
--- a/src/app/bitstream-page/bitstream-page-routing.module.ts
+++ b/src/app/bitstream-page/bitstream-page-routing.module.ts
@@ -10,6 +10,7 @@ import { ResourcePolicyResolver } from '../shared/resource-policies/resolvers/re
import { ResourcePolicyEditComponent } from '../shared/resource-policies/edit/resource-policy-edit.component';
import { BitstreamAuthorizationsComponent } from './bitstream-authorizations/bitstream-authorizations.component';
import { LegacyBitstreamUrlResolver } from './legacy-bitstream-url.resolver';
+import { BitstreamBreadcrumbResolver } from '../core/breadcrumbs/bitstream-breadcrumb.resolver';
const EDIT_BITSTREAM_PATH = ':id/edit';
const EDIT_BITSTREAM_AUTHORIZATIONS_PATH = ':id/authorizations';
@@ -25,7 +26,8 @@ const EDIT_BITSTREAM_AUTHORIZATIONS_PATH = ':id/authorizations';
path: 'handle/:prefix/:suffix/:filename',
component: BitstreamDownloadPageComponent,
resolve: {
- bitstream: LegacyBitstreamUrlResolver
+ bitstream: LegacyBitstreamUrlResolver,
+ breadcrumb: BitstreamBreadcrumbResolver
},
},
{
@@ -33,7 +35,8 @@ const EDIT_BITSTREAM_AUTHORIZATIONS_PATH = ':id/authorizations';
path: ':prefix/:suffix/:sequence_id/:filename',
component: BitstreamDownloadPageComponent,
resolve: {
- bitstream: LegacyBitstreamUrlResolver
+ bitstream: LegacyBitstreamUrlResolver,
+ breadcrumb: BitstreamBreadcrumbResolver
},
},
{
@@ -41,14 +44,16 @@ const EDIT_BITSTREAM_AUTHORIZATIONS_PATH = ':id/authorizations';
path: ':id/download',
component: BitstreamDownloadPageComponent,
resolve: {
- bitstream: BitstreamPageResolver
+ bitstream: BitstreamPageResolver,
+ breadcrumb: BitstreamBreadcrumbResolver
},
},
{
path: EDIT_BITSTREAM_PATH,
component: EditBitstreamPageComponent,
resolve: {
- bitstream: BitstreamPageResolver
+ bitstream: BitstreamPageResolver,
+ breadcrumb: BitstreamBreadcrumbResolver
},
canActivate: [AuthenticatedGuard]
},
@@ -59,7 +64,8 @@ const EDIT_BITSTREAM_AUTHORIZATIONS_PATH = ':id/authorizations';
{
path: 'create',
resolve: {
- resourcePolicyTarget: ResourcePolicyTargetResolver
+ resourcePolicyTarget: ResourcePolicyTargetResolver,
+ breadcrumb: BitstreamBreadcrumbResolver
},
component: ResourcePolicyCreateComponent,
data: { title: 'resource-policies.create.page.title', showBreadcrumbs: true }
@@ -67,7 +73,8 @@ const EDIT_BITSTREAM_AUTHORIZATIONS_PATH = ':id/authorizations';
{
path: 'edit',
resolve: {
- resourcePolicy: ResourcePolicyResolver
+ resourcePolicy: ResourcePolicyResolver,
+ breadcrumb: BitstreamBreadcrumbResolver
},
component: ResourcePolicyEditComponent,
data: { title: 'resource-policies.edit.page.title', showBreadcrumbs: true }
@@ -75,7 +82,8 @@ const EDIT_BITSTREAM_AUTHORIZATIONS_PATH = ':id/authorizations';
{
path: '',
resolve: {
- bitstream: BitstreamPageResolver
+ bitstream: BitstreamPageResolver,
+ breadcrumb: BitstreamBreadcrumbResolver
},
component: BitstreamAuthorizationsComponent,
data: { title: 'bitstream.edit.authorizations.title', showBreadcrumbs: true }
@@ -86,6 +94,7 @@ const EDIT_BITSTREAM_AUTHORIZATIONS_PATH = ':id/authorizations';
],
providers: [
BitstreamPageResolver,
+ BitstreamBreadcrumbResolver
]
})
export class BitstreamPageRoutingModule {
diff --git a/src/app/bitstream-page/bitstream-page.resolver.ts b/src/app/bitstream-page/bitstream-page.resolver.ts
index fd9d5b351b..7da80cff5f 100644
--- a/src/app/bitstream-page/bitstream-page.resolver.ts
+++ b/src/app/bitstream-page/bitstream-page.resolver.ts
@@ -7,6 +7,19 @@ import { BitstreamDataService } from '../core/data/bitstream-data.service';
import { followLink, FollowLinkConfig } from '../shared/utils/follow-link-config.model';
import { getFirstCompletedRemoteData } from '../core/shared/operators';
+/**
+ * The self links defined in this list are expected to be requested somewhere in the near future
+ * Requesting them as embeds will limit the number of requests
+ */
+ export const BITSTREAM_PAGE_LINKS_TO_FOLLOW: FollowLinkConfig[] = [
+ followLink('format', {},
+ followLink('parentCommunity', {},
+ followLink('parentCommunity'))
+ ),
+ followLink('bundle'),
+ followLink('thumbnail')
+];
+
/**
* This class represents a resolver that requests a specific bitstream before the route is activated
*/
diff --git a/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts b/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts
new file mode 100644
index 0000000000..00be49166c
--- /dev/null
+++ b/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts
@@ -0,0 +1,28 @@
+import { Injectable } from '@angular/core';
+import { DSOBreadcrumbsService } from './dso-breadcrumbs.service';
+import { DSOBreadcrumbResolver } from './dso-breadcrumb.resolver';
+import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model';
+import { Bitstream } from '../shared/bitstream.model';
+import { BitstreamDataService } from '../data/bitstream-data.service';
+import { BITSTREAM_PAGE_LINKS_TO_FOLLOW } from 'src/app/bitstream-page/bitstream-page.resolver';
+
+/**
+ * The class that resolves the BreadcrumbConfig object for an Item
+ */
+@Injectable({
+ providedIn: 'root'
+})
+export class BitstreamBreadcrumbResolver extends DSOBreadcrumbResolver {
+ constructor(protected breadcrumbService: DSOBreadcrumbsService, protected dataService: BitstreamDataService) {
+ super(breadcrumbService, dataService);
+ }
+
+ /**
+ * Method that returns the follow links to already resolve
+ * The self links defined in this list are expected to be requested somewhere in the near future
+ * Requesting them as embeds will limit the number of requests
+ */
+ get followLinks(): FollowLinkConfig[] {
+ return BITSTREAM_PAGE_LINKS_TO_FOLLOW;
+ }
+}
diff --git a/src/app/core/shared/bitstream.model.ts b/src/app/core/shared/bitstream.model.ts
index baf2f82635..c855325d2d 100644
--- a/src/app/core/shared/bitstream.model.ts
+++ b/src/app/core/shared/bitstream.model.ts
@@ -7,13 +7,13 @@ import { BITSTREAM_FORMAT } from './bitstream-format.resource-type';
import { BITSTREAM } from './bitstream.resource-type';
import { DSpaceObject } from './dspace-object.model';
import { HALLink } from './hal-link.model';
-import { HALResource } from './hal-resource.model';
import {BUNDLE} from './bundle.resource-type';
import {Bundle} from './bundle.model';
+import { ChildHALResource } from './child-hal-resource.model';
@typedObject
@inheritSerialization(DSpaceObject)
-export class Bitstream extends DSpaceObject implements HALResource {
+export class Bitstream extends DSpaceObject implements ChildHALResource {
static type = BITSTREAM;
/**
@@ -66,4 +66,8 @@ export class Bitstream extends DSpaceObject implements HALResource {
*/
@link(BUNDLE)
bundle?: Observable>;
+
+ getParentLinkKey(): keyof this['_links'] {
+ return 'format';
+ }
}
From d51af2739ef3b8a5e128ffc38af99825e0870358 Mon Sep 17 00:00:00 2001
From: Marie Verdonck
Date: Wed, 20 Apr 2022 11:40:35 +0200
Subject: [PATCH 018/107] 90873: issue 1380 - Fix to make default bundle config
work without yml changes
---
config/config.example.yml | 6 ++---
.../upload/upload-bitstream.component.ts | 25 +++++++++----------
src/config/app-config.interface.ts | 4 +--
src/config/bundle-config.interface.ts | 11 ++++++++
src/config/default-app-config.ts | 9 +++----
.../standard-bundle-config.interface.ts | 10 --------
src/environments/environment.test.ts | 8 +++---
7 files changed, 34 insertions(+), 39 deletions(-)
create mode 100644 src/config/bundle-config.interface.ts
delete mode 100644 src/config/standard-bundle-config.interface.ts
diff --git a/config/config.example.yml b/config/config.example.yml
index c87f94284c..671e15c1b2 100644
--- a/config/config.example.yml
+++ b/config/config.example.yml
@@ -229,10 +229,8 @@ themes:
href: assets/dspace/images/favicons/manifest.webmanifest
# The default bundles that should always be displayed as suggestions when you upload a new bundle
-standardBundles:
- - bundle: ORIGINAL
- - bundle: THUMBNAIL
- - bundle: LICENSE
+bundle:
+ - standardBundles: [ ORIGINAL, THUMBNAIL, LICENSE ]
# Whether to enable media viewer for image and/or video Bitstreams (i.e. Bitstreams whose MIME type starts with 'image' or 'video').
# For images, this enables a gallery viewer where you can zoom or page through images.
diff --git a/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts b/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts
index 47e55e34dc..d825a40174 100644
--- a/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts
+++ b/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts
@@ -19,7 +19,6 @@ import { RequestService } from '../../../core/data/request.service';
import { getBitstreamModuleRoute } from '../../../app-routing-paths';
import { getEntityEditRoute } from '../../item-page-routing-paths';
import { environment } from '../../../../environments/environment';
-import { StandardBundleConfig } from '../../../../config/standard-bundle-config.interface';
@Component({
selector: 'ds-upload-bitstream',
@@ -115,29 +114,27 @@ export class UploadBitstreamComponent implements OnInit, OnDestroy {
if (remoteData.hasSucceeded) {
if (remoteData.payload.page) {
this.bundles = remoteData.payload.page;
- } else if (environment.standardBundles) {
- this.bundles = environment.standardBundles.map((defaultBundle: StandardBundleConfig) => Object.assign(new Bundle(), {
- _name: defaultBundle.bundle,
- type: 'bundle'
- })
- );
- }
- if (remoteData.payload.page && environment.standardBundles) {
- for (const defaultBundle of environment.standardBundles) {
+ for (const defaultBundle of environment.bundle.standardBundles) {
let check = true;
remoteData.payload.page.forEach((bundle: Bundle) => {
// noinspection JSDeprecatedSymbols
- if (defaultBundle.bundle === bundle.name) {
+ if (defaultBundle === bundle.name) {
check = false;
}
});
if (check) {
this.bundles.push(Object.assign(new Bundle(), {
- _name: defaultBundle.bundle,
+ _name: defaultBundle,
type: 'bundle'
}));
}
}
+ } else {
+ this.bundles = environment.bundle.standardBundles.map((defaultBundle: string) => Object.assign(new Bundle(), {
+ _name: defaultBundle,
+ type: 'bundle'
+ })
+ );
}
return observableOf(remoteData.payload.page);
}
@@ -232,7 +229,9 @@ export class UploadBitstreamComponent implements OnInit, OnDestroy {
onClick(bundle: Bundle) {
this.selectedBundleId = bundle.id;
this.selectedBundleName = bundle.name;
- this.setUploadUrl();
+ if (bundle.id) {
+ this.setUploadUrl();
+ }
}
/**
diff --git a/src/config/app-config.interface.ts b/src/config/app-config.interface.ts
index 1355e5cb46..a41ec05b82 100644
--- a/src/config/app-config.interface.ts
+++ b/src/config/app-config.interface.ts
@@ -14,7 +14,7 @@ import { AuthConfig } from './auth-config.interfaces';
import { UIServerConfig } from './ui-server-config.interface';
import { MediaViewerConfig } from './media-viewer-config.interface';
import { BrowseByConfig } from './browse-by-config.interface';
-import { StandardBundleConfig } from './standard-bundle-config.interface';
+import { BundleConfig } from './bundle-config.interface';
interface AppConfig extends Config {
ui: UIServerConfig;
@@ -33,7 +33,7 @@ interface AppConfig extends Config {
collection: CollectionPageConfig;
themes: ThemeConfig[];
mediaViewer: MediaViewerConfig;
- standardBundles: StandardBundleConfig[];
+ bundle: BundleConfig;
}
const APP_CONFIG = new InjectionToken('APP_CONFIG');
diff --git a/src/config/bundle-config.interface.ts b/src/config/bundle-config.interface.ts
new file mode 100644
index 0000000000..5ffef2156a
--- /dev/null
+++ b/src/config/bundle-config.interface.ts
@@ -0,0 +1,11 @@
+import { Config } from './config.interface';
+
+export interface BundleConfig extends Config {
+
+ /**
+ * List of standard bundles to select in adding bitstreams to items
+ * Used by {@link UploadBitstreamComponent}.
+ */
+ standardBundles: string[];
+
+}
diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts
index 886242adf9..9409ac173a 100644
--- a/src/config/default-app-config.ts
+++ b/src/config/default-app-config.ts
@@ -14,6 +14,7 @@ import { ServerConfig } from './server-config.interface';
import { SubmissionConfig } from './submission-config.interface';
import { ThemeConfig } from './theme.model';
import { UIServerConfig } from './ui-server-config.interface';
+import { BundleConfig } from './bundle-config.interface';
export class DefaultAppConfig implements AppConfig {
production = false;
@@ -301,11 +302,9 @@ export class DefaultAppConfig implements AppConfig {
];
// The default bundles that should always be displayed when you edit or add a bundle even when no bundle has been
// added to the item yet.
- standardBundles: [
- { bundle: 'ORIGINAL' },
- { bundle: 'THUMBNAIL' },
- { bundle: 'LICENSE' }
- ];
+ bundle: BundleConfig = {
+ standardBundles: ['ORIGINAL', 'THUMBNAIL', 'LICENSE']
+ };
// Whether to enable media viewer for image and/or video Bitstreams (i.e. Bitstreams whose MIME type starts with "image" or "video").
// For images, this enables a gallery viewer where you can zoom or page through images.
// For videos, this enables embedded video streaming
diff --git a/src/config/standard-bundle-config.interface.ts b/src/config/standard-bundle-config.interface.ts
deleted file mode 100644
index 6567454603..0000000000
--- a/src/config/standard-bundle-config.interface.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Config } from './config.interface';
-
-export interface StandardBundleConfig extends Config {
-
- /**
- * Used by {@link UploadBitstreamComponent}.
- */
- bundle: string;
-
-}
diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts
index 23c41a6cf6..c21f19fd45 100644
--- a/src/environments/environment.test.ts
+++ b/src/environments/environment.test.ts
@@ -224,11 +224,9 @@ export const environment: BuildConfig = {
name: 'base',
},
],
- standardBundles: [
- { bundle: 'ORIGINAL' },
- { bundle: 'THUMBNAIL' },
- { bundle: 'LICENSE' }
- ],
+ bundle: {
+ standardBundles: ['ORIGINAL', 'THUMBNAIL', 'LICENSE'],
+ },
mediaViewer: {
image: true,
video: true
From ffe5922990bf67a8c762dff01219c933dcd3394d Mon Sep 17 00:00:00 2001
From: Sufiyan Shaikh
Date: Thu, 21 Apr 2022 12:50:18 +0530
Subject: [PATCH 019/107] [CST-5676] resolver overwrite
---
.../bitstream-breadcrumb.resolver.ts | 31 ++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts b/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts
index 00be49166c..de8da19a41 100644
--- a/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts
+++ b/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts
@@ -1,10 +1,16 @@
import { Injectable } from '@angular/core';
import { DSOBreadcrumbsService } from './dso-breadcrumbs.service';
-import { DSOBreadcrumbResolver } from './dso-breadcrumb.resolver';
import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model';
import { Bitstream } from '../shared/bitstream.model';
import { BitstreamDataService } from '../data/bitstream-data.service';
import { BITSTREAM_PAGE_LINKS_TO_FOLLOW } from 'src/app/bitstream-page/bitstream-page.resolver';
+import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import { Observable } from 'rxjs';
+import { BreadcrumbConfig } from 'src/app/breadcrumbs/breadcrumb/breadcrumb-config.model';
+import { getFirstCompletedRemoteData, getRemoteDataPayload } from '../shared/operators';
+import { map } from 'rxjs/operators';
+import { hasValue } from 'src/app/shared/empty.util';
+import { DSOBreadcrumbResolver } from './dso-breadcrumb.resolver';
/**
* The class that resolves the BreadcrumbConfig object for an Item
@@ -17,6 +23,29 @@ export class BitstreamBreadcrumbResolver extends DSOBreadcrumbResolver> {
+ const uuid = route.params.id;
+ return this.dataService.findById(uuid, true, false, ...this.followLinks).pipe(
+ getFirstCompletedRemoteData(),
+ getRemoteDataPayload(),
+ map((object: Bitstream) => {
+ if (hasValue(object)) {
+ const fullPath = state.url;
+ const url = fullPath.substr(0, fullPath.indexOf(uuid)) + uuid;
+ return {provider: this.breadcrumbService, key: object, url: url};
+ } else {
+ return undefined;
+ }
+ })
+ );
+ }
+
/**
* Method that returns the follow links to already resolve
* The self links defined in this list are expected to be requested somewhere in the near future
From 459da211bede61fb6f2170b96a80293885bdac6c Mon Sep 17 00:00:00 2001
From: nibou230
Date: Wed, 13 Apr 2022 13:03:37 -0400
Subject: [PATCH 020/107] Display the access status badges
---
config/config.example.yml | 2 +
src/app/core/core.module.ts | 4 +-
src/app/core/data/item-data.service.ts | 22 +++
.../access-status-badge.component.html | 3 +
.../access-status-badge.component.spec.ts | 160 ++++++++++++++++++
.../access-status-badge.component.ts | 45 +++++
.../access-status.model.ts | 23 +++
.../access-status.resource-type.ts | 9 +
...-search-result-list-element.component.html | 5 +-
...em-search-result-list-element.component.ts | 6 +
src/app/shared/shared.module.ts | 2 +
src/assets/i18n/en.json5 | 10 ++
src/assets/i18n/fr.json5 | 15 ++
src/config/default-app-config.ts | 5 +-
src/config/ui-server-config.interface.ts | 2 +
src/environments/environment.test.ts | 4 +-
16 files changed, 313 insertions(+), 4 deletions(-)
create mode 100644 src/app/shared/object-list/access-status-badge/access-status-badge.component.html
create mode 100644 src/app/shared/object-list/access-status-badge/access-status-badge.component.spec.ts
create mode 100644 src/app/shared/object-list/access-status-badge/access-status-badge.component.ts
create mode 100644 src/app/shared/object-list/access-status-badge/access-status.model.ts
create mode 100644 src/app/shared/object-list/access-status-badge/access-status.resource-type.ts
diff --git a/config/config.example.yml b/config/config.example.yml
index 771c7b1653..724d7f8a64 100644
--- a/config/config.example.yml
+++ b/config/config.example.yml
@@ -13,6 +13,8 @@ ui:
rateLimiter:
windowMs: 60000 # 1 minute
max: 500 # limit each IP to 500 requests per windowMs
+ # Show the file access status in items lists
+ showAccessStatuses: false
# The REST API server settings
# NOTE: these must be 'synced' with the 'dspace.server.url' setting in your backend's local.cfg.
diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts
index e9e242dbc0..b90a3edd46 100644
--- a/src/app/core/core.module.ts
+++ b/src/app/core/core.module.ts
@@ -163,6 +163,7 @@ import { SequenceService } from './shared/sequence.service';
import { CoreState } from './core-state.model';
import { GroupDataService } from './eperson/group-data.service';
import { SubmissionAccessesModel } from './config/models/config-submission-accesses.model';
+import { AccessStatusObject } from '../shared/object-list/access-status-badge/access-status.model';
/**
* When not in production, endpoint responses can be mocked for testing purposes
@@ -346,7 +347,8 @@ export const models =
UsageReport,
Root,
SearchConfig,
- SubmissionAccessesModel
+ SubmissionAccessesModel,
+ AccessStatusObject
];
@NgModule({
diff --git a/src/app/core/data/item-data.service.ts b/src/app/core/data/item-data.service.ts
index cb5d7a3d57..9a2dc5a8af 100644
--- a/src/app/core/data/item-data.service.ts
+++ b/src/app/core/data/item-data.service.ts
@@ -36,6 +36,7 @@ import { sendRequest } from '../shared/request.operators';
import { RestRequest } from './rest-request.model';
import { CoreState } from '../core-state.model';
import { FindListOptions } from './find-list-options.model';
+import { AccessStatusObject } from 'src/app/shared/object-list/access-status-badge/access-status.model';
@Injectable()
@dataService(ITEM)
@@ -291,6 +292,27 @@ export class ItemDataService extends DataService- {
);
}
+ /**
+ * Get the the access status
+ * @param itemId
+ */
+ public getAccessStatus(itemId: string): Observable
> {
+ const requestId = this.requestService.generateRequestId();
+ const href$ = this.halService.getEndpoint('accessStatus').pipe(
+ map((href) => href.replace('{?uuid}', `?uuid=${itemId}`))
+ );
+
+ href$.pipe(
+ find((href: string) => hasValue(href)),
+ map((href: string) => {
+ const request = new GetRequest(requestId, href);
+ this.requestService.send(request);
+ })
+ ).subscribe();
+
+ return this.rdbService.buildFromRequestUUID(requestId);
+ }
+
/**
* Invalidate the cache of the item
* @param itemUUID
diff --git a/src/app/shared/object-list/access-status-badge/access-status-badge.component.html b/src/app/shared/object-list/access-status-badge/access-status-badge.component.html
new file mode 100644
index 0000000000..a7b3edc9b3
--- /dev/null
+++ b/src/app/shared/object-list/access-status-badge/access-status-badge.component.html
@@ -0,0 +1,3 @@
+
+ {{ status | translate }}
+
diff --git a/src/app/shared/object-list/access-status-badge/access-status-badge.component.spec.ts b/src/app/shared/object-list/access-status-badge/access-status-badge.component.spec.ts
new file mode 100644
index 0000000000..da0677a5de
--- /dev/null
+++ b/src/app/shared/object-list/access-status-badge/access-status-badge.component.spec.ts
@@ -0,0 +1,160 @@
+import { Item } from '../../../core/shared/item.model';
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+import { TranslateModule } from '@ngx-translate/core';
+import { TruncatePipe } from '../../utils/truncate.pipe';
+import { NO_ERRORS_SCHEMA } from '@angular/core';
+import { AccessStatusBadgeComponent } from './access-status-badge.component';
+import { createSuccessfulRemoteDataObject$ } from '../../remote-data.utils';
+import { By } from '@angular/platform-browser';
+import { ItemDataService } from 'src/app/core/data/item-data.service';
+import { AccessStatusObject } from './access-status.model';
+
+describe('ItemAccessStatusBadgeComponent', () => {
+ let component: AccessStatusBadgeComponent;
+ let fixture: ComponentFixture;
+
+ let unknownStatus: AccessStatusObject;
+ let metadataOnlyStatus: AccessStatusObject;
+ let openAccessStatus: AccessStatusObject;
+ let embargoStatus: AccessStatusObject;
+ let restrictedStatus: AccessStatusObject;
+
+ let itemDataService: ItemDataService;
+
+ let item: Item;
+
+ function init() {
+ unknownStatus = Object.assign(new AccessStatusObject(), {
+ status: 'unknown'
+ });
+
+ metadataOnlyStatus = Object.assign(new AccessStatusObject(), {
+ status: 'metadata.only'
+ });
+
+ openAccessStatus = Object.assign(new AccessStatusObject(), {
+ status: 'open.access'
+ });
+
+ embargoStatus = Object.assign(new AccessStatusObject(), {
+ status: 'embargo'
+ });
+
+ restrictedStatus = Object.assign(new AccessStatusObject(), {
+ status: 'restricted'
+ });
+
+ itemDataService = jasmine.createSpyObj('itemDataService', {
+ getAccessStatus: createSuccessfulRemoteDataObject$(unknownStatus)
+ });
+
+ item = Object.assign(new Item(), {
+ uuid: 'item-uuid'
+ });
+ }
+
+ function initTestBed() {
+ TestBed.configureTestingModule({
+ imports: [TranslateModule.forRoot()],
+ declarations: [AccessStatusBadgeComponent, TruncatePipe],
+ schemas: [NO_ERRORS_SCHEMA],
+ providers: [
+ {provide: ItemDataService, useValue: itemDataService}
+ ]
+ }).compileComponents();
+ }
+
+ function initFixtureAndComponent() {
+ fixture = TestBed.createComponent(AccessStatusBadgeComponent);
+ component = fixture.componentInstance;
+ component.uuid = item.uuid;
+ fixture.detectChanges();
+ }
+
+ function lookForAccessStatusBadge(status: string) {
+ const badge = fixture.debugElement.query(By.css('span.badge'));
+ expect(badge.nativeElement.textContent).toEqual(`access-status.${status.toLowerCase()}.listelement.badge`);
+ }
+
+ describe('init', () => {
+ beforeEach(waitForAsync(() => {
+ init();
+ initTestBed();
+ }));
+ beforeEach(() => {
+ initFixtureAndComponent();
+ });
+ it('should init the component', () => {
+ expect(component).toBeTruthy();
+ });
+ });
+
+ describe('When the getAccessStatus method returns unknown', () => {
+ beforeEach(waitForAsync(() => {
+ init();
+ initTestBed();
+ }));
+ beforeEach(() => {
+ initFixtureAndComponent();
+ });
+ it('should show the unknown badge', () => {
+ lookForAccessStatusBadge('unknown');
+ });
+ });
+
+ describe('When the getAccessStatus method returns metadata.only', () => {
+ beforeEach(waitForAsync(() => {
+ init();
+ (itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(metadataOnlyStatus));
+ initTestBed();
+ }));
+ beforeEach(() => {
+ initFixtureAndComponent();
+ });
+ it('should show the metadata only badge', () => {
+ lookForAccessStatusBadge('metadata.only');
+ });
+ });
+
+ describe('When the getAccessStatus method returns open.access', () => {
+ beforeEach(waitForAsync(() => {
+ init();
+ (itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(openAccessStatus));
+ initTestBed();
+ }));
+ beforeEach(() => {
+ initFixtureAndComponent();
+ });
+ it('should show the open access badge', () => {
+ lookForAccessStatusBadge('open.access');
+ });
+ });
+
+ describe('When the getAccessStatus method returns embargo', () => {
+ beforeEach(waitForAsync(() => {
+ init();
+ (itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(embargoStatus));
+ initTestBed();
+ }));
+ beforeEach(() => {
+ initFixtureAndComponent();
+ });
+ it('should show the embargo badge', () => {
+ lookForAccessStatusBadge('embargo');
+ });
+ });
+
+ describe('When the getAccessStatus method returns restricted', () => {
+ beforeEach(waitForAsync(() => {
+ init();
+ (itemDataService.getAccessStatus as jasmine.Spy).and.returnValue(createSuccessfulRemoteDataObject$(restrictedStatus));
+ initTestBed();
+ }));
+ beforeEach(() => {
+ initFixtureAndComponent();
+ });
+ it('should show the restricted badge', () => {
+ lookForAccessStatusBadge('restricted');
+ });
+ });
+});
diff --git a/src/app/shared/object-list/access-status-badge/access-status-badge.component.ts b/src/app/shared/object-list/access-status-badge/access-status-badge.component.ts
new file mode 100644
index 0000000000..b181ae4104
--- /dev/null
+++ b/src/app/shared/object-list/access-status-badge/access-status-badge.component.ts
@@ -0,0 +1,45 @@
+import { Component, Input } from '@angular/core';
+import { map } from 'rxjs/operators';
+import { Observable } from 'rxjs';
+import { getFirstSucceededRemoteDataPayload } from 'src/app/core/shared/operators';
+import { ItemDataService } from 'src/app/core/data/item-data.service';
+import { AccessStatusObject } from './access-status.model';
+import { hasValue } from '../../empty.util';
+
+@Component({
+ selector: 'ds-access-status-badge',
+ templateUrl: './access-status-badge.component.html'
+})
+/**
+ * Component rendering the access status of an item as a badge
+ */
+export class AccessStatusBadgeComponent {
+
+ private _uuid: string;
+ private _accessStatus$: Observable;
+
+ /**
+ * Initialize instance variables
+ *
+ * @param {ItemDataService} itemDataService
+ */
+ constructor(private itemDataService: ItemDataService) { }
+
+ ngOnInit(): void {
+ this._accessStatus$ = this.itemDataService
+ .getAccessStatus(this._uuid)
+ .pipe(
+ getFirstSucceededRemoteDataPayload(),
+ map((accessStatus: AccessStatusObject) => hasValue(accessStatus.status) ? accessStatus.status : 'unknown'),
+ map((status: string) => `access-status.${status.toLowerCase()}.listelement.badge`)
+ );
+ }
+
+ @Input() set uuid(uuid: string) {
+ this._uuid = uuid;
+ }
+
+ get accessStatus$(): Observable {
+ return this._accessStatus$;
+ }
+}
diff --git a/src/app/shared/object-list/access-status-badge/access-status.model.ts b/src/app/shared/object-list/access-status-badge/access-status.model.ts
new file mode 100644
index 0000000000..6cdcafdbd8
--- /dev/null
+++ b/src/app/shared/object-list/access-status-badge/access-status.model.ts
@@ -0,0 +1,23 @@
+import { autoserialize } from 'cerialize';
+import { typedObject } from 'src/app/core/cache/builders/build-decorators';
+import { ResourceType } from 'src/app/core/shared/resource-type';
+import { excludeFromEquals } from 'src/app/core/utilities/equals.decorators';
+import { ACCESS_STATUS } from './access-status.resource-type';
+
+@typedObject
+export class AccessStatusObject {
+ static type = ACCESS_STATUS;
+
+ /**
+ * The type for this AccessStatusObject
+ */
+ @excludeFromEquals
+ @autoserialize
+ type: ResourceType;
+
+ /**
+ * The access status value
+ */
+ @autoserialize
+ status: string;
+}
diff --git a/src/app/shared/object-list/access-status-badge/access-status.resource-type.ts b/src/app/shared/object-list/access-status-badge/access-status.resource-type.ts
new file mode 100644
index 0000000000..ead2afc0b1
--- /dev/null
+++ b/src/app/shared/object-list/access-status-badge/access-status.resource-type.ts
@@ -0,0 +1,9 @@
+import { ResourceType } from 'src/app/core/shared/resource-type';
+
+/**
+ * The resource type for Access Status
+ *
+ * Needs to be in a separate file to prevent circular
+ * dependencies in webpack.
+ */
+export const ACCESS_STATUS = new ResourceType('accessStatus');
diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html
index 8898632eb5..8bea795cca 100644
--- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html
+++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html
@@ -1,4 +1,7 @@
-
+
+
+
+
Date: Wed, 20 Apr 2022 09:12:59 -0400
Subject: [PATCH 021/107] Adapt the service to a LinkedRepository result
---
src/app/core/data/item-data.service.spec.ts | 36 ++++++++++++++++---
src/app/core/data/item-data.service.ts | 30 +++++++++-------
.../data/version-history-data.service.spec.ts | 2 +-
.../access-status.model.ts | 14 ++++++--
.../testing/hal-endpoint-service.stub.ts | 6 +++-
5 files changed, 67 insertions(+), 21 deletions(-)
diff --git a/src/app/core/data/item-data.service.spec.ts b/src/app/core/data/item-data.service.spec.ts
index cc1e3b6e20..e85ddb2f38 100644
--- a/src/app/core/data/item-data.service.spec.ts
+++ b/src/app/core/data/item-data.service.spec.ts
@@ -10,12 +10,13 @@ import { ObjectCacheService } from '../cache/object-cache.service';
import { RestResponse } from '../cache/response.models';
import { ExternalSourceEntry } from '../shared/external-source-entry.model';
import { ItemDataService } from './item-data.service';
-import { DeleteRequest, PostRequest } from './request.models';
+import { DeleteRequest, GetRequest, PostRequest } from './request.models';
import { RequestService } from './request.service';
import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock';
import { CoreState } from '../core-state.model';
import { RequestEntry } from './request-entry.model';
import { FindListOptions } from './find-list-options.model';
+import { HALEndpointServiceStub } from 'src/app/shared/testing/hal-endpoint-service.stub';
describe('ItemDataService', () => {
let scheduler: TestScheduler;
@@ -36,13 +37,11 @@ describe('ItemDataService', () => {
}) as RequestService;
const rdbService = getMockRemoteDataBuildService();
- const itemEndpoint = 'https://rest.api/core/items';
+ const itemEndpoint = 'https://rest.api/core';
const store = {} as Store;
const objectCache = {} as ObjectCacheService;
- const halEndpointService = jasmine.createSpyObj('halService', {
- getEndpoint: observableOf(itemEndpoint)
- });
+ const halEndpointService: any = new HALEndpointServiceStub(itemEndpoint);
const bundleService = jasmine.createSpyObj('bundleService', {
findByHref: {}
});
@@ -185,6 +184,33 @@ describe('ItemDataService', () => {
});
});
+ describe('getAccessStatusEndpoint', () => {
+ beforeEach(() => {
+ service = initTestService();
+ });
+ it('should retrieve the access status endpoint', () => {
+ const itemId = '3de6ea60-ec39-419b-ae6f-065930ac1429';
+ const result = service.getAccessStatusEndpoint(itemId);
+ result.subscribe(((value) => {
+ expect(value).toEqual(`${itemEndpoint}/items/${itemId}/accessStatus`);
+ }));
+ });
+ });
+
+ describe('getAccessStatus', () => {
+ beforeEach(() => {
+ service = initTestService();
+ });
+ it('should send a GET request', (done) => {
+ const itemId = '3de6ea60-ec39-419b-ae6f-065930ac1429';
+ const result = service.getAccessStatus(itemId);
+ result.subscribe(() => {
+ expect(requestService.send).toHaveBeenCalledWith(jasmine.any(GetRequest));
+ done();
+ });
+ });
+ });
+
describe('when cache is invalidated', () => {
beforeEach(() => {
service = initTestService();
diff --git a/src/app/core/data/item-data.service.ts b/src/app/core/data/item-data.service.ts
index 9a2dc5a8af..c7f0f541f8 100644
--- a/src/app/core/data/item-data.service.ts
+++ b/src/app/core/data/item-data.service.ts
@@ -292,25 +292,31 @@ export class ItemDataService extends DataService- {
);
}
+ /**
+ * Get the endpoint for an item's access status
+ * @param itemId
+ */
+ public getAccessStatusEndpoint(itemId: string): Observable
{
+ return this.halService.getEndpoint(this.linkPath).pipe(
+ switchMap((url: string) => this.halService.getEndpoint('accessStatus', `${url}/${itemId}`))
+ );
+ }
+
/**
* Get the the access status
* @param itemId
*/
public getAccessStatus(itemId: string): Observable> {
- const requestId = this.requestService.generateRequestId();
- const href$ = this.halService.getEndpoint('accessStatus').pipe(
- map((href) => href.replace('{?uuid}', `?uuid=${itemId}`))
- );
+ const hrefObs = this.getAccessStatusEndpoint(itemId);
- href$.pipe(
- find((href: string) => hasValue(href)),
- map((href: string) => {
- const request = new GetRequest(requestId, href);
- this.requestService.send(request);
- })
- ).subscribe();
+ hrefObs.pipe(
+ take(1)
+ ).subscribe((href) => {
+ const request = new GetRequest(this.requestService.generateRequestId(), href);
+ this.requestService.send(request);
+ });
- return this.rdbService.buildFromRequestUUID(requestId);
+ return this.rdbService.buildSingle(hrefObs);
}
/**
diff --git a/src/app/core/data/version-history-data.service.spec.ts b/src/app/core/data/version-history-data.service.spec.ts
index 207093b4d5..26ed370026 100644
--- a/src/app/core/data/version-history-data.service.spec.ts
+++ b/src/app/core/data/version-history-data.service.spec.ts
@@ -151,7 +151,7 @@ describe('VersionHistoryDataService', () => {
describe('when getVersionsEndpoint is called', () => {
it('should return the correct value', () => {
service.getVersionsEndpoint(versionHistoryId).subscribe((res) => {
- expect(res).toBe(url + '/versions');
+ expect(res).toBe(url + '/versionhistories/version-history-id/versions');
});
});
});
diff --git a/src/app/shared/object-list/access-status-badge/access-status.model.ts b/src/app/shared/object-list/access-status-badge/access-status.model.ts
index 6cdcafdbd8..31de1a3a38 100644
--- a/src/app/shared/object-list/access-status-badge/access-status.model.ts
+++ b/src/app/shared/object-list/access-status-badge/access-status.model.ts
@@ -1,11 +1,13 @@
-import { autoserialize } from 'cerialize';
+import { autoserialize, deserialize } from 'cerialize';
import { typedObject } from 'src/app/core/cache/builders/build-decorators';
+import { CacheableObject } from 'src/app/core/cache/object-cache.reducer';
+import { HALLink } from 'src/app/core/shared/hal-link.model';
import { ResourceType } from 'src/app/core/shared/resource-type';
import { excludeFromEquals } from 'src/app/core/utilities/equals.decorators';
import { ACCESS_STATUS } from './access-status.resource-type';
@typedObject
-export class AccessStatusObject {
+export class AccessStatusObject implements CacheableObject {
static type = ACCESS_STATUS;
/**
@@ -20,4 +22,12 @@ export class AccessStatusObject {
*/
@autoserialize
status: string;
+
+ /**
+ * The {@link HALLink}s for this AccessStatusObject
+ */
+ @deserialize
+ _links: {
+ self: HALLink;
+ };
}
diff --git a/src/app/shared/testing/hal-endpoint-service.stub.ts b/src/app/shared/testing/hal-endpoint-service.stub.ts
index 19f95d577c..753efcdb5d 100644
--- a/src/app/shared/testing/hal-endpoint-service.stub.ts
+++ b/src/app/shared/testing/hal-endpoint-service.stub.ts
@@ -1,9 +1,13 @@
import { of as observableOf } from 'rxjs';
+import { hasValue } from '../empty.util';
export class HALEndpointServiceStub {
constructor(private url: string) {}
- getEndpoint(path: string) {
+ getEndpoint(path: string, startHref?: string) {
+ if (hasValue(startHref)) {
+ return observableOf(startHref + '/' + path);
+ }
return observableOf(this.url + '/' + path);
}
}
From a2a241b906d457164f2954733f8481792e341269 Mon Sep 17 00:00:00 2001
From: nibou230
Date: Thu, 21 Apr 2022 12:32:11 -0400
Subject: [PATCH 022/107] Added the badge to some components for coherence
---
...m-search-result-grid-element.component.html | 1 +
...tem-search-result-grid-element.component.ts | 6 ++++++
.../access-status-badge.component.html | 4 ++--
.../access-status-badge.component.ts | 18 +++++++++++++-----
.../item-list-preview.component.html | 5 ++++-
.../item-list-preview.component.ts | 9 +++++++++
...m-search-result-list-element.component.html | 2 +-
7 files changed, 36 insertions(+), 9 deletions(-)
diff --git a/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.html b/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.html
index 7fdb505d43..c4bb444d44 100644
--- a/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.html
+++ b/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.html
@@ -18,6 +18,7 @@
+
diff --git a/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.ts b/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.ts
index a628c1e7e8..77fc25ff29 100644
--- a/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.ts
+++ b/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.ts
@@ -6,6 +6,7 @@ import { SearchResultGridElementComponent } from '../../search-result-grid-eleme
import { Item } from '../../../../../core/shared/item.model';
import { ItemSearchResult } from '../../../../object-collection/shared/item-search-result.model';
import { getItemPageRoute } from '../../../../../item-page/item-page-routing-paths';
+import { environment } from 'src/environments/environment';
@listableObjectComponent('PublicationSearchResult', ViewMode.GridElement)
@listableObjectComponent(ItemSearchResult, ViewMode.GridElement)
@@ -23,9 +24,14 @@ export class ItemSearchResultGridElementComponent extends SearchResultGridElemen
* Route to the item's page
*/
itemPageRoute: string;
+ /**
+ * Whether to show the access status badge or not
+ */
+ showAccessStatus: boolean;
ngOnInit(): void {
super.ngOnInit();
this.itemPageRoute = getItemPageRoute(this.dso);
+ this.showAccessStatus = environment.ui.showAccessStatuses;
}
}
diff --git a/src/app/shared/object-list/access-status-badge/access-status-badge.component.html b/src/app/shared/object-list/access-status-badge/access-status-badge.component.html
index a7b3edc9b3..8fc3a82740 100644
--- a/src/app/shared/object-list/access-status-badge/access-status-badge.component.html
+++ b/src/app/shared/object-list/access-status-badge/access-status-badge.component.html
@@ -1,3 +1,3 @@
-
-
{{ status | translate }}
+
+ {{ accessStatus | translate }}
diff --git a/src/app/shared/object-list/access-status-badge/access-status-badge.component.ts b/src/app/shared/object-list/access-status-badge/access-status-badge.component.ts
index b181ae4104..bf76a429f7 100644
--- a/src/app/shared/object-list/access-status-badge/access-status-badge.component.ts
+++ b/src/app/shared/object-list/access-status-badge/access-status-badge.component.ts
@@ -1,7 +1,7 @@
import { Component, Input } from '@angular/core';
-import { map } from 'rxjs/operators';
-import { Observable } from 'rxjs';
-import { getFirstSucceededRemoteDataPayload } from 'src/app/core/shared/operators';
+import { catchError, map } from 'rxjs/operators';
+import { Observable, of as observableOf } from 'rxjs';
+import { getFirstCompletedRemoteData } from 'src/app/core/shared/operators';
import { ItemDataService } from 'src/app/core/data/item-data.service';
import { AccessStatusObject } from './access-status.model';
import { hasValue } from '../../empty.util';
@@ -29,9 +29,17 @@ export class AccessStatusBadgeComponent {
this._accessStatus$ = this.itemDataService
.getAccessStatus(this._uuid)
.pipe(
- getFirstSucceededRemoteDataPayload(),
+ getFirstCompletedRemoteData(),
+ map((accessStatusRD) => {
+ if (accessStatusRD.statusCode !== 401 && hasValue(accessStatusRD.payload)) {
+ return accessStatusRD.payload;
+ } else {
+ return [];
+ }
+ }),
map((accessStatus: AccessStatusObject) => hasValue(accessStatus.status) ? accessStatus.status : 'unknown'),
- map((status: string) => `access-status.${status.toLowerCase()}.listelement.badge`)
+ map((status: string) => `access-status.${status.toLowerCase()}.listelement.badge`),
+ catchError(() => observableOf('access-status.unknown.listelement.badge'))
);
}
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html
index c518d39bd9..4801e66a26 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html
+++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html
@@ -2,7 +2,10 @@
-
+
+
+
+
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts
index 840960d51f..6b2290c711 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts
@@ -1,4 +1,5 @@
import { Component, Input } from '@angular/core';
+import { environment } from 'src/environments/environment';
import { Item } from '../../../../core/shared/item.model';
import { fadeInOut } from '../../../animations/fade';
@@ -36,4 +37,12 @@ export class ItemListPreviewComponent {
*/
@Input() showSubmitter = false;
+ /**
+ * Whether to show the access status badge or not
+ */
+ showAccessStatus: boolean;
+
+ ngOnInit(): void {
+ this.showAccessStatus = environment.ui.showAccessStatuses;
+ }
}
diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html
index 8bea795cca..8e216bb82c 100644
--- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html
+++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html
@@ -1,6 +1,6 @@
-
+
From 9f50b4997cbe0b6a93c701ceff93596af0b9922b Mon Sep 17 00:00:00 2001
From: nibou230
Date: Thu, 21 Apr 2022 14:30:23 -0400
Subject: [PATCH 023/107] Changed the import for CacheableObject
---
.../object-list/access-status-badge/access-status.model.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/app/shared/object-list/access-status-badge/access-status.model.ts b/src/app/shared/object-list/access-status-badge/access-status.model.ts
index 31de1a3a38..69b5e920d0 100644
--- a/src/app/shared/object-list/access-status-badge/access-status.model.ts
+++ b/src/app/shared/object-list/access-status-badge/access-status.model.ts
@@ -1,6 +1,6 @@
import { autoserialize, deserialize } from 'cerialize';
import { typedObject } from 'src/app/core/cache/builders/build-decorators';
-import { CacheableObject } from 'src/app/core/cache/object-cache.reducer';
+import { CacheableObject } from 'src/app/core/cache/cacheable-object.model';
import { HALLink } from 'src/app/core/shared/hal-link.model';
import { ResourceType } from 'src/app/core/shared/resource-type';
import { excludeFromEquals } from 'src/app/core/utilities/equals.decorators';
From 361bb7f7dc4e4fb3b220f16f34e54b0d605f6824 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Thu, 3 Feb 2022 14:05:31 +1300
Subject: [PATCH 024/107] [TLC-254] Port submission field type binding from
DSpace-CRIS 7
---
src/app/core/core.module.ts | 2 +
src/app/shared/empty.util.ts | 26 ++
...amic-form-control-container.component.html | 3 +-
...c-form-control-container.component.spec.ts | 10 +
...ynamic-form-control-container.component.ts | 26 +-
.../ds-dynamic-type-bind-relation.service.ts | 222 ++++++++++++++++++
.../dynamic-form-array.component.html | 12 +-
.../dynamic-form-array.component.ts | 3 +
.../models/date-picker/date-picker.model.ts | 37 +++
.../models/ds-dynamic-input.model.ts | 18 +-
.../models/ds-dynamic-row-array-model.ts | 28 ++-
.../dynamic-form-group.component.html | 12 +-
.../dynamic-form-group.component.ts | 5 +-
.../form/builder/form-builder.service.ts | 157 ++++++++++++-
.../form/builder/models/form-field.model.ts | 6 +
.../form/builder/parsers/date-field-parser.ts | 6 +-
.../form/builder/parsers/field-parser.ts | 41 +++-
17 files changed, 585 insertions(+), 29 deletions(-)
create mode 100644 src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.ts
diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts
index e9e242dbc0..71c3230a38 100644
--- a/src/app/core/core.module.ts
+++ b/src/app/core/core.module.ts
@@ -137,6 +137,7 @@ import { SiteAdministratorGuard } from './data/feature-authorization/feature-aut
import { Registration } from './shared/registration.model';
import { MetadataSchemaDataService } from './data/metadata-schema-data.service';
import { MetadataFieldDataService } from './data/metadata-field-data.service';
+import { DsDynamicTypeBindRelationService } from '../shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service';
import { TokenResponseParsingService } from './auth/token-response-parsing.service';
import { SubmissionCcLicenseDataService } from './submission/submission-cc-license-data.service';
import { SubmissionCcLicence } from './submission/models/submission-cc-license.model';
@@ -250,6 +251,7 @@ const PROVIDERS = [
ClaimedTaskDataService,
PoolTaskDataService,
BitstreamDataService,
+ DsDynamicTypeBindRelationService,
EntityTypeService,
ContentSourceResponseParsingService,
ItemTemplateDataService,
diff --git a/src/app/shared/empty.util.ts b/src/app/shared/empty.util.ts
index d79c520fda..355314550a 100644
--- a/src/app/shared/empty.util.ts
+++ b/src/app/shared/empty.util.ts
@@ -177,3 +177,29 @@ export const isNotEmptyOperator = () =>
export const ensureArrayHasValue = () =>
(source: Observable): Observable =>
source.pipe(map((arr: T[]): T[] => Array.isArray(arr) ? arr : []));
+
+/**
+ * Verifies that a object keys are all empty or not.
+ * isObjectEmpty(); // true
+ * isObjectEmpty(null); // true
+ * isObjectEmpty(undefined); // true
+ * isObjectEmpty(''); // true
+ * isObjectEmpty([]); // true
+ * isObjectEmpty({}); // true
+ * isObjectEmpty({name: null}); // true
+ * isObjectEmpty({ name: 'Adam Hawkins', surname : null}); // false
+ */
+export function isObjectEmpty(obj?: any): boolean {
+
+ if (typeof(obj) !== 'object') {
+ return true;
+ }
+
+ for (const key in obj) {
+ if (obj.hasOwnProperty(key) && isNotEmpty(obj[key])) {
+ return false;
+ }
+ }
+ return true;
+}
+
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html
index 55e354ea7a..7eef1d8655 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html
@@ -1,4 +1,5 @@
-
+
0)}">
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
index b67e6f9e46..785b0958d5 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
@@ -65,6 +65,7 @@ import { DsDynamicFormArrayComponent } from './models/array-group/dynamic-form-a
import { DsDynamicFormGroupComponent } from './models/form-group/dynamic-form-group.component';
import { DsDynamicRelationGroupComponent } from './models/relation-group/dynamic-relation-group.components';
import { DsDatePickerInlineComponent } from './models/date-picker-inline/dynamic-date-picker-inline.component';
+import { DsDynamicTypeBindRelationService } from './ds-dynamic-type-bind-relation.service';
import { RelationshipService } from '../../../../core/data/relationship.service';
import { SelectableListService } from '../../../object-list/selectable-list/selectable-list.service';
import { ItemDataService } from '../../../../core/data/item-data.service';
@@ -79,6 +80,13 @@ import { SubmissionService } from '../../../../submission/submission.service';
import { FormBuilderService } from '../form-builder.service';
import { NgxMaskModule } from 'ngx-mask';
+function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService {
+ return jasmine.createSpyObj('DsDynamicTypeBindRelationService', {
+ getRelatedFormModel: jasmine.createSpy('getRelatedFormModel'),
+ isFormControlToBeHidden: jasmine.createSpy('isFormControlToBeHidden')
+ });
+}
+
describe('DsDynamicFormControlContainerComponent test suite', () => {
const vocabularyOptions: VocabularyOptions = {
@@ -142,6 +150,7 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
submissionId: '1234',
id: 'relationGroup',
formConfiguration: [],
+ isInlineGroup: false,
mandatoryField: '',
name: 'relationGroup',
relationFields: [],
@@ -200,6 +209,7 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
providers: [
DsDynamicFormControlContainerComponent,
DynamicFormService,
+ { provide: DsDynamicTypeBindRelationService, useValue: getMockDsDynamicTypeBindRelationService() },
{ provide: RelationshipService, useValue: {} },
{ provide: SelectableListService, useValue: {} },
{ provide: ItemDataService, useValue: {} },
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts
index c3359fd65a..8d27a3bace 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts
@@ -76,11 +76,13 @@ import { DsDynamicLookupComponent } from './models/lookup/dynamic-lookup.compone
import { DsDynamicFormGroupComponent } from './models/form-group/dynamic-form-group.component';
import { DsDynamicFormArrayComponent } from './models/array-group/dynamic-form-array.component';
import { DsDynamicRelationGroupComponent } from './models/relation-group/dynamic-relation-group.components';
+import { DynamicRelationGroupModel } from './models/relation-group/dynamic-relation-group.model';
import { DsDatePickerInlineComponent } from './models/date-picker-inline/dynamic-date-picker-inline.component';
import { DYNAMIC_FORM_CONTROL_TYPE_CUSTOM_SWITCH } from './models/custom-switch/custom-switch.model';
import { CustomSwitchComponent } from './models/custom-switch/custom-switch.component';
import { find, map, startWith, switchMap, take } from 'rxjs/operators';
import { combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs';
+import { DsDynamicTypeBindRelationService } from './ds-dynamic-type-bind-relation.service';
import { SearchResult } from '../../../search/models/search-result.model';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
@@ -194,8 +196,10 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
@ContentChildren(DynamicTemplateDirective) contentTemplateList: QueryList
;
// eslint-disable-next-line @angular-eslint/no-input-rename
@Input('templates') inputTemplateList: QueryList;
-
+ @Input() hasMetadataModel: any;
@Input() formId: string;
+ @Input() formGroup: FormGroup;
+ @Input() formModel: DynamicFormControlModel[];
@Input() asBootstrapFormGroup = false;
@Input() bindId = true;
@Input() context: any | null = null;
@@ -237,6 +241,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
protected dynamicFormComponentService: DynamicFormComponentService,
protected layoutService: DynamicFormLayoutService,
protected validationService: DynamicFormValidationService,
+ protected typeBindRelationService: DsDynamicTypeBindRelationService,
protected translateService: TranslateService,
protected relationService: DynamicFormRelationService,
private modalService: NgbModal,
@@ -343,6 +348,9 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
if (this.model && this.model.placeholder) {
this.model.placeholder = this.translateService.instant(this.model.placeholder);
}
+ if (this.model.typeBindRelations && this.model.typeBindRelations.length > 0) {
+ this.subscriptions.push(...this.typeBindRelationService.subscribeRelations(this.model, this.control));
+ }
}
}
@@ -357,6 +365,22 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
this.showErrorMessagesPreviousStage = this.showErrorMessages;
}
+ protected createFormControlComponent(): void {
+ super.createFormControlComponent();
+ if (this.componentType !== null) {
+ let index;
+
+ if (this.context && this.context instanceof DynamicFormArrayGroupModel) {
+ index = this.context.index;
+ }
+ const instance = this.dynamicFormComponentService.getFormControlRef(this.model, index);
+ if (instance) {
+ (instance as any).formModel = this.formModel;
+ (instance as any).formGroup = this.formGroup;
+ }
+ }
+ }
+
/**
* Since Form Control Components created dynamically have 'OnPush' change detection strategy,
* changes are not propagated. So use this method to force an update
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
new file mode 100644
index 0000000000..3ec6909c07
--- /dev/null
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.ts
@@ -0,0 +1,222 @@
+import { Inject, Injectable, Injector, Optional } from '@angular/core';
+import { FormControl } from '@angular/forms';
+
+import { Subscription } from 'rxjs';
+import { startWith } from 'rxjs/operators';
+
+import {
+ AND_OPERATOR,
+ DYNAMIC_MATCHERS,
+ DynamicFormControlCondition,
+ DynamicFormControlMatcher,
+ DynamicFormControlModel,
+ DynamicFormControlRelation,
+ DynamicFormRelationService,
+ OR_OPERATOR
+} from '@ng-dynamic-forms/core';
+
+import { isNotUndefined, isUndefined } from '../../../empty.util';
+import { FormBuilderService } from '../form-builder.service';
+import { FormFieldMetadataValueObject } from '../models/form-field-metadata-value.model';
+import { DYNAMIC_FORM_CONTROL_TYPE_RELATION_GROUP } from './ds-dynamic-form-constants';
+
+/**
+ * Service to manage type binding for submission input fields
+ * Any form component with the typeBindRelations DynamicFormControlRelation property can be controlled this way
+ */
+@Injectable()
+export class DsDynamicTypeBindRelationService {
+
+ constructor(@Optional() @Inject(DYNAMIC_MATCHERS) private dynamicMatchers: DynamicFormControlMatcher[],
+ protected dynamicFormRelationService: DynamicFormRelationService,
+ protected formBuilderService: FormBuilderService,
+ protected injector: Injector) {
+
+ }
+
+ /**
+ * Return the string value of the type bind model
+ * @param bindModelValue
+ * @private
+ */
+ private static getTypeBindValue(bindModelValue: string | FormFieldMetadataValueObject): string {
+ let value;
+ if (isUndefined(bindModelValue) || typeof bindModelValue === 'string') {
+ value = bindModelValue;
+ } else if (bindModelValue.hasAuthority()) {
+ value = bindModelValue.authority;
+ } else {
+ value = bindModelValue.value;
+ }
+
+ return value;
+ }
+
+ /**
+ * Get models for this bind type
+ * @param model
+ */
+ public getRelatedFormModel(model: DynamicFormControlModel): DynamicFormControlModel[] {
+
+ const models: DynamicFormControlModel[] = [];
+
+ (model as any).typeBindRelations.forEach((relGroup) => relGroup.when.forEach((rel) => {
+
+ if (model.id === rel.id) {
+ throw new Error(`FormControl ${model.id} cannot depend on itself`);
+ }
+
+ const bindModel: DynamicFormControlModel = this.formBuilderService.getTypeBindModel();
+
+ if (model && !models.some((modelElement) => modelElement === bindModel)) {
+ models.push(bindModel);
+ }
+ }));
+
+ return models;
+ }
+
+ /**
+ * Return true if the type bind relation (eg. {MATCH_VISIBLE, OR, ['book', 'book part']}) matches the value in
+ * matcher.match (or matcher.opposingMatch? not sure what that is), which in this case would be the current dc.type
+ * of the submission item
+ * @param relation type bind relation (eg. {MATCH_VISIBLE, OR, ['book', 'book part']})
+ * @param matcher contains 'match' value and an onChange() event listener
+ */
+ public matchesCondition(relation: DynamicFormControlRelation, matcher: DynamicFormControlMatcher): boolean {
+
+ // Default to OR for operator (OR is explicitly set in field-parser.ts anyway)
+ const operator = relation.operator || OR_OPERATOR;
+
+
+ return relation.when.reduce((hasAlreadyMatched: boolean, condition: DynamicFormControlCondition, index: number) => {
+ // Get the DynamicFormControlModel (typeBindModel) from the form builder service, set in the form builder
+ // in the form model at init time in formBuilderService.modelFromConfiguration (called by other form components
+ // like relation group component and submission section form component).
+ // This model (DynamicRelationGroupModel) contains eg. mandatory field, formConfiguration, relationFields,
+ // submission scope, form/section type and other high level properties
+ const bindModel: any = this.formBuilderService.getTypeBindModel();
+
+ let values: string[];
+ let bindModelValue = bindModel.value;
+
+ // If the form type is RELATION, map values to the mandatory field for the model? Don't totally understand
+ // what is going on here
+ if (bindModel.type === DYNAMIC_FORM_CONTROL_TYPE_RELATION_GROUP) {
+ bindModelValue = bindModel.value.map((entry) => entry[bindModel.mandatoryField]);
+ }
+ // If we have an array of values, map the bindModelValue[] back to values[], looking up
+ // the type bind value for each in the static method here (this just handles cases where authority should
+ // be used, or where the entry doesn't have .value but is a string itself, etc)
+ // If values isn't an array, make it a single element array with the looked-up type bind value.
+ if (Array.isArray(bindModelValue)) {
+ values = [...bindModelValue.map((entry) => DsDynamicTypeBindRelationService.getTypeBindValue(entry))];
+ } else {
+ values = [DsDynamicTypeBindRelationService.getTypeBindValue(bindModelValue)];
+ }
+
+ // If bind model evaluates to 'true' (is not undefined, is not null, is not false etc,
+ // AND the relation match (type bind) is equal to the matcher match (item publication type), then the return
+ // value is initialised as false. I'm not sure why the negation is used here!
+ // Perhaps as a fail-safe for a bad mind model but an exact match of the strings in relation and matcher
+ // passed to this method.
+ let returnValue = (!(bindModel && relation.match === matcher.match));
+
+ // Iterate the type bind values parsed and mapped from our form/relation group model
+ for (const value of values) {
+ if (bindModel && relation.match === matcher.match) {
+ // If we're not at the first array element, and we're using the AND operator, and we have not
+ // yet matched anything, return false. This is just a kind of short-hand put in here for some kind of
+ // optimisation, I guess, since the AND requires all values to match, and if we're on index > 0 but haven't
+ // matched then we've already failed. But surely it's simpler and just as optimal to break on the first
+ // non-match if using the AND operator?!
+ // In the case of default type bind usage, we always use OR anyway.
+ if (index > 0 && operator === AND_OPERATOR && !hasAlreadyMatched) {
+ return false;
+ }
+ // If we're not at the first array element, and we're using the OR operator (almost always the case)
+ // and we've already matched then there is no need to continue, just return true.
+ if (index > 0 && operator === OR_OPERATOR && hasAlreadyMatched) {
+ return true;
+ }
+
+ // Do the actual match. Does condition.value (the item publication type) match the field model
+ // type bind currently being inspected?
+ returnValue = condition.value === value;
+
+ // If return value is already true, break.
+ if (returnValue) {
+ break;
+ }
+ }
+
+ // Here we have tests using 'opposingMatch' which I'm not certain about yet
+ // It looks like a negation of sorts? Or a 'not equals' comparison used in combination I think?
+ if (bindModel && relation.match === matcher.opposingMatch) {
+ // If we're not at the first element, using AND, and already matched, just return true here
+ if (index > 0 && operator === AND_OPERATOR && hasAlreadyMatched) {
+ return true;
+ }
+
+ // If we're not at the first element, using OR, and we have NOT already matched, return false
+ if (index > 0 && operator === OR_OPERATOR && !hasAlreadyMatched) {
+ return false;
+ }
+
+ // Negated comparison
+ returnValue = !(condition.value === value);
+
+ // Break if already false
+ if (!returnValue) {
+ break;
+ }
+ }
+ }
+ return returnValue;
+ }, false);
+ }
+
+ /**
+ * Return an array of subscriptions to a calling component
+ * @param model
+ * @param control
+ */
+ subscribeRelations(model: DynamicFormControlModel, control: FormControl): Subscription[] {
+
+ const relatedModels = this.getRelatedFormModel(model);
+ const subscriptions: Subscription[] = [];
+
+ Object.values(relatedModels).forEach((relatedModel: any) => {
+
+ if (isNotUndefined(relatedModel)) {
+ const initValue = (isUndefined(relatedModel.value) || typeof relatedModel.value === 'string') ? relatedModel.value :
+ (Array.isArray(relatedModel.value) ? relatedModel.value : relatedModel.value.value);
+
+ const valueChanges = relatedModel.valueChanges.pipe(
+ startWith(initValue)
+ );
+
+ // Build up the subscriptions to watch for changes;
+ // I still don't fully understand what is happening here, or the triggers in various form usage that
+ // cause which / what to fire change events, why the matcher has onChange() instead of a field value or
+ // form model, etc.
+ subscriptions.push(valueChanges.subscribe(() => {
+ // Iterate each matcher
+ this.dynamicMatchers.forEach((matcher) => {
+
+ // Find the relation
+ const relation = this.dynamicFormRelationService.findRelationByMatcher((model as any).typeBindRelations, matcher);
+
+ // If the relation is defined, get matchesCondition result and pass it to the onChange event listener
+ if (relation !== undefined) {
+ const hasMatch = this.matchesCondition(relation, matcher);
+ matcher.onChange(hasMatch, model, control, this.injector);
+ }
+ });
+ }));
+ }
+ });
+
+ return subscriptions;
+ }
+}
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.html
index bc41ade088..29df7a34c4 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.html
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.html
@@ -1,6 +1,7 @@
@@ -13,15 +14,17 @@
cdkDrag
cdkDragHandle
[cdkDragDisabled]="dragDisabled"
- [cdkDragPreviewClass]="'ds-submission-reorder-dragging'">
+ [cdkDragPreviewClass]="'ds-submission-reorder-dragging'"
+ [class.grey-background]="model.isInlineGroupArray">
-
-
-
-
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.ts
index 921b159718..01bba74cc8 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.ts
@@ -6,6 +6,7 @@ import {
DynamicFormControlCustomEvent,
DynamicFormControlEvent,
DynamicFormControlLayout,
+ DynamicFormControlModel,
DynamicFormLayout,
DynamicFormLayoutService,
DynamicFormValidationService,
@@ -22,6 +23,8 @@ import { DynamicRowArrayModel } from '../ds-dynamic-row-array-model';
})
export class DsDynamicFormArrayComponent extends DynamicFormArrayComponent {
+ @Input() bindId = true;
+ @Input() formModel: DynamicFormControlModel[];
@Input() formLayout: DynamicFormLayout;
@Input() group: FormGroup;
@Input() layout: DynamicFormControlLayout;
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
index 1c053ffc80..94b66b288a 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
@@ -2,20 +2,35 @@ import {
DynamicDateControlModel,
DynamicDatePickerModelConfig,
DynamicFormControlLayout,
+ DynamicFormControlModel,
+ DynamicFormControlRelation,
serializable
} from '@ng-dynamic-forms/core';
+import {BehaviorSubject, Subject} from 'rxjs';
+import {isEmpty, isNotEmpty, isNotUndefined} from '../../../../../empty.util';
+import {MetadataValue} from '../../../../../../core/shared/metadata.models';
export const DYNAMIC_FORM_CONTROL_TYPE_DSDATEPICKER = 'DATE';
export interface DynamicDsDateControlModelConfig extends DynamicDatePickerModelConfig {
legend?: string;
+ typeBindRelations?: DynamicFormControlRelation[];
+ securityLevel?: number;
+ securityConfigLevel?: number[];
+ toggleSecurityVisibility?: boolean;
}
/**
* Dynamic Date Picker Model class
*/
export class DynamicDsDatePickerModel extends DynamicDateControlModel {
+ @serializable() hiddenUpdates: Subject
;
+ @serializable() typeBindRelations: DynamicFormControlRelation[];
@serializable() readonly type: string = DYNAMIC_FORM_CONTROL_TYPE_DSDATEPICKER;
+ @serializable() metadataValue: MetadataValue;
+ @serializable() securityLevel?: number;
+ @serializable() securityConfigLevel?: number[];
+ @serializable() toggleSecurityVisibility = true;
malformedDate: boolean;
legend: string;
hasLanguages = false;
@@ -25,6 +40,28 @@ export class DynamicDsDatePickerModel extends DynamicDateControlModel {
super(config, layout);
this.malformedDate = false;
this.legend = config.legend;
+ this.metadataValue = (config as any).metadataValue;
+ this.typeBindRelations = config.typeBindRelations ? config.typeBindRelations : [];
+ this.hiddenUpdates = new BehaviorSubject(this.hidden);
+ this.hiddenUpdates.subscribe((hidden: boolean) => {
+ this.hidden = hidden;
+ const parentModel = this.getRootParent(this);
+ if (parentModel && isNotUndefined(parentModel.hidden)) {
+ parentModel.hidden = hidden;
+ }
+ });
+ }
+
+ private getRootParent(model: any): DynamicFormControlModel {
+ if (isEmpty(model) || isEmpty(model.parent)) {
+ return model;
+ } else {
+ return this.getRootParent(model.parent);
+ }
+ }
+
+ get hasSecurityLevel(): boolean {
+ return isNotEmpty(this.securityLevel);
}
}
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model.ts
index 290e29dc65..a9adb9a8e9 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model.ts
@@ -1,14 +1,15 @@
import {
- DynamicFormControlLayout,
+ DynamicFormControlLayout, DynamicFormControlModel,
+ DynamicFormControlRelation,
DynamicInputModel,
DynamicInputModelConfig,
serializable
} from '@ng-dynamic-forms/core';
-import { Subject } from 'rxjs';
+import {BehaviorSubject, Subject} from 'rxjs';
import { LanguageCode } from '../../models/form-field-language-value.model';
import { VocabularyOptions } from '../../../../../core/submission/vocabularies/models/vocabulary-options.model';
-import { hasValue } from '../../../../empty.util';
+import {hasValue, isEmpty, isNotUndefined} from '../../../../empty.util';
import { FormFieldMetadataValueObject } from '../../models/form-field-metadata-value.model';
import { RelationshipOptions } from '../../models/relationship-options.model';
@@ -18,12 +19,14 @@ export interface DsDynamicInputModelConfig extends DynamicInputModelConfig {
language?: string;
place?: number;
value?: any;
+ typeBindRelations?: DynamicFormControlRelation[];
relationship?: RelationshipOptions;
repeatable: boolean;
metadataFields: string[];
submissionId: string;
hasSelectableMetadata: boolean;
metadataValue?: FormFieldMetadataValueObject;
+ isModelOfInnerForm?: boolean;
}
@@ -33,12 +36,17 @@ export class DsDynamicInputModel extends DynamicInputModel {
@serializable() private _languageCodes: LanguageCode[];
@serializable() private _language: string;
@serializable() languageUpdates: Subject;
+ @serializable() place: number;
+ @serializable() typeBindRelations: DynamicFormControlRelation[];
+ @serializable() typeBindHidden = false;
@serializable() relationship?: RelationshipOptions;
@serializable() repeatable?: boolean;
@serializable() metadataFields: string[];
@serializable() submissionId: string;
@serializable() hasSelectableMetadata: boolean;
@serializable() metadataValue: FormFieldMetadataValueObject;
+ @serializable() isModelOfInnerForm: boolean;
+
constructor(config: DsDynamicInputModelConfig, layout?: DynamicFormControlLayout) {
super(config, layout);
@@ -51,6 +59,8 @@ export class DsDynamicInputModel extends DynamicInputModel {
this.submissionId = config.submissionId;
this.hasSelectableMetadata = config.hasSelectableMetadata;
this.metadataValue = config.metadataValue;
+ this.place = config.place;
+ this.isModelOfInnerForm = (hasValue(config.isModelOfInnerForm) ? config.isModelOfInnerForm : false);
this.language = config.language;
if (!this.language) {
@@ -71,6 +81,8 @@ export class DsDynamicInputModel extends DynamicInputModel {
this.language = lang;
});
+ this.typeBindRelations = config.typeBindRelations ? config.typeBindRelations : [];
+
this.vocabularyOptions = config.vocabularyOptions;
}
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts
index d0b07de885..e4b18a4feb 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts
@@ -1,5 +1,12 @@
-import { DynamicFormArrayModel, DynamicFormArrayModelConfig, DynamicFormControlLayout, serializable } from '@ng-dynamic-forms/core';
+import {
+ DynamicFormArrayModel,
+ DynamicFormArrayModelConfig,
+ DynamicFormControlLayout,
+ DynamicFormControlRelation,
+ serializable
+} from '@ng-dynamic-forms/core';
import { RelationshipOptions } from '../../models/relationship-options.model';
+import { isNotUndefined } from '../../../../empty.util';
export interface DynamicRowArrayModelConfig extends DynamicFormArrayModelConfig {
notRepeatable: boolean;
@@ -10,6 +17,9 @@ export interface DynamicRowArrayModelConfig extends DynamicFormArrayModelConfig
metadataFields: string[];
hasSelectableMetadata: boolean;
isDraggable: boolean;
+ showButtons: boolean;
+ typeBindRelations?: DynamicFormControlRelation[];
+ isInlineGroupArray?: boolean;
}
export class DynamicRowArrayModel extends DynamicFormArrayModel {
@@ -21,17 +31,29 @@ export class DynamicRowArrayModel extends DynamicFormArrayModel {
@serializable() metadataFields: string[];
@serializable() hasSelectableMetadata: boolean;
@serializable() isDraggable: boolean;
+ @serializable() showButtons = true;
+ @serializable() typeBindRelations: DynamicFormControlRelation[];
isRowArray = true;
+ isInlineGroupArray = false;
constructor(config: DynamicRowArrayModelConfig, layout?: DynamicFormControlLayout) {
super(config, layout);
- this.notRepeatable = config.notRepeatable;
- this.required = config.required;
+ if (isNotUndefined(config.notRepeatable)) {
+ this.notRepeatable = config.notRepeatable;
+ }
+ if (isNotUndefined(config.required)) {
+ this.required = config.required;
+ }
+ if (isNotUndefined(config.showButtons)) {
+ this.showButtons = config.showButtons;
+ }
this.submissionId = config.submissionId;
this.relationshipConfig = config.relationshipConfig;
this.metadataKey = config.metadataKey;
this.metadataFields = config.metadataFields;
this.hasSelectableMetadata = config.hasSelectableMetadata;
this.isDraggable = config.isDraggable;
+ this.typeBindRelations = config.typeBindRelations ? config.typeBindRelations : [];
+ this.isInlineGroupArray = config.isInlineGroupArray ? config.isInlineGroupArray : false;
}
}
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/form-group/dynamic-form-group.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/models/form-group/dynamic-form-group.component.html
index 843ed95530..933590b459 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/form-group/dynamic-form-group.component.html
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/form-group/dynamic-form-group.component.html
@@ -1,8 +1,13 @@
+
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/form-group/dynamic-form-group.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/form-group/dynamic-form-group.component.ts
index 789d5eb87c..9d8d73eab5 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/form-group/dynamic-form-group.component.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/form-group/dynamic-form-group.component.ts
@@ -5,7 +5,9 @@ import {
DynamicFormControlCustomEvent,
DynamicFormControlEvent,
DynamicFormControlLayout,
- DynamicFormGroupModel, DynamicFormLayout,
+ DynamicFormControlModel,
+ DynamicFormGroupModel,
+ DynamicFormLayout,
DynamicFormLayoutService,
DynamicFormValidationService,
DynamicTemplateDirective
@@ -18,6 +20,7 @@ import {
})
export class DsDynamicFormGroupComponent extends DynamicFormControlComponent {
+ @Input() formModel: DynamicFormControlModel[];
@Input() formLayout: DynamicFormLayout;
@Input() group: FormGroup;
@Input() layout: DynamicFormControlLayout;
diff --git a/src/app/shared/form/builder/form-builder.service.ts b/src/app/shared/form/builder/form-builder.service.ts
index 85d70f20dc..33703abf94 100644
--- a/src/app/shared/form/builder/form-builder.service.ts
+++ b/src/app/shared/form/builder/form-builder.service.ts
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
-import { AbstractControl, FormGroup } from '@angular/forms';
+import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import {
DYNAMIC_FORM_CONTROL_TYPE_ARRAY,
@@ -7,6 +7,7 @@ import {
DYNAMIC_FORM_CONTROL_TYPE_GROUP,
DYNAMIC_FORM_CONTROL_TYPE_INPUT,
DYNAMIC_FORM_CONTROL_TYPE_RADIO_GROUP,
+ DynamicFormArrayGroupModel,
DynamicFormArrayModel,
DynamicFormComponentService,
DynamicFormControlEvent,
@@ -19,7 +20,7 @@ import {
} from '@ng-dynamic-forms/core';
import { isObject, isString, mergeWith } from 'lodash';
-import { hasValue, isEmpty, isNotEmpty, isNotNull, isNotUndefined, isNull } from '../../empty.util';
+import { hasValue, isEmpty, isNotEmpty, isNotNull, isNotUndefined, isNull, isObjectEmpty } from '../../empty.util';
import { DynamicQualdropModel } from './ds-dynamic-form-ui/models/ds-dynamic-qualdrop.model';
import { SubmissionFormsModel } from '../../../core/config/models/config-submission-forms.model';
import { DYNAMIC_FORM_CONTROL_TYPE_TAG } from './ds-dynamic-form-ui/models/tag/dynamic-tag.model';
@@ -36,12 +37,43 @@ import { VIRTUAL_METADATA_PREFIX } from '../../../core/shared/metadata.models';
@Injectable()
export class FormBuilderService extends DynamicFormService {
+ private typeBindModel: DynamicFormControlModel;
+
+ /**
+ * This map contains the active forms model
+ */
+ private formModels: Map;
+
+ /**
+ * This map contains the active forms control groups
+ */
+ private formGroups: Map;
+
constructor(
componentService: DynamicFormComponentService,
validationService: DynamicFormValidationService,
protected rowParser: RowParser
) {
super(componentService, validationService);
+ this.formModels = new Map();
+ this.formGroups = new Map();
+ }
+
+ createDynamicFormControlEvent(control: FormControl, group: FormGroup, model: DynamicFormControlModel, type: string): DynamicFormControlEvent {
+ const $event = {
+ value: (model as any).value,
+ autoSave: false
+ };
+ const context: DynamicFormArrayGroupModel = (model?.parent instanceof DynamicFormArrayGroupModel) ? model?.parent : null;
+ return {$event, context, control: control, group: group, model: model, type};
+ }
+
+ getTypeBindModel() {
+ return this.typeBindModel;
+ }
+
+ setTypeBindModel(model: DynamicFormControlModel) {
+ this.typeBindModel = model;
}
findById(id: string, groupModel: DynamicFormControlModel[], arrayIndex = null): DynamicFormControlModel | null {
@@ -223,10 +255,11 @@ export class FormBuilderService extends DynamicFormService {
return result;
}
- modelFromConfiguration(submissionId: string, json: string | SubmissionFormsModel, scopeUUID: string, sectionData: any = {}, submissionScope?: string, readOnly = false): DynamicFormControlModel[] | never {
- let rows: DynamicFormControlModel[] = [];
- const rawData = typeof json === 'string' ? JSON.parse(json, parseReviver) : json;
-
+ modelFromConfiguration(submissionId: string, json: string | SubmissionFormsModel, scopeUUID: string, sectionData: any = {},
+ submissionScope?: string, readOnly = false, typeBindModel = null,
+ isInnerForm = false, securityConfig: any = null): DynamicFormControlModel[] | never {
+ let rows: DynamicFormControlModel[] = [];
+ const rawData = typeof json === 'string' ? JSON.parse(json, parseReviver) : json;
if (rawData.rows && !isEmpty(rawData.rows)) {
rawData.rows.forEach((currentRow) => {
const rowParsed = this.rowParser.parse(submissionId, currentRow, scopeUUID, sectionData, submissionScope, readOnly);
@@ -240,6 +273,13 @@ export class FormBuilderService extends DynamicFormService {
});
}
+ if (isNull(typeBindModel)) {
+ typeBindModel = this.findById('dc_type', rows);
+ }
+
+ if (typeBindModel !== null) {
+ this.setTypeBindModel(typeBindModel);
+ }
return rows;
}
@@ -309,6 +349,10 @@ export class FormBuilderService extends DynamicFormService {
return isNotEmpty(fieldModel) ? formGroup.get(this.getPath(fieldModel)) : null;
}
+ getFormControlByModel(formGroup: FormGroup, fieldModel: DynamicFormControlModel): AbstractControl {
+ return isNotEmpty(fieldModel) ? formGroup.get(this.getPath(fieldModel)) : null;
+ }
+
/**
* Note (discovered while debugging) this is not the ID as used in the form,
* but the first part of the path needed in a patch operation:
@@ -328,6 +372,82 @@ export class FormBuilderService extends DynamicFormService {
return (tempModel.id !== tempModel.name) ? tempModel.name : tempModel.id;
}
+ /**
+ * Add new form model to formModels map
+ * @param id id of model
+ * @param model model
+ */
+ addFormModel(id: string, model: DynamicFormControlModel[]): void {
+ this.formModels.set(id, model);
+ }
+
+ /**
+ * If present, remove form model from formModels map
+ * @param id id of model
+ */
+ removeFormModel(id: string): void {
+ if (this.formModels.has(id)) {
+ this.formModels.delete(id);
+ }
+ }
+
+ /**
+ * Add new form model to formModels map
+ * @param id id of model
+ * @param formGroup FormGroup
+ */
+ addFormGroups(id: string, formGroup: FormGroup): void {
+ this.formGroups.set(id, formGroup);
+ }
+
+ /**
+ * If present, remove form model from formModels map
+ * @param id id of model
+ */
+ removeFormGroup(id: string): void {
+ if (this.formGroups.has(id)) {
+ this.formGroups.delete(id);
+ }
+ }
+
+ /**
+ * This method searches a field in all forms instantiated
+ * by form.component and, if found, it updates its value
+ *
+ * @param fieldId id of field to update
+ * @param value new value to set
+ * @return the model updated if found
+ */
+ updateModelValue(fieldId: string, value: FormFieldMetadataValueObject): DynamicFormControlModel {
+ let returnModel = null;
+ this.formModels.forEach((models, formId) => {
+ const fieldModel: any = this.findById(fieldId, models);
+ if (hasValue(fieldModel)) {
+ if (isNotEmpty(value)) {
+ if (fieldModel.repeatable && isNotEmpty(fieldModel.value)) {
+ // if model is repeatable and has already a value add a new field instead of replacing it
+ const formGroup = this.formGroups.get(formId);
+ const arrayContext = fieldModel.parent?.context;
+ if (isNotEmpty(formGroup) && isNotEmpty(arrayContext)) {
+ const formArrayControl = this.getFormControlByModel(formGroup, arrayContext) as FormArray;
+ const index = arrayContext?.groups?.length;
+ this.insertFormArrayGroup(index, formArrayControl, arrayContext);
+ const newAddedModel: any = this.findById(fieldId, models, index);
+ this.detectChanges();
+ newAddedModel.value = value;
+ returnModel = newAddedModel;
+ }
+ } else {
+ fieldModel.value = value;
+ returnModel = fieldModel;
+ }
+ }
+ return;
+ }
+ });
+ return returnModel;
+ }
+
/**
* Calculate the metadata list related to the event.
* @param event
@@ -400,4 +520,29 @@ export class FormBuilderService extends DynamicFormService {
return Object.keys(result);
}
+ /**
+ * Add new formbuilder in forma array by copying current formBuilder index
+ * @param index index of formBuilder selected to be copied
+ * @param formArray formArray of the inline group forms
+ * @param formArrayModel formArrayModel model of forms that will be created
+ */
+ copyFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel) {
+
+ const groupModel = formArrayModel.insertGroup(index);
+ const previousGroup = formArray.controls[index] as FormGroup;
+ const newGroup = this.createFormGroup(groupModel.group, null, groupModel);
+ const previousKey = Object.keys(previousGroup.getRawValue())[0];
+ const newKey = Object.keys(newGroup.getRawValue())[0];
+
+ if (!isObjectEmpty(previousGroup.getRawValue()[previousKey])) {
+ newGroup.get(newKey).setValue(previousGroup.getRawValue()[previousKey]);
+ }
+
+ formArray.insert(index, newGroup);
+
+ return newGroup;
+ }
+
+
+
}
diff --git a/src/app/shared/form/builder/models/form-field.model.ts b/src/app/shared/form/builder/models/form-field.model.ts
index 95ee980aeb..be3150bae3 100644
--- a/src/app/shared/form/builder/models/form-field.model.ts
+++ b/src/app/shared/form/builder/models/form-field.model.ts
@@ -113,6 +113,12 @@ export class FormFieldModel {
@autoserialize
style: string;
+ /**
+ * Containing types to bind for this field
+ */
+ @autoserialize
+ typeBind: string[];
+
/**
* Containing the value for this metadata field
*/
diff --git a/src/app/shared/form/builder/parsers/date-field-parser.ts b/src/app/shared/form/builder/parsers/date-field-parser.ts
index aef0219579..c67c2c7695 100644
--- a/src/app/shared/form/builder/parsers/date-field-parser.ts
+++ b/src/app/shared/form/builder/parsers/date-field-parser.ts
@@ -1,7 +1,7 @@
import { FieldParser } from './field-parser';
import {
- DynamicDsDateControlModelConfig,
- DynamicDsDatePickerModel
+ DynamicDsDatePickerModel,
+ DynamicDsDateControlModelConfig
} from '../ds-dynamic-form-ui/models/date-picker/date-picker.model';
import { isNotEmpty } from '../../../empty.util';
import { DS_DATE_PICKER_SEPARATOR } from '../ds-dynamic-form-ui/models/date-picker/date-picker.component';
@@ -13,7 +13,7 @@ export class DateFieldParser extends FieldParser {
let malformedDate = false;
const inputDateModelConfig: DynamicDsDateControlModelConfig = this.initModel(null, false, true);
inputDateModelConfig.legend = this.configData.label;
-
+ inputDateModelConfig.disabled = inputDateModelConfig.readOnly;
inputDateModelConfig.toggleIcon = 'fas fa-calendar';
this.setValues(inputDateModelConfig as any, fieldValue);
// Init Data and validity check
diff --git a/src/app/shared/form/builder/parsers/field-parser.ts b/src/app/shared/form/builder/parsers/field-parser.ts
index da304ca267..838816ebb1 100644
--- a/src/app/shared/form/builder/parsers/field-parser.ts
+++ b/src/app/shared/form/builder/parsers/field-parser.ts
@@ -1,7 +1,7 @@
import { Inject, InjectionToken } from '@angular/core';
import { uniqueId } from 'lodash';
-import { DynamicFormControlLayout } from '@ng-dynamic-forms/core';
+import {DynamicFormControlLayout, DynamicFormControlRelation, MATCH_VISIBLE, OR_OPERATOR} from '@ng-dynamic-forms/core';
import { hasValue, isNotEmpty, isNotNull, isNotUndefined } from '../../../empty.util';
import { FormFieldModel } from '../models/form-field.model';
@@ -67,6 +67,7 @@ export abstract class FieldParser {
metadataFields: this.getAllFieldIds(),
hasSelectableMetadata: isNotEmpty(this.configData.selectableMetadata),
isDraggable,
+ typeBindRelations: isNotEmpty(this.configData.typeBind) ? this.getTypeBindRelations(this.configData.typeBind) : null,
groupFactory: () => {
let model;
if ((arrayCounter === 0)) {
@@ -275,7 +276,7 @@ export abstract class FieldParser {
// Set label
this.setLabel(controlModel, label);
if (hint) {
- controlModel.hint = this.configData.hints;
+ controlModel.hint = this.configData.hints || ' ';
}
controlModel.placeholder = this.configData.label;
@@ -292,9 +293,45 @@ export abstract class FieldParser {
(controlModel as DsDynamicInputModel).languageCodes = this.configData.languageCodes;
}
+ // If typeBind is configured
+ if (isNotEmpty(this.configData.typeBind)) {
+ (controlModel as DsDynamicInputModel).typeBindRelations = this.getTypeBindRelations(this.configData.typeBind);
+ }
+
return controlModel;
}
+ /**
+ * Get the type bind values from the REST data for a specific field
+ * The return value is any[] in the method signature but in reality it's
+ * returning the 'relation' that'll be used for a dynamic matcher when filtering
+ * fields in type bind, made up of a 'match' outcome (make this field visible), an 'operator'
+ * (OR) and a 'when' condition (the bindValues array).
+ * @param configuredTypeBindValues array of types from the submission definition (CONFIG_DATA)
+ * @private
+ * @return DynamicFormControlRelation[] array with one relation in it, for type bind matching to show a field
+ */
+ private getTypeBindRelations(configuredTypeBindValues: string[]): DynamicFormControlRelation[] {
+ const bindValues = [];
+ configuredTypeBindValues.forEach((value) => {
+ bindValues.push({
+ id: 'dc_type',
+ value: value
+ });
+ });
+ // match: MATCH_VISIBLE means that if true, the field / component will be visible
+ // operator: OR means that all the values in the 'when' condition will be compared with OR, not AND
+ // when: the list of values to match against, in this case the list of strings from ...
+ // Example: Field [x] will be VISIBLE if dc_type = book OR dc_type = book_part
+ //
+ // The opposing match value will be the dc.type for the workspace item
+ return [{
+ match: MATCH_VISIBLE,
+ operator: OR_OPERATOR,
+ when: bindValues
+ }];
+ }
+
protected hasRegex() {
return hasValue(this.configData.input.regex);
}
From be7f21eb3225dba4eb5c6edec4fc096e05bd0ec7 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Thu, 17 Feb 2022 11:50:40 +1300
Subject: [PATCH 025/107] [TLC-254] Make the item type field configurable
(default dc.type)
---
config/config.example.yml | 5 +++++
src/app/shared/form/builder/form-builder.service.ts | 10 +++++++++-
src/app/shared/form/builder/parsers/field-parser.ts | 12 ++++++++++--
src/config/default-app-config.ts | 3 +++
src/config/submission-config.interface.ts | 5 +++++
src/environments/environment.test.ts | 3 +++
6 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/config/config.example.yml b/config/config.example.yml
index 771c7b1653..fb0b4fd589 100644
--- a/config/config.example.yml
+++ b/config/config.example.yml
@@ -77,6 +77,11 @@ submission:
# NOTE: after how many time (milliseconds) submission is saved automatically
# eg. timer: 5 * (1000 * 60); // 5 minutes
timer: 0
+ typeBind:
+ # NOTE: which field to use when matching to type-bind configuration,
+ # eg. dc.type, local.publicationType
+ # default: dc.type
+ field: dc.type
icons:
metadata:
# NOTE: example of configuration
diff --git a/src/app/shared/form/builder/form-builder.service.ts b/src/app/shared/form/builder/form-builder.service.ts
index 33703abf94..12d7585a1c 100644
--- a/src/app/shared/form/builder/form-builder.service.ts
+++ b/src/app/shared/form/builder/form-builder.service.ts
@@ -33,6 +33,7 @@ import { dateToString, isNgbDateStruct } from '../../date.util';
import { DYNAMIC_FORM_CONTROL_TYPE_RELATION_GROUP } from './ds-dynamic-form-ui/ds-dynamic-form-constants';
import { CONCAT_GROUP_SUFFIX, DynamicConcatModel } from './ds-dynamic-form-ui/models/ds-dynamic-concat.model';
import { VIRTUAL_METADATA_PREFIX } from '../../../core/shared/metadata.models';
+import { environment } from '../../../../environments/environment';
@Injectable()
export class FormBuilderService extends DynamicFormService {
@@ -49,6 +50,11 @@ export class FormBuilderService extends DynamicFormService {
*/
private formGroups: Map;
+ /**
+ * This is the field to use for type binding
+ */
+ private typeField: string;
+
constructor(
componentService: DynamicFormComponentService,
validationService: DynamicFormValidationService,
@@ -57,6 +63,8 @@ export class FormBuilderService extends DynamicFormService {
super(componentService, validationService);
this.formModels = new Map();
this.formGroups = new Map();
+ // Replace . with _ in configured type field here, to make configuration more simple and user-friendly
+ this.typeField = environment.submission.typeBind.field.replace('\.', '_');
}
createDynamicFormControlEvent(control: FormControl, group: FormGroup, model: DynamicFormControlModel, type: string): DynamicFormControlEvent {
@@ -274,7 +282,7 @@ export class FormBuilderService extends DynamicFormService {
}
if (isNull(typeBindModel)) {
- typeBindModel = this.findById('dc_type', rows);
+ typeBindModel = this.findById(this.typeField, rows);
}
if (typeBindModel !== null) {
diff --git a/src/app/shared/form/builder/parsers/field-parser.ts b/src/app/shared/form/builder/parsers/field-parser.ts
index 838816ebb1..6e1c03efe0 100644
--- a/src/app/shared/form/builder/parsers/field-parser.ts
+++ b/src/app/shared/form/builder/parsers/field-parser.ts
@@ -17,6 +17,7 @@ import { RelationshipOptions } from '../models/relationship-options.model';
import { VocabularyOptions } from '../../../../core/submission/vocabularies/models/vocabulary-options.model';
import { ParserType } from './parser-type';
import { isNgbDateStruct } from '../../../date.util';
+import { environment } from '../../../../../environments/environment';
export const SUBMISSION_ID: InjectionToken = new InjectionToken('submissionId');
export const CONFIG_DATA: InjectionToken = new InjectionToken('configData');
@@ -26,6 +27,11 @@ export const PARSER_OPTIONS: InjectionToken = new InjectionToken<
export abstract class FieldParser {
protected fieldId: string;
+ /**
+ * This is the field to use for type binding
+ * @protected
+ */
+ protected typeField: string;
constructor(
@Inject(SUBMISSION_ID) protected submissionId: string,
@@ -33,6 +39,8 @@ export abstract class FieldParser {
@Inject(INIT_FORM_VALUES) protected initFormValues: any,
@Inject(PARSER_OPTIONS) protected parserOptions: ParserOptions
) {
+ // Replace . with _ in configured type field here, to make configuration more simple and user-friendly
+ this.typeField = environment.submission.typeBind.field.replace('\.', '_');
}
public abstract modelFactory(fieldValue?: FormFieldMetadataValueObject, label?: boolean): any;
@@ -315,14 +323,14 @@ export abstract class FieldParser {
const bindValues = [];
configuredTypeBindValues.forEach((value) => {
bindValues.push({
- id: 'dc_type',
+ id: this.typeField,
value: value
});
});
// match: MATCH_VISIBLE means that if true, the field / component will be visible
// operator: OR means that all the values in the 'when' condition will be compared with OR, not AND
// when: the list of values to match against, in this case the list of strings from ...
- // Example: Field [x] will be VISIBLE if dc_type = book OR dc_type = book_part
+ // Example: Field [x] will be VISIBLE if item type = book OR item type = book_part
//
// The opposing match value will be the dc.type for the workspace item
return [{
diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts
index dc54c2fcb0..7a4a5047ba 100644
--- a/src/config/default-app-config.ts
+++ b/src/config/default-app-config.ts
@@ -110,6 +110,9 @@ export class DefaultAppConfig implements AppConfig {
*/
timer: 0
},
+ typeBind: {
+ field: 'dc.type'
+ },
icons: {
metadata: [
/**
diff --git a/src/config/submission-config.interface.ts b/src/config/submission-config.interface.ts
index ce275b9bf8..a63af45e38 100644
--- a/src/config/submission-config.interface.ts
+++ b/src/config/submission-config.interface.ts
@@ -5,6 +5,10 @@ interface AutosaveConfig extends Config {
timer: number;
}
+interface TypeBindConfig extends Config {
+ field: string;
+}
+
interface IconsConfig extends Config {
metadata: MetadataIconConfig[];
authority: {
@@ -24,5 +28,6 @@ export interface ConfidenceIconConfig extends Config {
export interface SubmissionConfig extends Config {
autosave: AutosaveConfig;
+ typeBind: TypeBindConfig;
icons: IconsConfig;
}
diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts
index 7c24ef8f05..95237f4b7c 100644
--- a/src/environments/environment.test.ts
+++ b/src/environments/environment.test.ts
@@ -100,6 +100,9 @@ export const environment: BuildConfig = {
// NOTE: every how many minutes submission is saved automatically
timer: 5
},
+ typeBind: {
+ field: 'dc.type'
+ },
icons: {
metadata: [
{
From 61d64d5e5ea0bbaa42117b1531cd76d9307e353e Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Thu, 17 Feb 2022 14:35:44 +1300
Subject: [PATCH 026/107] [TLC-254] Updating references in tests to reflect row
array model changes
---
.../ds-dynamic-form-control-container.component.spec.ts | 1 -
src/app/shared/form/builder/form-builder.service.spec.ts | 7 +++++--
.../sections/form/section-form-operations.service.spec.ts | 4 +++-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
index 785b0958d5..34d23ef719 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
@@ -150,7 +150,6 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
submissionId: '1234',
id: 'relationGroup',
formConfiguration: [],
- isInlineGroup: false,
mandatoryField: '',
name: 'relationGroup',
relationFields: [],
diff --git a/src/app/shared/form/builder/form-builder.service.spec.ts b/src/app/shared/form/builder/form-builder.service.spec.ts
index 4055c84921..fe9d0a7bc6 100644
--- a/src/app/shared/form/builder/form-builder.service.spec.ts
+++ b/src/app/shared/form/builder/form-builder.service.spec.ts
@@ -197,7 +197,7 @@ describe('FormBuilderService test suite', () => {
repeatable: false,
metadataFields: [],
submissionId: '1234',
- hasSelectableMetadata: false
+ hasSelectableMetadata: false,
}),
new DynamicScrollableDropdownModel({
@@ -233,6 +233,7 @@ describe('FormBuilderService test suite', () => {
hints: 'Enter the name of the author.',
input: { type: 'onebox' },
label: 'Authors',
+ typeBind: [],
languageCodes: [],
mandatory: 'true',
mandatoryMessage: 'Required field!',
@@ -304,7 +305,9 @@ describe('FormBuilderService test suite', () => {
required: false,
metadataKey: 'dc.contributor.author',
metadataFields: ['dc.contributor.author'],
- hasSelectableMetadata: true
+ hasSelectableMetadata: true,
+ showButtons: true,
+ typeBindRelations: []
},
),
];
diff --git a/src/app/submission/sections/form/section-form-operations.service.spec.ts b/src/app/submission/sections/form/section-form-operations.service.spec.ts
index d5798b82c8..65ddbe0cb0 100644
--- a/src/app/submission/sections/form/section-form-operations.service.spec.ts
+++ b/src/app/submission/sections/form/section-form-operations.service.spec.ts
@@ -814,7 +814,9 @@ describe('SectionFormOperationsService test suite', () => {
required: false,
metadataKey: 'dc.contributor.author',
metadataFields: ['dc.contributor.author'],
- hasSelectableMetadata: true
+ hasSelectableMetadata: true,
+ showButtons: true,
+ typeBindRelations: []
}
);
spyOn(serviceAsAny, 'getFieldPathSegmentedFromChangeEvent').and.returnValue('path');
From f97a87702ccfa7f2cb95acb04b1a89a7403ca40f Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Fri, 25 Feb 2022 12:21:22 +1300
Subject: [PATCH 027/107] [TLC-254] Hidden fields can collapse in row, revert
drag-handle problem
apply d-none class to form-control container when model is hidden
css rule for ds-form-control-container.d-none forces collapse
drag-handle fix from 9019b809 was recent and is applied manually here too
---
.../ds-dynamic-form-ui/ds-dynamic-form.component.html | 1 +
.../models/array-group/dynamic-form-array.component.html | 5 +++--
.../models/form-group/dynamic-form-group.component.html | 1 +
src/styles/_global-styles.scss | 7 +++++++
4 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form.component.html
index 2a18565178..4c1ea2dd96 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form.component.html
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form.component.html
@@ -3,6 +3,7 @@
[group]="formGroup"
[hasErrorMessaging]="model.hasErrorMessages"
[hidden]="model.hidden"
+ [class.d-none]="model.hidden"
[layout]="formLayout"
[model]="model"
[templates]="templates"
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.html
index 29df7a34c4..d518d59da2 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.html
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/array-group/dynamic-form-array.component.html
@@ -17,8 +17,8 @@
[cdkDragPreviewClass]="'ds-submission-reorder-dragging'"
[class.grey-background]="model.isInlineGroupArray">
-
-
+
+
Date: Mon, 7 Mar 2022 11:36:09 +1300
Subject: [PATCH 028/107] [TLC-254] Strip out irrelevant metadata security lvl
(as per review)
---
.../models/date-picker/date-picker.model.ts | 10 ----------
src/app/shared/form/builder/form-builder.service.ts | 2 +-
2 files changed, 1 insertion(+), 11 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
index 94b66b288a..343be32cad 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
@@ -15,9 +15,6 @@ export const DYNAMIC_FORM_CONTROL_TYPE_DSDATEPICKER = 'DATE';
export interface DynamicDsDateControlModelConfig extends DynamicDatePickerModelConfig {
legend?: string;
typeBindRelations?: DynamicFormControlRelation[];
- securityLevel?: number;
- securityConfigLevel?: number[];
- toggleSecurityVisibility?: boolean;
}
/**
@@ -28,9 +25,6 @@ export class DynamicDsDatePickerModel extends DynamicDateControlModel {
@serializable() typeBindRelations: DynamicFormControlRelation[];
@serializable() readonly type: string = DYNAMIC_FORM_CONTROL_TYPE_DSDATEPICKER;
@serializable() metadataValue: MetadataValue;
- @serializable() securityLevel?: number;
- @serializable() securityConfigLevel?: number[];
- @serializable() toggleSecurityVisibility = true;
malformedDate: boolean;
legend: string;
hasLanguages = false;
@@ -60,8 +54,4 @@ export class DynamicDsDatePickerModel extends DynamicDateControlModel {
}
}
- get hasSecurityLevel(): boolean {
- return isNotEmpty(this.securityLevel);
- }
-
}
diff --git a/src/app/shared/form/builder/form-builder.service.ts b/src/app/shared/form/builder/form-builder.service.ts
index 12d7585a1c..862f4beb01 100644
--- a/src/app/shared/form/builder/form-builder.service.ts
+++ b/src/app/shared/form/builder/form-builder.service.ts
@@ -265,7 +265,7 @@ export class FormBuilderService extends DynamicFormService {
modelFromConfiguration(submissionId: string, json: string | SubmissionFormsModel, scopeUUID: string, sectionData: any = {},
submissionScope?: string, readOnly = false, typeBindModel = null,
- isInnerForm = false, securityConfig: any = null): DynamicFormControlModel[] | never {
+ isInnerForm = false): DynamicFormControlModel[] | never {
let rows: DynamicFormControlModel[] = [];
const rawData = typeof json === 'string' ? JSON.parse(json, parseReviver) : json;
if (rawData.rows && !isEmpty(rawData.rows)) {
From 96774971def27a1f9975bcb01951e26c27b573df Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Mon, 7 Mar 2022 11:56:08 +1300
Subject: [PATCH 029/107] [TLC-254] ITs, mocking type bind relation service
---
.../form/builder/form-builder.service.spec.ts | 22 ++++++++++++++++++-
src/app/shared/mocks/form-models.mock.ts | 3 ++-
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/src/app/shared/form/builder/form-builder.service.spec.ts b/src/app/shared/form/builder/form-builder.service.spec.ts
index fe9d0a7bc6..254db8a539 100644
--- a/src/app/shared/form/builder/form-builder.service.spec.ts
+++ b/src/app/shared/form/builder/form-builder.service.spec.ts
@@ -48,12 +48,21 @@ import { DynamicConcatModel } from './ds-dynamic-form-ui/models/ds-dynamic-conca
import { DynamicLookupNameModel } from './ds-dynamic-form-ui/models/lookup/dynamic-lookup-name.model';
import { DynamicRowArrayModel } from './ds-dynamic-form-ui/models/ds-dynamic-row-array-model';
import { FormRowModel } from '../../../core/config/models/config-submission-form.model';
+import {DsDynamicTypeBindRelationService} from "./ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service";
describe('FormBuilderService test suite', () => {
let testModel: DynamicFormControlModel[];
let testFormConfiguration: SubmissionFormsModel;
let service: FormBuilderService;
+ let typeBindRelationService: DsDynamicTypeBindRelationService;
+
+ function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService {
+ return jasmine.createSpyObj('DsDynamicTypeBindRelationService', {
+ getRelatedFormModel: jasmine.createSpy('getRelatedFormModel'),
+ isFormControlToBeHidden: jasmine.createSpy('isFormControlToBeHidden')
+ });
+ }
const submissionId = '1234';
@@ -71,6 +80,7 @@ describe('FormBuilderService test suite', () => {
imports: [ReactiveFormsModule],
providers: [
{ provide: FormBuilderService, useClass: FormBuilderService },
+ { provide: DsDynamicTypeBindRelationService, useValue: getMockDsDynamicTypeBindRelationService() },
{ provide: DynamicFormValidationService, useValue: {} },
{ provide: NG_VALIDATORS, useValue: testValidator, multi: true },
{ provide: NG_ASYNC_VALIDATORS, useValue: testAsyncValidator, multi: true }
@@ -427,7 +437,10 @@ describe('FormBuilderService test suite', () => {
} as any;
});
- beforeEach(inject([FormBuilderService], (formService: FormBuilderService) => service = formService));
+ beforeEach(inject([FormBuilderService, DsDynamicTypeBindRelationService], (formService: FormBuilderService, relationService: DsDynamicTypeBindRelationService) => {
+ service = formService;
+ typeBindRelationService = relationService;
+ }));
it('should find a dynamic form control model by id', () => {
@@ -878,4 +891,11 @@ describe('FormBuilderService test suite', () => {
expect(formArray.length === 0).toBe(true);
});
+
+ it('should hide on type bind', () => {
+ const model = service.findById('testFormArray', testModel) as DynamicFormArrayModel;
+ typeBindRelationService.getRelatedFormModel(model);
+ service.getTypeBindModel();
+ });
+
});
diff --git a/src/app/shared/mocks/form-models.mock.ts b/src/app/shared/mocks/form-models.mock.ts
index c43138fa25..100f98caff 100644
--- a/src/app/shared/mocks/form-models.mock.ts
+++ b/src/app/shared/mocks/form-models.mock.ts
@@ -89,7 +89,8 @@ const rowArrayQualdropConfig = {
submissionId: '1234',
metadataKey: 'dc.some.key',
metadataFields: ['dc.some.key'],
- hasSelectableMetadata: false
+ hasSelectableMetadata: false,
+ showButtons: true
} as DynamicRowArrayModelConfig;
export const MockRowArrayQualdropModel: DynamicRowArrayModel = new DynamicRowArrayModel(rowArrayQualdropConfig);
From ce0194108f2e60169183e9f2cd230dd88eafb20c Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Mon, 7 Mar 2022 14:03:17 +1300
Subject: [PATCH 030/107] [TLC-254] ITs, mocking type bind relation service
---
...c-form-control-container.component.spec.ts | 39 ++++++++++++++++---
.../form/builder/form-builder.service.spec.ts | 10 +++--
2 files changed, 41 insertions(+), 8 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
index 34d23ef719..8f6584b0ac 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
@@ -14,7 +14,7 @@ import {
DynamicEditorModel,
DynamicFileUploadModel,
DynamicFormArrayModel,
- DynamicFormControlModel,
+ DynamicFormControlModel, DynamicFormControlRelation,
DynamicFormGroupModel,
DynamicFormsCoreModule,
DynamicFormService,
@@ -25,7 +25,7 @@ import {
DynamicSliderModel,
DynamicSwitchModel,
DynamicTextAreaModel,
- DynamicTimePickerModel
+ DynamicTimePickerModel, MATCH_VISIBLE, OR_OPERATOR
} from '@ng-dynamic-forms/core';
import {
DynamicNGBootstrapCalendarComponent,
@@ -83,10 +83,26 @@ import { NgxMaskModule } from 'ngx-mask';
function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService {
return jasmine.createSpyObj('DsDynamicTypeBindRelationService', {
getRelatedFormModel: jasmine.createSpy('getRelatedFormModel'),
- isFormControlToBeHidden: jasmine.createSpy('isFormControlToBeHidden')
+ matchesCondition: jasmine.createSpy('matchesCondition'),
+ subscribeRelations: jasmine.createSpy('subscribeRelations')
});
}
+function getTypeBindRelations(configuredTypeBindValues: string[]): DynamicFormControlRelation[] {
+ const bindValues = [];
+ configuredTypeBindValues.forEach((value) => {
+ bindValues.push({
+ id: 'dc.type',
+ value: value
+ });
+ });
+ return [{
+ match: MATCH_VISIBLE,
+ operator: OR_OPERATOR,
+ when: bindValues
+ }];
+}
+
describe('DsDynamicFormControlContainerComponent test suite', () => {
const vocabularyOptions: VocabularyOptions = {
@@ -119,7 +135,8 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
metadataFields: [],
repeatable: false,
submissionId: '1234',
- hasSelectableMetadata: false
+ hasSelectableMetadata: false,
+ typeBindRelations: getTypeBindRelations(['Book'])
}),
new DynamicScrollableDropdownModel({
id: 'scrollableDropdown',
@@ -178,6 +195,7 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
];
const testModel = formModel[8];
let formGroup: FormGroup;
+ let formBuilderService: FormBuilderService;
let fixture: ComponentFixture;
let component: DsDynamicFormControlContainerComponent;
let debugElement: DebugElement;
@@ -240,7 +258,7 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
});
}));
- beforeEach(inject([DynamicFormService], (service: DynamicFormService) => {
+ beforeEach(inject([DynamicFormService, FormBuilderService], (service: DynamicFormService, formBuilderService: FormBuilderService) => {
formGroup = service.createFormGroup(formModel);
@@ -366,4 +384,15 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
expect(testFn(formModel[25])).toEqual(DsDynamicFormGroupComponent);
});
+ it('should display a type-bound field when dc.type matcher set to Book', () => {
+ const rels: any = getMockDsDynamicTypeBindRelationService().getRelatedFormModel(formModel[16]);
+ const isVisible = getMockDsDynamicTypeBindRelationService().matchesCondition(rels.typeBindRelations, rels.matcher);
+ expect(isVisible).toBeTruthy();
+ });
+
+ it('Should successfully subscribe type bind relations for component', () => {
+ const subscriptions = getMockDsDynamicTypeBindRelationService().subscribeRelations(component.model, component.control);
+ expect(subscriptions).toBeDefined();
+ });
+
});
diff --git a/src/app/shared/form/builder/form-builder.service.spec.ts b/src/app/shared/form/builder/form-builder.service.spec.ts
index 254db8a539..2d2b335038 100644
--- a/src/app/shared/form/builder/form-builder.service.spec.ts
+++ b/src/app/shared/form/builder/form-builder.service.spec.ts
@@ -48,7 +48,11 @@ import { DynamicConcatModel } from './ds-dynamic-form-ui/models/ds-dynamic-conca
import { DynamicLookupNameModel } from './ds-dynamic-form-ui/models/lookup/dynamic-lookup-name.model';
import { DynamicRowArrayModel } from './ds-dynamic-form-ui/models/ds-dynamic-row-array-model';
import { FormRowModel } from '../../../core/config/models/config-submission-form.model';
-import {DsDynamicTypeBindRelationService} from "./ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service";
+import { DsDynamicTypeBindRelationService } from './ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service';
+import {of as observableOf} from "rxjs";
+import {MenuSection} from "../../menu/menu.reducer";
+import {MenuID} from "../../menu/initial-menus-state";
+import {cold} from "jasmine-marbles";
describe('FormBuilderService test suite', () => {
@@ -60,7 +64,7 @@ describe('FormBuilderService test suite', () => {
function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService {
return jasmine.createSpyObj('DsDynamicTypeBindRelationService', {
getRelatedFormModel: jasmine.createSpy('getRelatedFormModel'),
- isFormControlToBeHidden: jasmine.createSpy('isFormControlToBeHidden')
+ matchesCondition: jasmine.createSpy('matchesCondition')
});
}
@@ -895,7 +899,7 @@ describe('FormBuilderService test suite', () => {
it('should hide on type bind', () => {
const model = service.findById('testFormArray', testModel) as DynamicFormArrayModel;
typeBindRelationService.getRelatedFormModel(model);
- service.getTypeBindModel();
+ const formArray = service.createFormArray(model);
});
});
From 9ceb3580807c7e81f49b811826dd8704fa2afd0a Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Mon, 7 Mar 2022 14:11:28 +1300
Subject: [PATCH 031/107] [TLC-254] Fix Lint errors , unused imports
---
.../ds-dynamic-form-control-container.component.spec.ts | 1 -
src/app/shared/form/builder/form-builder.service.spec.ts | 4 ----
2 files changed, 5 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
index 8f6584b0ac..d1299cedfe 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
@@ -195,7 +195,6 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
];
const testModel = formModel[8];
let formGroup: FormGroup;
- let formBuilderService: FormBuilderService;
let fixture: ComponentFixture;
let component: DsDynamicFormControlContainerComponent;
let debugElement: DebugElement;
diff --git a/src/app/shared/form/builder/form-builder.service.spec.ts b/src/app/shared/form/builder/form-builder.service.spec.ts
index 2d2b335038..6ec18594c5 100644
--- a/src/app/shared/form/builder/form-builder.service.spec.ts
+++ b/src/app/shared/form/builder/form-builder.service.spec.ts
@@ -49,10 +49,6 @@ import { DynamicLookupNameModel } from './ds-dynamic-form-ui/models/lookup/dynam
import { DynamicRowArrayModel } from './ds-dynamic-form-ui/models/ds-dynamic-row-array-model';
import { FormRowModel } from '../../../core/config/models/config-submission-form.model';
import { DsDynamicTypeBindRelationService } from './ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service';
-import {of as observableOf} from "rxjs";
-import {MenuSection} from "../../menu/menu.reducer";
-import {MenuID} from "../../menu/initial-menus-state";
-import {cold} from "jasmine-marbles";
describe('FormBuilderService test suite', () => {
From 617717069b89365376712903ae91355fa93a7d1b Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Tue, 19 Apr 2022 14:00:38 +1200
Subject: [PATCH 032/107] [TLC-254] Remove unnecessary (and never destroyed)
subscriber
Date picker was hiding parent though subscription but this
can be handled async with a simple setTimeout instead
---
.../models/date-picker/date-picker.model.ts | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
index 343be32cad..9f0da2ac12 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
@@ -7,7 +7,7 @@ import {
serializable
} from '@ng-dynamic-forms/core';
import {BehaviorSubject, Subject} from 'rxjs';
-import {isEmpty, isNotEmpty, isNotUndefined} from '../../../../../empty.util';
+import {isEmpty, isNotUndefined} from '../../../../../empty.util';
import {MetadataValue} from '../../../../../../core/shared/metadata.models';
export const DYNAMIC_FORM_CONTROL_TYPE_DSDATEPICKER = 'DATE';
@@ -37,13 +37,15 @@ export class DynamicDsDatePickerModel extends DynamicDateControlModel {
this.metadataValue = (config as any).metadataValue;
this.typeBindRelations = config.typeBindRelations ? config.typeBindRelations : [];
this.hiddenUpdates = new BehaviorSubject(this.hidden);
- this.hiddenUpdates.subscribe((hidden: boolean) => {
+
+ // Asynchronously hide parent if this is hidden
+ setTimeout((hidden: boolean) => {
this.hidden = hidden;
const parentModel = this.getRootParent(this);
if (parentModel && isNotUndefined(parentModel.hidden)) {
parentModel.hidden = hidden;
}
- });
+ }, 0);
}
private getRootParent(model: any): DynamicFormControlModel {
From c414b8cebcaeed82c53b502604ef345850400fbe Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Tue, 19 Apr 2022 14:05:16 +1200
Subject: [PATCH 033/107] [TLC-254] Replace some undef/null tests with
hasValue, hasNoValue
---
.../models/ds-dynamic-row-array-model.ts | 8 ++++----
.../shared/form/builder/form-builder.service.ts | 15 ++++++++++++---
2 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts
index e4b18a4feb..40b4a4acee 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts
@@ -6,7 +6,7 @@ import {
serializable
} from '@ng-dynamic-forms/core';
import { RelationshipOptions } from '../../models/relationship-options.model';
-import { isNotUndefined } from '../../../../empty.util';
+import { hasValue, isNotUndefined } from '../../../../empty.util';
export interface DynamicRowArrayModelConfig extends DynamicFormArrayModelConfig {
notRepeatable: boolean;
@@ -38,13 +38,13 @@ export class DynamicRowArrayModel extends DynamicFormArrayModel {
constructor(config: DynamicRowArrayModelConfig, layout?: DynamicFormControlLayout) {
super(config, layout);
- if (isNotUndefined(config.notRepeatable)) {
+ if (hasValue(config.notRepeatable)) {
this.notRepeatable = config.notRepeatable;
}
- if (isNotUndefined(config.required)) {
+ if (hasValue(config.required)) {
this.required = config.required;
}
- if (isNotUndefined(config.showButtons)) {
+ if (hasValue(config.showButtons)) {
this.showButtons = config.showButtons;
}
this.submissionId = config.submissionId;
diff --git a/src/app/shared/form/builder/form-builder.service.ts b/src/app/shared/form/builder/form-builder.service.ts
index 862f4beb01..ec3b495aa9 100644
--- a/src/app/shared/form/builder/form-builder.service.ts
+++ b/src/app/shared/form/builder/form-builder.service.ts
@@ -20,7 +20,16 @@ import {
} from '@ng-dynamic-forms/core';
import { isObject, isString, mergeWith } from 'lodash';
-import { hasValue, isEmpty, isNotEmpty, isNotNull, isNotUndefined, isNull, isObjectEmpty } from '../../empty.util';
+import {
+ hasNoValue,
+ hasValue,
+ isEmpty,
+ isNotEmpty,
+ isNotNull,
+ isNotUndefined,
+ isNull,
+ isObjectEmpty
+} from '../../empty.util';
import { DynamicQualdropModel } from './ds-dynamic-form-ui/models/ds-dynamic-qualdrop.model';
import { SubmissionFormsModel } from '../../../core/config/models/config-submission-forms.model';
import { DYNAMIC_FORM_CONTROL_TYPE_TAG } from './ds-dynamic-form-ui/models/tag/dynamic-tag.model';
@@ -281,11 +290,11 @@ export class FormBuilderService extends DynamicFormService {
});
}
- if (isNull(typeBindModel)) {
+ if (hasNoValue(typeBindModel)) {
typeBindModel = this.findById(this.typeField, rows);
}
- if (typeBindModel !== null) {
+ if (hasValue(typeBindModel)) {
this.setTypeBindModel(typeBindModel);
}
return rows;
From fc037d79ca197c832b0d6f62e63042592f4c19f5 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Thu, 21 Apr 2022 15:32:12 +1200
Subject: [PATCH 034/107] [TLC-254] WIP tests
---
...dynamic-type-bind-relation.service.spec.ts | 131 ++++++++++++++++++
.../ds-dynamic-type-bind-relation.service.ts | 46 +++---
.../shared/mocks/form-builder-service.mock.ts | 45 +++++-
src/app/shared/mocks/form-models.mock.ts | 54 ++++++++
4 files changed, 254 insertions(+), 22 deletions(-)
create mode 100644 src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
new file mode 100644
index 0000000000..af00dcb7ac
--- /dev/null
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
@@ -0,0 +1,131 @@
+import {inject, TestBed, waitForAsync} from '@angular/core/testing';
+
+import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
+import {
+ DYNAMIC_FORM_CONTROL_TYPE_ARRAY,
+ DYNAMIC_FORM_CONTROL_TYPE_GROUP,
+ DynamicFormControlEvent, DynamicFormControlRelation, DynamicFormValidationService,
+ DynamicFormControlMatcher, DynamicFormRelationService,
+ DynamicInputModel, MATCH_VISIBLE, OR_OPERATOR, HIDDEN_MATCHER, DYNAMIC_MATCHERS
+} from '@ng-dynamic-forms/core';
+
+
+
+import {
+ mockInputWithTypeBindModel, MockRelationModel, mockDcTypeInputModel
+} from '../../../mocks/form-models.mock';
+import {DsDynamicTypeBindRelationService} from './ds-dynamic-type-bind-relation.service';
+import {FormFieldMetadataValueObject} from "../models/form-field-metadata-value.model";
+import {FormControl, NG_ASYNC_VALIDATORS, NG_VALIDATORS, ReactiveFormsModule} from "@angular/forms";
+import {FormBuilderService} from "../form-builder.service";
+import {getMockFormBuilderService} from "../../../mocks/form-builder-service.mock";
+import {DsDynamicFormComponent} from "./ds-dynamic-form.component";
+import {DsDynamicInputModel} from "./models/ds-dynamic-input.model";
+import {FieldParser} from "../parsers/field-parser";
+
+describe('DSDynamicTypeBindRelationService test suite', () => {
+ let service: DsDynamicTypeBindRelationService;
+ let dynamicFormRelationService: DynamicFormRelationService;
+ let dynamicFormControlMatchers: DynamicFormControlMatcher[];
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ imports: [ReactiveFormsModule],
+ providers: [
+ //{ provide: FormBuilderService, useValue: getMockFormBuilderService() },
+ { provide: FormBuilderService, useValue: getMockFormBuilderService() },
+ { provide: DsDynamicTypeBindRelationService, useClass: DsDynamicTypeBindRelationService },
+ { provide: DynamicFormRelationService },
+ ]
+ }).compileComponents().then();
+ });
+
+ beforeEach(inject([DsDynamicTypeBindRelationService, DynamicFormRelationService],
+ (relationService: DsDynamicTypeBindRelationService,
+ formRelationService: DynamicFormRelationService
+ ) => {
+ service = relationService;
+ dynamicFormRelationService = formRelationService;
+ dynamicFormControlMatchers = [];
+ }));
+
+ describe('Test getTypeBindValue method', () => {
+ it('Should get type bind "boundType" from the given metadata object value', () => {
+ const mockMetadataValueObject: FormFieldMetadataValueObject = new FormFieldMetadataValueObject(
+ 'boundType', null, null, 'Bound Type'
+ );
+ const bindType = service.getTypeBindValue(mockMetadataValueObject);
+ expect(bindType).toBe('boundType');
+ });
+ it('Should get type authority key "bound-auth-key" from the given metadata object value', () => {
+ const mockMetadataValueObject: FormFieldMetadataValueObject = new FormFieldMetadataValueObject(
+ 'boundType', null, 'bound-auth-key', 'Bound Type'
+ );
+ const bindType = service.getTypeBindValue(mockMetadataValueObject);
+ console.dir(bindType);
+ expect(bindType).toBe('bound-auth-key');
+ });
+ it('Should get passed string returned directly as string passed instead of metadata', () => {
+ const bindType = service.getTypeBindValue('rawString');
+ expect(bindType).toBe('rawString');
+ });
+ it('Should get "undefined" returned directly as no object given', () => {
+ const bindType = service.getTypeBindValue(undefined);
+ expect(bindType).toBeUndefined();
+ });
+ });
+
+ describe('Test getRelatedFormModel method', () => {
+ it('Should get 0 related form models for simple type bind mock data', () => {
+ const testModel = mockInputWithTypeBindModel;
+ const relatedModels = service.getRelatedFormModel(testModel);
+ expect(relatedModels).toHaveSize(0);
+ });
+ it('Should get 1 related form models for mock relation model data', () => {
+ const testModel = MockRelationModel;
+ testModel.typeBindRelations = getTypeBindRelations(['boundType']);
+ const relatedModels = service.getRelatedFormModel(testModel);
+ expect(relatedModels).toHaveSize(1);
+ });
+ });
+
+ describe('Test matchesCondition method', () => {
+ it('Should receive one subscription to dc.type type binding"', () => {
+ const testModel = MockRelationModel;
+ //testModel.typeBindRelations = getTypeBindRelations(['boundType']);
+ const relatedModels = service.getRelatedFormModel(testModel);
+ const dcTypeControl = new FormControl();
+ dcTypeControl.setValue('boundType');
+ expect(service.subscribeRelations(testModel, dcTypeControl)).toHaveSize(1);
+ });
+
+ it('TEST MTACHe"', () => {
+ const testModel = MockRelationModel;
+ testModel.typeBindRelations = getTypeBindRelations(['boundType']);
+ const relatedModels = service.getRelatedFormModel(testModel);
+ const dcTypeControl = new FormControl();
+ dcTypeControl.setValue('boundType');
+ testModel.typeBindRelations[0].when[0].value = 'asdfaf';
+ const relation = dynamicFormRelationService.findRelationByMatcher((testModel as any).typeBindRelations, HIDDEN_MATCHER);
+ // console.dir(relation);
+ });
+ });
+
+
+
+});
+
+function getTypeBindRelations(configuredTypeBindValues: string[]): DynamicFormControlRelation[] {
+ const bindValues = [];
+ configuredTypeBindValues.forEach((value) => {
+ bindValues.push({
+ id: 'dc.type',
+ value: value
+ });
+ });
+ return [{
+ match: MATCH_VISIBLE,
+ operator: OR_OPERATOR,
+ when: bindValues
+ }];
+}
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 3ec6909c07..959952e6a6 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
@@ -15,10 +15,11 @@ import {
OR_OPERATOR
} from '@ng-dynamic-forms/core';
-import { isNotUndefined, isUndefined } from '../../../empty.util';
+import { isNotUndefined, isUndefined, hasNoValue, hasValue } from '../../../empty.util';
import { FormBuilderService } from '../form-builder.service';
import { FormFieldMetadataValueObject } from '../models/form-field-metadata-value.model';
import { DYNAMIC_FORM_CONTROL_TYPE_RELATION_GROUP } from './ds-dynamic-form-constants';
+import {DsDynamicInputModel} from "./models/ds-dynamic-input.model";
/**
* Service to manage type binding for submission input fields
@@ -39,11 +40,12 @@ export class DsDynamicTypeBindRelationService {
* @param bindModelValue
* @private
*/
- private static getTypeBindValue(bindModelValue: string | FormFieldMetadataValueObject): string {
+ public getTypeBindValue(bindModelValue: string | FormFieldMetadataValueObject): string {
let value;
- if (isUndefined(bindModelValue) || typeof bindModelValue === 'string') {
+ if (hasNoValue(bindModelValue) || typeof bindModelValue === 'string') {
value = bindModelValue;
- } else if (bindModelValue.hasAuthority()) {
+ } else if (bindModelValue instanceof FormFieldMetadataValueObject
+ && bindModelValue.hasAuthority()) {
value = bindModelValue.authority;
} else {
value = bindModelValue.value;
@@ -110,9 +112,9 @@ export class DsDynamicTypeBindRelationService {
// be used, or where the entry doesn't have .value but is a string itself, etc)
// If values isn't an array, make it a single element array with the looked-up type bind value.
if (Array.isArray(bindModelValue)) {
- values = [...bindModelValue.map((entry) => DsDynamicTypeBindRelationService.getTypeBindValue(entry))];
+ values = [...bindModelValue.map((entry) => this.getTypeBindValue(entry))];
} else {
- values = [DsDynamicTypeBindRelationService.getTypeBindValue(bindModelValue)];
+ values = [this.getTypeBindValue(bindModelValue)];
}
// If bind model evaluates to 'true' (is not undefined, is not null, is not false etc,
@@ -186,10 +188,12 @@ export class DsDynamicTypeBindRelationService {
const relatedModels = this.getRelatedFormModel(model);
const subscriptions: Subscription[] = [];
+ console.dir(relatedModels);
+
Object.values(relatedModels).forEach((relatedModel: any) => {
- if (isNotUndefined(relatedModel)) {
- const initValue = (isUndefined(relatedModel.value) || typeof relatedModel.value === 'string') ? relatedModel.value :
+ if (hasValue(relatedModel)) {
+ 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(
@@ -200,20 +204,22 @@ export class DsDynamicTypeBindRelationService {
// I still don't fully understand what is happening here, or the triggers in various form usage that
// cause which / what to fire change events, why the matcher has onChange() instead of a field value or
// form model, etc.
- subscriptions.push(valueChanges.subscribe(() => {
- // Iterate each matcher
- this.dynamicMatchers.forEach((matcher) => {
+ if (hasValue(this.dynamicMatchers) || true) {
+ subscriptions.push(valueChanges.subscribe(() => {
+ // Iterate each matcher
+ this.dynamicMatchers.forEach((matcher) => {
- // Find the relation
- const relation = this.dynamicFormRelationService.findRelationByMatcher((model as any).typeBindRelations, matcher);
+ // Find the relation
+ const relation = this.dynamicFormRelationService.findRelationByMatcher((model as any).typeBindRelations, matcher);
- // If the relation is defined, get matchesCondition result and pass it to the onChange event listener
- if (relation !== undefined) {
- const hasMatch = this.matchesCondition(relation, matcher);
- matcher.onChange(hasMatch, model, control, this.injector);
- }
- });
- }));
+ // If the relation is defined, get matchesCondition result and pass it to the onChange event listener
+ if (relation !== undefined) {
+ const hasMatch = this.matchesCondition(relation, matcher);
+ matcher.onChange(hasMatch, model, control, this.injector);
+ }
+ });
+ }));
+ }
}
});
diff --git a/src/app/shared/mocks/form-builder-service.mock.ts b/src/app/shared/mocks/form-builder-service.mock.ts
index e37df20e13..025d5bd6ba 100644
--- a/src/app/shared/mocks/form-builder-service.mock.ts
+++ b/src/app/shared/mocks/form-builder-service.mock.ts
@@ -1,7 +1,30 @@
import { FormBuilderService } from '../form/builder/form-builder.service';
import { FormControl, FormGroup } from '@angular/forms';
+import {DynamicFormControlModel, DynamicInputModel} from "@ng-dynamic-forms/core";
+import {DsDynamicInputModel} from "../form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model";
export function getMockFormBuilderService(): FormBuilderService {
+
+ const inputWithTypeBindConfig = {
+ name: 'testWithTypeBind',
+ id: 'testWithTypeBind',
+ readOnly: false,
+ disabled: false,
+ repeatable: false,
+ value: {
+ value: 'testWithTypeBind',
+ display: 'testWithTypeBind'
+ },
+ submissionId: '1234',
+ metadataFields: [],
+ hasSelectableMetadata: false,
+ typeBindRelations: [
+ {match: 'VISIBLE', operator: 'OR', when: [{'id': 'dc.type', 'value': 'boundType'}]}
+ ]
+ };
+
+ const thing = new DsDynamicInputModel(inputWithTypeBindConfig);
+
return jasmine.createSpyObj('FormBuilderService', {
modelFromConfiguration: [],
createFormGroup: new FormGroup({}),
@@ -17,8 +40,26 @@ export function getMockFormBuilderService(): FormBuilderService {
isQualdropGroup: false,
isModelInCustomGroup: true,
isRelationGroup: true,
- hasArrayGroupValue: true
-
+ hasArrayGroupValue: true,
+ getTypeBindModel: new DsDynamicInputModel({
+ name: 'testWithTypeBind',
+ id: 'testWithTypeBind',
+ readOnly: false,
+ disabled: false,
+ repeatable: false,
+ value: {
+ value: 'testWithTypeBind',
+ display: 'testWithTypeBind',
+ authority: 'bound-auth-key'
+ },
+ submissionId: '1234',
+ metadataFields: [],
+ hasSelectableMetadata: false,
+ typeBindRelations: [
+ {match: 'VISIBLE', operator: 'OR', when: [{'id': 'dc.type', 'value': 'boundType'}]}
+ ]
+ }
+ )
});
}
diff --git a/src/app/shared/mocks/form-models.mock.ts b/src/app/shared/mocks/form-models.mock.ts
index 100f98caff..3529f9e81b 100644
--- a/src/app/shared/mocks/form-models.mock.ts
+++ b/src/app/shared/mocks/form-models.mock.ts
@@ -306,3 +306,57 @@ export const mockFileFormEditRowGroupModel = new DynamicRowGroupModel({
id: 'mockRowGroupModel',
group: [mockFileFormEditInputModel]
});
+
+// Mock configuration and model for an input with type binding
+export const inputWithTypeBindConfig = {
+ name: 'testWithTypeBind',
+ id: 'testWithTypeBind',
+ readOnly: false,
+ disabled: false,
+ repeatable: false,
+ value: {
+ value: 'testWithTypeBind',
+ display: 'testWithTypeBind',
+ authority: 'bound-auth-key'
+ },
+ submissionId: '1234',
+ metadataFields: [],
+ hasSelectableMetadata: false,
+ getTypeBindModel: new DsDynamicInputModel({
+ name: 'testWithTypeBind',
+ id: 'testWithTypeBind',
+ readOnly: false,
+ disabled: false,
+ repeatable: false,
+ value: {
+ value: 'testWithTypeBind',
+ display: 'testWithTypeBind',
+ authority: 'bound-auth-key'
+ },
+ submissionId: '1234',
+ metadataFields: [],
+ hasSelectableMetadata: false,
+ typeBindRelations: [
+ {match: 'VISIBLE', operator: 'OR', when: [{'id': 'dc.type', 'value': 'boundType'}]}
+ ]
+ }
+ )
+};
+
+export const mockInputWithTypeBindModel = new DsDynamicInputModel(inputWithAuthorityValueConfig);
+
+export const dcTypeInputConfig = {
+ name: 'dc.type',
+ id: 'dc_type',
+ readOnly: false,
+ disabled: false,
+ repeatable: false,
+ submissionId: '1234',
+ metadataFields: [],
+ hasSelectableMetadata: false,
+ value: {
+ value: 'boundType'
+ }
+};
+
+export const mockDcTypeInputModel = new DsDynamicInputModel(dcTypeInputConfig);
From d7afaf9cb865dace9c542f6fe149844418fb2f92 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Fri, 22 Apr 2022 15:05:08 +1200
Subject: [PATCH 035/107] [TLC-254] Service tests
---
...dynamic-type-bind-relation.service.spec.ts | 77 ++++++++++++-------
.../ds-dynamic-type-bind-relation.service.ts | 5 --
.../shared/mocks/form-builder-service.mock.ts | 10 +--
3 files changed, 53 insertions(+), 39 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
index af00dcb7ac..c65e3c6574 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
@@ -1,52 +1,54 @@
import {inject, TestBed, waitForAsync} from '@angular/core/testing';
-import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import {
- DYNAMIC_FORM_CONTROL_TYPE_ARRAY,
- DYNAMIC_FORM_CONTROL_TYPE_GROUP,
- DynamicFormControlEvent, DynamicFormControlRelation, DynamicFormValidationService,
- DynamicFormControlMatcher, DynamicFormRelationService,
- DynamicInputModel, MATCH_VISIBLE, OR_OPERATOR, HIDDEN_MATCHER, DYNAMIC_MATCHERS
+ DynamicFormControlRelation,
+ DynamicFormControlMatcher,
+ DynamicFormRelationService,
+ MATCH_VISIBLE,
+ OR_OPERATOR,
+ HIDDEN_MATCHER,
+ DISABLED_MATCHER,
+ REQUIRED_MATCHER,
} from '@ng-dynamic-forms/core';
-
-
import {
mockInputWithTypeBindModel, MockRelationModel, mockDcTypeInputModel
} from '../../../mocks/form-models.mock';
import {DsDynamicTypeBindRelationService} from './ds-dynamic-type-bind-relation.service';
-import {FormFieldMetadataValueObject} from "../models/form-field-metadata-value.model";
-import {FormControl, NG_ASYNC_VALIDATORS, NG_VALIDATORS, ReactiveFormsModule} from "@angular/forms";
-import {FormBuilderService} from "../form-builder.service";
-import {getMockFormBuilderService} from "../../../mocks/form-builder-service.mock";
-import {DsDynamicFormComponent} from "./ds-dynamic-form.component";
-import {DsDynamicInputModel} from "./models/ds-dynamic-input.model";
-import {FieldParser} from "../parsers/field-parser";
+import {FormFieldMetadataValueObject} from '../models/form-field-metadata-value.model';
+import {FormControl, ReactiveFormsModule} from '@angular/forms';
+import {FormBuilderService} from '../form-builder.service';
+import {getMockFormBuilderService} from '../../../mocks/form-builder-service.mock';
+import {Injector} from '@angular/core';
describe('DSDynamicTypeBindRelationService test suite', () => {
let service: DsDynamicTypeBindRelationService;
let dynamicFormRelationService: DynamicFormRelationService;
let dynamicFormControlMatchers: DynamicFormControlMatcher[];
+ let injector: Injector;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ReactiveFormsModule],
providers: [
- //{ provide: FormBuilderService, useValue: getMockFormBuilderService() },
{ provide: FormBuilderService, useValue: getMockFormBuilderService() },
{ provide: DsDynamicTypeBindRelationService, useClass: DsDynamicTypeBindRelationService },
{ provide: DynamicFormRelationService },
+ { provide: Injector }
]
}).compileComponents().then();
});
beforeEach(inject([DsDynamicTypeBindRelationService, DynamicFormRelationService],
(relationService: DsDynamicTypeBindRelationService,
- formRelationService: DynamicFormRelationService
+ formRelationService: DynamicFormRelationService,
+ mockInjector: Injector,
) => {
service = relationService;
dynamicFormRelationService = formRelationService;
dynamicFormControlMatchers = [];
+ injector = mockInjector;
+ dynamicFormControlMatchers = [HIDDEN_MATCHER, REQUIRED_MATCHER, DISABLED_MATCHER];
}));
describe('Test getTypeBindValue method', () => {
@@ -77,12 +79,12 @@ describe('DSDynamicTypeBindRelationService test suite', () => {
describe('Test getRelatedFormModel method', () => {
it('Should get 0 related form models for simple type bind mock data', () => {
- const testModel = mockInputWithTypeBindModel;
+ const testModel = MockRelationModel;
const relatedModels = service.getRelatedFormModel(testModel);
expect(relatedModels).toHaveSize(0);
});
it('Should get 1 related form models for mock relation model data', () => {
- const testModel = MockRelationModel;
+ const testModel = mockInputWithTypeBindModel;
testModel.typeBindRelations = getTypeBindRelations(['boundType']);
const relatedModels = service.getRelatedFormModel(testModel);
expect(relatedModels).toHaveSize(1);
@@ -91,28 +93,45 @@ describe('DSDynamicTypeBindRelationService test suite', () => {
describe('Test matchesCondition method', () => {
it('Should receive one subscription to dc.type type binding"', () => {
- const testModel = MockRelationModel;
- //testModel.typeBindRelations = getTypeBindRelations(['boundType']);
- const relatedModels = service.getRelatedFormModel(testModel);
+ const testModel = mockInputWithTypeBindModel;
+ testModel.typeBindRelations = getTypeBindRelations(['boundType']);
const dcTypeControl = new FormControl();
dcTypeControl.setValue('boundType');
expect(service.subscribeRelations(testModel, dcTypeControl)).toHaveSize(1);
});
- it('TEST MTACHe"', () => {
- const testModel = MockRelationModel;
+ it('Expect hasMatch to be true (ie. this should be hidden)', () => {
+ const testModel = mockInputWithTypeBindModel;
testModel.typeBindRelations = getTypeBindRelations(['boundType']);
- const relatedModels = service.getRelatedFormModel(testModel);
const dcTypeControl = new FormControl();
dcTypeControl.setValue('boundType');
- testModel.typeBindRelations[0].when[0].value = 'asdfaf';
+ testModel.typeBindRelations[0].when[0].value = 'anotherType';
const relation = dynamicFormRelationService.findRelationByMatcher((testModel as any).typeBindRelations, HIDDEN_MATCHER);
- // console.dir(relation);
+ const matcher = HIDDEN_MATCHER;
+ if (relation !== undefined) {
+ const hasMatch = service.matchesCondition(relation, matcher);
+ matcher.onChange(hasMatch, testModel, dcTypeControl, injector);
+ expect(hasMatch).toBeTruthy();
+ }
});
+
+ it('Expect hasMatch to be false (ie. this should NOT be hidden)', () => {
+ const testModel = mockInputWithTypeBindModel;
+ testModel.typeBindRelations = getTypeBindRelations(['boundType']);
+ const dcTypeControl = new FormControl();
+ dcTypeControl.setValue('boundType');
+ testModel.typeBindRelations[0].when[0].value = 'boundType';
+ const relation = dynamicFormRelationService.findRelationByMatcher((testModel as any).typeBindRelations, HIDDEN_MATCHER);
+ const matcher = HIDDEN_MATCHER;
+ if (relation !== undefined) {
+ const hasMatch = service.matchesCondition(relation, matcher);
+ matcher.onChange(hasMatch, testModel, dcTypeControl, injector);
+ expect(hasMatch).toBeFalsy();
+ }
+ });
+
});
-
-
});
function getTypeBindRelations(configuredTypeBindValues: string[]): DynamicFormControlRelation[] {
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 959952e6a6..279f47d9e0 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
@@ -188,8 +188,6 @@ export class DsDynamicTypeBindRelationService {
const relatedModels = this.getRelatedFormModel(model);
const subscriptions: Subscription[] = [];
- console.dir(relatedModels);
-
Object.values(relatedModels).forEach((relatedModel: any) => {
if (hasValue(relatedModel)) {
@@ -201,9 +199,6 @@ export class DsDynamicTypeBindRelationService {
);
// Build up the subscriptions to watch for changes;
- // I still don't fully understand what is happening here, or the triggers in various form usage that
- // cause which / what to fire change events, why the matcher has onChange() instead of a field value or
- // form model, etc.
if (hasValue(this.dynamicMatchers) || true) {
subscriptions.push(valueChanges.subscribe(() => {
// Iterate each matcher
diff --git a/src/app/shared/mocks/form-builder-service.mock.ts b/src/app/shared/mocks/form-builder-service.mock.ts
index 025d5bd6ba..e6584b14cc 100644
--- a/src/app/shared/mocks/form-builder-service.mock.ts
+++ b/src/app/shared/mocks/form-builder-service.mock.ts
@@ -42,18 +42,18 @@ export function getMockFormBuilderService(): FormBuilderService {
isRelationGroup: true,
hasArrayGroupValue: true,
getTypeBindModel: new DsDynamicInputModel({
- name: 'testWithTypeBind',
- id: 'testWithTypeBind',
+ name: 'dc.type',
+ id: 'dc_type',
readOnly: false,
disabled: false,
repeatable: false,
value: {
- value: 'testWithTypeBind',
- display: 'testWithTypeBind',
+ value: 'boundType',
+ display: 'Bound Type',
authority: 'bound-auth-key'
},
submissionId: '1234',
- metadataFields: [],
+ metadataFields: ['dc.type'],
hasSelectableMetadata: false,
typeBindRelations: [
{match: 'VISIBLE', operator: 'OR', when: [{'id': 'dc.type', 'value': 'boundType'}]}
From bc6276434587bc8aef4e3c36fc0e7adce083e79b Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Fri, 22 Apr 2022 15:59:19 +1200
Subject: [PATCH 036/107] [TLC-254] Service tests - small fixes
---
.../ds-dynamic-type-bind-relation.service.ts | 12 +++++-------
.../models/date-picker/date-picker.model.ts | 13 +++++--------
2 files changed, 10 insertions(+), 15 deletions(-)
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 279f47d9e0..7d846ddde4 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
@@ -199,22 +199,20 @@ export class DsDynamicTypeBindRelationService {
);
// Build up the subscriptions to watch for changes;
- if (hasValue(this.dynamicMatchers) || true) {
- subscriptions.push(valueChanges.subscribe(() => {
- // Iterate each matcher
+ subscriptions.push(valueChanges.subscribe(() => {
+ // Iterate each matcher
+ if (hasValue(this.dynamicMatchers)) {
this.dynamicMatchers.forEach((matcher) => {
-
// Find the relation
const relation = this.dynamicFormRelationService.findRelationByMatcher((model as any).typeBindRelations, matcher);
-
// If the relation is defined, get matchesCondition result and pass it to the onChange event listener
if (relation !== undefined) {
const hasMatch = this.matchesCondition(relation, matcher);
matcher.onChange(hasMatch, model, control, this.injector);
}
});
- }));
- }
+ }
+ }));
}
});
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
index 9f0da2ac12..5af9b2bd32 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.model.ts
@@ -38,14 +38,11 @@ export class DynamicDsDatePickerModel extends DynamicDateControlModel {
this.typeBindRelations = config.typeBindRelations ? config.typeBindRelations : [];
this.hiddenUpdates = new BehaviorSubject(this.hidden);
- // Asynchronously hide parent if this is hidden
- setTimeout((hidden: boolean) => {
- this.hidden = hidden;
- const parentModel = this.getRootParent(this);
- if (parentModel && isNotUndefined(parentModel.hidden)) {
- parentModel.hidden = hidden;
- }
- }, 0);
+ // This was a subscription, then an async setTimeout, but it seems unnecessary
+ const parentModel = this.getRootParent(this);
+ if (parentModel && isNotUndefined(parentModel.hidden)) {
+ parentModel.hidden = this.hidden;
+ }
}
private getRootParent(model: any): DynamicFormControlModel {
From 02ee1eca87279a34636ac04a042143de5542fcc8 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Fri, 22 Apr 2022 16:14:02 +1200
Subject: [PATCH 037/107] [TLC-254] Quotes fixed for Lint, import cleanup
---
.../ds-dynamic-type-bind-relation.service.ts | 3 +--
src/app/shared/mocks/form-builder-service.mock.ts | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
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 7d846ddde4..f3e93790f0 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
@@ -15,11 +15,10 @@ import {
OR_OPERATOR
} from '@ng-dynamic-forms/core';
-import { isNotUndefined, isUndefined, hasNoValue, hasValue } from '../../../empty.util';
+import { hasNoValue, hasValue } from '../../../empty.util';
import { FormBuilderService } from '../form-builder.service';
import { FormFieldMetadataValueObject } from '../models/form-field-metadata-value.model';
import { DYNAMIC_FORM_CONTROL_TYPE_RELATION_GROUP } from './ds-dynamic-form-constants';
-import {DsDynamicInputModel} from "./models/ds-dynamic-input.model";
/**
* Service to manage type binding for submission input fields
diff --git a/src/app/shared/mocks/form-builder-service.mock.ts b/src/app/shared/mocks/form-builder-service.mock.ts
index e6584b14cc..40d10bc170 100644
--- a/src/app/shared/mocks/form-builder-service.mock.ts
+++ b/src/app/shared/mocks/form-builder-service.mock.ts
@@ -1,7 +1,6 @@
import { FormBuilderService } from '../form/builder/form-builder.service';
import { FormControl, FormGroup } from '@angular/forms';
-import {DynamicFormControlModel, DynamicInputModel} from "@ng-dynamic-forms/core";
-import {DsDynamicInputModel} from "../form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model";
+import {DsDynamicInputModel} from '../form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model';
export function getMockFormBuilderService(): FormBuilderService {
From aefc4e1310758158284f9c67071175735fb9ec64 Mon Sep 17 00:00:00 2001
From: SDGBot <38133100+itudevops@users.noreply.github.com>
Date: Fri, 22 Apr 2022 13:39:21 +0300
Subject: [PATCH 038/107] =?UTF-8?q?ITU=20BIDB=20t=C3=BCrk=C3=A7e=20dil=20d?=
=?UTF-8?q?este=C4=9Fi=20g=C3=BCncellemesi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
İstek üzerine gerekli güncellemeler gerçekleştirilmiştir.
---
src/assets/i18n/tr.json5 | 7700 +++++++++++++-------------------------
1 file changed, 2574 insertions(+), 5126 deletions(-)
diff --git a/src/assets/i18n/tr.json5 b/src/assets/i18n/tr.json5
index e8c2d8710e..15a44481cb 100644
--- a/src/assets/i18n/tr.json5
+++ b/src/assets/i18n/tr.json5
@@ -1,5126 +1,2574 @@
-{
-
- // "401.help": "You're not authorized to access this page. You can use the button below to get back to the home page.",
- "401.help": "Bu sayfaya erişim yetkiniz bulunmamaktadır. Ana sayfaya dönmek için aşağıdaki butonu kullanabilirsiniz.",
-
- // "401.link.home-page": "Take me to the home page",
- "401.link.home-page": "Beni ana sayfaya götür",
-
- // "401.unauthorized": "unauthorized",
- "401.unauthorized": "yetkisiz",
-
-
-
- // "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": "Bu sayfaya erişim yetkiniz bulunmamaktadır. Ana sayfaya dönmek için aşağıdaki butonu kullanabilirsiniz.",
-
- // "403.link.home-page": "Take me to the home page",
- "403.link.home-page": "Beni ana sayfaya götür",
-
- // "403.forbidden": "forbidden",
- "403.forbidden": "yasaklı",
-
-
-
- // "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": "Aradığınız sayfayı bulamıyoruz. Sayfa taşınmış veya silinmiş olabilir. Ana sayfaya geri dönmek için aşağıdaki butonu kullanabilirsiniz. ",
-
- // "404.link.home-page": "Take me to the home page",
- "404.link.home-page": "Beni ana sayfaya götür",
-
- // "404.page-not-found": "page not found",
- "404.page-not-found": "sayfa bulunamadı",
-
- // "admin.curation-tasks.breadcrumbs": "System curation tasks",
- "admin.curation-tasks.breadcrumbs": "Sistem iyileştirme görevleri",
-
- // "admin.curation-tasks.title": "System curation tasks",
- "admin.curation-tasks.title": "Sistem iyileştirme görevleri",
-
- // "admin.curation-tasks.header": "System curation tasks",
- "admin.curation-tasks.header": "Sistem iyileştirme görevleri",
-
- // "admin.registries.bitstream-formats.breadcrumbs": "Format registry",
- "admin.registries.bitstream-formats.breadcrumbs": "Kayıt defterini biçimlendir",
-
- // "admin.registries.bitstream-formats.create.breadcrumbs": "Bitstream format",
- "admin.registries.bitstream-formats.create.breadcrumbs": "Veri akışı biçimi",
-
- // "admin.registries.bitstream-formats.create.failure.content": "An error occurred while creating the new bitstream format.",
- "admin.registries.bitstream-formats.create.failure.content": "Yeni veri akışı biçimi oluşturulurken bir hata oluştu.",
-
- // "admin.registries.bitstream-formats.create.failure.head": "Failure",
- "admin.registries.bitstream-formats.create.failure.head": "Aksama",
-
- // "admin.registries.bitstream-formats.create.head": "Create Bitstream format",
- "admin.registries.bitstream-formats.create.head": "Vit akışı biçimi oluştur",
-
- // "admin.registries.bitstream-formats.create.new": "Add a new bitstream format",
- "admin.registries.bitstream-formats.create.new": "Yeni bir veri akışı biçimi ekleyin",
-
- // "admin.registries.bitstream-formats.create.success.content": "The new bitstream format was successfully created.",
- "admin.registries.bitstream-formats.create.success.content": "Yeni veri akışı biçimi başarıyla oluşturuldu.",
-
- // "admin.registries.bitstream-formats.create.success.head": "Success",
- "admin.registries.bitstream-formats.create.success.head": "Başarılı",
-
- // "admin.registries.bitstream-formats.delete.failure.amount": "Failed to remove {{ amount }} format(s)",
- "admin.registries.bitstream-formats.delete.failure.amount": "{{ amount }} biçim(ler) kaldırılamadı",
-
- // "admin.registries.bitstream-formats.delete.failure.head": "Failure",
- "admin.registries.bitstream-formats.delete.failure.head": "Aksama",
-
- // "admin.registries.bitstream-formats.delete.success.amount": "Successfully removed {{ amount }} format(s)",
- "admin.registries.bitstream-formats.delete.success.amount": "{{ amount }} biçim(ler) başarıyla kaldırıldı",
-
- // "admin.registries.bitstream-formats.delete.success.head": "Success",
- "admin.registries.bitstream-formats.delete.success.head": "Başarılı",
-
- // "admin.registries.bitstream-formats.description": "This list of bitstream formats provides information about known formats and their support level.",
- "admin.registries.bitstream-formats.description": "Bu veri akışı biçimleri listesi, bilinen biçimler ve destek düzeyleri hakkında bilgi sağlar.",
-
- // "admin.registries.bitstream-formats.edit.breadcrumbs": "Bitstream format",
- "admin.registries.bitstream-formats.edit.breadcrumbs": "Veri akışı biçimi",
-
- // "admin.registries.bitstream-formats.edit.description.hint": "",
- "admin.registries.bitstream-formats.edit.description.hint": "",
-
- // "admin.registries.bitstream-formats.edit.description.label": "Description",
- "admin.registries.bitstream-formats.edit.description.label": "Tanımlama",
-
- // "admin.registries.bitstream-formats.edit.extensions.hint": "Extensions are file extensions that are used to automatically identify the format of uploaded files. You can enter several extensions for each format.",
- "admin.registries.bitstream-formats.edit.extensions.hint": "Uzantılar, yüklenen dosyaların biçimini otomatik olarak tanımlamak için kullanılan dosya uzantılarıdır. Her biçim için birkaç uzantı girebilirsiniz.",
-
- // "admin.registries.bitstream-formats.edit.extensions.label": "File extensions",
- "admin.registries.bitstream-formats.edit.extensions.label": "Dosya uzantıları",
-
- // "admin.registries.bitstream-formats.edit.extensions.placeholder": "Enter a file extension without the dot",
- "admin.registries.bitstream-formats.edit.extensions.placeholder": "Nokta olmadan bir dosya uzantısı girin",
-
- // "admin.registries.bitstream-formats.edit.failure.content": "An error occurred while editing the bitstream format.",
- "admin.registries.bitstream-formats.edit.failure.content": "Veri akışı biçimi düzenlenirken bir hata oluştu.",
-
- // "admin.registries.bitstream-formats.edit.failure.head": "Failure",
- "admin.registries.bitstream-formats.edit.failure.head": "Aksama",
-
- // "admin.registries.bitstream-formats.edit.head": "Bitstream format: {{ format }}",
- "admin.registries.bitstream-formats.edit.head": "Veri akışı biçimi: {{ format }}",
-
- // "admin.registries.bitstream-formats.edit.internal.hint": "Formats marked as internal are hidden from the user, and used for administrative purposes.",
- "admin.registries.bitstream-formats.edit.internal.hint": "Dahili olarak işaretlenen biçimler, kullanıcıdan gizlenir ve yönetim amacıyla kullanılır.",
-
- // "admin.registries.bitstream-formats.edit.internal.label": "Internal",
- "admin.registries.bitstream-formats.edit.internal.label": "Dahili",
-
- // "admin.registries.bitstream-formats.edit.mimetype.hint": "The MIME type associated with this format, does not have to be unique.",
- "admin.registries.bitstream-formats.edit.mimetype.hint": "Bu biçimle ilişkili MIME biçimi benzersiz olması gerekmez.",
-
- // "admin.registries.bitstream-formats.edit.mimetype.label": "MIME Type",
- "admin.registries.bitstream-formats.edit.mimetype.label": "MIME Biçimi",
-
- // "admin.registries.bitstream-formats.edit.shortDescription.hint": "A unique name for this format, (e.g. Microsoft Word XP or Microsoft Word 2000)",
- "admin.registries.bitstream-formats.edit.shortDescription.hint": "Bu biçim için benzersiz bir ad (ör. Microsoft Word XP veya Microsoft Word 2000)",
-
- // "admin.registries.bitstream-formats.edit.shortDescription.label": "Name",
- "admin.registries.bitstream-formats.edit.shortDescription.label": "İsim",
-
- // "admin.registries.bitstream-formats.edit.success.content": "The bitstream format was successfully edited.",
- "admin.registries.bitstream-formats.edit.success.content": "Veri akışı biçimi başarıyla düzenlendi.",
-
- // "admin.registries.bitstream-formats.edit.success.head": "Success",
- "admin.registries.bitstream-formats.edit.success.head": "Başarılı",
-
- // "admin.registries.bitstream-formats.edit.supportLevel.hint": "The level of support your institution pledges for this format.",
- "admin.registries.bitstream-formats.edit.supportLevel.hint": "Kurumunuzun bu biçim için taahhüt ettiği destek düzeyi.",
-
- // "admin.registries.bitstream-formats.edit.supportLevel.label": "Support level",
- "admin.registries.bitstream-formats.edit.supportLevel.label": "Destek seviyesi",
-
- // "admin.registries.bitstream-formats.head": "Bitstream Format Registry",
- "admin.registries.bitstream-formats.head": "Veri Akışı Biçimi Kayıt Defteri",
-
- // "admin.registries.bitstream-formats.no-items": "No bitstream formats to show.",
- "admin.registries.bitstream-formats.no-items": "Gösterilecek veri akışı biçimi yok.",
-
- // "admin.registries.bitstream-formats.table.delete": "Delete selected",
- "admin.registries.bitstream-formats.table.delete": "Silme seçildi",
-
- // "admin.registries.bitstream-formats.table.deselect-all": "Deselect all",
- "admin.registries.bitstream-formats.table.deselect-all": "Tüm seçimleri kaldır",
-
- // "admin.registries.bitstream-formats.table.internal": "internal",
- "admin.registries.bitstream-formats.table.internal": "dahili",
-
- // "admin.registries.bitstream-formats.table.mimetype": "MIME Type",
- "admin.registries.bitstream-formats.table.mimetype": "MIME Biçimi",
-
- // "admin.registries.bitstream-formats.table.name": "Name",
- "admin.registries.bitstream-formats.table.name": "İsim",
-
- // "admin.registries.bitstream-formats.table.return": "Return",
- "admin.registries.bitstream-formats.table.return": "Geri Dön",
-
- // "admin.registries.bitstream-formats.table.supportLevel.KNOWN": "Known",
- "admin.registries.bitstream-formats.table.supportLevel.KNOWN": "Biliniyor",
-
- // "admin.registries.bitstream-formats.table.supportLevel.SUPPORTED": "Supported",
- "admin.registries.bitstream-formats.table.supportLevel.SUPPORTED": "Destekleniyor",
-
- // "admin.registries.bitstream-formats.table.supportLevel.UNKNOWN": "Unknown",
- "admin.registries.bitstream-formats.table.supportLevel.UNKNOWN": "Bilinmiyor",
-
- // "admin.registries.bitstream-formats.table.supportLevel.head": "Support Level",
- "admin.registries.bitstream-formats.table.supportLevel.head": "Destek Seviyesi",
-
- // "admin.registries.bitstream-formats.title": "DSpace Angular :: Bitstream Format Registry",
- "admin.registries.bitstream-formats.title": "DSpace Angular :: Veri Akışı Biçimi Kayıt Defteri ",
-
-
-
- // "admin.registries.metadata.breadcrumbs": "Metadata registry",
- "admin.registries.metadata.breadcrumbs": "Metaveri kayıt defteri",
-
- // "admin.registries.metadata.description": "The metadata registry maintains a list of all metadata fields available in the repository. These fields may be divided amongst multiple schemas. However, DSpace requires the qualified Dublin Core schema.",
- "admin.registries.metadata.description": "Metaveri kayıt defteri, veri havuzda bulunan tüm metaveri alanlarının bir listesini tutar. Bu alanlar birden çok şema arasında bölünebilir. Ancak, DSpace nitelikli Dublin Core şemasını gerektirir.",
-
- // "admin.registries.metadata.form.create": "Create metadata schema",
- "admin.registries.metadata.form.create": "Metaveri şeması oluştur",
-
- // "admin.registries.metadata.form.edit": "Edit metadata schema",
- "admin.registries.metadata.form.edit": "Metaveri şemasını düzenle",
-
- // "admin.registries.metadata.form.name": "Name",
- "admin.registries.metadata.form.name": "İsim",
-
- // "admin.registries.metadata.form.namespace": "Namespace",
- "admin.registries.metadata.form.namespace": "Ad Alanı",
-
- // "admin.registries.metadata.head": "Metadata Registry",
- "admin.registries.metadata.head": "Metaveri Kayıt Defteri",
-
- // "admin.registries.metadata.schemas.no-items": "No metadata schemas to show.",
- "admin.registries.metadata.schemas.no-items": "Gösterilecek metaveri alanı yok.",
-
- // "admin.registries.metadata.schemas.table.delete": "Delete selected",
- "admin.registries.metadata.schemas.table.delete": "Silme Seçildi",
-
- // "admin.registries.metadata.schemas.table.id": "ID",
- "admin.registries.metadata.schemas.table.id": "Kimlik",
-
- // "admin.registries.metadata.schemas.table.name": "Name",
- "admin.registries.metadata.schemas.table.name": "İsim",
-
- // "admin.registries.metadata.schemas.table.namespace": "Namespace",
- "admin.registries.metadata.schemas.table.namespace": "Ad Alanı",
-
- // "admin.registries.metadata.title": "DSpace Angular :: Metadata Registry",
- "admin.registries.metadata.title": "DSpace Angular :: Metaveri Kayıt Defteri",
-
-
-
- // "admin.registries.schema.breadcrumbs": "Metadata schema",
- "admin.registries.schema.breadcrumbs": "Metaveri şeması",
-
- // "admin.registries.schema.description": "This is the metadata schema for \"{{namespace}}\".",
- "admin.registries.schema.description": "Bu, \"{{namesapce}}\" için meta veri şemasıdır.",
-
- // "admin.registries.schema.fields.head": "Schema metadata fields",
- "admin.registries.schema.fields.head": "Şema metaveri alanları",
-
- // "admin.registries.schema.fields.no-items": "No metadata fields to show.",
- "admin.registries.schema.fields.no-items": "Gösterilecek metaveri alanı yok.",
-
- // "admin.registries.schema.fields.table.delete": "Delete selected",
- "admin.registries.schema.fields.table.delete": "Silme Seçildi",
-
- // "admin.registries.schema.fields.table.field": "Field",
- "admin.registries.schema.fields.table.field": "Alan",
-
- // "admin.registries.schema.fields.table.scopenote": "Scope Note",
- "admin.registries.schema.fields.table.scopenote": "Kapsam Notu",
-
- // "admin.registries.schema.form.create": "Create metadata field",
- "admin.registries.schema.form.create": "Metaveri alanı oluştur",
-
- // "admin.registries.schema.form.edit": "Edit metadata field",
- "admin.registries.schema.form.edit": "Metaveri alanını düzenle",
-
- // "admin.registries.schema.form.element": "Element",
- "admin.registries.schema.form.element": "Element",
-
- // "admin.registries.schema.form.qualifier": "Qualifier",
- "admin.registries.schema.form.qualifier": "Niteleyici",
-
- // "admin.registries.schema.form.scopenote": "Scope Note",
- "admin.registries.schema.form.scopenote": "Kapsam Notu",
-
- // "admin.registries.schema.head": "Metadata Schema",
- "admin.registries.schema.head": "Metaveri Şeması",
-
- // "admin.registries.schema.notification.created": "Successfully created metadata schema \"{{prefix}}\"",
- "admin.registries.schema.notification.created": "Metaveri şeması \"{{prefix}}\" başarıyla oluşturuldu",
-
- // "admin.registries.schema.notification.deleted.failure": "Failed to delete {{amount}} metadata schemas",
- "admin.registries.schema.notification.deleted.failure": "{{amount}} metaveri şeması silinemedi",
-
- // "admin.registries.schema.notification.deleted.success": "Successfully deleted {{amount}} metadata schemas",
- "admin.registries.schema.notification.deleted.success": "{{amount}} metaveri şeması başarıyla silindi",
-
- // "admin.registries.schema.notification.edited": "Successfully edited metadata schema \"{{prefix}}\"",
- "admin.registries.schema.notification.edited": "Metaveri şeması \"{{prefix}}\" başarıyla düzenlendi",
-
- // "admin.registries.schema.notification.failure": "Error",
- "admin.registries.schema.notification.failure": "Hata",
-
- // "admin.registries.schema.notification.field.created": "Successfully created metadata field \"{{field}}\"",
- "admin.registries.schema.notification.field.created": "\"{{field}}\" metaveri alanı başarıyla oluşturuldu",
-
- // "admin.registries.schema.notification.field.deleted.failure": "Failed to delete {{amount}} metadata fields",
- "admin.registries.schema.notification.field.deleted.failure": "{{amount}} metaveri alanı silinemedi",
-
- // "admin.registries.schema.notification.field.deleted.success": "Successfully deleted {{amount}} metadata fields",
- "admin.registries.schema.notification.field.deleted.success": "{{amount}} metaveri alanı başarıyla silindi",
-
- // "admin.registries.schema.notification.field.edited": "Successfully edited metadata field \"{{field}}\"",
- "admin.registries.schema.notification.field.edited": "Metaveri alanı \"{{field}}\" başarıyla düzenlendi",
-
- // "admin.registries.schema.notification.success": "Success",
- "admin.registries.schema.notification.success": "Başarılı",
-
- // "admin.registries.schema.return": "Return",
- "admin.registries.schema.return": "Geri Dön",
-
- // "admin.registries.schema.title": "DSpace Angular :: Metadata Schema Registry",
- "admin.registries.schema.title": "DSpace Angular :: Metaveri Şeması Kayıt Defteri",
-
-
-
- // "admin.access-control.epeople.actions.delete": "Delete EPerson",
- "admin.access-control.epeople.actions.delete": "E-Kişiyi Sil",
-
- // "admin.access-control.epeople.actions.impersonate": "Impersonate EPerson",
- "admin.access-control.epeople.actions.impersonate": "E-Kişinin Kimliğine Bürün",
-
- // "admin.access-control.epeople.actions.reset": "Reset password",
- "admin.access-control.epeople.actions.reset": "Parolayı sıfırla",
-
- // "admin.access-control.epeople.actions.stop-impersonating": "Stop impersonating EPerson",
- "admin.access-control.epeople.actions.stop-impersonating": "E-Kişilerin kimliğine bürünmeyi durdurun",
-
- // "admin.access-control.epeople.title": "DSpace Angular :: EPeople",
- "admin.access-control.epeople.title": "DSpace Angular :: E-kişiler",
-
- // "admin.access-control.epeople.head": "EPeople",
- "admin.access-control.epeople.head": "E-Kişiler",
-
- // "admin.access-control.epeople.search.head": "Search",
- "admin.access-control.epeople.search.head": "Ara",
-
- // "admin.access-control.epeople.button.see-all": "Tümüne Gözat",
- "admin.access-control.epeople.button.see-all": "Browse All",
-
- // "admin.access-control.epeople.search.scope.metadata": "Metadata",
- "admin.access-control.epeople.search.scope.metadata": "Metaveri",
-
- // "admin.access-control.epeople.search.scope.email": "E-mail (exact)",
- "admin.access-control.epeople.search.scope.email": "E-posta (tam)",
-
- // "admin.access-control.epeople.search.button": "Search",
- "admin.access-control.epeople.search.button": "Ara",
-
- // "admin.access-control.epeople.button.add": "Add EPerson",
- "admin.access-control.epeople.button.add": "E-Kişi Ekle",
-
- // "admin.access-control.epeople.table.id": "ID",
- "admin.access-control.epeople.table.id": "Kimlik",
-
- // "admin.access-control.epeople.table.name": "Name",
- "admin.access-control.epeople.table.name": "İsim",
-
- // "admin.access-control.epeople.table.email": "E-mail (exact)",
- "admin.access-control.epeople.table.email": "E-posta (tam)",
-
- // "admin.access-control.epeople.table.edit": "Edit",
- "admin.access-control.epeople.table.edit": "Düzenle",
-
- // "admin.access-control.epeople.table.edit.buttons.edit": "Edit \"{{name}}\"",
- "admin.access-control.epeople.table.edit.buttons.edit": "Düzenle \"{{name}}\"",
-
- // "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
- "admin.access-control.epeople.table.edit.buttons.remove": "Sil \"{{name}}\"",
-
- // "admin.access-control.epeople.no-items": "No EPeople to show.",
- "admin.access-control.epeople.no-items": "Gösterilecek E-Kişiler yok.",
-
- // "admin.access-control.epeople.form.create": "Create EPerson",
- "admin.access-control.epeople.form.create": "E-Kişi Oluştur",
-
- // "admin.access-control.epeople.form.edit": "Edit EPerson",
- "admin.access-control.epeople.form.edit": "E-Kişiyi Düzenle",
-
- // "admin.access-control.epeople.form.firstName": "First name",
- "admin.access-control.epeople.form.firstName": "İsim",
-
- // "admin.access-control.epeople.form.lastName": "Last name",
- "admin.access-control.epeople.form.lastName": "Soyadı",
-
- // "admin.access-control.epeople.form.email": "E-mail",
- "admin.access-control.epeople.form.email": "E-posta",
-
- // "admin.access-control.epeople.form.emailHint": "Must be valid e-mail address",
- "admin.access-control.epeople.form.emailHint": "Geçerli bir e-posta adresi olmalı",
-
- // "admin.access-control.epeople.form.canLogIn": "Can log in",
- "admin.access-control.epeople.form.canLogIn": "Giriş yapabilir",
-
- // "admin.access-control.epeople.form.requireCertificate": "Requires certificate",
- "admin.access-control.epeople.form.requireCertificate": "Sertifika gerektirir",
-
- // "admin.access-control.epeople.form.notification.created.success": "Successfully created EPerson \"{{name}}\"",
- "admin.access-control.epeople.form.notification.created.success": "E-Kişi \"{{name}}\" başarıyla oluşturuldu",
-
- // "admin.access-control.epeople.form.notification.created.failure": "Failed to create EPerson \"{{name}}\"",
- "admin.access-control.epeople.form.notification.created.failure": "E-Kişi \"{{name}}\" oluşturulamadı",
-
- // "admin.access-control.epeople.form.notification.created.failure.emailInUse": "Failed to create EPerson \"{{name}}\", email \"{{email}}\" already in use.",
- "admin.access-control.epeople.form.notification.created.failure.emailInUse": "E-Kişi \"{{name}}\" oluşturulamadı, e-posta \"{{email}}\" zaten kullanımda.",
-
- // "admin.access-control.epeople.form.notification.edited.failure.emailInUse": "Failed to edit EPerson \"{{name}}\", email \"{{email}}\" already in use.",
- "admin.access-control.epeople.form.notification.edited.failure.emailInUse": "E-Kişi \"{{name}}\" düzenlenemedi, e-posta \"{{email}}\" zaten kullanımda.",
-
- // "admin.access-control.epeople.form.notification.edited.success": "Successfully edited EPerson \"{{name}}\"",
- "admin.access-control.epeople.form.notification.edited.success": "E-kişi \"{{name}}\" başarıyla düzenlendi",
-
- // "admin.access-control.epeople.form.notification.edited.failure": "Failed to edit EPerson \"{{name}}\"",
- "admin.access-control.epeople.form.notification.edited.failure": "E-Kişi \"{{name}}\" düzenlenemedi",
-
- // "admin.access-control.epeople.form.notification.deleted.success": "Successfully deleted EPerson \"{{name}}\"",
- "admin.access-control.epeople.form.notification.deleted.success": "E-Kişi \"{{name}}\" başarıyla silindi",
-
- // "admin.access-control.epeople.form.notification.deleted.failure": "Failed to delete EPerson \"{{name}}\"",
- "admin.access-control.epeople.form.notification.deleted.failure": "E-Kişi \"{{name}}\" silinemedi",
-
- // "admin.access-control.epeople.form.groupsEPersonIsMemberOf": "Member of these groups:",
- "admin.access-control.epeople.form.groupsEPersonIsMemberOf": "Bu grupların üyesi:",
-
- // "admin.access-control.epeople.form.table.id": "ID",
- "admin.access-control.epeople.form.table.id": "Kimlik",
-
- // "admin.access-control.epeople.form.table.name": "Name",
- "admin.access-control.epeople.form.table.name": "İsim",
-
- // "admin.access-control.epeople.form.memberOfNoGroups": "This EPerson is not a member of any groups",
- "admin.access-control.epeople.form.memberOfNoGroups": "Bu E-Kişi herhangi bir grubun üyesi değil",
-
- // "admin.access-control.epeople.form.goToGroups": "Add to groups",
- "admin.access-control.epeople.form.goToGroups": "Gruplar ekle",
-
- // "admin.access-control.epeople.notification.deleted.failure": "Failed to delete EPerson: \"{{name}}\"",
- "admin.access-control.epeople.notification.deleted.failure": "E-Kişi silinemedi: \"{{name}}\"",
-
- // "admin.access-control.epeople.notification.deleted.success": "Successfully deleted EPerson: \"{{name}}\"",
- "admin.access-control.epeople.notification.deleted.success": "E-Kişiler başarıyla silindi: \"{{name}}\"",
-
-
-
- // "admin.access-control.groups.title": "DSpace Angular :: Groups",
- "admin.access-control.groups.title": "DSpace Angular :: Gruplar",
-
- // "admin.access-control.groups.title.singleGroup": "DSpace Angular :: Edit Group",
- "admin.access-control.groups.title.singleGroup": "DSpace Angular :: Grubu Düzenle",
-
- // "admin.access-control.groups.title.addGroup": "DSpace Angular :: New Group",
- "admin.access-control.groups.title.addGroup": "DSpace Angular :: Yeni Grup",
-
- // "admin.access-control.groups.head": "Groups",
- "admin.access-control.groups.head": "Gruplar",
-
- // "admin.access-control.groups.button.add": "Add group",
- "admin.access-control.groups.button.add": "Grup ekle",
-
- // "admin.access-control.groups.search.head": "Search groups",
- "admin.access-control.groups.search.head": "Grupları ara",
-
- // "admin.access-control.groups.button.see-all": "Browse all",
- "admin.access-control.groups.button.see-all": "Tümüne göz at",
-
- // "admin.access-control.groups.search.button": "Search",
- "admin.access-control.groups.search.button": "Ara",
-
- // "admin.access-control.groups.table.id": "ID",
- "admin.access-control.groups.table.id": "Kimlik",
-
- // "admin.access-control.groups.table.name": "Name",
- "admin.access-control.groups.table.name": "İsim",
-
- // "admin.access-control.groups.table.members": "Members",
- "admin.access-control.groups.table.members": "Üyeler",
-
- // "admin.access-control.groups.table.edit": "Edit",
- "admin.access-control.groups.table.edit": "Düzenle",
-
- // "admin.access-control.groups.table.edit.buttons.edit": "Edit \"{{name}}\"",
- "admin.access-control.groups.table.edit.buttons.edit": "Düzenle \"{{name}}\"",
-
- // "admin.access-control.groups.table.edit.buttons.remove": "Delete \"{{name}}\"",
- "admin.access-control.groups.table.edit.buttons.remove": "Sil \"{{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": "Bu adla veya bu UUID olarak hiçbir grup bulunamadı",
-
- // "admin.access-control.groups.notification.deleted.success": "Successfully deleted group \"{{name}}\"",
- "admin.access-control.groups.notification.deleted.success": "\"{{name}}\" grubu başarıyla silindi",
-
- // "admin.access-control.groups.notification.deleted.failure.title": "Failed to delete group \"{{name}}\"",
- "admin.access-control.groups.notification.deleted.failure.title": "\"{{name}}\" grubu silinemedi",
-
- // "admin.access-control.groups.notification.deleted.failure.content": "Cause: \"{{cause}}\"",
- "admin.access-control.groups.notification.deleted.failure.content": "Sorun: \"{{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": "Bu grup kalıcıdır, bu nedenle düzenlenemez veya silinemez. Yine de bu sayfayı kullanarak grup üyeleri ekleyip kaldırabilirsiniz.",
-
- // "admin.access-control.groups.form.alert.workflowGroup": "This group can’t be modified or deleted because it corresponds to a role in the submission and workflow process in the \"{{name}}\" {{comcol}}. You can delete it from the \"assign roles\" tab on the edit {{comcol}} page. You can still add and remove group members using this page.",
- "admin.access-control.groups.form.alert.workflowGroup": "Bu grup, \"{{name}}\" {{comcol}} içindeki gönderim ve iş akışı sürecindeki bir role karşılık geldiği için değiştirilemez veya silinemez. Bunu, {{comcol}} düzenleme sayfasındaki \"rol ata\" sekmesinden silebilirsiniz. Yine de bu sayfayı kullanarak grup üyeleri ekleyip kaldırabilirsiniz.",
-
- // "admin.access-control.groups.form.head.create": "Create group",
- "admin.access-control.groups.form.head.create": "Grup oluştur",
-
- // "admin.access-control.groups.form.head.edit": "Edit group",
- "admin.access-control.groups.form.head.edit": "Grubu düzenle",
-
- // "admin.access-control.groups.form.groupName": "Group name",
- "admin.access-control.groups.form.groupName": "Grup adı",
-
- // "admin.access-control.groups.form.groupDescription": "Description",
- "admin.access-control.groups.form.groupDescription": "Açıklama",
-
- // "admin.access-control.groups.form.notification.created.success": "Successfully created Group \"{{name}}\"",
- "admin.access-control.groups.form.notification.created.success": "Grup \"{{name}}\" başarıyla oluşturuldu",
-
- // "admin.access-control.groups.form.notification.created.failure": "Failed to create Group \"{{name}}\"",
- "admin.access-control.groups.form.notification.created.failure": "\"{{name}}\" Grubu oluşturulamadı",
-
- // "admin.access-control.groups.form.notification.created.failure.groupNameInUse": "Failed to create Group with name: \"{{name}}\", make sure the name is not already in use.",
- "admin.access-control.groups.form.notification.created.failure.groupNameInUse": "Şu ada sahip Grup oluşturulamadı: \"{{name}}\", adın halihazırda kullanımda olmadığından emin olun.",
-
- // "admin.access-control.groups.form.notification.edited.failure": "Failed to edit Group \"{{name}}\"",
- "admin.access-control.groups.form.notification.edited.failure": "\"{{name}}\" Grubu düzenlenemedi",
-
- // "admin.access-control.groups.form.notification.edited.failure.groupNameInUse": "Name \"{{name}}\" already in use!",
- "admin.access-control.groups.form.notification.edited.failure.groupNameInUse": "\"{{name}}\" adı zaten kullanılıyor!",
-
- // "admin.access-control.groups.form.notification.edited.success": "Successfully edited Group \"{{name}}\"",
- "admin.access-control.groups.form.notification.edited.success": "\"{{name}}\" Grubu başarıyla düzenlendi",
-
- // "admin.access-control.groups.form.actions.delete": "Delete Group",
- "admin.access-control.groups.form.actions.delete": "Grubu Sil",
-
- // "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
- "admin.access-control.groups.form.delete-group.modal.header": "\"{{ dsoName }}\" Grubunu Sil",
-
- // "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\"",
- "admin.access-control.groups.form.delete-group.modal.info": "\"{{ dsoName }}\" Grubunu silmek istediğinizden emin misiniz?",
-
- // "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
- "admin.access-control.groups.form.delete-group.modal.cancel": "İptal",
-
- // "admin.access-control.groups.form.delete-group.modal.confirm": "Delete",
- "admin.access-control.groups.form.delete-group.modal.confirm": "Sil",
-
- // "admin.access-control.groups.form.notification.deleted.success": "Successfully deleted group \"{{ name }}\"",
- "admin.access-control.groups.form.notification.deleted.success": "\"{{ name }}\" grubu başarıyla silindi",
-
- // "admin.access-control.groups.form.notification.deleted.failure.title": "Failed to delete group \"{{ name }}\"",
- "admin.access-control.groups.form.notification.deleted.failure.title": "\"{{ name }}\" grubu silinemedi",
-
- // "admin.access-control.groups.form.notification.deleted.failure.content": "Cause: \"{{ cause }}\"",
- "admin.access-control.groups.form.notification.deleted.failure.content": "Sorun: \"{{ cause }}\"",
-
- // "admin.access-control.groups.form.members-list.head": "EPeople",
- "admin.access-control.groups.form.members-list.head": "E-Kişiler",
-
- // "admin.access-control.groups.form.members-list.search.head": "Add EPeople",
- "admin.access-control.groups.form.members-list.search.head": "E-Kişiler Ekle",
-
- // "admin.access-control.groups.form.members-list.button.see-all": "Browse All",
- "admin.access-control.groups.form.members-list.button.see-all": "Tümüne Gözat",
-
- // "admin.access-control.groups.form.members-list.headMembers": "Current Members",
- "admin.access-control.groups.form.members-list.headMembers": "Mevcut Üyeler",
-
- // "admin.access-control.groups.form.members-list.search.scope.metadata": "Metadata",
- "admin.access-control.groups.form.members-list.search.scope.metadata": "Metaveri",
-
- // "admin.access-control.groups.form.members-list.search.scope.email": "E-mail (exact)",
- "admin.access-control.groups.form.members-list.search.scope.email": "E-posta (tam)",
-
- // "admin.access-control.groups.form.members-list.search.button": "Search",
- "admin.access-control.groups.form.members-list.search.button": "Ara",
-
- // "admin.access-control.groups.form.members-list.table.id": "ID",
- "admin.access-control.groups.form.members-list.table.id": "Kimlik",
-
- // "admin.access-control.groups.form.members-list.table.name": "Name",
- "admin.access-control.groups.form.members-list.table.name": "İsim",
-
- // "admin.access-control.groups.form.members-list.table.edit": "Remove / Add",
- "admin.access-control.groups.form.members-list.table.edit": "Kaldır / Ekle",
-
- // "admin.access-control.groups.form.members-list.table.edit.buttons.remove": "Remove member with name \"{{name}}\"",
- "admin.access-control.groups.form.members-list.table.edit.buttons.remove": "\"{{name}}\" adlı üyeyi kaldırın",
-
- // "admin.access-control.groups.form.members-list.notification.success.addMember": "Successfully added member: \"{{name}}\"",
- "admin.access-control.groups.form.members-list.notification.success.addMember": "Üye başarıyla eklendi: \"{{name}}\"",
-
- // "admin.access-control.groups.form.members-list.notification.failure.addMember": "Failed to add member: \"{{name}}\"",
- "admin.access-control.groups.form.members-list.notification.failure.addMember": "Üye eklenemedi: \"{{name}}\"",
-
- // "admin.access-control.groups.form.members-list.notification.success.deleteMember": "Successfully deleted member: \"{{name}}\"",
- "admin.access-control.groups.form.members-list.notification.success.deleteMember": "Üye başarıyla silindi: \"{{name}}\"",
-
- // "admin.access-control.groups.form.members-list.notification.failure.deleteMember": "Failed to delete member: \"{{name}}\"",
- "admin.access-control.groups.form.members-list.notification.failure.deleteMember": "Üye silinemedi: \"{{name}}\"",
-
- // "admin.access-control.groups.form.members-list.table.edit.buttons.add": "Add member with name \"{{name}}\"",
- "admin.access-control.groups.form.members-list.table.edit.buttons.add": "\"{{name}}\" adlı üye ekleyin",
-
- // "admin.access-control.groups.form.members-list.notification.failure.noActiveGroup": "No current active group, submit a name first.",
- "admin.access-control.groups.form.members-list.notification.failure.noActiveGroup": "Mevcut aktif grup yok, önce bir isim gönderin.",
-
- // "admin.access-control.groups.form.members-list.no-members-yet": "No members in group yet, search and add.",
- "admin.access-control.groups.form.members-list.no-members-yet": "Henüz grupta üye yok, arayın ve ekleyin.",
-
- // "admin.access-control.groups.form.members-list.no-items": "No EPeople found in that search",
- "admin.access-control.groups.form.members-list.no-items": "Bu aramada E-Kişiler bulunamadı",
-
- // "admin.access-control.groups.form.subgroups-list.notification.failure": "Something went wrong: \"{{cause}}\"",
- "admin.access-control.groups.form.subgroups-list.notification.failure": "Bir şeyler yanlış gitti: \"{{cause}}\"",
-
- // "admin.access-control.groups.form.subgroups-list.head": "Groups",
- "admin.access-control.groups.form.subgroups-list.head": "Gruplar",
-
- // "admin.access-control.groups.form.subgroups-list.search.head": "Add Subgroup",
- "admin.access-control.groups.form.subgroups-list.search.head": "Alt Grup Ekle",
-
- // "admin.access-control.groups.form.subgroups-list.button.see-all": "Browse All",
- "admin.access-control.groups.form.subgroups-list.button.see-all": "Tümüne Gözat",
-
- // "admin.access-control.groups.form.subgroups-list.headSubgroups": "Current Subgroups",
- "admin.access-control.groups.form.subgroups-list.headSubgroups": "Mevcut Alt Gruplar",
-
- // "admin.access-control.groups.form.subgroups-list.search.button": "Search",
- "admin.access-control.groups.form.subgroups-list.search.button": "Ara",
-
- // "admin.access-control.groups.form.subgroups-list.table.id": "ID",
- "admin.access-control.groups.form.subgroups-list.table.id": "Kimlik",
-
- // "admin.access-control.groups.form.subgroups-list.table.name": "Name",
- "admin.access-control.groups.form.subgroups-list.table.name": "İsim",
-
- // "admin.access-control.groups.form.subgroups-list.table.edit": "Remove / Add",
- "admin.access-control.groups.form.subgroups-list.table.edit": "Kaldır / Ekle",
-
- // "admin.access-control.groups.form.subgroups-list.table.edit.buttons.remove": "Remove subgroup with name \"{{name}}\"",
- "admin.access-control.groups.form.subgroups-list.table.edit.buttons.remove": "\"{{name}}\" adlı alt grubu kaldırın",
-
- // "admin.access-control.groups.form.subgroups-list.table.edit.buttons.add": "Add subgroup with name \"{{name}}\"",
- "admin.access-control.groups.form.subgroups-list.table.edit.buttons.add": "\"{{name}}\" adlı alt grup ekleyin",
-
- // "admin.access-control.groups.form.subgroups-list.table.edit.currentGroup": "Current group",
- "admin.access-control.groups.form.subgroups-list.table.edit.currentGroup": "Mevcut grup",
-
- // "admin.access-control.groups.form.subgroups-list.notification.success.addSubgroup": "Successfully added subgroup: \"{{name}}\"",
- "admin.access-control.groups.form.subgroups-list.notification.success.addSubgroup": "Alt grup başarıyla eklendi: \"{{name}}\"",
-
- // "admin.access-control.groups.form.subgroups-list.notification.failure.addSubgroup": "Failed to add subgroup: \"{{name}}\"",
- "admin.access-control.groups.form.subgroups-list.notification.failure.addSubgroup": "Alt grup eklenemedi: \"{{name}}\"",
-
- // "admin.access-control.groups.form.subgroups-list.notification.success.deleteSubgroup": "Successfully deleted subgroup: \"{{name}}\"",
- "admin.access-control.groups.form.subgroups-list.notification.success.deleteSubgroup": "Alt grup başarıyla silindi: \"{{name}}\"",
-
- // "admin.access-control.groups.form.subgroups-list.notification.failure.deleteSubgroup": "Failed to delete subgroup: \"{{name}}\"",
- "admin.access-control.groups.form.subgroups-list.notification.failure.deleteSubgroup": "Alt grup silinemedi: \"{{name}}\"",
-
- // "admin.access-control.groups.form.subgroups-list.notification.failure.noActiveGroup": "No current active group, submit a name first.",
- "admin.access-control.groups.form.subgroups-list.notification.failure.noActiveGroup": "Aktif grup mevcut değil, önce bir isim gönderin.",
-
- // "admin.access-control.groups.form.subgroups-list.notification.failure.subgroupToAddIsActiveGroup": "This is the current group, can't be added.",
- "admin.access-control.groups.form.subgroups-list.notification.failure.subgroupToAddIsActiveGroup": "Bu grup mevcut, eklenemez.",
-
- // "admin.access-control.groups.form.subgroups-list.no-items": "No groups found with this in their name or this as UUID",
- "admin.access-control.groups.form.subgroups-list.no-items": "Bu adla veya bu UUID olarak hiçbir grup bulunamadı",
-
- // "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": "Henüz grupta alt grup yok.",
-
- // "admin.access-control.groups.form.return": "Return to groups",
- "admin.access-control.groups.form.return": "Gruplara dön",
-
-
-
- // "admin.search.breadcrumbs": "Administrative Search",
- "admin.search.breadcrumbs": "Yönetimsel Arama",
-
- // "admin.search.collection.edit": "Edit",
- "admin.search.collection.edit": "Düzenle",
-
- // "admin.search.community.edit": "Edit",
- "admin.search.community.edit": "Düzenle",
-
- // "admin.search.item.delete": "Delete",
- "admin.search.item.delete": "Sil",
-
- // "admin.search.item.edit": "Edit",
- "admin.search.item.edit": "Düzenle",
-
- // "admin.search.item.make-private": "Make Private",
- "admin.search.item.make-private": "Özel yap",
-
- // "admin.search.item.make-public": "Make Public",
- "admin.search.item.make-public": "Ortak yap",
-
- // "admin.search.item.move": "Move",
- "admin.search.item.move": "Taşı",
-
- // "admin.search.item.reinstate": "Reinstate",
- "admin.search.item.reinstate": "Eski durumuna getir",
-
- // "admin.search.item.withdraw": "Withdraw",
- "admin.search.item.withdraw": "Çekil",
-
- // "admin.search.title": "Administrative Search",
- "admin.search.title": "Yönetimsel Arama",
-
- // "administrativeView.search.results.head": "Administrative Search",
- "administrativeView.search.results.head": "Yönetimsel Arama",
-
-
-
-
- // "admin.workflow.breadcrumbs": "Administer Workflow",
- "admin.workflow.breadcrumbs": "İş Akışını Yönet",
-
- // "admin.workflow.title": "Administer Workflow",
- "admin.workflow.title": "İş Akışını Yönet",
-
- // "admin.workflow.item.workflow": "Workflow",
- "admin.workflow.item.workflow": "İş akışı",
-
- // "admin.workflow.item.delete": "Delete",
- "admin.workflow.item.delete": "Sil",
-
- // "admin.workflow.item.send-back": "Send back",
- "admin.workflow.item.send-back": "Geri gönder",
-
-
-
- // "admin.metadata-import.breadcrumbs": "Import Metadata",
- "admin.metadata-import.breadcrumbs": "Metaverileri İçe Aktar",
-
- // "admin.metadata-import.title": "Import Metadata",
- "admin.metadata-import.title": "Metaverileri İçe Aktar",
-
- // "admin.metadata-import.page.header": "Import Metadata",
- "admin.metadata-import.page.header": "Metaverileri İçe Aktar",
-
- // "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": "Dosyalarda toplu meta veri işlemleri içeren CSV dosyalarını buraya bırakabilir veya bunlara göz atabilirsiniz.",
-
- // "admin.metadata-import.page.dropMsg": "Drop a metadata CSV to import",
- "admin.metadata-import.page.dropMsg": "İçe aktarmak için bir metaveri CSV'si bırakın",
-
- // "admin.metadata-import.page.dropMsgReplace": "Drop to replace the metadata CSV to import",
- "admin.metadata-import.page.dropMsgReplace": "İçe aktarılacak CSV metaverilerini değiştirmek için bırakın",
-
- // "admin.metadata-import.page.button.return": "Return",
- "admin.metadata-import.page.button.return": "Geri Dön",
-
- // "admin.metadata-import.page.button.proceed": "Proceed",
- "admin.metadata-import.page.button.proceed": "Devam Et",
-
- // "admin.metadata-import.page.error.addFile": "Select file first!",
- "admin.metadata-import.page.error.addFile": "Önce dosyayı seçin!",
-
-
-
-
- // "auth.errors.invalid-user": "Invalid email address or password.",
- "auth.errors.invalid-user": "Geçersiz e-posta adresi veya parola.",
-
- // "auth.messages.expired": "Your session has expired. Please log in again.",
- "auth.messages.expired": "Oturumunuz sona erdi. Lütfen tekrar giriş yapın.",
-
-
-
- // "bitstream.edit.bitstream": "Bitstream: ",
- "bitstream.edit.bitstream": "Veri akışı: ",
-
- // "bitstream.edit.form.description.hint": "Optionally, provide a brief description of the file, for example \"Main article \" or \"Experiment data readings \".",
- "bitstream.edit.form.description.hint": "İsteğe bağlı olarak, dosyanın kısa bir açıklamasını sağlayın, örneğin \"Ana makale \" veya \"Deneme veri okumaları \".",
-
- // "bitstream.edit.form.description.label": "Description",
- "bitstream.edit.form.description.label": "Açıklama",
-
- // "bitstream.edit.form.embargo.hint": "The first day from which access is allowed. This date cannot be modified on this form. To set an embargo date for a bitstream, go to the Item Status tab, click Authorizations... , create or edit the bitstream's READ policy, and set the Start Date as desired.",
- "bitstream.edit.form.embargo.hint": "Erişime izin verilen ilk gün. Bu tarih bu formda değiştirilemez. Bir veri akışı için bir ambargo tarihi ayarlamak için Öğe Durumu sekmesine gidin, Yetkiler... 'i tıklayın., veri akışının OKU politikasını oluşturun veya düzenleyin ve Başlangıç Tarihi 'ni istediğiniz gibi ayarlayın.",
-
- // "bitstream.edit.form.embargo.label": "Embargo until specific date",
- "bitstream.edit.form.embargo.label": "Belirli bir tarihe kadar ambargo",
-
- // "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": "Veri akışının dosya adını değiştirin. Bunun görünen veri akışı URL'sini değiştireceğini, ancak dizi kimliği değişmediği sürece eski bağlantıların çözüleceğini unutmayın.",
-
- // "bitstream.edit.form.fileName.label": "Filename",
- "bitstream.edit.form.fileName.label": "Dosya adı",
-
- // "bitstream.edit.form.newFormat.label": "Describe new format",
- "bitstream.edit.form.newFormat.label": "Yeni biçimi tanımla",
-
- // "bitstream.edit.form.newFormat.hint": "The application you used to create the file, and the version number (for example, \"ACMESoft SuperApp version 1.5 \").",
- "bitstream.edit.form.newFormat.hint": "Dosyayı oluşturmak için kullandığınız uygulama ve sürüm numarası (örneğin, \"ACMESoft SuperApp versiyon 1.5 \").",
-
- // "bitstream.edit.form.primaryBitstream.label": "Primary bitstream",
- "bitstream.edit.form.primaryBitstream.label": "Birincil veri akışı",
-
- // "bitstream.edit.form.selectedFormat.hint": "If the format is not in the above list, select \"format not in list\" above and describe it under \"Describe new format\".",
- "bitstream.edit.form.selectedFormat.hint": "Biçim yukarıdaki listede yoksa, select \"listede olmayan biçim\"i above ve \"Yeni biçimi tanımla\" altında açıklayın.",
-
- // "bitstream.edit.form.selectedFormat.label": "Selected Format",
- "bitstream.edit.form.selectedFormat.label": "Seçilen Biçim",
-
- // "bitstream.edit.form.selectedFormat.unknown": "Format not in list",
- "bitstream.edit.form.selectedFormat.unknown": "Listede olmayan biçim",
-
- // "bitstream.edit.notifications.error.format.title": "An error occurred saving the bitstream's format",
- "bitstream.edit.notifications.error.format.title": "Veri akışının biçimi kaydedilirken bir hata oluştu",
-
- // "bitstream.edit.notifications.saved.content": "Your changes to this bitstream were saved.",
- "bitstream.edit.notifications.saved.content": "Bu veri akışında yaptığınız değişiklikler kaydedildi.",
-
- // "bitstream.edit.notifications.saved.title": "Bitstream saved",
- "bitstream.edit.notifications.saved.title": "Veri akışı kaydedildi",
-
- // "bitstream.edit.title": "Edit bitstream",
- "bitstream.edit.title": "Veri akışını düzenle",
-
-
-
- // "browse.comcol.by.author": "By Author",
- "browse.comcol.by.author": "Yazara Göre",
-
- // "browse.comcol.by.dateissued": "By Issue Date",
- "browse.comcol.by.dateissued": "Çıkarma Tarihine Göre",
-
- // "browse.comcol.by.subject": "By Subject",
- "browse.comcol.by.subject": "Konuya Göre",
-
- // "browse.comcol.by.title": "By Title",
- "browse.comcol.by.title": "Başlığa Göre",
-
- // "browse.comcol.head": "Browse",
- "browse.comcol.head": "Gözat",
-
- // "browse.empty": "No items to show.",
- "browse.empty": "Gösterilecek öğe yok.",
-
- // "browse.metadata.author": "Author",
- "browse.metadata.author": "Yazar",
-
- // "browse.metadata.dateissued": "Issue Date",
- "browse.metadata.dateissued": "Çıkarma tarihi",
-
- // "browse.metadata.subject": "Subject",
- "browse.metadata.subject": "Konu",
-
- // "browse.metadata.title": "Title",
- "browse.metadata.title": "Başlık",
-
- // "browse.metadata.author.breadcrumbs": "Browse by Author",
- "browse.metadata.author.breadcrumbs": "Yazara Göre Gözat",
-
- // "browse.metadata.dateissued.breadcrumbs": "Browse by Date",
- "browse.metadata.dateissued.breadcrumbs": "Tarihe Göre Gözat",
-
- // "browse.metadata.subject.breadcrumbs": "Browse by Subject",
- "browse.metadata.subject.breadcrumbs": "Konuya Göre Gözat",
-
- // "browse.metadata.title.breadcrumbs": "Browse by Title",
- "browse.metadata.title.breadcrumbs": "Başlığa göre göz atın",
-
- // "browse.startsWith.choose_start": "(Choose start)",
- "browse.startsWith.choose_start": "(Başlangıç seç)",
-
- // "browse.startsWith.choose_year": "(Choose year)",
- "browse.startsWith.choose_year": "(Yıl seç)",
-
- // "browse.startsWith.jump": "Jump to a point in the index:",
- "browse.startsWith.jump": "Dizinde bir noktaya atla:",
-
- // "browse.startsWith.months.april": "April",
- "browse.startsWith.months.april": "Nisan",
-
- // "browse.startsWith.months.august": "August",
- "browse.startsWith.months.august": "Ağustos",
-
- // "browse.startsWith.months.december": "December",
- "browse.startsWith.months.december": "Aralık",
-
- // "browse.startsWith.months.february": "February",
- "browse.startsWith.months.february": "Şubat",
-
- // "browse.startsWith.months.january": "January",
- "browse.startsWith.months.january": "Ocak",
-
- // "browse.startsWith.months.july": "July",
- "browse.startsWith.months.july": "Temmuz",
-
- // "browse.startsWith.months.june": "June",
- "browse.startsWith.months.june": "Haziran",
-
- // "browse.startsWith.months.march": "March",
- "browse.startsWith.months.march": "Mart",
-
- // "browse.startsWith.months.may": "May",
- "browse.startsWith.months.may": "Mayıs",
-
- // "browse.startsWith.months.none": "(Choose month)",
- "browse.startsWith.months.none": "(Ay seçin)",
-
- // "browse.startsWith.months.november": "November",
- "browse.startsWith.months.november": "Kasım",
-
- // "browse.startsWith.months.october": "October",
- "browse.startsWith.months.october": "Ekim",
-
- // "browse.startsWith.months.september": "September",
- "browse.startsWith.months.september": "Eylül",
-
- // "browse.startsWith.submit": "Go",
- "browse.startsWith.submit": "Git",
-
- // "browse.startsWith.type_date": "Or type in a date (year-month):",
- "browse.startsWith.type_date": "Veya bir tarih yazın (yıl-ay):",
-
- // "browse.startsWith.type_text": "Or enter first few letters:",
- "browse.startsWith.type_text": "Veya ilk birkaç harfi girin:",
-
- // "browse.title": "Browsing {{ collection }} by {{ field }} {{ value }}",
- "browse.title": "{{ field }} {{ value }} ile {{ collection }}'a göz atma",
-
-
- // "chips.remove": "Remove chip",
- "chips.remove": "Çipi kaldır",
-
-
-
- // "collection.create.head": "Create a Collection",
- "collection.create.head": "Koleksiyon Oluştur",
-
- // "collection.create.notifications.success": "Successfully created the Collection",
- "collection.create.notifications.success": "Koleksiyon başarıyla oluşturuldu",
-
- // "collection.create.sub-head": "Create a Collection for Community {{ parent }}",
- "collection.create.sub-head": "Topluluk için Koleksiyon Oluşturun {{ parent }}",
-
- // "collection.curate.header": "Curate Collection: {{collection}}",
- "collection.curate.header": "Koleksiyonu Düzenle: {{collection}}",
-
- // "collection.delete.cancel": "Cancel",
- "collection.delete.cancel": "İptal",
-
- // "collection.delete.confirm": "Confirm",
- "collection.delete.confirm": "Onayla",
-
- // "collection.delete.head": "Delete Collection",
- "collection.delete.head": "Koleksiyonu sil",
-
- // "collection.delete.notification.fail": "Collection could not be deleted",
- "collection.delete.notification.fail": "Koleksiyon silinemedi",
-
- // "collection.delete.notification.success": "Successfully deleted collection",
- "collection.delete.notification.success": "Koleksiyon başarıyla silindi",
-
- // "collection.delete.text": "Are you sure you want to delete collection \"{{ dso }}\"",
- "collection.delete.text": "\"{{ dso }}\" koleksiyonunu silmek istediğinizden emin misiniz?",
-
-
-
- // "collection.edit.delete": "Delete this collection",
- "collection.edit.delete": "Bu koleksiyonu sil",
-
- // "collection.edit.head": "Edit Collection",
- "collection.edit.head": "Koleksiyonu Düzenle",
-
- // "collection.edit.breadcrumbs": "Edit Collection",
- "collection.edit.breadcrumbs": "Koleksiyonu Düzenle",
-
-
-
- // "collection.edit.tabs.mapper.head": "Item Mapper",
- "collection.edit.tabs.mapper.head": "Öğe eşleştirici",
-
- // "collection.edit.tabs.item-mapper.title": "Collection Edit - Item Mapper",
- "collection.edit.tabs.item-mapper.title": "Koleksiyon Düzenleme - Öğe Eşleştirici",
-
- // "collection.edit.item-mapper.cancel": "Cancel",
- "collection.edit.item-mapper.cancel": "İptal",
-
- // "collection.edit.item-mapper.collection": "Collection: \"{{name}} \"",
- "collection.edit.item-mapper.collection": "Koleksiyon: \"{{name}} \"",
-
- // "collection.edit.item-mapper.confirm": "Map selected items",
- "collection.edit.item-mapper.confirm": "Seçilen öğeleri eşle",
-
- // "collection.edit.item-mapper.description": "This is the item mapper tool that allows collection administrators to map items from other collections into this collection. You can search for items from other collections and map them, or browse the list of currently mapped items.",
- "collection.edit.item-mapper.description": "Bu, koleksiyon yöneticilerinin diğer koleksiyonlardaki öğeleri bu koleksiyona eşlemelerine olanak tanıyan öğe eşleyici aracıdır. Diğer koleksiyonlardaki öğeleri arayabilir ve bunları eşleyebilir veya şu anda eşlenmiş öğelerin listesine göz atabilirsiniz.",
-
- // "collection.edit.item-mapper.head": "Item Mapper - Map Items from Other Collections",
- "collection.edit.item-mapper.head": "Öğe Eşleştirici - Diğer Koleksiyonlardaki Öğeleri Eşle",
-
- // "collection.edit.item-mapper.no-search": "Please enter a query to search",
- "collection.edit.item-mapper.no-search": "Lütfen aramak için bir sorgu girin",
-
- // "collection.edit.item-mapper.notifications.map.error.content": "Errors occurred for mapping of {{amount}} items.",
- "collection.edit.item-mapper.notifications.map.error.content": "{{amount}} öğenin eşlenmesinde hatalar oluştu.",
-
- // "collection.edit.item-mapper.notifications.map.error.head": "Mapping errors",
- "collection.edit.item-mapper.notifications.map.error.head": "Eşleme hataları",
-
- // "collection.edit.item-mapper.notifications.map.success.content": "Successfully mapped {{amount}} items.",
- "collection.edit.item-mapper.notifications.map.success.content": "{{amount}} öğe başarıyla eşlendi.",
-
- // "collection.edit.item-mapper.notifications.map.success.head": "Mapping completed",
- "collection.edit.item-mapper.notifications.map.success.head": "Eşleme tamamlandı",
-
- // "collection.edit.item-mapper.notifications.unmap.error.content": "Errors occurred for removing the mappings of {{amount}} items.",
- "collection.edit.item-mapper.notifications.unmap.error.content": "{{amount}} öğenin eşlemeleri kaldırılırken hatalar oluştu.",
-
- // "collection.edit.item-mapper.notifications.unmap.error.head": "Remove mapping errors",
- "collection.edit.item-mapper.notifications.unmap.error.head": "Eşleme hatalarını kaldır",
-
- // "collection.edit.item-mapper.notifications.unmap.success.content": "Successfully removed the mappings of {{amount}} items.",
- "collection.edit.item-mapper.notifications.unmap.success.content": "{{amount}} öğenin eşlemeleri başarıyla kaldırıldı.",
-
- // "collection.edit.item-mapper.notifications.unmap.success.head": "Remove mapping completed",
- "collection.edit.item-mapper.notifications.unmap.success.head": "Eşlemeyi kaldır tamamlandı",
-
- // "collection.edit.item-mapper.remove": "Remove selected item mappings",
- "collection.edit.item-mapper.remove": "Seçili öğe eşlemelerini kaldır",
-
- // "collection.edit.item-mapper.tabs.browse": "Browse mapped items",
- "collection.edit.item-mapper.tabs.browse": "Eşlenen öğelere göz atın",
-
- // "collection.edit.item-mapper.tabs.map": "Map new items",
- "collection.edit.item-mapper.tabs.map": "Yeni öğeleri işle",
-
-
-
- // "collection.edit.logo.label": "Collection logo",
- "collection.edit.logo.label": "Koleksiyon logosu",
-
- // "collection.edit.logo.notifications.add.error": "Uploading Collection logo failed. Please verify the content before retrying.",
- "collection.edit.logo.notifications.add.error": "Koleksiyon logosu yüklemesi başarısız. Lütfen yeniden denemeden önce içeriği doğrulayın.",
-
- // "collection.edit.logo.notifications.add.success": "Upload Collection logo successful.",
- "collection.edit.logo.notifications.add.success": "Koleksiyon logosu yüklemesi başarılı.",
-
- // "collection.edit.logo.notifications.delete.success.title": "Logo deleted",
- "collection.edit.logo.notifications.delete.success.title": "Logo silindi",
-
- // "collection.edit.logo.notifications.delete.success.content": "Successfully deleted the collection's logo",
- "collection.edit.logo.notifications.delete.success.content": "Koleksiyonun logosunu başarıyla silindi",
-
- // "collection.edit.logo.notifications.delete.error.title": "Error deleting logo",
- "collection.edit.logo.notifications.delete.error.title": "Logo silinirken hata",
-
- // "collection.edit.logo.upload": "Drop a Collection Logo to upload",
- "collection.edit.logo.upload": "Yüklenecek bir koleksiyon logosu bırakın",
-
-
-
- // "collection.edit.notifications.success": "Successfully edited the Collection",
- "collection.edit.notifications.success": "Koleksiyon başarıyla düzenlendi.",
-
- // "collection.edit.return": "Return",
- "collection.edit.return": "Dönüş",
-
-
-
- // "collection.edit.tabs.curate.head": "Curate",
- "collection.edit.tabs.curate.head": "Kuratör",
-
- // "collection.edit.tabs.curate.title": "Collection Edit - Curate",
- "collection.edit.tabs.curate.title": "Koleksiyon düzenleme - Küratör",
-
- // "collection.edit.tabs.authorizations.head": "Authorizations",
- "collection.edit.tabs.authorizations.head": "Yetkilendirmeler",
-
- // "collection.edit.tabs.authorizations.title": "Collection Edit - Authorizations",
- "collection.edit.tabs.authorizations.title": "Koleksiyon düzenleme - Yetkilendirmeler",
-
- // "collection.edit.tabs.metadata.head": "Edit Metadata",
- "collection.edit.tabs.metadata.head": "Meta Verileri Düzenle",
-
- // "collection.edit.tabs.metadata.title": "Collection Edit - Metadata",
- "collection.edit.tabs.metadata.title": "Koleksiyon Düzenle - Meta Veriler",
-
- // "collection.edit.tabs.roles.head": "Assign Roles",
- "collection.edit.tabs.roles.head": "Rol atamak",
-
- // "collection.edit.tabs.roles.title": "Collection Edit - Roles",
- "collection.edit.tabs.roles.title": "Koleksiyon düzenleme - Roller",
-
- // "collection.edit.tabs.source.external": "This collection harvests its content from an external source",
- "collection.edit.tabs.source.external": "Bu koleksiyon içeriğini harici bir kaynaktan toplar",
-
- // "collection.edit.tabs.source.form.errors.oaiSource.required": "You must provide a set id of the target collection.",
- "collection.edit.tabs.source.form.errors.oaiSource.required": "Hedef koleksiyonuna bir set kimliği sağlamalısınız.",
-
- // "collection.edit.tabs.source.form.harvestType": "Content being harvested",
- "collection.edit.tabs.source.form.harvestType": "İçerik harmanlanıyor",
-
- // "collection.edit.tabs.source.form.head": "Configure an external source",
- "collection.edit.tabs.source.form.head": "Harici bir kaynak yapılandır",
-
- // "collection.edit.tabs.source.form.metadataConfigId": "Metadata Format",
- "collection.edit.tabs.source.form.metadataConfigId": "Meta veri formatı",
-
- // "collection.edit.tabs.source.form.oaiSetId": "OAI specific set id",
- "collection.edit.tabs.source.form.oaiSetId": "OAI'ya Özel Set Kimliği",
-
- // "collection.edit.tabs.source.form.oaiSource": "OAI Provider",
- "collection.edit.tabs.source.form.oaiSource": "OAI Sağlayıcısı",
-
- // "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Harvest metadata and bitstreams (requires ORE support)",
- "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Meta verilerini ve veri akışını topla (ORE desteği gerektirir)",
-
- // "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Harvest metadata and references to bitstreams (ORE desteği gerektirir)",
- "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Meta verilerini ve referansları topla (ORE desteği gerektirir)",
-
- // "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Harvest metadata only",
- "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Sadece meta verilerini topla",
-
- // "collection.edit.tabs.source.head": "Content Source",
- "collection.edit.tabs.source.head": "İçerik Kaynağı",
-
- // "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": "Değişiklikleriniz silindi. Değişikliklerinizi eski haline getirmek için 'Geri Al' düğmesine tıklayın.",
-
- // "collection.edit.tabs.source.notifications.discarded.title": "Changed discarded",
- "collection.edit.tabs.source.notifications.discarded.title": "Silinenler değiştirildi.",
-
- // "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": "Değişiklikleriniz kaydedilmedi. Lütfen kaydetmeden önce tüm alanların geçerli olduğundan emin olun.",
-
- // "collection.edit.tabs.source.notifications.invalid.title": "Metadata invalid",
- "collection.edit.tabs.source.notifications.invalid.title": "Meta veri geçersiz",
-
- // "collection.edit.tabs.source.notifications.saved.content": "Your changes to this collection's content source were saved.",
- "collection.edit.tabs.source.notifications.saved.content": "Bu koleksiyonun içerik kaynağındaki değişiklikleriniz kaydedildi.",
-
- // "collection.edit.tabs.source.notifications.saved.title": "Content Source saved",
- "collection.edit.tabs.source.notifications.saved.title": "İçerik Kaynağı kaydedildi",
-
- // "collection.edit.tabs.source.title": "Collection Edit - Content Source",
- "collection.edit.tabs.source.title": "Koleksiyon düzenleme - İçerik Kaynağı",
-
-
-
- // "collection.edit.template.add-button": "Add",
- "collection.edit.template.add-button": "Ekle",
-
- // "collection.edit.template.breadcrumbs": "Item template",
- "collection.edit.template.breadcrumbs": "Öğe şablonu",
-
- // "collection.edit.template.cancel": "Cancel",
- "collection.edit.template.cancel": "İptal",
-
- // "collection.edit.template.delete-button": "Delete",
- "collection.edit.template.delete-button": "Sil",
-
- // "collection.edit.template.edit-button": "Edit",
- "collection.edit.template.edit-button": "Düzenle",
-
- // "collection.edit.template.head": "Edit Template Item for Collection \"{{ collection }}\"",
- "collection.edit.template.head": "Koleksiyon için Sablon Öğesini Düzenleyin \"{{ collection }}\"",
-
- // "collection.edit.template.label": "Template item",
- "collection.edit.template.label": "Şablon öğe",
-
- // "collection.edit.template.notifications.delete.error": "Failed to delete the item template",
- "collection.edit.template.notifications.delete.error": "Öğe şablonu silme başarısız",
-
- // "collection.edit.template.notifications.delete.success": "Successfully deleted the item template",
- "collection.edit.template.notifications.delete.success": "Öğe şablonu başarıyla silindi",
-
- // "collection.edit.template.title": "Edit Template Item",
- "collection.edit.template.title": "Şablon Öğesini Düzenle",
-
-
-
- // "collection.form.abstract": "Short Description",
- "collection.form.abstract": "Kısa Açıklama",
-
- // "collection.form.description": "Introductory text (HTML)",
- "collection.form.description": "Tanıtım metni (HTML)",
-
- // "collection.form.errors.title.required": "Please enter a collection name",
- "collection.form.errors.title.required": "Lütfen bir koleksiyon adı girin",
-
- // "collection.form.license": "License",
- "collection.form.license": "Lisans",
-
- // "collection.form.provenance": "Provenance",
- "collection.form.provenance": "Menşei",
-
- // "collection.form.rights": "Copyright text (HTML)",
- "collection.form.rights": "Telif hakkı metni (HTML)",
-
- // "collection.form.tableofcontents": "News (HTML)",
- "collection.form.tableofcontents": "Haberler (HTML)",
-
- // "collection.form.title": "Name",
- "collection.form.title": "İsim",
-
-
-
- // "collection.listelement.badge": "Collection",
- "collection.listelement.badge": "Koleksiyon",
-
-
-
- // "collection.page.browse.recent.head": "Recent Submissions",
- "collection.page.browse.recent.head": "Son Başvurular",
-
- // "collection.page.browse.recent.empty": "No items to show",
- "collection.page.browse.recent.empty": "Gösterilecek öğe yok",
-
- // "collection.page.edit": "Edit this collection",
- "collection.page.edit": "Bu koleksiyonu düzenleyin",
-
- // "collection.page.handle": "Permanent URI for this collection",
- "collection.page.handle": "Bu koleksiyon için kalıcı URI",
-
- // "collection.page.license": "License",
- "collection.page.license": "Lisans",
-
- // "collection.page.news": "News",
- "collection.page.news": "Haberler",
-
-
-
- // "collection.select.confirm": "Confirm selected",
- "collection.select.confirm": "Seçilileri onayla",
-
- // "collection.select.empty": "No collections to show",
- "collection.select.empty": "Gösterilecek koleksiyon yok",
-
- // "collection.select.table.title": "Title",
- "collection.select.table.title": "Başlık",
-
-
-
- // "collection.source.update.notifications.error.content": "The provided settings have been tested and didn't work.",
- "collection.source.update.notifications.error.content": "Sağlanan ayarlar test edildi ve işe yaramadı.",
-
- // "collection.source.update.notifications.error.title": "Server Error",
- "collection.source.update.notifications.error.title": "Sunucu Hatası",
-
-
-
- // "communityList.tabTitle": "DSpace - Community List",
- "communityList.tabTitle": "DSpace - Topluluk Listesi",
-
- // "communityList.title": "List of Communities",
- "communityList.title": "Toplulukların Listesi",
-
- // "communityList.showMore": "Show More",
- "communityList.showMore": "Daha fazla göster",
-
-
-
- // "community.create.head": "Create a Community",
- "community.create.head": "Bir topluluk oluştur",
-
- // "community.create.notifications.success": "Successfully created the Community",
- "community.create.notifications.success": "Topluluk başarıyla yaratıldı",
-
- // "community.create.sub-head": "Create a Sub-Community for Community {{ parent }}",
- "community.create.sub-head": "Topluluk için bir alt topluluk oluşturun {{ parent }}",
-
- // "community.curate.header": "Curate Community: {{community}}",
- "community.curate.header": "Kuratör topluluğu: {{community}}",
-
- // "community.delete.cancel": "Cancel",
- "community.delete.cancel": "İptal",
-
- // "community.delete.confirm": "Confirm",
- "community.delete.confirm": "Onayla",
-
- // "community.delete.head": "Delete Community",
- "community.delete.head": "Topluluğu sil",
-
- // "community.delete.notification.fail": "Community could not be deleted",
- "community.delete.notification.fail": "Topluluk silinemedi",
-
- // "community.delete.notification.success": "Successfully deleted community",
- "community.delete.notification.success": "Topluluk başarıyla silindi",
-
- // "community.delete.text": "Are you sure you want to delete community \"{{ dso }}\"",
- "community.delete.text": "Topluluğu silmek istediğinize emin misiniz \"{{ dso }}\"",
-
- // "community.edit.delete": "Delete this community",
- "community.edit.delete": "Bu topluluğu sil",
-
- // "community.edit.head": "Edit Community",
- "community.edit.head": "Topluluğu düzenle",
-
- // "community.edit.breadcrumbs": "Edit Community",
- "community.edit.breadcrumbs": "Topluluğu düzenle",
-
-
- // "community.edit.logo.label": "Community logo",
- "community.edit.logo.label": "Topluluk logosu",
-
- // "community.edit.logo.notifications.add.error": "Uploading Community logo failed. Please verify the content before retrying.",
- "community.edit.logo.notifications.add.error": "Topluluk logosu yüklemesi başarısız. Lütfen yeniden denemeden önce içeriği doğrulayın.",
-
- // "community.edit.logo.notifications.add.success": "Upload Community logo successful.",
- "community.edit.logo.notifications.add.success": "Topluluk logosunu başarılı yükle.",
-
- // "community.edit.logo.notifications.delete.success.title": "Logo deleted",
- "community.edit.logo.notifications.delete.success.title": "Logo silindi",
-
- // "community.edit.logo.notifications.delete.success.content": "Successfully deleted the community's logo",
- "community.edit.logo.notifications.delete.success.content": "Topluluk logosu başarıyla silindi",
-
- // "community.edit.logo.notifications.delete.error.title": "Error deleting logo",
- "community.edit.logo.notifications.delete.error.title": "Logo silme hatası",
-
- // "community.edit.logo.upload": "Drop a Community Logo to upload",
- "community.edit.logo.upload": "Yüklenecek bir topluluk logosu bırak",
-
-
-
- // "community.edit.notifications.success": "Successfully edited the Community",
- "community.edit.notifications.success": "Topluluk başarıyla düzenlendi",
-
- // "community.edit.notifications.unauthorized": "You do not have privileges to make this change",
- "community.edit.notifications.unauthorized": "Bu değişikliği yapmak için ayrıcalıklarınız yok",
-
- // "community.edit.notifications.error": "An error occured while editing the Community",
- "community.edit.notifications.error": "Topluluğu düzenlerken bir hata oluştu",
-
- // "community.edit.return": "Return",
- "community.edit.return": "Dönüş",
-
-
-
- // "community.edit.tabs.curate.head": "Curate",
- "community.edit.tabs.curate.head": "Kuratör",
-
- // "community.edit.tabs.curate.title": "Community Edit - Curate",
- "community.edit.tabs.curate.title": "Topluluk Düzenle - Küratör",
-
- // "community.edit.tabs.metadata.head": "Edit Metadata",
- "community.edit.tabs.metadata.head": "Meta Verileri Düzenle",
-
- // "community.edit.tabs.metadata.title": "Community Edit - Metadata",
- "community.edit.tabs.metadata.title": "Topluluk Düzenle - Meta Veriler",
-
- // "community.edit.tabs.roles.head": "Assign Roles",
- "community.edit.tabs.roles.head": "Rol atamak",
-
- // "community.edit.tabs.roles.title": "Community Edit - Roles",
- "community.edit.tabs.roles.title": "Topluluk Düzenle - Roller",
-
- // "community.edit.tabs.authorizations.head": "Authorizations",
- "community.edit.tabs.authorizations.head": "Yetkilendirmeler",
-
- // "community.edit.tabs.authorizations.title": "Community Edit - Authorizations",
- "community.edit.tabs.authorizations.title": "Topluluk Düzenle - Yetkilendirmeler",
-
-
-
- // "community.listelement.badge": "Community",
- "community.listelement.badge": "Topluluk",
-
-
-
- // "comcol-role.edit.no-group": "None",
- "comcol-role.edit.no-group": "Hiçbiri",
-
- // "comcol-role.edit.create": "Create",
- "comcol-role.edit.create": "Oluştur",
-
- // "comcol-role.edit.restrict": "Restrict",
- "comcol-role.edit.restrict": "Kısıtla",
-
- // "comcol-role.edit.delete": "Delete",
- "comcol-role.edit.delete": "Sil",
-
-
- // "comcol-role.edit.community-admin.name": "Yöneticiler",
- "comcol-role.edit.community-admin.name": "Administrators",
-
- // "comcol-role.edit.collection-admin.name": "Administrators",
- "comcol-role.edit.collection-admin.name": "Yöneticiler",
-
-
- // "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": "Topluluk yöneticileri alt topluluklar veya koleksiyonlar oluşturabilir ve bu alt topluluklar veya koleksiyonlar için yönetimi yönetebilir veya atayabilir. Ek olarak, kimsenin herhangi bir alt koleksiyona kimin gönderebileceğine, madde meta verilerini (sunulduktan sonra) düzenleyebileceğine karar verirler ve mevcut eşyaları diğer koleksiyonlardan (yetkilendirmeye tabi) ekleyin.",
-
- // "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": "Koleksiyon yöneticileri, eşyaları koleksiyona kimin gönderebileceğine, öğe meta verilerini (gönderimden sonra) düzenleyebileceğine karar verir ve mevcut eşyaları diğer koleksiyonlardan (bu koleksiyon için yetkilendirmeye tabi) ekleyin.",
-
-
- // "comcol-role.edit.submitters.name": "Submitters",
- "comcol-role.edit.submitters.name": "Göndericiler",
-
- // "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": "Bu koleksiyona yeni eşya gönderme iznine sahip olan E-insanlar ve gruplar.",
-
-
- // "comcol-role.edit.item_read.name": "Default item read access",
- "comcol-role.edit.item_read.name": "Varsayılan öğe okuma erişimi",
-
- // "comcol-role.edit.item_read.description": "E-People and Groups that can read new items submitted to this collection. Changes to this role are not retroactive. Existing items in the system will still be viewable by those who had read access at the time of their addition.",
- "comcol-role.edit.item_read.description": "Bu koleksiyona sunulan yeni eşyaları okuyabilen E-insanlar ve gruplar. Bu roldeki değişiklikler geriye dönük değildir. Sistemdeki mevcut eşyalar, eklemeleri sırasında erişimi okuyanlar tarafından görülebilir.",
-
- // "comcol-role.edit.item_read.anonymous-group": "Default read for incoming items is currently set to Anonymous.",
- "comcol-role.edit.item_read.anonymous-group": "Gelen öğeler için varsayılan okuma şu anda isimsiz olarak ayarlanmıştır.",
-
-
- // "comcol-role.edit.bitstream_read.name": "Default bitstream read access",
- "comcol-role.edit.bitstream_read.name": "Varsayılan veri akışı okuma erişimi",
-
- // "comcol-role.edit.bitstream_read.description": "Community administrators can create sub-communities or collections, and manage or assign management for those sub-communities or collections. In addition, they decide who can submit items to any sub-collections, edit item metadata (after submission), and add (map) existing items from other collections (subject to authorization).",
- "comcol-role.edit.bitstream_read.description": "Topluluk yöneticileri alt topluluklar veya koleksiyonlar oluşturabilir ve bu alt topluluklar veya koleksiyonlar için yönetimi yönetebilir veya atayabilirler. Ek olarak, eşyaları herhangi bir alt koleksiyona kimin gönderebileceğine, öğe meta verilerini (sunulduktan sonra) düzenleyebilir ve harita) Diğer koleksiyonlardan gelen mevcut eşyalar (yetkilendirmeye tabi).",
-
- // "comcol-role.edit.bitstream_read.anonymous-group": "Default read for incoming bitstreams is currently set to Anonymous.",
- "comcol-role.edit.bitstream_read.anonymous-group": "Gelen veri akışı için varsayılan okuma şu anda anonim olarak ayarlanmıştır.",
-
-
- // "comcol-role.edit.editor.name": "Editors",
- "comcol-role.edit.editor.name": "Editörler",
-
- // "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": "Editörler, gelen gönderilerin meta verilerini düzenleyebilir ve ardından onları kabul edebilir veya reddedebilir.",
-
-
- // "comcol-role.edit.finaleditor.name": "Final editors",
- "comcol-role.edit.finaleditor.name": "Son editörler",
-
- // "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": "Nihai editörler gelen başvuruların meta verilerini düzenleyebilir, ancak onları reddedebilir.",
-
-
- // "comcol-role.edit.reviewer.name": "Reviewers",
- "comcol-role.edit.reviewer.name": "Yorumcular",
-
- // "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": "Yorumcular gelen başvuruları kabul edebilir veya reddedebilirler. Ancak, gönderimin meta verilerini düzenleyemezler.",
-
-
-
- // "community.form.abstract": "Short Description",
- "community.form.abstract": "Kısa Açıklama",
-
- // "community.form.description": "Introductory text (HTML)",
- "community.form.description": "Tanıtım metni (HTML)",
-
- // "community.form.errors.title.required": "Please enter a community name",
- "community.form.errors.title.required": "Lütfen bir topluluk adı girin",
-
- // "community.form.rights": "Copyright text (HTML)",
- "community.form.rights": "Telif Hakkı Metni (HTML)",
-
- // "community.form.tableofcontents": "News (HTML)",
- "community.form.tableofcontents": "Haberler (HTML)",
-
- // "community.form.title": "Name",
- "community.form.title": "İsim",
-
- // "community.page.edit": "Edit this community",
- "community.page.edit": "Bu topluluğu düzenle",
-
- // "community.page.handle": "Permanent URI for this community",
- "community.page.handle": "Bu topluluk için Kalıcı Uri",
-
- // "community.page.license": "License",
- "community.page.license": "Lisans",
-
- // "community.page.news": "News",
- "community.page.news": "Haberler",
-
- // "community.all-lists.head": "Subcommunities and Collections",
- "community.all-lists.head": "Alt topluluklar ve koleksiyonlar",
-
- // "community.sub-collection-list.head": "Collections of this Community",
- "community.sub-collection-list.head": "Bu topluluğun koleksiyonları",
-
- // "community.sub-community-list.head": "Communities of this Community",
- "community.sub-community-list.head": "Bu topluluğun koleksiyonları",
-
-
-
- // "cookies.consent.accept-all": "Accept all",
- "cookies.consent.accept-all": "Hepsini kabul et",
-
- // "cookies.consent.accept-selected": "Accept selected",
- "cookies.consent.accept-selected": "Seçiliyi kabul et",
-
- // "cookies.consent.app.opt-out.description": "This app is loaded by default (but you can opt out)",
- "cookies.consent.app.opt-out.description": "Bu uygulama varsayılan olarak yüklenir (ancak vazgeçebilirsiniz)",
-
- // "cookies.consent.app.opt-out.title": "(opt-out)",
- "cookies.consent.app.opt-out.title": "(vazgeç)",
-
- // "cookies.consent.app.purpose": "purpose",
- "cookies.consent.app.purpose": "amaç",
-
- // "cookies.consent.app.required.description": "This application is always required",
- "cookies.consent.app.required.description": "Bu uygulama her zaman gereklidir",
-
- // "cookies.consent.app.required.title": "(always required)",
- "cookies.consent.app.required.title": "(her zaman gerekli)",
-
- // "cookies.consent.update": "There were changes since your last visit, please update your consent.",
- "cookies.consent.update": "Son ziyaretinizden bu yana değişiklikler vardı, lütfen onayınızı güncelleyin.",
-
- // "cookies.consent.close": "Close",
- "cookies.consent.close": "Kapat",
-
- // "cookies.consent.decline": "Decline",
- "cookies.consent.decline": "Reddet",
-
- // "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": "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": "Özelleştir",
-
- // "cookies.consent.content-modal.description": "Here you can see and customize the information that we collect about you.",
- "cookies.consent.content-modal.description": "Burada, sizin hakkınızda topladığımız bilgileri görebilir ve özelleştirebilirsiniz.",
-
- // "cookies.consent.content-modal.privacy-policy.name": "privacy policy",
- "cookies.consent.content-modal.privacy-policy.name": "Gizlilik Politikası",
-
- // "cookies.consent.content-modal.privacy-policy.text": "To learn more, please read our {privacyPolicy}.",
- "cookies.consent.content-modal.privacy-policy.text": "Daha fazla bilgi için, lütfen okuyun {privacyPolicy}.",
-
- // "cookies.consent.content-modal.title": "Information that we collect",
- "cookies.consent.content-modal.title": "Topladığımız bilgiler",
-
-
-
- // "cookies.consent.app.title.authentication": "Authentication",
- "cookies.consent.app.title.authentication": "Kimlik doğrulama",
-
- // "cookies.consent.app.description.authentication": "Required for signing you in",
- "cookies.consent.app.description.authentication": "Kayıt olmak için gerekli",
-
-
- // "cookies.consent.app.title.preferences": "Preferences",
- "cookies.consent.app.title.preferences": "Tercihler",
-
- // "cookies.consent.app.description.preferences": "Required for saving your preferences",
- "cookies.consent.app.description.preferences": "Tercihlerinizi kaydetmek için gerekli",
-
-
-
- // "cookies.consent.app.title.acknowledgement": "Acknowledgement",
- "cookies.consent.app.title.acknowledgement": "Onaylama",
-
- // "cookies.consent.app.description.acknowledgement": "Required for saving your acknowledgements and consents",
- "cookies.consent.app.description.acknowledgement": "Teşekkürlerinizi ve onayları kurtarmak için gerekli",
-
-
-
- // "cookies.consent.app.title.google-analytics": "Google Analytics",
- "cookies.consent.app.title.google-analytics": "Google Analitiği",
-
- // "cookies.consent.app.description.google-analytics": "Allows us to track statistical data",
- "cookies.consent.app.description.google-analytics": "İstatistiksel verileri izlememize izin verir",
-
-
-
- // "cookies.consent.purpose.functional": "Functional",
- "cookies.consent.purpose.functional": "Fonksiyonel",
-
- // "cookies.consent.purpose.statistical": "Statistical",
- "cookies.consent.purpose.statistical": "İstatistiksel",
-
-
- // "curation-task.task.checklinks.label": "Check Links in Metadata",
- "curation-task.task.checklinks.label": "Meta Verilerdeki Bağlantıları Kontrol Et",
-
- // "curation-task.task.noop.label": "NOOP",
- "curation-task.task.noop.label": "NOOP",
-
- // "curation-task.task.profileformats.label": "Profile Bitstream Formats",
- "curation-task.task.profileformats.label": "Profil Veri Akışı Formatları",
-
- // "curation-task.task.requiredmetadata.label": "Check for Required Metadata",
- "curation-task.task.requiredmetadata.label": "Gerekli meta verileri kontrol edin",
-
- // "curation-task.task.translate.label": "Microsoft Translator",
- "curation-task.task.translate.label": "Microsoft Tercüman",
-
- // "curation-task.task.vscan.label": "Virus Scan",
- "curation-task.task.vscan.label": "Virüs Taraması",
-
-
-
- // "curation.form.task-select.label": "Task:",
- "curation.form.task-select.label": "Görev:",
-
- // "curation.form.submit": "Start",
- "curation.form.submit": "Başlangıç",
-
- // "curation.form.submit.success.head": "The curation task has been started successfully",
- "curation.form.submit.success.head": "Küratör görevi başarıyla başlatıldı",
-
- // "curation.form.submit.success.content": "You will be redirected to the corresponding process page.",
- "curation.form.submit.success.content": "İlgili işlem sayfasına yönlendirileceksiniz.",
-
- // "curation.form.submit.error.head": "Running the curation task failed",
- "curation.form.submit.error.head": "Küratörlük görevi başarısız oldu",
-
- // "curation.form.submit.error.content": "An error occured when trying to start the curation task.",
- "curation.form.submit.error.content": "Küratörlük görevi başlatmaya çalışırken bir hata oluştu.",
-
- // "curation.form.handle.label": "Handle:",
- "curation.form.handle.label": "Ele al:",
-
- // "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": "İpucu: Gir [your-handle-prefix]/0 tüm sitede bir görevi çalıştırmak için (tüm görevler bu özelliği destekleyemez)",
-
-
-
- // "dso-selector.create.collection.head": "New collection",
- "dso-selector.create.collection.head": "Yeni koleksiyon",
-
- // "dso-selector.create.collection.sub-level": "Create a new collection in",
- "dso-selector.create.collection.sub-level": "Yeni bir koleksiyon oluşturun",
-
- // "dso-selector.create.community.head": "New community",
- "dso-selector.create.community.head": "Yeni topluluk",
-
- // "dso-selector.create.community.sub-level": "Create a new community in",
- "dso-selector.create.community.sub-level": "Yeni bir topluluk oluştur",
-
- // "dso-selector.create.community.top-level": "Create a new top-level community",
- "dso-selector.create.community.top-level": "Yeni bir üst düzey topluluk oluştur",
-
- // "dso-selector.create.item.head": "New item",
- "dso-selector.create.item.head": "Yeni öğe",
-
- // "dso-selector.create.item.sub-level": "Create a new item in",
- "dso-selector.create.item.sub-level": "İçinde yeni bir öğe oluşturun",
-
- // "dso-selector.create.submission.head": "New submission",
- "dso-selector.create.submission.head": "Yeni başvuru",
-
- // "dso-selector.edit.collection.head": "Edit collection",
- "dso-selector.edit.collection.head": "Koleksiyonu Düzenle",
-
- // "dso-selector.edit.community.head": "Edit community",
- "dso-selector.edit.community.head": "Topluluğu Düzenle",
-
- // "dso-selector.edit.item.head": "Edit item",
- "dso-selector.edit.item.head": "Ögeyi düzenle",
-
- // "dso-selector.export-metadata.dspaceobject.head": "Export metadata from",
- "dso-selector.export-metadata.dspaceobject.head": "Meta verilerini dışa aktar",
-
- // "dso-selector.no-results": "No {{ type }} found ",
- "dso-selector.no-results": "Bulunamadı {{ type }} ",
-
- // "dso-selector.placeholder": "Search for a {{ type }}",
- "dso-selector.placeholder": " Ara {{ type }}",
-
-
-
- // "confirmation-modal.export-metadata.header": "Export metadata for {{ dsoName }}",
- "confirmation-modal.export-metadata.header": "Meta verilerini dışa aktar {{ dsoName }}",
-
- // "confirmation-modal.export-metadata.info": "Are you sure you want to export metadata for {{ dsoName }}",
- "confirmation-modal.export-metadata.info": "Meta verileri dışarı aktarmak istediğinizden emin misiniz {{ dsoName }}",
-
- // "confirmation-modal.export-metadata.cancel": "Cancel",
- "confirmation-modal.export-metadata.cancel": "İptal",
-
- // "confirmation-modal.export-metadata.confirm": "Export",
- "confirmation-modal.export-metadata.confirm": "Dışarı aktar",
-
- // "confirmation-modal.delete-eperson.header": "Delete EPerson \"{{ dsoName }}\"",
- "confirmation-modal.delete-eperson.header": "EPerson'ı sil \"{{ dsoName }}\"",
-
- // "confirmation-modal.delete-eperson.info": "Are you sure you want to delete EPerson \"{{ dsoName }}\"",
- "confirmation-modal.delete-eperson.info": "Eperson'u silmek istediğinize emin misiniz? \"{{ dsoName }}\"",
-
- // "confirmation-modal.delete-eperson.cancel": "Cancel",
- "confirmation-modal.delete-eperson.cancel": "İptal",
-
- // "confirmation-modal.delete-eperson.confirm": "Delete",
- "confirmation-modal.delete-eperson.confirm": "Sil",
-
-
- // "error.bitstream": "Error fetching bitstream",
- "error.bitstream": "Alınan bitstream hatası",
-
- // "error.browse-by": "Error fetching items",
- "error.browse-by": "Alınan öğeler hatası",
-
- // "error.collection": "Error fetching collection",
- "error.collection": "Alınan koleksiyon hatası",
-
- // "error.collections": "Error fetching collections",
- "error.collections": "Alınan koleksiyonlar hatası",
-
- // "error.community": "Error fetching community",
- "error.community": "Alınan topluluk hatası",
-
- // "error.identifier": "No item found for the identifier",
- "error.identifier": "Tanımlayıcı için ürün bulunamadı",
-
- // "error.default": "Error",
- "error.default": "Hata",
-
- // "error.item": "Error fetching item",
- "error.item": "Alınan öğe hatası",
-
- // "error.items": "Error fetching items",
- "error.items": "Alınan öğeler hatası",
-
- // "error.objects": "Error fetching objects",
- "error.objects": "Alınan nesneler hatası",
-
- // "error.recent-submissions": "Error fetching recent submissions",
- "error.recent-submissions": "Son başvuruları alma hatası",
-
- // "error.search-results": "Error fetching search results",
- "error.search-results": "Arama sonuçlarını alma hatası",
-
- // "error.sub-collections": "Error fetching sub-collections",
- "error.sub-collections": "Alt koleksiyonları alma hatası",
-
- // "error.sub-communities": "Error fetching sub-communities",
- "error.sub-communities": "Alt toplulukları alma hatası",
-
- // "error.submission.sections.init-form-error": "An error occurred during section initialize, please check your input-form configuration. Details are below : ",
- "error.submission.sections.init-form-error": "Bölüm başlatma sırasında bir hata oluştu, lütfen giriş formu yapılandırmanızı kontrol edin. Detaylar aşağıdadır : ",
-
- // "error.top-level-communities": "Error fetching top-level communities",
- "error.top-level-communities": "Üst düzey toplulukları alma hatası",
-
- // "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": "Gönderinizi tamamlamak için bu lisansı vermelisiniz. Bu lisansı şu anda veremiyorsanız, çalışmanızı kaydedebilir ve daha sonra geri gönderebilir veya gönderimi kaldırabilirsiniz.",
-
- // "error.validation.pattern": "This input is restricted by the current pattern: {{ pattern }}.",
- "error.validation.pattern": "Bu giriş mevcut modelle sınırlandırılmıştır.: {{ pattern }}.",
-
- // "error.validation.filerequired": "The file upload is mandatory",
- "error.validation.filerequired": "Dosya yükleme zorunludur",
-
-
-
- // "file-section.error.header": "Error obtaining files for this item",
- "file-section.error.header": "Bu öğe için dosyaları elde etme hatası",
-
-
-
- // "footer.copyright": "copyright © 2002-{{ year }}",
- "footer.copyright": "telif hakkı © 2002-{{ year }}",
-
- // "footer.link.dspace": "DSpace software",
- "footer.link.dspace": "DSpace yazılım",
-
- // "footer.link.lyrasis": "LYRASIS",
- "footer.link.lyrasis": "LYRASIS",
-
- // "footer.link.cookies": "Cookie settings",
- "footer.link.cookies": "Çerez Ayarları",
-
- // "footer.link.privacy-policy": "Privacy policy",
- "footer.link.privacy-policy": "Gizlilik Politikası",
-
- // "footer.link.end-user-agreement":"End User Agreement",
- "footer.link.end-user-agreement":"Son Kullanıcı Sözleşmesi",
-
-
-
- // "forgot-email.form.header": "Forgot Password",
- "forgot-email.form.header": "Parolanızı mı unuttunuz",
-
- // "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": "E-posta güncellemeleri için koleksiyonlara abone olmak için bir hesap kaydedin ve DSPace'e yeni öğeler gönderin.",
-
- // "forgot-email.form.email": "Email Address *",
- "forgot-email.form.email": "Eposta Adresi *",
-
- // "forgot-email.form.email.error.required": "Please fill in an email address",
- "forgot-email.form.email.error.required": "Lütfen bir e-posta adresi giriniz",
-
- // "forgot-email.form.email.error.pattern": "Please fill in a valid email address",
- "forgot-email.form.email.error.pattern": "Lütfen bir e-posta adresi giriniz",
-
- // "forgot-email.form.email.hint": "This address will be verified and used as your login name.",
- "forgot-email.form.email.hint": "Bu adres, giriş adınız olarak doğrulanacak ve kullanılacaktır.",
-
- // "forgot-email.form.submit": "Submit",
- "forgot-email.form.submit": "Kaydet",
-
- // "forgot-email.form.success.head": "Verification email sent",
- "forgot-email.form.success.head": "Doğrulama e-postası gönderildi",
-
- // "forgot-email.form.success.content": "An email has been sent to {{ email }} containing a special URL and further instructions.",
- "forgot-email.form.success.content": "Özel bir URL ve daha fazla talimat içeren bir e posta bu {{ email }} mail adresin gönderildi. ",
-
- // "forgot-email.form.error.head": "Error when trying to register email",
- "forgot-email.form.error.head": "E-postayı kaydetmeye çalışırken hata oluştu",
-
- // "forgot-email.form.error.content": "An error occured when registering the following email address: {{ email }}",
- "forgot-email.form.error.content": "E-posta adresini kaydederken bir hata oluştu: {{ email }}",
-
-
-
- // "forgot-password.title": "Forgot Password",
- "forgot-password.title": "Parolanızı mı unuttunuz",
-
- // "forgot-password.form.head": "Forgot Password",
- "forgot-password.form.head": "Parolanızı mı unuttunuz",
-
- // "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": "Aşağıdaki kutuya yeni bir parola girin ve tekrar ikinci kutuya yazarak onaylayın. En az altı karakter uzunluğunda olmalıdır.",
-
- // "forgot-password.form.card.security": "Security",
- "forgot-password.form.card.security": "Güvenlik",
-
- // "forgot-password.form.identification.header": "Identify",
- "forgot-password.form.identification.header": "Kimlik",
-
- // "forgot-password.form.identification.email": "Email address: ",
- "forgot-password.form.identification.email": "E-posta adresi: ",
-
- // "forgot-password.form.label.password": "Password",
- "forgot-password.form.label.password": "Parola",
-
- // "forgot-password.form.label.passwordrepeat": "Retype to confirm",
- "forgot-password.form.label.passwordrepeat": "Doğrulamak için yeniden yazınız",
-
- // "forgot-password.form.error.empty-password": "Please enter a password in the box below.",
- "forgot-password.form.error.empty-password": "Lütfen aşağıdaki kutuya bir parola girin.",
-
- // "forgot-password.form.error.matching-passwords": "The passwords do not match.",
- "forgot-password.form.error.matching-passwords": "Parolalar eşleşmiyor.",
-
- // "forgot-password.form.error.password-length": "The password should be at least 6 characters long.",
- "forgot-password.form.error.password-length": "Parola en az 6 karakter uzunluğunda olmalıdır.",
-
- // "forgot-password.form.notification.error.title": "Error when trying to submit new password",
- "forgot-password.form.notification.error.title": "Yeni parola göndermeye çalışırken hata oluştu",
-
- // "forgot-password.form.notification.success.content": "The password reset was successful. You have been logged in as the created user.",
- "forgot-password.form.notification.success.content": "Parola sıfırlama başarılı oldu. Oluşturulan kullanıcı olarak giriş yaptınız.",
-
- // "forgot-password.form.notification.success.title": "Password reset completed",
- "forgot-password.form.notification.success.title": "Parola sıfırlama tamamlandı",
-
- // "forgot-password.form.submit": "Submit password",
- "forgot-password.form.submit": "Parolayı kaydet",
-
-
-
- // "form.add": "Add",
- "form.add": "Ekle",
-
- // "form.add-help": "Click here to add the current entry and to add another one",
- "form.add-help": "Geçerli girişi eklemek ve bir tane daha eklemek için buraya tıklayın.",
-
- // "form.cancel": "Cancel",
- "form.cancel": "İptal",
-
- // "form.clear": "Clear",
- "form.clear": "Temizle",
-
- // "form.clear-help": "Click here to remove the selected value",
- "form.clear-help": "Seçilen değeri kaldırmak için buraya tıklayın",
-
- // "form.edit": "Edit",
- "form.edit": "Düzenle",
-
- // "form.edit-help": "Click here to edit the selected value",
- "form.edit-help": "Seçilen değeri düzenlemek için buraya tıklayın",
-
- // "form.first-name": "First name",
- "form.first-name": "İlk adı",
-
- // "form.group-collapse": "Collapse",
- "form.group-collapse": "Yığmak",
-
- // "form.group-collapse-help": "Click here to collapse",
- "form.group-collapse-help": "Yığmak için buraya tıklayın",
-
- // "form.group-expand": "Expand",
- "form.group-expand": "Uzat",
-
- // "form.group-expand-help": "Click here to expand and add more elements",
- "form.group-expand-help": "Genişletmek ve daha fazla öğe eklemek için buraya tıklayın",
-
- // "form.last-name": "Last name",
- "form.last-name": "Soyadı",
-
- // "form.loading": "Loading...",
- "form.loading": "Yükleniyor...",
-
- // "form.lookup": "Lookup",
- "form.lookup": "Yukarı Bak",
-
- // "form.lookup-help": "Click here to look up an existing relation",
- "form.lookup-help": "Mevcut bir bağlantı aramak için buraya tıklayın",
-
- // "form.no-results": "No results found",
- "form.no-results": "Sonuç bulunamadı",
-
- // "form.no-value": "No value entered",
- "form.no-value": "Değer girilmez",
-
- // "form.other-information": {},
- "form.other-information": {},
-
- // "form.remove": "Remove",
- "form.remove": "Kaldır",
-
- // "form.save": "Save",
- "form.save": "Kaydet",
-
- // "form.save-help": "Save changes",
- "form.save-help": "Değişiklikleri kaydet",
-
- // "form.search": "Search",
- "form.search": "Ara",
-
- // "form.search-help": "Click here to look for an existing correspondence",
- "form.search-help": "Mevcut bir yazışma aramak için buraya tıklayın",
-
- // "form.submit": "Submit",
- "form.submit": "Gönder",
-
-
-
- // "home.description": "",
- "home.description": "",
-
- // "home.breadcrumbs": "Home",
- "home.breadcrumbs": "Anasayfa",
-
- // "home.title": "DSpace Angular :: Home",
- "home.title": "DSpace Açısal :: Anasayfa",
-
- // "home.top-level-communities.head": "Communities in DSpace",
- "home.top-level-communities.head": "Dspace'deki Topluluklar",
-
- // "home.top-level-communities.help": "Select a community to browse its collections.",
- "home.top-level-communities.help": "Koleksiyonlarına göz atmak için bir topluluk seçin.",
-
- // "home.search-form.placeholder": "Search the repository ...",
- "home.search-form.placeholder": "Depoda ara ...",
-
-
- // "info.end-user-agreement.accept": "I have read and I agree to the End User Agreement",
- "info.end-user-agreement.accept": "Okudum ve son kullanıcı sözleşmesini kabul ediyorum",
-
- // "info.end-user-agreement.accept.error": "An error occurred accepting the End User Agreement",
- "info.end-user-agreement.accept.error": "Son kullanıcı sözleşmesini kabul eden bir hata oluştu",
-
- // "info.end-user-agreement.accept.success": "Successfully updated the End User Agreement",
- "info.end-user-agreement.accept.success": "Son Kullanıcı Sözleşmesini başarıyla güncelledi",
-
- // "info.end-user-agreement.breadcrumbs": "End User Agreement",
- "info.end-user-agreement.breadcrumbs": "Son Kullanıcı Sözleşmesi",
-
- // "info.end-user-agreement.buttons.cancel": "Cancel",
- "info.end-user-agreement.buttons.cancel": "İptal",
-
- // "info.end-user-agreement.buttons.save": "Save",
- "info.end-user-agreement.buttons.save": "Kaydet",
-
- // "info.end-user-agreement.head": "End User Agreement",
- "info.end-user-agreement.head": "Son Kullanıcı Sözleşmesi",
-
- // "info.end-user-agreement.title": "End User Agreement",
- "info.end-user-agreement.title": "Son Kullanıcı Sözleşmesi",
-
- // "info.privacy.breadcrumbs": "Privacy Statement",
- "info.privacy.breadcrumbs": "Gizlilik bildirimi",
-
- // "info.privacy.head": "Privacy Statement",
- "info.privacy.head": "Gizlilik bildirimi",
-
- // "info.privacy.title": "Privacy Statement",
- "info.privacy.title": "Gizlilik bildirimi",
-
-
-
- // "item.alerts.private": "This item is private",
- "item.alerts.private": "Bu öğe özel",
-
- // "item.alerts.withdrawn": "This item has been withdrawn",
- "item.alerts.withdrawn": "Bu ürün geri çekildi",
-
-
-
- // "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": "Bu editör ile bir öğenin politikalarını görüntüleyebilir ve değiştirebilirsiniz, ayrıca bireysel ürün bileşenlerinin politikalarını değiştirebilirsiniz: Paketler ve Veri Akışı. Kısaca, bir öğe bir paket konteynırıdır ve paketler veri akışı konteynırıdır. Konteynerler genellikle, veri akışı yalnızca okuma / yazma politikalarına sahip olur.",
-
- // "item.edit.authorizations.title": "Edit item's Policies",
- "item.edit.authorizations.title": "Edit item's Politikalar",
-
-
-
- // "item.badge.private": "Private",
- "item.badge.private": "Özel",
-
- // "item.badge.withdrawn": "Withdrawn",
- "item.badge.withdrawn": "Çekilmiş",
-
-
-
- // "item.bitstreams.upload.bundle": "Bundle",
- "item.bitstreams.upload.bundle": "Paket",
-
- // "item.bitstreams.upload.bundle.placeholder": "Select a bundle",
- "item.bitstreams.upload.bundle.placeholder": "Bir paket seçin",
-
- // "item.bitstreams.upload.bundle.new": "Create bundle",
- "item.bitstreams.upload.bundle.new": "Paket oluştur",
-
- // "item.bitstreams.upload.bundles.empty": "This item doesn\'t contain any bundles to upload a bitstream to.",
- "item.bitstreams.upload.bundles.empty": "Bu öğe, bir veri akışı yüklemek için herhangi bir paket içermiyor.",
-
- // "item.bitstreams.upload.cancel": "Cancel",
- "item.bitstreams.upload.cancel": "İptal",
-
- // "item.bitstreams.upload.drop-message": "Drop a file to upload",
- "item.bitstreams.upload.drop-message": "Yüklenecek bir dosya bırak",
-
- // "item.bitstreams.upload.item": "Item: ",
- "item.bitstreams.upload.item": "Öğe: ",
-
- // "item.bitstreams.upload.notifications.bundle.created.content": "Successfully created new bundle.",
- "item.bitstreams.upload.notifications.bundle.created.content": "Başarıyla yeni paket oluşturuldu.",
-
- // "item.bitstreams.upload.notifications.bundle.created.title": "Created bundle",
- "item.bitstreams.upload.notifications.bundle.created.title": "Paket oluşturdu",
-
- // "item.bitstreams.upload.notifications.upload.failed": "Upload failed. Please verify the content before retrying.",
- "item.bitstreams.upload.notifications.upload.failed": "Yükleme başarısız. Lütfen yeniden denemeden önce içeriği doğrulayın.",
-
- // "item.bitstreams.upload.title": "Upload bitstream",
- "item.bitstreams.upload.title": "Veri akışı yükle",
-
-
-
- // "item.edit.bitstreams.bundle.edit.buttons.upload": "Upload",
- "item.edit.bitstreams.bundle.edit.buttons.upload": "Yükle",
-
- // "item.edit.bitstreams.bundle.displaying": "Currently displaying {{ amount }} bitstreams of {{ total }}.",
- "item.edit.bitstreams.bundle.displaying": "Şu anda görüntülenen {{ amount }} veri akışı {{ total }}.",
-
- // "item.edit.bitstreams.bundle.load.all": "Load all ({{ total }})",
- "item.edit.bitstreams.bundle.load.all": "Hepsini yükle ({{ total }})",
-
- // "item.edit.bitstreams.bundle.load.more": "Load more",
- "item.edit.bitstreams.bundle.load.more": "Daha fazla yükle",
-
- // "item.edit.bitstreams.bundle.name": "BUNDLE: {{ name }}",
- "item.edit.bitstreams.bundle.name": "PAKET: {{ name }}",
-
- // "item.edit.bitstreams.discard-button": "Discard",
- "item.edit.bitstreams.discard-button": "Yoksay",
-
- // "item.edit.bitstreams.edit.buttons.download": "Download",
- "item.edit.bitstreams.edit.buttons.download": "İndir",
-
- // "item.edit.bitstreams.edit.buttons.drag": "Drag",
- "item.edit.bitstreams.edit.buttons.drag": "Sürükle",
-
- // "item.edit.bitstreams.edit.buttons.edit": "Edit",
- "item.edit.bitstreams.edit.buttons.edit": "Düzenle",
-
- // "item.edit.bitstreams.edit.buttons.remove": "Remove",
- "item.edit.bitstreams.edit.buttons.remove": "Kaldır",
-
- // "item.edit.bitstreams.edit.buttons.undo": "Undo changes",
- "item.edit.bitstreams.edit.buttons.undo": "Değişiklikleri geri al",
-
- // "item.edit.bitstreams.empty": "This item doesn't contain any bitstreams. Click the upload button to create one.",
- "item.edit.bitstreams.empty": "Bu öge herhangi bir veri içermiyor. Bir tane oluşturmak için yükle düğmesini tıklayınız.",
-
- // "item.edit.bitstreams.headers.actions": "Actions",
- "item.edit.bitstreams.headers.actions": "İşlemler",
-
- // "item.edit.bitstreams.headers.bundle": "Bundle",
- "item.edit.bitstreams.headers.bundle": "Seri",
-
- // "item.edit.bitstreams.headers.description": "Description",
- "item.edit.bitstreams.headers.description": "Açıklama",
-
- // "item.edit.bitstreams.headers.format": "Format",
- "item.edit.bitstreams.headers.format": "Format",
-
- // "item.edit.bitstreams.headers.name": "Name",
- "item.edit.bitstreams.headers.name": "Ad",
-
- // "item.edit.bitstreams.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button",
- "item.edit.bitstreams.notifications.discarded.content": "Yaptığınız değişiklikler silindi.Yaptığınız değişiklikleri geri yüklemek için 'Geri al' butonuna tıklayınız.",
-
- // "item.edit.bitstreams.notifications.discarded.title": "Changes discarded",
- "item.edit.bitstreams.notifications.discarded.title": "Değişiklikler silindi.",
-
- // "item.edit.bitstreams.notifications.move.failed.title": "Error moving bitstreams",
- "item.edit.bitstreams.notifications.move.failed.title": "Veri taşınırken bir hata oluştu.",
-
- // "item.edit.bitstreams.notifications.move.saved.content": "Your move changes to this item's bitstreams and bundles have been saved.",
- "item.edit.bitstreams.notifications.move.saved.content": "Bu öğenin veri akışında ve paketlerinde yaptığınız değişiklikler kaydedildi.",
-
- // "item.edit.bitstreams.notifications.move.saved.title": "Move changes saved",
- "item.edit.bitstreams.notifications.move.saved.title": "Değişiklikler kaydedildi.",
-
- // "item.edit.bitstreams.notifications.outdated.content": "The item you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts",
- "item.edit.bitstreams.notifications.outdated.content": "Şu anda üzerinde çalıştığınız öğe başka bir kullanıcı tarafından değiştirildi.Mevcut değişiklikleriniz çakışma olmasını önlemek için silindi. ",
-
- // "item.edit.bitstreams.notifications.outdated.title": "Changes outdated",
- "item.edit.bitstreams.notifications.outdated.title": "Değişiklikler zaman aşımına uğradı.",
-
- // "item.edit.bitstreams.notifications.remove.failed.title": "Error deleting bitstream",
- "item.edit.bitstreams.notifications.remove.failed.title": "Veri akışı silinirken bir hata oluştu",
-
- // "item.edit.bitstreams.notifications.remove.saved.content": "Your removal changes to this item's bitstreams have been saved.",
- "item.edit.bitstreams.notifications.remove.saved.content": "Bu öğenin veri akışında yaptığınız kaldırma değişiklikleri kaydedildi.",
-
- // "item.edit.bitstreams.notifications.remove.saved.title": "Removal changes saved",
- "item.edit.bitstreams.notifications.remove.saved.title": "Kaldırma değişiklikleri kaydedildi.",
-
- // "item.edit.bitstreams.reinstate-button": "Undo",
- "item.edit.bitstreams.reinstate-button": "Geri al",
-
- // "item.edit.bitstreams.save-button": "Save",
- "item.edit.bitstreams.save-button": "Kaydet",
-
- // "item.edit.bitstreams.upload-button": "Upload",
- "item.edit.bitstreams.upload-button": "Yükle",
-
-
-
- // "item.edit.delete.cancel": "Cancel",
- "item.edit.delete.cancel": "İptal et",
-
- // "item.edit.delete.confirm": "Delete",
- "item.edit.delete.confirm": "Sil",
-
- // "item.edit.delete.description": "Are you sure this item should be completely deleted? Caution: At present, no tombstone would be left.",
- "item.edit.delete.description": "Bu öğeyi kalıcı olarak silmek istedğinizden emin misiniz? Silme işlemi gerçekleştikten sonra geri alınamaz. ",
-
- // "item.edit.delete.error": "An error occurred while deleting the item",
- "item.edit.delete.error": "Silme işlemi sırasında bir hata oluştu.",
-
- // "item.edit.delete.header": "Delete item: {{ id }}",
- "item.edit.delete.header": "Silinecek öğeler: {{ id }}",
-
- // "item.edit.delete.success": "The item has been deleted",
- "item.edit.delete.success": "Öğe silindi.",
-
- // "item.edit.head": "Edit Item",
- "item.edit.head": "Ögeleri düzenle",
-
- // "item.edit.breadcrumbs": "Edit Item",
- "item.edit.breadcrumbs": "Ögeleri düzenle",
-
-
- // "item.edit.tabs.mapper.head": "Collection Mapper",
- "item.edit.tabs.mapper.head": "Koleksiyon eşleştiricisi",
-
- // "item.edit.tabs.item-mapper.title": "Item Edit - Collection Mapper",
- "item.edit.tabs.item-mapper.title": "Öge düzenle- Koleksiyon eşleştiricisi",
-
- // "item.edit.item-mapper.buttons.add": "Map item to selected collections",
- "item.edit.item-mapper.buttons.add": "Ögeyi seçili koleksiyonlarla eşleştir",
-
- // "item.edit.item-mapper.buttons.remove": "Remove item's mapping for selected collections",
- "item.edit.item-mapper.buttons.remove": "Seçili koleksiyonların öge eşleştirmelerini kaldır",
-
- // "item.edit.item-mapper.cancel": "Cancel",
- "item.edit.item-mapper.cancel": "İptal et",
-
- // "item.edit.item-mapper.description": "This is the item mapper tool that allows administrators to map this item to other collections. You can search for collections and map them, or browse the list of collections the item is currently mapped to.",
- "item.edit.item-mapper.description": "Öge eşleme aracı, yöneticilerin bu öğeyi diğer koleksiyonlarla eşleştirmesini ögeleri eşleştirmesini sağlar. Koleksiyonları arayabilir ve bunları eşleyebilir veya öğenin şu anda eşlendiği koleksiyonların listesine göz atabilirsiniz.",
-
- // "item.edit.item-mapper.head": "Item Mapper - Map Item to Collections",
- "item.edit.item-mapper.head": "Öge eşleştirici - Ögeleri koleksiyonlarla eşleştirir",
-
- // "item.edit.item-mapper.item": "Item: \"{{name}} \"",
- "item.edit.item-mapper.item": "Öge: \"{{name}} \"",
-
- // "item.edit.item-mapper.no-search": "Please enter a query to search",
- "item.edit.item-mapper.no-search": "Lütfen arama yapmak için bir soru giriniz.",
-
- // "item.edit.item-mapper.notifications.add.error.content": "Errors occurred for mapping of item to {{amount}} collections.",
- "item.edit.item-mapper.notifications.add.error.content": "Ögelerin {{amount}} koleksiyonlarla eşleştirirken bir hata oluştu.",
-
- // "item.edit.item-mapper.notifications.add.error.head": "Mapping errors",
- "item.edit.item-mapper.notifications.add.error.head": "Eşleştirme hataları",
-
- // "item.edit.item-mapper.notifications.add.success.content": "Successfully mapped item to {{amount}} collections.",
- "item.edit.item-mapper.notifications.add.success.content": "Ögeler {{amount}} koleksiyonlarla başarıyla eşleştirildi.",
-
- // "item.edit.item-mapper.notifications.add.success.head": "Mapping completed",
- "item.edit.item-mapper.notifications.add.success.head": "Eşleştirme tamamlandı.",
-
- // "item.edit.item-mapper.notifications.remove.error.content": "Errors occurred for the removal of the mapping to {{amount}} collections.",
- "item.edit.item-mapper.notifications.remove.error.content": "Ögelerin {{amount}} koleksiyonlarla eşleştirmeleri kaldırılırken bir hata oluştu.",
-
- // "item.edit.item-mapper.notifications.remove.error.head": "Removal of mapping errors",
- "item.edit.item-mapper.notifications.remove.error.head": "Eşleştirme hatalarının kaldırılması",
-
- // "item.edit.item-mapper.notifications.remove.success.content": "Successfully removed mapping of item to {{amount}} collections.",
- "item.edit.item-mapper.notifications.remove.success.content": "Ögeler {{amount}} koleksiyonlarla eşleştirmeleri başarıyla kaldırıldı.",
-
- // "item.edit.item-mapper.notifications.remove.success.head": "Removal of mapping completed",
- "item.edit.item-mapper.notifications.remove.success.head": "Eşleştirmelerin kaldırılması tamamlandı.",
-
- // "item.edit.item-mapper.tabs.browse": "Browse mapped collections",
- "item.edit.item-mapper.tabs.browse": "Eşleştirilen koleksiyonları ara",
-
- // "item.edit.item-mapper.tabs.map": "Map new collections",
- "item.edit.item-mapper.tabs.map": "Yeni koleksiyonları eşleştir",
-
-
-
- // "item.edit.metadata.add-button": "Add",
- "item.edit.metadata.add-button": "Ekle",
-
- // "item.edit.metadata.discard-button": "Discard",
- "item.edit.metadata.discard-button": "Sil",
-
- // "item.edit.metadata.edit.buttons.edit": "Edit",
- "item.edit.metadata.edit.buttons.edit": "Düzenle",
-
- // "item.edit.metadata.edit.buttons.remove": "Remove",
- "item.edit.metadata.edit.buttons.remove": "Kaldır",
-
- // "item.edit.metadata.edit.buttons.undo": "Undo changes",
- "item.edit.metadata.edit.buttons.undo": "Değişiklikleri geri al",
-
- // "item.edit.metadata.edit.buttons.unedit": "Stop editing",
- "item.edit.metadata.edit.buttons.unedit": "Düzenlemeyi bitir",
-
- // "item.edit.metadata.empty": "The item currently doesn't contain any metadata. Click Add to start adding a metadata value.",
- "item.edit.metadata.empty": "Öğe şu anda herhangi bir meta veri içermiyor. Bir meta veri değeri eklemeye başlamak için Ekle'ye tıklayın.",
-
- // "item.edit.metadata.headers.edit": "Edit",
- "item.edit.metadata.headers.edit": "Düzenle",
-
- // "item.edit.metadata.headers.field": "Field",
- "item.edit.metadata.headers.field": "Alan",
-
- // "item.edit.metadata.headers.language": "Lang",
- "item.edit.metadata.headers.language": "Dil",
-
- // "item.edit.metadata.headers.value": "Value",
- "item.edit.metadata.headers.value": "Değer",
-
- // "item.edit.metadata.metadatafield.invalid": "Please choose a valid metadata field",
- "item.edit.metadata.metadatafield.invalid": "Lütfen geçerli bir meta veri alanı seçin",
-
- // "item.edit.metadata.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button",
- "item.edit.metadata.notifications.discarded.content": "Yaptığınız değişiklikler silindi.Yaptığınız değişiklikleri geri yüklemek için 'Geri al' butonuna tıklayınız.",
-
- // "item.edit.metadata.notifications.discarded.title": "Changed discarded",
- "item.edit.metadata.notifications.discarded.title": "Değişiklikler silindi",
-
- // "item.edit.metadata.notifications.error.title": "An error occurred",
- "item.edit.metadata.notifications.error.title": "Bir hata oluştu",
-
- // "item.edit.metadata.notifications.invalid.content": "Your changes were not saved. Please make sure all fields are valid before you save.",
- "item.edit.metadata.notifications.invalid.content": "Değişiklikleriniz kaydedilmedi. Lütfen kaydetmeden önce tüm alanların geçerli olduğundan emin olun.",
-
- // "item.edit.metadata.notifications.invalid.title": "Metadata invalid",
- "item.edit.metadata.notifications.invalid.title": "Meta veri geçersiz",
-
- // "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": "Şu anda üzerinde çalıştığınız öge başka bir kullanıcı tarafından değiştirildi.Mevcut değişiklikleriniz çakışma olmasını önlemek için silindi.",
-
- // "item.edit.metadata.notifications.outdated.title": "Changed outdated",
- "item.edit.metadata.notifications.outdated.title": "Değişiklikler zaman aşımına uğradı.",
-
- // "item.edit.metadata.notifications.saved.content": "Your changes to this item's metadata were saved.",
- "item.edit.metadata.notifications.saved.content": "Ögenin meta verilerinde yaptığınız değişiklikler kaydedildi.",
-
- // "item.edit.metadata.notifications.saved.title": "Metadata saved",
- "item.edit.metadata.notifications.saved.title": "Meta veriler kaydedildi",
-
- // "item.edit.metadata.reinstate-button": "Undo",
- "item.edit.metadata.reinstate-button": "Geri al",
-
- // "item.edit.metadata.save-button": "Save",
- "item.edit.metadata.save-button": "Kaydet",
-
-
-
- // "item.edit.modify.overview.field": "Field",
- "item.edit.modify.overview.field": "Alan",
-
- // "item.edit.modify.overview.language": "Language",
- "item.edit.modify.overview.language": "Dil",
-
- // "item.edit.modify.overview.value": "Value",
- "item.edit.modify.overview.value": "Değer",
-
-
-
- // "item.edit.move.cancel": "Cancel",
- "item.edit.move.cancel": "İptal et",
-
- // "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": "Bu öğeyi taşımak istediğiniz koleksiyonu seçin. Görüntülenen koleksiyonların listesini daraltmak için arama kısmına bir arama sorgusu girebilirsiniz.",
-
- // "item.edit.move.error": "An error occurred when attempting to move the item",
- "item.edit.move.error": "Öğeyi taşımaya çalışırken bir hata oluştu",
-
- // "item.edit.move.head": "Move item: {{id}}",
- "item.edit.move.head": "Kaldırılacak öge: {{id}}",
-
- // "item.edit.move.inheritpolicies.checkbox": "Inherit policies",
- "item.edit.move.inheritpolicies.checkbox": "Poliçeyi devral",
-
- // "item.edit.move.inheritpolicies.description": "Inherit the default policies of the destination collection",
- "item.edit.move.inheritpolicies.description": "Hedef koleksiyonun varsayılan poliçelerini devral",
-
- // "item.edit.move.move": "Move",
- "item.edit.move.move": "Taşı",
-
- // "item.edit.move.processing": "Moving...",
- "item.edit.move.processing": "Taşınıyor...",
-
- // "item.edit.move.search.placeholder": "Enter a search query to look for collections",
- "item.edit.move.search.placeholder": "Lütfen koleksiyonları aramak için bir arama sorgusu giriniz.",
-
- // "item.edit.move.success": "The item has been moved successfully",
- "item.edit.move.success": "Öge başarıyla taşındı",
-
- // "item.edit.move.title": "Move item",
- "item.edit.move.title": "Ögeleri taşı",
-
-
-
- // "item.edit.private.cancel": "Cancel",
- "item.edit.private.cancel": "İptal et",
-
- // "item.edit.private.confirm": "Make it Private",
- "item.edit.private.confirm": "Gizli yap",
-
- // "item.edit.private.description": "Are you sure this item should be made private in the archive?",
- "item.edit.private.description": "Bu öğenin arşivde gizli yapılması gerektiğinden emin misiniz?",
-
- // "item.edit.private.error": "An error occurred while making the item private",
- "item.edit.private.error": "Öge gizli yapılırken bir hata oluştu",
-
- // "item.edit.private.header": "Make item private: {{ id }}",
- "item.edit.private.header": "Ögeyi gizli yap: {{ id }}",
-
- // "item.edit.private.success": "The item is now private",
- "item.edit.private.success": "Öge gizlendi",
-
-
-
- // "item.edit.public.cancel": "Cancel",
- "item.edit.public.cancel": "İptal et",
-
- // "item.edit.public.confirm": "Make it Public",
- "item.edit.public.confirm": "Ögeyi herkese açık yap",
-
- // "item.edit.public.description": "Are you sure this item should be made public in the archive?",
- "item.edit.public.description": "Bu öğenin arşivde herkese açık yapılması gerektiğinden emin misiniz?",
-
- // "item.edit.public.error": "An error occurred while making the item public",
- "item.edit.public.error": "Öge herkese açık yapılırken bir hata oluştu",
-
- // "item.edit.public.header": "Make item public: {{ id }}",
- "item.edit.public.header": "Herkese açık yapılacak öge: {{ id }}",
-
- // "item.edit.public.success": "The item is now public",
- "item.edit.public.success": "Öge herkese açık yapıldı",
-
-
-
- // "item.edit.reinstate.cancel": "Cancel",
- "item.edit.reinstate.cancel": "İptal et",
-
- // "item.edit.reinstate.confirm": "Reinstate",
- "item.edit.reinstate.confirm": "Getir yükle",
-
- // "item.edit.reinstate.description": "Are you sure this item should be reinstated to the archive?",
- "item.edit.reinstate.description": "Bu öğenin arşive geri yüklenmesi gerektiğinden emin misiniz?",
-
- // "item.edit.reinstate.error": "An error occurred while reinstating the item",
- "item.edit.reinstate.error": "Öğe geri yüklenirken bir hata oluştu",
-
- // "item.edit.reinstate.header": "Reinstate item: {{ id }}",
- "item.edit.reinstate.header": "Geri yüklenecek öge: {{ id }}",
-
- // "item.edit.reinstate.success": "The item was reinstated successfully",
- "item.edit.reinstate.success": "Öge başarıyla geri yüklendi",
-
-
-
- // "item.edit.relationships.discard-button": "Discard",
- "item.edit.relationships.discard-button": "Sil",
-
- // "item.edit.relationships.edit.buttons.add": "Add",
- "item.edit.relationships.edit.buttons.add": "Ekle",
-
- // "item.edit.relationships.edit.buttons.remove": "Remove",
- "item.edit.relationships.edit.buttons.remove": "Kaldır",
-
- // "item.edit.relationships.edit.buttons.undo": "Undo changes",
- "item.edit.relationships.edit.buttons.undo": "Değişiklikleri geri al",
-
- // "item.edit.relationships.no-relationships": "No relationships",
- "item.edit.relationships.no-relationships": "İlişki yok",
-
- // "item.edit.relationships.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button",
- "item.edit.relationships.notifications.discarded.content": "Yaptığınız değişiklikler silindi.Yaptığınız değişiklikleri geri yüklemek için 'Geri al' butonuna tıklayınız.",
-
- // "item.edit.relationships.notifications.discarded.title": "Changes discarded",
- "item.edit.relationships.notifications.discarded.title": "Değişiklikler silindi",
-
- // "item.edit.relationships.notifications.failed.title": "Error editing relationships",
- "item.edit.relationships.notifications.failed.title": "İlişkileri düzenlemede hata",
-
- // "item.edit.relationships.notifications.outdated.content": "The item you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts",
- "item.edit.relationships.notifications.outdated.content": "Şu anda üzerinde çalıştığınız öge başka bir kullanıcı tarafından değiştirildi.Mevcut değişiklikleriniz çakışma olmasını önlemek için silindi.",
-
- // "item.edit.relationships.notifications.outdated.title": "Changes outdated",
- "item.edit.relationships.notifications.outdated.title": "Değişiklikler zaman aşımına uğradı.",
-
- // "item.edit.relationships.notifications.saved.content": "Your changes to this item's relationships were saved.",
- "item.edit.relationships.notifications.saved.content": "Bu öğenin ilişkilerinde yaptığınız değişiklikler kaydedildi.",
-
- // "item.edit.relationships.notifications.saved.title": "Relationships saved",
- "item.edit.relationships.notifications.saved.title": "İlişkiler kaydedildi",
-
- // "item.edit.relationships.reinstate-button": "Undo",
- "item.edit.relationships.reinstate-button": "Geri al",
-
- // "item.edit.relationships.save-button": "Save",
- "item.edit.relationships.save-button": "Kaydet",
-
- // "item.edit.relationships.no-entity-type": "Add 'dspace.entity.type' metadata to enable relationships for this item",
- "item.edit.relationships.no-entity-type": "Bu öğe için ilişkileri etkinleştirmek için 'dspace.entity.type' meta verilerini ekleyin",
-
-
-
- // "item.edit.tabs.bitstreams.head": "Bitstreams",
- "item.edit.tabs.bitstreams.head": "Veri akışları",
-
- // "item.edit.tabs.bitstreams.title": "Item Edit - Bitstreams",
- "item.edit.tabs.bitstreams.title": "Öge düzenle - Veri akışları",
-
- // "item.edit.tabs.curate.head": "Curate",
- "item.edit.tabs.curate.head": "Düzenleme",
-
- // "item.edit.tabs.curate.title": "Item Edit - Curate",
- "item.edit.tabs.curate.title": "Öge düzenle - Düzenleme",
-
- // "item.edit.tabs.metadata.head": "Metadata",
- "item.edit.tabs.metadata.head": "Meta veri",
-
- // "item.edit.tabs.metadata.title": "Item Edit - Metadata",
- "item.edit.tabs.metadata.title": "Öge düzenle - Meta veri",
-
- // "item.edit.tabs.relationships.head": "Relationships",
- "item.edit.tabs.relationships.head": "İlişkiler",
-
- // "item.edit.tabs.relationships.title": "Item Edit - Relationships",
- "item.edit.tabs.relationships.title": "Öge düzenle - İlişkiler",
-
- // "item.edit.tabs.status.buttons.authorizations.button": "Authorizations...",
- "item.edit.tabs.status.buttons.authorizations.button": "Yetkilendiriliyor...",
-
- // "item.edit.tabs.status.buttons.authorizations.label": "Edit item's authorization policies",
- "item.edit.tabs.status.buttons.authorizations.label": "Öğenin yetkilendirme politikalarını düzenle",
-
- // "item.edit.tabs.status.buttons.delete.button": "Permanently delete",
- "item.edit.tabs.status.buttons.delete.button": "Kalıcı olarak sil",
-
- // "item.edit.tabs.status.buttons.delete.label": "Completely expunge item",
- "item.edit.tabs.status.buttons.delete.label": "Ögeyi kalıcı olarak sil",
-
- // "item.edit.tabs.status.buttons.mappedCollections.button": "Mapped collections",
- "item.edit.tabs.status.buttons.mappedCollections.button": "Eşleştirilmiş koleksiyonlar",
-
- // "item.edit.tabs.status.buttons.mappedCollections.label": "Manage mapped collections",
- "item.edit.tabs.status.buttons.mappedCollections.label": "Eşlenen koleksiyonları yönetin",
-
- // "item.edit.tabs.status.buttons.move.button": "Move...",
- "item.edit.tabs.status.buttons.move.button": "Taşınıyor...",
-
- // "item.edit.tabs.status.buttons.move.label": "Move item to another collection",
- "item.edit.tabs.status.buttons.move.label": "Öğeyi başka bir koleksiyona taşı",
-
- // "item.edit.tabs.status.buttons.private.button": "Make it private...",
- "item.edit.tabs.status.buttons.private.button": "Gizleniyor...",
-
- // "item.edit.tabs.status.buttons.private.label": "Make item private",
- "item.edit.tabs.status.buttons.private.label": "Ögeyi gizle",
-
- // "item.edit.tabs.status.buttons.public.button": "Make it public...",
- "item.edit.tabs.status.buttons.public.button": "Öge herkese açık yapılıyor...",
-
- // "item.edit.tabs.status.buttons.public.label": "Make item public",
- "item.edit.tabs.status.buttons.public.label": "Herkese açık yap",
-
- // "item.edit.tabs.status.buttons.reinstate.button": "Reinstate...",
- "item.edit.tabs.status.buttons.reinstate.button": "Geri yükleniyor...",
-
- // "item.edit.tabs.status.buttons.reinstate.label": "Reinstate item into the repository",
- "item.edit.tabs.status.buttons.reinstate.label": "Öğeyi depoya geri yükle",
-
- // "item.edit.tabs.status.buttons.withdraw.button": "Withdraw...",
- "item.edit.tabs.status.buttons.withdraw.button": "Çıkar...",
-
- // "item.edit.tabs.status.buttons.withdraw.label": "Withdraw item from the repository",
- "item.edit.tabs.status.buttons.withdraw.label": "Depodan öğeyi çıkar",
-
- // "item.edit.tabs.status.description": "Welcome to the item management page. From here you can withdraw, reinstate, move or delete the item. You may also update or add new metadata / bitstreams on the other tabs.",
- "item.edit.tabs.status.description": "Öğe yönetimi sayfasına hoş geldiniz. Buradan öğeyi çıkarabilir, geri yükleyebilir, taşıyabilir veya silebilirsiniz. Diğer sekmelerde de güncelleyebilir veya yeni meta veri / bit akışları ekleyebilirsiniz.",
-
- // "item.edit.tabs.status.head": "Status",
- "item.edit.tabs.status.head": "Durum",
-
- // "item.edit.tabs.status.labels.handle": "Handle",
- "item.edit.tabs.status.labels.handle": "Takma ad",
-
- // "item.edit.tabs.status.labels.id": "Item Internal ID",
- "item.edit.tabs.status.labels.id": "Öge Dahili Kimliğ",
-
- // "item.edit.tabs.status.labels.itemPage": "Item Page",
- "item.edit.tabs.status.labels.itemPage": "Öge sayfası",
-
- // "item.edit.tabs.status.labels.lastModified": "Last Modified",
- "item.edit.tabs.status.labels.lastModified": "Son düzenleme",
-
- // "item.edit.tabs.status.title": "Item Edit - Status",
- "item.edit.tabs.status.title": "Öge düzenle - Durum",
-
- // "item.edit.tabs.versionhistory.head": "Version History",
- "item.edit.tabs.versionhistory.head": "Sürüm Geçmişi",
-
- // "item.edit.tabs.versionhistory.title": "Item Edit - Version History",
- "item.edit.tabs.versionhistory.title": "Öge düzenle - Sürüm Geçmişi",
-
- // "item.edit.tabs.versionhistory.under-construction": "Editing or adding new versions is not yet possible in this user interface.",
- "item.edit.tabs.versionhistory.under-construction": "Bu kullanıcı arayüzünde henüz yeni sürümleri düzenlemek veya eklemek mümkün değil.",
-
- // "item.edit.tabs.view.head": "View Item",
- "item.edit.tabs.view.head": "Ürünü incele",
-
- // "item.edit.tabs.view.title": "Item Edit - View",
- "item.edit.tabs.view.title": "Öge düzenle - incele",
-
-
-
- // "item.edit.withdraw.cancel": "Cancel",
- "item.edit.withdraw.cancel": "İptal et",
-
- // "item.edit.withdraw.confirm": "Withdraw",
- "item.edit.withdraw.confirm": "Çıkar",
-
- // "item.edit.withdraw.description": "Are you sure this item should be withdrawn from the archive?",
- "item.edit.withdraw.description": "Bu öğenin arşivden çıkartılması gerektiğinden emin misiniz?",
-
- // "item.edit.withdraw.error": "An error occurred while withdrawing the item",
- "item.edit.withdraw.error": "Öğe çıkartılırken bir hata oluştu",
-
- // "item.edit.withdraw.header": "Withdraw item: {{ id }}",
- "item.edit.withdraw.header": "Çıkarılan öge: {{ id }}",
-
- // "item.edit.withdraw.success": "The item was withdrawn successfully",
- "item.edit.withdraw.success": "Öğe başarıyla çıkartıldı",
-
-
-
- // "item.listelement.badge": "Item",
- "item.listelement.badge": "Öge",
-
- // "item.page.description": "Description",
- "item.page.description": "Açıklama",
-
- // "item.page.edit": "Edit this item",
- "item.page.edit": "Bu ögeyi düzenle",
-
- // "item.page.journal-issn": "Journal ISSN",
- "item.page.journal-issn": "Süreli Yayın ISSN",
-
- // "item.page.journal-title": "Journal Title",
- "item.page.journal-title": "Süreli Yayın başlığı",
-
- // "item.page.publisher": "Publisher",
- "item.page.publisher": "Yayınevi",
-
- // "item.page.titleprefix": "Item: ",
- "item.page.titleprefix": "Öge: ",
-
- // "item.page.volume-title": "Volume Title",
- "item.page.volume-title": "Cilt Başlığı",
-
- // "item.search.results.head": "Item Search Results",
- "item.search.results.head": "Öge Arama Sonuçları",
-
- // "item.search.title": "DSpace Angular :: Item Search",
- "item.search.title": "DSpace Angular :: Öge Arama",
-
-
- // "item.page.abstract": "Abstract",
- "item.page.abstract": "Özet",
-
- // "item.page.author": "Authors",
- "item.page.author": "Yazarlar",
-
- // "item.page.citation": "Citation",
- "item.page.citation": "Alıntı",
-
- // "item.page.collections": "Collections",
- "item.page.collections": "Koleksiyonlar",
-
- // "item.page.date": "Date",
- "item.page.date": "Tarih",
-
- // "item.page.edit": "Edit this item",
- "item.page.edit": "Bu öğeyi düzenle",
-
- // "item.page.files": "Files",
- "item.page.files": "Dosyalar",
-
- // "item.page.filesection.description": "Description:",
- "item.page.filesection.description": "Açıklama",
-
- // "item.page.filesection.download": "Download",
- "item.page.filesection.download": "İndir",
-
- // "item.page.filesection.format": "Format:",
- "item.page.filesection.format": "Format:",
-
- // "item.page.filesection.name": "Name:",
- "item.page.filesection.name": "Ad:",
-
- // "item.page.filesection.size": "Size:",
- "item.page.filesection.size": "Boyut:",
-
- // "item.page.journal.search.title": "Articles in this journal",
- "item.page.journal.search.title": "Bu süreli yayındaki makaleler",
-
- // "item.page.link.full": "Full item page",
- "item.page.link.full": "Tam öğe sayfası",
-
- // "item.page.link.simple": "Simple item page",
- "item.page.link.simple": "Sadeleştirilmiş öğe sayfası",
-
- // "item.page.person.search.title": "Articles by this author",
- "item.page.person.search.title": "Bu yazarın makaleleri",
-
- // "item.page.related-items.view-more": "Show {{ amount }} more",
- "item.page.related-items.view-more": "Daha fazla göster {{ amount }}",
-
- // "item.page.related-items.view-less": "Hide last {{ amount }}",
- "item.page.related-items.view-less": "Sonuncuyu gizle {{ amount }}",
-
- // "item.page.relationships.isAuthorOfPublication": "Publications",
- "item.page.relationships.isAuthorOfPublication": "Yayınlar",
-
- // "item.page.relationships.isJournalOfPublication": "Publications",
- "item.page.relationships.isJournalOfPublication": "Yayınlar",
-
- // "item.page.relationships.isOrgUnitOfPerson": "Authors",
- "item.page.relationships.isOrgUnitOfPerson": "Yazarlar",
-
- // "item.page.relationships.isOrgUnitOfProject": "Research Projects",
- "item.page.relationships.isOrgUnitOfProject": "Araştırma projeleri",
-
- // "item.page.subject": "Keywords",
- "item.page.subject": "Anahtar kelimeler",
-
- // "item.page.uri": "URI",
- "item.page.uri": "URI",
-
- // "item.page.bitstreams.view-more": "Show more",
- "item.page.bitstreams.view-more": "Daha fazla göster",
-
- // "item.page.bitstreams.collapse": "Collapse",
- "item.page.bitstreams.collapse": "Daralt",
-
- // "item.page.filesection.original.bundle" : "Original bundle",
- "item.page.filesection.original.bundle" : "Orijinal seri",
-
- // "item.page.filesection.license.bundle" : "License bundle",
- "item.page.filesection.license.bundle" : "Lisanslı seri",
-
- // "item.preview.dc.identifier.uri": "Identifier:",
- "item.preview.dc.identifier.uri": "Belirteç:",
-
- // "item.preview.dc.contributor.author": "Authors:",
- "item.preview.dc.contributor.author": "Yazarlar:",
-
- // "item.preview.dc.date.issued": "Published date:",
- "item.preview.dc.date.issued": "Yayınlanma tarihi:",
-
- // "item.preview.dc.description.abstract": "Abstract:",
- "item.preview.dc.description.abstract": "Özet:",
-
- // "item.preview.dc.identifier.other": "Other identifier:",
- "item.preview.dc.identifier.other": "Diğer Belirteçler:",
-
- // "item.preview.dc.language.iso": "Language:",
- "item.preview.dc.language.iso": "Dil:",
-
- // "item.preview.dc.subject": "Subjects:",
- "item.preview.dc.subject": "Konular:",
-
- // "item.preview.dc.title": "Title:",
- "item.preview.dc.title": "Başlık:",
-
- // "item.preview.person.familyName": "Surname:",
- "item.preview.person.familyName": "Soyad:",
-
- // "item.preview.person.givenName": "Name:",
- "item.preview.person.givenName": "Ad:",
-
- // "item.preview.person.identifier.orcid": "ORCID:",
- "item.preview.person.identifier.orcid": "ORCID:",
-
-
- // "item.select.confirm": "Confirm selected",
- "item.select.confirm": "Seçileni onayla",
-
- // "item.select.empty": "No items to show",
- "item.select.empty": "Gösterilecek öğe yok",
-
- // "item.select.table.author": "Author",
- "item.select.table.author": "Yazar",
-
- // "item.select.table.collection": "Collection",
- "item.select.table.collection": "Koleksiyon",
-
- // "item.select.table.title": "Title",
- "item.select.table.title": "Başlık",
-
-
- // "item.version.history.empty": "There are no other versions for this item yet.",
- "item.version.history.empty": "Bu öğe için henüz başka sürüm yok.",
-
- // "item.version.history.head": "Version History",
- "item.version.history.head": "Sürüm Geçmişi",
-
- // "item.version.history.return": "Return",
- "item.version.history.return": "Geri dön",
-
- // "item.version.history.selected": "Selected version",
- "item.version.history.selected": "Seçilen sürüm",
-
- // "item.version.history.table.version": "Version",
- "item.version.history.table.version": "Sürüm",
-
- // "item.version.history.table.item": "Item",
- "item.version.history.table.item": "Öge",
-
- // "item.version.history.table.editor": "Editor",
- "item.version.history.table.editor": "Editör",
-
- // "item.version.history.table.date": "Date",
- "item.version.history.table.date": "Tarih",
-
- // "item.version.history.table.summary": "Summary",
- "item.version.history.table.summary": "Özet",
-
-
-
- // "item.version.notice": "This is not the latest version of this item. The latest version can be found here .",
- "item.version.notice": "Bu, bu öğenin en son sürümü değil. En son sürüm burada bulunabilir.",
-
-
-
- // "journal.listelement.badge": "Journal",
- "journal.listelement.badge": "Süreli yayın",
-
- // "journal.page.description": "Description",
- "journal.page.description": "Açıklama",
-
- // "journal.page.edit": "Edit this item",
- "journal.page.edit": "Bu öğeyi düzenle",
-
- // "journal.page.editor": "Editor-in-Chief",
- "journal.page.editor": "Genel Yayın Yönetmeni",
-
- // "journal.page.issn": "ISSN",
- "journal.page.issn": "ISSN",
-
- // "journal.page.publisher": "Publisher",
- "journal.page.publisher": "Yayınevi",
-
- // "journal.page.titleprefix": "Journal: ",
- "journal.page.titleprefix": "Süreli yayın: ",
-
- // "journal.search.results.head": "Journal Search Results",
- "journal.search.results.head": "Süreli Yayın Arama Sonuçları",
-
- // "journal.search.title": "DSpace Angular :: Journal Search",
- "journal.search.title": "DSpace Angular :: Süreli Yayın Arama",
-
-
-
- // "journalissue.listelement.badge": "Journal Issue",
- "journalissue.listelement.badge": "Süreli Yayın Sayısı",
-
- // "journalissue.page.description": "Description",
- "journalissue.page.description": "Açıklama",
-
- // "journalissue.page.edit": "Edit this item",
- "journalissue.page.edit": "Bu öğeyi düzenle",
-
- // "journalissue.page.issuedate": "Issue Date",
- "journalissue.page.issuedate": "Basım tarihi",
-
- // "journalissue.page.journal-issn": "Journal ISSN",
- "journalissue.page.journal-issn": "Süreli yayın ISSN",
-
- // "journalissue.page.journal-title": "Journal Title",
- "journalissue.page.journal-title": "Süreli yayın Başlığı",
-
- // "journalissue.page.keyword": "Keywords",
- "journalissue.page.keyword": "Anahtar kelimeler",
-
- // "journalissue.page.number": "Number",
- "journalissue.page.number": "Sayı",
-
- // "journalissue.page.titleprefix": "Journal Issue: ",
- "journalissue.page.titleprefix": "Süreli yayın sayısı: ",
-
-
-
- // "journalvolume.listelement.badge": "Journal Volume",
- "journalvolume.listelement.badge": "Süreli yayın cilti",
-
- // "journalvolume.page.description": "Description",
- "journalvolume.page.description": "Açıklama",
-
- // "journalvolume.page.edit": "Edit this item",
- "journalvolume.page.edit": "Bu öğeyi düzenle",
-
- // "journalvolume.page.issuedate": "Issue Date",
- "journalvolume.page.issuedate": "Basım tarihi",
-
- // "journalvolume.page.titleprefix": "Journal Volume: ",
- "journalvolume.page.titleprefix": "Süreli yayın cilti: ",
-
- // "journalvolume.page.volume": "Volume",
- "journalvolume.page.volume": "Cilt",
-
-
-
- // "loading.bitstream": "Loading bitstream...",
- "loading.bitstream": "Veri akışı yükleniyor...",
-
- // "loading.bitstreams": "Loading bitstreams...",
- "loading.bitstreams": "Veri akışı yükleniyor...",
-
- // "loading.browse-by": "Loading items...",
- "loading.browse-by": "Veri akışı yükleniyor...",
-
- // "loading.browse-by-page": "Loading page...",
- "loading.browse-by-page": "Yükleme sayfası...",
-
- // "loading.collection": "Loading collection...",
- "loading.collection": "Koleksiyon yükleniyor...",
-
- // "loading.collections": "Loading collections...",
- "loading.collections": "Koleksiyon yükleniyor...",
-
- // "loading.content-source": "Loading content source...",
- "loading.content-source": "İçerik kaynağı yükleniyor...",
-
- // "loading.community": "Loading community...",
- "loading.community": "Topluluk yükleniyor...",
-
- // "loading.default": "Loading...",
- "loading.default": "Yükleniyor...",
-
- // "loading.item": "Loading item...",
- "loading.item": "Ögeler yükleniyor...",
-
- // "loading.items": "Loading items...",
- "loading.items": "Ögeler yükleniyor...",
-
- // "loading.mydspace-results": "Loading items...",
- "loading.mydspace-results": "Ögeler yükleniyor...",
-
- // "loading.objects": "Loading...",
- "loading.objects": "Yükleniyor...",
-
- // "loading.recent-submissions": "Loading recent submissions...",
- "loading.recent-submissions": "Son gönderiler yükleniyor...",
-
- // "loading.search-results": "Loading search results...",
- "loading.search-results": "Arama sonuçları yükleniyor...",
-
- // "loading.sub-collections": "Loading sub-collections...",
- "loading.sub-collections": "Alt koleksiyonlar yükleniyor...",
-
- // "loading.sub-communities": "Loading sub-communities...",
- "loading.sub-communities": "Alt topluluklar yükleniyor...",
-
- // "loading.top-level-communities": "Loading top-level communities...",
- "loading.top-level-communities": "Üst düzey topluluklar yükleniyor...",
-
-
-
- // "login.form.email": "Email address",
- "login.form.email": "E-posta adresi",
-
- // "login.form.forgot-password": "Have you forgotten your password?",
- "login.form.forgot-password": "Parolanızı unuttunuz mu?",
-
- // "login.form.header": "Please log in to DSpace",
- "login.form.header": "Lütfen DSpace'e giriş yapın",
-
- // "login.form.new-user": "New user? Click here to register.",
- "login.form.new-user": "Yeni kullanıcı mısınız? Kayıt olmak için buraya tıklayın.",
-
- // "login.form.or-divider": "or",
- "login.form.or-divider": "ya da",
-
- // "login.form.password": "Password",
- "login.form.password": "Parola",
-
- // "login.form.shibboleth": "Log in with Shibboleth",
- "login.form.shibboleth": "Shibboleth ile giriş yapın",
-
- // "login.form.submit": "Log in",
- "login.form.submit": "Giriş yap",
-
- // "login.title": "Login",
- "login.title": "Giriş",
-
- // "login.breadcrumbs": "Login",
- "login.breadcrumbs": "Giriş",
-
-
-
- // "logout.form.header": "Log out from DSpace",
- "logout.form.header": "DSpace'den çıkış yapın",
-
- // "logout.form.submit": "Log out",
- "logout.form.submit": "Çıkış yap",
-
- // "logout.title": "Logout",
- "logout.title": "Çıkış yap",
-
-
-
- // "menu.header.admin": "Admin",
- "menu.header.admin": "Yönetici",
-
- // "menu.header.image.logo": "Repository logo",
- "menu.header.image.logo": "Depo logosu",
-
-
-
- // "menu.section.access_control": "Access Control",
- "menu.section.access_control": "Giriş kontrolü",
-
- // "menu.section.access_control_authorizations": "Authorizations",
- "menu.section.access_control_authorizations": "Yetkilendirmeler",
-
- // "menu.section.access_control_groups": "Groups",
- "menu.section.access_control_groups": "Gruplar",
-
- // "menu.section.access_control_people": "People",
- "menu.section.access_control_people": "Kişiler",
-
-
-
- // "menu.section.admin_search": "Admin Search",
- "menu.section.admin_search": "Yönetici araması",
-
-
-
- // "menu.section.browse_community": "This Community",
- "menu.section.browse_community": "Bu Topluluk",
-
- // "menu.section.browse_community_by_author": "By Author",
- "menu.section.browse_community_by_author": "Yazara göre",
-
- // "menu.section.browse_community_by_issue_date": "By Issue Date",
- "menu.section.browse_community_by_issue_date": "Basım tarihine göre",
-
- // "menu.section.browse_community_by_title": "By Title",
- "menu.section.browse_community_by_title": "Başlığa göre",
-
- // "menu.section.browse_global": "All of DSpace",
- "menu.section.browse_global": "Tümü",
-
- // "menu.section.browse_global_by_author": "By Author",
- "menu.section.browse_global_by_author": "Yazara göre",
-
- // "menu.section.browse_global_by_dateissued": "By Issue Date",
- "menu.section.browse_global_by_dateissued": "Basım tarihine göre",
-
- // "menu.section.browse_global_by_subject": "By Subject",
- "menu.section.browse_global_by_subject": "Konuya göre",
-
- // "menu.section.browse_global_by_title": "By Title",
- "menu.section.browse_global_by_title": "Başlığa göre",
-
- // "menu.section.browse_global_communities_and_collections": "Communities & Collections",
- "menu.section.browse_global_communities_and_collections": "Topluluklar ve Koleksiyonlar",
-
-
-
- // "menu.section.control_panel": "Control Panel",
- "menu.section.control_panel": "Kontrol Paneli",
-
- // "menu.section.curation_task": "Curation Task",
- "menu.section.curation_task": "Düzenleme görevi",
-
-
-
- // "menu.section.edit": "Edit",
- "menu.section.edit": "Düzenle",
-
- // "menu.section.edit_collection": "Collection",
- "menu.section.edit_collection": "Koleksiyon",
-
- // "menu.section.edit_community": "Community",
- "menu.section.edit_community": "Topluluk",
-
- // "menu.section.edit_item": "Item",
- "menu.section.edit_item": "Öge",
-
-
-
- // "menu.section.export": "Export",
- "menu.section.export": "Dışa aktar",
-
- // "menu.section.export_collection": "Collection",
- "menu.section.export_collection": "Koleksiyon",
-
- // "menu.section.export_community": "Community",
- "menu.section.export_community": "Topluluk",
-
- // "menu.section.export_item": "Item",
- "menu.section.export_item": "Öge",
-
- // "menu.section.export_metadata": "Metadata",
- "menu.section.export_metadata": "Meta veri",
-
-
-
- // "menu.section.icon.access_control": "Access Control menu section",
- "menu.section.icon.access_control": "Erişim Kontrolü menüsü bölümü",
-
- // "menu.section.icon.admin_search": "Admin search menu section",
- "menu.section.icon.admin_search": "Yönetici arama menüsü bölümü",
-
- // "menu.section.icon.control_panel": "Control Panel menu section",
- "menu.section.icon.control_panel": "Kontrol Paneli menü bölümü",
-
- // "menu.section.icon.curation_task": "Curation Task menu section",
- "menu.section.icon.curation_task": "Düzenleme Görevi menüsü bölümü",
-
- // "menu.section.icon.edit": "Edit menu section",
- "menu.section.icon.edit": "Menü bölümünü düzenle",
-
- // "menu.section.icon.export": "Export menu section",
- "menu.section.icon.export": "Menü bölümünü dışa aktar",
-
- // "menu.section.icon.find": "Find menu section",
- "menu.section.icon.find": "Menü bölümünü bulun",
-
- // "menu.section.icon.import": "Import menu section",
- "menu.section.icon.import": "Menü bölümünü içe aktar",
-
- // "menu.section.icon.new": "New menu section",
- "menu.section.icon.new": "Yeni menü bölümü",
-
- // "menu.section.icon.pin": "Pin sidebar",
- "menu.section.icon.pin": "Yan çubuğu sabitle",
-
- // "menu.section.icon.processes": "Processes menu section",
- "menu.section.icon.processes": "İşlemler menüsü bölümü",
-
- // "menu.section.icon.registries": "Registries menu section",
- "menu.section.icon.registries": "Kayıtlar menüsü bölümü",
-
- // "menu.section.icon.statistics_task": "Statistics Task menu section",
- "menu.section.icon.statistics_task": "İstatistik Görev menüsü bölümü",
-
- // "menu.section.icon.unpin": "Unpin sidebar",
- "menu.section.icon.unpin": "Kenar çubuğunu kaldır",
-
-
-
- // "menu.section.import": "Import",
- "menu.section.import": "İçe aktar",
-
- // "menu.section.import_batch": "Batch Import (ZIP)",
- "menu.section.import_batch": "Toplu İçe Aktarma (ZIP)",
-
- // "menu.section.import_metadata": "Metadata",
- "menu.section.import_metadata": "Meta veri",
-
-
-
- // "menu.section.new": "New",
- "menu.section.new": "Yeni",
-
- // "menu.section.new_collection": "Collection",
- "menu.section.new_collection": "Koleksiyon",
-
- // "menu.section.new_community": "Community",
- "menu.section.new_community": "Topluluk",
-
- // "menu.section.new_item": "Item",
- "menu.section.new_item": "Öğe",
-
- // "menu.section.new_item_version": "Item Version",
- "menu.section.new_item_version": "Öğe Sürümü",
-
- // "menu.section.new_process": "Process",
- "menu.section.new_process": "Süreç",
-
-
-
- // "menu.section.pin": "Pin sidebar",
- "menu.section.pin": "Kenar çubuğunu sabitle",
-
- // "menu.section.unpin": "Unpin sidebar",
- "menu.section.unpin": "Kenar çubuğunun sabitlemesini kaldır",
-
-
-
- // "menu.section.processes": "Processes",
- "menu.section.processes": "Süreçler",
-
-
-
- // "menu.section.registries": "Registries",
- "menu.section.registries": "Kayıt",
-
- // "menu.section.registries_format": "Format",
- "menu.section.registries_format": "Format",
-
- // "menu.section.registries_metadata": "Metadata",
- "menu.section.registries_metadata": "Metadata",
-
-
-
- // "menu.section.statistics": "Statistics",
- "menu.section.statistics": "İstatistik",
-
- // "menu.section.statistics_task": "Statistics Task",
- "menu.section.statistics_task": "İstatistiksel Görev",
-
-
-
- // "menu.section.toggle.access_control": "Toggle Access Control section",
- "menu.section.toggle.access_control": "Erişim kontrolü bölümünü aç/kapat",
-
- // "menu.section.toggle.control_panel": "Toggle Control Panel section",
- "menu.section.toggle.control_panel": "Kontrol Paneli bölümünü aç/kapat",
-
- // "menu.section.toggle.curation_task": "Toggle Curation Task section",
- "menu.section.toggle.curation_task": "İyileştirme Görevi bölümünü aç/kapat",
-
- // "menu.section.toggle.edit": "Toggle Edit section",
- "menu.section.toggle.edit": "Düzenleme bölümünü aç/kapat",
-
- // "menu.section.toggle.export": "Toggle Export section",
- "menu.section.toggle.export": "Dışa Aktarma bölümünü aç/kapat",
-
- // "menu.section.toggle.find": "Toggle Find section",
- "menu.section.toggle.find": "Arama bölümünü aç/kapat",
-
- // "menu.section.toggle.import": "Toggle Import section",
- "menu.section.toggle.import": "İçe Aktarma bölümünü aç/kapat",
-
- // "menu.section.toggle.new": "Toggle New section",
- "menu.section.toggle.new": "Yeni bölümü aç/kapat",
-
- // "menu.section.toggle.registries": "Toggle Registries section",
- "menu.section.toggle.registries": "Kayıtlar bölümünü aç/kapat",
-
- // "menu.section.toggle.statistics_task": "Toggle Statistics Task section",
- "menu.section.toggle.statistics_task": "İstatistik Görev bölümünü aç/kapat",
-
-
- // "menu.section.workflow": "Administer Workflow",
- "menu.section.workflow": "İş Akışını Yönet",
-
-
- // "mydspace.description": "",
- "mydspace.description": "",
-
- // "mydspace.general.text-here": "here",
- "mydspace.general.text-here": "Burada",
-
- // "mydspace.messages.controller-help": "Select this option to send a message to item's submitter.",
- "mydspace.messages.controller-help": "Öğeyi gönderene bir mesaj göndermek için bu seçeneği seçin.",
-
- // "mydspace.messages.description-placeholder": "Insert your message here...",
- "mydspace.messages.description-placeholder": "Mesajınızı buraya ekleyin...",
-
- // "mydspace.messages.hide-msg": "Hide message",
- "mydspace.messages.hide-msg": "Mesajı gizle",
-
- // "mydspace.messages.mark-as-read": "Mark as read",
- "mydspace.messages.mark-as-read": "Okundu olarak işaretle",
-
- // "mydspace.messages.mark-as-unread": "Mark as unread",
- "mydspace.messages.mark-as-unread": "Okunmamış olarak işaretle",
-
- // "mydspace.messages.no-content": "No content.",
- "mydspace.messages.no-content": "İçerik yok.",
-
- // "mydspace.messages.no-messages": "No messages yet.",
- "mydspace.messages.no-messages": "Henüz mesaj yok.",
-
- // "mydspace.messages.send-btn": "Send",
- "mydspace.messages.send-btn": "Gönder",
-
- // "mydspace.messages.show-msg": "Show message",
- "mydspace.messages.show-msg": "Mesajı göster",
-
- // "mydspace.messages.subject-placeholder": "Subject...",
- "mydspace.messages.subject-placeholder": "Konu...",
-
- // "mydspace.messages.submitter-help": "Select this option to send a message to controller.",
- "mydspace.messages.submitter-help": "Kontrolöre mesaj göndermek için bu seçeneği seçin.",
-
- // "mydspace.messages.title": "Messages",
- "mydspace.messages.title": "Mesajlar",
-
- // "mydspace.messages.to": "To",
- "mydspace.messages.to": "-e",
-
- // "mydspace.new-submission": "New submission",
- "mydspace.new-submission": "Yeni talep",
-
- // "mydspace.new-submission-external": "Import metadata from external source",
- "mydspace.new-submission-external": "Harici kaynaktan metadataları içe aktar",
-
- // "mydspace.new-submission-external-short": "Import metadata",
- "mydspace.new-submission-external-short": "Metadataları içeri aktar.",
-
- // "mydspace.results.head": "Your submissions",
- "mydspace.results.head": "Gönderimleriniz",
-
- // "mydspace.results.no-abstract": "No Abstract",
- "mydspace.results.no-abstract": "Özet yok",
-
- // "mydspace.results.no-authors": "No Authors",
- "mydspace.results.no-authors": "Yazar yok.",
-
- // "mydspace.results.no-collections": "No Collections",
- "mydspace.results.no-collections": "Koleksiyon yok",
-
- // "mydspace.results.no-date": "No Date",
- "mydspace.results.no-date": "Tarih yok",
-
- // "mydspace.results.no-files": "No Files",
- "mydspace.results.no-files": "Dosya yok",
-
- // "mydspace.results.no-results": "There were no items to show",
- "mydspace.results.no-results": "Gösterilecek öğe yok.",
-
- // "mydspace.results.no-title": "No title",
- "mydspace.results.no-title": "Başlık yok",
-
- // "mydspace.results.no-uri": "No Uri",
- "mydspace.results.no-uri": "Uri yok",
-
- // "mydspace.show.workflow": "All tasks",
- "mydspace.show.workflow": "Tüm görevler",
-
- // "mydspace.show.workspace": "Your Submissions",
- "mydspace.show.workspace": "Gönderimleriniz",
-
- // "mydspace.status.archived": "Archived",
- "mydspace.status.archived": "Arşivlendi",
-
- // "mydspace.status.validation": "Validation",
- "mydspace.status.validation": "Doğrulama",
-
- // "mydspace.status.waiting-for-controller": "Waiting for controller",
- "mydspace.status.waiting-for-controller": "Kontrolör bekleniyor",
-
- // "mydspace.status.workflow": "Workflow",
- "mydspace.status.workflow": "İş akışı",
-
- // "mydspace.status.workspace": "Workspace",
- "mydspace.status.workspace": "Çalışma alanı",
-
- // "mydspace.title": "MyDSpace",
- "mydspace.title": "MyDSpace",
-
- // "mydspace.upload.upload-failed": "Error creating new workspace. Please verify the content uploaded before retry.",
- "mydspace.upload.upload-failed": "Yeni çalışma alanı oluşturulurken hata oluştu. Lütfen yeniden denemeden önce yüklenen içeriği doğrulayın.",
-
- // "mydspace.upload.upload-failed-manyentries": "Unprocessable file. Detected too many entries but allowed only one for file.",
- "mydspace.upload.upload-failed-manyentries": "İşlenemeyen dosya. Çok fazla giriş algılandı fakat dosya için yalnızca bir girişe izin verildi.",
-
- // "mydspace.upload.upload-failed-moreonefile": "Unprocessable request. Only one file is allowed.",
- "mydspace.upload.upload-failed-moreonefile": "İşlenemeyen istek. Yalnızca bir dosyaya izin verilir.",
-
- // "mydspace.upload.upload-multiple-successful": "{{qty}} new workspace items created.",
- "mydspace.upload.upload-multiple-successful": "{{qty}} yeni çalışma alanı öğeleri oluşturuldu.",
-
- // "mydspace.upload.upload-successful": "New workspace item created. Click {{here}} for edit it.",
- "mydspace.upload.upload-successful": "Yeni çalışma alanı öğesi oluşturuldu. Düzenlemek için {{here}} tıklayın.",
-
- // "mydspace.view-btn": "View",
- "mydspace.view-btn": "Görünüm",
-
-
-
- // "nav.browse.header": "All of DSpace",
- "nav.browse.header": "DSpace'in tümü",
-
- // "nav.community-browse.header": "By Community",
- "nav.community-browse.header": "Topluluk tarafından",
-
- // "nav.language": "Language switch",
- "nav.language": "Dil değiştirme",
-
- // "nav.login": "Log In",
- "nav.login": "Giriş yap",
-
- // "nav.logout": "Log Out",
- "nav.logout": "Çıkış yap",
-
- // "nav.mydspace": "MyDSpace",
- "nav.mydspace": "BenimDSpace'im",
-
- // "nav.profile": "Profile",
- "nav.profile": "Profil",
-
- // "nav.search": "Search",
- "nav.search": "Arama",
-
- // "nav.statistics.header": "Statistics",
- "nav.statistics.header": "İstatistik",
-
- // "nav.stop-impersonating": "Stop impersonating EPerson",
- "nav.stop-impersonating": "EPerson'ı taklit etmeyi bırakın",
-
-
-
- // "orgunit.listelement.badge": "Organizational Unit",
- "orgunit.listelement.badge": "Organizasyon Birimi",
-
- // "orgunit.page.city": "City",
- "orgunit.page.city": "Şehir",
-
- // "orgunit.page.country": "Country",
- "orgunit.page.country": "Ülke",
-
- // "orgunit.page.dateestablished": "Date established",
- "orgunit.page.dateestablished": "Kuruluş tarihi",
-
- // "orgunit.page.description": "Description",
- "orgunit.page.description": "Açıklama",
-
- // "orgunit.page.edit": "Edit this item",
- "orgunit.page.edit": "Bu öğeyi düzenle",
-
- // "orgunit.page.id": "ID",
- "orgunit.page.id": "Kimlik",
-
- // "orgunit.page.titleprefix": "Organizational Unit: ",
- "orgunit.page.titleprefix": "Organizasyon Birimi: ",
-
-
-
- // "pagination.results-per-page": "Results Per Page",
- "pagination.results-per-page": "Sayfa başına sonuç",
-
- // "pagination.showing.detail": "{{ range }} of {{ total }}",
- "pagination.showing.detail": "{{ range }} / {{ total }}",
-
- // "pagination.showing.label": "Now showing ",
- "pagination.showing.label": "Şimdi gösteriliyor ",
-
- // "pagination.sort-direction": "Sort Options",
- "pagination.sort-direction": "Sıralama Seçenekleri",
-
-
-
- // "person.listelement.badge": "Person",
- "person.listelement.badge": "Kişi",
-
- // "person.listelement.no-title": "No name found",
- "person.listelement.no-title": "İsim bulunamadı",
-
- // "person.page.birthdate": "Birth Date",
- "person.page.birthdate": "Doğum Tarihi",
-
- // "person.page.edit": "Edit this item",
- "person.page.edit": "Bu öğeyi düzenle",
-
- // "person.page.email": "Email Address",
- "person.page.email": "E-posta Adresi",
-
- // "person.page.firstname": "First Name",
- "person.page.firstname": "Ad",
-
- // "person.page.jobtitle": "Job Title",
- "person.page.jobtitle": "İş Adı",
-
- // "person.page.lastname": "Last Name",
- "person.page.lastname": "Soyad",
-
- // "person.page.link.full": "Show all metadata",
- "person.page.link.full": "Tüm metadata'yı göster",
-
- // "person.page.orcid": "ORCID",
- "person.page.orcid": "ORCID",
-
- // "person.page.staffid": "Staff ID",
- "person.page.staffid": "Personel Kimliği",
-
- // "person.page.titleprefix": "Person: ",
- "person.page.titleprefix": "Kişi: ",
-
- // "person.search.results.head": "Person Search Results",
- "person.search.results.head": "Kişi Arama Sonuçları",
-
- // "person.search.title": "DSpace Angular :: Person Search",
- "person.search.title": "DSpace Angular :: Kişi Arama",
-
-
-
- // "process.new.select-parameters": "Parameters",
- "process.new.select-parameters": "Parametreler",
-
- // "process.new.cancel": "Cancel",
- "process.new.cancel": "İptal etmek",
-
- // "process.new.submit": "Submit",
- "process.new.submit": "Göndermek",
-
- // "process.new.select-script": "Script",
- "process.new.select-script": "Betik",
-
- // "process.new.select-script.placeholder": "Choose a script...",
- "process.new.select-script.placeholder": "Betik Seçiniz...",
-
- // "process.new.select-script.required": "Script is required",
- "process.new.select-script.required": "Betik gerekli",
-
- // "process.new.parameter.file.upload-button": "Select file...",
- "process.new.parameter.file.upload-button": "Dosya seç...",
-
- // "process.new.parameter.file.required": "Please select a file",
- "process.new.parameter.file.required": "Lütfen dosya seçiniz.",
-
- // "process.new.parameter.string.required": "Parameter value is required",
- "process.new.parameter.string.required": "Parametre değeri gerekli",
-
- // "process.new.parameter.type.value": "value",
- "process.new.parameter.type.value": "Değer",
-
- // "process.new.parameter.type.file": "file",
- "process.new.parameter.type.file": "dosya",
-
- // "process.new.parameter.required.missing": "The following parameters are required but still missing:",
- "process.new.parameter.required.missing": "Aşağıdaki parametreler gerekli ancak yine de eksik:",
-
- // "process.new.notification.success.title": "Success",
- "process.new.notification.success.title": "Başarı",
-
- // "process.new.notification.success.content": "The process was successfully created",
- "process.new.notification.success.content": "Süreç başarıyla oluşturuldu",
-
- // "process.new.notification.error.title": "Error",
- "process.new.notification.error.title": "Hata",
-
- // "process.new.notification.error.content": "An error occurred while creating this process",
- "process.new.notification.error.content": "Bu süreç oluşturulurken bir hata oluştu",
-
- // "process.new.header": "Create a new process",
- "process.new.header": "Yeni bir süreç oluştur",
-
- // "process.new.title": "Create a new process",
- "process.new.title": "Yeni bir süreç oluştur",
-
- // "process.new.breadcrumbs": "Create a new process",
- "process.new.breadcrumbs": "Yeni bir süreç oluştur",
-
-
-
- // "process.detail.arguments" : "Arguments",
- "process.detail.arguments" : "Argümanlar",
-
- // "process.detail.arguments.empty" : "This process doesn't contain any arguments",
- "process.detail.arguments.empty" : "Bu süreç herhangi bir argüman içermiyor",
-
- // "process.detail.back" : "Back",
- "process.detail.back" : "Geri",
-
- // "process.detail.output" : "Process Output",
- "process.detail.output" : "Süreç Çıktısı",
-
- // "process.detail.logs.button": "Retrieve process output",
- "process.detail.logs.button": "Süreç çıktısını geri al",
-
- // "process.detail.logs.loading": "Retrieving",
- "process.detail.logs.loading": "Geri almak",
-
- // "process.detail.logs.none": "This process has no output",
- "process.detail.logs.none": "Bu sürecin çıktısı yok",
-
- // "process.detail.output-files" : "Output Files",
- "process.detail.output-files" : "Çıktı dosyaları",
-
- // "process.detail.output-files.empty" : "This process doesn't contain any output files",
- "process.detail.output-files.empty" : "Bu süreç herhangi bir çıktı dosyası içermiyor",
-
- // "process.detail.script" : "Script",
- "process.detail.script" : "Betik",
-
- // "process.detail.title" : "Process: {{ id }} - {{ name }}",
- "process.detail.title" : "Süreç: {{ id }} - {{ name }}",
-
- // "process.detail.start-time" : "Start time",
- "process.detail.start-time" : "Başlangıç saati",
-
- // "process.detail.end-time" : "Finish time",
- "process.detail.end-time" : "Bitiş zamanı",
-
- // "process.detail.status" : "Status",
- "process.detail.status" : "Durum",
-
- // "process.detail.create" : "Create similar process",
- "process.detail.create" : "Benzer süreç oluştur",
-
-
-
- // "process.overview.table.finish" : "Finish time",
- "process.overview.table.finish" : "Bitiş zamanı",
-
- // "process.overview.table.id" : "Process ID",
- "process.overview.table.id" : "Süreç kimliği",
-
- // "process.overview.table.name" : "Name",
- "process.overview.table.name" : "Ad",
-
- // "process.overview.table.start" : "Start time",
- "process.overview.table.start" : "Başlangıç zamanı",
-
- // "process.overview.table.status" : "Status",
- "process.overview.table.status" : "Durum",
-
- // "process.overview.table.user" : "User",
- "process.overview.table.user" : "Kullanıcı",
-
- // "process.overview.title": "Processes Overview",
- "process.overview.title": "Süreçlere Genel Bakış",
-
- // "process.overview.breadcrumbs": "Processes Overview",
- "process.overview.breadcrumbs": "Süreçlere Genel Bakış",
-
- // "process.overview.new": "New",
- "process.overview.new": "Yeni",
-
-
- // "profile.breadcrumbs": "Update Profile",
- "profile.breadcrumbs": "Profili Güncelle",
-
- // "profile.card.identify": "Identify",
- "profile.card.identify": "Kimlik",
-
- // "profile.card.security": "Security",
- "profile.card.security": "Güvenlik",
-
- // "profile.form.submit": "Update Profile",
- "profile.form.submit": "Profili Güncelle",
-
- // "profile.groups.head": "Authorization groups you belong to",
- "profile.groups.head": "Ait olduğunuz yetkilendirme grupları",
-
- // "profile.head": "Update Profile",
- "profile.head": "Profili Güncelle",
-
- // "profile.metadata.form.error.firstname.required": "First Name is required",
- "profile.metadata.form.error.firstname.required": "Ad gereklidir",
-
- // "profile.metadata.form.error.lastname.required": "Last Name is required",
- "profile.metadata.form.error.lastname.required": "Soyadı gerekli",
-
- // "profile.metadata.form.label.email": "Email Address",
- "profile.metadata.form.label.email": "E-posta Adresi",
-
- // "profile.metadata.form.label.firstname": "First Name",
- "profile.metadata.form.label.firstname": "Ad",
-
- // "profile.metadata.form.label.language": "Language",
- "profile.metadata.form.label.language": "Dil",
-
- // "profile.metadata.form.label.lastname": "Last Name",
- "profile.metadata.form.label.lastname": "Soyadı",
-
- // "profile.metadata.form.label.phone": "Contact Telephone",
- "profile.metadata.form.label.phone": "İletişim telefonu",
-
- // "profile.metadata.form.notifications.success.content": "Your changes to the profile were saved.",
- "profile.metadata.form.notifications.success.content": "Profilde yaptığınız değişiklikler kaydedildi.",
-
- // "profile.metadata.form.notifications.success.title": "Profile saved",
- "profile.metadata.form.notifications.success.title": "Profil kaydedildi",
-
- // "profile.notifications.warning.no-changes.content": "No changes were made to the Profile.",
- "profile.notifications.warning.no-changes.content": "Profilde herhangi bir değişiklik yapılmadı.",
-
- // "profile.notifications.warning.no-changes.title": "No changes",
- "profile.notifications.warning.no-changes.title": "Değişiklik yok",
-
- // "profile.security.form.error.matching-passwords": "The passwords do not match.",
- "profile.security.form.error.matching-passwords": "Parolalar eşleşmiyor.",
-
- // "profile.security.form.error.password-length": "The password should be at least 6 characters long.",
- "profile.security.form.error.password-length": "Parola en az 6 karakter uzunluğunda olmalıdır.",
-
- // "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": "İsteğe bağlı olarak aşağıdaki kutucuğa yeni bir parola girebilir ve ikinci kutucuğa tekrar yazarak onaylayabilirsiniz. En az altı karakter uzunluğunda olmalıdır.",
-
- // "profile.security.form.label.password": "Password",
- "profile.security.form.label.password": "Parola",
-
- // "profile.security.form.label.passwordrepeat": "Retype to confirm",
- "profile.security.form.label.passwordrepeat": "Doğrulamak için yeniden yazınız",
-
- // "profile.security.form.notifications.success.content": "Your changes to the password were saved.",
- "profile.security.form.notifications.success.content": "Parola değişiklikleriniz kaydedildi.",
-
- // "profile.security.form.notifications.success.title": "Password saved",
- "profile.security.form.notifications.success.title": "Parola kaydedildi",
-
- // "profile.security.form.notifications.error.title": "Error changing passwords",
- "profile.security.form.notifications.error.title": "Parolalar değiştirilirken hata oluştu",
-
- // "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": "Parola en az 6 karakter uzunluğunda olmalıdır.",
-
- // "profile.security.form.notifications.error.not-same": "The provided passwords are not the same.",
- "profile.security.form.notifications.error.not-same": "Sağlanan parolalar aynı değil.",
-
- // "profile.title": "Update Profile",
- "profile.title": "Profili Güncelle",
-
-
-
- // "project.listelement.badge": "Research Project",
- "project.listelement.badge": "Araştırma projesi",
-
- // "project.page.contributor": "Contributors",
- "project.page.contributor": "Katkıda Bulunanlar",
-
- // "project.page.description": "Description",
- "project.page.description": "Açıklama",
-
- // "project.page.edit": "Edit this item",
- "project.page.edit": "Bu öğeyi düzenle",
-
- // "project.page.expectedcompletion": "Expected Completion",
- "project.page.expectedcompletion": "Beklenen Tamamlanma",
-
- // "project.page.funder": "Funders",
- "project.page.funder": "Fon Sağlayıcılar",
-
- // "project.page.id": "ID",
- "project.page.id": "Kimlik",
-
- // "project.page.keyword": "Keywords",
- "project.page.keyword": "Anahtar kelimeler",
-
- // "project.page.status": "Status",
- "project.page.status": "Durum",
-
- // "project.page.titleprefix": "Research Project: ",
- "project.page.titleprefix": "Araştırma Projesi: ",
-
- // "project.search.results.head": "Project Search Results",
- "project.search.results.head": "Proje Arama Sonuçları",
-
-
-
- // "publication.listelement.badge": "Publication",
- "publication.listelement.badge": "Yayın",
-
- // "publication.page.description": "Description",
- "publication.page.description": "Açıklama",
-
- // "publication.page.edit": "Edit this item",
- "publication.page.edit": "Bu öğeyi düzenle",
-
- // "publication.page.journal-issn": "Journal ISSN",
- "publication.page.journal-issn": "Dergi ISSN",
-
- // "publication.page.journal-title": "Journal Title",
- "publication.page.journal-title": "Dergi Başlığı",
-
- // "publication.page.publisher": "Publisher",
- "publication.page.publisher": "Yayımcı",
-
- // "publication.page.titleprefix": "Publication: ",
- "publication.page.titleprefix": "Yayın: ",
-
- // "publication.page.volume-title": "Volume Title",
- "publication.page.volume-title": "Cilt Başlığı",
-
- // "publication.search.results.head": "Publication Search Results",
- "publication.search.results.head": "Yayın Arama Sonuçları",
-
- // "publication.search.title": "DSpace Angular :: Publication Search",
- "publication.search.title": "DSpace Angular :: Yayın Arama",
-
-
- // "register-email.title": "New user registration",
- "register-email.title": "Yeni kullanıcı kaydı",
-
- // "register-page.create-profile.header": "Create Profile",
- "register-page.create-profile.header": "Profil oluştur",
-
- // "register-page.create-profile.identification.header": "Identify",
- "register-page.create-profile.identification.header": "Tanımlamak",
-
- // "register-page.create-profile.identification.email": "Email Address",
- "register-page.create-profile.identification.email": "E-posta Adresi",
-
- // "register-page.create-profile.identification.first-name": "First Name *",
- "register-page.create-profile.identification.first-name": "Ad *",
-
- // "register-page.create-profile.identification.first-name.error": "Please fill in a First Name",
- "register-page.create-profile.identification.first-name.error": "Lütfen bir ad girin",
-
- // "register-page.create-profile.identification.last-name": "Last Name *",
- "register-page.create-profile.identification.last-name": "Soyadı *",
-
- // "register-page.create-profile.identification.last-name.error": "Please fill in a Last Name",
- "register-page.create-profile.identification.last-name.error": "Lütfen bir soyadı girin",
-
- // "register-page.create-profile.identification.contact": "Contact Telephone",
- "register-page.create-profile.identification.contact": "İletişim telefonu",
-
- // "register-page.create-profile.identification.language": "Language",
- "register-page.create-profile.identification.language": "Dil",
-
- // "register-page.create-profile.security.header": "Security",
- "register-page.create-profile.security.header": "Güvenlik",
-
- // "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": "Lütfen aşağıdaki kutuya bir parola girin ve ikinci kutuya tekrar yazarak onaylayın. En az altı karakter uzunluğunda olmalıdır.",
-
- // "register-page.create-profile.security.label.password": "Password *",
- "register-page.create-profile.security.label.password": "Parola *",
-
- // "register-page.create-profile.security.label.passwordrepeat": "Retype to confirm *",
- "register-page.create-profile.security.label.passwordrepeat": "Doğrulamak için yeniden yazınız *",
-
- // "register-page.create-profile.security.error.empty-password": "Please enter a password in the box below.",
- "register-page.create-profile.security.error.empty-password": "Lütfen aşağıdaki kutuya bir parola girin.",
-
- // "register-page.create-profile.security.error.matching-passwords": "The passwords do not match.",
- "register-page.create-profile.security.error.matching-passwords": "Parolalar eşleşmiyor.",
-
- // "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": "Parola en az 6 karakter uzunluğunda olmalıdır.",
-
- // "register-page.create-profile.submit": "Complete Registration",
- "register-page.create-profile.submit": "Kaydı Tamamla",
-
- // "register-page.create-profile.submit.error.content": "Something went wrong while registering a new user.",
- "register-page.create-profile.submit.error.content": "Yeni bir kullanıcı kaydedilirken bir şeyler ters gitti.",
-
- // "register-page.create-profile.submit.error.head": "Registration failed",
- "register-page.create-profile.submit.error.head": "Kayıt başarısız",
-
- // "register-page.create-profile.submit.success.content": "The registration was successful. You have been logged in as the created user.",
- "register-page.create-profile.submit.success.content": "Kayıt başarıyla tamamlandı. Oluşturulan kullanıcı olarak giriş yaptınız",
-
- // "register-page.create-profile.submit.success.head": "Registration completed",
- "register-page.create-profile.submit.success.head": "Kayıt tamamlandı",
-
-
- // "register-page.registration.header": "New user registration",
- "register-page.registration.header": "Yeni kullanıcı kaydı",
-
- // "register-page.registration.info": "Register an account to subscribe to collections for email updates, and submit new items to DSpace.",
- "register-page.registration.info": "E-mail güncellemeleri için koleksiyonlara abone olup hesap açın. Ve DSapce’e yeni öğeler kaydetin.",
-
- // "register-page.registration.email": "Email Address *",
- "register-page.registration.email": "E-posta Adresi *",
-
- // "register-page.registration.email.error.required": "Please fill in an email address",
- "register-page.registration.email.error.required": "Lütfen bir e-posta adresi girin",
-
- // "register-page.registration.email.error.pattern": "Please fill in a valid email address",
- "register-page.registration.email.error.pattern": "Lütfen geçerli bir email adresi girin",
-
- // "register-page.registration.email.hint": "This address will be verified and used as your login name.",
- "register-page.registration.email.hint": "Bu adres doğrulanacak ve oturum açma adınız olarak kullanılacaktır.",
-
- // "register-page.registration.submit": "Register",
- "register-page.registration.submit": "Kayıt olmak",
-
- // "register-page.registration.success.head": "Verification email sent",
- "register-page.registration.success.head": "Doğrulama e-postası gönderildi",
-
- // "register-page.registration.success.content": "An email has been sent to {{ email }} containing a special URL and further instructions.",
- "register-page.registration.success.content": "{{ email }} adresine özel bir URL ve daha fazla talimat içeren bir e-posta gönderildi.",
-
- // "register-page.registration.error.head": "Error when trying to register email",
- "register-page.registration.error.head": "E-posta kaydetmeye çalışırken hata",
-
- // "register-page.registration.error.content": "An error occured when registering the following email address: {{ email }}",
- "register-page.registration.error.content": "Aşağıdaki e-posta adresi kaydedilirken bir hata oluştu: {{ email }}",
-
-
-
- // "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": "İki öğe arasında {{ type }} ilişki türü için uygun bir eşleşme bulunamadı",
-
- // "relationships.add.error.server.content": "The server returned an error",
- "relationships.add.error.server.content": "Sunucu bir hata verdi",
-
- // "relationships.add.error.title": "Unable to add relationship",
- "relationships.add.error.title": "İlişki eklenemedi",
-
- // "relationships.isAuthorOf": "Authors",
- "relationships.isAuthorOf": "Yazarlar",
-
- // "relationships.isAuthorOf.Person": "Authors (persons)",
- "relationships.isAuthorOf.Person": "Yazarlar (kişiler)",
-
- // "relationships.isAuthorOf.OrgUnit": "Authors (organizational units)",
- "relationships.isAuthorOf.OrgUnit": "Yazarlar (organizasyon birimleri)",
-
- // "relationships.isIssueOf": "Journal Issues",
- "relationships.isIssueOf": "Dergi Sayıları",
-
- // "relationships.isJournalIssueOf": "Journal Issue",
- "relationships.isJournalIssueOf": "Dergi Sayısı",
-
- // "relationships.isJournalOf": "Journals",
- "relationships.isJournalOf": "Dergiler",
-
- // "relationships.isOrgUnitOf": "Organizational Units",
- "relationships.isOrgUnitOf": "Organizasyon Birimleri",
-
- // "relationships.isPersonOf": "Authors",
- "relationships.isPersonOf": "Yazarlar",
-
- // "relationships.isProjectOf": "Research Projects",
- "relationships.isProjectOf": "Araştırma Projeleri",
-
- // "relationships.isPublicationOf": "Publications",
- "relationships.isPublicationOf": "Yayınlar",
-
- // "relationships.isPublicationOfJournalIssue": "Articles",
- "relationships.isPublicationOfJournalIssue": "Makaleler",
-
- // "relationships.isSingleJournalOf": "Journal",
- "relationships.isSingleJournalOf": "Dergi",
-
- // "relationships.isSingleVolumeOf": "Journal Volume",
- "relationships.isSingleVolumeOf": "Dergi Cilti",
-
- // "relationships.isVolumeOf": "Journal Volumes",
- "relationships.isVolumeOf": "Dergi Ciltleri",
-
- // "relationships.isContributorOf": "Contributors",
- "relationships.isContributorOf": "Katkıda Bulunanlar",
-
-
-
- // "resource-policies.add.button": "Add",
- "resource-policies.add.button": "Ekle",
-
- // "resource-policies.add.for.": "Add a new policy",
- "resource-policies.add.for.": "Yeni bir politika ekle",
-
- // "resource-policies.add.for.bitstream": "Add a new Bitstream policy",
- "resource-policies.add.for.bitstream": "Yeni bir Bitstream ilkesi ekleyin",
-
- // "resource-policies.add.for.bundle": "Add a new Bundle policy",
- "resource-policies.add.for.bundle": "Yeni bir Bundle ilkesi ekleyin",
-
- // "resource-policies.add.for.item": "Add a new Item policy",
- "resource-policies.add.for.item": "Yeni bir öğe ilkesi ekleyin",
-
- // "resource-policies.add.for.community": "Add a new Community policy",
- "resource-policies.add.for.community": "Yeni bir Topluluk politikası ekle",
-
- // "resource-policies.add.for.collection": "Add a new Collection policy",
- "resource-policies.add.for.collection": "Yeni bir Koleksiyon politikası ekle",
-
- // "resource-policies.create.page.heading": "Create new resource policy for ",
- "resource-policies.create.page.heading": "Şunun için yeni kaynak ilkesi oluşturun: ",
-
- // "resource-policies.create.page.failure.content": "An error occurred while creating the resource policy.",
- "resource-policies.create.page.failure.content": "Kaynak ilkesi oluşturulurken bir hata oluştu.",
-
- // "resource-policies.create.page.success.content": "Operation successful",
- "resource-policies.create.page.success.content": "Operasyon başarılı",
-
- // "resource-policies.create.page.title": "Create new resource policy",
- "resource-policies.create.page.title": "Yeni kaynak politikası oluştur",
-
- // "resource-policies.delete.btn": "Delete selected",
- "resource-policies.delete.btn": "Seçileni sil",
-
- // "resource-policies.delete.btn.title": "Delete selected resource policies",
- "resource-policies.delete.btn.title": "Seçili kaynak politikalarını sil",
-
- // "resource-policies.delete.failure.content": "An error occurred while deleting selected resource policies.",
- "resource-policies.delete.failure.content": "Seçili kaynak ilkeleri silinirken bir hata oluştu.",
-
- // "resource-policies.delete.success.content": "Operation successful",
- "resource-policies.delete.success.content": "İşlem başarılı",
-
- // "resource-policies.edit.page.heading": "Edit resource policy ",
- "resource-policies.edit.page.heading": "Kaynak politikasını düzenle ",
-
- // "resource-policies.edit.page.failure.content": "An error occurred while editing the resource policy.",
- "resource-policies.edit.page.failure.content": "Kaynak ilkesi düzenlenirken bir hata oluştu.",
-
- // "resource-policies.edit.page.success.content": "Operation successful",
- "resource-policies.edit.page.success.content": "İşlem başarılı",
-
- // "resource-policies.edit.page.title": "Edit resource policy",
- "resource-policies.edit.page.title": "Kaynak politikasını düzenle",
-
- // "resource-policies.form.action-type.label": "Select the action type",
- "resource-policies.form.action-type.label": "Eylem türünü seçin",
-
- // "resource-policies.form.action-type.required": "You must select the resource policy action.",
- "resource-policies.form.action-type.required": "Kaynak ilkesi eylemini seçmelisiniz.",
-
- // "resource-policies.form.eperson-group-list.label": "The eperson or group that will be granted the permission",
- "resource-policies.form.eperson-group-list.label": "İzin verilecek e-kişi veya grup",
-
- // "resource-policies.form.eperson-group-list.select.btn": "Select",
- "resource-policies.form.eperson-group-list.select.btn": "Seç",
-
- // "resource-policies.form.eperson-group-list.tab.eperson": "Search for a ePerson",
- "resource-policies.form.eperson-group-list.tab.eperson": "e-kişi arayın",
-
- // "resource-policies.form.eperson-group-list.tab.group": "Search for a group",
- "resource-policies.form.eperson-group-list.tab.group": "Grup arayın",
-
- // "resource-policies.form.eperson-group-list.table.headers.action": "Action",
- "resource-policies.form.eperson-group-list.table.headers.action": "Eylem",
-
- // "resource-policies.form.eperson-group-list.table.headers.id": "ID",
- "resource-policies.form.eperson-group-list.table.headers.id": "Kimlik",
-
- // "resource-policies.form.eperson-group-list.table.headers.name": "Name",
- "resource-policies.form.eperson-group-list.table.headers.name": "Ad",
-
- // "resource-policies.form.date.end.label": "End Date",
- "resource-policies.form.date.end.label": "Bitiş Tarihi",
-
- // "resource-policies.form.date.start.label": "Start Date",
- "resource-policies.form.date.start.label": "Başlangıç tarihi",
-
- // "resource-policies.form.description.label": "Description",
- "resource-policies.form.description.label": "Açıklama",
-
- // "resource-policies.form.name.label": "Name",
- "resource-policies.form.name.label": "Ad",
-
- // "resource-policies.form.policy-type.label": "Select the policy type",
- "resource-policies.form.policy-type.label": "Politika türünü seçin",
-
- // "resource-policies.form.policy-type.required": "You must select the resource policy type.",
- "resource-policies.form.policy-type.required": "Kaynak ilkesi türünü seçmelisiniz.",
-
- // "resource-policies.table.headers.action": "Action",
- "resource-policies.table.headers.action": "Eylem",
-
- // "resource-policies.table.headers.date.end": "End Date",
- "resource-policies.table.headers.date.end": "Bitiş tarihi",
-
- // "resource-policies.table.headers.date.start": "Start Date",
- "resource-policies.table.headers.date.start": "Başlangıç Tarihi",
-
- // "resource-policies.table.headers.edit": "Edit",
- "resource-policies.table.headers.edit": "Düzenle",
-
- // "resource-policies.table.headers.edit.group": "Edit group",
- "resource-policies.table.headers.edit.group": "Grubu düzenle",
-
- // "resource-policies.table.headers.edit.policy": "Edit policy",
- "resource-policies.table.headers.edit.policy": "Politikayı düzenle",
-
- // "resource-policies.table.headers.eperson": "E-kişi",
- "resource-policies.table.headers.eperson": "E-kişi",
-
- // "resource-policies.table.headers.group": "Grup",
- "resource-policies.table.headers.group": "Grup",
-
- // "resource-policies.table.headers.id": "ID",
- "resource-policies.table.headers.id": "Kimlik",
-
- // "resource-policies.table.headers.name": "Name",
- "resource-policies.table.headers.name": "Ad",
-
- // "resource-policies.table.headers.policyType": "type",
- "resource-policies.table.headers.policyType": "tür",
-
- // "resource-policies.table.headers.title.for.bitstream": "Policies for Bitstream",
- "resource-policies.table.headers.title.for.bitstream": "BitStream Politikaları",
-
- // "resource-policies.table.headers.title.for.bundle": "Policies for Bundle",
- "resource-policies.table.headers.title.for.bundle": "Bundle Politikaları",
-
- // "resource-policies.table.headers.title.for.item": "Policies for Item",
- "resource-policies.table.headers.title.for.item": "Öğe Politikaları",
-
- // "resource-policies.table.headers.title.for.community": "Policies for Community",
- "resource-policies.table.headers.title.for.community": "Topluluk Politikaları",
-
- // "resource-policies.table.headers.title.for.collection": "Policies for Collection",
- "resource-policies.table.headers.title.for.collection": "Koleksiyon Politikaları",
-
-
-
- // "search.description": "",
- "search.description": "",
-
- // "search.switch-configuration.title": "Show",
- "search.switch-configuration.title": "Göster",
-
- // "search.title": "DSpace Angular :: Search",
- "search.title": "DSpace Angular :: Ara",
-
- // "search.breadcrumbs": "Search",
- "search.breadcrumbs": "Ara",
-
-
- // "search.filters.applied.f.author": "Author",
- "search.filters.applied.f.author": "Yazar",
-
- // "search.filters.applied.f.dateIssued.max": "End date",
- "search.filters.applied.f.dateIssued.max": "Bitiş tarihi",
-
- // "search.filters.applied.f.dateIssued.min": "Start date",
- "search.filters.applied.f.dateIssued.min": "Başlangıç Tarihi",
-
- // "search.filters.applied.f.dateSubmitted": "Date submitted",
- "search.filters.applied.f.dateSubmitted": "Gönderilme tarihi",
-
- // "search.filters.applied.f.discoverable": "Private",
- "search.filters.applied.f.discoverable": "Özel",
-
- // "search.filters.applied.f.entityType": "Item Type",
- "search.filters.applied.f.entityType": "Öğe Türü",
-
- // "search.filters.applied.f.has_content_in_original_bundle": "Has files",
- "search.filters.applied.f.has_content_in_original_bundle": "Has dosyaları",
-
- // "search.filters.applied.f.itemtype": "Type",
- "search.filters.applied.f.itemtype": "Tür",
-
- // "search.filters.applied.f.namedresourcetype": "Status",
- "search.filters.applied.f.namedresourcetype": "Durum",
-
- // "search.filters.applied.f.subject": "Subject",
- "search.filters.applied.f.subject": "Konu",
-
- // "search.filters.applied.f.submitter": "Submitter",
- "search.filters.applied.f.submitter": "Gönderen",
-
- // "search.filters.applied.f.jobTitle": "Job Title",
- "search.filters.applied.f.jobTitle": "İş Adı",
-
- // "search.filters.applied.f.birthDate.max": "End birth date",
- "search.filters.applied.f.birthDate.max": "Doğum Tarih Sonu",
-
- // "search.filters.applied.f.birthDate.min": "Start birth date",
- "search.filters.applied.f.birthDate.min": "Doğum Tarih Başlangıcı",
-
- // "search.filters.applied.f.withdrawn": "Withdrawn",
- "search.filters.applied.f.withdrawn": "Geri çekildi",
-
-
-
- // "search.filters.filter.author.head": "Author",
- "search.filters.filter.author.head": "Yazar",
-
- // "search.filters.filter.author.placeholder": "Author name",
- "search.filters.filter.author.placeholder": "Yazar adı",
-
- // "search.filters.filter.birthDate.head": "Birth Date",
- "search.filters.filter.birthDate.head": "Doğum Tarihi",
-
- // "search.filters.filter.birthDate.placeholder": "Birth Date",
- "search.filters.filter.birthDate.placeholder": "Doğum Tarihi",
-
- // "search.filters.filter.creativeDatePublished.head": "Date Published",
- "search.filters.filter.creativeDatePublished.head": "Yayınlanma Tarihi",
-
- // "search.filters.filter.creativeDatePublished.placeholder": "Date Published",
- "search.filters.filter.creativeDatePublished.placeholder": "Yayınlanma Tarihi",
-
- // "search.filters.filter.creativeWorkEditor.head": "Editor",
- "search.filters.filter.creativeWorkEditor.head": "Editör",
-
- // "search.filters.filter.creativeWorkEditor.placeholder": "Editor",
- "search.filters.filter.creativeWorkEditor.placeholder": "Editör",
-
- // "search.filters.filter.creativeWorkKeywords.head": "Subject",
- "search.filters.filter.creativeWorkKeywords.head": "Konu",
-
- // "search.filters.filter.creativeWorkKeywords.placeholder": "Subject",
- "search.filters.filter.creativeWorkKeywords.placeholder": "Konu",
-
- // "search.filters.filter.creativeWorkPublisher.head": "Publisher",
- "search.filters.filter.creativeWorkPublisher.head": "Yayımcı",
-
- // "search.filters.filter.creativeWorkPublisher.placeholder": "Publisher",
- "search.filters.filter.creativeWorkPublisher.placeholder": "Yayımcı",
-
- // "search.filters.filter.dateIssued.head": "Date",
- "search.filters.filter.dateIssued.head": "Tarih",
-
- // "search.filters.filter.dateIssued.max.placeholder": "Minimum Date",
- "search.filters.filter.dateIssued.max.placeholder": "En Erken Tarih",
-
- // "search.filters.filter.dateIssued.min.placeholder": "Maximum Date",
- "search.filters.filter.dateIssued.min.placeholder": "En Geç Tarih",
-
- // "search.filters.filter.dateSubmitted.head": "Date submitted",
- "search.filters.filter.dateSubmitted.head": "Teslim Edilen Tarih",
-
- // "search.filters.filter.dateSubmitted.placeholder": "Date submitted",
- "search.filters.filter.dateSubmitted.placeholder": "Teslim Edilen Tarih",
-
- // "search.filters.filter.discoverable.head": "Private",
- "search.filters.filter.discoverable.head": "Özel",
-
- // "search.filters.filter.withdrawn.head": "Withdrawn",
- "search.filters.filter.withdrawn.head": "Alınmış",
-
- // "search.filters.filter.entityType.head": "Item Type",
- "search.filters.filter.entityType.head": "Materyal Türü",
-
- // "search.filters.filter.entityType.placeholder": "Item Type",
- "search.filters.filter.entityType.placeholder": "Materyal Türü",
-
- // "search.filters.filter.has_content_in_original_bundle.head": "Has files",
- "search.filters.filter.has_content_in_original_bundle.head": "Dosyalara Sahip",
-
- // "search.filters.filter.itemtype.head": "Type",
- "search.filters.filter.itemtype.head": "Tür",
-
- // "search.filters.filter.itemtype.placeholder": "Type",
- "search.filters.filter.itemtype.placeholder": "Tür",
-
- // "search.filters.filter.jobTitle.head": "Job Title",
- "search.filters.filter.jobTitle.head": "İş Ünvanı",
-
- // "search.filters.filter.jobTitle.placeholder": "Job Title",
- "search.filters.filter.jobTitle.placeholder": "İş Ünvanı",
-
- // "search.filters.filter.knowsLanguage.head": "Known language",
- "search.filters.filter.knowsLanguage.head": "Bilinen Diller",
-
- // "search.filters.filter.knowsLanguage.placeholder": "Known language",
- "search.filters.filter.knowsLanguage.placeholder": "Bilinen Diller",
-
- // "search.filters.filter.namedresourcetype.head": "Status",
- "search.filters.filter.namedresourcetype.head": "Durum",
-
- // "search.filters.filter.namedresourcetype.placeholder": "Status",
- "search.filters.filter.namedresourcetype.placeholder": "Durum",
-
- // "search.filters.filter.objectpeople.head": "People",
- "search.filters.filter.objectpeople.head": "İnsanlar",
-
- // "search.filters.filter.objectpeople.placeholder": "People",
- "search.filters.filter.objectpeople.placeholder": "İnsanlar",
-
- // "search.filters.filter.organizationAddressCountry.head": "Country",
- "search.filters.filter.organizationAddressCountry.head": "Ülke",
-
- // "search.filters.filter.organizationAddressCountry.placeholder": "Country",
- "search.filters.filter.organizationAddressCountry.placeholder": "Ülke",
-
- // "search.filters.filter.organizationAddressLocality.head": "City",
- "search.filters.filter.organizationAddressLocality.head": "Şehir",
-
- // "search.filters.filter.organizationAddressLocality.placeholder": "City",
- "search.filters.filter.organizationAddressLocality.placeholder": "Şehir",
-
- // "search.filters.filter.organizationFoundingDate.head": "Date Founded",
- "search.filters.filter.organizationFoundingDate.head": "Bulunduğu Tarih",
-
- // "search.filters.filter.organizationFoundingDate.placeholder": "Date Founded",
- "search.filters.filter.organizationFoundingDate.placeholder": "Bulunduğu Tarih",
-
- // "search.filters.filter.scope.head": "Scope",
- "search.filters.filter.scope.head": "Kapsam",
-
- // "search.filters.filter.scope.placeholder": "Scope filter",
- "search.filters.filter.scope.placeholder": "Kapsam Filtresi",
-
- // "search.filters.filter.show-less": "Collapse",
- "search.filters.filter.show-less": "Yığılmış",
-
- // "search.filters.filter.show-more": "Show more",
- "search.filters.filter.show-more": "Daha Fazla Göster",
-
- // "search.filters.filter.subject.head": "Subject",
- "search.filters.filter.subject.head": "Konu",
-
- // "search.filters.filter.subject.placeholder": "Subject",
- "search.filters.filter.subject.placeholder": "Konu",
-
- // "search.filters.filter.submitter.head": "Submitter",
- "search.filters.filter.submitter.head": "Teslim Eden",
-
- // "search.filters.filter.submitter.placeholder": "Submitter",
- "search.filters.filter.submitter.placeholder": "Teslim Eden",
-
-
-
- // "search.filters.entityType.JournalIssue": "Journal Issue",
- "search.filters.entityType.JournalIssue": "Makale Konusu",
-
- // "search.filters.entityType.JournalVolume": "Journal Volume",
- "search.filters.entityType.JournalVolume": "Cilt Sayısı",
-
- // "search.filters.entityType.OrgUnit": "Organizational Unit",
- "search.filters.entityType.OrgUnit": "Ait Olduğu Organizasyon",
-
- // "search.filters.has_content_in_original_bundle.true": "Yes",
- "search.filters.has_content_in_original_bundle.true": "Evet",
-
- // "search.filters.has_content_in_original_bundle.false": "No",
- "search.filters.has_content_in_original_bundle.false": "Hayır",
-
- // "search.filters.discoverable.true": "No",
- "search.filters.discoverable.true": "Hayır",
-
- // "search.filters.discoverable.false": "Yes",
- "search.filters.discoverable.false": "Evet",
-
- // "search.filters.withdrawn.true": "Yes",
- "search.filters.withdrawn.true": "Evet",
-
- // "search.filters.withdrawn.false": "No",
- "search.filters.withdrawn.false": "Hayır",
-
-
- // "search.filters.head": "Filters",
- "search.filters.head": "Filtreler",
-
- // "search.filters.reset": "Reset filters",
- "search.filters.reset": "Filtreleri Sıfırla",
-
-
-
- // "search.form.search": "Search",
- "search.form.search": "Ara",
-
- // "search.form.search_dspace": "Search DSpace",
- "search.form.search_dspace": "DSpace içinde Ara",
-
- // "search.form.search_mydspace": "Search MyDSpace",
- "search.form.search_mydspace": "MyDSpace içinde Ara",
-
-
-
- // "search.results.head": "Search Results",
- "search.results.head": "Sonuçları Ara",
-
- // "search.results.no-results": "Your search returned no results. Having trouble finding what you're looking for? Try putting",
- "search.results.no-results": "Aramanız hiçbir sonuç vermedi. Aradığınızı bulmakta sorun mu yaşıyorsunuz? Bir daha deneyin.",
-
- // "search.results.no-results-link": "quotes around it",
- "search.results.no-results-link": "Çevresindeki Alıntılar",
-
- // "search.results.empty": "Your search returned no results.",
- "search.results.empty": "Aramanız hiçbir sonuç vermedi.",
-
-
-
- // "search.sidebar.close": "Back to results",
- "search.sidebar.close": "Sonuçlara Dön",
-
- // "search.sidebar.filters.title": "Filters",
- "search.sidebar.filters.title": "Filtreler",
-
- // "search.sidebar.open": "Search Tools",
- "search.sidebar.open": "Araç Gereç Ara",
-
- // "search.sidebar.results": "results",
- "search.sidebar.results": "Sonuçlar",
-
- // "search.sidebar.settings.rpp": "Results per page",
- "search.sidebar.settings.rpp": "Sayfa Sonuçları",
-
- // "search.sidebar.settings.sort-by": "Sort By",
- "search.sidebar.settings.sort-by": "Göre Sıralanmış",
-
- // "search.sidebar.settings.title": "Settings",
- "search.sidebar.settings.title": "Ayarlar",
-
-
-
- // "search.view-switch.show-detail": "Show detail",
- "search.view-switch.show-detail": "Detayları Göster",
-
- // "search.view-switch.show-grid": "Show as grid",
- "search.view-switch.show-grid": "Ağ Dizge Olarak Göster",
-
- // "search.view-switch.show-list": "Show as list",
- "search.view-switch.show-list": "Liste Olarak Göster",
-
-
-
- // "sorting.ASC": "Ascending",
- "sorting.ASC": "Artan",
-
- // "sorting.DESC": "Descending",
- "sorting.DESC": "Azalan",
-
- // "sorting.dc.title.ASC": "Title Ascending",
- "sorting.dc.title.ASC": "Artan Başlıklar",
-
- // "sorting.dc.title.DESC": "Title Descending",
- "sorting.dc.title.DESC": "Azalan Başlıklar",
-
- // "sorting.score.DESC": "Relevance",
- "sorting.score.DESC": "Bağıntılı",
-
-
-
- // "statistics.title": "Statistics",
- "statistics.title": "İstatistikler",
-
- // "statistics.header": "Statistics for {{ scope }}",
- "statistics.header": "{{ scope }} için İstatistikler",
-
- // "statistics.breadcrumbs": "Statistics",
- "statistics.breadcrumbs": "İstatistikler",
-
- // "statistics.page.no-data": "No data available",
- "statistics.page.no-data": "Data Bulunamadı.",
-
- // "statistics.table.no-data": "No data available",
- "statistics.table.no-data": "Data Bulunamadı.",
-
- // "statistics.table.title.TotalVisits": "Total visits",
- "statistics.table.title.TotalVisits": "Toplam Ziyaretler",
-
- // "statistics.table.title.TotalVisitsPerMonth": "Total visits per month",
- "statistics.table.title.TotalVisitsPerMonth": "Aylık Toplam Ziyaretler",
-
- // "statistics.table.title.TotalDownloads": "File Visits",
- "statistics.table.title.TotalDownloads": "Dosya Ziyaretleri",
-
- // "statistics.table.title.TopCountries": "Top country views",
- "statistics.table.title.TopCountries": "En Çok Gösterilen Ülke",
-
- // "statistics.table.title.TopCities": "Top city views",
- "statistics.table.title.TopCities": "En Çok Gösterilen Şehir",
-
- // "statistics.table.header.views": "Views",
- "statistics.table.header.views": "Gösterilmeler",
-
-
-
- // "submission.edit.title": "Edit Submission",
- "submission.edit.title": "Teslimi Düzenle",
-
- // "submission.general.cannot_submit": "You have not the privilege to make a new submission.",
- "submission.general.cannot_submit": "Yeni bir teslim yapamazsınız.",
-
- // "submission.general.deposit": "Deposit",
- "submission.general.deposit": "Para Yatır",
-
- // "submission.general.discard.confirm.cancel": "Cancel",
- "submission.general.discard.confirm.cancel": "Vazgeç",
-
- // "submission.general.discard.confirm.info": "This operation can't be undone. Are you sure?",
- "submission.general.discard.confirm.info": "Bu işlem geri alınamaz. Emin misiniz?",
-
- // "submission.general.discard.confirm.submit": "Yes, I'm sure",
- "submission.general.discard.confirm.submit": "Evet eminim",
-
- // "submission.general.discard.confirm.title": "Discard submission",
- "submission.general.discard.confirm.title": "Teslimi İptal Et",
-
- // "submission.general.discard.submit": "Discard",
- "submission.general.discard.submit": "İptal",
-
- // "submission.general.save": "Save",
- "submission.general.save": "Kaydet",
-
- // "submission.general.save-later": "Save for later",
- "submission.general.save-later": "Sonrası İçin Kaydet",
-
-
- // "submission.import-external.page.title": "Import metadata from an external source",
- "submission.import-external.page.title": "Harici bir kaynaktan meta verileri içe aktarın",
-
- // "submission.import-external.title": "Import metadata from an external source",
- "submission.import-external.title": "Harici bir kaynaktan meta verileri içe aktarın",
-
- // "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": "Web'den DSpace'e içe aktarılacak öğeleri bulmak için yukarıya bir sorgu girin.",
-
- // "submission.import-external.back-to-my-dspace": "Back to MyDSpace",
- "submission.import-external.back-to-my-dspace": "MyDSpace'e Geri Dön",
-
- // "submission.import-external.search.placeholder": "Search the external source",
- "submission.import-external.search.placeholder": "Dış Kaynaktan Ara",
-
- // "submission.import-external.search.button": "Search",
- "submission.import-external.search.button": "Ara",
-
- // "submission.import-external.search.button.hint": "Write some words to search",
- "submission.import-external.search.button.hint": "Aramak için Kelime Girin",
-
- // "submission.import-external.search.source.hint": "Pick an external source",
- "submission.import-external.search.source.hint": "Dış Kaynak Seçin",
-
- // "submission.import-external.source.arxiv": "arXiv",
- "submission.import-external.source.arxiv": "arXiv",
-
- // "submission.import-external.source.loading": "Loading ...",
- "submission.import-external.source.loading": "Yükleniyor ...",
-
- // "submission.import-external.source.sherpaJournal": "SHERPA Journals",
- "submission.import-external.source.sherpaJournal": "SHERPA Journals",
-
- // "submission.import-external.source.sherpaPublisher": "SHERPA Publishers",
- "submission.import-external.source.sherpaPublisher": "SHERPA Publishers",
-
- // "submission.import-external.source.orcid": "ORCID",
- "submission.import-external.source.orcid": "ORCID",
-
- // "submission.import-external.source.pubmed": "Pubmed",
- "submission.import-external.source.pubmed": "Pubmed",
-
- // "submission.import-external.source.lcname": "Library of Congress Names",
- "submission.import-external.source.lcname": "Kongre İsimleri Kütüphanesi",
-
- // "submission.import-external.preview.title": "Item Preview",
- "submission.import-external.preview.title": "Materyal Önizlenimi",
-
- // "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": "Aşağıdaki meta veriler harici bir kaynaktan içe aktarıldı. Gönderime başladığınızda önceden doldurulacaktır.",
-
- // "submission.import-external.preview.button.import": "Start submission",
- "submission.import-external.preview.button.import": "Gönderimi Başlat",
-
- // "submission.import-external.preview.error.import.title": "Submission error",
- "submission.import-external.preview.error.import.title": "Gönderim Sırasında Hata",
-
- // "submission.import-external.preview.error.import.body": "An error occurs during the external source entry import process.",
- "submission.import-external.preview.error.import.body": "Dış kaynak girişi içe aktarma işlemi sırasında bir hata oluştu.",
-
- // "submission.sections.describe.relationship-lookup.close": "Close",
- "submission.sections.describe.relationship-lookup.close": "Kapat",
-
- // "submission.sections.describe.relationship-lookup.external-source.added": "Successfully added local entry to the selection",
- "submission.sections.describe.relationship-lookup.external-source.added": "Giriş seçime başarıyla eklendi",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-button-title.isAuthorOfPublication": "Import remote author",
- "submission.sections.describe.relationship-lookup.external-source.import-button-title.isAuthorOfPublication": "Dış Kaynak Yazarı İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal": "Import remote journal",
- "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal": "Dış Kaynak Makaleyi İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Issue": "Import remote journal issue",
- "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Issue": "Dış Kaynak Makale Konusu İçe Aktar",
-
- // "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": "Dış Kaynak Makale Cilt Sayısı İçe Aktar",
-
- // "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": "Dış Kaynak Yazarı İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.local-entity": "Successfully added local author to the selection",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.local-entity": "Yazar seçime başarıyla eklendi",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.new-entity": "Successfully imported and added external author to the selection",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.new-entity": "Harici yazar başarıyla içe aktarıldı ve seçime eklendi",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.authority": "Authority",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.authority": "Yetkili",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.authority.new": "Import as a new local authority entry",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.authority.new": "Yeni bir yerel yetkili girişi olarak içe aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.cancel": "Cancel",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.cancel": "İptal",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.collection": "Select a collection to import new entries to",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.collection": "Yeni girişleri içe aktarmak için bir koleksiyon seçin",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.entities": "Entities",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.entities": "Varlıklar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.entities.new": "Import as a new local entity",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.entities.new": "Yeni bir yerel varlık olarak içe aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.lcname": "LC Adına göre İçe Aktar",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.head.lcname": "Importing from LC Name",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.orcid": "Importing from ORCID",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.head.orcid": "ORCID'den İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaJournal": "Importing from Sherpa Journal",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaJournal": "Sherpa Journal'den İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaPublisher": "Importing from Sherpa Publisher",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaPublisher": "Sherpa Publisher'den İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.pubmed": "Importing from PubMed",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.head.pubmed": "PubMed'den İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.arxiv": "Importing from arXiv",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.head.arxiv": "arXiv'den İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.import": "Import",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.import": "İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.title": "Import Remote Journal",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.title": "Makaleyi Dışardan İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.local-entity": "Successfully added local journal to the selection",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.local-entity": " Makale seçime başarıyla eklendi",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.new-entity": "Successfully imported and added external journal to the selection",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.new-entity": "Harici makale başarıyla içe aktarıldı ve seçime eklendi",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.title": "Import Remote Journal Issue",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.title": "Dış Kaynak Makale Konusu İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.local-entity": "Successfully added local journal issue to the selection",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.local-entity": "Dış Kaynak Makale Konusu Başarıyla İçe Aktarıldı.",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.new-entity": "Successfully imported and added external journal issue to the selection",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.new-entity": "Başarıyla içe aktarıldı ve seçime harici makale sayısı eklendi",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.title": "Import Remote Journal Volume",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.title": "Dış Kaynak Makale Cilt Sayısı İçe Aktar",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.local-entity": "Successfully added local journal volume to the selection",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.local-entity": "Dış Kaynak Makale Cilt Sayısı Başarıyla İçe Aktarıldı.",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.new-entity": "Successfully imported and added external journal volume to the selection",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.new-entity": "Harici makale cilti başarıyla içe aktarıldı ve seçime eklendi",
-
- // "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Select a local match:",
- "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Yerel Eşleşmeyi Seç",
-
- // "submission.sections.describe.relationship-lookup.search-tab.deselect-all": "Deselect all",
- "submission.sections.describe.relationship-lookup.search-tab.deselect-all": "Tümünü Seçmeyi Bırak",
-
- // "submission.sections.describe.relationship-lookup.search-tab.deselect-page": "Deselect page",
- "submission.sections.describe.relationship-lookup.search-tab.deselect-page": "Sayfa Seçimin Bırak",
-
- // "submission.sections.describe.relationship-lookup.search-tab.loading": "Loading...",
- "submission.sections.describe.relationship-lookup.search-tab.loading": "Yükleniyor...",
-
- // "submission.sections.describe.relationship-lookup.search-tab.placeholder": "Search query",
- "submission.sections.describe.relationship-lookup.search-tab.placeholder": "Arama Sorgusu",
-
- // "submission.sections.describe.relationship-lookup.search-tab.search": "Go",
- "submission.sections.describe.relationship-lookup.search-tab.search": "Git",
-
- // "submission.sections.describe.relationship-lookup.search-tab.select-all": "Select all",
- "submission.sections.describe.relationship-lookup.search-tab.select-all": "Hepsini Seç",
-
- // "submission.sections.describe.relationship-lookup.search-tab.select-page": "Select page",
- "submission.sections.describe.relationship-lookup.search-tab.select-page": "Sayfa Seç",
-
- // "submission.sections.describe.relationship-lookup.selected": "Selected {{ size }} items",
- "submission.sections.describe.relationship-lookup.selected": "{{ size }} boyutundaki Seçili Materyaller ",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isAuthorOfPublication": "Local Authors ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.isAuthorOfPublication": " Yerel Yazarlar({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalOfPublication": "Local Journals ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalOfPublication": "Yerel Makaleler ({{ count }})",
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Project": "Local Projects ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.Project": "Yerel Projeler ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Publication": "Local Publications ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.Publication": "Yerel Yayınlar ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Person": "Local Authors ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.Person": "Yerel Yazarlar ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.OrgUnit": "Local Organizational Units ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.OrgUnit": "Yerel Organizasyonlar({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataPackage": "Local Data Packages ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataPackage": "Yerel Veri Paketleri ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataFile": "Local Data Files ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataFile": "Yerel Veri Dosyaları ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Journal": "Local Journals ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.Journal": "Yerel Makaleler ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalIssueOfPublication": "Local Journal Issues ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalIssueOfPublication": "Yerel Makale Konuları ({{ 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": "Yerel Makale Konuları ({{ 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": "Yerel Makale Cilt ({{ 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": "Yerel Makale Cilt ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Sherpa Journals ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Sherpa Journals ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaPublisher": "Sherpa Publishers ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaPublisher": "Sherpa Publishers ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.orcid": "ORCID ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.orcid": "ORCID ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.lcname": "LC Names ({{ count }})",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.lcname": "LC Adları ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.pubmed": "PubMed ({{ 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.arxiv": "arXiv ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfPublication": "Search for Funding Agencies",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfPublication": "Finansman Kuruluşlarını Arama",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingOfPublication": "Search for Funding",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingOfPublication": "Finansman Arama",
-
- // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Search for Organizational Units",
- "submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Organizasyonları Arama",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Current Selection ({{ count }})",
- "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Mevcut Seçim ({{ count }})",
-
- // "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Journal Issues",
- "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Makale Konuları",
- // "submission.sections.describe.relationship-lookup.title.JournalIssue": "Journal Issues",
- "submission.sections.describe.relationship-lookup.title.JournalIssue": "Makale Konuları",
-
- // "submission.sections.describe.relationship-lookup.title.isJournalVolumeOfPublication": "Journal Volumes",
- "submission.sections.describe.relationship-lookup.title.isJournalVolumeOfPublication": "Makale Ciltleri",
- // "submission.sections.describe.relationship-lookup.title.JournalVolume": "Journal Volumes",
- "submission.sections.describe.relationship-lookup.title.JournalVolume": "Makale Ciltleri",
-
- // "submission.sections.describe.relationship-lookup.title.isJournalOfPublication": "Journals",
- "submission.sections.describe.relationship-lookup.title.isJournalOfPublication": "Makaleler",
-
- // "submission.sections.describe.relationship-lookup.title.isAuthorOfPublication": "Authors",
- "submission.sections.describe.relationship-lookup.title.isAuthorOfPublication": "Yazarlar",
-
- // "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfPublication": "Funding Agency",
- "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfPublication": "Finansman Kuruluşu",
- // "submission.sections.describe.relationship-lookup.title.Project": "Projects",
- "submission.sections.describe.relationship-lookup.title.Project": "Projeler",
-
- // "submission.sections.describe.relationship-lookup.title.Publication": "Publications",
- "submission.sections.describe.relationship-lookup.title.Publication": "Yayınlar",
-
- // "submission.sections.describe.relationship-lookup.title.Person": "Authors",
- "submission.sections.describe.relationship-lookup.title.Person": "Yazarlar",
-
- // "submission.sections.describe.relationship-lookup.title.OrgUnit": "Organizational Units",
- "submission.sections.describe.relationship-lookup.title.OrgUnit": "Organizasyonlar",
-
- // "submission.sections.describe.relationship-lookup.title.DataPackage": "Data Packages",
- "submission.sections.describe.relationship-lookup.title.DataPackage": "Veri Paketler",
-
- // "submission.sections.describe.relationship-lookup.title.DataFile": "Data Files",
- "submission.sections.describe.relationship-lookup.title.DataFile": "Veri Dosyaları",
-
- // "submission.sections.describe.relationship-lookup.title.Funding Agency": "Funding Agency",
- "submission.sections.describe.relationship-lookup.title.Funding Agency": "Finansman Kuruluşu",
-
- // "submission.sections.describe.relationship-lookup.title.isFundingOfPublication": "Funding",
- "submission.sections.describe.relationship-lookup.title.isFundingOfPublication": "Finansman",
-
- // "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Parent Organizational Unit",
- "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Ana Organizasyon",
-
- // "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Toggle dropdown",
- "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Açılır menüyü aç/kapat",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.settings": "Settings",
- "submission.sections.describe.relationship-lookup.selection-tab.settings": "Ayarlar",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.no-selection": "Your selection is currently empty.",
- "submission.sections.describe.relationship-lookup.selection-tab.no-selection": "Mevcut seçiminiz boş. ",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.isAuthorOfPublication": "Selected Authors",
- "submission.sections.describe.relationship-lookup.selection-tab.title.isAuthorOfPublication": "Seçili Yazarlar",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalOfPublication": "Selected Journals",
- "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalOfPublication": "Seçili Makaleler",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalVolumeOfPublication": "Selected Journal Volume",
- "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalVolumeOfPublication": "Seçili Makale Ciltleri",
- // "submission.sections.describe.relationship-lookup.selection-tab.title.Project": "Selected Projects",
- "submission.sections.describe.relationship-lookup.selection-tab.title.Project": "Seçili Projeler",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.Publication": "Selected Publications",
- "submission.sections.describe.relationship-lookup.selection-tab.title.Publication": "Seçili Yayınlar",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.Person": "Selected Authors",
- "submission.sections.describe.relationship-lookup.selection-tab.title.Person": "Seçili Yazarlar",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.OrgUnit": "Selected Organizational Units",
- "submission.sections.describe.relationship-lookup.selection-tab.title.OrgUnit": "Seçili Organizasyonlar",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.DataPackage": "Selected Data Packages",
- "submission.sections.describe.relationship-lookup.selection-tab.title.DataPackage": "Seçili Veri Paketleri",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.DataFile": "Selected Data Files",
- "submission.sections.describe.relationship-lookup.selection-tab.title.DataFile": "Seçili Veri Dosyaları",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.Journal": "Selected Journals",
- "submission.sections.describe.relationship-lookup.selection-tab.title.Journal": "Seçili Makaleler",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalIssueOfPublication": "Selected Issue",
- "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalIssueOfPublication": "Seçili Makale Konuları",
- // "submission.sections.describe.relationship-lookup.selection-tab.title.JournalVolume": "Selected Journal Volume",
- "submission.sections.describe.relationship-lookup.selection-tab.title.JournalVolume": "Seçili Makale Ciltleri",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingAgencyOfPublication": "Selected Funding Agency",
- "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingAgencyOfPublication": "Seçili Finansman Kuruluşu",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Selected Funding",
- "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Seçili Finansman",
- // "submission.sections.describe.relationship-lookup.selection-tab.title.JournalIssue": "Selected Issue",
- "submission.sections.describe.relationship-lookup.selection-tab.title.JournalIssue": "Seçili Makale Konuları",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.isChildOrgUnitOf": "Selected Organizational Unit",
- "submission.sections.describe.relationship-lookup.selection-tab.title.isChildOrgUnitOf": "Seçili Organizasyonlar",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaJournal": "Search Results",
- "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaJournal": "Sonuçları Ara",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaPublisher": "Search Results",
- "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaPublisher": "Sonuçları Ara",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.orcid": "Search Results",
- "submission.sections.describe.relationship-lookup.selection-tab.title.orcid": "Sonuçları Ara",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.orcidv2": "Search Results",
- "submission.sections.describe.relationship-lookup.selection-tab.title.orcidv2": "Sonuçları Ara",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.lcname": "Search Results",
- "submission.sections.describe.relationship-lookup.selection-tab.title.lcname": "Sonuçları Ara",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.pubmed": "Search Results",
- "submission.sections.describe.relationship-lookup.selection-tab.title.pubmed": "Sonuçları Ara",
-
- // "submission.sections.describe.relationship-lookup.selection-tab.title.arxiv": "Search Results",
- "submission.sections.describe.relationship-lookup.selection-tab.title.arxiv": "Sonuçları Ara",
-
- // "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": "Bu kişi için \"{{ value }}\" ilerideki gönderilerde kullanılabilmek için Yeni İsim olarak kaydedilsin mi? Bunu yapmazsanız, yine de bu gönderim için kullanabilirsiniz .",
-
- // "submission.sections.describe.relationship-lookup.name-variant.notification.confirm": "Save a new name variant",
- "submission.sections.describe.relationship-lookup.name-variant.notification.confirm": "Yeni İsim değişikliğini kaydet.",
-
- // "submission.sections.describe.relationship-lookup.name-variant.notification.decline": "Use only for this submission",
- "submission.sections.describe.relationship-lookup.name-variant.notification.decline": "Sadece bu gönderim için kullan.",
-
- // "submission.sections.ccLicense.type": "License Type",
- "submission.sections.ccLicense.type": "Lisans Türü",
-
- // "submission.sections.ccLicense.select": "Select a license type…",
- "submission.sections.ccLicense.select": "Lisans Türünü Seç…",
-
- // "submission.sections.ccLicense.change": "Change your license type…",
- "submission.sections.ccLicense.change": "Lisans Türünü Değiştir…",
-
- // "submission.sections.ccLicense.none": "No licenses available",
- "submission.sections.ccLicense.none": "Lisans Mevcut Değil",
-
- // "submission.sections.ccLicense.option.select": "Select an option…",
- "submission.sections.ccLicense.option.select": "Seçenek Seç…",
-
- // "submission.sections.ccLicense.link": "You’ve selected the following license:",
- "submission.sections.ccLicense.link": "Seçtiğiniz Lisans Türü:",
-
- // "submission.sections.ccLicense.confirmation": "I grant the license above",
- "submission.sections.ccLicense.confirmation": "Yukarıdaki lisansı veriyorum",
-
- // "submission.sections.general.add-more": "Add more",
- "submission.sections.general.add-more": "Ekle",
-
- // "submission.sections.general.collection": "Collection",
- "submission.sections.general.collection": "Koleksiyon",
-
- // "submission.sections.general.deposit_error_notice": "There was an issue when submitting the item, please try again later.",
- "submission.sections.general.deposit_error_notice": "Öğe gönderilirken bir sorun oluştu, lütfen daha sonra tekrar deneyin.",
-
- // "submission.sections.general.deposit_success_notice": "Submission deposited successfully.",
- "submission.sections.general.deposit_success_notice": "Gönderim başarıyla yatırıldı.",
-
- // "submission.sections.general.discard_error_notice": "There was an issue when discarding the item, please try again later.",
- "submission.sections.general.discard_error_notice": "Öğe gönderilirken bir sorun oluştu, lütfen daha sonra tekrar deneyin.",
-
- // "submission.sections.general.discard_success_notice": "Submission discarded successfully.",
- "submission.sections.general.discard_success_notice": "Gönderim başarıyla silindi.",
-
- // "submission.sections.general.metadata-extracted": "New metadata have been extracted and added to the {{sectionId}} section.",
- "submission.sections.general.metadata-extracted": "Yeni meta veriler çıkarıldı ve {{sectionId}} bölümüne eklendi.",
-
- // "submission.sections.general.metadata-extracted-new-section": "New {{sectionId}} section has been added to submission.",
- "submission.sections.general.metadata-extracted-new-section": "Gönderime yeni {{sectionId}} bölümü eklendi.",
-
- // "submission.sections.general.no-collection": "No collection found",
- "submission.sections.general.no-collection": "Koleksiyon bulunamadı",
-
- // "submission.sections.general.no-sections": "No options available",
- "submission.sections.general.no-sections": "Seçenekler Bulunamadı.",
-
- // "submission.sections.general.save_error_notice": "There was an issue when saving the item, please try again later.",
- "submission.sections.general.save_error_notice": "Öğe kaydedilirken bir sorun oluştu, lütfen daha sonra tekrar deneyin.",
-
- // "submission.sections.general.save_success_notice": "Submission saved successfully.",
- "submission.sections.general.save_success_notice": "Gönderim başarıyla kaydedildi.",
-
- // "submission.sections.general.search-collection": "Search for a collection",
- "submission.sections.general.search-collection": "Koleksiyon ara",
-
- // "submission.sections.general.sections_not_valid": "There are incomplete sections.",
- "submission.sections.general.sections_not_valid": "Eksik bölümler var.",
-
-
-
- // "submission.sections.submit.progressbar.CClicense": "Creative commons license",
- "submission.sections.submit.progressbar.CClicense": "Yaratıcı Ortak Lisansları",
-
- // "submission.sections.submit.progressbar.describe.recycle": "Recycle",
- "submission.sections.submit.progressbar.describe.recycle": "Geri Dönüştür",
-
- // "submission.sections.submit.progressbar.describe.stepcustom": "Describe",
- "submission.sections.submit.progressbar.describe.stepcustom": "Tanımla",
-
- // "submission.sections.submit.progressbar.describe.stepone": "Describe",
- "submission.sections.submit.progressbar.describe.stepone": "Tanımla",
-
- // "submission.sections.submit.progressbar.describe.steptwo": "Describe",
- "submission.sections.submit.progressbar.describe.steptwo": "Tanımla",
-
- // "submission.sections.submit.progressbar.detect-duplicate": "Potential duplicates",
- "submission.sections.submit.progressbar.detect-duplicate": "Olası Kopyalar",
-
- // "submission.sections.submit.progressbar.license": "Deposit license",
- "submission.sections.submit.progressbar.license": "Lisansı Yerleştir",
-
- // "submission.sections.submit.progressbar.upload": "Upload files",
- "submission.sections.submit.progressbar.upload": "Dosyaları yükle",
-
-
-
- // "submission.sections.upload.delete.confirm.cancel": "Cancel",
- "submission.sections.upload.delete.confirm.cancel": "İptal",
-
- // "submission.sections.upload.delete.confirm.info": "This operation can't be undone. Are you sure?",
- "submission.sections.upload.delete.confirm.info": "Bu işlem geri alınamaz. Emin misin?",
-
- // "submission.sections.upload.delete.confirm.submit": "Yes, I'm sure",
- "submission.sections.upload.delete.confirm.submit": "Evet eminim.",
-
- // "submission.sections.upload.delete.confirm.title": "Delete bitstream",
- "submission.sections.upload.delete.confirm.title": "Veri Akışını Sil",
-
- // "submission.sections.upload.delete.submit": "Delete",
- "submission.sections.upload.delete.submit": "Sil",
-
- // "submission.sections.upload.drop-message": "Drop files to attach them to the item",
- "submission.sections.upload.drop-message": "Öğeye eklemek için dosyaları bırakın",
-
- // "submission.sections.upload.form.access-condition-label": "Access condition type",
- "submission.sections.upload.form.access-condition-label": "Erişim Koşulu Türü",
-
- // "submission.sections.upload.form.date-required": "Date is required.",
- "submission.sections.upload.form.date-required": "Tarih gerekli.",
-
- // "submission.sections.upload.form.from-label": "Grant access from",
- "submission.sections.upload.form.from-label": "Şuradan erişim izni ver:",
-
- // "submission.sections.upload.form.from-placeholder": "From",
- "submission.sections.upload.form.from-placeholder": "İtibaren",
-
- // "submission.sections.upload.form.group-label": "Group",
- "submission.sections.upload.form.group-label": "Grup",
-
- // "submission.sections.upload.form.group-required": "Group is required.",
- "submission.sections.upload.form.group-required": "Grup gerekli.",
-
- // "submission.sections.upload.form.until-label": "Grant access until",
- "submission.sections.upload.form.until-label": "Şu tarihe kadar erişim izni ver:",
-
- // "submission.sections.upload.form.until-placeholder": "Until",
- "submission.sections.upload.form.until-placeholder": "Kadar",
-
- // "submission.sections.upload.header.policy.default.nolist": "Uploaded files in the {{collectionName}} collection will be accessible according to the following group(s):",
- "submission.sections.upload.header.policy.default.nolist": "{{collectionName}} koleksiyonuna yüklenen dosyalara aşağıdaki gruplara göre erişilebilir:",
-
- // "submission.sections.upload.header.policy.default.withlist": "Please note that uploaded files in the {{collectionName}} collection will be accessible, in addition to what is explicitly decided for the single file, with the following group(s):",
- "submission.sections.upload.header.policy.default.withlist": "{{collectionName}} koleksiyonuna yüklenen dosyalara, tek dosya için açıkça karar verilenlere ek olarak aşağıdaki gruplarla erişilebilir olacağını lütfen unutmayın:",
-
- // "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": "Burada, o anda öğede bulunan tüm dosyaları bulacaksınız. Dosya meta verilerini güncelleyebilir ve koşullara erişebilir veya sayfanın her yerine sürükleyip bırakarak ek dosyalar yükleyebilirsiniz ",
-
- // "submission.sections.upload.no-entry": "No",
- "submission.sections.upload.no-entry": "Hayır",
-
- // "submission.sections.upload.no-file-uploaded": "No file uploaded yet.",
- "submission.sections.upload.no-file-uploaded": "Henüz dosya yüklenmedi.",
-
- // "submission.sections.upload.save-metadata": "Save metadata",
- "submission.sections.upload.save-metadata": "Meta verileri kaydet",
-
- // "submission.sections.upload.undo": "Cancel",
- "submission.sections.upload.undo": "İptal",
-
- // "submission.sections.upload.upload-failed": "Upload failed",
- "submission.sections.upload.upload-failed": "Yükleme Başarısız",
-
- // "submission.sections.upload.upload-successful": "Upload successful",
- "submission.sections.upload.upload-successful": "Yükleme Başarılı",
-
-
-
- // "submission.submit.title": "Submission",
- "submission.submit.title": "Gönder",
-
-
-
- // "submission.workflow.generic.delete": "Delete",
- "submission.workflow.generic.delete": "Sil",
-
- // "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": "Bu öğeyi atmak istiyorsanız, \"Sil\" öğesini seçin. Daha sonra onaylamanız istenecektir.",
-
- // "submission.workflow.generic.edit": "Edit",
- "submission.workflow.generic.edit": "Değiştir",
-
- // "submission.workflow.generic.edit-help": "Select this option to change the item's metadata.",
- "submission.workflow.generic.edit-help": "Öğenin meta verilerini değiştirmek için bu seçeneği belirleyin.",
-
- // "submission.workflow.generic.view": "View",
- "submission.workflow.generic.view": "Göster",
-
- // "submission.workflow.generic.view-help": "Select this option to view the item's metadata.",
- "submission.workflow.generic.view-help": "Öğenin meta verilerini görüntülemek için bu seçeneği belirleyin.",
-
-
-
- // "submission.workflow.tasks.claimed.approve": "Approve",
- "submission.workflow.tasks.claimed.approve": "Kabul Et.",
-
- // "submission.workflow.tasks.claimed.approve_help": "If you have reviewed the item and it is suitable for inclusion in the collection, select \"Approve\".",
- "submission.workflow.tasks.claimed.approve_help": "Öğeyi incelediyseniz ve koleksiyona dahil edilmeye uygunsa, \"Onayla\"yı seçin.",
-
- // "submission.workflow.tasks.claimed.edit": "Edit",
- "submission.workflow.tasks.claimed.edit": "Değiştir",
-
- // "submission.workflow.tasks.claimed.edit_help": "Select this option to change the item's metadata.",
- "submission.workflow.tasks.claimed.edit_help": "Öğenin meta verilerini değiştirmek için bu seçeneği belirleyin.",
-
- // "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": "Lütfen gönderiyi reddetme nedeninizi aşağıdaki kutuya, gönderenin bir sorunu çözüp yeniden gönderip gönderemeyeceğini belirterek girin.",
-
- // "submission.workflow.tasks.claimed.reject.reason.placeholder": "Describe the reason of reject",
- "submission.workflow.tasks.claimed.reject.reason.placeholder": "Reddetme nedenini açıklayın",
-
- // "submission.workflow.tasks.claimed.reject.reason.submit": "Reject item",
- "submission.workflow.tasks.claimed.reject.reason.submit": "Materyali Reddet",
-
- // "submission.workflow.tasks.claimed.reject.reason.title": "Reason",
- "submission.workflow.tasks.claimed.reject.reason.title": "Neden",
-
- // "submission.workflow.tasks.claimed.reject.submit": "Reject",
- "submission.workflow.tasks.claimed.reject.submit": "Kabul Etme",
-
- // "submission.workflow.tasks.claimed.reject_help": "If you have reviewed the item and found it is not suitable for inclusion in the collection, select \"Reject\". You will then be asked to enter a message indicating why the item is unsuitable, and whether the submitter should change something and resubmit.",
- "submission.workflow.tasks.claimed.reject_help": "Öğeyi incelediyseniz ve koleksiyona dahil edilmeye uygun olmadığını bulduysanız, \"Reddet\"i seçin. Ardından, öğenin neden uygun olmadığını ve gönderenin bir şeyi değiştirip yeniden göndermesi gerekip gerekmediğini belirten bir mesaj girmeniz istenecektir.",
-
- // "submission.workflow.tasks.claimed.return": "Return to pool",
- "submission.workflow.tasks.claimed.return": "Havuza Dön",
-
- // "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": "Başka bir kullanıcının görevi gerçekleştirebilmesi için görevi havuza geri döndürün.",
-
-
-
- // "submission.workflow.tasks.generic.error": "Error occurred during operation...",
- "submission.workflow.tasks.generic.error": "İşlem sırasında hata oluştu...",
-
- // "submission.workflow.tasks.generic.processing": "Processing...",
- "submission.workflow.tasks.generic.processing": "İşleniyor...",
-
- // "submission.workflow.tasks.generic.submitter": "Submitter",
- "submission.workflow.tasks.generic.submitter": "Gönderen",
-
- // "submission.workflow.tasks.generic.success": "Operation successful",
- "submission.workflow.tasks.generic.success": "İşlem Başarılı",
-
-
-
- // "submission.workflow.tasks.pool.claim": "Claim",
- "submission.workflow.tasks.pool.claim": "Talep Et",
-
- // "submission.workflow.tasks.pool.claim_help": "Assign this task to yourself.",
- "submission.workflow.tasks.pool.claim_help": "Bu görevi kendinize atayın.",
-
- // "submission.workflow.tasks.pool.hide-detail": "Hide detail",
- "submission.workflow.tasks.pool.hide-detail": "Detayları gizle",
-
- // "submission.workflow.tasks.pool.show-detail": "Show detail",
- "submission.workflow.tasks.pool.show-detail": "Detayaları göster",
-
-
-
- // "title": "DSpace",
- "title": "DSpace",
-
-
-
- // "vocabulary-treeview.header": "Hierarchical tree view",
- "vocabulary-treeview.header": "Hiyerarşik ağaç görünümü",
-
- // "vocabulary-treeview.load-more": "Load more",
- "vocabulary-treeview.load-more": "Daha Fazla Yükle",
-
- // "vocabulary-treeview.search.form.reset": "Reset",
- "vocabulary-treeview.search.form.reset": "Sıfırla",
-
- // "vocabulary-treeview.search.form.search": "Search",
- "vocabulary-treeview.search.form.search": "Ara",
-
- // "vocabulary-treeview.search.no-result": "There were no items to show",
- "vocabulary-treeview.search.no-result": "Gösterilecek öğe yok",
-
- // "vocabulary-treeview.tree.description.nsi": "The Norwegian Science Index",
- "vocabulary-treeview.tree.description.nsi": "The Norwegian Science Index",
-
- // "vocabulary-treeview.tree.description.srsc": "Research Subject Categories",
- "vocabulary-treeview.tree.description.srsc": "Araştırma Konusu Kategorileri",
-
-
-
- // "uploader.browse": "browse",
- "uploader.browse": "Tara",
-
- // "uploader.drag-message": "Drag & Drop your files here",
- "uploader.drag-message": "Dosyalarınızı buraya sürükleyip bırakın",
-
- // "uploader.or": ", or ",
- "uploader.or": ", veya",
-
- // "uploader.processing": "Processing",
- "uploader.processing": "İşleniyor",
-
- // "uploader.queue-length": "Queue length",
- "uploader.queue-length": "Sıra Uzunluğu",
-
- // "virtual-metadata.delete-item.info": "Select the types for which you want to save the virtual metadata as real metadata",
- "virtual-metadata.delete-item.info": "Sanal meta verileri gerçek meta veriler olarak kaydetmek istediğiniz türleri seçin",
-
- // "virtual-metadata.delete-item.modal-head": "The virtual metadata of this relation",
- "virtual-metadata.delete-item.modal-head": "Bu ilişkinin sanal meta verileri",
-
- // "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": "Sanal meta verilerini gerçek meta veriler olarak kaydetmek istediğiniz öğeleri seçin",
-
-
-
- // "workflowAdmin.search.results.head": "Administer Workflow",
- "workflowAdmin.search.results.head": "İş Akışını Yönet",
-
-
-
- // "workflow-item.delete.notification.success.title": "Deleted",
- "workflow-item.delete.notification.success.title": "Silindi",
-
- // "workflow-item.delete.notification.success.content": "This workflow item was successfully deleted",
- "workflow-item.delete.notification.success.content": "Bu iş akışı öğesi başarıyla silindi",
-
- // "workflow-item.delete.notification.error.title": "Something went wrong",
- "workflow-item.delete.notification.error.title": "Bir şeyler yanlış gitti",
-
- // "workflow-item.delete.notification.error.content": "The workflow item could not be deleted",
- "workflow-item.delete.notification.error.content": "İş akışı öğesi silinemedi",
-
- // "workflow-item.delete.title": "Delete workflow item",
- "workflow-item.delete.title": "İş akışı öğesini sil",
-
- // "workflow-item.delete.header": "Delete workflow item",
- "workflow-item.delete.header": "İş akışı öğesini sil",
-
- // "workflow-item.delete.button.cancel": "Cancel",
- "workflow-item.delete.button.cancel": "İptal",
-
- // "workflow-item.delete.button.confirm": "Delete",
- "workflow-item.delete.button.confirm": "Sil",
-
-
- // "workflow-item.send-back.notification.success.title": "Sent back to submitter",
- "workflow-item.send-back.notification.success.title": "Gönderene geri gönderildi",
-
- // "workflow-item.send-back.notification.success.content": "This workflow item was successfully sent back to the submitter",
- "workflow-item.send-back.notification.success.content": "Bu iş akışı öğesi, gönderene başarıyla geri gönderildi",
-
- // "workflow-item.send-back.notification.error.title": "Something went wrong",
- "workflow-item.send-back.notification.error.title": "Bir şeyler yanlış gitti",
-
- // "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": "İş akışı öğesi, gönderene geri gönderilemedi",
-
- // "workflow-item.send-back.title": "Send workflow item back to submitter",
- "workflow-item.send-back.title": "İş akışı öğesini gönderene geri gönder",
-
- // "workflow-item.send-back.header": "Send workflow item back to submitter",
- "workflow-item.send-back.header": "İş akışı öğesini gönderene geri gönder",
-
- // "workflow-item.send-back.button.cancel": "Cancel",
- "workflow-item.send-back.button.cancel": "İptal",
-
- // "workflow-item.send-back.button.confirm": "Send back"
- "workflow-item.send-back.button.confirm": "Geri Gönder"
-
-}
+{
+
+ // "401.help": "You're not authorized to access this page. You can use the button below to get back to the home page.",
+ "401.help": "Bu sayfaya erişim yetkiniz bulunmamaktadır. Ana sayfaya dönmek için aşağıdaki butonu kullanabilirsiniz.",
+
+ // "401.link.home-page": "Take me to the home page",
+ "401.link.home-page": "Beni ana sayfaya götür",
+
+ // "401.unauthorized": "unauthorized",
+ "401.unauthorized": "yetkisiz",
+
+
+
+ // "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": "Bu sayfaya erişim yetkiniz bulunmamaktadır. Ana sayfaya dönmek için aşağıdaki butonu kullanabilirsiniz.",
+
+ // "403.link.home-page": "Take me to the home page",
+ "403.link.home-page": "Beni ana sayfaya götür",
+
+ // "403.forbidden": "forbidden",
+ "403.forbidden": "yasaklı",
+
+
+
+ // "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": "Aradığınız sayfayı bulamıyoruz. Sayfa taşınmış veya silinmiş olabilir. Ana sayfaya geri dönmek için aşağıdaki butonu kullanabilirsiniz. ",
+
+ // "404.link.home-page": "Take me to the home page",
+ "404.link.home-page": "Beni ana sayfaya götür",
+
+ // "404.page-not-found": "page not found",
+ "404.page-not-found": "sayfa bulunamadı",
+
+ // "admin.curation-tasks.breadcrumbs": "System curation tasks",
+ "admin.curation-tasks.breadcrumbs": "Sistem iyileştirme görevleri",
+
+ // "admin.curation-tasks.title": "System curation tasks",
+ "admin.curation-tasks.title": "Sistem iyileştirme görevleri",
+
+ // "admin.curation-tasks.header": "System curation tasks",
+ "admin.curation-tasks.header": "Sistem iyileştirme görevleri",
+
+ // "admin.registries.bitstream-formats.breadcrumbs": "Format registry",
+ "admin.registries.bitstream-formats.breadcrumbs": "Kayıt defterini biçimlendir",
+
+ // "admin.registries.bitstream-formats.create.breadcrumbs": "Bitstream format",
+ "admin.registries.bitstream-formats.create.breadcrumbs": "Bitstream biçimi",
+
+ // "admin.registries.bitstream-formats.create.failure.content": "An error occurred while creating the new bitstream format.",
+ "admin.registries.bitstream-formats.create.failure.content": "Yeni bitstream biçimi oluşturulurken bir hata oluştu.",
+
+ // "admin.registries.bitstream-formats.create.failure.head": "Failure",
+ "admin.registries.bitstream-formats.create.failure.head": "Aksama",
+
+ // "admin.registries.bitstream-formats.create.head": "Create Bitstream format",
+ "admin.registries.bitstream-formats.create.head": "Vit akışı biçimi oluştur",
+
+ // "admin.registries.bitstream-formats.create.new": "Add a new bitstream format",
+ "admin.registries.bitstream-formats.create.new": "Yeni bir bitstream biçimi ekleyin",
+
+ // "admin.registries.bitstream-formats.create.success.content": "The new bitstream format was successfully created.",
+ "admin.registries.bitstream-formats.create.success.content": "Yeni bitstream biçimi başarıyla oluşturuldu.",
+
+ // "admin.registries.bitstream-formats.create.success.head": "Success",
+ "admin.registries.bitstream-formats.create.success.head": "Başarılı",
+
+ // "admin.registries.bitstream-formats.delete.failure.amount": "Failed to remove {{ amount }} format(s)",
+ "admin.registries.bitstream-formats.delete.failure.amount": "{{ amount }} biçim(ler) kaldırılamadı",
+
+ // "admin.registries.bitstream-formats.delete.failure.head": "Failure",
+ "admin.registries.bitstream-formats.delete.failure.head": "Aksama",
+
+ // "admin.registries.bitstream-formats.delete.success.amount": "Successfully removed {{ amount }} format(s)",
+ "admin.registries.bitstream-formats.delete.success.amount": "{{ amount }} biçim(ler) başarıyla kaldırıldı",
+
+ // "admin.registries.bitstream-formats.delete.success.head": "Success",
+ "admin.registries.bitstream-formats.delete.success.head": "Başarılı",
+
+ // "admin.registries.bitstream-formats.description": "This list of bitstream formats provides information about known formats and their support level.",
+ "admin.registries.bitstream-formats.description": "Bu bitstream biçimleri listesi, bilinen biçimler ve destek düzeyleri hakkında bilgi sağlar.",
+
+ // "admin.registries.bitstream-formats.edit.breadcrumbs": "Bitstream format",
+ "admin.registries.bitstream-formats.edit.breadcrumbs": "Bitstream biçimi",
+
+ // "admin.registries.bitstream-formats.edit.description.hint": "",
+ "admin.registries.bitstream-formats.edit.description.hint": "",
+
+ // "admin.registries.bitstream-formats.edit.description.label": "Description",
+ "admin.registries.bitstream-formats.edit.description.label": "Tanımlama",
+
+ // "admin.registries.bitstream-formats.edit.extensions.hint": "Extensions are file extensions that are used to automatically identify the format of uploaded files. You can enter several extensions for each format.",
+ "admin.registries.bitstream-formats.edit.extensions.hint": "Uzantılar, yüklenen dosyaların biçimini otomatik olarak tanımlamak için kullanılan dosya uzantılarıdır. Her biçim için birkaç uzantı girebilirsiniz.",
+
+ // "admin.registries.bitstream-formats.edit.extensions.label": "File extensions",
+ "admin.registries.bitstream-formats.edit.extensions.label": "Dosya uzantıları",
+
+ // "admin.registries.bitstream-formats.edit.extensions.placeholder": "Enter a file extension without the dot",
+ "admin.registries.bitstream-formats.edit.extensions.placeholder": "Nokta olmadan bir dosya uzantısı girin",
+
+ // "admin.registries.bitstream-formats.edit.failure.content": "An error occurred while editing the bitstream format.",
+ "admin.registries.bitstream-formats.edit.failure.content": "Bitstream biçimi düzenlenirken bir hata oluştu.",
+
+ // "admin.registries.bitstream-formats.edit.failure.head": "Failure",
+ "admin.registries.bitstream-formats.edit.failure.head": "Aksama",
+
+ // "admin.registries.bitstream-formats.edit.head": "Bitstream format: {{ format }}",
+ "admin.registries.bitstream-formats.edit.head": "Bitstream biçimi: {{ format }}",
+
+ // "admin.registries.bitstream-formats.edit.internal.hint": "Formats marked as internal are hidden from the user, and used for administrative purposes.",
+ "admin.registries.bitstream-formats.edit.internal.hint": "Dahili olarak işaretlenen biçimler, kullanıcıdan gizlenir ve yönetim amacıyla kullanılır.",
+
+ // "admin.registries.bitstream-formats.edit.internal.label": "Internal",
+ "admin.registries.bitstream-formats.edit.internal.label": "Dahili",
+
+ // "admin.registries.bitstream-formats.edit.mimetype.hint": "The MIME type associated with this format, does not have to be unique.",
+ "admin.registries.bitstream-formats.edit.mimetype.hint": "Bu biçimle ilişkili MIME biçimi benzersiz olması gerekmez.",
+
+ // "admin.registries.bitstream-formats.edit.mimetype.label": "MIME Type",
+ "admin.registries.bitstream-formats.edit.mimetype.label": "MIME Biçimi",
+
+ // "admin.registries.bitstream-formats.edit.shortDescription.hint": "A unique name for this format, (e.g. Microsoft Word XP or Microsoft Word 2000)",
+ "admin.registries.bitstream-formats.edit.shortDescription.hint": "Bu biçim için benzersiz bir ad (ör. Microsoft Word XP veya Microsoft Word 2000)",
+
+ // "admin.registries.bitstream-formats.edit.shortDescription.label": "Name",
+ "admin.registries.bitstream-formats.edit.shortDescription.label": "İsim",
+
+ // "admin.registries.bitstream-formats.edit.success.content": "The bitstream format was successfully edited.",
+ "admin.registries.bitstream-formats.edit.success.content": "Bitstream biçimi başarıyla düzenlendi.",
+
+ // "admin.registries.bitstream-formats.edit.success.head": "Success",
+ "admin.registries.bitstream-formats.edit.success.head": "Başarılı",
+
+ // "admin.registries.bitstream-formats.edit.supportLevel.hint": "The level of support your institution pledges for this format.",
+ "admin.registries.bitstream-formats.edit.supportLevel.hint": "Kurumunuzun bu biçim için taahhüt ettiği destek düzeyi.",
+
+ // "admin.registries.bitstream-formats.edit.supportLevel.label": "Support level",
+ "admin.registries.bitstream-formats.edit.supportLevel.label": "Destek seviyesi",
+
+ // "admin.registries.bitstream-formats.head": "Bitstream Format Registry",
+ "admin.registries.bitstream-formats.head": "Bitstream Biçimi Kayıt Defteri",
+
+ // "admin.registries.bitstream-formats.no-items": "No bitstream formats to show.",
+ "admin.registries.bitstream-formats.no-items": "Gösterilecek bitstream biçimi yok.",
+
+ // "admin.registries.bitstream-formats.table.delete": "Delete selected",
+ "admin.registries.bitstream-formats.table.delete": "Silme seçildi",
+
+ // "admin.registries.bitstream-formats.table.deselect-all": "Deselect all",
+ "admin.registries.bitstream-formats.table.deselect-all": "Tüm seçimleri kaldır",
+
+ // "admin.registries.bitstream-formats.table.internal": "internal",
+ "admin.registries.bitstream-formats.table.internal": "dahili",
+
+ // "admin.registries.bitstream-formats.table.mimetype": "MIME Type",
+ "admin.registries.bitstream-formats.table.mimetype": "MIME Biçimi",
+
+ // "admin.registries.bitstream-formats.table.name": "Name",
+ "admin.registries.bitstream-formats.table.name": "İsim",
+
+ // "admin.registries.bitstream-formats.table.return": "Return",
+ "admin.registries.bitstream-formats.table.return": "Geri Dön",
+
+ // "admin.registries.bitstream-formats.table.supportLevel.KNOWN": "Known",
+ "admin.registries.bitstream-formats.table.supportLevel.KNOWN": "Biliniyor",
+
+ // "admin.registries.bitstream-formats.table.supportLevel.SUPPORTED": "Supported",
+ "admin.registries.bitstream-formats.table.supportLevel.SUPPORTED": "Destekleniyor",
+
+ // "admin.registries.bitstream-formats.table.supportLevel.UNKNOWN": "Unknown",
+ "admin.registries.bitstream-formats.table.supportLevel.UNKNOWN": "Bilinmiyor",
+
+ // "admin.registries.bitstream-formats.table.supportLevel.head": "Support Level",
+ "admin.registries.bitstream-formats.table.supportLevel.head": "Destek Seviyesi",
+
+ // "admin.registries.bitstream-formats.title": "DSpace Angular :: Bitstream Format Registry",
+ "admin.registries.bitstream-formats.title": "DSpace Angular :: Bitstream Biçimi Kayıt Defteri ",
+
+
+
+ // "admin.registries.metadata.breadcrumbs": "Metadata registry",
+ "admin.registries.metadata.breadcrumbs": "Metaveri kayıt defteri",
+
+ // "admin.registries.metadata.description": "The metadata registry maintains a list of all metadata fields available in the repository. These fields may be divided amongst multiple schemas. However, DSpace requires the qualified Dublin Core schema.",
+ "admin.registries.metadata.description": "Metaveri kayıt defteri, veri havuzda bulunan tüm metaveri alanlarının bir listesini tutar. Bu alanlar birden çok şema arasında bölünebilir. Ancak, DSpace nitelikli Dublin Core şemasını gerektirir.",
+
+ // "admin.registries.metadata.form.create": "Create metadata schema",
+ "admin.registries.metadata.form.create": "Metaveri şeması oluştur",
+
+ // "admin.registries.metadata.form.edit": "Edit metadata schema",
+ "admin.registries.metadata.form.edit": "Metaveri şemasını düzenle",
+
+ // "admin.registries.metadata.form.name": "Name",
+ "admin.registries.metadata.form.name": "İsim",
+
+ // "admin.registries.metadata.form.namespace": "Namespace",
+ "admin.registries.metadata.form.namespace": "Ad Alanı",
+
+ // "admin.registries.metadata.head": "Metadata Registry",
+ "admin.registries.metadata.head": "Metaveri Kayıt Defteri",
+
+ // "admin.registries.metadata.schemas.no-items": "No metadata schemas to show.",
+ "admin.registries.metadata.schemas.no-items": "Gösterilecek metaveri alanı yok.",
+
+ // "admin.registries.metadata.schemas.table.delete": "Delete selected",
+ "admin.registries.metadata.schemas.table.delete": "Silme Seçildi",
+
+ // "admin.registries.metadata.schemas.table.id": "ID",
+ "admin.registries.metadata.schemas.table.id": "Kimlik",
+
+ // "admin.registries.metadata.schemas.table.name": "Name",
+ "admin.registries.metadata.schemas.table.name": "İsim",
+
+ // "admin.registries.metadata.schemas.table.namespace": "Namespace",
+ "admin.registries.metadata.schemas.table.namespace": "Ad Alanı",
+
+ // "admin.registries.metadata.title": "DSpace Angular :: Metadata Registry",
+ "admin.registries.metadata.title": "DSpace Angular :: Metaveri Kayıt Defteri",
+
+
+
+ // "admin.registries.schema.breadcrumbs": "Metadata schema",
+ "admin.registries.schema.breadcrumbs": "Metaveri şeması",
+
+ // "admin.registries.schema.description": "This is the metadata schema for \"{{namespace}}\".",
+ "admin.registries.schema.description": "Bu, \"{{namesapce}}\" için metadata şemasıdır.",
+
+ // "admin.registries.schema.fields.head": "Schema metadata fields",
+ "admin.registries.schema.fields.head": "Şema metaveri alanları",
+
+ // "admin.registries.schema.fields.no-items": "No metadata fields to show.",
+ "admin.registries.schema.fields.no-items": "Gösterilecek metaveri alanı yok.",
+
+ // "admin.registries.schema.fields.table.delete": "Delete selected",
+ "admin.registries.schema.fields.table.delete": "Silme Seçildi",
+
+ // "admin.registries.schema.fields.table.field": "Field",
+ "admin.registries.schema.fields.table.field": "Alan",
+
+ // "admin.registries.schema.fields.table.scopenote": "Scope Note",
+ "admin.registries.schema.fields.table.scopenote": "Kapsam Notu",
+
+ // "admin.registries.schema.form.create": "Create metadata field",
+ "admin.registries.schema.form.create": "Metaveri alanı oluştur",
+
+ // "admin.registries.schema.form.edit": "Edit metadata field",
+ "admin.registries.schema.form.edit": "Metaveri alanını düzenle",
+
+ // "admin.registries.schema.form.element": "Element",
+ "admin.registries.schema.form.element": "Element",
+
+ // "admin.registries.schema.form.qualifier": "Qualifier",
+ "admin.registries.schema.form.qualifier": "Niteleyici",
+
+ // "admin.registries.schema.form.scopenote": "Scope Note",
+ "admin.registries.schema.form.scopenote": "Kapsam Notu",
+
+ // "admin.registries.schema.head": "Metadata Schema",
+ "admin.registries.schema.head": "Metaveri Şeması",
+
+ // "admin.registries.schema.notification.created": "Successfully created metadata schema \"{{prefix}}\"",
+ "admin.registries.schema.notification.created": "Metaveri şeması \"{{prefix}}\" başarıyla oluşturuldu",
+
+ // "admin.registries.schema.notification.deleted.failure": "Failed to delete {{amount}} metadata schemas",
+ "admin.registries.schema.notification.deleted.failure": "{{amount}} metaveri şeması silinemedi",
+
+ // "admin.registries.schema.notification.deleted.success": "Successfully deleted {{amount}} metadata schemas",
+ "admin.registries.schema.notification.deleted.success": "{{amount}} metaveri şeması başarıyla silindi",
+
+ // "admin.registries.schema.notification.edited": "Successfully edited metadata schema \"{{prefix}}\"",
+ "admin.registries.schema.notification.edited": "Metaveri şeması \"{{prefix}}\" başarıyla düzenlendi",
+
+ // "admin.registries.schema.notification.failure": "Error",
+ "admin.registries.schema.notification.failure": "Hata",
+
+ // "admin.registries.schema.notification.field.created": "Successfully created metadata field \"{{field}}\"",
+ "admin.registries.schema.notification.field.created": "\"{{field}}\" metaveri alanı başarıyla oluşturuldu",
+
+ // "admin.registries.schema.notification.field.deleted.failure": "Failed to delete {{amount}} metadata fields",
+ "admin.registries.schema.notification.field.deleted.failure": "{{amount}} metaveri alanı silinemedi",
+
+ // "admin.registries.schema.notification.field.deleted.success": "Successfully deleted {{amount}} metadata fields",
+ "admin.registries.schema.notification.field.deleted.success": "{{amount}} metaveri alanı başarıyla silindi",
+
+ // "admin.registries.schema.notification.field.edited": "Successfully edited metadata field \"{{field}}\"",
+ "admin.registries.schema.notification.field.edited": "Metaveri alanı \"{{field}}\" başarıyla düzenlendi",
+
+ // "admin.registries.schema.notification.success": "Success",
+ "admin.registries.schema.notification.success": "Başarılı",
+
+ // "admin.registries.schema.return": "Return",
+ "admin.registries.schema.return": "Geri Dön",
+
+ // "admin.registries.schema.title": "DSpace Angular :: Metadata Schema Registry",
+ "admin.registries.schema.title": "DSpace Angular :: Metaveri Şeması Kayıt Defteri",
+
+
+
+ // "admin.access-control.epeople.actions.delete": "Delete EPerson",
+ "admin.access-control.epeople.actions.delete": "E-Kişiyi Sil",
+
+ // "admin.access-control.epeople.actions.impersonate": "Impersonate EPerson",
+ "admin.access-control.epeople.actions.impersonate": "E-Kişinin Kimliğine Bürün",
+
+ // "admin.access-control.epeople.actions.reset": "Reset password",
+ "admin.access-control.epeople.actions.reset": "Parolayı sıfırla",
+
+ // "admin.access-control.epeople.actions.stop-impersonating": "Stop impersonating EPerson",
+ "admin.access-control.epeople.actions.stop-impersonating": "E-Kişilerin kimliğine bürünmeyi durdurun",
+
+ // "admin.access-control.epeople.title": "DSpace Angular :: EPeople",
+ "admin.access-control.epeople.title": "DSpace Angular :: E-kişiler",
+
+ // "admin.access-control.epeople.head": "EPeople",
+ "admin.access-control.epeople.head": "E-Kişiler",
+
+ // "admin.access-control.epeople.search.head": "Search",
+ "admin.access-control.epeople.search.head": "Ara",
+
+ // "admin.access-control.epeople.button.see-all": "Tümüne Gözat",
+ "admin.access-control.epeople.button.see-all": "Browse All",
+
+ // "admin.access-control.epeople.search.scope.metadata": "Metadata",
+ "admin.access-control.epeople.search.scope.metadata": "Metaveri",
+
+ // "admin.access-control.epeople.search.scope.email": "E-mail (exact)",
+ "admin.access-control.epeople.search.scope.email": "E-posta (tam)",
+
+ // "admin.access-control.epeople.search.button": "Search",
+ "admin.access-control.epeople.search.button": "Ara",
+
+ // "admin.access-control.epeople.button.add": "Add EPerson",
+ "admin.access-control.epeople.button.add": "E-Kişi Ekle",
+
+ // "admin.access-control.epeople.table.id": "ID",
+ "admin.access-control.epeople.table.id": "Kimlik",
+
+ // "admin.access-control.epeople.table.name": "Name",
+ "admin.access-control.epeople.table.name": "İsim",
+
+ // "admin.access-control.epeople.table.email": "E-mail (exact)",
+ "admin.access-control.epeople.table.email": "E-posta (tam)",
+
+ // "admin.access-control.epeople.table.edit": "Edit",
+ "admin.access-control.epeople.table.edit": "Düzenle",
+
+ // "admin.access-control.epeople.table.edit.buttons.edit": "Edit \"{{name}}\"",
+ "admin.access-control.epeople.table.edit.buttons.edit": "Düzenle \"{{name}}\"",
+
+ // "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
+ "admin.access-control.epeople.table.edit.buttons.remove": "Sil \"{{name}}\"",
+
+ // "admin.access-control.epeople.no-items": "No EPeople to show.",
+ "admin.access-control.epeople.no-items": "Gösterilecek E-Kişiler yok.",
+
+ // "admin.access-control.epeople.form.create": "Create EPerson",
+ "admin.access-control.epeople.form.create": "E-Kişi Oluştur",
+
+ // "admin.access-control.epeople.form.edit": "Edit EPerson",
+ "admin.access-control.epeople.form.edit": "E-Kişiyi Düzenle",
+
+ // "admin.access-control.epeople.form.firstName": "First name",
+ "admin.access-control.epeople.form.firstName": "İsim",
+
+ // "admin.access-control.epeople.form.lastName": "Last name",
+ "admin.access-control.epeople.form.lastName": "Soyadı",
+
+ // "admin.access-control.epeople.form.email": "E-mail",
+ "admin.access-control.epeople.form.email": "E-posta",
+
+ // "admin.access-control.epeople.form.emailHint": "Must be valid e-mail address",
+ "admin.access-control.epeople.form.emailHint": "Geçerli bir e-posta adresi olmalı",
+
+ // "admin.access-control.epeople.form.canLogIn": "Can log in",
+ "admin.access-control.epeople.form.canLogIn": "Giriş yapabilir",
+
+ // "admin.access-control.epeople.form.requireCertificate": "Requires certificate",
+ "admin.access-control.epeople.form.requireCertificate": "Sertifika gerektirir",
+
+ // "admin.access-control.epeople.form.notification.created.success": "Successfully created EPerson \"{{name}}\"",
+ "admin.access-control.epeople.form.notification.created.success": "E-Kişi \"{{name}}\" başarıyla oluşturuldu",
+
+ // "admin.access-control.epeople.form.notification.created.failure": "Failed to create EPerson \"{{name}}\"",
+ "admin.access-control.epeople.form.notification.created.failure": "E-Kişi \"{{name}}\" oluşturulamadı",
+
+ // "admin.access-control.epeople.form.notification.created.failure.emailInUse": "Failed to create EPerson \"{{name}}\", email \"{{email}}\" already in use.",
+ "admin.access-control.epeople.form.notification.created.failure.emailInUse": "E-Kişi \"{{name}}\" oluşturulamadı, e-posta \"{{email}}\" zaten kullanımda.",
+
+ // "admin.access-control.epeople.form.notification.edited.failure.emailInUse": "Failed to edit EPerson \"{{name}}\", email \"{{email}}\" already in use.",
+ "admin.access-control.epeople.form.notification.edited.failure.emailInUse": "E-Kişi \"{{name}}\" düzenlenemedi, e-posta \"{{email}}\" zaten kullanımda.",
+
+ // "admin.access-control.epeople.form.notification.edited.success": "Successfully edited EPerson \"{{name}}\"",
+ "admin.access-control.epeople.form.notification.edited.success": "E-kişi \"{{name}}\" başarıyla düzenlendi",
+
+ // "admin.access-control.epeople.form.notification.edited.failure": "Failed to edit EPerson \"{{name}}\"",
+ "admin.access-control.epeople.form.notification.edited.failure": "E-Kişi \"{{name}}\" düzenlenemedi",
+
+ // "admin.access-control.epeople.form.notification.deleted.success": "Successfully deleted EPerson \"{{name}}\"",
+ "admin.access-control.epeople.form.notification.deleted.success": "E-Kişi \"{{name}}\" başarıyla silindi",
+
+ // "admin.access-control.epeople.form.notification.deleted.failure": "Failed to delete EPerson \"{{name}}\"",
+ "admin.access-control.epeople.form.notification.deleted.failure": "E-Kişi \"{{name}}\" silinemedi",
+
+ // "admin.access-control.epeople.form.groupsEPersonIsMemberOf": "Member of these groups:",
+ "admin.access-control.epeople.form.groupsEPersonIsMemberOf": "Bu grupların üyesi:",
+
+ // "admin.access-control.epeople.form.table.id": "ID",
+ "admin.access-control.epeople.form.table.id": "Kimlik",
+
+ // "admin.access-control.epeople.form.table.name": "Name",
+ "admin.access-control.epeople.form.table.name": "İsim",
+
+ // "admin.access-control.epeople.form.memberOfNoGroups": "This EPerson is not a member of any groups",
+ "admin.access-control.epeople.form.memberOfNoGroups": "Bu E-Kişi herhangi bir grubun üyesi değil",
+
+ // "admin.access-control.epeople.form.goToGroups": "Add to groups",
+ "admin.access-control.epeople.form.goToGroups": "Gruplar ekle",
+
+ // "admin.access-control.epeople.notification.deleted.failure": "Failed to delete EPerson: \"{{name}}\"",
+ "admin.access-control.epeople.notification.deleted.failure": "E-Kişi silinemedi: \"{{name}}\"",
+
+ // "admin.access-control.epeople.notification.deleted.success": "Successfully deleted EPerson: \"{{name}}\"",
+ "admin.access-control.epeople.notification.deleted.success": "E-Kişiler başarıyla silindi: \"{{name}}\"",
+
+
+
+ // "admin.access-control.groups.title": "DSpace Angular :: Groups",
+ "admin.access-control.groups.title": "DSpace Angular :: Gruplar",
+
+ // "admin.access-control.groups.title.singleGroup": "DSpace Angular :: Edit Group",
+ "admin.access-control.groups.title.singleGroup": "DSpace Angular :: Grubu Düzenle",
+
+ // "admin.access-control.groups.title.addGroup": "DSpace Angular :: New Group",
+ "admin.access-control.groups.title.addGroup": "DSpace Angular :: Yeni Grup",
+
+ // "admin.access-control.groups.head": "Groups",
+ "admin.access-control.groups.head": "Gruplar",
+
+ // "admin.access-control.groups.button.add": "Add group",
+ "admin.access-control.groups.button.add": "Grup ekle",
+
+ // "admin.access-control.groups.search.head": "Search groups",
+ "admin.access-control.groups.search.head": "Grupları ara",
+
+ // "admin.access-control.groups.button.see-all": "Browse all",
+ "admin.access-control.groups.button.see-all": "Tümüne göz at",
+
+ // "admin.access-control.groups.search.button": "Search",
+ "admin.access-control.groups.search.button": "Ara",
+
+ // "admin.access-control.groups.table.id": "ID",
+ "admin.access-control.groups.table.id": "Kimlik",
+
+ // "admin.access-control.groups.table.name": "Name",
+ "admin.access-control.groups.table.name": "İsim",
+
+ // "admin.access-control.groups.table.members": "Members",
+ "admin.access-control.groups.table.members": "Üyeler",
+
+ // "admin.access-control.groups.table.edit": "Edit",
+ "admin.access-control.groups.table.edit": "Düzenle",
+
+ // "admin.access-control.groups.table.edit.buttons.edit": "Edit \"{{name}}\"",
+ "admin.access-control.groups.table.edit.buttons.edit": "Düzenle \"{{name}}\"",
+
+ // "admin.access-control.groups.table.edit.buttons.remove": "Delete \"{{name}}\"",
+ "admin.access-control.groups.table.edit.buttons.remove": "Sil \"{{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": "Bu adla veya bu UUID olarak hiçbir grup bulunamadı",
+
+ // "admin.access-control.groups.notification.deleted.success": "Successfully deleted group \"{{name}}\"",
+ "admin.access-control.groups.notification.deleted.success": "\"{{name}}\" grubu başarıyla silindi",
+
+ // "admin.access-control.groups.notification.deleted.failure.title": "Failed to delete group \"{{name}}\"",
+ "admin.access-control.groups.notification.deleted.failure.title": "\"{{name}}\" grubu silinemedi",
+
+ // "admin.access-control.groups.notification.deleted.failure.content": "Cause: \"{{cause}}\"",
+ "admin.access-control.groups.notification.deleted.failure.content": "Sorun: \"{{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": "Bu grup kalıcıdır, bu nedenle düzenlenemez veya silinemez. Yine de bu sayfayı kullanarak grup üyeleri ekleyip kaldırabilirsiniz.",
+
+ // "admin.access-control.groups.form.alert.workflowGroup": "This group can’t be modified or deleted because it corresponds to a role in the submission and workflow process in the \"{{name}}\" {{comcol}}. You can delete it from the \"assign roles\" tab on the edit {{comcol}} page. You can still add and remove group members using this page.",
+ "admin.access-control.groups.form.alert.workflowGroup": "Bu grup, \"{{name}}\" {{comcol}} içindeki gönderim ve iş akışı sürecindeki bir role karşılık geldiği için değiştirilemez veya silinemez. Bunu, {{comcol}} düzenleme sayfasındaki \"rol ata\" sekmesinden silebilirsiniz. Yine de bu sayfayı kullanarak grup üyeleri ekleyip kaldırabilirsiniz.",
+
+ // "admin.access-control.groups.form.head.create": "Create group",
+ "admin.access-control.groups.form.head.create": "Grup oluştur",
+
+ // "admin.access-control.groups.form.head.edit": "Edit group",
+ "admin.access-control.groups.form.head.edit": "Grubu düzenle",
+
+ // "admin.access-control.groups.form.groupName": "Group name",
+ "admin.access-control.groups.form.groupName": "Grup adı",
+
+ // "admin.access-control.groups.form.groupDescription": "Description",
+ "admin.access-control.groups.form.groupDescription": "Açıklama",
+
+ // "admin.access-control.groups.form.notification.created.success": "Successfully created Group \"{{name}}\"",
+ "admin.access-control.groups.form.notification.created.success": "Grup \"{{name}}\" başarıyla oluşturuldu",
+
+ // "admin.access-control.groups.form.notification.created.failure": "Failed to create Group \"{{name}}\"",
+ "admin.access-control.groups.form.notification.created.failure": "\"{{name}}\" Grubu oluşturulamadı",
+
+ // "admin.access-control.groups.form.notification.created.failure.groupNameInUse": "Failed to create Group with name: \"{{name}}\", make sure the name is not already in use.",
+ "admin.access-control.groups.form.notification.created.failure.groupNameInUse": "Şu ada sahip Grup oluşturulamadı: \"{{name}}\", adın halihazırda kullanımda olmadığından emin olun.",
+
+ // "admin.access-control.groups.form.notification.edited.failure": "Failed to edit Group \"{{name}}\"",
+ "admin.access-control.groups.form.notification.edited.failure": "\"{{name}}\" Grubu düzenlenemedi",
+
+ // "admin.access-control.groups.form.notification.edited.failure.groupNameInUse": "Name \"{{name}}\" already in use!",
+ "admin.access-control.groups.form.notification.edited.failure.groupNameInUse": "\"{{name}}\" adı zaten kullanılıyor!",
+
+ // "admin.access-control.groups.form.notification.edited.success": "Successfully edited Group \"{{name}}\"",
+ "admin.access-control.groups.form.notification.edited.success": "\"{{name}}\" Grubu başarıyla düzenlendi",
+
+ // "admin.access-control.groups.form.actions.delete": "Delete Group",
+ "admin.access-control.groups.form.actions.delete": "Grubu Sil",
+
+ // "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
+ "admin.access-control.groups.form.delete-group.modal.header": "\"{{ dsoName }}\" Grubunu Sil",
+
+ // "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\"",
+ "admin.access-control.groups.form.delete-group.modal.info": "\"{{ dsoName }}\" Grubunu silmek istediğinizden emin misiniz?",
+
+ // "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
+ "admin.access-control.groups.form.delete-group.modal.cancel": "İptal",
+
+ // "admin.access-control.groups.form.delete-group.modal.confirm": "Delete",
+ "admin.access-control.groups.form.delete-group.modal.confirm": "Sil",
+
+ // "admin.access-control.groups.form.notification.deleted.success": "Successfully deleted group \"{{ name }}\"",
+ "admin.access-control.groups.form.notification.deleted.success": "\"{{ name }}\" grubu başarıyla silindi",
+
+ // "admin.access-control.groups.form.notification.deleted.failure.title": "Failed to delete group \"{{ name }}\"",
+ "admin.access-control.groups.form.notification.deleted.failure.title": "\"{{ name }}\" grubu silinemedi",
+
+ // "admin.access-control.groups.form.notification.deleted.failure.content": "Cause: \"{{ cause }}\"",
+ "admin.access-control.groups.form.notification.deleted.failure.content": "Sorun: \"{{ cause }}\"",
+
+ // "admin.access-control.groups.form.members-list.head": "EPeople",
+ "admin.access-control.groups.form.members-list.head": "E-Kişiler",
+
+ // "admin.access-control.groups.form.members-list.search.head": "Add EPeople",
+ "admin.access-control.groups.form.members-list.search.head": "E-Kişiler Ekle",
+
+ // "admin.access-control.groups.form.members-list.button.see-all": "Browse All",
+ "admin.access-control.groups.form.members-list.button.see-all": "Tümüne Gözat",
+
+ // "admin.access-control.groups.form.members-list.headMembers": "Current Members",
+ "admin.access-control.groups.form.members-list.headMembers": "Mevcut Üyeler",
+
+ // "admin.access-control.groups.form.members-list.search.scope.metadata": "Metadata",
+ "admin.access-control.groups.form.members-list.search.scope.metadata": "Metaveri",
+
+ // "admin.access-control.groups.form.members-list.search.scope.email": "E-mail (exact)",
+ "admin.access-control.groups.form.members-list.search.scope.email": "E-posta (tam)",
+
+ // "admin.access-control.groups.form.members-list.search.button": "Search",
+ "admin.access-control.groups.form.members-list.search.button": "Ara",
+
+ // "admin.access-control.groups.form.members-list.table.id": "ID",
+ "admin.access-control.groups.form.members-list.table.id": "Kimlik",
+
+ // "admin.access-control.groups.form.members-list.table.name": "Name",
+ "admin.access-control.groups.form.members-list.table.name": "İsim",
+
+ // "admin.access-control.groups.form.members-list.table.edit": "Remove / Add",
+ "admin.access-control.groups.form.members-list.table.edit": "Kaldır / Ekle",
+
+ // "admin.access-control.groups.form.members-list.table.edit.buttons.remove": "Remove member with name \"{{name}}\"",
+ "admin.access-control.groups.form.members-list.table.edit.buttons.remove": "\"{{name}}\" adlı üyeyi kaldırın",
+
+ // "admin.access-control.groups.form.members-list.notification.success.addMember": "Successfully added member: \"{{name}}\"",
+ "admin.access-control.groups.form.members-list.notification.success.addMember": "Üye başarıyla eklendi: \"{{name}}\"",
+
+ // "admin.access-control.groups.form.members-list.notification.failure.addMember": "Failed to add member: \"{{name}}\"",
+ "admin.access-control.groups.form.members-list.notification.failure.addMember": "Üye eklenemedi: \"{{name}}\"",
+
+ // "admin.access-control.groups.form.members-list.notification.success.deleteMember": "Successfully deleted member: \"{{name}}\"",
+ "admin.access-control.groups.form.members-list.notification.success.deleteMember": "Üye başarıyla silindi: \"{{name}}\"",
+
+ // "admin.access-control.groups.form.members-list.notification.failure.deleteMember": "Failed to delete member: \"{{name}}\"",
+ "admin.access-control.groups.form.members-list.notification.failure.deleteMember": "Üye silinemedi: \"{{name}}\"",
+
+ // "admin.access-control.groups.form.members-list.table.edit.buttons.add": "Add member with name \"{{name}}\"",
+ "admin.access-control.groups.form.members-list.table.edit.buttons.add": "\"{{name}}\" adlı üye ekleyin",
+
+ // "admin.access-control.groups.form.members-list.notification.failure.noActiveGroup": "No current active group, submit a name first.",
+ "admin.access-control.groups.form.members-list.notification.failure.noActiveGroup": "Mevcut aktif grup yok, önce bir isim gönderin.",
+
+ // "admin.access-control.groups.form.members-list.no-members-yet": "No members in group yet, search and add.",
+ "admin.access-control.groups.form.members-list.no-members-yet": "Henüz grupta üye yok, arayın ve ekleyin.",
+
+ // "admin.access-control.groups.form.members-list.no-items": "No EPeople found in that search",
+ "admin.access-control.groups.form.members-list.no-items": "Bu aramada E-Kişiler bulunamadı",
+
+ // "admin.access-control.groups.form.subgroups-list.notification.failure": "Something went wrong: \"{{cause}}\"",
+ "admin.access-control.groups.form.subgroups-list.notification.failure": "Bir şeyler yanlış gitti: \"{{cause}}\"",
+
+ // "admin.access-control.groups.form.subgroups-list.head": "Groups",
+ "admin.access-control.groups.form.subgroups-list.head": "Gruplar",
+
+ // "admin.access-control.groups.form.subgroups-list.search.head": "Add Subgroup",
+ "admin.access-control.groups.form.subgroups-list.search.head": "Alt Grup Ekle",
+
+ // "admin.access-control.groups.form.subgroups-list.button.see-all": "Browse All",
+ "admin.access-control.groups.form.subgroups-list.button.see-all": "Tümüne Gözat",
+
+ // "admin.access-control.groups.form.subgroups-list.headSubgroups": "Current Subgroups",
+ "admin.access-control.groups.form.subgroups-list.headSubgroups": "Mevcut Alt Gruplar",
+
+ // "admin.access-control.groups.form.subgroups-list.search.button": "Search",
+ "admin.access-control.groups.form.subgroups-list.search.button": "Ara",
+
+ // "admin.access-control.groups.form.subgroups-list.table.id": "ID",
+ "admin.access-control.groups.form.subgroups-list.table.id": "Kimlik",
+
+ // "admin.access-control.groups.form.subgroups-list.table.name": "Name",
+ "admin.access-control.groups.form.subgroups-list.table.name": "İsim",
+
+ // "admin.access-control.groups.form.subgroups-list.table.edit": "Remove / Add",
+ "admin.access-control.groups.form.subgroups-list.table.edit": "Kaldır / Ekle",
+
+ // "admin.access-control.groups.form.subgroups-list.table.edit.buttons.remove": "Remove subgroup with name \"{{name}}\"",
+ "admin.access-control.groups.form.subgroups-list.table.edit.buttons.remove": "\"{{name}}\" adlı alt grubu kaldırın",
+
+ // "admin.access-control.groups.form.subgroups-list.table.edit.buttons.add": "Add subgroup with name \"{{name}}\"",
+ "admin.access-control.groups.form.subgroups-list.table.edit.buttons.add": "\"{{name}}\" adlı alt grup ekleyin",
+
+ // "admin.access-control.groups.form.subgroups-list.table.edit.currentGroup": "Current group",
+ "admin.access-control.groups.form.subgroups-list.table.edit.currentGroup": "Mevcut grup",
+
+ // "admin.access-control.groups.form.subgroups-list.notification.success.addSubgroup": "Successfully added subgroup: \"{{name}}\"",
+ "admin.access-control.groups.form.subgroups-list.notification.success.addSubgroup": "Alt grup başarıyla eklendi: \"{{name}}\"",
+
+ // "admin.access-control.groups.form.subgroups-list.notification.failure.addSubgroup": "Failed to add subgroup: \"{{name}}\"",
+ "admin.access-control.groups.form.subgroups-list.notification.failure.addSubgroup": "Alt grup eklenemedi: \"{{name}}\"",
+
+ // "admin.access-control.groups.form.subgroups-list.notification.success.deleteSubgroup": "Successfully deleted subgroup: \"{{name}}\"",
+ "admin.access-control.groups.form.subgroups-list.notification.success.deleteSubgroup": "Alt grup başarıyla silindi: \"{{name}}\"",
+
+ // "admin.access-control.groups.form.subgroups-list.notification.failure.deleteSubgroup": "Failed to delete subgroup: \"{{name}}\"",
+ "admin.access-control.groups.form.subgroups-list.notification.failure.deleteSubgroup": "Alt grup silinemedi: \"{{name}}\"",
+
+ // "admin.access-control.groups.form.subgroups-list.notification.failure.noActiveGroup": "No current active group, submit a name first.",
+ "admin.access-control.groups.form.subgroups-list.notification.failure.noActiveGroup": "Aktif grup mevcut değil, önce bir isim gönderin.",
+
+ // "admin.access-control.groups.form.subgroups-list.notification.failure.subgroupToAddIsActiveGroup": "This is the current group, can't be added.",
+ "admin.access-control.groups.form.subgroups-list.notification.failure.subgroupToAddIsActiveGroup": "Bu grup mevcut, eklenemez.",
+
+ // "admin.access-control.groups.form.subgroups-list.no-items": "No groups found with this in their name or this as UUID",
+ "admin.access-control.groups.form.subgroups-list.no-items": "Bu adla veya bu UUID olarak hiçbir grup bulunamadı",
+
+ // "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": "Henüz grupta alt grup yok.",
+
+ // "admin.access-control.groups.form.return": "Return to groups",
+ "admin.access-control.groups.form.return": "Gruplara dön",
+
+
+
+ // "admin.search.breadcrumbs": "Administrative Search",
+ "admin.search.breadcrumbs": "Yönetimsel Arama",
+
+ // "admin.search.collection.edit": "Edit",
+ "admin.search.collection.edit": "Düzenle",
+
+ // "admin.search.community.edit": "Edit",
+ "admin.search.community.edit": "Düzenle",
+
+ // "admin.search.item.delete": "Delete",
+ "admin.search.item.delete": "Sil",
+
+ // "admin.search.item.edit": "Edit",
+ "admin.search.item.edit": "Düzenle",
+
+ // "admin.search.item.make-private": "Make Private",
+ "admin.search.item.make-private": "Özel yap",
+
+ // "admin.search.item.make-public": "Make Public",
+ "admin.search.item.make-public": "Ortak yap",
+
+ // "admin.search.item.move": "Move",
+ "admin.search.item.move": "Taşı",
+
+ // "admin.search.item.reinstate": "Reinstate",
+ "admin.search.item.reinstate": "Eski durumuna getir",
+
+ // "admin.search.item.withdraw": "Withdraw",
+ "admin.search.item.withdraw": "Çekil",
+
+ // "admin.search.title": "Administrative Search",
+ "admin.search.title": "Yönetimsel Arama",
+
+ // "administrativeView.search.results.head": "Administrative Search",
+ "administrativeView.search.results.head": "Yönetimsel Arama",
+
+
+
+
+ // "admin.workflow.breadcrumbs": "Administer Workflow",
+ "admin.workflow.breadcrumbs": "İş Akışını Yönet",
+
+ // "admin.workflow.title": "Administer Workflow",
+ "admin.workflow.title": "İş Akışını Yönet",
+
+ // "admin.workflow.item.workflow": "Workflow",
+ "admin.workflow.item.workflow": "İş akışı",
+
+ // "admin.workflow.item.delete": "Delete",
+ "admin.workflow.item.delete": "Sil",
+
+ // "admin.workflow.item.send-back": "Send back",
+ "admin.workflow.item.send-back": "Geri gönder",
+
+
+
+ // "admin.metadata-import.breadcrumbs": "Import Metadata",
+ "admin.metadata-import.breadcrumbs": "Metaverileri İçe Aktar",
+
+ // "admin.metadata-import.title": "Import Metadata",
+ "admin.metadata-import.title": "Metaverileri İçe Aktar",
+
+ // "admin.metadata-import.page.header": "Import Metadata",
+ "admin.metadata-import.page.header": "Metaverileri İçe Aktar",
+
+ // "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": "Dosyalarda toplu metadata işlemleri içeren CSV dosyalarını buraya bırakabilir veya bunlara göz atabilirsiniz.",
+
+ // "admin.metadata-import.page.dropMsg": "Drop a metadata CSV to import",
+ "admin.metadata-import.page.dropMsg": "İçe aktarmak için bir metaveri CSV'si bırakın",
+
+ // "admin.metadata-import.page.dropMsgReplace": "Drop to replace the metadata CSV to import",
+ "admin.metadata-import.page.dropMsgReplace": "İçe aktarılacak CSV metaverilerini değiştirmek için bırakın",
+
+ // "admin.metadata-import.page.button.return": "Return",
+ "admin.metadata-import.page.button.return": "Geri Dön",
+
+ // "admin.metadata-import.page.button.proceed": "Proceed",
+ "admin.metadata-import.page.button.proceed": "Devam Et",
+
+ // "admin.metadata-import.page.error.addFile": "Select file first!",
+ "admin.metadata-import.page.error.addFile": "Önce dosyayı seçin!",
+
+
+
+
+ // "auth.errors.invalid-user": "Invalid email address or password.",
+ "auth.errors.invalid-user": "Geçersiz e-posta adresi veya parola.",
+
+ // "auth.messages.expired": "Your session has expired. Please log in again.",
+ "auth.messages.expired": "Oturumunuz sona erdi. Lütfen tekrar giriş yapın.",
+
+
+
+ // "bitstream.edit.bitstream": "Bitstream: ",
+ "bitstream.edit.bitstream": "Bitstream: ",
+
+ // "bitstream.edit.form.description.hint": "Optionally, provide a brief description of the file, for example \"Main article \" or \"Experiment data readings \".",
+ "bitstream.edit.form.description.hint": "İsteğe bağlı olarak, dosyanın kısa bir açıklamasını sağlayın, örneğin \"Ana makale \" veya \"Deneme veri okumaları \".",
+
+ // "bitstream.edit.form.description.label": "Description",
+ "bitstream.edit.form.description.label": "Açıklama",
+
+ // "bitstream.edit.form.embargo.hint": "The first day from which access is allowed. This date cannot be modified on this form. To set an embargo date for a bitstream, go to the Item Status tab, click Authorizations... , create or edit the bitstream's READ policy, and set the Start Date as desired.",
+ "bitstream.edit.form.embargo.hint": "Erişime izin verilen ilk gün. Bu tarih bu formda değiştirilemez. Bir bitstream için bir ambargo tarihi ayarlamak için Öğe Durumu sekmesine gidin, Yetkiler... 'i tıklayın., bitstreamnın OKU politikasını oluşturun veya düzenleyin ve Başlangıç Tarihi 'ni istediğiniz gibi ayarlayın.",
+
+ // "bitstream.edit.form.embargo.label": "Embargo until specific date",
+ "bitstream.edit.form.embargo.label": "Belirli bir tarihe kadar ambargo",
+
+ // "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": "Bitstreamın dosya adını değiştirin. Bunun görünen bitstream URL'sini değiştireceğini, ancak dizi kimliği değişmediği sürece eski bağlantıların çözüleceğini unutmayın.",
+
+ // "bitstream.edit.form.fileName.label": "Filename",
+ "bitstream.edit.form.fileName.label": "Dosya adı",
+
+ // "bitstream.edit.form.newFormat.label": "Describe new format",
+ "bitstream.edit.form.newFormat.label": "Yeni biçimi tanımla",
+
+ // "bitstream.edit.form.newFormat.hint": "The application you used to create the file, and the version number (for example, \"ACMESoft SuperApp version 1.5 \").",
+ "bitstream.edit.form.newFormat.hint": "Dosyayı oluşturmak için kullandığınız uygulama ve sürüm numarası (örneğin, \"ACMESoft SuperApp versiyon 1.5 \").",
+
+ // "bitstream.edit.form.primaryBitstream.label": "Primary bitstream",
+ "bitstream.edit.form.primaryBitstream.label": "Birincil bitstream",
+
+ // "bitstream.edit.form.selectedFormat.hint": "If the format is not in the above list, select \"format not in list\" above and describe it under \"Describe new format\".",
+ "bitstream.edit.form.selectedFormat.hint": "Biçim yukarıdaki listede yoksa, select \"listede olmayan biçim\"i above ve \"Yeni biçimi tanımla\" altında açıklayın.",
+
+ // "bitstream.edit.form.selectedFormat.label": "Selected Format",
+ "bitstream.edit.form.selectedFormat.label": "Seçilen Biçim",
+
+ // "bitstream.edit.form.selectedFormat.unknown": "Format not in list",
+ "bitstream.edit.form.selectedFormat.unknown": "Listede olmayan biçim",
+
+ // "bitstream.edit.notifications.error.format.title": "An error occurred saving the bitstream's format",
+ "bitstream.edit.notifications.error.format.title": "Bitstreamın biçimi kaydedilirken bir hata oluştu",
+
+ // "bitstream.edit.notifications.saved.content": "Your changes to this bitstream were saved.",
+ "bitstream.edit.notifications.saved.content": "Bu bitstreamde yaptığınız değişiklikler kaydedildi.",
+
+ // "bitstream.edit.notifications.saved.title": "Bitstream saved",
+ "bitstream.edit.notifications.saved.title": "Bitstream kaydedildi",
+
+ // "bitstream.edit.title": "Edit bitstream",
+ "bitstream.edit.title": "Bitstreamı düzenle",
+
+
+
+ // "browse.comcol.by.author": "By Author",
+ "browse.comcol.by.author": "Yazara Göre",
+
+ // "browse.comcol.by.dateissued": "By Issue Date",
+ "browse.comcol.by.dateissued": "Yayın Tarihine Göre",
+
+ // "browse.comcol.by.subject": "By Subject",
+ "browse.comcol.by.subject": "Konuya Göre",
+
+ // "browse.comcol.by.title": "By Title",
+ "browse.comcol.by.title": "Başlığa Göre",
+
+ // "browse.comcol.head": "Browse",
+ "browse.comcol.head": "Gözat",
+
+ // "browse.empty": "No items to show.",
+ "browse.empty": "Gösterilecek öğe yok.",
+
+ // "browse.metadata.author": "Author",
+ "browse.metadata.author": "Yazar",
+
+ // "browse.metadata.dateissued": "Issue Date",
+ "browse.metadata.dateissued": "Yayın Tarihi",
+
+ // "browse.metadata.subject": "Subject",
+ "browse.metadata.subject": "Konu",
+
+ // "browse.metadata.title": "Title",
+ "browse.metadata.title": "Başlık",
+
+ // "browse.metadata.author.breadcrumbs": "Browse by Author",
+ "browse.metadata.author.breadcrumbs": "Yazara Göre Gözat",
+
+ // "browse.metadata.dateissued.breadcrumbs": "Browse by Date",
+ "browse.metadata.dateissued.breadcrumbs": "Tarihe Göre Gözat",
+
+ // "browse.metadata.subject.breadcrumbs": "Browse by Subject",
+ "browse.metadata.subject.breadcrumbs": "Konuya Göre Gözat",
+
+ // "browse.metadata.title.breadcrumbs": "Browse by Title",
+ "browse.metadata.title.breadcrumbs": "Başlığa göre göz atın",
+
+ // "browse.startsWith.choose_start": "(Choose start)",
+ "browse.startsWith.choose_start": "(Başlangıç seç)",
+
+ // "browse.startsWith.choose_year": "(Choose year)",
+ "browse.startsWith.choose_year": "(Yıl seç)",
+
+ // "browse.startsWith.jump": "Jump to a point in the index:",
+ "browse.startsWith.jump": "Dizinde bir noktaya atla:",
+
+ // "browse.startsWith.months.april": "April",
+ "browse.startsWith.months.april": "Nisan",
+
+ // "browse.startsWith.months.august": "August",
+ "browse.startsWith.months.august": "Ağustos",
+
+ // "browse.startsWith.months.december": "December",
+ "browse.startsWith.months.december": "Aralık",
+
+ // "browse.startsWith.months.february": "February",
+ "browse.startsWith.months.february": "Şubat",
+
+ // "browse.startsWith.months.january": "January",
+ "browse.startsWith.months.january": "Ocak",
+
+ // "browse.startsWith.months.july": "July",
+ "browse.startsWith.months.july": "Temmuz",
+
+ // "browse.startsWith.months.june": "June",
+ "browse.startsWith.months.june": "Haziran",
+
+ // "browse.startsWith.months.march": "March",
+ "browse.startsWith.months.march": "Mart",
+
+ // "browse.startsWith.months.may": "May",
+ "browse.startsWith.months.may": "Mayıs",
+
+ // "browse.startsWith.months.none": "(Choose month)",
+ "browse.startsWith.months.none": "(Ay seçin)",
+
+ // "browse.startsWith.months.november": "November",
+ "browse.startsWith.months.november": "Kasım",
+
+ // "browse.startsWith.months.october": "October",
+ "browse.startsWith.months.october": "Ekim",
+
+ // "browse.startsWith.months.september": "September",
+ "browse.startsWith.months.september": "Eylül",
+
+ // "browse.startsWith.submit": "Go",
+ "browse.startsWith.submit": "Git",
+
+ // "browse.startsWith.type_date": "Or type in a date (year-month):",
+ "browse.startsWith.type_date": "Veya bir tarih yazın (yıl-ay):",
+
+ // "browse.startsWith.type_text": "Or enter first few letters:",
+ "browse.startsWith.type_text": "Veya ilk birkaç harfi girin:",
+
+ // "browse.title": "Browsing {{ collection }} by {{ field }} {{ value }}",
+ "browse.title": "{{ field }} {{ value }} ile {{ collection }}'a göz atma",
+
+
+ // "chips.remove": "Remove chip",
+ "chips.remove": "Çipi kaldır",
+
+
+
+ // "collection.create.head": "Create a Collection",
+ "collection.create.head": "Koleksiyon Oluştur",
+
+ // "collection.create.notifications.success": "Successfully created the Collection",
+ "collection.create.notifications.success": "Koleksiyon başarıyla oluşturuldu",
+
+ // "collection.create.sub-head": "Create a Collection for Community {{ parent }}",
+ "collection.create.sub-head": "Komünite için Koleksiyon Oluşturun {{ parent }}",
+
+ // "collection.curate.header": "Curate Collection: {{collection}}",
+ "collection.curate.header": "Koleksiyonu Düzenle: {{collection}}",
+
+ // "collection.delete.cancel": "Cancel",
+ "collection.delete.cancel": "İptal",
+
+ // "collection.delete.confirm": "Confirm",
+ "collection.delete.confirm": "Onayla",
+
+ // "collection.delete.head": "Delete Collection",
+ "collection.delete.head": "Koleksiyonu sil",
+
+ // "collection.delete.notification.fail": "Collection could not be deleted",
+ "collection.delete.notification.fail": "Koleksiyon silinemedi",
+
+ // "collection.delete.notification.success": "Successfully deleted collection",
+ "collection.delete.notification.success": "Koleksiyon başarıyla silindi",
+
+ // "collection.delete.text": "Are you sure you want to delete collection \"{{ dso }}\"",
+ "collection.delete.text": "\"{{ dso }}\" koleksiyonunu silmek istediğinizden emin misiniz?",
+
+
+
+ // "collection.edit.delete": "Delete this collection",
+ "collection.edit.delete": "Bu koleksiyonu sil",
+
+ // "collection.edit.head": "Edit Collection",
+ "collection.edit.head": "Koleksiyonu Düzenle",
+
+ // "collection.edit.breadcrumbs": "Edit Collection",
+ "collection.edit.breadcrumbs": "Koleksiyonu Düzenle",
+
+
+
+ // "collection.edit.tabs.mapper.head": "Item Mapper",
+ "collection.edit.tabs.mapper.head": "Öğe eşleştirici",
+
+ // "collection.edit.tabs.item-mapper.title": "Collection Edit - Item Mapper",
+ "collection.edit.tabs.item-mapper.title": "Koleksiyon Düzenleme - Öğe Eşleştirici",
+
+ // "collection.edit.item-mapper.cancel": "Cancel",
+ "collection.edit.item-mapper.cancel": "İptal",
+
+ // "collection.edit.item-mapper.collection": "Collection: \"{{name}} \"",
+ "collection.edit.item-mapper.collection": "Koleksiyon: \"{{name}} \"",
+
+ // "collection.edit.item-mapper.confirm": "Map selected items",
+ "collection.edit.item-mapper.confirm": "Seçilen öğeleri eşle",
+
+ // "collection.edit.item-mapper.description": "This is the item mapper tool that allows collection administrators to map items from other collections into this collection. You can search for items from other collections and map them, or browse the list of currently mapped items.",
+ "collection.edit.item-mapper.description": "Bu, koleksiyon yöneticilerinin diğer koleksiyonlardaki öğeleri bu koleksiyona eşlemelerine olanak tanıyan öğe eşleyici aracıdır. Diğer koleksiyonlardaki öğeleri arayabilir ve bunları eşleyebilir veya şu anda eşlenmiş öğelerin listesine göz atabilirsiniz.",
+
+ // "collection.edit.item-mapper.head": "Item Mapper - Map Items from Other Collections",
+ "collection.edit.item-mapper.head": "Öğe Eşleştirici - Diğer Koleksiyonlardaki Öğeleri Eşle",
+
+ // "collection.edit.item-mapper.no-search": "Please enter a query to search",
+ "collection.edit.item-mapper.no-search": "Lütfen aramak için bir sorgu girin",
+
+ // "collection.edit.item-mapper.notifications.map.error.content": "Errors occurred for mapping of {{amount}} items.",
+ "collection.edit.item-mapper.notifications.map.error.content": "{{amount}} öğenin eşlenmesinde hatalar oluştu.",
+
+ // "collection.edit.item-mapper.notifications.map.error.head": "Mapping errors",
+ "collection.edit.item-mapper.notifications.map.error.head": "Eşleme hataları",
+
+ // "collection.edit.item-mapper.notifications.map.success.content": "Successfully mapped {{amount}} items.",
+ "collection.edit.item-mapper.notifications.map.success.content": "{{amount}} öğe başarıyla eşlendi.",
+
+ // "collection.edit.item-mapper.notifications.map.success.head": "Mapping completed",
+ "collection.edit.item-mapper.notifications.map.success.head": "Eşleme tamamlandı",
+
+ // "collection.edit.item-mapper.notifications.unmap.error.content": "Errors occurred for removing the mappings of {{amount}} items.",
+ "collection.edit.item-mapper.notifications.unmap.error.content": "{{amount}} öğenin eşlemeleri kaldırılırken hatalar oluştu.",
+
+ // "collection.edit.item-mapper.notifications.unmap.error.head": "Remove mapping errors",
+ "collection.edit.item-mapper.notifications.unmap.error.head": "Eşleme hatalarını kaldır",
+
+ // "collection.edit.item-mapper.notifications.unmap.success.content": "Successfully removed the mappings of {{amount}} items.",
+ "collection.edit.item-mapper.notifications.unmap.success.content": "{{amount}} öğenin eşlemeleri başarıyla kaldırıldı.",
+
+ // "collection.edit.item-mapper.notifications.unmap.success.head": "Remove mapping completed",
+ "collection.edit.item-mapper.notifications.unmap.success.head": "Eşlemeyi kaldır tamamlandı",
+
+ // "collection.edit.item-mapper.remove": "Remove selected item mappings",
+ "collection.edit.item-mapper.remove": "Seçili öğe eşlemelerini kaldır",
+
+ // "collection.edit.item-mapper.tabs.browse": "Browse mapped items",
+ "collection.edit.item-mapper.tabs.browse": "Eşlenen öğelere göz atın",
+
+ // "collection.edit.item-mapper.tabs.map": "Map new items",
+ "collection.edit.item-mapper.tabs.map": "Yeni öğeleri işle",
+
+
+
+ // "collection.edit.logo.label": "Collection logo",
+ "collection.edit.logo.label": "Koleksiyon logosu",
+
+ // "collection.edit.logo.notifications.add.error": "Uploading Collection logo failed. Please verify the content before retrying.",
+ "collection.edit.logo.notifications.add.error": "Koleksiyon logosu yüklemesi başarısız. Lütfen yeniden denemeden önce içeriği doğrulayın.",
+
+ // "collection.edit.logo.notifications.add.success": "Upload Collection logo successful.",
+ "collection.edit.logo.notifications.add.success": "Koleksiyon logosu yüklemesi başarılı.",
+
+ // "collection.edit.logo.notifications.delete.success.title": "Logo deleted",
+ "collection.edit.logo.notifications.delete.success.title": "Logo silindi",
+
+ // "collection.edit.logo.notifications.delete.success.content": "Successfully deleted the collection's logo",
+ "collection.edit.logo.notifications.delete.success.content": "Koleksiyonun logosunu başarıyla silindi",
+
+ // "collection.edit.logo.notifications.delete.error.title": "Error deleting logo",
+ "collection.edit.logo.notifications.delete.error.title": "Logo silinirken hata",
+
+ // "collection.edit.logo.upload": "Drop a Collection Logo to upload",
+ "collection.edit.logo.upload": "Yüklenecek bir koleksiyon logosu bırakın",
+
+
+
+ // "collection.edit.notifications.success": "Successfully edited the Collection",
+ "collection.edit.notifications.success": "Koleksiyon başarıyla düzenlendi.",
+
+ // "collection.edit.return": "Return",
+ "collection.edit.return": "Dönüş",
+
+
+
+ // "collection.edit.tabs.curate.head": "Curate",
+ "collection.edit.tabs.curate.head": "Kuratör",
+
+ // "collection.edit.tabs.curate.title": "Collection Edit - Curate",
+ "collection.edit.tabs.curate.title": "Koleksiyon düzenleme - Küratör",
+
+ // "collection.edit.tabs.authorizations.head": "Authorizations",
+ "collection.edit.tabs.authorizations.head": "Yetkilendirmeler",
+
+ // "collection.edit.tabs.authorizations.title": "Collection Edit - Authorizations",
+ "collection.edit.tabs.authorizations.title": "Koleksiyon düzenleme - Yetkilendirmeler",
+
+ // "collection.edit.tabs.metadata.head": "Edit Metadata",
+ "collection.edit.tabs.metadata.head": "Metadata Düzenle",
+
+ // "collection.edit.tabs.metadata.title": "Collection Edit - Metadata",
+ "collection.edit.tabs.metadata.title": "Koleksiyon Düzenle - Metadatalar",
+
+ // "collection.edit.tabs.roles.head": "Assign Roles",
+ "collection.edit.tabs.roles.head": "Rol atamak",
+
+ // "collection.edit.tabs.roles.title": "Collection Edit - Roles",
+ "collection.edit.tabs.roles.title": "Koleksiyon düzenleme - Roller",
+
+ // "collection.edit.tabs.source.external": "This collection harvests its content from an external source",
+ "collection.edit.tabs.source.external": "Bu koleksiyon içeriğini harici bir kaynaktan toplar",
+
+ // "collection.edit.tabs.source.form.errors.oaiSource.required": "You must provide a set id of the target collection.",
+ "collection.edit.tabs.source.form.errors.oaiSource.required": "Hedef koleksiyonuna bir set kimliği sağlamalısınız.",
+
+ // "collection.edit.tabs.source.form.harvestType": "Content being harvested",
+ "collection.edit.tabs.source.form.harvestType": "İçerik harmanlanıyor",
+
+ // "collection.edit.tabs.source.form.head": "Configure an external source",
+ "collection.edit.tabs.source.form.head": "Harici bir kaynak yapılandır",
+
+ // "collection.edit.tabs.source.form.metadataConfigId": "Metadata Format",
+ "collection.edit.tabs.source.form.metadataConfigId": "Metadata formatı",
+
+ // "collection.edit.tabs.source.form.oaiSetId": "OAI specific set id",
+ "collection.edit.tabs.source.form.oaiSetId": "OAI'ya Özel Set Kimliği",
+
+ // "collection.edit.tabs.source.form.oaiSource": "OAI Provider",
+ "collection.edit.tabs.source.form.oaiSource": "OAI Sağlayıcısı",
+
+ // "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Harvest metadata and bitstreams (requires ORE support)",
+ "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Metadataları ve bitstreamı topla (ORE desteği gerektirir)",
+
+ // "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Harvest metadata and references to bitstreams (ORE desteği gerektirir)",
+ "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Metadataları ve referansları topla (ORE desteği gerektirir)",
+
+ // "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Harvest metadata only",
+ "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Sadece metadataları topla",
+
+ // "collection.edit.tabs.source.head": "Content Source",
+ "collection.edit.tabs.source.head": "İçerik Kaynağı",
+
+ // "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": "Değişiklikleriniz silindi. Değişikliklerinizi eski haline getirmek için 'Geri Al' düğmesine tıklayın.",
+
+ // "collection.edit.tabs.source.notifications.discarded.title": "Changed discarded",
+ "collection.edit.tabs.source.notifications.discarded.title": "Silinenler değiştirildi.",
+
+ // "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": "Değişiklikleriniz kaydedilmedi. Lütfen kaydetmeden önce tüm alanların geçerli olduğundan emin olun.",
+
+ // "collection.edit.tabs.source.notifications.invalid.title": "Metadata invalid",
+ "collection.edit.tabs.source.notifications.invalid.title": "Metadata geçersiz",
+
+ // "collection.edit.tabs.source.notifications.saved.content": "Your changes to this collection's content source were saved.",
+ "collection.edit.tabs.source.notifications.saved.content": "Bu koleksiyonun içerik kaynağındaki değişiklikleriniz kaydedildi.",
+
+ // "collection.edit.tabs.source.notifications.saved.title": "Content Source saved",
+ "collection.edit.tabs.source.notifications.saved.title": "İçerik Kaynağı kaydedildi",
+
+ // "collection.edit.tabs.source.title": "Collection Edit - Content Source",
+ "collection.edit.tabs.source.title": "Koleksiyon düzenleme - İçerik Kaynağı",
+
+
+
+ // "collection.edit.template.add-button": "Add",
+ "collection.edit.template.add-button": "Ekle",
+
+ // "collection.edit.template.breadcrumbs": "Item template",
+ "collection.edit.template.breadcrumbs": "Öğe şablonu",
+
+ // "collection.edit.template.cancel": "Cancel",
+ "collection.edit.template.cancel": "İptal",
+
+ // "collection.edit.template.delete-button": "Delete",
+ "collection.edit.template.delete-button": "Sil",
+
+ // "collection.edit.template.edit-button": "Edit",
+ "collection.edit.template.edit-button": "Düzenle",
+
+ // "collection.edit.template.head": "Edit Template Item for Collection \"{{ collection }}\"",
+ "collection.edit.template.head": "Koleksiyon için Sablon Öğesini Düzenleyin \"{{ collection }}\"",
+
+ // "collection.edit.template.label": "Template item",
+ "collection.edit.template.label": "Şablon öğe",
+
+ // "collection.edit.template.notifications.delete.error": "Failed to delete the item template",
+ "collection.edit.template.notifications.delete.error": "Öğe şablonu silme başarısız",
+
+ // "collection.edit.template.notifications.delete.success": "Successfully deleted the item template",
+ "collection.edit.template.notifications.delete.success": "Öğe şablonu başarıyla silindi",
+
+ // "collection.edit.template.title": "Edit Template Item",
+ "collection.edit.template.title": "Şablon Öğesini Düzenle",
+
+
+
+ // "collection.form.abstract": "Short Description",
+ "collection.form.abstract": "Kısa Açıklama",
+
+ // "collection.form.description": "Introductory text (HTML)",
+ "collection.form.description": "Tanıtım metni (HTML)",
+
+ // "collection.form.errors.title.required": "Please enter a collection name",
+ "collection.form.errors.title.required": "Lütfen bir koleksiyon adı girin",
+
+ // "collection.form.license": "License",
+ "collection.form.license": "Lisans",
+
+ // "collection.form.provenance": "Provenance",
+ "collection.form.provenance": "Menşei",
+
+ // "collection.form.rights": "Copyright text (HTML)",
+ "collection.form.rights": "Telif hakkı metni (HTML)",
+
+ // "collection.form.tableofcontents": "News (HTML)",
+ "collection.form.tableofcontents": "Haberler (HTML)",
+
+ // "collection.form.title": "Name",
+ "collection.form.title": "İsim",
+
+
+
+ // "collection.listelement.badge": "Collection",
+ "collection.listelement.badge": "Koleksiyon",
+
+
+
+ // "collection.page.browse.recent.head": "Recent Submissions",
+ "collection.page.browse.recent.head": "Son Başvurular",
+
+ // "collection.page.browse.recent.empty": "No items to show",
+ "collection.page.browse.recent.empty": "Gösterilecek öğe yok",
+
+ // "collection.page.edit": "Edit this collection",
+ "collection.page.edit": "Bu koleksiyonu düzenleyin",
+
+ // "collection.page.handle": "Permanent URI for this collection",
+ "collection.page.handle": "Bu koleksiyon için kalıcı URI",
+
+ // "collection.page.license": "License",
+ "collection.page.license": "Lisans",
+
+ // "collection.page.news": "News",
+ "collection.page.news": "Haberler",
+
+
+
+ // "collection.select.confirm": "Confirm selected",
+ "collection.select.confirm": "Seçilileri onayla",
+
+ // "collection.select.empty": "No collections to show",
+ "collection.select.empty": "Gösterilecek koleksiyon yok",
+
+ // "collection.select.table.title": "Title",
+ "collection.select.table.title": "Başlık",
+
+
+
+ // "collection.source.update.notifications.error.content": "The provided settings have been tested and didn't work.",
+ "collection.source.update.notifications.error.content": "Sağlanan ayarlar test edildi ve işe yaramadı.",
+
+ // "collection.source.update.notifications.error.title": "Server Error",
+ "collection.source.update.notifications.error.title": "Sunucu Hatası",
+
+
+
+ // "communityList.tabTitle": "DSpace - Community List",
+ "communityList.tabTitle": "DSpace - Komünite Listesi",
+
+ // "communityList.title": "List of Communities",
+ "communityList.title": "Komünitelerin Listesi",
+
+ // "communityList.showMore": "Show More",
+ "communityList.showMore": "Daha fazla göster",
+
+
+
+ // "community.create.head": "Create a Community",
+ "community.create.head": "Bir komünite oluştur",
+
+ // "community.create.notifications.success": "Successfully created the Community",
+ "community.create.notifications.success": "Komunite başarıyla yaratıldı",
+
+ // "community.create.sub-head": "Create a Sub-Community for Community {{ parent }}",
+ "community.create.sub-head": "Komünite için bir alt komünite oluşturun {{ parent }}",
+
+ // "community.curate.header": "Curate Community: {{community}}",
+ "community.curate.header": "Kuratör topluluğu: {{community}}",
+
+ // "community.delete.cancel": "Cancel",
+ "community.delete.cancel": "İptal",
+
+ // "community.delete.confirm": "Confirm",
+ "community.delete.confirm": "Onayla",
+
+ // "community.delete.head": "Delete Community",
+ "community.delete.head": "Komüniteyi sil",
+
+ // "community.delete.notification.fail": "Community could not be deleted",
+ "community.delete.notification.fail": "Komünite silinemedi",
+
+ // "community.delete.notification.success": "Successfully deleted community",
+ "community.delete.notification.success": "Komünite başarıyla silindi",
+
+ // "community.delete.text": "Are you sure you want to delete community \"{{ dso }}\"",
+ "community.delete.text": "Komüniteyi silmek istediğinize emin misiniz \"{{ dso }}\"",
+
+ // "community.edit.delete": "Delete this community",
+ "community.edit.delete": "Bu yomüniteyi sil",
+
+ // "community.edit.head": "Edit Community",
+ "community.edit.head": "Komüniteyi düzenle",
+
+ // "community.edit.breadcrumbs": "Edit Community",
+ "community.edit.breadcrumbs": "Komüniteyi düzenle",
+
+
+ // "community.edit.logo.label": "Community logo",
+ "community.edit.logo.label": "Komünite logosu",
+
+ // "community.edit.logo.notifications.add.error": "Uploading Community logo failed. Please verify the content before retrying.",
+ "community.edit.logo.notifications.add.error": "Komünite logosu yüklemesi başarısız. Lütfen yeniden denemeden önce içeriği doğrulayın.",
+
+ // "community.edit.logo.notifications.add.success": "Upload Community logo successful.",
+ "community.edit.logo.notifications.add.success": "Komünite logosunu başarılı yükle.",
+
+ // "community.edit.logo.notifications.delete.success.title": "Logo deleted",
+ "community.edit.logo.notifications.delete.success.title": "Logo silindi",
+
+ // "community.edit.logo.notifications.delete.success.content": "Successfully deleted the community's logo",
+ "community.edit.logo.notifications.delete.success.content": "Komünite logosu başarıyla silindi",
+
+ // "community.edit.logo.notifications.delete.error.title": "Error deleting logo",
+ "community.edit.logo.notifications.delete.error.title": "Logo silme hatası",
+
+ // "community.edit.logo.upload": "Drop a Community Logo to upload",
+ "community.edit.logo.upload": "Yüklenecek bir komünite logosu bırak",
+
+
+
+ // "community.edit.notifications.success": "Successfully edited the Community",
+ "community.edit.notifications.success": "Komünite başarıyla düzenlendi",
+
+ // "community.edit.notifications.unauthorized": "You do not have privileges to make this change",
+ "community.edit.notifications.unauthorized": "Bu değişikliği yapmak için ayrıcalıklarınız yok",
+
+ // "community.edit.notifications.error": "An error occured while editing the Community",
+ "community.edit.notifications.error": "Komüniteyi düzenlerken bir hata oluştu",
+
+ // "community.edit.return": "Return",
+ "community.edit.return": "Dönüş",
+
+
+
+ // "community.edit.tabs.curate.head": "Curate",
+ "community.edit.tabs.curate.head": "Kuratör",
+
+ // "community.edit.tabs.curate.title": "Community Edit - Curate",
+ "community.edit.tabs.curate.title": "Komünite Düzenle - Küratör",
+
+ // "community.edit.tabs.metadata.head": "Edit Metadata",
+ "community.edit.tabs.metadata.head": "Metadataları Düzenle",
+
+ // "community.edit.tabs.metadata.title": "Community Edit - Metadata",
+ "community.edit.tabs.metadata.title": "Komünite Düzenle - Metadatalar",
+
+ // "community.edit.tabs.roles.head": "Assign Roles",
+ "community.edit.tabs.roles.head": "Rol atamak",
+
+ // "community.edit.tabs.roles.title": "Community Edit - Roles",
+ "community.edit.tabs.roles.title": "Komünite Düzenle - Roller",
+
+ // "community.edit.tabs.authorizations.head": "Authorizations",
+ "community.edit.tabs.authorizations.head": "Yetkilendirmeler",
+
+ // "community.edit.tabs.authorizations.title": "Community Edit - Authorizations",
+ "community.edit.tabs.authorizations.title": "Komünite Düzenle - Yetkilendirmeler",
+
+
+
+ // "community.listelement.badge": "Community",
+ "community.listelement.badge": "Komünite",
+
+
+
+ // "comcol-role.edit.no-group": "None",
+ "comcol-role.edit.no-group": "Hiçbiri",
+
+ // "comcol-role.edit.create": "Create",
+ "comcol-role.edit.create": "Oluştur",
+
+ // "comcol-role.edit.restrict": "Restrict",
+ "comcol-role.edit.restrict": "Kısıtla",
+
+ // "comcol-role.edit.delete": "Delete",
+ "comcol-role.edit.delete": "Sil",
+
+
+ // "comcol-role.edit.community-admin.name": "Yöneticiler",
+ "comcol-role.edit.community-admin.name": "Administrators",
+
+ // "comcol-role.edit.collection-admin.name": "Administrators",
+ "comcol-role.edit.collection-admin.name": "Yöneticiler",
+
+
+ // "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": "Komünite yöneticileri alt komüniteler veya koleksiyonlar oluşturabilir ve bu alt komüniteler veya koleksiyonlar için yönetimi yönetebilir veya atayabilir. Ek olarak, kimsenin herhangi bir alt koleksiyona kimin gönderebileceğine, madde metadatalarını (sunulduktan sonra) düzenleyebileceğine karar verirler ve mevcut eşyaları diğer koleksiyonlardan (yetkilendirmeye tabi) ekleyin.",
+
+ // "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": "Koleksiyon yöneticileri, eşyaları koleksiyona kimin gönderebileceğine, öğe metadatalarını (gönderimden sonra) düzenleyebileceğine karar verir ve mevcut eşyaları diğer koleksiyonlardan (bu koleksiyon için yetkilendirmeye tabi) ekleyin.",
+
+
+ // "comcol-role.edit.submitters.name": "Submitters",
+ "comcol-role.edit.submitters.name": "Göndericiler",
+
+ // "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": "Bu koleksiyona yeni eşya gönderme iznine sahip olan E-insanlar ve gruplar.",
+
+
+ // "comcol-role.edit.item_read.name": "Default item read access",
+ "comcol-role.edit.item_read.name": "Varsayılan öğe okuma erişimi",
+
+ // "comcol-role.edit.item_read.description": "E-People and Groups that can read new items submitted to this collection. Changes to this role are not retroactive. Existing items in the system will still be viewable by those who had read access at the time of their addition.",
+ "comcol-role.edit.item_read.description": "Bu koleksiyona sunulan yeni eşyaları okuyabilen E-insanlar ve gruplar. Bu roldeki değişiklikler geriye dönük değildir. Sistemdeki mevcut eşyalar, eklemeleri sırasında erişimi okuyanlar tarafından görülebilir.",
+
+ // "comcol-role.edit.item_read.anonymous-group": "Default read for incoming items is currently set to Anonymous.",
+ "comcol-role.edit.item_read.anonymous-group": "Gelen öğeler için varsayılan okuma şu anda isimsiz olarak ayarlanmıştır.",
+
+
+ // "comcol-role.edit.bitstream_read.name": "Default bitstream read access",
+ "comcol-role.edit.bitstream_read.name": "Varsayılan bitstream okuma erişimi",
+
+ // "comcol-role.edit.bitstream_read.description": "Community administrators can create sub-communities or collections, and manage or assign management for those sub-communities or collections. In addition, they decide who can submit items to any sub-collections, edit item metadata (after submission), and add (map) existing items from other collections (subject to authorization).",
+ "comcol-role.edit.bitstream_read.description": "Komünite yöneticileri alt komüniteler veya koleksiyonlar oluşturabilir ve bu alt komüniteler veya koleksiyonlar için yönetimi yönetebilir veya atayabilirler. Ek olarak, eşyaları herhangi bir alt koleksiyona kimin gönderebileceğine, öğe metadatalarını (sunulduktan sonra) düzenleyebilir ve harita) Diğer koleksiyonlardan gelen mevcut eşyalar (yetkilendirmeye tabi).",
+
+ // "comcol-role.edit.bitstream_read.anonymous-group": "Default read for incoming bitstreams is currently set to Anonymous.",
+ "comcol-role.edit.bitstream_read.anonymous-group": "Gelen bitstream için varsayılan okuma şu anda anonim olarak ayarlanmıştır.",
+
+
+ // "comcol-role.edit.editor.name": "Editors",
+ "comcol-role.edit.editor.name": "Editörler",
+
+ // "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": "Editörler, gelen gönderilerin metadatalarını düzenleyebilir ve ardından onları kabul edebilir veya reddedebilir.",
+
+
+ // "comcol-role.edit.finaleditor.name": "Final editors",
+ "comcol-role.edit.finaleditor.name": "Son editörler",
+
+ // "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": "Nihai editörler gelen başvuruların metadatalarını düzenleyebilir, ancak onları reddedebilir.",
+
+
+ // "comcol-role.edit.reviewer.name": "Reviewers",
+ "comcol-role.edit.reviewer.name": "Yorumcular",
+
+ // "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": "Yorumcular gelen başvuruları kabul edebilir veya reddedebilirler. Ancak, gönderimin metadatalarını düzenleyemezler.",
+
+
+
+ // "community.form.abstract": "Short Description",
+ "community.form.abstract": "Kısa Açıklama",
+
+ // "community.form.description": "Introductory text (HTML)",
+ "community.form.description": "Tanıtım metni (HTML)",
+
+ // "community.form.errors.title.required": "Please enter a community name",
+ "community.form.errors.title.required": "Lütfen bir komünite adı girin",
+
+ // "community.form.rights": "Copyright text (HTML)",
+ "community.form.rights": "Telif Hakkı Metni (HTML)",
+
+ // "community.form.tableofcontents": "News (HTML)",
+ "community.form.tableofcontents": "Haberler (HTML)",
+
+ // "community.form.title": "Name",
+ "community.form.title": "İsim",
+
+ // "community.page.edit": "Edit this community",
+ "community.page.edit": "Bu komüniteyi düzenle",
+
+ // "community.page.handle": "Permanent URI for this community",
+ "community.page.handle": "Bu komünite için Kalıcı Uri",
+
+ // "community.page.license": "License",
+ "community.page.license": "Lisans",
+
+ // "community.page.news": "News",
+ "community.page.news": "Haberler",
+
+ // "community.all-lists.head": "Subcommunities and Collections",
+ "community.all-lists.head": "Alt komüniteler ve koleksiyonlar",
+
+ // "community.sub-collection-list.head": "Collections of this Community",
+ "community.sub-collection-list.head": "Bu komünitenin koleksiyonları",
+
+ // "community.sub-community-list.head": "Communities of this Community",
+ "community.sub-community-list.head": "Bu komünitenin koleksiyonları",
+
+
+
+ // "cookies.consent.accept-all": "Accept all",
+ "cookies.consent.accept-all": "Hepsini kabul et",
+
+ // "cookies.consent.accept-selected": "Accept selected",
+ "cookies.consent.accept-selected": "Seçiliyi kabul et",
+
+ // "cookies.consent.app.opt-out.description": "This app is loaded by default (but you can opt out)",
+ "cookies.consent.app.opt-out.description": "Bu uygulama varsayılan olarak yüklenir (ancak vazgeçebilirsiniz)",
+
+ // "cookies.consent.app.opt-out.title": "(opt-out)",
+ "cookies.consent.app.opt-out.title": "(vazgeç)",
+
+ // "cookies.consent.app.purpose": "purpose",
+ "cookies.consent.app.purpose": "amaç",
+
+ // "cookies.consent.app.required.description": "This application is always required",
+ "cookies.consent.app.required.description": "Bu uygulama her zaman gereklidir",
+
+ // "cookies.consent.app.required.title": "(always required)",
+ "cookies.consent.app.required.title": "(her zaman gerekli)",
+
+ // "cookies.consent.update": "There were changes since your last visit, please update your consent.",
+ "cookies.consent.update": "Son ziyaretinizden bu yana değişiklikler vardı, lütfen onayınızı güncelleyin.",
+
+ // "cookies.consent.close": "Close",
+ "cookies.consent.close": "Kapat",
+
+ // "cookies.consent.decline": "Decline",
+ "cookies.consent.decline": "Reddet",
+
+ // "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": "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": "Özelleştir",
+
+ // "cookies.consent.content-modal.description": "Here you can see and customize the information that we collect about you.",
+ "cookies.consent.content-modal.description": "Burada, sizin hakkınızda topladığımız bilgileri görebilir ve özelleştirebilirsiniz.",
+
+ // "cookies.consent.content-modal.privacy-policy.name": "privacy policy",
+ "cookies.consent.content-modal.privacy-policy.name": "Gizlilik Politikası",
+
+ // "cookies.consent.content-modal.privacy-policy.text": "To learn more, please read our {privacyPolicy}.",
+ "cookies.consent.content-modal.privacy-policy.text": "Daha fazla bilgi için, lütfen okuyun {privacyPolicy}.",
+
+ // "cookies.consent.content-modal.title": "Information that we collect",
+ "cookies.consent.content-modal.title": "Topladığımız bilgiler",
+
+
+
+ // "cookies.consent.app.title.authentication": "Authentication",
+ "cookies.consent.app.title.authentication": "Kimlik doğrulama",
+
+ // "cookies.consent.app.description.authentication": "Required for signing you in",
+ "cookies.consent.app.description.authentication": "Kayıt olmak için gerekli",
+
+
+ // "cookies.consent.app.title.preferences": "Preferences",
+ "cookies.consent.app.title.preferences": "Tercihler",
+
+ // "cookies.consent.app.description.preferences": "Required for saving your preferences",
+ "cookies.consent.app.description.preferences": "Tercihlerinizi kaydetmek için gerekli",
+
+
+
+ // "cookies.consent.app.title.acknowledgement": "Acknowledgement",
+ "cookies.consent.app.title.acknowledgement": "Onaylama",
+
+ // "cookies.consent.app.description.acknowledgement": "Required for saving your acknowledgements and consents",
+ "cookies.consent.app.description.acknowledgement": "Teşekkürlerinizi ve onayları kurtarmak için gerekli",
+
+
+
+ // "cookies.consent.app.title.google-analytics": "Google Analytics",
+ "cookies.consent.app.title.google-analytics": "Google Analitiği",
+
+ // "cookies.consent.app.description.google-analytics": "Allows us to track statistical data",
+ "cookies.consent.app.description.google-analytics": "İstatistiksel verileri izlememize izin verir",
+
+
+
+ // "cookies.consent.purpose.functional": "Functional",
+ "cookies.consent.purpose.functional": "Fonksiyonel",
+
+ // "cookies.consent.purpose.statistical": "Statistical",
+ "cookies.consent.purpose.statistical": "İstatistiksel",
+
+
+ // "curation-task.task.checklinks.label": "Check Links in Metadata",
+ "curation-task.task.checklinks.label": "Metadatalardaki Bağlantıları Kontrol Et",
+
+ // "curation-task.task.noop.label": "NOOP",
+ "curation-task.task.noop.label": "NOOP",
+
+ // "curation-task.task.profileformats.label": "Profile Bitstream Formats",
+ "curation-task.task.profileformats.label": "Profil Bitstream Formatları",
+
+ // "curation-task.task.requiredmetadata.label": "Check for Required Metadata",
+ "curation-task.task.requiredmetadata.label": "Gerekli metadataları kontrol edin",
+
+ // "curation-task.task.translate.label": "Microsoft Translator",
+ "curation-task.task.translate.label": "Microsoft Tercüman",
+
+ // "curation-task.task.vscan.label": "Virus Scan",
+ "curation-task.task.vscan.label": "Virüs Taraması",
+
+
+
+ // "curation.form.task-select.label": "Task:",
+ "curation.form.task-select.label": "Görev:",
+
+ // "curation.form.submit": "Start",
+ "curation.form.submit": "Başlangıç",
+
+ // "curation.form.submit.success.head": "The curation task has been started successfully",
+ "curation.form.submit.success.head": "Küratör görevi başarıyla başlatıldı",
+
+ // "curation.form.submit.success.content": "You will be redirected to the corresponding process page.",
+ "curation.form.submit.success.content": "İlgili işlem sayfasına yönlendirileceksiniz.",
+
+ // "curation.form.submit.error.head": "Running the curation task failed",
+ "curation.form.submit.error.head": "Küratörlük görevi başarısız oldu",
+
+ // "curation.form.submit.error.content": "An error occured when trying to start the curation task.",
+ "curation.form.submit.error.content": "Küratörlük görevi başlatmaya çalışırken bir hata oluştu.",
+
+ // "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": "İpucu: Gir [your-handle-prefix]/0 tüm sitede bir görevi çalıştırmak için (tüm görevler bu özelliği destekleyemez)",
+
+
+
+ // "dso-selector.create.collection.head": "New collection",
+ "dso-selector.create.collection.head": "Yeni koleksiyon",
+
+ // "dso-selector.create.collection.sub-level": "Create a new collection in",
+ "dso-selector.create.collection.sub-level": "Yeni bir koleksiyon oluşturun",
+
+ // "dso-selector.create.community.head": "New community",
+ "dso-selector.create.community.head": "Yeni komünite",
+
+ // "dso-selector.create.community.sub-level": "Create a new community in",
+ "dso-selector.create.community.sub-level": "Yeni bir komünite oluştur",
+
+ // "dso-selector.create.community.top-level": "Create a new top-level community",
+ "dso-selector.create.community.top-level": "Yeni bir üst düzey komünite oluştur",
+
+ // "dso-selector.create.item.head": "New item",
+ "dso-selector.create.item.head": "Yeni öğe",
+
+ // "dso-selector.create.item.sub-level": "Create a new item in",
+ "dso-selector.create.item.sub-level": "İçinde yeni bir öğe oluşturun",
+
+ // "dso-selector.create.submission.head": "New submission",
+ "dso-selector.create.submission.head": "Yeni başvuru",
+
+ // "dso-selector.edit.collection.head": "Edit collection",
+ "dso-selector.edit.collection.head": "Koleksiyonu Düzenle",
+
+ // "dso-selector.edit.community.head": "Edit community",
+ "dso-selector.edit.community.head": "Komüniteyi Düzenle",
+
+ // "dso-selector.edit.item.head": "Edit item",
+ "dso-selector.edit.item.head": "Ögeyi düzenle",
+
+ // "dso-selector.export-metadata.dspaceobject.head": "Export metadata from",
+ "dso-selector.export-metadata.dspaceobject.head": "Metadatalarını dışa aktar",
+
+ // "dso-selector.no-results": "No {{ type }} found ",
+ "dso-selector.no-results": "Bulunamadı {{ type }} ",
+
+ // "dso-selector.placeholder": "Search for a {{ type }}",
+ "dso-selector.placeholder": " Ara {{ type }}",
+
+
+
+ // "confirmation-modal.export-metadata.header": "Export metadata for {{ dsoName }}",
+ "confirmation-modal.export-metadata.header": "Metadatalarını dışa aktar {{ dsoName }}",
+
+ // "confirmation-modal.export-metadata.info": "Are you sure you want to export metadata for {{ dsoName }}",
+ "confirmation-modal.export-metadata.info": "Metadatalarını dışarı aktarmak istediğinizden emin misiniz {{ dsoName }}",
+
+ // "confirmation-modal.export-metadata.cancel": "Cancel",
+ "confirmation-modal.export-metadata.cancel": "İptal",
+
+ // "confirmation-modal.export-metadata.confirm": "Export",
+ "confirmation-modal.export-metadata.confirm": "Dışarı aktar",
+
+ // "confirmation-modal.delete-eperson.header": "Delete EPerson \"{{ dsoName }}\"",
+ "confirmation-modal.delete-eperson.header": "EPerson'ı sil \"{{ dsoName }}\"",
+
+ // "confirmation-modal.delete-eperson.info": "Are you sure you want to delete EPerson \"{{ dsoName }}\"",
+ "confirmation-modal.delete-eperson.info": "Eperson'u silmek istediğinize emin misiniz? \"{{ dsoName }}\"",
+
+ // "confirmation-modal.delete-eperson.cancel": "Cancel",
+ "confirmation-modal.delete-eperson.cancel": "İptal",
+
+ // "confirmation-modal.delete-eperson.confirm": "Delete",
+ "confirmation-modal.delete-eperson.confirm": "Sil",
+
+
+ // "error.bitstream": "Error fetching bitstream",
+ "error.bitstream": "Alınan bitstream hatası",
+
+ // "error.browse-by": "Error fetching items",
+ "error.browse-by": "Alınan öğeler hatası",
+
+ // "error.collection": "Error fetching collection",
+ "error.collection": "Alınan koleksiyon hatası",
+
+ // "error.collections": "Error fetching collections",
+ "error.collections": "Alınan koleksiyonlar hatası",
+
+ // "error.community": "Error fetching community",
+ "error.community": "Alınan komünite hatası",
+
+ // "error.identifier": "No item found for the identifier",
+ "error.identifier": "Tanımlayıcı için ürün bulunamadı",
+
+ // "error.default": "Error",
+ "error.default": "Hata",
+
+ // "error.item": "Error fetching item",
+ "error.item": "Alınan öğe hatası",
+
+ // "error.items": "Error fetching items",
+ "error.items": "Alınan öğeler hatası",
+
+ // "error.objects": "Error fetching objects",
+ "error.objects": "Alınan nesneler hatası",
+
+ // "error.recent-submissions": "Error fetching recent submissions",
+ "error.recent-submissions": "Son başvuruları alma hatası",
+
+ // "error.search-results": "Error fetching search results",
+ "error.search-results": "Arama sonuçlarını alma hatası",
+
+ // "error.sub-collections": "Error fetching sub-collections",
+ "error.sub-collections": "Alt koleksiyonları alma hatası",
+
+ // "error.sub-communities": "Error fetching sub-communities",
+ "error.sub-communities": "Alt komüniteleri alma hatası",
+
+ // "error.submission.sections.init-form-error": "An error occurred during section initialize, please check your input-form configuration. Details are below : ",
+ "error.submission.sections.init-form-error": "Bölüm başlatma sırasında bir hata oluştu, lütfen giriş formu yapılandırmanızı kontrol edin. Detaylar aşağıdadır : ",
+
+ // "error.top-level-communities": "Error fetching top-level communities",
+ "error.top-level-communities": "Üst düzey komüniteleri alma hatası",
+
+ // "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": "Gönderinizi tamamlamak için bu lisansı vermelisiniz. Bu lisansı şu anda veremiyorsanız, çalışmanızı kaydedebilir ve daha sonra geri gönderebilir veya gönderimi kaldırabilirsiniz.",
+
+ // "error.validation.pattern": "This input is restricted by the current pattern: {{ pattern }}.",
+ "error.validation.pattern": "Bu giriş mevcut modelle sınırlandırılmıştır.: {{ pattern }}.",
+
+ // "error.validation.filerequired": "The file upload is mandatory",
+ "error.validation.filerequired": "Dosya yükleme zorunludur",
+
+
+
+ // "file-section.error.header": "Error obtaining files for this item",
+ "file-section.error.header": "Bu öğe için dosyaları elde etme hatası",
+
+
+
+ // "footer.copyright": "copyright © 2002-{{ year }}",
+ "footer.copyright": "telif hakkı © 2002-{{ year }}",
+
+ // "footer.link.dspace": "DSpace software",
+ "footer.link.dspace": "DSpace yazılım",
+
+ // "footer.link.lyrasis": "LYRASIS",
+ "footer.link.lyrasis": "LYRASIS",
+
+ // "footer.link.cookies": "Cookie settings",
+ "footer.link.cookies": "Çerez Ayarları",
+
+ // "footer.link.privacy-policy": "Privacy policy",
+ "footer.link.privacy-policy": "Gizlilik Politikası",
+
+ // "footer.link.end-user-agreement":"End User Agreement",
+ "footer.link.end-user-agreement":"Son Kullanıcı Sözleşmesi",
+
+
+
+ // "forgot-email.form.header": "Forgot Password",
+ "forgot-email.form.header": "Parolanızı mı unuttunuz",
+
+ // "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": "E-posta güncellemeleri için koleksiyonlara abone olmak için bir hesap kaydedin ve DSPace'e yeni öğeler gönderin.",
+
+ // "forgot-email.form.email": "Email Address *",
+ "forgot-email.form.email": "Eposta Adresi *",
+
+ // "forgot-email.form.email.error.required": "Please fill in an email address",
+ "forgot-email.form.email.error.required": "Lütfen bir e-posta adresi giriniz",
+
+ // "forgot-email.form.email.error.pattern": "Please fill in a valid email address",
+ "forgot-email.form.email.error.pattern": "Lütfen bir e-posta adresi giriniz",
+
+ // "forgot-email.form.email.hint": "This address will be verified and used as your login name.",
+ "forgot-email.form.email.hint": "Bu adres, giriş adınız olarak doğrulanacak ve kullanılacaktır.",
+
+ // "forgot-email.form.submit": "Submit",
+ "forgot-email.form.submit": "Kaydet",
+
+ // "forgot-email.form.success.head": "Verification email sent",
+ "forgot-email.form.success.head": "Doğrulama e-postası gönderildi",
+
+ // "forgot-email.form.success.content": "An email has been sent to {{ email }} containing a special URL and further instructions.",
+ "forgot-email.form.success.content": "Özel bir URL ve daha fazla talimat içeren bir e posta bu {{ email }} mail adresin gönderildi. ",
+
+ // "forgot-email.form.error.head": "Error when trying to register email",
+ "forgot-email.form.error.head": "E-postayı kaydetmeye çalışırken hata oluştu",
+
+ // "forgot-email.form.error.content": "An error occured when registering the following email address: {{ email }}",
+ "forgot-email.form.error.content": "E-posta adresini kaydederken bir hata oluştu: {{ email }}",
+
+
+
+ // "forgot-password.title": "Forgot Password",
+ "forgot-password.title": "Parolanızı mı unuttunuz",
+
+ // "forgot-password.form.head": "Forgot Password",
+ "forgot-password.form.head": "Parolanızı mı unuttunuz",
+
+ // "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": "Aşağıdaki kutuya yeni bir parola girin ve tekrar ikinci kutuya yazarak onaylayın. En az altı karakter uzunluğunda olmalıdır.",
+
+ // "forgot-password.form.card.security": "Security",
+ "forgot-password.form.card.security": "Güvenlik",
+
+ // "forgot-password.form.identification.header": "Identify",
+ "forgot-password.form.identification.header": "Kimlik",
+
+ // "forgot-password.form.identification.email": "Email address: ",
+ "forgot-password.form.identification.email": "E-posta adresi: ",
+
+ // "forgot-password.form.label.password": "Password",
+ "forgot-password.form.label.password": "Parola",
+
+ // "forgot-password.form.label.passwordrepeat": "Retype to confirm",
+ "forgot-password.form.label.passwordrepeat": "Doğrulamak için yeniden yazınız",
+
+ // "forgot-password.form.error.empty-password": "Please enter a password in the box below.",
+ "forgot-password.form.error.empty-password": "Lütfen aşağıdaki kutuya bir parola girin.",
+
+ // "forgot-password.form.error.matching-passwords": "The passwords do not match.",
+ "forgot-password.form.error.matching-passwords": "Parolalar eşleşmiyor.",
+
+ // "forgot-password.form.error.password-length": "The password should be at least 6 characters long.",
+ "forgot-password.form.error.password-length": "Parola en az 6 karakter uzunluğunda olmalıdır.",
+
+ // "forgot-password.form.notification.error.title": "Error when trying to submit new password",
+ "forgot-password.form.notification.error.title": "Yeni parola göndermeye çalışırken hata oluştu",
+
+ // "forgot-password.form.notification.success.content": "The password reset was successful. You have been logged in as the created user.",
+ "forgot-password.form.notification.success.content": "Parola sıfırlama başarılı oldu. Oluşturulan kullanıcı olarak giriş yaptınız.",
+
+ // "forgot-password.form.notification.success.title": "Password reset completed",
+ "forgot-password.form.notification.success.title": "Parola sıfırlama tamamlandı",
+
+ // "forgot-password.form.submit": "Submit password",
+ "forgot-password.form.submit": "Parolayı kaydet",
+
+
+
+ // "form.add": "Add",
+ "form.add": "Ekle",
+
+ // "form.add-help": "Click here to add the current entry and to add another one",
+ "form.add-help": "Geçerli girişi eklemek ve bir tane daha eklemek için buraya tıklayın.",
+
+ // "form.cancel": "Cancel",
+ "form.cancel": "İptal",
+
+ // "form.clear": "Clear",
+ "form.clear": "Temizle",
+
+ // "form.clear-help": "Click here to remove the selected value",
+ "form.clear-help": "Seçilen değeri kaldırmak için buraya tıklayın",
+
+ // "form.edit": "Edit",
+ "form.edit": "Düzenle",
+
+ // "form.edit-help": "Click here to edit the selected value",
+ "form.edit-help": "Seçilen değeri düzenlemek için buraya tıklayın",
+
+ // "form.first-name": "First name",
+ "form.first-name": "İlk adı",
+
+ // "form.group-collapse": "Collapse",
+ "form.group-collapse": "Yığmak",
+
+ // "form.group-collapse-help": "Click here to collapse",
+ "form.group-collapse-help": "Yığmak için buraya tıklayın",
+
+ // "form.group-expand": "Expand",
+ "form.group-expand": "Uzat",
+
+ // "form.group-expand-help": "Click here to expand and add more elements",
+ "form.group-expand-help": "Genişletmek ve daha fazla öğe eklemek için buraya tıklayın",
+
+ // "form.last-name": "Last name",
+ "form.last-name": "Soyadı",
+
+ // "form.loading": "Loading...",
+ "form.loading": "Yükleniyor...",
+
+ // "form.lookup": "Lookup",
+ "form.lookup": "Yukarı Bak",
+
+ // "form.lookup-help": "Click here to look up an existing relation",
+ "form.lookup-help": "Mevcut bir bağlantı aramak için buraya tıklayın",
+
+ // "form.no-results": "No results found",
+ "form.no-results": "Sonuç bulunamadı",
+
+ // "form.no-value": "No value entered",
+ "form.no-value": "Değer girilmez",
+
+ // "form.other-information": {},
+ "form.other-information": {},
+
+ // "form.remove": "Remove",
+ "form.remove": "Kaldır",
+
+ // "form.save": "Save",
+ "form.save": "Kaydet",
+
+ // "form.save-help": "Save changes",
+ "form.save-help": "Değişiklikleri kaydet",
+
+ // "form.search": "Search",
+ "form.search": "Ara",
+
+ // "form.search-help": "Click here to look for an existing correspondence",
+ "form.search-help": "Mevcut bir yazışma aramak için buraya tıklayın",
+
+ // "form.submit": "Submit",
+ "form.submit": "Gönder",
+
+
+
+ // "home.description": "",
+ "home.description": "",
+
+ // "home.breadcrumbs": "Home",
+ "home.breadcrumbs": "Anasayfa",
+
+ // "home.title": "DSpace Angular :: Home",
+ "home.title": "DSpace Açısal :: Anasayfa",
+
+ // "home.top-level-communities.head": "Communities in DSpace",
+ "home.top-level-communities.head": "Dspace'deki Komüniteler",
+
+ // "home.top-level-communities.help": "Select a community to browse its collections.",
+ "home.top-level-communities.help": "Koleksiyonlarına göz atmak için bir komünite seçin.",
+
+ // "home.search-form.placeholder": "Search the repository ...",
+ "home.search-form.placeholder": "Depoda ara ...",
+
+
+ // "info.end-user-agreement.accept": "I have read and I agree to the End User Agreement",
+ "info.end-user-agreement.accept": "Okudum ve son kullanıcı sözleşmesini kabul ediyorum",
+
+ // "info.end-user-agreement.accept.error": "An error occurred accepting the End User Agreement",
+ "info.end-user-agreement.accept.error": "Son kullanıcı sözleşmesini kabul eden bir hata oluştu",
+
+ // "info.end-user-agreement.accept.success": "Successfully updated the End User Agreement",
+ "info.end-user-agreement.accept.success": "Son Kullanıcı Sözleşmesini başarıyla güncelledi",
+
+ // "info.end-user-agreement.breadcrumbs": "End User Agreement",
+ "info.end-user-agreement.breadcrumbs": "Son Kullanıcı Sözleşmesi",
+
+ // "info.end-user-agreement.buttons.cancel": "Cancel",
+ "info.end-user-agreement.buttons.cancel": "İptal",
+
+ // "info.end-user-agreement.buttons.save": "Save",
+ "info.end-user-agreement.buttons.save": "Kaydet",
+
+ // "info.end-user-agreement.head": "End User Agreement",
+ "info.end-user-agreement.head": "Son Kullanıcı Sözleşmesi",
+
+ // "info.end-user-agreement.title": "End User Agreement",
+ "info.end-user-agreement.title": "Son Kullanıcı Sözleşmesi",
+
+ // "info.privacy.breadcrumbs": "Privacy Statement",
+ "info.privacy.breadcrumbs": "Gizlilik bildirimi",
+
+ // "info.privacy.head": "Privacy Statement",
+ "info.privacy.head": "Gizlilik bildirimi",
+
+ // "info.privacy.title": "Privacy Statement",
+ "info.privacy.title": "Gizlilik bildirimi",
+
+
+
+ // "item.alerts.private": "This item is private",
+ "item.alerts.private": "Bu öğe özel",
+
+ // "item.alerts.withdrawn": "This item has been withdrawn",
+ "item.alerts.withdrawn": "Bu ürün geri çekildi",
+
+
+
+ // "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": "Bu editör ile bir öğenin politikalarını görüntüleyebilir ve değiştirebilirsiniz, ayrıca bireysel ürün bileşenlerinin politikalarını değiştirebilirsiniz: Paketler ve Bitstream. Kısaca, bir öğe bir paket konteynırıdır ve paketler bitstream konteynırıdır. Konteynerler genellikle, bitstream yalnızca okuma / yazma politikalarına sahip olur.",
+
+ // "item.edit.authorizations.title": "Edit item's Policies",
+ "item.edit.authorizations.title": "Edit item's Politikalar",
+
+
+
+ // "item.badge.private": "Private",
+ "item.badge.private": "Özel",
+
+ // "item.badge.withdrawn": "Withdrawn",
+ "item.badge.withdrawn": "Çekilmiş",
+
+
+
+ // "item.bitstreams.upload.bundle": "Bundle",
+ "item.bitstreams.upload.bundle": "Paket",
+
+ // "item.bitstreams.upload.bundle.placeholder": "Select a bundle",
+ "item.bitstreams.upload.bundle.placeholder": "Bir paket seçin",
+
+ // "item.bitstreams.upload.bundle.new": "Create bundle",
+ "item.bitstreams.upload.bundle.new": "Paket oluştur",
+
+ // "item.bitstreams.upload.bundles.empty": "This item doesn\'t contain any bundles to upload a bitstream to.",
+ "item.bitstreams.upload.bundles.empty": "Bu öğe, bir bitstream yüklemek için herhangi bir paket içermiyor.",
+
+ // "item.bitstreams.upload.cancel": "Cancel",
+ "item.bitstreams.upload.cancel": "İptal",
+
+ // "item.bitstreams.upload.drop-message": "Drop a file to upload",
+ "item.bitstreams.upload.drop-message": "Yüklenecek bir dosya bırak",
+
+ // "item.bitstreams.upload.item": "Item: ",
+ "item.bitstreams.upload.item": "Öğe: ",
+
+ // "item.bitstreams.upload.notifications.bundle.created.content": "Successfully created new bundle.",
+ "item.bitstreams.upload.notifications.bundle.created.content": "Başarıyla yeni paket oluşturuldu.",
+
+ // "item.bitstreams.upload.notifications.bundle.created.title": "Created bundle",
+ "item.bitstreams.upload.notifications.bundle.created.title": "Paket oluşturdu",
+
+ // "item.bitstreams.upload.notifications.upload.failed": "Upload failed. Please verify the content before retrying.",
+ "item.bitstreams.upload.notifications.upload.failed": "Yükleme başarısız. Lütfen yeniden denemeden önce içeriği doğrulayın.",
+
+ // "item.bitstreams.upload.title": "Upload bitstream",
+ "item.bitstreams.upload.title": "Bitstream yükle",
+
+
+
+ // "item.edit.bitstreams.bundle.edit.buttons.upload": "Upload",
+ "item.edit.bitstreams.bundle.edit.buttons.upload": "Yükle",
+
+ // "item.edit.bitstreams.bundle.displaying": "Currently displaying {{ amount }} bitstreams of {{ total }}.",
+ "item.edit.bitstreams.bundle.displaying": "Şu anda görüntülenen {{ amount }} bitstream {{ total }}.",
+
+ // "item.edit.bitstreams.bundle.load.all": "Load all ({{ total }})",
+ "item.edit.bitstreams.bundle.load.all": "Hepsini yükle ({{ total }})",
+
+ // "item.edit.bitstreams.bundle.load.more": "Load more",
+ "item.edit.bitstreams.bundle.load.more": "Daha fazla yükle",
+
+ // "item.edit.bitstreams.bundle.name": "BUNDLE: {{ name }}",
+ "item.edit.bitstreams.bundle.name": "PAKET: {{ name }}",
+
+ // "item.edit.bitstreams.discard-button": "Discard",
+ "item.edit.bitstreams.discard-button": "Yoksay",
+
+ // "item.edit.bitstreams.edit.buttons.download": "Download",
+ "item.edit.bitstreams.edit.buttons.download": "İndir",
+
+ // "item.edit.bitstreams.edit.buttons.drag": "Drag",
+ "item.edit.bitstreams.edit.buttons.drag": "Sürükle",
+
+ // "item.edit.bitstreams.edit.buttons.edit": "Edit",
+ "item.edit.bitstreams.edit.buttons.edit": "Düzenle",
+
+ // "item.edit.bitstreams.edit.buttons.remove": "Remove",
+ "item.edit.bitstreams.edit.buttons.remove": "Kaldır",
+
+ // "item.edit.bitstreams.edit.buttons.undo": "Undo changes",
+ "item.edit.bitstreams.edit.buttons.undo": "Değişiklikleri geri al",
+
+ // "item.edit.bitstreams.empty": "This item doesn't contain any bitstreams. Click the upload button to create one.",
+ "item.edit.bitstreams.empty": "Bu öge herhangi bir veri içermiyor. Bir tane oluşturmak için yükle düğmesini tıklayınız.",
+
+ // "item.edit.bitstreams.headers.actions": "Actions",
+ "item.edit.bitstreams.headers.actions": "İşlemler",
+
+ // "item.edit.bitstreams.headers.bundle": "Bundle",
+ "item.edit.bitstreams.headers.bundle": "Seri",
+
+ // "item.edit.bitstreams.headers.description": "Description",
+ "item.edit.bitstreams.headers.description": "Açıklama",
+
+ // "item.edit.bitstreams.headers.format": "Format",
+ "item.edit.bitstreams.headers.format": "Format",
+
+ // "item.edit.bitstreams.headers.name": "Name",
+ "item.edit.bitstreams.headers.name": "Ad",
+
+ // "item.edit.bitstreams.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button",
+ "item.edit.bitstreams.notifications.discarded.content": "Yaptığınız değişiklikler silindi.Yaptığınız değişiklikleri geri yüklemek için 'Geri al' butonuna tıklayınız.",
+
+ // "item.edit.bitstreams.notifications.discarded.title": "Changes discarded",
+ "item.edit.bitstreams.notifications.discarded.title": "Değişiklikler silindi.",
+
+ // "item.edit.bitstreams.notifications.move.failed.title": "Error moving bitstreams",
+ "item.edit.bitstreams.notifications.move.failed.title": "Veri taşınırken bir hata oluştu.",
+
+ // "item.edit.bitstreams.notifications.move.saved.content": "Your move changes to this item's bitstreams and bundles have been saved.",
+ "item.edit.bitstreams.notifications.move.saved.content": "Bu öğenin bitstreamda ve paketlerinde yaptığınız değişiklikler kaydedildi.",
+
+ // "item.edit.bitstreams.notifications.move.saved.title": "Move changes saved",
+ "item.edit.bitstreams.notifications.move.saved.title": "Değişiklikler kaydedildi.",
+
+ // "item.edit.bitstreams.notifications.outdated.content": "The item you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts",
+ "item.edit.bitstreams.notifications.outdated.content": "Şu anda üzerinde çalıştığınız öğe başka bir kullanıcı tarafından değiştirildi.Mevcut değişiklikleriniz çakışma olmasını önlemek için silindi. ",
+
+ // "item.edit.bitstreams.notifications.outdated.title": "Changes outdated",
+ "item.edit.bitstreams.notifications.outdated.title": "Değişiklikler zaman aşımına uğradı.",
+
+ // "item.edit.bitstreams.notifications.remove.failed.title": "Error deleting bitstream",
+ "item.edit.bitstreams.notifications.remove.failed.title": "Bitstream silinirken bir hata oluştu",
+
+ // "item.edit.bitstreams.notifications.remove.saved.content": "Your removal changes to this item's bitstreams have been saved.",
+ "item.edit.bitstreams.notifications.remove.saved.content": "Bu öğenin bitstreamda yaptığınız kaldırma değişiklikleri kaydedildi.",
+
+ // "item.edit.bitstreams.notifications.remove.saved.title": "Removal changes saved",
+ "item.edit.bitstreams.notifications.remove.saved.title": "Kaldırma değişiklikleri kaydedildi.",
+
+ // "item.edit.bitstreams.reinstate-button": "Undo",
+ "item.edit.bitstreams.reinstate-button": "Geri al",
+
+ // "item.edit.bitstreams.save-button": "Save",
+ "item.edit.bitstreams.save-button": "Kaydet",
+
+ // "item.edit.bitstreams.upload-button": "Upload",
+ "item.edit.bitstreams.upload-button": "Yükle",
+
+
+
+ // "item.edit.delete.cancel": "Cancel",
+ "item.edit.delete.cancel": "İptal et",
+
+ // "item.edit.delete.confirm": "Delete",
+ "item.edit.delete.confirm": "Sil",
+
+ // "item.edit.delete.description": "Are you sure this item should be completely deleted? Caution: At present, no tombstone would be left.",
+ "item.edit.delete.description": "Bu öğeyi kalıcı olarak silmek istedğinizden emin misiniz? Silme işlemi gerçekleştikten sonra geri alınamaz. ",
+
+ // "item.edit.delete.error": "An error occurred while deleting the item",
+ "item.edit.delete.error": "Silme işlemi sırasında bir hata oluştu.",
+
+ // "item.edit.delete.header": "Delete item: {{ id }}",
+ "item.edit.delete.header": "Silinecek öğeler: {{ id }}",
+
+ // "item.edit.delete.success": "The item has been deleted",
+ "item.edit.delete.success": "Öğe silindi.",
+
+ // "item.edit.head": "Edit Item",
+ "item.edit.head": "Ögeleri düzenle",
+
+ // "item.edit.breadcrumbs": "Edit Item",
+ "item.edit.breadcrumbs": "Ögeleri düzenle",
+
+
+ // "item.edit.tabs.mapper.head": "Collection Mapper",
+ "item.edit.tabs.mapper.head": "Koleksiyon eşleştiricisi",
+
+ // "item.edit.tabs.item-mapper.title": "Item Edit - Collection Mapper",
+ "item.edit.tabs.item-mapper.title": "Öge düzenle- Koleksiyon eşleştiricisi",
+
+ // "item.edit.item-mapper.buttons.add": "Map item to selected collections",
+ "item.edit.item-mapper.buttons.add": "Ögeyi seçili koleksiyonlarla eşleştir",
+
+ // "item.edit.item-mapper.buttons.remove": "Remove item's mapping for selected collections",
+ "item.edit.item-mapper.buttons.remove": "Seçili koleksiyonların öge eşleştirmelerini kaldır",
+
+ // "item.edit.item-mapper.cancel": "Cancel",
+ "item.edit.item-mapper.cancel": "İptal et",
+
+ // "item.edit.item-mapper.description": "This is the item mapper tool that allows administrators to map this item to other collections. You can search for collections and map them, or browse the list of collections the item is currently mapped to.",
+ "item.edit.item-mapper.description": "Öge eşleme aracı, yöneticilerin bu öğeyi diğer koleksiyonlarla eşleştirmesini ögeleri eşleştirmesini sağlar. Koleksiyonları arayabilir ve bunları eşleyebilir veya öğenin şu anda eşlendiği koleksiyonların listesine göz atabilirsiniz.",
+
+ // "item.edit.item-mapper.head": "Item Mapper - Map Item to Collections",
+ "item.edit.item-mapper.head": "Öge eşleştirici - Ögeleri koleksiyonlarla eşleştirir",
+
+ // "item.edit.item-mapper.item": "Item: \"{{name}} \"",
+ "item.edit.item-mapper.item": "Öge: \"{{name}} \"",
+
+ // "item.edit.item-mapper.no-search": "Please enter a query to search",
+ "item.edit.item-mapper.no-search": "Lütfen arama yapmak için bir soru giriniz.",
+
+ // "item.edit.item-mapper.notifications.add.error.content": "Errors occurred for mapping of item to {{amount}} collections.",
+ "item.edit.item-mapper.notifications.add.error.content": "Ögelerin {{amount}} koleksiyonlarla eşleştirirken bir hata oluştu.",
+
+ // "item.edit.item-mapper.notifications.add.error.head": "Mapping errors",
+ "item.edit.item-mapper.notifications.add.error.head": "Eşleştirme hataları",
+
+ // "item.edit.item-mapper.notifications.add.success.content": "Successfully mapped item to {{amount}} collections.",
+ "item.edit.item-mapper.notifications.add.success.content": "Ögeler {{amount}} koleksiyonlarla başarıyla eşleştirildi.",
+
+ // "item.edit.item-mapper.notifications.add.success.head": "Mapping completed",
+ "item.edit.item-mapper.notifications.add.success.head": "Eşleştirme tamamlandı.",
+
+ // "item.edit.item-mapper.notifications.remove.error.content": "Errors occurred for the removal of the mapping to {{amount}} collections.",
+ "item.edit.item-mapper.notifications.remove.error.content": "Ögelerin {{amount}} koleksiyonlarla eşleştirmeleri kaldırılırken bir hata oluştu.",
+
+ // "item.edit.item-mapper.notifications.remove.error.head": "Removal of mapping errors",
+ "item.edit.item-mapper.notifications.remove.error.head": "Eşleştirme hatalarının kaldırılması",
+
+ // "item.edit.item-mapper.notifications.remove.success.content": "Successfully removed mapping of item to {{amount}} collections.",
+ "item.edit.item-mapper.notifications.remove.success.content": "Ögeler {{amount}} koleksiyonlarla eşleştirmeleri başarıyla kaldırıldı.",
+
+ // "item.edit.item-mapper.notifications.remove.success.head": "Removal of mapping completed",
+ "item.edit.item-mapper.notifications.remove.success.head": "Eşleştirmelerin kaldırılması tamamlandı.",
+
+ // "item.edit.item-mapper.tabs.browse": "Browse mapped collections",
+ "item.edit.item-mapper.tabs.browse": "Eşleştirilen koleksiyonları ara",
+
+ // "item.edit.item-mapper.tabs.map": "Map new collections",
+ "item.edit.item-mapper.tabs.map": "Yeni koleksiyonları eşleştir",
+
+
+
+ // "item.edit.metadata.add-button": "Add",
+ "item.edit.metadata.add-button": "Ekle",
+
+ // "item.edit.metadata.discard-button": "Discard",
+ "item.edit.metadata.discard-button": "Sil",
+
+ // "item.edit.metadata.edit.buttons.edit": "Edit",
+ "item.edit.metadata.edit.buttons.edit": "Düzenle",
+
+ // "item.edit.metadata.edit.buttons.remove": "Remove",
+ "item.edit.metadata.edit.buttons.remove": "Kaldır",
+
+ // "item.edit.metadata.edit.buttons.undo": "Undo changes",
+ "item.edit.metadata.edit.buttons.undo": "Değişiklikleri geri al",
+
+ // "item.edit.metadata.edit.buttons.unedit": "Stop editing",
+ "item.edit.metadata.edit.buttons.unedit": "Düzenlemeyi bitir",
+
+ // "item.edit.metadata.empty": "The item currently doesn't contain any metadata. Click Add to start adding a metadata value.",
+ "item.edit.metadata.empty": "Öğe şu anda herhangi bir metadata içermiyor. Bir metadata değeri eklemeye başlamak için Ekle'ye tıklayın.",
+
+ // "item.edit.metadata.headers.edit": "Edit",
+ "item.edit.metadata.headers.edit": "Düzenle",
+
+ // "item.edit.metadata.headers.field": "Field",
+ "item.edit.metadata.headers.field": "Alan",
+
+ // "item.edit.metadata.headers.language": "Lang",
+ "item.edit.metadata.headers.language": "Dil",
+
+ // "item.edit.metadata.headers.value": "Value",
+ "item.edit.metadata.headers.value": "Değer",
+
+ // "item.edit.metadata.metadatafield.invalid": "Please choose a valid metadata field",
+ "item.edit.metadata.metadatafield.invalid": "Lütfen geçerli bir metadata alanı seçin",
+
+ // "item.edit.metadata.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button",
+ "item.edit.metadata.notifications.discarded.content": "Yaptığınız değişiklikler silindi.Yaptığınız değişiklikleri geri yüklemek için 'Geri al' butonuna tıklayınız.",
+
+ // "item.edit.metadata.notifications.discarded.title": "Changed discarded",
+ "item.edit.metadata.notifications.discarded.title": "Değişiklikler silindi",
+
+ // "item.edit.metadata.notifications.error.title": "An error occurred",
+ "item.edit.metadata.notifications.error.title": "Bir hata oluştu",
+
+ // "item.edit.metadata.notifications.invalid.content": "Your changes were not saved. Please make sure all fields are valid before you save.",
+ "item.edit.metadata.notifications.invalid.content": "Değişiklikleriniz kaydedilmedi. Lütfen kaydetmeden önce tüm alanların geçerli olduğundan emin olun.",
+
+ // "item.edit.metadata.notifications.invalid.title": "Metadata invalid",
+ "item.edit.metadata.notifications.invalid.title": "Metadata geçersiz",
+
+ // "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": "Şu anda üzerinde çalıştığınız öge başka bir kullanıcı tarafından değiştirildi.Mevcut değişiklikleriniz çakışma olmasını önlemek için silindi.",
+
+ // "item.edit.metadata.notifications.outdated.title": "Changed outdated",
+ "item.edit.metadata.notifications.outdated.title": "Değişiklikler zaman aşımına uğradı.",
+
+ // "item.edit.metadata.notifications.saved.content": "Your changes to this item's metadata were saved.",
+ "item.edit.metadata.notifications.saved.content": "Ögenin metadatalarında yaptığınız değişiklikler kaydedildi.",
+
+ // "item.edit.metadata.notifications.saved.title": "Metadata saved",
+ "item.edit.metadata.notifications.saved.title": "Metadatalar kaydedildi",
+
+ // "item.edit.metadata.reinstate-button": "Undo",
+ "item.edit.metadata.reinstate-button": "Geri al",
+
+ // "item.edit.metadata.save-button": "Save",
+ "item.edit.metadata.save-button": "Kaydet",
+
+
+
+ // "item.edit.modify.overview.field": "Field",
+ "item.edit.modify.overview.field": "Alan",
+
+ // "item.edit.modify.overview.language": "Language",
+ "item.edit.modify.overview.language": "Dil",
+
+ // "item.edit.modify.overview.value": "Value",
+ "item.edit.modify.overview.value": "Değer",
+
+
+
+ // "item.edit.move.cancel": "Cancel",
+ "item.edit.move.cancel": "İptal et",
+
+ // "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": "Bu öğeyi taşımak istediğiniz koleksiyonu seçin. Görüntülenen koleksiyonların listesini daraltmak için arama kısmına bir arama sorgusu girebilirsiniz.",
+
+ // "item.edit.move.error": "An error occurred when attempting to move the item",
+ "item.edit.move.error": "Öğeyi taşımaya çalışırken bir hata oluştu",
+
+ // "item.edit.move.head": "Move item: {{id}}",
+ "item.edit.move.head": "Kaldırılacak öge: {{id}}",
+
+ // "item.edit.move.inheritpolicies.checkbox": "Inherit policies",
+ "item.edit.move.inheritpolicies.checkbox": "Poliçeyi devral",
+
+ // "item.edit.move.inheritpolicies.description": "Inherit the default policies of the destination collection",
+ "item.edit.move.inheritpolicies.description": "Hedef koleksiyonun varsayılan poliçelerini devral",
+
+ // "item.edit.move.move": "Move",
+ "item.edit.move.move": "Taşı",
+
+ // "item.edit.move.processing": "Moving...",
+ "item.edit.move.processing": "Taşınıyor...",
+
+ // "item.edit.move.search.placeholder": "Enter a search query to look for collections",
+ "item.edit.move.search.placeholder": "Lütfen koleksiyonları aramak için bir arama sorgusu giriniz.",
+
+ // "item.edit.move.success": "The item has been moved successfully",
+ "item.edit.move.success": "Öge başarıyla taşındı",
+
+ // "item.edit.move.title": "Move item",
+ "item.edit.move.title": "Ögeleri taşı",
+
+
+
+ // "item.edit.private.cancel": "Cancel",
+ "item.edit.private.cancel": "İptal et",
+
+ // "item.edit.private.confirm": "Make it Private",
+ "item.edit.private.confirm": "Gizli yap",
+
+ // "item.edit.private.description": "Are you sure this item should be made private in the archive?",
+ "item.edit.private.description": "Bu öğenin arşivde gizli yapılması gerektiğinden emin misiniz?",
+
+ // "item.edit.private.error": "An error occurred while making the item private",
+ "item.edit.private.error": "Öge gizli yapılırken bir hata oluştu",
+
+ // "item.edit.private.header": "Make item private: {{ id }}",
+ "item.edit.private.header": "Ögeyi gizli yap: {{ id }}",
+
+ // "item.edit.private.success": "The item is now private",
+ "item.edit.private.success": "Öge gizlendi",
+
+
+
+ // "item.edit.public.cancel": "Cancel",
+ "item.edit.public.cancel": "İptal et",
+
+ // "item.edit.public.confirm": "Make it Public",
+ "item.edit.public.confirm": "Ögeyi herkese açık yap",
+
+ // "item.edit.public.description": "Are you sure this item should be made public in the archive?",
+ "item.edit.public.description": "Bu öğenin arşivde herkese açık yapılması gerektiğinden emin misiniz?",
+
+ // "item.edit.public.error": "An error occurred while making the item public",
+ "item.edit.public.error": "Öge herkese açık yapılırken bir hata oluştu",
+
+ // "item.edit.public.header": "Make item public: {{ id }}",
+ "item.edit.public.header": "Herkese açık yapılacak öge: {{ id }}",
+
+ // "item.edit.public.success": "The item is now public",
+ "item.edit.public.success": "Öge herkese açık yapıldı",
+
+
+
+ // "item.edit.reinstate.cancel": "Cancel",
+ "item.edit.reinstate.cancel": "İptal et",
+
+ // "item.edit.reinstate.confirm": "Reinstate",
+ "item.edit.reinstate.confirm": "Getir yükle",
+
+ // "item.edit.reinstate.description": "Are you sure this item should be reinstated to the archive?",
+ "item.edit.reinstate.description": "Bu öğenin arşive geri yüklenmesi gerektiğinden emin misiniz?",
+
+ // "item.edit.reinstate.error": "An error occurred while reinstating the item",
+ "item.edit.reinstate.error": "Öğe geri yüklenirken bir hata oluştu",
+
+ // "item.edit.reinstate.header": "Reinstate item: {{ id }}",
+ "item.edit.reinstate.header": "Geri yüklenecek öge: {{ id }}",
+
+ // "item.edit.reinstate.success": "The item was reinstated successfully",
+ "item.edit.reinstate.success": "Öge başarıyla geri yüklendi",
+
+
+
+ // "item.edit.relationships.discard-button": "Discard",
+ "item.edit.relationships.discard-button": "Sil",
+
+ // "item.edit.relationships.edit.buttons.add": "Add",
+ "item.edit.relationships.edit.buttons.add": "Ekle",
+
+ // "item.edit.relationships.edit.buttons.remove": "Remove",
+ "item.edit.relationships.edit.buttons.remove": "Kaldır",
+
+ // "item.edit.relationships.edit.buttons.undo": "Undo changes",
+ "item.edit.relationships.edit.buttons.undo": "Değişiklikleri geri al",
+
+ // "item.edit.relationships.no-relationships": "No relationships",
+ "item.edit.relationships.no-relationships": "İlişki yok",
+
+ // "item.edit.relationships.notifications.discarded.content": "Your changes were discarded. To reinstate your changes click the 'Undo' button",
+ "item.edit.relationships.notifications.discarded.content": "Yaptığınız değişiklikler silindi.Yaptığınız değişiklikleri geri yüklemek için 'Geri al' butonuna tıklayınız.",
+
+ // "item.edit.relationships.notifications.discarded.title": "Changes discarded",
+ "item.edit.relationships.notifications.discarded.title": "Değişiklikler silindi",
+
+ // "item.edit.relationships.notifications.failed.title": "Error editing relationships",
+ "item.edit.relationships.notifications.failed.title": "İlişkileri düzenlemede hata",
+
+ // "item.edit.relationships.notifications.outdated.content": "The item you're currently working on has been changed by another user. Your current changes are discarded to prevent conflicts",
+ "item.edit.relationships.notifications.outdated.content": "Şu anda üzerinde çalıştığınız öge başka bir kullanıcı tarafından değiştirildi.Mevcut değişiklikleriniz çakışma olmasını önlemek için silindi.",
+
+ // "item.edit.relationships.notifications.outdated.title": "Changes outdated",
+ "item.edit.relationships.notifications.outdated.title": "Değişiklikler zaman aşımına uğradı.",
+
+ // "item.edit.relationships.notifications.saved.content": "Your changes to this item's relationships were saved.",
+ "item.edit.relationships.notifications.saved.content": "Bu öğenin ilişkilerinde yaptığınız değişiklikler kaydedildi.",
+
+ // "item.edit.relationships.notifications.saved.title": "Relationships saved",
+ "item.edit.relationships.notifications.saved.title": "İlişkiler kaydedildi",
+
+ // "item.edit.relationships.reinstate-button": "Undo",
+ "item.edit.relationships.reinstate-button": "Geri al",
+
+ // "item.edit.relationships.save-button": "Save",
+ "item.edit.relationships.save-button": "Kaydet",
+
+ // "item.edit.relationships.no-entity-type": "Add 'dspace.entity.type' metadata to enable relationships for this item",
+ "item.edit.relationships.no-entity-type": "Bu öğe için ilişkileri etkinleştirmek için 'dspace.entity.type' metadatalarını ekleyin",
+
+
+
+ // "item.edit.tabs.bitstreams.head": "Bitstreams",
+ "item.edit.tabs.bitstreams.head": "Veri akışları",
+
+ // "item.edit.tabs.bitstreams.title": "Item Edit - Bitstreams",
+ "item.edit.tabs.bitstreams.title": "Öge düzenle - Veri akışları",
+
+ // "item.edit.tabs.curate.head": "Curate",
+ "item.edit.tabs.curate.head": "Düzenleme",
+
+ // "item.edit.tabs.curate.title": "Item Edit - Curate",
+ "item.edit.tabs.curate.title": "Öge düzenle - Düzenleme",
+
+ // "item.edit.tabs.metadata.head": "Metadata",
+ "item.edit.tabs.metadata.head": "Metadata",
+
+ // "item.edit.tabs.metadata.title": "Item Edit - Metadata",
+ "item.edit.tabs.metadata.title": "Öge düzenle - Metadata",
+
+ // "item.edit.tabs.relationships.head": "Relationships",
+ "item.edit.tabs.relationships.head": "İlişkiler",
+
+ // "item.edit.tabs.relationships.title": "Item Edit - Relationships",
+ "item.edit.tabs.relationships.title": "Öge düzenle - İlişkiler",
+
+ // "item.edit.tabs.status.buttons.authorizations.button": "Authorizations...",
+ "item.edit.tabs.status.buttons.authorizations.button": "Yetkilendiriliyor...",
+
+ // "item.edit.tabs.status.buttons.authorizations.label": "Edit item's authorization policies",
+ "item.edit.tabs.status.buttons.authorizations.label": "Öğenin yetkilendirme politikalarını düzenle",
+
+ // "item.edit.tabs.status.buttons.delete.button": "Permanently delete",
+ "item.edit.tabs.status.buttons.delete.button": "Kalıcı olarak sil",
+
+ // "item.edit.tabs.status.buttons.delete.label": "Completely expunge item",
+ "item.edit.tabs.status.buttons.delete.label": "Ögeyi kalıcı olarak sil",
+
+ // "item.edit.tabs.status.buttons.mappedCollections.button": "Mapped collections",
+ "item.edit.tabs.status.buttons.mappedCollections.button": "Eşleştirilmiş koleksiyonlar",
+
+ // "item.edit.tabs.status.buttons.mappedCollections.label": "Manage mapped collections",
+ "item.edit.tabs.status.buttons.mappedCollections.label": "Eşlenen koleksiyonları yönetin",
+
+ // "item.edit.tabs.status.buttons.move.button": "Move...",
+ "item.edit.tabs.status.buttons.move.button": "Taşınıyor...",
+
+ // "item.edit.tabs.status.buttons.move.label": "Move item to another collection",
+ "item.edit.tabs.status.buttons.move.label": "Öğeyi başka bir koleksiyona taşı",
+
+ // "item.edit.tabs.status.buttons.private.button": "Make it private...",
+ "item.edit.tabs.status.buttons.private.button": "Gizleniyor...",
+
+ // "item.edit.tabs.status.buttons.private.label": "Make item private",
+ "item.edit.tabs.status.buttons.private.label": "Ögeyi gizle",
+
+ // "item.edit.tabs.status.buttons.public.button": "Make it public...",
+ "item.edit.tabs.status.buttons.public.button": "Öge herkese açık yapılıyor...",
+
+ // "item.edit.tabs.status.buttons.public.label": "Make item public",
+ "item.edit.tabs.status.buttons.public.label": "Herkese açık yap",
+
+ // "item.edit.tabs.status.buttons.reinstate.button": "Reinstate...",
+ "item.edit.tabs.status.buttons.reinstate.button": "Geri yükleniyor...",
+
+ // "item.edit.tabs.status.buttons.reinstate.label": "Reinstate item into the repository",
+ "item.edit.tabs.status.buttons.reinstate.label": "Öğeyi depoya geri yükle",
+
+ // "item.edit.tabs.status.buttons.withdraw.button": "Withdraw...",
+ "item.edit.tabs.status.buttons.withdraw.button": "Çıkar...",
+
+ // "item.edit.tabs.status.buttons.withdraw.label": "Withdraw item from the repository",
+ "item.edit.tabs.status.buttons.withdraw.label": "Depodan öğeyi çıkar",
+
+ // "item.edit.tabs.status.description": "Welcome to the item management page. From here you can withdraw, reinstate, move or delete the item. You may also update or add new metadata / bitstreams on the other tabs.",
+ "item.edit.tabs.status.description": "Öğe yönetimi sayfasına hoş geldiniz. Buradan öğeyi çıkarabilir, geri yükleyebilir, taşıyabilir veya silebilirsiniz. Diğer sekmelerde de güncelleyebilir veya yeni metadata / bit akışları ekleyebilirsiniz.",
+
+ // "item.edit.tabs.status.head": "Status",
+ "item.edit.tabs.status.head": "Durum",
+
+ // "item.edit.tabs.status.labels.handle": "Handle",
+ "item.edit.tabs.status.labels.handle": "Handle",
+
+ // "item.edit.tabs.status.labels.id": "Item Internal ID",
+ "item.edit.tabs.status.labels.id": "Öge Dahili Kimliğ",
+
+ // "item.edit.tabs.status.labels.itemPage": "Item Page",
+ "item.edit.tabs.status.labels.itemPage": "Öge sayfası",
+
+ // "item.edit.tabs.status.labels.lastModified": "Last Modified",
+ "item.edit.tabs.status.labels.lastModified": "Son düzenleme",
+
+ // "item.edit.tabs.status.title": "Item Edit - Status",
+ "item.edit.tabs.status.title": "Öge düzenle - Durum",
+
+ // "item.edit.tabs.versionhistory.head": "Version History",
+ "item.edit.tabs.versionhistory.head": "Sürüm Geçmişi",
+
+ // "item.edit.tabs.versionhistory.title": "Item Edit - Version History",
+ "item.edit.tabs.versionhistory.title": "Öge düzenle - Sürüm Geçmişi",
+
+ // "item.edit.tabs.versionhistory.under-construction": "Editing or adding new versions is not yet possible in this user interface.",
+ "item.edit.tabs.versionhistory.under-construction": "Bu kullanıcı arayüzünde henüz yeni sürümleri düzenlemek veya eklemek mümkün değil.",
+
+ // "item.edit.tabs.view.head": "View Item",
+ "item.edit.tabs.view.head": "Ürünü incele",
+
+ // "item.edit.tabs.view.title": "Item Edit - View",
+ "item.edit.tabs.view.title": "Öge düzenle - incele",
+
+
+
+ // "item.edit.withdraw.cancel": "Cancel",
+ "item.edit.withdraw.cancel": "İptal et",
+
+ // "item.edit.withdraw.confirm": "Withdraw",
+ "item.edit.withdraw.confirm": "Çıkar",
+
+ // "item.edit.withdraw.description": "Are you sure this item should be withdrawn from the archive?",
+ "item.edit.withdraw.description": "Bu öğenin arşivden çıkartılması gerektiğinden emin misiniz?",
+
+ // "item.edit.withdraw.error": "An error occurred while withdrawing the item",
+ "item.edit.withdraw.error": "Öğe çıkartılırken bir hata oluştu",
+
+ // "item.edit.withdraw.header": "Withdraw item: {{ id }}",
+ "item.edit.withdraw.header": "Çıkarılan öge: {{ id }}",
+
+ // "item.edit.withdraw.success": "The item was withdrawn successfully",
+ "item.edit.withdraw.success": "Öğe başarıyla çıkartıldı",
+
+
+
+ // "item.listelement.badge": "Item",
+ "item.listelement.badge": "Öge",
+
+ // "item.page.description": "Description",
+ "item.page.description": "Açıklama",
+
+ // "item.page.edit": "Edit this item",
+ "item.page.edit": "Bu ögeyi düzenle",
+
+ // "item.page.journal-issn": "Journal ISSN",
+ "item.page.journal-issn": "Süreli Yayın ISSN",
+
+ // "item.page.journal-title": "Journal Title",
+ "item.page.journal-title": "Süreli Yayın başlığı",
+
+ // "item.page.publisher": "Publisa
\ No newline at end of file
From bc9f02f49ea3ebaf0106446b60bafa0023784ee9 Mon Sep 17 00:00:00 2001
From: SDGBot <38133100+itudevops@users.noreply.github.com>
Date: Fri, 22 Apr 2022 14:10:40 +0300
Subject: [PATCH 039/107] =?UTF-8?q?ITU=20BIDB=20t=C3=BCrk=C3=A7e=20dil=20d?=
=?UTF-8?q?este=C4=9Fi=20g=C3=BCncellemesi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Metaveri -> Metadata düzeltmesi
---
src/assets/i18n/tr.json5 | 58 ++++++++++++++++++++--------------------
1 file changed, 29 insertions(+), 29 deletions(-)
diff --git a/src/assets/i18n/tr.json5 b/src/assets/i18n/tr.json5
index 15a44481cb..9901a1e933 100644
--- a/src/assets/i18n/tr.json5
+++ b/src/assets/i18n/tr.json5
@@ -178,16 +178,16 @@
// "admin.registries.metadata.breadcrumbs": "Metadata registry",
- "admin.registries.metadata.breadcrumbs": "Metaveri kayıt defteri",
+ "admin.registries.metadata.breadcrumbs": "Metadata kayıt defteri",
// "admin.registries.metadata.description": "The metadata registry maintains a list of all metadata fields available in the repository. These fields may be divided amongst multiple schemas. However, DSpace requires the qualified Dublin Core schema.",
- "admin.registries.metadata.description": "Metaveri kayıt defteri, veri havuzda bulunan tüm metaveri alanlarının bir listesini tutar. Bu alanlar birden çok şema arasında bölünebilir. Ancak, DSpace nitelikli Dublin Core şemasını gerektirir.",
+ "admin.registries.metadata.description": "Metadata kayıt defteri, veri havuzda bulunan tüm metadata alanlarının bir listesini tutar. Bu alanlar birden çok şema arasında bölünebilir. Ancak, DSpace nitelikli Dublin Core şemasını gerektirir.",
// "admin.registries.metadata.form.create": "Create metadata schema",
- "admin.registries.metadata.form.create": "Metaveri şeması oluştur",
+ "admin.registries.metadata.form.create": "Metadata şeması oluştur",
// "admin.registries.metadata.form.edit": "Edit metadata schema",
- "admin.registries.metadata.form.edit": "Metaveri şemasını düzenle",
+ "admin.registries.metadata.form.edit": "Metadata şemasını düzenle",
// "admin.registries.metadata.form.name": "Name",
"admin.registries.metadata.form.name": "İsim",
@@ -196,10 +196,10 @@
"admin.registries.metadata.form.namespace": "Ad Alanı",
// "admin.registries.metadata.head": "Metadata Registry",
- "admin.registries.metadata.head": "Metaveri Kayıt Defteri",
+ "admin.registries.metadata.head": "Metadata Kayıt Defteri",
// "admin.registries.metadata.schemas.no-items": "No metadata schemas to show.",
- "admin.registries.metadata.schemas.no-items": "Gösterilecek metaveri alanı yok.",
+ "admin.registries.metadata.schemas.no-items": "Gösterilecek metadata alanı yok.",
// "admin.registries.metadata.schemas.table.delete": "Delete selected",
"admin.registries.metadata.schemas.table.delete": "Silme Seçildi",
@@ -214,21 +214,21 @@
"admin.registries.metadata.schemas.table.namespace": "Ad Alanı",
// "admin.registries.metadata.title": "DSpace Angular :: Metadata Registry",
- "admin.registries.metadata.title": "DSpace Angular :: Metaveri Kayıt Defteri",
+ "admin.registries.metadata.title": "DSpace Angular :: Metadata Kayıt Defteri",
// "admin.registries.schema.breadcrumbs": "Metadata schema",
- "admin.registries.schema.breadcrumbs": "Metaveri şeması",
+ "admin.registries.schema.breadcrumbs": "Metadata şeması",
// "admin.registries.schema.description": "This is the metadata schema for \"{{namespace}}\".",
"admin.registries.schema.description": "Bu, \"{{namesapce}}\" için metadata şemasıdır.",
// "admin.registries.schema.fields.head": "Schema metadata fields",
- "admin.registries.schema.fields.head": "Şema metaveri alanları",
+ "admin.registries.schema.fields.head": "Şema metadata alanları",
// "admin.registries.schema.fields.no-items": "No metadata fields to show.",
- "admin.registries.schema.fields.no-items": "Gösterilecek metaveri alanı yok.",
+ "admin.registries.schema.fields.no-items": "Gösterilecek metadata alanı yok.",
// "admin.registries.schema.fields.table.delete": "Delete selected",
"admin.registries.schema.fields.table.delete": "Silme Seçildi",
@@ -240,10 +240,10 @@
"admin.registries.schema.fields.table.scopenote": "Kapsam Notu",
// "admin.registries.schema.form.create": "Create metadata field",
- "admin.registries.schema.form.create": "Metaveri alanı oluştur",
+ "admin.registries.schema.form.create": "Metadata alanı oluştur",
// "admin.registries.schema.form.edit": "Edit metadata field",
- "admin.registries.schema.form.edit": "Metaveri alanını düzenle",
+ "admin.registries.schema.form.edit": "Metadata alanını düzenle",
// "admin.registries.schema.form.element": "Element",
"admin.registries.schema.form.element": "Element",
@@ -255,34 +255,34 @@
"admin.registries.schema.form.scopenote": "Kapsam Notu",
// "admin.registries.schema.head": "Metadata Schema",
- "admin.registries.schema.head": "Metaveri Şeması",
+ "admin.registries.schema.head": "Metadata Şeması",
// "admin.registries.schema.notification.created": "Successfully created metadata schema \"{{prefix}}\"",
- "admin.registries.schema.notification.created": "Metaveri şeması \"{{prefix}}\" başarıyla oluşturuldu",
+ "admin.registries.schema.notification.created": "Metadata şeması \"{{prefix}}\" başarıyla oluşturuldu",
// "admin.registries.schema.notification.deleted.failure": "Failed to delete {{amount}} metadata schemas",
- "admin.registries.schema.notification.deleted.failure": "{{amount}} metaveri şeması silinemedi",
+ "admin.registries.schema.notification.deleted.failure": "{{amount}} metadata şeması silinemedi",
// "admin.registries.schema.notification.deleted.success": "Successfully deleted {{amount}} metadata schemas",
- "admin.registries.schema.notification.deleted.success": "{{amount}} metaveri şeması başarıyla silindi",
+ "admin.registries.schema.notification.deleted.success": "{{amount}} metadata şeması başarıyla silindi",
// "admin.registries.schema.notification.edited": "Successfully edited metadata schema \"{{prefix}}\"",
- "admin.registries.schema.notification.edited": "Metaveri şeması \"{{prefix}}\" başarıyla düzenlendi",
+ "admin.registries.schema.notification.edited": "Metadata şeması \"{{prefix}}\" başarıyla düzenlendi",
// "admin.registries.schema.notification.failure": "Error",
"admin.registries.schema.notification.failure": "Hata",
// "admin.registries.schema.notification.field.created": "Successfully created metadata field \"{{field}}\"",
- "admin.registries.schema.notification.field.created": "\"{{field}}\" metaveri alanı başarıyla oluşturuldu",
+ "admin.registries.schema.notification.field.created": "\"{{field}}\" metadata alanı başarıyla oluşturuldu",
// "admin.registries.schema.notification.field.deleted.failure": "Failed to delete {{amount}} metadata fields",
- "admin.registries.schema.notification.field.deleted.failure": "{{amount}} metaveri alanı silinemedi",
+ "admin.registries.schema.notification.field.deleted.failure": "{{amount}} metadata alanı silinemedi",
// "admin.registries.schema.notification.field.deleted.success": "Successfully deleted {{amount}} metadata fields",
- "admin.registries.schema.notification.field.deleted.success": "{{amount}} metaveri alanı başarıyla silindi",
+ "admin.registries.schema.notification.field.deleted.success": "{{amount}} metadata alanı başarıyla silindi",
// "admin.registries.schema.notification.field.edited": "Successfully edited metadata field \"{{field}}\"",
- "admin.registries.schema.notification.field.edited": "Metaveri alanı \"{{field}}\" başarıyla düzenlendi",
+ "admin.registries.schema.notification.field.edited": "Metadata alanı \"{{field}}\" başarıyla düzenlendi",
// "admin.registries.schema.notification.success": "Success",
"admin.registries.schema.notification.success": "Başarılı",
@@ -291,7 +291,7 @@
"admin.registries.schema.return": "Geri Dön",
// "admin.registries.schema.title": "DSpace Angular :: Metadata Schema Registry",
- "admin.registries.schema.title": "DSpace Angular :: Metaveri Şeması Kayıt Defteri",
+ "admin.registries.schema.title": "DSpace Angular :: Metadata Şeması Kayıt Defteri",
@@ -320,7 +320,7 @@
"admin.access-control.epeople.button.see-all": "Browse All",
// "admin.access-control.epeople.search.scope.metadata": "Metadata",
- "admin.access-control.epeople.search.scope.metadata": "Metaveri",
+ "admin.access-control.epeople.search.scope.metadata": "Metadata",
// "admin.access-control.epeople.search.scope.email": "E-mail (exact)",
"admin.access-control.epeople.search.scope.email": "E-posta (tam)",
@@ -552,7 +552,7 @@
"admin.access-control.groups.form.members-list.headMembers": "Mevcut Üyeler",
// "admin.access-control.groups.form.members-list.search.scope.metadata": "Metadata",
- "admin.access-control.groups.form.members-list.search.scope.metadata": "Metaveri",
+ "admin.access-control.groups.form.members-list.search.scope.metadata": "Metadata",
// "admin.access-control.groups.form.members-list.search.scope.email": "E-mail (exact)",
"admin.access-control.groups.form.members-list.search.scope.email": "E-posta (tam)",
@@ -718,22 +718,22 @@
// "admin.metadata-import.breadcrumbs": "Import Metadata",
- "admin.metadata-import.breadcrumbs": "Metaverileri İçe Aktar",
+ "admin.metadata-import.breadcrumbs": "Metadataları İçe Aktar",
// "admin.metadata-import.title": "Import Metadata",
- "admin.metadata-import.title": "Metaverileri İçe Aktar",
+ "admin.metadata-import.title": "Metadataları İçe Aktar",
// "admin.metadata-import.page.header": "Import Metadata",
- "admin.metadata-import.page.header": "Metaverileri İçe Aktar",
+ "admin.metadata-import.page.header": "Metadataları İçe Aktar",
// "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": "Dosyalarda toplu metadata işlemleri içeren CSV dosyalarını buraya bırakabilir veya bunlara göz atabilirsiniz.",
// "admin.metadata-import.page.dropMsg": "Drop a metadata CSV to import",
- "admin.metadata-import.page.dropMsg": "İçe aktarmak için bir metaveri CSV'si bırakın",
+ "admin.metadata-import.page.dropMsg": "İçe aktarmak için bir metadata CSV'si bırakın",
// "admin.metadata-import.page.dropMsgReplace": "Drop to replace the metadata CSV to import",
- "admin.metadata-import.page.dropMsgReplace": "İçe aktarılacak CSV metaverilerini değiştirmek için bırakın",
+ "admin.metadata-import.page.dropMsgReplace": "İçe aktarılacak CSV metadatalarını değiştirmek için bırakın",
// "admin.metadata-import.page.button.return": "Return",
"admin.metadata-import.page.button.return": "Geri Dön",
From 7fd7eb31cb7a60a38054680d9edd83e163849925 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Sat, 23 Apr 2022 16:04:48 +1200
Subject: [PATCH 040/107] [TLC-254] Remove some unwanted (ported) methods from
form builder
---
.../form/builder/form-builder.service.ts | 72 -------------------
1 file changed, 72 deletions(-)
diff --git a/src/app/shared/form/builder/form-builder.service.ts b/src/app/shared/form/builder/form-builder.service.ts
index ec3b495aa9..6a3b659bff 100644
--- a/src/app/shared/form/builder/form-builder.service.ts
+++ b/src/app/shared/form/builder/form-builder.service.ts
@@ -389,15 +389,6 @@ export class FormBuilderService extends DynamicFormService {
return (tempModel.id !== tempModel.name) ? tempModel.name : tempModel.id;
}
- /**
- * Add new form model to formModels map
- * @param id id of model
- * @param model model
- */
- addFormModel(id: string, model: DynamicFormControlModel[]): void {
- this.formModels.set(id, model);
- }
-
/**
* If present, remove form model from formModels map
* @param id id of model
@@ -427,44 +418,6 @@ export class FormBuilderService extends DynamicFormService {
}
}
- /**
- * This method searches a field in all forms instantiated
- * by form.component and, if found, it updates its value
- *
- * @param fieldId id of field to update
- * @param value new value to set
- * @return the model updated if found
- */
- updateModelValue(fieldId: string, value: FormFieldMetadataValueObject): DynamicFormControlModel {
- let returnModel = null;
- this.formModels.forEach((models, formId) => {
- const fieldModel: any = this.findById(fieldId, models);
- if (hasValue(fieldModel)) {
- if (isNotEmpty(value)) {
- if (fieldModel.repeatable && isNotEmpty(fieldModel.value)) {
- // if model is repeatable and has already a value add a new field instead of replacing it
- const formGroup = this.formGroups.get(formId);
- const arrayContext = fieldModel.parent?.context;
- if (isNotEmpty(formGroup) && isNotEmpty(arrayContext)) {
- const formArrayControl = this.getFormControlByModel(formGroup, arrayContext) as FormArray;
- const index = arrayContext?.groups?.length;
- this.insertFormArrayGroup(index, formArrayControl, arrayContext);
- const newAddedModel: any = this.findById(fieldId, models, index);
- this.detectChanges();
- newAddedModel.value = value;
- returnModel = newAddedModel;
- }
- } else {
- fieldModel.value = value;
- returnModel = fieldModel;
- }
- }
- return;
- }
- });
- return returnModel;
- }
-
/**
* Calculate the metadata list related to the event.
* @param event
@@ -537,29 +490,4 @@ export class FormBuilderService extends DynamicFormService {
return Object.keys(result);
}
- /**
- * Add new formbuilder in forma array by copying current formBuilder index
- * @param index index of formBuilder selected to be copied
- * @param formArray formArray of the inline group forms
- * @param formArrayModel formArrayModel model of forms that will be created
- */
- copyFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel) {
-
- const groupModel = formArrayModel.insertGroup(index);
- const previousGroup = formArray.controls[index] as FormGroup;
- const newGroup = this.createFormGroup(groupModel.group, null, groupModel);
- const previousKey = Object.keys(previousGroup.getRawValue())[0];
- const newKey = Object.keys(newGroup.getRawValue())[0];
-
- if (!isObjectEmpty(previousGroup.getRawValue()[previousKey])) {
- newGroup.get(newKey).setValue(previousGroup.getRawValue()[previousKey]);
- }
-
- formArray.insert(index, newGroup);
-
- return newGroup;
- }
-
-
-
}
From d3a78b8ad5fc76e5aa6cc1db529b620f449c09ab Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Sat, 23 Apr 2022 16:05:20 +1200
Subject: [PATCH 041/107] [TLC-254] Add getTypeBindRelations helper method to
bind service
---
.../ds-dynamic-type-bind-relation.service.ts | 18 +++++++++++++++++-
1 file changed, 17 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 f3e93790f0..40e80bc34b 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
@@ -11,7 +11,7 @@ import {
DynamicFormControlMatcher,
DynamicFormControlModel,
DynamicFormControlRelation,
- DynamicFormRelationService,
+ DynamicFormRelationService, MATCH_VISIBLE,
OR_OPERATOR
} from '@ng-dynamic-forms/core';
@@ -217,4 +217,20 @@ export class DsDynamicTypeBindRelationService {
return subscriptions;
}
+
+ public getTypeBindRelations(configuredTypeBindValues: string[]): DynamicFormControlRelation[] {
+ const bindValues = [];
+ configuredTypeBindValues.forEach((value) => {
+ bindValues.push({
+ id: 'dc.type',
+ value: value
+ });
+ });
+ return [{
+ match: MATCH_VISIBLE,
+ operator: OR_OPERATOR,
+ when: bindValues
+ }];
+ }
+
}
From e182378572022a26af5060f8824c8402ff02ffe5 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Sat, 23 Apr 2022 16:05:46 +1200
Subject: [PATCH 042/107] [TLC-254] Remove inappropriate tests from form
builder, component
---
...c-form-control-container.component.spec.ts | 42 +++----------------
.../form/builder/form-builder.service.spec.ts | 12 ++----
2 files changed, 8 insertions(+), 46 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
index d1299cedfe..0eef646220 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
@@ -65,7 +65,6 @@ import { DsDynamicFormArrayComponent } from './models/array-group/dynamic-form-a
import { DsDynamicFormGroupComponent } from './models/form-group/dynamic-form-group.component';
import { DsDynamicRelationGroupComponent } from './models/relation-group/dynamic-relation-group.components';
import { DsDatePickerInlineComponent } from './models/date-picker-inline/dynamic-date-picker-inline.component';
-import { DsDynamicTypeBindRelationService } from './ds-dynamic-type-bind-relation.service';
import { RelationshipService } from '../../../../core/data/relationship.service';
import { SelectableListService } from '../../../object-list/selectable-list/selectable-list.service';
import { ItemDataService } from '../../../../core/data/item-data.service';
@@ -80,29 +79,6 @@ import { SubmissionService } from '../../../../submission/submission.service';
import { FormBuilderService } from '../form-builder.service';
import { NgxMaskModule } from 'ngx-mask';
-function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService {
- return jasmine.createSpyObj('DsDynamicTypeBindRelationService', {
- getRelatedFormModel: jasmine.createSpy('getRelatedFormModel'),
- matchesCondition: jasmine.createSpy('matchesCondition'),
- subscribeRelations: jasmine.createSpy('subscribeRelations')
- });
-}
-
-function getTypeBindRelations(configuredTypeBindValues: string[]): DynamicFormControlRelation[] {
- const bindValues = [];
- configuredTypeBindValues.forEach((value) => {
- bindValues.push({
- id: 'dc.type',
- value: value
- });
- });
- return [{
- match: MATCH_VISIBLE,
- operator: OR_OPERATOR,
- when: bindValues
- }];
-}
-
describe('DsDynamicFormControlContainerComponent test suite', () => {
const vocabularyOptions: VocabularyOptions = {
@@ -136,7 +112,11 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
repeatable: false,
submissionId: '1234',
hasSelectableMetadata: false,
- typeBindRelations: getTypeBindRelations(['Book'])
+ typeBindRelations: [{
+ match: MATCH_VISIBLE,
+ operator: OR_OPERATOR,
+ when: [{id: 'dc.type', value: 'Book'}]
+ }]
}),
new DynamicScrollableDropdownModel({
id: 'scrollableDropdown',
@@ -225,7 +205,6 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
providers: [
DsDynamicFormControlContainerComponent,
DynamicFormService,
- { provide: DsDynamicTypeBindRelationService, useValue: getMockDsDynamicTypeBindRelationService() },
{ provide: RelationshipService, useValue: {} },
{ provide: SelectableListService, useValue: {} },
{ provide: ItemDataService, useValue: {} },
@@ -383,15 +362,4 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
expect(testFn(formModel[25])).toEqual(DsDynamicFormGroupComponent);
});
- it('should display a type-bound field when dc.type matcher set to Book', () => {
- const rels: any = getMockDsDynamicTypeBindRelationService().getRelatedFormModel(formModel[16]);
- const isVisible = getMockDsDynamicTypeBindRelationService().matchesCondition(rels.typeBindRelations, rels.matcher);
- expect(isVisible).toBeTruthy();
- });
-
- it('Should successfully subscribe type bind relations for component', () => {
- const subscriptions = getMockDsDynamicTypeBindRelationService().subscribeRelations(component.model, component.control);
- expect(subscriptions).toBeDefined();
- });
-
});
diff --git a/src/app/shared/form/builder/form-builder.service.spec.ts b/src/app/shared/form/builder/form-builder.service.spec.ts
index 6ec18594c5..b228821587 100644
--- a/src/app/shared/form/builder/form-builder.service.spec.ts
+++ b/src/app/shared/form/builder/form-builder.service.spec.ts
@@ -15,7 +15,7 @@ import {
DynamicEditorModel,
DynamicFileUploadModel,
DynamicFormArrayModel,
- DynamicFormControlModel,
+ DynamicFormControlModel, DynamicFormControlRelation,
DynamicFormGroupModel,
DynamicFormValidationService,
DynamicFormValueControlModel,
@@ -26,7 +26,7 @@ import {
DynamicSliderModel,
DynamicSwitchModel,
DynamicTextAreaModel,
- DynamicTimePickerModel
+ DynamicTimePickerModel, MATCH_VISIBLE, OR_OPERATOR
} from '@ng-dynamic-forms/core';
import { DynamicTagModel } from './ds-dynamic-form-ui/models/tag/dynamic-tag.model';
import { DynamicListCheckboxGroupModel } from './ds-dynamic-form-ui/models/list/dynamic-list-checkbox-group.model';
@@ -317,7 +317,7 @@ describe('FormBuilderService test suite', () => {
metadataFields: ['dc.contributor.author'],
hasSelectableMetadata: true,
showButtons: true,
- typeBindRelations: []
+ typeBindRelations: typeBindRelationService.getTypeBindRelations(['Book'])
},
),
];
@@ -892,10 +892,4 @@ describe('FormBuilderService test suite', () => {
expect(formArray.length === 0).toBe(true);
});
- it('should hide on type bind', () => {
- const model = service.findById('testFormArray', testModel) as DynamicFormArrayModel;
- typeBindRelationService.getRelatedFormModel(model);
- const formArray = service.createFormArray(model);
- });
-
});
From be6ea812bbba58e74e8b833b760ed851b79ba924 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Sat, 23 Apr 2022 16:54:52 +1200
Subject: [PATCH 043/107] [TLC-254] tidy up imports, regexes, mock data
---
...c-form-control-container.component.spec.ts | 2 +-
.../form/builder/form-builder.service.ts | 2 +-
.../form/builder/parsers/field-parser.ts | 2 +-
.../shared/mocks/form-builder-service.mock.ts | 22 +------------------
4 files changed, 4 insertions(+), 24 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
index 0eef646220..15fa0ffa8e 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
@@ -14,7 +14,7 @@ import {
DynamicEditorModel,
DynamicFileUploadModel,
DynamicFormArrayModel,
- DynamicFormControlModel, DynamicFormControlRelation,
+ DynamicFormControlModel,
DynamicFormGroupModel,
DynamicFormsCoreModule,
DynamicFormService,
diff --git a/src/app/shared/form/builder/form-builder.service.ts b/src/app/shared/form/builder/form-builder.service.ts
index 6a3b659bff..ecc10b7ab1 100644
--- a/src/app/shared/form/builder/form-builder.service.ts
+++ b/src/app/shared/form/builder/form-builder.service.ts
@@ -73,7 +73,7 @@ export class FormBuilderService extends DynamicFormService {
this.formModels = new Map();
this.formGroups = new Map();
// Replace . with _ in configured type field here, to make configuration more simple and user-friendly
- this.typeField = environment.submission.typeBind.field.replace('\.', '_');
+ this.typeField = environment.submission.typeBind.field.replace(/\./g, '_');
}
createDynamicFormControlEvent(control: FormControl, group: FormGroup, model: DynamicFormControlModel, type: string): DynamicFormControlEvent {
diff --git a/src/app/shared/form/builder/parsers/field-parser.ts b/src/app/shared/form/builder/parsers/field-parser.ts
index 6e1c03efe0..c8b8e07bad 100644
--- a/src/app/shared/form/builder/parsers/field-parser.ts
+++ b/src/app/shared/form/builder/parsers/field-parser.ts
@@ -40,7 +40,7 @@ export abstract class FieldParser {
@Inject(PARSER_OPTIONS) protected parserOptions: ParserOptions
) {
// Replace . with _ in configured type field here, to make configuration more simple and user-friendly
- this.typeField = environment.submission.typeBind.field.replace('\.', '_');
+ this.typeField = environment.submission.typeBind.field.replace(/\./g, '_');
}
public abstract modelFactory(fieldValue?: FormFieldMetadataValueObject, label?: boolean): any;
diff --git a/src/app/shared/mocks/form-builder-service.mock.ts b/src/app/shared/mocks/form-builder-service.mock.ts
index 40d10bc170..6344ac6a6f 100644
--- a/src/app/shared/mocks/form-builder-service.mock.ts
+++ b/src/app/shared/mocks/form-builder-service.mock.ts
@@ -4,26 +4,6 @@ import {DsDynamicInputModel} from '../form/builder/ds-dynamic-form-ui/models/ds-
export function getMockFormBuilderService(): FormBuilderService {
- const inputWithTypeBindConfig = {
- name: 'testWithTypeBind',
- id: 'testWithTypeBind',
- readOnly: false,
- disabled: false,
- repeatable: false,
- value: {
- value: 'testWithTypeBind',
- display: 'testWithTypeBind'
- },
- submissionId: '1234',
- metadataFields: [],
- hasSelectableMetadata: false,
- typeBindRelations: [
- {match: 'VISIBLE', operator: 'OR', when: [{'id': 'dc.type', 'value': 'boundType'}]}
- ]
- };
-
- const thing = new DsDynamicInputModel(inputWithTypeBindConfig);
-
return jasmine.createSpyObj('FormBuilderService', {
modelFromConfiguration: [],
createFormGroup: new FormGroup({}),
@@ -55,7 +35,7 @@ export function getMockFormBuilderService(): FormBuilderService {
metadataFields: ['dc.type'],
hasSelectableMetadata: false,
typeBindRelations: [
- {match: 'VISIBLE', operator: 'OR', when: [{'id': 'dc.type', 'value': 'boundType'}]}
+ {match: 'VISIBLE', operator: 'OR', when: [{id: 'dc.type', value: 'boundType'}]}
]
}
)
From 5b607ccb86c68a24c564dd7ce8e359240b4e688c Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Sun, 24 Apr 2022 16:14:40 +1200
Subject: [PATCH 044/107] [TLC-254] lint and test fixes
---
...c-form-control-container.component.spec.ts | 10 ++++++++++
.../models/ds-dynamic-input.model.ts | 6 +++---
.../form/builder/form-builder.service.spec.ts | 19 ++++---------------
.../form/builder/form-builder.service.ts | 5 ++---
4 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
index 15fa0ffa8e..ffc4df244e 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts
@@ -65,6 +65,7 @@ import { DsDynamicFormArrayComponent } from './models/array-group/dynamic-form-a
import { DsDynamicFormGroupComponent } from './models/form-group/dynamic-form-group.component';
import { DsDynamicRelationGroupComponent } from './models/relation-group/dynamic-relation-group.components';
import { DsDatePickerInlineComponent } from './models/date-picker-inline/dynamic-date-picker-inline.component';
+import { DsDynamicTypeBindRelationService } from './ds-dynamic-type-bind-relation.service';
import { RelationshipService } from '../../../../core/data/relationship.service';
import { SelectableListService } from '../../../object-list/selectable-list/selectable-list.service';
import { ItemDataService } from '../../../../core/data/item-data.service';
@@ -79,6 +80,14 @@ import { SubmissionService } from '../../../../submission/submission.service';
import { FormBuilderService } from '../form-builder.service';
import { NgxMaskModule } from 'ngx-mask';
+function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService {
+ return jasmine.createSpyObj('DsDynamicTypeBindRelationService', {
+ getRelatedFormModel: jasmine.createSpy('getRelatedFormModel'),
+ matchesCondition: jasmine.createSpy('matchesCondition'),
+ subscribeRelations: jasmine.createSpy('subscribeRelations')
+ });
+}
+
describe('DsDynamicFormControlContainerComponent test suite', () => {
const vocabularyOptions: VocabularyOptions = {
@@ -205,6 +214,7 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
providers: [
DsDynamicFormControlContainerComponent,
DynamicFormService,
+ { provide: DsDynamicTypeBindRelationService, useValue: getMockDsDynamicTypeBindRelationService() },
{ provide: RelationshipService, useValue: {} },
{ provide: SelectableListService, useValue: {} },
{ provide: ItemDataService, useValue: {} },
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model.ts
index a9adb9a8e9..ed99acb34e 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-input.model.ts
@@ -1,15 +1,15 @@
import {
- DynamicFormControlLayout, DynamicFormControlModel,
+ DynamicFormControlLayout,
DynamicFormControlRelation,
DynamicInputModel,
DynamicInputModelConfig,
serializable
} from '@ng-dynamic-forms/core';
-import {BehaviorSubject, Subject} from 'rxjs';
+import {Subject} from 'rxjs';
import { LanguageCode } from '../../models/form-field-language-value.model';
import { VocabularyOptions } from '../../../../../core/submission/vocabularies/models/vocabulary-options.model';
-import {hasValue, isEmpty, isNotUndefined} from '../../../../empty.util';
+import {hasValue} from '../../../../empty.util';
import { FormFieldMetadataValueObject } from '../../models/form-field-metadata-value.model';
import { RelationshipOptions } from '../../models/relationship-options.model';
diff --git a/src/app/shared/form/builder/form-builder.service.spec.ts b/src/app/shared/form/builder/form-builder.service.spec.ts
index b228821587..14c4e336cd 100644
--- a/src/app/shared/form/builder/form-builder.service.spec.ts
+++ b/src/app/shared/form/builder/form-builder.service.spec.ts
@@ -15,7 +15,7 @@ import {
DynamicEditorModel,
DynamicFileUploadModel,
DynamicFormArrayModel,
- DynamicFormControlModel, DynamicFormControlRelation,
+ DynamicFormControlModel,
DynamicFormGroupModel,
DynamicFormValidationService,
DynamicFormValueControlModel,
@@ -26,7 +26,7 @@ import {
DynamicSliderModel,
DynamicSwitchModel,
DynamicTextAreaModel,
- DynamicTimePickerModel, MATCH_VISIBLE, OR_OPERATOR
+ DynamicTimePickerModel,
} from '@ng-dynamic-forms/core';
import { DynamicTagModel } from './ds-dynamic-form-ui/models/tag/dynamic-tag.model';
import { DynamicListCheckboxGroupModel } from './ds-dynamic-form-ui/models/list/dynamic-list-checkbox-group.model';
@@ -48,21 +48,12 @@ import { DynamicConcatModel } from './ds-dynamic-form-ui/models/ds-dynamic-conca
import { DynamicLookupNameModel } from './ds-dynamic-form-ui/models/lookup/dynamic-lookup-name.model';
import { DynamicRowArrayModel } from './ds-dynamic-form-ui/models/ds-dynamic-row-array-model';
import { FormRowModel } from '../../../core/config/models/config-submission-form.model';
-import { DsDynamicTypeBindRelationService } from './ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service';
describe('FormBuilderService test suite', () => {
let testModel: DynamicFormControlModel[];
let testFormConfiguration: SubmissionFormsModel;
let service: FormBuilderService;
- let typeBindRelationService: DsDynamicTypeBindRelationService;
-
- function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService {
- return jasmine.createSpyObj('DsDynamicTypeBindRelationService', {
- getRelatedFormModel: jasmine.createSpy('getRelatedFormModel'),
- matchesCondition: jasmine.createSpy('matchesCondition')
- });
- }
const submissionId = '1234';
@@ -80,7 +71,6 @@ describe('FormBuilderService test suite', () => {
imports: [ReactiveFormsModule],
providers: [
{ provide: FormBuilderService, useClass: FormBuilderService },
- { provide: DsDynamicTypeBindRelationService, useValue: getMockDsDynamicTypeBindRelationService() },
{ provide: DynamicFormValidationService, useValue: {} },
{ provide: NG_VALIDATORS, useValue: testValidator, multi: true },
{ provide: NG_ASYNC_VALIDATORS, useValue: testAsyncValidator, multi: true }
@@ -317,7 +307,7 @@ describe('FormBuilderService test suite', () => {
metadataFields: ['dc.contributor.author'],
hasSelectableMetadata: true,
showButtons: true,
- typeBindRelations: typeBindRelationService.getTypeBindRelations(['Book'])
+ typeBindRelations: [{ match: 'VISIBLE', operator: 'OR', when: [{id: 'dc.type', value: 'Book' }]}]
},
),
];
@@ -437,9 +427,8 @@ describe('FormBuilderService test suite', () => {
} as any;
});
- beforeEach(inject([FormBuilderService, DsDynamicTypeBindRelationService], (formService: FormBuilderService, relationService: DsDynamicTypeBindRelationService) => {
+ beforeEach(inject([FormBuilderService], (formService: FormBuilderService) => {
service = formService;
- typeBindRelationService = relationService;
}));
it('should find a dynamic form control model by id', () => {
diff --git a/src/app/shared/form/builder/form-builder.service.ts b/src/app/shared/form/builder/form-builder.service.ts
index ecc10b7ab1..532a4fe085 100644
--- a/src/app/shared/form/builder/form-builder.service.ts
+++ b/src/app/shared/form/builder/form-builder.service.ts
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
-import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
+import { AbstractControl, FormControl, FormGroup } from '@angular/forms';
import {
DYNAMIC_FORM_CONTROL_TYPE_ARRAY,
@@ -27,8 +27,7 @@ import {
isNotEmpty,
isNotNull,
isNotUndefined,
- isNull,
- isObjectEmpty
+ isNull
} from '../../empty.util';
import { DynamicQualdropModel } from './ds-dynamic-form-ui/models/ds-dynamic-qualdrop.model';
import { SubmissionFormsModel } from '../../../core/config/models/config-submission-forms.model';
From 2c0afaabec703183fb153699f09ada8976078119 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Sun, 24 Apr 2022 16:29:15 +1200
Subject: [PATCH 045/107] [TLC-254] lint and test fixes
---
.../ds-dynamic-form-control-container.component.ts | 1 -
.../ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts
index 8d27a3bace..25f650ea7e 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts
@@ -76,7 +76,6 @@ import { DsDynamicLookupComponent } from './models/lookup/dynamic-lookup.compone
import { DsDynamicFormGroupComponent } from './models/form-group/dynamic-form-group.component';
import { DsDynamicFormArrayComponent } from './models/array-group/dynamic-form-array.component';
import { DsDynamicRelationGroupComponent } from './models/relation-group/dynamic-relation-group.components';
-import { DynamicRelationGroupModel } from './models/relation-group/dynamic-relation-group.model';
import { DsDatePickerInlineComponent } from './models/date-picker-inline/dynamic-date-picker-inline.component';
import { DYNAMIC_FORM_CONTROL_TYPE_CUSTOM_SWITCH } from './models/custom-switch/custom-switch.model';
import { CustomSwitchComponent } from './models/custom-switch/custom-switch.component';
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts
index 40b4a4acee..52364df45e 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model.ts
@@ -6,7 +6,7 @@ import {
serializable
} from '@ng-dynamic-forms/core';
import { RelationshipOptions } from '../../models/relationship-options.model';
-import { hasValue, isNotUndefined } from '../../../../empty.util';
+import { hasValue } from '../../../../empty.util';
export interface DynamicRowArrayModelConfig extends DynamicFormArrayModelConfig {
notRepeatable: boolean;
From 8d6f156db12402b38bbba6d6309b1bb85679a923 Mon Sep 17 00:00:00 2001
From: Yura Bondarenko
Date: Fri, 8 Apr 2022 16:28:52 +0200
Subject: [PATCH 046/107] 90918: Upgrade ng-dynamic-forms and RxJs
Copied over isNumeric from RxJs 6.x as it was removed from 7.x
Build & tests are broken, fixed in subsequent commit
---
package.json | 18 ++---
src/app/app.component.spec.ts | 2 +-
src/app/app.component.ts | 2 +-
src/app/core/pagination/pagination.service.ts | 2 +-
src/app/root/root.component.spec.ts | 2 +-
src/app/root/root.component.ts | 2 +-
src/app/shared/numeric.util.spec.ts | 53 ++++++++++++++
src/app/shared/numeric.util.ts | 16 ++++
.../google-analytics.service.spec.ts | 2 +-
.../statistics/google-analytics.service.ts | 2 +-
src/modules/app/browser-app.module.ts | 2 +-
src/modules/app/server-app.module.ts | 2 +-
yarn.lock | 73 ++++++++++---------
13 files changed, 127 insertions(+), 51 deletions(-)
create mode 100644 src/app/shared/numeric.util.spec.ts
create mode 100644 src/app/shared/numeric.util.ts
diff --git a/package.json b/package.json
index 75e22b40f3..de878a35a5 100644
--- a/package.json
+++ b/package.json
@@ -68,8 +68,8 @@
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
"@ng-bootstrap/ng-bootstrap": "^11.0.0",
- "@ng-dynamic-forms/core": "^14.0.1",
- "@ng-dynamic-forms/ui-ng-bootstrap": "^14.0.1",
+ "@ng-dynamic-forms/core": "^15.0.0",
+ "@ng-dynamic-forms/ui-ng-bootstrap": "^15.0.0",
"@ngrx/effects": "^13.0.2",
"@ngrx/router-store": "^13.0.2",
"@ngrx/store": "^13.0.2",
@@ -77,7 +77,7 @@
"@ngx-translate/core": "^13.0.0",
"@nicky-lenaers/ngx-scroll-to": "^9.0.0",
"angular-idle-preload": "3.0.0",
- "angulartics2": "^10.0.0",
+ "angulartics2": "^12.0.0",
"bootstrap": "4.3.1",
"caniuse-lite": "^1.0.30001165",
"cerialize": "0.1.18",
@@ -119,7 +119,7 @@
"prop-types": "^15.7.2",
"react-copy-to-clipboard": "^5.0.1",
"reflect-metadata": "^0.1.13",
- "rxjs": "^6.6.3",
+ "rxjs": "^7.5.5",
"sortablejs": "1.13.0",
"tslib": "^2.0.0",
"url-parse": "^1.5.6",
@@ -161,7 +161,7 @@
"css-minimizer-webpack-plugin": "^3.4.1",
"cssnano": "^5.0.6",
"cypress": "9.5.1",
- "cypress-axe": "^0.13.0",
+ "cypress-axe": "^0.14.0",
"debug-loader": "^0.0.1",
"deep-freeze": "0.0.1",
"dotenv": "^8.2.0",
@@ -173,7 +173,7 @@
"fork-ts-checker-webpack-plugin": "^6.0.3",
"html-loader": "^1.3.2",
"jasmine-core": "^3.8.0",
- "jasmine-marbles": "0.6.0",
+ "jasmine-marbles": "0.9.2",
"jasmine-spec-reporter": "~5.0.0",
"karma": "^6.3.14",
"karma-chrome-launcher": "~3.1.0",
@@ -181,7 +181,7 @@
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.5.0",
"karma-mocha-reporter": "2.2.5",
- "ngx-mask": "^12.0.0",
+ "ngx-mask": "^13.1.7",
"nodemon": "^2.0.15",
"postcss": "^8.1",
"postcss-apply": "0.12.0",
@@ -195,7 +195,7 @@
"react": "^16.14.0",
"react-dom": "^16.14.0",
"rimraf": "^3.0.2",
- "rxjs-spy": "^7.5.3",
+ "rxjs-spy": "^8.0.2",
"sass": "~1.32.6",
"sass-loader": "^12.6.0",
"sass-resources-loader": "^2.1.1",
@@ -209,4 +209,4 @@
"webpack-cli": "^4.2.0",
"webpack-dev-server": "^4.5.0"
}
-}
+}
\ No newline at end of file
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
index a892e34a5a..9f215da46d 100644
--- a/src/app/app.component.spec.ts
+++ b/src/app/app.component.spec.ts
@@ -4,7 +4,7 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule, DOCUMENT } from '@angular/common';
import { ActivatedRoute, Router } from '@angular/router';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
-import { Angulartics2GoogleAnalytics } from 'angulartics2/ga';
+import { Angulartics2GoogleAnalytics } from 'angulartics2';
// Load the implementations that should be tested
import { AppComponent } from './app.component';
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 669411d9aa..87a211ec9d 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -23,7 +23,7 @@ import { BehaviorSubject, Observable, of } from 'rxjs';
import { select, Store } from '@ngrx/store';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { TranslateService } from '@ngx-translate/core';
-import { Angulartics2GoogleAnalytics } from 'angulartics2/ga';
+import { Angulartics2GoogleAnalytics } from 'angulartics2';
import { MetadataService } from './core/metadata/metadata.service';
import { HostWindowResizeAction } from './shared/host-window.actions';
diff --git a/src/app/core/pagination/pagination.service.ts b/src/app/core/pagination/pagination.service.ts
index db80cc9476..a6f8052c4b 100644
--- a/src/app/core/pagination/pagination.service.ts
+++ b/src/app/core/pagination/pagination.service.ts
@@ -7,8 +7,8 @@ import { filter, map, take } from 'rxjs/operators';
import { SortDirection, SortOptions } from '../cache/models/sort-options.model';
import { hasValue, isEmpty, isNotEmpty } from '../../shared/empty.util';
import { difference } from '../../shared/object.util';
-import { isNumeric } from 'rxjs/internal-compatibility';
import { FindListOptions } from '../data/find-list-options.model';
+import { isNumeric } from '../../shared/numeric.util';
@Injectable({
providedIn: 'root',
diff --git a/src/app/root/root.component.spec.ts b/src/app/root/root.component.spec.ts
index 81b22592d6..64a15a3087 100644
--- a/src/app/root/root.component.spec.ts
+++ b/src/app/root/root.component.spec.ts
@@ -9,7 +9,7 @@ import { TranslateLoaderMock } from '../shared/mocks/translate-loader.mock';
import { NativeWindowRef, NativeWindowService } from '../core/services/window.service';
import { MetadataService } from '../core/metadata/metadata.service';
import { MetadataServiceMock } from '../shared/mocks/metadata-service.mock';
-import { Angulartics2GoogleAnalytics } from 'angulartics2/ga';
+import { Angulartics2GoogleAnalytics } from 'angulartics2';
import { AngularticsProviderMock } from '../shared/mocks/angulartics-provider.service.mock';
import { Angulartics2DSpace } from '../statistics/angulartics/dspace-provider';
import { AuthService } from '../core/auth/auth.service';
diff --git a/src/app/root/root.component.ts b/src/app/root/root.component.ts
index 2633874c1a..aae991dca3 100644
--- a/src/app/root/root.component.ts
+++ b/src/app/root/root.component.ts
@@ -5,7 +5,7 @@ import { Router } from '@angular/router';
import { combineLatest as combineLatestObservable, Observable, of } from 'rxjs';
import { Store } from '@ngrx/store';
import { TranslateService } from '@ngx-translate/core';
-import { Angulartics2GoogleAnalytics } from 'angulartics2/ga';
+import { Angulartics2GoogleAnalytics } from 'angulartics2';
import { MetadataService } from '../core/metadata/metadata.service';
import { HostWindowState } from '../shared/search/host-window.reducer';
diff --git a/src/app/shared/numeric.util.spec.ts b/src/app/shared/numeric.util.spec.ts
new file mode 100644
index 0000000000..9602966299
--- /dev/null
+++ b/src/app/shared/numeric.util.spec.ts
@@ -0,0 +1,53 @@
+import { isNumeric } from './numeric.util';
+
+describe('Numeric Utils', () => {
+ describe('isNumeric', () => {
+ it('should return true for Number values', () => {
+ expect(isNumeric(0)).toBeTrue();
+ expect(isNumeric(123456)).toBeTrue();
+ expect(isNumeric(-123456)).toBeTrue();
+ expect(isNumeric(0.1234)).toBeTrue();
+ expect(isNumeric(-0.1234)).toBeTrue();
+ expect(isNumeric(1234e56)).toBeTrue();
+ expect(isNumeric(-1234e-56)).toBeTrue();
+ expect(isNumeric(0x123456)).toBeTrue();
+ expect(isNumeric(-0x123456)).toBeTrue();
+ });
+
+ it('should return true for numeric String values', () => {
+ expect(isNumeric('0')).toBeTrue();
+ expect(isNumeric('123456')).toBeTrue();
+ expect(isNumeric('-123456')).toBeTrue();
+ expect(isNumeric('0.1234')).toBeTrue();
+ expect(isNumeric('-0.1234')).toBeTrue();
+ expect(isNumeric('1234e56')).toBeTrue();
+ expect(isNumeric('-1234e-56')).toBeTrue();
+ expect(isNumeric('0x123456')).toBeTrue();
+
+ // expect(isNumeric('-0x123456')).toBeTrue(); // not recognized as numeric, known issue
+ });
+
+ it('should return false for non-numeric String values', () => {
+ expect(isNumeric('just a regular string')).toBeFalse();
+ expect(isNumeric('')).toBeFalse();
+ expect(isNumeric(' ')).toBeFalse();
+ expect(isNumeric('\n')).toBeFalse();
+ expect(isNumeric('\t')).toBeFalse();
+ expect(isNumeric('null')).toBeFalse();
+ expect(isNumeric('undefined')).toBeFalse();
+ });
+
+ it('should return false for any other kind of value', () => {
+ expect(isNumeric([1,2,3])).toBeFalse();
+ expect(isNumeric({ a:1, b:2, c:3 })).toBeFalse();
+ expect(isNumeric(() => { /* empty */ })).toBeFalse();
+ expect(isNumeric(null)).toBeFalse();
+ expect(isNumeric(undefined)).toBeFalse();
+ expect(isNumeric(true)).toBeFalse();
+ expect(isNumeric(false)).toBeFalse();
+ expect(isNumeric(NaN)).toBeFalse();
+ expect(isNumeric(Infinity)).toBeFalse();
+ expect(isNumeric(-Infinity)).toBeFalse();
+ });
+ });
+});
diff --git a/src/app/shared/numeric.util.ts b/src/app/shared/numeric.util.ts
new file mode 100644
index 0000000000..5a50ac8903
--- /dev/null
+++ b/src/app/shared/numeric.util.ts
@@ -0,0 +1,16 @@
+/**
+ * Whether a value is a Number or numeric string.
+ *
+ * Taken from RxJs 6.x (licensed under Apache 2.0)
+ * This function was removed from RxJs 7.x onwards.
+ *
+ * @param val: any value
+ * @returns whether this value is numeric
+ */
+export function isNumeric(val: any): val is number | string {
+ // parseFloat NaNs numeric-cast false positives (null|true|false|"")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ // adding 1 corrects loss of precision from parseFloat (#15100)
+ return !Array.isArray(val) && (val - parseFloat(val) + 1) >= 0;
+}
diff --git a/src/app/statistics/google-analytics.service.spec.ts b/src/app/statistics/google-analytics.service.spec.ts
index c9a267a76f..0c6bc2bc51 100644
--- a/src/app/statistics/google-analytics.service.spec.ts
+++ b/src/app/statistics/google-analytics.service.spec.ts
@@ -1,5 +1,5 @@
import { GoogleAnalyticsService } from './google-analytics.service';
-import { Angulartics2GoogleAnalytics } from 'angulartics2/ga';
+import { Angulartics2GoogleAnalytics } from 'angulartics2';
import { ConfigurationDataService } from '../core/data/configuration-data.service';
import {
createFailedRemoteDataObject$,
diff --git a/src/app/statistics/google-analytics.service.ts b/src/app/statistics/google-analytics.service.ts
index 94e5ad20af..0b52f54c4f 100644
--- a/src/app/statistics/google-analytics.service.ts
+++ b/src/app/statistics/google-analytics.service.ts
@@ -1,5 +1,5 @@
import { Inject, Injectable } from '@angular/core';
-import { Angulartics2GoogleAnalytics } from 'angulartics2/ga';
+import { Angulartics2GoogleAnalytics } from 'angulartics2';
import { ConfigurationDataService } from '../core/data/configuration-data.service';
import { getFirstCompletedRemoteData } from '../core/shared/operators';
import { isEmpty } from '../shared/empty.util';
diff --git a/src/modules/app/browser-app.module.ts b/src/modules/app/browser-app.module.ts
index 88a59eb157..252227b056 100644
--- a/src/modules/app/browser-app.module.ts
+++ b/src/modules/app/browser-app.module.ts
@@ -18,7 +18,7 @@ import { DSpaceTransferState } from '../transfer-state/dspace-transfer-state.ser
import { ClientCookieService } from '../../app/core/services/client-cookie.service';
import { CookieService } from '../../app/core/services/cookie.service';
import { AuthService } from '../../app/core/auth/auth.service';
-import { Angulartics2RouterlessModule } from 'angulartics2/routerlessmodule';
+import { Angulartics2RouterlessModule } from 'angulartics2';
import { SubmissionService } from '../../app/submission/submission.service';
import { StatisticsModule } from '../../app/statistics/statistics.module';
import { BrowserKlaroService } from '../../app/shared/cookies/browser-klaro.service';
diff --git a/src/modules/app/server-app.module.ts b/src/modules/app/server-app.module.ts
index f5b2c4e27b..52f0048f4d 100644
--- a/src/modules/app/server-app.module.ts
+++ b/src/modules/app/server-app.module.ts
@@ -8,7 +8,7 @@ import { RouterModule } from '@angular/router';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { Angulartics2 } from 'angulartics2';
-import { Angulartics2GoogleAnalytics } from 'angulartics2/ga';
+import { Angulartics2GoogleAnalytics } from 'angulartics2';
import { AppComponent } from '../../app/app.component';
diff --git a/yarn.lock b/yarn.lock
index 00c93618d9..df8880e540 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1670,17 +1670,17 @@
dependencies:
tslib "^2.3.0"
-"@ng-dynamic-forms/core@^14.0.1":
- version "14.0.1"
- resolved "https://registry.yarnpkg.com/@ng-dynamic-forms/core/-/core-14.0.1.tgz#e5815a7f67b4e23a5c726afd137b3e27afe09ab9"
- integrity sha512-Pys4H0lSk2Ae8y80mRD4yZMTu+80DIOmf4B2L9fK2q/zYyxVSexu0DynDR8XApArXYU78EPsWnEwgNSWwX6RKw==
+"@ng-dynamic-forms/core@^15.0.0":
+ version "15.0.0"
+ resolved "https://registry.yarnpkg.com/@ng-dynamic-forms/core/-/core-15.0.0.tgz#674a88c253aa100b30144bf7ebf518e24b72f553"
+ integrity sha512-JJ0w8WdOA+wsHyt/hwitGhv/e1j95/TlRS82vvZetP/Ip3kjvD/Ge8jbg4bEssIAXZjfBqS/Gy00Hxo4h57DgQ==
dependencies:
tslib "^2.0.0"
-"@ng-dynamic-forms/ui-ng-bootstrap@^14.0.1":
- version "14.0.1"
- resolved "https://registry.yarnpkg.com/@ng-dynamic-forms/ui-ng-bootstrap/-/ui-ng-bootstrap-14.0.1.tgz#10f271b85eceadad02f616f752cf9806eb085106"
- integrity sha512-Xf56kZBwM0vsRgEKcZvh8SsypCWcVTKeyq9id68+jQzH9/bQ+qriLBF35zDHrS9vJWmSufa5xqqRx/ycxhfpLw==
+"@ng-dynamic-forms/ui-ng-bootstrap@^15.0.0":
+ version "15.0.0"
+ resolved "https://registry.yarnpkg.com/@ng-dynamic-forms/ui-ng-bootstrap/-/ui-ng-bootstrap-15.0.0.tgz#0ab5614bc2efccc4cddbb384865b66d4740bcd3d"
+ integrity sha512-b/+tOJxtDRMzoFA7KLA8JRxbAnXd8d8072/P6C+2xOMaG0Ttc1UUiNQOZ5w82y78nr0bZ63oFHSR0xzSVtMXnA==
dependencies:
tslib "^2.0.0"
@@ -2920,12 +2920,12 @@ angular-idle-preload@3.0.0:
resolved "https://registry.yarnpkg.com/angular-idle-preload/-/angular-idle-preload-3.0.0.tgz#decace34d9fac1cb00000727a6dc5caafdb84e4d"
integrity sha512-W3P2m2B6MHdt1DVunH6H3VWkAZrG3ZwxGcPjedVvIyRhg/LmMtILoizHSxTXw3fsKIEdAPwGObXGpML9WD1jJA==
-angulartics2@^10.0.0:
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/angulartics2/-/angulartics2-10.1.0.tgz#2988f95f25cf6a8dd630d63ea604eb6643e076c3"
- integrity sha512-MnwQxRXJkfbBF7417Cs7L/SIuTRNWHCOBnGolZXHFz5ogw1e51KdCKUaUkfgBogR7JpXP279FU9UDkzerIS3xw==
+angulartics2@^12.0.0:
+ version "12.0.0"
+ resolved "https://registry.yarnpkg.com/angulartics2/-/angulartics2-12.0.0.tgz#d9440ff98d133ae02d97b991a32a711a5b88559f"
+ integrity sha512-hNjvOp/IvKD00Ix3zRGfGJUwwOhSM5RFhvM/iSBH7dvJKavCBWbI464PWshjXfRBbruangPUbJGhSLnoENNtmg==
dependencies:
- tslib "^2.0.0"
+ tslib "^2.3.0"
ansi-align@^3.0.0:
version "3.0.1"
@@ -4613,10 +4613,10 @@ custom-event@~1.0.0:
resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=
-cypress-axe@^0.13.0:
- version "0.13.0"
- resolved "https://registry.yarnpkg.com/cypress-axe/-/cypress-axe-0.13.0.tgz#3234e1a79a27701f2451fcf2f333eb74204c7966"
- integrity sha512-fCIy7RiDCm7t30U3C99gGwQrUO307EYE1QqXNaf9ToK4DVqW8y5on+0a/kUHMrHdlls2rENF6TN9ZPpPpwLrnw==
+cypress-axe@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/cypress-axe/-/cypress-axe-0.14.0.tgz#5f5e70fb36b8cb3ba73a8ba01e9262ff1268d5e2"
+ integrity sha512-7Rdjnko0MjggCmndc1wECAkvQBIhuy+DRtjF7bd5YPZRFvubfMNvrxfqD8PWQmxm7MZE0ffS4Xr43V6ZmvLopg==
cypress@9.5.1:
version "9.5.1"
@@ -7536,12 +7536,12 @@ jasmine-core@~2.8.0:
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e"
integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=
-jasmine-marbles@0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/jasmine-marbles/-/jasmine-marbles-0.6.0.tgz#f78dc1a3bc452976de10ee8b47c73d616532a954"
- integrity sha512-1uzgjEesEeCb+r+v46qn5x326TiGqk5SUZa+A3O+XnMCjG/pGcUOhL9Xsg5L7gLC6RFHyWGTkB5fei4rcvIOiQ==
+jasmine-marbles@0.9.2:
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/jasmine-marbles/-/jasmine-marbles-0.9.2.tgz#5adfee5f72c7f24270687fa64a6e8a8613ffa841"
+ integrity sha512-T7RjG4fRsdiGGzbQZ6Kj39qYt6O1/KIcR4FkUNsD3DUGkd/AzpwzN+xtk0DXlLWEz5BaVdK1SzMgQDVw879c4Q==
dependencies:
- lodash "^4.5.0"
+ lodash "^4.17.20"
jasmine-spec-reporter@~5.0.0:
version "5.0.2"
@@ -8211,7 +8211,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.5.0, lodash@^4.7.0:
+lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -8853,12 +8853,12 @@ ngx-infinite-scroll@^10.0.1:
"@scarf/scarf" "^1.1.0"
opencollective-postinstall "^2.0.2"
-ngx-mask@^12.0.0:
- version "12.0.0"
- resolved "https://registry.yarnpkg.com/ngx-mask/-/ngx-mask-12.0.0.tgz#8eb363cc609ab71b687bbe6f87497c461ca120b1"
- integrity sha512-q4vUjhjJfg4faRud/tUdCTOs3JA6B+rBB2OPZ2xBZy4LNTRKGfUK683LrDCitMVBezjEAVrkQdUT1I4C7LXBZQ==
+ngx-mask@^13.1.7:
+ version "13.1.7"
+ resolved "https://registry.yarnpkg.com/ngx-mask/-/ngx-mask-13.1.7.tgz#9ef40354a83484aaf77aff74742cd0f43b4a65cd"
+ integrity sha512-zwGSEGt+WRlb31qMd92K25MCNUhfI2XKOMv+m5NypkZ+stONdBxAXjp8wA/1MJ46uYF5UYLmKPdkXloZBtOXQQ==
dependencies:
- tslib "^2.1.0"
+ tslib "^2.3.0"
ngx-moment@^5.0.0:
version "5.0.0"
@@ -11125,10 +11125,10 @@ rxjs-report-usage@^1.0.4:
glob "~7.2.0"
prompts "~2.4.2"
-rxjs-spy@^7.5.3:
- version "7.5.3"
- resolved "https://registry.yarnpkg.com/rxjs-spy/-/rxjs-spy-7.5.3.tgz#0194bc23ed0c30fb6a61f8bccbc8090e545b91b9"
- integrity sha512-8QsSL6Ma51dTeaJ5Q9zWqhqnCSEkDf56Evs1gUsI9N22oB7bYrPMMx4UnoifNGc+Pko2sGX/xydzinLwGO+2pw==
+rxjs-spy@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/rxjs-spy/-/rxjs-spy-8.0.2.tgz#dd510bdb58d798e0bc23121ab67714dd6fd95f88"
+ integrity sha512-w2yc+EiwYA8J97hxqMD+pxGZkNbRCQwxR660r4nw4Soa8kCvatsdSRc0THndYk9uk6SvZy2RNyiVcxfX39pWpw==
dependencies:
"@types/circular-json" "^0.4.0"
"@types/stacktrace-js" "^0.0.33"
@@ -11137,7 +11137,7 @@ rxjs-spy@^7.5.3:
rxjs-report-usage "^1.0.4"
stacktrace-gps "^3.0.2"
-rxjs@6.6.7, rxjs@^6.5.4, rxjs@^6.5.5, rxjs@^6.6.3, rxjs@~6.6.0:
+rxjs@6.6.7, rxjs@^6.5.4, rxjs@^6.5.5, rxjs@~6.6.0:
version "6.6.7"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
@@ -11158,6 +11158,13 @@ rxjs@^7.2.0, rxjs@^7.5.1:
dependencies:
tslib "^2.1.0"
+rxjs@^7.5.5:
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f"
+ integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==
+ dependencies:
+ tslib "^2.1.0"
+
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
From 2ca7b72ac2a26cc6763dfabde16eca587aa4d5e7 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Tue, 26 Apr 2022 10:22:06 +1200
Subject: [PATCH 047/107] [TLC-254] Tidy up some unhelpful comments in typeBind
service
---
.../ds-dynamic-type-bind-relation.service.ts | 28 ++++++++-----------
1 file changed, 11 insertions(+), 17 deletions(-)
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 40e80bc34b..a2b0c6ba0f 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
@@ -101,15 +101,12 @@ export class DsDynamicTypeBindRelationService {
let values: string[];
let bindModelValue = bindModel.value;
- // If the form type is RELATION, map values to the mandatory field for the model? Don't totally understand
- // what is going on here
+ // If the form type is RELATION, set bindModelValue to the mandatory field for this model, otherwise leave
+ // as plain value
if (bindModel.type === DYNAMIC_FORM_CONTROL_TYPE_RELATION_GROUP) {
bindModelValue = bindModel.value.map((entry) => entry[bindModel.mandatoryField]);
}
- // If we have an array of values, map the bindModelValue[] back to values[], looking up
- // the type bind value for each in the static method here (this just handles cases where authority should
- // be used, or where the entry doesn't have .value but is a string itself, etc)
- // If values isn't an array, make it a single element array with the looked-up type bind value.
+ // Support multiple bind models
if (Array.isArray(bindModelValue)) {
values = [...bindModelValue.map((entry) => this.getTypeBindValue(entry))];
} else {
@@ -118,20 +115,14 @@ export class DsDynamicTypeBindRelationService {
// If bind model evaluates to 'true' (is not undefined, is not null, is not false etc,
// AND the relation match (type bind) is equal to the matcher match (item publication type), then the return
- // value is initialised as false. I'm not sure why the negation is used here!
- // Perhaps as a fail-safe for a bad mind model but an exact match of the strings in relation and matcher
- // passed to this method.
+ // value is initialised as false.
let returnValue = (!(bindModel && relation.match === matcher.match));
// Iterate the type bind values parsed and mapped from our form/relation group model
for (const value of values) {
if (bindModel && relation.match === matcher.match) {
// If we're not at the first array element, and we're using the AND operator, and we have not
- // yet matched anything, return false. This is just a kind of short-hand put in here for some kind of
- // optimisation, I guess, since the AND requires all values to match, and if we're on index > 0 but haven't
- // matched then we've already failed. But surely it's simpler and just as optimal to break on the first
- // non-match if using the AND operator?!
- // In the case of default type bind usage, we always use OR anyway.
+ // yet matched anything, return false.
if (index > 0 && operator === AND_OPERATOR && !hasAlreadyMatched) {
return false;
}
@@ -151,8 +142,7 @@ export class DsDynamicTypeBindRelationService {
}
}
- // Here we have tests using 'opposingMatch' which I'm not certain about yet
- // It looks like a negation of sorts? Or a 'not equals' comparison used in combination I think?
+ // Test opposingMatch (eg. if match is VISIBLE, opposingMatch will be HIDDEN)
if (bindModel && relation.match === matcher.opposingMatch) {
// If we're not at the first element, using AND, and already matched, just return true here
if (index > 0 && operator === AND_OPERATOR && hasAlreadyMatched) {
@@ -164,7 +154,7 @@ export class DsDynamicTypeBindRelationService {
return false;
}
- // Negated comparison
+ // Negated comparison for return value since this is expected to be in the context of a HIDDEN_MATCHER
returnValue = !(condition.value === value);
// Break if already false
@@ -218,6 +208,10 @@ export class DsDynamicTypeBindRelationService {
return subscriptions;
}
+ /**
+ * Helper function to construct a typeBindRelations array
+ * @param configuredTypeBindValues
+ */
public getTypeBindRelations(configuredTypeBindValues: string[]): DynamicFormControlRelation[] {
const bindValues = [];
configuredTypeBindValues.forEach((value) => {
From f9e402b69ffd720acc3bd5183c60238cf3fa13f8 Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Tue, 26 Apr 2022 10:25:53 +1200
Subject: [PATCH 048/107] [TLC-254] Tidy up some unhelpful comments in typeBind
service
---
.../ds-dynamic-type-bind-relation.service.ts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
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 a2b0c6ba0f..c9473bd9d2 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
@@ -78,9 +78,9 @@ export class DsDynamicTypeBindRelationService {
}
/**
- * Return true if the type bind relation (eg. {MATCH_VISIBLE, OR, ['book', 'book part']}) matches the value in
- * matcher.match (or matcher.opposingMatch? not sure what that is), which in this case would be the current dc.type
- * of the submission item
+ * Return false if the type bind relation (eg. {MATCH_VISIBLE, OR, ['book', 'book part']}) matches the value in
+ * matcher.match or true if the opposite match. Since this is called with regard to actively *hiding* a form
+ * component, the negation of the comparison is returned.
* @param relation type bind relation (eg. {MATCH_VISIBLE, OR, ['book', 'book part']})
* @param matcher contains 'match' value and an onChange() event listener
*/
From c0907c19871ae935a7b89f7275b0a98b94beb7b2 Mon Sep 17 00:00:00 2001
From: SDGBot <38133100+itudevops@users.noreply.github.com>
Date: Tue, 26 Apr 2022 10:08:54 +0300
Subject: [PATCH 049/107] =?UTF-8?q?ITU=20BIDB=20t=C3=BCrk=C3=A7e=20dil=20d?=
=?UTF-8?q?este=C4=9Fi=20g=C3=BCncellemesi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Hatalı dosyanın değiştirilmesi!
---
src/assets/i18n/tr.json5 | 2596 +++++++++++++++++++++++++++++++++++++-
1 file changed, 2574 insertions(+), 22 deletions(-)
diff --git a/src/assets/i18n/tr.json5 b/src/assets/i18n/tr.json5
index 9901a1e933..e7aee66ac0 100644
--- a/src/assets/i18n/tr.json5
+++ b/src/assets/i18n/tr.json5
@@ -765,7 +765,7 @@
"bitstream.edit.form.description.label": "Açıklama",
// "bitstream.edit.form.embargo.hint": "The first day from which access is allowed. This date cannot be modified on this form. To set an embargo date for a bitstream, go to the Item Status tab, click Authorizations... , create or edit the bitstream's READ policy, and set the Start Date as desired.",
- "bitstream.edit.form.embargo.hint": "Erişime izin verilen ilk gün. Bu tarih bu formda değiştirilemez. Bir bitstream için bir ambargo tarihi ayarlamak için Öğe Durumu sekmesine gidin, Yetkiler... 'i tıklayın., bitstreamnın OKU politikasını oluşturun veya düzenleyin ve Başlangıç Tarihi 'ni istediğiniz gibi ayarlayın.",
+ "bitstream.edit.form.embargo.hint": "Erişime izin verilen ilk gün. Bu tarih bu formda değiştirilemez. Bir bitstream için bir ambargo tarihi ayarlamak için Öğe Durumu sekmesine gidin, Yetkiler... 'i tıklayın., bitstreamın OKU politikasını oluşturun veya düzenleyin ve Başlangıç Tarihi 'ni istediğiniz gibi ayarlayın.",
// "bitstream.edit.form.embargo.label": "Embargo until specific date",
"bitstream.edit.form.embargo.label": "Belirli bir tarihe kadar ambargo",
@@ -798,7 +798,7 @@
"bitstream.edit.notifications.error.format.title": "Bitstreamın biçimi kaydedilirken bir hata oluştu",
// "bitstream.edit.notifications.saved.content": "Your changes to this bitstream were saved.",
- "bitstream.edit.notifications.saved.content": "Bu bitstreamde yaptığınız değişiklikler kaydedildi.",
+ "bitstream.edit.notifications.saved.content": "Bu bitstreamda yaptığınız değişiklikler kaydedildi.",
// "bitstream.edit.notifications.saved.title": "Bitstream saved",
"bitstream.edit.notifications.saved.title": "Bitstream kaydedildi",
@@ -1062,7 +1062,7 @@
"collection.edit.tabs.authorizations.title": "Koleksiyon düzenleme - Yetkilendirmeler",
// "collection.edit.tabs.metadata.head": "Edit Metadata",
- "collection.edit.tabs.metadata.head": "Metadata Düzenle",
+ "collection.edit.tabs.metadata.head": "Metadataları Düzenle",
// "collection.edit.tabs.metadata.title": "Collection Edit - Metadata",
"collection.edit.tabs.metadata.title": "Koleksiyon Düzenle - Metadatalar",
@@ -1095,13 +1095,13 @@
"collection.edit.tabs.source.form.oaiSource": "OAI Sağlayıcısı",
// "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Harvest metadata and bitstreams (requires ORE support)",
- "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Metadataları ve bitstreamı topla (ORE desteği gerektirir)",
+ "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_BITSTREAMS": "Metadatalarını ve bitstreamı topla (ORE desteği gerektirir)",
// "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Harvest metadata and references to bitstreams (ORE desteği gerektirir)",
- "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Metadataları ve referansları topla (ORE desteği gerektirir)",
+ "collection.edit.tabs.source.form.options.harvestType.METADATA_AND_REF": "Metadatalarını ve referansları topla (ORE desteği gerektirir)",
// "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Harvest metadata only",
- "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Sadece metadataları topla",
+ "collection.edit.tabs.source.form.options.harvestType.METADATA_ONLY": "Sadece metadatalarını topla",
// "collection.edit.tabs.source.head": "Content Source",
"collection.edit.tabs.source.head": "İçerik Kaynağı",
@@ -1246,7 +1246,7 @@
"community.create.head": "Bir komünite oluştur",
// "community.create.notifications.success": "Successfully created the Community",
- "community.create.notifications.success": "Komunite başarıyla yaratıldı",
+ "community.create.notifications.success": "Komünite başarıyla yaratıldı",
// "community.create.sub-head": "Create a Sub-Community for Community {{ parent }}",
"community.create.sub-head": "Komünite için bir alt komünite oluşturun {{ parent }}",
@@ -1261,7 +1261,7 @@
"community.delete.confirm": "Onayla",
// "community.delete.head": "Delete Community",
- "community.delete.head": "Komüniteyi sil",
+ "community.delete.head": "Topluluğu sil",
// "community.delete.notification.fail": "Community could not be deleted",
"community.delete.notification.fail": "Komünite silinemedi",
@@ -1270,16 +1270,16 @@
"community.delete.notification.success": "Komünite başarıyla silindi",
// "community.delete.text": "Are you sure you want to delete community \"{{ dso }}\"",
- "community.delete.text": "Komüniteyi silmek istediğinize emin misiniz \"{{ dso }}\"",
+ "community.delete.text": "Topluluğu silmek istediğinize emin misiniz \"{{ dso }}\"",
// "community.edit.delete": "Delete this community",
- "community.edit.delete": "Bu yomüniteyi sil",
+ "community.edit.delete": "Bu topluluğu sil",
// "community.edit.head": "Edit Community",
- "community.edit.head": "Komüniteyi düzenle",
+ "community.edit.head": "Topluluğu düzenle",
// "community.edit.breadcrumbs": "Edit Community",
- "community.edit.breadcrumbs": "Komüniteyi düzenle",
+ "community.edit.breadcrumbs": "Topluluğu düzenle",
// "community.edit.logo.label": "Community logo",
@@ -1312,7 +1312,7 @@
"community.edit.notifications.unauthorized": "Bu değişikliği yapmak için ayrıcalıklarınız yok",
// "community.edit.notifications.error": "An error occured while editing the Community",
- "community.edit.notifications.error": "Komüniteyi düzenlerken bir hata oluştu",
+ "community.edit.notifications.error": "Topluluğu düzenlerken bir hata oluştu",
// "community.edit.return": "Return",
"community.edit.return": "Dönüş",
@@ -1445,7 +1445,7 @@
"community.form.title": "İsim",
// "community.page.edit": "Edit this community",
- "community.page.edit": "Bu komüniteyi düzenle",
+ "community.page.edit": "Bu topluluğu düzenle",
// "community.page.handle": "Permanent URI for this community",
"community.page.handle": "Bu komünite için Kalıcı Uri",
@@ -1460,10 +1460,10 @@
"community.all-lists.head": "Alt komüniteler ve koleksiyonlar",
// "community.sub-collection-list.head": "Collections of this Community",
- "community.sub-collection-list.head": "Bu komünitenin koleksiyonları",
+ "community.sub-collection-list.head": "Bu topluluğun koleksiyonları",
// "community.sub-community-list.head": "Communities of this Community",
- "community.sub-community-list.head": "Bu komünitenin koleksiyonları",
+ "community.sub-community-list.head": "Bu topluluğun koleksiyonları",
@@ -1594,7 +1594,7 @@
"curation.form.submit.error.content": "Küratörlük görevi başlatmaya çalışırken bir hata oluştu.",
// "curation.form.handle.label": "Handle:",
- "curation.form.handle.label": "Handle:",
+ "curation.form.handle.label": "Ele al:",
// "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": "İpucu: Gir [your-handle-prefix]/0 tüm sitede bir görevi çalıştırmak için (tüm görevler bu özelliği destekleyemez)",
@@ -1629,7 +1629,7 @@
"dso-selector.edit.collection.head": "Koleksiyonu Düzenle",
// "dso-selector.edit.community.head": "Edit community",
- "dso-selector.edit.community.head": "Komüniteyi Düzenle",
+ "dso-selector.edit.community.head": "Topluluğu Düzenle",
// "dso-selector.edit.item.head": "Edit item",
"dso-selector.edit.item.head": "Ögeyi düzenle",
@@ -1649,7 +1649,7 @@
"confirmation-modal.export-metadata.header": "Metadatalarını dışa aktar {{ dsoName }}",
// "confirmation-modal.export-metadata.info": "Are you sure you want to export metadata for {{ dsoName }}",
- "confirmation-modal.export-metadata.info": "Metadatalarını dışarı aktarmak istediğinizden emin misiniz {{ dsoName }}",
+ "confirmation-modal.export-metadata.info": "Metadataları dışarı aktarmak istediğinizden emin misiniz {{ dsoName }}",
// "confirmation-modal.export-metadata.cancel": "Cancel",
"confirmation-modal.export-metadata.cancel": "İptal",
@@ -2427,10 +2427,10 @@
// "item.edit.tabs.bitstreams.head": "Bitstreams",
- "item.edit.tabs.bitstreams.head": "Veri akışları",
+ "item.edit.tabs.bitstreams.head": "Bitstreamlar",
// "item.edit.tabs.bitstreams.title": "Item Edit - Bitstreams",
- "item.edit.tabs.bitstreams.title": "Öge düzenle - Veri akışları",
+ "item.edit.tabs.bitstreams.title": "Öge düzenle - Bitstreamlar",
// "item.edit.tabs.curate.head": "Curate",
"item.edit.tabs.curate.head": "Düzenleme",
@@ -2571,4 +2571,2556 @@
// "item.page.journal-title": "Journal Title",
"item.page.journal-title": "Süreli Yayın başlığı",
- // "item.page.publisher": "Publisa
\ No newline at end of file
+ // "item.page.publisher": "Publisher",
+ "item.page.publisher": "Yayınevi",
+
+ // "item.page.titleprefix": "Item: ",
+ "item.page.titleprefix": "Öge: ",
+
+ // "item.page.volume-title": "Volume Title",
+ "item.page.volume-title": "Cilt Başlığı",
+
+ // "item.search.results.head": "Item Search Results",
+ "item.search.results.head": "Öge Arama Sonuçları",
+
+ // "item.search.title": "DSpace Angular :: Item Search",
+ "item.search.title": "DSpace Angular :: Öge Arama",
+
+
+ // "item.page.abstract": "Abstract",
+ "item.page.abstract": "Özet",
+
+ // "item.page.author": "Authors",
+ "item.page.author": "Yazarlar",
+
+ // "item.page.citation": "Citation",
+ "item.page.citation": "Alıntı",
+
+ // "item.page.collections": "Collections",
+ "item.page.collections": "Koleksiyonlar",
+
+ // "item.page.date": "Date",
+ "item.page.date": "Tarih",
+
+ // "item.page.edit": "Edit this item",
+ "item.page.edit": "Bu öğeyi düzenle",
+
+ // "item.page.files": "Files",
+ "item.page.files": "Dosyalar",
+
+ // "item.page.filesection.description": "Description:",
+ "item.page.filesection.description": "Açıklama",
+
+ // "item.page.filesection.download": "Download",
+ "item.page.filesection.download": "İndir",
+
+ // "item.page.filesection.format": "Format:",
+ "item.page.filesection.format": "Format:",
+
+ // "item.page.filesection.name": "Name:",
+ "item.page.filesection.name": "Ad:",
+
+ // "item.page.filesection.size": "Size:",
+ "item.page.filesection.size": "Boyut:",
+
+ // "item.page.journal.search.title": "Articles in this journal",
+ "item.page.journal.search.title": "Bu süreli yayındaki makaleler",
+
+ // "item.page.link.full": "Full item page",
+ "item.page.link.full": "Tam öğe sayfası",
+
+ // "item.page.link.simple": "Simple item page",
+ "item.page.link.simple": "Sadeleştirilmiş öğe sayfası",
+
+ // "item.page.person.search.title": "Articles by this author",
+ "item.page.person.search.title": "Bu yazarın makaleleri",
+
+ // "item.page.related-items.view-more": "Show {{ amount }} more",
+ "item.page.related-items.view-more": "Daha fazla göster {{ amount }}",
+
+ // "item.page.related-items.view-less": "Hide last {{ amount }}",
+ "item.page.related-items.view-less": "Sonuncuyu gizle {{ amount }}",
+
+ // "item.page.relationships.isAuthorOfPublication": "Publications",
+ "item.page.relationships.isAuthorOfPublication": "Yayınlar",
+
+ // "item.page.relationships.isJournalOfPublication": "Publications",
+ "item.page.relationships.isJournalOfPublication": "Yayınlar",
+
+ // "item.page.relationships.isOrgUnitOfPerson": "Authors",
+ "item.page.relationships.isOrgUnitOfPerson": "Yazarlar",
+
+ // "item.page.relationships.isOrgUnitOfProject": "Research Projects",
+ "item.page.relationships.isOrgUnitOfProject": "Araştırma projeleri",
+
+ // "item.page.subject": "Keywords",
+ "item.page.subject": "Anahtar kelimeler",
+
+ // "item.page.uri": "URI",
+ "item.page.uri": "URI",
+
+ // "item.page.bitstreams.view-more": "Show more",
+ "item.page.bitstreams.view-more": "Daha fazla göster",
+
+ // "item.page.bitstreams.collapse": "Collapse",
+ "item.page.bitstreams.collapse": "Daralt",
+
+ // "item.page.filesection.original.bundle" : "Original bundle",
+ "item.page.filesection.original.bundle" : "Orijinal seri",
+
+ // "item.page.filesection.license.bundle" : "License bundle",
+ "item.page.filesection.license.bundle" : "Lisanslı seri",
+
+ // "item.preview.dc.identifier.uri": "Identifier:",
+ "item.preview.dc.identifier.uri": "Belirteç:",
+
+ // "item.preview.dc.contributor.author": "Authors:",
+ "item.preview.dc.contributor.author": "Yazarlar:",
+
+ // "item.preview.dc.date.issued": "Published date:",
+ "item.preview.dc.date.issued": "Yayınlanma tarihi:",
+
+ // "item.preview.dc.description.abstract": "Abstract:",
+ "item.preview.dc.description.abstract": "Özet:",
+
+ // "item.preview.dc.identifier.other": "Other identifier:",
+ "item.preview.dc.identifier.other": "Diğer Belirteçler:",
+
+ // "item.preview.dc.language.iso": "Language:",
+ "item.preview.dc.language.iso": "Dil:",
+
+ // "item.preview.dc.subject": "Subjects:",
+ "item.preview.dc.subject": "Konular:",
+
+ // "item.preview.dc.title": "Title:",
+ "item.preview.dc.title": "Başlık:",
+
+ // "item.preview.person.familyName": "Surname:",
+ "item.preview.person.familyName": "Soyad:",
+
+ // "item.preview.person.givenName": "Name:",
+ "item.preview.person.givenName": "Ad:",
+
+ // "item.preview.person.identifier.orcid": "ORCID:",
+ "item.preview.person.identifier.orcid": "ORCID:",
+
+
+ // "item.select.confirm": "Confirm selected",
+ "item.select.confirm": "Seçileni onayla",
+
+ // "item.select.empty": "No items to show",
+ "item.select.empty": "Gösterilecek öğe yok",
+
+ // "item.select.table.author": "Author",
+ "item.select.table.author": "Yazar",
+
+ // "item.select.table.collection": "Collection",
+ "item.select.table.collection": "Koleksiyon",
+
+ // "item.select.table.title": "Title",
+ "item.select.table.title": "Başlık",
+
+
+ // "item.version.history.empty": "There are no other versions for this item yet.",
+ "item.version.history.empty": "Bu öğe için henüz başka sürüm yok.",
+
+ // "item.version.history.head": "Version History",
+ "item.version.history.head": "Sürüm Geçmişi",
+
+ // "item.version.history.return": "Return",
+ "item.version.history.return": "Geri dön",
+
+ // "item.version.history.selected": "Selected version",
+ "item.version.history.selected": "Seçilen sürüm",
+
+ // "item.version.history.table.version": "Version",
+ "item.version.history.table.version": "Sürüm",
+
+ // "item.version.history.table.item": "Item",
+ "item.version.history.table.item": "Öge",
+
+ // "item.version.history.table.editor": "Editor",
+ "item.version.history.table.editor": "Editör",
+
+ // "item.version.history.table.date": "Date",
+ "item.version.history.table.date": "Tarih",
+
+ // "item.version.history.table.summary": "Summary",
+ "item.version.history.table.summary": "Özet",
+
+
+
+ // "item.version.notice": "This is not the latest version of this item. The latest version can be found here .",
+ "item.version.notice": "Bu, bu öğenin en son sürümü değil. En son sürüm burada bulunabilir.",
+
+
+
+ // "journal.listelement.badge": "Journal",
+ "journal.listelement.badge": "Süreli yayın",
+
+ // "journal.page.description": "Description",
+ "journal.page.description": "Açıklama",
+
+ // "journal.page.edit": "Edit this item",
+ "journal.page.edit": "Bu öğeyi düzenle",
+
+ // "journal.page.editor": "Editor-in-Chief",
+ "journal.page.editor": "Genel Yayın Yönetmeni",
+
+ // "journal.page.issn": "ISSN",
+ "journal.page.issn": "ISSN",
+
+ // "journal.page.publisher": "Publisher",
+ "journal.page.publisher": "Yayınevi",
+
+ // "journal.page.titleprefix": "Journal: ",
+ "journal.page.titleprefix": "Süreli yayın: ",
+
+ // "journal.search.results.head": "Journal Search Results",
+ "journal.search.results.head": "Süreli Yayın Arama Sonuçları",
+
+ // "journal.search.title": "DSpace Angular :: Journal Search",
+ "journal.search.title": "DSpace Angular :: Süreli Yayın Arama",
+
+
+
+ // "journalissue.listelement.badge": "Journal Issue",
+ "journalissue.listelement.badge": "Süreli Yayın Sayısı",
+
+ // "journalissue.page.description": "Description",
+ "journalissue.page.description": "Açıklama",
+
+ // "journalissue.page.edit": "Edit this item",
+ "journalissue.page.edit": "Bu öğeyi düzenle",
+
+ // "journalissue.page.issuedate": "Issue Date",
+ "journalissue.page.issuedate": "Yayın tarihi",
+
+ // "journalissue.page.journal-issn": "Journal ISSN",
+ "journalissue.page.journal-issn": "Süreli yayın ISSN",
+
+ // "journalissue.page.journal-title": "Journal Title",
+ "journalissue.page.journal-title": "Süreli yayın Başlığı",
+
+ // "journalissue.page.keyword": "Keywords",
+ "journalissue.page.keyword": "Anahtar kelimeler",
+
+ // "journalissue.page.number": "Number",
+ "journalissue.page.number": "Sayı",
+
+ // "journalissue.page.titleprefix": "Journal Issue: ",
+ "journalissue.page.titleprefix": "Süreli yayın sayısı: ",
+
+
+
+ // "journalvolume.listelement.badge": "Journal Volume",
+ "journalvolume.listelement.badge": "Süreli yayın cilti",
+
+ // "journalvolume.page.description": "Description",
+ "journalvolume.page.description": "Açıklama",
+
+ // "journalvolume.page.edit": "Edit this item",
+ "journalvolume.page.edit": "Bu öğeyi düzenle",
+
+ // "journalvolume.page.issuedate": "Issue Date",
+ "journalvolume.page.issuedate": "Yayın tarihi",
+
+ // "journalvolume.page.titleprefix": "Journal Volume: ",
+ "journalvolume.page.titleprefix": "Süreli yayın cilti: ",
+
+ // "journalvolume.page.volume": "Volume",
+ "journalvolume.page.volume": "Cilt",
+
+
+
+ // "loading.bitstream": "Loading bitstream...",
+ "loading.bitstream": "Bitstream yükleniyor...",
+
+ // "loading.bitstreams": "Loading bitstreams...",
+ "loading.bitstreams": "Bitstream yükleniyor...",
+
+ // "loading.browse-by": "Loading items...",
+ "loading.browse-by": "Bitstream yükleniyor...",
+
+ // "loading.browse-by-page": "Loading page...",
+ "loading.browse-by-page": "Yükleme sayfası...",
+
+ // "loading.collection": "Loading collection...",
+ "loading.collection": "Koleksiyon yükleniyor...",
+
+ // "loading.collections": "Loading collections...",
+ "loading.collections": "Koleksiyon yükleniyor...",
+
+ // "loading.content-source": "Loading content source...",
+ "loading.content-source": "İçerik kaynağı yükleniyor...",
+
+ // "loading.community": "Loading community...",
+ "loading.community": "Komünite yükleniyor...",
+
+ // "loading.default": "Loading...",
+ "loading.default": "Yükleniyor...",
+
+ // "loading.item": "Loading item...",
+ "loading.item": "Ögeler yükleniyor...",
+
+ // "loading.items": "Loading items...",
+ "loading.items": "Ögeler yükleniyor...",
+
+ // "loading.mydspace-results": "Loading items...",
+ "loading.mydspace-results": "Ögeler yükleniyor...",
+
+ // "loading.objects": "Loading...",
+ "loading.objects": "Yükleniyor...",
+
+ // "loading.recent-submissions": "Loading recent submissions...",
+ "loading.recent-submissions": "Son gönderiler yükleniyor...",
+
+ // "loading.search-results": "Loading search results...",
+ "loading.search-results": "Arama sonuçları yükleniyor...",
+
+ // "loading.sub-collections": "Loading sub-collections...",
+ "loading.sub-collections": "Alt koleksiyonlar yükleniyor...",
+
+ // "loading.sub-communities": "Loading sub-communities...",
+ "loading.sub-communities": "Alt komüniteler yükleniyor...",
+
+ // "loading.top-level-communities": "Loading top-level communities...",
+ "loading.top-level-communities": "Üst düzey komüniteler yükleniyor...",
+
+
+
+ // "login.form.email": "Email address",
+ "login.form.email": "E-posta adresi",
+
+ // "login.form.forgot-password": "Have you forgotten your password?",
+ "login.form.forgot-password": "Parolanızı unuttunuz mu?",
+
+ // "login.form.header": "Please log in to DSpace",
+ "login.form.header": "Lütfen DSpace'e giriş yapın",
+
+ // "login.form.new-user": "New user? Click here to register.",
+ "login.form.new-user": "Yeni kullanıcı mısınız? Kayıt olmak için buraya tıklayın.",
+
+ // "login.form.or-divider": "or",
+ "login.form.or-divider": "ya da",
+
+ // "login.form.password": "Password",
+ "login.form.password": "Parola",
+
+ // "login.form.shibboleth": "Log in with Shibboleth",
+ "login.form.shibboleth": "Shibboleth ile giriş yapın",
+
+ // "login.form.submit": "Log in",
+ "login.form.submit": "Giriş yap",
+
+ // "login.title": "Login",
+ "login.title": "Giriş",
+
+ // "login.breadcrumbs": "Login",
+ "login.breadcrumbs": "Giriş",
+
+
+
+ // "logout.form.header": "Log out from DSpace",
+ "logout.form.header": "DSpace'den çıkış yapın",
+
+ // "logout.form.submit": "Log out",
+ "logout.form.submit": "Çıkış yap",
+
+ // "logout.title": "Logout",
+ "logout.title": "Çıkış yap",
+
+
+
+ // "menu.header.admin": "Admin",
+ "menu.header.admin": "Yönetici",
+
+ // "menu.header.image.logo": "Repository logo",
+ "menu.header.image.logo": "Depo logosu",
+
+
+
+ // "menu.section.access_control": "Access Control",
+ "menu.section.access_control": "Giriş kontrolü",
+
+ // "menu.section.access_control_authorizations": "Authorizations",
+ "menu.section.access_control_authorizations": "Yetkilendirmeler",
+
+ // "menu.section.access_control_groups": "Groups",
+ "menu.section.access_control_groups": "Gruplar",
+
+ // "menu.section.access_control_people": "People",
+ "menu.section.access_control_people": "Kişiler",
+
+
+
+ // "menu.section.admin_search": "Admin Search",
+ "menu.section.admin_search": "Yönetici araması",
+
+
+
+ // "menu.section.browse_community": "This Community",
+ "menu.section.browse_community": "Bu Komünite",
+
+ // "menu.section.browse_community_by_author": "By Author",
+ "menu.section.browse_community_by_author": "Yazara göre",
+
+ // "menu.section.browse_community_by_issue_date": "By Issue Date",
+ "menu.section.browse_community_by_issue_date": "Yayın tarihine göre",
+
+ // "menu.section.browse_community_by_title": "By Title",
+ "menu.section.browse_community_by_title": "Başlığa göre",
+
+ // "menu.section.browse_global": "All of DSpace",
+ "menu.section.browse_global": "Tümü",
+
+ // "menu.section.browse_global_by_author": "By Author",
+ "menu.section.browse_global_by_author": "Yazara göre",
+
+ // "menu.section.browse_global_by_dateissued": "By Issue Date",
+ "menu.section.browse_global_by_dateissued": "Yayın tarihine göre",
+
+ // "menu.section.browse_global_by_subject": "By Subject",
+ "menu.section.browse_global_by_subject": "Konuya göre",
+
+ // "menu.section.browse_global_by_title": "By Title",
+ "menu.section.browse_global_by_title": "Başlığa göre",
+
+ // "menu.section.browse_global_communities_and_collections": "Communities & Collections",
+ "menu.section.browse_global_communities_and_collections": "Komüniteler ve Koleksiyonlar",
+
+
+
+ // "menu.section.control_panel": "Control Panel",
+ "menu.section.control_panel": "Kontrol Paneli",
+
+ // "menu.section.curation_task": "Curation Task",
+ "menu.section.curation_task": "Düzenleme görevi",
+
+
+
+ // "menu.section.edit": "Edit",
+ "menu.section.edit": "Düzenle",
+
+ // "menu.section.edit_collection": "Collection",
+ "menu.section.edit_collection": "Koleksiyon",
+
+ // "menu.section.edit_community": "Community",
+ "menu.section.edit_community": "Komünite",
+
+ // "menu.section.edit_item": "Item",
+ "menu.section.edit_item": "Öge",
+
+
+
+ // "menu.section.export": "Export",
+ "menu.section.export": "Dışa aktar",
+
+ // "menu.section.export_collection": "Collection",
+ "menu.section.export_collection": "Koleksiyon",
+
+ // "menu.section.export_community": "Community",
+ "menu.section.export_community": "Komünite",
+
+ // "menu.section.export_item": "Item",
+ "menu.section.export_item": "Öge",
+
+ // "menu.section.export_metadata": "Metadata",
+ "menu.section.export_metadata": "Metadata",
+
+
+
+ // "menu.section.icon.access_control": "Access Control menu section",
+ "menu.section.icon.access_control": "Erişim Kontrolü menüsü bölümü",
+
+ // "menu.section.icon.admin_search": "Admin search menu section",
+ "menu.section.icon.admin_search": "Yönetici arama menüsü bölümü",
+
+ // "menu.section.icon.control_panel": "Control Panel menu section",
+ "menu.section.icon.control_panel": "Kontrol Paneli menü bölümü",
+
+ // "menu.section.icon.curation_task": "Curation Task menu section",
+ "menu.section.icon.curation_task": "Düzenleme Görevi menüsü bölümü",
+
+ // "menu.section.icon.edit": "Edit menu section",
+ "menu.section.icon.edit": "Menü bölümünü düzenle",
+
+ // "menu.section.icon.export": "Export menu section",
+ "menu.section.icon.export": "Menü bölümünü dışa aktar",
+
+ // "menu.section.icon.find": "Find menu section",
+ "menu.section.icon.find": "Menü bölümünü bulun",
+
+ // "menu.section.icon.import": "Import menu section",
+ "menu.section.icon.import": "Menü bölümünü içe aktar",
+
+ // "menu.section.icon.new": "New menu section",
+ "menu.section.icon.new": "Yeni menü bölümü",
+
+ // "menu.section.icon.pin": "Pin sidebar",
+ "menu.section.icon.pin": "Yan çubuğu sabitle",
+
+ // "menu.section.icon.processes": "Processes menu section",
+ "menu.section.icon.processes": "İşlemler menüsü bölümü",
+
+ // "menu.section.icon.registries": "Registries menu section",
+ "menu.section.icon.registries": "Kayıtlar menüsü bölümü",
+
+ // "menu.section.icon.statistics_task": "Statistics Task menu section",
+ "menu.section.icon.statistics_task": "İstatistik Görev menüsü bölümü",
+
+ // "menu.section.icon.unpin": "Unpin sidebar",
+ "menu.section.icon.unpin": "Kenar çubuğunu kaldır",
+
+
+
+ // "menu.section.import": "Import",
+ "menu.section.import": "İçe aktar",
+
+ // "menu.section.import_batch": "Batch Import (ZIP)",
+ "menu.section.import_batch": "Toplu İçe Aktarma (ZIP)",
+
+ // "menu.section.import_metadata": "Metadata",
+ "menu.section.import_metadata": "Metadata",
+
+
+
+ // "menu.section.new": "New",
+ "menu.section.new": "Yeni",
+
+ // "menu.section.new_collection": "Collection",
+ "menu.section.new_collection": "Koleksiyon",
+
+ // "menu.section.new_community": "Community",
+ "menu.section.new_community": "Komünite",
+
+ // "menu.section.new_item": "Item",
+ "menu.section.new_item": "Öğe",
+
+ // "menu.section.new_item_version": "Item Version",
+ "menu.section.new_item_version": "Öğe Sürümü",
+
+ // "menu.section.new_process": "Process",
+ "menu.section.new_process": "Süreç",
+
+
+
+ // "menu.section.pin": "Pin sidebar",
+ "menu.section.pin": "Kenar çubuğunu sabitle",
+
+ // "menu.section.unpin": "Unpin sidebar",
+ "menu.section.unpin": "Kenar çubuğunun sabitlemesini kaldır",
+
+
+
+ // "menu.section.processes": "Processes",
+ "menu.section.processes": "Süreçler",
+
+
+
+ // "menu.section.registries": "Registries",
+ "menu.section.registries": "Kayıt",
+
+ // "menu.section.registries_format": "Format",
+ "menu.section.registries_format": "Format",
+
+ // "menu.section.registries_metadata": "Metadata",
+ "menu.section.registries_metadata": "Metadata",
+
+
+
+ // "menu.section.statistics": "Statistics",
+ "menu.section.statistics": "İstatistik",
+
+ // "menu.section.statistics_task": "Statistics Task",
+ "menu.section.statistics_task": "İstatistiksel Görev",
+
+
+
+ // "menu.section.toggle.access_control": "Toggle Access Control section",
+ "menu.section.toggle.access_control": "Erişim kontrolü bölümünü aç/kapat",
+
+ // "menu.section.toggle.control_panel": "Toggle Control Panel section",
+ "menu.section.toggle.control_panel": "Kontrol Paneli bölümünü aç/kapat",
+
+ // "menu.section.toggle.curation_task": "Toggle Curation Task section",
+ "menu.section.toggle.curation_task": "İyileştirme Görevi bölümünü aç/kapat",
+
+ // "menu.section.toggle.edit": "Toggle Edit section",
+ "menu.section.toggle.edit": "Düzenleme bölümünü aç/kapat",
+
+ // "menu.section.toggle.export": "Toggle Export section",
+ "menu.section.toggle.export": "Dışa Aktarma bölümünü aç/kapat",
+
+ // "menu.section.toggle.find": "Toggle Find section",
+ "menu.section.toggle.find": "Arama bölümünü aç/kapat",
+
+ // "menu.section.toggle.import": "Toggle Import section",
+ "menu.section.toggle.import": "İçe Aktarma bölümünü aç/kapat",
+
+ // "menu.section.toggle.new": "Toggle New section",
+ "menu.section.toggle.new": "Yeni bölümü aç/kapat",
+
+ // "menu.section.toggle.registries": "Toggle Registries section",
+ "menu.section.toggle.registries": "Kayıtlar bölümünü aç/kapat",
+
+ // "menu.section.toggle.statistics_task": "Toggle Statistics Task section",
+ "menu.section.toggle.statistics_task": "İstatistik Görev bölümünü aç/kapat",
+
+
+ // "menu.section.workflow": "Administer Workflow",
+ "menu.section.workflow": "İş Akışını Yönet",
+
+
+ // "mydspace.description": "",
+ "mydspace.description": "",
+
+ // "mydspace.general.text-here": "here",
+ "mydspace.general.text-here": "Burada",
+
+ // "mydspace.messages.controller-help": "Select this option to send a message to item's submitter.",
+ "mydspace.messages.controller-help": "Öğeyi gönderene bir mesaj göndermek için bu seçeneği seçin.",
+
+ // "mydspace.messages.description-placeholder": "Insert your message here...",
+ "mydspace.messages.description-placeholder": "Mesajınızı buraya ekleyin...",
+
+ // "mydspace.messages.hide-msg": "Hide message",
+ "mydspace.messages.hide-msg": "Mesajı gizle",
+
+ // "mydspace.messages.mark-as-read": "Mark as read",
+ "mydspace.messages.mark-as-read": "Okundu olarak işaretle",
+
+ // "mydspace.messages.mark-as-unread": "Mark as unread",
+ "mydspace.messages.mark-as-unread": "Okunmamış olarak işaretle",
+
+ // "mydspace.messages.no-content": "No content.",
+ "mydspace.messages.no-content": "İçerik yok.",
+
+ // "mydspace.messages.no-messages": "No messages yet.",
+ "mydspace.messages.no-messages": "Henüz mesaj yok.",
+
+ // "mydspace.messages.send-btn": "Send",
+ "mydspace.messages.send-btn": "Gönder",
+
+ // "mydspace.messages.show-msg": "Show message",
+ "mydspace.messages.show-msg": "Mesajı göster",
+
+ // "mydspace.messages.subject-placeholder": "Subject...",
+ "mydspace.messages.subject-placeholder": "Konu...",
+
+ // "mydspace.messages.submitter-help": "Select this option to send a message to controller.",
+ "mydspace.messages.submitter-help": "Kontrolöre mesaj göndermek için bu seçeneği seçin.",
+
+ // "mydspace.messages.title": "Messages",
+ "mydspace.messages.title": "Mesajlar",
+
+ // "mydspace.messages.to": "To",
+ "mydspace.messages.to": "-e",
+
+ // "mydspace.new-submission": "New submission",
+ "mydspace.new-submission": "Yeni talep",
+
+ // "mydspace.new-submission-external": "Import metadata from external source",
+ "mydspace.new-submission-external": "Harici kaynaktan metadataları içe aktar",
+
+ // "mydspace.new-submission-external-short": "Import metadata",
+ "mydspace.new-submission-external-short": "Metadataları içeri aktar.",
+
+ // "mydspace.results.head": "Your submissions",
+ "mydspace.results.head": "Gönderimleriniz",
+
+ // "mydspace.results.no-abstract": "No Abstract",
+ "mydspace.results.no-abstract": "Özet yok",
+
+ // "mydspace.results.no-authors": "No Authors",
+ "mydspace.results.no-authors": "Yazar yok.",
+
+ // "mydspace.results.no-collections": "No Collections",
+ "mydspace.results.no-collections": "Koleksiyon yok",
+
+ // "mydspace.results.no-date": "No Date",
+ "mydspace.results.no-date": "Tarih yok",
+
+ // "mydspace.results.no-files": "No Files",
+ "mydspace.results.no-files": "Dosya yok",
+
+ // "mydspace.results.no-results": "There were no items to show",
+ "mydspace.results.no-results": "Gösterilecek öğe yok.",
+
+ // "mydspace.results.no-title": "No title",
+ "mydspace.results.no-title": "Başlık yok",
+
+ // "mydspace.results.no-uri": "No Uri",
+ "mydspace.results.no-uri": "Uri yok",
+
+ // "mydspace.show.workflow": "All tasks",
+ "mydspace.show.workflow": "Tüm görevler",
+
+ // "mydspace.show.workspace": "Your Submissions",
+ "mydspace.show.workspace": "Gönderimleriniz",
+
+ // "mydspace.status.archived": "Archived",
+ "mydspace.status.archived": "Arşivlendi",
+
+ // "mydspace.status.validation": "Validation",
+ "mydspace.status.validation": "Doğrulama",
+
+ // "mydspace.status.waiting-for-controller": "Waiting for controller",
+ "mydspace.status.waiting-for-controller": "Kontrolör bekleniyor",
+
+ // "mydspace.status.workflow": "Workflow",
+ "mydspace.status.workflow": "İş akışı",
+
+ // "mydspace.status.workspace": "Workspace",
+ "mydspace.status.workspace": "Çalışma alanı",
+
+ // "mydspace.title": "MyDSpace",
+ "mydspace.title": "MyDSpace",
+
+ // "mydspace.upload.upload-failed": "Error creating new workspace. Please verify the content uploaded before retry.",
+ "mydspace.upload.upload-failed": "Yeni çalışma alanı oluşturulurken hata oluştu. Lütfen yeniden denemeden önce yüklenen içeriği doğrulayın.",
+
+ // "mydspace.upload.upload-failed-manyentries": "Unprocessable file. Detected too many entries but allowed only one for file.",
+ "mydspace.upload.upload-failed-manyentries": "İşlenemeyen dosya. Çok fazla giriş algılandı fakat dosya için yalnızca bir girişe izin verildi.",
+
+ // "mydspace.upload.upload-failed-moreonefile": "Unprocessable request. Only one file is allowed.",
+ "mydspace.upload.upload-failed-moreonefile": "İşlenemeyen istek. Yalnızca bir dosyaya izin verilir.",
+
+ // "mydspace.upload.upload-multiple-successful": "{{qty}} new workspace items created.",
+ "mydspace.upload.upload-multiple-successful": "{{qty}} yeni çalışma alanı öğeleri oluşturuldu.",
+
+ // "mydspace.upload.upload-successful": "New workspace item created. Click {{here}} for edit it.",
+ "mydspace.upload.upload-successful": "Yeni çalışma alanı öğesi oluşturuldu. Düzenlemek için {{here}} tıklayın.",
+
+ // "mydspace.view-btn": "View",
+ "mydspace.view-btn": "Görünüm",
+
+
+
+ // "nav.browse.header": "All of DSpace",
+ "nav.browse.header": "DSpace'in tümü",
+
+ // "nav.community-browse.header": "By Community",
+ "nav.community-browse.header": "Komünite tarafından",
+
+ // "nav.language": "Language switch",
+ "nav.language": "Dil değiştirme",
+
+ // "nav.login": "Log In",
+ "nav.login": "Giriş yap",
+
+ // "nav.logout": "Log Out",
+ "nav.logout": "Çıkış yap",
+
+ // "nav.mydspace": "MyDSpace",
+ "nav.mydspace": "BenimDSpace'im",
+
+ // "nav.profile": "Profile",
+ "nav.profile": "Profil",
+
+ // "nav.search": "Search",
+ "nav.search": "Arama",
+
+ // "nav.statistics.header": "Statistics",
+ "nav.statistics.header": "İstatistik",
+
+ // "nav.stop-impersonating": "Stop impersonating EPerson",
+ "nav.stop-impersonating": "EPerson'ı taklit etmeyi bırakın",
+
+
+
+ // "orgunit.listelement.badge": "Organizational Unit",
+ "orgunit.listelement.badge": "Organizasyon Birimi",
+
+ // "orgunit.page.city": "City",
+ "orgunit.page.city": "Şehir",
+
+ // "orgunit.page.country": "Country",
+ "orgunit.page.country": "Ülke",
+
+ // "orgunit.page.dateestablished": "Date established",
+ "orgunit.page.dateestablished": "Kuruluş tarihi",
+
+ // "orgunit.page.description": "Description",
+ "orgunit.page.description": "Açıklama",
+
+ // "orgunit.page.edit": "Edit this item",
+ "orgunit.page.edit": "Bu öğeyi düzenle",
+
+ // "orgunit.page.id": "ID",
+ "orgunit.page.id": "Kimlik",
+
+ // "orgunit.page.titleprefix": "Organizational Unit: ",
+ "orgunit.page.titleprefix": "Organizasyon Birimi: ",
+
+
+
+ // "pagination.results-per-page": "Results Per Page",
+ "pagination.results-per-page": "Sayfa başına sonuç",
+
+ // "pagination.showing.detail": "{{ range }} of {{ total }}",
+ "pagination.showing.detail": "{{ range }} / {{ total }}",
+
+ // "pagination.showing.label": "Now showing ",
+ "pagination.showing.label": "Şimdi gösteriliyor ",
+
+ // "pagination.sort-direction": "Sort Options",
+ "pagination.sort-direction": "Sıralama Seçenekleri",
+
+
+
+ // "person.listelement.badge": "Person",
+ "person.listelement.badge": "Kişi",
+
+ // "person.listelement.no-title": "No name found",
+ "person.listelement.no-title": "İsim bulunamadı",
+
+ // "person.page.birthdate": "Birth Date",
+ "person.page.birthdate": "Doğum Tarihi",
+
+ // "person.page.edit": "Edit this item",
+ "person.page.edit": "Bu öğeyi düzenle",
+
+ // "person.page.email": "Email Address",
+ "person.page.email": "E-posta Adresi",
+
+ // "person.page.firstname": "First Name",
+ "person.page.firstname": "Ad",
+
+ // "person.page.jobtitle": "Job Title",
+ "person.page.jobtitle": "İş Adı",
+
+ // "person.page.lastname": "Last Name",
+ "person.page.lastname": "Soyad",
+
+ // "person.page.link.full": "Show all metadata",
+ "person.page.link.full": "Tüm metadata'yı göster",
+
+ // "person.page.orcid": "ORCID",
+ "person.page.orcid": "ORCID",
+
+ // "person.page.staffid": "Staff ID",
+ "person.page.staffid": "Personel Kimliği",
+
+ // "person.page.titleprefix": "Person: ",
+ "person.page.titleprefix": "Kişi: ",
+
+ // "person.search.results.head": "Person Search Results",
+ "person.search.results.head": "Kişi Arama Sonuçları",
+
+ // "person.search.title": "DSpace Angular :: Person Search",
+ "person.search.title": "DSpace Angular :: Kişi Arama",
+
+
+
+ // "process.new.select-parameters": "Parameters",
+ "process.new.select-parameters": "Parametreler",
+
+ // "process.new.cancel": "Cancel",
+ "process.new.cancel": "İptal etmek",
+
+ // "process.new.submit": "Submit",
+ "process.new.submit": "Göndermek",
+
+ // "process.new.select-script": "Script",
+ "process.new.select-script": "Betik",
+
+ // "process.new.select-script.placeholder": "Choose a script...",
+ "process.new.select-script.placeholder": "Betik Seçiniz...",
+
+ // "process.new.select-script.required": "Script is required",
+ "process.new.select-script.required": "Betik gerekli",
+
+ // "process.new.parameter.file.upload-button": "Select file...",
+ "process.new.parameter.file.upload-button": "Dosya seç...",
+
+ // "process.new.parameter.file.required": "Please select a file",
+ "process.new.parameter.file.required": "Lütfen dosya seçiniz.",
+
+ // "process.new.parameter.string.required": "Parameter value is required",
+ "process.new.parameter.string.required": "Parametre değeri gerekli",
+
+ // "process.new.parameter.type.value": "value",
+ "process.new.parameter.type.value": "Değer",
+
+ // "process.new.parameter.type.file": "file",
+ "process.new.parameter.type.file": "dosya",
+
+ // "process.new.parameter.required.missing": "The following parameters are required but still missing:",
+ "process.new.parameter.required.missing": "Aşağıdaki parametreler gerekli ancak yine de eksik:",
+
+ // "process.new.notification.success.title": "Success",
+ "process.new.notification.success.title": "Başarı",
+
+ // "process.new.notification.success.content": "The process was successfully created",
+ "process.new.notification.success.content": "Süreç başarıyla oluşturuldu",
+
+ // "process.new.notification.error.title": "Error",
+ "process.new.notification.error.title": "Hata",
+
+ // "process.new.notification.error.content": "An error occurred while creating this process",
+ "process.new.notification.error.content": "Bu süreç oluşturulurken bir hata oluştu",
+
+ // "process.new.header": "Create a new process",
+ "process.new.header": "Yeni bir süreç oluştur",
+
+ // "process.new.title": "Create a new process",
+ "process.new.title": "Yeni bir süreç oluştur",
+
+ // "process.new.breadcrumbs": "Create a new process",
+ "process.new.breadcrumbs": "Yeni bir süreç oluştur",
+
+
+
+ // "process.detail.arguments" : "Arguments",
+ "process.detail.arguments" : "Argümanlar",
+
+ // "process.detail.arguments.empty" : "This process doesn't contain any arguments",
+ "process.detail.arguments.empty" : "Bu süreç herhangi bir argüman içermiyor",
+
+ // "process.detail.back" : "Back",
+ "process.detail.back" : "Geri",
+
+ // "process.detail.output" : "Process Output",
+ "process.detail.output" : "Süreç Çıktısı",
+
+ // "process.detail.logs.button": "Retrieve process output",
+ "process.detail.logs.button": "Süreç çıktısını geri al",
+
+ // "process.detail.logs.loading": "Retrieving",
+ "process.detail.logs.loading": "Geri almak",
+
+ // "process.detail.logs.none": "This process has no output",
+ "process.detail.logs.none": "Bu sürecin çıktısı yok",
+
+ // "process.detail.output-files" : "Output Files",
+ "process.detail.output-files" : "Çıktı dosyaları",
+
+ // "process.detail.output-files.empty" : "This process doesn't contain any output files",
+ "process.detail.output-files.empty" : "Bu süreç herhangi bir çıktı dosyası içermiyor",
+
+ // "process.detail.script" : "Script",
+ "process.detail.script" : "Betik",
+
+ // "process.detail.title" : "Process: {{ id }} - {{ name }}",
+ "process.detail.title" : "Süreç: {{ id }} - {{ name }}",
+
+ // "process.detail.start-time" : "Start time",
+ "process.detail.start-time" : "Başlangıç saati",
+
+ // "process.detail.end-time" : "Finish time",
+ "process.detail.end-time" : "Bitiş zamanı",
+
+ // "process.detail.status" : "Status",
+ "process.detail.status" : "Durum",
+
+ // "process.detail.create" : "Create similar process",
+ "process.detail.create" : "Benzer süreç oluştur",
+
+
+
+ // "process.overview.table.finish" : "Finish time",
+ "process.overview.table.finish" : "Bitiş zamanı",
+
+ // "process.overview.table.id" : "Process ID",
+ "process.overview.table.id" : "Süreç kimliği",
+
+ // "process.overview.table.name" : "Name",
+ "process.overview.table.name" : "Ad",
+
+ // "process.overview.table.start" : "Start time",
+ "process.overview.table.start" : "Başlangıç zamanı",
+
+ // "process.overview.table.status" : "Status",
+ "process.overview.table.status" : "Durum",
+
+ // "process.overview.table.user" : "User",
+ "process.overview.table.user" : "Kullanıcı",
+
+ // "process.overview.title": "Processes Overview",
+ "process.overview.title": "Süreçlere Genel Bakış",
+
+ // "process.overview.breadcrumbs": "Processes Overview",
+ "process.overview.breadcrumbs": "Süreçlere Genel Bakış",
+
+ // "process.overview.new": "New",
+ "process.overview.new": "Yeni",
+
+
+ // "profile.breadcrumbs": "Update Profile",
+ "profile.breadcrumbs": "Profili Güncelle",
+
+ // "profile.card.identify": "Identify",
+ "profile.card.identify": "Kimlik",
+
+ // "profile.card.security": "Security",
+ "profile.card.security": "Güvenlik",
+
+ // "profile.form.submit": "Update Profile",
+ "profile.form.submit": "Profili Güncelle",
+
+ // "profile.groups.head": "Authorization groups you belong to",
+ "profile.groups.head": "Ait olduğunuz yetkilendirme grupları",
+
+ // "profile.head": "Update Profile",
+ "profile.head": "Profili Güncelle",
+
+ // "profile.metadata.form.error.firstname.required": "First Name is required",
+ "profile.metadata.form.error.firstname.required": "Ad gereklidir",
+
+ // "profile.metadata.form.error.lastname.required": "Last Name is required",
+ "profile.metadata.form.error.lastname.required": "Soyadı gerekli",
+
+ // "profile.metadata.form.label.email": "Email Address",
+ "profile.metadata.form.label.email": "E-posta Adresi",
+
+ // "profile.metadata.form.label.firstname": "First Name",
+ "profile.metadata.form.label.firstname": "Ad",
+
+ // "profile.metadata.form.label.language": "Language",
+ "profile.metadata.form.label.language": "Dil",
+
+ // "profile.metadata.form.label.lastname": "Last Name",
+ "profile.metadata.form.label.lastname": "Soyadı",
+
+ // "profile.metadata.form.label.phone": "Contact Telephone",
+ "profile.metadata.form.label.phone": "İletişim telefonu",
+
+ // "profile.metadata.form.notifications.success.content": "Your changes to the profile were saved.",
+ "profile.metadata.form.notifications.success.content": "Profilde yaptığınız değişiklikler kaydedildi.",
+
+ // "profile.metadata.form.notifications.success.title": "Profile saved",
+ "profile.metadata.form.notifications.success.title": "Profil kaydedildi",
+
+ // "profile.notifications.warning.no-changes.content": "No changes were made to the Profile.",
+ "profile.notifications.warning.no-changes.content": "Profilde herhangi bir değişiklik yapılmadı.",
+
+ // "profile.notifications.warning.no-changes.title": "No changes",
+ "profile.notifications.warning.no-changes.title": "Değişiklik yok",
+
+ // "profile.security.form.error.matching-passwords": "The passwords do not match.",
+ "profile.security.form.error.matching-passwords": "Parolalar eşleşmiyor.",
+
+ // "profile.security.form.error.password-length": "The password should be at least 6 characters long.",
+ "profile.security.form.error.password-length": "Parola en az 6 karakter uzunluğunda olmalıdır.",
+
+ // "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": "İsteğe bağlı olarak aşağıdaki kutucuğa yeni bir parola girebilir ve ikinci kutucuğa tekrar yazarak onaylayabilirsiniz. En az altı karakter uzunluğunda olmalıdır.",
+
+ // "profile.security.form.label.password": "Password",
+ "profile.security.form.label.password": "Parola",
+
+ // "profile.security.form.label.passwordrepeat": "Retype to confirm",
+ "profile.security.form.label.passwordrepeat": "Doğrulamak için yeniden yazınız",
+
+ // "profile.security.form.notifications.success.content": "Your changes to the password were saved.",
+ "profile.security.form.notifications.success.content": "Parola değişiklikleriniz kaydedildi.",
+
+ // "profile.security.form.notifications.success.title": "Password saved",
+ "profile.security.form.notifications.success.title": "Parola kaydedildi",
+
+ // "profile.security.form.notifications.error.title": "Error changing passwords",
+ "profile.security.form.notifications.error.title": "Parolalar değiştirilirken hata oluştu",
+
+ // "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": "Parola en az 6 karakter uzunluğunda olmalıdır.",
+
+ // "profile.security.form.notifications.error.not-same": "The provided passwords are not the same.",
+ "profile.security.form.notifications.error.not-same": "Sağlanan parolalar aynı değil.",
+
+ // "profile.title": "Update Profile",
+ "profile.title": "Profili Güncelle",
+
+
+
+ // "project.listelement.badge": "Research Project",
+ "project.listelement.badge": "Araştırma projesi",
+
+ // "project.page.contributor": "Contributors",
+ "project.page.contributor": "Katkıda Bulunanlar",
+
+ // "project.page.description": "Description",
+ "project.page.description": "Açıklama",
+
+ // "project.page.edit": "Edit this item",
+ "project.page.edit": "Bu öğeyi düzenle",
+
+ // "project.page.expectedcompletion": "Expected Completion",
+ "project.page.expectedcompletion": "Beklenen Tamamlanma",
+
+ // "project.page.funder": "Funders",
+ "project.page.funder": "Fon Sağlayıcılar",
+
+ // "project.page.id": "ID",
+ "project.page.id": "Kimlik",
+
+ // "project.page.keyword": "Keywords",
+ "project.page.keyword": "Anahtar kelimeler",
+
+ // "project.page.status": "Status",
+ "project.page.status": "Durum",
+
+ // "project.page.titleprefix": "Research Project: ",
+ "project.page.titleprefix": "Araştırma Projesi: ",
+
+ // "project.search.results.head": "Project Search Results",
+ "project.search.results.head": "Proje Arama Sonuçları",
+
+
+
+ // "publication.listelement.badge": "Publication",
+ "publication.listelement.badge": "Yayın",
+
+ // "publication.page.description": "Description",
+ "publication.page.description": "Açıklama",
+
+ // "publication.page.edit": "Edit this item",
+ "publication.page.edit": "Bu öğeyi düzenle",
+
+ // "publication.page.journal-issn": "Journal ISSN",
+ "publication.page.journal-issn": "Dergi ISSN",
+
+ // "publication.page.journal-title": "Journal Title",
+ "publication.page.journal-title": "Dergi Başlığı",
+
+ // "publication.page.publisher": "Publisher",
+ "publication.page.publisher": "Yayımcı",
+
+ // "publication.page.titleprefix": "Publication: ",
+ "publication.page.titleprefix": "Yayın: ",
+
+ // "publication.page.volume-title": "Volume Title",
+ "publication.page.volume-title": "Cilt Başlığı",
+
+ // "publication.search.results.head": "Publication Search Results",
+ "publication.search.results.head": "Yayın Arama Sonuçları",
+
+ // "publication.search.title": "DSpace Angular :: Publication Search",
+ "publication.search.title": "DSpace Angular :: Yayın Arama",
+
+
+ // "register-email.title": "New user registration",
+ "register-email.title": "Yeni kullanıcı kaydı",
+
+ // "register-page.create-profile.header": "Create Profile",
+ "register-page.create-profile.header": "Profil oluştur",
+
+ // "register-page.create-profile.identification.header": "Identify",
+ "register-page.create-profile.identification.header": "Tanımlamak",
+
+ // "register-page.create-profile.identification.email": "Email Address",
+ "register-page.create-profile.identification.email": "E-posta Adresi",
+
+ // "register-page.create-profile.identification.first-name": "First Name *",
+ "register-page.create-profile.identification.first-name": "Ad *",
+
+ // "register-page.create-profile.identification.first-name.error": "Please fill in a First Name",
+ "register-page.create-profile.identification.first-name.error": "Lütfen bir ad girin",
+
+ // "register-page.create-profile.identification.last-name": "Last Name *",
+ "register-page.create-profile.identification.last-name": "Soyadı *",
+
+ // "register-page.create-profile.identification.last-name.error": "Please fill in a Last Name",
+ "register-page.create-profile.identification.last-name.error": "Lütfen bir soyadı girin",
+
+ // "register-page.create-profile.identification.contact": "Contact Telephone",
+ "register-page.create-profile.identification.contact": "İletişim telefonu",
+
+ // "register-page.create-profile.identification.language": "Language",
+ "register-page.create-profile.identification.language": "Dil",
+
+ // "register-page.create-profile.security.header": "Security",
+ "register-page.create-profile.security.header": "Güvenlik",
+
+ // "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": "Lütfen aşağıdaki kutuya bir parola girin ve ikinci kutuya tekrar yazarak onaylayın. En az altı karakter uzunluğunda olmalıdır.",
+
+ // "register-page.create-profile.security.label.password": "Password *",
+ "register-page.create-profile.security.label.password": "Parola *",
+
+ // "register-page.create-profile.security.label.passwordrepeat": "Retype to confirm *",
+ "register-page.create-profile.security.label.passwordrepeat": "Doğrulamak için yeniden yazınız *",
+
+ // "register-page.create-profile.security.error.empty-password": "Please enter a password in the box below.",
+ "register-page.create-profile.security.error.empty-password": "Lütfen aşağıdaki kutuya bir parola girin.",
+
+ // "register-page.create-profile.security.error.matching-passwords": "The passwords do not match.",
+ "register-page.create-profile.security.error.matching-passwords": "Parolalar eşleşmiyor.",
+
+ // "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": "Parola en az 6 karakter uzunluğunda olmalıdır.",
+
+ // "register-page.create-profile.submit": "Complete Registration",
+ "register-page.create-profile.submit": "Kaydı Tamamla",
+
+ // "register-page.create-profile.submit.error.content": "Something went wrong while registering a new user.",
+ "register-page.create-profile.submit.error.content": "Yeni bir kullanıcı kaydedilirken bir şeyler ters gitti.",
+
+ // "register-page.create-profile.submit.error.head": "Registration failed",
+ "register-page.create-profile.submit.error.head": "Kayıt başarısız",
+
+ // "register-page.create-profile.submit.success.content": "The registration was successful. You have been logged in as the created user.",
+ "register-page.create-profile.submit.success.content": "Kayıt başarıyla tamamlandı. Oluşturulan kullanıcı olarak giriş yaptınız",
+
+ // "register-page.create-profile.submit.success.head": "Registration completed",
+ "register-page.create-profile.submit.success.head": "Kayıt tamamlandı",
+
+
+ // "register-page.registration.header": "New user registration",
+ "register-page.registration.header": "Yeni kullanıcı kaydı",
+
+ // "register-page.registration.info": "Register an account to subscribe to collections for email updates, and submit new items to DSpace.",
+ "register-page.registration.info": "E-mail güncellemeleri için koleksiyonlara abone olup hesap açın. Ve DSapce’e yeni öğeler kaydetin.",
+
+ // "register-page.registration.email": "Email Address *",
+ "register-page.registration.email": "E-posta Adresi *",
+
+ // "register-page.registration.email.error.required": "Please fill in an email address",
+ "register-page.registration.email.error.required": "Lütfen bir e-posta adresi girin",
+
+ // "register-page.registration.email.error.pattern": "Please fill in a valid email address",
+ "register-page.registration.email.error.pattern": "Lütfen geçerli bir email adresi girin",
+
+ // "register-page.registration.email.hint": "This address will be verified and used as your login name.",
+ "register-page.registration.email.hint": "Bu adres doğrulanacak ve oturum açma adınız olarak kullanılacaktır.",
+
+ // "register-page.registration.submit": "Register",
+ "register-page.registration.submit": "Kayıt olmak",
+
+ // "register-page.registration.success.head": "Verification email sent",
+ "register-page.registration.success.head": "Doğrulama e-postası gönderildi",
+
+ // "register-page.registration.success.content": "An email has been sent to {{ email }} containing a special URL and further instructions.",
+ "register-page.registration.success.content": "{{ email }} adresine özel bir URL ve daha fazla talimat içeren bir e-posta gönderildi.",
+
+ // "register-page.registration.error.head": "Error when trying to register email",
+ "register-page.registration.error.head": "E-posta kaydetmeye çalışırken hata",
+
+ // "register-page.registration.error.content": "An error occured when registering the following email address: {{ email }}",
+ "register-page.registration.error.content": "Aşağıdaki e-posta adresi kaydedilirken bir hata oluştu: {{ email }}",
+
+
+
+ // "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": "İki öğe arasında {{ type }} ilişki türü için uygun bir eşleşme bulunamadı",
+
+ // "relationships.add.error.server.content": "The server returned an error",
+ "relationships.add.error.server.content": "Sunucu bir hata verdi",
+
+ // "relationships.add.error.title": "Unable to add relationship",
+ "relationships.add.error.title": "İlişki eklenemedi",
+
+ // "relationships.isAuthorOf": "Authors",
+ "relationships.isAuthorOf": "Yazarlar",
+
+ // "relationships.isAuthorOf.Person": "Authors (persons)",
+ "relationships.isAuthorOf.Person": "Yazarlar (kişiler)",
+
+ // "relationships.isAuthorOf.OrgUnit": "Authors (organizational units)",
+ "relationships.isAuthorOf.OrgUnit": "Yazarlar (organizasyon birimleri)",
+
+ // "relationships.isIssueOf": "Journal Issues",
+ "relationships.isIssueOf": "Dergi Sayıları",
+
+ // "relationships.isJournalIssueOf": "Journal Issue",
+ "relationships.isJournalIssueOf": "Dergi Sayısı",
+
+ // "relationships.isJournalOf": "Journals",
+ "relationships.isJournalOf": "Dergiler",
+
+ // "relationships.isOrgUnitOf": "Organizational Units",
+ "relationships.isOrgUnitOf": "Organizasyon Birimleri",
+
+ // "relationships.isPersonOf": "Authors",
+ "relationships.isPersonOf": "Yazarlar",
+
+ // "relationships.isProjectOf": "Research Projects",
+ "relationships.isProjectOf": "Araştırma Projeleri",
+
+ // "relationships.isPublicationOf": "Publications",
+ "relationships.isPublicationOf": "Yayınlar",
+
+ // "relationships.isPublicationOfJournalIssue": "Articles",
+ "relationships.isPublicationOfJournalIssue": "Makaleler",
+
+ // "relationships.isSingleJournalOf": "Journal",
+ "relationships.isSingleJournalOf": "Dergi",
+
+ // "relationships.isSingleVolumeOf": "Journal Volume",
+ "relationships.isSingleVolumeOf": "Dergi Cilti",
+
+ // "relationships.isVolumeOf": "Journal Volumes",
+ "relationships.isVolumeOf": "Dergi Ciltleri",
+
+ // "relationships.isContributorOf": "Contributors",
+ "relationships.isContributorOf": "Katkıda Bulunanlar",
+
+
+
+ // "resource-policies.add.button": "Add",
+ "resource-policies.add.button": "Ekle",
+
+ // "resource-policies.add.for.": "Add a new policy",
+ "resource-policies.add.for.": "Yeni bir politika ekle",
+
+ // "resource-policies.add.for.bitstream": "Add a new Bitstream policy",
+ "resource-policies.add.for.bitstream": "Yeni bir Bitstream ilkesi ekleyin",
+
+ // "resource-policies.add.for.bundle": "Add a new Bundle policy",
+ "resource-policies.add.for.bundle": "Yeni bir Bundle ilkesi ekleyin",
+
+ // "resource-policies.add.for.item": "Add a new Item policy",
+ "resource-policies.add.for.item": "Yeni bir öğe ilkesi ekleyin",
+
+ // "resource-policies.add.for.community": "Add a new Community policy",
+ "resource-policies.add.for.community": "Yeni bir Komünite politikası ekle",
+
+ // "resource-policies.add.for.collection": "Add a new Collection policy",
+ "resource-policies.add.for.collection": "Yeni bir Koleksiyon politikası ekle",
+
+ // "resource-policies.create.page.heading": "Create new resource policy for ",
+ "resource-policies.create.page.heading": "Şunun için yeni kaynak ilkesi oluşturun: ",
+
+ // "resource-policies.create.page.failure.content": "An error occurred while creating the resource policy.",
+ "resource-policies.create.page.failure.content": "Kaynak ilkesi oluşturulurken bir hata oluştu.",
+
+ // "resource-policies.create.page.success.content": "Operation successful",
+ "resource-policies.create.page.success.content": "Operasyon başarılı",
+
+ // "resource-policies.create.page.title": "Create new resource policy",
+ "resource-policies.create.page.title": "Yeni kaynak politikası oluştur",
+
+ // "resource-policies.delete.btn": "Delete selected",
+ "resource-policies.delete.btn": "Seçileni sil",
+
+ // "resource-policies.delete.btn.title": "Delete selected resource policies",
+ "resource-policies.delete.btn.title": "Seçili kaynak politikalarını sil",
+
+ // "resource-policies.delete.failure.content": "An error occurred while deleting selected resource policies.",
+ "resource-policies.delete.failure.content": "Seçili kaynak ilkeleri silinirken bir hata oluştu.",
+
+ // "resource-policies.delete.success.content": "Operation successful",
+ "resource-policies.delete.success.content": "İşlem başarılı",
+
+ // "resource-policies.edit.page.heading": "Edit resource policy ",
+ "resource-policies.edit.page.heading": "Kaynak politikasını düzenle ",
+
+ // "resource-policies.edit.page.failure.content": "An error occurred while editing the resource policy.",
+ "resource-policies.edit.page.failure.content": "Kaynak ilkesi düzenlenirken bir hata oluştu.",
+
+ // "resource-policies.edit.page.success.content": "Operation successful",
+ "resource-policies.edit.page.success.content": "İşlem başarılı",
+
+ // "resource-policies.edit.page.title": "Edit resource policy",
+ "resource-policies.edit.page.title": "Kaynak politikasını düzenle",
+
+ // "resource-policies.form.action-type.label": "Select the action type",
+ "resource-policies.form.action-type.label": "Eylem türünü seçin",
+
+ // "resource-policies.form.action-type.required": "You must select the resource policy action.",
+ "resource-policies.form.action-type.required": "Kaynak ilkesi eylemini seçmelisiniz.",
+
+ // "resource-policies.form.eperson-group-list.label": "The eperson or group that will be granted the permission",
+ "resource-policies.form.eperson-group-list.label": "İzin verilecek e-kişi veya grup",
+
+ // "resource-policies.form.eperson-group-list.select.btn": "Select",
+ "resource-policies.form.eperson-group-list.select.btn": "Seç",
+
+ // "resource-policies.form.eperson-group-list.tab.eperson": "Search for a ePerson",
+ "resource-policies.form.eperson-group-list.tab.eperson": "e-kişi arayın",
+
+ // "resource-policies.form.eperson-group-list.tab.group": "Search for a group",
+ "resource-policies.form.eperson-group-list.tab.group": "Grup arayın",
+
+ // "resource-policies.form.eperson-group-list.table.headers.action": "Action",
+ "resource-policies.form.eperson-group-list.table.headers.action": "Eylem",
+
+ // "resource-policies.form.eperson-group-list.table.headers.id": "ID",
+ "resource-policies.form.eperson-group-list.table.headers.id": "Kimlik",
+
+ // "resource-policies.form.eperson-group-list.table.headers.name": "Name",
+ "resource-policies.form.eperson-group-list.table.headers.name": "Ad",
+
+ // "resource-policies.form.date.end.label": "End Date",
+ "resource-policies.form.date.end.label": "Bitiş Tarihi",
+
+ // "resource-policies.form.date.start.label": "Start Date",
+ "resource-policies.form.date.start.label": "Başlangıç tarihi",
+
+ // "resource-policies.form.description.label": "Description",
+ "resource-policies.form.description.label": "Açıklama",
+
+ // "resource-policies.form.name.label": "Name",
+ "resource-policies.form.name.label": "Ad",
+
+ // "resource-policies.form.policy-type.label": "Select the policy type",
+ "resource-policies.form.policy-type.label": "Politika türünü seçin",
+
+ // "resource-policies.form.policy-type.required": "You must select the resource policy type.",
+ "resource-policies.form.policy-type.required": "Kaynak ilkesi türünü seçmelisiniz.",
+
+ // "resource-policies.table.headers.action": "Action",
+ "resource-policies.table.headers.action": "Eylem",
+
+ // "resource-policies.table.headers.date.end": "End Date",
+ "resource-policies.table.headers.date.end": "Bitiş tarihi",
+
+ // "resource-policies.table.headers.date.start": "Start Date",
+ "resource-policies.table.headers.date.start": "Başlangıç Tarihi",
+
+ // "resource-policies.table.headers.edit": "Edit",
+ "resource-policies.table.headers.edit": "Düzenle",
+
+ // "resource-policies.table.headers.edit.group": "Edit group",
+ "resource-policies.table.headers.edit.group": "Grubu düzenle",
+
+ // "resource-policies.table.headers.edit.policy": "Edit policy",
+ "resource-policies.table.headers.edit.policy": "Politikayı düzenle",
+
+ // "resource-policies.table.headers.eperson": "E-kişi",
+ "resource-policies.table.headers.eperson": "E-kişi",
+
+ // "resource-policies.table.headers.group": "Grup",
+ "resource-policies.table.headers.group": "Grup",
+
+ // "resource-policies.table.headers.id": "ID",
+ "resource-policies.table.headers.id": "Kimlik",
+
+ // "resource-policies.table.headers.name": "Name",
+ "resource-policies.table.headers.name": "Ad",
+
+ // "resource-policies.table.headers.policyType": "type",
+ "resource-policies.table.headers.policyType": "tür",
+
+ // "resource-policies.table.headers.title.for.bitstream": "Policies for Bitstream",
+ "resource-policies.table.headers.title.for.bitstream": "BitStream Politikaları",
+
+ // "resource-policies.table.headers.title.for.bundle": "Policies for Bundle",
+ "resource-policies.table.headers.title.for.bundle": "Bundle Politikaları",
+
+ // "resource-policies.table.headers.title.for.item": "Policies for Item",
+ "resource-policies.table.headers.title.for.item": "Öğe Politikaları",
+
+ // "resource-policies.table.headers.title.for.community": "Policies for Community",
+ "resource-policies.table.headers.title.for.community": "Komünite Politikaları",
+
+ // "resource-policies.table.headers.title.for.collection": "Policies for Collection",
+ "resource-policies.table.headers.title.for.collection": "Koleksiyon Politikaları",
+
+
+
+ // "search.description": "",
+ "search.description": "",
+
+ // "search.switch-configuration.title": "Show",
+ "search.switch-configuration.title": "Göster",
+
+ // "search.title": "DSpace Angular :: Search",
+ "search.title": "DSpace Angular :: Ara",
+
+ // "search.breadcrumbs": "Search",
+ "search.breadcrumbs": "Ara",
+
+
+ // "search.filters.applied.f.author": "Author",
+ "search.filters.applied.f.author": "Yazar",
+
+ // "search.filters.applied.f.dateIssued.max": "End date",
+ "search.filters.applied.f.dateIssued.max": "Bitiş tarihi",
+
+ // "search.filters.applied.f.dateIssued.min": "Start date",
+ "search.filters.applied.f.dateIssued.min": "Başlangıç Tarihi",
+
+ // "search.filters.applied.f.dateSubmitted": "Date submitted",
+ "search.filters.applied.f.dateSubmitted": "Gönderilme tarihi",
+
+ // "search.filters.applied.f.discoverable": "Private",
+ "search.filters.applied.f.discoverable": "Özel",
+
+ // "search.filters.applied.f.entityType": "Item Type",
+ "search.filters.applied.f.entityType": "Öğe Türü",
+
+ // "search.filters.applied.f.has_content_in_original_bundle": "Has files",
+ "search.filters.applied.f.has_content_in_original_bundle": "Has dosyaları",
+
+ // "search.filters.applied.f.itemtype": "Type",
+ "search.filters.applied.f.itemtype": "Tür",
+
+ // "search.filters.applied.f.namedresourcetype": "Status",
+ "search.filters.applied.f.namedresourcetype": "Durum",
+
+ // "search.filters.applied.f.subject": "Subject",
+ "search.filters.applied.f.subject": "Konu",
+
+ // "search.filters.applied.f.submitter": "Submitter",
+ "search.filters.applied.f.submitter": "Gönderen",
+
+ // "search.filters.applied.f.jobTitle": "Job Title",
+ "search.filters.applied.f.jobTitle": "İş Adı",
+
+ // "search.filters.applied.f.birthDate.max": "End birth date",
+ "search.filters.applied.f.birthDate.max": "Doğum Tarih Sonu",
+
+ // "search.filters.applied.f.birthDate.min": "Start birth date",
+ "search.filters.applied.f.birthDate.min": "Doğum Tarih Başlangıcı",
+
+ // "search.filters.applied.f.withdrawn": "Withdrawn",
+ "search.filters.applied.f.withdrawn": "Geri çekildi",
+
+
+
+ // "search.filters.filter.author.head": "Author",
+ "search.filters.filter.author.head": "Yazar",
+
+ // "search.filters.filter.author.placeholder": "Author name",
+ "search.filters.filter.author.placeholder": "Yazar adı",
+
+ // "search.filters.filter.birthDate.head": "Birth Date",
+ "search.filters.filter.birthDate.head": "Doğum Tarihi",
+
+ // "search.filters.filter.birthDate.placeholder": "Birth Date",
+ "search.filters.filter.birthDate.placeholder": "Doğum Tarihi",
+
+ // "search.filters.filter.creativeDatePublished.head": "Date Published",
+ "search.filters.filter.creativeDatePublished.head": "Yayınlanma Tarihi",
+
+ // "search.filters.filter.creativeDatePublished.placeholder": "Date Published",
+ "search.filters.filter.creativeDatePublished.placeholder": "Yayınlanma Tarihi",
+
+ // "search.filters.filter.creativeWorkEditor.head": "Editor",
+ "search.filters.filter.creativeWorkEditor.head": "Editör",
+
+ // "search.filters.filter.creativeWorkEditor.placeholder": "Editor",
+ "search.filters.filter.creativeWorkEditor.placeholder": "Editör",
+
+ // "search.filters.filter.creativeWorkKeywords.head": "Subject",
+ "search.filters.filter.creativeWorkKeywords.head": "Konu",
+
+ // "search.filters.filter.creativeWorkKeywords.placeholder": "Subject",
+ "search.filters.filter.creativeWorkKeywords.placeholder": "Konu",
+
+ // "search.filters.filter.creativeWorkPublisher.head": "Publisher",
+ "search.filters.filter.creativeWorkPublisher.head": "Yayımcı",
+
+ // "search.filters.filter.creativeWorkPublisher.placeholder": "Publisher",
+ "search.filters.filter.creativeWorkPublisher.placeholder": "Yayımcı",
+
+ // "search.filters.filter.dateIssued.head": "Date",
+ "search.filters.filter.dateIssued.head": "Tarih",
+
+ // "search.filters.filter.dateIssued.max.placeholder": "Minimum Date",
+ "search.filters.filter.dateIssued.max.placeholder": "En Erken Tarih",
+
+ // "search.filters.filter.dateIssued.min.placeholder": "Maximum Date",
+ "search.filters.filter.dateIssued.min.placeholder": "En Geç Tarih",
+
+ // "search.filters.filter.dateSubmitted.head": "Date submitted",
+ "search.filters.filter.dateSubmitted.head": "Teslim Edilen Tarih",
+
+ // "search.filters.filter.dateSubmitted.placeholder": "Date submitted",
+ "search.filters.filter.dateSubmitted.placeholder": "Teslim Edilen Tarih",
+
+ // "search.filters.filter.discoverable.head": "Private",
+ "search.filters.filter.discoverable.head": "Özel",
+
+ // "search.filters.filter.withdrawn.head": "Withdrawn",
+ "search.filters.filter.withdrawn.head": "Alınmış",
+
+ // "search.filters.filter.entityType.head": "Item Type",
+ "search.filters.filter.entityType.head": "Materyal Türü",
+
+ // "search.filters.filter.entityType.placeholder": "Item Type",
+ "search.filters.filter.entityType.placeholder": "Materyal Türü",
+
+ // "search.filters.filter.has_content_in_original_bundle.head": "Has files",
+ "search.filters.filter.has_content_in_original_bundle.head": "Dosyalara Sahip",
+
+ // "search.filters.filter.itemtype.head": "Type",
+ "search.filters.filter.itemtype.head": "Tür",
+
+ // "search.filters.filter.itemtype.placeholder": "Type",
+ "search.filters.filter.itemtype.placeholder": "Tür",
+
+ // "search.filters.filter.jobTitle.head": "Job Title",
+ "search.filters.filter.jobTitle.head": "İş Ünvanı",
+
+ // "search.filters.filter.jobTitle.placeholder": "Job Title",
+ "search.filters.filter.jobTitle.placeholder": "İş Ünvanı",
+
+ // "search.filters.filter.knowsLanguage.head": "Known language",
+ "search.filters.filter.knowsLanguage.head": "Bilinen Diller",
+
+ // "search.filters.filter.knowsLanguage.placeholder": "Known language",
+ "search.filters.filter.knowsLanguage.placeholder": "Bilinen Diller",
+
+ // "search.filters.filter.namedresourcetype.head": "Status",
+ "search.filters.filter.namedresourcetype.head": "Durum",
+
+ // "search.filters.filter.namedresourcetype.placeholder": "Status",
+ "search.filters.filter.namedresourcetype.placeholder": "Durum",
+
+ // "search.filters.filter.objectpeople.head": "People",
+ "search.filters.filter.objectpeople.head": "İnsanlar",
+
+ // "search.filters.filter.objectpeople.placeholder": "People",
+ "search.filters.filter.objectpeople.placeholder": "İnsanlar",
+
+ // "search.filters.filter.organizationAddressCountry.head": "Country",
+ "search.filters.filter.organizationAddressCountry.head": "Ülke",
+
+ // "search.filters.filter.organizationAddressCountry.placeholder": "Country",
+ "search.filters.filter.organizationAddressCountry.placeholder": "Ülke",
+
+ // "search.filters.filter.organizationAddressLocality.head": "City",
+ "search.filters.filter.organizationAddressLocality.head": "Şehir",
+
+ // "search.filters.filter.organizationAddressLocality.placeholder": "City",
+ "search.filters.filter.organizationAddressLocality.placeholder": "Şehir",
+
+ // "search.filters.filter.organizationFoundingDate.head": "Date Founded",
+ "search.filters.filter.organizationFoundingDate.head": "Bulunduğu Tarih",
+
+ // "search.filters.filter.organizationFoundingDate.placeholder": "Date Founded",
+ "search.filters.filter.organizationFoundingDate.placeholder": "Bulunduğu Tarih",
+
+ // "search.filters.filter.scope.head": "Scope",
+ "search.filters.filter.scope.head": "Kapsam",
+
+ // "search.filters.filter.scope.placeholder": "Scope filter",
+ "search.filters.filter.scope.placeholder": "Kapsam Filtresi",
+
+ // "search.filters.filter.show-less": "Collapse",
+ "search.filters.filter.show-less": "Yığılmış",
+
+ // "search.filters.filter.show-more": "Show more",
+ "search.filters.filter.show-more": "Daha Fazla Göster",
+
+ // "search.filters.filter.subject.head": "Subject",
+ "search.filters.filter.subject.head": "Konu",
+
+ // "search.filters.filter.subject.placeholder": "Subject",
+ "search.filters.filter.subject.placeholder": "Konu",
+
+ // "search.filters.filter.submitter.head": "Submitter",
+ "search.filters.filter.submitter.head": "Teslim Eden",
+
+ // "search.filters.filter.submitter.placeholder": "Submitter",
+ "search.filters.filter.submitter.placeholder": "Teslim Eden",
+
+
+
+ // "search.filters.entityType.JournalIssue": "Journal Issue",
+ "search.filters.entityType.JournalIssue": "Makale Konusu",
+
+ // "search.filters.entityType.JournalVolume": "Journal Volume",
+ "search.filters.entityType.JournalVolume": "Cilt Sayısı",
+
+ // "search.filters.entityType.OrgUnit": "Organizational Unit",
+ "search.filters.entityType.OrgUnit": "Ait Olduğu Organizasyon",
+
+ // "search.filters.has_content_in_original_bundle.true": "Yes",
+ "search.filters.has_content_in_original_bundle.true": "Evet",
+
+ // "search.filters.has_content_in_original_bundle.false": "No",
+ "search.filters.has_content_in_original_bundle.false": "Hayır",
+
+ // "search.filters.discoverable.true": "No",
+ "search.filters.discoverable.true": "Hayır",
+
+ // "search.filters.discoverable.false": "Yes",
+ "search.filters.discoverable.false": "Evet",
+
+ // "search.filters.withdrawn.true": "Yes",
+ "search.filters.withdrawn.true": "Evet",
+
+ // "search.filters.withdrawn.false": "No",
+ "search.filters.withdrawn.false": "Hayır",
+
+
+ // "search.filters.head": "Filters",
+ "search.filters.head": "Filtreler",
+
+ // "search.filters.reset": "Reset filters",
+ "search.filters.reset": "Filtreleri Sıfırla",
+
+
+
+ // "search.form.search": "Search",
+ "search.form.search": "Ara",
+
+ // "search.form.search_dspace": "Search DSpace",
+ "search.form.search_dspace": "DSpace içinde Ara",
+
+ // "search.form.search_mydspace": "Search MyDSpace",
+ "search.form.search_mydspace": "MyDSpace içinde Ara",
+
+
+
+ // "search.results.head": "Search Results",
+ "search.results.head": "Sonuçları Ara",
+
+ // "search.results.no-results": "Your search returned no results. Having trouble finding what you're looking for? Try putting",
+ "search.results.no-results": "Aramanız hiçbir sonuç vermedi. Aradığınızı bulmakta sorun mu yaşıyorsunuz? Bir daha deneyin.",
+
+ // "search.results.no-results-link": "quotes around it",
+ "search.results.no-results-link": "Çevresindeki Alıntılar",
+
+ // "search.results.empty": "Your search returned no results.",
+ "search.results.empty": "Aramanız hiçbir sonuç vermedi.",
+
+
+
+ // "search.sidebar.close": "Back to results",
+ "search.sidebar.close": "Sonuçlara Dön",
+
+ // "search.sidebar.filters.title": "Filters",
+ "search.sidebar.filters.title": "Filtreler",
+
+ // "search.sidebar.open": "Search Tools",
+ "search.sidebar.open": "Araç Gereç Ara",
+
+ // "search.sidebar.results": "results",
+ "search.sidebar.results": "Sonuçlar",
+
+ // "search.sidebar.settings.rpp": "Results per page",
+ "search.sidebar.settings.rpp": "Sayfa Sonuçları",
+
+ // "search.sidebar.settings.sort-by": "Sort By",
+ "search.sidebar.settings.sort-by": "Göre Sıralanmış",
+
+ // "search.sidebar.settings.title": "Settings",
+ "search.sidebar.settings.title": "Ayarlar",
+
+
+
+ // "search.view-switch.show-detail": "Show detail",
+ "search.view-switch.show-detail": "Detayları Göster",
+
+ // "search.view-switch.show-grid": "Show as grid",
+ "search.view-switch.show-grid": "Ağ Dizge Olarak Göster",
+
+ // "search.view-switch.show-list": "Show as list",
+ "search.view-switch.show-list": "Liste Olarak Göster",
+
+
+
+ // "sorting.ASC": "Ascending",
+ "sorting.ASC": "Artan",
+
+ // "sorting.DESC": "Descending",
+ "sorting.DESC": "Azalan",
+
+ // "sorting.dc.title.ASC": "Title Ascending",
+ "sorting.dc.title.ASC": "Artan Başlıklar",
+
+ // "sorting.dc.title.DESC": "Title Descending",
+ "sorting.dc.title.DESC": "Azalan Başlıklar",
+
+ // "sorting.score.DESC": "Relevance",
+ "sorting.score.DESC": "Bağıntılı",
+
+
+
+ // "statistics.title": "Statistics",
+ "statistics.title": "İstatistikler",
+
+ // "statistics.header": "Statistics for {{ scope }}",
+ "statistics.header": "{{ scope }} için İstatistikler",
+
+ // "statistics.breadcrumbs": "Statistics",
+ "statistics.breadcrumbs": "İstatistikler",
+
+ // "statistics.page.no-data": "No data available",
+ "statistics.page.no-data": "Data Bulunamadı.",
+
+ // "statistics.table.no-data": "No data available",
+ "statistics.table.no-data": "Data Bulunamadı.",
+
+ // "statistics.table.title.TotalVisits": "Total visits",
+ "statistics.table.title.TotalVisits": "Toplam Ziyaretler",
+
+ // "statistics.table.title.TotalVisitsPerMonth": "Total visits per month",
+ "statistics.table.title.TotalVisitsPerMonth": "Aylık Toplam Ziyaretler",
+
+ // "statistics.table.title.TotalDownloads": "File Visits",
+ "statistics.table.title.TotalDownloads": "Dosya Ziyaretleri",
+
+ // "statistics.table.title.TopCountries": "Top country views",
+ "statistics.table.title.TopCountries": "En Çok Gösterilen Ülke",
+
+ // "statistics.table.title.TopCities": "Top city views",
+ "statistics.table.title.TopCities": "En Çok Gösterilen Şehir",
+
+ // "statistics.table.header.views": "Views",
+ "statistics.table.header.views": "Gösterilmeler",
+
+
+
+ // "submission.edit.title": "Edit Submission",
+ "submission.edit.title": "Teslimi Düzenle",
+
+ // "submission.general.cannot_submit": "You have not the privilege to make a new submission.",
+ "submission.general.cannot_submit": "Yeni bir teslim yapamazsınız.",
+
+ // "submission.general.deposit": "Deposit",
+ "submission.general.deposit": "Tamamla",
+
+ // "submission.general.discard.confirm.cancel": "Cancel",
+ "submission.general.discard.confirm.cancel": "Vazgeç",
+
+ // "submission.general.discard.confirm.info": "This operation can't be undone. Are you sure?",
+ "submission.general.discard.confirm.info": "Bu işlem geri alınamaz. Emin misiniz?",
+
+ // "submission.general.discard.confirm.submit": "Yes, I'm sure",
+ "submission.general.discard.confirm.submit": "Evet eminim",
+
+ // "submission.general.discard.confirm.title": "Discard submission",
+ "submission.general.discard.confirm.title": "Teslimi İptal Et",
+
+ // "submission.general.discard.submit": "Discard",
+ "submission.general.discard.submit": "İptal",
+
+ // "submission.general.save": "Save",
+ "submission.general.save": "Kaydet",
+
+ // "submission.general.save-later": "Save for later",
+ "submission.general.save-later": "Sonrası İçin Kaydet",
+
+
+ // "submission.import-external.page.title": "Import metadata from an external source",
+ "submission.import-external.page.title": "Harici bir kaynaktan metadataları içe aktarın",
+
+ // "submission.import-external.title": "Import metadata from an external source",
+ "submission.import-external.title": "Harici bir kaynaktan metadataları içe aktarın",
+
+ // "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": "Web'den DSpace'e içe aktarılacak öğeleri bulmak için yukarıya bir sorgu girin.",
+
+ // "submission.import-external.back-to-my-dspace": "Back to MyDSpace",
+ "submission.import-external.back-to-my-dspace": "MyDSpace'e Geri Dön",
+
+ // "submission.import-external.search.placeholder": "Search the external source",
+ "submission.import-external.search.placeholder": "Dış Kaynaktan Ara",
+
+ // "submission.import-external.search.button": "Search",
+ "submission.import-external.search.button": "Ara",
+
+ // "submission.import-external.search.button.hint": "Write some words to search",
+ "submission.import-external.search.button.hint": "Aramak için Kelime Girin",
+
+ // "submission.import-external.search.source.hint": "Pick an external source",
+ "submission.import-external.search.source.hint": "Dış Kaynak Seçin",
+
+ // "submission.import-external.source.arxiv": "arXiv",
+ "submission.import-external.source.arxiv": "arXiv",
+
+ // "submission.import-external.source.loading": "Loading ...",
+ "submission.import-external.source.loading": "Yükleniyor ...",
+
+ // "submission.import-external.source.sherpaJournal": "SHERPA Journals",
+ "submission.import-external.source.sherpaJournal": "SHERPA Journals",
+
+ // "submission.import-external.source.sherpaPublisher": "SHERPA Publishers",
+ "submission.import-external.source.sherpaPublisher": "SHERPA Publishers",
+
+ // "submission.import-external.source.orcid": "ORCID",
+ "submission.import-external.source.orcid": "ORCID",
+
+ // "submission.import-external.source.pubmed": "Pubmed",
+ "submission.import-external.source.pubmed": "Pubmed",
+
+ // "submission.import-external.source.lcname": "Library of Congress Names",
+ "submission.import-external.source.lcname": "Kongre İsimleri Kütüphanesi",
+
+ // "submission.import-external.preview.title": "Item Preview",
+ "submission.import-external.preview.title": "Materyal Önizlenimi",
+
+ // "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": "Aşağıdaki metadatalar harici bir kaynaktan içe aktarıldı. Gönderime başladığınızda önceden doldurulacaktır.",
+
+ // "submission.import-external.preview.button.import": "Start submission",
+ "submission.import-external.preview.button.import": "Gönderimi Başlat",
+
+ // "submission.import-external.preview.error.import.title": "Submission error",
+ "submission.import-external.preview.error.import.title": "Gönderim Sırasında Hata",
+
+ // "submission.import-external.preview.error.import.body": "An error occurs during the external source entry import process.",
+ "submission.import-external.preview.error.import.body": "Dış kaynak girişi içe aktarma işlemi sırasında bir hata oluştu.",
+
+ // "submission.sections.describe.relationship-lookup.close": "Close",
+ "submission.sections.describe.relationship-lookup.close": "Kapat",
+
+ // "submission.sections.describe.relationship-lookup.external-source.added": "Successfully added local entry to the selection",
+ "submission.sections.describe.relationship-lookup.external-source.added": "Giriş seçime başarıyla eklendi",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-button-title.isAuthorOfPublication": "Import remote author",
+ "submission.sections.describe.relationship-lookup.external-source.import-button-title.isAuthorOfPublication": "Dış Kaynak Yazarı İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal": "Import remote journal",
+ "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal": "Dış Kaynak Makaleyi İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Issue": "Import remote journal issue",
+ "submission.sections.describe.relationship-lookup.external-source.import-button-title.Journal Issue": "Dış Kaynak Makale Konusu İçe Aktar",
+
+ // "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": "Dış Kaynak Makale Cilt Sayısı İçe Aktar",
+
+ // "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": "Dış Kaynak Yazarı İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.local-entity": "Successfully added local author to the selection",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.local-entity": "Yazar seçime başarıyla eklendi",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.new-entity": "Successfully imported and added external author to the selection",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.isAuthorOfPublication.added.new-entity": "Harici yazar başarıyla içe aktarıldı ve seçime eklendi",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.authority": "Authority",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.authority": "Yetkili",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.authority.new": "Import as a new local authority entry",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.authority.new": "Yeni bir yerel yetkili girişi olarak içe aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.cancel": "Cancel",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.cancel": "İptal",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.collection": "Select a collection to import new entries to",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.collection": "Yeni girişleri içe aktarmak için bir koleksiyon seçin",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.entities": "Entities",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.entities": "Varlıklar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.entities.new": "Import as a new local entity",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.entities.new": "Yeni bir yerel varlık olarak içe aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.lcname": "LC Adına göre İçe Aktar",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.head.lcname": "Importing from LC Name",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.orcid": "Importing from ORCID",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.head.orcid": "ORCID'den İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaJournal": "Importing from Sherpa Journal",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaJournal": "Sherpa Journal'den İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaPublisher": "Importing from Sherpa Publisher",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.head.sherpaPublisher": "Sherpa Publisher'den İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.pubmed": "Importing from PubMed",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.head.pubmed": "PubMed'den İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.head.arxiv": "Importing from arXiv",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.head.arxiv": "arXiv'den İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.import": "Import",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.import": "İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.title": "Import Remote Journal",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.title": "Makaleyi Dışardan İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.local-entity": "Successfully added local journal to the selection",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.local-entity": " Makale seçime başarıyla eklendi",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.new-entity": "Successfully imported and added external journal to the selection",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal.added.new-entity": "Harici makale başarıyla içe aktarıldı ve seçime eklendi",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.title": "Import Remote Journal Issue",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.title": "Dış Kaynak Makale Konusu İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.local-entity": "Successfully added local journal issue to the selection",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.local-entity": "Dış Kaynak Makale Konusu Başarıyla İçe Aktarıldı.",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.new-entity": "Successfully imported and added external journal issue to the selection",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Issue.added.new-entity": "Başarıyla içe aktarıldı ve seçime harici makale sayısı eklendi",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.title": "Import Remote Journal Volume",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.title": "Dış Kaynak Makale Cilt Sayısı İçe Aktar",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.local-entity": "Successfully added local journal volume to the selection",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.local-entity": "Dış Kaynak Makale Cilt Sayısı Başarıyla İçe Aktarıldı.",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.new-entity": "Successfully imported and added external journal volume to the selection",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.Journal Volume.added.new-entity": "Harici makale cilti başarıyla içe aktarıldı ve seçime eklendi",
+
+ // "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Select a local match:",
+ "submission.sections.describe.relationship-lookup.external-source.import-modal.select": "Yerel Eşleşmeyi Seç",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.deselect-all": "Deselect all",
+ "submission.sections.describe.relationship-lookup.search-tab.deselect-all": "Tümünü Seçmeyi Bırak",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.deselect-page": "Deselect page",
+ "submission.sections.describe.relationship-lookup.search-tab.deselect-page": "Sayfa Seçimin Bırak",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.loading": "Loading...",
+ "submission.sections.describe.relationship-lookup.search-tab.loading": "Yükleniyor...",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.placeholder": "Search query",
+ "submission.sections.describe.relationship-lookup.search-tab.placeholder": "Arama Sorgusu",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.search": "Go",
+ "submission.sections.describe.relationship-lookup.search-tab.search": "Git",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.select-all": "Select all",
+ "submission.sections.describe.relationship-lookup.search-tab.select-all": "Hepsini Seç",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.select-page": "Select page",
+ "submission.sections.describe.relationship-lookup.search-tab.select-page": "Sayfa Seç",
+
+ // "submission.sections.describe.relationship-lookup.selected": "Selected {{ size }} items",
+ "submission.sections.describe.relationship-lookup.selected": "{{ size }} boyutundaki Seçili Materyaller ",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isAuthorOfPublication": "Local Authors ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.isAuthorOfPublication": " Yerel Yazarlar({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalOfPublication": "Local Journals ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalOfPublication": "Yerel Makaleler ({{ count }})",
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Project": "Local Projects ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.Project": "Yerel Projeler ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Publication": "Local Publications ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.Publication": "Yerel Yayınlar ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Person": "Local Authors ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.Person": "Yerel Yazarlar ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.OrgUnit": "Local Organizational Units ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.OrgUnit": "Yerel Organizasyonlar({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataPackage": "Local Data Packages ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataPackage": "Yerel Veri Paketleri ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataFile": "Local Data Files ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.DataFile": "Yerel Veri Dosyaları ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.Journal": "Local Journals ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.Journal": "Yerel Makaleler ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalIssueOfPublication": "Local Journal Issues ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.isJournalIssueOfPublication": "Yerel Makale Konuları ({{ 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": "Yerel Makale Konuları ({{ 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": "Yerel Makale Cilt ({{ 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": "Yerel Makale Cilt ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Sherpa Journals ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaJournal": "Sherpa Journals ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaPublisher": "Sherpa Publishers ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.sherpaPublisher": "Sherpa Publishers ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.orcid": "ORCID ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.orcid": "ORCID ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.lcname": "LC Names ({{ count }})",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.lcname": "LC Adları ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.pubmed": "PubMed ({{ 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.arxiv": "arXiv ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfPublication": "Search for Funding Agencies",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingAgencyOfPublication": "Finansman Kuruluşlarını Arama",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingOfPublication": "Search for Funding",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingOfPublication": "Finansman Arama",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Search for Organizational Units",
+ "submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Organizasyonları Arama",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Current Selection ({{ count }})",
+ "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Mevcut Seçim ({{ count }})",
+
+ // "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Journal Issues",
+ "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Makale Konuları",
+ // "submission.sections.describe.relationship-lookup.title.JournalIssue": "Journal Issues",
+ "submission.sections.describe.relationship-lookup.title.JournalIssue": "Makale Konuları",
+
+ // "submission.sections.describe.relationship-lookup.title.isJournalVolumeOfPublication": "Journal Volumes",
+ "submission.sections.describe.relationship-lookup.title.isJournalVolumeOfPublication": "Makale Ciltleri",
+ // "submission.sections.describe.relationship-lookup.title.JournalVolume": "Journal Volumes",
+ "submission.sections.describe.relationship-lookup.title.JournalVolume": "Makale Ciltleri",
+
+ // "submission.sections.describe.relationship-lookup.title.isJournalOfPublication": "Journals",
+ "submission.sections.describe.relationship-lookup.title.isJournalOfPublication": "Makaleler",
+
+ // "submission.sections.describe.relationship-lookup.title.isAuthorOfPublication": "Authors",
+ "submission.sections.describe.relationship-lookup.title.isAuthorOfPublication": "Yazarlar",
+
+ // "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfPublication": "Funding Agency",
+ "submission.sections.describe.relationship-lookup.title.isFundingAgencyOfPublication": "Finansman Kuruluşu",
+ // "submission.sections.describe.relationship-lookup.title.Project": "Projects",
+ "submission.sections.describe.relationship-lookup.title.Project": "Projeler",
+
+ // "submission.sections.describe.relationship-lookup.title.Publication": "Publications",
+ "submission.sections.describe.relationship-lookup.title.Publication": "Yayınlar",
+
+ // "submission.sections.describe.relationship-lookup.title.Person": "Authors",
+ "submission.sections.describe.relationship-lookup.title.Person": "Yazarlar",
+
+ // "submission.sections.describe.relationship-lookup.title.OrgUnit": "Organizational Units",
+ "submission.sections.describe.relationship-lookup.title.OrgUnit": "Organizasyonlar",
+
+ // "submission.sections.describe.relationship-lookup.title.DataPackage": "Data Packages",
+ "submission.sections.describe.relationship-lookup.title.DataPackage": "Veri Paketler",
+
+ // "submission.sections.describe.relationship-lookup.title.DataFile": "Data Files",
+ "submission.sections.describe.relationship-lookup.title.DataFile": "Veri Dosyaları",
+
+ // "submission.sections.describe.relationship-lookup.title.Funding Agency": "Funding Agency",
+ "submission.sections.describe.relationship-lookup.title.Funding Agency": "Finansman Kuruluşu",
+
+ // "submission.sections.describe.relationship-lookup.title.isFundingOfPublication": "Funding",
+ "submission.sections.describe.relationship-lookup.title.isFundingOfPublication": "Finansman",
+
+ // "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Parent Organizational Unit",
+ "submission.sections.describe.relationship-lookup.title.isChildOrgUnitOf": "Ana Organizasyon",
+
+ // "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Toggle dropdown",
+ "submission.sections.describe.relationship-lookup.search-tab.toggle-dropdown": "Açılır menüyü aç/kapat",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.settings": "Settings",
+ "submission.sections.describe.relationship-lookup.selection-tab.settings": "Ayarlar",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.no-selection": "Your selection is currently empty.",
+ "submission.sections.describe.relationship-lookup.selection-tab.no-selection": "Mevcut seçiminiz boş. ",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.isAuthorOfPublication": "Selected Authors",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.isAuthorOfPublication": "Seçili Yazarlar",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalOfPublication": "Selected Journals",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalOfPublication": "Seçili Makaleler",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalVolumeOfPublication": "Selected Journal Volume",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalVolumeOfPublication": "Seçili Makale Ciltleri",
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.Project": "Selected Projects",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.Project": "Seçili Projeler",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.Publication": "Selected Publications",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.Publication": "Seçili Yayınlar",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.Person": "Selected Authors",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.Person": "Seçili Yazarlar",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.OrgUnit": "Selected Organizational Units",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.OrgUnit": "Seçili Organizasyonlar",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.DataPackage": "Selected Data Packages",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.DataPackage": "Seçili Veri Paketleri",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.DataFile": "Selected Data Files",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.DataFile": "Seçili Veri Dosyaları",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.Journal": "Selected Journals",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.Journal": "Seçili Makaleler",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalIssueOfPublication": "Selected Issue",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.isJournalIssueOfPublication": "Seçili Makale Konuları",
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.JournalVolume": "Selected Journal Volume",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.JournalVolume": "Seçili Makale Ciltleri",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingAgencyOfPublication": "Selected Funding Agency",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingAgencyOfPublication": "Seçili Finansman Kuruluşu",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Selected Funding",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Seçili Finansman",
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.JournalIssue": "Selected Issue",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.JournalIssue": "Seçili Makale Konuları",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.isChildOrgUnitOf": "Selected Organizational Unit",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.isChildOrgUnitOf": "Seçili Organizasyonlar",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaJournal": "Search Results",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaJournal": "Sonuçları Ara",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaPublisher": "Search Results",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaPublisher": "Sonuçları Ara",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.orcid": "Search Results",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.orcid": "Sonuçları Ara",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.orcidv2": "Search Results",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.orcidv2": "Sonuçları Ara",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.lcname": "Search Results",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.lcname": "Sonuçları Ara",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.pubmed": "Search Results",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.pubmed": "Sonuçları Ara",
+
+ // "submission.sections.describe.relationship-lookup.selection-tab.title.arxiv": "Search Results",
+ "submission.sections.describe.relationship-lookup.selection-tab.title.arxiv": "Sonuçları Ara",
+
+ // "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": "Bu kişi için \"{{ value }}\" ilerideki gönderilerde kullanılabilmek için Yeni İsim olarak kaydedilsin mi? Bunu yapmazsanız, yine de bu gönderim için kullanabilirsiniz .",
+
+ // "submission.sections.describe.relationship-lookup.name-variant.notification.confirm": "Save a new name variant",
+ "submission.sections.describe.relationship-lookup.name-variant.notification.confirm": "Yeni İsim değişikliğini kaydet.",
+
+ // "submission.sections.describe.relationship-lookup.name-variant.notification.decline": "Use only for this submission",
+ "submission.sections.describe.relationship-lookup.name-variant.notification.decline": "Sadece bu gönderim için kullan.",
+
+ // "submission.sections.ccLicense.type": "License Type",
+ "submission.sections.ccLicense.type": "Lisans Türü",
+
+ // "submission.sections.ccLicense.select": "Select a license type…",
+ "submission.sections.ccLicense.select": "Lisans Türünü Seç…",
+
+ // "submission.sections.ccLicense.change": "Change your license type…",
+ "submission.sections.ccLicense.change": "Lisans Türünü Değiştir…",
+
+ // "submission.sections.ccLicense.none": "No licenses available",
+ "submission.sections.ccLicense.none": "Lisans Mevcut Değil",
+
+ // "submission.sections.ccLicense.option.select": "Select an option…",
+ "submission.sections.ccLicense.option.select": "Seçenek Seç…",
+
+ // "submission.sections.ccLicense.link": "You’ve selected the following license:",
+ "submission.sections.ccLicense.link": "Seçtiğiniz Lisans Türü:",
+
+ // "submission.sections.ccLicense.confirmation": "I grant the license above",
+ "submission.sections.ccLicense.confirmation": "Yukarıdaki lisansı veriyorum",
+
+ // "submission.sections.general.add-more": "Add more",
+ "submission.sections.general.add-more": "Ekle",
+
+ // "submission.sections.general.collection": "Collection",
+ "submission.sections.general.collection": "Koleksiyon",
+
+ // "submission.sections.general.deposit_error_notice": "There was an issue when submitting the item, please try again later.",
+ "submission.sections.general.deposit_error_notice": "Öğe gönderilirken bir sorun oluştu, lütfen daha sonra tekrar deneyin.",
+
+ // "submission.sections.general.deposit_success_notice": "Submission deposited successfully.",
+ "submission.sections.general.deposit_success_notice": "Gönderim başarıyla yatırıldı.",
+
+ // "submission.sections.general.discard_error_notice": "There was an issue when discarding the item, please try again later.",
+ "submission.sections.general.discard_error_notice": "Öğe gönderilirken bir sorun oluştu, lütfen daha sonra tekrar deneyin.",
+
+ // "submission.sections.general.discard_success_notice": "Submission discarded successfully.",
+ "submission.sections.general.discard_success_notice": "Gönderim başarıyla silindi.",
+
+ // "submission.sections.general.metadata-extracted": "New metadata have been extracted and added to the {{sectionId}} section.",
+ "submission.sections.general.metadata-extracted": "Yeni metadatalar çıkarıldı ve {{sectionId}} bölümüne eklendi.",
+
+ // "submission.sections.general.metadata-extracted-new-section": "New {{sectionId}} section has been added to submission.",
+ "submission.sections.general.metadata-extracted-new-section": "Gönderime yeni {{sectionId}} bölümü eklendi.",
+
+ // "submission.sections.general.no-collection": "No collection found",
+ "submission.sections.general.no-collection": "Koleksiyon bulunamadı",
+
+ // "submission.sections.general.no-sections": "No options available",
+ "submission.sections.general.no-sections": "Seçenekler Bulunamadı.",
+
+ // "submission.sections.general.save_error_notice": "There was an issue when saving the item, please try again later.",
+ "submission.sections.general.save_error_notice": "Öğe kaydedilirken bir sorun oluştu, lütfen daha sonra tekrar deneyin.",
+
+ // "submission.sections.general.save_success_notice": "Submission saved successfully.",
+ "submission.sections.general.save_success_notice": "Gönderim başarıyla kaydedildi.",
+
+ // "submission.sections.general.search-collection": "Search for a collection",
+ "submission.sections.general.search-collection": "Koleksiyon ara",
+
+ // "submission.sections.general.sections_not_valid": "There are incomplete sections.",
+ "submission.sections.general.sections_not_valid": "Eksik bölümler var.",
+
+
+
+ // "submission.sections.submit.progressbar.CClicense": "Creative commons license",
+ "submission.sections.submit.progressbar.CClicense": "Yaratıcı Ortak Lisansları",
+
+ // "submission.sections.submit.progressbar.describe.recycle": "Recycle",
+ "submission.sections.submit.progressbar.describe.recycle": "Geri Dönüştür",
+
+ // "submission.sections.submit.progressbar.describe.stepcustom": "Describe",
+ "submission.sections.submit.progressbar.describe.stepcustom": "Tanımla",
+
+ // "submission.sections.submit.progressbar.describe.stepone": "Describe",
+ "submission.sections.submit.progressbar.describe.stepone": "Tanımla",
+
+ // "submission.sections.submit.progressbar.describe.steptwo": "Describe",
+ "submission.sections.submit.progressbar.describe.steptwo": "Tanımla",
+
+ // "submission.sections.submit.progressbar.detect-duplicate": "Potential duplicates",
+ "submission.sections.submit.progressbar.detect-duplicate": "Olası Kopyalar",
+
+ // "submission.sections.submit.progressbar.license": "Deposit license",
+ "submission.sections.submit.progressbar.license": "Lisansı Yerleştir",
+
+ // "submission.sections.submit.progressbar.upload": "Upload files",
+ "submission.sections.submit.progressbar.upload": "Dosyaları yükle",
+
+
+
+ // "submission.sections.upload.delete.confirm.cancel": "Cancel",
+ "submission.sections.upload.delete.confirm.cancel": "İptal",
+
+ // "submission.sections.upload.delete.confirm.info": "This operation can't be undone. Are you sure?",
+ "submission.sections.upload.delete.confirm.info": "Bu işlem geri alınamaz. Emin misin?",
+
+ // "submission.sections.upload.delete.confirm.submit": "Yes, I'm sure",
+ "submission.sections.upload.delete.confirm.submit": "Evet eminim.",
+
+ // "submission.sections.upload.delete.confirm.title": "Delete bitstream",
+ "submission.sections.upload.delete.confirm.title": "Bitstreamı Sil",
+
+ // "submission.sections.upload.delete.submit": "Delete",
+ "submission.sections.upload.delete.submit": "Sil",
+
+ // "submission.sections.upload.drop-message": "Drop files to attach them to the item",
+ "submission.sections.upload.drop-message": "Öğeye eklemek için dosyaları bırakın",
+
+ // "submission.sections.upload.form.access-condition-label": "Access condition type",
+ "submission.sections.upload.form.access-condition-label": "Erişim Koşulu Türü",
+
+ // "submission.sections.upload.form.date-required": "Date is required.",
+ "submission.sections.upload.form.date-required": "Tarih gerekli.",
+
+ // "submission.sections.upload.form.from-label": "Grant access from",
+ "submission.sections.upload.form.from-label": "Şuradan erişim izni ver:",
+
+ // "submission.sections.upload.form.from-placeholder": "From",
+ "submission.sections.upload.form.from-placeholder": "İtibaren",
+
+ // "submission.sections.upload.form.group-label": "Group",
+ "submission.sections.upload.form.group-label": "Grup",
+
+ // "submission.sections.upload.form.group-required": "Group is required.",
+ "submission.sections.upload.form.group-required": "Grup gerekli.",
+
+ // "submission.sections.upload.form.until-label": "Grant access until",
+ "submission.sections.upload.form.until-label": "Şu tarihe kadar erişim izni ver:",
+
+ // "submission.sections.upload.form.until-placeholder": "Until",
+ "submission.sections.upload.form.until-placeholder": "Kadar",
+
+ // "submission.sections.upload.header.policy.default.nolist": "Uploaded files in the {{collectionName}} collection will be accessible according to the following group(s):",
+ "submission.sections.upload.header.policy.default.nolist": "{{collectionName}} koleksiyonuna yüklenen dosyalara aşağıdaki gruplara göre erişilebilir:",
+
+ // "submission.sections.upload.header.policy.default.withlist": "Please note that uploaded files in the {{collectionName}} collection will be accessible, in addition to what is explicitly decided for the single file, with the following group(s):",
+ "submission.sections.upload.header.policy.default.withlist": "{{collectionName}} koleksiyonuna yüklenen dosyalara, tek dosya için açıkça karar verilenlere ek olarak aşağıdaki gruplarla erişilebilir olacağını lütfen unutmayın:",
+
+ // "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": "Burada, o anda öğede bulunan tüm dosyaları bulacaksınız. Dosya metadatalarını güncelleyebilir ve koşullara erişebilir veya sayfanın her yerine sürükleyip bırakarak ek dosyalar yükleyebilirsiniz ",
+
+ // "submission.sections.upload.no-entry": "No",
+ "submission.sections.upload.no-entry": "Hayır",
+
+ // "submission.sections.upload.no-file-uploaded": "No file uploaded yet.",
+ "submission.sections.upload.no-file-uploaded": "Henüz dosya yüklenmedi.",
+
+ // "submission.sections.upload.save-metadata": "Save metadata",
+ "submission.sections.upload.save-metadata": "Metadataları kaydet",
+
+ // "submission.sections.upload.undo": "Cancel",
+ "submission.sections.upload.undo": "İptal",
+
+ // "submission.sections.upload.upload-failed": "Upload failed",
+ "submission.sections.upload.upload-failed": "Yükleme Başarısız",
+
+ // "submission.sections.upload.upload-successful": "Upload successful",
+ "submission.sections.upload.upload-successful": "Yükleme Başarılı",
+
+
+
+ // "submission.submit.title": "Submission",
+ "submission.submit.title": "Gönder",
+
+
+
+ // "submission.workflow.generic.delete": "Delete",
+ "submission.workflow.generic.delete": "Sil",
+
+ // "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": "Bu öğeyi atmak istiyorsanız, \"Sil\" öğesini seçin. Daha sonra onaylamanız istenecektir.",
+
+ // "submission.workflow.generic.edit": "Edit",
+ "submission.workflow.generic.edit": "Değiştir",
+
+ // "submission.workflow.generic.edit-help": "Select this option to change the item's metadata.",
+ "submission.workflow.generic.edit-help": "Öğenin metadatalarını değiştirmek için bu seçeneği belirleyin.",
+
+ // "submission.workflow.generic.view": "View",
+ "submission.workflow.generic.view": "Göster",
+
+ // "submission.workflow.generic.view-help": "Select this option to view the item's metadata.",
+ "submission.workflow.generic.view-help": "Öğenin metadatalarını görüntülemek için bu seçeneği belirleyin.",
+
+
+
+ // "submission.workflow.tasks.claimed.approve": "Approve",
+ "submission.workflow.tasks.claimed.approve": "Kabul Et.",
+
+ // "submission.workflow.tasks.claimed.approve_help": "If you have reviewed the item and it is suitable for inclusion in the collection, select \"Approve\".",
+ "submission.workflow.tasks.claimed.approve_help": "Öğeyi incelediyseniz ve koleksiyona dahil edilmeye uygunsa, \"Onayla\"yı seçin.",
+
+ // "submission.workflow.tasks.claimed.edit": "Edit",
+ "submission.workflow.tasks.claimed.edit": "Değiştir",
+
+ // "submission.workflow.tasks.claimed.edit_help": "Select this option to change the item's metadata.",
+ "submission.workflow.tasks.claimed.edit_help": "Öğenin metadatalarını değiştirmek için bu seçeneği belirleyin.",
+
+ // "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": "Lütfen gönderiyi reddetme nedeninizi aşağıdaki kutuya, gönderenin bir sorunu çözüp yeniden gönderip gönderemeyeceğini belirterek girin.",
+
+ // "submission.workflow.tasks.claimed.reject.reason.placeholder": "Describe the reason of reject",
+ "submission.workflow.tasks.claimed.reject.reason.placeholder": "Reddetme nedenini açıklayın",
+
+ // "submission.workflow.tasks.claimed.reject.reason.submit": "Reject item",
+ "submission.workflow.tasks.claimed.reject.reason.submit": "Materyali Reddet",
+
+ // "submission.workflow.tasks.claimed.reject.reason.title": "Reason",
+ "submission.workflow.tasks.claimed.reject.reason.title": "Neden",
+
+ // "submission.workflow.tasks.claimed.reject.submit": "Reject",
+ "submission.workflow.tasks.claimed.reject.submit": "Kabul Etme",
+
+ // "submission.workflow.tasks.claimed.reject_help": "If you have reviewed the item and found it is not suitable for inclusion in the collection, select \"Reject\". You will then be asked to enter a message indicating why the item is unsuitable, and whether the submitter should change something and resubmit.",
+ "submission.workflow.tasks.claimed.reject_help": "Öğeyi incelediyseniz ve koleksiyona dahil edilmeye uygun olmadığını bulduysanız, \"Reddet\"i seçin. Ardından, öğenin neden uygun olmadığını ve gönderenin bir şeyi değiştirip yeniden göndermesi gerekip gerekmediğini belirten bir mesaj girmeniz istenecektir.",
+
+ // "submission.workflow.tasks.claimed.return": "Return to pool",
+ "submission.workflow.tasks.claimed.return": "Havuza Dön",
+
+ // "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": "Başka bir kullanıcının görevi gerçekleştirebilmesi için görevi havuza geri döndürün.",
+
+
+
+ // "submission.workflow.tasks.generic.error": "Error occurred during operation...",
+ "submission.workflow.tasks.generic.error": "İşlem sırasında hata oluştu...",
+
+ // "submission.workflow.tasks.generic.processing": "Processing...",
+ "submission.workflow.tasks.generic.processing": "İşleniyor...",
+
+ // "submission.workflow.tasks.generic.submitter": "Submitter",
+ "submission.workflow.tasks.generic.submitter": "Gönderen",
+
+ // "submission.workflow.tasks.generic.success": "Operation successful",
+ "submission.workflow.tasks.generic.success": "İşlem Başarılı",
+
+
+
+ // "submission.workflow.tasks.pool.claim": "Claim",
+ "submission.workflow.tasks.pool.claim": "Talep Et",
+
+ // "submission.workflow.tasks.pool.claim_help": "Assign this task to yourself.",
+ "submission.workflow.tasks.pool.claim_help": "Bu görevi kendinize atayın.",
+
+ // "submission.workflow.tasks.pool.hide-detail": "Hide detail",
+ "submission.workflow.tasks.pool.hide-detail": "Detayları gizle",
+
+ // "submission.workflow.tasks.pool.show-detail": "Show detail",
+ "submission.workflow.tasks.pool.show-detail": "Detayaları göster",
+
+
+
+ // "title": "DSpace",
+ "title": "DSpace",
+
+
+
+ // "vocabulary-treeview.header": "Hierarchical tree view",
+ "vocabulary-treeview.header": "Hiyerarşik ağaç görünümü",
+
+ // "vocabulary-treeview.load-more": "Load more",
+ "vocabulary-treeview.load-more": "Daha Fazla Yükle",
+
+ // "vocabulary-treeview.search.form.reset": "Reset",
+ "vocabulary-treeview.search.form.reset": "Sıfırla",
+
+ // "vocabulary-treeview.search.form.search": "Search",
+ "vocabulary-treeview.search.form.search": "Ara",
+
+ // "vocabulary-treeview.search.no-result": "There were no items to show",
+ "vocabulary-treeview.search.no-result": "Gösterilecek öğe yok",
+
+ // "vocabulary-treeview.tree.description.nsi": "The Norwegian Science Index",
+ "vocabulary-treeview.tree.description.nsi": "The Norwegian Science Index",
+
+ // "vocabulary-treeview.tree.description.srsc": "Research Subject Categories",
+ "vocabulary-treeview.tree.description.srsc": "Araştırma Konusu Kategorileri",
+
+
+
+ // "uploader.browse": "browse",
+ "uploader.browse": "Tara",
+
+ // "uploader.drag-message": "Drag & Drop your files here",
+ "uploader.drag-message": "Dosyalarınızı buraya sürükleyip bırakın",
+
+ // "uploader.or": ", or ",
+ "uploader.or": ", veya",
+
+ // "uploader.processing": "Processing",
+ "uploader.processing": "İşleniyor",
+
+ // "uploader.queue-length": "Queue length",
+ "uploader.queue-length": "Sıra Uzunluğu",
+
+ // "virtual-metadata.delete-item.info": "Select the types for which you want to save the virtual metadata as real metadata",
+ "virtual-metadata.delete-item.info": "Sanal metadataları gerçek metadatalar olarak kaydetmek istediğiniz türleri seçin",
+
+ // "virtual-metadata.delete-item.modal-head": "The virtual metadata of this relation",
+ "virtual-metadata.delete-item.modal-head": "Bu ilişkinin sanal metadataları",
+
+ // "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": "Sanal metadatalarını gerçek metadatalar olarak kaydetmek istediğiniz öğeleri seçin",
+
+
+
+ // "workflowAdmin.search.results.head": "Administer Workflow",
+ "workflowAdmin.search.results.head": "İş Akışını Yönet",
+
+
+
+ // "workflow-item.delete.notification.success.title": "Deleted",
+ "workflow-item.delete.notification.success.title": "Silindi",
+
+ // "workflow-item.delete.notification.success.content": "This workflow item was successfully deleted",
+ "workflow-item.delete.notification.success.content": "Bu iş akışı öğesi başarıyla silindi",
+
+ // "workflow-item.delete.notification.error.title": "Something went wrong",
+ "workflow-item.delete.notification.error.title": "Bir şeyler yanlış gitti",
+
+ // "workflow-item.delete.notification.error.content": "The workflow item could not be deleted",
+ "workflow-item.delete.notification.error.content": "İş akışı öğesi silinemedi",
+
+ // "workflow-item.delete.title": "Delete workflow item",
+ "workflow-item.delete.title": "İş akışı öğesini sil",
+
+ // "workflow-item.delete.header": "Delete workflow item",
+ "workflow-item.delete.header": "İş akışı öğesini sil",
+
+ // "workflow-item.delete.button.cancel": "Cancel",
+ "workflow-item.delete.button.cancel": "İptal",
+
+ // "workflow-item.delete.button.confirm": "Delete",
+ "workflow-item.delete.button.confirm": "Sil",
+
+
+ // "workflow-item.send-back.notification.success.title": "Sent back to submitter",
+ "workflow-item.send-back.notification.success.title": "Gönderene geri gönderildi",
+
+ // "workflow-item.send-back.notification.success.content": "This workflow item was successfully sent back to the submitter",
+ "workflow-item.send-back.notification.success.content": "Bu iş akışı öğesi, gönderene başarıyla geri gönderildi",
+
+ // "workflow-item.send-back.notification.error.title": "Something went wrong",
+ "workflow-item.send-back.notification.error.title": "Bir şeyler yanlış gitti",
+
+ // "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": "İş akışı öğesi, gönderene geri gönderilemedi",
+
+ // "workflow-item.send-back.title": "Send workflow item back to submitter",
+ "workflow-item.send-back.title": "İş akışı öğesini gönderene geri gönder",
+
+ // "workflow-item.send-back.header": "Send workflow item back to submitter",
+ "workflow-item.send-back.header": "İş akışı öğesini gönderene geri gönder",
+
+ // "workflow-item.send-back.button.cancel": "Cancel",
+ "workflow-item.send-back.button.cancel": "İptal",
+
+ // "workflow-item.send-back.button.confirm": "Send back"
+ "workflow-item.send-back.button.confirm": "Geri Gönder"
+
+}
\ No newline at end of file
From 6f9e5b8c500c3aac47272faa523fd7780d1baaa1 Mon Sep 17 00:00:00 2001
From: SDGBot <38133100+itudevops@users.noreply.github.com>
Date: Tue, 26 Apr 2022 10:14:33 +0300
Subject: [PATCH 050/107] =?UTF-8?q?ITU=20BIDB=20t=C3=BCrk=C3=A7e=20dil=20d?=
=?UTF-8?q?este=C4=9Fi=20g=C3=BCncellemesi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Ek düzeltmeler.
---
src/assets/i18n/tr.json5 | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/assets/i18n/tr.json5 b/src/assets/i18n/tr.json5
index e7aee66ac0..af8818c453 100644
--- a/src/assets/i18n/tr.json5
+++ b/src/assets/i18n/tr.json5
@@ -1252,7 +1252,7 @@
"community.create.sub-head": "Komünite için bir alt komünite oluşturun {{ parent }}",
// "community.curate.header": "Curate Community: {{community}}",
- "community.curate.header": "Kuratör topluluğu: {{community}}",
+ "community.curate.header": "Kuratör komüniteyi: {{community}}",
// "community.delete.cancel": "Cancel",
"community.delete.cancel": "İptal",
@@ -1261,7 +1261,7 @@
"community.delete.confirm": "Onayla",
// "community.delete.head": "Delete Community",
- "community.delete.head": "Topluluğu sil",
+ "community.delete.head": "Komüniteyi sil",
// "community.delete.notification.fail": "Community could not be deleted",
"community.delete.notification.fail": "Komünite silinemedi",
@@ -1270,16 +1270,16 @@
"community.delete.notification.success": "Komünite başarıyla silindi",
// "community.delete.text": "Are you sure you want to delete community \"{{ dso }}\"",
- "community.delete.text": "Topluluğu silmek istediğinize emin misiniz \"{{ dso }}\"",
+ "community.delete.text": "Komüniteyi silmek istediğinize emin misiniz \"{{ dso }}\"",
// "community.edit.delete": "Delete this community",
- "community.edit.delete": "Bu topluluğu sil",
+ "community.edit.delete": "Bu komüniteyi sil",
// "community.edit.head": "Edit Community",
- "community.edit.head": "Topluluğu düzenle",
+ "community.edit.head": "Komüniteyi düzenle",
// "community.edit.breadcrumbs": "Edit Community",
- "community.edit.breadcrumbs": "Topluluğu düzenle",
+ "community.edit.breadcrumbs": "Komüniteyi düzenle",
// "community.edit.logo.label": "Community logo",
@@ -1312,7 +1312,7 @@
"community.edit.notifications.unauthorized": "Bu değişikliği yapmak için ayrıcalıklarınız yok",
// "community.edit.notifications.error": "An error occured while editing the Community",
- "community.edit.notifications.error": "Topluluğu düzenlerken bir hata oluştu",
+ "community.edit.notifications.error": "Komüniteyi düzenlerken bir hata oluştu",
// "community.edit.return": "Return",
"community.edit.return": "Dönüş",
@@ -1445,7 +1445,7 @@
"community.form.title": "İsim",
// "community.page.edit": "Edit this community",
- "community.page.edit": "Bu topluluğu düzenle",
+ "community.page.edit": "Bu komüniteyi düzenle",
// "community.page.handle": "Permanent URI for this community",
"community.page.handle": "Bu komünite için Kalıcı Uri",
@@ -1460,10 +1460,10 @@
"community.all-lists.head": "Alt komüniteler ve koleksiyonlar",
// "community.sub-collection-list.head": "Collections of this Community",
- "community.sub-collection-list.head": "Bu topluluğun koleksiyonları",
+ "community.sub-collection-list.head": "Bu komünitenin koleksiyonları",
// "community.sub-community-list.head": "Communities of this Community",
- "community.sub-community-list.head": "Bu topluluğun koleksiyonları",
+ "community.sub-community-list.head": "Bu komünitenin koleksiyonları",
From 15e4200f7e98a62ad1f8dfdecc83d607d31d61d3 Mon Sep 17 00:00:00 2001
From: SDGBot <38133100+itudevops@users.noreply.github.com>
Date: Tue, 26 Apr 2022 10:18:56 +0300
Subject: [PATCH 051/107] =?UTF-8?q?ITU=20BIDB=20t=C3=BCrk=C3=A7e=20dil=20d?=
=?UTF-8?q?este=C4=9Fi=20g=C3=BCncellemesi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Ek düzeltmeler.
---
src/assets/i18n/tr.json5 | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/assets/i18n/tr.json5 b/src/assets/i18n/tr.json5
index af8818c453..7d658ee20f 100644
--- a/src/assets/i18n/tr.json5
+++ b/src/assets/i18n/tr.json5
@@ -1252,7 +1252,7 @@
"community.create.sub-head": "Komünite için bir alt komünite oluşturun {{ parent }}",
// "community.curate.header": "Curate Community: {{community}}",
- "community.curate.header": "Kuratör komüniteyi: {{community}}",
+ "community.curate.header": "Kuratör komünitesi: {{community}}",
// "community.delete.cancel": "Cancel",
"community.delete.cancel": "İptal",
@@ -5123,4 +5123,4 @@
// "workflow-item.send-back.button.confirm": "Send back"
"workflow-item.send-back.button.confirm": "Geri Gönder"
-}
\ No newline at end of file
+}
From 809072e86a3c98576dc03332944300446c7c7251 Mon Sep 17 00:00:00 2001
From: Yura Bondarenko
Date: Mon, 25 Apr 2022 15:23:11 +0200
Subject: [PATCH 052/107] 90918: Fix RxJs issues
---
.../core/shared/hal-endpoint.service.spec.ts | 6 ++---
src/app/core/shared/operators.ts | 15 +++++++++--
.../profile-page-security-form.component.ts | 3 ++-
.../dso-selector/dso-selector.component.ts | 2 +-
.../item-versions.component.spec.ts | 4 ++-
src/app/shared/remote-data.utils.ts | 4 +--
.../search-filters.component.spec.ts | 2 +-
.../vocabulary-tree-flat-data-source.ts | 2 +-
.../vocabulary-treeview.service.spec.ts | 27 +++++++++++++++----
...port-external-collection.component.spec.ts | 20 ++++++++++----
...on-import-external-collection.component.ts | 6 ++---
11 files changed, 66 insertions(+), 25 deletions(-)
diff --git a/src/app/core/shared/hal-endpoint.service.spec.ts b/src/app/core/shared/hal-endpoint.service.spec.ts
index b29b8f662e..78a296496a 100644
--- a/src/app/core/shared/hal-endpoint.service.spec.ts
+++ b/src/app/core/shared/hal-endpoint.service.spec.ts
@@ -3,7 +3,7 @@ import { getMockRequestService } from '../../shared/mocks/request.service.mock';
import { RequestService } from '../data/request.service';
import { HALEndpointService } from './hal-endpoint.service';
import { EndpointMapRequest } from '../data/request.models';
-import { combineLatest as observableCombineLatest, of as observableOf } from 'rxjs';
+import { combineLatest as observableCombineLatest, Observable, of as observableOf } from 'rxjs';
import { environment } from '../../../environments/environment';
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
@@ -162,9 +162,9 @@ describe('HALEndpointService', () => {
return observableOf(endpointMaps[param]);
});
- observableCombineLatest([
+ observableCombineLatest([
(service as any).getEndpointAt(start, 'one'),
- (service as any).getEndpointAt(start, 'one', 'two')
+ (service as any).getEndpointAt(start, 'one', 'two'),
]).subscribe(([endpoint1, endpoint2]) => {
expect(endpoint1).toEqual(one);
expect(endpoint2).toEqual(two);
diff --git a/src/app/core/shared/operators.ts b/src/app/core/shared/operators.ts
index b2ceaa4964..32610c82fd 100644
--- a/src/app/core/shared/operators.ts
+++ b/src/app/core/shared/operators.ts
@@ -1,5 +1,5 @@
-import { combineLatest as observableCombineLatest, Observable } from 'rxjs';
-import { debounceTime, filter, find, map, switchMap, take, takeWhile } from 'rxjs/operators';
+import { combineLatest as observableCombineLatest, Observable, interval } from 'rxjs';
+import { filter, find, map, switchMap, take, takeWhile, debounce, debounceTime } from 'rxjs/operators';
import { hasNoValue, hasValue, hasValueOperator, isNotEmpty } from '../../shared/empty.util';
import { SearchResult } from '../../shared/search/models/search-result.model';
import { PaginatedList } from '../data/paginated-list.model';
@@ -9,6 +9,17 @@ import { MetadataSchema } from '../metadata/metadata-schema.model';
import { BrowseDefinition } from './browse-definition.model';
import { DSpaceObject } from './dspace-object.model';
import { InjectionToken } from '@angular/core';
+import { MonoTypeOperatorFunction, SchedulerLike } from 'rxjs/internal/types';
+
+/**
+ * Use this method instead of the RxJs debounceTime if you're waiting for debouncing in tests;
+ * debounceTime doesn't work with fakeAsync/tick anymore as of Angular 13.2.6 & RxJs 7.5.5
+ * Workaround suggested in https://github.com/angular/angular/issues/44351#issuecomment-1107454054
+ * todo: remove once the above issue is fixed
+ */
+export const debounceTimeWorkaround = (dueTime: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction => {
+ return debounce(() => interval(dueTime, scheduler));
+};
export const DEBOUNCE_TIME_OPERATOR = new InjectionToken<(dueTime: number) => (source: Observable) => Observable>('debounceTime', {
providedIn: 'root',
diff --git a/src/app/profile-page/profile-page-security-form/profile-page-security-form.component.ts b/src/app/profile-page/profile-page-security-form/profile-page-security-form.component.ts
index 1013cad44b..4f310204e3 100644
--- a/src/app/profile-page/profile-page-security-form/profile-page-security-form.component.ts
+++ b/src/app/profile-page/profile-page-security-form/profile-page-security-form.component.ts
@@ -5,8 +5,9 @@ import { FormGroup } from '@angular/forms';
import { hasValue, isEmpty } from '../../shared/empty.util';
import { EPersonDataService } from '../../core/eperson/eperson-data.service';
import { NotificationsService } from '../../shared/notifications/notifications.service';
-import { debounceTime, map } from 'rxjs/operators';
+import { map } from 'rxjs/operators';
import { Subscription } from 'rxjs';
+import { debounceTimeWorkaround as debounceTime } from '../../core/shared/operators';
@Component({
selector: 'ds-profile-page-security-form',
diff --git a/src/app/shared/dso-selector/dso-selector/dso-selector.component.ts b/src/app/shared/dso-selector/dso-selector/dso-selector.component.ts
index 6438c0eac4..0c799369ef 100644
--- a/src/app/shared/dso-selector/dso-selector/dso-selector.component.ts
+++ b/src/app/shared/dso-selector/dso-selector/dso-selector.component.ts
@@ -143,7 +143,7 @@ export class DSOSelectorComponent implements OnInit, OnDestroy {
this.typesString = this.types.map((type: string) => type.toString().toLowerCase()).join(', ');
// Create an observable searching for the current DSO (return empty list if there's no current DSO)
- let currentDSOResult$;
+ let currentDSOResult$: Observable>>;
if (isNotEmpty(this.currentDSOId)) {
currentDSOResult$ = this.search(this.getCurrentDSOQuery(), 1).pipe(getFirstSucceededRemoteDataPayload());
} else {
diff --git a/src/app/shared/item/item-versions/item-versions.component.spec.ts b/src/app/shared/item/item-versions/item-versions.component.spec.ts
index 8bb5554b77..088e7200d7 100644
--- a/src/app/shared/item/item-versions/item-versions.component.spec.ts
+++ b/src/app/shared/item/item-versions/item-versions.component.spec.ts
@@ -100,7 +100,9 @@ describe('ItemVersionsComponent', () => {
isAuthenticated: observableOf(true),
setRedirectUrl: {}
});
- const authorizationServiceSpy = jasmine.createSpyObj('authorizationService', ['isAuthorized']);
+ const authorizationServiceSpy = jasmine.createSpyObj('authorizationService', {
+ isAuthorized: observableOf(true)
+ });
const workspaceItemDataServiceSpy = jasmine.createSpyObj('workspaceItemDataService', {
findByItem: EMPTY,
});
diff --git a/src/app/shared/remote-data.utils.ts b/src/app/shared/remote-data.utils.ts
index 2a7dee6383..50b7d7f9f9 100644
--- a/src/app/shared/remote-data.utils.ts
+++ b/src/app/shared/remote-data.utils.ts
@@ -61,7 +61,7 @@ export function createFailedRemoteDataObject(errorMessage?: string, statusCod
* @param timeCompleted the moment when the remoteData was completed
*/
export function createFailedRemoteDataObject$(errorMessage?: string, statusCode?: number, timeCompleted?: number): Observable> {
- return observableOf(createFailedRemoteDataObject(errorMessage, statusCode, timeCompleted));
+ return observableOf(createFailedRemoteDataObject(errorMessage, statusCode, timeCompleted));
}
/**
@@ -85,7 +85,7 @@ export function createPendingRemoteDataObject(lastVerified = FIXED_TIMESTAMP)
* @param lastVerified the moment when the remoteData was last verified
*/
export function createPendingRemoteDataObject$(lastVerified?: number): Observable> {
- return observableOf(createPendingRemoteDataObject(lastVerified));
+ return observableOf(createPendingRemoteDataObject(lastVerified));
}
/**
diff --git a/src/app/shared/search/search-filters/search-filters.component.spec.ts b/src/app/shared/search/search-filters/search-filters.component.spec.ts
index f84de65fb0..ec1a51a1c4 100644
--- a/src/app/shared/search/search-filters/search-filters.component.spec.ts
+++ b/src/app/shared/search/search-filters/search-filters.component.spec.ts
@@ -80,7 +80,7 @@ describe('SearchFiltersComponent', () => {
expect(comp.initFilters).toHaveBeenCalledTimes(1);
- refreshFiltersEmitter.next();
+ refreshFiltersEmitter.next(null);
expect(comp.initFilters).toHaveBeenCalledTimes(2);
});
diff --git a/src/app/shared/vocabulary-treeview/vocabulary-tree-flat-data-source.ts b/src/app/shared/vocabulary-treeview/vocabulary-tree-flat-data-source.ts
index 9d093874b8..23ac6fcf8f 100644
--- a/src/app/shared/vocabulary-treeview/vocabulary-tree-flat-data-source.ts
+++ b/src/app/shared/vocabulary-treeview/vocabulary-tree-flat-data-source.ts
@@ -38,7 +38,7 @@ export class VocabularyTreeFlatDataSource extends DataSource {
this._treeControl.expansionModel.changed,
this._flattenedData
];
- return merge(...changes).pipe(map(() => {
+ return merge(...changes).pipe(map((): F[] => {
this._expandedData.next(
this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl));
return this._expandedData.value;
diff --git a/src/app/shared/vocabulary-treeview/vocabulary-treeview.service.spec.ts b/src/app/shared/vocabulary-treeview/vocabulary-treeview.service.spec.ts
index ef84a290dd..c1c64c80bd 100644
--- a/src/app/shared/vocabulary-treeview/vocabulary-treeview.service.spec.ts
+++ b/src/app/shared/vocabulary-treeview/vocabulary-treeview.service.spec.ts
@@ -2,7 +2,7 @@ import { TestBed, waitForAsync } from '@angular/core/testing';
import { TestScheduler } from 'rxjs/testing';
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
-import { getTestScheduler, hot } from 'jasmine-marbles';
+import { cold, getTestScheduler, hot } from 'jasmine-marbles';
import { VocabularyTreeviewService } from './vocabulary-treeview.service';
import { VocabularyService } from '../../core/submission/vocabularies/vocabulary.service';
@@ -14,6 +14,8 @@ import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models
import { buildPaginatedList } from '../../core/data/paginated-list.model';
import { createSuccessfulRemoteDataObject } from '../remote-data.utils';
import { VocabularyEntry } from '../../core/submission/vocabularies/models/vocabulary-entry.model';
+import { expand, map, switchMap } from 'rxjs/operators';
+import { from as observableFrom } from 'rxjs';
describe('VocabularyTreeviewService test suite', () => {
@@ -320,10 +322,25 @@ describe('VocabularyTreeviewService test suite', () => {
scheduler.schedule(() => service.searchByQuery(vocabularyOptions));
scheduler.flush();
- searchChildNode.childrenChange.next([searchChildNode3]);
- searchItemNode.childrenChange.next([searchChildNode]);
- expect(serviceAsAny.dataChange.value.length).toEqual(1);
- expect(serviceAsAny.dataChange.value).toEqual([searchItemNode]);
+ // We can't check the tree by comparing root TreeviewNodes directly in this particular test;
+ // Since RxJs 7, BehaviorSubjects can no longer be reliably compared because of the new currentObservers property
+ // (see https://github.com/ReactiveX/rxjs/pull/6842)
+ const levels$ = serviceAsAny.dataChange.pipe(
+ expand((nodes: TreeviewNode[]) => { // recursively apply:
+ return observableFrom(nodes).pipe( // for each node in the array...
+ switchMap(node => node.childrenChange) // ...map it to the array its child nodes.
+ ); // because we only have one child per node in this case,
+ }), // this results in an array of nodes for each level of the tree.
+ map((nodes: TreeviewNode[]) => nodes.map(node => node.item)), // finally, replace nodes with their vocab entries
+ );
+
+ // Confirm that this corresponds to the hierarchy we set up above
+ expect(levels$).toBeObservable(cold('-(abcd)', {
+ a: [item],
+ b: [child],
+ c: [child3],
+ d: [] // ensure that grandchild has no children & the recursion stopped there
+ }));
});
});
diff --git a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts
index cd7fa86b0a..4f3c54b642 100644
--- a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts
+++ b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.spec.ts
@@ -64,14 +64,24 @@ describe('SubmissionImportExternalCollectionComponent test suite', () => {
compAsAny = null;
});
- it('The variable \'selectedEvent\' should be assigned', () => {
- const event = new EventEmitter();
- comp.selectObject(event);
+ it('should emit from selectedEvent on selectObject', () => {
+ spyOn(comp.selectedEvent, 'emit').and.callThrough();
- expect(comp.selectedEvent).toEqual(event);
+ const entry = {
+ communities: [
+ { id: 'community1' },
+ { id: 'community2' }
+ ],
+ collection: {
+ id: 'collection'
+ }
+ } as CollectionListEntry;
+ comp.selectObject(entry);
+
+ expect(comp.selectedEvent.emit).toHaveBeenCalledWith(entry);
});
- it('The variable \'selectedEvent\' should be assigned', () => {
+ it('should dismiss modal on closeCollectionModal', () => {
spyOn(compAsAny.activeModal, 'dismiss');
comp.closeCollectionModal();
diff --git a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.ts b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.ts
index e35bde03cf..5fb4e5d406 100644
--- a/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.ts
+++ b/src/app/submission/import-external/import-external-collection/submission-import-external-collection.component.ts
@@ -35,10 +35,10 @@ export class SubmissionImportExternalCollectionComponent {
) { }
/**
- * This method populates the 'selectedEvent' variable.
+ * This method emits the selected Collection from the 'selectedEvent' variable.
*/
- public selectObject(event): void {
- this.selectedEvent.emit(event);
+ public selectObject(object: CollectionListEntry): void {
+ this.selectedEvent.emit(object);
}
/**
From 291f2997eda56b5e027a69e35ebfc59c898ff38c Mon Sep 17 00:00:00 2001
From: Kristof De Langhe
Date: Tue, 26 Apr 2022 13:06:29 +0200
Subject: [PATCH 053/107] 90951: Fix issue #1381 - route titles priority over
DSO titles
---
src/app/core/metadata/metadata.service.spec.ts | 16 ++++++++++++++++
src/app/core/metadata/metadata.service.ts | 10 +++++-----
2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/src/app/core/metadata/metadata.service.spec.ts b/src/app/core/metadata/metadata.service.spec.ts
index 985851c321..5ae4928528 100644
--- a/src/app/core/metadata/metadata.service.spec.ts
+++ b/src/app/core/metadata/metadata.service.spec.ts
@@ -157,6 +157,22 @@ describe('MetadataService', () => {
});
}));
+ it('route titles should overwrite dso titles', fakeAsync(() => {
+ (translateService.get as jasmine.Spy).and.returnValues(of('DSpace :: '), of('Translated Route Title'));
+ (metadataService as any).processRouteChange({
+ data: {
+ value: {
+ dso: createSuccessfulRemoteDataObject(ItemMock),
+ title: 'route.title.key',
+ }
+ }
+ });
+ tick();
+ expect(title.setTitle).toHaveBeenCalledTimes(2);
+ expect((title.setTitle as jasmine.Spy).calls.argsFor(0)).toEqual(['Test PowerPoint Document']);
+ expect((title.setTitle as jasmine.Spy).calls.argsFor(1)).toEqual(['DSpace :: Translated Route Title']);
+ }));
+
it('other navigation should add title and description', fakeAsync(() => {
(translateService.get as jasmine.Spy).and.returnValues(of('DSpace :: '), of('Dummy Title'), of('This is a dummy item component for testing!'));
(metadataService as any).processRouteChange({
diff --git a/src/app/core/metadata/metadata.service.ts b/src/app/core/metadata/metadata.service.ts
index 1c6946b0d3..494a2f7f07 100644
--- a/src/app/core/metadata/metadata.service.ts
+++ b/src/app/core/metadata/metadata.service.ts
@@ -103,6 +103,11 @@ export class MetadataService {
private processRouteChange(routeInfo: any): void {
this.clearMetaTags();
+ if (hasValue(routeInfo.data.value.dso) && hasValue(routeInfo.data.value.dso.payload)) {
+ this.currentObject.next(routeInfo.data.value.dso.payload);
+ this.setDSOMetaTags();
+ }
+
if (routeInfo.data.value.title) {
const titlePrefix = this.translate.get('repository.title.prefix');
const title = this.translate.get(routeInfo.data.value.title, routeInfo.data.value);
@@ -116,11 +121,6 @@ export class MetadataService {
this.addMetaTag('description', translatedDescription);
});
}
-
- if (hasValue(routeInfo.data.value.dso) && hasValue(routeInfo.data.value.dso.payload)) {
- this.currentObject.next(routeInfo.data.value.dso.payload);
- this.setDSOMetaTags();
- }
}
private getCurrentRoute(route: ActivatedRoute): ActivatedRoute {
From 78a3a93f24fa750ecc9d355b1573dec841002516 Mon Sep 17 00:00:00 2001
From: Sufiyan Shaikh <“sufiyan.shaikh@4science.com”>
Date: Tue, 26 Apr 2022 17:11:50 +0530
Subject: [PATCH 054/107] [CST-5676] Resolve
---
.../bitstream-page/bitstream-page.resolver.ts | 9 ++++++
.../bitstream-breadcrumb.resolver.ts | 31 +++++++++++++++----
2 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/src/app/bitstream-page/bitstream-page.resolver.ts b/src/app/bitstream-page/bitstream-page.resolver.ts
index 7da80cff5f..5f41cafdeb 100644
--- a/src/app/bitstream-page/bitstream-page.resolver.ts
+++ b/src/app/bitstream-page/bitstream-page.resolver.ts
@@ -6,6 +6,7 @@ import { Bitstream } from '../core/shared/bitstream.model';
import { BitstreamDataService } from '../core/data/bitstream-data.service';
import { followLink, FollowLinkConfig } from '../shared/utils/follow-link-config.model';
import { getFirstCompletedRemoteData } from '../core/shared/operators';
+import { Bundle } from '../core/shared/bundle.model';
/**
* The self links defined in this list are expected to be requested somewhere in the near future
@@ -20,6 +21,14 @@ import { getFirstCompletedRemoteData } from '../core/shared/operators';
followLink('thumbnail')
];
+export const BUNDLE_PAGE_LINKS_TO_FOLLOW: FollowLinkConfig[] = [
+ followLink('bitstreams', {},
+ followLink('parentCommunity', {},
+ followLink('parentCommunity'))
+ ),
+ followLink('primaryBitstream')
+];
+
/**
* This class represents a resolver that requests a specific bitstream before the route is activated
*/
diff --git a/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts b/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts
index de8da19a41..8d658f7d6e 100644
--- a/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts
+++ b/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts
@@ -3,14 +3,19 @@ import { DSOBreadcrumbsService } from './dso-breadcrumbs.service';
import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model';
import { Bitstream } from '../shared/bitstream.model';
import { BitstreamDataService } from '../data/bitstream-data.service';
-import { BITSTREAM_PAGE_LINKS_TO_FOLLOW } from 'src/app/bitstream-page/bitstream-page.resolver';
+import { BITSTREAM_PAGE_LINKS_TO_FOLLOW, BUNDLE_PAGE_LINKS_TO_FOLLOW } from 'src/app/bitstream-page/bitstream-page.resolver';
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
-import { Observable } from 'rxjs';
+import { Observable, of } from 'rxjs';
import { BreadcrumbConfig } from 'src/app/breadcrumbs/breadcrumb/breadcrumb-config.model';
import { getFirstCompletedRemoteData, getRemoteDataPayload } from '../shared/operators';
import { map } from 'rxjs/operators';
import { hasValue } from 'src/app/shared/empty.util';
import { DSOBreadcrumbResolver } from './dso-breadcrumb.resolver';
+import { BundleDataService } from '../data/bundle-data.service';
+import { Bundle } from '../shared/bundle.model';
+import { ItemDataService } from '../data/item-data.service';
+import { Item } from '../shared/item.model';
+import { ITEM_PAGE_LINKS_TO_FOLLOW } from 'src/app/item-page/item.resolver';
/**
* The class that resolves the BreadcrumbConfig object for an Item
@@ -19,7 +24,7 @@ import { DSOBreadcrumbResolver } from './dso-breadcrumb.resolver';
providedIn: 'root'
})
export class BitstreamBreadcrumbResolver extends DSOBreadcrumbResolver {
- constructor(protected breadcrumbService: DSOBreadcrumbsService, protected dataService: BitstreamDataService) {
+ constructor(protected breadcrumbService: DSOBreadcrumbsService, protected dataService: BitstreamDataService, protected itemService: ItemDataService) {
super(breadcrumbService, dataService);
}
@@ -36,9 +41,19 @@ export class BitstreamBreadcrumbResolver extends DSOBreadcrumbResolver {
if (hasValue(object)) {
- const fullPath = state.url;
- const url = fullPath.substr(0, fullPath.indexOf(uuid)) + uuid;
- return {provider: this.breadcrumbService, key: object, url: url};
+ object.bundle.pipe(
+ getFirstCompletedRemoteData(),
+ getRemoteDataPayload()
+ ).subscribe(res => {
+ this.itemService.findById(res.uuid, true, false, ...this.bfollowLinks).pipe(
+ getFirstCompletedRemoteData(),
+ getRemoteDataPayload()
+ ).subscribe(bres => {
+ console.log(bres);
+ });
+ const url = res._links.item.href;
+ return {provider: this.breadcrumbService, key: of(res), url: url};
+ });
} else {
return undefined;
}
@@ -54,4 +69,8 @@ export class BitstreamBreadcrumbResolver extends DSOBreadcrumbResolver[] {
return BITSTREAM_PAGE_LINKS_TO_FOLLOW;
}
+
+ get bfollowLinks(): FollowLinkConfig- [] {
+ return ITEM_PAGE_LINKS_TO_FOLLOW;
+ }
}
From 4c68280108aa93d2efee25bc35caf4168b1364dc Mon Sep 17 00:00:00 2001
From: lotte
Date: Tue, 26 Apr 2022 17:09:07 +0200
Subject: [PATCH 055/107] radio buttons in submission fixed
---
.../models/list/dynamic-list.component.html | 20 ++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/list/dynamic-list.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/models/list/dynamic-list.component.html
index bed5c2987e..7e5cad353b 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/list/dynamic-list.component.html
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/list/dynamic-list.component.html
@@ -45,17 +45,19 @@
+
-
+ [ngClass]="model.layout.element?.control"
+ [for]="item.id">
+
From c2f57b448db1bc4716378e8ffcbb67f47390355d Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Wed, 27 Apr 2022 14:28:35 +1200
Subject: [PATCH 056/107] [TLC-254] Ensure matchers injected in testbed
providers
---
.../ds-dynamic-type-bind-relation.service.spec.ts | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
index c65e3c6574..1a1f27c0b4 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
@@ -8,7 +8,7 @@ import {
OR_OPERATOR,
HIDDEN_MATCHER,
DISABLED_MATCHER,
- REQUIRED_MATCHER,
+ REQUIRED_MATCHER, HIDDEN_MATCHER_PROVIDER, REQUIRED_MATCHER_PROVIDER, DISABLED_MATCHER_PROVIDER,
} from '@ng-dynamic-forms/core';
import {
@@ -34,7 +34,8 @@ describe('DSDynamicTypeBindRelationService test suite', () => {
{ provide: FormBuilderService, useValue: getMockFormBuilderService() },
{ provide: DsDynamicTypeBindRelationService, useClass: DsDynamicTypeBindRelationService },
{ provide: DynamicFormRelationService },
- { provide: Injector }
+ { provide: Injector },
+ DISABLED_MATCHER_PROVIDER, HIDDEN_MATCHER_PROVIDER, REQUIRED_MATCHER_PROVIDER
]
}).compileComponents().then();
});
@@ -64,7 +65,6 @@ describe('DSDynamicTypeBindRelationService test suite', () => {
'boundType', null, 'bound-auth-key', 'Bound Type'
);
const bindType = service.getTypeBindValue(mockMetadataValueObject);
- console.dir(bindType);
expect(bindType).toBe('bound-auth-key');
});
it('Should get passed string returned directly as string passed instead of metadata', () => {
@@ -97,7 +97,8 @@ describe('DSDynamicTypeBindRelationService test suite', () => {
testModel.typeBindRelations = getTypeBindRelations(['boundType']);
const dcTypeControl = new FormControl();
dcTypeControl.setValue('boundType');
- expect(service.subscribeRelations(testModel, dcTypeControl)).toHaveSize(1);
+ let subscriptions = service.subscribeRelations(testModel, dcTypeControl);
+ expect(subscriptions).toHaveSize(1);
});
it('Expect hasMatch to be true (ie. this should be hidden)', () => {
From 8cd07de4fc39b61f990e6c3fc892e7d93c945cbd Mon Sep 17 00:00:00 2001
From: Kim Shepherd
Date: Wed, 27 Apr 2022 14:58:52 +1200
Subject: [PATCH 057/107] [TLC-254] Remove chaff from test
---
.../ds-dynamic-type-bind-relation.service.spec.ts | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
index 1a1f27c0b4..f8bc7ea886 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service.spec.ts
@@ -1,14 +1,12 @@
-import {inject, TestBed, waitForAsync} from '@angular/core/testing';
+import {inject, TestBed} from '@angular/core/testing';
import {
DynamicFormControlRelation,
- DynamicFormControlMatcher,
DynamicFormRelationService,
MATCH_VISIBLE,
OR_OPERATOR,
HIDDEN_MATCHER,
- DISABLED_MATCHER,
- REQUIRED_MATCHER, HIDDEN_MATCHER_PROVIDER, REQUIRED_MATCHER_PROVIDER, DISABLED_MATCHER_PROVIDER,
+ HIDDEN_MATCHER_PROVIDER, REQUIRED_MATCHER_PROVIDER, DISABLED_MATCHER_PROVIDER,
} from '@ng-dynamic-forms/core';
import {
@@ -24,7 +22,6 @@ import {Injector} from '@angular/core';
describe('DSDynamicTypeBindRelationService test suite', () => {
let service: DsDynamicTypeBindRelationService;
let dynamicFormRelationService: DynamicFormRelationService;
- let dynamicFormControlMatchers: DynamicFormControlMatcher[];
let injector: Injector;
beforeEach(() => {
@@ -34,7 +31,6 @@ describe('DSDynamicTypeBindRelationService test suite', () => {
{ provide: FormBuilderService, useValue: getMockFormBuilderService() },
{ provide: DsDynamicTypeBindRelationService, useClass: DsDynamicTypeBindRelationService },
{ provide: DynamicFormRelationService },
- { provide: Injector },
DISABLED_MATCHER_PROVIDER, HIDDEN_MATCHER_PROVIDER, REQUIRED_MATCHER_PROVIDER
]
}).compileComponents().then();
@@ -43,13 +39,9 @@ describe('DSDynamicTypeBindRelationService test suite', () => {
beforeEach(inject([DsDynamicTypeBindRelationService, DynamicFormRelationService],
(relationService: DsDynamicTypeBindRelationService,
formRelationService: DynamicFormRelationService,
- mockInjector: Injector,
) => {
service = relationService;
dynamicFormRelationService = formRelationService;
- dynamicFormControlMatchers = [];
- injector = mockInjector;
- dynamicFormControlMatchers = [HIDDEN_MATCHER, REQUIRED_MATCHER, DISABLED_MATCHER];
}));
describe('Test getTypeBindValue method', () => {
From 2ad87c50d1aa9342c963f98f643de71726efabe1 Mon Sep 17 00:00:00 2001
From: Alexandre Vryghem
Date: Wed, 27 Apr 2022 13:34:23 +0200
Subject: [PATCH 058/107] 90873: issue 1380 - Added tests
---
.../upload/upload-bitstream.component.spec.ts | 96 +++++++++++++++++--
.../upload/upload-bitstream.component.ts | 4 +-
2 files changed, 91 insertions(+), 9 deletions(-)
diff --git a/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts b/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts
index a040613082..e85dca2a98 100644
--- a/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts
+++ b/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts
@@ -21,18 +21,23 @@ import { createPaginatedList } from '../../../shared/testing/utils.test';
import { RouterStub } from '../../../shared/testing/router.stub';
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub';
import { AuthServiceStub } from '../../../shared/testing/auth-service.stub';
+import { environment } from '../../../../environments/environment';
+import { buildPaginatedList } from '../../../core/data/paginated-list.model';
+import { PageInfo } from '../../../core/shared/page-info.model';
describe('UploadBitstreamComponent', () => {
let comp: UploadBitstreamComponent;
let fixture: ComponentFixture;
+ const customName = 'customBundleName';
const bundle = Object.assign(new Bundle(), {
id: 'bundle',
uuid: 'bundle',
+ name: customName,
metadata: {
'dc.title': [
{
- value: 'bundleName',
+ value: customName,
language: null
}
]
@@ -41,14 +46,15 @@ describe('UploadBitstreamComponent', () => {
self: { href: 'bundle-selflink' }
}
});
- const customName = 'Custom Name';
+ const customCreatedName = 'customCreatedBundleName';
const createdBundle = Object.assign(new Bundle(), {
id: 'created-bundle',
uuid: 'created-bundle',
+ name: customCreatedName,
metadata: {
'dc.title': [
{
- value: customName,
+ value: customCreatedName,
language: null
}
]
@@ -71,13 +77,14 @@ describe('UploadBitstreamComponent', () => {
},
bundles: createSuccessfulRemoteDataObject$(createPaginatedList([bundle]))
});
+ const standardBundleSuggestions = environment.bundle.standardBundles;
let routeStub;
const routerStub = new RouterStub();
const restEndpoint = 'fake-rest-endpoint';
const mockItemDataService = jasmine.createSpyObj('mockItemDataService', {
getBitstreamsEndpoint: observableOf(restEndpoint),
createBundle: createSuccessfulRemoteDataObject$(createdBundle),
- getBundles: createSuccessfulRemoteDataObject$([bundle])
+ getBundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [bundle])),
});
const bundleService = jasmine.createSpyObj('bundleService', {
getBitstreamsEndpoint: observableOf(restEndpoint),
@@ -147,12 +154,24 @@ describe('UploadBitstreamComponent', () => {
});
describe('and bundle name changed', () => {
- beforeEach(() => {
+ beforeEach(waitForAsync(() => {
+ jasmine.getEnv().allowRespy(true);
+ mockItemDataService.getBundles.and.returnValue(createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [bundle])));
+ loadFixtureAndComp();
+ }));
+
+ it('should clear out the selected id if the name doesn\'t exist', () => {
+ comp.selectedBundleName = '';
comp.bundleNameChange();
+
+ expect(comp.selectedBundleId).toBeUndefined();
});
- it('should clear out the selected id', () => {
- expect(comp.selectedBundleId).toBeUndefined();
+ it('should select the correct id if the name exist', () => {
+ comp.selectedBundleName = customName;
+ comp.bundleNameChange();
+
+ expect(comp.selectedBundleId).toEqual(bundle.id);
});
});
});
@@ -186,6 +205,69 @@ describe('UploadBitstreamComponent', () => {
});
});
+ describe('when item has no bundles yet', () => {
+ beforeEach(waitForAsync(() => {
+ createUploadBitstreamTestingModule({
+ bundle: bundle.id
+ });
+ jasmine.getEnv().allowRespy(true);
+ mockItemDataService.getBundles.and.returnValue(createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])));
+ loadFixtureAndComp();
+ }));
+
+ it('should display only the standard bundles in dropdown', () => {
+ expect(comp.bundles.length).toEqual(standardBundleSuggestions.length);
+ for (let i = 0; i < standardBundleSuggestions.length; i++) {
+ // noinspection JSDeprecatedSymbols
+ expect(comp.bundles[i].name).toEqual(standardBundleSuggestions[i]);
+ }
+ });
+ });
+
+ describe('when item has a custom bundle', () => {
+ beforeEach(waitForAsync(() => {
+ createUploadBitstreamTestingModule({
+ bundle: bundle.id
+ });
+ jasmine.getEnv().allowRespy(true);
+ mockItemDataService.getBundles.and.returnValue(createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [bundle])));
+ loadFixtureAndComp();
+ }));
+
+ it('should still display existing bitstream bundles if the bitstream has bundles', () => {
+ const expectedSuggestions = [bundle.name, ...standardBundleSuggestions];
+ expect(comp.bundles.length).toEqual(expectedSuggestions.length);
+ for (let i = 0; i < expectedSuggestions.length; i++) {
+ // noinspection JSDeprecatedSymbols
+ expect(comp.bundles[i].name).toEqual(expectedSuggestions[i]);
+ }
+ });
+ });
+
+ describe('when item has a standard bundle', () => {
+ let clonedBundle;
+ beforeEach(waitForAsync(() => {
+ clonedBundle = { ...bundle };
+ expect(standardBundleSuggestions.length).toBeGreaterThan(0);
+ clonedBundle.name = standardBundleSuggestions[0];
+ createUploadBitstreamTestingModule({
+ bundle: clonedBundle.id
+ });
+ jasmine.getEnv().allowRespy(true);
+ mockItemDataService.getBundles.and.returnValue(createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [clonedBundle])));
+ loadFixtureAndComp();
+ }));
+
+ it('should not show duplicate bundle names', () => {
+ const expectedSuggestions = [clonedBundle.name, ...standardBundleSuggestions.filter((standardBundleSuggestion: string) => standardBundleSuggestion !== clonedBundle.name)];
+ expect(comp.bundles.length).toEqual(expectedSuggestions.length);
+ for (let i = 0; i < expectedSuggestions.length; i++) {
+ // noinspection JSDeprecatedSymbols
+ expect(comp.bundles[i].name).toEqual(expectedSuggestions[i]);
+ }
+ });
+ });
+
/**
* Setup an UploadBitstreamComponent testing module with custom queryParams for the route
* @param queryParams
diff --git a/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts b/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts
index d825a40174..1e5295a347 100644
--- a/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts
+++ b/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts
@@ -141,11 +141,11 @@ export class UploadBitstreamComponent implements OnInit, OnDestroy {
}));
this.selectedBundleId = this.route.snapshot.queryParams.bundle;
if (isNotEmpty(this.selectedBundleId)) {
- this.bundleService.findById(this.selectedBundleId).pipe(
+ this.subs.push(this.bundleService.findById(this.selectedBundleId).pipe(
getFirstSucceededRemoteDataPayload()
).subscribe((bundle: Bundle) => {
this.selectedBundleName = bundle.name;
- });
+ }));
this.setUploadUrl();
}
this.subs.push(bundlesRD$.subscribe());
From 9bb8fc1d1cdc81b16383e04ea1548c2fd11a864b Mon Sep 17 00:00:00 2001
From: Giuseppe Digilio
Date: Wed, 27 Apr 2022 18:22:32 +0200
Subject: [PATCH 059/107] [CST-5662] Enabled search scope selector
---
.../dynamic-lookup-relation-search-tab.component.html | 1 +
src/app/shared/search-form/search-form.component.html | 2 +-
src/app/shared/search/search.component.ts | 2 +-
src/app/shared/search/themed-search.component.ts | 6 ++++--
4 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.html
index 5a4805b8fd..376900609e 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.html
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component.html
@@ -7,6 +7,7 @@
[searchFormPlaceholder]="'submission.sections.describe.relationship-lookup.search-tab.search-form.placeholder'"
[selectable]="true"
[selectionConfig]="{ repeatable: repeatable, listId: listId }"
+ [showScopeSelector]="false"
[showViewModes]="false"
(resultFound)="onResultFound($event)"
(deselectObject)="deselectObject.emit($event)"
diff --git a/src/app/shared/search-form/search-form.component.html b/src/app/shared/search-form/search-form.component.html
index 4c5c713400..354e30233a 100644
--- a/src/app/shared/search-form/search-form.component.html
+++ b/src/app/shared/search-form/search-form.component.html
@@ -1,7 +1,7 @@