Total Complexity | 322 |
Total Lines | 1519 |
Duplicated Lines | 0 % |
Changes | 1 | ||
Bugs | 1 | Features | 0 |
Complex classes like GedcomTag often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use GedcomTag, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
30 | class GedcomTag |
||
31 | { |
||
32 | /** All tags that webtrees knows how to translate - including special/internal tags */ |
||
33 | private const ALL_TAGS = [ |
||
34 | 'ABBR', |
||
35 | 'ADDR', |
||
36 | 'ADR1', |
||
37 | 'ADR2', |
||
38 | 'ADOP', |
||
39 | 'ADOP:DATE', |
||
40 | 'ADOP:PLAC', |
||
41 | 'AFN', |
||
42 | 'AGE', |
||
43 | 'AGNC', |
||
44 | 'ALIA', |
||
45 | 'ANCE', |
||
46 | 'ANCI', |
||
47 | 'ANUL', |
||
48 | 'ASSO', |
||
49 | 'AUTH', |
||
50 | 'BAPL', |
||
51 | 'BAPL:DATE', |
||
52 | 'BAPL:PLAC', |
||
53 | 'BAPM', |
||
54 | 'BAPM:DATE', |
||
55 | 'BAPM:PLAC', |
||
56 | 'BARM', |
||
57 | 'BARM:DATE', |
||
58 | 'BARM:PLAC', |
||
59 | 'BASM', |
||
60 | 'BASM:DATE', |
||
61 | 'BASM:PLAC', |
||
62 | 'BIRT', |
||
63 | 'BIRT:DATE', |
||
64 | 'BIRT:PLAC', |
||
65 | 'BLES', |
||
66 | 'BLES:DATE', |
||
67 | 'BLES:PLAC', |
||
68 | 'BLOB', |
||
69 | 'BURI', |
||
70 | 'BURI:DATE', |
||
71 | 'BURI:PLAC', |
||
72 | 'CALN', |
||
73 | 'CAST', |
||
74 | 'CAUS', |
||
75 | 'CEME', |
||
76 | 'CENS', |
||
77 | 'CENS:DATE', |
||
78 | 'CENS:PLAC', |
||
79 | 'CHAN', |
||
80 | 'CHAN:DATE', |
||
81 | 'CHAN:_WT_USER', |
||
82 | 'CHAR', |
||
83 | 'CHIL', |
||
84 | 'CHR', |
||
85 | 'CHR:DATE', |
||
86 | 'CHR:PLAC', |
||
87 | 'CHRA', |
||
88 | 'CITN', |
||
89 | 'CITY', |
||
90 | 'COMM', |
||
91 | 'CONC', |
||
92 | 'CONT', |
||
93 | 'CONF', |
||
94 | 'CONF:DATE', |
||
95 | 'CONF:PLAC', |
||
96 | 'CONL', |
||
97 | 'COPR', |
||
98 | 'CORP', |
||
99 | 'CREM', |
||
100 | 'CREM:DATE', |
||
101 | 'CREM:PLAC', |
||
102 | 'CTRY', |
||
103 | 'DATA', |
||
104 | 'DATA:DATE', |
||
105 | 'DATE', |
||
106 | 'DEAT', |
||
107 | 'DEAT:CAUS', |
||
108 | 'DEAT:DATE', |
||
109 | 'DEAT:PLAC', |
||
110 | 'DESC', |
||
111 | 'DESI', |
||
112 | 'DEST', |
||
113 | 'DIV', |
||
114 | 'DIVF', |
||
115 | 'DSCR', |
||
116 | 'EDUC', |
||
117 | 'EDUC:AGNC', |
||
118 | 'EMAI', |
||
119 | 'EMAIL', |
||
120 | 'EMAL', |
||
121 | 'EMIG', |
||
122 | 'EMIG:DATE', |
||
123 | 'EMIG:PLAC', |
||
124 | 'ENDL', |
||
125 | 'ENDL:DATE', |
||
126 | 'ENDL:PLAC', |
||
127 | 'ENGA', |
||
128 | 'ENGA:DATE', |
||
129 | 'ENGA:PLAC', |
||
130 | 'EVEN', |
||
131 | 'EVEN:DATE', |
||
132 | 'EVEN:PLAC', |
||
133 | 'EVEN:TYPE', |
||
134 | 'FACT', |
||
135 | 'FACT:TYPE', |
||
136 | 'FAM', |
||
137 | 'FAMC', |
||
138 | 'FAMF', |
||
139 | 'FAMS', |
||
140 | 'FAX', |
||
141 | 'FCOM', |
||
142 | 'FCOM:DATE', |
||
143 | 'FCOM:PLAC', |
||
144 | 'FILE', |
||
145 | 'FONE', |
||
146 | 'FORM', |
||
147 | 'GEDC', |
||
148 | 'GIVN', |
||
149 | 'GRAD', |
||
150 | 'HEAD', |
||
151 | 'HUSB', |
||
152 | 'IDNO', |
||
153 | 'IMMI', |
||
154 | 'IMMI:DATE', |
||
155 | 'IMMI:PLAC', |
||
156 | 'INDI', |
||
157 | 'INFL', |
||
158 | 'LANG', |
||
159 | 'LATI', |
||
160 | 'LEGA', |
||
161 | 'LONG', |
||
162 | 'MAP', |
||
163 | 'MARB', |
||
164 | 'MARB:DATE', |
||
165 | 'MARB:PLAC', |
||
166 | 'MARR_CIVIL', |
||
167 | 'MARR_PARTNERS', |
||
168 | 'MARR_RELIGIOUS', |
||
169 | 'MARR_UNKNOWN', |
||
170 | 'MARC', |
||
171 | 'MARL', |
||
172 | 'MARR', |
||
173 | 'MARR:DATE', |
||
174 | 'MARR:PLAC', |
||
175 | 'MARS', |
||
176 | 'MEDI', |
||
177 | 'NAME', |
||
178 | 'NAME:FONE', |
||
179 | 'NAME:_HEB', |
||
180 | 'NATI', |
||
181 | 'NATU', |
||
182 | 'NATU:DATE', |
||
183 | 'NATU:PLAC', |
||
184 | 'NCHI', |
||
185 | 'NICK', |
||
186 | 'NMR', |
||
187 | 'NOTE', |
||
188 | 'NPFX', |
||
189 | 'NSFX', |
||
190 | 'OBJE', |
||
191 | 'OCCU', |
||
192 | 'OCCU:AGNC', |
||
193 | 'ORDI', |
||
194 | 'ORDN', |
||
195 | 'ORDN:AGNC', |
||
196 | 'ORDN:DATE', |
||
197 | 'ORDN:PLAC', |
||
198 | 'PAGE', |
||
199 | 'PEDI', |
||
200 | 'PHON', |
||
201 | 'PLAC', |
||
202 | 'PLAC:FONE', |
||
203 | 'PLAC:ROMN', |
||
204 | 'PLAC:_HEB', |
||
205 | 'POST', |
||
206 | 'PROB', |
||
207 | 'PROP', |
||
208 | 'PUBL', |
||
209 | 'QUAY', |
||
210 | 'REFN', |
||
211 | 'RELA', |
||
212 | 'RELI', |
||
213 | 'REPO', |
||
214 | 'RESI', |
||
215 | 'RESI:DATE', |
||
216 | 'RESI:PLAC', |
||
217 | 'RESN', |
||
218 | 'RETI', |
||
219 | 'RETI:AGNC', |
||
220 | 'RFN', |
||
221 | 'RIN', |
||
222 | 'ROLE', |
||
223 | 'ROMN', |
||
224 | 'SERV', |
||
225 | 'SEX', |
||
226 | 'SHARED_NOTE', |
||
227 | 'SLGC', |
||
228 | 'SLGC:DATE', |
||
229 | 'SLGC:PLAC', |
||
230 | 'SLGS', |
||
231 | 'SLGS:DATE', |
||
232 | 'SLGS:PLAC', |
||
233 | 'SOUR', |
||
234 | 'SPFX', |
||
235 | 'SSN', |
||
236 | 'STAE', |
||
237 | 'STAT', |
||
238 | 'STAT:DATE', |
||
239 | 'SUBM', |
||
240 | 'SUBN', |
||
241 | 'SURN', |
||
242 | 'TEMP', |
||
243 | 'TEXT', |
||
244 | 'TIME', |
||
245 | 'TITL', |
||
246 | 'TITL:FONE', |
||
247 | 'TITL:ROMN', |
||
248 | 'TITL:_HEB', |
||
249 | 'TRLR', |
||
250 | 'TYPE', |
||
251 | 'URL', |
||
252 | 'VERS', |
||
253 | 'WIFE', |
||
254 | 'WILL', |
||
255 | 'WWW', |
||
256 | '_ADOP_CHIL', |
||
257 | '_ADOP_GCHI', |
||
258 | '_ADOP_GCH1', |
||
259 | '_ADOP_GCH2', |
||
260 | '_ADOP_HSIB', |
||
261 | '_ADOP_SIBL', |
||
262 | '_ADPF', |
||
263 | '_ADPM', |
||
264 | '_AKA', |
||
265 | '_AKAN', |
||
266 | '_ASSO', |
||
267 | '_BAPM_CHIL', |
||
268 | '_BAPM_GCHI', |
||
269 | '_BAPM_GCH1', |
||
270 | '_BAPM_GCH2', |
||
271 | '_BAPM_HSIB', |
||
272 | '_BAPM_SIBL', |
||
273 | '_BIBL', |
||
274 | '_BIRT_CHIL', |
||
275 | '_BIRT_GCHI', |
||
276 | '_BIRT_GCH1', |
||
277 | '_BIRT_GCH2', |
||
278 | '_BIRT_HSIB', |
||
279 | '_BIRT_SIBL', |
||
280 | '_BRTM', |
||
281 | '_BRTM:DATE', |
||
282 | '_BRTM:PLAC', |
||
283 | '_BURI_CHIL', |
||
284 | '_BURI_GCHI', |
||
285 | '_BURI_GCH1', |
||
286 | '_BURI_GCH2', |
||
287 | '_BURI_GPAR', |
||
288 | '_BURI_HSIB', |
||
289 | '_BURI_SIBL', |
||
290 | '_BURI_SPOU', |
||
291 | '_CHR_CHIL', |
||
292 | '_CHR_GCHI', |
||
293 | '_CHR_GCH1', |
||
294 | '_CHR_GCH2', |
||
295 | '_CHR_HSIB', |
||
296 | '_CHR_SIBL', |
||
297 | '_COML', |
||
298 | '_CREM_CHIL', |
||
299 | '_CREM_GCHI', |
||
300 | '_CREM_GCH1', |
||
301 | '_CREM_GCH2', |
||
302 | '_CREM_GPAR', |
||
303 | '_CREM_HSIB', |
||
304 | '_CREM_SIBL', |
||
305 | '_CREM_SPOU', |
||
306 | '_DATE', |
||
307 | '_DBID', |
||
308 | '_DEAT_CHIL', |
||
309 | '_DEAT_GCHI', |
||
310 | '_DEAT_GCH1', |
||
311 | '_DEAT_GCH2', |
||
312 | '_DEAT_GPAR', |
||
313 | '_DEAT_GPA1', |
||
314 | '_DEAT_GPA2', |
||
315 | '_DEAT_HSIB', |
||
316 | '_DEAT_PARE', |
||
317 | '_DEAT_SIBL', |
||
318 | '_DEAT_SPOU', |
||
319 | '_DEG', |
||
320 | '_DETS', |
||
321 | '_DNA', |
||
322 | '_EMAIL', |
||
323 | '_EYEC', |
||
324 | '_FA1', |
||
325 | '_FA2', |
||
326 | '_FA3', |
||
327 | '_FA4', |
||
328 | '_FA5', |
||
329 | '_FA6', |
||
330 | '_FA7', |
||
331 | '_FA8', |
||
332 | '_FA9', |
||
333 | '_FA10', |
||
334 | '_FA11', |
||
335 | '_FA12', |
||
336 | '_FA13', |
||
337 | '_FNRL', |
||
338 | '_FREL', |
||
339 | '_GEDF', |
||
340 | '_GODP', |
||
341 | '_GOV', |
||
342 | '_HAIR', |
||
343 | '_HEB', |
||
344 | '_HEIG', |
||
345 | '_HNM', |
||
346 | '_HOL', |
||
347 | '_INTE', |
||
348 | '_LOC', |
||
349 | '_MARI', |
||
350 | '_MARNM', |
||
351 | '_PRIM', |
||
352 | '_MARNM_SURN', |
||
353 | '_MARR_CHIL', |
||
354 | '_MARR_FAMC', |
||
355 | '_MARR_GCHI', |
||
356 | '_MARR_GCH1', |
||
357 | '_MARR_GCH2', |
||
358 | '_MARR_HSIB', |
||
359 | '_MARR_PARE', |
||
360 | '_MARR_SIBL', |
||
361 | '_MBON', |
||
362 | '_MDCL', |
||
363 | '_MEDC', |
||
364 | '_MEND', |
||
365 | '_MILI', |
||
366 | '_MILT', |
||
367 | '_MREL', |
||
368 | '_MSTAT', |
||
369 | '_NAME', |
||
370 | '_NAMS', |
||
371 | '_NLIV', |
||
372 | '_NMAR', |
||
373 | '_NMR', |
||
374 | '_PLACE', |
||
375 | '_WT_USER', |
||
376 | '_PRMN', |
||
377 | '_SCBK', |
||
378 | '_SEPR', |
||
379 | '_SSHOW', |
||
380 | '_STAT', |
||
381 | '_SUBQ', |
||
382 | '_TODO', |
||
383 | '_TYPE', |
||
384 | '_UID', |
||
385 | '_URL', |
||
386 | '_WEIG', |
||
387 | '_WITN', |
||
388 | '_YART', |
||
389 | '__BRTM_CHIL', |
||
390 | '__BRTM_GCHI', |
||
391 | '__BRTM_GCH1', |
||
392 | '__BRTM_GCH2', |
||
393 | '__BRTM_HSIB', |
||
394 | '__BRTM_SIBL', |
||
395 | // These pseudo-tags are generated dynamically to display media object attributes |
||
396 | '__FILE_SIZE__', |
||
397 | '__IMAGE_SIZE__', |
||
398 | ]; |
||
399 | |||
400 | /** |
||
401 | * Is $tag one of our known tags? |
||
402 | * |
||
403 | * @param string $tag |
||
404 | * |
||
405 | * @return bool |
||
406 | */ |
||
407 | public static function isTag(string $tag): bool |
||
410 | } |
||
411 | |||
412 | /** |
||
413 | * Translate a tag, for an (optional) record |
||
414 | * |
||
415 | * @param string $tag |
||
416 | * |
||
417 | * @return string |
||
418 | */ |
||
419 | public static function getLabel(string $tag): string |
||
420 | { |
||
421 | switch ($tag) { |
||
422 | case 'ABBR': |
||
423 | /* I18N: gedcom tag ABBR */ |
||
424 | return I18N::translate('Abbreviation'); |
||
425 | case 'ADDR': |
||
426 | /* I18N: gedcom tag ADDR */ |
||
427 | return I18N::translate('Address'); |
||
428 | case 'ADR1': |
||
429 | /* I18N: gedcom tag ADR1 */ |
||
430 | return I18N::translate('Address line 1'); |
||
431 | case 'ADR2': |
||
432 | /* I18N: gedcom tag ADR2 */ |
||
433 | return I18N::translate('Address line 2'); |
||
434 | case 'ADR3': |
||
435 | /* I18N: gedcom tag ADR3 */ |
||
436 | return I18N::translate('Address line 3'); |
||
437 | case 'ADOP': |
||
438 | /* I18N: gedcom tag ADOP */ |
||
439 | return I18N::translate('Adoption'); |
||
440 | case 'ADOP:DATE': |
||
441 | return I18N::translate('Date of adoption'); |
||
442 | case 'ADOP:PLAC': |
||
443 | return I18N::translate('Place of adoption'); |
||
444 | case 'AFN': |
||
445 | /* I18N: gedcom tag AFN */ |
||
446 | return I18N::translate('Ancestral file number'); |
||
447 | case 'AGE': |
||
448 | /* I18N: gedcom tag AGE */ |
||
449 | return I18N::translate('Age'); |
||
450 | case 'AGNC': |
||
451 | /* I18N: gedcom tag AGNC */ |
||
452 | return I18N::translate('Agency'); |
||
453 | case 'ALIA': |
||
454 | /* I18N: gedcom tag ALIA */ |
||
455 | return I18N::translate('Alias'); |
||
456 | case 'ANCE': |
||
457 | /* I18N: gedcom tag ANCE */ |
||
458 | return I18N::translate('Generations of ancestors'); |
||
459 | case 'ANCI': |
||
460 | /* I18N: gedcom tag ANCI */ |
||
461 | return I18N::translate('Ancestors interest'); |
||
462 | case 'ANUL': |
||
463 | /* I18N: gedcom tag ANUL */ |
||
464 | return I18N::translate('Annulment'); |
||
465 | case 'ASSO': |
||
466 | /* I18N: gedcom tag ASSO */ |
||
467 | return I18N::translate('Associate'); |
||
468 | case 'AUTH': |
||
469 | /* I18N: gedcom tag AUTH */ |
||
470 | return I18N::translate('Author'); |
||
471 | case 'BAPL': |
||
472 | /* I18N: gedcom tag BAPL. LDS = Church of Latter Day Saints. */ |
||
473 | return I18N::translate('LDS baptism'); |
||
474 | case 'BAPL:DATE': |
||
475 | /* I18N: LDS = Church of Latter Day Saints. */ |
||
476 | return I18N::translate('Date of LDS baptism'); |
||
477 | case 'BAPL:PLAC': |
||
478 | /* I18N: LDS = Church of Latter Day Saints. */ |
||
479 | return I18N::translate('Place of LDS baptism'); |
||
480 | case 'BAPM': |
||
481 | /* I18N: gedcom tag BAPM */ |
||
482 | return I18N::translate('Baptism'); |
||
483 | case 'BAPM:DATE': |
||
484 | return I18N::translate('Date of baptism'); |
||
485 | case 'BAPM:PLAC': |
||
486 | return I18N::translate('Place of baptism'); |
||
487 | case 'BARM': |
||
488 | /* I18N: gedcom tag BARM */ |
||
489 | return I18N::translate('Bar mitzvah'); |
||
490 | case 'BARM:DATE': |
||
491 | return I18N::translate('Date of bar mitzvah'); |
||
492 | case 'BARM:PLAC': |
||
493 | return I18N::translate('Place of bar mitzvah'); |
||
494 | case 'BASM': |
||
495 | /* I18N: gedcom tag BASM */ |
||
496 | return I18N::translate('Bat mitzvah'); |
||
497 | case 'BASM:DATE': |
||
498 | return I18N::translate('Date of bat mitzvah'); |
||
499 | case 'BASM:PLAC': |
||
500 | return I18N::translate('Place of bat mitzvah'); |
||
501 | case 'BIRT': |
||
502 | /* I18N: gedcom tag BIRT */ |
||
503 | return I18N::translate('Birth'); |
||
504 | case 'BIRT:DATE': |
||
505 | return I18N::translate('Date of birth'); |
||
506 | case 'BIRT:PLAC': |
||
507 | return I18N::translate('Place of birth'); |
||
508 | case 'BLES': |
||
509 | /* I18N: gedcom tag BLES */ |
||
510 | return I18N::translate('Blessing'); |
||
511 | case 'BLES:DATE': |
||
512 | return I18N::translate('Date of blessing'); |
||
513 | case 'BLES:PLAC': |
||
514 | return I18N::translate('Place of blessing'); |
||
515 | case 'BLOB': |
||
516 | /* I18N: gedcom tag BLOB */ |
||
517 | return I18N::translate('Binary data object'); |
||
518 | case 'BURI': |
||
519 | /* I18N: gedcom tag BURI */ |
||
520 | return I18N::translate('Burial'); |
||
521 | case 'BURI:DATE': |
||
522 | return I18N::translate('Date of burial'); |
||
523 | case 'BURI:PLAC': |
||
524 | return I18N::translate('Place of burial'); |
||
525 | case 'CALN': |
||
526 | /* I18N: gedcom tag CALN */ |
||
527 | return I18N::translate('Call number'); |
||
528 | case 'CAST': |
||
529 | /* I18N: gedcom tag CAST */ |
||
530 | return I18N::translate('Caste'); |
||
531 | case 'CAUS': |
||
532 | /* I18N: gedcom tag CAUS */ |
||
533 | return I18N::translate('Cause'); |
||
534 | case 'CEME': |
||
535 | /* I18N: gedcom tag CEME */ |
||
536 | return I18N::translate('Cemetery'); |
||
537 | case 'CENS': |
||
538 | /* I18N: gedcom tag CENS */ |
||
539 | return I18N::translate('Census'); |
||
540 | case 'CENS:DATE': |
||
541 | return I18N::translate('Census date'); |
||
542 | case 'CENS:PLAC': |
||
543 | return I18N::translate('Census place'); |
||
544 | case '_UPD': // Family Tree Builder uses "1 _UPD 14 APR 2012 00:14:10 GMT-5" instead of 1 CHAN/2 DATE/3 TIME |
||
545 | case 'CHAN': |
||
546 | /* I18N: gedcom tag CHAN */ |
||
547 | return I18N::translate('Last change'); |
||
548 | case 'CHAN:DATE': |
||
549 | /* I18N: gedcom tag CHAN:DATE */ |
||
550 | return I18N::translate('Date of last change'); |
||
551 | case 'CHAN:_WT_USER': |
||
552 | /* I18N: gedcom tag CHAN:_WT_USER */ |
||
553 | return I18N::translate('Author of last change'); |
||
554 | case 'CHAR': |
||
555 | /* I18N: gedcom tag CHAR */ |
||
556 | return I18N::translate('Character set'); |
||
557 | case 'CHIL': |
||
558 | /* I18N: gedcom tag CHIL */ |
||
559 | return I18N::translate('Child'); |
||
560 | case 'CHR': |
||
561 | /* I18N: gedcom tag CHR */ |
||
562 | return I18N::translate('Christening'); |
||
563 | case 'CHR:DATE': |
||
564 | return I18N::translate('Date of christening'); |
||
565 | case 'CHR:PLAC': |
||
566 | return I18N::translate('Place of christening'); |
||
567 | case 'CHRA': |
||
568 | /* I18N: gedcom tag CHRA */ |
||
569 | return I18N::translate('Adult christening'); |
||
570 | case 'CITN': |
||
571 | /* I18N: gedcom tag CITN */ |
||
572 | return I18N::translate('Citizenship'); |
||
573 | case 'CITY': |
||
574 | /* I18N: gedcom tag CITY */ |
||
575 | return I18N::translate('City'); |
||
576 | case 'COMM': |
||
577 | /* I18N: gedcom tag COMM */ |
||
578 | return I18N::translate('Comment'); |
||
579 | case 'CONC': |
||
580 | /* I18N: gedcom tag CONC */ |
||
581 | return I18N::translate('Concatenation'); |
||
582 | case 'CONT': |
||
583 | /* I18N: gedcom tag CONT */ |
||
584 | return I18N::translate('Continued'); |
||
585 | case 'CONF': |
||
586 | /* I18N: gedcom tag CONF */ |
||
587 | return I18N::translate('Confirmation'); |
||
588 | case 'CONF:DATE': |
||
589 | return I18N::translate('Date of confirmation'); |
||
590 | case 'CONF:PLAC': |
||
591 | return I18N::translate('Place of confirmation'); |
||
592 | case 'CONL': |
||
593 | /* I18N: gedcom tag CONL. LDS = Church of Latter Day Saints. */ |
||
594 | return I18N::translate('LDS confirmation'); |
||
595 | case 'COPR': |
||
596 | /* I18N: gedcom tag COPR */ |
||
597 | return I18N::translate('Copyright'); |
||
598 | case 'CORP': |
||
599 | /* I18N: gedcom tag CORP */ |
||
600 | return I18N::translate('Corporation'); |
||
601 | case 'CREM': |
||
602 | /* I18N: gedcom tag CREM */ |
||
603 | return I18N::translate('Cremation'); |
||
604 | case 'CREM:DATE': |
||
605 | return I18N::translate('Date of cremation'); |
||
606 | case 'CREM:PLAC': |
||
607 | return I18N::translate('Place of cremation'); |
||
608 | case 'CTRY': |
||
609 | /* I18N: gedcom tag CTRY */ |
||
610 | return I18N::translate('Country'); |
||
611 | case 'DATA': |
||
612 | /* I18N: gedcom tag DATA */ |
||
613 | return I18N::translate('Data'); |
||
614 | case 'DATA:DATE': |
||
615 | return I18N::translate('Date of entry in original source'); |
||
616 | case '_DATE': // Family Tree Builder uses OBJE:_DATE |
||
617 | case 'DATE': |
||
618 | /* I18N: gedcom tag DATE */ |
||
619 | return I18N::translate('Date'); |
||
620 | case 'DEAT': |
||
621 | /* I18N: gedcom tag DEAT */ |
||
622 | return I18N::translate('Death'); |
||
623 | case 'DEAT:CAUS': |
||
624 | return I18N::translate('Cause of death'); |
||
625 | case 'DEAT:DATE': |
||
626 | return I18N::translate('Date of death'); |
||
627 | case 'DEAT:PLAC': |
||
628 | return I18N::translate('Place of death'); |
||
629 | case 'DESC': |
||
630 | /* I18N: gedcom tag DESC */ |
||
631 | return I18N::translate('Descendants'); |
||
632 | case 'DESI': |
||
633 | /* I18N: gedcom tag DESI */ |
||
634 | return I18N::translate('Descendants interest'); |
||
635 | case 'DEST': |
||
636 | /* I18N: gedcom tag DEST */ |
||
637 | return I18N::translate('Destination'); |
||
638 | case 'DIV': |
||
639 | /* I18N: gedcom tag DIV */ |
||
640 | return I18N::translate('Divorce'); |
||
641 | case 'DIVF': |
||
642 | /* I18N: gedcom tag DIVF */ |
||
643 | return I18N::translate('Divorce filed'); |
||
644 | case 'DSCR': |
||
645 | /* I18N: gedcom tag DSCR */ |
||
646 | return I18N::translate('Description'); |
||
647 | case 'EDUC': |
||
648 | /* I18N: gedcom tag EDUC */ |
||
649 | return I18N::translate('Education'); |
||
650 | case 'EDUC:AGNC': |
||
651 | return I18N::translate('School or college'); |
||
652 | case 'EMAI': |
||
653 | case 'EMAL': |
||
654 | case 'EMAIL': |
||
655 | /* I18N: gedcom tag EMAIL */ |
||
656 | return I18N::translate('Email address'); |
||
657 | case 'EMIG': |
||
658 | /* I18N: gedcom tag EMIG */ |
||
659 | return I18N::translate('Emigration'); |
||
660 | case 'EMIG:DATE': |
||
661 | return I18N::translate('Date of emigration'); |
||
662 | case 'EMIG:PLAC': |
||
663 | return I18N::translate('Place of emigration'); |
||
664 | case 'ENDL': |
||
665 | /* I18N: gedcom tag ENDL. LDS = Church of Latter Day Saints. */ |
||
666 | return I18N::translate('LDS endowment'); |
||
667 | case 'ENDL:DATE': |
||
668 | /* I18N: LDS = Church of Latter Day Saints. */ |
||
669 | return I18N::translate('Date of LDS endowment'); |
||
670 | case 'ENDL:PLAC': |
||
671 | /* I18N: LDS = Church of Latter Day Saints. */ |
||
672 | return I18N::translate('Place of LDS endowment'); |
||
673 | case 'ENGA': |
||
674 | /* I18N: gedcom tag ENGA */ |
||
675 | return I18N::translate('Engagement'); |
||
676 | case 'ENGA:DATE': |
||
677 | return I18N::translate('Date of engagement'); |
||
678 | case 'ENGA:PLAC': |
||
679 | return I18N::translate('Place of engagement'); |
||
680 | case 'EVEN': |
||
681 | /* I18N: gedcom tag EVEN */ |
||
682 | return I18N::translate('Event'); |
||
683 | case 'EVEN:DATE': |
||
684 | return I18N::translate('Date of event'); |
||
685 | case 'EVEN:PLAC': |
||
686 | return I18N::translate('Place of event'); |
||
687 | case 'EVEN:TYPE': |
||
688 | return I18N::translate('Type of event'); |
||
689 | case 'FACT': |
||
690 | /* I18N: gedcom tag FACT */ |
||
691 | return I18N::translate('Fact'); |
||
692 | case 'FACT:TYPE': |
||
693 | return I18N::translate('Type of fact'); |
||
694 | case 'FAM': |
||
695 | /* I18N: gedcom tag FAM */ |
||
696 | return I18N::translate('Family'); |
||
697 | case 'FAMC': |
||
698 | /* I18N: gedcom tag FAMC */ |
||
699 | return I18N::translate('Family as a child'); |
||
700 | case 'FAMF': |
||
701 | /* I18N: gedcom tag FAMF */ |
||
702 | return I18N::translate('Family file'); |
||
703 | case 'FAMS': |
||
704 | /* I18N: gedcom tag FAMS */ |
||
705 | return I18N::translate('Family as a spouse'); |
||
706 | case 'FAX': |
||
707 | /* I18N: gedcom tag FAX */ |
||
708 | return I18N::translate('Fax'); |
||
709 | case 'FCOM': |
||
710 | /* I18N: gedcom tag FCOM */ |
||
711 | return I18N::translate('First communion'); |
||
712 | case 'FCOM:DATE': |
||
713 | return I18N::translate('Date of first communion'); |
||
714 | case 'FCOM:PLAC': |
||
715 | return I18N::translate('Place of first communion'); |
||
716 | case 'FILE': |
||
717 | /* I18N: gedcom tag FILE */ |
||
718 | return I18N::translate('Filename'); |
||
719 | case 'FONE': |
||
720 | /* I18N: gedcom tag FONE */ |
||
721 | return I18N::translate('Phonetic'); |
||
722 | case 'FORM': |
||
723 | /* I18N: gedcom tag FORM */ |
||
724 | return I18N::translate('Format'); |
||
725 | case 'GEDC': |
||
726 | /* I18N: gedcom tag GEDC */ |
||
727 | return I18N::translate('GEDCOM file'); |
||
728 | case 'GIVN': |
||
729 | /* I18N: gedcom tag GIVN */ |
||
730 | return I18N::translate('Given names'); |
||
731 | case 'GRAD': |
||
732 | /* I18N: gedcom tag GRAD */ |
||
733 | return I18N::translate('Graduation'); |
||
734 | case 'HEAD': |
||
735 | /* I18N: gedcom tag HEAD */ |
||
736 | return I18N::translate('Header'); |
||
737 | case 'HUSB': |
||
738 | /* I18N: gedcom tag HUSB */ |
||
739 | return I18N::translate('Husband'); |
||
740 | case 'IDNO': |
||
741 | /* I18N: gedcom tag IDNO */ |
||
742 | return I18N::translate('Identification number'); |
||
743 | case 'IMMI': |
||
744 | /* I18N: gedcom tag IMMI */ |
||
745 | return I18N::translate('Immigration'); |
||
746 | case 'IMMI:DATE': |
||
747 | return I18N::translate('Date of immigration'); |
||
748 | case 'IMMI:PLAC': |
||
749 | return I18N::translate('Place of immigration'); |
||
750 | case 'INDI': |
||
751 | /* I18N: gedcom tag INDI */ |
||
752 | return I18N::translate('Individual'); |
||
753 | case 'INFL': |
||
754 | /* I18N: gedcom tag INFL */ |
||
755 | return I18N::translate('Infant'); |
||
756 | case 'LANG': |
||
757 | /* I18N: gedcom tag LANG */ |
||
758 | return I18N::translate('Language'); |
||
759 | case 'LATI': |
||
760 | /* I18N: gedcom tag LATI */ |
||
761 | return I18N::translate('Latitude'); |
||
762 | case 'LEGA': |
||
763 | /* I18N: gedcom tag LEGA */ |
||
764 | return I18N::translate('Legatee'); |
||
765 | case 'LONG': |
||
766 | /* I18N: gedcom tag LONG */ |
||
767 | return I18N::translate('Longitude'); |
||
768 | case 'MAP': |
||
769 | /* I18N: gedcom tag MAP */ |
||
770 | return I18N::translate('Coordinates'); |
||
771 | case 'MARB': |
||
772 | /* I18N: gedcom tag MARB */ |
||
773 | return I18N::translate('Marriage banns'); |
||
774 | case 'MARB:DATE': |
||
775 | return I18N::translate('Date of marriage banns'); |
||
776 | case 'MARB:PLAC': |
||
777 | return I18N::translate('Place of marriage banns'); |
||
778 | case 'MARC': |
||
779 | /* I18N: gedcom tag MARC */ |
||
780 | return I18N::translate('Marriage contract'); |
||
781 | case 'MARL': |
||
782 | /* I18N: gedcom tag MARL */ |
||
783 | return I18N::translate('Marriage license'); |
||
784 | case 'MARR': |
||
785 | /* I18N: gedcom tag MARR */ |
||
786 | return I18N::translate('Marriage'); |
||
787 | case 'MARR:DATE': |
||
788 | return I18N::translate('Date of marriage'); |
||
789 | case 'MARR:PLAC': |
||
790 | return I18N::translate('Place of marriage'); |
||
791 | case 'MARR_CIVIL': |
||
792 | return I18N::translate('Civil marriage'); |
||
793 | case 'MARR_PARTNERS': |
||
794 | return I18N::translate('Registered partnership'); |
||
795 | case 'MARR_RELIGIOUS': |
||
796 | return I18N::translate('Religious marriage'); |
||
797 | case 'MARR_UNKNOWN': |
||
798 | return I18N::translate('Marriage type unknown'); |
||
799 | case 'MARS': |
||
800 | /* I18N: gedcom tag MARS */ |
||
801 | return I18N::translate('Marriage settlement'); |
||
802 | case 'MEDI': |
||
803 | /* I18N: gedcom tag MEDI */ |
||
804 | return I18N::translate('Media type'); |
||
805 | case 'NAME': |
||
806 | /* I18N: gedcom tag NAME */ |
||
807 | return I18N::translate('Name'); |
||
808 | case 'NAME:FONE': |
||
809 | return I18N::translate('Phonetic name'); |
||
810 | case 'NAME:_HEB': |
||
811 | return I18N::translate('Name in Hebrew'); |
||
812 | case 'NATI': |
||
813 | /* I18N: gedcom tag NATI */ |
||
814 | return I18N::translate('Nationality'); |
||
815 | case 'NATU': |
||
816 | /* I18N: gedcom tag NATU */ |
||
817 | return I18N::translate('Naturalization'); |
||
818 | case 'NATU:DATE': |
||
819 | return I18N::translate('Date of naturalization'); |
||
820 | case 'NATU:PLAC': |
||
821 | return I18N::translate('Place of naturalization'); |
||
822 | case 'NCHI': |
||
823 | /* I18N: gedcom tag NCHI */ |
||
824 | return I18N::translate('Number of children'); |
||
825 | case 'NICK': |
||
826 | /* I18N: gedcom tag NICK */ |
||
827 | return I18N::translate('Nickname'); |
||
828 | case 'NMR': |
||
829 | /* I18N: gedcom tag NMR */ |
||
830 | return I18N::translate('Number of marriages'); |
||
831 | case 'NOTE': |
||
832 | /* I18N: gedcom tag NOTE */ |
||
833 | return I18N::translate('Note'); |
||
834 | case 'NPFX': |
||
835 | /* I18N: gedcom tag NPFX */ |
||
836 | return I18N::translate('Name prefix'); |
||
837 | case 'NSFX': |
||
838 | /* I18N: gedcom tag NSFX */ |
||
839 | return I18N::translate('Name suffix'); |
||
840 | case 'OBJE': |
||
841 | /* I18N: gedcom tag OBJE */ |
||
842 | return I18N::translate('Media object'); |
||
843 | case 'OCCU': |
||
844 | /* I18N: gedcom tag OCCU */ |
||
845 | return I18N::translate('Occupation'); |
||
846 | case 'OCCU:AGNC': |
||
847 | return I18N::translate('Employer'); |
||
848 | case 'ORDI': |
||
849 | /* I18N: gedcom tag ORDI */ |
||
850 | return I18N::translate('Ordinance'); |
||
851 | case 'ORDN': |
||
852 | /* I18N: gedcom tag ORDN */ |
||
853 | return I18N::translate('Ordination'); |
||
854 | case 'ORDN:AGNC': |
||
855 | return I18N::translate('Religious institution'); |
||
856 | case 'ORDN:DATE': |
||
857 | return I18N::translate('Date of ordination'); |
||
858 | case 'ORDN:PLAC': |
||
859 | return I18N::translate('Place of ordination'); |
||
860 | case 'PAGE': |
||
861 | /* I18N: gedcom tag PAGE */ |
||
862 | return I18N::translate('Citation details'); |
||
863 | case 'PEDI': |
||
864 | /* I18N: gedcom tag PEDI */ |
||
865 | return I18N::translate('Relationship to parents'); |
||
866 | case 'PHON': |
||
867 | /* I18N: gedcom tag PHON */ |
||
868 | return I18N::translate('Phone'); |
||
869 | case '_PLACE': // Family Tree Builder uses OBJE:_PLACE |
||
870 | case 'PLAC': |
||
871 | /* I18N: gedcom tag PLAC */ |
||
872 | return I18N::translate('Place'); |
||
873 | case 'PLAC:FONE': |
||
874 | return I18N::translate('Phonetic place'); |
||
875 | case 'PLAC:ROMN': |
||
876 | return I18N::translate('Romanized place'); |
||
877 | case 'PLAC:_HEB': |
||
878 | return I18N::translate('Place in Hebrew'); |
||
879 | case 'POST': |
||
880 | /* I18N: gedcom tag POST */ |
||
881 | return I18N::translate('Postal code'); |
||
882 | case 'PROB': |
||
883 | /* I18N: gedcom tag PROB */ |
||
884 | return I18N::translate('Probate'); |
||
885 | case 'PROP': |
||
886 | /* I18N: gedcom tag PROP */ |
||
887 | return I18N::translate('Property'); |
||
888 | case 'PUBL': |
||
889 | /* I18N: gedcom tag PUBL */ |
||
890 | return I18N::translate('Publication'); |
||
891 | case 'QUAY': |
||
892 | /* I18N: gedcom tag QUAY */ |
||
893 | return I18N::translate('Quality of data'); |
||
894 | case 'REFN': |
||
895 | /* I18N: gedcom tag REFN */ |
||
896 | return I18N::translate('Reference number'); |
||
897 | case 'RELA': |
||
898 | /* I18N: gedcom tag RELA */ |
||
899 | return I18N::translate('Relationship'); |
||
900 | case 'RELI': |
||
901 | /* I18N: gedcom tag RELI */ |
||
902 | return I18N::translate('Religion'); |
||
903 | case 'REPO': |
||
904 | /* I18N: gedcom tag REPO */ |
||
905 | return I18N::translate('Repository'); |
||
906 | case 'REPO:NAME': |
||
907 | return I18N::translateContext('Repository', 'Name'); |
||
908 | case 'RESI': |
||
909 | /* I18N: gedcom tag RESI */ |
||
910 | return I18N::translate('Residence'); |
||
911 | case 'RESI:DATE': |
||
912 | return I18N::translate('Date of residence'); |
||
913 | case 'RESI:PLAC': |
||
914 | return I18N::translate('Place of residence'); |
||
915 | case 'RESN': |
||
916 | /* I18N: gedcom tag RESN */ |
||
917 | return I18N::translate('Restriction'); |
||
918 | case 'RETI': |
||
919 | /* I18N: gedcom tag RETI */ |
||
920 | return I18N::translate('Retirement'); |
||
921 | case 'RETI:AGNC': |
||
922 | return I18N::translate('Employer'); |
||
923 | case 'RFN': |
||
924 | /* I18N: gedcom tag RFN */ |
||
925 | return I18N::translate('Record file number'); |
||
926 | case '_PHOTO_RIN': |
||
927 | // Family Tree Builder uses "0 OBJE/1 _PHOTO_RIN" |
||
928 | // no break |
||
929 | case '_PRIN':// Family Tree Builder uses "0 _ALBUM/1 _PHOTO/2 _PRIN" |
||
930 | case 'RIN': |
||
931 | /* I18N: gedcom tag RIN */ |
||
932 | return I18N::translate('Record ID number'); |
||
933 | case 'ROLE': |
||
934 | /* I18N: gedcom tag ROLE */ |
||
935 | return I18N::translate('Role'); |
||
936 | case 'ROMN': |
||
937 | /* I18N: gedcom tag ROMN */ |
||
938 | return I18N::translate('Romanized'); |
||
939 | case 'SERV': |
||
940 | /* I18N: gedcom tag SERV */ |
||
941 | return I18N::translate('Remote server'); |
||
942 | case 'SEX': |
||
943 | /* I18N: gedcom tag SEX */ |
||
944 | return I18N::translate('Gender'); |
||
945 | case 'SHARED_NOTE': |
||
946 | return I18N::translate('Shared note'); |
||
947 | case 'SLGC': |
||
948 | /* I18N: gedcom tag SLGC. LDS = Church of Latter Day Saints. */ |
||
949 | return I18N::translate('LDS child sealing'); |
||
950 | case 'SLGC:DATE': |
||
951 | /* I18N: LDS = Church of Latter Day Saints. */ |
||
952 | return I18N::translate('Date of LDS child sealing'); |
||
953 | case 'SLGC:PLAC': |
||
954 | /* I18N: LDS = Church of Latter Day Saints. */ |
||
955 | return I18N::translate('Place of LDS child sealing'); |
||
956 | case 'SLGS': |
||
957 | /* I18N: gedcom tag SLGS. LDS = Church of Latter Day Saints. */ |
||
958 | return I18N::translate('LDS spouse sealing'); |
||
959 | case 'SOUR': |
||
960 | /* I18N: gedcom tag SOUR */ |
||
961 | return I18N::translate('Source'); |
||
962 | case 'SPFX': |
||
963 | /* I18N: gedcom tag SPFX */ |
||
964 | return I18N::translate('Surname prefix'); |
||
965 | case 'SSN': |
||
966 | /* I18N: gedcom tag SSN */ |
||
967 | return I18N::translate('Social security number'); |
||
968 | case 'STAE': |
||
969 | /* I18N: gedcom tag STAE */ |
||
970 | return I18N::translate('State'); |
||
971 | case 'STAT': |
||
972 | /* I18N: gedcom tag STAT */ |
||
973 | return I18N::translate('Status'); |
||
974 | case 'STAT:DATE': |
||
975 | return I18N::translate('Status change date'); |
||
976 | case 'SUBM': |
||
977 | /* I18N: gedcom tag SUBM */ |
||
978 | return I18N::translate('Submitter'); |
||
979 | case 'SUBN': |
||
980 | /* I18N: gedcom tag SUBN */ |
||
981 | return I18N::translate('Submission'); |
||
982 | case 'SURN': |
||
983 | /* I18N: gedcom tag SURN */ |
||
984 | return I18N::translate('Surname'); |
||
985 | case 'TEMP': |
||
986 | /* I18N: gedcom tag TEMP */ |
||
987 | return I18N::translate('Temple'); |
||
988 | case 'TEXT': |
||
989 | /* I18N: gedcom tag TEXT */ |
||
990 | return I18N::translate('Text'); |
||
991 | case 'TIME': |
||
992 | /* I18N: gedcom tag TIME */ |
||
993 | return I18N::translate('Time'); |
||
994 | case 'TITL': |
||
995 | /* I18N: gedcom tag TITL */ |
||
996 | return I18N::translate('Title'); |
||
997 | case 'TITL:FONE': |
||
998 | return I18N::translate('Phonetic title'); |
||
999 | case 'TITL:ROMN': |
||
1000 | return I18N::translate('Romanized title'); |
||
1001 | case 'TITL:_HEB': |
||
1002 | return I18N::translate('Title in Hebrew'); |
||
1003 | case 'TRLR': |
||
1004 | /* I18N: gedcom tag TRLR */ |
||
1005 | return I18N::translate('Trailer'); |
||
1006 | case 'TYPE': |
||
1007 | /* I18N: gedcom tag TYPE */ |
||
1008 | return I18N::translate('Type'); |
||
1009 | case 'URL': |
||
1010 | /* I18N: gedcom tag URL (A web address / URL) */ |
||
1011 | return I18N::translate('URL'); |
||
1012 | case 'VERS': |
||
1013 | /* I18N: gedcom tag VERS */ |
||
1014 | return I18N::translate('Version'); |
||
1015 | case 'WIFE': |
||
1016 | /* I18N: gedcom tag WIFE */ |
||
1017 | return I18N::translate('Wife'); |
||
1018 | case 'WILL': |
||
1019 | /* I18N: gedcom tag WILL */ |
||
1020 | return I18N::translate('Will'); |
||
1021 | case 'WWW': |
||
1022 | /* I18N: gedcom tag WWW (A web address / URL) */ |
||
1023 | return I18N::translate('URL'); |
||
1024 | |||
1025 | case '_ADPF': |
||
1026 | /* I18N: gedcom tag _ADPF */ |
||
1027 | return I18N::translate('Adopted by father'); |
||
1028 | |||
1029 | case '_ADPM': |
||
1030 | /* I18N: gedcom tag _ADPM */ |
||
1031 | return I18N::translate('Adopted by mother'); |
||
1032 | |||
1033 | case '_AKA': |
||
1034 | case '_AKAN': |
||
1035 | /* I18N: gedcom tag _AKA */ |
||
1036 | return I18N::translate('Also known as'); |
||
1037 | |||
1038 | case '_ALBUM': |
||
1039 | // Family Tree Builder uses OBJE:_ALBUM |
||
1040 | /* I18N: gedcom tag _ALBUM */ |
||
1041 | return I18N::translate('Album'); |
||
1042 | case '_ASSO': |
||
1043 | /* I18N: gedcom tag _ASSO */ |
||
1044 | return I18N::translate('Associate'); |
||
1045 | |||
1046 | case '_BIBL': |
||
1047 | /* I18N: gedcom tag _BIBL */ |
||
1048 | return I18N::translate('Bibliography'); |
||
1049 | |||
1050 | case '_BRTM': |
||
1051 | /* I18N: gedcom tag _BRTM */ |
||
1052 | return I18N::translate('Brit milah'); |
||
1053 | case '_BRTM:DATE': |
||
1054 | return I18N::translate('Date of brit milah'); |
||
1055 | case '_BRTM:PLAC': |
||
1056 | return I18N::translate('Place of brit milah'); |
||
1057 | |||
1058 | case '_COML': |
||
1059 | /* I18N: gedcom tag _COML */ |
||
1060 | return I18N::translate('Common law marriage'); |
||
1061 | |||
1062 | case '_DBID': |
||
1063 | /* I18N: gedcom tag _DBID */ |
||
1064 | return I18N::translate('Linked database ID'); |
||
1065 | |||
1066 | case '_DEG': |
||
1067 | /* I18N: gedcom tag _DEG */ |
||
1068 | return I18N::translate('Degree'); |
||
1069 | case '_DETS': |
||
1070 | /* I18N: gedcom tag _DETS */ |
||
1071 | return I18N::translate('Death of one spouse'); |
||
1072 | case '_DNA': |
||
1073 | /* I18N: gedcom tag _DNA (from FTM 2010) */ |
||
1074 | return I18N::translate('DNA markers'); |
||
1075 | case '_EMAIL': |
||
1076 | /* I18N: gedcom tag _EMAIL */ |
||
1077 | return I18N::translate('Email address'); |
||
1078 | case '_EYEC': |
||
1079 | /* I18N: gedcom tag _EYEC */ |
||
1080 | return I18N::translate('Eye color'); |
||
1081 | case '_FA1': |
||
1082 | return I18N::translate('Fact 1'); |
||
1083 | case '_FA2': |
||
1084 | return I18N::translate('Fact 2'); |
||
1085 | case '_FA3': |
||
1086 | return I18N::translate('Fact 3'); |
||
1087 | case '_FA4': |
||
1088 | return I18N::translate('Fact 4'); |
||
1089 | case '_FA5': |
||
1090 | return I18N::translate('Fact 5'); |
||
1091 | case '_FA6': |
||
1092 | return I18N::translate('Fact 6'); |
||
1093 | case '_FA7': |
||
1094 | return I18N::translate('Fact 7'); |
||
1095 | case '_FA8': |
||
1096 | return I18N::translate('Fact 8'); |
||
1097 | case '_FA9': |
||
1098 | return I18N::translate('Fact 9'); |
||
1099 | case '_FA10': |
||
1100 | return I18N::translate('Fact 10'); |
||
1101 | case '_FA11': |
||
1102 | return I18N::translate('Fact 11'); |
||
1103 | case '_FA12': |
||
1104 | return I18N::translate('Fact 12'); |
||
1105 | case '_FA13': |
||
1106 | return I18N::translate('Fact 13'); |
||
1107 | case '_FNRL': |
||
1108 | /* I18N: gedcom tag _FNRL */ |
||
1109 | return I18N::translate('Funeral'); |
||
1110 | case '_FREL': |
||
1111 | /* I18N: gedcom tag _FREL */ |
||
1112 | return I18N::translate('Relationship to father'); |
||
1113 | case '_GEDF': |
||
1114 | /* I18N: gedcom tag _GEDF */ |
||
1115 | return I18N::translate('GEDCOM file'); |
||
1116 | case '_GODP': |
||
1117 | /* I18N: gedcom tag _GODP */ |
||
1118 | return I18N::translate('Godparent'); |
||
1119 | case '_GOV': |
||
1120 | /* I18N: gedcom tag _GOV - see https://gov.genealogy.net */ |
||
1121 | return I18N::translate('GOV identifier'); |
||
1122 | case '_HAIR': |
||
1123 | /* I18N: gedcom tag _HAIR */ |
||
1124 | return I18N::translate('Hair color'); |
||
1125 | case '_HEB': |
||
1126 | /* I18N: gedcom tag _HEB */ |
||
1127 | return I18N::translate('Hebrew'); |
||
1128 | case '_HEIG': |
||
1129 | /* I18N: gedcom tag _HEIG */ |
||
1130 | return I18N::translate('Height'); |
||
1131 | case '_HNM': |
||
1132 | /* I18N: gedcom tag _HNM */ |
||
1133 | return I18N::translate('Hebrew name'); |
||
1134 | case '_HOL': |
||
1135 | /* I18N: gedcom tag _HOL */ |
||
1136 | return I18N::translate('Holocaust'); |
||
1137 | |||
1138 | case '_INTE': |
||
1139 | /* I18N: gedcom tag _INTE */ |
||
1140 | return I18N::translate('Interment'); |
||
1141 | |||
1142 | case '_LOC': |
||
1143 | /* I18N: gedcom tag _LOC */ |
||
1144 | return I18N::translate('Location'); |
||
1145 | case '_MARI': |
||
1146 | /* I18N: gedcom tag _MARI */ |
||
1147 | return I18N::translate('Marriage intention'); |
||
1148 | case '_MARNM': |
||
1149 | /* I18N: gedcom tag _MARNM */ |
||
1150 | return I18N::translate('Married name'); |
||
1151 | case '_PRIM': |
||
1152 | /* I18N: gedcom tag _PRIM */ |
||
1153 | return I18N::translate('Highlighted image'); |
||
1154 | case '_MARNM_SURN': |
||
1155 | return I18N::translate('Married surname'); |
||
1156 | |||
1157 | case '_MBON': |
||
1158 | /* I18N: gedcom tag _MBON */ |
||
1159 | return I18N::translate('Marriage bond'); |
||
1160 | case '_MDCL': |
||
1161 | /* I18N: gedcom tag _MDCL */ |
||
1162 | return I18N::translate('Medical'); |
||
1163 | case '_MEDC': |
||
1164 | /* I18N: gedcom tag _MEDC */ |
||
1165 | return I18N::translate('Medical condition'); |
||
1166 | case '_MEND': |
||
1167 | /* I18N: gedcom tag _MEND */ |
||
1168 | return I18N::translate('Marriage ending status'); |
||
1169 | case '_MILI': |
||
1170 | /* I18N: gedcom tag _MILI */ |
||
1171 | return I18N::translate('Military'); |
||
1172 | case '_MILT': |
||
1173 | /* I18N: gedcom tag _MILT */ |
||
1174 | return I18N::translate('Military service'); |
||
1175 | case '_MREL': |
||
1176 | /* I18N: gedcom tag _MREL */ |
||
1177 | return I18N::translate('Relationship to mother'); |
||
1178 | case '_MSTAT': |
||
1179 | /* I18N: gedcom tag _MSTAT */ |
||
1180 | return I18N::translate('Marriage beginning status'); |
||
1181 | case '_NAME': |
||
1182 | /* I18N: gedcom tag _NAME */ |
||
1183 | return I18N::translate('Mailing name'); |
||
1184 | case '_NAMS': |
||
1185 | /* I18N: gedcom tag _NAMS */ |
||
1186 | return I18N::translate('Namesake'); |
||
1187 | case '_NLIV': |
||
1188 | /* I18N: gedcom tag _NLIV */ |
||
1189 | return I18N::translate('Not living'); |
||
1190 | case '_NMAR': |
||
1191 | /* I18N: gedcom tag _NMAR */ |
||
1192 | return I18N::translate('Never married'); |
||
1193 | |||
1194 | case '_NMR': |
||
1195 | /* I18N: gedcom tag _NMR */ |
||
1196 | return I18N::translate('Not married'); |
||
1197 | |||
1198 | case '_PHOTO': |
||
1199 | // Family Tree Builder uses "0 _ALBUM/1_PHOTO" |
||
1200 | return I18N::translate('Photo'); |
||
1201 | case '_WT_USER': |
||
1202 | return I18N::translate('by'); |
||
1203 | case '_PRMN': |
||
1204 | /* I18N: gedcom tag _PRMN */ |
||
1205 | return I18N::translate('Permanent number'); |
||
1206 | case '_RNAME': |
||
1207 | return I18N::translate('Religious name'); |
||
1208 | |||
1209 | case '_SCBK': |
||
1210 | /* I18N: gedcom tag _SCBK */ |
||
1211 | return I18N::translate('Scrapbook'); |
||
1212 | case '_SEPR': |
||
1213 | /* I18N: gedcom tag _SEPR */ |
||
1214 | return I18N::translate('Separation'); |
||
1215 | case '_SSHOW': |
||
1216 | /* I18N: gedcom tag _SSHOW */ |
||
1217 | return I18N::translate('Slide show'); |
||
1218 | case '_STAT': |
||
1219 | /* I18N: gedcom tag _STAT */ |
||
1220 | return I18N::translate('Marriage status'); |
||
1221 | case '_SUBQ': |
||
1222 | /* I18N: gedcom tag _SUBQ */ |
||
1223 | return I18N::translate('Short version'); |
||
1224 | case '_TODO': |
||
1225 | /* I18N: gedcom tag _TODO */ |
||
1226 | return I18N::translate('Research task'); |
||
1227 | case '_TYPE': |
||
1228 | /* I18N: gedcom tag _TYPE */ |
||
1229 | return I18N::translate('Media type'); |
||
1230 | case '_UID': |
||
1231 | /* I18N: gedcom tag _UID */ |
||
1232 | return I18N::translate('Unique identifier'); |
||
1233 | case '_URL': |
||
1234 | /* I18N: gedcom tag _URL */ |
||
1235 | return I18N::translate('URL'); |
||
1236 | case '_WEIG': |
||
1237 | /* I18N: gedcom tag _WEIG */ |
||
1238 | return I18N::translate('Weight'); |
||
1239 | case '_WITN': |
||
1240 | /* I18N: gedcom tag _WITN */ |
||
1241 | return I18N::translate('Witness'); |
||
1242 | case '_WT_OBJE_SORT': |
||
1243 | /* I18N: gedcom tag _WT_OBJE_SORT */ |
||
1244 | return I18N::translate('Re-order media'); |
||
1245 | case '_YART': |
||
1246 | /* I18N: gedcom tag _YART - A yahrzeit is a special anniversary of death in the Hebrew faith/calendar. */ |
||
1247 | return I18N::translate('Yahrzeit'); |
||
1248 | case '_FILESIZE': // Family Tree Builder uses OBJE:_FILESIZE |
||
1249 | case '__FILE_SIZE__': |
||
1250 | // This pseudo-tag is generated internally to present information about a media object |
||
1251 | return I18N::translate('File size'); |
||
1252 | case '__IMAGE_SIZE__': |
||
1253 | // This pseudo-tag is generated internally to present information about a media object |
||
1254 | return I18N::translate('Image dimensions'); |
||
1255 | default: |
||
1256 | // If no specialisation exists (e.g. DEAT:CAUS), then look for the general (CAUS) |
||
1257 | if (str_contains($tag, ':')) { |
||
1258 | [, $tag] = explode(':', $tag, 2); |
||
1259 | |||
1260 | return self::getLabel($tag); |
||
1261 | } |
||
1262 | |||
1263 | // Still no translation? Highlight this as an error |
||
1264 | return '<span class="error" title="' . I18N::translate('Unrecognized GEDCOM code') . '">' . e($tag) . '</span>'; |
||
1265 | } |
||
1266 | } |
||
1267 | |||
1268 | /** |
||
1269 | * Translate a label/value pair, such as “Occupation: Farmer” |
||
1270 | * |
||
1271 | * @param string $tag |
||
1272 | * @param string $value |
||
1273 | * @param GedcomRecord|null $record |
||
1274 | * @param string|null $element |
||
1275 | * |
||
1276 | * @return string |
||
1277 | */ |
||
1278 | public static function getLabelValue(string $tag, string $value, GedcomRecord $record = null, $element = 'div'): string |
||
|
|||
1279 | { |
||
1280 | return |
||
1281 | '<' . $element . ' class="fact_' . $tag . '">' . |
||
1282 | /* I18N: a label/value pair, such as “Occupation: Farmer”. Some languages may need to change the punctuation. */ |
||
1283 | I18N::translate('<span class="label">%1$s:</span> <span class="field" dir="auto">%2$s</span>', self::getLabel($tag), $value) . |
||
1284 | '</' . $element . '>'; |
||
1285 | } |
||
1286 | |||
1287 | /** |
||
1288 | * Get a list of facts, for use in the "fact picker" edit control |
||
1289 | * |
||
1290 | * @param string $fact_type |
||
1291 | * |
||
1292 | * @return array<string> |
||
1293 | */ |
||
1294 | public static function getPicklistFacts(string $fact_type): array |
||
1295 | { |
||
1296 | switch ($fact_type) { |
||
1297 | case Individual::RECORD_TYPE: |
||
1298 | $tags = [ |
||
1299 | // Facts, attributes for individuals (no links to FAMs) |
||
1300 | 'RESN', |
||
1301 | 'NAME', |
||
1302 | 'SEX', |
||
1303 | 'BIRT', |
||
1304 | 'CHR', |
||
1305 | 'DEAT', |
||
1306 | 'BURI', |
||
1307 | 'CREM', |
||
1308 | 'ADOP', |
||
1309 | 'BAPM', |
||
1310 | 'BARM', |
||
1311 | 'BASM', |
||
1312 | 'BLES', |
||
1313 | 'CHRA', |
||
1314 | 'CONF', |
||
1315 | 'FCOM', |
||
1316 | 'ORDN', |
||
1317 | 'NATU', |
||
1318 | 'EMIG', |
||
1319 | 'IMMI', |
||
1320 | 'CENS', |
||
1321 | 'PROB', |
||
1322 | 'WILL', |
||
1323 | 'GRAD', |
||
1324 | 'RETI', |
||
1325 | 'EVEN', |
||
1326 | 'CAST', |
||
1327 | 'DSCR', |
||
1328 | 'EDUC', |
||
1329 | 'IDNO', |
||
1330 | 'NATI', |
||
1331 | 'NCHI', |
||
1332 | 'NMR', |
||
1333 | 'OCCU', |
||
1334 | 'PROP', |
||
1335 | 'RELI', |
||
1336 | 'RESI', |
||
1337 | 'SSN', |
||
1338 | 'TITL', |
||
1339 | 'FACT', |
||
1340 | 'BAPL', |
||
1341 | 'CONL', |
||
1342 | 'ENDL', |
||
1343 | 'SLGC', |
||
1344 | 'SUBM', |
||
1345 | 'ASSO', |
||
1346 | 'ALIA', |
||
1347 | 'ANCI', |
||
1348 | 'DESI', |
||
1349 | 'RFN', |
||
1350 | 'AFN', |
||
1351 | 'REFN', |
||
1352 | 'RIN', |
||
1353 | 'CHAN', |
||
1354 | 'NOTE', |
||
1355 | 'SHARED_NOTE', |
||
1356 | 'SOUR', |
||
1357 | 'OBJE', |
||
1358 | // non standard tags |
||
1359 | '_BRTM', |
||
1360 | '_DEG', |
||
1361 | '_DNA', |
||
1362 | '_EYEC', |
||
1363 | '_FNRL', |
||
1364 | '_HAIR', |
||
1365 | '_HEIG', |
||
1366 | '_HNM', |
||
1367 | '_HOL', |
||
1368 | '_INTE', |
||
1369 | '_MDCL', |
||
1370 | '_MEDC', |
||
1371 | '_MILI', |
||
1372 | '_MILT', |
||
1373 | '_NAME', |
||
1374 | '_NAMS', |
||
1375 | '_NLIV', |
||
1376 | '_NMAR', |
||
1377 | '_PRMN', |
||
1378 | '_TODO', |
||
1379 | '_UID', |
||
1380 | '_WEIG', |
||
1381 | '_YART', |
||
1382 | ]; |
||
1383 | break; |
||
1384 | |||
1385 | case Family::RECORD_TYPE: |
||
1386 | $tags = [ |
||
1387 | // Facts for families, left out HUSB, WIFE & CHIL links |
||
1388 | 'RESN', |
||
1389 | 'ANUL', |
||
1390 | 'CENS', |
||
1391 | 'DIV', |
||
1392 | 'DIVF', |
||
1393 | 'ENGA', |
||
1394 | 'MARB', |
||
1395 | 'MARC', |
||
1396 | 'MARR', |
||
1397 | 'MARL', |
||
1398 | 'MARS', |
||
1399 | 'RESI', |
||
1400 | 'EVEN', |
||
1401 | 'NCHI', |
||
1402 | 'SUBM', |
||
1403 | 'SLGS', |
||
1404 | 'REFN', |
||
1405 | 'RIN', |
||
1406 | 'CHAN', |
||
1407 | 'NOTE', |
||
1408 | 'SHARED_NOTE', |
||
1409 | 'SOUR', |
||
1410 | 'OBJE', |
||
1411 | // non standard tags |
||
1412 | '_NMR', |
||
1413 | 'MARR_CIVIL', |
||
1414 | 'MARR_RELIGIOUS', |
||
1415 | 'MARR_PARTNERS', |
||
1416 | 'MARR_UNKNOWN', |
||
1417 | '_COML', |
||
1418 | '_MBON', |
||
1419 | '_MARI', |
||
1420 | '_SEPR', |
||
1421 | '_TODO', |
||
1422 | ]; |
||
1423 | break; |
||
1424 | |||
1425 | case Source::RECORD_TYPE: |
||
1426 | $tags = [ |
||
1427 | // Facts for sources |
||
1428 | 'DATA', |
||
1429 | 'AUTH', |
||
1430 | 'TITL', |
||
1431 | 'ABBR', |
||
1432 | 'PUBL', |
||
1433 | 'TEXT', |
||
1434 | 'REPO', |
||
1435 | 'REFN', |
||
1436 | 'RIN', |
||
1437 | 'CHAN', |
||
1438 | 'NOTE', |
||
1439 | 'SHARED_NOTE', |
||
1440 | 'OBJE', |
||
1441 | 'RESN', |
||
1442 | ]; |
||
1443 | break; |
||
1444 | |||
1445 | case Repository::RECORD_TYPE: |
||
1446 | $tags = [ |
||
1447 | // Facts for repositories |
||
1448 | 'NAME', |
||
1449 | 'ADDR', |
||
1450 | 'PHON', |
||
1451 | 'EMAIL', |
||
1452 | 'FAX', |
||
1453 | 'WWW', |
||
1454 | 'NOTE', |
||
1455 | 'SHARED_NOTE', |
||
1456 | 'REFN', |
||
1457 | 'RIN', |
||
1458 | 'CHAN', |
||
1459 | 'RESN', |
||
1460 | ]; |
||
1461 | break; |
||
1462 | |||
1463 | case 'PLAC': |
||
1464 | $tags = [ |
||
1465 | // Facts for places |
||
1466 | 'FONE', |
||
1467 | 'ROMN', |
||
1468 | // non standard tags |
||
1469 | '_GOV', |
||
1470 | '_HEB', |
||
1471 | ]; |
||
1472 | break; |
||
1473 | |||
1474 | case 'NAME': |
||
1475 | $tags = [ |
||
1476 | // Facts subordinate to NAME |
||
1477 | 'FONE', |
||
1478 | 'ROMN', |
||
1479 | // non standard tags |
||
1480 | '_HEB', |
||
1481 | '_AKA', |
||
1482 | '_MARNM', |
||
1483 | ]; |
||
1484 | break; |
||
1485 | |||
1486 | default: |
||
1487 | $tags = []; |
||
1488 | break; |
||
1489 | } |
||
1490 | |||
1491 | $facts = []; |
||
1492 | foreach ($tags as $tag) { |
||
1493 | $facts[$tag] = self::getLabel($tag); |
||
1494 | } |
||
1495 | uasort($facts, '\Fisharebest\Webtrees\I18N::strcasecmp'); |
||
1496 | |||
1497 | return $facts; |
||
1498 | } |
||
1499 | |||
1500 | /** |
||
1501 | * Translate the value for 1 FILE/2 FORM/3 TYPE |
||
1502 | * |
||
1503 | * @param string $type |
||
1504 | * |
||
1505 | * @return string |
||
1506 | */ |
||
1507 | public static function getFileFormTypeValue(string $type): string |
||
1508 | { |
||
1509 | $element = Registry::elementFactory()->make('OBJE:FILE:FORM:TYPE'); |
||
1510 | |||
1511 | return $element->values()[$type] ?? $type; |
||
1512 | } |
||
1513 | |||
1514 | /** |
||
1515 | * A list of all possible values for 1 FILE/2 FORM/3 TYPE |
||
1516 | * |
||
1517 | * @return array<string> |
||
1518 | */ |
||
1519 | public static function getFileFormTypes(): array |
||
1520 | { |
||
1521 | $element = Registry::elementFactory()->make('OBJE:FILE:FORM:TYPE'); |
||
1522 | |||
1523 | return array_filter($element->values()); |
||
1524 | } |
||
1525 | |||
1526 | /** |
||
1527 | * Generate a value for a new _UID field. |
||
1528 | * Instead of RFC4122-compatible UUIDs, generate ones that |
||
1529 | * are compatible with PAF, Legacy, RootsMagic, etc. |
||
1530 | * In these, the string is upper-cased, dashes are removed, |
||
1531 | * and a two-byte checksum is added. |
||
1532 | * |
||
1533 | * @return string |
||
1534 | */ |
||
1535 | public static function createUid(): string |
||
1549 | } |
||
1550 | } |
||
1551 |
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.