@treeviz/gedcom-parser 2.1.11 → 2.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/classes/index.js +732 -396
- package/dist/classes/indi.d.ts +2 -2
- package/dist/classes/indi.d.ts.map +1 -1
- package/dist/cli/index.js +733 -397
- package/dist/constants/index.js +731 -395
- package/dist/factories/index.js +731 -395
- package/dist/factories/kinship-factory.d.ts +2 -2
- package/dist/factories/kinship-factory.d.ts.map +1 -1
- package/dist/index.js +733 -397
- package/dist/kinship-translator/index.js +731 -395
- package/dist/kinship-translator/kinship-translator.basic.d.ts +3 -1
- package/dist/kinship-translator/kinship-translator.basic.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.d.ts +3 -2
- package/dist/kinship-translator/kinship-translator.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.de.d.ts +2 -3
- package/dist/kinship-translator/kinship-translator.de.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.en.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.es.d.ts +2 -3
- package/dist/kinship-translator/kinship-translator.es.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.fr.d.ts +2 -3
- package/dist/kinship-translator/kinship-translator.fr.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.hu.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.ja.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.ru.d.ts +1 -1
- package/dist/kinship-translator/kinship-translator.ru.d.ts.map +1 -1
- package/dist/kinship-translator/kinship-translator.zh.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.de.d.ts +1 -0
- package/dist/kinship-translator/patterns.de.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.es.d.ts +1 -0
- package/dist/kinship-translator/patterns.es.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.fr.d.ts +1 -0
- package/dist/kinship-translator/patterns.fr.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.hu.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.ru.d.ts +1 -0
- package/dist/kinship-translator/patterns.ru.d.ts.map +1 -1
- package/dist/kinship-translator/patterns.zh.d.ts.map +1 -1
- package/dist/structures/gedcom.d.ts +1 -0
- package/dist/structures/gedcom.d.ts.map +1 -1
- package/dist/structures/individual.d.ts +1 -0
- package/dist/structures/individual.d.ts.map +1 -1
- package/dist/types/types.d.ts +2 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils/common-creator.d.ts.map +1 -1
- package/dist/utils/index.js +733 -397
- package/package.json +1 -1
package/dist/classes/index.js
CHANGED
|
@@ -1445,11 +1445,12 @@ var hungarianOrdinalize = (n) => {
|
|
|
1445
1445
|
|
|
1446
1446
|
// src/kinship-translator/kinship-translator.basic.ts
|
|
1447
1447
|
var KinshipTranslatorBasic = class {
|
|
1448
|
-
constructor(path, displayName = "givenname") {
|
|
1448
|
+
constructor(path, displayName = "givenname", nameOrder = "first-last") {
|
|
1449
1449
|
this.isOfSpouse = false;
|
|
1450
1450
|
this.isSpouseOf = false;
|
|
1451
1451
|
this._path = path;
|
|
1452
1452
|
this.displayName = displayName;
|
|
1453
|
+
this.nameOrder = nameOrder;
|
|
1453
1454
|
}
|
|
1454
1455
|
get path() {
|
|
1455
1456
|
return this._path;
|
|
@@ -1728,7 +1729,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
1728
1729
|
}
|
|
1729
1730
|
return `${hungarianOrdinalize(
|
|
1730
1731
|
degree
|
|
1731
|
-
)}unokatestv\xE9r ${level}x elt\xE1vol\xEDtva`;
|
|
1732
|
+
)}unokatestv\xE9r ${Math.abs(level)}x elt\xE1vol\xEDtva`;
|
|
1732
1733
|
}
|
|
1733
1734
|
auncle() {
|
|
1734
1735
|
const level = this.pathN?.level ?? 0;
|
|
@@ -1772,14 +1773,25 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
1772
1773
|
return `${ordinalized ? `${ordinalized}unoka` : ""}testv\xE9r ${origPrefix.replace(/nagy$/, "")}unok\xE1ja`;
|
|
1773
1774
|
}
|
|
1774
1775
|
parent() {
|
|
1776
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1777
|
+
if (level <= 1) {
|
|
1778
|
+
if (this.personN?.isMale()) {
|
|
1779
|
+
return "apa";
|
|
1780
|
+
}
|
|
1781
|
+
if (this.personN?.isFemale()) {
|
|
1782
|
+
return "anya";
|
|
1783
|
+
}
|
|
1784
|
+
return "sz\xFCl\u0151";
|
|
1785
|
+
}
|
|
1775
1786
|
const prefix = this.directPrefix();
|
|
1787
|
+
const gen = prefix === "nagy" ? "" : prefix;
|
|
1776
1788
|
if (this.personN?.isMale()) {
|
|
1777
|
-
return `${
|
|
1789
|
+
return `${gen}nagyapa`;
|
|
1778
1790
|
}
|
|
1779
1791
|
if (this.personN?.isFemale()) {
|
|
1780
|
-
return `${
|
|
1792
|
+
return `${gen}nagyanya`;
|
|
1781
1793
|
}
|
|
1782
|
-
return `${
|
|
1794
|
+
return `${gen}nagysz\xFCl\u0151`;
|
|
1783
1795
|
}
|
|
1784
1796
|
child() {
|
|
1785
1797
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
@@ -1861,7 +1873,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
|
|
|
1861
1873
|
}
|
|
1862
1874
|
of(relation) {
|
|
1863
1875
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
1864
|
-
nameOrder:
|
|
1876
|
+
nameOrder: this.nameOrder
|
|
1865
1877
|
});
|
|
1866
1878
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
1867
1879
|
if (this.displayName === "none") {
|
|
@@ -1973,27 +1985,30 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
1973
1985
|
if (!degree) {
|
|
1974
1986
|
return level < 0 ? this.nibling() : this.auncle();
|
|
1975
1987
|
}
|
|
1976
|
-
return `${ordinalize(degree)} cousin ${level}x removed`;
|
|
1988
|
+
return `${ordinalize(degree)} cousin ${Math.abs(level)}x removed`;
|
|
1977
1989
|
}
|
|
1978
1990
|
auncle() {
|
|
1979
|
-
const
|
|
1991
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
1992
|
+
const greats = level <= 1 ? "" : "great-".repeat(level - 1);
|
|
1980
1993
|
if (this.personN?.isMale()) {
|
|
1981
|
-
return `${
|
|
1994
|
+
return `${greats}uncle`;
|
|
1982
1995
|
}
|
|
1983
1996
|
if (this.personN?.isFemale()) {
|
|
1984
|
-
return `${
|
|
1997
|
+
return `${greats}aunt`;
|
|
1985
1998
|
}
|
|
1986
|
-
return `${
|
|
1999
|
+
return greats ? `${greats}uncle/${greats}aunt` : "uncle/aunt";
|
|
1987
2000
|
}
|
|
1988
2001
|
nibling() {
|
|
1989
|
-
const
|
|
2002
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2003
|
+
const greats = level <= 2 ? "" : "great-".repeat(level - 2);
|
|
2004
|
+
const grand = level <= 1 ? "" : "grand";
|
|
1990
2005
|
if (this.personN?.isMale()) {
|
|
1991
|
-
return `${
|
|
2006
|
+
return `${greats}${grand}nephew`;
|
|
1992
2007
|
}
|
|
1993
2008
|
if (this.personN?.isFemale()) {
|
|
1994
|
-
return `${
|
|
2009
|
+
return `${greats}${grand}niece`;
|
|
1995
2010
|
}
|
|
1996
|
-
return `${
|
|
2011
|
+
return greats || grand ? `${greats}${grand}nephew/${greats}${grand}niece` : "nephew/niece";
|
|
1997
2012
|
}
|
|
1998
2013
|
parent() {
|
|
1999
2014
|
const prefix = this.directPrefix();
|
|
@@ -2072,7 +2087,7 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
2072
2087
|
}
|
|
2073
2088
|
of(relation) {
|
|
2074
2089
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
2075
|
-
nameOrder:
|
|
2090
|
+
nameOrder: this.nameOrder
|
|
2076
2091
|
});
|
|
2077
2092
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
2078
2093
|
if (this.displayName === "none") {
|
|
@@ -2121,45 +2136,64 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
|
|
|
2121
2136
|
};
|
|
2122
2137
|
|
|
2123
2138
|
// src/kinship-translator/patterns.de.ts
|
|
2139
|
+
var parentRelationsDe = {
|
|
2140
|
+
step: "Stief",
|
|
2141
|
+
foster: "Pflege",
|
|
2142
|
+
adopted: "Adoptiv"
|
|
2143
|
+
};
|
|
2124
2144
|
var InLawsDe = {
|
|
2125
|
-
"Ehepartner von (
|
|
2126
|
-
"Ehefrau von (
|
|
2127
|
-
"Ehemann von (
|
|
2128
|
-
"
|
|
2129
|
-
"
|
|
2130
|
-
"
|
|
2131
|
-
"Ehefrau von (Halb)
|
|
2132
|
-
"Ehemann von (Halb)
|
|
2133
|
-
"Ehepartner von (Halb)
|
|
2134
|
-
"(Halb)
|
|
2135
|
-
"(Halb)
|
|
2136
|
-
"(Halb)
|
|
2145
|
+
"Ehepartner von (Kind|Tochter|Sohn)": "Schwiegerkind",
|
|
2146
|
+
"Ehefrau von (Kind|Tochter|Sohn)": "Schwiegertochter",
|
|
2147
|
+
"Ehemann von (Kind|Tochter|Sohn)": "Schwiegersohn",
|
|
2148
|
+
"Mutter (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegermutter",
|
|
2149
|
+
"Vater (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegervater",
|
|
2150
|
+
"Elternteil (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegerelternteil",
|
|
2151
|
+
"Ehefrau von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schw\xE4gerin",
|
|
2152
|
+
"Ehemann von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager",
|
|
2153
|
+
"Ehepartner von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager/Schw\xE4gerin",
|
|
2154
|
+
"(Halb)?-?(Schwester|schwester) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schw\xE4gerin",
|
|
2155
|
+
"(Halb)?-?(Bruder|bruder) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager",
|
|
2156
|
+
"(Halb)?-?(Geschwister|geschwister) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager/Schw\xE4gerin"
|
|
2137
2157
|
};
|
|
2138
2158
|
|
|
2139
2159
|
// src/kinship-translator/kinship-translator.de.ts
|
|
2140
|
-
var
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
if (level === 2) {
|
|
2147
|
-
return "Gro\xDF";
|
|
2148
|
-
}
|
|
2149
|
-
if (level === 3) {
|
|
2150
|
-
return "Urgro\xDF";
|
|
2151
|
-
}
|
|
2152
|
-
return `Ur${level - 2}-gro\xDF`;
|
|
2160
|
+
var sexOf = (person) => {
|
|
2161
|
+
if (person?.isMale?.()) {
|
|
2162
|
+
return "m";
|
|
2163
|
+
}
|
|
2164
|
+
if (person?.isFemale?.()) {
|
|
2165
|
+
return "f";
|
|
2153
2166
|
}
|
|
2167
|
+
return "n";
|
|
2168
|
+
};
|
|
2169
|
+
var pick = (sex, male, female, neutral) => {
|
|
2170
|
+
if (sex === "m") {
|
|
2171
|
+
return male;
|
|
2172
|
+
}
|
|
2173
|
+
if (sex === "f") {
|
|
2174
|
+
return female;
|
|
2175
|
+
}
|
|
2176
|
+
return neutral;
|
|
2177
|
+
};
|
|
2178
|
+
var ur = (count) => count > 0 ? "Ur".repeat(count) : "";
|
|
2179
|
+
var genitiveArticle = (spouseType) => {
|
|
2180
|
+
if (spouseType === "Ehefrau") {
|
|
2181
|
+
return `der ${spouseType}`;
|
|
2182
|
+
}
|
|
2183
|
+
return `des ${spouseType}s`;
|
|
2184
|
+
};
|
|
2185
|
+
var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
2154
2186
|
indirect() {
|
|
2155
2187
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
2156
2188
|
if (degree > 0) {
|
|
2157
2189
|
degree = degree - 1;
|
|
2158
2190
|
}
|
|
2159
|
-
|
|
2160
|
-
|
|
2191
|
+
const sex = sexOf(this.personN);
|
|
2192
|
+
const cousin = pick(sex, "Cousin", "Cousine", "Cousin/Cousine");
|
|
2193
|
+
if (degree <= 1) {
|
|
2194
|
+
return cousin;
|
|
2161
2195
|
}
|
|
2162
|
-
return
|
|
2196
|
+
return `${cousin} ${degree}. Grades`;
|
|
2163
2197
|
}
|
|
2164
2198
|
removal() {
|
|
2165
2199
|
const level = this.pathN?.level ?? 0;
|
|
@@ -2170,106 +2204,106 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
2170
2204
|
if (!degree) {
|
|
2171
2205
|
return level < 0 ? this.nibling() : this.auncle();
|
|
2172
2206
|
}
|
|
2173
|
-
return
|
|
2207
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 entfernt`;
|
|
2174
2208
|
}
|
|
2175
2209
|
auncle() {
|
|
2176
|
-
const
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
if (this.personN?.isFemale()) {
|
|
2181
|
-
return `${prefix}tante`;
|
|
2210
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2211
|
+
const sex = sexOf(this.personN);
|
|
2212
|
+
if (level <= 1) {
|
|
2213
|
+
return pick(sex, "Onkel", "Tante", "Onkel/Tante");
|
|
2182
2214
|
}
|
|
2183
|
-
|
|
2215
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
2216
|
+
return pick(
|
|
2217
|
+
sex,
|
|
2218
|
+
`${prefix}onkel`,
|
|
2219
|
+
`${prefix}tante`,
|
|
2220
|
+
`${prefix}onkel/tante`
|
|
2221
|
+
);
|
|
2184
2222
|
}
|
|
2185
2223
|
nibling() {
|
|
2186
|
-
const
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
if (this.personN?.isFemale()) {
|
|
2191
|
-
return `${prefix}nichte`;
|
|
2224
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2225
|
+
const sex = sexOf(this.personN);
|
|
2226
|
+
if (level <= 1) {
|
|
2227
|
+
return pick(sex, "Neffe", "Nichte", "Neffe/Nichte");
|
|
2192
2228
|
}
|
|
2193
|
-
|
|
2229
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
2230
|
+
return pick(
|
|
2231
|
+
sex,
|
|
2232
|
+
`${prefix}neffe`,
|
|
2233
|
+
`${prefix}nichte`,
|
|
2234
|
+
`${prefix}neffe/nichte`
|
|
2235
|
+
);
|
|
2194
2236
|
}
|
|
2195
2237
|
parent() {
|
|
2196
|
-
const
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
if (this.personN?.isFemale()) {
|
|
2201
|
-
return `${prefix}mutter`;
|
|
2238
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2239
|
+
const sex = sexOf(this.personN);
|
|
2240
|
+
if (level <= 1) {
|
|
2241
|
+
return pick(sex, "Vater", "Mutter", "Elternteil");
|
|
2202
2242
|
}
|
|
2203
|
-
|
|
2243
|
+
const prefix = `${ur(level - 2)}Gro\xDF`;
|
|
2244
|
+
return pick(
|
|
2245
|
+
sex,
|
|
2246
|
+
`${prefix}vater`,
|
|
2247
|
+
`${prefix}mutter`,
|
|
2248
|
+
`${prefix}elternteil`
|
|
2249
|
+
);
|
|
2204
2250
|
}
|
|
2205
2251
|
child() {
|
|
2206
|
-
const
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
if (this.personN?.isFemale()) {
|
|
2211
|
-
return `${prefix}tochter`;
|
|
2252
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2253
|
+
const sex = sexOf(this.personN);
|
|
2254
|
+
if (level <= 1) {
|
|
2255
|
+
return pick(sex, "Sohn", "Tochter", "Kind");
|
|
2212
2256
|
}
|
|
2213
|
-
|
|
2257
|
+
const prefix = ur(level - 2);
|
|
2258
|
+
return pick(
|
|
2259
|
+
sex,
|
|
2260
|
+
`${prefix}Enkel`,
|
|
2261
|
+
`${prefix}Enkelin`,
|
|
2262
|
+
`${prefix}Enkelkind`
|
|
2263
|
+
);
|
|
2214
2264
|
}
|
|
2215
2265
|
sibling() {
|
|
2216
|
-
|
|
2217
|
-
return "bruder";
|
|
2218
|
-
}
|
|
2219
|
-
if (this.personN?.isFemale()) {
|
|
2220
|
-
return "schwester";
|
|
2221
|
-
}
|
|
2222
|
-
return "geschwister";
|
|
2266
|
+
return pick(sexOf(this.personN), "Bruder", "Schwester", "Geschwister");
|
|
2223
2267
|
}
|
|
2224
2268
|
halfBlood(relation) {
|
|
2225
2269
|
if (!relation || !this.isHalfBlood) {
|
|
2226
2270
|
return relation ?? "";
|
|
2227
2271
|
}
|
|
2228
|
-
if (
|
|
2272
|
+
if (/[\s-]/.test(relation) || /^(Groß|Ur)/.test(relation)) {
|
|
2229
2273
|
return `Halb-${relation}`;
|
|
2230
2274
|
}
|
|
2231
|
-
return `Halb${relation}`;
|
|
2275
|
+
return `Halb${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
2232
2276
|
}
|
|
2233
2277
|
spouse() {
|
|
2234
|
-
|
|
2235
|
-
return "Ehemann";
|
|
2236
|
-
}
|
|
2237
|
-
if (this.personN?.isFemale()) {
|
|
2238
|
-
return "Ehefrau";
|
|
2239
|
-
}
|
|
2240
|
-
return "Ehepartner";
|
|
2278
|
+
return pick(sexOf(this.personN), "Ehemann", "Ehefrau", "Ehepartner");
|
|
2241
2279
|
}
|
|
2242
2280
|
ofSpouse(relation) {
|
|
2243
2281
|
if (!relation) {
|
|
2244
2282
|
return "";
|
|
2245
2283
|
}
|
|
2246
|
-
const
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
}
|
|
2254
|
-
return `${relation} des ${spouseType}s`;
|
|
2284
|
+
const spouseType = pick(
|
|
2285
|
+
sexOf(this.path?.[1].indi),
|
|
2286
|
+
"Ehemann",
|
|
2287
|
+
"Ehefrau",
|
|
2288
|
+
"Ehepartner"
|
|
2289
|
+
);
|
|
2290
|
+
return `${relation} ${genitiveArticle(spouseType)}`;
|
|
2255
2291
|
}
|
|
2256
2292
|
spouseOf(relation) {
|
|
2257
2293
|
if (!relation) {
|
|
2258
2294
|
return "";
|
|
2259
2295
|
}
|
|
2260
|
-
const
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
spouseType = "Ehefrau";
|
|
2267
|
-
}
|
|
2296
|
+
const spouseType = pick(
|
|
2297
|
+
sexOf(this.path?.[this.path.length - 1].indi),
|
|
2298
|
+
"Ehemann",
|
|
2299
|
+
"Ehefrau",
|
|
2300
|
+
"Ehepartner"
|
|
2301
|
+
);
|
|
2268
2302
|
return `${spouseType} von ${relation}`;
|
|
2269
2303
|
}
|
|
2270
2304
|
of(relation) {
|
|
2271
2305
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
2272
|
-
nameOrder:
|
|
2306
|
+
nameOrder: this.nameOrder
|
|
2273
2307
|
});
|
|
2274
2308
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
2275
2309
|
if (this.displayName === "none") {
|
|
@@ -2282,8 +2316,8 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
2282
2316
|
if (!name || !relation) {
|
|
2283
2317
|
return relation ?? "";
|
|
2284
2318
|
}
|
|
2285
|
-
if (relation.includes(" des ") || relation.includes(" von ")) {
|
|
2286
|
-
return relation.replace(/ (des|von) /, ` $1 ${name}s `);
|
|
2319
|
+
if (relation.includes(" des ") || relation.includes(" der ") || relation.includes(" von ")) {
|
|
2320
|
+
return relation.replace(/ (des|der|von) /, ` $1 ${name}s `);
|
|
2287
2321
|
}
|
|
2288
2322
|
return `${name}s ${relation}`;
|
|
2289
2323
|
}
|
|
@@ -2313,50 +2347,82 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
|
|
|
2313
2347
|
if (!relation || !this.pathN?.relation) {
|
|
2314
2348
|
return relation ?? "";
|
|
2315
2349
|
}
|
|
2316
|
-
|
|
2350
|
+
const prefix = parentRelationsDe[this.pathN.relation];
|
|
2351
|
+
if (!prefix) {
|
|
2352
|
+
return relation;
|
|
2353
|
+
}
|
|
2354
|
+
if (prefix.endsWith("-") || prefix.endsWith(" ")) {
|
|
2355
|
+
return `${prefix}${relation}`;
|
|
2356
|
+
}
|
|
2357
|
+
return `${prefix}${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
|
|
2317
2358
|
}
|
|
2318
2359
|
};
|
|
2319
2360
|
|
|
2320
2361
|
// src/kinship-translator/patterns.fr.ts
|
|
2362
|
+
var parentRelationsFr = {
|
|
2363
|
+
step: "step",
|
|
2364
|
+
foster: "foster",
|
|
2365
|
+
adopted: "adopted"
|
|
2366
|
+
};
|
|
2321
2367
|
var InLawsFr = {
|
|
2322
2368
|
"conjoint de (enfant|fille|fils)": "beau-fils/belle-fille",
|
|
2323
2369
|
"\xE9pouse de (enfant|fille|fils)": "belle-fille",
|
|
2324
2370
|
"mari de (enfant|fille|fils)": "gendre",
|
|
2325
|
-
"m\xE8re du
|
|
2326
|
-
"p\xE8re du
|
|
2327
|
-
"parent du
|
|
2371
|
+
"m\xE8re (du mari|du conjoint|de l'\xE9pouse)": "belle-m\xE8re",
|
|
2372
|
+
"p\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-p\xE8re",
|
|
2373
|
+
"parent (du mari|du conjoint|de l'\xE9pouse)": "beau-parent",
|
|
2328
2374
|
"\xE9pouse de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "belle-s\u0153ur",
|
|
2329
2375
|
"mari de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re",
|
|
2330
2376
|
"conjoint de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re/belle-s\u0153ur",
|
|
2331
|
-
"(demi-)?s\u0153ur du
|
|
2332
|
-
"(demi-)?fr\xE8re du
|
|
2333
|
-
"(demi-)?fr\xE8re/s\u0153ur du
|
|
2377
|
+
"(demi-)?s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "belle-s\u0153ur",
|
|
2378
|
+
"(demi-)?fr\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re",
|
|
2379
|
+
"(demi-)?fr\xE8re/s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re/belle-s\u0153ur"
|
|
2334
2380
|
};
|
|
2335
2381
|
|
|
2336
2382
|
// src/kinship-translator/kinship-translator.fr.ts
|
|
2337
|
-
var
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
if (level === 2) {
|
|
2344
|
-
return "grand-";
|
|
2345
|
-
}
|
|
2346
|
-
if (level === 3) {
|
|
2347
|
-
return "arri\xE8re-grand-";
|
|
2348
|
-
}
|
|
2349
|
-
return `arri\xE8re${level - 2}-grand-`;
|
|
2383
|
+
var sexOf2 = (person) => {
|
|
2384
|
+
if (person?.isMale?.()) {
|
|
2385
|
+
return "m";
|
|
2386
|
+
}
|
|
2387
|
+
if (person?.isFemale?.()) {
|
|
2388
|
+
return "f";
|
|
2350
2389
|
}
|
|
2390
|
+
return "n";
|
|
2391
|
+
};
|
|
2392
|
+
var pick2 = (sex, male, female, neutral) => {
|
|
2393
|
+
if (sex === "m") {
|
|
2394
|
+
return male;
|
|
2395
|
+
}
|
|
2396
|
+
if (sex === "f") {
|
|
2397
|
+
return female;
|
|
2398
|
+
}
|
|
2399
|
+
return neutral;
|
|
2400
|
+
};
|
|
2401
|
+
var arriere = (count) => count > 0 ? "arri\xE8re-".repeat(count) : "";
|
|
2402
|
+
var frenchOrdinal = (n) => n === 1 ? "1er" : `${n}e`;
|
|
2403
|
+
var isFeminineRelation = (relation) => /mère|fille|sœur|tante|nièce|cousine|épouse/.test(relation);
|
|
2404
|
+
var ofSpousePrep = (spouseType) => {
|
|
2405
|
+
if (spouseType === "\xE9pouse") {
|
|
2406
|
+
return "de l'";
|
|
2407
|
+
}
|
|
2408
|
+
return "du ";
|
|
2409
|
+
};
|
|
2410
|
+
var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
2351
2411
|
indirect() {
|
|
2352
2412
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
2353
2413
|
if (degree > 0) {
|
|
2354
2414
|
degree = degree - 1;
|
|
2355
2415
|
}
|
|
2356
|
-
|
|
2357
|
-
|
|
2416
|
+
const cousin = pick2(
|
|
2417
|
+
sexOf2(this.personN),
|
|
2418
|
+
"cousin",
|
|
2419
|
+
"cousine",
|
|
2420
|
+
"cousin/cousine"
|
|
2421
|
+
);
|
|
2422
|
+
if (degree <= 1) {
|
|
2423
|
+
return cousin;
|
|
2358
2424
|
}
|
|
2359
|
-
return
|
|
2425
|
+
return `${cousin} au ${frenchOrdinal(degree)} degr\xE9`;
|
|
2360
2426
|
}
|
|
2361
2427
|
removal() {
|
|
2362
2428
|
const level = this.pathN?.level ?? 0;
|
|
@@ -2367,56 +2433,57 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
2367
2433
|
if (!degree) {
|
|
2368
2434
|
return level < 0 ? this.nibling() : this.auncle();
|
|
2369
2435
|
}
|
|
2370
|
-
return
|
|
2436
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 \xE9loign\xE9`;
|
|
2371
2437
|
}
|
|
2372
2438
|
auncle() {
|
|
2373
|
-
const
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
return `${prefix}tante`;
|
|
2439
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2440
|
+
const sex = sexOf2(this.personN);
|
|
2441
|
+
const base = pick2(sex, "oncle", "tante", "oncle/tante");
|
|
2442
|
+
if (level <= 1) {
|
|
2443
|
+
return base;
|
|
2379
2444
|
}
|
|
2380
|
-
|
|
2445
|
+
const grands = pick2(
|
|
2446
|
+
sex,
|
|
2447
|
+
"grand-oncle",
|
|
2448
|
+
"grand-tante",
|
|
2449
|
+
"grand-oncle/tante"
|
|
2450
|
+
);
|
|
2451
|
+
return `${arriere(level - 2)}${grands}`;
|
|
2381
2452
|
}
|
|
2382
2453
|
nibling() {
|
|
2383
|
-
const
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
if (this.personN?.isFemale()) {
|
|
2388
|
-
return `${prefix}ni\xE8ce`;
|
|
2454
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2455
|
+
const sex = sexOf2(this.personN);
|
|
2456
|
+
if (level <= 1) {
|
|
2457
|
+
return pick2(sex, "neveu", "ni\xE8ce", "neveu/ni\xE8ce");
|
|
2389
2458
|
}
|
|
2390
|
-
|
|
2459
|
+
const grands = pick2(
|
|
2460
|
+
sex,
|
|
2461
|
+
"grand-neveu",
|
|
2462
|
+
"grande-ni\xE8ce",
|
|
2463
|
+
"grand-neveu/grande-ni\xE8ce"
|
|
2464
|
+
);
|
|
2465
|
+
return `${arriere(level - 2)}${grands}`;
|
|
2391
2466
|
}
|
|
2392
2467
|
parent() {
|
|
2393
|
-
const
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
if (this.personN?.isFemale()) {
|
|
2398
|
-
return `${prefix}m\xE8re`;
|
|
2468
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2469
|
+
const sex = sexOf2(this.personN);
|
|
2470
|
+
if (level <= 1) {
|
|
2471
|
+
return pick2(sex, "p\xE8re", "m\xE8re", "parent");
|
|
2399
2472
|
}
|
|
2400
|
-
|
|
2473
|
+
const grands = pick2(sex, "grand-p\xE8re", "grand-m\xE8re", "grand-parent");
|
|
2474
|
+
return `${arriere(level - 2)}${grands}`;
|
|
2401
2475
|
}
|
|
2402
2476
|
child() {
|
|
2403
|
-
const
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
if (this.personN?.isFemale()) {
|
|
2408
|
-
return `${prefix}fille`;
|
|
2477
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2478
|
+
const sex = sexOf2(this.personN);
|
|
2479
|
+
if (level <= 1) {
|
|
2480
|
+
return pick2(sex, "fils", "fille", "enfant");
|
|
2409
2481
|
}
|
|
2410
|
-
|
|
2482
|
+
const petits = pick2(sex, "petit-fils", "petite-fille", "petit-enfant");
|
|
2483
|
+
return `${arriere(level - 2)}${petits}`;
|
|
2411
2484
|
}
|
|
2412
2485
|
sibling() {
|
|
2413
|
-
|
|
2414
|
-
return "fr\xE8re";
|
|
2415
|
-
}
|
|
2416
|
-
if (this.personN?.isFemale()) {
|
|
2417
|
-
return "s\u0153ur";
|
|
2418
|
-
}
|
|
2419
|
-
return "fr\xE8re/s\u0153ur";
|
|
2486
|
+
return pick2(sexOf2(this.personN), "fr\xE8re", "s\u0153ur", "fr\xE8re/s\u0153ur");
|
|
2420
2487
|
}
|
|
2421
2488
|
halfBlood(relation) {
|
|
2422
2489
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -2425,45 +2492,35 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
2425
2492
|
return `demi-${relation}`;
|
|
2426
2493
|
}
|
|
2427
2494
|
spouse() {
|
|
2428
|
-
|
|
2429
|
-
return "mari";
|
|
2430
|
-
}
|
|
2431
|
-
if (this.personN?.isFemale()) {
|
|
2432
|
-
return "\xE9pouse";
|
|
2433
|
-
}
|
|
2434
|
-
return "conjoint";
|
|
2495
|
+
return pick2(sexOf2(this.personN), "mari", "\xE9pouse", "conjoint");
|
|
2435
2496
|
}
|
|
2436
2497
|
ofSpouse(relation) {
|
|
2437
2498
|
if (!relation) {
|
|
2438
2499
|
return "";
|
|
2439
2500
|
}
|
|
2440
|
-
const
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
}
|
|
2448
|
-
return `${relation} du ${spouseType}`;
|
|
2501
|
+
const spouseType = pick2(
|
|
2502
|
+
sexOf2(this.path?.[1].indi),
|
|
2503
|
+
"mari",
|
|
2504
|
+
"\xE9pouse",
|
|
2505
|
+
"conjoint"
|
|
2506
|
+
);
|
|
2507
|
+
return `${relation} ${ofSpousePrep(spouseType)}${spouseType}`;
|
|
2449
2508
|
}
|
|
2450
2509
|
spouseOf(relation) {
|
|
2451
2510
|
if (!relation) {
|
|
2452
2511
|
return "";
|
|
2453
2512
|
}
|
|
2454
|
-
const
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
spouseType = "\xE9pouse";
|
|
2461
|
-
}
|
|
2513
|
+
const spouseType = pick2(
|
|
2514
|
+
sexOf2(this.path?.[this.path.length - 1].indi),
|
|
2515
|
+
"mari",
|
|
2516
|
+
"\xE9pouse",
|
|
2517
|
+
"conjoint"
|
|
2518
|
+
);
|
|
2462
2519
|
return `${spouseType} de ${relation}`;
|
|
2463
2520
|
}
|
|
2464
2521
|
of(relation) {
|
|
2465
2522
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
2466
|
-
nameOrder:
|
|
2523
|
+
nameOrder: this.nameOrder
|
|
2467
2524
|
});
|
|
2468
2525
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
2469
2526
|
if (this.displayName === "none") {
|
|
@@ -2479,6 +2536,9 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
2479
2536
|
if (relation.includes(" du ") || relation.includes(" de ")) {
|
|
2480
2537
|
return relation.replace(/ (du|de) /, ` $1 ${name} `);
|
|
2481
2538
|
}
|
|
2539
|
+
if (relation.includes(" de l'")) {
|
|
2540
|
+
return relation.replace(" de l'", ` de ${name} l'`);
|
|
2541
|
+
}
|
|
2482
2542
|
return `${relation} de ${name}`;
|
|
2483
2543
|
}
|
|
2484
2544
|
inLaw(relation) {
|
|
@@ -2507,50 +2567,118 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
|
|
|
2507
2567
|
if (!relation || !this.pathN?.relation) {
|
|
2508
2568
|
return relation ?? "";
|
|
2509
2569
|
}
|
|
2510
|
-
|
|
2570
|
+
const kind = parentRelationsFr[this.pathN.relation];
|
|
2571
|
+
if (!kind) {
|
|
2572
|
+
return relation;
|
|
2573
|
+
}
|
|
2574
|
+
if (kind === "step") {
|
|
2575
|
+
return `${isFeminineRelation(relation) ? "belle-" : "beau-"}${relation}`;
|
|
2576
|
+
}
|
|
2577
|
+
if (kind === "adopted") {
|
|
2578
|
+
return `${relation} ${isFeminineRelation(relation) ? "adoptive" : "adoptif"}`;
|
|
2579
|
+
}
|
|
2580
|
+
if (kind === "foster") {
|
|
2581
|
+
return `${relation} d'accueil`;
|
|
2582
|
+
}
|
|
2583
|
+
return relation;
|
|
2511
2584
|
}
|
|
2512
2585
|
};
|
|
2513
2586
|
|
|
2514
2587
|
// src/kinship-translator/patterns.es.ts
|
|
2588
|
+
var parentRelationsEs = {
|
|
2589
|
+
step: {
|
|
2590
|
+
padre: "padrastro",
|
|
2591
|
+
madre: "madrastra",
|
|
2592
|
+
hijo: "hijastro",
|
|
2593
|
+
hija: "hijastra",
|
|
2594
|
+
hermano: "hermanastro",
|
|
2595
|
+
hermana: "hermanastra",
|
|
2596
|
+
abuelo: "abuelastro",
|
|
2597
|
+
abuela: "abuelastra"
|
|
2598
|
+
}
|
|
2599
|
+
};
|
|
2515
2600
|
var InLawsEs = {
|
|
2516
2601
|
"c\xF3nyuge de (hijo/hija|hija|hijo)": "yerno/nuera",
|
|
2517
2602
|
"esposa de (hijo/hija|hija|hijo)": "nuera",
|
|
2518
2603
|
"esposo de (hijo/hija|hija|hijo)": "yerno",
|
|
2519
|
-
"madre del
|
|
2520
|
-
"padre del
|
|
2521
|
-
"padre/madre del
|
|
2604
|
+
"madre (del c\xF3nyuge|del esposo|de la esposa)": "suegra",
|
|
2605
|
+
"padre (del c\xF3nyuge|del esposo|de la esposa)": "suegro",
|
|
2606
|
+
"padre/madre (del c\xF3nyuge|del esposo|de la esposa)": "suegro/suegra",
|
|
2522
2607
|
"esposa de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ada",
|
|
2523
2608
|
"esposo de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado",
|
|
2524
2609
|
"c\xF3nyuge de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado/cu\xF1ada",
|
|
2525
|
-
"(medio |media |medio/a )?hermana del
|
|
2526
|
-
"(medio |media |medio/a )?hermano del
|
|
2527
|
-
"(medio |media |medio/a )?hermano/hermana del
|
|
2610
|
+
"(medio |media |medio/a )?hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ada",
|
|
2611
|
+
"(medio |media |medio/a )?hermano (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado",
|
|
2612
|
+
"(medio |media |medio/a )?hermano/hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado/cu\xF1ada"
|
|
2528
2613
|
};
|
|
2529
2614
|
|
|
2530
2615
|
// src/kinship-translator/kinship-translator.es.ts
|
|
2531
|
-
var
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
if (level <= 1) {
|
|
2535
|
-
return "";
|
|
2536
|
-
}
|
|
2537
|
-
if (level === 2) {
|
|
2538
|
-
return "bisabuel";
|
|
2539
|
-
}
|
|
2540
|
-
if (level === 3) {
|
|
2541
|
-
return "tatarabuel";
|
|
2542
|
-
}
|
|
2543
|
-
return `t\xE1tara${level - 2}-abuel`;
|
|
2616
|
+
var sexOf3 = (person) => {
|
|
2617
|
+
if (person?.isMale?.()) {
|
|
2618
|
+
return "m";
|
|
2544
2619
|
}
|
|
2620
|
+
if (person?.isFemale?.()) {
|
|
2621
|
+
return "f";
|
|
2622
|
+
}
|
|
2623
|
+
return "n";
|
|
2624
|
+
};
|
|
2625
|
+
var pick3 = (sex, male, female, neutral) => {
|
|
2626
|
+
if (sex === "m") {
|
|
2627
|
+
return male;
|
|
2628
|
+
}
|
|
2629
|
+
if (sex === "f") {
|
|
2630
|
+
return female;
|
|
2631
|
+
}
|
|
2632
|
+
return neutral;
|
|
2633
|
+
};
|
|
2634
|
+
var SPANISH_ORDINALS_M = [
|
|
2635
|
+
"",
|
|
2636
|
+
"",
|
|
2637
|
+
"segundo",
|
|
2638
|
+
"tercero",
|
|
2639
|
+
"cuarto",
|
|
2640
|
+
"quinto",
|
|
2641
|
+
"sexto",
|
|
2642
|
+
"s\xE9ptimo",
|
|
2643
|
+
"octavo",
|
|
2644
|
+
"noveno",
|
|
2645
|
+
"d\xE9cimo"
|
|
2646
|
+
];
|
|
2647
|
+
var SPANISH_ORDINALS_F = [
|
|
2648
|
+
"",
|
|
2649
|
+
"",
|
|
2650
|
+
"segunda",
|
|
2651
|
+
"tercera",
|
|
2652
|
+
"cuarta",
|
|
2653
|
+
"quinta",
|
|
2654
|
+
"sexta",
|
|
2655
|
+
"s\xE9ptima",
|
|
2656
|
+
"octava",
|
|
2657
|
+
"novena",
|
|
2658
|
+
"d\xE9cima"
|
|
2659
|
+
];
|
|
2660
|
+
var spanishOrdinal = (n, sex) => {
|
|
2661
|
+
const list = sex === "f" ? SPANISH_ORDINALS_F : SPANISH_ORDINALS_M;
|
|
2662
|
+
return list[n] ?? `${n}.\xBA`;
|
|
2663
|
+
};
|
|
2664
|
+
var ofSpousePrep2 = (spouseType) => {
|
|
2665
|
+
if (spouseType === "esposa") {
|
|
2666
|
+
return "de la ";
|
|
2667
|
+
}
|
|
2668
|
+
return "del ";
|
|
2669
|
+
};
|
|
2670
|
+
var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
2545
2671
|
indirect() {
|
|
2546
2672
|
let degree = Math.abs(this.pathN?.degree ?? 0);
|
|
2547
2673
|
if (degree > 0) {
|
|
2548
2674
|
degree = degree - 1;
|
|
2549
2675
|
}
|
|
2550
|
-
|
|
2551
|
-
|
|
2676
|
+
const sex = sexOf3(this.personN);
|
|
2677
|
+
const cousin = pick3(sex, "primo", "prima", "primo/prima");
|
|
2678
|
+
if (degree <= 1) {
|
|
2679
|
+
return cousin;
|
|
2552
2680
|
}
|
|
2553
|
-
return
|
|
2681
|
+
return `${cousin} ${spanishOrdinal(degree, sex)}`;
|
|
2554
2682
|
}
|
|
2555
2683
|
removal() {
|
|
2556
2684
|
const level = this.pathN?.level ?? 0;
|
|
@@ -2561,56 +2689,133 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
2561
2689
|
if (!degree) {
|
|
2562
2690
|
return level < 0 ? this.nibling() : this.auncle();
|
|
2563
2691
|
}
|
|
2564
|
-
return
|
|
2692
|
+
return `${this.indirect()} ${Math.abs(level)}\xD7 separado`;
|
|
2565
2693
|
}
|
|
2566
2694
|
auncle() {
|
|
2567
|
-
const
|
|
2568
|
-
|
|
2569
|
-
|
|
2695
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2696
|
+
const sex = sexOf3(this.personN);
|
|
2697
|
+
if (level <= 1) {
|
|
2698
|
+
return pick3(sex, "t\xEDo", "t\xEDa", "t\xEDo/t\xEDa");
|
|
2570
2699
|
}
|
|
2571
|
-
if (
|
|
2572
|
-
return
|
|
2700
|
+
if (level === 2) {
|
|
2701
|
+
return pick3(sex, "t\xEDo abuelo", "t\xEDa abuela", "t\xEDo/t\xEDa abuelo");
|
|
2702
|
+
}
|
|
2703
|
+
if (level === 3) {
|
|
2704
|
+
return pick3(
|
|
2705
|
+
sex,
|
|
2706
|
+
"t\xEDo bisabuelo",
|
|
2707
|
+
"t\xEDa bisabuela",
|
|
2708
|
+
"t\xEDo/t\xEDa bisabuelo"
|
|
2709
|
+
);
|
|
2573
2710
|
}
|
|
2574
|
-
return
|
|
2711
|
+
return pick3(
|
|
2712
|
+
sex,
|
|
2713
|
+
`t\xEDo abuelo (${level - 1}.\xBA)`,
|
|
2714
|
+
`t\xEDa abuela (${level - 1}.\xAA)`,
|
|
2715
|
+
`t\xEDo/t\xEDa abuelo (${level - 1}.\xBA)`
|
|
2716
|
+
);
|
|
2575
2717
|
}
|
|
2576
2718
|
nibling() {
|
|
2577
|
-
const
|
|
2578
|
-
|
|
2579
|
-
|
|
2719
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2720
|
+
const sex = sexOf3(this.personN);
|
|
2721
|
+
if (level <= 1) {
|
|
2722
|
+
return pick3(sex, "sobrino", "sobrina", "sobrino/sobrina");
|
|
2580
2723
|
}
|
|
2581
|
-
if (
|
|
2582
|
-
return
|
|
2724
|
+
if (level === 2) {
|
|
2725
|
+
return pick3(
|
|
2726
|
+
sex,
|
|
2727
|
+
"sobrino nieto",
|
|
2728
|
+
"sobrina nieta",
|
|
2729
|
+
"sobrino/sobrina nieto"
|
|
2730
|
+
);
|
|
2731
|
+
}
|
|
2732
|
+
if (level === 3) {
|
|
2733
|
+
return pick3(
|
|
2734
|
+
sex,
|
|
2735
|
+
"sobrino bisnieto",
|
|
2736
|
+
"sobrina bisnieta",
|
|
2737
|
+
"sobrino/sobrina bisnieto"
|
|
2738
|
+
);
|
|
2583
2739
|
}
|
|
2584
|
-
return
|
|
2740
|
+
return pick3(
|
|
2741
|
+
sex,
|
|
2742
|
+
`sobrino nieto (${level - 1}.\xBA)`,
|
|
2743
|
+
`sobrina nieta (${level - 1}.\xAA)`,
|
|
2744
|
+
`sobrino/sobrina nieto (${level - 1}.\xBA)`
|
|
2745
|
+
);
|
|
2585
2746
|
}
|
|
2586
2747
|
parent() {
|
|
2587
|
-
const
|
|
2588
|
-
|
|
2589
|
-
|
|
2748
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2749
|
+
const sex = sexOf3(this.personN);
|
|
2750
|
+
if (level <= 1) {
|
|
2751
|
+
return pick3(sex, "padre", "madre", "padre/madre");
|
|
2590
2752
|
}
|
|
2591
|
-
if (
|
|
2592
|
-
return
|
|
2753
|
+
if (level === 2) {
|
|
2754
|
+
return pick3(sex, "abuelo", "abuela", "abuelo/abuela");
|
|
2755
|
+
}
|
|
2756
|
+
if (level === 3) {
|
|
2757
|
+
return pick3(sex, "bisabuelo", "bisabuela", "bisabuelo/bisabuela");
|
|
2758
|
+
}
|
|
2759
|
+
if (level === 4) {
|
|
2760
|
+
return pick3(
|
|
2761
|
+
sex,
|
|
2762
|
+
"tatarabuelo",
|
|
2763
|
+
"tatarabuela",
|
|
2764
|
+
"tatarabuelo/tatarabuela"
|
|
2765
|
+
);
|
|
2766
|
+
}
|
|
2767
|
+
if (level === 5) {
|
|
2768
|
+
return pick3(
|
|
2769
|
+
sex,
|
|
2770
|
+
"trastatarabuelo",
|
|
2771
|
+
"trastatarabuela",
|
|
2772
|
+
"trastatarabuelo/trastatarabuela"
|
|
2773
|
+
);
|
|
2593
2774
|
}
|
|
2594
|
-
return
|
|
2775
|
+
return pick3(
|
|
2776
|
+
sex,
|
|
2777
|
+
`abuelo (${level}.\xBA)`,
|
|
2778
|
+
`abuela (${level}.\xAA)`,
|
|
2779
|
+
`abuelo/abuela (${level}.\xBA)`
|
|
2780
|
+
);
|
|
2595
2781
|
}
|
|
2596
2782
|
child() {
|
|
2597
|
-
const
|
|
2598
|
-
|
|
2599
|
-
|
|
2783
|
+
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2784
|
+
const sex = sexOf3(this.personN);
|
|
2785
|
+
if (level <= 1) {
|
|
2786
|
+
return pick3(sex, "hijo", "hija", "hijo/hija");
|
|
2600
2787
|
}
|
|
2601
|
-
if (
|
|
2602
|
-
return
|
|
2788
|
+
if (level === 2) {
|
|
2789
|
+
return pick3(sex, "nieto", "nieta", "nieto/nieta");
|
|
2603
2790
|
}
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
sibling() {
|
|
2607
|
-
if (this.personN?.isMale()) {
|
|
2608
|
-
return "hermano";
|
|
2791
|
+
if (level === 3) {
|
|
2792
|
+
return pick3(sex, "bisnieto", "bisnieta", "bisnieto/bisnieta");
|
|
2609
2793
|
}
|
|
2610
|
-
if (
|
|
2611
|
-
return
|
|
2794
|
+
if (level === 4) {
|
|
2795
|
+
return pick3(
|
|
2796
|
+
sex,
|
|
2797
|
+
"tataranieto",
|
|
2798
|
+
"tataranieta",
|
|
2799
|
+
"tataranieto/tataranieta"
|
|
2800
|
+
);
|
|
2801
|
+
}
|
|
2802
|
+
if (level === 5) {
|
|
2803
|
+
return pick3(
|
|
2804
|
+
sex,
|
|
2805
|
+
"trastataranieto",
|
|
2806
|
+
"trastataranieta",
|
|
2807
|
+
"trastataranieto/trastataranieta"
|
|
2808
|
+
);
|
|
2612
2809
|
}
|
|
2613
|
-
return
|
|
2810
|
+
return pick3(
|
|
2811
|
+
sex,
|
|
2812
|
+
`nieto (${level}.\xBA)`,
|
|
2813
|
+
`nieta (${level}.\xAA)`,
|
|
2814
|
+
`nieto/nieta (${level}.\xBA)`
|
|
2815
|
+
);
|
|
2816
|
+
}
|
|
2817
|
+
sibling() {
|
|
2818
|
+
return pick3(sexOf3(this.personN), "hermano", "hermana", "hermano/hermana");
|
|
2614
2819
|
}
|
|
2615
2820
|
halfBlood(relation) {
|
|
2616
2821
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -2625,45 +2830,35 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
2625
2830
|
return `medio/a ${relation}`;
|
|
2626
2831
|
}
|
|
2627
2832
|
spouse() {
|
|
2628
|
-
|
|
2629
|
-
return "esposo";
|
|
2630
|
-
}
|
|
2631
|
-
if (this.personN?.isFemale()) {
|
|
2632
|
-
return "esposa";
|
|
2633
|
-
}
|
|
2634
|
-
return "c\xF3nyuge";
|
|
2833
|
+
return pick3(sexOf3(this.personN), "esposo", "esposa", "c\xF3nyuge");
|
|
2635
2834
|
}
|
|
2636
2835
|
ofSpouse(relation) {
|
|
2637
2836
|
if (!relation) {
|
|
2638
2837
|
return "";
|
|
2639
2838
|
}
|
|
2640
|
-
const
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
}
|
|
2648
|
-
return `${relation} del ${spouseType}`;
|
|
2839
|
+
const spouseType = pick3(
|
|
2840
|
+
sexOf3(this.path?.[1].indi),
|
|
2841
|
+
"esposo",
|
|
2842
|
+
"esposa",
|
|
2843
|
+
"c\xF3nyuge"
|
|
2844
|
+
);
|
|
2845
|
+
return `${relation} ${ofSpousePrep2(spouseType)}${spouseType}`;
|
|
2649
2846
|
}
|
|
2650
2847
|
spouseOf(relation) {
|
|
2651
2848
|
if (!relation) {
|
|
2652
2849
|
return "";
|
|
2653
2850
|
}
|
|
2654
|
-
const
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
spouseType = "esposa";
|
|
2661
|
-
}
|
|
2851
|
+
const spouseType = pick3(
|
|
2852
|
+
sexOf3(this.path?.[this.path.length - 1].indi),
|
|
2853
|
+
"esposo",
|
|
2854
|
+
"esposa",
|
|
2855
|
+
"c\xF3nyuge"
|
|
2856
|
+
);
|
|
2662
2857
|
return `${spouseType} de ${relation}`;
|
|
2663
2858
|
}
|
|
2664
2859
|
of(relation) {
|
|
2665
2860
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
2666
|
-
nameOrder:
|
|
2861
|
+
nameOrder: this.nameOrder
|
|
2667
2862
|
});
|
|
2668
2863
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
2669
2864
|
if (this.displayName === "none") {
|
|
@@ -2676,8 +2871,8 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
2676
2871
|
if (!name || !relation) {
|
|
2677
2872
|
return relation ?? "";
|
|
2678
2873
|
}
|
|
2679
|
-
if (relation.includes(" del ") || relation.includes(" de ")) {
|
|
2680
|
-
return relation.replace(/ (del|de) /, ` $1 ${name} `);
|
|
2874
|
+
if (relation.includes(" del ") || relation.includes(" de la ") || relation.includes(" de ")) {
|
|
2875
|
+
return relation.replace(/ (del|de la|de) /, ` $1 ${name} `);
|
|
2681
2876
|
}
|
|
2682
2877
|
return `${relation} de ${name}`;
|
|
2683
2878
|
}
|
|
@@ -2707,7 +2902,20 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
|
|
|
2707
2902
|
if (!relation || !this.pathN?.relation) {
|
|
2708
2903
|
return relation ?? "";
|
|
2709
2904
|
}
|
|
2710
|
-
|
|
2905
|
+
const mapped = parentRelationsEs[this.pathN.relation]?.[relation];
|
|
2906
|
+
if (mapped) {
|
|
2907
|
+
return mapped;
|
|
2908
|
+
}
|
|
2909
|
+
if (this.pathN.relation === "step") {
|
|
2910
|
+
return `${relation} pol\xEDtico`;
|
|
2911
|
+
}
|
|
2912
|
+
if (this.pathN.relation === "adopted") {
|
|
2913
|
+
return `${relation} adoptivo`;
|
|
2914
|
+
}
|
|
2915
|
+
if (this.pathN.relation === "foster") {
|
|
2916
|
+
return `${relation} de acogida`;
|
|
2917
|
+
}
|
|
2918
|
+
return relation;
|
|
2711
2919
|
}
|
|
2712
2920
|
};
|
|
2713
2921
|
|
|
@@ -2716,15 +2924,35 @@ var InLawsRu = {
|
|
|
2716
2924
|
"\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",
|
|
2717
2925
|
"\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",
|
|
2718
2926
|
"\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
|
|
2719
|
-
"\u043C\u0430\u0442\u044C
|
|
2720
|
-
"\
|
|
2721
|
-
"\
|
|
2927
|
+
"\u043C\u0430\u0442\u044C \u0436\u0435\u043D\u044B": "\u0442\u0451\u0449\u0430",
|
|
2928
|
+
"\u043C\u0430\u0442\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
2929
|
+
"\u043C\u0430\u0442\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0451\u0449\u0430/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
|
|
2930
|
+
"\u043E\u0442\u0435\u0446 \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C",
|
|
2931
|
+
"\u043E\u0442\u0435\u0446 \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
2932
|
+
"\u043E\u0442\u0435\u0446 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0441\u0432\u0451\u043A\u043E\u0440",
|
|
2933
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
2934
|
+
"\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",
|
|
2935
|
+
"\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
|
|
2722
2936
|
"\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",
|
|
2723
2937
|
"\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",
|
|
2724
2938
|
"\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",
|
|
2725
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430
|
|
2726
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\
|
|
2727
|
-
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\
|
|
2939
|
+
"(\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",
|
|
2940
|
+
"(\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",
|
|
2941
|
+
"(\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",
|
|
2942
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D",
|
|
2943
|
+
"(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C",
|
|
2944
|
+
"(\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",
|
|
2945
|
+
"(\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",
|
|
2946
|
+
"(\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",
|
|
2947
|
+
"(\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"
|
|
2948
|
+
};
|
|
2949
|
+
var parentRelationsRu = {
|
|
2950
|
+
step: {
|
|
2951
|
+
\u043E\u0442\u0435\u0446: "\u043E\u0442\u0447\u0438\u043C",
|
|
2952
|
+
\u043C\u0430\u0442\u044C: "\u043C\u0430\u0447\u0435\u0445\u0430",
|
|
2953
|
+
\u0441\u044B\u043D: "\u043F\u0430\u0441\u044B\u043D\u043E\u043A",
|
|
2954
|
+
\u0434\u043E\u0447\u044C: "\u043F\u0430\u0434\u0447\u0435\u0440\u0438\u0446\u0430"
|
|
2955
|
+
}
|
|
2728
2956
|
};
|
|
2729
2957
|
|
|
2730
2958
|
// src/kinship-translator/kinship-translator.ru.ts
|
|
@@ -2755,7 +2983,7 @@ var cousinWord = (degree, sex) => {
|
|
|
2755
2983
|
return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
|
|
2756
2984
|
};
|
|
2757
2985
|
var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
|
|
2758
|
-
var
|
|
2986
|
+
var sexOf4 = (person) => {
|
|
2759
2987
|
if (person?.isMale?.()) {
|
|
2760
2988
|
return "m";
|
|
2761
2989
|
}
|
|
@@ -2770,7 +2998,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
2770
2998
|
if (degree > 0) {
|
|
2771
2999
|
degree = degree - 1;
|
|
2772
3000
|
}
|
|
2773
|
-
return cousinWord(degree,
|
|
3001
|
+
return cousinWord(degree, sexOf4(this.personN));
|
|
2774
3002
|
}
|
|
2775
3003
|
removal() {
|
|
2776
3004
|
const level = this.pathN?.level ?? 0;
|
|
@@ -2782,35 +3010,53 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
2782
3010
|
return level < 0 ? this.nibling() : this.auncle();
|
|
2783
3011
|
}
|
|
2784
3012
|
const removed = Math.abs(level);
|
|
2785
|
-
return `${cousinWord(degree,
|
|
3013
|
+
return `${cousinWord(degree, sexOf4(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
|
|
2786
3014
|
}
|
|
2787
3015
|
auncle() {
|
|
2788
3016
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2789
|
-
const
|
|
2790
|
-
|
|
3017
|
+
const sex = sexOf4(this.personN);
|
|
3018
|
+
if (level <= 1) {
|
|
3019
|
+
if (sex === "m") {
|
|
3020
|
+
return "\u0434\u044F\u0434\u044F";
|
|
3021
|
+
}
|
|
3022
|
+
if (sex === "f") {
|
|
3023
|
+
return "\u0442\u0451\u0442\u044F";
|
|
3024
|
+
}
|
|
3025
|
+
return "\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F";
|
|
3026
|
+
}
|
|
3027
|
+
const pra = praRepeat(level - 2);
|
|
2791
3028
|
if (sex === "m") {
|
|
2792
|
-
return
|
|
3029
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434`;
|
|
2793
3030
|
}
|
|
2794
3031
|
if (sex === "f") {
|
|
2795
|
-
return
|
|
3032
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u0430\u044F ${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
2796
3033
|
}
|
|
2797
|
-
return
|
|
3034
|
+
return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
|
|
2798
3035
|
}
|
|
2799
3036
|
nibling() {
|
|
2800
3037
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2801
|
-
const
|
|
2802
|
-
|
|
3038
|
+
const sex = sexOf4(this.personN);
|
|
3039
|
+
if (level <= 1) {
|
|
3040
|
+
if (sex === "m") {
|
|
3041
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A";
|
|
3042
|
+
}
|
|
3043
|
+
if (sex === "f") {
|
|
3044
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
3045
|
+
}
|
|
3046
|
+
return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
|
|
3047
|
+
}
|
|
3048
|
+
const pra = praRepeat(level - 2);
|
|
2803
3049
|
if (sex === "m") {
|
|
2804
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
3050
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
|
|
2805
3051
|
}
|
|
2806
3052
|
if (sex === "f") {
|
|
2807
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
3053
|
+
return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u0430\u044F \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
2808
3054
|
}
|
|
2809
|
-
return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
|
|
3055
|
+
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`;
|
|
2810
3056
|
}
|
|
2811
3057
|
parent() {
|
|
2812
3058
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2813
|
-
const sex =
|
|
3059
|
+
const sex = sexOf4(this.personN);
|
|
2814
3060
|
if (level <= 1) {
|
|
2815
3061
|
if (sex === "m") {
|
|
2816
3062
|
return "\u043E\u0442\u0435\u0446";
|
|
@@ -2840,7 +3086,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
2840
3086
|
}
|
|
2841
3087
|
child() {
|
|
2842
3088
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
2843
|
-
const sex =
|
|
3089
|
+
const sex = sexOf4(this.personN);
|
|
2844
3090
|
if (level <= 1) {
|
|
2845
3091
|
if (sex === "m") {
|
|
2846
3092
|
return "\u0441\u044B\u043D";
|
|
@@ -2869,14 +3115,14 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
2869
3115
|
return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
|
|
2870
3116
|
}
|
|
2871
3117
|
sibling() {
|
|
2872
|
-
const sex =
|
|
3118
|
+
const sex = sexOf4(this.personN);
|
|
2873
3119
|
if (sex === "m") {
|
|
2874
3120
|
return "\u0431\u0440\u0430\u0442";
|
|
2875
3121
|
}
|
|
2876
3122
|
if (sex === "f") {
|
|
2877
3123
|
return "\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
2878
3124
|
}
|
|
2879
|
-
return "\u0441\
|
|
3125
|
+
return "\u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430";
|
|
2880
3126
|
}
|
|
2881
3127
|
halfBlood(relation) {
|
|
2882
3128
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -2890,7 +3136,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
2890
3136
|
return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
|
|
2891
3137
|
}
|
|
2892
3138
|
spouse() {
|
|
2893
|
-
const sex =
|
|
3139
|
+
const sex = sexOf4(this.personN);
|
|
2894
3140
|
if (sex === "m") {
|
|
2895
3141
|
return "\u043C\u0443\u0436";
|
|
2896
3142
|
}
|
|
@@ -2904,7 +3150,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
2904
3150
|
return "";
|
|
2905
3151
|
}
|
|
2906
3152
|
const spouse = this.path?.[1].indi;
|
|
2907
|
-
const sex =
|
|
3153
|
+
const sex = sexOf4(spouse);
|
|
2908
3154
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
2909
3155
|
return `${relation} ${toGenitive(spouseType)}`;
|
|
2910
3156
|
}
|
|
@@ -2913,13 +3159,13 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
2913
3159
|
return "";
|
|
2914
3160
|
}
|
|
2915
3161
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
2916
|
-
const sex =
|
|
3162
|
+
const sex = sexOf4(spouse);
|
|
2917
3163
|
const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
|
|
2918
3164
|
return `${spouseType} ${toGenitive(relation)}`;
|
|
2919
3165
|
}
|
|
2920
3166
|
of(relation) {
|
|
2921
3167
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
2922
|
-
nameOrder:
|
|
3168
|
+
nameOrder: this.nameOrder
|
|
2923
3169
|
});
|
|
2924
3170
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
2925
3171
|
if (this.displayName === "none") {
|
|
@@ -2950,7 +3196,22 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
|
|
|
2950
3196
|
if (!relation || !this.pathN?.relation) {
|
|
2951
3197
|
return relation ?? "";
|
|
2952
3198
|
}
|
|
2953
|
-
|
|
3199
|
+
const mapped = parentRelationsRu[this.pathN.relation]?.[relation];
|
|
3200
|
+
if (mapped) {
|
|
3201
|
+
return mapped;
|
|
3202
|
+
}
|
|
3203
|
+
if (this.pathN.relation === "step") {
|
|
3204
|
+
return `\u043D\u0435\u0440\u043E\u0434\u043D\u043E\u0439 ${relation}`;
|
|
3205
|
+
}
|
|
3206
|
+
if (this.pathN.relation === "adopted") {
|
|
3207
|
+
return /сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
|
|
3208
|
+
relation
|
|
3209
|
+
) ? `\u043F\u0440\u0438\u0451\u043C\u043D\u0430\u044F ${relation}` : `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
3210
|
+
}
|
|
3211
|
+
if (this.pathN.relation === "foster") {
|
|
3212
|
+
return `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
|
|
3213
|
+
}
|
|
3214
|
+
return relation;
|
|
2954
3215
|
}
|
|
2955
3216
|
};
|
|
2956
3217
|
|
|
@@ -2974,7 +3235,7 @@ var InLawsJa = {
|
|
|
2974
3235
|
};
|
|
2975
3236
|
|
|
2976
3237
|
// src/kinship-translator/kinship-translator.ja.ts
|
|
2977
|
-
var
|
|
3238
|
+
var sexOf5 = (person) => {
|
|
2978
3239
|
if (person?.isMale?.()) {
|
|
2979
3240
|
return "m";
|
|
2980
3241
|
}
|
|
@@ -2983,7 +3244,7 @@ var sexOf2 = (person) => {
|
|
|
2983
3244
|
}
|
|
2984
3245
|
return "n";
|
|
2985
3246
|
};
|
|
2986
|
-
var
|
|
3247
|
+
var pick4 = (sex, male, female, neutral) => {
|
|
2987
3248
|
if (sex === "m") {
|
|
2988
3249
|
return male;
|
|
2989
3250
|
}
|
|
@@ -2996,18 +3257,18 @@ var lineal = (level, sex, kind) => {
|
|
|
2996
3257
|
const L = Math.max(1, level);
|
|
2997
3258
|
if (kind === "asc") {
|
|
2998
3259
|
if (L <= 1) {
|
|
2999
|
-
return
|
|
3260
|
+
return pick4(sex, "\u7236", "\u6BCD", "\u89AA");
|
|
3000
3261
|
}
|
|
3001
3262
|
if (L === 2) {
|
|
3002
|
-
return
|
|
3263
|
+
return pick4(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
3003
3264
|
}
|
|
3004
3265
|
if (L === 3) {
|
|
3005
|
-
return
|
|
3266
|
+
return pick4(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
3006
3267
|
}
|
|
3007
3268
|
if (L === 4) {
|
|
3008
|
-
return
|
|
3269
|
+
return pick4(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
3009
3270
|
}
|
|
3010
|
-
return
|
|
3271
|
+
return pick4(
|
|
3011
3272
|
sex,
|
|
3012
3273
|
`${L - 1}\u4E16\u306E\u7956\u7236`,
|
|
3013
3274
|
`${L - 1}\u4E16\u306E\u7956\u6BCD`,
|
|
@@ -3015,7 +3276,7 @@ var lineal = (level, sex, kind) => {
|
|
|
3015
3276
|
);
|
|
3016
3277
|
}
|
|
3017
3278
|
if (L <= 1) {
|
|
3018
|
-
return
|
|
3279
|
+
return pick4(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
|
|
3019
3280
|
}
|
|
3020
3281
|
if (L === 2) {
|
|
3021
3282
|
return "\u5B6B";
|
|
@@ -3062,52 +3323,52 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
3062
3323
|
}
|
|
3063
3324
|
auncle() {
|
|
3064
3325
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
3065
|
-
const sex =
|
|
3066
|
-
if (level <=
|
|
3067
|
-
return
|
|
3326
|
+
const sex = sexOf5(this.personN);
|
|
3327
|
+
if (level <= 1) {
|
|
3328
|
+
return pick4(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
|
|
3068
3329
|
}
|
|
3069
|
-
if (level ===
|
|
3070
|
-
return
|
|
3330
|
+
if (level === 2) {
|
|
3331
|
+
return pick4(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
|
|
3071
3332
|
}
|
|
3072
|
-
return
|
|
3333
|
+
return pick4(
|
|
3073
3334
|
sex,
|
|
3074
|
-
`${level -
|
|
3075
|
-
`${level -
|
|
3076
|
-
`${level -
|
|
3335
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058`,
|
|
3336
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3070`,
|
|
3337
|
+
`${level - 1}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
|
|
3077
3338
|
);
|
|
3078
3339
|
}
|
|
3079
3340
|
nibling() {
|
|
3080
3341
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
3081
|
-
const sex =
|
|
3082
|
-
if (level <=
|
|
3083
|
-
return
|
|
3342
|
+
const sex = sexOf5(this.personN);
|
|
3343
|
+
if (level <= 1) {
|
|
3344
|
+
return pick4(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
|
|
3084
3345
|
}
|
|
3085
|
-
if (level ===
|
|
3086
|
-
return
|
|
3346
|
+
if (level === 2) {
|
|
3347
|
+
return pick4(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
|
|
3087
3348
|
}
|
|
3088
|
-
return
|
|
3349
|
+
return pick4(
|
|
3089
3350
|
sex,
|
|
3090
|
-
`${level -
|
|
3091
|
-
`${level -
|
|
3092
|
-
`${level -
|
|
3351
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525`,
|
|
3352
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u59EA`,
|
|
3353
|
+
`${level - 1}\u4EE3\u4E0B\u306E\u7525/\u59EA`
|
|
3093
3354
|
);
|
|
3094
3355
|
}
|
|
3095
3356
|
parent() {
|
|
3096
3357
|
return lineal(
|
|
3097
3358
|
Math.abs(this.pathN?.level ?? 0),
|
|
3098
|
-
|
|
3359
|
+
sexOf5(this.personN),
|
|
3099
3360
|
"asc"
|
|
3100
3361
|
);
|
|
3101
3362
|
}
|
|
3102
3363
|
child() {
|
|
3103
3364
|
return lineal(
|
|
3104
3365
|
Math.abs(this.pathN?.level ?? 0),
|
|
3105
|
-
|
|
3366
|
+
sexOf5(this.personN),
|
|
3106
3367
|
"desc"
|
|
3107
3368
|
);
|
|
3108
3369
|
}
|
|
3109
3370
|
sibling() {
|
|
3110
|
-
return
|
|
3371
|
+
return pick4(sexOf5(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
|
|
3111
3372
|
}
|
|
3112
3373
|
halfBlood(relation) {
|
|
3113
3374
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -3116,14 +3377,14 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
3116
3377
|
return `\u7570\u7236\u6BCD\u306E${relation}`;
|
|
3117
3378
|
}
|
|
3118
3379
|
spouse() {
|
|
3119
|
-
return
|
|
3380
|
+
return pick4(sexOf5(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
3120
3381
|
}
|
|
3121
3382
|
ofSpouse(relation) {
|
|
3122
3383
|
if (!relation) {
|
|
3123
3384
|
return "";
|
|
3124
3385
|
}
|
|
3125
|
-
const spouseType =
|
|
3126
|
-
|
|
3386
|
+
const spouseType = pick4(
|
|
3387
|
+
sexOf5(this.path?.[1].indi),
|
|
3127
3388
|
"\u592B",
|
|
3128
3389
|
"\u59BB",
|
|
3129
3390
|
"\u914D\u5076\u8005"
|
|
@@ -3135,12 +3396,12 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
3135
3396
|
return "";
|
|
3136
3397
|
}
|
|
3137
3398
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
3138
|
-
const spouseType =
|
|
3399
|
+
const spouseType = pick4(sexOf5(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
|
|
3139
3400
|
return `${relation}\u306E${spouseType}`;
|
|
3140
3401
|
}
|
|
3141
3402
|
of(relation) {
|
|
3142
3403
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
3143
|
-
nameOrder:
|
|
3404
|
+
nameOrder: this.nameOrder
|
|
3144
3405
|
});
|
|
3145
3406
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
3146
3407
|
if (this.displayName === "none") {
|
|
@@ -3171,7 +3432,28 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
|
|
|
3171
3432
|
if (!relation || !this.pathN?.relation) {
|
|
3172
3433
|
return relation ?? "";
|
|
3173
3434
|
}
|
|
3174
|
-
|
|
3435
|
+
if (this.pathN.relation === "step") {
|
|
3436
|
+
if (relation === "\u7236") {
|
|
3437
|
+
return "\u7EE7\u7236";
|
|
3438
|
+
}
|
|
3439
|
+
if (relation === "\u6BCD") {
|
|
3440
|
+
return "\u7D99\u6BCD";
|
|
3441
|
+
}
|
|
3442
|
+
if (relation === "\u606F\u5B50") {
|
|
3443
|
+
return "\u7D99\u5B50";
|
|
3444
|
+
}
|
|
3445
|
+
if (relation === "\u5A18") {
|
|
3446
|
+
return "\u7D99\u5A18";
|
|
3447
|
+
}
|
|
3448
|
+
return `\u7D99${relation}`;
|
|
3449
|
+
}
|
|
3450
|
+
if (this.pathN.relation === "adopted") {
|
|
3451
|
+
return `\u990A\u5B50\u306E${relation}`;
|
|
3452
|
+
}
|
|
3453
|
+
if (this.pathN.relation === "foster") {
|
|
3454
|
+
return `\u91CC\u89AA\u306E${relation}`;
|
|
3455
|
+
}
|
|
3456
|
+
return relation;
|
|
3175
3457
|
}
|
|
3176
3458
|
};
|
|
3177
3459
|
|
|
@@ -3180,22 +3462,32 @@ var InLawsZh = {
|
|
|
3180
3462
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u914D\u5076": "\u513F\u5AB3/\u5973\u5A7F",
|
|
3181
3463
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u59BB\u5B50": "\u513F\u5AB3",
|
|
3182
3464
|
"(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u4E08\u592B": "\u5973\u5A7F",
|
|
3183
|
-
"
|
|
3184
|
-
"
|
|
3185
|
-
"(\u914D\u5076
|
|
3465
|
+
"\u59BB\u5B50\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD",
|
|
3466
|
+
"\u4E08\u592B\u7684\u6BCD\u4EB2": "\u5A46\u5A46",
|
|
3467
|
+
"(\u914D\u5076)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
|
|
3468
|
+
"\u59BB\u5B50\u7684\u7236\u4EB2": "\u5CB3\u7236",
|
|
3469
|
+
"\u4E08\u592B\u7684\u7236\u4EB2": "\u516C\u516C",
|
|
3470
|
+
"(\u914D\u5076)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
|
|
3471
|
+
"\u59BB\u5B50\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD",
|
|
3472
|
+
"\u4E08\u592B\u7684\u7236\u6BCD": "\u516C\u516C\u5A46\u5A46",
|
|
3473
|
+
"(\u914D\u5076)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
|
|
3186
3474
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u59BB\u5B50": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
3187
3475
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u4E08\u592B": "\u59D0\u592B/\u59B9\u592B",
|
|
3188
3476
|
"(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u914D\u5076": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
3189
3477
|
"(\u5F02\u7236\u6BCD\u7684)?\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59D0\u592B/\u59B9\u592B",
|
|
3190
3478
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u5AC2\u5B50/\u5F1F\u59B9",
|
|
3191
3479
|
"(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
|
|
3192
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
3193
|
-
"(\u5F02\u7236\u6BCD\u7684)
|
|
3480
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u59D0\u59B9": "\u59E8\u5B50",
|
|
3481
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u59D0\u59B9": "\u59D1\u5B50",
|
|
3482
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
|
|
3483
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u5144\u5F1F": "\u5185\u5144/\u5185\u5F1F",
|
|
3484
|
+
"(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4",
|
|
3485
|
+
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
|
|
3194
3486
|
"(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F\u59D0\u59B9": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9"
|
|
3195
3487
|
};
|
|
3196
3488
|
|
|
3197
3489
|
// src/kinship-translator/kinship-translator.zh.ts
|
|
3198
|
-
var
|
|
3490
|
+
var sexOf6 = (person) => {
|
|
3199
3491
|
if (person?.isMale?.()) {
|
|
3200
3492
|
return "m";
|
|
3201
3493
|
}
|
|
@@ -3204,7 +3496,7 @@ var sexOf3 = (person) => {
|
|
|
3204
3496
|
}
|
|
3205
3497
|
return "n";
|
|
3206
3498
|
};
|
|
3207
|
-
var
|
|
3499
|
+
var pick5 = (sex, male, female, neutral) => {
|
|
3208
3500
|
if (sex === "m") {
|
|
3209
3501
|
return male;
|
|
3210
3502
|
}
|
|
@@ -3217,41 +3509,41 @@ var lineal2 = (level, sex, kind) => {
|
|
|
3217
3509
|
const L = Math.max(1, level);
|
|
3218
3510
|
if (kind === "asc") {
|
|
3219
3511
|
if (L <= 1) {
|
|
3220
|
-
return
|
|
3512
|
+
return pick5(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
|
|
3221
3513
|
}
|
|
3222
3514
|
if (L === 2) {
|
|
3223
|
-
return
|
|
3515
|
+
return pick5(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
|
|
3224
3516
|
}
|
|
3225
3517
|
if (L === 3) {
|
|
3226
|
-
return
|
|
3518
|
+
return pick5(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
|
|
3227
3519
|
}
|
|
3228
3520
|
if (L === 4) {
|
|
3229
|
-
return
|
|
3521
|
+
return pick5(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
|
|
3230
3522
|
}
|
|
3231
|
-
return
|
|
3523
|
+
return pick5(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
|
|
3232
3524
|
}
|
|
3233
3525
|
if (L <= 1) {
|
|
3234
|
-
return
|
|
3526
|
+
return pick5(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
|
|
3235
3527
|
}
|
|
3236
3528
|
if (L === 2) {
|
|
3237
|
-
return
|
|
3529
|
+
return pick5(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
|
|
3238
3530
|
}
|
|
3239
3531
|
if (L === 3) {
|
|
3240
|
-
return
|
|
3532
|
+
return pick5(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
|
|
3241
3533
|
}
|
|
3242
3534
|
if (L === 4) {
|
|
3243
|
-
return
|
|
3535
|
+
return pick5(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
|
|
3244
3536
|
}
|
|
3245
|
-
return
|
|
3537
|
+
return pick5(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
|
|
3246
3538
|
};
|
|
3247
3539
|
var cousinPlain2 = (degree, sex) => {
|
|
3248
3540
|
if (degree <= 1) {
|
|
3249
|
-
return
|
|
3541
|
+
return pick5(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
|
|
3250
3542
|
}
|
|
3251
3543
|
if (degree === 2) {
|
|
3252
|
-
return
|
|
3544
|
+
return pick5(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
|
|
3253
3545
|
}
|
|
3254
|
-
return
|
|
3546
|
+
return pick5(
|
|
3255
3547
|
sex,
|
|
3256
3548
|
`${degree}\u4EE3\u5802\u8868\u5144\u5F1F`,
|
|
3257
3549
|
`${degree}\u4EE3\u5802\u8868\u59D0\u59B9`,
|
|
@@ -3264,7 +3556,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
3264
3556
|
if (degree > 0) {
|
|
3265
3557
|
degree = degree - 1;
|
|
3266
3558
|
}
|
|
3267
|
-
return cousinPlain2(degree,
|
|
3559
|
+
return cousinPlain2(degree, sexOf6(this.personN));
|
|
3268
3560
|
}
|
|
3269
3561
|
removal() {
|
|
3270
3562
|
const level = this.pathN?.level ?? 0;
|
|
@@ -3276,56 +3568,56 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
3276
3568
|
return level < 0 ? this.nibling() : this.auncle();
|
|
3277
3569
|
}
|
|
3278
3570
|
const removed = Math.abs(level);
|
|
3279
|
-
return `${cousinPlain2(degree,
|
|
3571
|
+
return `${cousinPlain2(degree, sexOf6(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
|
|
3280
3572
|
}
|
|
3281
3573
|
auncle() {
|
|
3282
3574
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
3283
|
-
const sex =
|
|
3284
|
-
if (level <=
|
|
3285
|
-
return
|
|
3575
|
+
const sex = sexOf6(this.personN);
|
|
3576
|
+
if (level <= 1) {
|
|
3577
|
+
return pick5(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
|
|
3286
3578
|
}
|
|
3287
|
-
if (level ===
|
|
3288
|
-
return
|
|
3579
|
+
if (level === 2) {
|
|
3580
|
+
return pick5(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
|
|
3289
3581
|
}
|
|
3290
|
-
return
|
|
3582
|
+
return pick5(
|
|
3291
3583
|
sex,
|
|
3292
|
-
`${level -
|
|
3293
|
-
`${level -
|
|
3294
|
-
`${level -
|
|
3584
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u53D4`,
|
|
3585
|
+
`${level - 1}\u4EE3\u524D\u7684\u963F\u59E8`,
|
|
3586
|
+
`${level - 1}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
|
|
3295
3587
|
);
|
|
3296
3588
|
}
|
|
3297
3589
|
nibling() {
|
|
3298
3590
|
const level = Math.abs(this.pathN?.level ?? 0);
|
|
3299
|
-
const sex =
|
|
3300
|
-
if (level <=
|
|
3301
|
-
return
|
|
3591
|
+
const sex = sexOf6(this.personN);
|
|
3592
|
+
if (level <= 1) {
|
|
3593
|
+
return pick5(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
|
|
3302
3594
|
}
|
|
3303
|
-
if (level ===
|
|
3304
|
-
return
|
|
3595
|
+
if (level === 2) {
|
|
3596
|
+
return pick5(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
|
|
3305
3597
|
}
|
|
3306
|
-
return
|
|
3598
|
+
return pick5(
|
|
3307
3599
|
sex,
|
|
3308
|
-
`${level -
|
|
3309
|
-
`${level -
|
|
3310
|
-
`${level -
|
|
3600
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
|
|
3601
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5973`,
|
|
3602
|
+
`${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
|
|
3311
3603
|
);
|
|
3312
3604
|
}
|
|
3313
3605
|
parent() {
|
|
3314
3606
|
return lineal2(
|
|
3315
3607
|
Math.abs(this.pathN?.level ?? 0),
|
|
3316
|
-
|
|
3608
|
+
sexOf6(this.personN),
|
|
3317
3609
|
"asc"
|
|
3318
3610
|
);
|
|
3319
3611
|
}
|
|
3320
3612
|
child() {
|
|
3321
3613
|
return lineal2(
|
|
3322
3614
|
Math.abs(this.pathN?.level ?? 0),
|
|
3323
|
-
|
|
3615
|
+
sexOf6(this.personN),
|
|
3324
3616
|
"desc"
|
|
3325
3617
|
);
|
|
3326
3618
|
}
|
|
3327
3619
|
sibling() {
|
|
3328
|
-
return
|
|
3620
|
+
return pick5(sexOf6(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
|
|
3329
3621
|
}
|
|
3330
3622
|
halfBlood(relation) {
|
|
3331
3623
|
if (!relation || !this.isHalfBlood) {
|
|
@@ -3334,14 +3626,14 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
3334
3626
|
return `\u5F02\u7236\u6BCD\u7684${relation}`;
|
|
3335
3627
|
}
|
|
3336
3628
|
spouse() {
|
|
3337
|
-
return
|
|
3629
|
+
return pick5(sexOf6(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
3338
3630
|
}
|
|
3339
3631
|
ofSpouse(relation) {
|
|
3340
3632
|
if (!relation) {
|
|
3341
3633
|
return "";
|
|
3342
3634
|
}
|
|
3343
|
-
const spouseType =
|
|
3344
|
-
|
|
3635
|
+
const spouseType = pick5(
|
|
3636
|
+
sexOf6(this.path?.[1].indi),
|
|
3345
3637
|
"\u4E08\u592B",
|
|
3346
3638
|
"\u59BB\u5B50",
|
|
3347
3639
|
"\u914D\u5076"
|
|
@@ -3353,12 +3645,12 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
3353
3645
|
return "";
|
|
3354
3646
|
}
|
|
3355
3647
|
const spouse = this.path?.[this.path.length - 1].indi;
|
|
3356
|
-
const spouseType =
|
|
3648
|
+
const spouseType = pick5(sexOf6(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
|
|
3357
3649
|
return `${relation}\u7684${spouseType}`;
|
|
3358
3650
|
}
|
|
3359
3651
|
of(relation) {
|
|
3360
3652
|
const formattedName = nameFormatter(this.path?.[0]?.indi, {
|
|
3361
|
-
nameOrder:
|
|
3653
|
+
nameOrder: this.nameOrder
|
|
3362
3654
|
});
|
|
3363
3655
|
let name = formattedName.inOrder.filter(Boolean).join(" ");
|
|
3364
3656
|
if (this.displayName === "none") {
|
|
@@ -3389,27 +3681,68 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
|
|
|
3389
3681
|
if (!relation || !this.pathN?.relation) {
|
|
3390
3682
|
return relation ?? "";
|
|
3391
3683
|
}
|
|
3392
|
-
|
|
3684
|
+
if (this.pathN.relation === "step") {
|
|
3685
|
+
if (relation === "\u7236\u4EB2") {
|
|
3686
|
+
return "\u7EE7\u7236";
|
|
3687
|
+
}
|
|
3688
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
3689
|
+
return "\u7EE7\u6BCD";
|
|
3690
|
+
}
|
|
3691
|
+
if (relation === "\u513F\u5B50") {
|
|
3692
|
+
return "\u7EE7\u5B50";
|
|
3693
|
+
}
|
|
3694
|
+
if (relation === "\u5973\u513F") {
|
|
3695
|
+
return "\u7EE7\u5973";
|
|
3696
|
+
}
|
|
3697
|
+
return `\u7EE7${relation}`;
|
|
3698
|
+
}
|
|
3699
|
+
if (this.pathN.relation === "adopted") {
|
|
3700
|
+
if (relation === "\u7236\u4EB2") {
|
|
3701
|
+
return "\u517B\u7236";
|
|
3702
|
+
}
|
|
3703
|
+
if (relation === "\u6BCD\u4EB2") {
|
|
3704
|
+
return "\u517B\u6BCD";
|
|
3705
|
+
}
|
|
3706
|
+
if (relation === "\u513F\u5B50") {
|
|
3707
|
+
return "\u517B\u5B50";
|
|
3708
|
+
}
|
|
3709
|
+
if (relation === "\u5973\u513F") {
|
|
3710
|
+
return "\u517B\u5973";
|
|
3711
|
+
}
|
|
3712
|
+
return `\u517B${relation}`;
|
|
3713
|
+
}
|
|
3714
|
+
if (this.pathN.relation === "foster") {
|
|
3715
|
+
return `\u5BC4\u517B${relation}`;
|
|
3716
|
+
}
|
|
3717
|
+
return relation;
|
|
3393
3718
|
}
|
|
3394
3719
|
};
|
|
3395
3720
|
|
|
3396
3721
|
// src/kinship-translator/kinship-translator.ts
|
|
3722
|
+
var nameOrderForLang = (lang) => lang === "hu" || lang === "ja" || lang === "zh" ? "last-first" : "first-last";
|
|
3397
3723
|
var KinshipTranslator = class {
|
|
3398
|
-
constructor(person1, person2, lang = "en", entirePath, displayName = "givenname") {
|
|
3724
|
+
constructor(person1, person2, lang = "en", entirePath, displayName = "givenname", nameOrder) {
|
|
3399
3725
|
this.displayName = displayName;
|
|
3400
3726
|
this.lang = lang;
|
|
3401
3727
|
this.entirePath = entirePath;
|
|
3402
3728
|
this.person1 = person1;
|
|
3403
3729
|
this.person2 = typeof person2 === "string" ? this.person1.getGedcom()?.indi(person2) : person2;
|
|
3404
3730
|
this.path = this.person1.path(this.person2);
|
|
3731
|
+
const order = nameOrder ?? nameOrderForLang(lang);
|
|
3732
|
+
this.nameOrder = order;
|
|
3405
3733
|
if (translators_exports[lang]) {
|
|
3406
3734
|
this.translator = new translators_exports[lang](
|
|
3407
3735
|
this.path ?? [],
|
|
3408
|
-
displayName
|
|
3736
|
+
displayName,
|
|
3737
|
+
order
|
|
3409
3738
|
);
|
|
3410
3739
|
}
|
|
3411
3740
|
if (!this.translator) {
|
|
3412
|
-
this.translator = new KinshipTranslatorEn(
|
|
3741
|
+
this.translator = new KinshipTranslatorEn(
|
|
3742
|
+
this.path ?? [],
|
|
3743
|
+
displayName,
|
|
3744
|
+
order
|
|
3745
|
+
);
|
|
3413
3746
|
}
|
|
3414
3747
|
}
|
|
3415
3748
|
get path0() {
|
|
@@ -3454,14 +3787,16 @@ var KinshipTranslator = class {
|
|
|
3454
3787
|
showMainPerson,
|
|
3455
3788
|
this.lang,
|
|
3456
3789
|
false,
|
|
3457
|
-
this.displayName
|
|
3790
|
+
this.displayName,
|
|
3791
|
+
this.nameOrder
|
|
3458
3792
|
),
|
|
3459
3793
|
relative: this.path?.[index - 1]?.indi.kinship(
|
|
3460
3794
|
path2.indi.id,
|
|
3461
3795
|
showMainPerson,
|
|
3462
3796
|
this.lang,
|
|
3463
3797
|
false,
|
|
3464
|
-
this.displayName
|
|
3798
|
+
this.displayName,
|
|
3799
|
+
this.nameOrder
|
|
3465
3800
|
)
|
|
3466
3801
|
}));
|
|
3467
3802
|
return path;
|
|
@@ -7299,14 +7634,15 @@ var Indi = class extends Common {
|
|
|
7299
7634
|
}
|
|
7300
7635
|
return foundPath;
|
|
7301
7636
|
}
|
|
7302
|
-
kinship(other, showMainPerson, lang = "en", entirePath, displayName = "givenname") {
|
|
7637
|
+
kinship(other, showMainPerson, lang = "en", entirePath, displayName = "givenname", nameOrder) {
|
|
7303
7638
|
const KinshipTranslatorClass2 = getKinshipTranslatorClass();
|
|
7304
7639
|
const translator = new KinshipTranslatorClass2(
|
|
7305
7640
|
this,
|
|
7306
7641
|
other,
|
|
7307
7642
|
lang,
|
|
7308
7643
|
entirePath,
|
|
7309
|
-
showMainPerson ? displayName : void 0
|
|
7644
|
+
showMainPerson ? displayName : void 0,
|
|
7645
|
+
nameOrder
|
|
7310
7646
|
);
|
|
7311
7647
|
return translator.translate(!!showMainPerson);
|
|
7312
7648
|
}
|
|
@@ -8661,7 +8997,7 @@ var ensureExtensionSchema = (gedcom, extraTags) => {
|
|
|
8661
8997
|
|
|
8662
8998
|
// package.json
|
|
8663
8999
|
var package_default = {
|
|
8664
|
-
version: "2.1.
|
|
9000
|
+
version: "2.1.15"};
|
|
8665
9001
|
|
|
8666
9002
|
// src/utils/get-product-details.ts
|
|
8667
9003
|
var getVersion = () => package_default.version;
|