@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
@@ -5825,7 +5825,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
5825
5825
  }
5826
5826
  return `${hungarianOrdinalize(
5827
5827
  degree
5828
- )}unokatestv\xE9r ${level}x elt\xE1vol\xEDtva`;
5828
+ )}unokatestv\xE9r ${Math.abs(level)}x elt\xE1vol\xEDtva`;
5829
5829
  }
5830
5830
  auncle() {
5831
5831
  const level = this.pathN?.level ?? 0;
@@ -5869,14 +5869,25 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
5869
5869
  return `${ordinalized ? `${ordinalized}unoka` : ""}testv\xE9r ${origPrefix.replace(/nagy$/, "")}unok\xE1ja`;
5870
5870
  }
5871
5871
  parent() {
5872
+ const level = Math.abs(this.pathN?.level ?? 0);
5873
+ if (level <= 1) {
5874
+ if (this.personN?.isMale()) {
5875
+ return "apa";
5876
+ }
5877
+ if (this.personN?.isFemale()) {
5878
+ return "anya";
5879
+ }
5880
+ return "sz\xFCl\u0151";
5881
+ }
5872
5882
  const prefix = this.directPrefix();
5883
+ const gen = prefix === "nagy" ? "" : prefix;
5873
5884
  if (this.personN?.isMale()) {
5874
- return `${prefix}apa`;
5885
+ return `${gen}nagyapa`;
5875
5886
  }
5876
5887
  if (this.personN?.isFemale()) {
5877
- return `${prefix}anya`;
5888
+ return `${gen}nagyanya`;
5878
5889
  }
5879
- return `${prefix}sz\xFCl\u0151`;
5890
+ return `${gen}nagysz\xFCl\u0151`;
5880
5891
  }
5881
5892
  child() {
5882
5893
  const level = Math.abs(this.pathN?.level ?? 0);
@@ -6070,27 +6081,30 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
6070
6081
  if (!degree) {
6071
6082
  return level < 0 ? this.nibling() : this.auncle();
6072
6083
  }
6073
- return `${ordinalize(degree)} cousin ${level}x removed`;
6084
+ return `${ordinalize(degree)} cousin ${Math.abs(level)}x removed`;
6074
6085
  }
6075
6086
  auncle() {
6076
- const prefix = this.directPrefix();
6087
+ const level = Math.abs(this.pathN?.level ?? 0);
6088
+ const greats = level <= 1 ? "" : "great-".repeat(level - 1);
6077
6089
  if (this.personN?.isMale()) {
6078
- return `${prefix}uncle`;
6090
+ return `${greats}uncle`;
6079
6091
  }
6080
6092
  if (this.personN?.isFemale()) {
6081
- return `${prefix}aunt`;
6093
+ return `${greats}aunt`;
6082
6094
  }
6083
- return `${prefix}auncle`;
6095
+ return greats ? `${greats}uncle/${greats}aunt` : "uncle/aunt";
6084
6096
  }
6085
6097
  nibling() {
6086
- const prefix = this.directPrefix();
6098
+ const level = Math.abs(this.pathN?.level ?? 0);
6099
+ const greats = level <= 2 ? "" : "great-".repeat(level - 2);
6100
+ const grand = level <= 1 ? "" : "grand";
6087
6101
  if (this.personN?.isMale()) {
6088
- return `${prefix}nephew`;
6102
+ return `${greats}${grand}nephew`;
6089
6103
  }
6090
6104
  if (this.personN?.isFemale()) {
6091
- return `${prefix}niece`;
6105
+ return `${greats}${grand}niece`;
6092
6106
  }
6093
- return `${prefix}nibling`;
6107
+ return greats || grand ? `${greats}${grand}nephew/${greats}${grand}niece` : "nephew/niece";
6094
6108
  }
6095
6109
  parent() {
6096
6110
  const prefix = this.directPrefix();
@@ -6218,45 +6232,64 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
6218
6232
  };
6219
6233
 
6220
6234
  // src/kinship-translator/patterns.de.ts
6235
+ var parentRelationsDe = {
6236
+ step: "Stief",
6237
+ foster: "Pflege",
6238
+ adopted: "Adoptiv"
6239
+ };
6221
6240
  var InLawsDe = {
6222
- "Ehepartner von (kind|tochter|sohn)": "Schwiegerkind",
6223
- "Ehefrau von (kind|tochter|sohn)": "Schwiegertochter",
6224
- "Ehemann von (kind|tochter|sohn)": "Schwiegersohn",
6225
- "mutter des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegermutter",
6226
- "vater des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegervater",
6227
- "elternteil des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegerelternteil",
6228
- "Ehefrau von (Halb)?(geschwister|schwester|bruder)": "Schw\xE4gerin",
6229
- "Ehemann von (Halb)?(geschwister|schwester|bruder)": "Schwager",
6230
- "Ehepartner von (Halb)?(geschwister|schwester|bruder)": "Schwager/Schw\xE4gerin",
6231
- "(Halb)?schwester des (Ehepartner|Ehefrau|Ehemann)s": "Schw\xE4gerin",
6232
- "(Halb)?bruder des (Ehepartner|Ehefrau|Ehemann)s": "Schwager",
6233
- "(Halb)?geschwister des (Ehepartner|Ehefrau|Ehemann)s": "Schwager/Schw\xE4gerin"
6241
+ "Ehepartner von (Kind|Tochter|Sohn)": "Schwiegerkind",
6242
+ "Ehefrau von (Kind|Tochter|Sohn)": "Schwiegertochter",
6243
+ "Ehemann von (Kind|Tochter|Sohn)": "Schwiegersohn",
6244
+ "Mutter (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegermutter",
6245
+ "Vater (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegervater",
6246
+ "Elternteil (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegerelternteil",
6247
+ "Ehefrau von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schw\xE4gerin",
6248
+ "Ehemann von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager",
6249
+ "Ehepartner von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager/Schw\xE4gerin",
6250
+ "(Halb)?-?(Schwester|schwester) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schw\xE4gerin",
6251
+ "(Halb)?-?(Bruder|bruder) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager",
6252
+ "(Halb)?-?(Geschwister|geschwister) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager/Schw\xE4gerin"
6234
6253
  };
6235
6254
 
6236
6255
  // src/kinship-translator/kinship-translator.de.ts
6237
- var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6238
- directPrefix() {
6239
- const level = Math.abs(this.pathN?.level ?? 0);
6240
- if (level <= 1) {
6241
- return "";
6242
- }
6243
- if (level === 2) {
6244
- return "Gro\xDF";
6245
- }
6246
- if (level === 3) {
6247
- return "Urgro\xDF";
6248
- }
6249
- return `Ur${level - 2}-gro\xDF`;
6256
+ var sexOf = (person) => {
6257
+ if (person?.isMale?.()) {
6258
+ return "m";
6259
+ }
6260
+ if (person?.isFemale?.()) {
6261
+ return "f";
6250
6262
  }
6263
+ return "n";
6264
+ };
6265
+ var pick = (sex, male, female, neutral) => {
6266
+ if (sex === "m") {
6267
+ return male;
6268
+ }
6269
+ if (sex === "f") {
6270
+ return female;
6271
+ }
6272
+ return neutral;
6273
+ };
6274
+ var ur = (count) => count > 0 ? "Ur".repeat(count) : "";
6275
+ var genitiveArticle = (spouseType) => {
6276
+ if (spouseType === "Ehefrau") {
6277
+ return `der ${spouseType}`;
6278
+ }
6279
+ return `des ${spouseType}s`;
6280
+ };
6281
+ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6251
6282
  indirect() {
6252
6283
  let degree = Math.abs(this.pathN?.degree ?? 0);
6253
6284
  if (degree > 0) {
6254
6285
  degree = degree - 1;
6255
6286
  }
6256
- if (degree === 1) {
6257
- return `Cousin`;
6287
+ const sex = sexOf(this.personN);
6288
+ const cousin = pick(sex, "Cousin", "Cousine", "Cousin/Cousine");
6289
+ if (degree <= 1) {
6290
+ return cousin;
6258
6291
  }
6259
- return `Cousin ${degree}. Grades`;
6292
+ return `${cousin} ${degree}. Grades`;
6260
6293
  }
6261
6294
  removal() {
6262
6295
  const level = this.pathN?.level ?? 0;
@@ -6267,101 +6300,101 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6267
6300
  if (!degree) {
6268
6301
  return level < 0 ? this.nibling() : this.auncle();
6269
6302
  }
6270
- return `Cousin ${degree}. Grades ${Math.abs(level)}\xD7 entfernt`;
6303
+ return `${this.indirect()} ${Math.abs(level)}\xD7 entfernt`;
6271
6304
  }
6272
6305
  auncle() {
6273
- const prefix = this.directPrefix();
6274
- if (this.personN?.isMale()) {
6275
- return `${prefix}onkel`;
6276
- }
6277
- if (this.personN?.isFemale()) {
6278
- return `${prefix}tante`;
6306
+ const level = Math.abs(this.pathN?.level ?? 0);
6307
+ const sex = sexOf(this.personN);
6308
+ if (level <= 1) {
6309
+ return pick(sex, "Onkel", "Tante", "Onkel/Tante");
6279
6310
  }
6280
- return `${prefix}onkel/tante`;
6311
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6312
+ return pick(
6313
+ sex,
6314
+ `${prefix}onkel`,
6315
+ `${prefix}tante`,
6316
+ `${prefix}onkel/tante`
6317
+ );
6281
6318
  }
6282
6319
  nibling() {
6283
- const prefix = this.directPrefix();
6284
- if (this.personN?.isMale()) {
6285
- return `${prefix}neffe`;
6286
- }
6287
- if (this.personN?.isFemale()) {
6288
- return `${prefix}nichte`;
6320
+ const level = Math.abs(this.pathN?.level ?? 0);
6321
+ const sex = sexOf(this.personN);
6322
+ if (level <= 1) {
6323
+ return pick(sex, "Neffe", "Nichte", "Neffe/Nichte");
6289
6324
  }
6290
- return `${prefix}neffe/nichte`;
6325
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6326
+ return pick(
6327
+ sex,
6328
+ `${prefix}neffe`,
6329
+ `${prefix}nichte`,
6330
+ `${prefix}neffe/nichte`
6331
+ );
6291
6332
  }
6292
6333
  parent() {
6293
- const prefix = this.directPrefix();
6294
- if (this.personN?.isMale()) {
6295
- return `${prefix}vater`;
6296
- }
6297
- if (this.personN?.isFemale()) {
6298
- return `${prefix}mutter`;
6334
+ const level = Math.abs(this.pathN?.level ?? 0);
6335
+ const sex = sexOf(this.personN);
6336
+ if (level <= 1) {
6337
+ return pick(sex, "Vater", "Mutter", "Elternteil");
6299
6338
  }
6300
- return `${prefix}elternteil`;
6339
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6340
+ return pick(
6341
+ sex,
6342
+ `${prefix}vater`,
6343
+ `${prefix}mutter`,
6344
+ `${prefix}elternteil`
6345
+ );
6301
6346
  }
6302
6347
  child() {
6303
- const prefix = this.directPrefix();
6304
- if (this.personN?.isMale()) {
6305
- return `${prefix}sohn`;
6306
- }
6307
- if (this.personN?.isFemale()) {
6308
- return `${prefix}tochter`;
6348
+ const level = Math.abs(this.pathN?.level ?? 0);
6349
+ const sex = sexOf(this.personN);
6350
+ if (level <= 1) {
6351
+ return pick(sex, "Sohn", "Tochter", "Kind");
6309
6352
  }
6310
- return `${prefix}kind`;
6353
+ const prefix = ur(level - 2);
6354
+ return pick(
6355
+ sex,
6356
+ `${prefix}Enkel`,
6357
+ `${prefix}Enkelin`,
6358
+ `${prefix}Enkelkind`
6359
+ );
6311
6360
  }
6312
6361
  sibling() {
6313
- if (this.personN?.isMale()) {
6314
- return "bruder";
6315
- }
6316
- if (this.personN?.isFemale()) {
6317
- return "schwester";
6318
- }
6319
- return "geschwister";
6362
+ return pick(sexOf(this.personN), "Bruder", "Schwester", "Geschwister");
6320
6363
  }
6321
6364
  halfBlood(relation) {
6322
6365
  if (!relation || !this.isHalfBlood) {
6323
6366
  return relation ?? "";
6324
6367
  }
6325
- if (/^[A-ZÄÖÜ]/.test(relation) || /[-\s]/.test(relation)) {
6368
+ if (/[\s-]/.test(relation) || /^(Groß|Ur)/.test(relation)) {
6326
6369
  return `Halb-${relation}`;
6327
6370
  }
6328
- return `Halb${relation}`;
6371
+ return `Halb${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
6329
6372
  }
