Commit 4b061947 authored by Viacheslav Pavlov's avatar Viacheslav Pavlov
Browse files

several fixes after rebase, added missing translations

parent 5799f6bb
...@@ -5,12 +5,16 @@ ...@@ -5,12 +5,16 @@
"approve": "Approve and publish", "approve": "Approve and publish",
"back": "Back", "back": "Back",
"backTo": "Back to {{where, lowercase}}", "backTo": "Back to {{where, lowercase}}",
"backToList": "Back to list",
"cancel": "Cancel", "cancel": "Cancel",
"create": "Create",
"delete": "Delete", "delete": "Delete",
"deleteData": "Delete data", "deleteData": "Delete data",
"edit": "Edit", "edit": "Edit",
"logout": "Logout", "logout": "Logout",
"manage": "Manage",
"nextStep": "Next step", "nextStep": "Next step",
"read": "Read",
"reject": "Reject", "reject": "Reject",
"remove": "Remove", "remove": "Remove",
"reset": "Reset", "reset": "Reset",
...@@ -19,7 +23,8 @@ ...@@ -19,7 +23,8 @@
"saveChanges": "Save changes", "saveChanges": "Save changes",
"search": "Search", "search": "Search",
"sendToReview": "Send to review", "sendToReview": "Send to review",
"unpublish": "Unpublish" "unpublish": "Unpublish",
"write": "Write"
}, },
"csv": { "csv": {
"autoDetect": "Auto-detect ", "autoDetect": "Auto-detect ",
...@@ -49,20 +54,34 @@ ...@@ -49,20 +54,34 @@
"release": "Release to upload" "release": "Release to upload"
}, },
"label": { "label": {
"created": "Created",
"dateNotProvided": "Date not provided", "dateNotProvided": "Date not provided",
"description": "Description", "description": "Description",
"either": "Either", "either": "Either",
"itemEditorWarn": "Don't use the ItemsEditor for more than 100 items!", "itemEditorWarn": "Don't use the ItemsEditor for more than 100 items!",
"lastModified": "Last modified",
"lastUpdated": "Last updated", "lastUpdated": "Last updated",
"modified": "Modified",
"no": "No", "no": "No",
"prettyNumber": "{{value, number}}", "prettyNumber": "{{value, number}}",
"sortBy": "Sort By", "sortBy": "Sort By",
"stepsForDataPublication": "Steps for data publication completion", "stepsForDataPublication": "Steps for data publication completion",
"title": "Title", "title": "Title",
"UUID": "UUID",
"yes": "Yes" "yes": "Yes"
}, },
"paginate": { "paginate": {
"numberOfItems": "{{count, number}} {{what, lowercase}}", "numberOfItems": "{{count, number}} {{what, lowercase}}",
"estimatedNumberOfItems": "About {{count, number}} {{what, lowercase}}" "estimatedNumberOfItems": "About {{count, number}} {{what, lowercase}}"
},
"permissions": {
"label": "Permissions",
"managePermissions": "Manage permissions",
"class": "Class",
"objectID": "Object ID",
"owner": "Owner",
"inheritsPermissions": "inheritsPermissions",
"effectivePermissions": "Effective permissions",
"sid": "Sid"
} }
} }
...@@ -102,6 +102,20 @@ ...@@ -102,6 +102,20 @@
} }
} }
}, },
"admin": {
"menu": {
"userManagement": "User management",
"users": "Users",
"oAuthClients": "OAuth clients",
"requests": "Requests",
"fileRepository": "File repository",
"cluster": "Cluster",
"hazelcast": "Hazelcast",
"elasticsearch": "Elasticsearch",
"caches": "Caches",
"loggers": "Loggers"
}
},
"common": { "common": {
"Genesys PGR": "Genesys PGR", "Genesys PGR": "Genesys PGR",
"Not found": "Not found", "Not found": "Not found",
...@@ -393,7 +407,9 @@ ...@@ -393,7 +407,9 @@
"modelName": "Crop", "modelName": "Crop",
"modelName_plural": "Crops", "modelName_plural": "Crops",
"menu": "Crops", "menu": "Crops",
"accessionsInGenesys": "Accessions in genesys" "accessionsInGenesys": "Accessions in genesys",
"cropDetails": "{{cropName,string}} details",
"cropList": "List of crops"
} }
} }
,"institutes": { ,"institutes": {
...@@ -689,7 +705,8 @@ ...@@ -689,7 +705,8 @@
"MANAGER": "Data manager", "MANAGER": "Data manager",
"DIGITIZER": "Data digitizer", "DIGITIZER": "Data digitizer",
"COLLECTOR": "Data collector", "COLLECTOR": "Data collector",
"CURATOR": "Data curator" "CURATOR": "Data curator",
"null": "Not specified"
} }
} }
} }
......
...@@ -123,55 +123,55 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> { ...@@ -123,55 +123,55 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> {
} }
> >
<Properties> <Properties>
{ accession.doi && <PropertiesItem title="accessions.public.p.display.DOI"><DOI noPrefix value={ accession.doi } /></PropertiesItem> } { accession.doi && <PropertiesItem title={ t('accessions.public.p.display.DOI') }><DOI noPrefix value={ accession.doi } /></PropertiesItem> }
<PropertiesItem title="accessions.common.acceNumb" >{ accession.accessionNumber }</PropertiesItem> <PropertiesItem title={ t('accessions.common.acceNumb') } >{ accession.accessionNumber }</PropertiesItem>
<PropertiesItem title="accessions.public.p.display.holdingInstitute"> <PropertiesItem title={ t('accessions.public.p.display.holdingInstitute') }>
<InstituteLink to={ accession.institute }> <InstituteLink to={ accession.institute }>
{ accession.institute.fullName } { accession.institute.fullName }
</InstituteLink> </InstituteLink>
<span> &mdash; </span> <span> &mdash; </span>
<CountryLink noflag country={ accession.institute.country }/> <CountryLink noflag country={ accession.institute.country }/>
</PropertiesItem> </PropertiesItem>
<PropertiesItem title="accessions.common.instituteCode">{ accession.institute.code }</PropertiesItem> <PropertiesItem title={ t('accessions.common.instituteCode') }>{ accession.institute.code }</PropertiesItem>
<PropertiesItem title="accessions.public.p.display.acquisitionDate"><McpdDate value={ accession.acquisitionDate } /></PropertiesItem> <PropertiesItem title={ t('accessions.public.p.display.acquisitionDate') }><McpdDate value={ accession.acquisitionDate } /></PropertiesItem>
{ accession.countryOfOrigin && <PropertiesItem title="accessions.common.countryOfOrigin">{ <CountryLink country={ accession.countryOfOrigin }/> }</PropertiesItem> } { accession.countryOfOrigin && <PropertiesItem title={ t('accessions.common.countryOfOrigin') }>{ <CountryLink country={ accession.countryOfOrigin }/> }</PropertiesItem> }
{ accession.sampStat && <PropertiesItem title="accessions.common.sampStat">{ t(`accessions.common.sampleStatus.${accession.sampStat}`) }</PropertiesItem> } { accession.sampStat && <PropertiesItem title={ t('accessions.common.sampStat') }>{ t(`accessions.common.sampleStatus.${accession.sampStat}`) }</PropertiesItem> }
{ accession.storage && accession.storage.length > 0 && <PropertiesItem title="accessions.common.storageType"> { accession.storage && accession.storage.length > 0 && <PropertiesItem title={ t('accessions.common.storageType') }>
{ accession.storage.map((storage, i) => ( { accession.storage.map((storage, i) => (
<div key={ storage } style={ {width: '100%', paddingTop: '.25rem'} }>{ t(`accessions.common.storage.${storage}`) }</div> <div key={ storage } style={ {width: '100%', paddingTop: '.25rem'} }>{ t(`accessions.common.storage.${storage}`) }</div>
)) } )) }
</PropertiesItem> } </PropertiesItem> }
<PropertiesItem title="accessions.public.p.display.availability" keepEmpty>{ t(`accessions.common.available.${accession.available}`) }</PropertiesItem> <PropertiesItem title={ t('accessions.public.p.display.availability') } keepEmpty>{ t(`accessions.common.available.${accession.available}`) }</PropertiesItem>
<PropertiesItem title="accessions.public.p.display.ITPGRFAMLS" keepEmpty>{ t(`accessions.common.mlsStatus.${accession.mlsStatus}`) }</PropertiesItem> <PropertiesItem title={ t('accessions.public.p.display.ITPGRFAMLS') } keepEmpty>{ t(`accessions.common.mlsStatus.${accession.mlsStatus}`) }</PropertiesItem>
<PropertiesItem title="accessions.public.p.display.donorInstitute">{ accession.donorCode }</PropertiesItem> <PropertiesItem title={ t('accessions.public.p.display.donorInstitute') }>{ accession.donorCode }</PropertiesItem>
<PropertiesItem title="accessions.public.p.display.donorAccessionNumber">{ accession.donorNumb }</PropertiesItem> <PropertiesItem title={ t('accessions.public.p.display.donorAccessionNumber') }>{ accession.donorNumb }</PropertiesItem>
{ accession.duplSite && accession.duplSite.length > 0 && <PropertiesItem title="accessions.public.p.display.safetyDuplicationInstitute"> { accession.duplSite && accession.duplSite.length > 0 && <PropertiesItem title={ t('accessions.public.p.display.safetyDuplicationInstitute') }>
{ accession.duplSite.map((duplSite, i) => ( { accession.duplSite.map((duplSite, i) => (
<div key={ duplSite } style={ {width: '100%', paddingTop: '.25rem'} }>{ duplSite }</div> <div key={ duplSite } style={ {width: '100%', paddingTop: '.25rem'} }>{ duplSite }</div>
)) } )) }
</PropertiesItem> } </PropertiesItem> }
{ accession.acceUrl && <PropertiesItem title="accessions.public.p.display.accessionURL"><ExternalLink link={ accession.acceUrl } /></PropertiesItem> } { accession.acceUrl && <PropertiesItem title={ t('accessions.public.p.display.accessionURL') }><ExternalLink link={ accession.acceUrl } /></PropertiesItem> }
</Properties> </Properties>
</MainSection> </MainSection>
<PageSection title="accessions.common.taxonomy"> <PageSection title={ t('accessions.common.taxonomy') }>
<Properties> <Properties>
<PropertiesItem title="accessions.common.genus">{ accession.taxonomy.genus }</PropertiesItem> <PropertiesItem title={ t('accessions.common.genus') }>{ accession.taxonomy.genus }</PropertiesItem>
<PropertiesItem title="accessions.common.species"> <PropertiesItem title={ t('accessions.common.species') }>
{ accession.taxonomy.species } { accession.taxonomy.species }
{ '' } { '' }
<Link to={ '/a' }>View <i>{ `${accession.taxonomy.genus} ${accession.taxonomy.species}` }</i> at { accession.institute.code }</Link> <Link to={ '/a' }>View <i>{ `${accession.taxonomy.genus} ${accession.taxonomy.species}` }</i> at { accession.institute.code }</Link>
</PropertiesItem> </PropertiesItem>
<PropertiesItem title="accessions.public.p.display.scientificName"><SciName taxa={ accession.taxonomy.taxonNameHtml } /></PropertiesItem> <PropertiesItem title={ t('accessions.public.p.display.scientificName') }><SciName taxa={ accession.taxonomy.taxonNameHtml } /></PropertiesItem>
{ accession.crop && <PropertiesItem title="accessions.public.p.display.cropName"><CropChips crops={ accession.crop.shortName } /></PropertiesItem> } { accession.crop && <PropertiesItem title={ t('accessions.public.p.display.cropName') }><CropChips crops={ accession.crop.shortName } /></PropertiesItem> }
<PropertiesItem title="accessions.public.p.display.providedCropName">{ accession.cropName }</PropertiesItem> <PropertiesItem title={ t('accessions.public.p.display.providedCropName') }>{ accession.cropName }</PropertiesItem>
</Properties> </Properties>
</PageSection> </PageSection>
{ (accession.donorCode || (accession.aliases && accession.aliases.length > 0)) && { (accession.donorCode || (accession.aliases && accession.aliases.length > 0)) &&
<PageSection title="accessions.public.p.display.accessionNames"> <PageSection title={ t('accessions.public.p.display.accessionNames') }>
<Properties> <Properties>
{ accession.donorCode && <PropertiesItem title={ t('accessions.common.alias.DONORNUMB') }>{ accession.donorNumb } <em>{ accession.donorCode }</em></PropertiesItem> } { accession.donorCode && <PropertiesItem title={ t('accessions.common.alias.DONORNUMB') }>{ accession.donorNumb } <em>{ accession.donorCode }</em></PropertiesItem> }
{ accession.aliases && accession.aliases.map((alias) => ( { accession.aliases && accession.aliases.map((alias) => (
...@@ -182,9 +182,9 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> { ...@@ -182,9 +182,9 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> {
} }
{ accession.coll && { accession.coll &&
<PageSection title="accessions.public.p.display.collectingInformation"> <PageSection title={ t('accessions.public.p.display.collectingInformation') }>
<Properties> <Properties>
{ accession.countryOfOrigin && <PropertiesItem title="accessions.common.countryOfOrigin">{ <CountryLink country={ accession.countryOfOrigin }/> }</PropertiesItem> } { accession.countryOfOrigin && <PropertiesItem title={ t('accessions.common.countryOfOrigin') }>{ <CountryLink country={ accession.countryOfOrigin }/> }</PropertiesItem> }
{ accession.coll.collDate && <PropertiesItem key="collDate" title={ t(`accessions.common.coll.collDate`) }><McpdDate value={ accession.coll.collDate } /></PropertiesItem> } { accession.coll.collDate && <PropertiesItem key="collDate" title={ t(`accessions.common.coll.collDate`) }><McpdDate value={ accession.coll.collDate } /></PropertiesItem> }
{ accession.coll && { accession.coll &&
[ 'collMissId', 'collNumb', 'collSite', 'collSrc' ] [ 'collMissId', 'collNumb', 'collSite', 'collSrc' ]
...@@ -220,7 +220,7 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> { ...@@ -220,7 +220,7 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> {
</PageSection> </PageSection>
} }
{ accession.remarks && accession.remarks.length > 0 && <PageSection title="accessions.public.p.display.remarks"> { accession.remarks && accession.remarks.length > 0 && <PageSection title={ t('accessions.public.p.display.remarks') }>
<Properties> <Properties>
{ accession.remarks && accession.remarks.map((remark) => ( { accession.remarks && accession.remarks.map((remark) => (
<PropertiesItem key={ remark.id } title={ remark.fieldName }>{ remark.remark }</PropertiesItem> <PropertiesItem key={ remark.id } title={ remark.fieldName }>{ remark.remark }</PropertiesItem>
...@@ -228,14 +228,14 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> { ...@@ -228,14 +228,14 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> {
</Properties> </Properties>
</PageSection> } </PageSection> }
{ pdci && <PdciTable pdci={ pdci } title="accessions.public.p.display.pdci"/> } { pdci && <PdciTable pdci={ pdci } title={ t('accessions.public.p.display.pdci') }/> }
<PageSection title="accessions.public.p.display.metadata"> <PageSection title={ t('accessions.public.p.display.metadata') }>
<Properties> <Properties>
<PropertiesItem title="common:label.UUID">{ `urn:uuid:${accession.uuid}` }</PropertiesItem> <PropertiesItem title={ t('common:label.UUID') }>{ `urn:uuid:${accession.uuid}` }</PropertiesItem>
<PropertiesItem title="accessions.public.p.display.permanentURL"><ExternalLink link={ `https://purl.org/germplasm/id/${accession.uuid}` } /></PropertiesItem> <PropertiesItem title={ t('accessions.public.p.display.permanentURL') }><ExternalLink link={ `https://purl.org/germplasm/id/${accession.uuid}` } /></PropertiesItem>
<PropertiesItem title="common:label.lastUpdated"><PrettyDate value={ accession.lastModifiedDate } /></PropertiesItem> <PropertiesItem title={ t('common:label.lastUpdated') }><PrettyDate value={ accession.lastModifiedDate } /></PropertiesItem>
<PropertiesItem title="common:label.created"><PrettyDate value={ accession.createdDate } /></PropertiesItem> <PropertiesItem title={ t('common:label.created') }><PrettyDate value={ accession.createdDate } /></PropertiesItem>
</Properties> </Properties>
</PageSection> </PageSection>
...@@ -243,17 +243,17 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> { ...@@ -243,17 +243,17 @@ class BrowsePage extends React.Component<IBrowsePageProps, any> {
{ datasets && datasets.length > 0 && { datasets && datasets.length > 0 &&
<PropertiesCard <PropertiesCard
small small
title="accessions.public.p.display.associatedDatasets" title={ t('accessions.public.p.display.associatedDatasets') }
propertyItemProps={ { keepEmpty: true } } propertyItemProps={ { keepEmpty: true } }
propertiesList={ datasets.map((dataset) => ({ title: 'dataset.common.modelName', value: <DatasetLink to={ dataset } /> })) } propertiesList={ datasets.map((dataset) => ({ title: t('dataset.common.modelName'), value: <DatasetLink to={ dataset } /> })) }
/> />
} }
{ subsets && subsets.length > 0 && { subsets && subsets.length > 0 &&
<PropertiesCard <PropertiesCard
small small
title="accessions.public.p.display.associatedSubsets" title={ t('accessions.public.p.display.associatedSubsets') }
propertyItemProps={ { keepEmpty: true } } propertyItemProps={ { keepEmpty: true } }
propertiesList={ subsets.map((subset) => ({ title: 'subset.common.modelName', value: <SubsetLink to={ subset } /> })) } propertiesList={ subsets.map((subset) => ({ title: t('subset.common.modelName'), value: <SubsetLink to={ subset } /> })) }
/> />
} }
</GridLayout> </GridLayout>
......
...@@ -45,6 +45,8 @@ ...@@ -45,6 +45,8 @@
"modelName": "Crop", "modelName": "Crop",
"modelName_plural": "Crops", "modelName_plural": "Crops",
"menu": "Crops", "menu": "Crops",
"accessionsInGenesys": "Accessions in genesys" "accessionsInGenesys": "Accessions in genesys",
"cropDetails": "{{cropName,string}} details",
"cropList": "List of crops"
} }
} }
\ No newline at end of file
...@@ -39,7 +39,7 @@ const CropForm = ({error, handleSubmit, initialValues, onDelete, cropNames, t}) ...@@ -39,7 +39,7 @@ const CropForm = ({error, handleSubmit, initialValues, onDelete, cropNames, t})
<Field required name="name" label={ t('crop.admin.c.cropForm.cropTitle') } component={ TextField } validate={ [Validators.required] }/> <Field required name="name" label={ t('crop.admin.c.cropForm.cropTitle') } component={ TextField } validate={ [Validators.required] }/>
<div className="pb-20 pt-20"> <div className="pb-20 pt-20">
<h4>Other names </h4> <h4>{ t('crop.admin.c.cropForm.otherNames') }</h4>
<ItemsEditor name="otherNames" itemLabel={ t('crop.admin.c.cropForm.otherNames') } addItem={ onAddString } removeItem={ onRemoveString } component={ stringField }/> <ItemsEditor name="otherNames" itemLabel={ t('crop.admin.c.cropForm.otherNames') } addItem={ onAddString } removeItem={ onRemoveString } component={ stringField }/>
</div> </div>
<div>{ error && <strong>{ error }</strong> }</div> <div>{ error && <strong>{ error }</strong> }</div>
...@@ -48,7 +48,9 @@ const CropForm = ({error, handleSubmit, initialValues, onDelete, cropNames, t}) ...@@ -48,7 +48,9 @@ const CropForm = ({error, handleSubmit, initialValues, onDelete, cropNames, t})
<div className="pt-20"> <div className="pt-20">
<Button variant="raised" type="submit">{ t('common:action.saveChanges') }</Button> <Button variant="raised" type="submit">{ t('common:action.saveChanges') }</Button>
{ (initialValues._permissions && initialValues._permissions.delete) && <Button onClick={ onDelete } type="button">{ t('common:action.delete') }</Button> } { (initialValues._permissions && initialValues._permissions.delete) && <Button onClick={ onDelete } type="button">{ t('common:action.delete') }</Button> }
<Link to={ `/c/${initialValues.shortName}` }><Button type="button">{ t('common:action.backTo', {where: `${initialValues.name} details`}) }</Button></Link> <Link to={ `/c/${initialValues.shortName ? initialValues.shortName : ''}` }>
<Button type="button">{ t('common:action.backTo', {where: `${initialValues.name ? t('crop.common.cropDetails', {cropName: initialValues.name}) : t('crop.common.cropList')}`}) }</Button>
</Link>
</div> </div>
</form> </form>
); );
......
...@@ -63,51 +63,51 @@ class DisplayPage extends React.Component<IDisplayPageProps, any> { ...@@ -63,51 +63,51 @@ class DisplayPage extends React.Component<IDisplayPageProps, any> {
/> />
{ request.body && { request.body &&
<PageContents> <PageContents>
<MainSection title="requests.admin.p.display.requestInformation"> <MainSection title={ t('requests.admin.p.display.requestInformation') }>
<Properties> <Properties>
<PropertiesItem title="user.common.email">{ request.email }</PropertiesItem> <PropertiesItem title={ t('user.common.email') }>{ request.email }</PropertiesItem>
<PropertiesItem title="requests.common.stateLabel">{ t(`requests.common.state.${request.state}`) }</PropertiesItem> <PropertiesItem title={ t('requests.common.stateLabel') }>{ t(`requests.common.state.${request.state}`) }</PropertiesItem>
<PropertiesItem title="common:label.created"><PrettyDate value={ request.createdDate }/></PropertiesItem> <PropertiesItem title={ t('common:label.created') }><PrettyDate value={ request.createdDate }/></PropertiesItem>
{ request.body.pid && <PropertiesItem title="requests.common.typeLabel">{ t(`requests.common.type.${request.body.pid.type}`) }</PropertiesItem> } { request.body.pid && <PropertiesItem title={ t('requests.common.typeLabel') }>{ t(`requests.common.type.${request.body.pid.type}`) }</PropertiesItem> }
{ request.body.requestInfo && <PropertiesItem title="requests.common.purposeTypeLabel">{ t(`requests.common.purposeType.${request.body.requestInfo.purposeType}`) }</PropertiesItem> } { request.body.requestInfo && <PropertiesItem title={ t('requests.common.purposeTypeLabel') }>{ t(`requests.common.purposeType.${request.body.requestInfo.purposeType}`) }</PropertiesItem> }
{ request.body.requestInfo && <PropertiesItem title={ t(`requests.common.preacceptSMTA`) }>{ request.body.requestInfo.preacceptSMTA ? 'Yes' : 'No' }</PropertiesItem> } { request.body.requestInfo && <PropertiesItem title={ t(`requests.common.preacceptSMTA`) }>{ request.body.requestInfo.preacceptSMTA ? 'Yes' : 'No' }</PropertiesItem> }
{ request.body.requestInfo && <PropertiesItem title="requests.admin.p.display.notes">{ request.body.requestInfo.notes }</PropertiesItem> } { request.body.requestInfo && <PropertiesItem title={ t('requests.admin.p.display.notes') }>{ request.body.requestInfo.notes }</PropertiesItem> }
<PropertiesItem title="requests.admin.p.display.requestedAccessionIds">{ request.body.accessionIds.reduce((id, acc) => `${acc}, ${id}`) }</PropertiesItem> <PropertiesItem title={ t('requests.admin.p.display.requestedAccessionIds') }>{ request.body.accessionIds.reduce((id, acc) => `${acc}, ${id}`) }</PropertiesItem>
</Properties> </Properties>
</MainSection> </MainSection>
{ request.body.pid && request.body.pid.type === 'in' && { request.body.pid && request.body.pid.type === 'in' &&
<PageSection title="requests.admin.p.display.recipientPIDInformation"> <PageSection title={ t('requests.admin.p.display.recipientPIDInformation') }>
<Properties> <Properties>
<PropertiesItem title="user.common.name">{ request.body.pid.name }</PropertiesItem> <PropertiesItem title={ t('user.common.name') }>{ request.body.pid.name }</PropertiesItem>
<PropertiesItem title="user.common.surname">{ request.body.pid.surname }</PropertiesItem> <PropertiesItem title={ t('user.common.surname') }>{ request.body.pid.surname }</PropertiesItem>
<PropertiesItem title="geo.common.address"><Markdown source={ request.body.pid.address.replace(/\n/g, '\n\n') } /></PropertiesItem> <PropertiesItem title={ t('geo.common.address') }><Markdown source={ request.body.pid.address.replace(/\n/g, '\n\n') } /></PropertiesItem>
<PropertiesItem title="geo.common.country">{ request.body.pid.country }</PropertiesItem> <PropertiesItem title={ t('geo.common.country') }>{ request.body.pid.country }</PropertiesItem>
<PropertiesItem title="user.common.phone">{ request.body.pid.telephone }</PropertiesItem> <PropertiesItem title={ t('user.common.phone') }>{ request.body.pid.telephone }</PropertiesItem>
<PropertiesItem title="user.common.email">{ request.body.pid.email }</PropertiesItem> <PropertiesItem title={ t('user.common.email') }>{ request.body.pid.email }</PropertiesItem>
</Properties> </Properties>
</PageSection> </PageSection>
} }
{ request.body.pid && request.body.pid.type === 'or' && { request.body.pid && request.body.pid.type === 'or' &&
<PageSection title="requests.admin.p.display.recipientPIDInformation"> <PageSection title={ t('requests.admin.p.display.recipientPIDInformation') }>
<Properties> <Properties>
<PropertiesItem title="user.common.name">{ request.body.pid.orgName }</PropertiesItem> <PropertiesItem title={ t('user.common.name') }>{ request.body.pid.orgName }</PropertiesItem>
<PropertiesItem title="geo.common.address"><Markdown source={ request.body.pid.orgAddress.replace(/\n/g, '\n\n') } /></PropertiesItem> <PropertiesItem title={ t('geo.common.address') }><Markdown source={ request.body.pid.orgAddress.replace(/\n/g, '\n\n') } /></PropertiesItem>
<PropertiesItem title="geo.common.country">{ request.body.pid.orgCountry }</PropertiesItem> <PropertiesItem title={ t('geo.common.country') }>{ request.body.pid.orgCountry }</PropertiesItem>
</Properties> </Properties>
</PageSection> </PageSection>
} }
{ request.body.pid && request.body.pid.shipAddrFlag !== 's' && { request.body.pid && request.body.pid.shipAddrFlag !== 's' &&
<PageSection title="requests.admin.p.display.shippingAddress"> <PageSection title={ t('requests.admin.p.display.shippingAddress') }>
<Properties> <Properties>
<PropertiesItem title="geo.common.address"><Markdown source={ request.body.pid.shipAddress.replace(/\n/g, '\n\n') } /></PropertiesItem> <PropertiesItem title={ t('geo.common.address') }><Markdown source={ request.body.pid.shipAddress.replace(/\n/g, '\n\n') } /></PropertiesItem>
<PropertiesItem title="geo.common.country">{ request.body.pid.shipCountry }</PropertiesItem> <PropertiesItem title={ t('geo.common.country') }>{ request.body.pid.shipCountry }</PropertiesItem>
<PropertiesItem title="user.common.phone">{ request.body.pid.shipTelephone }</PropertiesItem> <PropertiesItem title={ t('user.common.phone') }>{ request.body.pid.shipTelephone }</PropertiesItem>
</Properties> </Properties>
</PageSection> </PageSection>
} }
{ request.subrequests && request.subrequests.length > 0 && { request.subrequests && request.subrequests.length > 0 &&
<PageSection title="requests.admin.p.display.dispatchedTo"> <PageSection title={ t('requests.admin.p.display.dispatchedTo') }>
<Properties> <Properties>
{ request.subrequests.map((sub) => ( { request.subrequests.map((sub) => (
<PropertiesItem key={ sub.uuid } title={ sub.instCode }> <PropertiesItem key={ sub.uuid } title={ sub.instCode }>
......
...@@ -106,7 +106,8 @@ ...@@ -106,7 +106,8 @@
"MANAGER": "Data manager", "MANAGER": "Data manager",
"DIGITIZER": "Data digitizer", "DIGITIZER": "Data digitizer",
"COLLECTOR": "Data collector", "COLLECTOR": "Data collector",
"CURATOR": "Data curator" "CURATOR": "Data curator",
"null": "Not specified"
} }
} }
} }
......
...@@ -53,7 +53,7 @@ class DetailInfo extends React.Component<IDetailInfoProps, any> { ...@@ -53,7 +53,7 @@ class DetailInfo extends React.Component<IDetailInfoProps, any> {
title={ t('subsets.public.c.subsetDisplay.subsetCreators') } title={ t('subsets.public.c.subsetDisplay.subsetCreators') }
propertiesList={ propertiesList={
subset.creators.map((creator) => ({ subset.creators.map((creator) => ({
title: t(`subsets.creator.role.${creator.role}`), title: t(`subsets.common.creators.role.${creator.role}`),
value: (<span><b>{ creator.fullName }</b>{ creator.institutionalAffiliation && <span> { creator.institutionalAffiliation }</span> }</span>), value: (<span><b>{ creator.fullName }</b>{ creator.institutionalAffiliation && <span> { creator.institutionalAffiliation }</span> }</span>),
})) }))
} }
......
...@@ -61,7 +61,7 @@ const renderRadioGroup = translate()(({input, meta, t, classes}) => { ...@@ -61,7 +61,7 @@ const renderRadioGroup = translate()(({input, meta, t, classes}) => {
className={ classes.RadioGrid } className={ classes.RadioGrid }
> >
{ Object.keys(CreatorRole).map((role) => ( { Object.keys(CreatorRole).map((role) => (
<FormControlLabel value={ role } label={ t(`subsets.creators.role.${role}`) } control={ <Radio/> } /> <FormControlLabel value={ role } label={ t(`subsets.common.creators.role.${role}`) } control={ <Radio/> } />
)) } )) }
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
......
...@@ -101,6 +101,20 @@ ...@@ -101,6 +101,20 @@
} }
} }
}, },
"admin": {
"menu": {
"userManagement": "User management",
"users": "Users",
"oAuthClients": "OAuth clients",
"requests": "Requests",
"fileRe