geonetwork-ui 2.10.0-dev.cf0577fae → 2.10.0-dev.d26e9afe1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/fesm2022/geonetwork-ui.mjs +1035 -6108
  2. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  3. package/index.d.ts +147 -154
  4. package/index.d.ts.map +1 -1
  5. package/material-styles.css +483 -0
  6. package/package.json +25 -35
  7. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +48 -7
  8. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +5 -4
  9. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +2 -2
  10. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
  11. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -4
  12. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +2 -2
  13. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +49 -35
  14. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +1 -1
  15. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +1 -1
  16. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +48 -2
  17. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -5
  18. package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +2 -1
  19. package/src/libs/common/domain/src/lib/model/user/group.model.ts +8 -0
  20. package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
  21. package/src/libs/common/domain/src/lib/platform.service.interface.ts +2 -0
  22. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +51 -0
  23. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +5 -2
  24. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +4 -1
  25. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +26 -19
  26. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +5 -1
  27. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.ts +0 -2
  28. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +5 -5
  29. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -1
  30. package/src/libs/feature/editor/src/lib/components/record-form/form-field/field-focus.directive.ts +4 -1
  31. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +6 -7
  32. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +1 -1
  33. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +12 -5
  34. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +4 -4
  35. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +7 -0
  36. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-topics/form-field-topics.component.ts +2 -2
  37. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +6 -2
  38. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +3 -1
  39. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.css +0 -34
  40. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +20 -16
  41. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +9 -0
  42. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.css +35 -0
  43. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +18 -5
  44. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +76 -19
  45. package/src/libs/feature/editor/src/lib/expressions.ts +380 -8
  46. package/src/libs/feature/editor/src/lib/fields.config.ts +310 -336
  47. package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +2 -3
  48. package/src/libs/feature/editor/src/lib/services/editor.service.ts +8 -12
  49. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +33 -0
  50. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +9 -1
  51. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +10 -5
  52. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +2 -2
  53. package/src/libs/ui/dataviz/src/index.ts +0 -1
  54. package/src/libs/ui/elements/src/lib/contact-details/contact-details.component.html +48 -56
  55. package/src/libs/ui/elements/src/lib/contact-pill/contact-pill.component.html +7 -3
  56. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +13 -0
  57. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +13 -3
  58. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +43 -6
  59. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
  60. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +18 -8
  61. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +29 -1
  62. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +4 -5
  63. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +4 -0
  64. package/src/libs/ui/inputs/src/lib/button/button.component.ts +4 -0
  65. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +2 -2
  66. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  67. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +3 -3
  68. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +5 -5
  69. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +9 -1
  70. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +1 -1
  71. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +3 -8
  72. package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.html +7 -7
  73. package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.ts +14 -1
  74. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts +4 -54
  75. package/src/libs/ui/map/src/lib/map-utils.ts +48 -0
  76. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.ts +1 -1
  77. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +12 -8
  78. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +3 -1
  79. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +1 -0
  80. package/src/libs/ui/widgets/src/lib/popover/popover.component.ts +7 -1
  81. package/src/libs/util/app-config/src/lib/app-config.ts +21 -9
  82. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +1 -2
  83. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +6 -3
  84. package/src/libs/util/i18n/src/index.ts +0 -1
  85. package/src/libs/util/i18n/src/lib/i18n.constants.ts +17 -11
  86. package/src/libs/util/i18n/src/lib/i18n.interceptor.ts +2 -2
  87. package/src/libs/util/i18n/src/lib/i18n.providers.ts +14 -17
  88. package/src/libs/util/i18n/src/lib/test.translate.loader.ts +48 -0
  89. package/src/libs/util/shared/src/lib/links/link-utils.ts +1 -1
  90. package/src/libs/util/shared/src/lib/services/date.service.ts +3 -3
  91. package/src/libs/util/shared/src/lib/utils/geojson.ts +58 -1
  92. package/style.css +0 -1
  93. package/tailwind.base.css +8 -0
  94. package/translations/de.json +50 -47
  95. package/translations/en.json +55 -52
  96. package/translations/es.json +24 -21
  97. package/translations/fr.json +50 -47
  98. package/translations/it.json +50 -47
  99. package/translations/nl.json +23 -20
  100. package/translations/pt.json +24 -21
  101. package/translations/sk.json +24 -21
@@ -1,7 +1,8 @@
1
1
  import {
2
- APP_INITIALIZER,
3
2
  EnvironmentProviders,
3
+ inject,
4
4
  makeEnvironmentProviders,
5
+ provideAppInitializer,
5
6
  Provider,
6
7
  } from '@angular/core'