6330
6373
  spouse() {
6331
- if (this.personN?.isMale()) {
6332
- return "Ehemann";
6333
- }
6334
- if (this.personN?.isFemale()) {
6335
- return "Ehefrau";
6336
- }
6337
- return "Ehepartner";
6374
+ return pick(sexOf(this.personN), "Ehemann", "Ehefrau", "Ehepartner");
6338
6375
  }
6339
6376
  ofSpouse(relation) {
6340
6377
  if (!relation) {
6341
6378
  return "";
6342
6379
  }
6343
- const spouse = this.path?.[1].indi;
6344
- let spouseType = "Ehepartner";
6345
- if (spouse?.isMale()) {
6346
- spouseType = "Ehemann";
6347
- }
6348
- if (spouse?.isFemale()) {
6349
- spouseType = "Ehefrau";
6350
- }
6351
- return `${relation} des ${spouseType}s`;
6380
+ const spouseType = pick(
6381
+ sexOf(this.path?.[1].indi),
6382
+ "Ehemann",
6383
+ "Ehefrau",
6384
+ "Ehepartner"
6385
+ );
6386
+ return `${relation} ${genitiveArticle(spouseType)}`;
6352
6387
  }
6353
6388
  spouseOf(relation) {
6354
6389
  if (!relation) {
6355
6390
  return "";
6356
6391
  }
6357
- const spouse = this.path?.[this.path.length - 1].indi;
6358
- let spouseType = "Ehepartner";
6359
- if (spouse?.isMale()) {
6360
- spouseType = "Ehemann";
6361
- }
6362
- if (spouse?.isFemale()) {
6363
- spouseType = "Ehefrau";
6364
- }
6392
+ const spouseType = pick(
6393
+ sexOf(this.path?.[this.path.length - 1].indi),
6394
+ "Ehemann",
6395
+ "Ehefrau",
6396
+ "Ehepartner"
6397
+ );
6365
6398
  return `${spouseType} von ${relation}`;
6366
6399
  }
