ochre-sdk 1.3.5 → 1.3.6
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/README.md +17 -0
- package/dist/index.d.mts +2 -1
- package/dist/index.mjs +2 -1
- package/dist/languages.d.mts +582 -0
- package/dist/languages.mjs +554 -0
- package/dist/parsers/languages.mjs +2 -2
- package/dist/parsers/multilingual.d.mts +58 -16
- package/dist/parsers/multilingual.mjs +88 -24
- package/dist/parsers/string.d.mts +3 -0
- package/dist/parsers/string.mjs +6 -1
- package/dist/schemas.d.mts +5 -2
- package/dist/schemas.mjs +11 -3
- package/package.json +1 -1
|
@@ -0,0 +1,554 @@
|
|
|
1
|
+
//#region src/languages.ts
|
|
2
|
+
/**
|
|
3
|
+
* Every language code OCHRE publishes, mapped to the ISO 639-3 and BCP 47
|
|
4
|
+
* codes it stands for
|
|
5
|
+
*
|
|
6
|
+
* OCHRE publishes ISO 639-2/B codes, the Library of Congress MARC
|
|
7
|
+
* convention: the bibliographic code wherever ISO 639-2 has one (`per`,
|
|
8
|
+
* not ISO 639-3 `fas`), the ISO 639-3 identifier where it has none
|
|
9
|
+
* (`yua`), and a few codes of its own (`ota-xlt`, `rel`), some of which
|
|
10
|
+
* collide with unrelated ISO 639-3 languages. Key everything by these codes,
|
|
11
|
+
* because they are what OCHRE serves, and convert through this table when a
|
|
12
|
+
* standard code is needed.
|
|
13
|
+
*/
|
|
14
|
+
const OCHRE_LANGUAGES = {
|
|
15
|
+
akk: {
|
|
16
|
+
name: "Akkadian",
|
|
17
|
+
kind: "language",
|
|
18
|
+
iso639_3: "akk",
|
|
19
|
+
bcp47: "akk"
|
|
20
|
+
},
|
|
21
|
+
xno: {
|
|
22
|
+
name: "Anglo-Norman",
|
|
23
|
+
kind: "language",
|
|
24
|
+
iso639_3: "xno",
|
|
25
|
+
bcp47: "xno"
|
|
26
|
+
},
|
|
27
|
+
ara: {
|
|
28
|
+
name: "Arabic",
|
|
29
|
+
kind: "language",
|
|
30
|
+
iso639_3: "ara",
|
|
31
|
+
bcp47: "ar"
|
|
32
|
+
},
|
|
33
|
+
arc: {
|
|
34
|
+
name: "Aramaic",
|
|
35
|
+
kind: "language",
|
|
36
|
+
iso639_3: "arc",
|
|
37
|
+
bcp47: "arc"
|
|
38
|
+
},
|
|
39
|
+
arm: {
|
|
40
|
+
name: "Armenian",
|
|
41
|
+
kind: "language",
|
|
42
|
+
iso639_3: "hye",
|
|
43
|
+
bcp47: "hy"
|
|
44
|
+
},
|
|
45
|
+
bel: {
|
|
46
|
+
name: "Belarusian",
|
|
47
|
+
kind: "language",
|
|
48
|
+
iso639_3: "bel",
|
|
49
|
+
bcp47: "be"
|
|
50
|
+
},
|
|
51
|
+
ben: {
|
|
52
|
+
name: "Bengali",
|
|
53
|
+
kind: "language",
|
|
54
|
+
iso639_3: "ben",
|
|
55
|
+
bcp47: "bn"
|
|
56
|
+
},
|
|
57
|
+
btc: {
|
|
58
|
+
name: "Betacode",
|
|
59
|
+
kind: "vocabulary",
|
|
60
|
+
iso639_3: null,
|
|
61
|
+
bcp47: "grc-Latn-x-betacode"
|
|
62
|
+
},
|
|
63
|
+
bos: {
|
|
64
|
+
name: "Bosnian",
|
|
65
|
+
kind: "language",
|
|
66
|
+
iso639_3: "bos",
|
|
67
|
+
bcp47: "bs"
|
|
68
|
+
},
|
|
69
|
+
bul: {
|
|
70
|
+
name: "Bulgarian",
|
|
71
|
+
kind: "language",
|
|
72
|
+
iso639_3: "bul",
|
|
73
|
+
bcp47: "bg"
|
|
74
|
+
},
|
|
75
|
+
cnn: {
|
|
76
|
+
name: "Canaanite",
|
|
77
|
+
kind: "language",
|
|
78
|
+
iso639_3: null,
|
|
79
|
+
bcp47: null
|
|
80
|
+
},
|
|
81
|
+
yue: {
|
|
82
|
+
name: "Cantonese",
|
|
83
|
+
kind: "language",
|
|
84
|
+
iso639_3: "yue",
|
|
85
|
+
bcp47: "yue"
|
|
86
|
+
},
|
|
87
|
+
cat: {
|
|
88
|
+
name: "Catalan",
|
|
89
|
+
kind: "language",
|
|
90
|
+
iso639_3: "cat",
|
|
91
|
+
bcp47: "ca"
|
|
92
|
+
},
|
|
93
|
+
chi: {
|
|
94
|
+
name: "Chinese",
|
|
95
|
+
kind: "language",
|
|
96
|
+
iso639_3: "zho",
|
|
97
|
+
bcp47: "zh"
|
|
98
|
+
},
|
|
99
|
+
chu: {
|
|
100
|
+
name: "Church Slavonic",
|
|
101
|
+
kind: "language",
|
|
102
|
+
iso639_3: "chu",
|
|
103
|
+
bcp47: "cu"
|
|
104
|
+
},
|
|
105
|
+
lzh: {
|
|
106
|
+
name: "Classical Chinese",
|
|
107
|
+
kind: "language",
|
|
108
|
+
iso639_3: "lzh",
|
|
109
|
+
bcp47: "lzh"
|
|
110
|
+
},
|
|
111
|
+
cop: {
|
|
112
|
+
name: "Coptic",
|
|
113
|
+
kind: "language",
|
|
114
|
+
iso639_3: "cop",
|
|
115
|
+
bcp47: "cop"
|
|
116
|
+
},
|
|
117
|
+
hrv: {
|
|
118
|
+
name: "Croatian",
|
|
119
|
+
kind: "language",
|
|
120
|
+
iso639_3: "hrv",
|
|
121
|
+
bcp47: "hr"
|
|
122
|
+
},
|
|
123
|
+
cze: {
|
|
124
|
+
name: "Czech",
|
|
125
|
+
kind: "language",
|
|
126
|
+
iso639_3: "ces",
|
|
127
|
+
bcp47: "cs"
|
|
128
|
+
},
|
|
129
|
+
egyd: {
|
|
130
|
+
name: "Demotic",
|
|
131
|
+
kind: "language",
|
|
132
|
+
iso639_3: "egy",
|
|
133
|
+
bcp47: "egy-Egyd"
|
|
134
|
+
},
|
|
135
|
+
nld: {
|
|
136
|
+
name: "Dutch",
|
|
137
|
+
kind: "language",
|
|
138
|
+
iso639_3: "nld",
|
|
139
|
+
bcp47: "nl"
|
|
140
|
+
},
|
|
141
|
+
dum: {
|
|
142
|
+
name: "Dutch (Middle)",
|
|
143
|
+
kind: "language",
|
|
144
|
+
iso639_3: "dum",
|
|
145
|
+
bcp47: "dum"
|
|
146
|
+
},
|
|
147
|
+
egy: {
|
|
148
|
+
name: "Egyptian",
|
|
149
|
+
kind: "language",
|
|
150
|
+
iso639_3: "egy",
|
|
151
|
+
bcp47: "egy"
|
|
152
|
+
},
|
|
153
|
+
elx: {
|
|
154
|
+
name: "Elamite",
|
|
155
|
+
kind: "language",
|
|
156
|
+
iso639_3: "elx",
|
|
157
|
+
bcp47: "elx"
|
|
158
|
+
},
|
|
159
|
+
eng: {
|
|
160
|
+
name: "English",
|
|
161
|
+
kind: "language",
|
|
162
|
+
iso639_3: "eng",
|
|
163
|
+
bcp47: "en"
|
|
164
|
+
},
|
|
165
|
+
enm: {
|
|
166
|
+
name: "English (Middle)",
|
|
167
|
+
kind: "language",
|
|
168
|
+
iso639_3: "enm",
|
|
169
|
+
bcp47: "enm"
|
|
170
|
+
},
|
|
171
|
+
ecy: {
|
|
172
|
+
name: "Eteocypriot",
|
|
173
|
+
kind: "language",
|
|
174
|
+
iso639_3: "ecy",
|
|
175
|
+
bcp47: "ecy"
|
|
176
|
+
},
|
|
177
|
+
fre: {
|
|
178
|
+
name: "French",
|
|
179
|
+
kind: "language",
|
|
180
|
+
iso639_3: "fra",
|
|
181
|
+
bcp47: "fr"
|
|
182
|
+
},
|
|
183
|
+
frm: {
|
|
184
|
+
name: "French (Middle)",
|
|
185
|
+
kind: "language",
|
|
186
|
+
iso639_3: "frm",
|
|
187
|
+
bcp47: "frm"
|
|
188
|
+
},
|
|
189
|
+
fro: {
|
|
190
|
+
name: "French (Old)",
|
|
191
|
+
kind: "language",
|
|
192
|
+
iso639_3: "fro",
|
|
193
|
+
bcp47: "fro"
|
|
194
|
+
},
|
|
195
|
+
geo: {
|
|
196
|
+
name: "Georgian",
|
|
197
|
+
kind: "language",
|
|
198
|
+
iso639_3: "kat",
|
|
199
|
+
bcp47: "ka"
|
|
200
|
+
},
|
|
201
|
+
ger: {
|
|
202
|
+
name: "German",
|
|
203
|
+
kind: "language",
|
|
204
|
+
iso639_3: "deu",
|
|
205
|
+
bcp47: "de"
|
|
206
|
+
},
|
|
207
|
+
nds: {
|
|
208
|
+
name: "German (Low)",
|
|
209
|
+
kind: "language",
|
|
210
|
+
iso639_3: "nds",
|
|
211
|
+
bcp47: "nds"
|
|
212
|
+
},
|
|
213
|
+
gmh: {
|
|
214
|
+
name: "German (Middle High)",
|
|
215
|
+
kind: "language",
|
|
216
|
+
iso639_3: "gmh",
|
|
217
|
+
bcp47: "gmh"
|
|
218
|
+
},
|
|
219
|
+
goh: {
|
|
220
|
+
name: "German (Old High)",
|
|
221
|
+
kind: "language",
|
|
222
|
+
iso639_3: "goh",
|
|
223
|
+
bcp47: "goh"
|
|
224
|
+
},
|
|
225
|
+
grc: {
|
|
226
|
+
name: "Greek",
|
|
227
|
+
kind: "language",
|
|
228
|
+
iso639_3: "grc",
|
|
229
|
+
bcp47: "grc"
|
|
230
|
+
},
|
|
231
|
+
guj: {
|
|
232
|
+
name: "Gujarati",
|
|
233
|
+
kind: "language",
|
|
234
|
+
iso639_3: "guj",
|
|
235
|
+
bcp47: "gu"
|
|
236
|
+
},
|
|
237
|
+
"zh-Latn-pinyin": {
|
|
238
|
+
name: "Hanyu Pinyin",
|
|
239
|
+
kind: "transliteration",
|
|
240
|
+
iso639_3: "cmn",
|
|
241
|
+
bcp47: "zh-Latn-pinyin"
|
|
242
|
+
},
|
|
243
|
+
htt: {
|
|
244
|
+
name: "Hattian",
|
|
245
|
+
kind: "language",
|
|
246
|
+
iso639_3: "xht",
|
|
247
|
+
bcp47: "xht"
|
|
248
|
+
},
|
|
249
|
+
heb: {
|
|
250
|
+
name: "Hebrew",
|
|
251
|
+
kind: "language",
|
|
252
|
+
iso639_3: "heb",
|
|
253
|
+
bcp47: "he"
|
|
254
|
+
},
|
|
255
|
+
hin: {
|
|
256
|
+
name: "Hindi",
|
|
257
|
+
kind: "language",
|
|
258
|
+
iso639_3: "hin",
|
|
259
|
+
bcp47: "hi"
|
|
260
|
+
},
|
|
261
|
+
hit: {
|
|
262
|
+
name: "Hittite",
|
|
263
|
+
kind: "language",
|
|
264
|
+
iso639_3: "hit",
|
|
265
|
+
bcp47: "hit"
|
|
266
|
+
},
|
|
267
|
+
xhu: {
|
|
268
|
+
name: "Hurrian",
|
|
269
|
+
kind: "language",
|
|
270
|
+
iso639_3: "xhu",
|
|
271
|
+
bcp47: "xhu"
|
|
272
|
+
},
|
|
273
|
+
ita: {
|
|
274
|
+
name: "Italian",
|
|
275
|
+
kind: "language",
|
|
276
|
+
iso639_3: "ita",
|
|
277
|
+
bcp47: "it"
|
|
278
|
+
},
|
|
279
|
+
jpn: {
|
|
280
|
+
name: "Japanese",
|
|
281
|
+
kind: "language",
|
|
282
|
+
iso639_3: "jpn",
|
|
283
|
+
bcp47: "ja"
|
|
284
|
+
},
|
|
285
|
+
"jpn-xlt": {
|
|
286
|
+
name: "Japanese XLit",
|
|
287
|
+
kind: "transliteration",
|
|
288
|
+
iso639_3: "jpn",
|
|
289
|
+
bcp47: "ja-Latn-t-ja"
|
|
290
|
+
},
|
|
291
|
+
kaz: {
|
|
292
|
+
name: "Kazakh",
|
|
293
|
+
kind: "language",
|
|
294
|
+
iso639_3: "kaz",
|
|
295
|
+
bcp47: "kk"
|
|
296
|
+
},
|
|
297
|
+
kor: {
|
|
298
|
+
name: "Korean",
|
|
299
|
+
kind: "language",
|
|
300
|
+
iso639_3: "kor",
|
|
301
|
+
bcp47: "ko"
|
|
302
|
+
},
|
|
303
|
+
lmc: {
|
|
304
|
+
name: "Late Middle Chinese",
|
|
305
|
+
kind: "language",
|
|
306
|
+
iso639_3: "ltc",
|
|
307
|
+
bcp47: "ltc"
|
|
308
|
+
},
|
|
309
|
+
lat: {
|
|
310
|
+
name: "Latin",
|
|
311
|
+
kind: "language",
|
|
312
|
+
iso639_3: "lat",
|
|
313
|
+
bcp47: "la"
|
|
314
|
+
},
|
|
315
|
+
xlt: {
|
|
316
|
+
name: "Latin XLit",
|
|
317
|
+
kind: "transliteration",
|
|
318
|
+
iso639_3: null,
|
|
319
|
+
bcp47: "und-Latn"
|
|
320
|
+
},
|
|
321
|
+
luw: {
|
|
322
|
+
name: "Luwian",
|
|
323
|
+
kind: "language",
|
|
324
|
+
iso639_3: null,
|
|
325
|
+
bcp47: null
|
|
326
|
+
},
|
|
327
|
+
cmn: {
|
|
328
|
+
name: "Mandarin",
|
|
329
|
+
kind: "language",
|
|
330
|
+
iso639_3: "cmn",
|
|
331
|
+
bcp47: "cmn"
|
|
332
|
+
},
|
|
333
|
+
mar: {
|
|
334
|
+
name: "Marathi",
|
|
335
|
+
kind: "language",
|
|
336
|
+
iso639_3: "mar",
|
|
337
|
+
bcp47: "mr"
|
|
338
|
+
},
|
|
339
|
+
met: {
|
|
340
|
+
name: "Metrical",
|
|
341
|
+
kind: "vocabulary",
|
|
342
|
+
iso639_3: null,
|
|
343
|
+
bcp47: null
|
|
344
|
+
},
|
|
345
|
+
zxx: {
|
|
346
|
+
name: "No linguistic content",
|
|
347
|
+
kind: "non-linguistic",
|
|
348
|
+
iso639_3: "zxx",
|
|
349
|
+
bcp47: "zxx"
|
|
350
|
+
},
|
|
351
|
+
och: {
|
|
352
|
+
name: "Old Chinese",
|
|
353
|
+
kind: "language",
|
|
354
|
+
iso639_3: "och",
|
|
355
|
+
bcp47: "och"
|
|
356
|
+
},
|
|
357
|
+
peo: {
|
|
358
|
+
name: "Old Persian",
|
|
359
|
+
kind: "language",
|
|
360
|
+
iso639_3: "peo",
|
|
361
|
+
bcp47: "peo"
|
|
362
|
+
},
|
|
363
|
+
ota: {
|
|
364
|
+
name: "Ottoman Turkish",
|
|
365
|
+
kind: "language",
|
|
366
|
+
iso639_3: "ota",
|
|
367
|
+
bcp47: "ota"
|
|
368
|
+
},
|
|
369
|
+
"ota-xlt": {
|
|
370
|
+
name: "Ottoman Turkish XLit",
|
|
371
|
+
kind: "transliteration",
|
|
372
|
+
iso639_3: "ota",
|
|
373
|
+
bcp47: "ota-Latn-t-ota-arab"
|
|
374
|
+
},
|
|
375
|
+
pla: {
|
|
376
|
+
name: "Palaic",
|
|
377
|
+
kind: "language",
|
|
378
|
+
iso639_3: "plq",
|
|
379
|
+
bcp47: "plq"
|
|
380
|
+
},
|
|
381
|
+
per: {
|
|
382
|
+
name: "Persian",
|
|
383
|
+
kind: "language",
|
|
384
|
+
iso639_3: "fas",
|
|
385
|
+
bcp47: "fa"
|
|
386
|
+
},
|
|
387
|
+
phn: {
|
|
388
|
+
name: "Phoenician",
|
|
389
|
+
kind: "language",
|
|
390
|
+
iso639_3: "phn",
|
|
391
|
+
bcp47: "phn"
|
|
392
|
+
},
|
|
393
|
+
xpg: {
|
|
394
|
+
name: "Phrygian",
|
|
395
|
+
kind: "language",
|
|
396
|
+
iso639_3: "xpg",
|
|
397
|
+
bcp47: "xpg"
|
|
398
|
+
},
|
|
399
|
+
pol: {
|
|
400
|
+
name: "Polish",
|
|
401
|
+
kind: "language",
|
|
402
|
+
iso639_3: "pol",
|
|
403
|
+
bcp47: "pl"
|
|
404
|
+
},
|
|
405
|
+
por: {
|
|
406
|
+
name: "Portuguese",
|
|
407
|
+
kind: "language",
|
|
408
|
+
iso639_3: "por",
|
|
409
|
+
bcp47: "pt"
|
|
410
|
+
},
|
|
411
|
+
pro: {
|
|
412
|
+
name: "Pronunciation",
|
|
413
|
+
kind: "vocabulary",
|
|
414
|
+
iso639_3: null,
|
|
415
|
+
bcp47: null
|
|
416
|
+
},
|
|
417
|
+
rel: {
|
|
418
|
+
name: "Relator",
|
|
419
|
+
kind: "vocabulary",
|
|
420
|
+
iso639_3: null,
|
|
421
|
+
bcp47: "zxx"
|
|
422
|
+
},
|
|
423
|
+
rus: {
|
|
424
|
+
name: "Russian",
|
|
425
|
+
kind: "language",
|
|
426
|
+
iso639_3: "rus",
|
|
427
|
+
bcp47: "ru"
|
|
428
|
+
},
|
|
429
|
+
san: {
|
|
430
|
+
name: "Sanskrit",
|
|
431
|
+
kind: "language",
|
|
432
|
+
iso639_3: "san",
|
|
433
|
+
bcp47: "sa"
|
|
434
|
+
},
|
|
435
|
+
srp: {
|
|
436
|
+
name: "Serbian",
|
|
437
|
+
kind: "language",
|
|
438
|
+
iso639_3: "srp",
|
|
439
|
+
bcp47: "sr"
|
|
440
|
+
},
|
|
441
|
+
spa: {
|
|
442
|
+
name: "Spanish",
|
|
443
|
+
kind: "language",
|
|
444
|
+
iso639_3: "spa",
|
|
445
|
+
bcp47: "es"
|
|
446
|
+
},
|
|
447
|
+
sux: {
|
|
448
|
+
name: "Sumerian",
|
|
449
|
+
kind: "language",
|
|
450
|
+
iso639_3: "sux",
|
|
451
|
+
bcp47: "sux"
|
|
452
|
+
},
|
|
453
|
+
sup: {
|
|
454
|
+
name: "Supplemental",
|
|
455
|
+
kind: "vocabulary",
|
|
456
|
+
iso639_3: null,
|
|
457
|
+
bcp47: null
|
|
458
|
+
},
|
|
459
|
+
syc: {
|
|
460
|
+
name: "Syriac",
|
|
461
|
+
kind: "language",
|
|
462
|
+
iso639_3: "syc",
|
|
463
|
+
bcp47: "syc"
|
|
464
|
+
},
|
|
465
|
+
tei: {
|
|
466
|
+
name: "TEI",
|
|
467
|
+
kind: "vocabulary",
|
|
468
|
+
iso639_3: null,
|
|
469
|
+
bcp47: null
|
|
470
|
+
},
|
|
471
|
+
tur: {
|
|
472
|
+
name: "Turkish",
|
|
473
|
+
kind: "language",
|
|
474
|
+
iso639_3: "tur",
|
|
475
|
+
bcp47: "tr"
|
|
476
|
+
},
|
|
477
|
+
uga: {
|
|
478
|
+
name: "Ugaritic",
|
|
479
|
+
kind: "language",
|
|
480
|
+
iso639_3: "uga",
|
|
481
|
+
bcp47: "uga"
|
|
482
|
+
},
|
|
483
|
+
ukr: {
|
|
484
|
+
name: "Ukrainian",
|
|
485
|
+
kind: "language",
|
|
486
|
+
iso639_3: "ukr",
|
|
487
|
+
bcp47: "uk"
|
|
488
|
+
},
|
|
489
|
+
urd: {
|
|
490
|
+
name: "Urdu",
|
|
491
|
+
kind: "language",
|
|
492
|
+
iso639_3: "urd",
|
|
493
|
+
bcp47: "ur"
|
|
494
|
+
},
|
|
495
|
+
uzb: {
|
|
496
|
+
name: "Uzbek",
|
|
497
|
+
kind: "language",
|
|
498
|
+
iso639_3: "uzb",
|
|
499
|
+
bcp47: "uz"
|
|
500
|
+
},
|
|
501
|
+
var: {
|
|
502
|
+
name: "Variation",
|
|
503
|
+
kind: "vocabulary",
|
|
504
|
+
iso639_3: null,
|
|
505
|
+
bcp47: null
|
|
506
|
+
},
|
|
507
|
+
was: {
|
|
508
|
+
name: "Washo",
|
|
509
|
+
kind: "language",
|
|
510
|
+
iso639_3: "was",
|
|
511
|
+
bcp47: "was"
|
|
512
|
+
},
|
|
513
|
+
yid: {
|
|
514
|
+
name: "Yiddish",
|
|
515
|
+
kind: "language",
|
|
516
|
+
iso639_3: "yid",
|
|
517
|
+
bcp47: "yi"
|
|
518
|
+
},
|
|
519
|
+
yua: {
|
|
520
|
+
name: "Yucatec Maya",
|
|
521
|
+
kind: "language",
|
|
522
|
+
iso639_3: "yua",
|
|
523
|
+
bcp47: "yua"
|
|
524
|
+
}
|
|
525
|
+
};
|
|
526
|
+
/**
|
|
527
|
+
* Check whether a string is a language code OCHRE publishes
|
|
528
|
+
* @param code - The code to check
|
|
529
|
+
* @returns Whether OCHRE publishes the code
|
|
530
|
+
*/
|
|
531
|
+
function isOchreLanguageCode(code) {
|
|
532
|
+
return Object.hasOwn(OCHRE_LANGUAGES, code);
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Look up a language OCHRE publishes by its OCHRE code
|
|
536
|
+
* @param code - The OCHRE language code
|
|
537
|
+
* @returns The language, or null when OCHRE does not publish the code
|
|
538
|
+
*/
|
|
539
|
+
function getOchreLanguage(code) {
|
|
540
|
+
return isOchreLanguageCode(code) ? OCHRE_LANGUAGES[code] : null;
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Find the OCHRE code of a language from its ISO 639-3 identifier
|
|
544
|
+
* @param iso639_3 - The ISO 639-3 identifier
|
|
545
|
+
* @returns The OCHRE code of the language itself, not of a transliteration,
|
|
546
|
+
* or null when OCHRE publishes no code for it
|
|
547
|
+
*/
|
|
548
|
+
function getOchreLanguageCode(iso639_3) {
|
|
549
|
+
if (isOchreLanguageCode(iso639_3) && OCHRE_LANGUAGES[iso639_3].iso639_3 === iso639_3) return iso639_3;
|
|
550
|
+
for (const [code, language] of Object.entries(OCHRE_LANGUAGES)) if (language.kind === "language" && language.iso639_3 === iso639_3 && isOchreLanguageCode(code)) return code;
|
|
551
|
+
return null;
|
|
552
|
+
}
|
|
553
|
+
//#endregion
|
|
554
|
+
export { OCHRE_LANGUAGES, getOchreLanguage, getOchreLanguageCode, isOchreLanguageCode };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_LANGUAGES } from "../constants.mjs";
|
|
2
2
|
import { readArrayProperty, readEntries } from "../reflection.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { ochreLanguageCodeSchema } from "../schemas.mjs";
|
|
4
4
|
import { parseStringLike } from "./helpers.mjs";
|
|
5
5
|
import * as v from "valibot";
|
|
6
6
|
//#region src/parsers/languages.ts
|
|
@@ -31,7 +31,7 @@ function collectContentLanguages(value, languages) {
|
|
|
31
31
|
* @internal
|
|
32
32
|
*/
|
|
33
33
|
function parseLanguages(languages) {
|
|
34
|
-
for (const language of languages) v.parse(
|
|
34
|
+
for (const language of languages) v.parse(ochreLanguageCodeSchema, language);
|
|
35
35
|
return languages;
|
|
36
36
|
}
|
|
37
37
|
/**
|