@treeviz/gedcom-parser 2.1.11 → 2.1.15
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/index.js +732 -396
- package/dist/classes/indi.d.ts +2 -2
- package/dist/classes/indi.d.ts.map +1 -1
- package/dist/cli/index.js +733 -397
- package/dist/constants/index.js +731 -395
- package/dist/factories/index.js +731 -395
- package/dist/factories/kinship-factory.d.ts +2 -2
- package/dist/factories/kinship-factory.d.ts.map +1 -1
- package/dist/index.js +733 -397
- package/dist/kinship-translator/index.js +731 -395
- package/dist/kinship-translator/kinship-translator.basic.d.ts +3 -1
- package/dist/kinship-translator/kinship-translator.basic.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.d.ts +3 -2
- package/dist/kinship-translator/kinship-translator.d.ts.map +1 -1
- 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/structures/gedcom.d.ts +1 -0
- package/dist/structures/gedcom.d.ts.map +1 -1
- package/dist/structures/individual.d.ts +1 -0
- package/dist/structures/individual.d.ts.map +1 -1
- package/dist/types/types.d.ts +2 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils/common-creator.d.ts.map +1 -1
- package/dist/utils/index.js +733 -397
- package/package.json +1 -1
package/dist/factories/index.js
CHANGED
|
@@ -5108,14 +5108,15 @@ var Indi = class extends Common {
|
|
|
5108
5108
|
}
|
|
5109
5109
|
return foundPath;
|
|
5110
5110
|
}
|
|
5111
|
-
kinship(other, showMainPerson, lang = "en", entirePath, displayName = "givenname") {
|
|
5111
|
+
kinship(other, showMainPerson, lang = "en", entirePath, displayName = "givenname", nameOrder) {
|
|
5112
5112
|
const KinshipTranslatorClass2 = getKinshipTranslatorClass();
|
|
5113
5113
|
const translator = new KinshipTranslatorClass2(
|
|
5114
5114
|
this,
|
|
5115
5115
|
other,
|
|
5116
5116
|
lang,
|
|
5117
5117
|
entirePath,
|
|
5118
|
-
showMainPerson ? displayName : void 0
|
|
5118
|
+
showMainPerson ? displayName : void 0,
|
|
5119
|
+
nameOrder
|
|
5119
5120
|
);
|
|
5120
5121
|
return translator.translate(!!showMainPerson);
|
|
5121
5122
|
}
|
|
@@ -6039,11 +6040,12 @@ var hungarianOrdinalize = (n) => {
|
|
|
6039
6040
|
|
|
6040
6041
|
// src/kinship-translator/kinship-translator.basic.ts
|
|
6041
6042
|
var KinshipTranslatorBasic = class {
|
|
6042
|
-
constructor(path, displayName = "givenname") {
|
|
6043
|
+
constructor(path, displayName = "givenname", nameOrder = "first-last") {
|
|
6043
6044
|
this.isOfSpouse = false;
|
|
6044
6045
|
this.isSpouseOf = false;
|
|
6045
6046
|
this._path = path;
|
|
6046
6047
|
this.displayName = displayName;
|
|
6048
|
+
this.nameOrder = nameOrder;
|
|
6047
6049
|
}
|
|
6048
6050
|
get path() {
|
|
6049
6051
|
return this._path;
|
|
@@ -6322,7 +6324,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
6322
6324
|
}
|
|
6323
6325
|
return `${hungarianOrdinalize(
|
|
6324
6326
|
degree
|
|
6325
|
-
)}unokatestv\xE9r ${level}x elt\xE1vol\xEDtva`;
|
|
6327
|
+
)}unokatestv\xE9r ${Math.abs(level)}x elt\xE1vol\xEDtva`;
|
|
6326
6328
|
}
|
|
6327
6329
|
auncle() {
|
|
6328
6330
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6366,14 +6368,25 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
6366
6368
|
return `${ordinalized ? `${ordinalized}unoka` : ""}testv\xE9r ${origPrefix.replace(/nagy$/, "")}unok\xE1ja`;
|
|
6367
6369
|
}
|
|
6368
6370
|
parent() {
|
|
6371
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6372
|
+
if (level <= 1) {
|
|
6373
|
+
if (this.personN?.isMale()) {
|
|
6374
|
+
return "apa";
|
|
6375
|
+
}
|
|
6376
|
+
if (this.personN?.isFemale()) {
|
|
6377
|
+
return "anya";
|
|
6378
|
+
}
|
|
6379
|
+
return "sz\xFCl\u0151";
|
|
6380
|
+
}
|
|
6369
6381
|
const prefix = this.directPrefix();
|
|
6382
|
+
const gen = prefix === "nagy" ? "" : prefix;
|
|
6370
6383
|
if (this.personN?.isMale()) {
|
|
6371
|
-
return `${
|
|
6384
|
+
return `${gen}nagyapa`;
|
|
6372
6385
|
}
|
|
6373
6386
|
if (this.personN?.isFemale()) {
|
|
6374
|
-
return `${
|
|
6387
|
+
return `${gen}nagyanya`;
|
|
6375
6388
|
}
|
|
6376
|
-
return `${
|
|
6389
|
+
return `${gen}nagysz\xFCl\u0151`;
|
|
6377
6390
|
}
|
|
6378
6391
|
child() {
|
|
6379
6392
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
@@ -6455,7 +6468,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
6455
6468
|
}
|
|
6456
6469
|
of(relation) {
|
|
6457
6470
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
6458
|
-
nameOrder:
|
|
6471
|
+
nameOrder: this.nameOrder
|
|
6459
6472
|
});
|
|
6460
6473
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
6461
6474
|
if (this.displayName === "none") {
|
|
@@ -6567,27 +6580,30 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
6567
6580
|
if (!degree) {
|
|
6568
6581
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6569
6582
|
}
|
|
6570
|
-
return `${ordinalize(degree)} cousin ${level}x removed`;
|
|
6583
|
+
return `${ordinalize(degree)} cousin ${Math.abs(level)}x removed`;
|
|
6571
6584
|
}
|
|
6572
6585
|
auncle() {
|
|
6573
|
-
const
|
|
6586
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6587
|
+
const greats = level <= 1 ? "" : "great-".repeat(level - 1);
|
|
6574
6588
|
if (this.personN?.isMale()) {
|
|
6575
|
-
return `${
|
|
6589
|
+
return `${greats}uncle`;
|
|
6576
6590
|
}
|
|
6577
6591
|
if (this.personN?.isFemale()) {
|
|
6578
|
-
return `${
|
|
6592
|
+
return `${greats}aunt`;
|
|
6579
6593
|
}
|
|
6580
|
-
return `${
|
|
6594
|
+
return greats ? `${greats}uncle/${greats}aunt` : "uncle/aunt";
|
|
6581
6595
|
}
|
|
6582
6596
|
nibling() {
|
|
6583
|
-
const
|
|
6597
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6598
|
+
const greats = level <= 2 ? "" : "great-".repeat(level - 2);
|
|
6599
|
+
const grand = level <= 1 ? "" : "grand";
|
|
6584
6600
|
if (this.personN?.isMale()) {
|
|
6585
|
-
return `${
|
|
6601
|
+
return `${greats}${grand}nephew`;
|
|
6586
6602
|
}
|
|
6587
6603
|
if (this.personN?.isFemale()) {
|
|
6588
|
-
return `${
|
|
6604
|
+
return `${greats}${grand}niece`;
|
|
6589
6605
|
}
|
|
6590
|
-
return `${
|
|
6606
|
+
return greats || grand ? `${greats}${grand}nephew/${greats}${grand}niece` : "nephew/niece";
|
|
6591
6607
|
}
|
|
6592
6608
|
parent() {
|
|
6593
6609
|
const prefix = this.directPrefix();
|
|
@@ -6666,7 +6682,7 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
6666
6682
|
}
|
|
6667
6683
|
of(relation) {
|
|
6668
6684
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
6669
|
-
nameOrder:
|
|
6685
|
+
nameOrder: this.nameOrder
|
|
6670
6686
|
});
|
|
6671
6687
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
6672
6688
|
if (this.displayName === "none") {
|
|
@@ -6715,45 +6731,64 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
6715
6731
|
};
|
|
6716
6732
|
|
|
6717
6733
|
// src/kinship-translator/patterns.de.ts
|
|
6734
|
+
var parentRelationsDe = {
|
|
6735
|
+
step: "Stief",
|
|
6736
|
+
foster: "Pflege",
|
|
6737
|
+
adopted: "Adoptiv"
|
|
6738
|
+
};
|
|
6718
6739
|
var InLawsDe = {
|
|
6719
|
-
"Ehepartner von (
|
|
6720
|
-
"Ehefrau von (
|
|
6721
|
-
"Ehemann von (
|
|
6722
|
-
"
|
|
6723
|
-
"
|
|
6724
|
-
"
|
|
6725
|
-
"Ehefrau von (Halb)
|
|
6726
|
-
"Ehemann von (Halb)
|
|
6727
|
-
"Ehepartner von (Halb)
|
|
6728
|
-
"(Halb)
|
|
6729
|
-
"(Halb)
|
|
6730
|
-
"(Halb)
|
|
6740
|
+
"Ehepartner von (Kind|Tochter|Sohn)": "Schwiegerkind",
|
|
6741
|
+
"Ehefrau von (Kind|Tochter|Sohn)": "Schwiegertochter",
|
|
6742
|
+
"Ehemann von (Kind|Tochter|Sohn)": "Schwiegersohn",
|
|
6743
|
+
"Mutter (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegermutter",
|
|
6744
|
+
"Vater (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegervater",
|
|
6745
|
+
"Elternteil (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegerelternteil",
|
|
6746
|
+
"Ehefrau von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schw\xE4gerin",
|
|
6747
|
+
"Ehemann von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager",
|
|
6748
|
+
"Ehepartner von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager/Schw\xE4gerin",
|
|
6749
|
+
"(Halb)?-?(Schwester|schwester) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schw\xE4gerin",
|
|
6750
|
+
"(Halb)?-?(Bruder|bruder) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager",
|
|
6751
|
+
"(Halb)?-?(Geschwister|geschwister) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager/Schw\xE4gerin"
|
|
6731
6752
|
};
|
|
6732
6753
|
|
|
6733
6754
|
// src/kinship-translator/kinship-translator.de.ts
|
|
6734
|
-
var
|
|
6735
|
-
|
|
6736
|
-
|
|
6737
|
-
|
|
6738
|
-
|
|
6739
|
-
|
|
6740
|
-
if (level === 2) {
|
|
6741
|
-
return "Gro\xDF";
|
|
6742
|
-
}
|
|
6743
|
-
if (level === 3) {
|
|
6744
|
-
return "Urgro\xDF";
|
|
6745
|
-
}
|
|
6746
|
-
return `Ur${level - 2}-gro\xDF`;
|
|
6755
|
+
var sexOf = (person) => {
|
|
6756
|
+
if (person?.isMale?.()) {
|
|
6757
|
+
return "m";
|
|
6758
|
+
}
|
|
6759
|
+
if (person?.isFemale?.()) {
|
|
6760
|
+
return "f";
|
|
6747
6761
|
}
|
|
6762
|
+
return "n";
|
|
6763
|
+
};
|
|
6764
|
+
var pick = (sex, male, female, neutral) => {
|
|
6765
|
+
if (sex === "m") {
|
|
6766
|
+
return male;
|
|
6767
|
+
}
|
|
6768
|
+
if (sex === "f") {
|
|
6769
|
+
return female;
|
|
6770
|
+
}
|
|
6771
|
+
return neutral;
|
|
6772
|
+
};
|
|
6773
|
+
var ur = (count) => count > 0 ? "Ur".repeat(count) : "";
|
|
6774
|
+
var genitiveArticle = (spouseType) => {
|
|
6775
|
+
if (spouseType === "Ehefrau") {
|
|
6776
|
+
return `der ${spouseType}`;
|
|
6777
|
+
}
|
|
6778
|
+
return `des ${spouseType}s`;
|
|
6779
|
+
};
|
|
6780
|
+
var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
6748
6781
|
indirect() {
|
|
6749
6782
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
6750
6783
|
if (degree > 0) {
|
|
6751
6784
|
degree = degree - 1;
|
|
6752
6785
|
}
|
|
6753
|
-
|
|
6754
|
-
|
|
6786
|
+
const sex = sexOf(this.personN);
|
|
6787
|
+
const cousin = pick(sex, "Cousin", "Cousine", "Cousin/Cousine");
|
|
6788
|
+
if (degree <= 1) {
|
|
6789
|
+
return cousin;
|
|
6755
6790
|
}
|
|
6756
|
-
return
|
|
6791
|
+
return `${cousin} ${degree}. Grades`;
|
|
6757
6792
|
}
|
|
6758
6793
|
removal() {
|
|
6759
6794
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6764,106 +6799,106 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
6764
6799
|
if (!degree) {
|
|
6765
6800
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6766
6801
|
}
|
|
6767
|
-
return
|
|
6802
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 entfernt`;
|
|
6768
6803
|
}
|
|
6769
6804
|
auncle() {
|
|
6770
|
-
const
|
|
6771
|
-
|
|
6772
|
-
|
|
6773
|
-
|
|
6774
|
-
if (this.personN?.isFemale()) {
|
|
6775
|
-
return `${prefix}tante`;
|
|
6805
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6806
|
+
const sex = sexOf(this.personN);
|
|
6807
|
+
if (level <= 1) {
|
|
6808
|
+
return pick(sex, "Onkel", "Tante", "Onkel/Tante");
|
|
6776
6809
|
}
|
|
6777
|
-
|
|
6810
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
6811
|
+
return pick(
|
|
6812
|
+
sex,
|
|
6813
|
+
`${prefix}onkel`,
|
|
6814
|
+
`${prefix}tante`,
|
|
6815
|
+
`${prefix}onkel/tante`
|
|
6816
|
+
);
|
|
6778
6817
|
}
|
|
6779
6818
|
nibling() {
|
|
6780
|
-
const
|
|
6781
|
-
|
|
6782
|
-
|
|
6783
|
-
|
|
6784
|
-
if (this.personN?.isFemale()) {
|
|
6785
|
-
return `${prefix}nichte`;
|
|
6819
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6820
|
+
const sex = sexOf(this.personN);
|
|
6821
|
+
if (level <= 1) {
|
|
6822
|
+
return pick(sex, "Neffe", "Nichte", "Neffe/Nichte");
|
|
6786
6823
|
}
|
|
6787
|
-
|
|
6824
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
6825
|
+
return pick(
|
|
6826
|
+
sex,
|
|
6827
|
+
`${prefix}neffe`,
|
|
6828
|
+
`${prefix}nichte`,
|
|
6829
|
+
`${prefix}neffe/nichte`
|
|
6830
|
+
);
|
|
6788
6831
|
}
|
|
6789
6832
|
parent() {
|
|
6790
|
-
const
|
|
6791
|
-
|
|
6792
|
-
|
|
6793
|
-
|
|
6794
|
-
if (this.personN?.isFemale()) {
|
|
6795
|
-
return `${prefix}mutter`;
|
|
6833
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6834
|
+
const sex = sexOf(this.personN);
|
|
6835
|
+
if (level <= 1) {
|
|
6836
|
+
return pick(sex, "Vater", "Mutter", "Elternteil");
|
|
6796
6837
|
}
|
|
6797
|
-
|
|
6838
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
6839
|
+
return pick(
|
|
6840
|
+
sex,
|
|
6841
|
+
`${prefix}vater`,
|
|
6842
|
+
`${prefix}mutter`,
|
|
6843
|
+
`${prefix}elternteil`
|
|
6844
|
+
);
|
|
6798
6845
|
}
|
|
6799
6846
|
child() {
|
|
6800
|
-
const
|
|
6801
|
-
|
|
6802
|
-
|
|
6803
|
-
|
|
6804
|
-
if (this.personN?.isFemale()) {
|
|
6805
|
-
return `${prefix}tochter`;
|
|
6847
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
6848
|
+
const sex = sexOf(this.personN);
|
|
6849
|
+
if (level <= 1) {
|
|
6850
|
+
return pick(sex, "Sohn", "Tochter", "Kind");
|
|
6806
6851
|
}
|
|
6807
|
-
|
|
6852
|
+
const prefix = ur(level - 2);
|
|
6853
|
+
return pick(
|
|
6854
|
+
sex,
|
|
6855
|
+
`${prefix}Enkel`,
|
|
6856
|
+
`${prefix}Enkelin`,
|
|
6857
|
+
`${prefix}Enkelkind`
|
|
6858
|
+
);
|
|
6808
6859
|
}
|
|
6809
6860
|
sibling() {
|
|
6810
|
-
|
|
6811
|
-
return "bruder";
|
|
6812
|
-
}
|
|
6813
|
-
if (this.personN?.isFemale()) {
|
|
6814
|
-
return "schwester";
|
|
6815
|
-
}
|
|
6816
|
-
return "geschwister";
|
|
6861
|
+
return pick(sexOf(this.personN), "Bruder", "Schwester", "Geschwister");
|
|
6817
6862
|
}
|
|
6818
6863
|
halfBlood(relation) {
|
|
6819
6864
|
if (!relation || !this.isHalfBlood) {
|
|
6820
6865
|
return relation ?? "";
|
|
6821
6866
|
}
|
|
6822
|
-
if (
|
|
6867
|
+
if (/[\s-]/.test(relation) || /^(Groß|Ur)/.test(relation)) {
|
|
6823
6868
|
return `Halb-${relation}`;
|
|
6824
6869
|
}
|
|
6825
|
-
return `Halb${relation}`;
|
|
6870
|
+
return `Halb${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
6826
6871
|
}
|
|
6827
6872
|
spouse() {
|
|
6828
|
-
|
|
6829
|
-
return "Ehemann";
|
|
6830
|
-
}
|
|
6831
|
-
if (this.personN?.isFemale()) {
|
|
6832
|
-
return "Ehefrau";
|
|
6833
|
-
}
|
|
6834
|
-
return "Ehepartner";
|
|
6873
|
+
return pick(sexOf(this.personN), "Ehemann", "Ehefrau", "Ehepartner");
|
|
6835
6874
|
}
|
|
6836
6875
|
ofSpouse(relation) {
|
|
6837
6876
|
if (!relation) {
|
|
6838
6877
|
return "";
|
|
6839
6878
|
}
|
|
6840
|
-
const
|
|
6841
|
-
|
|
6842
|
-
|
|
6843
|
-
|
|
6844
|
-
|
|
6845
|
-
|
|
6846
|
-
|
|
6847
|
-
}
|
|
6848
|
-
return `${relation} des ${spouseType}s`;
|
|
6879
|
+
const spouseType = pick(
|
|
6880
|
+
sexOf(this.path?.[1].indi),
|
|
6881
|
+
"Ehemann",
|
|
6882
|
+
"Ehefrau",
|
|
6883
|
+
"Ehepartner"
|
|
6884
|
+
);
|
|
6885
|
+
return `${relation} ${genitiveArticle(spouseType)}`;
|
|
6849
6886
|
}
|
|
6850
6887
|
spouseOf(relation) {
|
|
6851
6888
|
if (!relation) {
|
|
6852
6889
|
return "";
|
|
6853
6890
|
}
|
|
6854
|
-
const
|
|
6855
|
-
|
|
6856
|
-
|
|
6857
|
-
|
|
6858
|
-
|
|
6859
|
-
|
|
6860
|
-
spouseType = "Ehefrau";
|
|
6861
|
-
}
|
|
6891
|
+
const spouseType = pick(
|
|
6892
|
+
sexOf(this.path?.[this.path.length - 1].indi),
|
|
6893
|
+
"Ehemann",
|
|
6894
|
+
"Ehefrau",
|
|
6895
|
+
"Ehepartner"
|
|
6896
|
+
);
|
|
6862
6897
|
return `${spouseType} von ${relation}`;
|
|
6863
6898
|
}
|
|
6864
6899
|
of(relation) {
|
|
6865
6900
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
6866
|
-
nameOrder:
|
|
6901
|
+
nameOrder: this.nameOrder
|
|
6867
6902
|
});
|
|
6868
6903
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
6869
6904
|
if (this.displayName === "none") {
|
|
@@ -6876,8 +6911,8 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
6876
6911
|
if (!name || !relation) {
|
|
6877
6912
|
return relation ?? "";
|
|
6878
6913
|
}
|
|
6879
|
-
if (relation.includes(" des ") || relation.includes(" von ")) {
|
|
6880
|
-
return relation.replace(/ (des|von) /, ` $1 ${name}s `);
|
|
6914
|
+
if (relation.includes(" des ") || relation.includes(" der ") || relation.includes(" von ")) {
|
|
6915
|
+
return relation.replace(/ (des|der|von) /, ` $1 ${name}s `);
|
|
6881
6916
|
}
|
|
6882
6917
|
return `${name}s ${relation}`;
|
|
6883
6918
|
}
|
|
@@ -6907,50 +6942,82 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
6907
6942
|
if (!relation || !this.pathN?.relation) {
|
|
6908
6943
|
return relation ?? "";
|
|
6909
6944
|
}
|
|
6910
|
-
|
|
6945
|
+
const prefix = parentRelationsDe[this.pathN.relation];
|
|
6946
|
+
if (!prefix) {
|
|
6947
|
+
return relation;
|
|
6948
|
+
}
|
|
6949
|
+
if (prefix.endsWith("-") || prefix.endsWith(" ")) {
|
|
6950
|
+
return `${prefix}${relation}`;
|
|
6951
|
+
}
|
|
6952
|
+
return `${prefix}${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
6911
6953
|
}
|
|
6912
6954
|
};
|
|
6913
6955
|
|
|
6914
6956
|
// src/kinship-translator/patterns.fr.ts
|
|
6957
|
+
var parentRelationsFr = {
|
|
6958
|
+
step: "step",
|
|
6959
|
+
foster: "foster",
|
|
6960
|
+
adopted: "adopted"
|
|
6961
|
+
};
|
|
6915
6962
|
var InLawsFr = {
|
|
6916
6963
|
"conjoint de (enfant|fille|fils)": "beau-fils/belle-fille",
|
|
6917
6964
|
"\xE9pouse de (enfant|fille|fils)": "belle-fille",
|
|
6918
6965
|
"mari de (enfant|fille|fils)": "gendre",
|
|
6919
|
-
"m\xE8re du
|
|
6920
|
-
"p\xE8re du
|
|
6921
|
-
"parent du
|
|
6966
|
+
"m\xE8re (du mari|du conjoint|de l'\xE9pouse)": "belle-m\xE8re",
|
|
6967
|
+
"p\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-p\xE8re",
|
|
6968
|
+
"parent (du mari|du conjoint|de l'\xE9pouse)": "beau-parent",
|
|
6922
6969
|
"\xE9pouse de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "belle-s\u0153ur",
|
|
6923
6970
|
"mari de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re",
|
|
6924
6971
|
"conjoint de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re/belle-s\u0153ur",
|
|
6925
|
-
"(demi-)?s\u0153ur du
|
|
6926
|
-
"(demi-)?fr\xE8re du
|
|
6927
|
-
"(demi-)?fr\xE8re/s\u0153ur du
|
|
6972
|
+
"(demi-)?s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "belle-s\u0153ur",
|
|
6973
|
+
"(demi-)?fr\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re",
|
|
6974
|
+
"(demi-)?fr\xE8re/s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re/belle-s\u0153ur"
|
|
6928
6975
|
};
|
|
6929
6976
|
|
|
6930
6977
|
// src/kinship-translator/kinship-translator.fr.ts
|
|
6931
|
-
var
|
|
6932
|
-
|
|
6933
|
-
|
|
6934
|
-
|
|
6935
|
-
|
|
6936
|
-
|
|
6937
|
-
if (level === 2) {
|
|
6938
|
-
return "grand-";
|
|
6939
|
-
}
|
|
6940
|
-
if (level === 3) {
|
|
6941
|
-
return "arri\xE8re-grand-";
|
|
6942
|
-
}
|
|
6943
|
-
return `arri\xE8re${level - 2}-grand-`;
|
|
6978
|
+
var sexOf2 = (person) => {
|
|
6979
|
+
if (person?.isMale?.()) {
|
|
6980
|
+
return "m";
|
|
6981
|
+
}
|
|
6982
|
+
if (person?.isFemale?.()) {
|
|
6983
|
+
return "f";
|
|
6944
6984
|
}
|
|
6985
|
+
return "n";
|
|
6986
|
+
};
|
|
6987
|
+
var pick2 = (sex, male, female, neutral) => {
|
|
6988
|
+
if (sex === "m") {
|
|
6989
|
+
return male;
|
|
6990
|
+
}
|
|
6991
|
+
if (sex === "f") {
|
|
6992
|
+
return female;
|
|
6993
|
+
}
|
|
6994
|
+
return neutral;
|
|
6995
|
+
};
|
|
6996
|
+
var arriere = (count) => count > 0 ? "arri\xE8re-".repeat(count) : "";
|
|
6997
|
+
var frenchOrdinal = (n) => n === 1 ? "1er" : `${n}e`;
|
|
6998
|
+
var isFeminineRelation = (relation) => /mère|fille|sœur|tante|nièce|cousine|épouse/.test(relation);
|
|
6999
|
+
var ofSpousePrep = (spouseType) => {
|
|
7000
|
+
if (spouseType === "\xE9pouse") {
|
|
7001
|
+
return "de l'";
|
|
7002
|
+
}
|
|
7003
|
+
return "du ";
|
|
7004
|
+
};
|
|
7005
|
+
var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
6945
7006
|
indirect() {
|
|
6946
7007
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
6947
7008
|
if (degree > 0) {
|
|
6948
7009
|
degree = degree - 1;
|
|
6949
7010
|
}
|
|
6950
|
-
|
|
6951
|
-
|
|
7011
|
+
const cousin = pick2(
|
|
7012
|
+
sexOf2(this.personN),
|
|
7013
|
+
"cousin",
|
|
7014
|
+
"cousine",
|
|
7015
|
+
"cousin/cousine"
|
|
7016
|
+
);
|
|
7017
|
+
if (degree <= 1) {
|
|
7018
|
+
return cousin;
|
|
6952
7019
|
}
|
|
6953
|
-
return
|
|
7020
|
+
return `${cousin} au ${frenchOrdinal(degree)} degr\xE9`;
|
|
6954
7021
|
}
|
|
6955
7022
|
removal() {
|
|
6956
7023
|
const level = this.pathN?.level ?? 0;
|
|
@@ -6961,56 +7028,57 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
6961
7028
|
if (!degree) {
|
|
6962
7029
|
return level < 0 ? this.nibling() : this.auncle();
|
|
6963
7030
|
}
|
|
6964
|
-
return
|
|
7031
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 \xE9loign\xE9`;
|
|
6965
7032
|
}
|
|
6966
7033
|
auncle() {
|
|
6967
|
-
const
|
|
6968
|
-
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
return `${prefix}tante`;
|
|
7034
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7035
|
+
const sex = sexOf2(this.personN);
|
|
7036
|
+
const base = pick2(sex, "oncle", "tante", "oncle/tante");
|
|
7037
|
+
if (level <= 1) {
|
|
7038
|
+
return base;
|
|
6973
7039
|
}
|
|
6974
|
-
|
|
7040
|
+
const grands = pick2(
|
|
7041
|
+
sex,
|
|
7042
|
+
"grand-oncle",
|
|
7043
|
+
"grand-tante",
|
|
7044
|
+
"grand-oncle/tante"
|
|
7045
|
+
);
|
|
7046
|
+
return `${arriere(level - 2)}${grands}`;
|
|
6975
7047
|
}
|
|
6976
7048
|
nibling() {
|
|
6977
|
-
const
|
|
6978
|
-
|
|
6979
|
-
|
|
6980
|
-
|
|
6981
|
-
if (this.personN?.isFemale()) {
|
|
6982
|
-
return `${prefix}ni\xE8ce`;
|
|
7049
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7050
|
+
const sex = sexOf2(this.personN);
|
|
7051
|
+
if (level <= 1) {
|
|
7052
|
+
return pick2(sex, "neveu", "ni\xE8ce", "neveu/ni\xE8ce");
|
|
6983
7053
|
}
|
|
6984
|
-
|
|
7054
|
+
const grands = pick2(
|
|
7055
|
+
sex,
|
|
7056
|
+
"grand-neveu",
|
|
7057
|
+
"grande-ni\xE8ce",
|
|
7058
|
+
"grand-neveu/grande-ni\xE8ce"
|
|
7059
|
+
);
|
|
7060
|
+
return `${arriere(level - 2)}${grands}`;
|
|
6985
7061
|
}
|
|
6986
7062
|
parent() {
|
|
6987
|
-
const
|
|
6988
|
-
|
|
6989
|
-
|
|
6990
|
-
|
|
6991
|
-
if (this.personN?.isFemale()) {
|
|
6992
|
-
return `${prefix}m\xE8re`;
|
|
7063
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7064
|
+
const sex = sexOf2(this.personN);
|
|
7065
|
+
if (level <= 1) {
|
|
7066
|
+
return pick2(sex, "p\xE8re", "m\xE8re", "parent");
|
|
6993
7067
|
}
|
|
6994
|
-
|
|
7068
|
+
const grands = pick2(sex, "grand-p\xE8re", "grand-m\xE8re", "grand-parent");
|
|
7069
|
+
return `${arriere(level - 2)}${grands}`;
|
|
6995
7070
|
}
|
|
6996
7071
|
child() {
|
|
6997
|
-
const
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
|
|
7001
|
-
if (this.personN?.isFemale()) {
|
|
7002
|
-
return `${prefix}fille`;
|
|
7072
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7073
|
+
const sex = sexOf2(this.personN);
|
|
7074
|
+
if (level <= 1) {
|
|
7075
|
+
return pick2(sex, "fils", "fille", "enfant");
|
|
7003
7076
|
}
|
|
7004
|
-
|
|
7077
|
+
const petits = pick2(sex, "petit-fils", "petite-fille", "petit-enfant");
|
|
7078
|
+
return `${arriere(level - 2)}${petits}`;
|
|
7005
7079
|
}
|
|
7006
7080
|
sibling() {
|
|
7007
|
-
|
|
7008
|
-
return "fr\xE8re";
|
|
7009
|
-
}
|
|
7010
|
-
if (this.personN?.isFemale()) {
|
|
7011
|
-
return "s\u0153ur";
|
|
7012
|
-
}
|
|
7013
|
-
return "fr\xE8re/s\u0153ur";
|
|
7081
|
+
return pick2(sexOf2(this.personN), "fr\xE8re", "s\u0153ur", "fr\xE8re/s\u0153ur");
|
|
7014
7082
|
}
|
|
7015
7083
|
halfBlood(relation) {
|
|
7016
7084
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7019,45 +7087,35 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
7019
7087
|
return `demi-${relation}`;
|
|
7020
7088
|
}
|
|
7021
7089
|
spouse() {
|
|
7022
|
-
|
|
7023
|
-
return "mari";
|
|
7024
|
-
}
|
|
7025
|
-
if (this.personN?.isFemale()) {
|
|
7026
|
-
return "\xE9pouse";
|
|
7027
|
-
}
|
|
7028
|
-
return "conjoint";
|
|
7090
|
+
return pick2(sexOf2(this.personN), "mari", "\xE9pouse", "conjoint");
|
|
7029
7091
|
}
|
|
7030
7092
|
ofSpouse(relation) {
|
|
7031
7093
|
if (!relation) {
|
|
7032
7094
|
return "";
|
|
7033
7095
|
}
|
|
7034
|
-
const
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
}
|
|
7042
|
-
return `${relation} du ${spouseType}`;
|
|
7096
|
+
const spouseType = pick2(
|
|
7097
|
+
sexOf2(this.path?.[1].indi),
|
|
7098
|
+
"mari",
|
|
7099
|
+
"\xE9pouse",
|
|
7100
|
+
"conjoint"
|
|
7101
|
+
);
|
|
7102
|
+
return `${relation} ${ofSpousePrep(spouseType)}${spouseType}`;
|
|
7043
7103
|
}
|
|
7044
7104
|
spouseOf(relation) {
|
|
7045
7105
|
if (!relation) {
|
|
7046
7106
|
return "";
|
|
7047
7107
|
}
|
|
7048
|
-
const
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7054
|
-
spouseType = "\xE9pouse";
|
|
7055
|
-
}
|
|
7108
|
+
const spouseType = pick2(
|
|
7109
|
+
sexOf2(this.path?.[this.path.length - 1].indi),
|
|
7110
|
+
"mari",
|
|
7111
|
+
"\xE9pouse",
|
|
7112
|
+
"conjoint"
|
|
7113
|
+
);
|
|
7056
7114
|
return `${spouseType} de ${relation}`;
|
|
7057
7115
|
}
|
|
7058
7116
|
of(relation) {
|
|
7059
7117
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
7060
|
-
nameOrder:
|
|
7118
|
+
nameOrder: this.nameOrder
|
|
7061
7119
|
});
|
|
7062
7120
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
7063
7121
|
if (this.displayName === "none") {
|
|
@@ -7073,6 +7131,9 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
7073
7131
|
if (relation.includes(" du ") || relation.includes(" de ")) {
|
|
7074
7132
|
return relation.replace(/ (du|de) /, ` $1 ${name} `);
|
|
7075
7133
|
}
|
|
7134
|
+
if (relation.includes(" de l'")) {
|
|
7135
|
+
return relation.replace(" de l'", ` de ${name} l'`);
|
|
7136
|
+
}
|
|
7076
7137
|
return `${relation} de ${name}`;
|
|
7077
7138
|
}
|
|
7078
7139
|
inLaw(relation) {
|
|
@@ -7101,50 +7162,118 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
7101
7162
|
if (!relation || !this.pathN?.relation) {
|
|
7102
7163
|
return relation ?? "";
|
|
7103
7164
|
}
|
|
7104
|
-
|
|
7165
|
+
const kind = parentRelationsFr[this.pathN.relation];
|
|
7166
|
+
if (!kind) {
|
|
7167
|
+
return relation;
|
|
7168
|
+
}
|
|
7169
|
+
if (kind === "step") {
|
|
7170
|
+
return `${isFeminineRelation(relation) ? "belle-" : "beau-"}${relation}`;
|
|
7171
|
+
}
|
|
7172
|
+
if (kind === "adopted") {
|
|
7173
|
+
return `${relation} ${isFeminineRelation(relation) ? "adoptive" : "adoptif"}`;
|
|
7174
|
+
}
|
|
7175
|
+
if (kind === "foster") {
|
|
7176
|
+
return `${relation} d'accueil`;
|
|
7177
|
+
}
|
|
7178
|
+
return relation;
|
|
7105
7179
|
}
|
|
7106
7180
|
};
|
|
7107
7181
|
|
|
7108
7182
|
// src/kinship-translator/patterns.es.ts
|
|
7183
|
+
var parentRelationsEs = {
|
|
7184
|
+
step: {
|
|
7185
|
+
padre: "padrastro",
|
|
7186
|
+
madre: "madrastra",
|
|
7187
|
+
hijo: "hijastro",
|
|
7188
|
+
hija: "hijastra",
|
|
7189
|
+
hermano: "hermanastro",
|
|
7190
|
+
hermana: "hermanastra",
|
|
7191
|
+
abuelo: "abuelastro",
|
|
7192
|
+
abuela: "abuelastra"
|
|
7193
|
+
}
|
|
7194
|
+
};
|
|
7109
7195
|
var InLawsEs = {
|
|
7110
7196
|
"c\xF3nyuge de (hijo/hija|hija|hijo)": "yerno/nuera",
|
|
7111
7197
|
"esposa de (hijo/hija|hija|hijo)": "nuera",
|
|
7112
7198
|
"esposo de (hijo/hija|hija|hijo)": "yerno",
|
|
7113
|
-
"madre del
|
|
7114
|
-
"padre del
|
|
7115
|
-
"padre/madre del
|
|
7199
|
+
"madre (del c\xF3nyuge|del esposo|de la esposa)": "suegra",
|
|
7200
|
+
"padre (del c\xF3nyuge|del esposo|de la esposa)": "suegro",
|
|
7201
|
+
"padre/madre (del c\xF3nyuge|del esposo|de la esposa)": "suegro/suegra",
|
|
7116
7202
|
"esposa de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ada",
|
|
7117
7203
|
"esposo de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado",
|
|
7118
7204
|
"c\xF3nyuge de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado/cu\xF1ada",
|
|
7119
|
-
"(medio |media |medio/a )?hermana del
|
|
7120
|
-
"(medio |media |medio/a )?hermano del
|
|
7121
|
-
"(medio |media |medio/a )?hermano/hermana del
|
|
7205
|
+
"(medio |media |medio/a )?hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ada",
|
|
7206
|
+
"(medio |media |medio/a )?hermano (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado",
|
|
7207
|
+
"(medio |media |medio/a )?hermano/hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado/cu\xF1ada"
|
|
7122
7208
|
};
|
|
7123
7209
|
|
|
7124
7210
|
// src/kinship-translator/kinship-translator.es.ts
|
|
7125
|
-
var
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
if (level <= 1) {
|
|
7129
|
-
return "";
|
|
7130
|
-
}
|
|
7131
|
-
if (level === 2) {
|
|
7132
|
-
return "bisabuel";
|
|
7133
|
-
}
|
|
7134
|
-
if (level === 3) {
|
|
7135
|
-
return "tatarabuel";
|
|
7136
|
-
}
|
|
7137
|
-
return `t\xE1tara${level - 2}-abuel`;
|
|
7211
|
+
var sexOf3 = (person) => {
|
|
7212
|
+
if (person?.isMale?.()) {
|
|
7213
|
+
return "m";
|
|
7138
7214
|
}
|
|
7215
|
+
if (person?.isFemale?.()) {
|
|
7216
|
+
return "f";
|
|
7217
|
+
}
|
|
7218
|
+
return "n";
|
|
7219
|
+
};
|
|
7220
|
+
var pick3 = (sex, male, female, neutral) => {
|
|
7221
|
+
if (sex === "m") {
|
|
7222
|
+
return male;
|
|
7223
|
+
}
|
|
7224
|
+
if (sex === "f") {
|
|
7225
|
+
return female;
|
|
7226
|
+
}
|
|
7227
|
+
return neutral;
|
|
7228
|
+
};
|
|
7229
|
+
var SPANISH_ORDINALS_M = [
|
|
7230
|
+
"",
|
|
7231
|
+
"",
|
|
7232
|
+
"segundo",
|
|
7233
|
+
"tercero",
|
|
7234
|
+
"cuarto",
|
|
7235
|
+
"quinto",
|
|
7236
|
+
"sexto",
|
|
7237
|
+
"s\xE9ptimo",
|
|
7238
|
+
"octavo",
|
|
7239
|
+
"noveno",
|
|
7240
|
+
"d\xE9cimo"
|
|
7241
|
+
];
|
|
7242
|
+
var SPANISH_ORDINALS_F = [
|
|
7243
|
+
"",
|
|
7244
|
+
"",
|
|
7245
|
+
"segunda",
|
|
7246
|
+
"tercera",
|
|
7247
|
+
"cuarta",
|
|
7248
|
+
"quinta",
|
|
7249
|
+
"sexta",
|
|
7250
|
+
"s\xE9ptima",
|
|
7251
|
+
"octava",
|
|
7252
|
+
"novena",
|
|
7253
|
+
"d\xE9cima"
|
|
7254
|
+
];
|
|
7255
|
+
var spanishOrdinal = (n, sex) => {
|
|
7256
|
+
const list = sex === "f" ? SPANISH_ORDINALS_F : SPANISH_ORDINALS_M;
|
|
7257
|
+
return list[n] ?? `${n}.\xBA`;
|
|
7258
|
+
};
|
|
7259
|
+
var ofSpousePrep2 = (spouseType) => {
|
|
7260
|
+
if (spouseType === "esposa") {
|
|
7261
|
+
return "de la ";
|
|
7262
|
+
}
|
|
7263
|
+
return "del ";
|
|
7264
|
+
};
|
|
7265
|
+
var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
7139
7266
|
indirect() {
|
|
7140
7267
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
7141
7268
|
if (degree > 0) {
|
|
7142
7269
|
degree = degree - 1;
|
|
7143
7270
|
}
|
|
7144
|
-
|
|
7145
|
-
|
|
7271
|
+
const sex = sexOf3(this.personN);
|
|
7272
|
+
const cousin = pick3(sex, "primo", "prima", "primo/prima");
|
|
7273
|
+
if (degree <= 1) {
|
|
7274
|
+
return cousin;
|
|
7146
7275
|
}
|
|
7147
|
-
return
|
|
7276
|
+
return `${cousin} ${spanishOrdinal(degree, sex)}`;
|
|
7148
7277
|
}
|
|
7149
7278
|
removal() {
|
|
7150
7279
|
const level = this.pathN?.level ?? 0;
|
|
@@ -7155,56 +7284,133 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
7155
7284
|
if (!degree) {
|
|
7156
7285
|
return level < 0 ? this.nibling() : this.auncle();
|
|
7157
7286
|
}
|
|
7158
|
-
return
|
|
7287
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 separado`;
|
|
7159
7288
|
}
|
|
7160
7289
|
auncle() {
|
|
7161
|
-
const
|
|
7162
|
-
|
|
7163
|
-
|
|
7290
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7291
|
+
const sex = sexOf3(this.personN);
|
|
7292
|
+
if (level <= 1) {
|
|
7293
|
+
return pick3(sex, "t\xEDo", "t\xEDa", "t\xEDo/t\xEDa");
|
|
7164
7294
|
}
|
|
7165
|
-
if (
|
|
7166
|
-
return
|
|
7295
|
+
if (level === 2) {
|
|
7296
|
+
return pick3(sex, "t\xEDo abuelo", "t\xEDa abuela", "t\xEDo/t\xEDa abuelo");
|
|
7297
|
+
}
|
|
7298
|
+
if (level === 3) {
|
|
7299
|
+
return pick3(
|
|
7300
|
+
sex,
|
|
7301
|
+
"t\xEDo bisabuelo",
|
|
7302
|
+
"t\xEDa bisabuela",
|
|
7303
|
+
"t\xEDo/t\xEDa bisabuelo"
|
|
7304
|
+
);
|
|
7167
7305
|
}
|
|
7168
|
-
return
|
|
7306
|
+
return pick3(
|
|
7307
|
+
sex,
|
|
7308
|
+
`t\xEDo abuelo (${level - 1}.\xBA)`,
|
|
7309
|
+
`t\xEDa abuela (${level - 1}.\xAA)`,
|
|
7310
|
+
`t\xEDo/t\xEDa abuelo (${level - 1}.\xBA)`
|
|
7311
|
+
);
|
|
7169
7312
|
}
|
|
7170
7313
|
nibling() {
|
|
7171
|
-
const
|
|
7172
|
-
|
|
7173
|
-
|
|
7314
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7315
|
+
const sex = sexOf3(this.personN);
|
|
7316
|
+
if (level <= 1) {
|
|
7317
|
+
return pick3(sex, "sobrino", "sobrina", "sobrino/sobrina");
|
|
7174
7318
|
}
|
|
7175
|
-
if (
|
|
7176
|
-
return
|
|
7319
|
+
if (level === 2) {
|
|
7320
|
+
return pick3(
|
|
7321
|
+
sex,
|
|
7322
|
+
"sobrino nieto",
|
|
7323
|
+
"sobrina nieta",
|
|
7324
|
+
"sobrino/sobrina nieto"
|
|
7325
|
+
);
|
|
7326
|
+
}
|
|
7327
|
+
if (level === 3) {
|
|
7328
|
+
return pick3(
|
|
7329
|
+
sex,
|
|
7330
|
+
"sobrino bisnieto",
|
|
7331
|
+
"sobrina bisnieta",
|
|
7332
|
+
"sobrino/sobrina bisnieto"
|
|
7333
|
+
);
|
|
7177
7334
|
}
|
|
7178
|
-
return
|
|
7335
|
+
return pick3(
|
|
7336
|
+
sex,
|
|
7337
|
+
`sobrino nieto (${level - 1}.\xBA)`,
|
|
7338
|
+
`sobrina nieta (${level - 1}.\xAA)`,
|
|
7339
|
+
`sobrino/sobrina nieto (${level - 1}.\xBA)`
|
|
7340
|
+
);
|
|
7179
7341
|
}
|
|
7180
7342
|
parent() {
|
|
7181
|
-
const
|
|
7182
|
-
|
|
7183
|
-
|
|
7343
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7344
|
+
const sex = sexOf3(this.personN);
|
|
7345
|
+
if (level <= 1) {
|
|
7346
|
+
return pick3(sex, "padre", "madre", "padre/madre");
|
|
7184
7347
|
}
|
|
7185
|
-
if (
|
|
7186
|
-
return
|
|
7348
|
+
if (level === 2) {
|
|
7349
|
+
return pick3(sex, "abuelo", "abuela", "abuelo/abuela");
|
|
7350
|
+
}
|
|
7351
|
+
if (level === 3) {
|
|
7352
|
+
return pick3(sex, "bisabuelo", "bisabuela", "bisabuelo/bisabuela");
|
|
7353
|
+
}
|
|
7354
|
+
if (level === 4) {
|
|
7355
|
+
return pick3(
|
|
7356
|
+
sex,
|
|
7357
|
+
"tatarabuelo",
|
|
7358
|
+
"tatarabuela",
|
|
7359
|
+
"tatarabuelo/tatarabuela"
|
|
7360
|
+
);
|
|
7361
|
+
}
|
|
7362
|
+
if (level === 5) {
|
|
7363
|
+
return pick3(
|
|
7364
|
+
sex,
|
|
7365
|
+
"trastatarabuelo",
|
|
7366
|
+
"trastatarabuela",
|
|
7367
|
+
"trastatarabuelo/trastatarabuela"
|
|
7368
|
+
);
|
|
7187
7369
|
}
|
|
7188
|
-
return
|
|
7370
|
+
return pick3(
|
|
7371
|
+
sex,
|
|
7372
|
+
`abuelo (${level}.\xBA)`,
|
|
7373
|
+
`abuela (${level}.\xAA)`,
|
|
7374
|
+
`abuelo/abuela (${level}.\xBA)`
|
|
7375
|
+
);
|
|
7189
7376
|
}
|
|
7190
7377
|
child() {
|
|
7191
|
-
const
|
|
7192
|
-
|
|
7193
|
-
|
|
7378
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7379
|
+
const sex = sexOf3(this.personN);
|
|
7380
|
+
if (level <= 1) {
|
|
7381
|
+
return pick3(sex, "hijo", "hija", "hijo/hija");
|
|
7194
7382
|
}
|
|
7195
|
-
if (
|
|
7196
|
-
return
|
|
7383
|
+
if (level === 2) {
|
|
7384
|
+
return pick3(sex, "nieto", "nieta", "nieto/nieta");
|
|
7197
7385
|
}
|
|
7198
|
-
|
|
7199
|
-
|
|
7200
|
-
sibling() {
|
|
7201
|
-
if (this.personN?.isMale()) {
|
|
7202
|
-
return "hermano";
|
|
7386
|
+
if (level === 3) {
|
|
7387
|
+
return pick3(sex, "bisnieto", "bisnieta", "bisnieto/bisnieta");
|
|
7203
7388
|
}
|
|
7204
|
-
if (
|
|
7205
|
-
return
|
|
7389
|
+
if (level === 4) {
|
|
7390
|
+
return pick3(
|
|
7391
|
+
sex,
|
|
7392
|
+
"tataranieto",
|
|
7393
|
+
"tataranieta",
|
|
7394
|
+
"tataranieto/tataranieta"
|
|
7395
|
+
);
|
|
7396
|
+
}
|
|
7397
|
+
if (level === 5) {
|
|
7398
|
+
return pick3(
|
|
7399
|
+
sex,
|
|
7400
|
+
"trastataranieto",
|
|
7401
|
+
"trastataranieta",
|
|
7402
|
+
"trastataranieto/trastataranieta"
|
|
7403
|
+
);
|
|
7206
7404
|
}
|
|
7207
|
-
return
|
|
7405
|
+
return pick3(
|
|
7406
|
+
sex,
|
|
7407
|
+
`nieto (${level}.\xBA)`,
|
|
7408
|
+
`nieta (${level}.\xAA)`,
|
|
7409
|
+
`nieto/nieta (${level}.\xBA)`
|
|
7410
|
+
);
|
|
7411
|
+
}
|
|
7412
|
+
sibling() {
|
|
7413
|
+
return pick3(sexOf3(this.personN), "hermano", "hermana", "hermano/hermana");
|
|
7208
7414
|
}
|
|
7209
7415
|
halfBlood(relation) {
|
|
7210
7416
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7219,45 +7425,35 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
7219
7425
|
return `medio/a ${relation}`;
|
|
7220
7426
|
}
|
|
7221
7427
|
spouse() {
|
|
7222
|
-
|
|
7223
|
-
return "esposo";
|
|
7224
|
-
}
|
|
7225
|
-
if (this.personN?.isFemale()) {
|
|
7226
|
-
return "esposa";
|
|
7227
|
-
}
|
|
7228
|
-
return "c\xF3nyuge";
|
|
7428
|
+
return pick3(sexOf3(this.personN), "esposo", "esposa", "c\xF3nyuge");
|
|
7229
7429
|
}
|
|
7230
7430
|
ofSpouse(relation) {
|
|
7231
7431
|
if (!relation) {
|
|
7232
7432
|
return "";
|
|
7233
7433
|
}
|
|
7234
|
-
const
|
|
7235
|
-
|
|
7236
|
-
|
|
7237
|
-
|
|
7238
|
-
|
|
7239
|
-
|
|
7240
|
-
|
|
7241
|
-
}
|
|
7242
|
-
return `${relation} del ${spouseType}`;
|
|
7434
|
+
const spouseType = pick3(
|
|
7435
|
+
sexOf3(this.path?.[1].indi),
|
|
7436
|
+
"esposo",
|
|
7437
|
+
"esposa",
|
|
7438
|
+
"c\xF3nyuge"
|
|
7439
|
+
);
|
|
7440
|
+
return `${relation} ${ofSpousePrep2(spouseType)}${spouseType}`;
|
|
7243
7441
|
}
|
|
7244
7442
|
spouseOf(relation) {
|
|
7245
7443
|
if (!relation) {
|
|
7246
7444
|
return "";
|
|
7247
7445
|
}
|
|
7248
|
-
const
|
|
7249
|
-
|
|
7250
|
-
|
|
7251
|
-
|
|
7252
|
-
|
|
7253
|
-
|
|
7254
|
-
spouseType = "esposa";
|
|
7255
|
-
}
|
|
7446
|
+
const spouseType = pick3(
|
|
7447
|
+
sexOf3(this.path?.[this.path.length - 1].indi),
|
|
7448
|
+
"esposo",
|
|
7449
|
+
"esposa",
|
|
7450
|
+
"c\xF3nyuge"
|
|
7451
|
+
);
|
|
7256
7452
|
return `${spouseType} de ${relation}`;
|
|
7257
7453
|
}
|
|
7258
7454
|
of(relation) {
|
|
7259
7455
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
7260
|
-
nameOrder:
|
|
7456
|
+
nameOrder: this.nameOrder
|
|
7261
7457
|
});
|
|
7262
7458
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
7263
7459
|
if (this.displayName === "none") {
|
|
@@ -7270,8 +7466,8 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
7270
7466
|
if (!name || !relation) {
|
|
7271
7467
|
return relation ?? "";
|
|
7272
7468
|
}
|
|
7273
|
-
if (relation.includes(" del ") || relation.includes(" de ")) {
|
|
7274
|
-
return relation.replace(/ (del|de) /, ` $1 ${name} `);
|
|
7469
|
+
if (relation.includes(" del ") || relation.includes(" de la ") || relation.includes(" de ")) {
|
|
7470
|
+
return relation.replace(/ (del|de la|de) /, ` $1 ${name} `);
|
|
7275
7471
|
}
|
|
7276
7472
|
return `${relation} de ${name}`;
|
|
7277
7473
|
}
|
|
@@ -7301,7 +7497,20 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
7301
7497
|
if (!relation || !this.pathN?.relation) {
|
|
7302
7498
|
return relation ?? "";
|
|
7303
7499
|
}
|
|
7304
|
-
|
|
7500
|
+
const mapped = parentRelationsEs[this.pathN.relation]?.[relation];
|
|
7501
|
+
if (mapped) {
|
|
7502
|
+
return mapped;
|
|
7503
|
+
}
|
|
7504
|
+
if (this.pathN.relation === "step") {
|
|
7505
|
+
return `${relation} pol\xEDtico`;
|
|
7506
|
+
}
|
|
7507
|
+
if (this.pathN.relation === "adopted") {
|
|
7508
|
+
return `${relation} adoptivo`;
|
|
7509
|
+
}
|
|
7510
|
+
if (this.pathN.relation === "foster") {
|
|
7511
|
+
return `${relation} de acogida`;
|
|
7512
|
+
}
|
|
7513
|
+
return relation;
|
|
7305
7514
|
}
|
|
7306
7515
|
};
|
|
7307
7516
|
|
|
@@ -7310,15 +7519,35 @@ var InLawsRu = {
|
|
|
7310
7519
|
"\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",
|
|
7311
7520
|
"\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",
|
|
7312
7521
|
"\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
|
|
7313
|
-
"\u043C\u0430\u0442\u044C
|
|
7314
|
-
"\
|
|
7315
|
-
"\
|
|
7522
|
+
"\u043C\u0430\u0442\u044C \u0436\u0435\u043D\u044B": "\u0442\u0451\u0449\u0430",
|
|
7523
|
+
"\u043C\u0430\u0442\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
7524
|
+
"\u043C\u0430\u0442\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0451\u0449\u0430/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
7525
|
+
"\u043E\u0442\u0435\u0446 \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C",
|
|
7526
|
+
"\u043E\u0442\u0435\u0446 \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
7527
|
+
"\u043E\u0442\u0435\u0446 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
7528
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
7529
|
+
"\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",
|
|
7530
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
7316
7531
|
"\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",
|
|
7317
7532
|
"\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",
|
|
7318
7533
|
"\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",
|
|
7319
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430
|
|
7320
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\
|
|
7321
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\
|
|
7534
|
+
"(\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",
|
|
7535
|
+
"(\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",
|
|
7536
|
+
"(\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",
|
|
7537
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D",
|
|
7538
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C",
|
|
7539
|
+
"(\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",
|
|
7540
|
+
"(\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",
|
|
7541
|
+
"(\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",
|
|
7542
|
+
"(\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"
|
|
7543
|
+
};
|
|
7544
|
+
var parentRelationsRu = {
|
|
7545
|
+
step: {
|
|
7546
|
+
\u043E\u0442\u0435\u0446: "\u043E\u0442\u0447\u0438\u043C",
|
|
7547
|
+
\u043C\u0430\u0442\u044C: "\u043C\u0430\u0447\u0435\u0445\u0430",
|
|
7548
|
+
\u0441\u044B\u043D: "\u043F\u0430\u0441\u044B\u043D\u043E\u043A",
|
|
7549
|
+
\u0434\u043E\u0447\u044C: "\u043F\u0430\u0434\u0447\u0435\u0440\u0438\u0446\u0430"
|
|
7550
|
+
}
|
|
7322
7551
|
};
|
|
7323
7552
|
|
|
7324
7553
|
// src/kinship-translator/kinship-translator.ru.ts
|
|
@@ -7349,7 +7578,7 @@ var cousinWord = (degree, sex) => {
|
|
|
7349
7578
|
return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
|
|
7350
7579
|
};
|
|
7351
7580
|
var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
|
|
7352
|
-
var
|
|
7581
|
+
var sexOf4 = (person) => {
|
|
7353
7582
|
if (person?.isMale?.()) {
|
|
7354
7583
|
return "m";
|
|
7355
7584
|
}
|
|
@@ -7364,7 +7593,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7364
7593
|
if (degree > 0) {
|
|
7365
7594
|
degree = degree - 1;
|
|
7366
7595
|
}
|
|
7367
|
-
return cousinWord(degree,
|
|
7596
|
+
return cousinWord(degree, sexOf4(this.personN));
|
|
7368
7597
|
}
|
|
7369
7598
|
removal() {
|
|
7370
7599
|
const level = this.pathN?.level ?? 0;
|
|
@@ -7376,35 +7605,53 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7376
7605
|
return level < 0 ? this.nibling() : this.auncle();
|
|
7377
7606
|
}
|
|
7378
7607
|
const removed = Math.abs(level);
|
|
7379
|
-
return `${cousinWord(degree,
|
|
7608
|
+
return `${cousinWord(degree, sexOf4(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
|
|
7380
7609
|
}
|
|
7381
7610
|
auncle() {
|
|
7382
7611
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7383
|
-
const
|
|
7384
|
-
|
|
7612
|
+
const sex = sexOf4(this.personN);
|
|
7613
|
+
if (level <= 1) {
|
|
7614
|
+
if (sex === "m") {
|
|
7615
|
+
return "\u0434\u044F\u0434\u044F";
|
|
7616
|
+
}
|
|
7617
|
+
if (sex === "f") {
|
|
7618
|
+
return "\u0442\u0451\u0442\u044F";
|
|
7619
|
+
}
|
|
7620
|
+
return "\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F";
|
|
7621
|
+
}
|
|
7622
|
+
const pra = praRepeat(level - 2);
|
|
7385
7623
|
if (sex === "m") {
|
|
7386
|
-
return
|
|
7624
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434`;
|
|
7387
7625
|
}
|
|
7388
7626
|
if (sex === "f") {
|
|
7389
|
-
return
|
|
7627
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u0430\u044F ${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
7390
7628
|
}
|
|
7391
|
-
return
|
|
7629
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
7392
7630
|
}
|
|
7393
7631
|
nibling() {
|
|
7394
7632
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7395
|
-
const
|
|
7396
|
-
|
|
7633
|
+
const sex = sexOf4(this.personN);
|
|
7634
|
+
if (level <= 1) {
|
|
7635
|
+
if (sex === "m") {
|
|
7636
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A";
|
|
7637
|
+
}
|
|
7638
|
+
if (sex === "f") {
|
|
7639
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
7640
|
+
}
|
|
7641
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
7642
|
+
}
|
|
7643
|
+
const pra = praRepeat(level - 2);
|
|
7397
7644
|
if (sex === "m") {
|
|
7398
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
7645
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
7399
7646
|
}
|
|
7400
7647
|
if (sex === "f") {
|
|
7401
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
7648
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u0430\u044F \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
7402
7649
|
}
|
|
7403
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
7650
|
+
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`;
|
|
7404
7651
|
}
|
|
7405
7652
|
parent() {
|
|
7406
7653
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7407
|
-
const sex =
|
|
7654
|
+
const sex = sexOf4(this.personN);
|
|
7408
7655
|
if (level <= 1) {
|
|
7409
7656
|
if (sex === "m") {
|
|
7410
7657
|
return "\u043E\u0442\u0435\u0446";
|
|
@@ -7434,7 +7681,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7434
7681
|
}
|
|
7435
7682
|
child() {
|
|
7436
7683
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7437
|
-
const sex =
|
|
7684
|
+
const sex = sexOf4(this.personN);
|
|
7438
7685
|
if (level <= 1) {
|
|
7439
7686
|
if (sex === "m") {
|
|
7440
7687
|
return "\u0441\u044B\u043D";
|
|
@@ -7463,14 +7710,14 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7463
7710
|
return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
|
|
7464
7711
|
}
|
|
7465
7712
|
sibling() {
|
|
7466
|
-
const sex =
|
|
7713
|
+
const sex = sexOf4(this.personN);
|
|
7467
7714
|
if (sex === "m") {
|
|
7468
7715
|
return "\u0431\u0440\u0430\u0442";
|
|
7469
7716
|
}
|
|
7470
7717
|
if (sex === "f") {
|
|
7471
7718
|
return "\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
7472
7719
|
}
|
|
7473
|
-
return "\u0441\
|
|
7720
|
+
return "\u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
7474
7721
|
}
|
|
7475
7722
|
halfBlood(relation) {
|
|
7476
7723
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7484,7 +7731,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7484
7731
|
return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
|
|
7485
7732
|
}
|
|
7486
7733
|
spouse() {
|
|
7487
|
-
const sex =
|
|
7734
|
+
const sex = sexOf4(this.personN);
|
|
7488
7735
|
if (sex === "m") {
|
|
7489
7736
|
return "\u043C\u0443\u0436";
|
|
7490
7737
|
}
|
|
@@ -7498,7 +7745,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7498
7745
|
return "";
|
|
7499
7746
|
}
|
|
7500
7747
|
const spouse = this.path?.[1].indi;
|
|
7501
|
-
const sex =
|
|
7748
|
+
const sex = sexOf4(spouse);
|
|
7502
7749
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
7503
7750
|
return `${relation} ${toGenitive(spouseType)}`;
|
|
7504
7751
|
}
|
|
@@ -7507,13 +7754,13 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7507
7754
|
return "";
|
|
7508
7755
|
}
|
|
7509
7756
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
7510
|
-
const sex =
|
|
7757
|
+
const sex = sexOf4(spouse);
|
|
7511
7758
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
7512
7759
|
return `${spouseType} ${toGenitive(relation)}`;
|
|
7513
7760
|
}
|
|
7514
7761
|
of(relation) {
|
|
7515
7762
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
7516
|
-
nameOrder:
|
|
7763
|
+
nameOrder: this.nameOrder
|
|
7517
7764
|
});
|
|
7518
7765
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
7519
7766
|
if (this.displayName === "none") {
|
|
@@ -7544,7 +7791,22 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
7544
7791
|
if (!relation || !this.pathN?.relation) {
|
|
7545
7792
|
return relation ?? "";
|
|
7546
7793
|
}
|
|
7547
|
-
|
|
7794
|
+
const mapped = parentRelationsRu[this.pathN.relation]?.[relation];
|
|
7795
|
+
if (mapped) {
|
|
7796
|
+
return mapped;
|
|
7797
|
+
}
|
|
7798
|
+
if (this.pathN.relation === "step") {
|
|
7799
|
+
return `\u043D\u0435\u0440\u043E\u0434\u043D\u043E\u0439 ${relation}`;
|
|
7800
|
+
}
|
|
7801
|
+
if (this.pathN.relation === "adopted") {
|
|
7802
|
+
return /сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
|
|
7803
|
+
relation
|
|
7804
|
+
) ? `\u043F\u0440\u0438\u0451\u043C\u043D\u0430\u044F ${relation}` : `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
7805
|
+
}
|
|
7806
|
+
if (this.pathN.relation === "foster") {
|
|
7807
|
+
return `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
7808
|
+
}
|
|
7809
|
+
return relation;
|
|
7548
7810
|
}
|
|
7549
7811
|
};
|
|
7550
7812
|
|
|
@@ -7568,7 +7830,7 @@ var InLawsJa = {
|
|
|
7568
7830
|
};
|
|
7569
7831
|
|
|
7570
7832
|
// src/kinship-translator/kinship-translator.ja.ts
|
|
7571
|
-
var
|
|
7833
|
+
var sexOf5 = (person) => {
|
|
7572
7834
|
if (person?.isMale?.()) {
|
|
7573
7835
|
return "m";
|
|
7574
7836
|
}
|
|
@@ -7577,7 +7839,7 @@ var sexOf2 = (person) => {
|
|
|
7577
7839
|
}
|
|
7578
7840
|
return "n";
|
|
7579
7841
|
};
|
|
7580
|
-
var
|
|
7842
|
+
var pick4 = (sex, male, female, neutral) => {
|
|
7581
7843
|
if (sex === "m") {
|
|
7582
7844
|
return male;
|
|
7583
7845
|
}
|
|
@@ -7590,18 +7852,18 @@ var lineal = (level, sex, kind) => {
|
|
|
7590
7852
|
const L = Math.max(1, level);
|
|
7591
7853
|
if (kind === "asc") {
|
|
7592
7854
|
if (L <= 1) {
|
|
7593
|
-
return
|
|
7855
|
+
return pick4(sex, "\u7236", "\u6BCD", "\u89AA");
|
|
7594
7856
|
}
|
|
7595
7857
|
if (L === 2) {
|
|
7596
|
-
return
|
|
7858
|
+
return pick4(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
7597
7859
|
}
|
|
7598
7860
|
if (L === 3) {
|
|
7599
|
-
return
|
|
7861
|
+
return pick4(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
7600
7862
|
}
|
|
7601
7863
|
if (L === 4) {
|
|
7602
|
-
return
|
|
7864
|
+
return pick4(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
7603
7865
|
}
|
|
7604
|
-
return
|
|
7866
|
+
return pick4(
|
|
7605
7867
|
sex,
|
|
7606
7868
|
`${L - 1}\u4E16\u306E\u7956\u7236`,
|
|
7607
7869
|
`${L - 1}\u4E16\u306E\u7956\u6BCD`,
|
|
@@ -7609,7 +7871,7 @@ var lineal = (level, sex, kind) => {
|
|
|
7609
7871
|
);
|
|
7610
7872
|
}
|
|
7611
7873
|
if (L <= 1) {
|
|
7612
|
-
return
|
|
7874
|
+
return pick4(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
|
|
7613
7875
|
}
|
|
7614
7876
|
if (L === 2) {
|
|
7615
7877
|
return "\u5B6B";
|
|
@@ -7656,52 +7918,52 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7656
7918
|
}
|
|
7657
7919
|
auncle() {
|
|
7658
7920
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7659
|
-
const sex =
|
|
7660
|
-
if (level <=
|
|
7661
|
-
return
|
|
7921
|
+
const sex = sexOf5(this.personN);
|
|
7922
|
+
if (level <= 1) {
|
|
7923
|
+
return pick4(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
|
|
7662
7924
|
}
|
|
7663
|
-
if (level ===
|
|
7664
|
-
return
|
|
7925
|
+
if (level === 2) {
|
|
7926
|
+
return pick4(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
|
|
7665
7927
|
}
|
|
7666
|
-
return
|
|
7928
|
+
return pick4(
|
|
7667
7929
|
sex,
|
|
7668
|
-
`${level -
|
|
7669
|
-
`${level -
|
|
7670
|
-
`${level -
|
|
7930
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058`,
|
|
7931
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3070`,
|
|
7932
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
|
|
7671
7933
|
);
|
|
7672
7934
|
}
|
|
7673
7935
|
nibling() {
|
|
7674
7936
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7675
|
-
const sex =
|
|
7676
|
-
if (level <=
|
|
7677
|
-
return
|
|
7937
|
+
const sex = sexOf5(this.personN);
|
|
7938
|
+
if (level <= 1) {
|
|
7939
|
+
return pick4(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
|
|
7678
7940
|
}
|
|
7679
|
-
if (level ===
|
|
7680
|
-
return
|
|
7941
|
+
if (level === 2) {
|
|
7942
|
+
return pick4(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
|
|
7681
7943
|
}
|
|
7682
|
-
return
|
|
7944
|
+
return pick4(
|
|
7683
7945
|
sex,
|
|
7684
|
-
`${level -
|
|
7685
|
-
`${level -
|
|
7686
|
-
`${level -
|
|
7946
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525`,
|
|
7947
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u59EA`,
|
|
7948
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525/\u59EA`
|
|
7687
7949
|
);
|
|
7688
7950
|
}
|
|
7689
7951
|
parent() {
|
|
7690
7952
|
return lineal(
|
|
7691
7953
|
Math.abs(this.pathN?.level ?? 0),
|
|
7692
|
-
|
|
7954
|
+
sexOf5(this.personN),
|
|
7693
7955
|
"asc"
|
|
7694
7956
|
);
|
|
7695
7957
|
}
|
|
7696
7958
|
child() {
|
|
7697
7959
|
return lineal(
|
|
7698
7960
|
Math.abs(this.pathN?.level ?? 0),
|
|
7699
|
-
|
|
7961
|
+
sexOf5(this.personN),
|
|
7700
7962
|
"desc"
|
|
7701
7963
|
);
|
|
7702
7964
|
}
|
|
7703
7965
|
sibling() {
|
|
7704
|
-
return
|
|
7966
|
+
return pick4(sexOf5(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
|
|
7705
7967
|
}
|
|
7706
7968
|
halfBlood(relation) {
|
|
7707
7969
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7710,14 +7972,14 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7710
7972
|
return `\u7570\u7236\u6BCD\u306E${relation}`;
|
|
7711
7973
|
}
|
|
7712
7974
|
spouse() {
|
|
7713
|
-
return
|
|
7975
|
+
return pick4(sexOf5(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
7714
7976
|
}
|
|
7715
7977
|
ofSpouse(relation) {
|
|
7716
7978
|
if (!relation) {
|
|
7717
7979
|
return "";
|
|
7718
7980
|
}
|
|
7719
|
-
const spouseType =
|
|
7720
|
-
|
|
7981
|
+
const spouseType = pick4(
|
|
7982
|
+
sexOf5(this.path?.[1].indi),
|
|
7721
7983
|
"\u592B",
|
|
7722
7984
|
"\u59BB",
|
|
7723
7985
|
"\u914D\u5076\u8005"
|
|
@@ -7729,12 +7991,12 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7729
7991
|
return "";
|
|
7730
7992
|
}
|
|
7731
7993
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
7732
|
-
const spouseType =
|
|
7994
|
+
const spouseType = pick4(sexOf5(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
7733
7995
|
return `${relation}\u306E${spouseType}`;
|
|
7734
7996
|
}
|
|
7735
7997
|
of(relation) {
|
|
7736
7998
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
7737
|
-
nameOrder:
|
|
7999
|
+
nameOrder: this.nameOrder
|
|
7738
8000
|
});
|
|
7739
8001
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
7740
8002
|
if (this.displayName === "none") {
|
|
@@ -7765,7 +8027,28 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
7765
8027
|
if (!relation || !this.pathN?.relation) {
|
|
7766
8028
|
return relation ?? "";
|
|
7767
8029
|
}
|
|
7768
|
-
|
|
8030
|
+
if (this.pathN.relation === "step") {
|
|
8031
|
+
if (relation === "\u7236") {
|
|
8032
|
+
return "\u7EE7\u7236";
|
|
8033
|
+
}
|
|
8034
|
+
if (relation === "\u6BCD") {
|
|
8035
|
+
return "\u7D99\u6BCD";
|
|
8036
|
+
}
|
|
8037
|
+
if (relation === "\u606F\u5B50") {
|
|
8038
|
+
return "\u7D99\u5B50";
|
|
8039
|
+
}
|
|
8040
|
+
if (relation === "\u5A18") {
|
|
8041
|
+
return "\u7D99\u5A18";
|
|
8042
|
+
}
|
|
8043
|
+
return `\u7D99${relation}`;
|
|
8044
|
+
}
|
|
8045
|
+
if (this.pathN.relation === "adopted") {
|
|
8046
|
+
return `\u990A\u5B50\u306E${relation}`;
|
|
8047
|
+
}
|
|
8048
|
+
if (this.pathN.relation === "foster") {
|
|
8049
|
+
return `\u91CC\u89AA\u306E${relation}`;
|
|
8050
|
+
}
|
|
8051
|
+
return relation;
|
|
7769
8052
|
}
|
|
7770
8053
|
};
|
|
7771
8054
|
|
|
@@ -7774,22 +8057,32 @@ var InLawsZh = {
|
|
|
7774
8057
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u914D\u5076": "\u513F\u5AB3/\u5973\u5A7F",
|
|
7775
8058
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u59BB\u5B50": "\u513F\u5AB3",
|
|
7776
8059
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u4E08\u592B": "\u5973\u5A7F",
|
|
7777
|
-
"
|
|
7778
|
-
"
|
|
7779
|
-
"(\u914D\u5076
|
|
8060
|
+
"\u59BB\u5B50\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD",
|
|
8061
|
+
"\u4E08\u592B\u7684\u6BCD\u4EB2": "\u5A46\u5A46",
|
|
8062
|
+
"(\u914D\u5076)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
|
|
8063
|
+
"\u59BB\u5B50\u7684\u7236\u4EB2": "\u5CB3\u7236",
|
|
8064
|
+
"\u4E08\u592B\u7684\u7236\u4EB2": "\u516C\u516C",
|
|
8065
|
+
"(\u914D\u5076)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
|
|
8066
|
+
"\u59BB\u5B50\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD",
|
|
8067
|
+
"\u4E08\u592B\u7684\u7236\u6BCD": "\u516C\u516C\u5A46\u5A46",
|
|
8068
|
+
"(\u914D\u5076)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
|
|
7780
8069
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u59BB\u5B50": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
7781
8070
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u4E08\u592B": "\u59D0\u592B/\u59B9\u592B",
|
|
7782
8071
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u914D\u5076": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
7783
8072
|
"(\u5F02\u7236\u6BCD\u7684)?\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59D0\u592B/\u59B9\u592B",
|
|
7784
8073
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
7785
8074
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
7786
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
7787
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
8075
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u59D0\u59B9": "\u59E8\u5B50",
|
|
8076
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u59D0\u59B9": "\u59D1\u5B50",
|
|
8077
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
|
|
8078
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u5144\u5F1F": "\u5185\u5144/\u5185\u5F1F",
|
|
8079
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4",
|
|
8080
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
|
|
7788
8081
|
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F\u59D0\u59B9": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9"
|
|
7789
8082
|
};
|
|
7790
8083
|
|
|
7791
8084
|
// src/kinship-translator/kinship-translator.zh.ts
|
|
7792
|
-
var
|
|
8085
|
+
var sexOf6 = (person) => {
|
|
7793
8086
|
if (person?.isMale?.()) {
|
|
7794
8087
|
return "m";
|
|
7795
8088
|
}
|
|
@@ -7798,7 +8091,7 @@ var sexOf3 = (person) => {
|
|
|
7798
8091
|
}
|
|
7799
8092
|
return "n";
|
|
7800
8093
|
};
|
|
7801
|
-
var
|
|
8094
|
+
var pick5 = (sex, male, female, neutral) => {
|
|
7802
8095
|
if (sex === "m") {
|
|
7803
8096
|
return male;
|
|
7804
8097
|
}
|
|
@@ -7811,41 +8104,41 @@ var lineal2 = (level, sex, kind) => {
|
|
|
7811
8104
|
const L = Math.max(1, level);
|
|
7812
8105
|
if (kind === "asc") {
|
|
7813
8106
|
if (L <= 1) {
|
|
7814
|
-
return
|
|
8107
|
+
return pick5(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
|
|
7815
8108
|
}
|
|
7816
8109
|
if (L === 2) {
|
|
7817
|
-
return
|
|
8110
|
+
return pick5(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
7818
8111
|
}
|
|
7819
8112
|
if (L === 3) {
|
|
7820
|
-
return
|
|
8113
|
+
return pick5(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
7821
8114
|
}
|
|
7822
8115
|
if (L === 4) {
|
|
7823
|
-
return
|
|
8116
|
+
return pick5(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
7824
8117
|
}
|
|
7825
|
-
return
|
|
8118
|
+
return pick5(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
|
|
7826
8119
|
}
|
|
7827
8120
|
if (L <= 1) {
|
|
7828
|
-
return
|
|
8121
|
+
return pick5(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
|
|
7829
8122
|
}
|
|
7830
8123
|
if (L === 2) {
|
|
7831
|
-
return
|
|
8124
|
+
return pick5(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
|
|
7832
8125
|
}
|
|
7833
8126
|
if (L === 3) {
|
|
7834
|
-
return
|
|
8127
|
+
return pick5(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
|
|
7835
8128
|
}
|
|
7836
8129
|
if (L === 4) {
|
|
7837
|
-
return
|
|
8130
|
+
return pick5(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
|
|
7838
8131
|
}
|
|
7839
|
-
return
|
|
8132
|
+
return pick5(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
|
|
7840
8133
|
};
|
|
7841
8134
|
var cousinPlain2 = (degree, sex) => {
|
|
7842
8135
|
if (degree <= 1) {
|
|
7843
|
-
return
|
|
8136
|
+
return pick5(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
|
|
7844
8137
|
}
|
|
7845
8138
|
if (degree === 2) {
|
|
7846
|
-
return
|
|
8139
|
+
return pick5(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
|
|
7847
8140
|
}
|
|
7848
|
-
return
|
|
8141
|
+
return pick5(
|
|
7849
8142
|
sex,
|
|
7850
8143
|
`${degree}\u4EE3\u5802\u8868\u5144\u5F1F`,
|
|
7851
8144
|
`${degree}\u4EE3\u5802\u8868\u59D0\u59B9`,
|
|
@@ -7858,7 +8151,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7858
8151
|
if (degree > 0) {
|
|
7859
8152
|
degree = degree - 1;
|
|
7860
8153
|
}
|
|
7861
|
-
return cousinPlain2(degree,
|
|
8154
|
+
return cousinPlain2(degree, sexOf6(this.personN));
|
|
7862
8155
|
}
|
|
7863
8156
|
removal() {
|
|
7864
8157
|
const level = this.pathN?.level ?? 0;
|
|
@@ -7870,56 +8163,56 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7870
8163
|
return level < 0 ? this.nibling() : this.auncle();
|
|
7871
8164
|
}
|
|
7872
8165
|
const removed = Math.abs(level);
|
|
7873
|
-
return `${cousinPlain2(degree,
|
|
8166
|
+
return `${cousinPlain2(degree, sexOf6(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
|
|
7874
8167
|
}
|
|
7875
8168
|
auncle() {
|
|
7876
8169
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7877
|
-
const sex =
|
|
7878
|
-
if (level <=
|
|
7879
|
-
return
|
|
8170
|
+
const sex = sexOf6(this.personN);
|
|
8171
|
+
if (level <= 1) {
|
|
8172
|
+
return pick5(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
|
|
7880
8173
|
}
|
|
7881
|
-
if (level ===
|
|
7882
|
-
return
|
|
8174
|
+
if (level === 2) {
|
|
8175
|
+
return pick5(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
|
|
7883
8176
|
}
|
|
7884
|
-
return
|
|
8177
|
+
return pick5(
|
|
7885
8178
|
sex,
|
|
7886
|
-
`${level -
|
|
7887
|
-
`${level -
|
|
7888
|
-
`${level -
|
|
8179
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u53D4`,
|
|
8180
|
+
`${level - 1}\u4EE3\u524D\u7684\u963F\u59E8`,
|
|
8181
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
|
|
7889
8182
|
);
|
|
7890
8183
|
}
|
|
7891
8184
|
nibling() {
|
|
7892
8185
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
7893
|
-
const sex =
|
|
7894
|
-
if (level <=
|
|
7895
|
-
return
|
|
8186
|
+
const sex = sexOf6(this.personN);
|
|
8187
|
+
if (level <= 1) {
|
|
8188
|
+
return pick5(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
|
|
7896
8189
|
}
|
|
7897
|
-
if (level ===
|
|
7898
|
-
return
|
|
8190
|
+
if (level === 2) {
|
|
8191
|
+
return pick5(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
|
|
7899
8192
|
}
|
|
7900
|
-
return
|
|
8193
|
+
return pick5(
|
|
7901
8194
|
sex,
|
|
7902
|
-
`${level -
|
|
7903
|
-
`${level -
|
|
7904
|
-
`${level -
|
|
8195
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
|
|
8196
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5973`,
|
|
8197
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
|
|
7905
8198
|
);
|
|
7906
8199
|
}
|
|
7907
8200
|
parent() {
|
|
7908
8201
|
return lineal2(
|
|
7909
8202
|
Math.abs(this.pathN?.level ?? 0),
|
|
7910
|
-
|
|
8203
|
+
sexOf6(this.personN),
|
|
7911
8204
|
"asc"
|
|
7912
8205
|
);
|
|
7913
8206
|
}
|
|
7914
8207
|
child() {
|
|
7915
8208
|
return lineal2(
|
|
7916
8209
|
Math.abs(this.pathN?.level ?? 0),
|
|
7917
|
-
|
|
8210
|
+
sexOf6(this.personN),
|
|
7918
8211
|
"desc"
|
|
7919
8212
|
);
|
|
7920
8213
|
}
|
|
7921
8214
|
sibling() {
|
|
7922
|
-
return
|
|
8215
|
+
return pick5(sexOf6(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
|
|
7923
8216
|
}
|
|
7924
8217
|
halfBlood(relation) {
|
|
7925
8218
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -7928,14 +8221,14 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7928
8221
|
return `\u5F02\u7236\u6BCD\u7684${relation}`;
|
|
7929
8222
|
}
|
|
7930
8223
|
spouse() {
|
|
7931
|
-
return
|
|
8224
|
+
return pick5(sexOf6(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
7932
8225
|
}
|
|
7933
8226
|
ofSpouse(relation) {
|
|
7934
8227
|
if (!relation) {
|
|
7935
8228
|
return "";
|
|
7936
8229
|
}
|
|
7937
|
-
const spouseType =
|
|
7938
|
-
|
|
8230
|
+
const spouseType = pick5(
|
|
8231
|
+
sexOf6(this.path?.[1].indi),
|
|
7939
8232
|
"\u4E08\u592B",
|
|
7940
8233
|
"\u59BB\u5B50",
|
|
7941
8234
|
"\u914D\u5076"
|
|
@@ -7947,12 +8240,12 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7947
8240
|
return "";
|
|
7948
8241
|
}
|
|
7949
8242
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
7950
|
-
const spouseType =
|
|
8243
|
+
const spouseType = pick5(sexOf6(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
7951
8244
|
return `${relation}\u7684${spouseType}`;
|
|
7952
8245
|
}
|
|
7953
8246
|
of(relation) {
|
|
7954
8247
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
7955
|
-
nameOrder:
|
|
8248
|
+
nameOrder: this.nameOrder
|
|
7956
8249
|
});
|
|
7957
8250
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
7958
8251
|
if (this.displayName === "none") {
|
|
@@ -7983,27 +8276,68 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
7983
8276
|
if (!relation || !this.pathN?.relation) {
|
|
7984
8277
|
return relation ?? "";
|
|
7985
8278
|
}
|
|
7986
|
-
|
|
8279
|
+
if (this.pathN.relation === "step") {
|
|
8280
|
+
if (relation === "\u7236\u4EB2") {
|
|
8281
|
+
return "\u7EE7\u7236";
|
|
8282
|
+
}
|
|
8283
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
8284
|
+
return "\u7EE7\u6BCD";
|
|
8285
|
+
}
|
|
8286
|
+
if (relation === "\u513F\u5B50") {
|
|
8287
|
+
return "\u7EE7\u5B50";
|
|
8288
|
+
}
|
|
8289
|
+
if (relation === "\u5973\u513F") {
|
|
8290
|
+
return "\u7EE7\u5973";
|
|
8291
|
+
}
|
|
8292
|
+
return `\u7EE7${relation}`;
|
|
8293
|
+
}
|
|
8294
|
+
if (this.pathN.relation === "adopted") {
|
|
8295
|
+
if (relation === "\u7236\u4EB2") {
|
|
8296
|
+
return "\u517B\u7236";
|
|
8297
|
+
}
|
|
8298
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
8299
|
+
return "\u517B\u6BCD";
|
|
8300
|
+
}
|
|
8301
|
+
if (relation === "\u513F\u5B50") {
|
|
8302
|
+
return "\u517B\u5B50";
|
|
8303
|
+
}
|
|
8304
|
+
if (relation === "\u5973\u513F") {
|
|
8305
|
+
return "\u517B\u5973";
|
|
8306
|
+
}
|
|
8307
|
+
return `\u517B${relation}`;
|
|
8308
|
+
}
|
|
8309
|
+
if (this.pathN.relation === "foster") {
|
|
8310
|
+
return `\u5BC4\u517B${relation}`;
|
|
8311
|
+
}
|
|
8312
|
+
return relation;
|
|
7987
8313
|
}
|
|
7988
8314
|
};
|
|
7989
8315
|
|
|
7990
8316
|
// src/kinship-translator/kinship-translator.ts
|
|
8317
|
+
var nameOrderForLang = (lang) => lang === "hu" || lang === "ja" || lang === "zh" ? "last-first" : "first-last";
|
|
7991
8318
|
var KinshipTranslator = class {
|
|
7992
|
-
constructor(person1, person2, lang = "en", entirePath, displayName = "givenname") {
|
|
8319
|
+
constructor(person1, person2, lang = "en", entirePath, displayName = "givenname", nameOrder) {
|
|
7993
8320
|
this.displayName = displayName;
|
|
7994
8321
|
this.lang = lang;
|
|
7995
8322
|
this.entirePath = entirePath;
|
|
7996
8323
|
this.person1 = person1;
|
|
7997
8324
|
this.person2 = typeof person2 === "string" ? this.person1.getGedcom()?.indi(person2) : person2;
|
|
7998
8325
|
this.path = this.person1.path(this.person2);
|
|
8326
|
+
const order = nameOrder ?? nameOrderForLang(lang);
|
|
8327
|
+
this.nameOrder = order;
|
|
7999
8328
|
if (translators_exports[lang]) {
|
|
8000
8329
|
this.translator = new translators_exports[lang](
|
|
8001
8330
|
this.path ?? [],
|
|
8002
|
-
displayName
|
|
8331
|
+
displayName,
|
|
8332
|
+
order
|
|
8003
8333
|
);
|
|
8004
8334
|
}
|
|
8005
8335
|
if (!this.translator) {
|
|
8006
|
-
this.translator = new KinshipTranslatorEn(
|
|
8336
|
+
this.translator = new KinshipTranslatorEn(
|
|
8337
|
+
this.path ?? [],
|
|
8338
|
+
displayName,
|
|
8339
|
+
order
|
|
8340
|
+
);
|
|
8007
8341
|
}
|
|
8008
8342
|
}
|
|
8009
8343
|
get path0() {
|
|
@@ -8048,14 +8382,16 @@ var KinshipTranslator = class {
|
|
|
8048
8382
|
showMainPerson,
|
|
8049
8383
|
this.lang,
|
|
8050
8384
|
false,
|
|
8051
|
-
this.displayName
|
|
8385
|
+
this.displayName,
|
|
8386
|
+
this.nameOrder
|
|
8052
8387
|
),
|
|
8053
8388
|
relative: this.path?.[index - 1]?.indi.kinship(
|
|
8054
8389
|
path2.indi.id,
|
|
8055
8390
|
showMainPerson,
|
|
8056
8391
|
this.lang,
|
|
8057
8392
|
false,
|
|
8058
|
-
this.displayName
|
|
8393
|
+
this.displayName,
|
|
8394
|
+
this.nameOrder
|
|
8059
8395
|
)
|
|
8060
8396
|
}));
|
|
8061
8397
|
return path;
|