6367
6400
  of(relation) {
@@ -6379,8 +6412,8 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6379
6412
  if (!name || !relation) {
6380
6413
  return relation ?? "";
6381
6414
  }
6382
- if (relation.includes(" des ") || relation.includes(" von ")) {
6383
- return relation.replace(/ (des|von) /, ` $1 ${name}s `);
6415
+ if (relation.includes(" des ") || relation.includes(" der ") || relation.includes(" von ")) {
6416
+ return relation.replace(/ (des|der|von) /, ` $1 ${name}s `);
6384
6417
  }
6385
6418
  return `${name}s ${relation}`;
6386
6419
  }
@@ -6410,50 +6443,82 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6410
6443
  if (!relation || !this.pathN?.relation) {
6411
6444
  return relation ?? "";
6412
6445
  }
6413
- return `${this.pathN.relation} ${relation}`;
6446
+ const prefix = parentRelationsDe[this.pathN.relation];
6447
+ if (!prefix) {
6448
+ return relation;
6449
+ }
6450
+ if (prefix.endsWith("-") || prefix.endsWith(" ")) {
6451
+ return `${prefix}${relation}`;
6452
+ }
6453
+ return `${prefix}${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
6414
6454
  }
6415
6455
  };
6416
6456
 
6417
6457
  // src/kinship-translator/patterns.fr.ts
6458
+ var parentRelationsFr = {
6459
+ step: "step",
6460
+ foster: "foster",
6461
+ adopted: "adopted"
6462
+ };
6418
6463
  var InLawsFr = {
6419
6464
  "conjoint de (enfant|fille|fils)": "beau-fils/belle-fille",
6420
6465
  "\xE9pouse de (enfant|fille|fils)": "belle-fille",
6421
6466
  "mari de (enfant|fille|fils)": "gendre",
6422
- "m\xE8re du (conjoint|\xE9pouse|mari)": "belle-m\xE8re",
6423
- "p\xE8re du (conjoint|\xE9pouse|mari)": "beau-p\xE8re",
6424
- "parent du (conjoint|\xE9pouse|mari)": "beau-parent",
6467
+ "m\xE8re (du mari|du conjoint|de l'\xE9pouse)": "belle-m\xE8re",
6468
+ "p\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-p\xE8re",
6469
+ "parent (du mari|du conjoint|de l'\xE9pouse)": "beau-parent",
6425
6470
  "\xE9pouse de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "belle-s\u0153ur",
6426
6471
  "mari de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re",
6427
6472
  "conjoint de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re/belle-s\u0153ur",
6428
- "(demi-)?s\u0153ur du (conjoint|\xE9pouse|mari)": "belle-s\u0153ur",
6429
- "(demi-)?fr\xE8re du (conjoint|\xE9pouse|mari)": "beau-fr\xE8re",
6430
- "(demi-)?fr\xE8re/s\u0153ur du (conjoint|\xE9pouse|mari)": "beau-fr\xE8re/belle-s\u0153ur"
6473
+ "(demi-)?s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "belle-s\u0153ur",
6474
+ "(demi-)?fr\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re",
6475
+ "(demi-)?fr\xE8re/s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re/belle-s\u0153ur"
6431
6476
  };
6432
6477
 
6433
6478
  // src/kinship-translator/kinship-translator.fr.ts
6434
- var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6435
- directPrefix() {
6436
- const level = Math.abs(this.pathN?.level ?? 0);
6437
- if (level <= 1) {
6438
- return "";
6439
- }
6440
- if (level === 2) {
6441
- return "grand-";
6442
- }
6443
- if (level === 3) {
6444
- return "arri\xE8re-grand-";
6445
- }
6446
- return `arri\xE8re${level - 2}-grand-`;
6479
+ var sexOf2 = (person) => {
6480
+ if (person?.isMale?.()) {
6481
+ return "m";
6482
+ }
6483
+ if (person?.isFemale?.()) {
6484
+ return "f";
6485
+ }
6486
+ return "n";
6487
+ };
6488
+ var pick2 = (sex, male, female, neutral) => {
6489
+ if (sex === "m") {
6490
+ return male;
6447
6491
  }
6492
+ if (sex === "f") {
6493
+ return female;
6494
+ }
6495
+ return neutral;
6496
+ };
6497
+ var arriere = (count) => count > 0 ? "arri\xE8re-".repeat(count) : "";
6498
+ var frenchOrdinal = (n) => n === 1 ? "1er" : `${n}e`;
6499
+ var isFeminineRelation = (relation) => /mère|fille|sœur|tante|nièce|cousine|épouse/.test(relation);
6500
+ var ofSpousePrep = (spouseType) => {
6501
+ if (spouseType === "\xE9pouse") {
6502
+ return "de l'";
6503
+ }
6504
+ return "du ";
6505
+ };
6506
+ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6448
6507
  indirect() {
6449
6508
  let degree = Math.abs(this.pathN?.degree ?? 0);
6450
6509
  if (degree > 0) {
6451
6510
  degree = degree - 1;
6452
6511
  }
6453
- if (degree === 1) {
6454
- return `cousin`;
6512
+ const cousin = pick2(
6513
+ sexOf2(this.personN),
6514
+ "cousin",
6515
+ "cousine",
6516
+ "cousin/cousine"
6517
+ );
6518
+ if (degree <= 1) {
6519
+ return cousin;
6455
6520
  }
6456
- return `cousin au ${ordinalize(degree)} degr\xE9`;
6521
+ return `${cousin} au ${frenchOrdinal(degree)} degr\xE9`;
6457
6522
  }
6458
6523
  removal() {
6459
6524
  const level = this.pathN?.level ?? 0;
@@ -6464,56 +6529,57 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6464
6529
  if (!degree) {
6465
6530
  return level < 0 ? this.nibling() : this.auncle();
6466
6531
  }
6467
- return `cousin au ${ordinalize(degree)} degr\xE9 ${Math.abs(level)}\xD7 \xE9loign\xE9`;
6532
+ return `${this.indirect()} ${Math.abs(level)}\xD7 \xE9loign\xE9`;
6468
6533
  }
6469
6534
  auncle() {
6470
- const prefix = this.directPrefix();
6471
- if (this.personN?.isMale()) {
6472
- return `${prefix}oncle`;
6473
- }
6474
- if (this.personN?.isFemale()) {
6475
- return `${prefix}tante`;
6535
+ const level = Math.abs(this.pathN?.level ?? 0);
6536
+ const sex = sexOf2(this.personN);
6537
+ const base = pick2(sex, "oncle", "tante", "oncle/tante");
6538
+ if (level <= 1) {
6539
+ return base;
6476
6540
  }
6477
- return `${prefix}oncle/tante`;
6541
+ const grands = pick2(
6542
+ sex,
6543
+ "grand-oncle",
6544
+ "grand-tante",
6545
+ "grand-oncle/tante"
6546
+ );
6547
+ return `${arriere(level - 2)}${grands}`;
6478
6548
  }
6479
6549
  nibling() {
6480
- const prefix = this.directPrefix();
6481
- if (this.personN?.isMale()) {
6482
- return `${prefix}neveu`;
6483
- }
6484
- if (this.personN?.isFemale()) {
6485
- return `${prefix}ni\xE8ce`;
6550
+ const level = Math.abs(this.pathN?.level ?? 0);
6551
+ const sex = sexOf2(this.personN);
6552
+ if (level <= 1) {
6553
+ return pick2(sex, "neveu", "ni\xE8ce", "neveu/ni\xE8ce");
6486
6554
  }
6487
- return `${prefix}neveu/ni\xE8ce`;
6555
+ const grands = pick2(
6556
+ sex,
6557
+ "grand-neveu",
6558
+ "grande-ni\xE8ce",
6559
+ "grand-neveu/grande-ni\xE8ce"
6560
+ );
6561
+ return `${arriere(level - 2)}${grands}`;
6488
6562
  }
6489
6563
  parent() {
6490
- const prefix = this.directPrefix();
6491
- if (this.personN?.isMale()) {
6492
- return `${prefix}p\xE8re`;
6493
- }
6494
- if (this.personN?.isFemale()) {
6495
- return `${prefix}m\xE8re`;
6564
+ const level = Math.abs(this.pathN?.level ?? 0);
6565
+ const sex = sexOf2(this.personN);
6566
+ if (level <= 1) {
6567
+ return pick2(sex, "p\xE8re", "m\xE8re", "parent");
6496
6568
  }
6497
- return `${prefix}parent`;
6569
+ const grands = pick2(sex, "grand-p\xE8re", "grand-m\xE8re", "grand-parent");
6570
+ return `${arriere(level - 2)}${grands}`;
6498
6571
  }
6499
6572
  child() {
6500
- const prefix = this.directPrefix();
6501
- if (this.personN?.isMale()) {
6502
- return `${prefix}fils`;
6503
- }
6504
- if (this.personN?.isFemale()) {
6505
- return `${prefix}fille`;
6573
+ const level = Math.abs(this.pathN?.level ?? 0);
6574
+ const sex = sexOf2(this.personN);
6575
+ if (level <= 1) {
6576
+ return pick2(sex, "fils", "fille", "enfant");
6506
6577
  }
6507
- return `${prefix}enfant`;
6578
+ const petits = pick2(sex, "petit-fils", "petite-fille", "petit-enfant");
6579
+ return `${arriere(level - 2)}${petits}`;
6508
6580
  }
6509
6581
  sibling() {
6510
- if (this.personN?.isMale()) {
6511
- return "fr\xE8re";
6512
- }
6513
- if (this.personN?.isFemale()) {
6514
- return "s\u0153ur";
6515
- }
6516
- return "fr\xE8re/s\u0153ur";
6582
+ return pick2(sexOf2(this.personN), "fr\xE8re", "s\u0153ur", "fr\xE8re/s\u0153ur");
6517
6583
  }
6518
6584
  halfBlood(relation) {
6519
6585
  if (!relation || !this.isHalfBlood) {
@@ -6522,40 +6588,30 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6522
6588
  return `demi-${relation}`;
6523
6589
  }
6524
6590
  spouse() {
6525
- if (this.personN?.isMale()) {
6526
- return "mari";
6527
- }
6528
- if (this.personN?.isFemale()) {
6529
- return "\xE9pouse";
6530
- }
6531
- return "conjoint";
6591
+ return pick2(sexOf2(this.personN), "mari", "\xE9pouse", "conjoint");
6532
6592
  }
6533
6593
  ofSpouse(relation) {
6534
6594
  if (!relation) {
6535
6595
  return "";
6536
6596
  }
6537
- const spouse = this.path?.[1].indi;
6538
- let spouseType = "conjoint";
6539
- if (spouse?.isMale()) {
6540
- spouseType = "mari";
6541
- }
6542
- if (spouse?.isFemale()) {
6543
- spouseType = "\xE9pouse";
6544
- }
6545
- return `${relation} du ${spouseType}`;
6597
+ const spouseType = pick2(
6598
+ sexOf2(this.path?.[1].indi),
6599
+ "mari",
6600
+ "\xE9pouse",
6601
+ "conjoint"
6602
+ );
6603
+ return `${relation} ${ofSpousePrep(spouseType)}${spouseType}`;
6546
6604
  }
6547
6605
  spouseOf(relation) {
6548
6606
  if (!relation) {
6549
6607
  return "";
6550
6608
  }
6551
- const spouse = this.path?.[this.path.length - 1].indi;
6552
- let spouseType = "conjoint";
6553
- if (spouse?.isMale()) {
6554
- spouseType = "mari";
6555
- }
6556
- if (spouse?.isFemale()) {
6557
- spouseType = "\xE9pouse";
6558
- }
6609
+ const spouseType = pick2(
6610
+ sexOf2(this.path?.[this.path.length - 1].indi),
6611
+ "mari",
6612
+ "\xE9pouse",
6613
+ "conjoint"
6614
+ );
6559
6615
  return `${spouseType} de ${relation}`;
6560
6616
  }
6561
6617
  of(relation) {
@@ -6576,6 +6632,9 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6576
6632
  if (relation.includes(" du ") || relation.includes(" de ")) {
6577
6633
  return relation.replace(/ (du|de) /, ` $1 ${name} `);
6578
6634
  }
6635
+ if (relation.includes(" de l'")) {
6636
+ return relation.replace(" de l'", ` de ${name} l'`);
6637
+ }
6579
6638
  return `${relation} de ${name}`;
