@treeviz/gedcom-parser 2.1.9 → 2.1.12
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/classes/common.d.ts.map +1 -1
- package/dist/classes/gedcom.d.ts +5 -0
- package/dist/classes/gedcom.d.ts.map +1 -1
- package/dist/classes/index.js +860 -464
- package/dist/classes/indi.d.ts.map +1 -1
- package/dist/classes/obje.d.ts.map +1 -1
- package/dist/cli/index.js +850 -454
- package/dist/constants/index.js +818 -448
- package/dist/factories/index.js +818 -448
- package/dist/index.js +865 -474
- package/dist/interfaces/indi.d.ts +1 -0
- package/dist/interfaces/indi.d.ts.map +1 -1
- package/dist/kinship-translator/index.js +818 -448
- package/dist/kinship-translator/kinship-translator.de.d.ts +2 -3
- package/dist/kinship-translator/kinship-translator.de.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.en.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.es.d.ts +2 -3
- package/dist/kinship-translator/kinship-translator.es.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.fr.d.ts +2 -3
- package/dist/kinship-translator/kinship-translator.fr.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.hu.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.ja.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.ru.d.ts +1 -1
- package/dist/kinship-translator/kinship-translator.ru.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.zh.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.de.d.ts +1 -0
- package/dist/kinship-translator/patterns.de.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.es.d.ts +1 -0
- package/dist/kinship-translator/patterns.es.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.fr.d.ts +1 -0
- package/dist/kinship-translator/patterns.fr.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.hu.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.ru.d.ts +1 -0
- package/dist/kinship-translator/patterns.ru.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.zh.d.ts.map +1 -1
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/gedzip.d.ts.map +1 -1
- package/dist/utils/index.js +865 -474
- package/dist/utils/local-media.d.ts +7 -3
- package/dist/utils/local-media.d.ts.map +1 -1
- package/dist/utils/media-utils.d.ts +20 -0
- package/dist/utils/media-utils.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/factories/index.js
CHANGED
|
@@ -350,6 +350,82 @@ var ORIG_HEAD_TAG = "_ORIGHEAD";
|
|
|
350
350
|
// src/utils/gedcom-trailer.ts
|
|
351
351
|
var GEDCOM_TRAILER_TAG = "TRLR";
|
|
352
352
|
var isGedcomTrailerTag = (tag) => tag === GEDCOM_TRAILER_TAG;
|
|
353
|
+
|
|
354
|
+
// src/utils/media-utils.ts
|
|
355
|
+
var getFileExtension = (filename) => {
|
|
356
|
+
if (!filename) {
|
|
357
|
+
return "";
|
|
358
|
+
}
|
|
359
|
+
if (filename.startsWith("data:")) {
|
|
360
|
+
const mime = filename.slice(5).split(";")[0] || "";
|
|
361
|
+
const subtype = (mime.split("/")[1] || "").toLowerCase();
|
|
362
|
+
if (subtype === "jpeg") {
|
|
363
|
+
return "jpg";
|
|
364
|
+
}
|
|
365
|
+
return subtype.split("+")[0] || "";
|
|
366
|
+
}
|
|
367
|
+
const withoutQuery = filename.split(/[?#]/)[0] || filename;
|
|
368
|
+
const match = withoutQuery.match(/\.([^.]+)$/);
|
|
369
|
+
return match ? match[1].toLowerCase() : "";
|
|
370
|
+
};
|
|
371
|
+
var isImageFormat = (format2) => {
|
|
372
|
+
if (!format2) {
|
|
373
|
+
return false;
|
|
374
|
+
}
|
|
375
|
+
let normalized = format2.toLowerCase().trim();
|
|
376
|
+
if (normalized.startsWith("data:")) {
|
|
377
|
+
normalized = getFileExtension(normalized);
|
|
378
|
+
} else if (normalized.includes("/")) {
|
|
379
|
+
normalized = normalized.split("/")[1]?.split("+")[0] || "";
|
|
380
|
+
if (normalized === "jpeg") {
|
|
381
|
+
normalized = "jpg";
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
const imageFormats = [
|
|
385
|
+
"jpg",
|
|
386
|
+
"jpeg",
|
|
387
|
+
"png",
|
|
388
|
+
"gif",
|
|
389
|
+
"bmp",
|
|
390
|
+
"webp",
|
|
391
|
+
"svg",
|
|
392
|
+
"tiff",
|
|
393
|
+
"tif"
|
|
394
|
+
];
|
|
395
|
+
return imageFormats.includes(normalized);
|
|
396
|
+
};
|
|
397
|
+
var resolveObjeForm = (obje) => {
|
|
398
|
+
const value = obje?.get?.("FILE.FORM")?.toValue?.() ?? obje?.get?.("FORM")?.toValue?.();
|
|
399
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
400
|
+
};
|
|
401
|
+
var mediaIdValue = (obje, path) => {
|
|
402
|
+
const value = obje?.get?.(path)?.toValue?.();
|
|
403
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
404
|
+
};
|
|
405
|
+
var resolveObjeMediaId = (obje) => mediaIdValue(obje, "RIN") || mediaIdValue(obje, "_CLON._OID") || mediaIdValue(obje, "_MSER._LKID") || mediaIdValue(obje, "_OID") || mediaIdValue(obje, "_LKID");
|
|
406
|
+
var ANCESTRY_MEDIA_RETRIEVAL_PREFIX = "https://www.ancestry.com/api/media/retrieval/v2/image";
|
|
407
|
+
var ANCESTRY_MEDIA_QUERY = "client=trees-mediaservice&imageQuality=hq";
|
|
408
|
+
var ancestryMediaPath = (namespace, imgId) => `/namespaces/${namespace}/media/${imgId}?${ANCESTRY_MEDIA_QUERY}`;
|
|
409
|
+
var ancestryMediaFileUrl = (namespace, imgId) => {
|
|
410
|
+
if (!namespace || !imgId) {
|
|
411
|
+
return void 0;
|
|
412
|
+
}
|
|
413
|
+
return `${ANCESTRY_MEDIA_RETRIEVAL_PREFIX}${ancestryMediaPath(namespace, imgId)}`;
|
|
414
|
+
};
|
|
415
|
+
var objeXrefKey = (obje, fallback = 0) => {
|
|
416
|
+
if (typeof obje?.id === "string" && obje.id) {
|
|
417
|
+
return obje.id;
|
|
418
|
+
}
|
|
419
|
+
const value = obje?.toValue?.();
|
|
420
|
+
if (typeof value === "string" && value.trim()) {
|
|
421
|
+
return value.trim();
|
|
422
|
+
}
|
|
423
|
+
if (typeof fallback === "string" && fallback.trim()) {
|
|
424
|
+
return fallback.trim();
|
|
425
|
+
}
|
|
426
|
+
return `@O${fallback}@`;
|
|
427
|
+
};
|
|
428
|
+
var objeNoteValue = (obje) => mediaIdValue(obje, "FILE.NOTE") || mediaIdValue(obje, "NOTE") || "";
|
|
353
429
|
var List = class _List {
|
|
354
430
|
// length = 0;
|
|
355
431
|
constructor(items) {
|
|
@@ -999,7 +1075,7 @@ var Common = class _Common {
|
|
|
999
1075
|
this,
|
|
1000
1076
|
options.obje.namespace,
|
|
1001
1077
|
options.obje.override,
|
|
1002
|
-
void 0,
|
|
1078
|
+
this.isAncestry() ? ancestryMediaFileUrl : void 0,
|
|
1003
1079
|
options.gedcomVersion
|
|
1004
1080
|
);
|
|
1005
1081
|
}
|
|
@@ -1930,11 +2006,8 @@ var storeCache = {
|
|
|
1930
2006
|
getCacheDbs().relativesOnDegreeCache.setItem(value);
|
|
1931
2007
|
}
|
|
1932
2008
|
}, 50),
|
|
1933
|
-
//
|
|
2009
|
+
// Image bytes are stored as one IndexedDB record per photo.
|
|
1934
2010
|
profilePictureCache: debounce((value) => {
|
|
1935
|
-
if (value) {
|
|
1936
|
-
getCacheDbs().profilePictureCache.setItem(value);
|
|
1937
|
-
}
|
|
1938
2011
|
}, 100)
|
|
1939
2012
|
};
|
|
1940
2013
|
var resetRelativesCache = () => {
|
|
@@ -2621,65 +2694,23 @@ var isRemoteOrEmbeddedMediaUrl = (path) => {
|
|
|
2621
2694
|
}
|
|
2622
2695
|
return path.startsWith("data:") || path.startsWith("blob:") || /^https?:\/\//i.test(path);
|
|
2623
2696
|
};
|
|
2624
|
-
var resolveLocalMediaUrl = async (path) => {
|
|
2697
|
+
var resolveLocalMediaUrl = async (path, context) => {
|
|
2625
2698
|
if (!path) {
|
|
2626
2699
|
return void 0;
|
|
2627
2700
|
}
|
|
2628
|
-
if (
|
|
2701
|
+
if (path.startsWith("data:") || path.startsWith("blob:")) {
|
|
2629
2702
|
return path;
|
|
2630
2703
|
}
|
|
2631
|
-
const resolved = await localMediaResolver?.(path);
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
var implemented = (type, ...args) => {
|
|
2635
|
-
};
|
|
2636
|
-
|
|
2637
|
-
// src/utils/media-utils.ts
|
|
2638
|
-
var getFileExtension = (filename) => {
|
|
2639
|
-
if (!filename) {
|
|
2640
|
-
return "";
|
|
2641
|
-
}
|
|
2642
|
-
if (filename.startsWith("data:")) {
|
|
2643
|
-
const mime = filename.slice(5).split(";")[0] || "";
|
|
2644
|
-
const subtype = (mime.split("/")[1] || "").toLowerCase();
|
|
2645
|
-
if (subtype === "jpeg") {
|
|
2646
|
-
return "jpg";
|
|
2647
|
-
}
|
|
2648
|
-
return subtype.split("+")[0] || "";
|
|
2649
|
-
}
|
|
2650
|
-
const withoutQuery = filename.split(/[?#]/)[0] || filename;
|
|
2651
|
-
const match = withoutQuery.match(/\.([^.]+)$/);
|
|
2652
|
-
return match ? match[1].toLowerCase() : "";
|
|
2653
|
-
};
|
|
2654
|
-
var isImageFormat = (format2) => {
|
|
2655
|
-
if (!format2) {
|
|
2656
|
-
return false;
|
|
2704
|
+
const resolved = await localMediaResolver?.(path, context);
|
|
2705
|
+
if (resolved) {
|
|
2706
|
+
return resolved;
|
|
2657
2707
|
}
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
normalized = getFileExtension(normalized);
|
|
2661
|
-
} else if (normalized.includes("/")) {
|
|
2662
|
-
normalized = normalized.split("/")[1]?.split("+")[0] || "";
|
|
2663
|
-
if (normalized === "jpeg") {
|
|
2664
|
-
normalized = "jpg";
|
|
2665
|
-
}
|
|
2708
|
+
if (/^https?:\/\//i.test(path)) {
|
|
2709
|
+
return path;
|
|
2666
2710
|
}
|
|
2667
|
-
|
|
2668
|
-
"jpg",
|
|
2669
|
-
"jpeg",
|
|
2670
|
-
"png",
|
|
2671
|
-
"gif",
|
|
2672
|
-
"bmp",
|
|
2673
|
-
"webp",
|
|
2674
|
-
"svg",
|
|
2675
|
-
"tiff",
|
|
2676
|
-
"tif"
|
|
2677
|
-
];
|
|
2678
|
-
return imageFormats.includes(normalized);
|
|
2711
|
+
return void 0;
|
|
2679
2712
|
};
|
|
2680
|
-
var
|
|
2681
|
-
const value = obje?.get?.("FILE.FORM")?.toValue?.() ?? obje?.get?.("FORM")?.toValue?.();
|
|
2682
|
-
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
2713
|
+
var implemented = (type, ...args) => {
|
|
2683
2714
|
};
|
|
2684
2715
|
|
|
2685
2716
|
// src/factories/place-parser-provider.ts
|
|
@@ -3985,22 +4016,19 @@ var Indi = class extends Common {
|
|
|
3985
4016
|
if (objeList) {
|
|
3986
4017
|
await Promise.all(
|
|
3987
4018
|
objeList.map(async (objeRef) => {
|
|
3988
|
-
const key = objeRef
|
|
4019
|
+
const key = objeXrefKey(objeRef, 0);
|
|
3989
4020
|
const obje = objeRef?.standardizeMedia(
|
|
3990
4021
|
namespace,
|
|
3991
4022
|
true,
|
|
3992
|
-
|
|
3993
|
-
return ns && iId ? `https://mediasvc.ancestry.com/v2/image/namespaces/${ns}/media/${iId}?client=trees-mediaservice&imageQuality=hq` : void 0;
|
|
3994
|
-
}
|
|
4023
|
+
ancestryMediaFileUrl
|
|
3995
4024
|
);
|
|
3996
4025
|
const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
|
|
3997
|
-
const media =
|
|
3998
|
-
const clone = obje?.get("_CLON._OID")?.toValue();
|
|
3999
|
-
const mser = obje?.get("_MSER._LKID")?.toValue();
|
|
4026
|
+
const media = resolveObjeMediaId(obje);
|
|
4000
4027
|
let url = obje?.get("FILE")?.toValue();
|
|
4001
4028
|
const title = obje?.get("FILE.TITL")?.toValue() ?? obje?.get("TITL")?.toValue() ?? "";
|
|
4029
|
+
const note = objeNoteValue(obje);
|
|
4002
4030
|
const type = resolveObjeForm(obje) ?? (url ? getFileExtension(url) : void 0) ?? "raw";
|
|
4003
|
-
let imgId =
|
|
4031
|
+
let imgId = media;
|
|
4004
4032
|
const hasEmbeddedOrLocalFile = !!url && (url.startsWith("data:") || url.startsWith("blob:") || !/^https?:\/\//i.test(url));
|
|
4005
4033
|
if (!hasEmbeddedOrLocalFile && (!www || !tree || !this.id)) {
|
|
4006
4034
|
return;
|
|
@@ -4036,6 +4064,7 @@ var Indi = class extends Common {
|
|
|
4036
4064
|
imgId,
|
|
4037
4065
|
person: this.id,
|
|
4038
4066
|
title,
|
|
4067
|
+
note,
|
|
4039
4068
|
url,
|
|
4040
4069
|
contentType: type,
|
|
4041
4070
|
downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
|
|
@@ -4074,7 +4103,7 @@ var Indi = class extends Common {
|
|
|
4074
4103
|
return;
|
|
4075
4104
|
}
|
|
4076
4105
|
const obje = o;
|
|
4077
|
-
const key =
|
|
4106
|
+
const key = objeXrefKey(obje, index);
|
|
4078
4107
|
obje.standardizeMedia();
|
|
4079
4108
|
const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
|
|
4080
4109
|
const url = obje?.get("FILE")?.toValue();
|
|
@@ -4093,6 +4122,7 @@ var Indi = class extends Common {
|
|
|
4093
4122
|
imgId,
|
|
4094
4123
|
person: this.id,
|
|
4095
4124
|
title,
|
|
4125
|
+
note: objeNoteValue(obje),
|
|
4096
4126
|
url,
|
|
4097
4127
|
contentType: type,
|
|
4098
4128
|
downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
|
|
@@ -4201,7 +4231,7 @@ var Indi = class extends Common {
|
|
|
4201
4231
|
if (!obje) {
|
|
4202
4232
|
return;
|
|
4203
4233
|
}
|
|
4204
|
-
const key =
|
|
4234
|
+
const key = objeXrefKey(obje, index);
|
|
4205
4235
|
const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
|
|
4206
4236
|
const url = obje?.get("FILE")?.toValue();
|
|
4207
4237
|
const title = obje?.get("TITL")?.toValue() ?? "";
|
|
@@ -4218,6 +4248,7 @@ var Indi = class extends Common {
|
|
|
4218
4248
|
imgId,
|
|
4219
4249
|
person: this.id,
|
|
4220
4250
|
title,
|
|
4251
|
+
note: objeNoteValue(obje),
|
|
4221
4252
|
url,
|
|
4222
4253
|
contentType: type,
|
|
4223
4254
|
downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
|
|
@@ -4241,7 +4272,7 @@ var Indi = class extends Common {
|
|
|
4241
4272
|
if (!obje) {
|
|
4242
4273
|
return;
|
|
4243
4274
|
}
|
|
4244
|
-
const key =
|
|
4275
|
+
const key = objeXrefKey(obje, index);
|
|
4245
4276
|
obje.standardizeMedia();
|
|
4246
4277
|
const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
|
|
4247
4278
|
const url = obje?.get("FILE")?.toValue();
|
|
@@ -4258,6 +4289,7 @@ var Indi = class extends Common {
|
|
|
4258
4289
|
imgId,
|
|
4259
4290
|
person: this.id,
|
|
4260
4291
|
title,
|
|
4292
|
+
note: objeNoteValue(obje),
|
|
4261
4293
|
url,
|
|
4262
4294
|
contentType: type,
|
|
4263
4295
|
downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
|
|
@@ -4289,7 +4321,12 @@ var Indi = class extends Common {
|
|
|
4289
4321
|
);
|
|
4290
4322
|
if (cached !== void 0) {
|
|
4291
4323
|
if (cached?.file && !isRemoteOrEmbeddedMediaUrl(cached.file)) {
|
|
4292
|
-
const resolvedCached = await resolveLocalMediaUrl(cached.file
|
|
4324
|
+
const resolvedCached = await resolveLocalMediaUrl(cached.file, {
|
|
4325
|
+
url: cached.file,
|
|
4326
|
+
person: this.id,
|
|
4327
|
+
tree: this.getTreeId?.(),
|
|
4328
|
+
treeName: this.getTreeName?.()
|
|
4329
|
+
});
|
|
4293
4330
|
if (resolvedCached && isRemoteOrEmbeddedMediaUrl(resolvedCached)) {
|
|
4294
4331
|
const refreshed = { ...cached, file: resolvedCached };
|
|
4295
4332
|
profilePictureCache(
|
|
@@ -4314,7 +4351,16 @@ var Indi = class extends Common {
|
|
|
4314
4351
|
}
|
|
4315
4352
|
const mediaArray = Object.values(mediaList);
|
|
4316
4353
|
const toDisplayableProfile = async (media, isPrimary) => {
|
|
4317
|
-
const resolvedFile = await resolveLocalMediaUrl(media.url
|
|
4354
|
+
const resolvedFile = await resolveLocalMediaUrl(media.url, {
|
|
4355
|
+
url: media.url,
|
|
4356
|
+
id: media.id,
|
|
4357
|
+
imgId: media.imgId,
|
|
4358
|
+
key: media.key,
|
|
4359
|
+
contentType: media.contentType,
|
|
4360
|
+
person: media.person || this.id,
|
|
4361
|
+
tree: media.tree || this.getTreeId?.(),
|
|
4362
|
+
treeName: this.getTreeName?.()
|
|
4363
|
+
});
|
|
4318
4364
|
if (!resolvedFile || !isRemoteOrEmbeddedMediaUrl(resolvedFile)) {
|
|
4319
4365
|
return void 0;
|
|
4320
4366
|
}
|
|
@@ -6276,7 +6322,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
6276
6322
|
}
|
|
6277
6323
|
return `${hungarianOrdinalize(
|
|
6278
6324
|
degree
|
|
6279
|
-
)}unokatestv\xE9r ${level}x elt\xE1vol\xEDtva`;
|
|
6325
|
+
)}unokatestv\xE9r ${Math.abs(level)}x elt\xE1vol\xEDtva`;
|
|
6280
6326
|
}
|
|
6281
6327
|
auncle() {
|
|
6282
6328
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6320,14 +6366,25 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
6320
6366
|
return `${ordinalized ? `${ordinalized}unoka` : ""}testv\xE9r ${origPrefix.replace(/nagy$/, "")}unok\xE1ja`;
|
|
6321
6367
|
}
|
|
6322
6368
|
parent() {
|
|
6369
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6370
|
+
if (level <= 1) {
|
|
6371
|
+
if (this.personN?.isMale()) {
|
|
6372
|
+
return "apa";
|
|
6373
|
+
}
|
|
6374
|
+
if (this.personN?.isFemale()) {
|
|
6375
|
+
return "anya";
|
|
6376
|
+
}
|
|
6377
|
+
return "sz\xFCl\u0151";
|
|
6378
|
+
}
|
|
6323
6379
|
const prefix = this.directPrefix();
|
|
6380
|
+
const gen = prefix === "nagy" ? "" : prefix;
|
|
6324
6381
|
if (this.personN?.isMale()) {
|
|
6325
|
-
return `${
|
|
6382
|
+
return `${gen}nagyapa`;
|
|
6326
6383
|
}
|
|
6327
6384
|
if (this.personN?.isFemale()) {
|
|
6328
|
-
return `${
|
|
6385
|
+
return `${gen}nagyanya`;
|
|
6329
6386
|
}
|
|
6330
|
-
return `${
|
|
6387
|
+
return `${gen}nagysz\xFCl\u0151`;
|
|
6331
6388
|
}
|
|
6332
6389
|
child() {
|
|
6333
6390
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
@@ -6521,27 +6578,30 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
6521
6578
|
if (!degree) {
|
|
6522
6579
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6523
6580
|
}
|
|
6524
|
-
return `${ordinalize(degree)} cousin ${level}x removed`;
|
|
6581
|
+
return `${ordinalize(degree)} cousin ${Math.abs(level)}x removed`;
|
|
6525
6582
|
}
|
|
6526
6583
|
auncle() {
|
|
6527
|
-
const
|
|
6584
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6585
|
+
const greats = level <= 1 ? "" : "great-".repeat(level - 1);
|
|
6528
6586
|
if (this.personN?.isMale()) {
|
|
6529
|
-
return `${
|
|
6587
|
+
return `${greats}uncle`;
|
|
6530
6588
|
}
|
|
6531
6589
|
if (this.personN?.isFemale()) {
|
|
6532
|
-
return `${
|
|
6590
|
+
return `${greats}aunt`;
|
|
6533
6591
|
}
|
|
6534
|
-
return `${
|
|
6592
|
+
return greats ? `${greats}uncle/${greats}aunt` : "uncle/aunt";
|
|
6535
6593
|
}
|
|
6536
6594
|
nibling() {
|
|
6537
|
-
const
|
|
6595
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6596
|
+
const greats = level <= 2 ? "" : "great-".repeat(level - 2);
|
|
6597
|
+
const grand = level <= 1 ? "" : "grand";
|
|
6538
6598
|
if (this.personN?.isMale()) {
|
|
6539
|
-
return `${
|
|
6599
|
+
return `${greats}${grand}nephew`;
|
|
6540
6600
|
}
|
|
6541
6601
|
if (this.personN?.isFemale()) {
|
|
6542
|
-
return `${
|
|
6602
|
+
return `${greats}${grand}niece`;
|
|
6543
6603
|
}
|
|
6544
|
-
return `${
|
|
6604
|
+
return greats || grand ? `${greats}${grand}nephew/${greats}${grand}niece` : "nephew/niece";
|
|
6545
6605
|
}
|
|
6546
6606
|
parent() {
|
|
6547
6607
|
const prefix = this.directPrefix();
|
|
@@ -6669,45 +6729,64 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
6669
6729
|
};
|
|
6670
6730
|
|
|
6671
6731
|
// src/kinship-translator/patterns.de.ts
|
|
6732
|
+
var parentRelationsDe = {
|
|
6733
|
+
step: "Stief",
|
|
6734
|
+
foster: "Pflege",
|
|
6735
|
+
adopted: "Adoptiv"
|
|
6736
|
+
};
|
|
6672
6737
|
var InLawsDe = {
|
|
6673
|
-
"Ehepartner von (
|
|
6674
|
-
"Ehefrau von (
|
|
6675
|
-
"Ehemann von (
|
|
6676
|
-
"
|
|
6677
|
-
"
|
|
6678
|
-
"
|
|
6679
|
-
"Ehefrau von (Halb)
|
|
6680
|
-
"Ehemann von (Halb)
|
|
6681
|
-
"Ehepartner von (Halb)
|
|
6682
|
-
"(Halb)
|
|
6683
|
-
"(Halb)
|
|
6684
|
-
"(Halb)
|
|
6738
|
+
"Ehepartner von (Kind|Tochter|Sohn)": "Schwiegerkind",
|
|
6739
|
+
"Ehefrau von (Kind|Tochter|Sohn)": "Schwiegertochter",
|
|
6740
|
+
"Ehemann von (Kind|Tochter|Sohn)": "Schwiegersohn",
|
|
6741
|
+
"Mutter (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegermutter",
|
|
6742
|
+
"Vater (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegervater",
|
|
6743
|
+
"Elternteil (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegerelternteil",
|
|
6744
|
+
"Ehefrau von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schw\xE4gerin",
|
|
6745
|
+
"Ehemann von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager",
|
|
6746
|
+
"Ehepartner von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager/Schw\xE4gerin",
|
|
6747
|
+
"(Halb)?-?(Schwester|schwester) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schw\xE4gerin",
|
|
6748
|
+
"(Halb)?-?(Bruder|bruder) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager",
|
|
6749
|
+
"(Halb)?-?(Geschwister|geschwister) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager/Schw\xE4gerin"
|
|
6685
6750
|
};
|
|
6686
6751
|
|
|
6687
6752
|
// src/kinship-translator/kinship-translator.de.ts
|
|
6688
|
-
var
|
|
6689
|
-
|
|
6690
|
-
|
|
6691
|
-
|
|
6692
|
-
|
|
6693
|
-
|
|
6694
|
-
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
|
|
6699
|
-
|
|
6700
|
-
|
|
6753
|
+
var sexOf = (person) => {
|
|
6754
|
+
if (person?.isMale?.()) {
|
|
6755
|
+
return "m";
|
|
6756
|
+
}
|
|
6757
|
+
if (person?.isFemale?.()) {
|
|
6758
|
+
return "f";
|
|
6759
|
+
}
|
|
6760
|
+
return "n";
|
|
6761
|
+
};
|
|
6762
|
+
var pick = (sex, male, female, neutral) => {
|
|
6763
|
+
if (sex === "m") {
|
|
6764
|
+
return male;
|
|
6765
|
+
}
|
|
6766
|
+
if (sex === "f") {
|
|
6767
|
+
return female;
|
|
6701
6768
|
}
|
|
6769
|
+
return neutral;
|
|
6770
|
+
};
|
|
6771
|
+
var ur = (count) => count > 0 ? "Ur".repeat(count) : "";
|
|
6772
|
+
var genitiveArticle = (spouseType) => {
|
|
6773
|
+
if (spouseType === "Ehefrau") {
|
|
6774
|
+
return `der ${spouseType}`;
|
|
6775
|
+
}
|
|
6776
|
+
return `des ${spouseType}s`;
|
|
6777
|
+
};
|
|
6778
|
+
var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
6702
6779
|
indirect() {
|
|
6703
6780
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
6704
6781
|
if (degree > 0) {
|
|
6705
6782
|
degree = degree - 1;
|
|
6706
6783
|
}
|
|
6707
|
-
|
|
6708
|
-
|
|
6784
|
+
const sex = sexOf(this.personN);
|
|
6785
|
+
const cousin = pick(sex, "Cousin", "Cousine", "Cousin/Cousine");
|
|
6786
|
+
if (degree <= 1) {
|
|
6787
|
+
return cousin;
|
|
6709
6788
|
}
|
|
6710
|
-
return
|
|
6789
|
+
return `${cousin} ${degree}. Grades`;
|
|
6711
6790
|
}
|
|
6712
6791
|
removal() {
|
|
6713
6792
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6718,101 +6797,101 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
6718
6797
|
if (!degree) {
|
|
6719
6798
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6720
6799
|
}
|
|
6721
|
-
return
|
|
6800
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 entfernt`;
|
|
6722
6801
|
}
|
|
6723
6802
|
auncle() {
|
|
6724
|
-
const
|
|
6725
|
-
|
|
6726
|
-
|
|
6727
|
-
|
|
6728
|
-
if (this.personN?.isFemale()) {
|
|
6729
|
-
return `${prefix}tante`;
|
|
6803
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6804
|
+
const sex = sexOf(this.personN);
|
|
6805
|
+
if (level <= 1) {
|
|
6806
|
+
return pick(sex, "Onkel", "Tante", "Onkel/Tante");
|
|
6730
6807
|
}
|
|
6731
|
-
|
|
6808
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
6809
|
+
return pick(
|
|
6810
|
+
sex,
|
|
6811
|
+
`${prefix}onkel`,
|
|
6812
|
+
`${prefix}tante`,
|
|
6813
|
+
`${prefix}onkel/tante`
|
|
6814
|
+
);
|
|
6732
6815
|
}
|
|
6733
6816
|
nibling() {
|
|
6734
|
-
const
|
|
6735
|
-
|
|
6736
|
-
|
|
6737
|
-
|
|
6738
|
-
if (this.personN?.isFemale()) {
|
|
6739
|
-
return `${prefix}nichte`;
|
|
6817
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6818
|
+
const sex = sexOf(this.personN);
|
|
6819
|
+
if (level <= 1) {
|
|
6820
|
+
return pick(sex, "Neffe", "Nichte", "Neffe/Nichte");
|
|
6740
6821
|
}
|
|
6741
|
-
|
|
6822
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
6823
|
+
return pick(
|
|
6824
|
+
sex,
|
|
6825
|
+
`${prefix}neffe`,
|
|
6826
|
+
`${prefix}nichte`,
|
|
6827
|
+
`${prefix}neffe/nichte`
|
|
6828
|
+
);
|
|
6742
6829
|
}
|
|
6743
6830
|
parent() {
|
|
6744
|
-
const
|
|
6745
|
-
|
|
6746
|
-
|
|
6747
|
-
|
|
6748
|
-
if (this.personN?.isFemale()) {
|
|
6749
|
-
return `${prefix}mutter`;
|
|
6831
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6832
|
+
const sex = sexOf(this.personN);
|
|
6833
|
+
if (level <= 1) {
|
|
6834
|
+
return pick(sex, "Vater", "Mutter", "Elternteil");
|
|
6750
6835
|
}
|
|
6751
|
-
|
|
6836
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
6837
|
+
return pick(
|
|
6838
|
+
sex,
|
|
6839
|
+
`${prefix}vater`,
|
|
6840
|
+
`${prefix}mutter`,
|
|
6841
|
+
`${prefix}elternteil`
|
|
6842
|
+
);
|
|
6752
6843
|
}
|
|
6753
6844
|
child() {
|
|
6754
|
-
const
|
|
6755
|
-
|
|
6756
|
-
|
|
6757
|
-
|
|
6758
|
-
if (this.personN?.isFemale()) {
|
|
6759
|
-
return `${prefix}tochter`;
|
|
6845
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6846
|
+
const sex = sexOf(this.personN);
|
|
6847
|
+
if (level <= 1) {
|
|
6848
|
+
return pick(sex, "Sohn", "Tochter", "Kind");
|
|
6760
6849
|
}
|
|
6761
|
-
|
|
6850
|
+
const prefix = ur(level - 2);
|
|
6851
|
+
return pick(
|
|
6852
|
+
sex,
|
|
6853
|
+
`${prefix}Enkel`,
|
|
6854
|
+
`${prefix}Enkelin`,
|
|
6855
|
+
`${prefix}Enkelkind`
|
|
6856
|
+
);
|
|
6762
6857
|
}
|
|
6763
6858
|
sibling() {
|
|
6764
|
-
|
|
6765
|
-
return "bruder";
|
|
6766
|
-
}
|
|
6767
|
-
if (this.personN?.isFemale()) {
|
|
6768
|
-
return "schwester";
|
|
6769
|
-
}
|
|
6770
|
-
return "geschwister";
|
|
6859
|
+
return pick(sexOf(this.personN), "Bruder", "Schwester", "Geschwister");
|
|
6771
6860
|
}
|
|
6772
6861
|
halfBlood(relation) {
|
|
6773
6862
|
if (!relation || !this.isHalfBlood) {
|
|
6774
6863
|
return relation ?? "";
|
|
6775
6864
|
}
|
|
6776
|
-
if (
|
|
6865
|
+
if (/[\s-]/.test(relation) || /^(Groß|Ur)/.test(relation)) {
|
|
6777
6866
|
return `Halb-${relation}`;
|
|
6778
6867
|
}
|
|
6779
|
-
return `Halb${relation}`;
|
|
6868
|
+
return `Halb${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
6780
6869
|
}
|
|
6781
6870
|
spouse() {
|
|
6782
|
-
|
|
6783
|
-
return "Ehemann";
|
|
6784
|
-
}
|
|
6785
|
-
if (this.personN?.isFemale()) {
|
|
6786
|
-
return "Ehefrau";
|
|
6787
|
-
}
|
|
6788
|
-
return "Ehepartner";
|
|
6871
|
+
return pick(sexOf(this.personN), "Ehemann", "Ehefrau", "Ehepartner");
|
|
6789
6872
|
}
|
|
6790
6873
|
ofSpouse(relation) {
|
|
6791
6874
|
if (!relation) {
|
|
6792
6875
|
return "";
|
|
6793
6876
|
}
|
|
6794
|
-
const
|
|
6795
|
-
|
|
6796
|
-
|
|
6797
|
-
|
|
6798
|
-
|
|
6799
|
-
|
|
6800
|
-
|
|
6801
|
-
}
|
|
6802
|
-
return `${relation} des ${spouseType}s`;
|
|
6877
|
+
const spouseType = pick(
|
|
6878
|
+
sexOf(this.path?.[1].indi),
|
|
6879
|
+
"Ehemann",
|
|
6880
|
+
"Ehefrau",
|
|
6881
|
+
"Ehepartner"
|
|
6882
|
+
);
|
|
6883
|
+
return `${relation} ${genitiveArticle(spouseType)}`;
|
|
6803
6884
|
}
|
|
6804
6885
|
spouseOf(relation) {
|
|
6805
6886
|
if (!relation) {
|
|
6806
6887
|
return "";
|
|
6807
6888
|
}
|
|
6808
|
-
const
|
|
6809
|
-
|
|
6810
|
-
|
|
6811
|
-
|
|
6812
|
-
|
|
6813
|
-
|
|
6814
|
-
spouseType = "Ehefrau";
|
|
6815
|
-
}
|
|
6889
|
+
const spouseType = pick(
|
|
6890
|
+
sexOf(this.path?.[this.path.length - 1].indi),
|
|
6891
|
+
"Ehemann",
|
|
6892
|
+
"Ehefrau",
|
|
6893
|
+
"Ehepartner"
|
|
6894
|
+
);
|
|
6816
6895
|
return `${spouseType} von ${relation}`;
|
|
6817
6896
|
}
|
|
6818
6897
|
of(relation) {
|
|
@@ -6830,8 +6909,8 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
6830
6909
|
if (!name || !relation) {
|
|
6831
6910
|
return relation ?? "";
|
|
6832
6911
|
}
|
|
6833
|
-
if (relation.includes(" des ") || relation.includes(" von ")) {
|
|
6834
|
-
return relation.replace(/ (des|von) /, ` $1 ${name}s `);
|
|
6912
|
+
if (relation.includes(" des ") || relation.includes(" der ") || relation.includes(" von ")) {
|
|
6913
|
+
return relation.replace(/ (des|der|von) /, ` $1 ${name}s `);
|
|
6835
6914
|
}
|
|
6836
6915
|
return `${name}s ${relation}`;
|
|
6837
6916
|
}
|
|
@@ -6861,50 +6940,82 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
6861
6940
|
if (!relation || !this.pathN?.relation) {
|
|
6862
6941
|
return relation ?? "";
|
|
6863
6942
|
}
|
|
6864
|
-
|
|
6943
|
+
const prefix = parentRelationsDe[this.pathN.relation];
|
|
6944
|
+
if (!prefix) {
|
|
6945
|
+
return relation;
|
|
6946
|
+
}
|
|
6947
|
+
if (prefix.endsWith("-") || prefix.endsWith(" ")) {
|
|
6948
|
+
return `${prefix}${relation}`;
|
|
6949
|
+
}
|
|
6950
|
+
return `${prefix}${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
6865
6951
|
}
|
|
6866
6952
|
};
|
|
6867
6953
|
|
|
6868
6954
|
// src/kinship-translator/patterns.fr.ts
|
|
6955
|
+
var parentRelationsFr = {
|
|
6956
|
+
step: "step",
|
|
6957
|
+
foster: "foster",
|
|
6958
|
+
adopted: "adopted"
|
|
6959
|
+
};
|
|
6869
6960
|
var InLawsFr = {
|
|
6870
6961
|
"conjoint de (enfant|fille|fils)": "beau-fils/belle-fille",
|
|
6871
6962
|
"\xE9pouse de (enfant|fille|fils)": "belle-fille",
|
|
6872
6963
|
"mari de (enfant|fille|fils)": "gendre",
|
|
6873
|
-
"m\xE8re du
|
|
6874
|
-
"p\xE8re du
|
|
6875
|
-
"parent du
|
|
6964
|
+
"m\xE8re (du mari|du conjoint|de l'\xE9pouse)": "belle-m\xE8re",
|
|
6965
|
+
"p\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-p\xE8re",
|
|
6966
|
+
"parent (du mari|du conjoint|de l'\xE9pouse)": "beau-parent",
|
|
6876
6967
|
"\xE9pouse de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "belle-s\u0153ur",
|
|
6877
6968
|
"mari de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re",
|
|
6878
6969
|
"conjoint de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re/belle-s\u0153ur",
|
|
6879
|
-
"(demi-)?s\u0153ur du
|
|
6880
|
-
"(demi-)?fr\xE8re du
|
|
6881
|
-
"(demi-)?fr\xE8re/s\u0153ur du
|
|
6970
|
+
"(demi-)?s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "belle-s\u0153ur",
|
|
6971
|
+
"(demi-)?fr\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re",
|
|
6972
|
+
"(demi-)?fr\xE8re/s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re/belle-s\u0153ur"
|
|
6882
6973
|
};
|
|
6883
6974
|
|
|
6884
6975
|
// src/kinship-translator/kinship-translator.fr.ts
|
|
6885
|
-
var
|
|
6886
|
-
|
|
6887
|
-
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
|
|
6892
|
-
|
|
6893
|
-
|
|
6894
|
-
|
|
6895
|
-
|
|
6896
|
-
|
|
6897
|
-
|
|
6976
|
+
var sexOf2 = (person) => {
|
|
6977
|
+
if (person?.isMale?.()) {
|
|
6978
|
+
return "m";
|
|
6979
|
+
}
|
|
6980
|
+
if (person?.isFemale?.()) {
|
|
6981
|
+
return "f";
|
|
6982
|
+
}
|
|
6983
|
+
return "n";
|
|
6984
|
+
};
|
|
6985
|
+
var pick2 = (sex, male, female, neutral) => {
|
|
6986
|
+
if (sex === "m") {
|
|
6987
|
+
return male;
|
|
6988
|
+
}
|
|
6989
|
+
if (sex === "f") {
|
|
6990
|
+
return female;
|
|
6991
|
+
}
|
|
6992
|
+
return neutral;
|
|
6993
|
+
};
|
|
6994
|
+
var arriere = (count) => count > 0 ? "arri\xE8re-".repeat(count) : "";
|
|
6995
|
+
var frenchOrdinal = (n) => n === 1 ? "1er" : `${n}e`;
|
|
6996
|
+
var isFeminineRelation = (relation) => /mère|fille|sœur|tante|nièce|cousine|épouse/.test(relation);
|
|
6997
|
+
var ofSpousePrep = (spouseType) => {
|
|
6998
|
+
if (spouseType === "\xE9pouse") {
|
|
6999
|
+
return "de l'";
|
|
6898
7000
|
}
|
|
7001
|
+
return "du ";
|
|
7002
|
+
};
|
|
7003
|
+
var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
6899
7004
|
indirect() {
|
|
6900
7005
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
6901
7006
|
if (degree > 0) {
|
|
6902
7007
|
degree = degree - 1;
|
|
6903
7008
|
}
|
|
6904
|
-
|
|
6905
|
-
|
|
7009
|
+
const cousin = pick2(
|
|
7010
|
+
sexOf2(this.personN),
|
|
7011
|
+
"cousin",
|
|
7012
|
+
"cousine",
|
|
7013
|
+
"cousin/cousine"
|
|
7014
|
+
);
|
|
7015
|
+
if (degree <= 1) {
|
|
7016
|
+
return cousin;
|
|
6906
7017
|
}
|
|
6907
|
-
return
|
|
7018
|
+
return `${cousin} au ${frenchOrdinal(degree)} degr\xE9`;
|
|
6908
7019
|
}
|
|
6909
7020
|
removal() {
|
|
6910
7021
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6915,56 +7026,57 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
6915
7026
|
if (!degree) {
|
|
6916
7027
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6917
7028
|
}
|
|
6918
|
-
return
|
|
7029
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 \xE9loign\xE9`;
|
|
6919
7030
|
}
|
|
6920
7031
|
auncle() {
|
|
6921
|
-
const
|
|
6922
|
-
|
|
6923
|
-
|
|
6924
|
-
|
|
6925
|
-
|
|
6926
|
-
return `${prefix}tante`;
|
|
7032
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7033
|
+
const sex = sexOf2(this.personN);
|
|
7034
|
+
const base = pick2(sex, "oncle", "tante", "oncle/tante");
|
|
7035
|
+
if (level <= 1) {
|
|
7036
|
+
return base;
|
|
6927
7037
|
}
|
|
6928
|
-
|
|
7038
|
+
const grands = pick2(
|
|
7039
|
+
sex,
|
|
7040
|
+
"grand-oncle",
|
|
7041
|
+
"grand-tante",
|
|
7042
|
+
"grand-oncle/tante"
|
|
7043
|
+
);
|
|
7044
|
+
return `${arriere(level - 2)}${grands}`;
|
|
6929
7045
|
}
|
|
6930
7046
|
nibling() {
|
|
6931
|
-
const
|
|
6932
|
-
|
|
6933
|
-
|
|
6934
|
-
|
|
6935
|
-
if (this.personN?.isFemale()) {
|
|
6936
|
-
return `${prefix}ni\xE8ce`;
|
|
7047
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7048
|
+
const sex = sexOf2(this.personN);
|
|
7049
|
+
if (level <= 1) {
|
|
7050
|
+
return pick2(sex, "neveu", "ni\xE8ce", "neveu/ni\xE8ce");
|
|
6937
7051
|
}
|
|
6938
|
-
|
|
7052
|
+
const grands = pick2(
|
|
7053
|
+
sex,
|
|
7054
|
+
"grand-neveu",
|
|
7055
|
+
"grande-ni\xE8ce",
|
|
7056
|
+
"grand-neveu/grande-ni\xE8ce"
|
|
7057
|
+
);
|
|
7058
|
+
return `${arriere(level - 2)}${grands}`;
|
|
6939
7059
|
}
|
|
6940
7060
|
parent() {
|
|
6941
|
-
const
|
|
6942
|
-
|
|
6943
|
-
|
|
6944
|
-
|
|
6945
|
-
if (this.personN?.isFemale()) {
|
|
6946
|
-
return `${prefix}m\xE8re`;
|
|
7061
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7062
|
+
const sex = sexOf2(this.personN);
|
|
7063
|
+
if (level <= 1) {
|
|
7064
|
+
return pick2(sex, "p\xE8re", "m\xE8re", "parent");
|
|
6947
7065
|
}
|
|
6948
|
-
|
|
7066
|
+
const grands = pick2(sex, "grand-p\xE8re", "grand-m\xE8re", "grand-parent");
|
|
7067
|
+
return `${arriere(level - 2)}${grands}`;
|
|
6949
7068
|
}
|
|
6950
7069
|
child() {
|
|
6951
|
-
const
|
|
6952
|
-
|
|
6953
|
-
|
|
6954
|
-
|
|
6955
|
-
if (this.personN?.isFemale()) {
|
|
6956
|
-
return `${prefix}fille`;
|
|
7070
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7071
|
+
const sex = sexOf2(this.personN);
|
|
7072
|
+
if (level <= 1) {
|
|
7073
|
+
return pick2(sex, "fils", "fille", "enfant");
|
|
6957
7074
|
}
|
|
6958
|
-
|
|
7075
|
+
const petits = pick2(sex, "petit-fils", "petite-fille", "petit-enfant");
|
|
7076
|
+
return `${arriere(level - 2)}${petits}`;
|
|
6959
7077
|
}
|
|
6960
7078
|
sibling() {
|
|
6961
|
-
|
|
6962
|
-
return "fr\xE8re";
|
|
6963
|
-
}
|
|
6964
|
-
if (this.personN?.isFemale()) {
|
|
6965
|
-
return "s\u0153ur";
|
|
6966
|
-
}
|
|
6967
|
-
return "fr\xE8re/s\u0153ur";
|
|
7079
|
+
return pick2(sexOf2(this.personN), "fr\xE8re", "s\u0153ur", "fr\xE8re/s\u0153ur");
|
|
6968
7080
|
}
|
|
6969
7081
|
halfBlood(relation) {
|
|
6970
7082
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -6973,40 +7085,30 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
6973
7085
|
return `demi-${relation}`;
|
|
6974
7086
|
}
|
|
6975
7087
|
spouse() {
|
|
6976
|
-
|
|
6977
|
-
return "mari";
|
|
6978
|
-
}
|
|
6979
|
-
if (this.personN?.isFemale()) {
|
|
6980
|
-
return "\xE9pouse";
|
|
6981
|
-
}
|
|
6982
|
-
return "conjoint";
|
|
7088
|
+
return pick2(sexOf2(this.personN), "mari", "\xE9pouse", "conjoint");
|
|
6983
7089
|
}
|
|
6984
7090
|
ofSpouse(relation) {
|
|
6985
7091
|
if (!relation) {
|
|
6986
7092
|
return "";
|
|
6987
7093
|
}
|
|
6988
|
-
const
|
|
6989
|
-
|
|
6990
|
-
|
|
6991
|
-
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
}
|
|
6996
|
-
return `${relation} du ${spouseType}`;
|
|
7094
|
+
const spouseType = pick2(
|
|
7095
|
+
sexOf2(this.path?.[1].indi),
|
|
7096
|
+
"mari",
|
|
7097
|
+
"\xE9pouse",
|
|
7098
|
+
"conjoint"
|
|
7099
|
+
);
|
|
7100
|
+
return `${relation} ${ofSpousePrep(spouseType)}${spouseType}`;
|
|
6997
7101
|
}
|
|
6998
7102
|
spouseOf(relation) {
|
|
6999
7103
|
if (!relation) {
|
|
7000
7104
|
return "";
|
|
7001
7105
|
}
|
|
7002
|
-
const
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
spouseType = "\xE9pouse";
|
|
7009
|
-
}
|
|
7106
|
+
const spouseType = pick2(
|
|
7107
|
+
sexOf2(this.path?.[this.path.length - 1].indi),
|
|
7108
|
+
"mari",
|
|
7109
|
+
"\xE9pouse",
|
|
7110
|
+
"conjoint"
|
|
7111
|
+
);
|
|
7010
7112
|
return `${spouseType} de ${relation}`;
|
|
7011
7113
|
}
|
|
7012
7114
|
of(relation) {
|
|
@@ -7027,6 +7129,9 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
7027
7129
|
if (relation.includes(" du ") || relation.includes(" de ")) {
|
|
7028
7130
|
return relation.replace(/ (du|de) /, ` $1 ${name} `);
|
|
7029
7131
|
}
|
|
7132
|
+
if (relation.includes(" de l'")) {
|
|
7133
|
+
return relation.replace(" de l'", ` de ${name} l'`);
|
|
7134
|
+
}
|
|
7030
7135
|
return `${relation} de ${name}`;
|
|
7031
7136
|
}
|
|
7032
7137
|
inLaw(relation) {
|
|
@@ -7055,50 +7160,118 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
7055
7160
|
if (!relation || !this.pathN?.relation) {
|
|
7056
7161
|
return relation ?? "";
|
|
7057
7162
|
}
|
|
7058
|
-
|
|
7163
|
+
const kind = parentRelationsFr[this.pathN.relation];
|
|
7164
|
+
if (!kind) {
|
|
7165
|
+
return relation;
|
|
7166
|
+
}
|
|
7167
|
+
if (kind === "step") {
|
|
7168
|
+
return `${isFeminineRelation(relation) ? "belle-" : "beau-"}${relation}`;
|
|
7169
|
+
}
|
|
7170
|
+
if (kind === "adopted") {
|
|
7171
|
+
return `${relation} ${isFeminineRelation(relation) ? "adoptive" : "adoptif"}`;
|
|
7172
|
+
}
|
|
7173
|
+
if (kind === "foster") {
|
|
7174
|
+
return `${relation} d'accueil`;
|
|
7175
|
+
}
|
|
7176
|
+
return relation;
|
|
7059
7177
|
}
|
|
7060
7178
|
};
|
|
7061
7179
|
|
|
7062
7180
|
// src/kinship-translator/patterns.es.ts
|
|
7181
|
+
var parentRelationsEs = {
|
|
7182
|
+
step: {
|
|
7183
|
+
padre: "padrastro",
|
|
7184
|
+
madre: "madrastra",
|
|
7185
|
+
hijo: "hijastro",
|
|
7186
|
+
hija: "hijastra",
|
|
7187
|
+
hermano: "hermanastro",
|
|
7188
|
+
hermana: "hermanastra",
|
|
7189
|
+
abuelo: "abuelastro",
|
|
7190
|
+
abuela: "abuelastra"
|
|
7191
|
+
}
|
|
7192
|
+
};
|
|
7063
7193
|
var InLawsEs = {
|
|
7064
7194
|
"c\xF3nyuge de (hijo/hija|hija|hijo)": "yerno/nuera",
|
|
7065
7195
|
"esposa de (hijo/hija|hija|hijo)": "nuera",
|
|
7066
7196
|
"esposo de (hijo/hija|hija|hijo)": "yerno",
|
|
7067
|
-
"madre del
|
|
7068
|
-
"padre del
|
|
7069
|
-
"padre/madre del
|
|
7197
|
+
"madre (del c\xF3nyuge|del esposo|de la esposa)": "suegra",
|
|
7198
|
+
"padre (del c\xF3nyuge|del esposo|de la esposa)": "suegro",
|
|
7199
|
+
"padre/madre (del c\xF3nyuge|del esposo|de la esposa)": "suegro/suegra",
|
|
7070
7200
|
"esposa de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ada",
|
|
7071
7201
|
"esposo de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado",
|
|
7072
7202
|
"c\xF3nyuge de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado/cu\xF1ada",
|
|
7073
|
-
"(medio |media |medio/a )?hermana del
|
|
7074
|
-
"(medio |media |medio/a )?hermano del
|
|
7075
|
-
"(medio |media |medio/a )?hermano/hermana del
|
|
7203
|
+
"(medio |media |medio/a )?hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ada",
|
|
7204
|
+
"(medio |media |medio/a )?hermano (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado",
|
|
7205
|
+
"(medio |media |medio/a )?hermano/hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado/cu\xF1ada"
|
|
7076
7206
|
};
|
|
7077
7207
|
|
|
7078
7208
|
// src/kinship-translator/kinship-translator.es.ts
|
|
7079
|
-
var
|
|
7080
|
-
|
|
7081
|
-
|
|
7082
|
-
|
|
7083
|
-
|
|
7084
|
-
|
|
7085
|
-
if (level === 2) {
|
|
7086
|
-
return "bisabuel";
|
|
7087
|
-
}
|
|
7088
|
-
if (level === 3) {
|
|
7089
|
-
return "tatarabuel";
|
|
7090
|
-
}
|
|
7091
|
-
return `t\xE1tara${level - 2}-abuel`;
|
|
7209
|
+
var sexOf3 = (person) => {
|
|
7210
|
+
if (person?.isMale?.()) {
|
|
7211
|
+
return "m";
|
|
7212
|
+
}
|
|
7213
|
+
if (person?.isFemale?.()) {
|
|
7214
|
+
return "f";
|
|
7092
7215
|
}
|
|
7216
|
+
return "n";
|
|
7217
|
+
};
|
|
7218
|
+
var pick3 = (sex, male, female, neutral) => {
|
|
7219
|
+
if (sex === "m") {
|
|
7220
|
+
return male;
|
|
7221
|
+
}
|
|
7222
|
+
if (sex === "f") {
|
|
7223
|
+
return female;
|
|
7224
|
+
}
|
|
7225
|
+
return neutral;
|
|
7226
|
+
};
|
|
7227
|
+
var SPANISH_ORDINALS_M = [
|
|
7228
|
+
"",
|
|
7229
|
+
"",
|
|
7230
|
+
"segundo",
|
|
7231
|
+
"tercero",
|
|
7232
|
+
"cuarto",
|
|
7233
|
+
"quinto",
|
|
7234
|
+
"sexto",
|
|
7235
|
+
"s\xE9ptimo",
|
|
7236
|
+
"octavo",
|
|
7237
|
+
"noveno",
|
|
7238
|
+
"d\xE9cimo"
|
|
7239
|
+
];
|
|
7240
|
+
var SPANISH_ORDINALS_F = [
|
|
7241
|
+
"",
|
|
7242
|
+
"",
|
|
7243
|
+
"segunda",
|
|
7244
|
+
"tercera",
|
|
7245
|
+
"cuarta",
|
|
7246
|
+
"quinta",
|
|
7247
|
+
"sexta",
|
|
7248
|
+
"s\xE9ptima",
|
|
7249
|
+
"octava",
|
|
7250
|
+
"novena",
|
|
7251
|
+
"d\xE9cima"
|
|
7252
|
+
];
|
|
7253
|
+
var spanishOrdinal = (n, sex) => {
|
|
7254
|
+
const list = sex === "f" ? SPANISH_ORDINALS_F : SPANISH_ORDINALS_M;
|
|
7255
|
+
return list[n] ?? `${n}.\xBA`;
|
|
7256
|
+
};
|
|
7257
|
+
var ofSpousePrep2 = (spouseType) => {
|
|
7258
|
+
if (spouseType === "esposa") {
|
|
7259
|
+
return "de la ";
|
|
7260
|
+
}
|
|
7261
|
+
return "del ";
|
|
7262
|
+
};
|
|
7263
|
+
var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
7093
7264
|
indirect() {
|
|
7094
7265
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
7095
7266
|
if (degree > 0) {
|
|
7096
7267
|
degree = degree - 1;
|
|
7097
7268
|
}
|
|
7098
|
-
|
|
7099
|
-
|
|
7269
|
+
const sex = sexOf3(this.personN);
|
|
7270
|
+
const cousin = pick3(sex, "primo", "prima", "primo/prima");
|
|
7271
|
+
if (degree <= 1) {
|
|
7272
|
+
return cousin;
|
|
7100
7273
|
}
|
|
7101
|
-
return
|
|
7274
|
+
return `${cousin} ${spanishOrdinal(degree, sex)}`;
|
|
7102
7275
|
}
|
|
7103
7276
|
removal() {
|
|
7104
7277
|
const level = this.pathN?.level ?? 0;
|
|
@@ -7109,56 +7282,133 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
7109
7282
|
if (!degree) {
|
|
7110
7283
|
return level < 0 ? this.nibling() : this.auncle();
|
|
7111
7284
|
}
|
|
7112
|
-
return
|
|
7285
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 separado`;
|
|
7113
7286
|
}
|
|
7114
7287
|
auncle() {
|
|
7115
|
-
const
|
|
7116
|
-
|
|
7117
|
-
|
|
7288
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7289
|
+
const sex = sexOf3(this.personN);
|
|
7290
|
+
if (level <= 1) {
|
|
7291
|
+
return pick3(sex, "t\xEDo", "t\xEDa", "t\xEDo/t\xEDa");
|
|
7118
7292
|
}
|
|
7119
|
-
if (
|
|
7120
|
-
return
|
|
7293
|
+
if (level === 2) {
|
|
7294
|
+
return pick3(sex, "t\xEDo abuelo", "t\xEDa abuela", "t\xEDo/t\xEDa abuelo");
|
|
7295
|
+
}
|
|
7296
|
+
if (level === 3) {
|
|
7297
|
+
return pick3(
|
|
7298
|
+
sex,
|
|
7299
|
+
"t\xEDo bisabuelo",
|
|
7300
|
+
"t\xEDa bisabuela",
|
|
7301
|
+
"t\xEDo/t\xEDa bisabuelo"
|
|
7302
|
+
);
|
|
7121
7303
|
}
|
|
7122
|
-
return
|
|
7304
|
+
return pick3(
|
|
7305
|
+
sex,
|
|
7306
|
+
`t\xEDo abuelo (${level - 1}.\xBA)`,
|
|
7307
|
+
`t\xEDa abuela (${level - 1}.\xAA)`,
|
|
7308
|
+
`t\xEDo/t\xEDa abuelo (${level - 1}.\xBA)`
|
|
7309
|
+
);
|
|
7123
7310
|
}
|
|
7124
7311
|
nibling() {
|
|
7125
|
-
const
|
|
7126
|
-
|
|
7127
|
-
|
|
7312
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7313
|
+
const sex = sexOf3(this.personN);
|
|
7314
|
+
if (level <= 1) {
|
|
7315
|
+
return pick3(sex, "sobrino", "sobrina", "sobrino/sobrina");
|
|
7128
7316
|
}
|
|
7129
|
-
if (
|
|
7130
|
-
return
|
|
7317
|
+
if (level === 2) {
|
|
7318
|
+
return pick3(
|
|
7319
|
+
sex,
|
|
7320
|
+
"sobrino nieto",
|
|
7321
|
+
"sobrina nieta",
|
|
7322
|
+
"sobrino/sobrina nieto"
|
|
7323
|
+
);
|
|
7324
|
+
}
|
|
7325
|
+
if (level === 3) {
|
|
7326
|
+
return pick3(
|
|
7327
|
+
sex,
|
|
7328
|
+
"sobrino bisnieto",
|
|
7329
|
+
"sobrina bisnieta",
|
|
7330
|
+
"sobrino/sobrina bisnieto"
|
|
7331
|
+
);
|
|
7131
7332
|
}
|
|
7132
|
-
return
|
|
7333
|
+
return pick3(
|
|
7334
|
+
sex,
|
|
7335
|
+
`sobrino nieto (${level - 1}.\xBA)`,
|
|
7336
|
+
`sobrina nieta (${level - 1}.\xAA)`,
|
|
7337
|
+
`sobrino/sobrina nieto (${level - 1}.\xBA)`
|
|
7338
|
+
);
|
|
7133
7339
|
}
|
|
7134
7340
|
parent() {
|
|
7135
|
-
const
|
|
7136
|
-
|
|
7137
|
-
|
|
7341
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7342
|
+
const sex = sexOf3(this.personN);
|
|
7343
|
+
if (level <= 1) {
|
|
7344
|
+
return pick3(sex, "padre", "madre", "padre/madre");
|
|
7138
7345
|
}
|
|
7139
|
-
if (
|
|
7140
|
-
return
|
|
7346
|
+
if (level === 2) {
|
|
7347
|
+
return pick3(sex, "abuelo", "abuela", "abuelo/abuela");
|
|
7141
7348
|
}
|
|
7142
|
-
|
|
7349
|
+
if (level === 3) {
|
|
7350
|
+
return pick3(sex, "bisabuelo", "bisabuela", "bisabuelo/bisabuela");
|
|
7351
|
+
}
|
|
7352
|
+
if (level === 4) {
|
|
7353
|
+
return pick3(
|
|
7354
|
+
sex,
|
|
7355
|
+
"tatarabuelo",
|
|
7356
|
+
"tatarabuela",
|
|
7357
|
+
"tatarabuelo/tatarabuela"
|
|
7358
|
+
);
|
|
7359
|
+
}
|
|
7360
|
+
if (level === 5) {
|
|
7361
|
+
return pick3(
|
|
7362
|
+
sex,
|
|
7363
|
+
"trastatarabuelo",
|
|
7364
|
+
"trastatarabuela",
|
|
7365
|
+
"trastatarabuelo/trastatarabuela"
|
|
7366
|
+
);
|
|
7367
|
+
}
|
|
7368
|
+
return pick3(
|
|
7369
|
+
sex,
|
|
7370
|
+
`abuelo (${level}.\xBA)`,
|
|
7371
|
+
`abuela (${level}.\xAA)`,
|
|
7372
|
+
`abuelo/abuela (${level}.\xBA)`
|
|
7373
|
+
);
|
|
7143
7374
|
}
|
|
7144
7375
|
child() {
|
|
7145
|
-
const
|
|
7146
|
-
|
|
7147
|
-
|
|
7376
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7377
|
+
const sex = sexOf3(this.personN);
|
|
7378
|
+
if (level <= 1) {
|
|
7379
|
+
return pick3(sex, "hijo", "hija", "hijo/hija");
|
|
7148
7380
|
}
|
|
7149
|
-
if (
|
|
7150
|
-
return
|
|
7381
|
+
if (level === 2) {
|
|
7382
|
+
return pick3(sex, "nieto", "nieta", "nieto/nieta");
|
|
7151
7383
|
}
|
|
7152
|
-
|
|
7153
|
-
|
|
7154
|
-
sibling() {
|
|
7155
|
-
if (this.personN?.isMale()) {
|
|
7156
|
-
return "hermano";
|
|
7384
|
+
if (level === 3) {
|
|
7385
|
+
return pick3(sex, "bisnieto", "bisnieta", "bisnieto/bisnieta");
|
|
7157
7386
|
}
|
|
7158
|
-
if (
|
|
7159
|
-
return
|
|
7387
|
+
if (level === 4) {
|
|
7388
|
+
return pick3(
|
|
7389
|
+
sex,
|
|
7390
|
+
"tataranieto",
|
|
7391
|
+
"tataranieta",
|
|
7392
|
+
"tataranieto/tataranieta"
|
|
7393
|
+
);
|
|
7394
|
+
}
|
|
7395
|
+
if (level === 5) {
|
|
7396
|
+
return pick3(
|
|
7397
|
+
sex,
|
|
7398
|
+
"trastataranieto",
|
|
7399
|
+
"trastataranieta",
|
|
7400
|
+
"trastataranieto/trastataranieta"
|
|
7401
|
+
);
|
|
7160
7402
|
}
|
|
7161
|
-
return
|
|
7403
|
+
return pick3(
|
|
7404
|
+
sex,
|
|
7405
|
+
`nieto (${level}.\xBA)`,
|
|
7406
|
+
`nieta (${level}.\xAA)`,
|
|
7407
|
+
`nieto/nieta (${level}.\xBA)`
|
|
7408
|
+
);
|
|
7409
|
+
}
|
|
7410
|
+
sibling() {
|
|
7411
|
+
return pick3(sexOf3(this.personN), "hermano", "hermana", "hermano/hermana");
|
|
7162
7412
|
}
|
|
7163
7413
|
halfBlood(relation) {
|
|
7164
7414
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7173,40 +7423,30 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
7173
7423
|
return `medio/a ${relation}`;
|
|
7174
7424
|
}
|
|
7175
7425
|
spouse() {
|
|
7176
|
-
|
|
7177
|
-
return "esposo";
|
|
7178
|
-
}
|
|
7179
|
-
if (this.personN?.isFemale()) {
|
|
7180
|
-
return "esposa";
|
|
7181
|
-
}
|
|
7182
|
-
return "c\xF3nyuge";
|
|
7426
|
+
return pick3(sexOf3(this.personN), "esposo", "esposa", "c\xF3nyuge");
|
|
7183
7427
|
}
|
|
7184
7428
|
ofSpouse(relation) {
|
|
7185
7429
|
if (!relation) {
|
|
7186
7430
|
return "";
|
|
7187
7431
|
}
|
|
7188
|
-
const
|
|
7189
|
-
|
|
7190
|
-
|
|
7191
|
-
|
|
7192
|
-
|
|
7193
|
-
|
|
7194
|
-
|
|
7195
|
-
}
|
|
7196
|
-
return `${relation} del ${spouseType}`;
|
|
7432
|
+
const spouseType = pick3(
|
|
7433
|
+
sexOf3(this.path?.[1].indi),
|
|
7434
|
+
"esposo",
|
|
7435
|
+
"esposa",
|
|
7436
|
+
"c\xF3nyuge"
|
|
7437
|
+
);
|
|
7438
|
+
return `${relation} ${ofSpousePrep2(spouseType)}${spouseType}`;
|
|
7197
7439
|
}
|
|
7198
7440
|
spouseOf(relation) {
|
|
7199
7441
|
if (!relation) {
|
|
7200
7442
|
return "";
|
|
7201
7443
|
}
|
|
7202
|
-
const
|
|
7203
|
-
|
|
7204
|
-
|
|
7205
|
-
|
|
7206
|
-
|
|
7207
|
-
|
|
7208
|
-
spouseType = "esposa";
|
|
7209
|
-
}
|
|
7444
|
+
const spouseType = pick3(
|
|
7445
|
+
sexOf3(this.path?.[this.path.length - 1].indi),
|
|
7446
|
+
"esposo",
|
|
7447
|
+
"esposa",
|
|
7448
|
+
"c\xF3nyuge"
|
|
7449
|
+
);
|
|
7210
7450
|
return `${spouseType} de ${relation}`;
|
|
7211
7451
|
}
|
|
7212
7452
|
of(relation) {
|
|
@@ -7224,8 +7464,8 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
7224
7464
|
if (!name || !relation) {
|
|
7225
7465
|
return relation ?? "";
|
|
7226
7466
|
}
|
|
7227
|
-
if (relation.includes(" del ") || relation.includes(" de ")) {
|
|
7228
|
-
return relation.replace(/ (del|de) /, ` $1 ${name} `);
|
|
7467
|
+
if (relation.includes(" del ") || relation.includes(" de la ") || relation.includes(" de ")) {
|
|
7468
|
+
return relation.replace(/ (del|de la|de) /, ` $1 ${name} `);
|
|
7229
7469
|
}
|
|
7230
7470
|
return `${relation} de ${name}`;
|
|
7231
7471
|
}
|
|
@@ -7255,7 +7495,20 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
7255
7495
|
if (!relation || !this.pathN?.relation) {
|
|
7256
7496
|
return relation ?? "";
|
|
7257
7497
|
}
|
|
7258
|
-
|
|
7498
|
+
const mapped = parentRelationsEs[this.pathN.relation]?.[relation];
|
|
7499
|
+
if (mapped) {
|
|
7500
|
+
return mapped;
|
|
7501
|
+
}
|
|
7502
|
+
if (this.pathN.relation === "step") {
|
|
7503
|
+
return `${relation} pol\xEDtico`;
|
|
7504
|
+
}
|
|
7505
|
+
if (this.pathN.relation === "adopted") {
|
|
7506
|
+
return `${relation} adoptivo`;
|
|
7507
|
+
}
|
|
7508
|
+
if (this.pathN.relation === "foster") {
|
|
7509
|
+
return `${relation} de acogida`;
|
|
7510
|
+
}
|
|
7511
|
+
return relation;
|
|
7259
7512
|
}
|
|
7260
7513
|
};
|
|
7261
7514
|
|
|
@@ -7264,15 +7517,35 @@ var InLawsRu = {
|
|
|
7264
7517
|
"\u0441\u0443\u043F\u0440\u0443\u0433(?:\u0430)? (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C/\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
|
|
7265
7518
|
"\u0436\u0435\u043D\u0430 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
|
|
7266
7519
|
"\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
|
|
7267
|
-
"\u043C\u0430\u0442\u044C
|
|
7268
|
-
"\
|
|
7269
|
-
"\
|
|
7520
|
+
"\u043C\u0430\u0442\u044C \u0436\u0435\u043D\u044B": "\u0442\u0451\u0449\u0430",
|
|
7521
|
+
"\u043C\u0430\u0442\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
7522
|
+
"\u043C\u0430\u0442\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0451\u0449\u0430/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
7523
|
+
"\u043E\u0442\u0435\u0446 \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C",
|
|
7524
|
+
"\u043E\u0442\u0435\u0446 \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
7525
|
+
"\u043E\u0442\u0435\u0446 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
7526
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
7527
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
7528
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
7270
7529
|
"\u0436\u0435\u043D\u0430 (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
|
|
7271
7530
|
"\u043C\u0443\u0436 (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u0437\u044F\u0442\u044C",
|
|
7272
7531
|
"\u0441\u0443\u043F\u0440\u0443\u0433(?:\u0430)? (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u0437\u044F\u0442\u044C/\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
|
|
7273
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430
|
|
7274
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\
|
|
7275
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\
|
|
7532
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u0436\u0435\u043D\u044B": "\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430",
|
|
7533
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u043C\u0443\u0436\u0430": "\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
|
|
7534
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430/\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
|
|
7535
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D",
|
|
7536
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C",
|
|
7537
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0448\u0443\u0440\u0438\u043D/\u0434\u0435\u0432\u0435\u0440\u044C",
|
|
7538
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D/\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430",
|
|
7539
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C/\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
|
|
7540
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0448\u0443\u0440\u0438\u043D/\u0437\u043E\u043B\u043E\u0432\u043A\u0430"
|
|
7541
|
+
};
|
|
7542
|
+
var parentRelationsRu = {
|
|
7543
|
+
step: {
|
|
7544
|
+
\u043E\u0442\u0435\u0446: "\u043E\u0442\u0447\u0438\u043C",
|
|
7545
|
+
\u043C\u0430\u0442\u044C: "\u043C\u0430\u0447\u0435\u0445\u0430",
|
|
7546
|
+
\u0441\u044B\u043D: "\u043F\u0430\u0441\u044B\u043D\u043E\u043A",
|
|
7547
|
+
\u0434\u043E\u0447\u044C: "\u043F\u0430\u0434\u0447\u0435\u0440\u0438\u0446\u0430"
|
|
7548
|
+
}
|
|
7276
7549
|
};
|
|
7277
7550
|
|
|
7278
7551
|
// src/kinship-translator/kinship-translator.ru.ts
|
|
@@ -7303,7 +7576,7 @@ var cousinWord = (degree, sex) => {
|
|
|
7303
7576
|
return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
|
|
7304
7577
|
};
|
|
7305
7578
|
var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
|
|
7306
|
-
var
|
|
7579
|
+
var sexOf4 = (person) => {
|
|
7307
7580
|
if (person?.isMale?.()) {
|
|
7308
7581
|
return "m";
|
|
7309
7582
|
}
|
|
@@ -7318,7 +7591,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7318
7591
|
if (degree > 0) {
|
|
7319
7592
|
degree = degree - 1;
|
|
7320
7593
|
}
|
|
7321
|
-
return cousinWord(degree,
|
|
7594
|
+
return cousinWord(degree, sexOf4(this.personN));
|
|
7322
7595
|
}
|
|
7323
7596
|
removal() {
|
|
7324
7597
|
const level = this.pathN?.level ?? 0;
|
|
@@ -7330,35 +7603,53 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7330
7603
|
return level < 0 ? this.nibling() : this.auncle();
|
|
7331
7604
|
}
|
|
7332
7605
|
const removed = Math.abs(level);
|
|
7333
|
-
return `${cousinWord(degree,
|
|
7606
|
+
return `${cousinWord(degree, sexOf4(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
|
|
7334
7607
|
}
|
|
7335
7608
|
auncle() {
|
|
7336
7609
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7337
|
-
const
|
|
7338
|
-
|
|
7610
|
+
const sex = sexOf4(this.personN);
|
|
7611
|
+
if (level <= 1) {
|
|
7612
|
+
if (sex === "m") {
|
|
7613
|
+
return "\u0434\u044F\u0434\u044F";
|
|
7614
|
+
}
|
|
7615
|
+
if (sex === "f") {
|
|
7616
|
+
return "\u0442\u0451\u0442\u044F";
|
|
7617
|
+
}
|
|
7618
|
+
return "\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F";
|
|
7619
|
+
}
|
|
7620
|
+
const pra = praRepeat(level - 2);
|
|
7339
7621
|
if (sex === "m") {
|
|
7340
|
-
return
|
|
7622
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434`;
|
|
7341
7623
|
}
|
|
7342
7624
|
if (sex === "f") {
|
|
7343
|
-
return
|
|
7625
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u0430\u044F ${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
7344
7626
|
}
|
|
7345
|
-
return
|
|
7627
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
7346
7628
|
}
|
|
7347
7629
|
nibling() {
|
|
7348
7630
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7349
|
-
const
|
|
7350
|
-
|
|
7631
|
+
const sex = sexOf4(this.personN);
|
|
7632
|
+
if (level <= 1) {
|
|
7633
|
+
if (sex === "m") {
|
|
7634
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A";
|
|
7635
|
+
}
|
|
7636
|
+
if (sex === "f") {
|
|
7637
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
7638
|
+
}
|
|
7639
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
7640
|
+
}
|
|
7641
|
+
const pra = praRepeat(level - 2);
|
|
7351
7642
|
if (sex === "m") {
|
|
7352
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
7643
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
7353
7644
|
}
|
|
7354
7645
|
if (sex === "f") {
|
|
7355
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
7646
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u0430\u044F \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
7356
7647
|
}
|
|
7357
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
7648
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
7358
7649
|
}
|
|
7359
7650
|
parent() {
|
|
7360
7651
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7361
|
-
const sex =
|
|
7652
|
+
const sex = sexOf4(this.personN);
|
|
7362
7653
|
if (level <= 1) {
|
|
7363
7654
|
if (sex === "m") {
|
|
7364
7655
|
return "\u043E\u0442\u0435\u0446";
|
|
@@ -7388,7 +7679,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7388
7679
|
}
|
|
7389
7680
|
child() {
|
|
7390
7681
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7391
|
-
const sex =
|
|
7682
|
+
const sex = sexOf4(this.personN);
|
|
7392
7683
|
if (level <= 1) {
|
|
7393
7684
|
if (sex === "m") {
|
|
7394
7685
|
return "\u0441\u044B\u043D";
|
|
@@ -7417,14 +7708,14 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7417
7708
|
return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
|
|
7418
7709
|
}
|
|
7419
7710
|
sibling() {
|
|
7420
|
-
const sex =
|
|
7711
|
+
const sex = sexOf4(this.personN);
|
|
7421
7712
|
if (sex === "m") {
|
|
7422
7713
|
return "\u0431\u0440\u0430\u0442";
|
|
7423
7714
|
}
|
|
7424
7715
|
if (sex === "f") {
|
|
7425
7716
|
return "\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
7426
7717
|
}
|
|
7427
|
-
return "\u0441\
|
|
7718
|
+
return "\u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
7428
7719
|
}
|
|
7429
7720
|
halfBlood(relation) {
|
|
7430
7721
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7438,7 +7729,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7438
7729
|
return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
|
|
7439
7730
|
}
|
|
7440
7731
|
spouse() {
|
|
7441
|
-
const sex =
|
|
7732
|
+
const sex = sexOf4(this.personN);
|
|
7442
7733
|
if (sex === "m") {
|
|
7443
7734
|
return "\u043C\u0443\u0436";
|
|
7444
7735
|
}
|
|
@@ -7452,7 +7743,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7452
7743
|
return "";
|
|
7453
7744
|
}
|
|
7454
7745
|
const spouse = this.path?.[1].indi;
|
|
7455
|
-
const sex =
|
|
7746
|
+
const sex = sexOf4(spouse);
|
|
7456
7747
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
7457
7748
|
return `${relation} ${toGenitive(spouseType)}`;
|
|
7458
7749
|
}
|
|
@@ -7461,7 +7752,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7461
7752
|
return "";
|
|
7462
7753
|
}
|
|
7463
7754
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
7464
|
-
const sex =
|
|
7755
|
+
const sex = sexOf4(spouse);
|
|
7465
7756
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
7466
7757
|
return `${spouseType} ${toGenitive(relation)}`;
|
|
7467
7758
|
}
|
|
@@ -7498,7 +7789,22 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7498
7789
|
if (!relation || !this.pathN?.relation) {
|
|
7499
7790
|
return relation ?? "";
|
|
7500
7791
|
}
|
|
7501
|
-
|
|
7792
|
+
const mapped = parentRelationsRu[this.pathN.relation]?.[relation];
|
|
7793
|
+
if (mapped) {
|
|
7794
|
+
return mapped;
|
|
7795
|
+
}
|
|
7796
|
+
if (this.pathN.relation === "step") {
|
|
7797
|
+
return `\u043D\u0435\u0440\u043E\u0434\u043D\u043E\u0439 ${relation}`;
|
|
7798
|
+
}
|
|
7799
|
+
if (this.pathN.relation === "adopted") {
|
|
7800
|
+
return /сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
|
|
7801
|
+
relation
|
|
7802
|
+
) ? `\u043F\u0440\u0438\u0451\u043C\u043D\u0430\u044F ${relation}` : `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
7803
|
+
}
|
|
7804
|
+
if (this.pathN.relation === "foster") {
|
|
7805
|
+
return `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
7806
|
+
}
|
|
7807
|
+
return relation;
|
|
7502
7808
|
}
|
|
7503
7809
|
};
|
|
7504
7810
|
|
|
@@ -7522,7 +7828,7 @@ var InLawsJa = {
|
|
|
7522
7828
|
};
|
|
7523
7829
|
|
|
7524
7830
|
// src/kinship-translator/kinship-translator.ja.ts
|
|
7525
|
-
var
|
|
7831
|
+
var sexOf5 = (person) => {
|
|
7526
7832
|
if (person?.isMale?.()) {
|
|
7527
7833
|
return "m";
|
|
7528
7834
|
}
|
|
@@ -7531,7 +7837,7 @@ var sexOf2 = (person) => {
|
|
|
7531
7837
|
}
|
|
7532
7838
|
return "n";
|
|
7533
7839
|
};
|
|
7534
|
-
var
|
|
7840
|
+
var pick4 = (sex, male, female, neutral) => {
|
|
7535
7841
|
if (sex === "m") {
|
|
7536
7842
|
return male;
|
|
7537
7843
|
}
|
|
@@ -7544,18 +7850,18 @@ var lineal = (level, sex, kind) => {
|
|
|
7544
7850
|
const L = Math.max(1, level);
|
|
7545
7851
|
if (kind === "asc") {
|
|
7546
7852
|
if (L <= 1) {
|
|
7547
|
-
return
|
|
7853
|
+
return pick4(sex, "\u7236", "\u6BCD", "\u89AA");
|
|
7548
7854
|
}
|
|
7549
7855
|
if (L === 2) {
|
|
7550
|
-
return
|
|
7856
|
+
return pick4(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
7551
7857
|
}
|
|
7552
7858
|
if (L === 3) {
|
|
7553
|
-
return
|
|
7859
|
+
return pick4(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
7554
7860
|
}
|
|
7555
7861
|
if (L === 4) {
|
|
7556
|
-
return
|
|
7862
|
+
return pick4(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
7557
7863
|
}
|
|
7558
|
-
return
|
|
7864
|
+
return pick4(
|
|
7559
7865
|
sex,
|
|
7560
7866
|
`${L - 1}\u4E16\u306E\u7956\u7236`,
|
|
7561
7867
|
`${L - 1}\u4E16\u306E\u7956\u6BCD`,
|
|
@@ -7563,7 +7869,7 @@ var lineal = (level, sex, kind) => {
|
|
|
7563
7869
|
);
|
|
7564
7870
|
}
|
|
7565
7871
|
if (L <= 1) {
|
|
7566
|
-
return
|
|
7872
|
+
return pick4(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
|
|
7567
7873
|
}
|
|
7568
7874
|
if (L === 2) {
|
|
7569
7875
|
return "\u5B6B";
|
|
@@ -7610,52 +7916,52 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7610
7916
|
}
|
|
7611
7917
|
auncle() {
|
|
7612
7918
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7613
|
-
const sex =
|
|
7614
|
-
if (level <=
|
|
7615
|
-
return
|
|
7919
|
+
const sex = sexOf5(this.personN);
|
|
7920
|
+
if (level <= 1) {
|
|
7921
|
+
return pick4(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
|
|
7616
7922
|
}
|
|
7617
|
-
if (level ===
|
|
7618
|
-
return
|
|
7923
|
+
if (level === 2) {
|
|
7924
|
+
return pick4(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
|
|
7619
7925
|
}
|
|
7620
|
-
return
|
|
7926
|
+
return pick4(
|
|
7621
7927
|
sex,
|
|
7622
|
-
`${level -
|
|
7623
|
-
`${level -
|
|
7624
|
-
`${level -
|
|
7928
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058`,
|
|
7929
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3070`,
|
|
7930
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
|
|
7625
7931
|
);
|
|
7626
7932
|
}
|
|
7627
7933
|
nibling() {
|
|
7628
7934
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7629
|
-
const sex =
|
|
7630
|
-
if (level <=
|
|
7631
|
-
return
|
|
7935
|
+
const sex = sexOf5(this.personN);
|
|
7936
|
+
if (level <= 1) {
|
|
7937
|
+
return pick4(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
|
|
7632
7938
|
}
|
|
7633
|
-
if (level ===
|
|
7634
|
-
return
|
|
7939
|
+
if (level === 2) {
|
|
7940
|
+
return pick4(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
|
|
7635
7941
|
}
|
|
7636
|
-
return
|
|
7942
|
+
return pick4(
|
|
7637
7943
|
sex,
|
|
7638
|
-
`${level -
|
|
7639
|
-
`${level -
|
|
7640
|
-
`${level -
|
|
7944
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525`,
|
|
7945
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u59EA`,
|
|
7946
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525/\u59EA`
|
|
7641
7947
|
);
|
|
7642
7948
|
}
|
|
7643
7949
|
parent() {
|
|
7644
7950
|
return lineal(
|
|
7645
7951
|
Math.abs(this.pathN?.level ?? 0),
|
|
7646
|
-
|
|
7952
|
+
sexOf5(this.personN),
|
|
7647
7953
|
"asc"
|
|
7648
7954
|
);
|
|
7649
7955
|
}
|
|
7650
7956
|
child() {
|
|
7651
7957
|
return lineal(
|
|
7652
7958
|
Math.abs(this.pathN?.level ?? 0),
|
|
7653
|
-
|
|
7959
|
+
sexOf5(this.personN),
|
|
7654
7960
|
"desc"
|
|
7655
7961
|
);
|
|
7656
7962
|
}
|
|
7657
7963
|
sibling() {
|
|
7658
|
-
return
|
|
7964
|
+
return pick4(sexOf5(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
|
|
7659
7965
|
}
|
|
7660
7966
|
halfBlood(relation) {
|
|
7661
7967
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7664,14 +7970,14 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7664
7970
|
return `\u7570\u7236\u6BCD\u306E${relation}`;
|
|
7665
7971
|
}
|
|
7666
7972
|
spouse() {
|
|
7667
|
-
return
|
|
7973
|
+
return pick4(sexOf5(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
7668
7974
|
}
|
|
7669
7975
|
ofSpouse(relation) {
|
|
7670
7976
|
if (!relation) {
|
|
7671
7977
|
return "";
|
|
7672
7978
|
}
|
|
7673
|
-
const spouseType =
|
|
7674
|
-
|
|
7979
|
+
const spouseType = pick4(
|
|
7980
|
+
sexOf5(this.path?.[1].indi),
|
|
7675
7981
|
"\u592B",
|
|
7676
7982
|
"\u59BB",
|
|
7677
7983
|
"\u914D\u5076\u8005"
|
|
@@ -7683,7 +7989,7 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7683
7989
|
return "";
|
|
7684
7990
|
}
|
|
7685
7991
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
7686
|
-
const spouseType =
|
|
7992
|
+
const spouseType = pick4(sexOf5(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
7687
7993
|
return `${relation}\u306E${spouseType}`;
|
|
7688
7994
|
}
|
|
7689
7995
|
of(relation) {
|
|
@@ -7719,7 +8025,28 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7719
8025
|
if (!relation || !this.pathN?.relation) {
|
|
7720
8026
|
return relation ?? "";
|
|
7721
8027
|
}
|
|
7722
|
-
|
|
8028
|
+
if (this.pathN.relation === "step") {
|
|
8029
|
+
if (relation === "\u7236") {
|
|
8030
|
+
return "\u7EE7\u7236";
|
|
8031
|
+
}
|
|
8032
|
+
if (relation === "\u6BCD") {
|
|
8033
|
+
return "\u7D99\u6BCD";
|
|
8034
|
+
}
|
|
8035
|
+
if (relation === "\u606F\u5B50") {
|
|
8036
|
+
return "\u7D99\u5B50";
|
|
8037
|
+
}
|
|
8038
|
+
if (relation === "\u5A18") {
|
|
8039
|
+
return "\u7D99\u5A18";
|
|
8040
|
+
}
|
|
8041
|
+
return `\u7D99${relation}`;
|
|
8042
|
+
}
|
|
8043
|
+
if (this.pathN.relation === "adopted") {
|
|
8044
|
+
return `\u990A\u5B50\u306E${relation}`;
|
|
8045
|
+
}
|
|
8046
|
+
if (this.pathN.relation === "foster") {
|
|
8047
|
+
return `\u91CC\u89AA\u306E${relation}`;
|
|
8048
|
+
}
|
|
8049
|
+
return relation;
|
|
7723
8050
|
}
|
|
7724
8051
|
};
|
|
7725
8052
|
|
|
@@ -7728,22 +8055,32 @@ var InLawsZh = {
|
|
|
7728
8055
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u914D\u5076": "\u513F\u5AB3/\u5973\u5A7F",
|
|
7729
8056
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u59BB\u5B50": "\u513F\u5AB3",
|
|
7730
8057
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u4E08\u592B": "\u5973\u5A7F",
|
|
7731
|
-
"
|
|
7732
|
-
"
|
|
7733
|
-
"(\u914D\u5076
|
|
8058
|
+
"\u59BB\u5B50\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD",
|
|
8059
|
+
"\u4E08\u592B\u7684\u6BCD\u4EB2": "\u5A46\u5A46",
|
|
8060
|
+
"(\u914D\u5076)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
|
|
8061
|
+
"\u59BB\u5B50\u7684\u7236\u4EB2": "\u5CB3\u7236",
|
|
8062
|
+
"\u4E08\u592B\u7684\u7236\u4EB2": "\u516C\u516C",
|
|
8063
|
+
"(\u914D\u5076)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
|
|
8064
|
+
"\u59BB\u5B50\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD",
|
|
8065
|
+
"\u4E08\u592B\u7684\u7236\u6BCD": "\u516C\u516C\u5A46\u5A46",
|
|
8066
|
+
"(\u914D\u5076)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
|
|
7734
8067
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u59BB\u5B50": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
7735
8068
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u4E08\u592B": "\u59D0\u592B/\u59B9\u592B",
|
|
7736
8069
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u914D\u5076": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
7737
8070
|
"(\u5F02\u7236\u6BCD\u7684)?\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59D0\u592B/\u59B9\u592B",
|
|
7738
8071
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
7739
8072
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
7740
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
7741
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
8073
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u59D0\u59B9": "\u59E8\u5B50",
|
|
8074
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u59D0\u59B9": "\u59D1\u5B50",
|
|
8075
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
|
|
8076
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u5144\u5F1F": "\u5185\u5144/\u5185\u5F1F",
|
|
8077
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4",
|
|
8078
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
|
|
7742
8079
|
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F\u59D0\u59B9": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9"
|
|
7743
8080
|
};
|
|
7744
8081
|
|
|
7745
8082
|
// src/kinship-translator/kinship-translator.zh.ts
|
|
7746
|
-
var
|
|
8083
|
+
var sexOf6 = (person) => {
|
|
7747
8084
|
if (person?.isMale?.()) {
|
|
7748
8085
|
return "m";
|
|
7749
8086
|
}
|
|
@@ -7752,7 +8089,7 @@ var sexOf3 = (person) => {
|
|
|
7752
8089
|
}
|
|
7753
8090
|
return "n";
|
|
7754
8091
|
};
|
|
7755
|
-
var
|
|
8092
|
+
var pick5 = (sex, male, female, neutral) => {
|
|
7756
8093
|
if (sex === "m") {
|
|
7757
8094
|
return male;
|
|
7758
8095
|
}
|
|
@@ -7765,41 +8102,41 @@ var lineal2 = (level, sex, kind) => {
|
|
|
7765
8102
|
const L = Math.max(1, level);
|
|
7766
8103
|
if (kind === "asc") {
|
|
7767
8104
|
if (L <= 1) {
|
|
7768
|
-
return
|
|
8105
|
+
return pick5(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
|
|
7769
8106
|
}
|
|
7770
8107
|
if (L === 2) {
|
|
7771
|
-
return
|
|
8108
|
+
return pick5(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
7772
8109
|
}
|
|
7773
8110
|
if (L === 3) {
|
|
7774
|
-
return
|
|
8111
|
+
return pick5(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
7775
8112
|
}
|
|
7776
8113
|
if (L === 4) {
|
|
7777
|
-
return
|
|
8114
|
+
return pick5(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
7778
8115
|
}
|
|
7779
|
-
return
|
|
8116
|
+
return pick5(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
|
|
7780
8117
|
}
|
|
7781
8118
|
if (L <= 1) {
|
|
7782
|
-
return
|
|
8119
|
+
return pick5(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
|
|
7783
8120
|
}
|
|
7784
8121
|
if (L === 2) {
|
|
7785
|
-
return
|
|
8122
|
+
return pick5(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
|
|
7786
8123
|
}
|
|
7787
8124
|
if (L === 3) {
|
|
7788
|
-
return
|
|
8125
|
+
return pick5(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
|
|
7789
8126
|
}
|
|
7790
8127
|
if (L === 4) {
|
|
7791
|
-
return
|
|
8128
|
+
return pick5(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
|
|
7792
8129
|
}
|
|
7793
|
-
return
|
|
8130
|
+
return pick5(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
|
|
7794
8131
|
};
|
|
7795
8132
|
var cousinPlain2 = (degree, sex) => {
|
|
7796
8133
|
if (degree <= 1) {
|
|
7797
|
-
return
|
|
8134
|
+
return pick5(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
|
|
7798
8135
|
}
|
|
7799
8136
|
if (degree === 2) {
|
|
7800
|
-
return
|
|
8137
|
+
return pick5(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
|
|
7801
8138
|
}
|
|
7802
|
-
return
|
|
8139
|
+
return pick5(
|
|
7803
8140
|
sex,
|
|
7804
8141
|
`${degree}\u4EE3\u5802\u8868\u5144\u5F1F`,
|
|
7805
8142
|
`${degree}\u4EE3\u5802\u8868\u59D0\u59B9`,
|
|
@@ -7812,7 +8149,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7812
8149
|
if (degree > 0) {
|
|
7813
8150
|
degree = degree - 1;
|
|
7814
8151
|
}
|
|
7815
|
-
return cousinPlain2(degree,
|
|
8152
|
+
return cousinPlain2(degree, sexOf6(this.personN));
|
|
7816
8153
|
}
|
|
7817
8154
|
removal() {
|
|
7818
8155
|
const level = this.pathN?.level ?? 0;
|
|
@@ -7824,56 +8161,56 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7824
8161
|
return level < 0 ? this.nibling() : this.auncle();
|
|
7825
8162
|
}
|
|
7826
8163
|
const removed = Math.abs(level);
|
|
7827
|
-
return `${cousinPlain2(degree,
|
|
8164
|
+
return `${cousinPlain2(degree, sexOf6(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
|
|
7828
8165
|
}
|
|
7829
8166
|
auncle() {
|
|
7830
8167
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7831
|
-
const sex =
|
|
7832
|
-
if (level <=
|
|
7833
|
-
return
|
|
8168
|
+
const sex = sexOf6(this.personN);
|
|
8169
|
+
if (level <= 1) {
|
|
8170
|
+
return pick5(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
|
|
7834
8171
|
}
|
|
7835
|
-
if (level ===
|
|
7836
|
-
return
|
|
8172
|
+
if (level === 2) {
|
|
8173
|
+
return pick5(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
|
|
7837
8174
|
}
|
|
7838
|
-
return
|
|
8175
|
+
return pick5(
|
|
7839
8176
|
sex,
|
|
7840
|
-
`${level -
|
|
7841
|
-
`${level -
|
|
7842
|
-
`${level -
|
|
8177
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u53D4`,
|
|
8178
|
+
`${level - 1}\u4EE3\u524D\u7684\u963F\u59E8`,
|
|
8179
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
|
|
7843
8180
|
);
|
|
7844
8181
|
}
|
|
7845
8182
|
nibling() {
|
|
7846
8183
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7847
|
-
const sex =
|
|
7848
|
-
if (level <=
|
|
7849
|
-
return
|
|
8184
|
+
const sex = sexOf6(this.personN);
|
|
8185
|
+
if (level <= 1) {
|
|
8186
|
+
return pick5(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
|
|
7850
8187
|
}
|
|
7851
|
-
if (level ===
|
|
7852
|
-
return
|
|
8188
|
+
if (level === 2) {
|
|
8189
|
+
return pick5(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
|
|
7853
8190
|
}
|
|
7854
|
-
return
|
|
8191
|
+
return pick5(
|
|
7855
8192
|
sex,
|
|
7856
|
-
`${level -
|
|
7857
|
-
`${level -
|
|
7858
|
-
`${level -
|
|
8193
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
|
|
8194
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5973`,
|
|
8195
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
|
|
7859
8196
|
);
|
|
7860
8197
|
}
|
|
7861
8198
|
parent() {
|
|
7862
8199
|
return lineal2(
|
|
7863
8200
|
Math.abs(this.pathN?.level ?? 0),
|
|
7864
|
-
|
|
8201
|
+
sexOf6(this.personN),
|
|
7865
8202
|
"asc"
|
|
7866
8203
|
);
|
|
7867
8204
|
}
|
|
7868
8205
|
child() {
|
|
7869
8206
|
return lineal2(
|
|
7870
8207
|
Math.abs(this.pathN?.level ?? 0),
|
|
7871
|
-
|
|
8208
|
+
sexOf6(this.personN),
|
|
7872
8209
|
"desc"
|
|
7873
8210
|
);
|
|
7874
8211
|
}
|
|
7875
8212
|
sibling() {
|
|
7876
|
-
return
|
|
8213
|
+
return pick5(sexOf6(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
|
|
7877
8214
|
}
|
|
7878
8215
|
halfBlood(relation) {
|
|
7879
8216
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7882,14 +8219,14 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7882
8219
|
return `\u5F02\u7236\u6BCD\u7684${relation}`;
|
|
7883
8220
|
}
|
|
7884
8221
|
spouse() {
|
|
7885
|
-
return
|
|
8222
|
+
return pick5(sexOf6(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
7886
8223
|
}
|
|
7887
8224
|
ofSpouse(relation) {
|
|
7888
8225
|
if (!relation) {
|
|
7889
8226
|
return "";
|
|
7890
8227
|
}
|
|
7891
|
-
const spouseType =
|
|
7892
|
-
|
|
8228
|
+
const spouseType = pick5(
|
|
8229
|
+
sexOf6(this.path?.[1].indi),
|
|
7893
8230
|
"\u4E08\u592B",
|
|
7894
8231
|
"\u59BB\u5B50",
|
|
7895
8232
|
"\u914D\u5076"
|
|
@@ -7901,7 +8238,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7901
8238
|
return "";
|
|
7902
8239
|
}
|
|
7903
8240
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
7904
|
-
const spouseType =
|
|
8241
|
+
const spouseType = pick5(sexOf6(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
7905
8242
|
return `${relation}\u7684${spouseType}`;
|
|
7906
8243
|
}
|
|
7907
8244
|
of(relation) {
|
|
@@ -7937,7 +8274,40 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7937
8274
|
if (!relation || !this.pathN?.relation) {
|
|
7938
8275
|
return relation ?? "";
|
|
7939
8276
|
}
|
|
7940
|
-
|
|
8277
|
+
if (this.pathN.relation === "step") {
|
|
8278
|
+
if (relation === "\u7236\u4EB2") {
|
|
8279
|
+
return "\u7EE7\u7236";
|
|
8280
|
+
}
|
|
8281
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
8282
|
+
return "\u7EE7\u6BCD";
|
|
8283
|
+
}
|
|
8284
|
+
if (relation === "\u513F\u5B50") {
|
|
8285
|
+
return "\u7EE7\u5B50";
|
|
8286
|
+
}
|
|
8287
|
+
if (relation === "\u5973\u513F") {
|
|
8288
|
+
return "\u7EE7\u5973";
|
|
8289
|
+
}
|
|
8290
|
+
return `\u7EE7${relation}`;
|
|
8291
|
+
}
|
|
8292
|
+
if (this.pathN.relation === "adopted") {
|
|
8293
|
+
if (relation === "\u7236\u4EB2") {
|
|
8294
|
+
return "\u517B\u7236";
|
|
8295
|
+
}
|
|
8296
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
8297
|
+
return "\u517B\u6BCD";
|
|
8298
|
+
}
|
|
8299
|
+
if (relation === "\u513F\u5B50") {
|
|
8300
|
+
return "\u517B\u5B50";
|
|
8301
|
+
}
|
|
8302
|
+
if (relation === "\u5973\u513F") {
|
|
8303
|
+
return "\u517B\u5973";
|
|
8304
|
+
}
|
|
8305
|
+
return `\u517B${relation}`;
|
|
8306
|
+
}
|
|
8307
|
+
if (this.pathN.relation === "foster") {
|
|
8308
|
+
return `\u5BC4\u517B${relation}`;
|
|
8309
|
+
}
|
|
8310
|
+
return relation;
|
|
7941
8311
|
}
|
|
7942
8312
|
};
|
|
7943
8313
|
|