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