6580
6639
  }
6581
6640
  inLaw(relation) {
@@ -6604,50 +6663,118 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6604
6663
  if (!relation || !this.pathN?.relation) {
6605
6664
  return relation ?? "";
6606
6665
  }
6607
- return `${this.pathN.relation} ${relation}`;
6666
+ const kind = parentRelationsFr[this.pathN.relation];
6667
+ if (!kind) {
6668
+ return relation;
6669
+ }
6670
+ if (kind === "step") {
6671
+ return `${isFeminineRelation(relation) ? "belle-" : "beau-"}${relation}`;
6672
+ }
6673
+ if (kind === "adopted") {
6674
+ return `${relation} ${isFeminineRelation(relation) ? "adoptive" : "adoptif"}`;
6675
+ }
6676
+ if (kind === "foster") {
6677
+ return `${relation} d'accueil`;
6678
+ }
6679
+ return relation;
6608
6680
  }
6609
6681
  };
6610
6682
 
6611
6683
  // src/kinship-translator/patterns.es.ts
6684
+ var parentRelationsEs = {
6685
+ step: {
6686
+ padre: "padrastro",
6687
+ madre: "madrastra",
6688
+ hijo: "hijastro",
6689
+ hija: "hijastra",
6690
+ hermano: "hermanastro",
6691
+ hermana: "hermanastra",
6692
+ abuelo: "abuelastro",
6693
+ abuela: "abuelastra"
6694
+ }
6695
+ };
6612
6696
  var InLawsEs = {
6613
6697
  "c\xF3nyuge de (hijo/hija|hija|hijo)": "yerno/nuera",
6614
6698
  "esposa de (hijo/hija|hija|hijo)": "nuera",
6615
6699
  "esposo de (hijo/hija|hija|hijo)": "yerno",
6616
- "madre del (c\xF3nyuge|esposa|esposo)": "suegra",
6617
- "padre del (c\xF3nyuge|esposa|esposo)": "suegro",
6618
- "padre/madre del (c\xF3nyuge|esposa|esposo)": "suegro/suegra",
6700
+ "madre (del c\xF3nyuge|del esposo|de la esposa)": "suegra",
6701
+ "padre (del c\xF3nyuge|del esposo|de la esposa)": "suegro",
6702
+ "padre/madre (del c\xF3nyuge|del esposo|de la esposa)": "suegro/suegra",
6619
6703
  "esposa de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ada",
6620
6704
  "esposo de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado",
6621
6705
  "c\xF3nyuge de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado/cu\xF1ada",
6622
- "(medio |media |medio/a )?hermana del (c\xF3nyuge|esposa|esposo)": "cu\xF1ada",
6623
- "(medio |media |medio/a )?hermano del (c\xF3nyuge|esposa|esposo)": "cu\xF1ado",
6624
- "(medio |media |medio/a )?hermano/hermana del (c\xF3nyuge|esposa|esposo)": "cu\xF1ado/cu\xF1ada"
6706
+ "(medio |media |medio/a )?hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ada",
6707
+ "(medio |media |medio/a )?hermano (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado",
6708
+ "(medio |media |medio/a )?hermano/hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado/cu\xF1ada"
6625
6709
  };
6626
6710
 
6627
6711
  // src/kinship-translator/kinship-translator.es.ts
