@treeviz/gedcom-parser 2.1.11 → 2.1.12

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