diff --git a/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.html b/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.html index c63e6b1158c2103148efba7d6f73ce77b3e247c4..3d5bc463988e0fb0a635781151cb2b1b70e4ac7a 100644 --- a/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.html +++ b/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.html @@ -284,6 +284,31 @@ </ul> </solidify-panel-expandable> +<solidify-panel-expandable *ngIf="(listCitations | isNonEmptyArray) || (listBibliographies | isNonEmptyArray)" + [isOpen]="false" + [titleToTranslate]="labelTranslateEnum.citationsAndBibliographies | translate" + class="panel-citations-bibliographies" +> + <div *ngIf="(listCitations | isNonEmptyArray)" + class="citations-section" + > + <h2 class="title">{{labelTranslateEnum.citations | translate}}</h2> + <solidify-citations [listCitations]="listCitations" + class="citations" + ></solidify-citations> + </div> + + <div *ngIf="listBibliographies | isNonEmptyArray" + class="bibliographies-section" + [class.with-separator]="(listCitations | isNonEmptyArray)" + > + <h2 class="title">{{labelTranslateEnum.bibliographies | translate}}</h2> + <solidify-citations [listCitations]="listBibliographies" + class="citations" + ></solidify-citations> + </div> +</solidify-panel-expandable> + <solidify-panel-expandable *ngIf="relativeArchive | isNonEmptyArray" [isOpen]="true" [titleToTranslate]="labelTranslateEnum.similarArchive | translate" diff --git a/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.scss b/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.scss index 5de47af17e0bee434b6cd730656be474a7693790..22206b9066b3f982dfcffaee235db4347551ad9c 100644 --- a/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.scss +++ b/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.scss @@ -177,6 +177,36 @@ $padding-bottom-desktop: 20px; display: flex; } } + + .panel-citations-bibliographies { + } + } + + .panel-citations-bibliographies { + ::ng-deep { + .content { + display: grid; + grid-template-columns: 1fr 1fr; + grid-gap: 20px; + + @include respond-to-smaller-than-breakpoint('md') { + grid-template-columns: 1fr; + } + + .title { + font-size: 18px; + } + + .bibliographies-section { + &.with-separator { + @include respond-to-smaller-than-breakpoint('md') { + border-top: 1px solid $intermediate-grey; + padding-top: 20px; + } + } + } + } + } } .pre { @@ -260,5 +290,15 @@ $padding-bottom-desktop: 20px; border-color: $dark-mode-line; background-color: #0d1117; } + + .panel-citations-bibliographies { + ::ng-deep { + .content { + .bibliographies-section { + border-color: $dark-mode-line; + } + } + } + } } diff --git a/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.ts b/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.ts index d27b94d7f8c7596743fff8e6a9bbbfa10db1bc86..9b90a53439d06e78bfd45c078b3bbb6295ca0db4 100644 --- a/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.ts +++ b/src/app/features/home/components/presentationals/home-archive-form/home-archive-detail.presentational.ts @@ -62,6 +62,7 @@ import { Observable, } from "rxjs"; import { + Citation, ClipboardUtil, DateUtil, EnumUtil, @@ -124,6 +125,12 @@ export class HomeArchiveDetailPresentational extends SharedAbstractPresentationa @Input() relativeArchive: Archive[]; + @Input() + listCitations: Citation[]; + + @Input() + listBibliographies: Citation[]; + @Input() isLoadingPrepareDownload: boolean; diff --git a/src/app/features/home/components/routables/home-archive-detail/home-archive-detail.routable.html b/src/app/features/home/components/routables/home-archive-detail/home-archive-detail.routable.html index fb10cf8f80e600d819cafaabd476c5d026462a94..51d08e7021fbe0bf642977140bcf1260f0d5f411 100644 --- a/src/app/features/home/components/routables/home-archive-detail/home-archive-detail.routable.html +++ b/src/app/features/home/components/routables/home-archive-detail/home-archive-detail.routable.html @@ -24,23 +24,25 @@ <div [solidifySpinner]="(isLoadingObs | async)" class="wrapper" > - <dlcm-home-archive-detail (addToCartChange)="addToCart($event)" - (askAccessChange)="askAccess($event)" - (downloadChange)="download($event)" - (getShortDoi)="getShortDoi($event)" - (navigateChange)="navigate($event)" - (navigateToOrcid)="navigateToOrcid($event)" - (rateChange)="updateRate($event)" - (showArchiveChange)="showArchive($event)" - *ngIf="(currentObs | async) | isNotNullNorUndefined" + <dlcm-home-archive-detail *ngIf="(currentObs | async) | isNotNullNorUndefined" [archivePackages]="packageObs | async" [archiveStatistics]="archiveStatisticDtoObs | async" [archive]="currentObs | async" + [listCitations]="citationsObs | async" + [listBibliographies]="bibliographiesObs | async" [isLoadingPrepareDownload]="isLoadingPrepareDownloadObs | async" [isLoggedIn]="isLoggedInObs | async" [listArchiveUserRating]="listArchiveRatingObs | async" [relativeArchive]="listArchiveFromOrgUnitObs | async" [isLoadingArchiveRating]="isLoadingArchiveRatingObs | async" + (addToCartChange)="addToCart($event)" + (askAccessChange)="askAccess($event)" + (downloadChange)="download($event)" + (getShortDoi)="getShortDoi($event)" + (navigateChange)="navigate($event)" + (navigateToOrcid)="navigateToOrcid($event)" + (rateChange)="updateRate($event)" + (showArchiveChange)="showArchive($event)" ></dlcm-home-archive-detail> </div> </solidify-empty-container> diff --git a/src/app/features/home/components/routables/home-archive-detail/home-archive-detail.routable.ts b/src/app/features/home/components/routables/home-archive-detail/home-archive-detail.routable.ts index e099c72cc584a78e50cba6371eca01615232ea18..db5af560e8db89dec51316a9f68c21fa4c7e8a6e 100644 --- a/src/app/features/home/components/routables/home-archive-detail/home-archive-detail.routable.ts +++ b/src/app/features/home/components/routables/home-archive-detail/home-archive-detail.routable.ts @@ -73,6 +73,7 @@ import { tap, } from "rxjs/operators"; import { + Citation, isNotNullNorUndefined, isNotNullNorUndefinedNorWhiteString, MappingObject, @@ -92,6 +93,8 @@ export class HomeArchiveDetailRoutable extends SharedAbstractPresentational impl isLoadingPrepareDownloadObs: Observable<boolean>; isLoadingObs: Observable<boolean> = MemoizedUtil.isLoading(this._store, HomeState); currentObs: Observable<Archive> = MemoizedUtil.select(this._store, HomeState, state => state.current); + citationsObs: Observable<Citation[]> = MemoizedUtil.select(this._store, HomeState, state => state.citations); + bibliographiesObs: Observable<Citation[]> = MemoizedUtil.select(this._store, HomeState, state => state.bibliographies); archiveStatisticDtoObs: Observable<ArchiveStatisticsDto> = MemoizedUtil.select(this._store, HomeState, state => state.archiveStatisticDto); isLoggedInObs: Observable<boolean> = MemoizedUtil.select(this._store, AppState, state => state.isLoggedIn); isLoadingPackageObs: Observable<boolean> = MemoizedUtil.isLoading(this._store, HomeArchivePackageState); @@ -174,6 +177,8 @@ export class HomeArchiveDetailRoutable extends SharedAbstractPresentational impl private _getById(id: string): void { const archive = MemoizedUtil.selectSnapshot(this._store, HomeState, state => state.current); this._store.dispatch(new HomeAction.GetStatistics(id)); + this._store.dispatch(new HomeAction.GetBibliographies(id)); + this._store.dispatch(new HomeAction.GetCitations(id)); if (this._archiveAccessRightService.isDownloadAuthorized(archive)) { this._store.dispatch(new HomeArchivePackageAction.GetById(this._resId)); } diff --git a/src/app/features/home/stores/home.action.ts b/src/app/features/home/stores/home.action.ts index a290d7f8275df2c98e7e8f8566ce93a045be77b3..9afdbe77a5dc29502b770b8fe72ea83080d040d0 100644 --- a/src/app/features/home/stores/home.action.ts +++ b/src/app/features/home/stores/home.action.ts @@ -30,6 +30,7 @@ import { BaseSubAction, BaseSubActionFail, BaseSubActionSuccess, + Citation, CollectionTyped, MappingObject, QueryParameters, @@ -149,6 +150,46 @@ export namespace HomeAction { static readonly type: string = `[${state}] Get Statistics Fail`; } + export class GetBibliographies extends BaseAction { + static readonly type: string = `[${state}] Get Bibliographies`; + + constructor(public archiveId: string) { + super(); + } + } + + export class GetBibliographiesSuccess extends BaseSubActionSuccess<GetBibliographies> { + static readonly type: string = `[${state}] Get Bibliographies Success`; + + constructor(public parentAction: GetBibliographies, public bibliographies: Citation[]) { + super(parentAction); + } + } + + export class GetBibliographiesFail extends BaseSubActionFail<GetBibliographies> { + static readonly type: string = `[${state}] Get Bibliographies Fail`; + } + + export class GetCitations extends BaseAction { + static readonly type: string = `[${state}] Get Citations`; + + constructor(public archiveId: string) { + super(); + } + } + + export class GetCitationsSuccess extends BaseSubActionSuccess<GetCitations> { + static readonly type: string = `[${state}] Get Citations Success`; + + constructor(public parentAction: GetCitations, public citations: Citation[]) { + super(parentAction); + } + } + + export class GetCitationsFail extends BaseSubActionFail<GetCitations> { + static readonly type: string = `[${state}] Get Citations Fail`; + } + export class GoToOrcid extends BaseAction { static readonly type: string = `[${state}] Go To Orcid`; diff --git a/src/app/features/home/stores/home.state.ts b/src/app/features/home/stores/home.state.ts index 88f2566df64cfa912b3477771a7f361a12bba008..325b3a326cd08b63b1f99553c2bd79366470e003 100644 --- a/src/app/features/home/stores/home.state.ts +++ b/src/app/features/home/stores/home.state.ts @@ -63,6 +63,7 @@ import { import { ApiService, BasicState, + Citation, CollectionTyped, defaultResourceStateInitValue, Facet, @@ -91,6 +92,8 @@ export interface HomeStateModel extends ResourceStateModel<Archive> { listRelativeArchive: Archive[]; facetsSelected: MappingObject<string[]>; archiveStatisticDto: ArchiveStatisticsDto; + bibliographies: Citation[]; + citations: Citation[]; } @Injectable() @@ -105,6 +108,8 @@ export interface HomeStateModel extends ResourceStateModel<Archive> { facets: undefined, facetsSelected: {}, archiveStatisticDto: undefined, + bibliographies: [], + citations: [], }, children: [ HomeArchiveDataFileState, @@ -374,6 +379,74 @@ export class HomeState extends BasicState<HomeStateModel> { }); } + @Action(HomeAction.GetBibliographies) + getBibliographies(ctx: StateContext<HomeStateModel>, action: HomeAction.GetBibliographies): Observable<Citation[]> { + ctx.patchState({ + isLoadingCounter: ctx.getState().isLoadingCounter + 1, + archiveStatisticDto: undefined, + }); + + return this._apiService.getByIdInPath<Citation[]>(`${this._urlResource}/${action.archiveId}/${ApiActionNameEnum.BIBLIOGRAPHIES}`) + .pipe( + tap((model: Citation[]) => { + ctx.dispatch(new HomeAction.GetBibliographiesSuccess(action, model)); + }), + catchError((error: SolidifyHttpErrorResponseModel) => { + ctx.dispatch(new HomeAction.GetBibliographiesFail(action)); + throw new SolidifyStateError(this, error); + }), + ); + } + + @Action(HomeAction.GetBibliographiesSuccess) + getBibliographiesSuccess(ctx: StateContext<HomeStateModel>, action: HomeAction.GetBibliographiesSuccess): void { + ctx.patchState({ + isLoadingCounter: ctx.getState().isLoadingCounter - 1, + bibliographies: action.bibliographies, + }); + } + + @Action(HomeAction.GetBibliographiesFail) + getBibliographiesFail(ctx: StateContext<HomeStateModel>, action: HomeAction.GetBibliographiesFail): void { + ctx.patchState({ + isLoadingCounter: ctx.getState().isLoadingCounter - 1, + }); + } + + @Action(HomeAction.GetCitations) + getCitations(ctx: StateContext<HomeStateModel>, action: HomeAction.GetCitations): Observable<Citation[]> { + ctx.patchState({ + isLoadingCounter: ctx.getState().isLoadingCounter + 1, + archiveStatisticDto: undefined, + }); + + return this._apiService.getByIdInPath<Citation[]>(`${this._urlResource}/${action.archiveId}/${ApiActionNameEnum.CITATIONS}`) + .pipe( + tap((model: Citation[]) => { + ctx.dispatch(new HomeAction.GetCitationsSuccess(action, model)); + }), + catchError((error: SolidifyHttpErrorResponseModel) => { + ctx.dispatch(new HomeAction.GetCitationsFail(action)); + throw new SolidifyStateError(this, error); + }), + ); + } + + @Action(HomeAction.GetCitationsSuccess) + getCitationsSuccess(ctx: StateContext<HomeStateModel>, action: HomeAction.GetCitationsSuccess): void { + ctx.patchState({ + isLoadingCounter: ctx.getState().isLoadingCounter - 1, + citations: action.citations, + }); + } + + @Action(HomeAction.GetCitationsFail) + getCitationsFail(ctx: StateContext<HomeStateModel>, action: HomeAction.GetCitationsFail): void { + ctx.patchState({ + isLoadingCounter: ctx.getState().isLoadingCounter - 1, + }); + } + @Action(HomeAction.GoToOrcid) goToOrcid(ctx: StateContext<AppStateModel>, action: HomeAction.GoToOrcid): void { window.open(environment.orcidUrl + urlSeparator + action.orcid, "_blank"); diff --git a/src/app/label-translate-solidify.ts b/src/app/label-translate-solidify.ts index 9229d8bedac9b8c708e3cb8296fbe7e042f516b9..2259765abd332734160efae264bb395e87435dab 100644 --- a/src/app/label-translate-solidify.ts +++ b/src/app/label-translate-solidify.ts @@ -109,6 +109,7 @@ export const labelTranslateSolidify: LabelTranslateInterface = { notificationHttpOfflineToTranslate: LabelTranslateEnum.notificationHttpOffline, notificationHttpUnauthorizedToTranslate: LabelTranslateEnum.notificationHttpUnauthorized, notificationIdCopyToClipboard: LabelTranslateEnum.notificationIdCopyToClipboard, + notificationCopiedToClipboard: LabelTranslateEnum.notificationCopiedToClipboard, objectNotFound: LabelTranslateEnum.objectNotFound, refresh: LabelTranslateEnum.refresh, search: LabelTranslateEnum.search, @@ -175,4 +176,8 @@ export const labelTranslateSolidify: LabelTranslateInterface = { notificationUnableToCopyCookieNameToClipboard: MARK_AS_TRANSLATABLE("cookieConsentSidebar.notification.unableToCopyCookieNameToClipboard"), notificationFeatureDisabledBecauseCookieDeclined: MARK_AS_TRANSLATABLE("cookieConsentSidebar.notification.featureDisabledBecauseCookieDeclined"), notificationCookieXEnabled: MARK_AS_TRANSLATABLE("cookieConsentSidebar.notification.notificationCookieXEnabled"), + citationStyles: LabelTranslateEnum.citationStyles, + citationCopyToClipboard: LabelTranslateEnum.copyToClipboard, + noCitationsAreAvailable: LabelTranslateEnum.noCitationsAreAvailable, + themeSelector: MARK_AS_TRANSLATABLE("app.themeSelector"), }; diff --git a/src/app/shared/enums/api-action-name.enum.ts b/src/app/shared/enums/api-action-name.enum.ts index 5ef868c3772943e4fb7083a411f9e2268af1137d..c882ff1300d365ba227395a65281ce8ee6eea445 100644 --- a/src/app/shared/enums/api-action-name.enum.ts +++ b/src/app/shared/enums/api-action-name.enum.ts @@ -145,6 +145,8 @@ export enum ApiActionNameExtendEnum { RATING = "ratings", RATING_BY_USER = "list-for-user", BY_RATING = "by-rating", + BIBLIOGRAPHIES = "bibliographies", + CITATIONS = "citations", GET_MY_ACLS = "get-my-acls", LIST_REFERENCE_TYPES = "list-reference-types", } diff --git a/src/app/shared/enums/label-translate.enum.ts b/src/app/shared/enums/label-translate.enum.ts index 12a51ba8c5499749483f9e56f4a47b1b827a58c0..40f55ec5639699379793cde6a93e8ad653f85d0e 100644 --- a/src/app/shared/enums/label-translate.enum.ts +++ b/src/app/shared/enums/label-translate.enum.ts @@ -387,6 +387,11 @@ export class LabelTranslateEnum { static tilesView: string = MARK_AS_TRANSLATABLE("general.label.tilesView"); static metadataDatacite: string = MARK_AS_TRANSLATABLE("general.label.metadataDatacite"); static similarArchive: string = MARK_AS_TRANSLATABLE("general.label.similarArchive"); + static citationsAndBibliographies: string = MARK_AS_TRANSLATABLE("general.label.citationsAndBibliographies"); + static citations: string = MARK_AS_TRANSLATABLE("general.label.citations"); + static citation: string = MARK_AS_TRANSLATABLE("general.label.citation"); + static bibliographies: string = MARK_AS_TRANSLATABLE("general.label.bibliographies"); + static bibliographie: string = MARK_AS_TRANSLATABLE("general.label.bibliographie"); static uploadLogo: string = MARK_AS_TRANSLATABLE("general.label.uploadLogo"); static youAreInEditMode: string = MARK_AS_TRANSLATABLE("general.label.inEditMode"); static additionalInformation: string = MARK_AS_TRANSLATABLE("general.label.additionalInformation"); @@ -464,6 +469,8 @@ export class LabelTranslateEnum { static masterType: string = MARK_AS_TRANSLATABLE("general.label.masterType"); static isMasterType: string = MARK_AS_TRANSLATABLE("general.label.isMasterType"); static showOnlyMastersTypes: string = MARK_AS_TRANSLATABLE("general.label.showOnlyMastersTypes"); + static noCitationsAreAvailable: string = MARK_AS_TRANSLATABLE("general.label.noCitationsAreAvailable"); + static citationStyles: string = MARK_AS_TRANSLATABLE("general.label.citationStyles"); static archivesSelected: string = MARK_AS_TRANSLATABLE("general.label.archivesSelected"); static noSelection: string = MARK_AS_TRANSLATABLE("general.label.noSelection"); @@ -500,7 +507,7 @@ export class LabelTranslateEnum { static notificationHttpOffline: string = MARK_AS_TRANSLATABLE("general.notification.httpOffline"); static notificationHttpUnauthorized: string = MARK_AS_TRANSLATABLE("general.notification.httpUnauthorized"); static notificationIdCopyToClipboard: string = MARK_AS_TRANSLATABLE("general.notification.idCopyToClipboard"); - static notificationCopyToClipboard: string = MARK_AS_TRANSLATABLE("general.notification.copyToClipboard"); + static notificationCopiedToClipboard: string = MARK_AS_TRANSLATABLE("general.notification.copiedToClipboard"); static notificationUploadInProgress: string = MARK_AS_TRANSLATABLE("general.notification.upload.inProgress"); static notificationUploadCancelled: string = MARK_AS_TRANSLATABLE("general.notification.upload.cancelled"); static notificationUploadSuccess: string = MARK_AS_TRANSLATABLE("general.notification.upload.success"); diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 2c3ce55cbc9af0ae01e0d78012005e1b61858f21..e53e20947b1fedf535617e813158e99520b201c2 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -543,6 +543,7 @@ "newVersionAvailable": "Eine neue Version der Anwendung ist verfügbar", "offline": "Sie sind derzeit offline" }, + "themeSelector": "app.themeSelector", "updateVersion": { "body": "Möchten Sie die Anwendung auf die neueste Version aktualisieren? Die aktuelle Seite wird aktualisiert.", "button": { @@ -1250,6 +1251,8 @@ "associatedOrganizationalUnit": "Zugehörige Organisationseinheit", "associatedPeople": "Assoziierte Personen", "avatar": "Avatar", + "bibliographie": "general.label.bibliographie", + "bibliographies": "general.label.bibliographies", "browsing": "Browsing", "calculating": "general.label.calculating", "cannotPreviewWhileMovingTheFile": "Vorschau während des Verschiebens der Datei nicht möglich", @@ -1260,6 +1263,10 @@ "checksumComputing": "Prüfsummenberechnung", "checksums": "Prüfsummen", "checksumsComputedByThePortal": "general.label.checksumsComputedByThePortal", + "citation": "general.label.citation", + "citationStyles": "general.label.citationStyles", + "citations": "general.label.citations", + "citationsAndBibliographies": "general.label.citationsAndBibliographies", "clearFilters": "Filter löschen", "clickHereToAddAContributor": "Klicken Sie hier, um einen Beitragenden hinzuzufügen", "clickHereToAddAPolicy": "Klicken Sie hier, um eine Richtlinie hinzuzufügen", @@ -1420,6 +1427,7 @@ "myOrders": "Öffentlichkeit Downloads", "name": "Name", "newSubDirectory": "Neues Unterverzeichnis", + "noCitationsAreAvailable": "general.label.noCitationsAreAvailable", "noFiltering": "Keine Filterung", "noSelection": "general.label.noSelection", "notification": "Benachrichtigung", @@ -1579,7 +1587,7 @@ "placeholder": "Klicken Sie hier, um einen Wert hinzuzufügen" }, "notification": { - "copyToClipboard": "In die Zwischenablage kopiert", + "copiedToClipboard": "general.notification.copiedToClipboard", "evaluationTakenIntoAccount": "Auswertung berücksichtigt", "fileDownloadFail": "Fehler beim Herunterladen", "fileDownloadForbidden": "Es ist nicht erlaubt, diese Datei herunterzuladen", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 5aaf09d61755af84f3df4f770dd534988bbd18f0..9991cd8d45266250b861b9d42db3548f8553ecad 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -543,6 +543,7 @@ "newVersionAvailable": "A new version of the application is available", "offline": "Your are currently offline" }, + "themeSelector": "Theme selector", "updateVersion": { "body": "Do you want to update the application to the latest version. The current page will be refreshed.", "button": { @@ -1250,6 +1251,8 @@ "associatedOrganizationalUnit": "Associated organizational unit", "associatedPeople": "Associated people", "avatar": "Avatar", + "bibliographie": "Bibliography", + "bibliographies": "Bibliographies", "browsing": "Browsing", "calculating": "Calculating", "cannotPreviewWhileMovingTheFile": "Cannot preview while moving the file", @@ -1260,6 +1263,10 @@ "checksumComputing": "Checksum computing", "checksums": "Checksums", "checksumsComputedByThePortal": "Checksums computed by the portal", + "citation": "citation", + "citationStyles": "Citation styles", + "citations": "Citations", + "citationsAndBibliographies": "Citations and Bibliographies", "clearFilters": "Clear filters", "clickHereToAddAContributor": "Click here to add a contributor", "clickHereToAddAPolicy": "Click here to add a policy", @@ -1420,6 +1427,7 @@ "myOrders": "Public download orders", "name": "Name", "newSubDirectory": "New sub directory", + "noCitationsAreAvailable": "No citations are available", "noFiltering": "No filtering", "noSelection": "No selection", "notification": "Notification", @@ -1579,7 +1587,7 @@ "placeholder": "Click here to add a value" }, "notification": { - "copyToClipboard": "Copied to clipboard", + "copiedToClipboard": "Copied to clipboard", "evaluationTakenIntoAccount": "Evaluation taken into account", "fileDownloadFail": "Error while downloading", "fileDownloadForbidden": "You do not have the right to download this file", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index caa5f13880f68e0213b558b7b48fed5290885e90..0c2ab913217bf98c7c1c8d04b5ed9f52c5772624 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -543,6 +543,7 @@ "newVersionAvailable": "Une nouvelle version de l'application est disponible", "offline": "Vous êtes actuellement hors ligne" }, + "themeSelector": "Sélecteur de thème", "updateVersion": { "body": "Voulez-vous mettre à jour l'application à la dernière version. La page courante sera rafraîchie.", "button": { @@ -1114,7 +1115,7 @@ "close": "Fermer", "completionStatus": "État d'avancement", "confirm": "Confirmer", - "copyIdToClipboard": "Copier l'identifiant dans le presse-papiers", + "copyIdToClipboard": "Copier l'identifiant dans le presse-papier", "create": "Créer", "createDeposit": "Créer un nouveau dépôt", "darkMode": "Mode sombre", @@ -1250,6 +1251,8 @@ "associatedOrganizationalUnit": "Unité organisationnelle associée", "associatedPeople": "Personnes associées", "avatar": "Avatar", + "bibliographie": "Bibliographie", + "bibliographies": "Bibliographies", "browsing": "En naviguant sur", "calculating": "Calcul", "cannotPreviewWhileMovingTheFile": "Prévisualisation impossible pendant le déplacement du fichier", @@ -1260,6 +1263,10 @@ "checksumComputing": "Calcul des checksums", "checksums": "Checksums", "checksumsComputedByThePortal": "Checksums calculés par le portail", + "citation": "Citation", + "citationStyles": "Styles de citation", + "citations": "Citations", + "citationsAndBibliographies": "Citations et Bibliographies", "clearFilters": "Effacer les filtres", "clickHereToAddAContributor": "Cliquez ici pour ajouter un-e contributeur-trice", "clickHereToAddAPolicy": "Cliquez ici pour ajouter une politique", @@ -1279,7 +1286,7 @@ "container": "Conteneur", "contributor": "Contributeur-trice", "contributors": "Contributeurs-trices", - "copyToClipboard": "Copie dans le presse-papiers", + "copyToClipboard": "Copier dans le presse-papier", "createNewPerson": "Créer une nouvelle personne", "created": "Créé", "createdBy": "Créé par", @@ -1420,6 +1427,7 @@ "myOrders": "Téléchargements publiques", "name": "Nom", "newSubDirectory": "Nouveau sous-répertoire", + "noCitationsAreAvailable": "Aucunes citations ne sont disponibles", "noFiltering": "Pas de filtrage", "noSelection": "Aucune sélection", "notification": "Notification", @@ -1575,11 +1583,11 @@ "multiSelect": { "defaultValue": "Valeur par défaut", "noDataToSelect": "Il n'y a pas de données à séléctionner", - "notificationExtraInfoCopyToClipboard": "Valeur copié dans le presse-papiers", + "notificationExtraInfoCopyToClipboard": "Valeur copié dans le presse-papier", "placeholder": "Cliquer ici pour ajouter une valeur" }, "notification": { - "copyToClipboard": "Copié dans le presse-papiers", + "copiedToClipboard": "Copié dans le presse-papier", "evaluationTakenIntoAccount": "Évaluation prise en compte", "fileDownloadFail": "Erreur lors du téléchargement", "fileDownloadForbidden": "Vous n'avez pas le droit de télécharger ce fichier", @@ -1591,7 +1599,7 @@ "httpNotFound": "La ressource demandée est introuvable", "httpOffline": "Vous êtes actuellement hors ligne", "httpUnauthorized": "La ressource demandée est non autorisée", - "idCopyToClipboard": "Identifiant copié dans le presse-papiers", + "idCopyToClipboard": "Identifiant copié dans le presse-papier", "objectCreated": "Objet créé", "objectDeleted": "Objet supprimé", "objectUpdated": "Objet mis à jour",