@contractspec/module.learning-journey 2.4.0 → 2.5.0
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/dist/browser/engines/index.js +149 -0
- package/dist/browser/engines/xp.js +149 -0
- package/dist/browser/entities/index.js +4 -0
- package/dist/browser/entities/learner.js +4 -0
- package/dist/browser/i18n/catalogs/en.js +43 -0
- package/dist/browser/i18n/catalogs/es.js +43 -0
- package/dist/browser/i18n/catalogs/fr.js +43 -0
- package/dist/browser/i18n/catalogs/index.js +127 -0
- package/dist/browser/i18n/index.js +169 -0
- package/dist/browser/i18n/keys.js +16 -0
- package/dist/browser/i18n/locale.js +13 -0
- package/dist/browser/i18n/messages.js +139 -0
- package/dist/browser/index.js +153 -0
- package/dist/engines/index.js +149 -0
- package/dist/engines/xp.d.ts +7 -0
- package/dist/engines/xp.js +149 -0
- package/dist/entities/index.d.ts +1 -0
- package/dist/entities/index.js +4 -0
- package/dist/entities/learner.d.ts +2 -0
- package/dist/entities/learner.js +4 -0
- package/dist/i18n/catalogs/en.d.ts +6 -0
- package/dist/i18n/catalogs/en.js +44 -0
- package/dist/i18n/catalogs/es.d.ts +6 -0
- package/dist/i18n/catalogs/es.js +44 -0
- package/dist/i18n/catalogs/fr.d.ts +6 -0
- package/dist/i18n/catalogs/fr.js +44 -0
- package/dist/i18n/catalogs/index.d.ts +8 -0
- package/dist/i18n/catalogs/index.js +128 -0
- package/dist/i18n/i18n.test.d.ts +1 -0
- package/dist/i18n/index.d.ts +14 -0
- package/dist/i18n/index.js +170 -0
- package/dist/i18n/keys.d.ts +25 -0
- package/dist/i18n/keys.js +17 -0
- package/dist/i18n/locale.d.ts +8 -0
- package/dist/i18n/locale.js +14 -0
- package/dist/i18n/messages.d.ts +14 -0
- package/dist/i18n/messages.js +140 -0
- package/dist/index.js +153 -0
- package/dist/node/engines/index.js +149 -0
- package/dist/node/engines/xp.js +149 -0
- package/dist/node/entities/index.js +4 -0
- package/dist/node/entities/learner.js +4 -0
- package/dist/node/i18n/catalogs/en.js +43 -0
- package/dist/node/i18n/catalogs/es.js +43 -0
- package/dist/node/i18n/catalogs/fr.js +43 -0
- package/dist/node/i18n/catalogs/index.js +127 -0
- package/dist/node/i18n/index.js +169 -0
- package/dist/node/i18n/keys.js +16 -0
- package/dist/node/i18n/locale.js +13 -0
- package/dist/node/i18n/messages.js +139 -0
- package/dist/node/index.js +153 -0
- package/package.json +146 -5
|
@@ -192,6 +192,141 @@ class SRSEngine {
|
|
|
192
192
|
}
|
|
193
193
|
var srsEngine = new SRSEngine;
|
|
194
194
|
|
|
195
|
+
// src/i18n/catalogs/en.ts
|
|
196
|
+
import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
|
|
197
|
+
var enMessages = defineTranslation({
|
|
198
|
+
meta: {
|
|
199
|
+
key: "learning-journey.messages",
|
|
200
|
+
version: "1.0.0",
|
|
201
|
+
domain: "learning-journey",
|
|
202
|
+
description: "XP source labels for the learning-journey module",
|
|
203
|
+
owners: ["platform"],
|
|
204
|
+
stability: "experimental"
|
|
205
|
+
},
|
|
206
|
+
locale: "en",
|
|
207
|
+
fallback: "en",
|
|
208
|
+
messages: {
|
|
209
|
+
"xp.source.base": {
|
|
210
|
+
value: "Base",
|
|
211
|
+
description: "XP breakdown label for base XP"
|
|
212
|
+
},
|
|
213
|
+
"xp.source.scoreBonus": {
|
|
214
|
+
value: "Score Bonus",
|
|
215
|
+
description: "XP breakdown label for score-based bonus"
|
|
216
|
+
},
|
|
217
|
+
"xp.source.perfectScore": {
|
|
218
|
+
value: "Perfect Score",
|
|
219
|
+
description: "XP breakdown label for perfect score bonus"
|
|
220
|
+
},
|
|
221
|
+
"xp.source.firstAttempt": {
|
|
222
|
+
value: "First Attempt",
|
|
223
|
+
description: "XP breakdown label for first attempt bonus"
|
|
224
|
+
},
|
|
225
|
+
"xp.source.retryPenalty": {
|
|
226
|
+
value: "Retry Penalty",
|
|
227
|
+
description: "XP breakdown label for retry penalty"
|
|
228
|
+
},
|
|
229
|
+
"xp.source.streakBonus": {
|
|
230
|
+
value: "Streak Bonus",
|
|
231
|
+
description: "XP breakdown label for streak bonus"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
// src/i18n/catalogs/fr.ts
|
|
237
|
+
import { defineTranslation as defineTranslation2 } from "@contractspec/lib.contracts-spec/translations";
|
|
238
|
+
var frMessages = defineTranslation2({
|
|
239
|
+
meta: {
|
|
240
|
+
key: "learning-journey.messages",
|
|
241
|
+
version: "1.0.0",
|
|
242
|
+
domain: "learning-journey",
|
|
243
|
+
description: "XP source labels (French)",
|
|
244
|
+
owners: ["platform"],
|
|
245
|
+
stability: "experimental"
|
|
246
|
+
},
|
|
247
|
+
locale: "fr",
|
|
248
|
+
fallback: "en",
|
|
249
|
+
messages: {
|
|
250
|
+
"xp.source.base": {
|
|
251
|
+
value: "Base",
|
|
252
|
+
description: "XP breakdown label for base XP"
|
|
253
|
+
},
|
|
254
|
+
"xp.source.scoreBonus": {
|
|
255
|
+
value: "Bonus de score",
|
|
256
|
+
description: "XP breakdown label for score-based bonus"
|
|
257
|
+
},
|
|
258
|
+
"xp.source.perfectScore": {
|
|
259
|
+
value: "Score parfait",
|
|
260
|
+
description: "XP breakdown label for perfect score bonus"
|
|
261
|
+
},
|
|
262
|
+
"xp.source.firstAttempt": {
|
|
263
|
+
value: "Premier essai",
|
|
264
|
+
description: "XP breakdown label for first attempt bonus"
|
|
265
|
+
},
|
|
266
|
+
"xp.source.retryPenalty": {
|
|
267
|
+
value: "Pénalité de réessai",
|
|
268
|
+
description: "XP breakdown label for retry penalty"
|
|
269
|
+
},
|
|
270
|
+
"xp.source.streakBonus": {
|
|
271
|
+
value: "Bonus de série",
|
|
272
|
+
description: "XP breakdown label for streak bonus"
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
// src/i18n/catalogs/es.ts
|
|
278
|
+
import { defineTranslation as defineTranslation3 } from "@contractspec/lib.contracts-spec/translations";
|
|
279
|
+
var esMessages = defineTranslation3({
|
|
280
|
+
meta: {
|
|
281
|
+
key: "learning-journey.messages",
|
|
282
|
+
version: "1.0.0",
|
|
283
|
+
domain: "learning-journey",
|
|
284
|
+
description: "XP source labels (Spanish)",
|
|
285
|
+
owners: ["platform"],
|
|
286
|
+
stability: "experimental"
|
|
287
|
+
},
|
|
288
|
+
locale: "es",
|
|
289
|
+
fallback: "en",
|
|
290
|
+
messages: {
|
|
291
|
+
"xp.source.base": {
|
|
292
|
+
value: "Base",
|
|
293
|
+
description: "XP breakdown label for base XP"
|
|
294
|
+
},
|
|
295
|
+
"xp.source.scoreBonus": {
|
|
296
|
+
value: "Bonificación por puntuación",
|
|
297
|
+
description: "XP breakdown label for score-based bonus"
|
|
298
|
+
},
|
|
299
|
+
"xp.source.perfectScore": {
|
|
300
|
+
value: "Puntuación perfecta",
|
|
301
|
+
description: "XP breakdown label for perfect score bonus"
|
|
302
|
+
},
|
|
303
|
+
"xp.source.firstAttempt": {
|
|
304
|
+
value: "Primer intento",
|
|
305
|
+
description: "XP breakdown label for first attempt bonus"
|
|
306
|
+
},
|
|
307
|
+
"xp.source.retryPenalty": {
|
|
308
|
+
value: "Penalización por reintento",
|
|
309
|
+
description: "XP breakdown label for retry penalty"
|
|
310
|
+
},
|
|
311
|
+
"xp.source.streakBonus": {
|
|
312
|
+
value: "Bonificación por racha",
|
|
313
|
+
description: "XP breakdown label for streak bonus"
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
// src/i18n/messages.ts
|
|
319
|
+
import {
|
|
320
|
+
createI18nFactory
|
|
321
|
+
} from "@contractspec/lib.contracts-spec/translations";
|
|
322
|
+
var factory = createI18nFactory({
|
|
323
|
+
specKey: "learning-journey.messages",
|
|
324
|
+
catalogs: [enMessages, frMessages, esMessages]
|
|
325
|
+
});
|
|
326
|
+
var createLearningJourneyI18n = factory.create;
|
|
327
|
+
var getDefaultI18n = factory.getDefault;
|
|
328
|
+
var resetI18nRegistry = factory.resetRegistry;
|
|
329
|
+
|
|
195
330
|
// src/engines/xp.ts
|
|
196
331
|
var DEFAULT_XP_CONFIG = {
|
|
197
332
|
baseValues: {
|
|
@@ -357,6 +492,19 @@ class XPEngine {
|
|
|
357
492
|
return 0;
|
|
358
493
|
}
|
|
359
494
|
}
|
|
495
|
+
var SOURCE_KEY_MAP = {
|
|
496
|
+
base: "xp.source.base",
|
|
497
|
+
score_bonus: "xp.source.scoreBonus",
|
|
498
|
+
perfect_score: "xp.source.perfectScore",
|
|
499
|
+
first_attempt: "xp.source.firstAttempt",
|
|
500
|
+
retry_penalty: "xp.source.retryPenalty",
|
|
501
|
+
streak_bonus: "xp.source.streakBonus"
|
|
502
|
+
};
|
|
503
|
+
function getXpSourceLabel(source, locale) {
|
|
504
|
+
const i18n = createLearningJourneyI18n(locale);
|
|
505
|
+
const i18nKey = SOURCE_KEY_MAP[source];
|
|
506
|
+
return i18nKey ? i18n.t(i18nKey) : source;
|
|
507
|
+
}
|
|
360
508
|
var xpEngine = new XPEngine;
|
|
361
509
|
|
|
362
510
|
// src/engines/streak.ts
|
|
@@ -517,6 +665,7 @@ export {
|
|
|
517
665
|
xpEngine,
|
|
518
666
|
streakEngine,
|
|
519
667
|
srsEngine,
|
|
668
|
+
getXpSourceLabel,
|
|
520
669
|
XPEngine,
|
|
521
670
|
StreakEngine,
|
|
522
671
|
SRSEngine,
|
|
@@ -1,3 +1,138 @@
|
|
|
1
|
+
// src/i18n/catalogs/en.ts
|
|
2
|
+
import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
|
|
3
|
+
var enMessages = defineTranslation({
|
|
4
|
+
meta: {
|
|
5
|
+
key: "learning-journey.messages",
|
|
6
|
+
version: "1.0.0",
|
|
7
|
+
domain: "learning-journey",
|
|
8
|
+
description: "XP source labels for the learning-journey module",
|
|
9
|
+
owners: ["platform"],
|
|
10
|
+
stability: "experimental"
|
|
11
|
+
},
|
|
12
|
+
locale: "en",
|
|
13
|
+
fallback: "en",
|
|
14
|
+
messages: {
|
|
15
|
+
"xp.source.base": {
|
|
16
|
+
value: "Base",
|
|
17
|
+
description: "XP breakdown label for base XP"
|
|
18
|
+
},
|
|
19
|
+
"xp.source.scoreBonus": {
|
|
20
|
+
value: "Score Bonus",
|
|
21
|
+
description: "XP breakdown label for score-based bonus"
|
|
22
|
+
},
|
|
23
|
+
"xp.source.perfectScore": {
|
|
24
|
+
value: "Perfect Score",
|
|
25
|
+
description: "XP breakdown label for perfect score bonus"
|
|
26
|
+
},
|
|
27
|
+
"xp.source.firstAttempt": {
|
|
28
|
+
value: "First Attempt",
|
|
29
|
+
description: "XP breakdown label for first attempt bonus"
|
|
30
|
+
},
|
|
31
|
+
"xp.source.retryPenalty": {
|
|
32
|
+
value: "Retry Penalty",
|
|
33
|
+
description: "XP breakdown label for retry penalty"
|
|
34
|
+
},
|
|
35
|
+
"xp.source.streakBonus": {
|
|
36
|
+
value: "Streak Bonus",
|
|
37
|
+
description: "XP breakdown label for streak bonus"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// src/i18n/catalogs/fr.ts
|
|
43
|
+
import { defineTranslation as defineTranslation2 } from "@contractspec/lib.contracts-spec/translations";
|
|
44
|
+
var frMessages = defineTranslation2({
|
|
45
|
+
meta: {
|
|
46
|
+
key: "learning-journey.messages",
|
|
47
|
+
version: "1.0.0",
|
|
48
|
+
domain: "learning-journey",
|
|
49
|
+
description: "XP source labels (French)",
|
|
50
|
+
owners: ["platform"],
|
|
51
|
+
stability: "experimental"
|
|
52
|
+
},
|
|
53
|
+
locale: "fr",
|
|
54
|
+
fallback: "en",
|
|
55
|
+
messages: {
|
|
56
|
+
"xp.source.base": {
|
|
57
|
+
value: "Base",
|
|
58
|
+
description: "XP breakdown label for base XP"
|
|
59
|
+
},
|
|
60
|
+
"xp.source.scoreBonus": {
|
|
61
|
+
value: "Bonus de score",
|
|
62
|
+
description: "XP breakdown label for score-based bonus"
|
|
63
|
+
},
|
|
64
|
+
"xp.source.perfectScore": {
|
|
65
|
+
value: "Score parfait",
|
|
66
|
+
description: "XP breakdown label for perfect score bonus"
|
|
67
|
+
},
|
|
68
|
+
"xp.source.firstAttempt": {
|
|
69
|
+
value: "Premier essai",
|
|
70
|
+
description: "XP breakdown label for first attempt bonus"
|
|
71
|
+
},
|
|
72
|
+
"xp.source.retryPenalty": {
|
|
73
|
+
value: "Pénalité de réessai",
|
|
74
|
+
description: "XP breakdown label for retry penalty"
|
|
75
|
+
},
|
|
76
|
+
"xp.source.streakBonus": {
|
|
77
|
+
value: "Bonus de série",
|
|
78
|
+
description: "XP breakdown label for streak bonus"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// src/i18n/catalogs/es.ts
|
|
84
|
+
import { defineTranslation as defineTranslation3 } from "@contractspec/lib.contracts-spec/translations";
|
|
85
|
+
var esMessages = defineTranslation3({
|
|
86
|
+
meta: {
|
|
87
|
+
key: "learning-journey.messages",
|
|
88
|
+
version: "1.0.0",
|
|
89
|
+
domain: "learning-journey",
|
|
90
|
+
description: "XP source labels (Spanish)",
|
|
91
|
+
owners: ["platform"],
|
|
92
|
+
stability: "experimental"
|
|
93
|
+
},
|
|
94
|
+
locale: "es",
|
|
95
|
+
fallback: "en",
|
|
96
|
+
messages: {
|
|
97
|
+
"xp.source.base": {
|
|
98
|
+
value: "Base",
|
|
99
|
+
description: "XP breakdown label for base XP"
|
|
100
|
+
},
|
|
101
|
+
"xp.source.scoreBonus": {
|
|
102
|
+
value: "Bonificación por puntuación",
|
|
103
|
+
description: "XP breakdown label for score-based bonus"
|
|
104
|
+
},
|
|
105
|
+
"xp.source.perfectScore": {
|
|
106
|
+
value: "Puntuación perfecta",
|
|
107
|
+
description: "XP breakdown label for perfect score bonus"
|
|
108
|
+
},
|
|
109
|
+
"xp.source.firstAttempt": {
|
|
110
|
+
value: "Primer intento",
|
|
111
|
+
description: "XP breakdown label for first attempt bonus"
|
|
112
|
+
},
|
|
113
|
+
"xp.source.retryPenalty": {
|
|
114
|
+
value: "Penalización por reintento",
|
|
115
|
+
description: "XP breakdown label for retry penalty"
|
|
116
|
+
},
|
|
117
|
+
"xp.source.streakBonus": {
|
|
118
|
+
value: "Bonificación por racha",
|
|
119
|
+
description: "XP breakdown label for streak bonus"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// src/i18n/messages.ts
|
|
125
|
+
import {
|
|
126
|
+
createI18nFactory
|
|
127
|
+
} from "@contractspec/lib.contracts-spec/translations";
|
|
128
|
+
var factory = createI18nFactory({
|
|
129
|
+
specKey: "learning-journey.messages",
|
|
130
|
+
catalogs: [enMessages, frMessages, esMessages]
|
|
131
|
+
});
|
|
132
|
+
var createLearningJourneyI18n = factory.create;
|
|
133
|
+
var getDefaultI18n = factory.getDefault;
|
|
134
|
+
var resetI18nRegistry = factory.resetRegistry;
|
|
135
|
+
|
|
1
136
|
// src/engines/xp.ts
|
|
2
137
|
var DEFAULT_XP_CONFIG = {
|
|
3
138
|
baseValues: {
|
|
@@ -163,9 +298,23 @@ class XPEngine {
|
|
|
163
298
|
return 0;
|
|
164
299
|
}
|
|
165
300
|
}
|
|
301
|
+
var SOURCE_KEY_MAP = {
|
|
302
|
+
base: "xp.source.base",
|
|
303
|
+
score_bonus: "xp.source.scoreBonus",
|
|
304
|
+
perfect_score: "xp.source.perfectScore",
|
|
305
|
+
first_attempt: "xp.source.firstAttempt",
|
|
306
|
+
retry_penalty: "xp.source.retryPenalty",
|
|
307
|
+
streak_bonus: "xp.source.streakBonus"
|
|
308
|
+
};
|
|
309
|
+
function getXpSourceLabel(source, locale) {
|
|
310
|
+
const i18n = createLearningJourneyI18n(locale);
|
|
311
|
+
const i18nKey = SOURCE_KEY_MAP[source];
|
|
312
|
+
return i18nKey ? i18n.t(i18nKey) : source;
|
|
313
|
+
}
|
|
166
314
|
var xpEngine = new XPEngine;
|
|
167
315
|
export {
|
|
168
316
|
xpEngine,
|
|
317
|
+
getXpSourceLabel,
|
|
169
318
|
XPEngine,
|
|
170
319
|
DEFAULT_XP_CONFIG
|
|
171
320
|
};
|
|
@@ -1191,6 +1191,10 @@ var LearnerEntity = defineEntity5({
|
|
|
1191
1191
|
isOptional: true,
|
|
1192
1192
|
description: "Last learning activity"
|
|
1193
1193
|
}),
|
|
1194
|
+
locale: field5.string({
|
|
1195
|
+
isOptional: true,
|
|
1196
|
+
description: 'Preferred locale for learning content (e.g. "en", "fr", "es")'
|
|
1197
|
+
}),
|
|
1194
1198
|
timezone: field5.string({
|
|
1195
1199
|
default: '"UTC"',
|
|
1196
1200
|
description: "Learner timezone"
|
|
@@ -51,6 +51,10 @@ var LearnerEntity = defineEntity({
|
|
|
51
51
|
isOptional: true,
|
|
52
52
|
description: "Last learning activity"
|
|
53
53
|
}),
|
|
54
|
+
locale: field.string({
|
|
55
|
+
isOptional: true,
|
|
56
|
+
description: 'Preferred locale for learning content (e.g. "en", "fr", "es")'
|
|
57
|
+
}),
|
|
54
58
|
timezone: field.string({
|
|
55
59
|
default: '"UTC"',
|
|
56
60
|
description: "Learner timezone"
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/i18n/catalogs/en.ts
|
|
2
|
+
import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
|
|
3
|
+
var enMessages = defineTranslation({
|
|
4
|
+
meta: {
|
|
5
|
+
key: "learning-journey.messages",
|
|
6
|
+
version: "1.0.0",
|
|
7
|
+
domain: "learning-journey",
|
|
8
|
+
description: "XP source labels for the learning-journey module",
|
|
9
|
+
owners: ["platform"],
|
|
10
|
+
stability: "experimental"
|
|
11
|
+
},
|
|
12
|
+
locale: "en",
|
|
13
|
+
fallback: "en",
|
|
14
|
+
messages: {
|
|
15
|
+
"xp.source.base": {
|
|
16
|
+
value: "Base",
|
|
17
|
+
description: "XP breakdown label for base XP"
|
|
18
|
+
},
|
|
19
|
+
"xp.source.scoreBonus": {
|
|
20
|
+
value: "Score Bonus",
|
|
21
|
+
description: "XP breakdown label for score-based bonus"
|
|
22
|
+
},
|
|
23
|
+
"xp.source.perfectScore": {
|
|
24
|
+
value: "Perfect Score",
|
|
25
|
+
description: "XP breakdown label for perfect score bonus"
|
|
26
|
+
},
|
|
27
|
+
"xp.source.firstAttempt": {
|
|
28
|
+
value: "First Attempt",
|
|
29
|
+
description: "XP breakdown label for first attempt bonus"
|
|
30
|
+
},
|
|
31
|
+
"xp.source.retryPenalty": {
|
|
32
|
+
value: "Retry Penalty",
|
|
33
|
+
description: "XP breakdown label for retry penalty"
|
|
34
|
+
},
|
|
35
|
+
"xp.source.streakBonus": {
|
|
36
|
+
value: "Streak Bonus",
|
|
37
|
+
description: "XP breakdown label for streak bonus"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
export {
|
|
42
|
+
enMessages
|
|
43
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/i18n/catalogs/es.ts
|
|
2
|
+
import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
|
|
3
|
+
var esMessages = defineTranslation({
|
|
4
|
+
meta: {
|
|
5
|
+
key: "learning-journey.messages",
|
|
6
|
+
version: "1.0.0",
|
|
7
|
+
domain: "learning-journey",
|
|
8
|
+
description: "XP source labels (Spanish)",
|
|
9
|
+
owners: ["platform"],
|
|
10
|
+
stability: "experimental"
|
|
11
|
+
},
|
|
12
|
+
locale: "es",
|
|
13
|
+
fallback: "en",
|
|
14
|
+
messages: {
|
|
15
|
+
"xp.source.base": {
|
|
16
|
+
value: "Base",
|
|
17
|
+
description: "XP breakdown label for base XP"
|
|
18
|
+
},
|
|
19
|
+
"xp.source.scoreBonus": {
|
|
20
|
+
value: "Bonificación por puntuación",
|
|
21
|
+
description: "XP breakdown label for score-based bonus"
|
|
22
|
+
},
|
|
23
|
+
"xp.source.perfectScore": {
|
|
24
|
+
value: "Puntuación perfecta",
|
|
25
|
+
description: "XP breakdown label for perfect score bonus"
|
|
26
|
+
},
|
|
27
|
+
"xp.source.firstAttempt": {
|
|
28
|
+
value: "Primer intento",
|
|
29
|
+
description: "XP breakdown label for first attempt bonus"
|
|
30
|
+
},
|
|
31
|
+
"xp.source.retryPenalty": {
|
|
32
|
+
value: "Penalización por reintento",
|
|
33
|
+
description: "XP breakdown label for retry penalty"
|
|
34
|
+
},
|
|
35
|
+
"xp.source.streakBonus": {
|
|
36
|
+
value: "Bonificación por racha",
|
|
37
|
+
description: "XP breakdown label for streak bonus"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
export {
|
|
42
|
+
esMessages
|
|
43
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/i18n/catalogs/fr.ts
|
|
2
|
+
import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
|
|
3
|
+
var frMessages = defineTranslation({
|
|
4
|
+
meta: {
|
|
5
|
+
key: "learning-journey.messages",
|
|
6
|
+
version: "1.0.0",
|
|
7
|
+
domain: "learning-journey",
|
|
8
|
+
description: "XP source labels (French)",
|
|
9
|
+
owners: ["platform"],
|
|
10
|
+
stability: "experimental"
|
|
11
|
+
},
|
|
12
|
+
locale: "fr",
|
|
13
|
+
fallback: "en",
|
|
14
|
+
messages: {
|
|
15
|
+
"xp.source.base": {
|
|
16
|
+
value: "Base",
|
|
17
|
+
description: "XP breakdown label for base XP"
|
|
18
|
+
},
|
|
19
|
+
"xp.source.scoreBonus": {
|
|
20
|
+
value: "Bonus de score",
|
|
21
|
+
description: "XP breakdown label for score-based bonus"
|
|
22
|
+
},
|
|
23
|
+
"xp.source.perfectScore": {
|
|
24
|
+
value: "Score parfait",
|
|
25
|
+
description: "XP breakdown label for perfect score bonus"
|
|
26
|
+
},
|
|
27
|
+
"xp.source.firstAttempt": {
|
|
28
|
+
value: "Premier essai",
|
|
29
|
+
description: "XP breakdown label for first attempt bonus"
|
|
30
|
+
},
|
|
31
|
+
"xp.source.retryPenalty": {
|
|
32
|
+
value: "Pénalité de réessai",
|
|
33
|
+
description: "XP breakdown label for retry penalty"
|
|
34
|
+
},
|
|
35
|
+
"xp.source.streakBonus": {
|
|
36
|
+
value: "Bonus de série",
|
|
37
|
+
description: "XP breakdown label for streak bonus"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
export {
|
|
42
|
+
frMessages
|
|
43
|
+
};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// src/i18n/catalogs/en.ts
|
|
2
|
+
import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
|
|
3
|
+
var enMessages = defineTranslation({
|
|
4
|
+
meta: {
|
|
5
|
+
key: "learning-journey.messages",
|
|
6
|
+
version: "1.0.0",
|
|
7
|
+
domain: "learning-journey",
|
|
8
|
+
description: "XP source labels for the learning-journey module",
|
|
9
|
+
owners: ["platform"],
|
|
10
|
+
stability: "experimental"
|
|
11
|
+
},
|
|
12
|
+
locale: "en",
|
|
13
|
+
fallback: "en",
|
|
14
|
+
messages: {
|
|
15
|
+
"xp.source.base": {
|
|
16
|
+
value: "Base",
|
|
17
|
+
description: "XP breakdown label for base XP"
|
|
18
|
+
},
|
|
19
|
+
"xp.source.scoreBonus": {
|
|
20
|
+
value: "Score Bonus",
|
|
21
|
+
description: "XP breakdown label for score-based bonus"
|
|
22
|
+
},
|
|
23
|
+
"xp.source.perfectScore": {
|
|
24
|
+
value: "Perfect Score",
|
|
25
|
+
description: "XP breakdown label for perfect score bonus"
|
|
26
|
+
},
|
|
27
|
+
"xp.source.firstAttempt": {
|
|
28
|
+
value: "First Attempt",
|
|
29
|
+
description: "XP breakdown label for first attempt bonus"
|
|
30
|
+
},
|
|
31
|
+
"xp.source.retryPenalty": {
|
|
32
|
+
value: "Retry Penalty",
|
|
33
|
+
description: "XP breakdown label for retry penalty"
|
|
34
|
+
},
|
|
35
|
+
"xp.source.streakBonus": {
|
|
36
|
+
value: "Streak Bonus",
|
|
37
|
+
description: "XP breakdown label for streak bonus"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// src/i18n/catalogs/fr.ts
|
|
43
|
+
import { defineTranslation as defineTranslation2 } from "@contractspec/lib.contracts-spec/translations";
|
|
44
|
+
var frMessages = defineTranslation2({
|
|
45
|
+
meta: {
|
|
46
|
+
key: "learning-journey.messages",
|
|
47
|
+
version: "1.0.0",
|
|
48
|
+
domain: "learning-journey",
|
|
49
|
+
description: "XP source labels (French)",
|
|
50
|
+
owners: ["platform"],
|
|
51
|
+
stability: "experimental"
|
|
52
|
+
},
|
|
53
|
+
locale: "fr",
|
|
54
|
+
fallback: "en",
|
|
55
|
+
messages: {
|
|
56
|
+
"xp.source.base": {
|
|
57
|
+
value: "Base",
|
|
58
|
+
description: "XP breakdown label for base XP"
|
|
59
|
+
},
|
|
60
|
+
"xp.source.scoreBonus": {
|
|
61
|
+
value: "Bonus de score",
|
|
62
|
+
description: "XP breakdown label for score-based bonus"
|
|
63
|
+
},
|
|
64
|
+
"xp.source.perfectScore": {
|
|
65
|
+
value: "Score parfait",
|
|
66
|
+
description: "XP breakdown label for perfect score bonus"
|
|
67
|
+
},
|
|
68
|
+
"xp.source.firstAttempt": {
|
|
69
|
+
value: "Premier essai",
|
|
70
|
+
description: "XP breakdown label for first attempt bonus"
|
|
71
|
+
},
|
|
72
|
+
"xp.source.retryPenalty": {
|
|
73
|
+
value: "Pénalité de réessai",
|
|
74
|
+
description: "XP breakdown label for retry penalty"
|
|
75
|
+
},
|
|
76
|
+
"xp.source.streakBonus": {
|
|
77
|
+
value: "Bonus de série",
|
|
78
|
+
description: "XP breakdown label for streak bonus"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// src/i18n/catalogs/es.ts
|
|
84
|
+
import { defineTranslation as defineTranslation3 } from "@contractspec/lib.contracts-spec/translations";
|
|
85
|
+
var esMessages = defineTranslation3({
|
|
86
|
+
meta: {
|
|
87
|
+
key: "learning-journey.messages",
|
|
88
|
+
version: "1.0.0",
|
|
89
|
+
domain: "learning-journey",
|
|
90
|
+
description: "XP source labels (Spanish)",
|
|
91
|
+
owners: ["platform"],
|
|
92
|
+
stability: "experimental"
|
|
93
|
+
},
|
|
94
|
+
locale: "es",
|
|
95
|
+
fallback: "en",
|
|
96
|
+
messages: {
|
|
97
|
+
"xp.source.base": {
|
|
98
|
+
value: "Base",
|
|
99
|
+
description: "XP breakdown label for base XP"
|
|
100
|
+
},
|
|
101
|
+
"xp.source.scoreBonus": {
|
|
102
|
+
value: "Bonificación por puntuación",
|
|
103
|
+
description: "XP breakdown label for score-based bonus"
|
|
104
|
+
},
|
|
105
|
+
"xp.source.perfectScore": {
|
|
106
|
+
value: "Puntuación perfecta",
|
|
107
|
+
description: "XP breakdown label for perfect score bonus"
|
|
108
|
+
},
|
|
109
|
+
"xp.source.firstAttempt": {
|
|
110
|
+
value: "Primer intento",
|
|
111
|
+
description: "XP breakdown label for first attempt bonus"
|
|
112
|
+
},
|
|
113
|
+
"xp.source.retryPenalty": {
|
|
114
|
+
value: "Penalización por reintento",
|
|
115
|
+
description: "XP breakdown label for retry penalty"
|
|
116
|
+
},
|
|
117
|
+
"xp.source.streakBonus": {
|
|
118
|
+
value: "Bonificación por racha",
|
|
119
|
+
description: "XP breakdown label for streak bonus"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
export {
|
|
124
|
+
frMessages,
|
|
125
|
+
esMessages,
|
|
126
|
+
enMessages
|
|
127
|
+
};
|