@glossarist/concept-browser 0.7.100 → 0.7.102
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/cli/index.mjs +14 -251
- package/cli/index.ts +289 -0
- package/package.json +3 -2
- package/src/__tests__/__fixtures__/concepts.ts +3 -3
- package/src/__tests__/components/learn/learn-card-dimension-card.test.ts +112 -0
- package/src/__tests__/composables/use-concept-edges-v2.test.ts +1 -0
- package/src/__tests__/designation-relationship.test.ts +2 -2
- package/src/__tests__/perf/serialization-perf.test.ts +1 -0
- package/src/__tests__/use-rdf-document.test.ts +1 -0
- package/src/__tests__/views/learn/learn-designations-view.test.ts +84 -0
- package/src/__tests__/views/learn/learn-index-view.test.ts +45 -0
- package/src/__tests__/views/learn/learn-relationships-view.test.ts +83 -0
- package/src/__tests__/views/learn/learn-statuses-view.test.ts +60 -0
- package/src/adapters/bibliography-adapter.ts +1 -1
- package/src/adapters/model-bridge.ts +15 -15
- package/src/adapters/non-verbal/figure-bridge.ts +2 -2
- package/src/adapters/non-verbal/formula-bridge.ts +2 -2
- package/src/adapters/non-verbal/table-bridge.ts +2 -2
- package/src/components/CitationDisplay.vue +1 -1
- package/src/components/ConceptDetail.vue +2 -2
- package/src/components/ConceptDiffModal.vue +2 -2
- package/src/components/ConceptDiffView.vue +1 -1
- package/src/components/DesignationList.vue +4 -4
- package/src/components/NavIcon.vue +1 -0
- package/src/components/RelationSphere.vue +1 -1
- package/src/components/figure/FigureDisplay.vue +5 -5
- package/src/components/formula/FormulaDisplay.vue +4 -4
- package/src/components/learn/DimensionCard.vue +71 -0
- package/src/components/learn/LearnCard.vue +59 -0
- package/src/components/table/TableDisplay.vue +3 -3
- package/src/components/use-rdf-document.ts +16 -7
- package/src/composables/use-concept-content.ts +3 -3
- package/src/composables/use-concept-diff.ts +2 -2
- package/src/composables/use-concept-edges.ts +3 -3
- package/src/config/page-types.ts +1 -1
- package/src/i18n/locales/eng.yml +114 -9
- package/src/i18n/locales/fra.yml +114 -9
- package/src/layouts/Default.astro +32 -2
- package/src/router/index.ts +21 -2
- package/src/utils/content-renderer.ts +1 -1
- package/src/utils/partitive-multiplicity.ts +3 -2
- package/src/views/ConceptView.vue +3 -3
- package/src/views/learn/LearnDesignationsView.vue +190 -0
- package/src/views/learn/LearnIndexView.vue +75 -0
- package/src/views/learn/LearnRelationshipsView.vue +317 -0
- package/src/views/learn/LearnStatusesView.vue +114 -0
- package/tailwind.config.js +3 -3
- package/tsconfig.json +1 -1
- package/src/__tests__/views/relation-types-view.test.ts +0 -85
- package/src/adapters/model-bridge/bridges.ts +0 -159
- package/src/adapters/model-bridge/concept.ts +0 -97
- package/src/adapters/model-bridge/entity-refs.ts +0 -49
- package/src/adapters/model-bridge/hyperedge.ts +0 -103
- package/src/adapters/model-bridge/index.ts +0 -46
- package/src/adapters/model-bridge/mappers.ts +0 -277
- package/src/adapters/model-bridge/partitive.ts +0 -79
- package/src/adapters/non-verbal/glossarist-augment.d.ts +0 -339
- /package/src/adapters/{model-bridge/jsonld-types.ts → jsonld-types.ts} +0 -0
|
@@ -77,11 +77,11 @@ function resolvedLabel(dr: { content: string | null; ref?: { source: string | nu
|
|
|
77
77
|
<div v-if="d.related?.length" class="mt-0.5 space-y-0.5">
|
|
78
78
|
<div v-for="(dr, dri) in d.related" :key="'dr'+dri" class="text-xs text-ink-400 flex items-center gap-1.5">
|
|
79
79
|
<span class="badge text-[9px] bg-gray-50 text-gray-600">{{ relationshipLabel(dr.type ?? '') }}</span>
|
|
80
|
-
<template v-if="getDesignationTarget(dr)">
|
|
81
|
-
<span class="italic">{{ getDesignationTarget(dr) }}</span>
|
|
80
|
+
<template v-if="getDesignationTarget(dr as any)">
|
|
81
|
+
<span class="italic">{{ getDesignationTarget(dr as any) }}</span>
|
|
82
82
|
</template>
|
|
83
|
-
<button v-else-if="'ref' in dr && dr.ref" @click="emit('navigate-related', dr.ref)" class="concept-link">{{ resolvedLabel(dr) }}</button>
|
|
84
|
-
<span v-else>{{ resolvedLabel(dr) }}</span>
|
|
83
|
+
<button v-else-if="'ref' in dr && dr.ref" @click="emit('navigate-related', dr.ref)" class="concept-link">{{ resolvedLabel(dr as any) }}</button>
|
|
84
|
+
<span v-else>{{ resolvedLabel(dr as any) }}</span>
|
|
85
85
|
</div>
|
|
86
86
|
</div>
|
|
87
87
|
</div>
|
|
@@ -10,6 +10,7 @@ const icons: Record<string, string> = {
|
|
|
10
10
|
list: 'M4 6h16M4 10h16M4 14h16M4 18h16',
|
|
11
11
|
schema: 'M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z',
|
|
12
12
|
database: 'M4 7c0 1.1 3.6 2 8 2s8-.9 8-2M4 7c0-1.1 3.6-2 8-2s8 .9 8 2M4 7v10c0 1.1 3.6 2 8 2s8-.9 8-2V7M4 12c0 1.1 3.6 2 8 2s8-.9 8-2',
|
|
13
|
+
book: 'M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25',
|
|
13
14
|
};
|
|
14
15
|
|
|
15
16
|
defineProps<{ name: string }>();
|
|
@@ -1419,7 +1419,7 @@ defineExpose({ navigate });
|
|
|
1419
1419
|
<span class="sp-count">{{ item.count }}</span>
|
|
1420
1420
|
</button>
|
|
1421
1421
|
<router-link class="sp-legend-label"
|
|
1422
|
-
:to="{ name: '
|
|
1422
|
+
:to="{ name: 'learn-relationships', hash: '#' + item.type }"
|
|
1423
1423
|
:title="t('sphere.learnAbout') + ': ' + item.label">{{ item.label }}</router-link>
|
|
1424
1424
|
</div>
|
|
1425
1425
|
</div>
|
|
@@ -50,8 +50,8 @@ const topLevelImages = computed(() => fig.value?.images ?? []);
|
|
|
50
50
|
>
|
|
51
51
|
<div v-if="topLevelImages.length" :class="`figure__media figure__media--${layout}`">
|
|
52
52
|
<FigureImages
|
|
53
|
-
:images="topLevelImages"
|
|
54
|
-
:alt="fig.alt"
|
|
53
|
+
:images="[...topLevelImages]"
|
|
54
|
+
:alt="(fig.alt as any)"
|
|
55
55
|
:dataset-id="datasetId"
|
|
56
56
|
:locale="locale"
|
|
57
57
|
:fallback-chain="fallbackChain"
|
|
@@ -76,8 +76,8 @@ const topLevelImages = computed(() => fig.value?.images ?? []);
|
|
|
76
76
|
|
|
77
77
|
<NonVerbalCaption
|
|
78
78
|
:identifier="fig.identifier"
|
|
79
|
-
:caption="fig.caption"
|
|
80
|
-
:description="fig.description"
|
|
79
|
+
:caption="(fig.caption as any)"
|
|
80
|
+
:description="(fig.description as any)"
|
|
81
81
|
:locale="locale"
|
|
82
82
|
:fallback-chain="fallbackChain"
|
|
83
83
|
:description-id="descriptionId"
|
|
@@ -85,7 +85,7 @@ const topLevelImages = computed(() => fig.value?.images ?? []);
|
|
|
85
85
|
|
|
86
86
|
<NonVerbalSources
|
|
87
87
|
v-if="fig.sources?.length"
|
|
88
|
-
:sources="fig.sources"
|
|
88
|
+
:sources="[...(fig.sources || [])]"
|
|
89
89
|
/>
|
|
90
90
|
</figure>
|
|
91
91
|
|
|
@@ -41,7 +41,7 @@ const descriptionId = computed(() => `${anchor.value}-desc`);
|
|
|
41
41
|
>
|
|
42
42
|
<div class="formula__expr-line">
|
|
43
43
|
<FormulaExpression
|
|
44
|
-
:expression="form.expression"
|
|
44
|
+
:expression="(form.expression as any)"
|
|
45
45
|
:notation="(form.notation as FormulaNotation | null)"
|
|
46
46
|
:locale="locale"
|
|
47
47
|
:fallback-chain="fallbackChain"
|
|
@@ -50,8 +50,8 @@ const descriptionId = computed(() => `${anchor.value}-desc`);
|
|
|
50
50
|
|
|
51
51
|
<NonVerbalCaption
|
|
52
52
|
:identifier="form.identifier"
|
|
53
|
-
:caption="form.caption"
|
|
54
|
-
:description="form.description"
|
|
53
|
+
:caption="(form.caption as any)"
|
|
54
|
+
:description="(form.description as any)"
|
|
55
55
|
:locale="locale"
|
|
56
56
|
:fallback-chain="fallbackChain"
|
|
57
57
|
:description-id="descriptionId"
|
|
@@ -59,7 +59,7 @@ const descriptionId = computed(() => `${anchor.value}-desc`);
|
|
|
59
59
|
|
|
60
60
|
<NonVerbalSources
|
|
61
61
|
v-if="form.sources?.length"
|
|
62
|
-
:sources="form.sources"
|
|
62
|
+
:sources="[...(form.sources || [])]"
|
|
63
63
|
/>
|
|
64
64
|
</figure>
|
|
65
65
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* DimensionCard — structured breakdown of a single dimension along
|
|
4
|
+
* which hyperedge members vary. Used on /learn/relationships for the
|
|
5
|
+
* partitive dimensions (presence, count, delimiting).
|
|
6
|
+
*
|
|
7
|
+
* Renders one row per value showing:
|
|
8
|
+
* - the raw value (machine key)
|
|
9
|
+
* - the human label
|
|
10
|
+
* - a short meaning (what it encodes)
|
|
11
|
+
* - a small visual representation (slot — typically a mini SVG)
|
|
12
|
+
*
|
|
13
|
+
* The user's specific concern: "individually show what dimensions
|
|
14
|
+
* there are and how lines look like". This component is the answer.
|
|
15
|
+
*/
|
|
16
|
+
export interface DimensionValue {
|
|
17
|
+
value: string;
|
|
18
|
+
label: string;
|
|
19
|
+
meaning: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
defineProps<{
|
|
23
|
+
id?: string;
|
|
24
|
+
name: string;
|
|
25
|
+
isoReference?: string;
|
|
26
|
+
/** Plain-language summary of what this dimension captures. */
|
|
27
|
+
summary: string;
|
|
28
|
+
values: readonly DimensionValue[];
|
|
29
|
+
}>();
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<template>
|
|
33
|
+
<article :id="id" class="dimension-card card p-5 scroll-mt-20">
|
|
34
|
+
<header class="flex items-baseline justify-between gap-3 mb-2 flex-wrap">
|
|
35
|
+
<h4 class="text-base font-semibold text-ink-800 dark:text-ink-50">{{ name }}</h4>
|
|
36
|
+
<span v-if="isoReference" class="text-xs font-mono text-ink-400 dark:text-ink-500">
|
|
37
|
+
{{ isoReference }}
|
|
38
|
+
</span>
|
|
39
|
+
</header>
|
|
40
|
+
<p class="text-sm text-ink-600 dark:text-ink-200 mb-4">{{ summary }}</p>
|
|
41
|
+
<ul class="dimension-values space-y-3">
|
|
42
|
+
<li v-for="v in values" :key="v.value" class="dimension-value-row">
|
|
43
|
+
<div class="flex items-center gap-3">
|
|
44
|
+
<div class="dimension-visual">
|
|
45
|
+
<slot name="visual" :value="v.value" />
|
|
46
|
+
</div>
|
|
47
|
+
<div class="flex-1 min-w-0">
|
|
48
|
+
<div class="flex items-baseline gap-2 flex-wrap">
|
|
49
|
+
<span class="font-medium text-ink-800 dark:text-ink-100">{{ v.label }}</span>
|
|
50
|
+
<code class="text-xs text-ink-400 dark:text-ink-500 font-mono">{{ v.value }}</code>
|
|
51
|
+
</div>
|
|
52
|
+
<p class="text-sm text-ink-600 dark:text-ink-300 mt-0.5">{{ v.meaning }}</p>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</li>
|
|
56
|
+
</ul>
|
|
57
|
+
</article>
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
<style scoped>
|
|
61
|
+
.dimension-card {
|
|
62
|
+
scroll-margin-top: 5rem;
|
|
63
|
+
}
|
|
64
|
+
.dimension-visual {
|
|
65
|
+
flex-shrink: 0;
|
|
66
|
+
width: 48px;
|
|
67
|
+
display: flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
justify-content: center;
|
|
70
|
+
}
|
|
71
|
+
</style>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* LearnCard — the standard topic container across all /learn pages.
|
|
4
|
+
*
|
|
5
|
+
* Layout: title + ISO reference on top, then a flexible body. Optional
|
|
6
|
+
* named slots:
|
|
7
|
+
* - `diagram` — a small visual (live SVG, badge samples, etc.)
|
|
8
|
+
* - `example` — a concrete real-world example
|
|
9
|
+
* Optional `learnMoreUrl` renders a "Learn more on glossarist.org"
|
|
10
|
+
* link at the bottom — keeps concept-browser reader-focused while
|
|
11
|
+
* bridging to the canonical author docs on glossarist.org.
|
|
12
|
+
*
|
|
13
|
+
* Anchored at the `id` prop so URLs like `/learn/relationships#partitive`
|
|
14
|
+
* deep-link to the right card.
|
|
15
|
+
*/
|
|
16
|
+
defineProps<{
|
|
17
|
+
id?: string;
|
|
18
|
+
title: string;
|
|
19
|
+
isoReference?: string;
|
|
20
|
+
learnMoreUrl?: string;
|
|
21
|
+
learnMoreLabel?: string;
|
|
22
|
+
}>();
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<template>
|
|
26
|
+
<article :id="id" class="learn-card card p-5 scroll-mt-20">
|
|
27
|
+
<header class="flex items-baseline justify-between gap-3 mb-3 flex-wrap">
|
|
28
|
+
<h3 class="text-lg font-semibold text-ink-800 dark:text-ink-50">{{ title }}</h3>
|
|
29
|
+
<span v-if="isoReference" class="text-xs font-mono text-ink-400 dark:text-ink-500">
|
|
30
|
+
{{ isoReference }}
|
|
31
|
+
</span>
|
|
32
|
+
</header>
|
|
33
|
+
<div v-if="$slots.diagram" class="learn-card-diagram mb-3">
|
|
34
|
+
<slot name="diagram" />
|
|
35
|
+
</div>
|
|
36
|
+
<div class="learn-card-body text-sm text-ink-600 dark:text-ink-200">
|
|
37
|
+
<slot />
|
|
38
|
+
</div>
|
|
39
|
+
<div v-if="$slots.example" class="learn-card-example mt-3 pt-3 border-t border-ink-100 dark:border-ink-700 text-xs text-ink-500 dark:text-ink-400">
|
|
40
|
+
<slot name="example" />
|
|
41
|
+
</div>
|
|
42
|
+
<footer v-if="learnMoreUrl" class="learn-card-footer mt-3 text-xs">
|
|
43
|
+
<a :href="learnMoreUrl" target="_blank" rel="noopener"
|
|
44
|
+
class="text-ink-500 dark:text-ink-400 hover:text-ink-800 dark:hover:text-ink-100 underline">
|
|
45
|
+
{{ learnMoreLabel ?? 'Learn more on glossarist.org' }} ↗
|
|
46
|
+
</a>
|
|
47
|
+
</footer>
|
|
48
|
+
</article>
|
|
49
|
+
</template>
|
|
50
|
+
|
|
51
|
+
<style scoped>
|
|
52
|
+
.learn-card {
|
|
53
|
+
scroll-margin-top: 5rem;
|
|
54
|
+
}
|
|
55
|
+
.learn-card-diagram {
|
|
56
|
+
display: flex;
|
|
57
|
+
justify-content: center;
|
|
58
|
+
}
|
|
59
|
+
</style>
|
|
@@ -65,8 +65,8 @@ const markup = computed(() => {
|
|
|
65
65
|
|
|
66
66
|
<NonVerbalCaption
|
|
67
67
|
:identifier="table.identifier"
|
|
68
|
-
:caption="table.caption"
|
|
69
|
-
:description="table.description"
|
|
68
|
+
:caption="(table.caption as any)"
|
|
69
|
+
:description="(table.description as any)"
|
|
70
70
|
:locale="locale"
|
|
71
71
|
:fallback-chain="fallbackChain"
|
|
72
72
|
:description-id="descriptionId"
|
|
@@ -74,7 +74,7 @@ const markup = computed(() => {
|
|
|
74
74
|
|
|
75
75
|
<NonVerbalSources
|
|
76
76
|
v-if="table.sources?.length"
|
|
77
|
-
:sources="table.sources"
|
|
77
|
+
:sources="[...(table.sources || [])]"
|
|
78
78
|
/>
|
|
79
79
|
</figure>
|
|
80
80
|
|
|
@@ -8,12 +8,21 @@ import {
|
|
|
8
8
|
writeTurtleSync,
|
|
9
9
|
collectQuads,
|
|
10
10
|
PREFIXES,
|
|
11
|
-
type ClassInstance,
|
|
12
|
-
type PropValue,
|
|
13
|
-
type Quad,
|
|
14
11
|
} from 'glossarist/rdf';
|
|
12
|
+
import type { Quad } from '@rdfjs/types';
|
|
15
13
|
|
|
16
|
-
export
|
|
14
|
+
export interface PropValue {
|
|
15
|
+
predicate: string;
|
|
16
|
+
values: string[];
|
|
17
|
+
nested?: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ClassInstance {
|
|
21
|
+
classId: string;
|
|
22
|
+
classLabel: string;
|
|
23
|
+
label: string;
|
|
24
|
+
props: PropValue[];
|
|
25
|
+
}
|
|
17
26
|
|
|
18
27
|
export interface RdfDocument {
|
|
19
28
|
sections: ComputedRef<ClassInstance[]>;
|
|
@@ -111,10 +120,10 @@ export function useRdfDocument(
|
|
|
111
120
|
const concept = getConcept();
|
|
112
121
|
const uri = getConceptUri();
|
|
113
122
|
const conceptQuads = collectQuads(
|
|
114
|
-
conceptToQuads(concept, {
|
|
123
|
+
conceptToQuads(concept as any, {
|
|
115
124
|
registerId: options.registerId ?? '',
|
|
116
125
|
uriBase: options.uriBase ?? '',
|
|
117
|
-
}),
|
|
126
|
+
}) as any,
|
|
118
127
|
);
|
|
119
128
|
const provenanceQuads = collectQuads(
|
|
120
129
|
provenanceToQuads({
|
|
@@ -122,7 +131,7 @@ export function useRdfDocument(
|
|
|
122
131
|
serializer: 'concept-browser',
|
|
123
132
|
serializerVersion: SERIALIZER_VERSION,
|
|
124
133
|
generatedAt: new Date().toISOString(),
|
|
125
|
-
}),
|
|
134
|
+
}) as any,
|
|
126
135
|
);
|
|
127
136
|
return [...conceptQuads, ...provenanceQuads];
|
|
128
137
|
});
|
|
@@ -101,14 +101,14 @@ export function useConceptContent(
|
|
|
101
101
|
renderedAnnotations: annotations.map((a: string) => renderContent(a, opts)),
|
|
102
102
|
notes,
|
|
103
103
|
examples,
|
|
104
|
-
sources: lc.sources,
|
|
105
|
-
designations: lc.terms,
|
|
104
|
+
sources: [...lc.sources],
|
|
105
|
+
designations: [...lc.terms],
|
|
106
106
|
renderedDesignations: new Map(lc.terms.map(d => [d.designation, renderContent(d.designation)])),
|
|
107
107
|
entryStatus: lc.entryStatus ?? '',
|
|
108
108
|
classification: lc.classification,
|
|
109
109
|
reviewType: lc.reviewType,
|
|
110
110
|
release: lc.release,
|
|
111
|
-
lineageSourceSimilarity: lc.lineageSourceSimilarity,
|
|
111
|
+
lineageSourceSimilarity: (lc.lineageSourceSimilarity as any),
|
|
112
112
|
lcScript: lc.script,
|
|
113
113
|
lcSystem: lc.system,
|
|
114
114
|
});
|
|
@@ -211,8 +211,8 @@ export function useConceptDiff() {
|
|
|
211
211
|
error.value = null;
|
|
212
212
|
try {
|
|
213
213
|
diffResult.value = diffConcepts(
|
|
214
|
-
oldData ? toDiffableConcept(oldData) : null,
|
|
215
|
-
newData ? toDiffableConcept(newData) : null,
|
|
214
|
+
(oldData ? toDiffableConcept(oldData) : null) as any,
|
|
215
|
+
(newData ? toDiffableConcept(newData) : null) as any,
|
|
216
216
|
);
|
|
217
217
|
} catch (e: unknown) {
|
|
218
218
|
error.value = e instanceof Error ? e.message : String(e);
|
|
@@ -7,7 +7,7 @@ import type { Concept, RelatedConcept, ConceptRef } from 'glossarist';
|
|
|
7
7
|
import { PartitiveHyperedge } from 'glossarist';
|
|
8
8
|
import { GenericHyperedge } from 'glossarist/models';
|
|
9
9
|
import type {
|
|
10
|
-
|
|
10
|
+
PartitiveHyperedge as GlsPartitiveRelation,
|
|
11
11
|
PartitiveMember as GlsPartitiveMember,
|
|
12
12
|
} from 'glossarist/models';
|
|
13
13
|
import type {
|
|
@@ -39,7 +39,7 @@ export interface EdgeDisplay {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export function useConceptEdges(
|
|
42
|
-
concept: ComputedRef<
|
|
42
|
+
concept: ComputedRef<any>,
|
|
43
43
|
registerId: ComputedRef<string>,
|
|
44
44
|
manifest: ComputedRef<Manifest | null | undefined>,
|
|
45
45
|
edges: ComputedRef<GraphEdge[]>,
|
|
@@ -138,7 +138,7 @@ export function useConceptEdges(
|
|
|
138
138
|
// Concept-level related concepts (managed concept cross-references)
|
|
139
139
|
const conceptRelated = computed(() => {
|
|
140
140
|
if (!concept.value) return [];
|
|
141
|
-
const direct = concept.value.relatedConcepts?.filter(rc => !INVERSE_RELATIONSHIPS[rc.type]) ?? [];
|
|
141
|
+
const direct = concept.value.relatedConcepts?.filter((rc: any) => !INVERSE_RELATIONSHIPS[rc.type]) ?? [];
|
|
142
142
|
const derived = incomingEdges.value
|
|
143
143
|
.filter(e => INVERSE_RELATIONSHIPS[e.type])
|
|
144
144
|
.map(e => {
|
package/src/config/page-types.ts
CHANGED
|
@@ -35,7 +35,7 @@ export const PAGE_TYPES: readonly PageTypeDefinition[] = [
|
|
|
35
35
|
{ type: 'stats', route: 'stats', title: 'Statistics', icon: 'chart', scope: 'dataset', featureFlag: '!stats', autoSynthesize: true },
|
|
36
36
|
{ type: 'sources', route: 'sources', title: 'Sources', icon: 'database', scope: 'dataset', autoSynthesize: true },
|
|
37
37
|
{ type: 'about', route: 'about', title: 'About', icon: 'info', scope: 'dataset', featureFlag: '!about', autoSynthesize: true },
|
|
38
|
-
{ type: '
|
|
38
|
+
{ type: 'learn', route: 'learn', title: 'Learn', icon: 'book', scope: 'global', autoSynthesize: true },
|
|
39
39
|
] as const;
|
|
40
40
|
|
|
41
41
|
export type BuiltinPageType = typeof PAGE_TYPES[number]['type'];
|
package/src/i18n/locales/eng.yml
CHANGED
|
@@ -13,16 +13,121 @@ nav.sources: Sources
|
|
|
13
13
|
nav.navigation: Navigation
|
|
14
14
|
nav.datasets: Datasets
|
|
15
15
|
nav.relationTypes: Relation Types
|
|
16
|
+
nav.learn: Learn
|
|
16
17
|
|
|
17
|
-
#
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
# Learn section (reader-focused teaching)
|
|
19
|
+
learn.intro: This section explains what you see on this site and what each label means. For canonical methodology docs (authoring datasets, ISO alignment), see glossarist.org.
|
|
20
|
+
learn.glossaristOrgNote: Methodology documentation for dataset authors lives on glossarist.org.
|
|
21
|
+
learn.example: Example
|
|
22
|
+
learn.learnMore: Learn more on glossarist.org
|
|
23
|
+
learn.relationships.title: Relationships
|
|
24
|
+
learn.relationships.short: How to read the bilateral edges, partitive rake, and general pipe-and-thread.
|
|
25
|
+
learn.relationships.intro: Every line and label on the Relation Sphere, the detail page, and the graph view maps to a typed semantic relation. This page explains what each kind means and how to read its visual encoding.
|
|
26
|
+
learn.relationships.bilateralSection: Bilateral relations (one-to-one)
|
|
27
|
+
learn.relationships.bilateralIntro: One-to-one typed relations between two concepts. Drawn as straight colored lines with arrowheads in the sphere.
|
|
28
|
+
learn.relationships.partitiveSection: Partitive hyperedge (one-to-many)
|
|
29
|
+
learn.relationships.partitiveTitle: partitive relation
|
|
30
|
+
learn.relationships.partitiveBody: A whole/part decomposition. The comprehensive concept is the whole; each member is a part. Rendered as a rake — a stem from the comprehensive to a perpendicular spine, with teeth dropping to each partitive member.
|
|
31
|
+
learn.relationships.generalSection: General hyperedge (one-to-many)
|
|
32
|
+
learn.relationships.generalTitle: general relation
|
|
33
|
+
learn.relationships.generalBody: A genus/species decomposition. The comprehensive concept is the genus; each member is a coordinate species differing along a shared dimension. Rendered as a tree branch — a thick parent pipe from the comprehensive to a middle node, with thin threads radiating to each member.
|
|
34
|
+
learn.relationships.criterionTitle: Criterion of subdivision
|
|
35
|
+
learn.relationships.criterionBody: "The dimension along which coordinate concepts differ. Shown once on the parent pipe body. Optional: when no criterion is described, no label is drawn."
|
|
36
|
+
learn.relationships.thickThinTitle: Thick/thin hierarchy
|
|
37
|
+
learn.relationships.thickThinBody: ISO 704 traditionally uses thicker lines to mark different criteria of subdivision (multidimensionality). The pipe-and-thread honors this with a thick parent pipe (3.2px) and thinner child threads (1.0px) — the tree-branch metaphor (trunk vs twigs).
|
|
38
|
+
learn.dimensions.sectionTitle: Partitive dimensions (how to read the rake teeth)
|
|
39
|
+
learn.dimensions.presence.title: Presence
|
|
40
|
+
learn.dimensions.presence.summary: Whether the part must be present (compulsory) or may be absent (optional).
|
|
41
|
+
learn.dimensions.presence.required.label: required
|
|
42
|
+
learn.dimensions.presence.required.meaning: The part must be present. Drawn as a solid line.
|
|
43
|
+
learn.dimensions.presence.optional.label: optional
|
|
44
|
+
learn.dimensions.presence.optional.meaning: The part may be absent. Drawn as a dashed line.
|
|
45
|
+
learn.dimensions.count.title: Count
|
|
46
|
+
learn.dimensions.count.summary: How many instances of the part occur in the whole.
|
|
47
|
+
learn.dimensions.count.exactly_one.label: exactly one
|
|
48
|
+
learn.dimensions.count.exactly_one.meaning: One and only one. Drawn as a single line.
|
|
49
|
+
learn.dimensions.count.at_least_one.label: at least one
|
|
50
|
+
learn.dimensions.count.at_least_one.meaning: One or more. Drawn as a double line, the secondary dashed ("possibly more").
|
|
51
|
+
learn.dimensions.count.multiple.label: multiple
|
|
52
|
+
learn.dimensions.count.multiple.meaning: Two or more. Drawn as a double line, both the same style as the primary.
|
|
53
|
+
learn.dimensions.delimiting.title: Delimiting
|
|
54
|
+
learn.dimensions.delimiting.summary: Whether the part reflects a delimiting characteristic — one that distinguishes the whole from coordinate concepts.
|
|
55
|
+
learn.dimensions.delimiting.false.label: not delimiting
|
|
56
|
+
learn.dimensions.delimiting.false.meaning: An ordinary part. Drawn at normal stroke width (1.5px).
|
|
57
|
+
learn.dimensions.delimiting.true.label: delimiting
|
|
58
|
+
learn.dimensions.delimiting.true.meaning: The part is essential to the whole's identity. Drawn at 3× normal stroke width (4.5px).
|
|
59
|
+
learn.dimensions.combinationsTitle: Valid multiplicity combinations
|
|
60
|
+
learn.dimensions.combinationsDescription: ISO 704 description
|
|
61
|
+
learn.dimensions.combinationsModel: Our model
|
|
62
|
+
learn.dimensions.combinationsVisual: Visual
|
|
63
|
+
learn.dimensions.combo.compulsory: compulsory
|
|
64
|
+
learn.dimensions.combo.atLeastOne: at least one
|
|
65
|
+
learn.dimensions.combo.optional: optional
|
|
66
|
+
learn.dimensions.combo.optionalMultiple: optional multiple
|
|
67
|
+
learn.dimensions.combo.compulsoryMultiple: compulsory multiple
|
|
68
|
+
learn.dimensions.invalidDescription: (invalid)
|
|
69
|
+
learn.dimensions.invalidModel: optional + at_least_one
|
|
70
|
+
learn.dimensions.invalidReason: Vacuous — collapses to optional + multiple (0..*). Rejected by glossarist-js.
|
|
71
|
+
learn.designations.title: Designations
|
|
72
|
+
learn.designations.short: Terms and symbols — preferred, admitted, deprecated, full form, abbreviation, acronym, initialism.
|
|
73
|
+
learn.designations.intro: Concepts are designated by terms, proper names, and symbols. This page explains the vocabulary you'll see on each concept page.
|
|
74
|
+
learn.designations.normativeSection: Normative status
|
|
75
|
+
learn.designations.normativeIntro: Each term carries a normative rating from the standardizing body. There can be MORE THAN ONE of each rating — preferred terms aren't unique.
|
|
76
|
+
learn.designations.preferred.label: preferred term
|
|
77
|
+
learn.designations.preferred.meaning: The primary term for the concept, rated by a standardizing body.
|
|
78
|
+
learn.designations.preferred.multipleNote: There can be more than one preferred term.
|
|
79
|
+
learn.designations.admitted.label: admitted term
|
|
80
|
+
learn.designations.admitted.meaning: A synonym for the preferred term, but not rated as preferred.
|
|
81
|
+
learn.designations.admitted.multipleNote: There can be more than one admitted term.
|
|
82
|
+
learn.designations.deprecated.label: deprecated term
|
|
83
|
+
learn.designations.deprecated.meaning: A synonym for the preferred term, but rated as undesired.
|
|
84
|
+
learn.designations.deprecated.multipleNote: There can be more than one deprecated term.
|
|
85
|
+
learn.designations.kindsSection: Kinds and forms of term
|
|
86
|
+
learn.designations.fullForm.label: full form
|
|
87
|
+
learn.designations.fullForm.meaning: The complete representation of a designation.
|
|
88
|
+
learn.designations.abbreviatedForm.label: abbreviated form
|
|
89
|
+
learn.designations.abbreviatedForm.meaning: A representation resulting from the omission of any part of the full form.
|
|
90
|
+
learn.designations.abbreviatedForm.multipleNote: For some full forms, two or more abbreviated forms may exist.
|
|
91
|
+
learn.designations.borrowed.label: borrowed term
|
|
92
|
+
learn.designations.borrowed.meaning: A term taken from another language or from another domain.
|
|
93
|
+
learn.designations.variant.label: variant
|
|
94
|
+
learn.designations.variant.meaning: One of the alternative forms of a designation (e.g. spelling differences across regions).
|
|
95
|
+
learn.designations.typesSection: Designation types
|
|
96
|
+
learn.designations.typesIntro: Three top-level types — terms, proper names, and symbols. Within terms, abbreviations split further into acronyms vs initialisms based on how they're pronounced.
|
|
97
|
+
learn.designations.term.label: term (expression)
|
|
98
|
+
learn.designations.term.meaning: A spoken or written designation — the most common type.
|
|
99
|
+
learn.designations.acronym.label: acronym
|
|
100
|
+
learn.designations.acronym.meaning: An abbreviated form pronounced as a single word.
|
|
101
|
+
learn.designations.initialism.label: initialism
|
|
102
|
+
learn.designations.initialism.meaning: An abbreviated form pronounced letter by letter.
|
|
103
|
+
learn.designations.symbol.label: symbol
|
|
104
|
+
learn.designations.symbol.meaning: A graphical or mathematical designation governed by ISO 80000 / IEC 60027.
|
|
105
|
+
learn.statuses.title: Statuses
|
|
106
|
+
learn.statuses.short: Entry status (valid/withdrawn/draft), normative status, source status — what each badge means.
|
|
107
|
+
learn.statuses.intro: Status badges appear throughout the site. This page is a quick reference for what each one means.
|
|
108
|
+
learn.statuses.entrySection: Entry status
|
|
109
|
+
learn.statuses.entry.valid.label: valid
|
|
110
|
+
learn.statuses.entry.valid.meaning: The concept entry is currently in force.
|
|
111
|
+
learn.statuses.entry.withdrawn.label: withdrawn
|
|
112
|
+
learn.statuses.entry.withdrawn.meaning: The entry has been removed from active use.
|
|
113
|
+
learn.statuses.entry.draft.label: draft
|
|
114
|
+
learn.statuses.entry.draft.meaning: The entry is under development and not yet finalized.
|
|
115
|
+
learn.statuses.entry.superseded.label: superseded
|
|
116
|
+
learn.statuses.entry.superseded.meaning: The entry has been replaced by a newer one.
|
|
117
|
+
learn.statuses.normativeSection: Normative status
|
|
118
|
+
learn.statuses.normativeTitle: preferred / admitted / deprecated
|
|
119
|
+
learn.statuses.normativeSummary: Per-term rating (preferred, admitted, deprecated). Each rating can apply to more than one term per concept.
|
|
120
|
+
learn.statuses.normativeGoDeeper: See designation types for examples
|
|
121
|
+
learn.statuses.sourceSection: Source status
|
|
122
|
+
learn.statuses.sourceIntro: Each citation carries a status describing how faithfully it reproduces the source.
|
|
123
|
+
learn.statuses.source.identical.label: identical
|
|
124
|
+
learn.statuses.source.identical.meaning: The definition matches the source verbatim.
|
|
125
|
+
learn.statuses.source.modified.label: modified
|
|
126
|
+
learn.statuses.source.modified.meaning: The definition is adapted from the source with editorial changes.
|
|
127
|
+
learn.statuses.source.restyled.label: restyled
|
|
128
|
+
learn.statuses.source.restyled.meaning: The definition preserves the source meaning but rewords it heavily.
|
|
129
|
+
learn.statuses.source.lineage.label: lineage
|
|
130
|
+
learn.statuses.source.lineage.meaning: The source is the historical ancestor of this concept, not a direct citation.
|
|
26
131
|
|
|
27
132
|
# Home page
|
|
28
133
|
home.search: Search
|
package/src/i18n/locales/fra.yml
CHANGED
|
@@ -12,16 +12,121 @@ nav.about: À propos
|
|
|
12
12
|
nav.navigation: Navigation
|
|
13
13
|
nav.datasets: Jeux de données
|
|
14
14
|
nav.relationTypes: Types de relations
|
|
15
|
+
nav.learn: Apprendre
|
|
15
16
|
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
# Section « Apprendre » (enseignement orienté lecteur)
|
|
18
|
+
learn.intro: Cette section explique ce que vous voyez sur ce site et ce que chaque étiquette signifie. Pour la documentation méthodologique canonique (rédaction de jeux de données, alignement ISO), consultez glossarist.org.
|
|
19
|
+
learn.glossaristOrgNote: La documentation méthodologique pour les auteurs de jeux de données se trouve sur glossarist.org.
|
|
20
|
+
learn.example: Exemple
|
|
21
|
+
learn.learnMore: En savoir plus sur glossarist.org
|
|
22
|
+
learn.relationships.title: Relations
|
|
23
|
+
learn.relationships.short: Comment lire les arêtes bilatérales, le râteau partitif, et le tuyau-fil générique.
|
|
24
|
+
learn.relationships.intro: Chaque ligne et étiquette de la Sphère de relations, de la page de détail et de la vue graphe correspond à une relation sémantique typée. Cette page explique ce que chaque type signifie et comment lire son encodage visuel.
|
|
25
|
+
learn.relationships.bilateralSection: Relations bilatérales (un-un)
|
|
26
|
+
learn.relationships.bilateralIntro: Relations typées un-un entre deux concepts. Dessinées sous forme de lignes droites colorées avec flèches dans la sphère.
|
|
27
|
+
learn.relationships.partitiveSection: Hyper-arête partitive (un-plusieurs)
|
|
28
|
+
learn.relationships.partitiveTitle: relation partitive
|
|
29
|
+
learn.relationships.partitiveBody: Décomposition tout/partie. Le concept englobant est le tout ; chaque membre est une partie. Rendu sous forme de râteau — une tige depuis l'englobant vers une colonne perpendiculaire, avec des dents descendant vers chaque membre.
|
|
30
|
+
learn.relationships.generalSection: Hyper-arête générique (un-plusieurs)
|
|
31
|
+
learn.relationships.generalTitle: relation générique
|
|
32
|
+
learn.relationships.generalBody: Décomposition genre/espèce. Le concept englobant est le genre ; chaque membre est une espèce coordonnée différant selon une dimension partagée. Rendu sous forme de branche d'arbre — un tuyau parent épais depuis l'englobant vers un nœud central, avec des fils fins rayonnant vers chaque membre.
|
|
33
|
+
learn.relationships.criterionTitle: Critère de subdivision
|
|
34
|
+
learn.relationships.criterionBody: "La dimension selon laquelle les concepts coordonnés diffèrent. Affichée une fois sur le corps du tuyau parent. Optionnelle : si aucun critère n'est décrit, aucune étiquette n'est dessinée."
|
|
35
|
+
learn.relationships.thickThinTitle: Hiérarchie épais/mince
|
|
36
|
+
learn.relationships.thickThinBody: ISO 704 utilise traditionnellement des lignes plus épaisses pour marquer différents critères de subdivision (multidimensionalité). Le tuyau-fil respecte cela avec un tuyau parent épais (3,2 px) et des fils enfants plus fins (1,0 px) — la métaphore de la branche d'arbre (tronc vs rameaux).
|
|
37
|
+
learn.dimensions.sectionTitle: Dimensions partitives (comment lire les dents du râteau)
|
|
38
|
+
learn.dimensions.presence.title: Présence
|
|
39
|
+
learn.dimensions.presence.summary: Indique si la partie doit être présente (obligatoire) ou peut être absente (optionnelle).
|
|
40
|
+
learn.dimensions.presence.required.label: obligatoire
|
|
41
|
+
learn.dimensions.presence.required.meaning: La partie doit être présente. Dessinée en ligne pleine.
|
|
42
|
+
learn.dimensions.presence.optional.label: optionnelle
|
|
43
|
+
learn.dimensions.presence.optional.meaning: La partie peut être absente. Dessinée en ligne pointillée.
|
|
44
|
+
learn.dimensions.count.title: Nombre
|
|
45
|
+
learn.dimensions.count.summary: Combien d'instances de la partie apparaissent dans le tout.
|
|
46
|
+
learn.dimensions.count.exactly_one.label: exactement un
|
|
47
|
+
learn.dimensions.count.exactly_one.meaning: Un et un seul. Dessiné en ligne simple.
|
|
48
|
+
learn.dimensions.count.at_least_one.label: au moins un
|
|
49
|
+
learn.dimensions.count.at_least_one.meaning: Un ou plusieurs. Dessiné en ligne double, la secondaire pointillée (« possiblement plus »).
|
|
50
|
+
learn.dimensions.count.multiple.label: plusieurs
|
|
51
|
+
learn.dimensions.count.multiple.meaning: Deux ou plusieurs. Dessiné en ligne double, les deux de même style que la primaire.
|
|
52
|
+
learn.dimensions.delimiting.title: Délimitation
|
|
53
|
+
learn.dimensions.delimiting.summary: Indique si la partie reflète une caractéristique délimitante — qui distingue le tout des concepts coordonnés.
|
|
54
|
+
learn.dimensions.delimiting.false.label: non délimitante
|
|
55
|
+
learn.dimensions.delimiting.false.meaning: Une partie ordinaire. Dessinée à largeur de trait normale (1,5 px).
|
|
56
|
+
learn.dimensions.delimiting.true.label: délimitante
|
|
57
|
+
learn.dimensions.delimiting.true.meaning: La partie est essentielle à l'identité du tout. Dessinée à largeur de trait 3× (4,5 px).
|
|
58
|
+
learn.dimensions.combinationsTitle: Combinaisons de multiplicité valides
|
|
59
|
+
learn.dimensions.combinationsDescription: Description ISO 704
|
|
60
|
+
learn.dimensions.combinationsModel: Notre modèle
|
|
61
|
+
learn.dimensions.combinationsVisual: Visuel
|
|
62
|
+
learn.dimensions.combo.compulsory: obligatoire
|
|
63
|
+
learn.dimensions.combo.atLeastOne: au moins un
|
|
64
|
+
learn.dimensions.combo.optional: optionnel
|
|
65
|
+
learn.dimensions.combo.optionalMultiple: optionnel multiple
|
|
66
|
+
learn.dimensions.combo.compulsoryMultiple: obligatoire multiple
|
|
67
|
+
learn.dimensions.invalidDescription: (invalide)
|
|
68
|
+
learn.dimensions.invalidModel: optional + at_least_one
|
|
69
|
+
learn.dimensions.invalidReason: Vacuous — se réduit à optional + multiple (0..*). Rejeté par glossarist-js.
|
|
70
|
+
learn.designations.title: Désignations
|
|
71
|
+
learn.designations.short: Termes et symboles — préféré, admis, déconseillé, forme complète, abréviation, acronyme, sigle.
|
|
72
|
+
learn.designations.intro: Les concepts sont désignés par des termes, noms propres et symboles. Cette page explique le vocabulaire que vous verrez sur chaque page de concept.
|
|
73
|
+
learn.designations.normativeSection: Statut normatif
|
|
74
|
+
learn.designations.normativeIntro: Chaque terme porte un statut normatif attribué par l'organisme de normalisation. IL PEUT Y AVOIR PLUS D'UN terme de chaque statut — les termes préférés ne sont pas uniques.
|
|
75
|
+
learn.designations.preferred.label: terme préféré
|
|
76
|
+
learn.designations.preferred.meaning: Le terme principal pour le concept, attribué par l'organisme de normalisation.
|
|
77
|
+
learn.designations.preferred.multipleNote: Il peut y avoir plus d'un terme préféré.
|
|
78
|
+
learn.designations.admitted.label: terme admis
|
|
79
|
+
learn.designations.admitted.meaning: Un synonyme du terme préféré, mais non retenu comme préféré.
|
|
80
|
+
learn.designations.admitted.multipleNote: Il peut y avoir plus d'un terme admis.
|
|
81
|
+
learn.designations.deprecated.label: terme déconseillé
|
|
82
|
+
learn.designations.deprecated.meaning: Un synonyme du terme préféré, mais jugé indésirable.
|
|
83
|
+
learn.designations.deprecated.multipleNote: Il peut y avoir plus d'un terme déconseillé.
|
|
84
|
+
learn.designations.kindsSection: Types et formes de terme
|
|
85
|
+
learn.designations.fullForm.label: forme complète
|
|
86
|
+
learn.designations.fullForm.meaning: La représentation complète d'une désignation.
|
|
87
|
+
learn.designations.abbreviatedForm.label: forme abrégée
|
|
88
|
+
learn.designations.abbreviatedForm.meaning: Une représentation résultant de l'omission d'une partie de la forme complète.
|
|
89
|
+
learn.designations.abbreviatedForm.multipleNote: Pour certaines formes complètes, deux ou plusieurs formes abrégées peuvent exister.
|
|
90
|
+
learn.designations.borrowed.label: terme emprunté
|
|
91
|
+
learn.designations.borrowed.meaning: Un terme pris depuis une autre langue ou un autre domaine.
|
|
92
|
+
learn.designations.variant.label: variante
|
|
93
|
+
learn.designations.variant.meaning: L'une des formes alternatives d'une désignation (ex. différences d'orthographe entre régions).
|
|
94
|
+
learn.designations.typesSection: Types de désignation
|
|
95
|
+
learn.designations.typesIntro: Trois types de plus haut niveau — termes, noms propres et symboles. Pour les termes, les abréviations se divisent en acronymes vs sigles selon la prononciation.
|
|
96
|
+
learn.designations.term.label: terme (expression)
|
|
97
|
+
learn.designations.term.meaning: Une désignation parlée ou écrite — le type le plus courant.
|
|
98
|
+
learn.designations.acronym.label: acronyme
|
|
99
|
+
learn.designations.acronym.meaning: Une forme abrégée prononcée comme un seul mot.
|
|
100
|
+
learn.designations.initialism.label: sigle
|
|
101
|
+
learn.designations.initialism.meaning: Une forme abrégée prononcée lettre par lettre.
|
|
102
|
+
learn.designations.symbol.label: symbole
|
|
103
|
+
learn.designations.symbol.meaning: Une désignation graphique ou mathématique régie par ISO 80000 / IEC 60027.
|
|
104
|
+
learn.statuses.title: Statuts
|
|
105
|
+
learn.statuses.short: Statut d'entrée (valide/retiré/brouillon), statut normatif, statut de source — ce que chaque badge signifie.
|
|
106
|
+
learn.statuses.intro: Les badges de statut apparaissent partout sur le site. Cette page est une référence rapide pour leur signification.
|
|
107
|
+
learn.statuses.entrySection: Statut d'entrée
|
|
108
|
+
learn.statuses.entry.valid.label: valide
|
|
109
|
+
learn.statuses.entry.valid.meaning: L'entrée du concept est actuellement en vigueur.
|
|
110
|
+
learn.statuses.entry.withdrawn.label: retiré
|
|
111
|
+
learn.statuses.entry.withdrawn.meaning: L'entrée a été retirée de l'usage actif.
|
|
112
|
+
learn.statuses.entry.draft.label: brouillon
|
|
113
|
+
learn.statuses.entry.draft.meaning: L'entrée est en cours de développement et non finalisée.
|
|
114
|
+
learn.statuses.entry.superseded.label: remplacé
|
|
115
|
+
learn.statuses.entry.superseded.meaning: L'entrée a été remplacée par une plus récente.
|
|
116
|
+
learn.statuses.normativeSection: Statut normatif
|
|
117
|
+
learn.statuses.normativeTitle: préféré / admis / déconseillé
|
|
118
|
+
learn.statuses.normativeSummary: Statut par terme (préféré, admis, déconseillé). Chaque statut peut s'appliquer à plus d'un terme par concept.
|
|
119
|
+
learn.statuses.normativeGoDeeper: Voir les types de désignation pour des exemples
|
|
120
|
+
learn.statuses.sourceSection: Statut de source
|
|
121
|
+
learn.statuses.sourceIntro: Chaque citation porte un statut décrivant la fidélité de sa reproduction de la source.
|
|
122
|
+
learn.statuses.source.identical.label: identique
|
|
123
|
+
learn.statuses.source.identical.meaning: La définition correspond verbatim à la source.
|
|
124
|
+
learn.statuses.source.modified.label: modifié
|
|
125
|
+
learn.statuses.source.modified.meaning: La définition est adaptée de la source avec des modifications éditoriales.
|
|
126
|
+
learn.statuses.source.restyled.label: reformulé
|
|
127
|
+
learn.statuses.source.restyled.meaning: La définition préserve le sens de la source mais la reformule largement.
|
|
128
|
+
learn.statuses.source.lineage.label: lignage
|
|
129
|
+
learn.statuses.source.lineage.meaning: La source est l'ancêtre historique de ce concept, pas une citation directe.
|
|
25
130
|
|
|
26
131
|
# Home page
|
|
27
132
|
home.search: Rechercher
|