@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
|
@@ -9,11 +9,12 @@ var __export = (target, all) => {
|
|
|
9
9
|
|
|
10
10
|
// src/kinship-translator/kinship-translator.basic.ts
|
|
11
11
|
var KinshipTranslatorBasic = class {
|
|
12
|
-
constructor(path, displayName = "givenname") {
|
|
12
|
+
constructor(path, displayName = "givenname", nameOrder = "first-last") {
|
|
13
13
|
this.isOfSpouse = false;
|
|
14
14
|
this.isSpouseOf = false;
|
|
15
15
|
this._path = path;
|
|
16
16
|
this.displayName = displayName;
|
|
17
|
+
this.nameOrder = nameOrder;
|
|
17
18
|
}
|
|
18
19
|
get path() {
|
|
19
20
|
return this._path;
|
|
@@ -464,7 +465,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
464
465
|
}
|
|
465
466
|
return `${hungarianOrdinalize(
|
|
466
467
|
degree
|
|
467
|
-
)}unokatestv\xE9r ${level}x elt\xE1vol\xEDtva`;
|
|
468
|
+
)}unokatestv\xE9r ${Math.abs(level)}x elt\xE1vol\xEDtva`;
|
|
468
469
|
}
|
|
469
470
|
auncle() {
|
|
470
471
|
const level = this.pathN?.level ?? 0;
|
|
@@ -508,14 +509,25 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
508
509
|
return `${ordinalized ? `${ordinalized}unoka` : ""}testv\xE9r ${origPrefix.replace(/nagy$/, "")}unok\xE1ja`;
|
|
509
510
|
}
|
|
510
511
|
parent() {
|
|
512
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
513
|
+
if (level <= 1) {
|
|
514
|
+
if (this.personN?.isMale()) {
|
|
515
|
+
return "apa";
|
|
516
|
+
}
|
|
517
|
+
if (this.personN?.isFemale()) {
|
|
518
|
+
return "anya";
|
|
519
|
+
}
|
|
520
|
+
return "sz\xFCl\u0151";
|
|
521
|
+
}
|
|
511
522
|
const prefix = this.directPrefix();
|
|
523
|
+
const gen = prefix === "nagy" ? "" : prefix;
|
|
512
524
|
if (this.personN?.isMale()) {
|
|
513
|
-
return `${
|
|
525
|
+
return `${gen}nagyapa`;
|
|
514
526
|
}
|
|
515
527
|
if (this.personN?.isFemale()) {
|
|
516
|
-
return `${
|
|
528
|
+
return `${gen}nagyanya`;
|
|
517
529
|
}
|
|
518
|
-
return `${
|
|
530
|
+
return `${gen}nagysz\xFCl\u0151`;
|
|
519
531
|
}
|
|
520
532
|
child() {
|
|
521
533
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
@@ -597,7 +609,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
597
609
|
}
|
|
598
610
|
of(relation) {
|
|
599
611
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
600
|
-
nameOrder:
|
|
612
|
+
nameOrder: this.nameOrder
|
|
601
613
|
});
|
|
602
614
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
603
615
|
if (this.displayName === "none") {
|
|
@@ -709,27 +721,30 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
709
721
|
if (!degree) {
|
|
710
722
|
return level < 0 ? this.nibling() : this.auncle();
|
|
711
723
|
}
|
|
712
|
-
return `${ordinalize(degree)} cousin ${level}x removed`;
|
|
724
|
+
return `${ordinalize(degree)} cousin ${Math.abs(level)}x removed`;
|
|
713
725
|
}
|
|
714
726
|
auncle() {
|
|
715
|
-
const
|
|
727
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
728
|
+
const greats = level <= 1 ? "" : "great-".repeat(level - 1);
|
|
716
729
|
if (this.personN?.isMale()) {
|
|
717
|
-
return `${
|
|
730
|
+
return `${greats}uncle`;
|
|
718
731
|
}
|
|
719
732
|
if (this.personN?.isFemale()) {
|
|
720
|
-
return `${
|
|
733
|
+
return `${greats}aunt`;
|
|
721
734
|
}
|
|
722
|
-
return `${
|
|
735
|
+
return greats ? `${greats}uncle/${greats}aunt` : "uncle/aunt";
|
|
723
736
|
}
|
|
724
737
|
nibling() {
|
|
725
|
-
const
|
|
738
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
739
|
+
const greats = level <= 2 ? "" : "great-".repeat(level - 2);
|
|
740
|
+
const grand = level <= 1 ? "" : "grand";
|
|
726
741
|
if (this.personN?.isMale()) {
|
|
727
|
-
return `${
|
|
742
|
+
return `${greats}${grand}nephew`;
|
|
728
743
|
}
|
|
729
744
|
if (this.personN?.isFemale()) {
|
|
730
|
-
return `${
|
|
745
|
+
return `${greats}${grand}niece`;
|
|
731
746
|
}
|
|
732
|
-
return `${
|
|
747
|
+
return greats || grand ? `${greats}${grand}nephew/${greats}${grand}niece` : "nephew/niece";
|
|
733
748
|
}
|
|
734
749
|
parent() {
|
|
735
750
|
const prefix = this.directPrefix();
|
|
@@ -808,7 +823,7 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
808
823
|
}
|
|
809
824
|
of(relation) {
|
|
810
825
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
811
|
-
nameOrder:
|
|
826
|
+
nameOrder: this.nameOrder
|
|
812
827
|
});
|
|
813
828
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
814
829
|
if (this.displayName === "none") {
|
|
@@ -857,45 +872,70 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
857
872
|
};
|
|
858
873
|
|
|
859
874
|
// src/kinship-translator/patterns.fr.ts
|
|
875
|
+
var parentRelationsFr = {
|
|
876
|
+
step: "step",
|
|
877
|
+
foster: "foster",
|
|
878
|
+
adopted: "adopted"
|
|
879
|
+
};
|
|
860
880
|
var InLawsFr = {
|
|
861
881
|
"conjoint de (enfant|fille|fils)": "beau-fils/belle-fille",
|
|
862
882
|
"\xE9pouse de (enfant|fille|fils)": "belle-fille",
|
|
863
883
|
"mari de (enfant|fille|fils)": "gendre",
|
|
864
|
-
"m\xE8re du
|
|
865
|
-
"p\xE8re du
|
|
866
|
-
"parent du
|
|
884
|
+
"m\xE8re (du mari|du conjoint|de l'\xE9pouse)": "belle-m\xE8re",
|
|
885
|
+
"p\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-p\xE8re",
|
|
886
|
+
"parent (du mari|du conjoint|de l'\xE9pouse)": "beau-parent",
|
|
867
887
|
"\xE9pouse de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "belle-s\u0153ur",
|
|
868
888
|
"mari de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re",
|
|
869
889
|
"conjoint de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re/belle-s\u0153ur",
|
|
870
|
-
"(demi-)?s\u0153ur du
|
|
871
|
-
"(demi-)?fr\xE8re du
|
|
872
|
-
"(demi-)?fr\xE8re/s\u0153ur du
|
|
890
|
+
"(demi-)?s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "belle-s\u0153ur",
|
|
891
|
+
"(demi-)?fr\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re",
|
|
892
|
+
"(demi-)?fr\xE8re/s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re/belle-s\u0153ur"
|
|
873
893
|
};
|
|
874
894
|
|
|
875
895
|
// src/kinship-translator/kinship-translator.fr.ts
|
|
876
|
-
var
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
896
|
+
var sexOf = (person) => {
|
|
897
|
+
if (person?.isMale?.()) {
|
|
898
|
+
return "m";
|
|
899
|
+
}
|
|
900
|
+
if (person?.isFemale?.()) {
|
|
901
|
+
return "f";
|
|
902
|
+
}
|
|
903
|
+
return "n";
|
|
904
|
+
};
|
|
905
|
+
var pick = (sex, male, female, neutral) => {
|
|
906
|
+
if (sex === "m") {
|
|
907
|
+
return male;
|
|
908
|
+
}
|
|
909
|
+
if (sex === "f") {
|
|
910
|
+
return female;
|
|
911
|
+
}
|
|
912
|
+
return neutral;
|
|
913
|
+
};
|
|
914
|
+
var arriere = (count) => count > 0 ? "arri\xE8re-".repeat(count) : "";
|
|
915
|
+
var frenchOrdinal = (n) => n === 1 ? "1er" : `${n}e`;
|
|
916
|
+
var isFeminineRelation = (relation) => /mère|fille|sœur|tante|nièce|cousine|épouse/.test(relation);
|
|
917
|
+
var ofSpousePrep = (spouseType) => {
|
|
918
|
+
if (spouseType === "\xE9pouse") {
|
|
919
|
+
return "de l'";
|
|
889
920
|
}
|
|
921
|
+
return "du ";
|
|
922
|
+
};
|
|
923
|
+
var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
890
924
|
indirect() {
|
|
891
925
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
892
926
|
if (degree > 0) {
|
|
893
927
|
degree = degree - 1;
|
|
894
928
|
}
|
|
895
|
-
|
|
896
|
-
|
|
929
|
+
const cousin = pick(
|
|
930
|
+
sexOf(this.personN),
|
|
931
|
+
"cousin",
|
|
932
|
+
"cousine",
|
|
933
|
+
"cousin/cousine"
|
|
934
|
+
);
|
|
935
|
+
if (degree <= 1) {
|
|
936
|
+
return cousin;
|
|
897
937
|
}
|
|
898
|
-
return
|
|
938
|
+
return `${cousin} au ${frenchOrdinal(degree)} degr\xE9`;
|
|
899
939
|
}
|
|
900
940
|
removal() {
|
|
901
941
|
const level = this.pathN?.level ?? 0;
|
|
@@ -906,56 +946,57 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
906
946
|
if (!degree) {
|
|
907
947
|
return level < 0 ? this.nibling() : this.auncle();
|
|
908
948
|
}
|
|
909
|
-
return
|
|
949
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 \xE9loign\xE9`;
|
|
910
950
|
}
|
|
911
951
|
auncle() {
|
|
912
|
-
const
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
return `${prefix}tante`;
|
|
952
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
953
|
+
const sex = sexOf(this.personN);
|
|
954
|
+
const base = pick(sex, "oncle", "tante", "oncle/tante");
|
|
955
|
+
if (level <= 1) {
|
|
956
|
+
return base;
|
|
918
957
|
}
|
|
919
|
-
|
|
958
|
+
const grands = pick(
|
|
959
|
+
sex,
|
|
960
|
+
"grand-oncle",
|
|
961
|
+
"grand-tante",
|
|
962
|
+
"grand-oncle/tante"
|
|
963
|
+
);
|
|
964
|
+
return `${arriere(level - 2)}${grands}`;
|
|
920
965
|
}
|
|
921
966
|
nibling() {
|
|
922
|
-
const
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
if (this.personN?.isFemale()) {
|
|
927
|
-
return `${prefix}ni\xE8ce`;
|
|
967
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
968
|
+
const sex = sexOf(this.personN);
|
|
969
|
+
if (level <= 1) {
|
|
970
|
+
return pick(sex, "neveu", "ni\xE8ce", "neveu/ni\xE8ce");
|
|
928
971
|
}
|
|
929
|
-
|
|
972
|
+
const grands = pick(
|
|
973
|
+
sex,
|
|
974
|
+
"grand-neveu",
|
|
975
|
+
"grande-ni\xE8ce",
|
|
976
|
+
"grand-neveu/grande-ni\xE8ce"
|
|
977
|
+
);
|
|
978
|
+
return `${arriere(level - 2)}${grands}`;
|
|
930
979
|
}
|
|
931
980
|
parent() {
|
|
932
|
-
const
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
if (this.personN?.isFemale()) {
|
|
937
|
-
return `${prefix}m\xE8re`;
|
|
981
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
982
|
+
const sex = sexOf(this.personN);
|
|
983
|
+
if (level <= 1) {
|
|
984
|
+
return pick(sex, "p\xE8re", "m\xE8re", "parent");
|
|
938
985
|
}
|
|
939
|
-
|
|
986
|
+
const grands = pick(sex, "grand-p\xE8re", "grand-m\xE8re", "grand-parent");
|
|
987
|
+
return `${arriere(level - 2)}${grands}`;
|
|
940
988
|
}
|
|
941
989
|
child() {
|
|
942
|
-
const
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
if (this.personN?.isFemale()) {
|
|
947
|
-
return `${prefix}fille`;
|
|
990
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
991
|
+
const sex = sexOf(this.personN);
|
|
992
|
+
if (level <= 1) {
|
|
993
|
+
return pick(sex, "fils", "fille", "enfant");
|
|
948
994
|
}
|
|
949
|
-
|
|
995
|
+
const petits = pick(sex, "petit-fils", "petite-fille", "petit-enfant");
|
|
996
|
+
return `${arriere(level - 2)}${petits}`;
|
|
950
997
|
}
|
|
951
998
|
sibling() {
|
|
952
|
-
|
|
953
|
-
return "fr\xE8re";
|
|
954
|
-
}
|
|
955
|
-
if (this.personN?.isFemale()) {
|
|
956
|
-
return "s\u0153ur";
|
|
957
|
-
}
|
|
958
|
-
return "fr\xE8re/s\u0153ur";
|
|
999
|
+
return pick(sexOf(this.personN), "fr\xE8re", "s\u0153ur", "fr\xE8re/s\u0153ur");
|
|
959
1000
|
}
|
|
960
1001
|
halfBlood(relation) {
|
|
961
1002
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -964,45 +1005,35 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
964
1005
|
return `demi-${relation}`;
|
|
965
1006
|
}
|
|
966
1007
|
spouse() {
|
|
967
|
-
|
|
968
|
-
return "mari";
|
|
969
|
-
}
|
|
970
|
-
if (this.personN?.isFemale()) {
|
|
971
|
-
return "\xE9pouse";
|
|
972
|
-
}
|
|
973
|
-
return "conjoint";
|
|
1008
|
+
return pick(sexOf(this.personN), "mari", "\xE9pouse", "conjoint");
|
|
974
1009
|
}
|
|
975
1010
|
ofSpouse(relation) {
|
|
976
1011
|
if (!relation) {
|
|
977
1012
|
return "";
|
|
978
1013
|
}
|
|
979
|
-
const
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
}
|
|
987
|
-
return `${relation} du ${spouseType}`;
|
|
1014
|
+
const spouseType = pick(
|
|
1015
|
+
sexOf(this.path?.[1].indi),
|
|
1016
|
+
"mari",
|
|
1017
|
+
"\xE9pouse",
|
|
1018
|
+
"conjoint"
|
|
1019
|
+
);
|
|
1020
|
+
return `${relation} ${ofSpousePrep(spouseType)}${spouseType}`;
|
|
988
1021
|
}
|
|
989
1022
|
spouseOf(relation) {
|
|
990
1023
|
if (!relation) {
|
|
991
1024
|
return "";
|
|
992
1025
|
}
|
|
993
|
-
const
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
spouseType = "\xE9pouse";
|
|
1000
|
-
}
|
|
1026
|
+
const spouseType = pick(
|
|
1027
|
+
sexOf(this.path?.[this.path.length - 1].indi),
|
|
1028
|
+
"mari",
|
|
1029
|
+
"\xE9pouse",
|
|
1030
|
+
"conjoint"
|
|
1031
|
+
);
|
|
1001
1032
|
return `${spouseType} de ${relation}`;
|
|
1002
1033
|
}
|
|
1003
1034
|
of(relation) {
|
|
1004
1035
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
1005
|
-
nameOrder:
|
|
1036
|
+
nameOrder: this.nameOrder
|
|
1006
1037
|
});
|
|
1007
1038
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
1008
1039
|
if (this.displayName === "none") {
|
|
@@ -1018,6 +1049,9 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
1018
1049
|
if (relation.includes(" du ") || relation.includes(" de ")) {
|
|
1019
1050
|
return relation.replace(/ (du|de) /, ` $1 ${name} `);
|
|
1020
1051
|
}
|
|
1052
|
+
if (relation.includes(" de l'")) {
|
|
1053
|
+
return relation.replace(" de l'", ` de ${name} l'`);
|
|
1054
|
+
}
|
|
1021
1055
|
return `${relation} de ${name}`;
|
|
1022
1056
|
}
|
|
1023
1057
|
inLaw(relation) {
|
|
@@ -1046,50 +1080,118 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
1046
1080
|
if (!relation || !this.pathN?.relation) {
|
|
1047
1081
|
return relation ?? "";
|
|
1048
1082
|
}
|
|
1049
|
-
|
|
1083
|
+
const kind = parentRelationsFr[this.pathN.relation];
|
|
1084
|
+
if (!kind) {
|
|
1085
|
+
return relation;
|
|
1086
|
+
}
|
|
1087
|
+
if (kind === "step") {
|
|
1088
|
+
return `${isFeminineRelation(relation) ? "belle-" : "beau-"}${relation}`;
|
|
1089
|
+
}
|
|
1090
|
+
if (kind === "adopted") {
|
|
1091
|
+
return `${relation} ${isFeminineRelation(relation) ? "adoptive" : "adoptif"}`;
|
|
1092
|
+
}
|
|
1093
|
+
if (kind === "foster") {
|
|
1094
|
+
return `${relation} d'accueil`;
|
|
1095
|
+
}
|
|
1096
|
+
return relation;
|
|
1050
1097
|
}
|
|
1051
1098
|
};
|
|
1052
1099
|
|
|
1053
1100
|
// src/kinship-translator/patterns.es.ts
|
|
1101
|
+
var parentRelationsEs = {
|
|
1102
|
+
step: {
|
|
1103
|
+
padre: "padrastro",
|
|
1104
|
+
madre: "madrastra",
|
|
1105
|
+
hijo: "hijastro",
|
|
1106
|
+
hija: "hijastra",
|
|
1107
|
+
hermano: "hermanastro",
|
|
1108
|
+
hermana: "hermanastra",
|
|
1109
|
+
abuelo: "abuelastro",
|
|
1110
|
+
abuela: "abuelastra"
|
|
1111
|
+
}
|
|
1112
|
+
};
|
|
1054
1113
|
var InLawsEs = {
|
|
1055
1114
|
"c\xF3nyuge de (hijo/hija|hija|hijo)": "yerno/nuera",
|
|
1056
1115
|
"esposa de (hijo/hija|hija|hijo)": "nuera",
|
|
1057
1116
|
"esposo de (hijo/hija|hija|hijo)": "yerno",
|
|
1058
|
-
"madre del
|
|
1059
|
-
"padre del
|
|
1060
|
-
"padre/madre del
|
|
1117
|
+
"madre (del c\xF3nyuge|del esposo|de la esposa)": "suegra",
|
|
1118
|
+
"padre (del c\xF3nyuge|del esposo|de la esposa)": "suegro",
|
|
1119
|
+
"padre/madre (del c\xF3nyuge|del esposo|de la esposa)": "suegro/suegra",
|
|
1061
1120
|
"esposa de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ada",
|
|
1062
1121
|
"esposo de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado",
|
|
1063
1122
|
"c\xF3nyuge de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado/cu\xF1ada",
|
|
1064
|
-
"(medio |media |medio/a )?hermana del
|
|
1065
|
-
"(medio |media |medio/a )?hermano del
|
|
1066
|
-
"(medio |media |medio/a )?hermano/hermana del
|
|
1123
|
+
"(medio |media |medio/a )?hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ada",
|
|
1124
|
+
"(medio |media |medio/a )?hermano (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado",
|
|
1125
|
+
"(medio |media |medio/a )?hermano/hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado/cu\xF1ada"
|
|
1067
1126
|
};
|
|
1068
1127
|
|
|
1069
1128
|
// src/kinship-translator/kinship-translator.es.ts
|
|
1070
|
-
var
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1129
|
+
var sexOf2 = (person) => {
|
|
1130
|
+
if (person?.isMale?.()) {
|
|
1131
|
+
return "m";
|
|
1132
|
+
}
|
|
1133
|
+
if (person?.isFemale?.()) {
|
|
1134
|
+
return "f";
|
|
1135
|
+
}
|
|
1136
|
+
return "n";
|
|
1137
|
+
};
|
|
1138
|
+
var pick2 = (sex, male, female, neutral) => {
|
|
1139
|
+
if (sex === "m") {
|
|
1140
|
+
return male;
|
|
1141
|
+
}
|
|
1142
|
+
if (sex === "f") {
|
|
1143
|
+
return female;
|
|
1144
|
+
}
|
|
1145
|
+
return neutral;
|
|
1146
|
+
};
|
|
1147
|
+
var SPANISH_ORDINALS_M = [
|
|
1148
|
+
"",
|
|
1149
|
+
"",
|
|
1150
|
+
"segundo",
|
|
1151
|
+
"tercero",
|
|
1152
|
+
"cuarto",
|
|
1153
|
+
"quinto",
|
|
1154
|
+
"sexto",
|
|
1155
|
+
"s\xE9ptimo",
|
|
1156
|
+
"octavo",
|
|
1157
|
+
"noveno",
|
|
1158
|
+
"d\xE9cimo"
|
|
1159
|
+
];
|
|
1160
|
+
var SPANISH_ORDINALS_F = [
|
|
1161
|
+
"",
|
|
1162
|
+
"",
|
|
1163
|
+
"segunda",
|
|
1164
|
+
"tercera",
|
|
1165
|
+
"cuarta",
|
|
1166
|
+
"quinta",
|
|
1167
|
+
"sexta",
|
|
1168
|
+
"s\xE9ptima",
|
|
1169
|
+
"octava",
|
|
1170
|
+
"novena",
|
|
1171
|
+
"d\xE9cima"
|
|
1172
|
+
];
|
|
1173
|
+
var spanishOrdinal = (n, sex) => {
|
|
1174
|
+
const list = sex === "f" ? SPANISH_ORDINALS_F : SPANISH_ORDINALS_M;
|
|
1175
|
+
return list[n] ?? `${n}.\xBA`;
|
|
1176
|
+
};
|
|
1177
|
+
var ofSpousePrep2 = (spouseType) => {
|
|
1178
|
+
if (spouseType === "esposa") {
|
|
1179
|
+
return "de la ";
|
|
1083
1180
|
}
|
|
1181
|
+
return "del ";
|
|
1182
|
+
};
|
|
1183
|
+
var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
1084
1184
|
indirect() {
|
|
1085
1185
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
1086
1186
|
if (degree > 0) {
|
|
1087
1187
|
degree = degree - 1;
|
|
1088
1188
|
}
|
|
1089
|
-
|
|
1090
|
-
|
|
1189
|
+
const sex = sexOf2(this.personN);
|
|
1190
|
+
const cousin = pick2(sex, "primo", "prima", "primo/prima");
|
|
1191
|
+
if (degree <= 1) {
|
|
1192
|
+
return cousin;
|
|
1091
1193
|
}
|
|
1092
|
-
return
|
|
1194
|
+
return `${cousin} ${spanishOrdinal(degree, sex)}`;
|
|
1093
1195
|
}
|
|
1094
1196
|
removal() {
|
|
1095
1197
|
const level = this.pathN?.level ?? 0;
|
|
@@ -1100,56 +1202,133 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
1100
1202
|
if (!degree) {
|
|
1101
1203
|
return level < 0 ? this.nibling() : this.auncle();
|
|
1102
1204
|
}
|
|
1103
|
-
return
|
|
1205
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 separado`;
|
|
1104
1206
|
}
|
|
1105
1207
|
auncle() {
|
|
1106
|
-
const
|
|
1107
|
-
|
|
1108
|
-
|
|
1208
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1209
|
+
const sex = sexOf2(this.personN);
|
|
1210
|
+
if (level <= 1) {
|
|
1211
|
+
return pick2(sex, "t\xEDo", "t\xEDa", "t\xEDo/t\xEDa");
|
|
1109
1212
|
}
|
|
1110
|
-
if (
|
|
1111
|
-
return
|
|
1213
|
+
if (level === 2) {
|
|
1214
|
+
return pick2(sex, "t\xEDo abuelo", "t\xEDa abuela", "t\xEDo/t\xEDa abuelo");
|
|
1112
1215
|
}
|
|
1113
|
-
|
|
1216
|
+
if (level === 3) {
|
|
1217
|
+
return pick2(
|
|
1218
|
+
sex,
|
|
1219
|
+
"t\xEDo bisabuelo",
|
|
1220
|
+
"t\xEDa bisabuela",
|
|
1221
|
+
"t\xEDo/t\xEDa bisabuelo"
|
|
1222
|
+
);
|
|
1223
|
+
}
|
|
1224
|
+
return pick2(
|
|
1225
|
+
sex,
|
|
1226
|
+
`t\xEDo abuelo (${level - 1}.\xBA)`,
|
|
1227
|
+
`t\xEDa abuela (${level - 1}.\xAA)`,
|
|
1228
|
+
`t\xEDo/t\xEDa abuelo (${level - 1}.\xBA)`
|
|
1229
|
+
);
|
|
1114
1230
|
}
|
|
1115
1231
|
nibling() {
|
|
1116
|
-
const
|
|
1117
|
-
|
|
1118
|
-
|
|
1232
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1233
|
+
const sex = sexOf2(this.personN);
|
|
1234
|
+
if (level <= 1) {
|
|
1235
|
+
return pick2(sex, "sobrino", "sobrina", "sobrino/sobrina");
|
|
1119
1236
|
}
|
|
1120
|
-
if (
|
|
1121
|
-
return
|
|
1237
|
+
if (level === 2) {
|
|
1238
|
+
return pick2(
|
|
1239
|
+
sex,
|
|
1240
|
+
"sobrino nieto",
|
|
1241
|
+
"sobrina nieta",
|
|
1242
|
+
"sobrino/sobrina nieto"
|
|
1243
|
+
);
|
|
1122
1244
|
}
|
|
1123
|
-
|
|
1245
|
+
if (level === 3) {
|
|
1246
|
+
return pick2(
|
|
1247
|
+
sex,
|
|
1248
|
+
"sobrino bisnieto",
|
|
1249
|
+
"sobrina bisnieta",
|
|
1250
|
+
"sobrino/sobrina bisnieto"
|
|
1251
|
+
);
|
|
1252
|
+
}
|
|
1253
|
+
return pick2(
|
|
1254
|
+
sex,
|
|
1255
|
+
`sobrino nieto (${level - 1}.\xBA)`,
|
|
1256
|
+
`sobrina nieta (${level - 1}.\xAA)`,
|
|
1257
|
+
`sobrino/sobrina nieto (${level - 1}.\xBA)`
|
|
1258
|
+
);
|
|
1124
1259
|
}
|
|
1125
1260
|
parent() {
|
|
1126
|
-
const
|
|
1127
|
-
|
|
1128
|
-
|
|
1261
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1262
|
+
const sex = sexOf2(this.personN);
|
|
1263
|
+
if (level <= 1) {
|
|
1264
|
+
return pick2(sex, "padre", "madre", "padre/madre");
|
|
1129
1265
|
}
|
|
1130
|
-
if (
|
|
1131
|
-
return
|
|
1266
|
+
if (level === 2) {
|
|
1267
|
+
return pick2(sex, "abuelo", "abuela", "abuelo/abuela");
|
|
1268
|
+
}
|
|
1269
|
+
if (level === 3) {
|
|
1270
|
+
return pick2(sex, "bisabuelo", "bisabuela", "bisabuelo/bisabuela");
|
|
1271
|
+
}
|
|
1272
|
+
if (level === 4) {
|
|
1273
|
+
return pick2(
|
|
1274
|
+
sex,
|
|
1275
|
+
"tatarabuelo",
|
|
1276
|
+
"tatarabuela",
|
|
1277
|
+
"tatarabuelo/tatarabuela"
|
|
1278
|
+
);
|
|
1132
1279
|
}
|
|
1133
|
-
|
|
1280
|
+
if (level === 5) {
|
|
1281
|
+
return pick2(
|
|
1282
|
+
sex,
|
|
1283
|
+
"trastatarabuelo",
|
|
1284
|
+
"trastatarabuela",
|
|
1285
|
+
"trastatarabuelo/trastatarabuela"
|
|
1286
|
+
);
|
|
1287
|
+
}
|
|
1288
|
+
return pick2(
|
|
1289
|
+
sex,
|
|
1290
|
+
`abuelo (${level}.\xBA)`,
|
|
1291
|
+
`abuela (${level}.\xAA)`,
|
|
1292
|
+
`abuelo/abuela (${level}.\xBA)`
|
|
1293
|
+
);
|
|
1134
1294
|
}
|
|
1135
1295
|
child() {
|
|
1136
|
-
const
|
|
1137
|
-
|
|
1138
|
-
|
|
1296
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1297
|
+
const sex = sexOf2(this.personN);
|
|
1298
|
+
if (level <= 1) {
|
|
1299
|
+
return pick2(sex, "hijo", "hija", "hijo/hija");
|
|
1139
1300
|
}
|
|
1140
|
-
if (
|
|
1141
|
-
return
|
|
1301
|
+
if (level === 2) {
|
|
1302
|
+
return pick2(sex, "nieto", "nieta", "nieto/nieta");
|
|
1142
1303
|
}
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
sibling() {
|
|
1146
|
-
if (this.personN?.isMale()) {
|
|
1147
|
-
return "hermano";
|
|
1304
|
+
if (level === 3) {
|
|
1305
|
+
return pick2(sex, "bisnieto", "bisnieta", "bisnieto/bisnieta");
|
|
1148
1306
|
}
|
|
1149
|
-
if (
|
|
1150
|
-
return
|
|
1307
|
+
if (level === 4) {
|
|
1308
|
+
return pick2(
|
|
1309
|
+
sex,
|
|
1310
|
+
"tataranieto",
|
|
1311
|
+
"tataranieta",
|
|
1312
|
+
"tataranieto/tataranieta"
|
|
1313
|
+
);
|
|
1151
1314
|
}
|
|
1152
|
-
|
|
1315
|
+
if (level === 5) {
|
|
1316
|
+
return pick2(
|
|
1317
|
+
sex,
|
|
1318
|
+
"trastataranieto",
|
|
1319
|
+
"trastataranieta",
|
|
1320
|
+
"trastataranieto/trastataranieta"
|
|
1321
|
+
);
|
|
1322
|
+
}
|
|
1323
|
+
return pick2(
|
|
1324
|
+
sex,
|
|
1325
|
+
`nieto (${level}.\xBA)`,
|
|
1326
|
+
`nieta (${level}.\xAA)`,
|
|
1327
|
+
`nieto/nieta (${level}.\xBA)`
|
|
1328
|
+
);
|
|
1329
|
+
}
|
|
1330
|
+
sibling() {
|
|
1331
|
+
return pick2(sexOf2(this.personN), "hermano", "hermana", "hermano/hermana");
|
|
1153
1332
|
}
|
|
1154
1333
|
halfBlood(relation) {
|
|
1155
1334
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -1164,45 +1343,35 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
1164
1343
|
return `medio/a ${relation}`;
|
|
1165
1344
|
}
|
|
1166
1345
|
spouse() {
|
|
1167
|
-
|
|
1168
|
-
return "esposo";
|
|
1169
|
-
}
|
|
1170
|
-
if (this.personN?.isFemale()) {
|
|
1171
|
-
return "esposa";
|
|
1172
|
-
}
|
|
1173
|
-
return "c\xF3nyuge";
|
|
1346
|
+
return pick2(sexOf2(this.personN), "esposo", "esposa", "c\xF3nyuge");
|
|
1174
1347
|
}
|
|
1175
1348
|
ofSpouse(relation) {
|
|
1176
1349
|
if (!relation) {
|
|
1177
1350
|
return "";
|
|
1178
1351
|
}
|
|
1179
|
-
const
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
}
|
|
1187
|
-
return `${relation} del ${spouseType}`;
|
|
1352
|
+
const spouseType = pick2(
|
|
1353
|
+
sexOf2(this.path?.[1].indi),
|
|
1354
|
+
"esposo",
|
|
1355
|
+
"esposa",
|
|
1356
|
+
"c\xF3nyuge"
|
|
1357
|
+
);
|
|
1358
|
+
return `${relation} ${ofSpousePrep2(spouseType)}${spouseType}`;
|
|
1188
1359
|
}
|
|
1189
1360
|
spouseOf(relation) {
|
|
1190
1361
|
if (!relation) {
|
|
1191
1362
|
return "";
|
|
1192
1363
|
}
|
|
1193
|
-
const
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
spouseType = "esposa";
|
|
1200
|
-
}
|
|
1364
|
+
const spouseType = pick2(
|
|
1365
|
+
sexOf2(this.path?.[this.path.length - 1].indi),
|
|
1366
|
+
"esposo",
|
|
1367
|
+
"esposa",
|
|
1368
|
+
"c\xF3nyuge"
|
|
1369
|
+
);
|
|
1201
1370
|
return `${spouseType} de ${relation}`;
|
|
1202
1371
|
}
|
|
1203
1372
|
of(relation) {
|
|
1204
1373
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
1205
|
-
nameOrder:
|
|
1374
|
+
nameOrder: this.nameOrder
|
|
1206
1375
|
});
|
|
1207
1376
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
1208
1377
|
if (this.displayName === "none") {
|
|
@@ -1215,8 +1384,8 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
1215
1384
|
if (!name || !relation) {
|
|
1216
1385
|
return relation ?? "";
|
|
1217
1386
|
}
|
|
1218
|
-
if (relation.includes(" del ") || relation.includes(" de ")) {
|
|
1219
|
-
return relation.replace(/ (del|de) /, ` $1 ${name} `);
|
|
1387
|
+
if (relation.includes(" del ") || relation.includes(" de la ") || relation.includes(" de ")) {
|
|
1388
|
+
return relation.replace(/ (del|de la|de) /, ` $1 ${name} `);
|
|
1220
1389
|
}
|
|
1221
1390
|
return `${relation} de ${name}`;
|
|
1222
1391
|
}
|
|
@@ -1246,7 +1415,20 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
1246
1415
|
if (!relation || !this.pathN?.relation) {
|
|
1247
1416
|
return relation ?? "";
|
|
1248
1417
|
}
|
|
1249
|
-
|
|
1418
|
+
const mapped = parentRelationsEs[this.pathN.relation]?.[relation];
|
|
1419
|
+
if (mapped) {
|
|
1420
|
+
return mapped;
|
|
1421
|
+
}
|
|
1422
|
+
if (this.pathN.relation === "step") {
|
|
1423
|
+
return `${relation} pol\xEDtico`;
|
|
1424
|
+
}
|
|
1425
|
+
if (this.pathN.relation === "adopted") {
|
|
1426
|
+
return `${relation} adoptivo`;
|
|
1427
|
+
}
|
|
1428
|
+
if (this.pathN.relation === "foster") {
|
|
1429
|
+
return `${relation} de acogida`;
|
|
1430
|
+
}
|
|
1431
|
+
return relation;
|
|
1250
1432
|
}
|
|
1251
1433
|
};
|
|
1252
1434
|
|
|
@@ -1255,15 +1437,35 @@ var InLawsRu = {
|
|
|
1255
1437
|
"\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",
|
|
1256
1438
|
"\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",
|
|
1257
1439
|
"\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
|
|
1258
|
-
"\u043C\u0430\u0442\u044C
|
|
1259
|
-
"\
|
|
1260
|
-
"\
|
|
1440
|
+
"\u043C\u0430\u0442\u044C \u0436\u0435\u043D\u044B": "\u0442\u0451\u0449\u0430",
|
|
1441
|
+
"\u043C\u0430\u0442\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
1442
|
+
"\u043C\u0430\u0442\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0451\u0449\u0430/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
1443
|
+
"\u043E\u0442\u0435\u0446 \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C",
|
|
1444
|
+
"\u043E\u0442\u0435\u0446 \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
1445
|
+
"\u043E\u0442\u0435\u0446 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
1446
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
1447
|
+
"\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",
|
|
1448
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
1261
1449
|
"\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",
|
|
1262
1450
|
"\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",
|
|
1263
1451
|
"\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",
|
|
1264
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430
|
|
1265
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\
|
|
1266
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\
|
|
1452
|
+
"(\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",
|
|
1453
|
+
"(\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",
|
|
1454
|
+
"(\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",
|
|
1455
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D",
|
|
1456
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C",
|
|
1457
|
+
"(\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",
|
|
1458
|
+
"(\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",
|
|
1459
|
+
"(\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",
|
|
1460
|
+
"(\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"
|
|
1461
|
+
};
|
|
1462
|
+
var parentRelationsRu = {
|
|
1463
|
+
step: {
|
|
1464
|
+
\u043E\u0442\u0435\u0446: "\u043E\u0442\u0447\u0438\u043C",
|
|
1465
|
+
\u043C\u0430\u0442\u044C: "\u043C\u0430\u0447\u0435\u0445\u0430",
|
|
1466
|
+
\u0441\u044B\u043D: "\u043F\u0430\u0441\u044B\u043D\u043E\u043A",
|
|
1467
|
+
\u0434\u043E\u0447\u044C: "\u043F\u0430\u0434\u0447\u0435\u0440\u0438\u0446\u0430"
|
|
1468
|
+
}
|
|
1267
1469
|
};
|
|
1268
1470
|
|
|
1269
1471
|
// src/kinship-translator/kinship-translator.ru.ts
|
|
@@ -1294,7 +1496,7 @@ var cousinWord = (degree, sex) => {
|
|
|
1294
1496
|
return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
|
|
1295
1497
|
};
|
|
1296
1498
|
var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
|
|
1297
|
-
var
|
|
1499
|
+
var sexOf3 = (person) => {
|
|
1298
1500
|
if (person?.isMale?.()) {
|
|
1299
1501
|
return "m";
|
|
1300
1502
|
}
|
|
@@ -1309,7 +1511,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
1309
1511
|
if (degree > 0) {
|
|
1310
1512
|
degree = degree - 1;
|
|
1311
1513
|
}
|
|
1312
|
-
return cousinWord(degree,
|
|
1514
|
+
return cousinWord(degree, sexOf3(this.personN));
|
|
1313
1515
|
}
|
|
1314
1516
|
removal() {
|
|
1315
1517
|
const level = this.pathN?.level ?? 0;
|
|
@@ -1321,35 +1523,53 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
1321
1523
|
return level < 0 ? this.nibling() : this.auncle();
|
|
1322
1524
|
}
|
|
1323
1525
|
const removed = Math.abs(level);
|
|
1324
|
-
return `${cousinWord(degree,
|
|
1526
|
+
return `${cousinWord(degree, sexOf3(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
|
|
1325
1527
|
}
|
|
1326
1528
|
auncle() {
|
|
1327
1529
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1328
|
-
const
|
|
1329
|
-
|
|
1530
|
+
const sex = sexOf3(this.personN);
|
|
1531
|
+
if (level <= 1) {
|
|
1532
|
+
if (sex === "m") {
|
|
1533
|
+
return "\u0434\u044F\u0434\u044F";
|
|
1534
|
+
}
|
|
1535
|
+
if (sex === "f") {
|
|
1536
|
+
return "\u0442\u0451\u0442\u044F";
|
|
1537
|
+
}
|
|
1538
|
+
return "\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F";
|
|
1539
|
+
}
|
|
1540
|
+
const pra = praRepeat(level - 2);
|
|
1330
1541
|
if (sex === "m") {
|
|
1331
|
-
return
|
|
1542
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434`;
|
|
1332
1543
|
}
|
|
1333
1544
|
if (sex === "f") {
|
|
1334
|
-
return
|
|
1545
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u0430\u044F ${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
1335
1546
|
}
|
|
1336
|
-
return
|
|
1547
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
1337
1548
|
}
|
|
1338
1549
|
nibling() {
|
|
1339
1550
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1340
|
-
const
|
|
1341
|
-
|
|
1551
|
+
const sex = sexOf3(this.personN);
|
|
1552
|
+
if (level <= 1) {
|
|
1553
|
+
if (sex === "m") {
|
|
1554
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A";
|
|
1555
|
+
}
|
|
1556
|
+
if (sex === "f") {
|
|
1557
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
1558
|
+
}
|
|
1559
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
1560
|
+
}
|
|
1561
|
+
const pra = praRepeat(level - 2);
|
|
1342
1562
|
if (sex === "m") {
|
|
1343
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
1563
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
1344
1564
|
}
|
|
1345
1565
|
if (sex === "f") {
|
|
1346
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
1566
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u0430\u044F \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
1347
1567
|
}
|
|
1348
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
1568
|
+
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`;
|
|
1349
1569
|
}
|
|
1350
1570
|
parent() {
|
|
1351
1571
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1352
|
-
const sex =
|
|
1572
|
+
const sex = sexOf3(this.personN);
|
|
1353
1573
|
if (level <= 1) {
|
|
1354
1574
|
if (sex === "m") {
|
|
1355
1575
|
return "\u043E\u0442\u0435\u0446";
|
|
@@ -1379,7 +1599,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
1379
1599
|
}
|
|
1380
1600
|
child() {
|
|
1381
1601
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1382
|
-
const sex =
|
|
1602
|
+
const sex = sexOf3(this.personN);
|
|
1383
1603
|
if (level <= 1) {
|
|
1384
1604
|
if (sex === "m") {
|
|
1385
1605
|
return "\u0441\u044B\u043D";
|
|
@@ -1408,14 +1628,14 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
1408
1628
|
return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
|
|
1409
1629
|
}
|
|
1410
1630
|
sibling() {
|
|
1411
|
-
const sex =
|
|
1631
|
+
const sex = sexOf3(this.personN);
|
|
1412
1632
|
if (sex === "m") {
|
|
1413
1633
|
return "\u0431\u0440\u0430\u0442";
|
|
1414
1634
|
}
|
|
1415
1635
|
if (sex === "f") {
|
|
1416
1636
|
return "\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
1417
1637
|
}
|
|
1418
|
-
return "\u0441\
|
|
1638
|
+
return "\u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
1419
1639
|
}
|
|
1420
1640
|
halfBlood(relation) {
|
|
1421
1641
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -1429,7 +1649,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
1429
1649
|
return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
|
|
1430
1650
|
}
|
|
1431
1651
|
spouse() {
|
|
1432
|
-
const sex =
|
|
1652
|
+
const sex = sexOf3(this.personN);
|
|
1433
1653
|
if (sex === "m") {
|
|
1434
1654
|
return "\u043C\u0443\u0436";
|
|
1435
1655
|
}
|
|
@@ -1443,7 +1663,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
1443
1663
|
return "";
|
|
1444
1664
|
}
|
|
1445
1665
|
const spouse = this.path?.[1].indi;
|
|
1446
|
-
const sex =
|
|
1666
|
+
const sex = sexOf3(spouse);
|
|
1447
1667
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
1448
1668
|
return `${relation} ${toGenitive(spouseType)}`;
|
|
1449
1669
|
}
|
|
@@ -1452,13 +1672,13 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
1452
1672
|
return "";
|
|
1453
1673
|
}
|
|
1454
1674
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
1455
|
-
const sex =
|
|
1675
|
+
const sex = sexOf3(spouse);
|
|
1456
1676
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
1457
1677
|
return `${spouseType} ${toGenitive(relation)}`;
|
|
1458
1678
|
}
|
|
1459
1679
|
of(relation) {
|
|
1460
1680
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
1461
|
-
nameOrder:
|
|
1681
|
+
nameOrder: this.nameOrder
|
|
1462
1682
|
});
|
|
1463
1683
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
1464
1684
|
if (this.displayName === "none") {
|
|
@@ -1489,7 +1709,22 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
1489
1709
|
if (!relation || !this.pathN?.relation) {
|
|
1490
1710
|
return relation ?? "";
|
|
1491
1711
|
}
|
|
1492
|
-
|
|
1712
|
+
const mapped = parentRelationsRu[this.pathN.relation]?.[relation];
|
|
1713
|
+
if (mapped) {
|
|
1714
|
+
return mapped;
|
|
1715
|
+
}
|
|
1716
|
+
if (this.pathN.relation === "step") {
|
|
1717
|
+
return `\u043D\u0435\u0440\u043E\u0434\u043D\u043E\u0439 ${relation}`;
|
|
1718
|
+
}
|
|
1719
|
+
if (this.pathN.relation === "adopted") {
|
|
1720
|
+
return /сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
|
|
1721
|
+
relation
|
|
1722
|
+
) ? `\u043F\u0440\u0438\u0451\u043C\u043D\u0430\u044F ${relation}` : `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
1723
|
+
}
|
|
1724
|
+
if (this.pathN.relation === "foster") {
|
|
1725
|
+
return `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
1726
|
+
}
|
|
1727
|
+
return relation;
|
|
1493
1728
|
}
|
|
1494
1729
|
};
|
|
1495
1730
|
|
|
@@ -1513,7 +1748,7 @@ var InLawsJa = {
|
|
|
1513
1748
|
};
|
|
1514
1749
|
|
|
1515
1750
|
// src/kinship-translator/kinship-translator.ja.ts
|
|
1516
|
-
var
|
|
1751
|
+
var sexOf4 = (person) => {
|
|
1517
1752
|
if (person?.isMale?.()) {
|
|
1518
1753
|
return "m";
|
|
1519
1754
|
}
|
|
@@ -1522,7 +1757,7 @@ var sexOf2 = (person) => {
|
|
|
1522
1757
|
}
|
|
1523
1758
|
return "n";
|
|
1524
1759
|
};
|
|
1525
|
-
var
|
|
1760
|
+
var pick3 = (sex, male, female, neutral) => {
|
|
1526
1761
|
if (sex === "m") {
|
|
1527
1762
|
return male;
|
|
1528
1763
|
}
|
|
@@ -1535,18 +1770,18 @@ var lineal = (level, sex, kind) => {
|
|
|
1535
1770
|
const L = Math.max(1, level);
|
|
1536
1771
|
if (kind === "asc") {
|
|
1537
1772
|
if (L <= 1) {
|
|
1538
|
-
return
|
|
1773
|
+
return pick3(sex, "\u7236", "\u6BCD", "\u89AA");
|
|
1539
1774
|
}
|
|
1540
1775
|
if (L === 2) {
|
|
1541
|
-
return
|
|
1776
|
+
return pick3(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
1542
1777
|
}
|
|
1543
1778
|
if (L === 3) {
|
|
1544
|
-
return
|
|
1779
|
+
return pick3(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
1545
1780
|
}
|
|
1546
1781
|
if (L === 4) {
|
|
1547
|
-
return
|
|
1782
|
+
return pick3(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
1548
1783
|
}
|
|
1549
|
-
return
|
|
1784
|
+
return pick3(
|
|
1550
1785
|
sex,
|
|
1551
1786
|
`${L - 1}\u4E16\u306E\u7956\u7236`,
|
|
1552
1787
|
`${L - 1}\u4E16\u306E\u7956\u6BCD`,
|
|
@@ -1554,7 +1789,7 @@ var lineal = (level, sex, kind) => {
|
|
|
1554
1789
|
);
|
|
1555
1790
|
}
|
|
1556
1791
|
if (L <= 1) {
|
|
1557
|
-
return
|
|
1792
|
+
return pick3(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
|
|
1558
1793
|
}
|
|
1559
1794
|
if (L === 2) {
|
|
1560
1795
|
return "\u5B6B";
|
|
@@ -1601,52 +1836,52 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
1601
1836
|
}
|
|
1602
1837
|
auncle() {
|
|
1603
1838
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1604
|
-
const sex =
|
|
1605
|
-
if (level <=
|
|
1606
|
-
return
|
|
1839
|
+
const sex = sexOf4(this.personN);
|
|
1840
|
+
if (level <= 1) {
|
|
1841
|
+
return pick3(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
|
|
1607
1842
|
}
|
|
1608
|
-
if (level ===
|
|
1609
|
-
return
|
|
1843
|
+
if (level === 2) {
|
|
1844
|
+
return pick3(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
|
|
1610
1845
|
}
|
|
1611
|
-
return
|
|
1846
|
+
return pick3(
|
|
1612
1847
|
sex,
|
|
1613
|
-
`${level -
|
|
1614
|
-
`${level -
|
|
1615
|
-
`${level -
|
|
1848
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058`,
|
|
1849
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3070`,
|
|
1850
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
|
|
1616
1851
|
);
|
|
1617
1852
|
}
|
|
1618
1853
|
nibling() {
|
|
1619
1854
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1620
|
-
const sex =
|
|
1621
|
-
if (level <=
|
|
1622
|
-
return
|
|
1855
|
+
const sex = sexOf4(this.personN);
|
|
1856
|
+
if (level <= 1) {
|
|
1857
|
+
return pick3(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
|
|
1623
1858
|
}
|
|
1624
|
-
if (level ===
|
|
1625
|
-
return
|
|
1859
|
+
if (level === 2) {
|
|
1860
|
+
return pick3(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
|
|
1626
1861
|
}
|
|
1627
|
-
return
|
|
1862
|
+
return pick3(
|
|
1628
1863
|
sex,
|
|
1629
|
-
`${level -
|
|
1630
|
-
`${level -
|
|
1631
|
-
`${level -
|
|
1864
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525`,
|
|
1865
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u59EA`,
|
|
1866
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525/\u59EA`
|
|
1632
1867
|
);
|
|
1633
1868
|
}
|
|
1634
1869
|
parent() {
|
|
1635
1870
|
return lineal(
|
|
1636
1871
|
Math.abs(this.pathN?.level ?? 0),
|
|
1637
|
-
|
|
1872
|
+
sexOf4(this.personN),
|
|
1638
1873
|
"asc"
|
|
1639
1874
|
);
|
|
1640
1875
|
}
|
|
1641
1876
|
child() {
|
|
1642
1877
|
return lineal(
|
|
1643
1878
|
Math.abs(this.pathN?.level ?? 0),
|
|
1644
|
-
|
|
1879
|
+
sexOf4(this.personN),
|
|
1645
1880
|
"desc"
|
|
1646
1881
|
);
|
|
1647
1882
|
}
|
|
1648
1883
|
sibling() {
|
|
1649
|
-
return
|
|
1884
|
+
return pick3(sexOf4(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
|
|
1650
1885
|
}
|
|
1651
1886
|
halfBlood(relation) {
|
|
1652
1887
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -1655,14 +1890,14 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
1655
1890
|
return `\u7570\u7236\u6BCD\u306E${relation}`;
|
|
1656
1891
|
}
|
|
1657
1892
|
spouse() {
|
|
1658
|
-
return
|
|
1893
|
+
return pick3(sexOf4(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
1659
1894
|
}
|
|
1660
1895
|
ofSpouse(relation) {
|
|
1661
1896
|
if (!relation) {
|
|
1662
1897
|
return "";
|
|
1663
1898
|
}
|
|
1664
|
-
const spouseType =
|
|
1665
|
-
|
|
1899
|
+
const spouseType = pick3(
|
|
1900
|
+
sexOf4(this.path?.[1].indi),
|
|
1666
1901
|
"\u592B",
|
|
1667
1902
|
"\u59BB",
|
|
1668
1903
|
"\u914D\u5076\u8005"
|
|
@@ -1674,12 +1909,12 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
1674
1909
|
return "";
|
|
1675
1910
|
}
|
|
1676
1911
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
1677
|
-
const spouseType =
|
|
1912
|
+
const spouseType = pick3(sexOf4(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
1678
1913
|
return `${relation}\u306E${spouseType}`;
|
|
1679
1914
|
}
|
|
1680
1915
|
of(relation) {
|
|
1681
1916
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
1682
|
-
nameOrder:
|
|
1917
|
+
nameOrder: this.nameOrder
|
|
1683
1918
|
});
|
|
1684
1919
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
1685
1920
|
if (this.displayName === "none") {
|
|
@@ -1710,7 +1945,28 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
1710
1945
|
if (!relation || !this.pathN?.relation) {
|
|
1711
1946
|
return relation ?? "";
|
|
1712
1947
|
}
|
|
1713
|
-
|
|
1948
|
+
if (this.pathN.relation === "step") {
|
|
1949
|
+
if (relation === "\u7236") {
|
|
1950
|
+
return "\u7EE7\u7236";
|
|
1951
|
+
}
|
|
1952
|
+
if (relation === "\u6BCD") {
|
|
1953
|
+
return "\u7D99\u6BCD";
|
|
1954
|
+
}
|
|
1955
|
+
if (relation === "\u606F\u5B50") {
|
|
1956
|
+
return "\u7D99\u5B50";
|
|
1957
|
+
}
|
|
1958
|
+
if (relation === "\u5A18") {
|
|
1959
|
+
return "\u7D99\u5A18";
|
|
1960
|
+
}
|
|
1961
|
+
return `\u7D99${relation}`;
|
|
1962
|
+
}
|
|
1963
|
+
if (this.pathN.relation === "adopted") {
|
|
1964
|
+
return `\u990A\u5B50\u306E${relation}`;
|
|
1965
|
+
}
|
|
1966
|
+
if (this.pathN.relation === "foster") {
|
|
1967
|
+
return `\u91CC\u89AA\u306E${relation}`;
|
|
1968
|
+
}
|
|
1969
|
+
return relation;
|
|
1714
1970
|
}
|
|
1715
1971
|
};
|
|
1716
1972
|
|
|
@@ -1719,22 +1975,32 @@ var InLawsZh = {
|
|
|
1719
1975
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u914D\u5076": "\u513F\u5AB3/\u5973\u5A7F",
|
|
1720
1976
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u59BB\u5B50": "\u513F\u5AB3",
|
|
1721
1977
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u4E08\u592B": "\u5973\u5A7F",
|
|
1722
|
-
"
|
|
1723
|
-
"
|
|
1724
|
-
"(\u914D\u5076
|
|
1978
|
+
"\u59BB\u5B50\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD",
|
|
1979
|
+
"\u4E08\u592B\u7684\u6BCD\u4EB2": "\u5A46\u5A46",
|
|
1980
|
+
"(\u914D\u5076)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
|
|
1981
|
+
"\u59BB\u5B50\u7684\u7236\u4EB2": "\u5CB3\u7236",
|
|
1982
|
+
"\u4E08\u592B\u7684\u7236\u4EB2": "\u516C\u516C",
|
|
1983
|
+
"(\u914D\u5076)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
|
|
1984
|
+
"\u59BB\u5B50\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD",
|
|
1985
|
+
"\u4E08\u592B\u7684\u7236\u6BCD": "\u516C\u516C\u5A46\u5A46",
|
|
1986
|
+
"(\u914D\u5076)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
|
|
1725
1987
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u59BB\u5B50": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
1726
1988
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u4E08\u592B": "\u59D0\u592B/\u59B9\u592B",
|
|
1727
1989
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u914D\u5076": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
1728
1990
|
"(\u5F02\u7236\u6BCD\u7684)?\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59D0\u592B/\u59B9\u592B",
|
|
1729
1991
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
1730
1992
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
1731
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
1732
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
1993
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u59D0\u59B9": "\u59E8\u5B50",
|
|
1994
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u59D0\u59B9": "\u59D1\u5B50",
|
|
1995
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
|
|
1996
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u5144\u5F1F": "\u5185\u5144/\u5185\u5F1F",
|
|
1997
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4",
|
|
1998
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
|
|
1733
1999
|
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F\u59D0\u59B9": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9"
|
|
1734
2000
|
};
|
|
1735
2001
|
|
|
1736
2002
|
// src/kinship-translator/kinship-translator.zh.ts
|
|
1737
|
-
var
|
|
2003
|
+
var sexOf5 = (person) => {
|
|
1738
2004
|
if (person?.isMale?.()) {
|
|
1739
2005
|
return "m";
|
|
1740
2006
|
}
|
|
@@ -1743,7 +2009,7 @@ var sexOf3 = (person) => {
|
|
|
1743
2009
|
}
|
|
1744
2010
|
return "n";
|
|
1745
2011
|
};
|
|
1746
|
-
var
|
|
2012
|
+
var pick4 = (sex, male, female, neutral) => {
|
|
1747
2013
|
if (sex === "m") {
|
|
1748
2014
|
return male;
|
|
1749
2015
|
}
|
|
@@ -1756,41 +2022,41 @@ var lineal2 = (level, sex, kind) => {
|
|
|
1756
2022
|
const L = Math.max(1, level);
|
|
1757
2023
|
if (kind === "asc") {
|
|
1758
2024
|
if (L <= 1) {
|
|
1759
|
-
return
|
|
2025
|
+
return pick4(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
|
|
1760
2026
|
}
|
|
1761
2027
|
if (L === 2) {
|
|
1762
|
-
return
|
|
2028
|
+
return pick4(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
1763
2029
|
}
|
|
1764
2030
|
if (L === 3) {
|
|
1765
|
-
return
|
|
2031
|
+
return pick4(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
1766
2032
|
}
|
|
1767
2033
|
if (L === 4) {
|
|
1768
|
-
return
|
|
2034
|
+
return pick4(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
1769
2035
|
}
|
|
1770
|
-
return
|
|
2036
|
+
return pick4(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
|
|
1771
2037
|
}
|
|
1772
2038
|
if (L <= 1) {
|
|
1773
|
-
return
|
|
2039
|
+
return pick4(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
|
|
1774
2040
|
}
|
|
1775
2041
|
if (L === 2) {
|
|
1776
|
-
return
|
|
2042
|
+
return pick4(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
|
|
1777
2043
|
}
|
|
1778
2044
|
if (L === 3) {
|
|
1779
|
-
return
|
|
2045
|
+
return pick4(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
|
|
1780
2046
|
}
|
|
1781
2047
|
if (L === 4) {
|
|
1782
|
-
return
|
|
2048
|
+
return pick4(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
|
|
1783
2049
|
}
|
|
1784
|
-
return
|
|
2050
|
+
return pick4(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
|
|
1785
2051
|
};
|
|
1786
2052
|
var cousinPlain2 = (degree, sex) => {
|
|
1787
2053
|
if (degree <= 1) {
|
|
1788
|
-
return
|
|
2054
|
+
return pick4(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
|
|
1789
2055
|
}
|
|
1790
2056
|
if (degree === 2) {
|
|
1791
|
-
return
|
|
2057
|
+
return pick4(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
|
|
1792
2058
|
}
|
|
1793
|
-
return
|
|
2059
|
+
return pick4(
|
|
1794
2060
|
sex,
|
|
1795
2061
|
`${degree}\u4EE3\u5802\u8868\u5144\u5F1F`,
|
|
1796
2062
|
`${degree}\u4EE3\u5802\u8868\u59D0\u59B9`,
|
|
@@ -1803,7 +2069,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
1803
2069
|
if (degree > 0) {
|
|
1804
2070
|
degree = degree - 1;
|
|
1805
2071
|
}
|
|
1806
|
-
return cousinPlain2(degree,
|
|
2072
|
+
return cousinPlain2(degree, sexOf5(this.personN));
|
|
1807
2073
|
}
|
|
1808
2074
|
removal() {
|
|
1809
2075
|
const level = this.pathN?.level ?? 0;
|
|
@@ -1815,56 +2081,56 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
1815
2081
|
return level < 0 ? this.nibling() : this.auncle();
|
|
1816
2082
|
}
|
|
1817
2083
|
const removed = Math.abs(level);
|
|
1818
|
-
return `${cousinPlain2(degree,
|
|
2084
|
+
return `${cousinPlain2(degree, sexOf5(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
|
|
1819
2085
|
}
|
|
1820
2086
|
auncle() {
|
|
1821
2087
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1822
|
-
const sex =
|
|
1823
|
-
if (level <=
|
|
1824
|
-
return
|
|
2088
|
+
const sex = sexOf5(this.personN);
|
|
2089
|
+
if (level <= 1) {
|
|
2090
|
+
return pick4(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
|
|
1825
2091
|
}
|
|
1826
|
-
if (level ===
|
|
1827
|
-
return
|
|
2092
|
+
if (level === 2) {
|
|
2093
|
+
return pick4(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
|
|
1828
2094
|
}
|
|
1829
|
-
return
|
|
2095
|
+
return pick4(
|
|
1830
2096
|
sex,
|
|
1831
|
-
`${level -
|
|
1832
|
-
`${level -
|
|
1833
|
-
`${level -
|
|
2097
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u53D4`,
|
|
2098
|
+
`${level - 1}\u4EE3\u524D\u7684\u963F\u59E8`,
|
|
2099
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
|
|
1834
2100
|
);
|
|
1835
2101
|
}
|
|
1836
2102
|
nibling() {
|
|
1837
2103
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1838
|
-
const sex =
|
|
1839
|
-
if (level <=
|
|
1840
|
-
return
|
|
2104
|
+
const sex = sexOf5(this.personN);
|
|
2105
|
+
if (level <= 1) {
|
|
2106
|
+
return pick4(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
|
|
1841
2107
|
}
|
|
1842
|
-
if (level ===
|
|
1843
|
-
return
|
|
2108
|
+
if (level === 2) {
|
|
2109
|
+
return pick4(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
|
|
1844
2110
|
}
|
|
1845
|
-
return
|
|
2111
|
+
return pick4(
|
|
1846
2112
|
sex,
|
|
1847
|
-
`${level -
|
|
1848
|
-
`${level -
|
|
1849
|
-
`${level -
|
|
2113
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
|
|
2114
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5973`,
|
|
2115
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
|
|
1850
2116
|
);
|
|
1851
2117
|
}
|
|
1852
2118
|
parent() {
|
|
1853
2119
|
return lineal2(
|
|
1854
2120
|
Math.abs(this.pathN?.level ?? 0),
|
|
1855
|
-
|
|
2121
|
+
sexOf5(this.personN),
|
|
1856
2122
|
"asc"
|
|
1857
2123
|
);
|
|
1858
2124
|
}
|
|
1859
2125
|
child() {
|
|
1860
2126
|
return lineal2(
|
|
1861
2127
|
Math.abs(this.pathN?.level ?? 0),
|
|
1862
|
-
|
|
2128
|
+
sexOf5(this.personN),
|
|
1863
2129
|
"desc"
|
|
1864
2130
|
);
|
|
1865
2131
|
}
|
|
1866
2132
|
sibling() {
|
|
1867
|
-
return
|
|
2133
|
+
return pick4(sexOf5(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
|
|
1868
2134
|
}
|
|
1869
2135
|
halfBlood(relation) {
|
|
1870
2136
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -1873,14 +2139,14 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
1873
2139
|
return `\u5F02\u7236\u6BCD\u7684${relation}`;
|
|
1874
2140
|
}
|
|
1875
2141
|
spouse() {
|
|
1876
|
-
return
|
|
2142
|
+
return pick4(sexOf5(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
1877
2143
|
}
|
|
1878
2144
|
ofSpouse(relation) {
|
|
1879
2145
|
if (!relation) {
|
|
1880
2146
|
return "";
|
|
1881
2147
|
}
|
|
1882
|
-
const spouseType =
|
|
1883
|
-
|
|
2148
|
+
const spouseType = pick4(
|
|
2149
|
+
sexOf5(this.path?.[1].indi),
|
|
1884
2150
|
"\u4E08\u592B",
|
|
1885
2151
|
"\u59BB\u5B50",
|
|
1886
2152
|
"\u914D\u5076"
|
|
@@ -1892,12 +2158,12 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
1892
2158
|
return "";
|
|
1893
2159
|
}
|
|
1894
2160
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
1895
|
-
const spouseType =
|
|
2161
|
+
const spouseType = pick4(sexOf5(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
1896
2162
|
return `${relation}\u7684${spouseType}`;
|
|
1897
2163
|
}
|
|
1898
2164
|
of(relation) {
|
|
1899
2165
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
1900
|
-
nameOrder:
|
|
2166
|
+
nameOrder: this.nameOrder
|
|
1901
2167
|
});
|
|
1902
2168
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
1903
2169
|
if (this.displayName === "none") {
|
|
@@ -1928,27 +2194,68 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
1928
2194
|
if (!relation || !this.pathN?.relation) {
|
|
1929
2195
|
return relation ?? "";
|
|
1930
2196
|
}
|
|
1931
|
-
|
|
2197
|
+
if (this.pathN.relation === "step") {
|
|
2198
|
+
if (relation === "\u7236\u4EB2") {
|
|
2199
|
+
return "\u7EE7\u7236";
|
|
2200
|
+
}
|
|
2201
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
2202
|
+
return "\u7EE7\u6BCD";
|
|
2203
|
+
}
|
|
2204
|
+
if (relation === "\u513F\u5B50") {
|
|
2205
|
+
return "\u7EE7\u5B50";
|
|
2206
|
+
}
|
|
2207
|
+
if (relation === "\u5973\u513F") {
|
|
2208
|
+
return "\u7EE7\u5973";
|
|
2209
|
+
}
|
|
2210
|
+
return `\u7EE7${relation}`;
|
|
2211
|
+
}
|
|
2212
|
+
if (this.pathN.relation === "adopted") {
|
|
2213
|
+
if (relation === "\u7236\u4EB2") {
|
|
2214
|
+
return "\u517B\u7236";
|
|
2215
|
+
}
|
|
2216
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
2217
|
+
return "\u517B\u6BCD";
|
|
2218
|
+
}
|
|
2219
|
+
if (relation === "\u513F\u5B50") {
|
|
2220
|
+
return "\u517B\u5B50";
|
|
2221
|
+
}
|
|
2222
|
+
if (relation === "\u5973\u513F") {
|
|
2223
|
+
return "\u517B\u5973";
|
|
2224
|
+
}
|
|
2225
|
+
return `\u517B${relation}`;
|
|
2226
|
+
}
|
|
2227
|
+
if (this.pathN.relation === "foster") {
|
|
2228
|
+
return `\u5BC4\u517B${relation}`;
|
|
2229
|
+
}
|
|
2230
|
+
return relation;
|
|
1932
2231
|
}
|
|
1933
2232
|
};
|
|
1934
2233
|
|
|
1935
2234
|
// src/kinship-translator/kinship-translator.ts
|
|
2235
|
+
var nameOrderForLang = (lang) => lang === "hu" || lang === "ja" || lang === "zh" ? "last-first" : "first-last";
|
|
1936
2236
|
var KinshipTranslator = class {
|
|
1937
|
-
constructor(person1, person2, lang = "en", entirePath, displayName = "givenname") {
|
|
2237
|
+
constructor(person1, person2, lang = "en", entirePath, displayName = "givenname", nameOrder) {
|
|
1938
2238
|
this.displayName = displayName;
|
|
1939
2239
|
this.lang = lang;
|
|
1940
2240
|
this.entirePath = entirePath;
|
|
1941
2241
|
this.person1 = person1;
|
|
1942
2242
|
this.person2 = typeof person2 === "string" ? this.person1.getGedcom()?.indi(person2) : person2;
|
|
1943
2243
|
this.path = this.person1.path(this.person2);
|
|
2244
|
+
const order = nameOrder ?? nameOrderForLang(lang);
|
|
2245
|
+
this.nameOrder = order;
|
|
1944
2246
|
if (translators_exports[lang]) {
|
|
1945
2247
|
this.translator = new translators_exports[lang](
|
|
1946
2248
|
this.path ?? [],
|
|
1947
|
-
displayName
|
|
2249
|
+
displayName,
|
|
2250
|
+
order
|
|
1948
2251
|
);
|
|
1949
2252
|
}
|
|
1950
2253
|
if (!this.translator) {
|
|
1951
|
-
this.translator = new KinshipTranslatorEn(
|
|
2254
|
+
this.translator = new KinshipTranslatorEn(
|
|
2255
|
+
this.path ?? [],
|
|
2256
|
+
displayName,
|
|
2257
|
+
order
|
|
2258
|
+
);
|
|
1952
2259
|
}
|
|
1953
2260
|
}
|
|
1954
2261
|
get path0() {
|
|
@@ -1993,14 +2300,16 @@ var KinshipTranslator = class {
|
|
|
1993
2300
|
showMainPerson,
|
|
1994
2301
|
this.lang,
|
|
1995
2302
|
false,
|
|
1996
|
-
this.displayName
|
|
2303
|
+
this.displayName,
|
|
2304
|
+
this.nameOrder
|
|
1997
2305
|
),
|
|
1998
2306
|
relative: this.path?.[index - 1]?.indi.kinship(
|
|
1999
2307
|
path2.indi.id,
|
|
2000
2308
|
showMainPerson,
|
|
2001
2309
|
this.lang,
|
|
2002
2310
|
false,
|
|
2003
|
-
this.displayName
|
|
2311
|
+
this.displayName,
|
|
2312
|
+
this.nameOrder
|
|
2004
2313
|
)
|
|
2005
2314
|
}));
|
|
2006
2315
|
return path;
|
|
@@ -7022,14 +7331,15 @@ var Indi = class extends Common {
|
|
|
7022
7331
|
}
|
|
7023
7332
|
return foundPath;
|
|
7024
7333
|
}
|
|
7025
|
-
kinship(other, showMainPerson, lang = "en", entirePath, displayName = "givenname") {
|
|
7334
|
+
kinship(other, showMainPerson, lang = "en", entirePath, displayName = "givenname", nameOrder) {
|
|
7026
7335
|
const KinshipTranslatorClass2 = getKinshipTranslatorClass();
|
|
7027
7336
|
const translator = new KinshipTranslatorClass2(
|
|
7028
7337
|
this,
|
|
7029
7338
|
other,
|
|
7030
7339
|
lang,
|
|
7031
7340
|
entirePath,
|
|
7032
|
-
showMainPerson ? displayName : void 0
|
|
7341
|
+
showMainPerson ? displayName : void 0,
|
|
7342
|
+
nameOrder
|
|
7033
7343
|
);
|
|
7034
7344
|
return translator.translate(!!showMainPerson);
|
|
7035
7345
|
}
|
|
@@ -7856,45 +8166,64 @@ var nameFormatter = (indiName, settings, letterOnAll = true, indi, debug) => {
|
|
|
7856
8166
|
};
|
|
7857
8167
|
|
|
7858
8168
|
// src/kinship-translator/patterns.de.ts
|
|
8169
|
+
var parentRelationsDe = {
|
|
8170
|
+
step: "Stief",
|
|
8171
|
+
foster: "Pflege",
|
|
8172
|
+
adopted: "Adoptiv"
|
|
8173
|
+
};
|
|
7859
8174
|
var InLawsDe = {
|
|
7860
|
-
"Ehepartner von (
|
|
7861
|
-
"Ehefrau von (
|
|
7862
|
-
"Ehemann von (
|
|
7863
|
-
"
|
|
7864
|
-
"
|
|
7865
|
-
"
|
|
7866
|
-
"Ehefrau von (Halb)
|
|
7867
|
-
"Ehemann von (Halb)
|
|
7868
|
-
"Ehepartner von (Halb)
|
|
7869
|
-
"(Halb)
|
|
7870
|
-
"(Halb)
|
|
7871
|
-
"(Halb)
|
|
8175
|
+
"Ehepartner von (Kind|Tochter|Sohn)": "Schwiegerkind",
|
|
8176
|
+
"Ehefrau von (Kind|Tochter|Sohn)": "Schwiegertochter",
|
|
8177
|
+
"Ehemann von (Kind|Tochter|Sohn)": "Schwiegersohn",
|
|
8178
|
+
"Mutter (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegermutter",
|
|
8179
|
+
"Vater (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegervater",
|
|
8180
|
+
"Elternteil (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegerelternteil",
|
|
8181
|
+
"Ehefrau von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schw\xE4gerin",
|
|
8182
|
+
"Ehemann von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager",
|
|
8183
|
+
"Ehepartner von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager/Schw\xE4gerin",
|
|
8184
|
+
"(Halb)?-?(Schwester|schwester) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schw\xE4gerin",
|
|
8185
|
+
"(Halb)?-?(Bruder|bruder) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager",
|
|
8186
|
+
"(Halb)?-?(Geschwister|geschwister) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager/Schw\xE4gerin"
|
|
7872
8187
|
};
|
|
7873
8188
|
|
|
7874
8189
|
// src/kinship-translator/kinship-translator.de.ts
|
|
7875
|
-
var
|
|
7876
|
-
|
|
7877
|
-
|
|
7878
|
-
|
|
7879
|
-
|
|
7880
|
-
|
|
7881
|
-
if (level === 2) {
|
|
7882
|
-
return "Gro\xDF";
|
|
7883
|
-
}
|
|
7884
|
-
if (level === 3) {
|
|
7885
|
-
return "Urgro\xDF";
|
|
7886
|
-
}
|
|
7887
|
-
return `Ur${level - 2}-gro\xDF`;
|
|
8190
|
+
var sexOf6 = (person) => {
|
|
8191
|
+
if (person?.isMale?.()) {
|
|
8192
|
+
return "m";
|
|
8193
|
+
}
|
|
8194
|
+
if (person?.isFemale?.()) {
|
|
8195
|
+
return "f";
|
|
7888
8196
|
}
|
|
8197
|
+
return "n";
|
|
8198
|
+
};
|
|
8199
|
+
var pick5 = (sex, male, female, neutral) => {
|
|
8200
|
+
if (sex === "m") {
|
|
8201
|
+
return male;
|
|
8202
|
+
}
|
|
8203
|
+
if (sex === "f") {
|
|
8204
|
+
return female;
|
|
8205
|
+
}
|
|
8206
|
+
return neutral;
|
|
8207
|
+
};
|
|
8208
|
+
var ur = (count) => count > 0 ? "Ur".repeat(count) : "";
|
|
8209
|
+
var genitiveArticle = (spouseType) => {
|
|
8210
|
+
if (spouseType === "Ehefrau") {
|
|
8211
|
+
return `der ${spouseType}`;
|
|
8212
|
+
}
|
|
8213
|
+
return `des ${spouseType}s`;
|
|
8214
|
+
};
|
|
8215
|
+
var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
7889
8216
|
indirect() {
|
|
7890
8217
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
7891
8218
|
if (degree > 0) {
|
|
7892
8219
|
degree = degree - 1;
|
|
7893
8220
|
}
|
|
7894
|
-
|
|
7895
|
-
|
|
8221
|
+
const sex = sexOf6(this.personN);
|
|
8222
|
+
const cousin = pick5(sex, "Cousin", "Cousine", "Cousin/Cousine");
|
|
8223
|
+
if (degree <= 1) {
|
|
8224
|
+
return cousin;
|
|
7896
8225
|
}
|
|
7897
|
-
return
|
|
8226
|
+
return `${cousin} ${degree}. Grades`;
|
|
7898
8227
|
}
|
|
7899
8228
|
removal() {
|
|
7900
8229
|
const level = this.pathN?.level ?? 0;
|
|
@@ -7905,106 +8234,106 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
7905
8234
|
if (!degree) {
|
|
7906
8235
|
return level < 0 ? this.nibling() : this.auncle();
|
|
7907
8236
|
}
|
|
7908
|
-
return
|
|
8237
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 entfernt`;
|
|
7909
8238
|
}
|
|
7910
8239
|
auncle() {
|
|
7911
|
-
const
|
|
7912
|
-
|
|
7913
|
-
|
|
7914
|
-
|
|
7915
|
-
if (this.personN?.isFemale()) {
|
|
7916
|
-
return `${prefix}tante`;
|
|
8240
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
8241
|
+
const sex = sexOf6(this.personN);
|
|
8242
|
+
if (level <= 1) {
|
|
8243
|
+
return pick5(sex, "Onkel", "Tante", "Onkel/Tante");
|
|
7917
8244
|
}
|
|
7918
|
-
|
|
8245
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
8246
|
+
return pick5(
|
|
8247
|
+
sex,
|
|
8248
|
+
`${prefix}onkel`,
|
|
8249
|
+
`${prefix}tante`,
|
|
8250
|
+
`${prefix}onkel/tante`
|
|
8251
|
+
);
|
|
7919
8252
|
}
|
|
7920
8253
|
nibling() {
|
|
7921
|
-
const
|
|
7922
|
-
|
|
7923
|
-
|
|
7924
|
-
|
|
7925
|
-
if (this.personN?.isFemale()) {
|
|
7926
|
-
return `${prefix}nichte`;
|
|
8254
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
8255
|
+
const sex = sexOf6(this.personN);
|
|
8256
|
+
if (level <= 1) {
|
|
8257
|
+
return pick5(sex, "Neffe", "Nichte", "Neffe/Nichte");
|
|
7927
8258
|
}
|
|
7928
|
-
|
|
8259
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
8260
|
+
return pick5(
|
|
8261
|
+
sex,
|
|
8262
|
+
`${prefix}neffe`,
|
|
8263
|
+
`${prefix}nichte`,
|
|
8264
|
+
`${prefix}neffe/nichte`
|
|
8265
|
+
);
|
|
7929
8266
|
}
|
|
7930
8267
|
parent() {
|
|
7931
|
-
const
|
|
7932
|
-
|
|
7933
|
-
|
|
7934
|
-
|
|
7935
|
-
if (this.personN?.isFemale()) {
|
|
7936
|
-
return `${prefix}mutter`;
|
|
8268
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
8269
|
+
const sex = sexOf6(this.personN);
|
|
8270
|
+
if (level <= 1) {
|
|
8271
|
+
return pick5(sex, "Vater", "Mutter", "Elternteil");
|
|
7937
8272
|
}
|
|
7938
|
-
|
|
8273
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
8274
|
+
return pick5(
|
|
8275
|
+
sex,
|
|
8276
|
+
`${prefix}vater`,
|
|
8277
|
+
`${prefix}mutter`,
|
|
8278
|
+
`${prefix}elternteil`
|
|
8279
|
+
);
|
|
7939
8280
|
}
|
|
7940
8281
|
child() {
|
|
7941
|
-
const
|
|
7942
|
-
|
|
7943
|
-
|
|
7944
|
-
|
|
7945
|
-
if (this.personN?.isFemale()) {
|
|
7946
|
-
return `${prefix}tochter`;
|
|
8282
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
8283
|
+
const sex = sexOf6(this.personN);
|
|
8284
|
+
if (level <= 1) {
|
|
8285
|
+
return pick5(sex, "Sohn", "Tochter", "Kind");
|
|
7947
8286
|
}
|
|
7948
|
-
|
|
8287
|
+
const prefix = ur(level - 2);
|
|
8288
|
+
return pick5(
|
|
8289
|
+
sex,
|
|
8290
|
+
`${prefix}Enkel`,
|
|
8291
|
+
`${prefix}Enkelin`,
|
|
8292
|
+
`${prefix}Enkelkind`
|
|
8293
|
+
);
|
|
7949
8294
|
}
|
|
7950
8295
|
sibling() {
|
|
7951
|
-
|
|
7952
|
-
return "bruder";
|
|
7953
|
-
}
|
|
7954
|
-
if (this.personN?.isFemale()) {
|
|
7955
|
-
return "schwester";
|
|
7956
|
-
}
|
|
7957
|
-
return "geschwister";
|
|
8296
|
+
return pick5(sexOf6(this.personN), "Bruder", "Schwester", "Geschwister");
|
|
7958
8297
|
}
|
|
7959
8298
|
halfBlood(relation) {
|
|
7960
8299
|
if (!relation || !this.isHalfBlood) {
|
|
7961
8300
|
return relation ?? "";
|
|
7962
8301
|
}
|
|
7963
|
-
if (
|
|
8302
|
+
if (/[\s-]/.test(relation) || /^(Groß|Ur)/.test(relation)) {
|
|
7964
8303
|
return `Halb-${relation}`;
|
|
7965
8304
|
}
|
|
7966
|
-
return `Halb${relation}`;
|
|
8305
|
+
return `Halb${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
7967
8306
|
}
|
|
7968
8307
|
spouse() {
|
|
7969
|
-
|
|
7970
|
-
return "Ehemann";
|
|
7971
|
-
}
|
|
7972
|
-
if (this.personN?.isFemale()) {
|
|
7973
|
-
return "Ehefrau";
|
|
7974
|
-
}
|
|
7975
|
-
return "Ehepartner";
|
|
8308
|
+
return pick5(sexOf6(this.personN), "Ehemann", "Ehefrau", "Ehepartner");
|
|
7976
8309
|
}
|
|
7977
8310
|
ofSpouse(relation) {
|
|
7978
8311
|
if (!relation) {
|
|
7979
8312
|
return "";
|
|
7980
8313
|
}
|
|
7981
|
-
const
|
|
7982
|
-
|
|
7983
|
-
|
|
7984
|
-
|
|
7985
|
-
|
|
7986
|
-
|
|
7987
|
-
|
|
7988
|
-
}
|
|
7989
|
-
return `${relation} des ${spouseType}s`;
|
|
8314
|
+
const spouseType = pick5(
|
|
8315
|
+
sexOf6(this.path?.[1].indi),
|
|
8316
|
+
"Ehemann",
|
|
8317
|
+
"Ehefrau",
|
|
8318
|
+
"Ehepartner"
|
|
8319
|
+
);
|
|
8320
|
+
return `${relation} ${genitiveArticle(spouseType)}`;
|
|
7990
8321
|
}
|
|
7991
8322
|
spouseOf(relation) {
|
|
7992
8323
|
if (!relation) {
|
|
7993
8324
|
return "";
|
|
7994
8325
|
}
|
|
7995
|
-
const
|
|
7996
|
-
|
|
7997
|
-
|
|
7998
|
-
|
|
7999
|
-
|
|
8000
|
-
|
|
8001
|
-
spouseType = "Ehefrau";
|
|
8002
|
-
}
|
|
8326
|
+
const spouseType = pick5(
|
|
8327
|
+
sexOf6(this.path?.[this.path.length - 1].indi),
|
|
8328
|
+
"Ehemann",
|
|
8329
|
+
"Ehefrau",
|
|
8330
|
+
"Ehepartner"
|
|
8331
|
+
);
|
|
8003
8332
|
return `${spouseType} von ${relation}`;
|
|
8004
8333
|
}
|
|
8005
8334
|
of(relation) {
|
|
8006
8335
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
8007
|
-
nameOrder:
|
|
8336
|
+
nameOrder: this.nameOrder
|
|
8008
8337
|
});
|
|
8009
8338
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
8010
8339
|
if (this.displayName === "none") {
|
|
@@ -8017,8 +8346,8 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
8017
8346
|
if (!name || !relation) {
|
|
8018
8347
|
return relation ?? "";
|
|
8019
8348
|
}
|
|
8020
|
-
if (relation.includes(" des ") || relation.includes(" von ")) {
|
|
8021
|
-
return relation.replace(/ (des|von) /, ` $1 ${name}s `);
|
|
8349
|
+
if (relation.includes(" des ") || relation.includes(" der ") || relation.includes(" von ")) {
|
|
8350
|
+
return relation.replace(/ (des|der|von) /, ` $1 ${name}s `);
|
|
8022
8351
|
}
|
|
8023
8352
|
return `${name}s ${relation}`;
|
|
8024
8353
|
}
|
|
@@ -8048,7 +8377,14 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
8048
8377
|
if (!relation || !this.pathN?.relation) {
|
|
8049
8378
|
return relation ?? "";
|
|
8050
8379
|
}
|
|
8051
|
-
|
|
8380
|
+
const prefix = parentRelationsDe[this.pathN.relation];
|
|
8381
|
+
if (!prefix) {
|
|
8382
|
+
return relation;
|
|
8383
|
+
}
|
|
8384
|
+
if (prefix.endsWith("-") || prefix.endsWith(" ")) {
|
|
8385
|
+
return `${prefix}${relation}`;
|
|
8386
|
+
}
|
|
8387
|
+
return `${prefix}${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
8052
8388
|
}
|
|
8053
8389
|
};
|
|
8054
8390
|
|