geonetwork-ui 2.7.0-dev.7a5d403cf → 2.7.0-dev.7cec835f7
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.
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +4 -7
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +20 -20
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
- package/esm2022/libs/api/repository/src/index.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +5 -5
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +9 -10
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +3 -3
- package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +3 -3
- package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +3 -3
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +3 -3
- package/esm2022/libs/api/repository/src/lib/metadata-language.token.mjs +3 -0
- package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +3 -3
- package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -2
- package/esm2022/libs/util/app-config/src/lib/parse-utils.mjs +5 -4
- package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +50 -9
- package/fesm2022/geonetwork-ui.mjs +96 -497
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/index.d.ts +1 -1
- package/libs/api/repository/src/index.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +0 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/metadata-language.token.d.ts +5 -0
- package/libs/api/repository/src/lib/metadata-language.token.d.ts.map +1 -0
- package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/parse-utils.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/language-codes.d.ts +91 -31
- package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +3 -6
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +47 -22
- package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +3 -3
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
- package/src/libs/api/repository/src/index.ts +1 -1
- package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -4
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +15 -11
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
- package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +2 -2
- package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +2 -2
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +2 -2
- package/src/libs/api/repository/src/lib/metadata-language.token.ts +8 -0
- package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +2 -5
- package/src/libs/util/app-config/src/lib/fixtures.ts +1 -1
- package/src/libs/util/app-config/src/lib/parse-utils.ts +4 -7
- package/src/libs/util/i18n/src/lib/language-codes.ts +62 -11
- package/esm2022/libs/api/repository/src/lib/metadata-language.mjs +0 -3
- package/esm2022/libs/util/app-config/src/lib/constants.mjs +0 -439
- package/libs/api/repository/src/lib/metadata-language.d.ts +0 -3
- package/libs/api/repository/src/lib/metadata-language.d.ts.map +0 -1
- package/libs/util/app-config/src/lib/constants.d.ts +0 -2
- package/libs/util/app-config/src/lib/constants.d.ts.map +0 -1
- package/src/libs/api/repository/src/lib/metadata-language.ts +0 -3
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
import { catchError, map, tap } from 'rxjs/operators'
|
|
49
49
|
import { lt } from 'semver'
|
|
50
50
|
import { ElasticsearchService } from './elasticsearch'
|
|
51
|
-
import {
|
|
51
|
+
import { toLang2 } from '../../../../../../libs/util/i18n/src'
|
|
52
52
|
import { Gn4SettingsService } from './settings/gn4-settings.service'
|
|
53
53
|
|
|
54
54
|
const minPublicationApiVersion = '4.2.5'
|
|
@@ -562,7 +562,7 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
562
562
|
.pipe(
|
|
563
563
|
map((languages) =>
|
|
564
564
|
languages
|
|
565
|
-
.map((lang) =>
|
|
565
|
+
.map((lang) => toLang2(lang.id))
|
|
566
566
|
.filter((code): code is string => !!code)
|
|
567
567
|
)
|
|
568
568
|
)
|
package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import { forkJoin, Observable, of } from 'rxjs'
|
|
8
8
|
import { map, shareReplay } from 'rxjs/operators'
|
|
9
9
|
import { TranslateService } from '@ngx-translate/core'
|
|
10
|
-
import {
|
|
10
|
+
import { toLang3 } from '../../../../../../../libs/util/i18n/src'
|
|
11
11
|
import { FieldFilters } from '../../../../../../../libs/common/domain/src/lib/model/search'
|
|
12
12
|
import {
|
|
13
13
|
CatalogRecord,
|
|
@@ -52,7 +52,7 @@ export class OrganizationsFromGroupsService
|
|
|
52
52
|
organisationsCount$ = this.organisations$.pipe(map((orgs) => orgs.length))
|
|
53
53
|
|
|
54
54
|
private get lang3() {
|
|
55
|
-
return
|
|
55
|
+
return toLang3(this.translateService.currentLang)
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
constructor(
|
package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts
CHANGED
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
tap,
|
|
34
34
|
withLatestFrom,
|
|
35
35
|
} from 'rxjs/operators'
|
|
36
|
-
import {
|
|
36
|
+
import { toLang3 } from '../../../../../../../libs/util/i18n/src'
|
|
37
37
|
import { PlatformServiceInterface } from '../../../../../../../libs/common/domain/src/lib/platform.service.interface'
|
|
38
38
|
import { coerce, satisfies, valid } from 'semver'
|
|
39
39
|
import { TranslateService } from '@ngx-translate/core'
|
|
@@ -126,7 +126,7 @@ export class OrganizationsFromMetadataService
|
|
|
126
126
|
) {}
|
|
127
127
|
|
|
128
128
|
private get langIndex() {
|
|
129
|
-
return
|
|
129
|
+
return `lang${toLang3(this.translateService.currentLang)}`
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
equalsNormalizedStrings(
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
throwError,
|
|
46
46
|
} from 'rxjs'
|
|
47
47
|
import { TranslateService } from '@ngx-translate/core'
|
|
48
|
-
import {
|
|
48
|
+
import { toLang3 } from '../../../../../../../libs/util/i18n/src'
|
|
49
49
|
|
|
50
50
|
const minApiVersion = '4.2.2'
|
|
51
51
|
|
|
@@ -98,7 +98,7 @@ export class Gn4PlatformService implements PlatformServiceInterface {
|
|
|
98
98
|
private keywordsByThesauri: Record<string, Observable<Keyword[]>> = {}
|
|
99
99
|
|
|
100
100
|
private get lang3() {
|
|
101
|
-
return
|
|
101
|
+
return toLang3(this.translateService.currentLang)
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
constructor(
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core'
|
|
2
|
+
import { LanguageCode } from '../../../../../libs/common/domain/src/lib/model/record'
|
|
3
|
+
|
|
4
|
+
export type LanguageCodeFactory = () => LanguageCode
|
|
5
|
+
|
|
6
|
+
export const METADATA_LANGUAGE = new InjectionToken<
|
|
7
|
+
LanguageCode | LanguageCodeFactory
|
|
8
|
+
>('metadata-language')
|
|
@@ -4,7 +4,7 @@ import { Observable } from 'rxjs'
|
|
|
4
4
|
import { filter, map, shareReplay } from 'rxjs/operators'
|
|
5
5
|
import { CatalogSource } from './sources.model'
|
|
6
6
|
import { TranslateService } from '@ngx-translate/core'
|
|
7
|
-
import {
|
|
7
|
+
import { toLang3 } from '../../../../../../libs/util/i18n/src'
|
|
8
8
|
|
|
9
9
|
@Injectable({
|
|
10
10
|
providedIn: 'root',
|
|
@@ -23,10 +23,7 @@ export class SourcesService {
|
|
|
23
23
|
return this.sources$.pipe(
|
|
24
24
|
map((sources) => sources.filter((source) => source.uuid === uuid)[0]),
|
|
25
25
|
filter((source) => !!source),
|
|
26
|
-
map(
|
|
27
|
-
(source) =>
|
|
28
|
-
source.label[getLang3FromLang2(this.translateService.currentLang)]
|
|
29
|
-
)
|
|
26
|
+
map((source) => source.label[toLang3(this.translateService.currentLang)])
|
|
30
27
|
)
|
|
31
28
|
}
|
|
32
29
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toLang2 } from '../../../../../libs/util/i18n/src'
|
|
2
2
|
|
|
3
3
|
const flatten = (
|
|
4
4
|
base: string,
|
|
@@ -129,13 +129,10 @@ export function checkMetadataLanguage(
|
|
|
129
129
|
parsedConfigSection: any,
|
|
130
130
|
outWarnings: string[]
|
|
131
131
|
) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
parsedConfigSection.metadata_language.toLowerCase()
|
|
135
|
-
) === -1
|
|
136
|
-
) {
|
|
132
|
+
const lang2 = toLang2(parsedConfigSection.metadata_language.toLowerCase())
|
|
133
|
+
if (lang2?.length !== 2) {
|
|
137
134
|
outWarnings.push(
|
|
138
|
-
`In the [global] section: metadata_language = "${parsedConfigSection.metadata_language}" is not
|
|
135
|
+
`In the [global] section: metadata_language = "${parsedConfigSection.metadata_language}" is not a recognized ISO 639 language code`
|
|
139
136
|
)
|
|
140
137
|
}
|
|
141
138
|
return parsedConfigSection
|
|
@@ -1,20 +1,32 @@
|
|
|
1
1
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker'
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Taken from https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
|
|
5
|
+
* Note: some languages have multiple 3-char codes, like 'fre' and 'fra'; in that case, the one to be used
|
|
6
|
+
* in priority is the one defined last
|
|
7
|
+
*/
|
|
3
8
|
const LANG_3_TO_2_MAPPER = {
|
|
4
9
|
eng: 'en',
|
|
10
|
+
nld: 'nl', // duplicate for "dut"
|
|
5
11
|
dut: 'nl',
|
|
12
|
+
fra: 'fr', // duplicate for "fre"
|
|
6
13
|
fre: 'fr',
|
|
14
|
+
deu: 'de', // duplicate for "ger"
|
|
7
15
|
ger: 'de',
|
|
8
16
|
kor: 'ko',
|
|
9
17
|
spa: 'es',
|
|
18
|
+
ces: 'cs', // duplicate for "cze"
|
|
10
19
|
cze: 'cs',
|
|
11
20
|
cat: 'ca',
|
|
12
21
|
fin: 'fi',
|
|
22
|
+
isl: 'is', // duplicate for "ice"
|
|
13
23
|
ice: 'is',
|
|
14
24
|
ita: 'it',
|
|
15
25
|
por: 'pt',
|
|
16
26
|
rus: 'ru',
|
|
27
|
+
zho: 'zh', // duplicate for "chi"
|
|
17
28
|
chi: 'zh',
|
|
29
|
+
slk: 'sk', // duplicate for "slo"
|
|
18
30
|
slo: 'sk',
|
|
19
31
|
roh: 'rm',
|
|
20
32
|
ara: 'ar',
|
|
@@ -25,10 +37,12 @@ const LANG_3_TO_2_MAPPER = {
|
|
|
25
37
|
tur: 'tr',
|
|
26
38
|
arm: 'hy',
|
|
27
39
|
aze: 'az',
|
|
40
|
+
kat: 'ka', // duplicate for "geo"
|
|
28
41
|
geo: 'ka',
|
|
29
42
|
ukr: 'uk',
|
|
43
|
+
cym: 'cy', // duplicate for "wel"
|
|
30
44
|
wel: 'cy',
|
|
31
|
-
}
|
|
45
|
+
} as const
|
|
32
46
|
|
|
33
47
|
export const LANGUAGE_NAMES = {
|
|
34
48
|
en: 'English',
|
|
@@ -58,26 +72,63 @@ export const LANGUAGE_NAMES = {
|
|
|
58
72
|
ka: 'ქართული',
|
|
59
73
|
uk: 'українська',
|
|
60
74
|
wel: 'Cymraeg',
|
|
61
|
-
}
|
|
75
|
+
} as const
|
|
76
|
+
|
|
77
|
+
export type LanguageCode3 = keyof typeof LANG_3_TO_2_MAPPER
|
|
78
|
+
export type LanguageCode2 = (typeof LANG_3_TO_2_MAPPER)[LanguageCode3]
|
|
62
79
|
|
|
63
80
|
export const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce(
|
|
64
81
|
(mapperObject, langEntry) => {
|
|
65
82
|
return { ...mapperObject, [langEntry[1]]: langEntry[0] }
|
|
66
83
|
},
|
|
67
84
|
{}
|
|
68
|
-
)
|
|
85
|
+
) as Record<LanguageCode2, LanguageCode3>
|
|
69
86
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
87
|
+
/**
|
|
88
|
+
* This can be:
|
|
89
|
+
* - an ISO 639-2 language code in 3 characters (e.g. 'eng', 'fre', 'ger')
|
|
90
|
+
* - an ISO 639-1 language code in 2 characters (e.g. 'en', 'fr', 'de')
|
|
91
|
+
* - a 2-character language code with locale (e.g. 'fr_FR', 'fr_CA')
|
|
92
|
+
*/
|
|
93
|
+
export type LanguageCodeLike = LanguageCode2 | LanguageCode3 | string
|
|
73
94
|
|
|
74
|
-
|
|
75
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Converts a language code in any format to the ISO 639-2 format (3 characters)
|
|
97
|
+
* Returns the given string if the corresponding language code could not be recognized
|
|
98
|
+
*/
|
|
99
|
+
export function toLang3(lang: LanguageCodeLike): LanguageCode3 | string {
|
|
100
|
+
if (!lang) {
|
|
101
|
+
// also handle falsy values just in case
|
|
102
|
+
return lang
|
|
103
|
+
}
|
|
104
|
+
if (lang.length === 3) {
|
|
105
|
+
return LANG_2_TO_3_MAPPER[LANG_3_TO_2_MAPPER[lang.toLowerCase()]] ?? lang
|
|
106
|
+
}
|
|
107
|
+
const lang2 = lang.toLowerCase().substring(0, 2)
|
|
108
|
+
return LANG_2_TO_3_MAPPER[lang2] ?? lang
|
|
76
109
|
}
|
|
77
110
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
111
|
+
/**
|
|
112
|
+
* Converts a language code in any format to the ISO 639-1 format (2 characters)
|
|
113
|
+
* Returns the given string if the corresponding language code could not be recognized
|
|
114
|
+
*/
|
|
115
|
+
export function toLang2(lang: LanguageCodeLike): LanguageCode2 | string {
|
|
116
|
+
if (!lang) {
|
|
117
|
+
// also handle falsy values just in case
|
|
118
|
+
return lang
|
|
119
|
+
}
|
|
120
|
+
if (lang.length === 3) {
|
|
121
|
+
return LANG_3_TO_2_MAPPER[lang.toLowerCase()] ?? lang
|
|
122
|
+
}
|
|
123
|
+
const lang2 = lang.toLowerCase().substring(0, 2)
|
|
124
|
+
if (lang2 in LANG_2_TO_3_MAPPER) {
|
|
125
|
+
return lang2
|
|
126
|
+
}
|
|
127
|
+
if (lang.match(/[a-z]{2}_[A-Z]{2}/)) {
|
|
128
|
+
// remove locale code even if the language code is not known
|
|
129
|
+
return lang2
|
|
130
|
+
}
|
|
131
|
+
return lang
|
|
81
132
|
}
|
|
82
133
|
|
|
83
134
|
marker('language.en')
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const METADATA_LANGUAGE = new InjectionToken('metadata-language');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtbGFuZ3VhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvbWV0YWRhdGEtbGFuZ3VhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUU5QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBUyxtQkFBbUIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5leHBvcnQgY29uc3QgTUVUQURBVEFfTEFOR1VBR0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignbWV0YWRhdGEtbGFuZ3VhZ2UnKVxuIl19
|