7
8
  import {
@@ -22,17 +23,16 @@ import {
22
23
  } from '@angular/common/http'
23
24
  import { I18nInterceptor } from './i18n.interceptor'
24
25
 
25
- function i18nInitializerFromLocalStorageFactory(translate: TranslateService) {
26
- return () => {
27
- translate.setDefaultLang(DEFAULT_LANG)
28
- let storageLang = null
29
- try {
30
- storageLang = localStorage.getItem(LANGUAGE_STORAGE_KEY)
31
- } catch (error) {
32
- console.warn(error)
33
- }
34
- translate.use(storageLang || translate.getBrowserLang() || DEFAULT_LANG)
26
+ function i18nInitializerFromLocalStorageFactory() {
27
+ const translate = inject(TranslateService)
28
+ translate.setFallbackLang(DEFAULT_LANG)
29
+ let storageLang = null
30
+ try {
31
+ storageLang = localStorage.getItem(LANGUAGE_STORAGE_KEY)
32
+ } catch (error) {
33
+ console.warn(error)
35
34
  }
35
+ translate.use(storageLang || translate.getBrowserLang() || DEFAULT_LANG)
36
36
  }
37
37
 
38
38
  export function provideI18n(
@@ -56,12 +56,9 @@ export function provideI18n(
56
56
  provideTranslateService(usedConfig),
57
57
  ]
58
58
  if (useLocalStorage) {
59
- providers.push({
60
- provide: APP_INITIALIZER,
61
- useFactory: i18nInitializerFromLocalStorageFactory,
62
- deps: [TranslateService],
63
- multi: true,
64
- })
59
+ providers.push(
60
+ provideAppInitializer(i18nInitializerFromLocalStorageFactory)
61
+ )
65
62
  }
66
63
 
67
64
  return makeEnvironmentProviders(providers)
@@ -0,0 +1,48 @@
1
+ import { inject, Injectable, InjectionToken } from '@angular/core'
2
+ import {
3
+ provideTranslateService,
4
+ TranslateCompiler,
5
+ TranslateLoader,
6
+ TranslationObject,
7
+ } from '@ngx-translate/core'
8
+ import { Observable, of } from 'rxjs'
9
+ import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler'
10
+
11
+ /**
12
+ * This translate loader is used for testing purposes, it allows to provide translations directly in the test file without having to create JSON files
13
+ * Taken from https://github.com/mwootendev/ngx-translate-plugins/issues/87
14
+ */
15
+
16
+ const TestTranslations = new InjectionToken<Record<string, TranslationObject>>(
17
+ 'test-translations'
18
+ )
19
+
20
+ @Injectable()
21
+ class TestTranslateLoader implements TranslateLoader {
22
+ translations = inject(TestTranslations)
23
+ getTranslation(lang: string): Observable<TranslationObject> {
24
+ return of(this.translations[lang] as TranslationObject)
25
+ }
26
+ }
27
+
28
+ export function provideTranslateTestingService(
29
+ translations: Record<string, TranslationObject>
30
+ ) {
31
+ return provideTranslateService({
32
+ loader: [
33
+ {
34
+ provide: TestTranslations,
35
+ useValue: translations,
36
+ },
37
+ {
38
+ provide: TranslateLoader,
39
+ useClass: TestTranslateLoader,
40
+ },
41
+ ],
42
+ fallbackLang: 'en',
43
+ compiler: {
44
+ provide: TranslateCompiler,
45
+ useClass: TranslateMessageFormatCompiler,
46
+ },
47
+ })
48
+ }
@@ -266,7 +266,7 @@ export function checkFileFormat(
266
266
  new RegExp(`[./]${format}`, 'i').test(link.name.toLowerCase())) ||
267
267
  ('url' in link &&
268
268
  new RegExp(`[./]${format}`, 'i').test(link.url.toString())) ||
269
- ('name' in link && link.name.toLowerCase().includes(format))
269
+ ('name' in link && new RegExp(`\\b${format}\\b`, 'i').test(link.name))
270
270
  )
271
271
  }
272
272
 
@@ -1,4 +1,4 @@
1
- import { Injectable, inject } from '@angular/core'
1
+ import { inject, Injectable } from '@angular/core'
2
2
  import { TranslateService } from '@ngx-translate/core'
3
3
  import { type Locale } from 'date-fns/locale'
4
4
  import { formatDistance } from 'date-fns/formatDistance'
@@ -30,13 +30,13 @@ export class DateService {
30
30
  locale: string
31
31
  dateObj: Date
32
32
  } {
33
- const locale = this.translateService.currentLang || DEFAULT_LANGUAGE
33
+ const locale = this.translateService.getCurrentLang() || DEFAULT_LANGUAGE
34
34
  const dateObj = this.getDateObject(date)
35
35
  return { locale, dateObj }
36
36
  }
37
37
 
38
38
  private async getDateLocale(): Promise<Locale> {
39
- const lang = this.translateService.currentLang || DEFAULT_LANGUAGE
39
+ const lang = this.translateService.getCurrentLang() || DEFAULT_LANGUAGE
40
40
  const locales = await this.dateLocales
41
41
  return locales[lang]
42
42
  }
@@ -1,4 +1,11 @@
1
- import type { Feature, FeatureCollection, Geometry, Position } from 'geojson'
1
+ import type {
2
+ Feature,
3
+ FeatureCollection,
4
+ Geometry,
5
+ Polygon,
6
+ Position,
7
+ } from 'geojson'
8
+ import type { DatasetSpatialExtent } from '../../../../../../libs/common/domain/src/lib/model/record'
2
9
 
3
10
  /**
4
11
  * @returns The geometry if available, otherwise null.
@@ -94,3 +101,53 @@ export function getGeometryBoundingBox(geometry: Geometry): BoundingBox {
94
101
  return coordinatesReducer(emptyExtent, geometry.coordinates)
95
102
  }
96
103
  }
104
+
105
+ /**
106
+ * Builds the closed GeoJSON Polygon matching the given bounding box.
107
+ */
108
+ export function bboxToPolygon(bbox: BoundingBox): Polygon {
109
+ const [minX, minY, maxX, maxY] = bbox
110
+ return {
111
+ type: 'Polygon',
112
+ coordinates: [
113
+ [
114
+ [minX, minY],
115
+ [minX, maxY],
116
+ [maxX, maxY],
117
+ [maxX, minY],
118
+ [minX, minY],
119
+ ],
120
+ ],
121
+ }
122
+ }
123
+
124
+ /**
125
+ * Returns the geometry carried by a spatial extent, falling back to the polygon
126
+ * derived from its bounding box. Returns null when the extent has neither.
127
+ */
128
+ export function spatialExtentToGeometry(
129
+ extent: DatasetSpatialExtent
130
+ ): Geometry | null {
131
+ if (extent.geometry) return extent.geometry
132
+ if (extent.bbox) return bboxToPolygon(extent.bbox)
133
+ return null
134
+ }
135
+
136
+ /**
137
+ * Converts a list of dataset spatial extents into a GeoJSON FeatureCollection,
138
+ * e.g. to be used as the data source of a map layer.
139
+ */
140
+ export function spatialExtentsToFeatureCollection(
141
+ extents: DatasetSpatialExtent[]
142
+ ): FeatureCollection {
143
+ return {
144
+ type: 'FeatureCollection',
145
+ features: extents.reduce<Feature[]>((features, extent) => {
146
+ const geometry = spatialExtentToGeometry(extent)
147
+ if (geometry) {
148
+ features.push({ type: 'Feature', properties: {}, geometry })
149
+ }
150
+ return features
151
+ }, []),
152
+ }
153
+ }
package/style.css CHANGED
@@ -1,4 +1,3 @@
1
1
  @import 'tippy.js/dist/tippy.css';
2
2
  @import 'ol/ol.css';
3
- @import '@angular/material/prebuilt-themes/indigo-pink.css';
4
3
  @import './tailwind.base.css';
package/tailwind.base.css CHANGED
@@ -1,3 +1,5 @@
1
+ @import './material-styles.css';
2
+
1
3
  @tailwind base;
2
4
  @tailwind components;
3
5
  @tailwind utilities;
@@ -119,6 +121,12 @@
119
121
  border-gray-100 focus:ring-4 focus:ring-gray-50;
120
122
  }
121
123
 
124
+ .gn-ui-btn-gray-light {
125
+ @apply gn-ui-btn text-black
126
+ bg-gray-50 hover:bg-gray-100 focus:bg-gray-100 active:bg-gray-200
127
+ border-gray-50 focus:ring-4 focus:ring-gray-100;
128
+ }
129
+
122
130
  .gn-ui-btn-black {
123
131
  @apply gn-ui-btn text-white
124
132
  bg-black hover:bg-gray-950 focus:bg-gray-950 active:bg-gray-900
@@ -89,6 +89,10 @@
89
89
  "domain.contact.role.stakeholder": "Beteiligter",
90
90
  "domain.contact.role.unspecified": "Nicht angegeben",
91
91
  "domain.contact.role.user": "Benutzer",
92
+ "domain.record.keywordType.other": "Stichworte",
93
+ "domain.record.keywordType.place": "Ort",
94
+ "domain.record.keywordType.temporal": "Zeitlich",
95
+ "domain.record.keywordType.theme": "Thema",
92
96
  "domain.record.status.completed": "Abgeschlossen",
93
97
  "domain.record.status.deprecated": "Veraltet",
94
98
  "domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
@@ -118,15 +122,15 @@
118
122
  "downloads.format.unknown": "unbekannt",
119
123
  "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
120
124
  "dropFile": "Datei ablegen",
121
- "editor.new.record.title": "Mein Datensatz",
125
+ "editor.new.record.title": "Mein {recordKind, select, dataset{Datensatz} service{Dienst} reuse{Wiederverwendung} other{Datensatz}}",
122
126
  "editor.record.delete.confirmation.cancelText": "Stornieren",
123
127
  "editor.record.delete.confirmation.confirmText": "Löschen",
124
- "editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
125
- "editor.record.delete.confirmation.title": "Datensatz löschen",
126
- "editor.record.deleteError.body": "Der Datensatz konnte nicht gelöscht werden:",
128
+ "editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie {recordKind, select, dataset{diesen Datensatz} service{diesen Dienst} reuse{diese Wiederverwendung} other{diesen Datensatz}} löschen möchten?",
129
+ "editor.record.delete.confirmation.title": "{recordKind, select, dataset{Datensatz} service{Dienst} reuse{Wiederverwendung} other{Datensatz}} löschen?",
130
+ "editor.record.deleteError.body": "{recordKind, select, dataset{Der Datensatz} service{Der Dienst} reuse{Die Wiederverwendung} other{Der Datensatz}} konnte nicht gelöscht werden:",
127
131
  "editor.record.deleteError.closeMessage": "Verstanden",
128
- "editor.record.deleteError.title": "Fehler beim Löschen des Datensatzes",
129
- "editor.record.deleteSuccess.body": "Der Datensatz wurde erfolgreich gelöscht.",
132
+ "editor.record.deleteError.title": "Fehler beim Löschen {recordKind, select, dataset{des Datensatzes} service{des Dienstes} reuse{der Wiederverwendung} other{des Datensatzes}}",
133
+ "editor.record.deleteSuccess.body": "{recordKind, select, dataset{Der Datensatz} service{Der Dienst} reuse{Die Wiederverwendung} other{Der Datensatz}} wurde erfolgreich gelöscht.",
130
134
  "editor.record.deleteSuccess.title": "Erfolgreich gelöscht",
131
135
  "editor.record.error.back": "Zurück zum Katalog",
132
136
  "editor.record.error.explanation": "Möglicherweise haben Sie keinen Zugriff auf diese Datei,<br>oder dieser Link ist ungültig.",
@@ -147,7 +151,7 @@
147
151
  "editor.record.form.constraint.not.known": "Die Bedingungen sind unbekannt.",
148
152
  "editor.record.form.constraint.otherConstraints": "Sonstige Einschränkungen",
149
153
  "editor.record.form.constraint.securityConstraints": "Sicherheitsauflagen",
150
- "editor.record.form.draft.updateAlert": "Seit der Erstellung dieses Entwurfs wurde dieser Datensatz am { date } von { user } geändert. Durch das Veröffentlichen Ihrer Version können dessen Änderungen gelöscht werden. Um dies zu vermeiden, können Sie Ihre Änderungen rückgängig machen oder Ihre Version in voller Kenntnis der Sachlage veröffentlichen.",
154
+ "editor.record.form.draft.updateAlert": "Seit der Erstellung dieses Entwurfs wurde {recordKind, select, dataset{dieser Datensatz} service{dieser Dienst} reuse{diese Wiederverwendung} other{dieser Datensatz}} am { date } von { user } geändert. Durch das Veröffentlichen Ihrer Version können dessen Änderungen gelöscht werden. Um dies zu vermeiden, können Sie Ihre Änderungen rückgängig machen oder Ihre Version in voller Kenntnis der Sachlage veröffentlichen.",
151
155
  "editor.record.form.field.abstract": "Kurzbeschreibung",
152
156
  "editor.record.form.field.constraintsShortcuts": "",
153
157
  "editor.record.form.field.contactDetails.email": "",
@@ -221,49 +225,49 @@
221
225
  "editor.record.form.multilingual.title": "Übersetzungen",
222
226
  "editor.record.form.multilingual.validate": "Bestätigen",
223
227
  "editor.record.form.page.accessAndContact": "Informationen zur Nutzung",
224
- "editor.record.form.page.description": "Beschreibung des Datensatzes",
228
+ "editor.record.form.page.description": "Beschreibung {recordKind, select, dataset{des Datensatzes} service{des Dienstes} reuse{der Wiederverwendung} other{des Datensatzes}}",
225
229
  "editor.record.form.page.resources": "Ressourcen",
226
- "editor.record.form.section.about.description": "Diese Informationen beziehen sich auf den Datensatz.",
227
- "editor.record.form.section.about.label": "Über den Datensatz",
228
- "editor.record.form.section.annexes.description": "Anhänge sind optionale Ressourcen. Sie sind dem Datensatz beigefügt und helfen, die Daten besser zu verstehen (Anleitung usw.).",
230
+ "editor.record.form.section.about.description": "Diese Informationen beziehen sich auf {recordKind, select, dataset{den Datensatz} service{den Dienst} reuse{die Wiederverwendung} other{den Datensatz}}.",
231
+ "editor.record.form.section.about.label": "Über {recordKind, select, dataset{den Datensatz} service{den Dienst} reuse{die Wiederverwendung} other{den Datensatz}}",
232
+ "editor.record.form.section.annexes.description": "Anhänge sind optionale Ressourcen. Sie sind {recordKind, select, dataset{dem Datensatz} service{dem Dienst} reuse{der Wiederverwendung} other{dem Datensatz}} beigefügt und helfen, die Daten besser zu verstehen (Anleitung usw.).",
229
233
  "editor.record.form.section.annexes.label": "Anhänge",
230
234
  "editor.record.form.section.associatedResources.description": "Angeben, wo sich die Ressource befindet.",
231
235
  "editor.record.form.section.associatedResources.label": "Verwandte Ressourcen",
232
- "editor.record.form.section.classification.description": "Geeignete Stichwörter helfen beim Auffinden des Datensatzes.",
236
+ "editor.record.form.section.classification.description": "Geeignete Stichwörter helfen beim Auffinden {recordKind, select, dataset{des Datensatzes} service{des Dienstes} reuse{der Wiederverwendung} other{des Datensatzes}}.",
233
237
  "editor.record.form.section.classification.label": "Stichwörter",
234
238
  "editor.record.form.section.dataManagers.description": "Diese Information betrifft die Daten.",
235
239
  "editor.record.form.section.dataManagers.label": "Verantwortliche für die Daten",
236
240
  "editor.record.form.section.geographicalCoverage.label": "Geografische Ausdehnung",
237
241
  "editor.record.form.section.metadataPointOfContact.description": "Diese Information betrifft die Metadaten.",
238
242
  "editor.record.form.section.metadataPointOfContact.label": "Kontaktstelle für Metadaten",
239
- "editor.record.form.section.topics.description": "Themen erleichtern die Zusammenfassung von Datensätzen.",
243
+ "editor.record.form.section.topics.description": "Themen erleichtern die Zusammenfassung von {recordKind, select, dataset{Datensätzen} service{Diensten} reuse{Wiederverwendungen} other{Datensätzen}}.",
240
244
  "editor.record.form.section.topics.label": "Themen",
241
245
  "editor.record.form.section.useAndAccessConditions.label": "Zugangs- und Nutzungsbedingungen",
242
246
  "editor.record.form.temporalExtents.addDate": "Zeitpunkt",
243
247
  "editor.record.form.temporalExtents.addRange": "Zeitraum",
244
248
  "editor.record.form.temporalExtents.date": "Datum",
245
249
  "editor.record.form.temporalExtents.range": "Datumsbereich",
246
- "editor.record.form.topics.inspire.biota": "Biologie",
247
- "editor.record.form.topics.inspire.boundaries": "Grenzen",
248
- "editor.record.form.topics.inspire.climatology": "Klimatologie/Meteorologie/Atmosphäre",
249
- "editor.record.form.topics.inspire.economy": "Wirtschaft",
250
- "editor.record.form.topics.inspire.elevation": "Höhenangaben",
251
- "editor.record.form.topics.inspire.environnement": "Umwelt",
252
- "editor.record.form.topics.inspire.farming": "Landwirtschaft",
253
- "editor.record.form.topics.inspire.geoscientific": "Geowissenschaften",
254
- "editor.record.form.topics.inspire.health": "Gesundheitswesen",
255
- "editor.record.form.topics.inspire.imagery": "Bilddaten/Basiskarten/Landbedeckung",
256
- "editor.record.form.topics.inspire.intelligence": "Aufklärung/Militär",
257
- "editor.record.form.topics.inspire.location": "Ortsangaben",
258
- "editor.record.form.topics.inspire.oceans": "Meere",
259
- "editor.record.form.topics.inspire.planning": "Planungsunterlagen/Kataster",
260
- "editor.record.form.topics.inspire.society": "Gesellschaft",
261
- "editor.record.form.topics.inspire.structure": "Bauwerke",
262
- "editor.record.form.topics.inspire.transportation": "Verkehrswesen",
263
- "editor.record.form.topics.inspire.utilities": "Ver- und Entsorgung/Nachrichtenwesen",
264
- "editor.record.form.topics.inspire.waters": "Binnengewässer",
250
+ "editor.record.form.topics.iso.biota": "Biologie",
251
+ "editor.record.form.topics.iso.boundaries": "Grenzen",
252
+ "editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "Klimatologie/Meteorologie/Atmosphäre",
253
+ "editor.record.form.topics.iso.economy": "Wirtschaft",
254
+ "editor.record.form.topics.iso.elevation": "Höhenangaben",
255
+ "editor.record.form.topics.iso.environment": "Umwelt",
256
+ "editor.record.form.topics.iso.farming": "Landwirtschaft",
257
+ "editor.record.form.topics.iso.geoscientificInformation": "Geowissenschaften",
258
+ "editor.record.form.topics.iso.health": "Gesundheitswesen",
259
+ "editor.record.form.topics.iso.imageryBaseMapsEarthCover": "Bilddaten/Basiskarten/Landbedeckung",
260
+ "editor.record.form.topics.iso.inlandWaters": "Binnengewässer",
261
+ "editor.record.form.topics.iso.intelligenceMilitary": "Aufklärung/Militär",
262
+ "editor.record.form.topics.iso.location": "Ortsangaben",
263
+ "editor.record.form.topics.iso.oceans": "Meere",
264
+ "editor.record.form.topics.iso.planningCadastre": "Planungsunterlagen/Kataster",
265
+ "editor.record.form.topics.iso.society": "Gesellschaft",
266
+ "editor.record.form.topics.iso.structure": "Bauwerke",
267
+ "editor.record.form.topics.iso.transportation": "Verkehrswesen",
268
+ "editor.record.form.topics.iso.utilitiesCommunication": "Ver- und Entsorgung/Nachrichtenwesen",
265
269
  "editor.record.form.topics.placeholder": "Ein oder mehrere Themen auswählen",
266
- "editor.record.form.updateFrequency.planned": "Dieses Dataset wird regelmäßig aktualisiert.",
270
+ "editor.record.form.updateFrequency.planned": "{recordKind, select, dataset{Dieser Datensatz} service{Dieser Dienst} reuse{Diese Wiederverwendung} other{Dieser Datensatz}} wird regelmäßig aktualisiert.",
267
271
  "editor.record.importFromExternalFile.failure.body": "Beim Importieren des Datensatzes ist ein Fehler aufgetreten:",
268
272
  "editor.record.importFromExternalFile.failure.title": "Fehler",
269
273
  "editor.record.importFromExternalFile.success.body": "Der Import des Datensatzes wurde erfolgreich durchgeführt.",
@@ -271,9 +275,8 @@
271
275
  "editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
272
276
  "editor.record.loadError.closeMessage": "Verstanden",
273
277
  "editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
274
- "editor.record.lock.harvested": "Die gesammelten Datensätze sind nicht bearbeitbar.",
278
+ "editor.record.lock.harvested": "Die gesammelten {recordKind, select, dataset{Datensätze} service{Dienste} reuse{Wiederverwendungen} other{Datensätze}} sind nicht bearbeitbar.",
275
279
  "editor.record.lock.owner": "Sie sind kein Herausgeber einer der zugelassenen Gruppen.",
276
- "editor.record.lock.resourceType": "Datenblätter, die nicht vom Typ „Datensatz“ sind, können nicht bearbeitet werden.",
277
280
  "editor.record.multilingual.confirmation.cancelText": "Die Sprache(n) beibehalten",
278
281
  "editor.record.multilingual.confirmation.confirmText": "Sprache(n) löschen",
279
282
  "editor.record.multilingual.confirmation.message": "Sie werden eine oder mehrere Sprachen löschen, wodurch alle damit verbundenen Übersetzungen gelöscht werden. Möchten Sie fortfahren?",
@@ -283,31 +286,31 @@
283
286
  "editor.record.onlineResourceError.closeMessage": "Verstanden",
284
287
  "editor.record.onlineResourceError.title": "Fehler beim Hinzufügen einer Ressource",
285
288
  "editor.record.placeKeywordWithoutLabel": "Standort ohne Namen",
286
- "editor.record.publish": "Diesen Datensatz veröffentlichen",
289
+ "editor.record.publish": "{recordKind, select, dataset{Diesen Datensatz} service{Diesen Dienst} reuse{Diese Wiederverwendung} other{Diesen Datensatz}} veröffentlichen",
287
290
  "editor.record.publish.confirmation.cancelText": "Abbrechen",
288
291
  "editor.record.publish.confirmation.confirmText": "Veröffentlichen",
289
- "editor.record.publish.confirmation.message": "Seit der Erstellung Ihres Entwurfs wurde dieser Datensatz am { date } von { user } geändert. Durch das Veröffentlichen Ihrer Version könnten dessen Änderungen gelöscht werden. Möchten Sie fortfahren?",
290
- "editor.record.publishError.body": "Der Datensatz konnte nicht veröffentlicht werden:",
292
+ "editor.record.publish.confirmation.message": "Seit der Erstellung Ihres Entwurfs wurde {recordKind, select, dataset{dieser Datensatz} service{dieser Dienst} reuse{diese Wiederverwendung} other{dieser Datensatz}} am { date } von { user } geändert. Durch das Veröffentlichen Ihrer Version könnten dessen Änderungen gelöscht werden. Möchten Sie fortfahren?",
293
+ "editor.record.publishError.body": "{recordKind, select, dataset{Der Datensatz} service{Der Dienst} reuse{Die Wiederverwendung} other{Der Datensatz}} konnte nicht veröffentlicht werden:",
291
294
  "editor.record.publishError.closeMessage": "Verstanden",
292
- "editor.record.publishError.title": "Fehler beim Veröffentlichen des Datensatzes",
293
- "editor.record.publishSuccess.body": "Der Datensatz wurde erfolgreich veröffentlicht!",
295
+ "editor.record.publishError.title": "Fehler beim Veröffentlichen {recordKind, select, dataset{des Datensatzes} service{des Dienstes} reuse{der Wiederverwendung} other{des Datensatzes}}",
296
+ "editor.record.publishSuccess.body": "{recordKind, select, dataset{Der Datensatz} service{Der Dienst} reuse{Die Wiederverwendung} other{Der Datensatz}} wurde erfolgreich veröffentlicht!",
294
297
  "editor.record.publishSuccess.title": "Veröffentlichung erfolgreich",
295
- "editor.record.publishVersionError.body": "Der Datensatz kann nicht veröffentlicht werden, da eine inkompatible Version von GeoNetwork erkannt wurde. Bitte wenden Sie sich an einen Administrator der Plattform, um das Problem zu beheben. Aktuelle Version: {currentVersion} Mindestkompatible Version: 4.2.5",
298
+ "editor.record.publishVersionError.body": "{recordKind, select, dataset{Der Datensatz} service{Der Dienst} reuse{Die Wiederverwendung} other{Der Datensatz}} kann nicht veröffentlicht werden, da eine inkompatible Version von GeoNetwork erkannt wurde. Bitte wenden Sie sich an einen Administrator der Plattform, um das Problem zu beheben.\nAktuelle Version: {currentVersion}\nMindestkompatible Version: 4.2.5",
296
299
  "editor.record.publishVersionError.closeMessage": "Verstanden",
297
300
  "editor.record.publishVersionError.title": "Ein kritischer Fehler ist aufgetreten",
298
- "editor.record.resourceError.body": "Bei der Verwaltung der Anhänge ist ein Fehler aufgetreten:",
301
+ "editor.record.resourceError.body": "Bei der Verwaltung der Anhänge {recordKind, select, dataset{des Datensatzes} service{des Dienstes} reuse{der Wiederverwendung} other{des Datensatzes}} ist ein Fehler aufgetreten:",
299
302
  "editor.record.resourceError.closeMessage": "Verstanden",
300
- "editor.record.resourceError.title": "Fehler bei den Anhängen",
303
+ "editor.record.resourceError.title": "Fehler bei den Anhängen {recordKind, select, dataset{des Datensatzes} service{des Dienstes} reuse{der Wiederverwendung} other{des Datensatzes}}",
301
304
  "editor.record.saveStatus.draftWithChangesPending": "Gespeichert - nicht publizierte Unterschiede",
302
305
  "editor.record.saveStatus.recordNotPublished": "Gespeichert – nicht veröffentlicht",
303
306
  "editor.record.saveStatus.recordUpToDate": "Gespeichert - auf dem neuesten Stand",
304
307
  "editor.record.undo.confirmation.cancelText": "Änderungen speichern",
305
308
  "editor.record.undo.confirmation.confirmText": "Änderungen zurücknehmen",
306
- "editor.record.undo.confirmation.message": "Möchten Sie die Änderungen an diesem Datensatz wirklich rückgängig machen?",
309
+ "editor.record.undo.confirmation.message": "Möchten Sie die Änderungen an {recordKind, select, dataset{diesem Datensatz} service{diesem Dienst} reuse{dieser Wiederverwendung} other{diesem Datensatz}} wirklich rückgängig machen?",
307
310
  "editor.record.undo.confirmation.title": "Änderungen rückgängig machen?",
308
- "editor.record.undo.tooltip.disabled": "Es gibt keine laufenden Änderungen an diesem Datensatz.",
309
- "editor.record.undo.tooltip.enabled": "Bitte klicken auf diese Schaltfläche, um die Änderungen an diesem Datensatz zu verwerfen.",
310
- "editor.record.upToDate": "Dieser Datensatz ist auf dem neuesten Stand",
311
+ "editor.record.undo.tooltip.disabled": "Es gibt keine laufenden Änderungen an {recordKind, select, dataset{diesem Datensatz} service{diesem Dienst} reuse{dieser Wiederverwendung} other{diesem Datensatz}}.",
312
+ "editor.record.undo.tooltip.enabled": "Bitte klicken auf diese Schaltfläche, um die Änderungen an {recordKind, select, dataset{diesem Datensatz} service{diesem Dienst} reuse{dieser Wiederverwendung} other{diesem Datensatz}} zu verwerfen.",
313
+ "editor.record.upToDate": "{recordKind, select, dataset{Dieser Datensatz} service{Dieser Dienst} reuse{Diese Wiederverwendung} other{Dieser Datensatz}} ist auf dem neuesten Stand",
311
314
  "editor.sidebar.logout": "Abmelden",
312
315
  "editor.sidebar.menu.editor": "Herausgeber",
313
316
  "editor.temporary.disabled": "Noch nicht implementiert",
@@ -89,6 +89,10 @@
89
89
  "domain.contact.role.stakeholder": "Stakeholder",
90
90
  "domain.contact.role.unspecified": "Unspecified",
91
91
  "domain.contact.role.user": "User",
92
+ "domain.record.keywordType.other": "Keywords",
93
+ "domain.record.keywordType.place": "Place",
94
+ "domain.record.keywordType.temporal": "Temporal",
95
+ "domain.record.keywordType.theme": "Theme",
92
96
  "domain.record.status.completed": "Completed",
93
97
  "domain.record.status.deprecated": "Deprecated",
94
98
  "domain.record.status.ongoing": "Ongoing",
@@ -118,15 +122,15 @@
118
122
  "downloads.format.unknown": "Unknown",
119
123
  "downloads.wfs.featuretype.not.found": "The layer was not found",
120
124
  "dropFile": "Drop file",
121
- "editor.new.record.title": "My dataset",
125
+ "editor.new.record.title": "My {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}",
122
126
  "editor.record.delete.confirmation.cancelText": "Cancel",
123
127
  "editor.record.delete.confirmation.confirmText": "Delete",
124
- "editor.record.delete.confirmation.message": "Are you sure you want to delete this dataset?",
125
- "editor.record.delete.confirmation.title": "Delete dataset?",
126
- "editor.record.deleteError.body": "The dataset could not be deleted:",
128
+ "editor.record.delete.confirmation.message": "Are you sure you want to delete this {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}?",
129
+ "editor.record.delete.confirmation.title": "Delete {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}?",
130
+ "editor.record.deleteError.body": "The {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} could not be deleted:",
127
131
  "editor.record.deleteError.closeMessage": "Understood",
128
- "editor.record.deleteError.title": "Error deleting dataset",
129
- "editor.record.deleteSuccess.body": "The dataset was successfully deleted!",
132
+ "editor.record.deleteError.title": "Error deleting {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}",
133
+ "editor.record.deleteSuccess.body": "The {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} was successfully deleted!",
130
134
  "editor.record.deleteSuccess.title": "Delete success",
131
135
  "editor.record.error.back": "Go back to the catalog",
132
136
  "editor.record.error.explanation": "You might not have access to this record,<br> Or this link might not be valid.",
@@ -147,7 +151,7 @@
147
151
  "editor.record.form.constraint.not.known": "The conditions are unknown",
148
152
  "editor.record.form.constraint.otherConstraints": "Other constraints",
149
153
  "editor.record.form.constraint.securityConstraints": "Security constraints",
150
- "editor.record.form.draft.updateAlert": "Since you created this draft, the dataset has been updated on { date } by { user }. Publishing your draft might erase their edits. To avoid this, you need to either cancel your changes or knowingly publish your own version.",
154
+ "editor.record.form.draft.updateAlert": "Since you created this draft, the {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} has been updated on { date } by { user }. Publishing your draft might erase their edits. To avoid this, you need to either cancel your changes or knowingly publish your own version.",
151
155
  "editor.record.form.field.abstract": "Abstract",
152
156
  "editor.record.form.field.constraintsShortcuts": "",
153
157
  "editor.record.form.field.contactDetails.email": "Contact email",
@@ -188,9 +192,9 @@
188
192
  "editor.record.form.field.otherConstraints": "Other constraint",
189
193
  "editor.record.form.field.overviews": "Overview",
190
194
  "editor.record.form.field.recordUpdated": "Record updated",
191
- "editor.record.form.field.resourceCreated": "Dataset created",
195
+ "editor.record.form.field.resourceCreated": "{recordKind, select, dataset{Dataset} service{Service} reuse{Reuse} other{Record}} created",
192
196
  "editor.record.form.field.resourceIdentifier": "Identifier",
193
- "editor.record.form.field.resourceUpdated": "Dataset updated",
197
+ "editor.record.form.field.resourceUpdated": "{recordKind, select, dataset{Dataset} service{Service} reuse{Reuse} other{Record}} updated",
194
198
  "editor.record.form.field.securityConstraints": "Security constraints",
195
199
  "editor.record.form.field.spatialExtents": "Spatial extents",
196
200
  "editor.record.form.field.temporalExtents": "Temporal extents",
@@ -221,59 +225,58 @@
221
225
  "editor.record.form.multilingual.title": "Translations",
222
226
  "editor.record.form.multilingual.validate": "Validate",
223
227
  "editor.record.form.page.accessAndContact": "Information for use",
224
- "editor.record.form.page.description": "Dataset description",
228
+ "editor.record.form.page.description": "{recordKind, select, dataset{Dataset} service{Service} reuse{Reuse} other{Record}} description",
225
229
  "editor.record.form.page.resources": "Resources",
226
- "editor.record.form.section.about.description": "This section describes the dataset",
227
- "editor.record.form.section.about.label": "About the dataset",
228
- "editor.record.form.section.annexes.description": "Annexes are optional resources. They are attached to the dataset, and help understand the data (manual, etc.).",
230
+ "editor.record.form.section.about.description": "This section describes the {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}",
231
+ "editor.record.form.section.about.label": "About the {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}",
232
+ "editor.record.form.section.annexes.description": "Annexes are optional resources. They are attached to the {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}, and help understand the data (manual, etc.).",
229
233
  "editor.record.form.section.annexes.label": "Annexes",
230
234
  "editor.record.form.section.associatedResources.description": "Point out where the data can be found",
231
235
  "editor.record.form.section.associatedResources.label": "Associated resources",
232
- "editor.record.form.section.classification.description": "Appropriate keywords help users find the dataset",
236
+ "editor.record.form.section.classification.description": "Appropriate keywords help users find the {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}",
233
237
  "editor.record.form.section.classification.label": "Keywords",
234
238
  "editor.record.form.section.dataManagers.description": "The data managers are responsible for the data",
235
239
  "editor.record.form.section.dataManagers.label": "Data managers",
236
240
  "editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
237
241
  "editor.record.form.section.metadataPointOfContact.description": "This information concerns the metadata",
238
242
  "editor.record.form.section.metadataPointOfContact.label": "Metadata point of contact",
239
- "editor.record.form.section.topics.description": "Topics help to better group datasets",
243
+ "editor.record.form.section.topics.description": "Topics help to better group {recordKind, select, dataset{datasets} service{services} reuse{reuses} other{records}}",
240
244
  "editor.record.form.section.topics.label": "Topics",
241
245
  "editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
242
246
  "editor.record.form.temporalExtents.addDate": "Time instant",
243
247
  "editor.record.form.temporalExtents.addRange": "Time period",
244
248
  "editor.record.form.temporalExtents.date": "Date",
245
249
  "editor.record.form.temporalExtents.range": "Date range",
246
- "editor.record.form.topics.inspire.biota": "Biota",
247
- "editor.record.form.topics.inspire.boundaries": "Boundaries",
248
- "editor.record.form.topics.inspire.climatology": "Climatology / Meteorology / Atmosphere",
249
- "editor.record.form.topics.inspire.economy": "Economy",
250
- "editor.record.form.topics.inspire.elevation": "Elevation",
251
- "editor.record.form.topics.inspire.environnement": "Environnement",
252
- "editor.record.form.topics.inspire.farming": "Farming",
253
- "editor.record.form.topics.inspire.geoscientific": "Geoscientific Information",
254
- "editor.record.form.topics.inspire.health": "Health",
255
- "editor.record.form.topics.inspire.imagery": "Imagery / Base Maps / Earth Cover",
256
- "editor.record.form.topics.inspire.intelligence": "Intelligence / Military",
257
- "editor.record.form.topics.inspire.location": "Location",
258
- "editor.record.form.topics.inspire.oceans": "Oceans",
259
- "editor.record.form.topics.inspire.planning": "Planning / Cadastre",
260
- "editor.record.form.topics.inspire.society": "Society",
261
- "editor.record.form.topics.inspire.structure": "Structure",
262
- "editor.record.form.topics.inspire.transportation": "Transportation",
263
- "editor.record.form.topics.inspire.utilities": "Utilities / Communication",
264
- "editor.record.form.topics.inspire.waters": "Inland Waters",
250
+ "editor.record.form.topics.iso.biota": "Biota",
251
+ "editor.record.form.topics.iso.boundaries": "Boundaries",
252
+ "editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "Climatology / Meteorology / Atmosphere",
253
+ "editor.record.form.topics.iso.economy": "Economy",
254
+ "editor.record.form.topics.iso.elevation": "Elevation",
255
+ "editor.record.form.topics.iso.environment": "Environnement",
256
+ "editor.record.form.topics.iso.farming": "Farming",
257
+ "editor.record.form.topics.iso.geoscientificInformation": "Geoscientific Information",
258
+ "editor.record.form.topics.iso.health": "Health",
259
+ "editor.record.form.topics.iso.imageryBaseMapsEarthCover": "Imagery / Base Maps / Earth Cover",
260
+ "editor.record.form.topics.iso.inlandWaters": "Inland Waters",
261
+ "editor.record.form.topics.iso.intelligenceMilitary": "Intelligence / Military",
262
+ "editor.record.form.topics.iso.location": "Location",
263
+ "editor.record.form.topics.iso.oceans": "Oceans",
264
+ "editor.record.form.topics.iso.planningCadastre": "Planning / Cadastre",
265
+ "editor.record.form.topics.iso.society": "Society",
266
+ "editor.record.form.topics.iso.structure": "Structure",
267
+ "editor.record.form.topics.iso.transportation": "Transportation",
268
+ "editor.record.form.topics.iso.utilitiesCommunication": "Utilities / Communication",
265
269
  "editor.record.form.topics.placeholder": "Select one or several topics",
266
- "editor.record.form.updateFrequency.planned": "This dataset is updated regularly",
270
+ "editor.record.form.updateFrequency.planned": "This {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} is updated regularly",
267
271
  "editor.record.importFromExternalFile.failure.body": "Failure",
268
- "editor.record.importFromExternalFile.failure.title": "The dataset import failed: ",
272
+ "editor.record.importFromExternalFile.failure.title": "The import failed: ",
269
273
  "editor.record.importFromExternalFile.success.body": "Import successful",
270
274
  "editor.record.importFromExternalFile.success.title": "The dataset has been successfully imported.",
271
- "editor.record.loadError.body": "The dataset could not be loaded:",
275
+ "editor.record.loadError.body": "The record could not be loaded:",
272
276
  "editor.record.loadError.closeMessage": "Understood",
273
- "editor.record.loadError.title": "Error loading dataset",
274
- "editor.record.lock.harvested": "Datasets harvested from an external catalog are not editable",
277
+ "editor.record.loadError.title": "Error loading record",
278
+ "editor.record.lock.harvested": "{recordKind, select, dataset{Datasets} service{Services} reuse{Reuses} other{Records}} harvested from an external catalog are not editable",
275
279
  "editor.record.lock.owner": "You are not an editor of the allowed groups",
276
- "editor.record.lock.resourceType": "Records of a type other than dataset are not editable",
277
280
  "editor.record.multilingual.confirmation.cancelText": "Keep the language(s)",
278
281
  "editor.record.multilingual.confirmation.confirmText": "Remove the language(s)",
279
282
  "editor.record.multilingual.confirmation.message": "You are about to remove one or several languages, which will delete all of the related translations. Do you want to proceed?",
@@ -283,31 +286,31 @@
283
286
  "editor.record.onlineResourceError.closeMessage": "Understood",
284
287
  "editor.record.onlineResourceError.title": "Error adding resource",
285
288
  "editor.record.placeKeywordWithoutLabel": "Unnamed location",
286
- "editor.record.publish": "Publish this dataset",
289
+ "editor.record.publish": "Publish this {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}",
287
290
  "editor.record.publish.confirmation.cancelText": "Cancel",
288
291
  "editor.record.publish.confirmation.confirmText": "Publish",
289
- "editor.record.publish.confirmation.message": "Since you created this draft, the dataset has been updated on { date } by { user }. Publishing your draft might erase their edits. Do you wish to proceed?",
290
- "editor.record.publishError.body": "The dataset could not be published:",
292
+ "editor.record.publish.confirmation.message": "Since you created this draft, the {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} has been updated on { date } by { user }. Publishing your draft might erase their edits. Do you wish to proceed?",
293
+ "editor.record.publishError.body": "The {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} could not be published:",
291
294
  "editor.record.publishError.closeMessage": "Understood",
292
- "editor.record.publishError.title": "Error publishing dataset",
293
- "editor.record.publishSuccess.body": "The dataset was successfully published!",
295
+ "editor.record.publishError.title": "Error publishing {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}",
296
+ "editor.record.publishSuccess.body": "The {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} was successfully published!",
294
297
  "editor.record.publishSuccess.title": "Publish success",
295
- "editor.record.publishVersionError.body": "The dataset cannot be published because an incompatible GeoNetwork version was detected. Please contact the administrator of the platform to solve this issue.\nCurrent version: {currentVersion}\nMinimum compatible version: 4.2.5",
298
+ "editor.record.publishVersionError.body": "The {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} cannot be published because an incompatible GeoNetwork version was detected. Please contact the administrator of the platform to solve this issue.\nCurrent version: {currentVersion}\nMinimum compatible version: 4.2.5",
296
299
  "editor.record.publishVersionError.closeMessage": "Understood",
297
300
  "editor.record.publishVersionError.title": "A critical issue was encountered",
298
- "editor.record.resourceError.body": "There was an issue with the dataset attachments:",
301
+ "editor.record.resourceError.body": "There was an issue with the {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} attachments:",
299
302
  "editor.record.resourceError.closeMessage": "Understood",
300
- "editor.record.resourceError.title": "Error with the dataset attachments",
303
+ "editor.record.resourceError.title": "Error with the {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} attachments",
301
304
  "editor.record.saveStatus.draftWithChangesPending": "Saved - Unpublished differences",
302
305
  "editor.record.saveStatus.recordNotPublished": "Saved - not published",
303
306
  "editor.record.saveStatus.recordUpToDate": "Saved - Record up to date",
304
307
  "editor.record.undo.confirmation.cancelText": "Keep the changes",
305
308
  "editor.record.undo.confirmation.confirmText": "Discard the changes",
306
- "editor.record.undo.confirmation.message": "Are you sure you want to cancel the pending changes on this dataset ?",
309
+ "editor.record.undo.confirmation.message": "Are you sure you want to cancel the pending changes on this {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} ?",
307
310
  "editor.record.undo.confirmation.title": "Cancel changes?",
308
- "editor.record.undo.tooltip.disabled": "There are no pending changes on this dataset",
309
- "editor.record.undo.tooltip.enabled": "Clicking this button will cancel the pending changes on this dataset.",
310
- "editor.record.upToDate": "This dataset is up to date",
311
+ "editor.record.undo.tooltip.disabled": "There are no pending changes on this {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}",
312
+ "editor.record.undo.tooltip.enabled": "Clicking this button will cancel the pending changes on this {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}}.",
313
+ "editor.record.upToDate": "This {recordKind, select, dataset{dataset} service{service} reuse{reuse} other{record}} is up to date",
311
314
  "editor.sidebar.logout": "Log out",
312
315
  "editor.sidebar.menu.editor": "Editor",
313
316
  "editor.temporary.disabled": "Not implemented yet",