6628
- var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6629
- directPrefix() {
6630
- const level = Math.abs(this.pathN?.level ?? 0);
6631
- if (level <= 1) {
6632
- return "";
6633
- }
6634
- if (level === 2) {
6635
- return "bisabuel";
6636
- }
6637
- if (level === 3) {
6638
- return "tatarabuel";
6639
- }
6640
- return `t\xE1tara${level - 2}-abuel`;
6712
+ var sexOf3 = (person) => {
6713
+ if (person?.isMale?.()) {
6714
+ return "m";
6715
+ }
6716
+ if (person?.isFemale?.()) {
6717
+ return "f";
6718
+ }
6719
+ return "n";
6720
+ };
6721
+ var pick3 = (sex, male, female, neutral) => {
6722
+ if (sex === "m") {
6723
+ return male;
6641
6724
  }
6725
+ if (sex === "f") {
6726
+ return female;
6727
+ }
6728
+ return neutral;
6729
+ };
6730
+ var SPANISH_ORDINALS_M = [
6731
+ "",
6732
+ "",
6733
+ "segundo",
6734
+ "tercero",
6735
+ "cuarto",
6736
+ "quinto",
6737
+ "sexto",
6738
+ "s\xE9ptimo",
6739
+ "octavo",
6740
+ "noveno",
6741
+ "d\xE9cimo"
6742
+ ];
6743
+ var SPANISH_ORDINALS_F = [
6744
+ "",
6745
+ "",
6746
+ "segunda",
6747
+ "tercera",
6748
+ "cuarta",
6749
+ "quinta",
6750
+ "sexta",
6751
+ "s\xE9ptima",
6752
+ "octava",
6753
+ "novena",
6754
+ "d\xE9cima"
6755
+ ];
6756
+ var spanishOrdinal = (n, sex) => {
6757
+ const list = sex === "f" ? SPANISH_ORDINALS_F : SPANISH_ORDINALS_M;
6758
+ return list[n] ?? `${n}.\xBA`;
6759
+ };
6760
+ var ofSpousePrep2 = (spouseType) => {
6761
+ if (spouseType === "esposa") {
6762
+ return "de la ";
6763
+ }
6764
+ return "del ";
6765
+ };
6766
+ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6642
6767
  indirect() {
6643
6768
  let degree = Math.abs(this.pathN?.degree ?? 0);
6644
6769
  if (degree > 0) {
6645
6770
  degree = degree - 1;
6646
6771
  }
6647
- if (degree === 1) {
6648
- return `primo`;
6772
+ const sex = sexOf3(this.personN);
6773
+ const cousin = pick3(sex, "primo", "prima", "primo/prima");
6774
+ if (degree <= 1) {
6775
+ return cousin;
6649
6776
  }
6650
- return `primo ${ordinalize(degree)}`;
6777
+ return `${cousin} ${spanishOrdinal(degree, sex)}`;
6651
6778
  }
6652
6779
  removal() {
6653
6780
  const level = this.pathN?.level ?? 0;
@@ -6658,56 +6785,133 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6658
6785
  if (!degree) {
6659
6786
  return level < 0 ? this.nibling() : this.auncle();
6660
6787
  }
6661
- return `primo ${ordinalize(degree)} ${Math.abs(level)}\xD7 separado`;
6788
+ return `${this.indirect()} ${Math.abs(level)}\xD7 separado`;
6662
6789
  }
6663
6790
  auncle() {
6664
- const prefix = this.directPrefix();
6665
- if (this.personN?.isMale()) {
6666
- return `${prefix}t\xEDo`;
6791
+ const level = Math.abs(this.pathN?.level ?? 0);
6792
+ const sex = sexOf3(this.personN);
6793
+ if (level <= 1) {
6794
+ return pick3(sex, "t\xEDo", "t\xEDa", "t\xEDo/t\xEDa");
6667
6795
  }
6668
- if (this.personN?.isFemale()) {
6669
- return `${prefix}t\xEDa`;
6796
+ if (level === 2) {
6797
+ return pick3(sex, "t\xEDo abuelo", "t\xEDa abuela", "t\xEDo/t\xEDa abuelo");
6798
+ }
6799
+ if (level === 3) {
6800
+ return pick3(
6801
+ sex,
6802
+ "t\xEDo bisabuelo",
6803
+ "t\xEDa bisabuela",
6804
+ "t\xEDo/t\xEDa bisabuelo"
6805
+ );
6670
6806
  }
6671
- return `${prefix}t\xEDo/t\xEDa`;
6807
+ return pick3(
6808
+ sex,
6809
+ `t\xEDo abuelo (${level - 1}.\xBA)`,
6810
+ `t\xEDa abuela (${level - 1}.\xAA)`,
6811
+ `t\xEDo/t\xEDa abuelo (${level - 1}.\xBA)`
6812
+ );
6672
6813
  }
6673
6814
  nibling() {
6674
- const prefix = this.directPrefix();
6675
- if (this.personN?.isMale()) {
6676
- return `${prefix}sobrino`;
6815
+ const level = Math.abs(this.pathN?.level ?? 0);
6816
+ const sex = sexOf3(this.personN);
6817
+ if (level <= 1) {
6818
+ return pick3(sex, "sobrino", "sobrina", "sobrino/sobrina");
6677
6819
  }
6678
- if (this.personN?.isFemale()) {
6679
- return `${prefix}sobrina`;
6820
+ if (level === 2) {
6821
+ return pick3(
6822
+ sex,
6823
+ "sobrino nieto",
6824
+ "sobrina nieta",
6825
+ "sobrino/sobrina nieto"
6826
+ );
6680
6827
  }
6681
- return `${prefix}sobrino/sobrina`;
6828
+ if (level === 3) {
6829
+ return pick3(
6830
+ sex,
6831
+ "sobrino bisnieto",
6832
+ "sobrina bisnieta",
6833
+ "sobrino/sobrina bisnieto"
6834
+ );
6835
+ }
6836
+ return pick3(
6837
+ sex,
6838
+ `sobrino nieto (${level - 1}.\xBA)`,
6839
+ `sobrina nieta (${level - 1}.\xAA)`,
6840
+ `sobrino/sobrina nieto (${level - 1}.\xBA)`
6841
+ );
6682
6842
  }
6683
6843
  parent() {
6684
- const prefix = this.directPrefix();
6685
- if (this.personN?.isMale()) {
6686
- return `${prefix}padre`;
6844
+ const level = Math.abs(this.pathN?.level ?? 0);
6845
+ const sex = sexOf3(this.personN);
6846
+ if (level <= 1) {
6847
+ return pick3(sex, "padre", "madre", "padre/madre");
6687
6848
  }
6688
- if (this.personN?.isFemale()) {
6689
- return `${prefix}madre`;
6849
+ if (level === 2) {
6850
+ return pick3(sex, "abuelo", "abuela", "abuelo/abuela");
6851
+ }
6852
+ if (level === 3) {
6853
+ return pick3(sex, "bisabuelo", "bisabuela", "bisabuelo/bisabuela");
6690
6854
  }
6691
- return `${prefix}padre/madre`;
6855
+ if (level === 4) {
6856
+ return pick3(
6857
+ sex,
6858
+ "tatarabuelo",
6859
+ "tatarabuela",
6860
+ "tatarabuelo/tatarabuela"
6861
+ );
6862
+ }
6863
+ if (level === 5) {
6864
+ return pick3(
6865
+ sex,
6866
+ "trastatarabuelo",
6867
+ "trastatarabuela",
6868
+ "trastatarabuelo/trastatarabuela"
6869
+ );
6870
+ }
6871
+ return pick3(
6872
+ sex,
6873
+ `abuelo (${level}.\xBA)`,
6874
+ `abuela (${level}.\xAA)`,
6875
+ `abuelo/abuela (${level}.\xBA)`
6876
+ );
6692
6877
  }
6693
6878
  child() {
6694
- const prefix = this.directPrefix();
6695
- if (this.personN?.isMale()) {
6696
- return `${prefix}hijo`;
6879
+ const level = Math.abs(this.pathN?.level ?? 0);
6880
+ const sex = sexOf3(this.personN);
6881
+ if (level <= 1) {
6882
+ return pick3(sex, "hijo", "hija", "hijo/hija");
6697
6883
  }
6698
- if (this.personN?.isFemale()) {
6699
- return `${prefix}hija`;
6884
+ if (level === 2) {
6885
+ return pick3(sex, "nieto", "nieta", "nieto/nieta");
6700
6886
  }
6701
- return `${prefix}hijo/hija`;
6702
- }
6703
- sibling() {
6704
- if (this.personN?.isMale()) {
6705
- return "hermano";
6887
+ if (level === 3) {
6888
+ return pick3(sex, "bisnieto", "bisnieta", "bisnieto/bisnieta");
6706
6889
  }
6707
- if (this.personN?.isFemale()) {
6708
- return "hermana";
6890
+ if (level === 4) {
6891
+ return pick3(
6892
+ sex,
6893
+ "tataranieto",
6894
+ "tataranieta",
6895
+ "tataranieto/tataranieta"
6896
+ );
6897
+ }
6898
+ if (level === 5) {
6899
+ return pick3(
6900
+ sex,
6901
+ "trastataranieto",
6902
+ "trastataranieta",
6903
+ "trastataranieto/trastataranieta"
6904
+ );
6709
6905
  }
6710
- return "hermano/hermana";
6906
+ return pick3(
6907
+ sex,
6908
+ `nieto (${level}.\xBA)`,
6909
+ `nieta (${level}.\xAA)`,
6910
+ `nieto/nieta (${level}.\xBA)`
6911
+ );
6912
+ }
6913
+ sibling() {
6914
+ return pick3(sexOf3(this.personN), "hermano", "hermana", "hermano/hermana");
6711
6915
  }
6712
6916
  halfBlood(relation) {
6713
6917
  if (!relation || !this.isHalfBlood) {
@@ -6722,40 +6926,30 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6722
6926
  return `medio/a ${relation}`;
6723
6927
  }
6724
6928
  spouse() {
6725
- if (this.personN?.isMale()) {
6726
- return "esposo";
6727
- }
6728
- if (this.personN?.isFemale()) {
6729
- return "esposa";
6730
- }
6731
- return "c\xF3nyuge";
6929
+ return pick3(sexOf3(this.personN), "esposo", "esposa", "c\xF3nyuge");
6732
6930
  }
6733
6931
  ofSpouse(relation) {
6734
6932
  if (!relation) {
6735
6933
  return "";
6736
6934
  }
6737
- const spouse = this.path?.[1].indi;
6738
- let spouseType = "c\xF3nyuge";
6739
- if (spouse?.isMale()) {
6740
- spouseType = "esposo";
6741
- }
6742
- if (spouse?.isFemale()) {
6743
- spouseType = "esposa";
6744
- }
6745
- return `${relation} del ${spouseType}`;
6935
+ const spouseType = pick3(
6936
+ sexOf3(this.path?.[1].indi),
6937
+ "esposo",
6938
+ "esposa",
6939
+ "c\xF3nyuge"
6940
+ );
6941
+ return `${relation} ${ofSpousePrep2(spouseType)}${spouseType}`;
6746
6942
  }
6747
6943
  spouseOf(relation) {
6748
6944
  if (!relation) {
6749
6945
  return "";
6750
6946
  }
6751
- const spouse = this.path?.[this.path.length - 1].indi;
6752
- let spouseType = "c\xF3nyuge";
6753
- if (spouse?.isMale()) {
6754
- spouseType = "esposo";
6755
- }
6756
- if (spouse?.isFemale()) {
6757
- spouseType = "esposa";
6758
- }
6947
+ const spouseType = pick3(
6948
+ sexOf3(this.path?.[this.path.length - 1].indi),
6949
+ "esposo",
6950
+ "esposa",
6951
+ "c\xF3nyuge"
6952
+ );
6759
6953
  return `${spouseType} de ${relation}`;
6760
6954
  }
6761
6955
  of(relation) {
@@ -6773,8 +6967,8 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6773
6967
  if (!name || !relation) {
6774
6968
  return relation ?? "";
6775
6969
  }
6776
- if (relation.includes(" del ") || relation.includes(" de ")) {
6777
- return relation.replace(/ (del|de) /, ` $1 ${name} `);
6970
+ if (relation.includes(" del ") || relation.includes(" de la ") || relation.includes(" de ")) {
6971
+ return relation.replace(/ (del|de la|de) /, ` $1 ${name} `);
6778
6972
  }
6779
6973
  return `${relation} de ${name}`;
6780
6974
  }
@@ -6804,7 +6998,20 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6804
6998
  if (!relation || !this.pathN?.relation) {
6805
6999
  return relation ?? "";
6806
7000
  }
6807
- return `${this.pathN.relation} ${relation}`;
7001
+ const mapped = parentRelationsEs[this.pathN.relation]?.[relation];
7002
+ if (mapped) {
7003
+ return mapped;
7004
+ }
7005
+ if (this.pathN.relation === "step") {
7006
+ return `${relation} pol\xEDtico`;
7007
+ }
7008
+ if (this.pathN.relation === "adopted") {
7009
+ return `${relation} adoptivo`;
7010
+ }
7011
+ if (this.pathN.relation === "foster") {
7012
+ return `${relation} de acogida`;
7013
+ }
7014
+ return relation;
6808
7015
  }
6809
7016
  };
6810
7017
 
@@ -6813,15 +7020,35 @@ var InLawsRu = {
6813
7020
  "\u0441\u0443\u043F\u0440\u0443\u0433(?:\u0430)? (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C/\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
6814
7021
  "\u0436\u0435\u043D\u0430 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
6815
7022
  "\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
6816
- "\u043C\u0430\u0442\u044C (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0451\u0449\u0430",
6817
- "\u043E\u0442\u0435\u0446 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0435\u0441\u0442\u044C",
6818
- "\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",
7023
+ "\u043C\u0430\u0442\u044C \u0436\u0435\u043D\u044B": "\u0442\u0451\u0449\u0430",
7024
+ "\u043C\u0430\u0442\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7025
+ "\u043C\u0430\u0442\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0451\u0449\u0430/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7026
+ "\u043E\u0442\u0435\u0446 \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C",
7027
+ "\u043E\u0442\u0435\u0446 \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440",
7028
+ "\u043E\u0442\u0435\u0446 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0441\u0432\u0451\u043A\u043E\u0440",
7029
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
7030
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7031
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
6819
7032
  "\u0436\u0435\u043D\u0430 (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
6820
7033
  "\u043C\u0443\u0436 (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u0437\u044F\u0442\u044C",
6821
7034
  "\u0441\u0443\u043F\u0440\u0443\u0433(?:\u0430)? (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u0437\u044F\u0442\u044C/\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
6822
- "(\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",
6823
- "(\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",
6824
- "(\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"
7035
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u0436\u0435\u043D\u044B": "\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430",
7036
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u043C\u0443\u0436\u0430": "\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7037
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430/\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7038
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D",
7039
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C",
7040
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0448\u0443\u0440\u0438\u043D/\u0434\u0435\u0432\u0435\u0440\u044C",
7041
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D/\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430",
7042
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C/\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7043
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0448\u0443\u0440\u0438\u043D/\u0437\u043E\u043B\u043E\u0432\u043A\u0430"
7044
+ };
7045
+ var parentRelationsRu = {
7046
+ step: {
7047
+ \u043E\u0442\u0435\u0446: "\u043E\u0442\u0447\u0438\u043C",
7048
+ \u043C\u0430\u0442\u044C: "\u043C\u0430\u0447\u0435\u0445\u0430",
7049
+ \u0441\u044B\u043D: "\u043F\u0430\u0441\u044B\u043D\u043E\u043A",
7050
+ \u0434\u043E\u0447\u044C: "\u043F\u0430\u0434\u0447\u0435\u0440\u0438\u0446\u0430"
7051
+ }
6825
7052
  };
6826
7053
 
6827
7054
  // src/kinship-translator/kinship-translator.ru.ts
@@ -6852,7 +7079,7 @@ var cousinWord = (degree, sex) => {
6852
7079
  return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
6853
7080
  };
6854
7081
  var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
6855
- var sexOf = (person) => {
7082
+ var sexOf4 = (person) => {
6856
7083
  if (person?.isMale?.()) {
6857
7084
  return "m";
6858
7085
  }
@@ -6867,7 +7094,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
6867
7094
  if (degree > 0) {
6868
7095
  degree = degree - 1;
6869
7096
  }
6870
- return cousinWord(degree, sexOf(this.personN));
7097
+ return cousinWord(degree, sexOf4(this.personN));
6871
7098
  }
6872
7099
  removal() {
6873
7100
  const level = this.pathN?.level ?? 0;
@@ -6879,35 +7106,53 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
6879
7106
  return level < 0 ? this.nibling() : this.auncle();
6880
7107
  }
6881
7108
  const removed = Math.abs(level);
6882
- return `${cousinWord(degree, sexOf(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
7109
+ return `${cousinWord(degree, sexOf4(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
6883
7110
  }
6884
7111
  auncle() {
6885
7112
  const level = Math.abs(this.pathN?.level ?? 0);
6886
- const pra = praRepeat(Math.max(0, level - 2));
6887
- const sex = sexOf(this.personN);
7113
+ const sex = sexOf4(this.personN);
7114
+ if (level <= 1) {
7115
+ if (sex === "m") {
7116
+ return "\u0434\u044F\u0434\u044F";
7117
+ }
7118
+ if (sex === "f") {
7119
+ return "\u0442\u0451\u0442\u044F";
7120
+ }
7121
+ return "\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F";
7122
+ }
7123
+ const pra = praRepeat(level - 2);
6888
7124
  if (sex === "m") {
6889
- return `${pra}\u0434\u044F\u0434\u044F`;
7125
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434`;
6890
7126
  }
6891
7127
  if (sex === "f") {
6892
- return `${pra}\u0442\u0451\u0442\u044F`;
7128
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u0430\u044F ${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
6893
7129
  }
6894
- return `${pra}\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F`;
7130
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
6895
7131
  }
6896
7132
  nibling() {
6897
7133
  const level = Math.abs(this.pathN?.level ?? 0);
6898
- const pra = praRepeat(Math.max(0, level - 2));
6899
- const sex = sexOf(this.personN);
7134
+ const sex = sexOf4(this.personN);
7135
+ if (level <= 1) {
7136
+ if (sex === "m") {
7137
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A";
7138
+ }
7139
+ if (sex === "f") {
7140
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
7141
+ }
7142
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
7143
+ }
7144
+ const pra = praRepeat(level - 2);
6900
7145
  if (sex === "m") {
6901
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
7146
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
6902
7147
  }
6903
7148
  if (sex === "f") {
6904
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7149
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u0430\u044F \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
6905
7150
  }
6906
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7151
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
6907
7152
  }
6908
7153
  parent() {
6909
7154
  const level = Math.abs(this.pathN?.level ?? 0);
6910
- const sex = sexOf(this.personN);
7155
+ const sex = sexOf4(this.personN);
6911
7156
  if (level <= 1) {
6912
7157
  if (sex === "m") {
6913
7158
  return "\u043E\u0442\u0435\u0446";
@@ -6937,7 +7182,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
6937
7182
  }
6938
7183
  child() {
6939
7184
  const level = Math.abs(this.pathN?.level ?? 0);
6940
- const sex = sexOf(this.personN);
7185
+ const sex = sexOf4(this.personN);
6941
7186
  if (level <= 1) {
6942
7187
  if (sex === "m") {
6943
7188
  return "\u0441\u044B\u043D";
@@ -6966,14 +7211,14 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
6966
7211
  return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
6967
7212
  }
6968
7213
  sibling() {
6969
- const sex = sexOf(this.personN);
7214
+ const sex = sexOf4(this.personN);
6970
7215
  if (sex === "m") {
6971
7216
  return "\u0431\u0440\u0430\u0442";
6972
7217
  }
6973
7218
  if (sex === "f") {
6974
7219
  return "\u0441\u0435\u0441\u0442\u0440\u0430";
6975
7220
  }
6976
- return "\u0441\u0438\u0431\u043B\u0438\u043D\u0433";
7221
+ return "\u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430";
6977
7222
  }
6978
7223
  halfBlood(relation) {
6979
7224
  if (!relation || !this.isHalfBlood) {
@@ -6987,7 +7232,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
6987
7232
  return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
6988
7233
  }
6989
7234
  spouse() {
6990
- const sex = sexOf(this.personN);
7235
+ const sex = sexOf4(this.personN);
6991
7236
  if (sex === "m") {
6992
7237
  return "\u043C\u0443\u0436";
6993
7238
  }
@@ -7001,7 +7246,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7001
7246
  return "";
7002
7247
  }
7003
7248
  const spouse = this.path?.[1].indi;
7004
- const sex = sexOf(spouse);
7249
+ const sex = sexOf4(spouse);
7005
7250
  const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
7006
7251
  return `${relation} ${toGenitive(spouseType)}`;
7007
7252
  }
@@ -7010,7 +7255,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7010
7255
  return "";
7011
7256
  }
7012
7257
  const spouse = this.path?.[this.path.length - 1].indi;
7013
- const sex = sexOf(spouse);
7258
+ const sex = sexOf4(spouse);
7014
7259
  const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
7015
7260
  return `${spouseType} ${toGenitive(relation)}`;
7016
7261
  }
@@ -7047,7 +7292,22 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7047
7292
  if (!relation || !this.pathN?.relation) {
7048
7293
  return relation ?? "";
7049
7294
  }
7050
- return `${this.pathN.relation} ${relation}`;
7295
+ const mapped = parentRelationsRu[this.pathN.relation]?.[relation];
7296
+ if (mapped) {
7297
+ return mapped;
7298
+ }
7299
+ if (this.pathN.relation === "step") {
7300
+ return `\u043D\u0435\u0440\u043E\u0434\u043D\u043E\u0439 ${relation}`;
7301
+ }
7302
+ if (this.pathN.relation === "adopted") {
7303
+ return /сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
7304
+ relation
7305
+ ) ? `\u043F\u0440\u0438\u0451\u043C\u043D\u0430\u044F ${relation}` : `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
7306
+ }
7307
+ if (this.pathN.relation === "foster") {
7308
+ return `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
7309
+ }
7310
+ return relation;
7051
7311
  }
7052
7312
  };
7053
7313
 
@@ -7071,7 +7331,7 @@ var InLawsJa = {
7071
7331
  };
7072
7332
 
7073
7333
  // src/kinship-translator/kinship-translator.ja.ts
7074
- var sexOf2 = (person) => {
7334
+ var sexOf5 = (person) => {
7075
7335
  if (person?.isMale?.()) {
7076
7336
  return "m";
7077
7337
  }
@@ -7080,7 +7340,7 @@ var sexOf2 = (person) => {
7080
7340
  }
7081
7341
  return "n";
7082
7342
  };
7083
- var pick = (sex, male, female, neutral) => {
7343
+ var pick4 = (sex, male, female, neutral) => {
7084
7344
  if (sex === "m") {
7085
7345
  return male;
7086
7346
  }
@@ -7093,18 +7353,18 @@ var lineal = (level, sex, kind) => {
7093
7353
  const L = Math.max(1, level);
7094
7354
  if (kind === "asc") {
7095
7355
  if (L <= 1) {
7096
- return pick(sex, "\u7236", "\u6BCD", "\u89AA");
7356
+ return pick4(sex, "\u7236", "\u6BCD", "\u89AA");
7097
7357
  }
7098
7358
  if (L === 2) {
7099
- return pick(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7359
+ return pick4(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7100
7360
  }
7101
7361
  if (L === 3) {
7102
- return pick(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7362
+ return pick4(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7103
7363
  }
7104
7364
  if (L === 4) {
7105
- return pick(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7365
+ return pick4(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7106
7366
  }
7107
- return pick(
7367
+ return pick4(
7108
7368
  sex,
7109
7369
  `${L - 1}\u4E16\u306E\u7956\u7236`,
7110
7370
  `${L - 1}\u4E16\u306E\u7956\u6BCD`,
@@ -7112,7 +7372,7 @@ var lineal = (level, sex, kind) => {
7112
7372
  );
7113
7373
  }
7114
7374
  if (L <= 1) {
7115
- return pick(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
7375
+ return pick4(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
7116
7376
  }
7117
7377
  if (L === 2) {
7118
7378
  return "\u5B6B";
@@ -7159,52 +7419,52 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7159
7419
  }
7160
7420
  auncle() {
7161
7421
  const level = Math.abs(this.pathN?.level ?? 0);
7162
- const sex = sexOf2(this.personN);
7163
- if (level <= 2) {
7164
- return pick(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
7422
+ const sex = sexOf5(this.personN);
7423
+ if (level <= 1) {
7424
+ return pick4(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
7165
7425
  }
7166
- if (level === 3) {
7167
- return pick(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
7426
+ if (level === 2) {
7427
+ return pick4(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
7168
7428
  }
7169
- return pick(
7429
+ return pick4(
7170
7430
  sex,
7171
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3058`,
7172
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3070`,
7173
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
7431
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3058`,
7432
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3070`,
7433
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
7174
7434
  );
7175
7435
  }
7176
7436
  nibling() {
7177
7437
  const level = Math.abs(this.pathN?.level ?? 0);
7178
- const sex = sexOf2(this.personN);
7179
- if (level <= 2) {
7180
- return pick(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
7438
+ const sex = sexOf5(this.personN);
7439
+ if (level <= 1) {
7440
+ return pick4(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
7181
7441
  }
7182
- if (level === 3) {
7183
- return pick(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
7442
+ if (level === 2) {
7443
+ return pick4(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
7184
7444
  }
7185
- return pick(
7445
+ return pick4(
7186
7446
  sex,
7187
- `${level - 2}\u4EE3\u4E0B\u306E\u7525`,
7188
- `${level - 2}\u4EE3\u4E0B\u306E\u59EA`,
7189
- `${level - 2}\u4EE3\u4E0B\u306E\u7525/\u59EA`
7447
+ `${level - 1}\u4EE3\u4E0B\u306E\u7525`,
7448
+ `${level - 1}\u4EE3\u4E0B\u306E\u59EA`,
7449
+ `${level - 1}\u4EE3\u4E0B\u306E\u7525/\u59EA`
7190
7450
  );
7191
7451
  }
7192
7452
  parent() {
7193
7453
  return lineal(
7194
7454
  Math.abs(this.pathN?.level ?? 0),
7195
- sexOf2(this.personN),
7455
+ sexOf5(this.personN),
7196
7456
  "asc"
7197
7457
  );
7198
7458
  }
7199
7459
  child() {
7200
7460
  return lineal(
7201
7461
  Math.abs(this.pathN?.level ?? 0),
7202
- sexOf2(this.personN),
7462
+ sexOf5(this.personN),
7203
7463
  "desc"
7204
7464
  );
7205
7465
  }
7206
7466
  sibling() {
7207
- return pick(sexOf2(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
7467
+ return pick4(sexOf5(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
7208
7468
  }
7209
7469
  halfBlood(relation) {
7210
7470
  if (!relation || !this.isHalfBlood) {
@@ -7213,14 +7473,14 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7213
7473
  return `\u7570\u7236\u6BCD\u306E${relation}`;
7214
7474
  }
7215
7475
  spouse() {
7216
- return pick(sexOf2(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7476
+ return pick4(sexOf5(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7217
7477
  }
7218
7478
  ofSpouse(relation) {
7219
7479
  if (!relation) {
7220
7480
  return "";
7221
7481
  }
7222
- const spouseType = pick(
7223
- sexOf2(this.path?.[1].indi),
7482
+ const spouseType = pick4(
7483
+ sexOf5(this.path?.[1].indi),
7224
7484
  "\u592B",
7225
7485
  "\u59BB",
7226
7486
  "\u914D\u5076\u8005"
@@ -7232,7 +7492,7 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7232
7492
  return "";
7233
7493
  }
7234
7494
  const spouse = this.path?.[this.path.length - 1].indi;
7235
- const spouseType = pick(sexOf2(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7495
+ const spouseType = pick4(sexOf5(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7236
7496
  return `${relation}\u306E${spouseType}`;
7237
7497
  }
7238
7498
  of(relation) {
@@ -7268,7 +7528,28 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7268
7528
  if (!relation || !this.pathN?.relation) {
7269
7529
  return relation ?? "";
7270
7530
  }
7271
- return `${this.pathN.relation}\u306E${relation}`;
7531
+ if (this.pathN.relation === "step") {
7532
+ if (relation === "\u7236") {
7533
+ return "\u7EE7\u7236";
7534
+ }
7535
+ if (relation === "\u6BCD") {
7536
+ return "\u7D99\u6BCD";
7537
+ }
7538
+ if (relation === "\u606F\u5B50") {
7539
+ return "\u7D99\u5B50";
7540
+ }
7541
+ if (relation === "\u5A18") {
7542
+ return "\u7D99\u5A18";
7543
+ }
7544
+ return `\u7D99${relation}`;
7545
+ }
7546
+ if (this.pathN.relation === "adopted") {
7547
+ return `\u990A\u5B50\u306E${relation}`;
7548
+ }
7549
+ if (this.pathN.relation === "foster") {
7550
+ return `\u91CC\u89AA\u306E${relation}`;
7551
+ }
7552
+ return relation;
7272
7553
  }
7273
7554
  };
7274
7555
 
@@ -7277,22 +7558,32 @@ var InLawsZh = {
7277
7558
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u914D\u5076": "\u513F\u5AB3/\u5973\u5A7F",
7278
7559
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u59BB\u5B50": "\u513F\u5AB3",
7279
7560
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u4E08\u592B": "\u5973\u5A7F",
7280
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
7281
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
7282
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
7561
+ "\u59BB\u5B50\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD",
7562
+ "\u4E08\u592B\u7684\u6BCD\u4EB2": "\u5A46\u5A46",
7563
+ "(\u914D\u5076)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
7564
+ "\u59BB\u5B50\u7684\u7236\u4EB2": "\u5CB3\u7236",
7565
+ "\u4E08\u592B\u7684\u7236\u4EB2": "\u516C\u516C",
7566
+ "(\u914D\u5076)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
7567
+ "\u59BB\u5B50\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD",
7568
+ "\u4E08\u592B\u7684\u7236\u6BCD": "\u516C\u516C\u5A46\u5A46",
7569
+ "(\u914D\u5076)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
7283
7570
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u59BB\u5B50": "\u5AC2\u5B50/\u5F1F\u59B9",
7284
7571
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u4E08\u592B": "\u59D0\u592B/\u59B9\u592B",
7285
7572
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u914D\u5076": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
7286
7573
  "(\u5F02\u7236\u6BCD\u7684)?\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59D0\u592B/\u59B9\u592B",
7287
7574
  "(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u5AC2\u5B50/\u5F1F\u59B9",
7288
7575
  "(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
7289
- "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
7290
- "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
7576
+ "(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u59D0\u59B9": "\u59E8\u5B50",
7577
+ "(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u59D0\u59B9": "\u59D1\u5B50",
7578
+ "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
7579
+ "(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u5144\u5F1F": "\u5185\u5144/\u5185\u5F1F",
7580
+ "(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4",
7581
+ "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
7291
7582
  "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F\u59D0\u59B9": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9"
7292
7583
  };
7293
7584
 
7294
7585
  // src/kinship-translator/kinship-translator.zh.ts
7295
- var sexOf3 = (person) => {
7586
+ var sexOf6 = (person) => {
7296
7587
  if (person?.isMale?.()) {
7297
7588
  return "m";
7298
7589
  }
@@ -7301,7 +7592,7 @@ var sexOf3 = (person) => {
7301
7592
  }
7302
7593
  return "n";
7303
7594
  };
7304
- var pick2 = (sex, male, female, neutral) => {
7595
+ var pick5 = (sex, male, female, neutral) => {
7305
7596
  if (sex === "m") {
7306
7597
  return male;
7307
7598
  }
@@ -7314,41 +7605,41 @@ var lineal2 = (level, sex, kind) => {
7314
7605
  const L = Math.max(1, level);
7315
7606
  if (kind === "asc") {
7316
7607
  if (L <= 1) {
7317
- return pick2(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
7608
+ return pick5(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
7318
7609
  }
7319
7610
  if (L === 2) {
7320
- return pick2(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7611
+ return pick5(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7321
7612
  }
7322
7613
  if (L === 3) {
7323
- return pick2(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7614
+ return pick5(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7324
7615
  }
7325
7616
  if (L === 4) {
7326
- return pick2(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7617
+ return pick5(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7327
7618
  }
7328
- return pick2(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
7619
+ return pick5(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
7329
7620
  }
7330
7621
  if (L <= 1) {
7331
- return pick2(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
7622
+ return pick5(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
7332
7623
  }
7333
7624
  if (L === 2) {
7334
- return pick2(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
7625
+ return pick5(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
7335
7626
  }
7336
7627
  if (L === 3) {
7337
- return pick2(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
7628
+ return pick5(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
7338
7629
  }
7339
7630
  if (L === 4) {
7340
- return pick2(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
7631
+ return pick5(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
7341
7632
  }
7342
- return pick2(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
7633
+ return pick5(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
7343
7634
  };
7344
7635
  var cousinPlain2 = (degree, sex) => {
7345
7636
  if (degree <= 1) {
7346
- return pick2(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
7637
+ return pick5(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
7347
7638
  }
7348
7639
  if (degree === 2) {
7349
- return pick2(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
7640
+ return pick5(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
7350
7641
  }
7351
- return pick2(
7642
+ return pick5(
7352
7643
  sex,
7353
7644
  `${degree}\u4EE3\u5802\u8868\u5144\u5F1F`,
7354
7645
  `${degree}\u4EE3\u5802\u8868\u59D0\u59B9`,
@@ -7361,7 +7652,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7361
7652
  if (degree > 0) {
7362
7653
  degree = degree - 1;
7363
7654
  }
7364
- return cousinPlain2(degree, sexOf3(this.personN));
7655
+ return cousinPlain2(degree, sexOf6(this.personN));
7365
7656
  }
7366
7657
  removal() {
7367
7658
  const level = this.pathN?.level ?? 0;
@@ -7373,56 +7664,56 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7373
7664
  return level < 0 ? this.nibling() : this.auncle();
7374
7665
  }
7375
7666
  const removed = Math.abs(level);
7376
- return `${cousinPlain2(degree, sexOf3(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
7667
+ return `${cousinPlain2(degree, sexOf6(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
7377
7668
  }
7378
7669
  auncle() {
7379
7670
  const level = Math.abs(this.pathN?.level ?? 0);
7380
- const sex = sexOf3(this.personN);
7381
- if (level <= 2) {
7382
- return pick2(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
7671
+ const sex = sexOf6(this.personN);
7672
+ if (level <= 1) {
7673
+ return pick5(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
7383
7674
  }
7384
- if (level === 3) {
7385
- return pick2(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
7675
+ if (level === 2) {
7676
+ return pick5(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
7386
7677
  }
7387
- return pick2(
7678
+ return pick5(
7388
7679
  sex,
7389
- `${level - 2}\u4EE3\u524D\u7684\u53D4\u53D4`,
7390
- `${level - 2}\u4EE3\u524D\u7684\u963F\u59E8`,
7391
- `${level - 2}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
7680
+ `${level - 1}\u4EE3\u524D\u7684\u53D4\u53D4`,
7681
+ `${level - 1}\u4EE3\u524D\u7684\u963F\u59E8`,
7682
+ `${level - 1}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
7392
7683
  );
7393
7684
  }
7394
7685
  nibling() {
7395
7686
  const level = Math.abs(this.pathN?.level ?? 0);
7396
- const sex = sexOf3(this.personN);
7397
- if (level <= 2) {
7398
- return pick2(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
7687
+ const sex = sexOf6(this.personN);
7688
+ if (level <= 1) {
7689
+ return pick5(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
7399
7690
  }
7400
- if (level === 3) {
7401
- return pick2(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
7691
+ if (level === 2) {
7692
+ return pick5(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
7402
7693
  }
7403
- return pick2(
7694
+ return pick5(
7404
7695
  sex,
7405
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
7406
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5973`,
7407
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
7696
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
7697
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5973`,
7698
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
7408
7699
  );
7409
7700
  }
7410
7701
  parent() {
7411
7702
  return lineal2(
7412
7703
  Math.abs(this.pathN?.level ?? 0),
7413
- sexOf3(this.personN),
7704
+ sexOf6(this.personN),
7414
7705
  "asc"
7415
7706
  );
7416
7707
  }
7417
7708
  child() {
7418
7709
  return lineal2(
7419
7710
  Math.abs(this.pathN?.level ?? 0),
7420
- sexOf3(this.personN),
7711
+ sexOf6(this.personN),
7421
7712
  "desc"
7422
7713
  );
7423
7714
  }
7424
7715
  sibling() {
7425
- return pick2(sexOf3(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
7716
+ return pick5(sexOf6(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
7426
7717
  }
7427
7718
  halfBlood(relation) {
7428
7719
  if (!relation || !this.isHalfBlood) {
@@ -7431,14 +7722,14 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7431
7722
  return `\u5F02\u7236\u6BCD\u7684${relation}`;
7432
7723
  }
7433
7724
  spouse() {
7434
- return pick2(sexOf3(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7725
+ return pick5(sexOf6(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7435
7726
  }
7436
7727
  ofSpouse(relation) {
7437
7728
  if (!relation) {
7438
7729
  return "";
7439
7730
  }
7440
- const spouseType = pick2(
7441
- sexOf3(this.path?.[1].indi),
7731
+ const spouseType = pick5(
7732
+ sexOf6(this.path?.[1].indi),
7442
7733
  "\u4E08\u592B",
7443
7734
  "\u59BB\u5B50",
7444
7735
  "\u914D\u5076"
@@ -7450,7 +7741,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7450
7741
  return "";
7451
7742
  }
7452
7743
  const spouse = this.path?.[this.path.length - 1].indi;
7453
- const spouseType = pick2(sexOf3(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7744
+ const spouseType = pick5(sexOf6(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7454
7745
  return `${relation}\u7684${spouseType}`;
7455
7746
  }
7456
7747
  of(relation) {
@@ -7486,7 +7777,40 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7486
7777
  if (!relation || !this.pathN?.relation) {
7487
7778
  return relation ?? "";
7488
7779
  }
7489
- return `${this.pathN.relation}${relation}`;
7780
+ if (this.pathN.relation === "step") {
7781
+ if (relation === "\u7236\u4EB2") {
7782
+ return "\u7EE7\u7236";
7783
+ }
7784
+ if (relation === "\u6BCD\u4EB2") {
7785
+ return "\u7EE7\u6BCD";
7786
+ }
7787
+ if (relation === "\u513F\u5B50") {
7788
+ return "\u7EE7\u5B50";
7789
+ }
7790
+ if (relation === "\u5973\u513F") {
7791
+ return "\u7EE7\u5973";
7792
+ }
7793
+ return `\u7EE7${relation}`;
7794
+ }
7795
+ if (this.pathN.relation === "adopted") {
7796
+ if (relation === "\u7236\u4EB2") {
7797
+ return "\u517B\u7236";
7798
+ }
7799
+ if (relation === "\u6BCD\u4EB2") {
7800
+ return "\u517B\u6BCD";
7801
+ }
7802
+ if (relation === "\u513F\u5B50") {
7803
+ return "\u517B\u5B50";
7804
+ }
7805
+ if (relation === "\u5973\u513F") {
7806
+ return "\u517B\u5973";
7807
+ }
7808
+ return `\u517B${relation}`;
7809
+ }
7810
+ if (this.pathN.relation === "foster") {
7811
+ return `\u5BC4\u517B${relation}`;
7812
+ }
7813
+ return relation;
7490
7814
  }
7491
7815
  };
7492
7816