@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/constants/index.js
CHANGED
|
@@ -171,11 +171,8 @@ var storeCache = {
|
|
|
171
171
|
getCacheDbs().relativesOnDegreeCache.setItem(value);
|
|
172
172
|
}
|
|
173
173
|
}, 50),
|
|
174
|
-
//
|
|
174
|
+
// Image bytes are stored as one IndexedDB record per photo.
|
|
175
175
|
profilePictureCache: debounce((value) => {
|
|
176
|
-
if (value) {
|
|
177
|
-
getCacheDbs().profilePictureCache.setItem(value);
|
|
178
|
-
}
|
|
179
176
|
}, 100)
|
|
180
177
|
};
|
|
181
178
|
var resetRelativesCache = () => {
|
|
@@ -555,6 +552,82 @@ var dateFormatter = (indi, showMarriages = false, showDays = false, showPlaces =
|
|
|
555
552
|
// src/utils/gedcom-trailer.ts
|
|
556
553
|
var GEDCOM_TRAILER_TAG = "TRLR";
|
|
557
554
|
var isGedcomTrailerTag = (tag) => tag === GEDCOM_TRAILER_TAG;
|
|
555
|
+
|
|
556
|
+
// src/utils/media-utils.ts
|
|
557
|
+
var getFileExtension = (filename) => {
|
|
558
|
+
if (!filename) {
|
|
559
|
+
return "";
|
|
560
|
+
}
|
|
561
|
+
if (filename.startsWith("data:")) {
|
|
562
|
+
const mime = filename.slice(5).split(";")[0] || "";
|
|
563
|
+
const subtype = (mime.split("/")[1] || "").toLowerCase();
|
|
564
|
+
if (subtype === "jpeg") {
|
|
565
|
+
return "jpg";
|
|
566
|
+
}
|
|
567
|
+
return subtype.split("+")[0] || "";
|
|
568
|
+
}
|
|
569
|
+
const withoutQuery = filename.split(/[?#]/)[0] || filename;
|
|
570
|
+
const match = withoutQuery.match(/\.([^.]+)$/);
|
|
571
|
+
return match ? match[1].toLowerCase() : "";
|
|
572
|
+
};
|
|
573
|
+
var isImageFormat = (format2) => {
|
|
574
|
+
if (!format2) {
|
|
575
|
+
return false;
|
|
576
|
+
}
|
|
577
|
+
let normalized = format2.toLowerCase().trim();
|
|
578
|
+
if (normalized.startsWith("data:")) {
|
|
579
|
+
normalized = getFileExtension(normalized);
|
|
580
|
+
} else if (normalized.includes("/")) {
|
|
581
|
+
normalized = normalized.split("/")[1]?.split("+")[0] || "";
|
|
582
|
+
if (normalized === "jpeg") {
|
|
583
|
+
normalized = "jpg";
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
const imageFormats = [
|
|
587
|
+
"jpg",
|
|
588
|
+
"jpeg",
|
|
589
|
+
"png",
|
|
590
|
+
"gif",
|
|
591
|
+
"bmp",
|
|
592
|
+
"webp",
|
|
593
|
+
"svg",
|
|
594
|
+
"tiff",
|
|
595
|
+
"tif"
|
|
596
|
+
];
|
|
597
|
+
return imageFormats.includes(normalized);
|
|
598
|
+
};
|
|
599
|
+
var resolveObjeForm = (obje) => {
|
|
600
|
+
const value = obje?.get?.("FILE.FORM")?.toValue?.() ?? obje?.get?.("FORM")?.toValue?.();
|
|
601
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
602
|
+
};
|
|
603
|
+
var mediaIdValue = (obje, path) => {
|
|
604
|
+
const value = obje?.get?.(path)?.toValue?.();
|
|
605
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
606
|
+
};
|
|
607
|
+
var resolveObjeMediaId = (obje) => mediaIdValue(obje, "RIN") || mediaIdValue(obje, "_CLON._OID") || mediaIdValue(obje, "_MSER._LKID") || mediaIdValue(obje, "_OID") || mediaIdValue(obje, "_LKID");
|
|
608
|
+
var ANCESTRY_MEDIA_RETRIEVAL_PREFIX = "https://www.ancestry.com/api/media/retrieval/v2/image";
|
|
609
|
+
var ANCESTRY_MEDIA_QUERY = "client=trees-mediaservice&imageQuality=hq";
|
|
610
|
+
var ancestryMediaPath = (namespace, imgId) => `/namespaces/${namespace}/media/${imgId}?${ANCESTRY_MEDIA_QUERY}`;
|
|
611
|
+
var ancestryMediaFileUrl = (namespace, imgId) => {
|
|
612
|
+
if (!namespace || !imgId) {
|
|
613
|
+
return void 0;
|
|
614
|
+
}
|
|
615
|
+
return `${ANCESTRY_MEDIA_RETRIEVAL_PREFIX}${ancestryMediaPath(namespace, imgId)}`;
|
|
616
|
+
};
|
|
617
|
+
var objeXrefKey = (obje, fallback = 0) => {
|
|
618
|
+
if (typeof obje?.id === "string" && obje.id) {
|
|
619
|
+
return obje.id;
|
|
620
|
+
}
|
|
621
|
+
const value = obje?.toValue?.();
|
|
622
|
+
if (typeof value === "string" && value.trim()) {
|
|
623
|
+
return value.trim();
|
|
624
|
+
}
|
|
625
|
+
if (typeof fallback === "string" && fallback.trim()) {
|
|
626
|
+
return fallback.trim();
|
|
627
|
+
}
|
|
628
|
+
return `@O${fallback}@`;
|
|
629
|
+
};
|
|
630
|
+
var objeNoteValue = (obje) => mediaIdValue(obje, "FILE.NOTE") || mediaIdValue(obje, "NOTE") || "";
|
|
558
631
|
var List = class _List {
|
|
559
632
|
// length = 0;
|
|
560
633
|
constructor(items) {
|
|
@@ -1204,7 +1277,7 @@ var Common = class _Common {
|
|
|
1204
1277
|
this,
|
|
1205
1278
|
options.obje.namespace,
|
|
1206
1279
|
options.obje.override,
|
|
1207
|
-
void 0,
|
|
1280
|
+
this.isAncestry() ? ancestryMediaFileUrl : void 0,
|
|
1208
1281
|
options.gedcomVersion
|
|
1209
1282
|
);
|
|
1210
1283
|
}
|
|
@@ -2152,65 +2225,23 @@ var isRemoteOrEmbeddedMediaUrl = (path) => {
|
|
|
2152
2225
|
}
|
|
2153
2226
|
return path.startsWith("data:") || path.startsWith("blob:") || /^https?:\/\//i.test(path);
|
|
2154
2227
|
};
|
|
2155
|
-
var resolveLocalMediaUrl = async (path) => {
|
|
2228
|
+
var resolveLocalMediaUrl = async (path, context) => {
|
|
2156
2229
|
if (!path) {
|
|
2157
2230
|
return void 0;
|
|
2158
2231
|
}
|
|
2159
|
-
if (
|
|
2232
|
+
if (path.startsWith("data:") || path.startsWith("blob:")) {
|
|
2160
2233
|
return path;
|
|
2161
2234
|
}
|
|
2162
|
-
const resolved = await localMediaResolver?.(path);
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
var implemented = (type, ...args) => {
|
|
2166
|
-
};
|
|
2167
|
-
|
|
2168
|
-
// src/utils/media-utils.ts
|
|
2169
|
-
var getFileExtension = (filename) => {
|
|
2170
|
-
if (!filename) {
|
|
2171
|
-
return "";
|
|
2172
|
-
}
|
|
2173
|
-
if (filename.startsWith("data:")) {
|
|
2174
|
-
const mime = filename.slice(5).split(";")[0] || "";
|
|
2175
|
-
const subtype = (mime.split("/")[1] || "").toLowerCase();
|
|
2176
|
-
if (subtype === "jpeg") {
|
|
2177
|
-
return "jpg";
|
|
2178
|
-
}
|
|
2179
|
-
return subtype.split("+")[0] || "";
|
|
2180
|
-
}
|
|
2181
|
-
const withoutQuery = filename.split(/[?#]/)[0] || filename;
|
|
2182
|
-
const match = withoutQuery.match(/\.([^.]+)$/);
|
|
2183
|
-
return match ? match[1].toLowerCase() : "";
|
|
2184
|
-
};
|
|
2185
|
-
var isImageFormat = (format2) => {
|
|
2186
|
-
if (!format2) {
|
|
2187
|
-
return false;
|
|
2235
|
+
const resolved = await localMediaResolver?.(path, context);
|
|
2236
|
+
if (resolved) {
|
|
2237
|
+
return resolved;
|
|
2188
2238
|
}
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
normalized = getFileExtension(normalized);
|
|
2192
|
-
} else if (normalized.includes("/")) {
|
|
2193
|
-
normalized = normalized.split("/")[1]?.split("+")[0] || "";
|
|
2194
|
-
if (normalized === "jpeg") {
|
|
2195
|
-
normalized = "jpg";
|
|
2196
|
-
}
|
|
2239
|
+
if (/^https?:\/\//i.test(path)) {
|
|
2240
|
+
return path;
|
|
2197
2241
|
}
|
|
2198
|
-
|
|
2199
|
-
"jpg",
|
|
2200
|
-
"jpeg",
|
|
2201
|
-
"png",
|
|
2202
|
-
"gif",
|
|
2203
|
-
"bmp",
|
|
2204
|
-
"webp",
|
|
2205
|
-
"svg",
|
|
2206
|
-
"tiff",
|
|
2207
|
-
"tif"
|
|
2208
|
-
];
|
|
2209
|
-
return imageFormats.includes(normalized);
|
|
2242
|
+
return void 0;
|
|
2210
2243
|
};
|
|
2211
|
-
var
|
|
2212
|
-
const value = obje?.get?.("FILE.FORM")?.toValue?.() ?? obje?.get?.("FORM")?.toValue?.();
|
|
2213
|
-
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
2244
|
+
var implemented = (type, ...args) => {
|
|
2214
2245
|
};
|
|
2215
2246
|
var uniqueItemsCache = /* @__PURE__ */ new WeakMap();
|
|
2216
2247
|
var setNestedGroup = (obj, key, value, uniqueCounting = true) => {
|
|
@@ -3488,22 +3519,19 @@ var Indi = class extends Common {
|
|
|
3488
3519
|
if (objeList) {
|
|
3489
3520
|
await Promise.all(
|
|
3490
3521
|
objeList.map(async (objeRef) => {
|
|
3491
|
-
const key = objeRef
|
|
3522
|
+
const key = objeXrefKey(objeRef, 0);
|
|
3492
3523
|
const obje = objeRef?.standardizeMedia(
|
|
3493
3524
|
namespace,
|
|
3494
3525
|
true,
|
|
3495
|
-
|
|
3496
|
-
return ns && iId ? `https://mediasvc.ancestry.com/v2/image/namespaces/${ns}/media/${iId}?client=trees-mediaservice&imageQuality=hq` : void 0;
|
|
3497
|
-
}
|
|
3526
|
+
ancestryMediaFileUrl
|
|
3498
3527
|
);
|
|
3499
3528
|
const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
|
|
3500
|
-
const media =
|
|
3501
|
-
const clone = obje?.get("_CLON._OID")?.toValue();
|
|
3502
|
-
const mser = obje?.get("_MSER._LKID")?.toValue();
|
|
3529
|
+
const media = resolveObjeMediaId(obje);
|
|
3503
3530
|
let url = obje?.get("FILE")?.toValue();
|
|
3504
3531
|
const title = obje?.get("FILE.TITL")?.toValue() ?? obje?.get("TITL")?.toValue() ?? "";
|
|
3532
|
+
const note = objeNoteValue(obje);
|
|
3505
3533
|
const type = resolveObjeForm(obje) ?? (url ? getFileExtension(url) : void 0) ?? "raw";
|
|
3506
|
-
let imgId =
|
|
3534
|
+
let imgId = media;
|
|
3507
3535
|
const hasEmbeddedOrLocalFile = !!url && (url.startsWith("data:") || url.startsWith("blob:") || !/^https?:\/\//i.test(url));
|
|
3508
3536
|
if (!hasEmbeddedOrLocalFile && (!www || !tree || !this.id)) {
|
|
3509
3537
|
return;
|
|
@@ -3539,6 +3567,7 @@ var Indi = class extends Common {
|
|
|
3539
3567
|
imgId,
|
|
3540
3568
|
person: this.id,
|
|
3541
3569
|
title,
|
|
3570
|
+
note,
|
|
3542
3571
|
url,
|
|
3543
3572
|
contentType: type,
|
|
3544
3573
|
downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
|
|
@@ -3577,7 +3606,7 @@ var Indi = class extends Common {
|
|
|
3577
3606
|
return;
|
|
3578
3607
|
}
|
|
3579
3608
|
const obje = o;
|
|
3580
|
-
const key =
|
|
3609
|
+
const key = objeXrefKey(obje, index);
|
|
3581
3610
|
obje.standardizeMedia();
|
|
3582
3611
|
const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
|
|
3583
3612
|
const url = obje?.get("FILE")?.toValue();
|
|
@@ -3596,6 +3625,7 @@ var Indi = class extends Common {
|
|
|
3596
3625
|
imgId,
|
|
3597
3626
|
person: this.id,
|
|
3598
3627
|
title,
|
|
3628
|
+
note: objeNoteValue(obje),
|
|
3599
3629
|
url,
|
|
3600
3630
|
contentType: type,
|
|
3601
3631
|
downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
|
|
@@ -3704,7 +3734,7 @@ var Indi = class extends Common {
|
|
|
3704
3734
|
if (!obje) {
|
|
3705
3735
|
return;
|
|
3706
3736
|
}
|
|
3707
|
-
const key =
|
|
3737
|
+
const key = objeXrefKey(obje, index);
|
|
3708
3738
|
const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
|
|
3709
3739
|
const url = obje?.get("FILE")?.toValue();
|
|
3710
3740
|
const title = obje?.get("TITL")?.toValue() ?? "";
|
|
@@ -3721,6 +3751,7 @@ var Indi = class extends Common {
|
|
|
3721
3751
|
imgId,
|
|
3722
3752
|
person: this.id,
|
|
3723
3753
|
title,
|
|
3754
|
+
note: objeNoteValue(obje),
|
|
3724
3755
|
url,
|
|
3725
3756
|
contentType: type,
|
|
3726
3757
|
downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
|
|
@@ -3744,7 +3775,7 @@ var Indi = class extends Common {
|
|
|
3744
3775
|
if (!obje) {
|
|
3745
3776
|
return;
|
|
3746
3777
|
}
|
|
3747
|
-
const key =
|
|
3778
|
+
const key = objeXrefKey(obje, index);
|
|
3748
3779
|
obje.standardizeMedia();
|
|
3749
3780
|
const isPrimary = obje?.get("_PRIM")?.toValue() === "Y";
|
|
3750
3781
|
const url = obje?.get("FILE")?.toValue();
|
|
@@ -3761,6 +3792,7 @@ var Indi = class extends Common {
|
|
|
3761
3792
|
imgId,
|
|
3762
3793
|
person: this.id,
|
|
3763
3794
|
title,
|
|
3795
|
+
note: objeNoteValue(obje),
|
|
3764
3796
|
url,
|
|
3765
3797
|
contentType: type,
|
|
3766
3798
|
downloadName: `${this.id.replaceAll("@", "")}_${this.toNaturalName()?.replaceAll(" ", "-") || ""}_${(title || key.replaceAll("@", "").toString()).replaceAll(" ", "-")}`
|
|
@@ -3792,7 +3824,12 @@ var Indi = class extends Common {
|
|
|
3792
3824
|
);
|
|
3793
3825
|
if (cached !== void 0) {
|
|
3794
3826
|
if (cached?.file && !isRemoteOrEmbeddedMediaUrl(cached.file)) {
|
|
3795
|
-
const resolvedCached = await resolveLocalMediaUrl(cached.file
|
|
3827
|
+
const resolvedCached = await resolveLocalMediaUrl(cached.file, {
|
|
3828
|
+
url: cached.file,
|
|
3829
|
+
person: this.id,
|
|
3830
|
+
tree: this.getTreeId?.(),
|
|
3831
|
+
treeName: this.getTreeName?.()
|
|
3832
|
+
});
|
|
3796
3833
|
if (resolvedCached && isRemoteOrEmbeddedMediaUrl(resolvedCached)) {
|
|
3797
3834
|
const refreshed = { ...cached, file: resolvedCached };
|
|
3798
3835
|
profilePictureCache(
|
|
@@ -3817,7 +3854,16 @@ var Indi = class extends Common {
|
|
|
3817
3854
|
}
|
|
3818
3855
|
const mediaArray = Object.values(mediaList);
|
|
3819
3856
|
const toDisplayableProfile = async (media, isPrimary) => {
|
|
3820
|
-
const resolvedFile = await resolveLocalMediaUrl(media.url
|
|
3857
|
+
const resolvedFile = await resolveLocalMediaUrl(media.url, {
|
|
3858
|
+
url: media.url,
|
|
3859
|
+
id: media.id,
|
|
3860
|
+
imgId: media.imgId,
|
|
3861
|
+
key: media.key,
|
|
3862
|
+
contentType: media.contentType,
|
|
3863
|
+
person: media.person || this.id,
|
|
3864
|
+
tree: media.tree || this.getTreeId?.(),
|
|
3865
|
+
treeName: this.getTreeName?.()
|
|
3866
|
+
});
|
|
3821
3867
|
if (!resolvedFile || !isRemoteOrEmbeddedMediaUrl(resolvedFile)) {
|
|
3822
3868
|
return void 0;
|
|
3823
3869
|
}
|
|
@@ -5779,7 +5825,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
5779
5825
|
}
|
|
5780
5826
|
return `${hungarianOrdinalize(
|
|
5781
5827
|
degree
|
|
5782
|
-
)}unokatestv\xE9r ${level}x elt\xE1vol\xEDtva`;
|
|
5828
|
+
)}unokatestv\xE9r ${Math.abs(level)}x elt\xE1vol\xEDtva`;
|
|
5783
5829
|
}
|
|
5784
5830
|
auncle() {
|
|
5785
5831
|
const level = this.pathN?.level ?? 0;
|
|
@@ -5823,14 +5869,25 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
5823
5869
|
return `${ordinalized ? `${ordinalized}unoka` : ""}testv\xE9r ${origPrefix.replace(/nagy$/, "")}unok\xE1ja`;
|
|
5824
5870
|
}
|
|
5825
5871
|
parent() {
|
|
5872
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
5873
|
+
if (level <= 1) {
|
|
5874
|
+
if (this.personN?.isMale()) {
|
|
5875
|
+
return "apa";
|
|
5876
|
+
}
|
|
5877
|
+
if (this.personN?.isFemale()) {
|
|
5878
|
+
return "anya";
|
|
5879
|
+
}
|
|
5880
|
+
return "sz\xFCl\u0151";
|
|
5881
|
+
}
|
|
5826
5882
|
const prefix = this.directPrefix();
|
|
5883
|
+
const gen = prefix === "nagy" ? "" : prefix;
|
|
5827
5884
|
if (this.personN?.isMale()) {
|
|
5828
|
-
return `${
|
|
5885
|
+
return `${gen}nagyapa`;
|
|
5829
5886
|
}
|
|
5830
5887
|
if (this.personN?.isFemale()) {
|
|
5831
|
-
return `${
|
|
5888
|
+
return `${gen}nagyanya`;
|
|
5832
5889
|
}
|
|
5833
|
-
return `${
|
|
5890
|
+
return `${gen}nagysz\xFCl\u0151`;
|
|
5834
5891
|
}
|
|
5835
5892
|
child() {
|
|
5836
5893
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
@@ -6024,27 +6081,30 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
6024
6081
|
if (!degree) {
|
|
6025
6082
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6026
6083
|
}
|
|
6027
|
-
return `${ordinalize(degree)} cousin ${level}x removed`;
|
|
6084
|
+
return `${ordinalize(degree)} cousin ${Math.abs(level)}x removed`;
|
|
6028
6085
|
}
|
|
6029
6086
|
auncle() {
|
|
6030
|
-
const
|
|
6087
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6088
|
+
const greats = level <= 1 ? "" : "great-".repeat(level - 1);
|
|
6031
6089
|
if (this.personN?.isMale()) {
|
|
6032
|
-
return `${
|
|
6090
|
+
return `${greats}uncle`;
|
|
6033
6091
|
}
|
|
6034
6092
|
if (this.personN?.isFemale()) {
|
|
6035
|
-
return `${
|
|
6093
|
+
return `${greats}aunt`;
|
|
6036
6094
|
}
|
|
6037
|
-
return `${
|
|
6095
|
+
return greats ? `${greats}uncle/${greats}aunt` : "uncle/aunt";
|
|
6038
6096
|
}
|
|
6039
6097
|
nibling() {
|
|
6040
|
-
const
|
|
6098
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6099
|
+
const greats = level <= 2 ? "" : "great-".repeat(level - 2);
|
|
6100
|
+
const grand = level <= 1 ? "" : "grand";
|
|
6041
6101
|
if (this.personN?.isMale()) {
|
|
6042
|
-
return `${
|
|
6102
|
+
return `${greats}${grand}nephew`;
|
|
6043
6103
|
}
|
|
6044
6104
|
if (this.personN?.isFemale()) {
|
|
6045
|
-
return `${
|
|
6105
|
+
return `${greats}${grand}niece`;
|
|
6046
6106
|
}
|
|
6047
|
-
return `${
|
|
6107
|
+
return greats || grand ? `${greats}${grand}nephew/${greats}${grand}niece` : "nephew/niece";
|
|
6048
6108
|
}
|
|
6049
6109
|
parent() {
|
|
6050
6110
|
const prefix = this.directPrefix();
|
|
@@ -6172,45 +6232,64 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
6172
6232
|
};
|
|
6173
6233
|
|
|
6174
6234
|
// src/kinship-translator/patterns.de.ts
|
|
6235
|
+
var parentRelationsDe = {
|
|
6236
|
+
step: "Stief",
|
|
6237
|
+
foster: "Pflege",
|
|
6238
|
+
adopted: "Adoptiv"
|
|
6239
|
+
};
|
|
6175
6240
|
var InLawsDe = {
|
|
6176
|
-
"Ehepartner von (
|
|
6177
|
-
"Ehefrau von (
|
|
6178
|
-
"Ehemann von (
|
|
6179
|
-
"
|
|
6180
|
-
"
|
|
6181
|
-
"
|
|
6182
|
-
"Ehefrau von (Halb)
|
|
6183
|
-
"Ehemann von (Halb)
|
|
6184
|
-
"Ehepartner von (Halb)
|
|
6185
|
-
"(Halb)
|
|
6186
|
-
"(Halb)
|
|
6187
|
-
"(Halb)
|
|
6241
|
+
"Ehepartner von (Kind|Tochter|Sohn)": "Schwiegerkind",
|
|
6242
|
+
"Ehefrau von (Kind|Tochter|Sohn)": "Schwiegertochter",
|
|
6243
|
+
"Ehemann von (Kind|Tochter|Sohn)": "Schwiegersohn",
|
|
6244
|
+
"Mutter (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegermutter",
|
|
6245
|
+
"Vater (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegervater",
|
|
6246
|
+
"Elternteil (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegerelternteil",
|
|
6247
|
+
"Ehefrau von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schw\xE4gerin",
|
|
6248
|
+
"Ehemann von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager",
|
|
6249
|
+
"Ehepartner von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager/Schw\xE4gerin",
|
|
6250
|
+
"(Halb)?-?(Schwester|schwester) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schw\xE4gerin",
|
|
6251
|
+
"(Halb)?-?(Bruder|bruder) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager",
|
|
6252
|
+
"(Halb)?-?(Geschwister|geschwister) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager/Schw\xE4gerin"
|
|
6188
6253
|
};
|
|
6189
6254
|
|
|
6190
6255
|
// src/kinship-translator/kinship-translator.de.ts
|
|
6191
|
-
var
|
|
6192
|
-
|
|
6193
|
-
|
|
6194
|
-
|
|
6195
|
-
|
|
6196
|
-
|
|
6197
|
-
|
|
6198
|
-
|
|
6199
|
-
|
|
6200
|
-
|
|
6201
|
-
|
|
6202
|
-
|
|
6203
|
-
|
|
6256
|
+
var sexOf = (person) => {
|
|
6257
|
+
if (person?.isMale?.()) {
|
|
6258
|
+
return "m";
|
|
6259
|
+
}
|
|
6260
|
+
if (person?.isFemale?.()) {
|
|
6261
|
+
return "f";
|
|
6262
|
+
}
|
|
6263
|
+
return "n";
|
|
6264
|
+
};
|
|
6265
|
+
var pick = (sex, male, female, neutral) => {
|
|
6266
|
+
if (sex === "m") {
|
|
6267
|
+
return male;
|
|
6268
|
+
}
|
|
6269
|
+
if (sex === "f") {
|
|
6270
|
+
return female;
|
|
6204
6271
|
}
|
|
6272
|
+
return neutral;
|
|
6273
|
+
};
|
|
6274
|
+
var ur = (count) => count > 0 ? "Ur".repeat(count) : "";
|
|
6275
|
+
var genitiveArticle = (spouseType) => {
|
|
6276
|
+
if (spouseType === "Ehefrau") {
|
|
6277
|
+
return `der ${spouseType}`;
|
|
6278
|
+
}
|
|
6279
|
+
return `des ${spouseType}s`;
|
|
6280
|
+
};
|
|
6281
|
+
var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
6205
6282
|
indirect() {
|
|
6206
6283
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
6207
6284
|
if (degree > 0) {
|
|
6208
6285
|
degree = degree - 1;
|
|
6209
6286
|
}
|
|
6210
|
-
|
|
6211
|
-
|
|
6287
|
+
const sex = sexOf(this.personN);
|
|
6288
|
+
const cousin = pick(sex, "Cousin", "Cousine", "Cousin/Cousine");
|
|
6289
|
+
if (degree <= 1) {
|
|
6290
|
+
return cousin;
|
|
6212
6291
|
}
|
|
6213
|
-
return
|
|
6292
|
+
return `${cousin} ${degree}. Grades`;
|
|
6214
6293
|
}
|
|
6215
6294
|
removal() {
|
|
6216
6295
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6221,101 +6300,101 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
6221
6300
|
if (!degree) {
|
|
6222
6301
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6223
6302
|
}
|
|
6224
|
-
return
|
|
6303
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 entfernt`;
|
|
6225
6304
|
}
|
|
6226
6305
|
auncle() {
|
|
6227
|
-
const
|
|
6228
|
-
|
|
6229
|
-
|
|
6230
|
-
|
|
6231
|
-
if (this.personN?.isFemale()) {
|
|
6232
|
-
return `${prefix}tante`;
|
|
6306
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6307
|
+
const sex = sexOf(this.personN);
|
|
6308
|
+
if (level <= 1) {
|
|
6309
|
+
return pick(sex, "Onkel", "Tante", "Onkel/Tante");
|
|
6233
6310
|
}
|
|
6234
|
-
|
|
6311
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
6312
|
+
return pick(
|
|
6313
|
+
sex,
|
|
6314
|
+
`${prefix}onkel`,
|
|
6315
|
+
`${prefix}tante`,
|
|
6316
|
+
`${prefix}onkel/tante`
|
|
6317
|
+
);
|
|
6235
6318
|
}
|
|
6236
6319
|
nibling() {
|
|
6237
|
-
const
|
|
6238
|
-
|
|
6239
|
-
|
|
6240
|
-
|
|
6241
|
-
if (this.personN?.isFemale()) {
|
|
6242
|
-
return `${prefix}nichte`;
|
|
6320
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6321
|
+
const sex = sexOf(this.personN);
|
|
6322
|
+
if (level <= 1) {
|
|
6323
|
+
return pick(sex, "Neffe", "Nichte", "Neffe/Nichte");
|
|
6243
6324
|
}
|
|
6244
|
-
|
|
6325
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
6326
|
+
return pick(
|
|
6327
|
+
sex,
|
|
6328
|
+
`${prefix}neffe`,
|
|
6329
|
+
`${prefix}nichte`,
|
|
6330
|
+
`${prefix}neffe/nichte`
|
|
6331
|
+
);
|
|
6245
6332
|
}
|
|
6246
6333
|
parent() {
|
|
6247
|
-
const
|
|
6248
|
-
|
|
6249
|
-
|
|
6250
|
-
|
|
6251
|
-
if (this.personN?.isFemale()) {
|
|
6252
|
-
return `${prefix}mutter`;
|
|
6334
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6335
|
+
const sex = sexOf(this.personN);
|
|
6336
|
+
if (level <= 1) {
|
|
6337
|
+
return pick(sex, "Vater", "Mutter", "Elternteil");
|
|
6253
6338
|
}
|
|
6254
|
-
|
|
6339
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
6340
|
+
return pick(
|
|
6341
|
+
sex,
|
|
6342
|
+
`${prefix}vater`,
|
|
6343
|
+
`${prefix}mutter`,
|
|
6344
|
+
`${prefix}elternteil`
|
|
6345
|
+
);
|
|
6255
6346
|
}
|
|
6256
6347
|
child() {
|
|
6257
|
-
const
|
|
6258
|
-
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
if (this.personN?.isFemale()) {
|
|
6262
|
-
return `${prefix}tochter`;
|
|
6348
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6349
|
+
const sex = sexOf(this.personN);
|
|
6350
|
+
if (level <= 1) {
|
|
6351
|
+
return pick(sex, "Sohn", "Tochter", "Kind");
|
|
6263
6352
|
}
|
|
6264
|
-
|
|
6353
|
+
const prefix = ur(level - 2);
|
|
6354
|
+
return pick(
|
|
6355
|
+
sex,
|
|
6356
|
+
`${prefix}Enkel`,
|
|
6357
|
+
`${prefix}Enkelin`,
|
|
6358
|
+
`${prefix}Enkelkind`
|
|
6359
|
+
);
|
|
6265
6360
|
}
|
|
6266
6361
|
sibling() {
|
|
6267
|
-
|
|
6268
|
-
return "bruder";
|
|
6269
|
-
}
|
|
6270
|
-
if (this.personN?.isFemale()) {
|
|
6271
|
-
return "schwester";
|
|
6272
|
-
}
|
|
6273
|
-
return "geschwister";
|
|
6362
|
+
return pick(sexOf(this.personN), "Bruder", "Schwester", "Geschwister");
|
|
6274
6363
|
}
|
|
6275
6364
|
halfBlood(relation) {
|
|
6276
6365
|
if (!relation || !this.isHalfBlood) {
|
|
6277
6366
|
return relation ?? "";
|
|
6278
6367
|
}
|
|
6279
|
-
if (
|
|
6368
|
+
if (/[\s-]/.test(relation) || /^(Groß|Ur)/.test(relation)) {
|
|
6280
6369
|
return `Halb-${relation}`;
|
|
6281
6370
|
}
|
|
6282
|
-
return `Halb${relation}`;
|
|
6371
|
+
return `Halb${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
6283
6372
|
}
|
|
6284
6373
|
spouse() {
|
|
6285
|
-
|
|
6286
|
-
return "Ehemann";
|
|
6287
|
-
}
|
|
6288
|
-
if (this.personN?.isFemale()) {
|
|
6289
|
-
return "Ehefrau";
|
|
6290
|
-
}
|
|
6291
|
-
return "Ehepartner";
|
|
6374
|
+
return pick(sexOf(this.personN), "Ehemann", "Ehefrau", "Ehepartner");
|
|
6292
6375
|
}
|
|
6293
6376
|
ofSpouse(relation) {
|
|
6294
6377
|
if (!relation) {
|
|
6295
6378
|
return "";
|
|
6296
6379
|
}
|
|
6297
|
-
const
|
|
6298
|
-
|
|
6299
|
-
|
|
6300
|
-
|
|
6301
|
-
|
|
6302
|
-
|
|
6303
|
-
|
|
6304
|
-
}
|
|
6305
|
-
return `${relation} des ${spouseType}s`;
|
|
6380
|
+
const spouseType = pick(
|
|
6381
|
+
sexOf(this.path?.[1].indi),
|
|
6382
|
+
"Ehemann",
|
|
6383
|
+
"Ehefrau",
|
|
6384
|
+
"Ehepartner"
|
|
6385
|
+
);
|
|
6386
|
+
return `${relation} ${genitiveArticle(spouseType)}`;
|
|
6306
6387
|
}
|
|
6307
6388
|
spouseOf(relation) {
|
|
6308
6389
|
if (!relation) {
|
|
6309
6390
|
return "";
|
|
6310
6391
|
}
|
|
6311
|
-
const
|
|
6312
|
-
|
|
6313
|
-
|
|
6314
|
-
|
|
6315
|
-
|
|
6316
|
-
|
|
6317
|
-
spouseType = "Ehefrau";
|
|
6318
|
-
}
|
|
6392
|
+
const spouseType = pick(
|
|
6393
|
+
sexOf(this.path?.[this.path.length - 1].indi),
|
|
6394
|
+
"Ehemann",
|
|
6395
|
+
"Ehefrau",
|
|
6396
|
+
"Ehepartner"
|
|
6397
|
+
);
|
|
6319
6398
|
return `${spouseType} von ${relation}`;
|
|
6320
6399
|
}
|
|
6321
6400
|
of(relation) {
|
|
@@ -6333,8 +6412,8 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
6333
6412
|
if (!name || !relation) {
|
|
6334
6413
|
return relation ?? "";
|
|
6335
6414
|
}
|
|
6336
|
-
if (relation.includes(" des ") || relation.includes(" von ")) {
|
|
6337
|
-
return relation.replace(/ (des|von) /, ` $1 ${name}s `);
|
|
6415
|
+
if (relation.includes(" des ") || relation.includes(" der ") || relation.includes(" von ")) {
|
|
6416
|
+
return relation.replace(/ (des|der|von) /, ` $1 ${name}s `);
|
|
6338
6417
|
}
|
|
6339
6418
|
return `${name}s ${relation}`;
|
|
6340
6419
|
}
|
|
@@ -6364,50 +6443,82 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
6364
6443
|
if (!relation || !this.pathN?.relation) {
|
|
6365
6444
|
return relation ?? "";
|
|
6366
6445
|
}
|
|
6367
|
-
|
|
6446
|
+
const prefix = parentRelationsDe[this.pathN.relation];
|
|
6447
|
+
if (!prefix) {
|
|
6448
|
+
return relation;
|
|
6449
|
+
}
|
|
6450
|
+
if (prefix.endsWith("-") || prefix.endsWith(" ")) {
|
|
6451
|
+
return `${prefix}${relation}`;
|
|
6452
|
+
}
|
|
6453
|
+
return `${prefix}${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
6368
6454
|
}
|
|
6369
6455
|
};
|
|
6370
6456
|
|
|
6371
6457
|
// src/kinship-translator/patterns.fr.ts
|
|
6458
|
+
var parentRelationsFr = {
|
|
6459
|
+
step: "step",
|
|
6460
|
+
foster: "foster",
|
|
6461
|
+
adopted: "adopted"
|
|
6462
|
+
};
|
|
6372
6463
|
var InLawsFr = {
|
|
6373
6464
|
"conjoint de (enfant|fille|fils)": "beau-fils/belle-fille",
|
|
6374
6465
|
"\xE9pouse de (enfant|fille|fils)": "belle-fille",
|
|
6375
6466
|
"mari de (enfant|fille|fils)": "gendre",
|
|
6376
|
-
"m\xE8re du
|
|
6377
|
-
"p\xE8re du
|
|
6378
|
-
"parent du
|
|
6467
|
+
"m\xE8re (du mari|du conjoint|de l'\xE9pouse)": "belle-m\xE8re",
|
|
6468
|
+
"p\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-p\xE8re",
|
|
6469
|
+
"parent (du mari|du conjoint|de l'\xE9pouse)": "beau-parent",
|
|
6379
6470
|
"\xE9pouse de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "belle-s\u0153ur",
|
|
6380
6471
|
"mari de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re",
|
|
6381
6472
|
"conjoint de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re/belle-s\u0153ur",
|
|
6382
|
-
"(demi-)?s\u0153ur du
|
|
6383
|
-
"(demi-)?fr\xE8re du
|
|
6384
|
-
"(demi-)?fr\xE8re/s\u0153ur du
|
|
6473
|
+
"(demi-)?s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "belle-s\u0153ur",
|
|
6474
|
+
"(demi-)?fr\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re",
|
|
6475
|
+
"(demi-)?fr\xE8re/s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re/belle-s\u0153ur"
|
|
6385
6476
|
};
|
|
6386
6477
|
|
|
6387
6478
|
// src/kinship-translator/kinship-translator.fr.ts
|
|
6388
|
-
var
|
|
6389
|
-
|
|
6390
|
-
|
|
6391
|
-
|
|
6392
|
-
|
|
6393
|
-
|
|
6394
|
-
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
|
|
6399
|
-
|
|
6400
|
-
|
|
6479
|
+
var sexOf2 = (person) => {
|
|
6480
|
+
if (person?.isMale?.()) {
|
|
6481
|
+
return "m";
|
|
6482
|
+
}
|
|
6483
|
+
if (person?.isFemale?.()) {
|
|
6484
|
+
return "f";
|
|
6485
|
+
}
|
|
6486
|
+
return "n";
|
|
6487
|
+
};
|
|
6488
|
+
var pick2 = (sex, male, female, neutral) => {
|
|
6489
|
+
if (sex === "m") {
|
|
6490
|
+
return male;
|
|
6491
|
+
}
|
|
6492
|
+
if (sex === "f") {
|
|
6493
|
+
return female;
|
|
6494
|
+
}
|
|
6495
|
+
return neutral;
|
|
6496
|
+
};
|
|
6497
|
+
var arriere = (count) => count > 0 ? "arri\xE8re-".repeat(count) : "";
|
|
6498
|
+
var frenchOrdinal = (n) => n === 1 ? "1er" : `${n}e`;
|
|
6499
|
+
var isFeminineRelation = (relation) => /mère|fille|sœur|tante|nièce|cousine|épouse/.test(relation);
|
|
6500
|
+
var ofSpousePrep = (spouseType) => {
|
|
6501
|
+
if (spouseType === "\xE9pouse") {
|
|
6502
|
+
return "de l'";
|
|
6401
6503
|
}
|
|
6504
|
+
return "du ";
|
|
6505
|
+
};
|
|
6506
|
+
var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
6402
6507
|
indirect() {
|
|
6403
6508
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
6404
6509
|
if (degree > 0) {
|
|
6405
6510
|
degree = degree - 1;
|
|
6406
6511
|
}
|
|
6407
|
-
|
|
6408
|
-
|
|
6512
|
+
const cousin = pick2(
|
|
6513
|
+
sexOf2(this.personN),
|
|
6514
|
+
"cousin",
|
|
6515
|
+
"cousine",
|
|
6516
|
+
"cousin/cousine"
|
|
6517
|
+
);
|
|
6518
|
+
if (degree <= 1) {
|
|
6519
|
+
return cousin;
|
|
6409
6520
|
}
|
|
6410
|
-
return
|
|
6521
|
+
return `${cousin} au ${frenchOrdinal(degree)} degr\xE9`;
|
|
6411
6522
|
}
|
|
6412
6523
|
removal() {
|
|
6413
6524
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6418,56 +6529,57 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
6418
6529
|
if (!degree) {
|
|
6419
6530
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6420
6531
|
}
|
|
6421
|
-
return
|
|
6532
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 \xE9loign\xE9`;
|
|
6422
6533
|
}
|
|
6423
6534
|
auncle() {
|
|
6424
|
-
const
|
|
6425
|
-
|
|
6426
|
-
|
|
6427
|
-
|
|
6428
|
-
|
|
6429
|
-
return `${prefix}tante`;
|
|
6535
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6536
|
+
const sex = sexOf2(this.personN);
|
|
6537
|
+
const base = pick2(sex, "oncle", "tante", "oncle/tante");
|
|
6538
|
+
if (level <= 1) {
|
|
6539
|
+
return base;
|
|
6430
6540
|
}
|
|
6431
|
-
|
|
6541
|
+
const grands = pick2(
|
|
6542
|
+
sex,
|
|
6543
|
+
"grand-oncle",
|
|
6544
|
+
"grand-tante",
|
|
6545
|
+
"grand-oncle/tante"
|
|
6546
|
+
);
|
|
6547
|
+
return `${arriere(level - 2)}${grands}`;
|
|
6432
6548
|
}
|
|
6433
6549
|
nibling() {
|
|
6434
|
-
const
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
|
|
6438
|
-
if (this.personN?.isFemale()) {
|
|
6439
|
-
return `${prefix}ni\xE8ce`;
|
|
6550
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6551
|
+
const sex = sexOf2(this.personN);
|
|
6552
|
+
if (level <= 1) {
|
|
6553
|
+
return pick2(sex, "neveu", "ni\xE8ce", "neveu/ni\xE8ce");
|
|
6440
6554
|
}
|
|
6441
|
-
|
|
6555
|
+
const grands = pick2(
|
|
6556
|
+
sex,
|
|
6557
|
+
"grand-neveu",
|
|
6558
|
+
"grande-ni\xE8ce",
|
|
6559
|
+
"grand-neveu/grande-ni\xE8ce"
|
|
6560
|
+
);
|
|
6561
|
+
return `${arriere(level - 2)}${grands}`;
|
|
6442
6562
|
}
|
|
6443
6563
|
parent() {
|
|
6444
|
-
const
|
|
6445
|
-
|
|
6446
|
-
|
|
6447
|
-
|
|
6448
|
-
if (this.personN?.isFemale()) {
|
|
6449
|
-
return `${prefix}m\xE8re`;
|
|
6564
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6565
|
+
const sex = sexOf2(this.personN);
|
|
6566
|
+
if (level <= 1) {
|
|
6567
|
+
return pick2(sex, "p\xE8re", "m\xE8re", "parent");
|
|
6450
6568
|
}
|
|
6451
|
-
|
|
6569
|
+
const grands = pick2(sex, "grand-p\xE8re", "grand-m\xE8re", "grand-parent");
|
|
6570
|
+
return `${arriere(level - 2)}${grands}`;
|
|
6452
6571
|
}
|
|
6453
6572
|
child() {
|
|
6454
|
-
const
|
|
6455
|
-
|
|
6456
|
-
|
|
6457
|
-
|
|
6458
|
-
if (this.personN?.isFemale()) {
|
|
6459
|
-
return `${prefix}fille`;
|
|
6573
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6574
|
+
const sex = sexOf2(this.personN);
|
|
6575
|
+
if (level <= 1) {
|
|
6576
|
+
return pick2(sex, "fils", "fille", "enfant");
|
|
6460
6577
|
}
|
|
6461
|
-
|
|
6578
|
+
const petits = pick2(sex, "petit-fils", "petite-fille", "petit-enfant");
|
|
6579
|
+
return `${arriere(level - 2)}${petits}`;
|
|
6462
6580
|
}
|
|
6463
6581
|
sibling() {
|
|
6464
|
-
|
|
6465
|
-
return "fr\xE8re";
|
|
6466
|
-
}
|
|
6467
|
-
if (this.personN?.isFemale()) {
|
|
6468
|
-
return "s\u0153ur";
|
|
6469
|
-
}
|
|
6470
|
-
return "fr\xE8re/s\u0153ur";
|
|
6582
|
+
return pick2(sexOf2(this.personN), "fr\xE8re", "s\u0153ur", "fr\xE8re/s\u0153ur");
|
|
6471
6583
|
}
|
|
6472
6584
|
halfBlood(relation) {
|
|
6473
6585
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -6476,40 +6588,30 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
6476
6588
|
return `demi-${relation}`;
|
|
6477
6589
|
}
|
|
6478
6590
|
spouse() {
|
|
6479
|
-
|
|
6480
|
-
return "mari";
|
|
6481
|
-
}
|
|
6482
|
-
if (this.personN?.isFemale()) {
|
|
6483
|
-
return "\xE9pouse";
|
|
6484
|
-
}
|
|
6485
|
-
return "conjoint";
|
|
6591
|
+
return pick2(sexOf2(this.personN), "mari", "\xE9pouse", "conjoint");
|
|
6486
6592
|
}
|
|
6487
6593
|
ofSpouse(relation) {
|
|
6488
6594
|
if (!relation) {
|
|
6489
6595
|
return "";
|
|
6490
6596
|
}
|
|
6491
|
-
const
|
|
6492
|
-
|
|
6493
|
-
|
|
6494
|
-
|
|
6495
|
-
|
|
6496
|
-
|
|
6497
|
-
|
|
6498
|
-
}
|
|
6499
|
-
return `${relation} du ${spouseType}`;
|
|
6597
|
+
const spouseType = pick2(
|
|
6598
|
+
sexOf2(this.path?.[1].indi),
|
|
6599
|
+
"mari",
|
|
6600
|
+
"\xE9pouse",
|
|
6601
|
+
"conjoint"
|
|
6602
|
+
);
|
|
6603
|
+
return `${relation} ${ofSpousePrep(spouseType)}${spouseType}`;
|
|
6500
6604
|
}
|
|
6501
6605
|
spouseOf(relation) {
|
|
6502
6606
|
if (!relation) {
|
|
6503
6607
|
return "";
|
|
6504
6608
|
}
|
|
6505
|
-
const
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6509
|
-
|
|
6510
|
-
|
|
6511
|
-
spouseType = "\xE9pouse";
|
|
6512
|
-
}
|
|
6609
|
+
const spouseType = pick2(
|
|
6610
|
+
sexOf2(this.path?.[this.path.length - 1].indi),
|
|
6611
|
+
"mari",
|
|
6612
|
+
"\xE9pouse",
|
|
6613
|
+
"conjoint"
|
|
6614
|
+
);
|
|
6513
6615
|
return `${spouseType} de ${relation}`;
|
|
6514
6616
|
}
|
|
6515
6617
|
of(relation) {
|
|
@@ -6530,6 +6632,9 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
6530
6632
|
if (relation.includes(" du ") || relation.includes(" de ")) {
|
|
6531
6633
|
return relation.replace(/ (du|de) /, ` $1 ${name} `);
|
|
6532
6634
|
}
|
|
6635
|
+
if (relation.includes(" de l'")) {
|
|
6636
|
+
return relation.replace(" de l'", ` de ${name} l'`);
|
|
6637
|
+
}
|
|
6533
6638
|
return `${relation} de ${name}`;
|
|
6534
6639
|
}
|
|
6535
6640
|
inLaw(relation) {
|
|
@@ -6558,50 +6663,118 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
6558
6663
|
if (!relation || !this.pathN?.relation) {
|
|
6559
6664
|
return relation ?? "";
|
|
6560
6665
|
}
|
|
6561
|
-
|
|
6666
|
+
const kind = parentRelationsFr[this.pathN.relation];
|
|
6667
|
+
if (!kind) {
|
|
6668
|
+
return relation;
|
|
6669
|
+
}
|
|
6670
|
+
if (kind === "step") {
|
|
6671
|
+
return `${isFeminineRelation(relation) ? "belle-" : "beau-"}${relation}`;
|
|
6672
|
+
}
|
|
6673
|
+
if (kind === "adopted") {
|
|
6674
|
+
return `${relation} ${isFeminineRelation(relation) ? "adoptive" : "adoptif"}`;
|
|
6675
|
+
}
|
|
6676
|
+
if (kind === "foster") {
|
|
6677
|
+
return `${relation} d'accueil`;
|
|
6678
|
+
}
|
|
6679
|
+
return relation;
|
|
6562
6680
|
}
|
|
6563
6681
|
};
|
|
6564
6682
|
|
|
6565
6683
|
// src/kinship-translator/patterns.es.ts
|
|
6684
|
+
var parentRelationsEs = {
|
|
6685
|
+
step: {
|
|
6686
|
+
padre: "padrastro",
|
|
6687
|
+
madre: "madrastra",
|
|
6688
|
+
hijo: "hijastro",
|
|
6689
|
+
hija: "hijastra",
|
|
6690
|
+
hermano: "hermanastro",
|
|
6691
|
+
hermana: "hermanastra",
|
|
6692
|
+
abuelo: "abuelastro",
|
|
6693
|
+
abuela: "abuelastra"
|
|
6694
|
+
}
|
|
6695
|
+
};
|
|
6566
6696
|
var InLawsEs = {
|
|
6567
6697
|
"c\xF3nyuge de (hijo/hija|hija|hijo)": "yerno/nuera",
|
|
6568
6698
|
"esposa de (hijo/hija|hija|hijo)": "nuera",
|
|
6569
6699
|
"esposo de (hijo/hija|hija|hijo)": "yerno",
|
|
6570
|
-
"madre del
|
|
6571
|
-
"padre del
|
|
6572
|
-
"padre/madre del
|
|
6700
|
+
"madre (del c\xF3nyuge|del esposo|de la esposa)": "suegra",
|
|
6701
|
+
"padre (del c\xF3nyuge|del esposo|de la esposa)": "suegro",
|
|
6702
|
+
"padre/madre (del c\xF3nyuge|del esposo|de la esposa)": "suegro/suegra",
|
|
6573
6703
|
"esposa de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ada",
|
|
6574
6704
|
"esposo de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado",
|
|
6575
6705
|
"c\xF3nyuge de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado/cu\xF1ada",
|
|
6576
|
-
"(medio |media |medio/a )?hermana del
|
|
6577
|
-
"(medio |media |medio/a )?hermano del
|
|
6578
|
-
"(medio |media |medio/a )?hermano/hermana del
|
|
6706
|
+
"(medio |media |medio/a )?hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ada",
|
|
6707
|
+
"(medio |media |medio/a )?hermano (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado",
|
|
6708
|
+
"(medio |media |medio/a )?hermano/hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado/cu\xF1ada"
|
|
6579
6709
|
};
|
|
6580
6710
|
|
|
6581
6711
|
// src/kinship-translator/kinship-translator.es.ts
|
|
6582
|
-
var
|
|
6583
|
-
|
|
6584
|
-
|
|
6585
|
-
|
|
6586
|
-
|
|
6587
|
-
|
|
6588
|
-
if (level === 2) {
|
|
6589
|
-
return "bisabuel";
|
|
6590
|
-
}
|
|
6591
|
-
if (level === 3) {
|
|
6592
|
-
return "tatarabuel";
|
|
6593
|
-
}
|
|
6594
|
-
return `t\xE1tara${level - 2}-abuel`;
|
|
6712
|
+
var sexOf3 = (person) => {
|
|
6713
|
+
if (person?.isMale?.()) {
|
|
6714
|
+
return "m";
|
|
6715
|
+
}
|
|
6716
|
+
if (person?.isFemale?.()) {
|
|
6717
|
+
return "f";
|
|
6595
6718
|
}
|
|
6719
|
+
return "n";
|
|
6720
|
+
};
|
|
6721
|
+
var pick3 = (sex, male, female, neutral) => {
|
|
6722
|
+
if (sex === "m") {
|
|
6723
|
+
return male;
|
|
6724
|
+
}
|
|
6725
|
+
if (sex === "f") {
|
|
6726
|
+
return female;
|
|
6727
|
+
}
|
|
6728
|
+
return neutral;
|
|
6729
|
+
};
|
|
6730
|
+
var SPANISH_ORDINALS_M = [
|
|
6731
|
+
"",
|
|
6732
|
+
"",
|
|
6733
|
+
"segundo",
|
|
6734
|
+
"tercero",
|
|
6735
|
+
"cuarto",
|
|
6736
|
+
"quinto",
|
|
6737
|
+
"sexto",
|
|
6738
|
+
"s\xE9ptimo",
|
|
6739
|
+
"octavo",
|
|
6740
|
+
"noveno",
|
|
6741
|
+
"d\xE9cimo"
|
|
6742
|
+
];
|
|
6743
|
+
var SPANISH_ORDINALS_F = [
|
|
6744
|
+
"",
|
|
6745
|
+
"",
|
|
6746
|
+
"segunda",
|
|
6747
|
+
"tercera",
|
|
6748
|
+
"cuarta",
|
|
6749
|
+
"quinta",
|
|
6750
|
+
"sexta",
|
|
6751
|
+
"s\xE9ptima",
|
|
6752
|
+
"octava",
|
|
6753
|
+
"novena",
|
|
6754
|
+
"d\xE9cima"
|
|
6755
|
+
];
|
|
6756
|
+
var spanishOrdinal = (n, sex) => {
|
|
6757
|
+
const list = sex === "f" ? SPANISH_ORDINALS_F : SPANISH_ORDINALS_M;
|
|
6758
|
+
return list[n] ?? `${n}.\xBA`;
|
|
6759
|
+
};
|
|
6760
|
+
var ofSpousePrep2 = (spouseType) => {
|
|
6761
|
+
if (spouseType === "esposa") {
|
|
6762
|
+
return "de la ";
|
|
6763
|
+
}
|
|
6764
|
+
return "del ";
|
|
6765
|
+
};
|
|
6766
|
+
var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
6596
6767
|
indirect() {
|
|
6597
6768
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
6598
6769
|
if (degree > 0) {
|
|
6599
6770
|
degree = degree - 1;
|
|
6600
6771
|
}
|
|
6601
|
-
|
|
6602
|
-
|
|
6772
|
+
const sex = sexOf3(this.personN);
|
|
6773
|
+
const cousin = pick3(sex, "primo", "prima", "primo/prima");
|
|
6774
|
+
if (degree <= 1) {
|
|
6775
|
+
return cousin;
|
|
6603
6776
|
}
|
|
6604
|
-
return
|
|
6777
|
+
return `${cousin} ${spanishOrdinal(degree, sex)}`;
|
|
6605
6778
|
}
|
|
6606
6779
|
removal() {
|
|
6607
6780
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6612,56 +6785,133 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
6612
6785
|
if (!degree) {
|
|
6613
6786
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6614
6787
|
}
|
|
6615
|
-
return
|
|
6788
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 separado`;
|
|
6616
6789
|
}
|
|
6617
6790
|
auncle() {
|
|
6618
|
-
const
|
|
6619
|
-
|
|
6620
|
-
|
|
6791
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6792
|
+
const sex = sexOf3(this.personN);
|
|
6793
|
+
if (level <= 1) {
|
|
6794
|
+
return pick3(sex, "t\xEDo", "t\xEDa", "t\xEDo/t\xEDa");
|
|
6621
6795
|
}
|
|
6622
|
-
if (
|
|
6623
|
-
return
|
|
6796
|
+
if (level === 2) {
|
|
6797
|
+
return pick3(sex, "t\xEDo abuelo", "t\xEDa abuela", "t\xEDo/t\xEDa abuelo");
|
|
6798
|
+
}
|
|
6799
|
+
if (level === 3) {
|
|
6800
|
+
return pick3(
|
|
6801
|
+
sex,
|
|
6802
|
+
"t\xEDo bisabuelo",
|
|
6803
|
+
"t\xEDa bisabuela",
|
|
6804
|
+
"t\xEDo/t\xEDa bisabuelo"
|
|
6805
|
+
);
|
|
6624
6806
|
}
|
|
6625
|
-
return
|
|
6807
|
+
return pick3(
|
|
6808
|
+
sex,
|
|
6809
|
+
`t\xEDo abuelo (${level - 1}.\xBA)`,
|
|
6810
|
+
`t\xEDa abuela (${level - 1}.\xAA)`,
|
|
6811
|
+
`t\xEDo/t\xEDa abuelo (${level - 1}.\xBA)`
|
|
6812
|
+
);
|
|
6626
6813
|
}
|
|
6627
6814
|
nibling() {
|
|
6628
|
-
const
|
|
6629
|
-
|
|
6630
|
-
|
|
6815
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6816
|
+
const sex = sexOf3(this.personN);
|
|
6817
|
+
if (level <= 1) {
|
|
6818
|
+
return pick3(sex, "sobrino", "sobrina", "sobrino/sobrina");
|
|
6631
6819
|
}
|
|
6632
|
-
if (
|
|
6633
|
-
return
|
|
6820
|
+
if (level === 2) {
|
|
6821
|
+
return pick3(
|
|
6822
|
+
sex,
|
|
6823
|
+
"sobrino nieto",
|
|
6824
|
+
"sobrina nieta",
|
|
6825
|
+
"sobrino/sobrina nieto"
|
|
6826
|
+
);
|
|
6827
|
+
}
|
|
6828
|
+
if (level === 3) {
|
|
6829
|
+
return pick3(
|
|
6830
|
+
sex,
|
|
6831
|
+
"sobrino bisnieto",
|
|
6832
|
+
"sobrina bisnieta",
|
|
6833
|
+
"sobrino/sobrina bisnieto"
|
|
6834
|
+
);
|
|
6634
6835
|
}
|
|
6635
|
-
return
|
|
6836
|
+
return pick3(
|
|
6837
|
+
sex,
|
|
6838
|
+
`sobrino nieto (${level - 1}.\xBA)`,
|
|
6839
|
+
`sobrina nieta (${level - 1}.\xAA)`,
|
|
6840
|
+
`sobrino/sobrina nieto (${level - 1}.\xBA)`
|
|
6841
|
+
);
|
|
6636
6842
|
}
|
|
6637
6843
|
parent() {
|
|
6638
|
-
const
|
|
6639
|
-
|
|
6640
|
-
|
|
6844
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6845
|
+
const sex = sexOf3(this.personN);
|
|
6846
|
+
if (level <= 1) {
|
|
6847
|
+
return pick3(sex, "padre", "madre", "padre/madre");
|
|
6641
6848
|
}
|
|
6642
|
-
if (
|
|
6643
|
-
return
|
|
6849
|
+
if (level === 2) {
|
|
6850
|
+
return pick3(sex, "abuelo", "abuela", "abuelo/abuela");
|
|
6644
6851
|
}
|
|
6645
|
-
|
|
6852
|
+
if (level === 3) {
|
|
6853
|
+
return pick3(sex, "bisabuelo", "bisabuela", "bisabuelo/bisabuela");
|
|
6854
|
+
}
|
|
6855
|
+
if (level === 4) {
|
|
6856
|
+
return pick3(
|
|
6857
|
+
sex,
|
|
6858
|
+
"tatarabuelo",
|
|
6859
|
+
"tatarabuela",
|
|
6860
|
+
"tatarabuelo/tatarabuela"
|
|
6861
|
+
);
|
|
6862
|
+
}
|
|
6863
|
+
if (level === 5) {
|
|
6864
|
+
return pick3(
|
|
6865
|
+
sex,
|
|
6866
|
+
"trastatarabuelo",
|
|
6867
|
+
"trastatarabuela",
|
|
6868
|
+
"trastatarabuelo/trastatarabuela"
|
|
6869
|
+
);
|
|
6870
|
+
}
|
|
6871
|
+
return pick3(
|
|
6872
|
+
sex,
|
|
6873
|
+
`abuelo (${level}.\xBA)`,
|
|
6874
|
+
`abuela (${level}.\xAA)`,
|
|
6875
|
+
`abuelo/abuela (${level}.\xBA)`
|
|
6876
|
+
);
|
|
6646
6877
|
}
|
|
6647
6878
|
child() {
|
|
6648
|
-
const
|
|
6649
|
-
|
|
6650
|
-
|
|
6879
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6880
|
+
const sex = sexOf3(this.personN);
|
|
6881
|
+
if (level <= 1) {
|
|
6882
|
+
return pick3(sex, "hijo", "hija", "hijo/hija");
|
|
6651
6883
|
}
|
|
6652
|
-
if (
|
|
6653
|
-
return
|
|
6884
|
+
if (level === 2) {
|
|
6885
|
+
return pick3(sex, "nieto", "nieta", "nieto/nieta");
|
|
6654
6886
|
}
|
|
6655
|
-
|
|
6656
|
-
|
|
6657
|
-
sibling() {
|
|
6658
|
-
if (this.personN?.isMale()) {
|
|
6659
|
-
return "hermano";
|
|
6887
|
+
if (level === 3) {
|
|
6888
|
+
return pick3(sex, "bisnieto", "bisnieta", "bisnieto/bisnieta");
|
|
6660
6889
|
}
|
|
6661
|
-
if (
|
|
6662
|
-
return
|
|
6890
|
+
if (level === 4) {
|
|
6891
|
+
return pick3(
|
|
6892
|
+
sex,
|
|
6893
|
+
"tataranieto",
|
|
6894
|
+
"tataranieta",
|
|
6895
|
+
"tataranieto/tataranieta"
|
|
6896
|
+
);
|
|
6897
|
+
}
|
|
6898
|
+
if (level === 5) {
|
|
6899
|
+
return pick3(
|
|
6900
|
+
sex,
|
|
6901
|
+
"trastataranieto",
|
|
6902
|
+
"trastataranieta",
|
|
6903
|
+
"trastataranieto/trastataranieta"
|
|
6904
|
+
);
|
|
6663
6905
|
}
|
|
6664
|
-
return
|
|
6906
|
+
return pick3(
|
|
6907
|
+
sex,
|
|
6908
|
+
`nieto (${level}.\xBA)`,
|
|
6909
|
+
`nieta (${level}.\xAA)`,
|
|
6910
|
+
`nieto/nieta (${level}.\xBA)`
|
|
6911
|
+
);
|
|
6912
|
+
}
|
|
6913
|
+
sibling() {
|
|
6914
|
+
return pick3(sexOf3(this.personN), "hermano", "hermana", "hermano/hermana");
|
|
6665
6915
|
}
|
|
6666
6916
|
halfBlood(relation) {
|
|
6667
6917
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -6676,40 +6926,30 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
6676
6926
|
return `medio/a ${relation}`;
|
|
6677
6927
|
}
|
|
6678
6928
|
spouse() {
|
|
6679
|
-
|
|
6680
|
-
return "esposo";
|
|
6681
|
-
}
|
|
6682
|
-
if (this.personN?.isFemale()) {
|
|
6683
|
-
return "esposa";
|
|
6684
|
-
}
|
|
6685
|
-
return "c\xF3nyuge";
|
|
6929
|
+
return pick3(sexOf3(this.personN), "esposo", "esposa", "c\xF3nyuge");
|
|
6686
6930
|
}
|
|
6687
6931
|
ofSpouse(relation) {
|
|
6688
6932
|
if (!relation) {
|
|
6689
6933
|
return "";
|
|
6690
6934
|
}
|
|
6691
|
-
const
|
|
6692
|
-
|
|
6693
|
-
|
|
6694
|
-
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
}
|
|
6699
|
-
return `${relation} del ${spouseType}`;
|
|
6935
|
+
const spouseType = pick3(
|
|
6936
|
+
sexOf3(this.path?.[1].indi),
|
|
6937
|
+
"esposo",
|
|
6938
|
+
"esposa",
|
|
6939
|
+
"c\xF3nyuge"
|
|
6940
|
+
);
|
|
6941
|
+
return `${relation} ${ofSpousePrep2(spouseType)}${spouseType}`;
|
|
6700
6942
|
}
|
|
6701
6943
|
spouseOf(relation) {
|
|
6702
6944
|
if (!relation) {
|
|
6703
6945
|
return "";
|
|
6704
6946
|
}
|
|
6705
|
-
const
|
|
6706
|
-
|
|
6707
|
-
|
|
6708
|
-
|
|
6709
|
-
|
|
6710
|
-
|
|
6711
|
-
spouseType = "esposa";
|
|
6712
|
-
}
|
|
6947
|
+
const spouseType = pick3(
|
|
6948
|
+
sexOf3(this.path?.[this.path.length - 1].indi),
|
|
6949
|
+
"esposo",
|
|
6950
|
+
"esposa",
|
|
6951
|
+
"c\xF3nyuge"
|
|
6952
|
+
);
|
|
6713
6953
|
return `${spouseType} de ${relation}`;
|
|
6714
6954
|
}
|
|
6715
6955
|
of(relation) {
|
|
@@ -6727,8 +6967,8 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
6727
6967
|
if (!name || !relation) {
|
|
6728
6968
|
return relation ?? "";
|
|
6729
6969
|
}
|
|
6730
|
-
if (relation.includes(" del ") || relation.includes(" de ")) {
|
|
6731
|
-
return relation.replace(/ (del|de) /, ` $1 ${name} `);
|
|
6970
|
+
if (relation.includes(" del ") || relation.includes(" de la ") || relation.includes(" de ")) {
|
|
6971
|
+
return relation.replace(/ (del|de la|de) /, ` $1 ${name} `);
|
|
6732
6972
|
}
|
|
6733
6973
|
return `${relation} de ${name}`;
|
|
6734
6974
|
}
|
|
@@ -6758,7 +6998,20 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
6758
6998
|
if (!relation || !this.pathN?.relation) {
|
|
6759
6999
|
return relation ?? "";
|
|
6760
7000
|
}
|
|
6761
|
-
|
|
7001
|
+
const mapped = parentRelationsEs[this.pathN.relation]?.[relation];
|
|
7002
|
+
if (mapped) {
|
|
7003
|
+
return mapped;
|
|
7004
|
+
}
|
|
7005
|
+
if (this.pathN.relation === "step") {
|
|
7006
|
+
return `${relation} pol\xEDtico`;
|
|
7007
|
+
}
|
|
7008
|
+
if (this.pathN.relation === "adopted") {
|
|
7009
|
+
return `${relation} adoptivo`;
|
|
7010
|
+
}
|
|
7011
|
+
if (this.pathN.relation === "foster") {
|
|
7012
|
+
return `${relation} de acogida`;
|
|
7013
|
+
}
|
|
7014
|
+
return relation;
|
|
6762
7015
|
}
|
|
6763
7016
|
};
|
|
6764
7017
|
|
|
@@ -6767,15 +7020,35 @@ var InLawsRu = {
|
|
|
6767
7020
|
"\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",
|
|
6768
7021
|
"\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",
|
|
6769
7022
|
"\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
|
|
6770
|
-
"\u043C\u0430\u0442\u044C
|
|
6771
|
-
"\
|
|
6772
|
-
"\
|
|
7023
|
+
"\u043C\u0430\u0442\u044C \u0436\u0435\u043D\u044B": "\u0442\u0451\u0449\u0430",
|
|
7024
|
+
"\u043C\u0430\u0442\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
7025
|
+
"\u043C\u0430\u0442\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0451\u0449\u0430/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
7026
|
+
"\u043E\u0442\u0435\u0446 \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C",
|
|
7027
|
+
"\u043E\u0442\u0435\u0446 \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
7028
|
+
"\u043E\u0442\u0435\u0446 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
7029
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
7030
|
+
"\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",
|
|
7031
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
6773
7032
|
"\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",
|
|
6774
7033
|
"\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",
|
|
6775
7034
|
"\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",
|
|
6776
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430
|
|
6777
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\
|
|
6778
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\
|
|
7035
|
+
"(\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",
|
|
7036
|
+
"(\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",
|
|
7037
|
+
"(\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",
|
|
7038
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D",
|
|
7039
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C",
|
|
7040
|
+
"(\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",
|
|
7041
|
+
"(\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",
|
|
7042
|
+
"(\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",
|
|
7043
|
+
"(\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"
|
|
7044
|
+
};
|
|
7045
|
+
var parentRelationsRu = {
|
|
7046
|
+
step: {
|
|
7047
|
+
\u043E\u0442\u0435\u0446: "\u043E\u0442\u0447\u0438\u043C",
|
|
7048
|
+
\u043C\u0430\u0442\u044C: "\u043C\u0430\u0447\u0435\u0445\u0430",
|
|
7049
|
+
\u0441\u044B\u043D: "\u043F\u0430\u0441\u044B\u043D\u043E\u043A",
|
|
7050
|
+
\u0434\u043E\u0447\u044C: "\u043F\u0430\u0434\u0447\u0435\u0440\u0438\u0446\u0430"
|
|
7051
|
+
}
|
|
6779
7052
|
};
|
|
6780
7053
|
|
|
6781
7054
|
// src/kinship-translator/kinship-translator.ru.ts
|
|
@@ -6806,7 +7079,7 @@ var cousinWord = (degree, sex) => {
|
|
|
6806
7079
|
return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
|
|
6807
7080
|
};
|
|
6808
7081
|
var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
|
|
6809
|
-
var
|
|
7082
|
+
var sexOf4 = (person) => {
|
|
6810
7083
|
if (person?.isMale?.()) {
|
|
6811
7084
|
return "m";
|
|
6812
7085
|
}
|
|
@@ -6821,7 +7094,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
6821
7094
|
if (degree > 0) {
|
|
6822
7095
|
degree = degree - 1;
|
|
6823
7096
|
}
|
|
6824
|
-
return cousinWord(degree,
|
|
7097
|
+
return cousinWord(degree, sexOf4(this.personN));
|
|
6825
7098
|
}
|
|
6826
7099
|
removal() {
|
|
6827
7100
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6833,35 +7106,53 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
6833
7106
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6834
7107
|
}
|
|
6835
7108
|
const removed = Math.abs(level);
|
|
6836
|
-
return `${cousinWord(degree,
|
|
7109
|
+
return `${cousinWord(degree, sexOf4(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
|
|
6837
7110
|
}
|
|
6838
7111
|
auncle() {
|
|
6839
7112
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6840
|
-
const
|
|
6841
|
-
|
|
7113
|
+
const sex = sexOf4(this.personN);
|
|
7114
|
+
if (level <= 1) {
|
|
7115
|
+
if (sex === "m") {
|
|
7116
|
+
return "\u0434\u044F\u0434\u044F";
|
|
7117
|
+
}
|
|
7118
|
+
if (sex === "f") {
|
|
7119
|
+
return "\u0442\u0451\u0442\u044F";
|
|
7120
|
+
}
|
|
7121
|
+
return "\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F";
|
|
7122
|
+
}
|
|
7123
|
+
const pra = praRepeat(level - 2);
|
|
6842
7124
|
if (sex === "m") {
|
|
6843
|
-
return
|
|
7125
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434`;
|
|
6844
7126
|
}
|
|
6845
7127
|
if (sex === "f") {
|
|
6846
|
-
return
|
|
7128
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u0430\u044F ${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
6847
7129
|
}
|
|
6848
|
-
return
|
|
7130
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
6849
7131
|
}
|
|
6850
7132
|
nibling() {
|
|
6851
7133
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6852
|
-
const
|
|
6853
|
-
|
|
7134
|
+
const sex = sexOf4(this.personN);
|
|
7135
|
+
if (level <= 1) {
|
|
7136
|
+
if (sex === "m") {
|
|
7137
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A";
|
|
7138
|
+
}
|
|
7139
|
+
if (sex === "f") {
|
|
7140
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
7141
|
+
}
|
|
7142
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
7143
|
+
}
|
|
7144
|
+
const pra = praRepeat(level - 2);
|
|
6854
7145
|
if (sex === "m") {
|
|
6855
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
7146
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
6856
7147
|
}
|
|
6857
7148
|
if (sex === "f") {
|
|
6858
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
7149
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u0430\u044F \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
6859
7150
|
}
|
|
6860
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
7151
|
+
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`;
|
|
6861
7152
|
}
|
|
6862
7153
|
parent() {
|
|
6863
7154
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6864
|
-
const sex =
|
|
7155
|
+
const sex = sexOf4(this.personN);
|
|
6865
7156
|
if (level <= 1) {
|
|
6866
7157
|
if (sex === "m") {
|
|
6867
7158
|
return "\u043E\u0442\u0435\u0446";
|
|
@@ -6891,7 +7182,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
6891
7182
|
}
|
|
6892
7183
|
child() {
|
|
6893
7184
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6894
|
-
const sex =
|
|
7185
|
+
const sex = sexOf4(this.personN);
|
|
6895
7186
|
if (level <= 1) {
|
|
6896
7187
|
if (sex === "m") {
|
|
6897
7188
|
return "\u0441\u044B\u043D";
|
|
@@ -6920,14 +7211,14 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
6920
7211
|
return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
|
|
6921
7212
|
}
|
|
6922
7213
|
sibling() {
|
|
6923
|
-
const sex =
|
|
7214
|
+
const sex = sexOf4(this.personN);
|
|
6924
7215
|
if (sex === "m") {
|
|
6925
7216
|
return "\u0431\u0440\u0430\u0442";
|
|
6926
7217
|
}
|
|
6927
7218
|
if (sex === "f") {
|
|
6928
7219
|
return "\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
6929
7220
|
}
|
|
6930
|
-
return "\u0441\
|
|
7221
|
+
return "\u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
6931
7222
|
}
|
|
6932
7223
|
halfBlood(relation) {
|
|
6933
7224
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -6941,7 +7232,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
6941
7232
|
return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
|
|
6942
7233
|
}
|
|
6943
7234
|
spouse() {
|
|
6944
|
-
const sex =
|
|
7235
|
+
const sex = sexOf4(this.personN);
|
|
6945
7236
|
if (sex === "m") {
|
|
6946
7237
|
return "\u043C\u0443\u0436";
|
|
6947
7238
|
}
|
|
@@ -6955,7 +7246,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
6955
7246
|
return "";
|
|
6956
7247
|
}
|
|
6957
7248
|
const spouse = this.path?.[1].indi;
|
|
6958
|
-
const sex =
|
|
7249
|
+
const sex = sexOf4(spouse);
|
|
6959
7250
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
6960
7251
|
return `${relation} ${toGenitive(spouseType)}`;
|
|
6961
7252
|
}
|
|
@@ -6964,7 +7255,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
6964
7255
|
return "";
|
|
6965
7256
|
}
|
|
6966
7257
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
6967
|
-
const sex =
|
|
7258
|
+
const sex = sexOf4(spouse);
|
|
6968
7259
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
6969
7260
|
return `${spouseType} ${toGenitive(relation)}`;
|
|
6970
7261
|
}
|
|
@@ -7001,7 +7292,22 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7001
7292
|
if (!relation || !this.pathN?.relation) {
|
|
7002
7293
|
return relation ?? "";
|
|
7003
7294
|
}
|
|
7004
|
-
|
|
7295
|
+
const mapped = parentRelationsRu[this.pathN.relation]?.[relation];
|
|
7296
|
+
if (mapped) {
|
|
7297
|
+
return mapped;
|
|
7298
|
+
}
|
|
7299
|
+
if (this.pathN.relation === "step") {
|
|
7300
|
+
return `\u043D\u0435\u0440\u043E\u0434\u043D\u043E\u0439 ${relation}`;
|
|
7301
|
+
}
|
|
7302
|
+
if (this.pathN.relation === "adopted") {
|
|
7303
|
+
return /сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
|
|
7304
|
+
relation
|
|
7305
|
+
) ? `\u043F\u0440\u0438\u0451\u043C\u043D\u0430\u044F ${relation}` : `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
7306
|
+
}
|
|
7307
|
+
if (this.pathN.relation === "foster") {
|
|
7308
|
+
return `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
7309
|
+
}
|
|
7310
|
+
return relation;
|
|
7005
7311
|
}
|
|
7006
7312
|
};
|
|
7007
7313
|
|
|
@@ -7025,7 +7331,7 @@ var InLawsJa = {
|
|
|
7025
7331
|
};
|
|
7026
7332
|
|
|
7027
7333
|
// src/kinship-translator/kinship-translator.ja.ts
|
|
7028
|
-
var
|
|
7334
|
+
var sexOf5 = (person) => {
|
|
7029
7335
|
if (person?.isMale?.()) {
|
|
7030
7336
|
return "m";
|
|
7031
7337
|
}
|
|
@@ -7034,7 +7340,7 @@ var sexOf2 = (person) => {
|
|
|
7034
7340
|
}
|
|
7035
7341
|
return "n";
|
|
7036
7342
|
};
|
|
7037
|
-
var
|
|
7343
|
+
var pick4 = (sex, male, female, neutral) => {
|
|
7038
7344
|
if (sex === "m") {
|
|
7039
7345
|
return male;
|
|
7040
7346
|
}
|
|
@@ -7047,18 +7353,18 @@ var lineal = (level, sex, kind) => {
|
|
|
7047
7353
|
const L = Math.max(1, level);
|
|
7048
7354
|
if (kind === "asc") {
|
|
7049
7355
|
if (L <= 1) {
|
|
7050
|
-
return
|
|
7356
|
+
return pick4(sex, "\u7236", "\u6BCD", "\u89AA");
|
|
7051
7357
|
}
|
|
7052
7358
|
if (L === 2) {
|
|
7053
|
-
return
|
|
7359
|
+
return pick4(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
7054
7360
|
}
|
|
7055
7361
|
if (L === 3) {
|
|
7056
|
-
return
|
|
7362
|
+
return pick4(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
7057
7363
|
}
|
|
7058
7364
|
if (L === 4) {
|
|
7059
|
-
return
|
|
7365
|
+
return pick4(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
7060
7366
|
}
|
|
7061
|
-
return
|
|
7367
|
+
return pick4(
|
|
7062
7368
|
sex,
|
|
7063
7369
|
`${L - 1}\u4E16\u306E\u7956\u7236`,
|
|
7064
7370
|
`${L - 1}\u4E16\u306E\u7956\u6BCD`,
|
|
@@ -7066,7 +7372,7 @@ var lineal = (level, sex, kind) => {
|
|
|
7066
7372
|
);
|
|
7067
7373
|
}
|
|
7068
7374
|
if (L <= 1) {
|
|
7069
|
-
return
|
|
7375
|
+
return pick4(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
|
|
7070
7376
|
}
|
|
7071
7377
|
if (L === 2) {
|
|
7072
7378
|
return "\u5B6B";
|
|
@@ -7113,52 +7419,52 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7113
7419
|
}
|
|
7114
7420
|
auncle() {
|
|
7115
7421
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7116
|
-
const sex =
|
|
7117
|
-
if (level <=
|
|
7118
|
-
return
|
|
7422
|
+
const sex = sexOf5(this.personN);
|
|
7423
|
+
if (level <= 1) {
|
|
7424
|
+
return pick4(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
|
|
7119
7425
|
}
|
|
7120
|
-
if (level ===
|
|
7121
|
-
return
|
|
7426
|
+
if (level === 2) {
|
|
7427
|
+
return pick4(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
|
|
7122
7428
|
}
|
|
7123
|
-
return
|
|
7429
|
+
return pick4(
|
|
7124
7430
|
sex,
|
|
7125
|
-
`${level -
|
|
7126
|
-
`${level -
|
|
7127
|
-
`${level -
|
|
7431
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058`,
|
|
7432
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3070`,
|
|
7433
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
|
|
7128
7434
|
);
|
|
7129
7435
|
}
|
|
7130
7436
|
nibling() {
|
|
7131
7437
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7132
|
-
const sex =
|
|
7133
|
-
if (level <=
|
|
7134
|
-
return
|
|
7438
|
+
const sex = sexOf5(this.personN);
|
|
7439
|
+
if (level <= 1) {
|
|
7440
|
+
return pick4(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
|
|
7135
7441
|
}
|
|
7136
|
-
if (level ===
|
|
7137
|
-
return
|
|
7442
|
+
if (level === 2) {
|
|
7443
|
+
return pick4(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
|
|
7138
7444
|
}
|
|
7139
|
-
return
|
|
7445
|
+
return pick4(
|
|
7140
7446
|
sex,
|
|
7141
|
-
`${level -
|
|
7142
|
-
`${level -
|
|
7143
|
-
`${level -
|
|
7447
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525`,
|
|
7448
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u59EA`,
|
|
7449
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525/\u59EA`
|
|
7144
7450
|
);
|
|
7145
7451
|
}
|
|
7146
7452
|
parent() {
|
|
7147
7453
|
return lineal(
|
|
7148
7454
|
Math.abs(this.pathN?.level ?? 0),
|
|
7149
|
-
|
|
7455
|
+
sexOf5(this.personN),
|
|
7150
7456
|
"asc"
|
|
7151
7457
|
);
|
|
7152
7458
|
}
|
|
7153
7459
|
child() {
|
|
7154
7460
|
return lineal(
|
|
7155
7461
|
Math.abs(this.pathN?.level ?? 0),
|
|
7156
|
-
|
|
7462
|
+
sexOf5(this.personN),
|
|
7157
7463
|
"desc"
|
|
7158
7464
|
);
|
|
7159
7465
|
}
|
|
7160
7466
|
sibling() {
|
|
7161
|
-
return
|
|
7467
|
+
return pick4(sexOf5(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
|
|
7162
7468
|
}
|
|
7163
7469
|
halfBlood(relation) {
|
|
7164
7470
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7167,14 +7473,14 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7167
7473
|
return `\u7570\u7236\u6BCD\u306E${relation}`;
|
|
7168
7474
|
}
|
|
7169
7475
|
spouse() {
|
|
7170
|
-
return
|
|
7476
|
+
return pick4(sexOf5(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
7171
7477
|
}
|
|
7172
7478
|
ofSpouse(relation) {
|
|
7173
7479
|
if (!relation) {
|
|
7174
7480
|
return "";
|
|
7175
7481
|
}
|
|
7176
|
-
const spouseType =
|
|
7177
|
-
|
|
7482
|
+
const spouseType = pick4(
|
|
7483
|
+
sexOf5(this.path?.[1].indi),
|
|
7178
7484
|
"\u592B",
|
|
7179
7485
|
"\u59BB",
|
|
7180
7486
|
"\u914D\u5076\u8005"
|
|
@@ -7186,7 +7492,7 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7186
7492
|
return "";
|
|
7187
7493
|
}
|
|
7188
7494
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
7189
|
-
const spouseType =
|
|
7495
|
+
const spouseType = pick4(sexOf5(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
7190
7496
|
return `${relation}\u306E${spouseType}`;
|
|
7191
7497
|
}
|
|
7192
7498
|
of(relation) {
|
|
@@ -7222,7 +7528,28 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7222
7528
|
if (!relation || !this.pathN?.relation) {
|
|
7223
7529
|
return relation ?? "";
|
|
7224
7530
|
}
|
|
7225
|
-
|
|
7531
|
+
if (this.pathN.relation === "step") {
|
|
7532
|
+
if (relation === "\u7236") {
|
|
7533
|
+
return "\u7EE7\u7236";
|
|
7534
|
+
}
|
|
7535
|
+
if (relation === "\u6BCD") {
|
|
7536
|
+
return "\u7D99\u6BCD";
|
|
7537
|
+
}
|
|
7538
|
+
if (relation === "\u606F\u5B50") {
|
|
7539
|
+
return "\u7D99\u5B50";
|
|
7540
|
+
}
|
|
7541
|
+
if (relation === "\u5A18") {
|
|
7542
|
+
return "\u7D99\u5A18";
|
|
7543
|
+
}
|
|
7544
|
+
return `\u7D99${relation}`;
|
|
7545
|
+
}
|
|
7546
|
+
if (this.pathN.relation === "adopted") {
|
|
7547
|
+
return `\u990A\u5B50\u306E${relation}`;
|
|
7548
|
+
}
|
|
7549
|
+
if (this.pathN.relation === "foster") {
|
|
7550
|
+
return `\u91CC\u89AA\u306E${relation}`;
|
|
7551
|
+
}
|
|
7552
|
+
return relation;
|
|
7226
7553
|
}
|
|
7227
7554
|
};
|
|
7228
7555
|
|
|
@@ -7231,22 +7558,32 @@ var InLawsZh = {
|
|
|
7231
7558
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u914D\u5076": "\u513F\u5AB3/\u5973\u5A7F",
|
|
7232
7559
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u59BB\u5B50": "\u513F\u5AB3",
|
|
7233
7560
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u4E08\u592B": "\u5973\u5A7F",
|
|
7234
|
-
"
|
|
7235
|
-
"
|
|
7236
|
-
"(\u914D\u5076
|
|
7561
|
+
"\u59BB\u5B50\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD",
|
|
7562
|
+
"\u4E08\u592B\u7684\u6BCD\u4EB2": "\u5A46\u5A46",
|
|
7563
|
+
"(\u914D\u5076)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
|
|
7564
|
+
"\u59BB\u5B50\u7684\u7236\u4EB2": "\u5CB3\u7236",
|
|
7565
|
+
"\u4E08\u592B\u7684\u7236\u4EB2": "\u516C\u516C",
|
|
7566
|
+
"(\u914D\u5076)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
|
|
7567
|
+
"\u59BB\u5B50\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD",
|
|
7568
|
+
"\u4E08\u592B\u7684\u7236\u6BCD": "\u516C\u516C\u5A46\u5A46",
|
|
7569
|
+
"(\u914D\u5076)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
|
|
7237
7570
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u59BB\u5B50": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
7238
7571
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u4E08\u592B": "\u59D0\u592B/\u59B9\u592B",
|
|
7239
7572
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u914D\u5076": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
7240
7573
|
"(\u5F02\u7236\u6BCD\u7684)?\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59D0\u592B/\u59B9\u592B",
|
|
7241
7574
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
7242
7575
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
7243
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
7244
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
7576
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u59D0\u59B9": "\u59E8\u5B50",
|
|
7577
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u59D0\u59B9": "\u59D1\u5B50",
|
|
7578
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
|
|
7579
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u5144\u5F1F": "\u5185\u5144/\u5185\u5F1F",
|
|
7580
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4",
|
|
7581
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
|
|
7245
7582
|
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F\u59D0\u59B9": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9"
|
|
7246
7583
|
};
|
|
7247
7584
|
|
|
7248
7585
|
// src/kinship-translator/kinship-translator.zh.ts
|
|
7249
|
-
var
|
|
7586
|
+
var sexOf6 = (person) => {
|
|
7250
7587
|
if (person?.isMale?.()) {
|
|
7251
7588
|
return "m";
|
|
7252
7589
|
}
|
|
@@ -7255,7 +7592,7 @@ var sexOf3 = (person) => {
|
|
|
7255
7592
|
}
|
|
7256
7593
|
return "n";
|
|
7257
7594
|
};
|
|
7258
|
-
var
|
|
7595
|
+
var pick5 = (sex, male, female, neutral) => {
|
|
7259
7596
|
if (sex === "m") {
|
|
7260
7597
|
return male;
|
|
7261
7598
|
}
|
|
@@ -7268,41 +7605,41 @@ var lineal2 = (level, sex, kind) => {
|
|
|
7268
7605
|
const L = Math.max(1, level);
|
|
7269
7606
|
if (kind === "asc") {
|
|
7270
7607
|
if (L <= 1) {
|
|
7271
|
-
return
|
|
7608
|
+
return pick5(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
|
|
7272
7609
|
}
|
|
7273
7610
|
if (L === 2) {
|
|
7274
|
-
return
|
|
7611
|
+
return pick5(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
7275
7612
|
}
|
|
7276
7613
|
if (L === 3) {
|
|
7277
|
-
return
|
|
7614
|
+
return pick5(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
7278
7615
|
}
|
|
7279
7616
|
if (L === 4) {
|
|
7280
|
-
return
|
|
7617
|
+
return pick5(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
7281
7618
|
}
|
|
7282
|
-
return
|
|
7619
|
+
return pick5(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
|
|
7283
7620
|
}
|
|
7284
7621
|
if (L <= 1) {
|
|
7285
|
-
return
|
|
7622
|
+
return pick5(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
|
|
7286
7623
|
}
|
|
7287
7624
|
if (L === 2) {
|
|
7288
|
-
return
|
|
7625
|
+
return pick5(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
|
|
7289
7626
|
}
|
|
7290
7627
|
if (L === 3) {
|
|
7291
|
-
return
|
|
7628
|
+
return pick5(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
|
|
7292
7629
|
}
|
|
7293
7630
|
if (L === 4) {
|
|
7294
|
-
return
|
|
7631
|
+
return pick5(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
|
|
7295
7632
|
}
|
|
7296
|
-
return
|
|
7633
|
+
return pick5(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
|
|
7297
7634
|
};
|
|
7298
7635
|
var cousinPlain2 = (degree, sex) => {
|
|
7299
7636
|
if (degree <= 1) {
|
|
7300
|
-
return
|
|
7637
|
+
return pick5(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
|
|
7301
7638
|
}
|
|
7302
7639
|
if (degree === 2) {
|
|
7303
|
-
return
|
|
7640
|
+
return pick5(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
|
|
7304
7641
|
}
|
|
7305
|
-
return
|
|
7642
|
+
return pick5(
|
|
7306
7643
|
sex,
|
|
7307
7644
|
`${degree}\u4EE3\u5802\u8868\u5144\u5F1F`,
|
|
7308
7645
|
`${degree}\u4EE3\u5802\u8868\u59D0\u59B9`,
|
|
@@ -7315,7 +7652,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7315
7652
|
if (degree > 0) {
|
|
7316
7653
|
degree = degree - 1;
|
|
7317
7654
|
}
|
|
7318
|
-
return cousinPlain2(degree,
|
|
7655
|
+
return cousinPlain2(degree, sexOf6(this.personN));
|
|
7319
7656
|
}
|
|
7320
7657
|
removal() {
|
|
7321
7658
|
const level = this.pathN?.level ?? 0;
|
|
@@ -7327,56 +7664,56 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7327
7664
|
return level < 0 ? this.nibling() : this.auncle();
|
|
7328
7665
|
}
|
|
7329
7666
|
const removed = Math.abs(level);
|
|
7330
|
-
return `${cousinPlain2(degree,
|
|
7667
|
+
return `${cousinPlain2(degree, sexOf6(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
|
|
7331
7668
|
}
|
|
7332
7669
|
auncle() {
|
|
7333
7670
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7334
|
-
const sex =
|
|
7335
|
-
if (level <=
|
|
7336
|
-
return
|
|
7671
|
+
const sex = sexOf6(this.personN);
|
|
7672
|
+
if (level <= 1) {
|
|
7673
|
+
return pick5(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
|
|
7337
7674
|
}
|
|
7338
|
-
if (level ===
|
|
7339
|
-
return
|
|
7675
|
+
if (level === 2) {
|
|
7676
|
+
return pick5(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
|
|
7340
7677
|
}
|
|
7341
|
-
return
|
|
7678
|
+
return pick5(
|
|
7342
7679
|
sex,
|
|
7343
|
-
`${level -
|
|
7344
|
-
`${level -
|
|
7345
|
-
`${level -
|
|
7680
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u53D4`,
|
|
7681
|
+
`${level - 1}\u4EE3\u524D\u7684\u963F\u59E8`,
|
|
7682
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
|
|
7346
7683
|
);
|
|
7347
7684
|
}
|
|
7348
7685
|
nibling() {
|
|
7349
7686
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7350
|
-
const sex =
|
|
7351
|
-
if (level <=
|
|
7352
|
-
return
|
|
7687
|
+
const sex = sexOf6(this.personN);
|
|
7688
|
+
if (level <= 1) {
|
|
7689
|
+
return pick5(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
|
|
7353
7690
|
}
|
|
7354
|
-
if (level ===
|
|
7355
|
-
return
|
|
7691
|
+
if (level === 2) {
|
|
7692
|
+
return pick5(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
|
|
7356
7693
|
}
|
|
7357
|
-
return
|
|
7694
|
+
return pick5(
|
|
7358
7695
|
sex,
|
|
7359
|
-
`${level -
|
|
7360
|
-
`${level -
|
|
7361
|
-
`${level -
|
|
7696
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
|
|
7697
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5973`,
|
|
7698
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
|
|
7362
7699
|
);
|
|
7363
7700
|
}
|
|
7364
7701
|
parent() {
|
|
7365
7702
|
return lineal2(
|
|
7366
7703
|
Math.abs(this.pathN?.level ?? 0),
|
|
7367
|
-
|
|
7704
|
+
sexOf6(this.personN),
|
|
7368
7705
|
"asc"
|
|
7369
7706
|
);
|
|
7370
7707
|
}
|
|
7371
7708
|
child() {
|
|
7372
7709
|
return lineal2(
|
|
7373
7710
|
Math.abs(this.pathN?.level ?? 0),
|
|
7374
|
-
|
|
7711
|
+
sexOf6(this.personN),
|
|
7375
7712
|
"desc"
|
|
7376
7713
|
);
|
|
7377
7714
|
}
|
|
7378
7715
|
sibling() {
|
|
7379
|
-
return
|
|
7716
|
+
return pick5(sexOf6(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
|
|
7380
7717
|
}
|
|
7381
7718
|
halfBlood(relation) {
|
|
7382
7719
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7385,14 +7722,14 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7385
7722
|
return `\u5F02\u7236\u6BCD\u7684${relation}`;
|
|
7386
7723
|
}
|
|
7387
7724
|
spouse() {
|
|
7388
|
-
return
|
|
7725
|
+
return pick5(sexOf6(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
7389
7726
|
}
|
|
7390
7727
|
ofSpouse(relation) {
|
|
7391
7728
|
if (!relation) {
|
|
7392
7729
|
return "";
|
|
7393
7730
|
}
|
|
7394
|
-
const spouseType =
|
|
7395
|
-
|
|
7731
|
+
const spouseType = pick5(
|
|
7732
|
+
sexOf6(this.path?.[1].indi),
|
|
7396
7733
|
"\u4E08\u592B",
|
|
7397
7734
|
"\u59BB\u5B50",
|
|
7398
7735
|
"\u914D\u5076"
|
|
@@ -7404,7 +7741,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7404
7741
|
return "";
|
|
7405
7742
|
}
|
|
7406
7743
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
7407
|
-
const spouseType =
|
|
7744
|
+
const spouseType = pick5(sexOf6(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
7408
7745
|
return `${relation}\u7684${spouseType}`;
|
|
7409
7746
|
}
|
|
7410
7747
|
of(relation) {
|
|
@@ -7440,7 +7777,40 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7440
7777
|
if (!relation || !this.pathN?.relation) {
|
|
7441
7778
|
return relation ?? "";
|
|
7442
7779
|
}
|
|
7443
|
-
|
|
7780
|
+
if (this.pathN.relation === "step") {
|
|
7781
|
+
if (relation === "\u7236\u4EB2") {
|
|
7782
|
+
return "\u7EE7\u7236";
|
|
7783
|
+
}
|
|
7784
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
7785
|
+
return "\u7EE7\u6BCD";
|
|
7786
|
+
}
|
|
7787
|
+
if (relation === "\u513F\u5B50") {
|
|
7788
|
+
return "\u7EE7\u5B50";
|
|
7789
|
+
}
|
|
7790
|
+
if (relation === "\u5973\u513F") {
|
|
7791
|
+
return "\u7EE7\u5973";
|
|
7792
|
+
}
|
|
7793
|
+
return `\u7EE7${relation}`;
|
|
7794
|
+
}
|
|
7795
|
+
if (this.pathN.relation === "adopted") {
|
|
7796
|
+
if (relation === "\u7236\u4EB2") {
|
|
7797
|
+
return "\u517B\u7236";
|
|
7798
|
+
}
|
|
7799
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
7800
|
+
return "\u517B\u6BCD";
|
|
7801
|
+
}
|
|
7802
|
+
if (relation === "\u513F\u5B50") {
|
|
7803
|
+
return "\u517B\u5B50";
|
|
7804
|
+
}
|
|
7805
|
+
if (relation === "\u5973\u513F") {
|
|
7806
|
+
return "\u517B\u5973";
|
|
7807
|
+
}
|
|
7808
|
+
return `\u517B${relation}`;
|
|
7809
|
+
}
|
|
7810
|
+
if (this.pathN.relation === "foster") {
|
|
7811
|
+
return `\u5BC4\u517B${relation}`;
|
|
7812
|
+
}
|
|
7813
|
+
return relation;
|
|
7444
7814
|
}
|
|
7445
7815
|
};
|
|
7446
7816
|
|