Passed
Push — 1.7 ( 4a14f0...50e0f1 )
by
unknown
08:11
created
app/SurnameTradition/PortugueseSurnameTradition.php 1 patch
Switch Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -62,16 +62,16 @@
 block discarded – undo
62 62
 	public function newParentNames($child_name, $parent_sex) {
63 63
 		if (preg_match(self::REGEX_SURNS, $child_name, $match)) {
64 64
 			switch ($parent_sex) {
65
-			case 'M':
66
-				return array(
67
-					'NAME' => '// /' . $match['SURN1'] . '/',
68
-					'SURN' => $match['SURN1'],
69
-				);
70
-			case 'F':
71
-				return array(
72
-					'NAME' => '// /' . $match['SURN2'] . '/',
73
-					'SURN' => $match['SURN2'],
74
-				);
65
+				case 'M':
66
+					return array(
67
+						'NAME' => '// /' . $match['SURN1'] . '/',
68
+						'SURN' => $match['SURN1'],
69
+					);
70
+				case 'F':
71
+					return array(
72
+						'NAME' => '// /' . $match['SURN2'] . '/',
73
+						'SURN' => $match['SURN2'],
74
+					);
75 75
 			}
76 76
 		}
77 77
 
Please login to merge, or discard this patch.
app/SurnameTradition/IcelandicSurnameTradition.php 1 patch
Switch Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -43,14 +43,14 @@
 block discarded – undo
43 43
 	public function newChildNames($father_name, $mother_name, $child_sex) {
44 44
 		if (preg_match(self::REGEX_GIVN, $father_name, $father_match)) {
45 45
 			switch ($child_sex) {
46
-			case 'M':
47
-				return array(
48
-					'NAME' => $father_match['GIVN'] . 'sson',
49
-				);
50
-			case 'F':
51
-				return array(
52
-					'NAME' => $father_match['GIVN'] . 'sdottir',
53
-				);
46
+				case 'M':
47
+					return array(
48
+						'NAME' => $father_match['GIVN'] . 'sson',
49
+					);
50
+				case 'F':
51
+					return array(
52
+						'NAME' => $father_match['GIVN'] . 'sdottir',
53
+					);
54 54
 			}
55 55
 		}
56 56
 
Please login to merge, or discard this patch.
app/SurnameTradition/SpanishSurnameTradition.php 1 patch
Switch Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -62,16 +62,16 @@
 block discarded – undo
62 62
 	public function newParentNames($child_name, $parent_sex) {
63 63
 		if (preg_match(self::REGEX_SURNS, $child_name, $match)) {
64 64
 			switch ($parent_sex) {
65
-			case 'M':
66
-				return array(
67
-					'NAME' => '/' . $match['SURN1'] . '/ //',
68
-					'SURN' => $match['SURN1'],
69
-				);
70
-			case 'F':
71
-				return array(
72
-					'NAME' => '/' . $match['SURN2'] . '/ //',
73
-					'SURN' => $match['SURN2'],
74
-				);
65
+				case 'M':
66
+					return array(
67
+						'NAME' => '/' . $match['SURN1'] . '/ //',
68
+						'SURN' => $match['SURN1'],
69
+					);
70
+				case 'F':
71
+					return array(
72
+						'NAME' => '/' . $match['SURN2'] . '/ //',
73
+						'SURN' => $match['SURN2'],
74
+					);
75 75
 			}
76 76
 		}
77 77
 
Please login to merge, or discard this patch.
app/GedcomTag.php 1 patch
Switch Indentation   +1766 added lines, -1766 removed lines patch added patch discarded remove patch
@@ -112,1689 +112,1689 @@  discard block
 block discarded – undo
112 112
 		}
113 113
 
114 114
 		switch ($tag) {
115
-		case 'ABBR':
116
-			return
117
-				/* I18N: gedcom tag ABBR */
118
-				I18N::translate('Abbreviation');
119
-		case 'ADDR':
120
-			return
121
-				/* I18N: gedcom tag ADDR */
122
-				I18N::translate('Address');
123
-		case 'ADR1':
124
-			return I18N::translate('Address line 1');
125
-		case 'ADR2':
126
-			return I18N::translate('Address line 2');
127
-		case 'ADOP':
128
-			return
129
-				/* I18N: gedcom tag ADOP */
130
-				I18N::translate('Adoption');
131
-		case 'ADOP:DATE':
132
-			return I18N::translate('Date of adoption');
133
-		case 'ADOP:PLAC':
134
-			return I18N::translate('Place of adoption');
135
-		case 'AFN':
136
-			return
137
-				/* I18N: gedcom tag AFN */
138
-				I18N::translate('Ancestral file number');
139
-		case 'AGE':
140
-			return
141
-				/* I18N: gedcom tag AGE */
142
-				I18N::translate('Age');
143
-		case 'AGNC':
144
-			return
145
-				/* I18N: gedcom tag AGNC */
146
-				I18N::translate('Agency');
147
-		case 'ALIA':
148
-			return
149
-				/* I18N: gedcom tag ALIA */
150
-				I18N::translate('Alias');
151
-		case 'ANCE':
152
-			return
153
-				/* I18N: gedcom tag ANCE */
154
-				I18N::translate('Generations of ancestors');
155
-		case 'ANCI':
156
-			return
157
-				/* I18N: gedcom tag ANCI */
158
-				I18N::translate('Ancestors interest');
159
-		case 'ANUL':
160
-			return
161
-				/* I18N: gedcom tag ANUL */
162
-				I18N::translate('Annulment');
163
-		case 'ASSO':
164
-			return
165
-				/* I18N: gedcom tag ASSO */
166
-				I18N::translate('Associate'); /* see also _ASSO */
167
-		case 'AUTH':
168
-			return
169
-				/* I18N: gedcom tag AUTH */
170
-				I18N::translate('Author');
171
-		case 'BAPL':
172
-			return
173
-				/* I18N: gedcom tag BAPL. LDS = Church of Latter Day Saints. */
174
-				I18N::translate('LDS baptism');
175
-		case 'BAPL:DATE':
176
-			return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Date of LDS baptism');
177
-		case 'BAPL:PLAC':
178
-			return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Place of LDS baptism');
179
-		case 'BAPM':
180
-			return
181
-				/* I18N: gedcom tag BAPM */
182
-				I18N::translate('Baptism');
183
-		case 'BAPM:DATE':
184
-			return I18N::translate('Date of baptism');
185
-		case 'BAPM:PLAC':
186
-			return I18N::translate('Place of baptism');
187
-		case 'BARM':
188
-			return
189
-				/* I18N: gedcom tag BARM */
190
-				I18N::translate('Bar mitzvah');
191
-		case 'BARM:DATE':
192
-			return I18N::translate('Date of bar mitzvah');
193
-		case 'BARM:PLAC':
194
-			return I18N::translate('Place of bar mitzvah');
195
-		case 'BASM':
196
-			return
197
-				/* I18N: gedcom tag BASM */
198
-				I18N::translate('Bat mitzvah');
199
-		case 'BASM:DATE':
200
-			return I18N::translate('Date of bat mitzvah');
201
-		case 'BASM:PLAC':
202
-			return I18N::translate('Place of bat mitzvah');
203
-		case 'BIRT':
204
-			return
205
-				/* I18N: gedcom tag BIRT */
206
-				I18N::translate('Birth');
207
-		case 'BIRT:DATE':
208
-			return I18N::translate('Date of birth');
209
-		case 'BIRT:PLAC':
210
-			return I18N::translate('Place of birth');
211
-		case 'BLES':
212
-			return
213
-				/* I18N: gedcom tag BLES */
214
-				I18N::translate('Blessing');
215
-		case 'BLES:DATE':
216
-			return I18N::translate('Date of blessing');
217
-		case 'BLES:PLAC':
218
-			return I18N::translate('Place of blessing');
219
-		case 'BLOB':
220
-			return
221
-				/* I18N: gedcom tag BLOB */
222
-				I18N::translate('Binary data object');
223
-		case 'BURI':
224
-			return
225
-				/* I18N: gedcom tag BURI */
226
-				I18N::translate('Burial');
227
-		case 'BURI:DATE':
228
-			return I18N::translate('Date of burial');
229
-		case 'BURI:PLAC':
230
-			return I18N::translate('Place of burial');
231
-		case 'CALN':
232
-			return
233
-				/* I18N: gedcom tag CALN */
234
-				I18N::translate('Call number');
235
-		case 'CAST':
236
-			return
237
-				/* I18N: gedcom tag CAST */
238
-				I18N::translate('Caste');
239
-		case 'CAUS':
240
-			return
241
-				/* I18N: gedcom tag CAUS */
242
-				I18N::translate('Cause');
243
-		case 'CEME':
244
-			return
245
-				/* I18N: gedcom tag CEME */
246
-				I18N::translate('Cemetery');
247
-		case 'CENS':
248
-			return
249
-				/* I18N: gedcom tag CENS */
250
-				I18N::translate('Census');
251
-		case 'CENS:DATE':
252
-			return I18N::translate('Census date');
253
-		case 'CENS:PLAC':
254
-			return I18N::translate('Census place');
255
-		case 'CHAN':
256
-			return
257
-				/* I18N: gedcom tag CHAN */
258
-				I18N::translate('Last change');
259
-		case 'CHAN:DATE':
260
-			return
261
-				/* I18N: gedcom tag CHAN:DATE */
262
-				I18N::translate('Date of last change');
263
-		case 'CHAN:_WT_USER':
264
-			return
265
-				/* I18N: gedcom tag CHAN:_WT_USER */
266
-				I18N::translate('Author of last change');
267
-		case 'CHAR':
268
-			return
269
-				/* I18N: gedcom tag CHAR */
270
-				I18N::translate('Character set');
271
-		case 'CHIL':
272
-			return
273
-				/* I18N: gedcom tag CHIL */
274
-				I18N::translate('Child');
275
-		case 'CHR':
276
-			return
277
-				/* I18N: gedcom tag CHR */
278
-				I18N::translate('Christening');
279
-		case 'CHR:DATE':
280
-			return I18N::translate('Date of christening');
281
-		case 'CHR:PLAC':
282
-			return I18N::translate('Place of christening');
283
-		case 'CHRA':
284
-			return
285
-				/* I18N: gedcom tag CHRA */
286
-				I18N::translate('Adult christening');
287
-		case 'CITN':
288
-			return
289
-				/* I18N: gedcom tag CITN */
290
-				I18N::translate('Citizenship');
291
-		case 'CITY':
292
-			return
293
-				/* I18N: gedcom tag CITY */
294
-				I18N::translate('City');
295
-		case 'COMM':
296
-			return
297
-				/* I18N: gedcom tag COMM */
298
-				I18N::translate('Comment');
299
-		case 'CONC':
300
-			return
301
-				/* I18N: gedcom tag CONC */
302
-				I18N::translate('Concatenation');
303
-		case 'CONT':
304
-			return
305
-				/* I18N: gedcom tag CONT */
306
-				I18N::translate('Continued');
307
-		case 'CONF':
308
-			return
309
-				/* I18N: gedcom tag CONF */
310
-				I18N::translate('Confirmation');
311
-		case 'CONF:DATE':
312
-			return I18N::translate('Date of confirmation');
313
-		case 'CONF:PLAC':
314
-			return I18N::translate('Place of confirmation');
315
-		case 'CONL':
316
-			return
317
-				/* I18N: gedcom tag CONL. LDS = Church of Latter Day Saints. */
318
-				I18N::translate('LDS confirmation');
319
-		case 'COPR':
320
-			return
321
-				/* I18N: gedcom tag COPR */
322
-				I18N::translate('Copyright');
323
-		case 'CORP':
324
-			return
325
-				/* I18N: gedcom tag CORP */
326
-				I18N::translate('Corporation');
327
-		case 'CREM':
328
-			return
329
-				/* I18N: gedcom tag CREM */
330
-				I18N::translate('Cremation');
331
-		case 'CREM:DATE':
332
-			return I18N::translate('Date of cremation');
333
-		case 'CREM:PLAC':
334
-			return I18N::translate('Place of cremation');
335
-		case 'CTRY':
336
-			return
337
-				/* I18N: gedcom tag CTRY */
338
-				I18N::translate('Country');
339
-		case 'DATA':
340
-			return
341
-				/* I18N: gedcom tag DATA */
342
-				I18N::translate('Data');
343
-		case 'DATA:DATE':
344
-			return I18N::translate('Date of entry in original source');
345
-		case 'DATE':
346
-			return
347
-				/* I18N: gedcom tag DATE */
348
-				I18N::translate('Date');
349
-		case 'DEAT':
350
-			return
351
-				/* I18N: gedcom tag DEAT */
352
-				I18N::translate('Death');
353
-		case 'DEAT:CAUS':
354
-			return I18N::translate('Cause of death');
355
-		case 'DEAT:DATE':
356
-			return I18N::translate('Date of death');
357
-		case 'DEAT:PLAC':
358
-			return I18N::translate('Place of death');
359
-		case 'DESC':
360
-			return
361
-				/* I18N: gedcom tag DESC */
362
-				I18N::translate('Descendants');
363
-		case 'DESI':
364
-			return
365
-				/* I18N: gedcom tag DESI */
366
-				I18N::translate('Descendants interest');
367
-		case 'DEST':
368
-			return
369
-				/* I18N: gedcom tag DEST */
370
-				I18N::translate('Destination');
371
-		case 'DIV':
372
-			return
373
-				/* I18N: gedcom tag DIV */
374
-				I18N::translate('Divorce');
375
-		case 'DIVF':
376
-			return
377
-				/* I18N: gedcom tag DIVF */
378
-				I18N::translate('Divorce filed');
379
-		case 'DSCR':
380
-			return
381
-				/* I18N: gedcom tag DSCR */
382
-				I18N::translate('Description');
383
-		case 'EDUC':
384
-			return
385
-				/* I18N: gedcom tag EDUC */
386
-				I18N::translate('Education');
387
-		case 'EDUC:AGNC':
388
-			return I18N::translate('School or college');
389
-		case 'EMAI':
390
-			return
391
-				/* I18N: gedcom tag EMAI */
392
-				I18N::translate('Email address');
393
-		case 'EMAIL':
394
-			return
395
-				/* I18N: gedcom tag EMAIL */
396
-				I18N::translate('Email address');
397
-		case 'EMAL':
398
-			return
399
-				/* I18N: gedcom tag EMAL */
400
-				I18N::translate('Email address');
401
-		case 'EMIG':
402
-			return
403
-				/* I18N: gedcom tag EMIG */
404
-				I18N::translate('Emigration');
405
-		case 'EMIG:DATE':
406
-			return I18N::translate('Date of emigration');
407
-		case 'EMIG:PLAC':
408
-			return I18N::translate('Place of emigration');
409
-		case 'ENDL':
410
-			return
411
-				/* I18N: gedcom tag ENDL. LDS = Church of Latter Day Saints. */
412
-				I18N::translate('LDS endowment');
413
-		case 'ENDL:DATE':
414
-			return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Date of LDS endowment');
415
-		case 'ENDL:PLAC':
416
-			return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Place of LDS endowment');
417
-		case 'ENGA':
418
-			return
419
-				/* I18N: gedcom tag ENGA */
420
-				I18N::translate('Engagement');
421
-		case 'ENGA:DATE':
422
-			return I18N::translate('Date of engagement');
423
-		case 'ENGA:PLAC':
424
-			return I18N::translate('Place of engagement');
425
-		case 'EVEN':
426
-			return
427
-				/* I18N: gedcom tag EVEN */
428
-				I18N::translate('Event');
429
-		case 'EVEN:DATE':
430
-			return I18N::translate('Date of event');
431
-		case 'EVEN:PLAC':
432
-			return I18N::translate('Place of event');
433
-		case 'EVEN:TYPE':
434
-			return I18N::translate('Type of event');
435
-		case 'FACT':
436
-			return
437
-				/* I18N: gedcom tag FACT */
438
-				I18N::translate('Fact');
439
-		case 'FACT:TYPE':
440
-			return I18N::translate('Type of fact');
441
-		case 'FAM':
442
-			return
443
-				/* I18N: gedcom tag FAM */
444
-				I18N::translate('Family');
445
-		case 'FAMC':
446
-			return
447
-				/* I18N: gedcom tag FAMC */
448
-				I18N::translate('Family as a child');
449
-		case 'FAMF':
450
-			return
451
-				/* I18N: gedcom tag FAMF */
452
-				I18N::translate('Family file');
453
-		case 'FAMS':
454
-			return
455
-				/* I18N: gedcom tag FAMS */
456
-				I18N::translate('Family as a spouse');
457
-		case 'FAMS:CENS:DATE':
458
-			return I18N::translate('Spouse census date');
459
-		case 'FAMS:CENS:PLAC':
460
-			return I18N::translate('Spouse census place');
461
-		case 'FAMS:DIV:DATE':
462
-			return I18N::translate('Date of divorce');
463
-		case 'FAMS:MARR:DATE':
464
-			return I18N::translate('Date of marriage');
465
-		case 'FAMS:MARR:PLAC':
466
-			return I18N::translate('Place of marriage');
467
-		case 'FAMS:NOTE':
468
-			return I18N::translate('Spouse note');
469
-		case 'FAMS:SLGS:DATE':
470
-			return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Date of LDS spouse sealing');
471
-		case 'FAMS:SLGS:PLAC':
472
-			return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Place of LDS spouse sealing');
473
-		case 'FAX':
474
-			return
475
-				/* I18N: gedcom tag FAX */
476
-				I18N::translate('Fax');
477
-		case 'FCOM':
478
-			return
479
-				/* I18N: gedcom tag FCOM */
480
-				I18N::translate('First communion');
481
-		case 'FCOM:DATE':
482
-			return I18N::translate('Date of first communion');
483
-		case 'FCOM:PLAC':
484
-			return I18N::translate('Place of first communion');
485
-		case 'FILE':
486
-			return
487
-				/* I18N: gedcom tag FILE */
488
-				I18N::translate('Filename');
489
-		case 'FONE':
490
-			return
491
-				/* I18N: gedcom tag FONE */
492
-				I18N::translate('Phonetic');
493
-		case 'FORM':
494
-			return
495
-				/* I18N: gedcom tag FORM */
496
-				I18N::translate('Format');
497
-		case 'GEDC':
498
-			return
499
-				/* I18N: gedcom tag GEDC */
500
-				I18N::translate('GEDCOM file');
501
-		case 'GIVN':
502
-			return
503
-				/* I18N: gedcom tag GIVN */
504
-				I18N::translate('Given names');
505
-		case 'GRAD':
506
-			return
507
-				/* I18N: gedcom tag GRAD */
508
-				I18N::translate('Graduation');
509
-		case 'HEAD':
510
-			return
511
-				/* I18N: gedcom tag HEAD */
512
-				I18N::translate('Header');
513
-		case 'HUSB':
514
-			return
515
-				/* I18N: gedcom tag HUSB */
516
-				I18N::translate('Husband');
517
-		case 'IDNO':
518
-			return
519
-				/* I18N: gedcom tag IDNO */
520
-				I18N::translate('Identification number');
521
-		case 'IMMI':
522
-			return
523
-				/* I18N: gedcom tag IMMI */
524
-				I18N::translate('Immigration');
525
-		case 'IMMI:DATE':
526
-			return I18N::translate('Date of immigration');
527
-		case 'IMMI:PLAC':
528
-			return I18N::translate('Place of immigration');
529
-		case 'INDI':
530
-			return
531
-				/* I18N: gedcom tag INDI */
532
-				I18N::translate('Individual');
533
-		case 'INFL':
534
-			return
535
-				/* I18N: gedcom tag INFL */
536
-				I18N::translate('Infant');
537
-		case 'LANG':
538
-			return
539
-				/* I18N: gedcom tag LANG */
540
-				I18N::translate('Language');
541
-		case 'LATI':
542
-			return
543
-				/* I18N: gedcom tag LATI */
544
-				I18N::translate('Latitude');
545
-		case 'LEGA':
546
-			return
547
-				/* I18N: gedcom tag LEGA */
548
-				I18N::translate('Legatee');
549
-		case 'LONG':
550
-			return
551
-				/* I18N: gedcom tag LONG */
552
-				I18N::translate('Longitude');
553
-		case 'MAP':
554
-			return
555
-				/* I18N: gedcom tag MAP */
556
-				I18N::translate('Map');
557
-		case 'MARB':
558
-			return
559
-				/* I18N: gedcom tag MARB */
560
-				I18N::translate('Marriage banns');
561
-		case 'MARB:DATE':
562
-			return I18N::translate('Date of marriage banns');
563
-		case 'MARB:PLAC':
564
-			return I18N::translate('Place of marriage banns');
565
-		case 'MARC':
566
-			return
567
-				/* I18N: gedcom tag MARC */
568
-				I18N::translate('Marriage contract');
569
-		case 'MARL':
570
-			return
571
-				/* I18N: gedcom tag MARL */
572
-				I18N::translate('Marriage license');
573
-		case 'MARR':
574
-			return
575
-				/* I18N: gedcom tag MARR */
576
-				I18N::translate('Marriage');
577
-		case 'MARR:DATE':
578
-			return I18N::translate('Date of marriage');
579
-		case 'MARR:PLAC':
580
-			return I18N::translate('Place of marriage');
581
-		case 'MARR_CIVIL':
582
-			return I18N::translate('Civil marriage');
583
-		case 'MARR_PARTNERS':
584
-			return I18N::translate('Registered partnership');
585
-		case 'MARR_RELIGIOUS':
586
-			return I18N::translate('Religious marriage');
587
-		case 'MARR_UNKNOWN':
588
-			return I18N::translate('Marriage type unknown');
589
-		case 'MARS':
590
-			return
591
-				/* I18N: gedcom tag MARS */
592
-				I18N::translate('Marriage settlement');
593
-		case 'MEDI':
594
-			return
595
-				/* I18N: gedcom tag MEDI */
596
-				I18N::translate('Media type');
597
-		case 'NAME':
598
-			if ($record instanceof Repository) {
599
-				return
600
-					/* I18N: gedcom tag REPO:NAME */
601
-					I18N::translateContext('Repository', 'Name');
602
-			} else {
603
-				return
604
-					/* I18N: gedcom tag NAME */
605
-					I18N::translate('Name');
606
-			}
607
-		case 'NAME:FONE':
608
-			return I18N::translate('Phonetic name');
609
-		case 'NAME:_HEB':
610
-			return I18N::translate('Name in Hebrew');
611
-		case 'NATI':
612
-			return
613
-				/* I18N: gedcom tag NATI */
614
-				I18N::translate('Nationality');
615
-		case 'NATU':
616
-			return
617
-				/* I18N: gedcom tag NATU */
618
-				I18N::translate('Naturalization');
619
-		case 'NATU:DATE':
620
-			return I18N::translate('Date of naturalization');
621
-		case 'NATU:PLAC':
622
-			return I18N::translate('Place of naturalization');
623
-		case 'NCHI':
624
-			return
625
-				/* I18N: gedcom tag NCHI */
626
-				I18N::translate('Number of children');
627
-		case 'NICK':
628
-			return
629
-				/* I18N: gedcom tag NICK */
630
-				I18N::translate('Nickname');
631
-		case 'NMR':
632
-			return
633
-				/* I18N: gedcom tag NMR */
634
-				I18N::translate('Number of marriages');
635
-		case 'NOTE':
636
-			return
637
-				/* I18N: gedcom tag NOTE */
638
-				I18N::translate('Note');
639
-		case 'NPFX':
640
-			return
641
-				/* I18N: gedcom tag NPFX */
642
-				I18N::translate('Name prefix');
643
-		case 'NSFX':
644
-			return
645
-				/* I18N: gedcom tag NSFX */
646
-				I18N::translate('Name suffix');
647
-		case 'OBJE':
648
-			return
649
-				/* I18N: gedcom tag OBJE */
650
-				I18N::translate('Media object');
651
-		case 'OCCU':
652
-			return
653
-				/* I18N: gedcom tag OCCU */
654
-				I18N::translate('Occupation');
655
-		case 'OCCU:AGNC':
656
-			return I18N::translate('Employer');
657
-		case 'ORDI':
658
-			return
659
-				/* I18N: gedcom tag ORDI */
660
-				I18N::translate('Ordinance');
661
-		case 'ORDN':
662
-			return
663
-				/* I18N: gedcom tag ORDN */
664
-				I18N::translate('Ordination');
665
-		case 'ORDN:AGNC':
666
-			return I18N::translate('Religious institution');
667
-		case 'ORDN:DATE':
668
-			return I18N::translate('Date of ordination');
669
-		case 'ORDN:PLAC':
670
-			return I18N::translate('Place of ordination');
671
-		case 'PAGE':
672
-			return
673
-				/* I18N: gedcom tag PAGE */
674
-				I18N::translate('Citation details');
675
-		case 'PEDI':
676
-			return
677
-				/* I18N: gedcom tag PEDI */
678
-				I18N::translate('Relationship to parents');
679
-		case 'PHON':
680
-			return
681
-				/* I18N: gedcom tag PHON */
682
-				I18N::translate('Phone');
683
-		case 'PLAC':
684
-			return
685
-				/* I18N: gedcom tag PLAC */
686
-				I18N::translate('Place');
687
-		case 'PLAC:FONE':
688
-			return I18N::translate('Phonetic place');
689
-		case 'PLAC:ROMN':
690
-			return I18N::translate('Romanized place');
691
-		case 'PLAC:_HEB':
692
-			return I18N::translate('Place in Hebrew');
693
-		case 'POST':
694
-			return
695
-				/* I18N: gedcom tag POST */
696
-				I18N::translate('Postal code');
697
-		case 'PROB':
698
-			return
699
-				/* I18N: gedcom tag PROB */
700
-				I18N::translate('Probate');
701
-		case 'PROP':
702
-			return
703
-				/* I18N: gedcom tag PROP */
704
-				I18N::translate('Property');
705
-		case 'PUBL':
706
-			return
707
-				/* I18N: gedcom tag PUBL */
708
-				I18N::translate('Publication');
709
-		case 'QUAY':
710
-			return
711
-				/* I18N: gedcom tag QUAY */
712
-				I18N::translate('Quality of data');
713
-		case 'REFN':
714
-			return
715
-				/* I18N: gedcom tag REFN */
716
-				I18N::translate('Reference number');
717
-		case 'RELA':
718
-			return
719
-				/* I18N: gedcom tag RELA */
720
-				I18N::translate('Relationship');
721
-		case 'RELI':
722
-			return
723
-				/* I18N: gedcom tag RELI */
724
-				I18N::translate('Religion');
725
-		case 'REPO':
726
-			return
727
-				/* I18N: gedcom tag REPO */
728
-				I18N::translate('Repository');
729
-		case 'RESI':
730
-			return
731
-				/* I18N: gedcom tag RESI */
732
-				I18N::translate('Residence');
733
-		case 'RESI:DATE':
734
-			return I18N::translate('Date of residence');
735
-		case 'RESI:PLAC':
736
-			return I18N::translate('Place of residence');
737
-		case 'RESN':
738
-			return
739
-				/* I18N: gedcom tag RESN */
740
-				I18N::translate('Restriction');
741
-		case 'RETI':
742
-			return
743
-				/* I18N: gedcom tag RETI */
744
-				I18N::translate('Retirement');
745
-		case 'RETI:AGNC':
746
-			return I18N::translate('Employer');
747
-		case 'RFN':
748
-			return
749
-				/* I18N: gedcom tag RFN */
750
-				I18N::translate('Record file number');
751
-		case 'RIN':
752
-			return
753
-				/* I18N: gedcom tag RIN */
754
-				I18N::translate('Record ID number');
755
-		case 'ROLE':
756
-			return
757
-				/* I18N: gedcom tag ROLE */
758
-				I18N::translate('Role');
759
-		case 'ROMN':
760
-			return
761
-				/* I18N: gedcom tag ROMN */
762
-				I18N::translate('Romanized');
763
-		case 'SERV':
764
-			return
765
-				/* I18N: gedcom tag SERV */
766
-				I18N::translate('Remote server');
767
-		case 'SEX':
768
-			return
769
-				/* I18N: gedcom tag SEX */
770
-				I18N::translate('Gender');
771
-		case 'SHARED_NOTE':
772
-			return I18N::translate('Shared note');
773
-		case 'SLGC':
774
-			return
775
-				/* I18N: gedcom tag SLGC. LDS = Church of Latter Day Saints. */
776
-				I18N::translate('LDS child sealing');
777
-		case 'SLGC:DATE':
778
-			return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Date of LDS child sealing');
779
-		case 'SLGC:PLAC':
780
-			return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Place of LDS child sealing');
781
-		case 'SLGS':
782
-			return
783
-				/* I18N: gedcom tag SLGS. LDS = Church of Latter Day Saints. */
784
-				I18N::translate('LDS spouse sealing');
785
-		case 'SOUR':
786
-			return
787
-				/* I18N: gedcom tag SOUR */
788
-				I18N::translate('Source');
789
-		case 'SPFX':
790
-			return
791
-				/* I18N: gedcom tag SPFX */
792
-				I18N::translate('Surname prefix');
793
-		case 'SSN':
794
-			return
795
-				/* I18N: gedcom tag SSN */
796
-				I18N::translate('Social security number');
797
-		case 'STAE':
798
-			return
799
-				/* I18N: gedcom tag STAE */
800
-				I18N::translate('State');
801
-		case 'STAT':
802
-			return
803
-				/* I18N: gedcom tag STAT */
804
-				I18N::translate('Status');
805
-		case 'STAT:DATE':
806
-			return I18N::translate('Status change date');
807
-		case 'SUBM':
808
-			return
809
-				/* I18N: gedcom tag SUBM */
810
-				I18N::translate('Submitter');
811
-		case 'SUBN':
812
-			return
813
-				/* I18N: gedcom tag SUBN */
814
-				I18N::translate('Submission');
815
-		case 'SURN':
816
-			return
817
-				/* I18N: gedcom tag SURN */
818
-				I18N::translate('Surname');
819
-		case 'TEMP':
820
-			return
821
-				/* I18N: gedcom tag TEMP */
822
-				I18N::translate('Temple');
823
-		case 'TEXT':
824
-			return
825
-				/* I18N: gedcom tag TEXT */
826
-				I18N::translate('Text');
827
-		case 'TIME':
828
-			return
829
-				/* I18N: gedcom tag TIME */
830
-				I18N::translate('Time');
831
-		case 'TITL':
832
-			return
833
-				/* I18N: gedcom tag TITL */
834
-				I18N::translate('Title');
835
-		case 'TITL:FONE':
836
-			return I18N::translate('Phonetic title');
837
-		case 'TITL:ROMN':
838
-			return I18N::translate('Romanized title');
839
-		case 'TITL:_HEB':
840
-			return I18N::translate('Title in Hebrew');
841
-		case 'TRLR':
842
-			return
843
-				/* I18N: gedcom tag TRLR */
844
-				I18N::translate('Trailer');
845
-		case 'TYPE':
846
-			return
847
-				/* I18N: gedcom tag TYPE */
848
-				I18N::translate('Type');
849
-		case 'URL':
850
-			return
851
-				/* I18N: gedcom tag URL (A web address / URL) */
852
-				I18N::translate('URL');
853
-		case 'VERS':
854
-			return
855
-				/* I18N: gedcom tag VERS */
856
-				I18N::translate('Version');
857
-		case 'WIFE':
858
-			return
859
-				/* I18N: gedcom tag WIFE */
860
-				I18N::translate('Wife');
861
-		case 'WILL':
862
-			return
863
-				/* I18N: gedcom tag WILL */
864
-				I18N::translate('Will');
865
-		case 'WWW':
866
-			return
867
-				/* I18N: gedcom tag WWW (A web address / URL) */
868
-				I18N::translate('URL');
869
-		case '_ADOP_CHIL':
870
-			switch ($sex) {
871
-			case 'M':
872
-				return I18N::translate('Adoption of a son');
873
-			case 'F':
874
-				return I18N::translate('Adoption of a daughter');
875
-			default:
876
-				return I18N::translate('Adoption of a child');
877
-			}
878
-		case '_ADOP_GCHI':
879
-			switch ($sex) {
880
-			case 'M':
881
-				return I18N::translate('Adoption of a grandson');
882
-			case 'F':
883
-				return I18N::translate('Adoption of a granddaughter');
884
-			default:
885
-				return I18N::translate('Adoption of a grandchild');
886
-			}
887
-		case '_ADOP_GCH1':
888
-			switch ($sex) {
889
-			case 'M':
890
-				return I18N::translateContext('daughter’s son', 'Adoption of a grandson');
891
-			case 'F':
892
-				return I18N::translateContext('daughter’s daughter', 'Adoption of a granddaughter');
893
-			default:
894
-				return I18N::translate('Adoption of a grandchild');
895
-			}
896
-		case '_ADOP_GCH2':
897
-			switch ($sex) {
898
-			case 'M':
899
-				return I18N::translateContext('son’s son', 'Adoption of a grandson');
900
-			case 'F':
901
-				return I18N::translateContext('son’s daughter', 'Adoption of a granddaughter');
902
-			default:
903
-				return I18N::translate('Adoption of a grandchild');
904
-			}
905
-		case '_ADOP_HSIB':
906
-			switch ($sex) {
907
-			case 'M':
908
-				return I18N::translate('Adoption of a half-brother');
909
-			case 'F':
910
-				return I18N::translate('Adoption of a half-sister');
911
-			default:
912
-				return I18N::translate('Adoption of a half-sibling');
913
-			}
914
-		case '_ADOP_SIBL':
915
-			switch ($sex) {
916
-			case 'M':
917
-				return I18N::translate('Adoption of a brother');
918
-			case 'F':
919
-				return I18N::translate('Adoption of a sister');
920
-			default:
921
-				return I18N::translate('Adoption of a sibling');
922
-			}
923
-		case '_ADPF':
924
-			switch ($sex) {
925
-			case 'M':
926
-				return
927
-					/* I18N: gedcom tag _ADPF */
928
-					I18N::translateContext('MALE', 'Adopted by father');
929
-			case 'F':
930
-				return
931
-					/* I18N: gedcom tag _ADPF */
932
-					I18N::translateContext('FEMALE', 'Adopted by father');
933
-			default:
115
+			case 'ABBR':
934 116
 				return
935
-					/* I18N: gedcom tag _ADPF */
936
-					I18N::translate('Adopted by father');
937
-			}
938
-		case '_ADPM':
939
-			switch ($sex) {
940
-			case 'M':
117
+					/* I18N: gedcom tag ABBR */
118
+					I18N::translate('Abbreviation');
119
+			case 'ADDR':
941 120
 				return
942
-					/* I18N: gedcom tag _ADPM */
943
-					I18N::translateContext('MALE', 'Adopted by mother');
944
-			case 'F':
121
+					/* I18N: gedcom tag ADDR */
122
+					I18N::translate('Address');
123
+			case 'ADR1':
124
+				return I18N::translate('Address line 1');
125
+			case 'ADR2':
126
+				return I18N::translate('Address line 2');
127
+			case 'ADOP':
945 128
 				return
946
-					/* I18N: gedcom tag _ADPM */
947
-					I18N::translateContext('FEMALE', 'Adopted by mother');
948
-			default:
129
+					/* I18N: gedcom tag ADOP */
130
+					I18N::translate('Adoption');
131
+			case 'ADOP:DATE':
132
+				return I18N::translate('Date of adoption');
133
+			case 'ADOP:PLAC':
134
+				return I18N::translate('Place of adoption');
135
+			case 'AFN':
949 136
 				return
950
-					/* I18N: gedcom tag _ADPM */
951
-					I18N::translate('Adopted by mother');
952
-			}
953
-		case '_AKA':
954
-		case '_AKAN':
955
-			switch ($sex) {
956
-			case 'M':
137
+					/* I18N: gedcom tag AFN */
138
+					I18N::translate('Ancestral file number');
139
+			case 'AGE':
957 140
 				return
958
-					/* I18N: gedcom tag _AKA */
959
-					I18N::translateContext('MALE', 'Also known as');
960
-			case 'F':
141
+					/* I18N: gedcom tag AGE */
142
+					I18N::translate('Age');
143
+			case 'AGNC':
961 144
 				return
962
-					/* I18N: gedcom tag _AKA */
963
-					I18N::translateContext('FEMALE', 'Also known as');
964
-			default:
145
+					/* I18N: gedcom tag AGNC */
146
+					I18N::translate('Agency');
147
+			case 'ALIA':
965 148
 				return
966
-					/* I18N: gedcom tag _AKA */
967
-					I18N::translate('Also known as');
968
-			}
969
-		case '_ASSO':
970
-			return
971
-				/* I18N: gedcom tag _ASSO */
972
-				I18N::translate('Associate'); /* see also ASSO */
973
-		case '_BAPM_CHIL':
974
-			switch ($sex) {
975
-			case 'M':
976
-				return I18N::translate('Baptism of a son');
977
-			case 'F':
978
-				return I18N::translate('Baptism of a daughter');
979
-			default:
980
-				return I18N::translate('Baptism of a child');
981
-			}
982
-		case '_BAPM_GCHI':
983
-			switch ($sex) {
984
-			case 'M':
985
-				return I18N::translate('Baptism of a grandson');
986
-			case 'F':
987
-				return I18N::translate('Baptism of a granddaughter');
988
-			default:
989
-				return I18N::translate('Baptism of a grandchild');
990
-			}
991
-		case '_BAPM_GCH1':
992
-			switch ($sex) {
993
-			case 'M':
994
-				return I18N::translateContext('daughter’s son', 'Baptism of a grandson');
995
-			case 'F':
996
-				return I18N::translateContext('daughter’s daughter', 'Baptism of a granddaughter');
997
-			default:
998
-				return I18N::translate('Baptism of a grandchild');
999
-			}
1000
-		case '_BAPM_GCH2':
1001
-			switch ($sex) {
1002
-			case 'M':
1003
-				return I18N::translateContext('son’s son', 'Baptism of a grandson');
1004
-			case 'F':
1005
-				return I18N::translateContext('son’s daughter', 'Baptism of a granddaughter');
1006
-			default:
1007
-				return I18N::translate('Baptism of a grandchild');
1008
-			}
1009
-		case '_BAPM_HSIB':
1010
-			switch ($sex) {
1011
-			case 'M':
1012
-				return I18N::translate('Baptism of a half-brother');
1013
-			case 'F':
1014
-				return I18N::translate('Baptism of a half-sister');
1015
-			default:
1016
-				return I18N::translate('Baptism of a half-sibling');
1017
-			}
1018
-		case '_BAPM_SIBL':
1019
-			switch ($sex) {
1020
-			case 'M':
1021
-				return I18N::translate('Baptism of a brother');
1022
-			case 'F':
1023
-				return I18N::translate('Baptism of a sister');
1024
-			default:
1025
-				return I18N::translate('Baptism of a sibling');
1026
-			}
1027
-		case '_BIBL':
1028
-			return
1029
-				/* I18N: gedcom tag _BIBL */
1030
-				I18N::translate('Bibliography');
1031
-		case '_BIRT_CHIL':
1032
-			switch ($sex) {
1033
-			case 'M':
1034
-				return I18N::translate('Birth of a son');
1035
-			case 'F':
1036
-				return I18N::translate('Birth of a daughter');
1037
-			default:
1038
-				return I18N::translate('Birth of a child');
1039
-			}
1040
-		case '_BIRT_GCHI':
1041
-			switch ($sex) {
1042
-			case 'M':
1043
-				return I18N::translate('Birth of a grandson');
1044
-			case 'F':
1045
-				return I18N::translate('Birth of a granddaughter');
1046
-			default:
1047
-				return I18N::translate('Birth of a grandchild');
1048
-			}
1049
-		case '_BIRT_GCH1':
1050
-			switch ($sex) {
1051
-			case 'M':
1052
-				return I18N::translateContext('daughter’s son', 'Birth of a grandson');
1053
-			case 'F':
1054
-				return I18N::translateContext('daughter’s daughter', 'Birth of a granddaughter');
1055
-			default:
1056
-				return I18N::translate('Birth of a grandchild');
1057
-			}
1058
-		case '_BIRT_GCH2':
1059
-			switch ($sex) {
1060
-			case 'M':
1061
-				return I18N::translateContext('son’s son', 'Birth of a grandson');
1062
-			case 'F':
1063
-				return I18N::translateContext('son’s daughter', 'Birth of a granddaughter');
1064
-			default:
1065
-				return I18N::translate('Birth of a grandchild');
1066
-			}
1067
-		case '_BIRT_HSIB':
1068
-			switch ($sex) {
1069
-			case 'M':
1070
-				return I18N::translate('Birth of a half-brother');
1071
-			case 'F':
1072
-				return I18N::translate('Birth of a half-sister');
1073
-			default:
1074
-				return I18N::translate('Birth of a half-sibling');
1075
-			}
1076
-		case '_BIRT_SIBL':
1077
-			switch ($sex) {
1078
-			case 'M':
1079
-				return I18N::translate('Birth of a brother');
1080
-			case 'F':
1081
-				return I18N::translate('Birth of a sister');
1082
-			default:
1083
-				return I18N::translate('Birth of a sibling');
1084
-			}
1085
-		case '_BRTM':
1086
-			return
1087
-				/* I18N: gedcom tag _BRTM */
1088
-				I18N::translate('Brit milah');
1089
-		case '_BRTM:DATE':
1090
-			return I18N::translate('Date of brit milah');
1091
-		case '_BRTM:PLAC':
1092
-			return I18N::translate('Place of brit milah');
1093
-		case '_BURI_CHIL':
1094
-			switch ($sex) {
1095
-			case 'M':
1096
-				return I18N::translate('Burial of a son');
1097
-			case 'F':
1098
-				return I18N::translate('Burial of a daughter');
1099
-			default:
1100
-				return I18N::translate('Burial of a child');
1101
-			}
1102
-		case '_BURI_GCHI':
1103
-			switch ($sex) {
1104
-			case 'M':
1105
-				return I18N::translate('Burial of a grandson');
1106
-			case 'F':
1107
-				return I18N::translate('Burial of a granddaughter');
1108
-			default:
1109
-				return I18N::translate('Burial of a grandchild');
1110
-			}
1111
-		case '_BURI_GCH1':
1112
-			switch ($sex) {
1113
-			case 'M':
1114
-				return I18N::translateContext('daughter’s son', 'Burial of a grandson');
1115
-			case 'F':
1116
-				return I18N::translateContext('daughter’s daughter', 'Burial of a granddaughter');
1117
-			default:
1118
-				return I18N::translate('Burial of a grandchild');
1119
-			}
1120
-		case '_BURI_GCH2':
1121
-			switch ($sex) {
1122
-			case 'M':
1123
-				return I18N::translateContext('son’s son', 'Burial of a grandson');
1124
-			case 'F':
1125
-				return I18N::translateContext('son’s daughter', 'Burial of a granddaughter');
1126
-			default:
1127
-				return I18N::translate('Burial of a grandchild');
1128
-			}
1129
-		case '_BURI_GPAR':
1130
-			switch ($sex) {
1131
-			case 'M':
1132
-				return I18N::translate('Burial of a grandfather');
1133
-			case 'F':
1134
-				return I18N::translate('Burial of a grandmother');
1135
-			default:
1136
-				return I18N::translate('Burial of a grandparent');
1137
-			}
1138
-		case '_BURI_GPA1':
1139
-			switch ($sex) {
1140
-			case 'M':
1141
-				return I18N::translate('Burial of a paternal grandfather');
1142
-			case 'F':
1143
-				return I18N::translate('Burial of a paternal grandmother');
1144
-			default:
1145
-				return I18N::translate('Burial of a paternal grandparent');
1146
-			}
1147
-		case '_BURI_GPA2':
1148
-			switch ($sex) {
1149
-			case 'M':
1150
-				return I18N::translate('Burial of a maternal grandfather');
1151
-			case 'F':
1152
-				return I18N::translate('Burial of a maternal grandmother');
1153
-			default:
1154
-				return I18N::translate('Burial of a maternal grandparent');
1155
-			}
1156
-		case '_BURI_HSIB':
1157
-			switch ($sex) {
1158
-			case 'M':
1159
-				return I18N::translate('Burial of a half-brother');
1160
-			case 'F':
1161
-				return I18N::translate('Burial of a half-sister');
1162
-			default:
1163
-				return I18N::translate('Burial of a half-sibling');
1164
-			}
1165
-		case '_BURI_PARE':
1166
-			switch ($sex) {
1167
-			case 'M':
1168
-				return I18N::translate('Burial of a father');
1169
-			case 'F':
1170
-				return I18N::translate('Burial of a mother');
1171
-			default:
1172
-				return I18N::translate('Burial of a parent');
1173
-			}
1174
-		case '_BURI_SIBL':
1175
-			switch ($sex) {
1176
-			case 'M':
1177
-				return I18N::translate('Burial of a brother');
1178
-			case 'F':
1179
-				return I18N::translate('Burial of a sister');
1180
-			default:
1181
-				return I18N::translate('Burial of a sibling');
1182
-			}
1183
-		case '_BURI_SPOU':
1184
-			switch ($sex) {
1185
-			case 'M':
1186
-				return I18N::translate('Burial of a husband');
1187
-			case 'F':
1188
-				return I18N::translate('Burial of a wife');
1189
-			default:
1190
-				return I18N::translate('Burial of a spouse');
1191
-			}
1192
-		case '_CHR_CHIL':
1193
-			switch ($sex) {
1194
-			case 'M':
1195
-				return I18N::translate('Christening of a son');
1196
-			case 'F':
1197
-				return I18N::translate('Christening of a daughter');
1198
-			default:
1199
-				return I18N::translate('Christening of a child');
1200
-			}
1201
-		case '_CHR_GCHI':
1202
-			switch ($sex) {
1203
-			case 'M':
1204
-				return I18N::translate('Christening of a grandson');
1205
-			case 'F':
1206
-				return I18N::translate('Christening of a granddaughter');
1207
-			default:
1208
-				return I18N::translate('Christening of a grandchild');
1209
-			}
1210
-		case '_CHR_GCH1':
1211
-			switch ($sex) {
1212
-			case 'M':
1213
-				return I18N::translateContext('daughter’s son', 'Christening of a grandson');
1214
-			case 'F':
1215
-				return I18N::translateContext('daughter’s daughter', 'Christening of a granddaughter');
1216
-			default:
1217
-				return I18N::translate('Christening of a grandchild');
1218
-			}
1219
-		case '_CHR_GCH2':
1220
-			switch ($sex) {
1221
-			case 'M':
1222
-				return I18N::translateContext('son’s son', 'Christening of a grandson');
1223
-			case 'F':
1224
-				return I18N::translateContext('son’s daughter', 'Christening of a granddaughter');
1225
-			default:
1226
-				return I18N::translate('Christening of a grandchild');
1227
-			}
1228
-		case '_CHR_HSIB':
1229
-			switch ($sex) {
1230
-			case 'M':
1231
-				return I18N::translate('Christening of a half-brother');
1232
-			case 'F':
1233
-				return I18N::translate('Christening of a half-sister');
1234
-			default:
1235
-				return I18N::translate('Christening of a half-sibling');
1236
-			}
1237
-		case '_CHR_SIBL':
1238
-			switch ($sex) {
1239
-			case 'M':
1240
-				return I18N::translate('Christening of a brother');
1241
-			case 'F':
1242
-				return I18N::translate('Christening of a sister');
1243
-			default:
1244
-				return I18N::translate('Christening of a sibling');
1245
-			}
1246
-		case '_COML':
1247
-			return
1248
-				/* I18N: gedcom tag _COML */
1249
-				I18N::translate('Common law marriage');
1250
-		case '_CREM_CHIL':
1251
-			switch ($sex) {
1252
-			case 'M':
1253
-				return I18N::translate('Cremation of a son');
1254
-			case 'F':
1255
-				return I18N::translate('Cremation of a daughter');
1256
-			default:
1257
-				return I18N::translate('Cremation of a child');
1258
-			}
1259
-		case '_CREM_GCHI':
1260
-			switch ($sex) {
1261
-			case 'M':
1262
-				return I18N::translate('Cremation of a grandson');
1263
-			case 'F':
1264
-				return I18N::translate('Cremation of a granddaughter');
1265
-			default:
1266
-				return I18N::translate('Cremation of a grandchild');
1267
-			}
1268
-		case '_CREM_GCH1':
1269
-			switch ($sex) {
1270
-			case 'M':
1271
-				return I18N::translateContext('daughter’s son', 'Cremation of a grandson');
1272
-			case 'F':
1273
-				return I18N::translateContext('daughter’s daughter', 'Cremation of a granddaughter');
1274
-			default:
1275
-				return I18N::translate('Cremation of a grandchild');
1276
-			}
1277
-		case '_CREM_GCH2':
1278
-			switch ($sex) {
1279
-			case 'M':
1280
-				return I18N::translateContext('son’s son', 'Cremation of a grandson');
1281
-			case 'F':
1282
-				return I18N::translateContext('son’s daughter', 'Cremation of a granddaughter');
1283
-			default:
1284
-				return I18N::translate('Cremation of a grandchild');
1285
-			}
1286
-		case '_CREM_GPAR':
1287
-			switch ($sex) {
1288
-			case 'M':
1289
-				return I18N::translate('Cremation of a grandfather');
1290
-			case 'F':
1291
-				return I18N::translate('Cremation of a grandmother');
1292
-			default:
1293
-				return I18N::translate('Cremation of a grand-parent');
1294
-			}
1295
-		case '_CREM_GPA1':
1296
-			switch ($sex) {
1297
-			case 'M':
1298
-				return I18N::translate('Cremation of a paternal grandfather');
1299
-			case 'F':
1300
-				return I18N::translate('Cremation of a paternal grandmother');
1301
-			default:
1302
-				return I18N::translate('Cremation of a grand-parent');
1303
-			}
1304
-		case '_CREM_GPA2':
1305
-			switch ($sex) {
1306
-			case 'M':
1307
-				return I18N::translate('Cremation of a maternal grandfather');
1308
-			case 'F':
1309
-				return I18N::translate('Cremation of a maternal grandmother');
1310
-			default:
1311
-				return I18N::translate('Cremation of a grand-parent');
1312
-			}
1313
-		case '_CREM_HSIB':
1314
-			switch ($sex) {
1315
-			case 'M':
1316
-				return I18N::translate('Cremation of a half-brother');
1317
-			case 'F':
1318
-				return I18N::translate('Cremation of a half-sister');
1319
-			default:
1320
-				return I18N::translate('Cremation of a half-sibling');
1321
-			}
1322
-		case '_CREM_PARE':
1323
-			switch ($sex) {
1324
-			case 'M':
1325
-				return I18N::translate('Cremation of a father');
1326
-			case 'F':
1327
-				return I18N::translate('Cremation of a mother');
1328
-			default:
1329
-				return I18N::translate('Cremation of a parent');
1330
-			}
1331
-		case '_CREM_SIBL':
1332
-			switch ($sex) {
1333
-			case 'M':
1334
-				return I18N::translate('Cremation of a brother');
1335
-			case 'F':
1336
-				return I18N::translate('Cremation of a sister');
1337
-			default:
1338
-				return I18N::translate('Cremation of a sibling');
1339
-			}
1340
-		case '_CREM_SPOU':
1341
-			switch ($sex) {
1342
-			case 'M':
1343
-				return I18N::translate('Cremation of a husband');
1344
-			case 'F':
1345
-				return I18N::translate('Cremation of a wife');
1346
-			default:
1347
-				return I18N::translate('Cremation of a spouse');
1348
-			}
1349
-		case '_DBID':
1350
-			return
1351
-				/* I18N: gedcom tag _DBID */
1352
-				I18N::translate('Linked database ID');
1353
-		case '_DEAT_CHIL':
1354
-			switch ($sex) {
1355
-			case 'M':
1356
-				return I18N::translate('Death of a son');
1357
-			case 'F':
1358
-				return I18N::translate('Death of a daughter');
1359
-			default:
1360
-				return I18N::translate('Death of a child');
1361
-			}
1362
-		case '_DEAT_GCHI':
1363
-			switch ($sex) {
1364
-			case 'M':
1365
-				return I18N::translate('Death of a grandson');
1366
-			case 'F':
1367
-				return I18N::translate('Death of a granddaughter');
1368
-			default:
1369
-				return I18N::translate('Death of a grandchild');
1370
-			}
1371
-		case '_DEAT_GCH1':
1372
-			switch ($sex) {
1373
-			case 'M':
1374
-				return I18N::translateContext('daughter’s son', 'Death of a grandson');
1375
-			case 'F':
1376
-				return I18N::translateContext('daughter’s daughter', 'Death of a granddaughter');
1377
-			default:
1378
-				return I18N::translate('Death of a grandchild');
1379
-			}
1380
-		case '_DEAT_GCH2':
1381
-			switch ($sex) {
1382
-			case 'M':
1383
-				return I18N::translateContext('son’s son', 'Death of a grandson');
1384
-			case 'F':
1385
-				return I18N::translateContext('son’s daughter', 'Death of a granddaughter');
1386
-			default:
1387
-				return I18N::translate('Death of a grandchild');
1388
-			}
1389
-		case '_DEAT_GPAR':
1390
-			switch ($sex) {
1391
-			case 'M':
1392
-				return I18N::translate('Death of a grandfather');
1393
-			case 'F':
1394
-				return I18N::translate('Death of a grandmother');
1395
-			default:
1396
-				return I18N::translate('Death of a grand-parent');
1397
-			}
1398
-		case '_DEAT_GPA1':
1399
-			switch ($sex) {
1400
-			case 'M':
1401
-				return I18N::translate('Death of a paternal grandfather');
1402
-			case 'F':
1403
-				return I18N::translate('Death of a paternal grandmother');
1404
-			default:
1405
-				return I18N::translate('Death of a grand-parent');
1406
-			}
1407
-		case '_DEAT_GPA2':
1408
-			switch ($sex) {
1409
-			case 'M':
1410
-				return I18N::translate('Death of a maternal grandfather');
1411
-			case 'F':
1412
-				return I18N::translate('Death of a maternal grandmother');
1413
-			default:
1414
-				return I18N::translate('Death of a grand-parent');
1415
-			}
1416
-		case '_DEAT_HSIB':
1417
-			switch ($sex) {
1418
-			case 'M':
1419
-				return I18N::translate('Death of a half-brother');
1420
-			case 'F':
1421
-				return I18N::translate('Death of a half-sister');
1422
-			default:
1423
-				return I18N::translate('Death of a half-sibling');
1424
-			}
1425
-		case '_DEAT_PARE':
1426
-			switch ($sex) {
1427
-			case 'M':
1428
-				return I18N::translate('Death of a father');
1429
-			case 'F':
1430
-				return I18N::translate('Death of a mother');
1431
-			default:
1432
-				return I18N::translate('Death of a parent');
1433
-			}
1434
-		case '_DEAT_SIBL':
1435
-			switch ($sex) {
1436
-			case 'M':
1437
-				return I18N::translate('Death of a brother');
1438
-			case 'F':
1439
-				return I18N::translate('Death of a sister');
1440
-			default:
1441
-				return I18N::translate('Death of a sibling');
1442
-			}
1443
-		case '_DEAT_SPOU':
1444
-			switch ($sex) {
1445
-			case 'M':
1446
-				return I18N::translate('Death of a husband');
1447
-			case 'F':
1448
-				return I18N::translate('Death of a wife');
1449
-			default:
1450
-				return I18N::translate('Death of a spouse');
1451
-			}
1452
-		case '_DEG':
1453
-			return
1454
-				/* I18N: gedcom tag _DEG */
1455
-				I18N::translate('Degree');
1456
-		case '_DETS':
1457
-			return
1458
-				/* I18N: gedcom tag _DETS */
1459
-				I18N::translate('Death of one spouse');
1460
-		case '_DNA':
1461
-			return
1462
-				/* I18N: gedcom tag _DNA (from FTM 2010) */
1463
-				I18N::translate('DNA markers');
1464
-		case '_EMAIL':
1465
-			return
1466
-				/* I18N: gedcom tag _EMAIL */
1467
-				I18N::translate('Email address');
1468
-		case '_EYEC':
1469
-			return
1470
-				/* I18N: gedcom tag _EYEC */
1471
-				I18N::translate('Eye color');
1472
-		case '_FA1':
1473
-			return I18N::translate('Fact 1');
1474
-		case '_FA2':
1475
-			return I18N::translate('Fact 2');
1476
-		case '_FA3':
1477
-			return I18N::translate('Fact 3');
1478
-		case '_FA4':
1479
-			return I18N::translate('Fact 4');
1480
-		case '_FA5':
1481
-			return I18N::translate('Fact 5');
1482
-		case '_FA6':
1483
-			return I18N::translate('Fact 6');
1484
-		case '_FA7':
1485
-			return I18N::translate('Fact 7');
1486
-		case '_FA8':
1487
-			return I18N::translate('Fact 8');
1488
-		case '_FA9':
1489
-			return I18N::translate('Fact 9');
1490
-		case '_FA10':
1491
-			return I18N::translate('Fact 10');
1492
-		case '_FA11':
1493
-			return I18N::translate('Fact 11');
1494
-		case '_FA12':
1495
-			return I18N::translate('Fact 12');
1496
-		case '_FA13':
1497
-			return I18N::translate('Fact 13');
1498
-		case '_FNRL':
1499
-			return
1500
-				/* I18N: gedcom tag _FNRL */
1501
-				I18N::translate('Funeral');
1502
-		case '_FREL':
1503
-			return
1504
-				/* I18N: gedcom tag _FREL */
1505
-				I18N::translate('Relationship to father');
1506
-		case '_GEDF':
1507
-			return
1508
-				/* I18N: gedcom tag _GEDF */
1509
-				I18N::translate('GEDCOM file');
1510
-		case '_GODP':
1511
-			return
1512
-				/* I18N: gedcom tag _GODP */
1513
-				I18N::translate('Godparent');
1514
-		case '_HAIR':
1515
-			return
1516
-				/* I18N: gedcom tag _HAIR */
1517
-				I18N::translate('Hair color');
1518
-		case '_HEB':
1519
-			return
1520
-				/* I18N: gedcom tag _HEB */
1521
-				I18N::translate('Hebrew');
1522
-		case '_HEIG':
1523
-			return
1524
-				/* I18N: gedcom tag _HEIG */
1525
-				I18N::translate('Height');
1526
-		case '_HNM':
1527
-			return
1528
-				/* I18N: gedcom tag _HNM */
1529
-				I18N::translate('Hebrew name');
1530
-		case '_HOL':
1531
-			return
1532
-				/* I18N: gedcom tag _HOL */
1533
-				I18N::translate('Holocaust');
1534
-		case '_INTE':
1535
-			switch ($sex) {
1536
-			case 'M':
1537
-				return
1538
-					/* I18N: gedcom tag _INTE */
1539
-					I18N::translateContext('MALE', 'Interred');
1540
-			case 'F':
1541
-				return
1542
-					/* I18N: gedcom tag _INTE */
1543
-					I18N::translateContext('FEMALE', 'Interred');
1544
-			default:
149
+					/* I18N: gedcom tag ALIA */
150
+					I18N::translate('Alias');
151
+			case 'ANCE':
1545 152
 				return
1546
-					/* I18N: gedcom tag _INTE */
1547
-					I18N::translate('Interred');
1548
-			}
1549
-		case '_LOC':
1550
-			return
1551
-				/* I18N: gedcom tag _LOC */
1552
-				I18N::translate('Location');
1553
-		case '_MARI':
1554
-			return
1555
-				/* I18N: gedcom tag _MARI */
1556
-				I18N::translate('Marriage intention');
1557
-		case '_MARNM':
1558
-			return
1559
-				/* I18N: gedcom tag _MARNM */
1560
-				I18N::translate('Married name');
1561
-		case '_PRIM':
1562
-			return
1563
-				/* I18N: gedcom tag _PRIM */
1564
-				I18N::translate('Highlighted image');
1565
-		case '_MARNM_SURN':
1566
-			return I18N::translate('Married surname');
1567
-		case '_MARR_CHIL':
1568
-			switch ($sex) {
1569
-			case 'M':
1570
-				return I18N::translate('Marriage of a son');
1571
-			case 'F':
1572
-				return I18N::translate('Marriage of a daughter');
1573
-			default:
1574
-				return I18N::translate('Marriage of a child');
1575
-			}
1576
-		case '_MARR_FAMC':
1577
-			return
1578
-				/* I18N: ...to each other */
1579
-				I18N::translate('Marriage of parents');
1580
-		case '_MARR_GCHI':
1581
-			switch ($sex) {
1582
-			case 'M':
1583
-				return I18N::translate('Marriage of a grandson');
1584
-			case 'F':
1585
-				return I18N::translate('Marriage of a granddaughter');
1586
-			default:
1587
-				return I18N::translate('Marriage of a grandchild');
1588
-			}
1589
-		case '_MARR_GCH1':
1590
-			switch ($sex) {
1591
-			case 'M':
1592
-				return I18N::translateContext('daughter’s son', 'Marriage of a grandson');
1593
-			case 'F':
1594
-				return I18N::translateContext('daughter’s daughter', 'Marriage of a granddaughter');
1595
-			default:
1596
-				return I18N::translate('Marriage of a grandchild');
1597
-			}
1598
-		case '_MARR_GCH2':
1599
-			switch ($sex) {
1600
-			case 'M':
1601
-				return I18N::translateContext('son’s son', 'Marriage of a grandson');
1602
-			case 'F':
1603
-				return I18N::translateContext('son’s daughter', 'Marriage of a granddaughter');
1604
-			default:
1605
-				return I18N::translate('Marriage of a grandchild');
1606
-			}
1607
-		case '_MARR_HSIB':
1608
-			switch ($sex) {
1609
-			case 'M':
1610
-				return I18N::translate('Marriage of a half-brother');
1611
-			case 'F':
1612
-				return I18N::translate('Marriage of a half-sister');
1613
-			default:
1614
-				return I18N::translate('Marriage of a half-sibling');
1615
-			}
1616
-		case '_MARR_PARE':
1617
-			switch ($sex) {
1618
-			case 'M':
1619
-				return
1620
-					/* I18N: ...to another spouse */
1621
-					I18N::translate('Marriage of a father');
1622
-			case 'F':
1623
-				return
1624
-					/* I18N: ...to another spouse */
1625
-					I18N::translate('Marriage of a mother');
1626
-			default:
153
+					/* I18N: gedcom tag ANCE */
154
+					I18N::translate('Generations of ancestors');
155
+			case 'ANCI':
1627 156
 				return
1628
-					/* I18N: ...to another spouse */
1629
-					I18N::translate('Marriage of a parent');
1630
-			}
1631
-		case '_MARR_SIBL':
1632
-			switch ($sex) {
1633
-			case 'M':
1634
-				return I18N::translate('Marriage of a brother');
1635
-			case 'F':
1636
-				return I18N::translate('Marriage of a sister');
1637
-			default:
1638
-				return I18N::translate('Marriage of a sibling');
1639
-			}
1640
-		case '_MBON':
1641
-			return
1642
-				/* I18N: gedcom tag _MBON */
1643
-				I18N::translate('Marriage bond');
1644
-		case '_MDCL':
1645
-			return
1646
-				/* I18N: gedcom tag _MDCL */
1647
-				I18N::translate('Medical');
1648
-		case '_MEDC':
1649
-			return
1650
-				/* I18N: gedcom tag _MEDC */
1651
-				I18N::translate('Medical condition');
1652
-		case '_MEND':
1653
-			return
1654
-				/* I18N: gedcom tag _MEND */
1655
-				I18N::translate('Marriage ending status');
1656
-		case '_MILI':
1657
-			return
1658
-				/* I18N: gedcom tag _MILI */
1659
-				I18N::translate('Military');
1660
-		case '_MILT':
1661
-			return
1662
-				/* I18N: gedcom tag _MILT */
1663
-				I18N::translate('Military service');
1664
-		case '_MREL':
1665
-			return
1666
-				/* I18N: gedcom tag _MREL */
1667
-				I18N::translate('Relationship to mother');
1668
-		case '_MSTAT':
1669
-			return
1670
-				/* I18N: gedcom tag _MSTAT */
1671
-				I18N::translate('Marriage beginning status');
1672
-		case '_NAME':
1673
-			return
1674
-				/* I18N: gedcom tag _NAME */
1675
-				I18N::translate('Mailing name');
1676
-		case '_NAMS':
1677
-			return
1678
-				/* I18N: gedcom tag _NAMS */
1679
-				I18N::translate('Namesake');
1680
-		case '_NLIV':
1681
-			return
1682
-				/* I18N: gedcom tag _NLIV */
1683
-				I18N::translate('Not living');
1684
-		case '_NMAR':
1685
-			switch ($sex) {
1686
-			case 'M':
1687
-				return
1688
-					/* I18N: gedcom tag _NMAR */
1689
-					I18N::translateContext('MALE', 'Never married');
1690
-			case 'F':
1691
-				return
1692
-					/* I18N: gedcom tag _NMAR */
1693
-					I18N::translateContext('FEMALE', 'Never married');
1694
-			default:
157
+					/* I18N: gedcom tag ANCI */
158
+					I18N::translate('Ancestors interest');
159
+			case 'ANUL':
1695 160
 				return
1696
-					/* I18N: gedcom tag _NMAR */
1697
-					I18N::translate('Never married');
1698
-			}
1699
-		case '_NMR':
1700
-			switch ($sex) {
1701
-			case 'M':
161
+					/* I18N: gedcom tag ANUL */
162
+					I18N::translate('Annulment');
163
+			case 'ASSO':
1702 164
 				return
1703
-					/* I18N: gedcom tag _NMR */
1704
-					I18N::translateContext('MALE', 'Not married');
1705
-			case 'F':
165
+					/* I18N: gedcom tag ASSO */
166
+					I18N::translate('Associate'); /* see also _ASSO */
167
+			case 'AUTH':
1706 168
 				return
1707
-					/* I18N: gedcom tag _NMR */
1708
-					I18N::translateContext('FEMALE', 'Not married');
1709
-			default:
169
+					/* I18N: gedcom tag AUTH */
170
+					I18N::translate('Author');
171
+			case 'BAPL':
172
+				return
173
+					/* I18N: gedcom tag BAPL. LDS = Church of Latter Day Saints. */
174
+					I18N::translate('LDS baptism');
175
+			case 'BAPL:DATE':
176
+				return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Date of LDS baptism');
177
+			case 'BAPL:PLAC':
178
+				return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Place of LDS baptism');
179
+			case 'BAPM':
180
+				return
181
+					/* I18N: gedcom tag BAPM */
182
+					I18N::translate('Baptism');
183
+			case 'BAPM:DATE':
184
+				return I18N::translate('Date of baptism');
185
+			case 'BAPM:PLAC':
186
+				return I18N::translate('Place of baptism');
187
+			case 'BARM':
188
+				return
189
+					/* I18N: gedcom tag BARM */
190
+					I18N::translate('Bar mitzvah');
191
+			case 'BARM:DATE':
192
+				return I18N::translate('Date of bar mitzvah');
193
+			case 'BARM:PLAC':
194
+				return I18N::translate('Place of bar mitzvah');
195
+			case 'BASM':
196
+				return
197
+					/* I18N: gedcom tag BASM */
198
+					I18N::translate('Bat mitzvah');
199
+			case 'BASM:DATE':
200
+				return I18N::translate('Date of bat mitzvah');
201
+			case 'BASM:PLAC':
202
+				return I18N::translate('Place of bat mitzvah');
203
+			case 'BIRT':
204
+				return
205
+					/* I18N: gedcom tag BIRT */
206
+					I18N::translate('Birth');
207
+			case 'BIRT:DATE':
208
+				return I18N::translate('Date of birth');
209
+			case 'BIRT:PLAC':
210
+				return I18N::translate('Place of birth');
211
+			case 'BLES':
212
+				return
213
+					/* I18N: gedcom tag BLES */
214
+					I18N::translate('Blessing');
215
+			case 'BLES:DATE':
216
+				return I18N::translate('Date of blessing');
217
+			case 'BLES:PLAC':
218
+				return I18N::translate('Place of blessing');
219
+			case 'BLOB':
220
+				return
221
+					/* I18N: gedcom tag BLOB */
222
+					I18N::translate('Binary data object');
223
+			case 'BURI':
224
+				return
225
+					/* I18N: gedcom tag BURI */
226
+					I18N::translate('Burial');
227
+			case 'BURI:DATE':
228
+				return I18N::translate('Date of burial');
229
+			case 'BURI:PLAC':
230
+				return I18N::translate('Place of burial');
231
+			case 'CALN':
232
+				return
233
+					/* I18N: gedcom tag CALN */
234
+					I18N::translate('Call number');
235
+			case 'CAST':
236
+				return
237
+					/* I18N: gedcom tag CAST */
238
+					I18N::translate('Caste');
239
+			case 'CAUS':
240
+				return
241
+					/* I18N: gedcom tag CAUS */
242
+					I18N::translate('Cause');
243
+			case 'CEME':
244
+				return
245
+					/* I18N: gedcom tag CEME */
246
+					I18N::translate('Cemetery');
247
+			case 'CENS':
248
+				return
249
+					/* I18N: gedcom tag CENS */
250
+					I18N::translate('Census');
251
+			case 'CENS:DATE':
252
+				return I18N::translate('Census date');
253
+			case 'CENS:PLAC':
254
+				return I18N::translate('Census place');
255
+			case 'CHAN':
256
+				return
257
+					/* I18N: gedcom tag CHAN */
258
+					I18N::translate('Last change');
259
+			case 'CHAN:DATE':
260
+				return
261
+					/* I18N: gedcom tag CHAN:DATE */
262
+					I18N::translate('Date of last change');
263
+			case 'CHAN:_WT_USER':
264
+				return
265
+					/* I18N: gedcom tag CHAN:_WT_USER */
266
+					I18N::translate('Author of last change');
267
+			case 'CHAR':
268
+				return
269
+					/* I18N: gedcom tag CHAR */
270
+					I18N::translate('Character set');
271
+			case 'CHIL':
272
+				return
273
+					/* I18N: gedcom tag CHIL */
274
+					I18N::translate('Child');
275
+			case 'CHR':
276
+				return
277
+					/* I18N: gedcom tag CHR */
278
+					I18N::translate('Christening');
279
+			case 'CHR:DATE':
280
+				return I18N::translate('Date of christening');
281
+			case 'CHR:PLAC':
282
+				return I18N::translate('Place of christening');
283
+			case 'CHRA':
284
+				return
285
+					/* I18N: gedcom tag CHRA */
286
+					I18N::translate('Adult christening');
287
+			case 'CITN':
288
+				return
289
+					/* I18N: gedcom tag CITN */
290
+					I18N::translate('Citizenship');
291
+			case 'CITY':
292
+				return
293
+					/* I18N: gedcom tag CITY */
294
+					I18N::translate('City');
295
+			case 'COMM':
296
+				return
297
+					/* I18N: gedcom tag COMM */
298
+					I18N::translate('Comment');
299
+			case 'CONC':
300
+				return
301
+					/* I18N: gedcom tag CONC */
302
+					I18N::translate('Concatenation');
303
+			case 'CONT':
304
+				return
305
+					/* I18N: gedcom tag CONT */
306
+					I18N::translate('Continued');
307
+			case 'CONF':
308
+				return
309
+					/* I18N: gedcom tag CONF */
310
+					I18N::translate('Confirmation');
311
+			case 'CONF:DATE':
312
+				return I18N::translate('Date of confirmation');
313
+			case 'CONF:PLAC':
314
+				return I18N::translate('Place of confirmation');
315
+			case 'CONL':
316
+				return
317
+					/* I18N: gedcom tag CONL. LDS = Church of Latter Day Saints. */
318
+					I18N::translate('LDS confirmation');
319
+			case 'COPR':
320
+				return
321
+					/* I18N: gedcom tag COPR */
322
+					I18N::translate('Copyright');
323
+			case 'CORP':
324
+				return
325
+					/* I18N: gedcom tag CORP */
326
+					I18N::translate('Corporation');
327
+			case 'CREM':
328
+				return
329
+					/* I18N: gedcom tag CREM */
330
+					I18N::translate('Cremation');
331
+			case 'CREM:DATE':
332
+				return I18N::translate('Date of cremation');
333
+			case 'CREM:PLAC':
334
+				return I18N::translate('Place of cremation');
335
+			case 'CTRY':
336
+				return
337
+					/* I18N: gedcom tag CTRY */
338
+					I18N::translate('Country');
339
+			case 'DATA':
340
+				return
341
+					/* I18N: gedcom tag DATA */
342
+					I18N::translate('Data');
343
+			case 'DATA:DATE':
344
+				return I18N::translate('Date of entry in original source');
345
+			case 'DATE':
346
+				return
347
+					/* I18N: gedcom tag DATE */
348
+					I18N::translate('Date');
349
+			case 'DEAT':
350
+				return
351
+					/* I18N: gedcom tag DEAT */
352
+					I18N::translate('Death');
353
+			case 'DEAT:CAUS':
354
+				return I18N::translate('Cause of death');
355
+			case 'DEAT:DATE':
356
+				return I18N::translate('Date of death');
357
+			case 'DEAT:PLAC':
358
+				return I18N::translate('Place of death');
359
+			case 'DESC':
360
+				return
361
+					/* I18N: gedcom tag DESC */
362
+					I18N::translate('Descendants');
363
+			case 'DESI':
364
+				return
365
+					/* I18N: gedcom tag DESI */
366
+					I18N::translate('Descendants interest');
367
+			case 'DEST':
368
+				return
369
+					/* I18N: gedcom tag DEST */
370
+					I18N::translate('Destination');
371
+			case 'DIV':
372
+				return
373
+					/* I18N: gedcom tag DIV */
374
+					I18N::translate('Divorce');
375
+			case 'DIVF':
376
+				return
377
+					/* I18N: gedcom tag DIVF */
378
+					I18N::translate('Divorce filed');
379
+			case 'DSCR':
380
+				return
381
+					/* I18N: gedcom tag DSCR */
382
+					I18N::translate('Description');
383
+			case 'EDUC':
384
+				return
385
+					/* I18N: gedcom tag EDUC */
386
+					I18N::translate('Education');
387
+			case 'EDUC:AGNC':
388
+				return I18N::translate('School or college');
389
+			case 'EMAI':
390
+				return
391
+					/* I18N: gedcom tag EMAI */
392
+					I18N::translate('Email address');
393
+			case 'EMAIL':
394
+				return
395
+					/* I18N: gedcom tag EMAIL */
396
+					I18N::translate('Email address');
397
+			case 'EMAL':
398
+				return
399
+					/* I18N: gedcom tag EMAL */
400
+					I18N::translate('Email address');
401
+			case 'EMIG':
402
+				return
403
+					/* I18N: gedcom tag EMIG */
404
+					I18N::translate('Emigration');
405
+			case 'EMIG:DATE':
406
+				return I18N::translate('Date of emigration');
407
+			case 'EMIG:PLAC':
408
+				return I18N::translate('Place of emigration');
409
+			case 'ENDL':
410
+				return
411
+					/* I18N: gedcom tag ENDL. LDS = Church of Latter Day Saints. */
412
+					I18N::translate('LDS endowment');
413
+			case 'ENDL:DATE':
414
+				return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Date of LDS endowment');
415
+			case 'ENDL:PLAC':
416
+				return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Place of LDS endowment');
417
+			case 'ENGA':
418
+				return
419
+					/* I18N: gedcom tag ENGA */
420
+					I18N::translate('Engagement');
421
+			case 'ENGA:DATE':
422
+				return I18N::translate('Date of engagement');
423
+			case 'ENGA:PLAC':
424
+				return I18N::translate('Place of engagement');
425
+			case 'EVEN':
426
+				return
427
+					/* I18N: gedcom tag EVEN */
428
+					I18N::translate('Event');
429
+			case 'EVEN:DATE':
430
+				return I18N::translate('Date of event');
431
+			case 'EVEN:PLAC':
432
+				return I18N::translate('Place of event');
433
+			case 'EVEN:TYPE':
434
+				return I18N::translate('Type of event');
435
+			case 'FACT':
436
+				return
437
+					/* I18N: gedcom tag FACT */
438
+					I18N::translate('Fact');
439
+			case 'FACT:TYPE':
440
+				return I18N::translate('Type of fact');
441
+			case 'FAM':
442
+				return
443
+					/* I18N: gedcom tag FAM */
444
+					I18N::translate('Family');
445
+			case 'FAMC':
446
+				return
447
+					/* I18N: gedcom tag FAMC */
448
+					I18N::translate('Family as a child');
449
+			case 'FAMF':
450
+				return
451
+					/* I18N: gedcom tag FAMF */
452
+					I18N::translate('Family file');
453
+			case 'FAMS':
454
+				return
455
+					/* I18N: gedcom tag FAMS */
456
+					I18N::translate('Family as a spouse');
457
+			case 'FAMS:CENS:DATE':
458
+				return I18N::translate('Spouse census date');
459
+			case 'FAMS:CENS:PLAC':
460
+				return I18N::translate('Spouse census place');
461
+			case 'FAMS:DIV:DATE':
462
+				return I18N::translate('Date of divorce');
463
+			case 'FAMS:MARR:DATE':
464
+				return I18N::translate('Date of marriage');
465
+			case 'FAMS:MARR:PLAC':
466
+				return I18N::translate('Place of marriage');
467
+			case 'FAMS:NOTE':
468
+				return I18N::translate('Spouse note');
469
+			case 'FAMS:SLGS:DATE':
470
+				return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Date of LDS spouse sealing');
471
+			case 'FAMS:SLGS:PLAC':
472
+				return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Place of LDS spouse sealing');
473
+			case 'FAX':
474
+				return
475
+					/* I18N: gedcom tag FAX */
476
+					I18N::translate('Fax');
477
+			case 'FCOM':
478
+				return
479
+					/* I18N: gedcom tag FCOM */
480
+					I18N::translate('First communion');
481
+			case 'FCOM:DATE':
482
+				return I18N::translate('Date of first communion');
483
+			case 'FCOM:PLAC':
484
+				return I18N::translate('Place of first communion');
485
+			case 'FILE':
486
+				return
487
+					/* I18N: gedcom tag FILE */
488
+					I18N::translate('Filename');
489
+			case 'FONE':
490
+				return
491
+					/* I18N: gedcom tag FONE */
492
+					I18N::translate('Phonetic');
493
+			case 'FORM':
494
+				return
495
+					/* I18N: gedcom tag FORM */
496
+					I18N::translate('Format');
497
+			case 'GEDC':
1710 498
 				return
1711
-					/* I18N: gedcom tag _NMR */
1712
-					I18N::translate('Not married');
1713
-			}
1714
-		case '_WT_USER':
1715
-			return I18N::translate('by');
1716
-		case '_PRMN':
1717
-			return
1718
-				/* I18N: gedcom tag _PRMN */
1719
-				I18N::translate('Permanent number');
1720
-		case '_SCBK':
1721
-			return
1722
-				/* I18N: gedcom tag _SCBK */
1723
-				I18N::translate('Scrapbook');
1724
-		case '_SEPR':
1725
-			return
1726
-				/* I18N: gedcom tag _SEPR */
1727
-				I18N::translate('Separated');
1728
-		case '_SSHOW':
1729
-			return
1730
-				/* I18N: gedcom tag _SSHOW */
1731
-				I18N::translate('Slide show');
1732
-		case '_STAT':
1733
-			return
1734
-				/* I18N: gedcom tag _STAT */
1735
-				I18N::translate('Marriage status');
1736
-		case '_SUBQ':
1737
-			return
1738
-				/* I18N: gedcom tag _SUBQ */
1739
-				I18N::translate('Short version');
1740
-		case '_TODO':
1741
-			return
1742
-				/* I18N: gedcom tag _TODO */
1743
-				I18N::translate('Research task');
1744
-		case '_TYPE':
1745
-			return
1746
-				/* I18N: gedcom tag _TYPE */
1747
-				I18N::translate('Media type');
1748
-		case '_UID':
1749
-			return
1750
-				/* I18N: gedcom tag _UID */
1751
-				I18N::translate('Unique identifier');
1752
-		case '_URL':
1753
-			return
1754
-				/* I18N: gedcom tag _URL */
1755
-				I18N::translate('URL');
1756
-		case '_WEIG':
1757
-			return
1758
-				/* I18N: gedcom tag _WEIG */
1759
-				I18N::translate('Weight');
1760
-		case '_WITN':
1761
-			return
1762
-				/* I18N: gedcom tag _WITN */
1763
-				I18N::translate('Witness');
1764
-		case '_WT_OBJE_SORT':
1765
-			return
1766
-				/* I18N: gedcom tag _WT_OBJE_SORT */
1767
-				I18N::translate('Re-order media');
1768
-		case '_YART':
1769
-			return /* I18N: gedcom tag _YART - A yahrzeit is a special anniversary of death in the Hebrew faith/calendar. */ I18N::translate('Yahrzeit');
1770
-			// Brit milah applies only to males, no need for male/female translations
1771
-		case '__BRTM_CHIL':
1772
-			return I18N::translate('Brit milah of a son');
1773
-		case '__BRTM_GCHI':
1774
-			return I18N::translate('Brit milah of a grandson');
1775
-		case '__BRTM_GCH1':
1776
-			return I18N::translateContext('daughter’s son', 'Brit milah of a grandson');
1777
-		case '__BRTM_GCH2':
1778
-			return I18N::translateContext('son’s son', 'Brit milah of a grandson');
1779
-		case '__BRTM_HSIB':
1780
-			return I18N::translate('Brit milah of a half-brother');
1781
-		case '__BRTM_SIBL':
1782
-			return I18N::translate('Brit milah of a brother');
1783
-			// These "pseudo" tags are generated internally to present information about a media object
1784
-		case '__FILE_SIZE__':
1785
-			return I18N::translate('File size');
1786
-		case '__IMAGE_SIZE__':
1787
-			return I18N::translate('Image dimensions');
1788
-		default:
1789
-			// If no specialisation exists (e.g. DEAT:CAUS), then look for the general (CAUS)
1790
-			if (strpos($tag, ':')) {
1791
-				list(, $tag) = explode(':', $tag, 2);
499
+					/* I18N: gedcom tag GEDC */
500
+					I18N::translate('GEDCOM file');
501
+			case 'GIVN':
502
+				return
503
+					/* I18N: gedcom tag GIVN */
504
+					I18N::translate('Given names');
505
+			case 'GRAD':
506
+				return
507
+					/* I18N: gedcom tag GRAD */
508
+					I18N::translate('Graduation');
509
+			case 'HEAD':
510
+				return
511
+					/* I18N: gedcom tag HEAD */
512
+					I18N::translate('Header');
513
+			case 'HUSB':
514
+				return
515
+					/* I18N: gedcom tag HUSB */
516
+					I18N::translate('Husband');
517
+			case 'IDNO':
518
+				return
519
+					/* I18N: gedcom tag IDNO */
520
+					I18N::translate('Identification number');
521
+			case 'IMMI':
522
+				return
523
+					/* I18N: gedcom tag IMMI */
524
+					I18N::translate('Immigration');
525
+			case 'IMMI:DATE':
526
+				return I18N::translate('Date of immigration');
527
+			case 'IMMI:PLAC':
528
+				return I18N::translate('Place of immigration');
529
+			case 'INDI':
530
+				return
531
+					/* I18N: gedcom tag INDI */
532
+					I18N::translate('Individual');
533
+			case 'INFL':
534
+				return
535
+					/* I18N: gedcom tag INFL */
536
+					I18N::translate('Infant');
537
+			case 'LANG':
538
+				return
539
+					/* I18N: gedcom tag LANG */
540
+					I18N::translate('Language');
541
+			case 'LATI':
542
+				return
543
+					/* I18N: gedcom tag LATI */
544
+					I18N::translate('Latitude');
545
+			case 'LEGA':
546
+				return
547
+					/* I18N: gedcom tag LEGA */
548
+					I18N::translate('Legatee');
549
+			case 'LONG':
550
+				return
551
+					/* I18N: gedcom tag LONG */
552
+					I18N::translate('Longitude');
553
+			case 'MAP':
554
+				return
555
+					/* I18N: gedcom tag MAP */
556
+					I18N::translate('Map');
557
+			case 'MARB':
558
+				return
559
+					/* I18N: gedcom tag MARB */
560
+					I18N::translate('Marriage banns');
561
+			case 'MARB:DATE':
562
+				return I18N::translate('Date of marriage banns');
563
+			case 'MARB:PLAC':
564
+				return I18N::translate('Place of marriage banns');
565
+			case 'MARC':
566
+				return
567
+					/* I18N: gedcom tag MARC */
568
+					I18N::translate('Marriage contract');
569
+			case 'MARL':
570
+				return
571
+					/* I18N: gedcom tag MARL */
572
+					I18N::translate('Marriage license');
573
+			case 'MARR':
574
+				return
575
+					/* I18N: gedcom tag MARR */
576
+					I18N::translate('Marriage');
577
+			case 'MARR:DATE':
578
+				return I18N::translate('Date of marriage');
579
+			case 'MARR:PLAC':
580
+				return I18N::translate('Place of marriage');
581
+			case 'MARR_CIVIL':
582
+				return I18N::translate('Civil marriage');
583
+			case 'MARR_PARTNERS':
584
+				return I18N::translate('Registered partnership');
585
+			case 'MARR_RELIGIOUS':
586
+				return I18N::translate('Religious marriage');
587
+			case 'MARR_UNKNOWN':
588
+				return I18N::translate('Marriage type unknown');
589
+			case 'MARS':
590
+				return
591
+					/* I18N: gedcom tag MARS */
592
+					I18N::translate('Marriage settlement');
593
+			case 'MEDI':
594
+				return
595
+					/* I18N: gedcom tag MEDI */
596
+					I18N::translate('Media type');
597
+			case 'NAME':
598
+				if ($record instanceof Repository) {
599
+					return
600
+						/* I18N: gedcom tag REPO:NAME */
601
+						I18N::translateContext('Repository', 'Name');
602
+				} else {
603
+					return
604
+						/* I18N: gedcom tag NAME */
605
+						I18N::translate('Name');
606
+				}
607
+			case 'NAME:FONE':
608
+				return I18N::translate('Phonetic name');
609
+			case 'NAME:_HEB':
610
+				return I18N::translate('Name in Hebrew');
611
+			case 'NATI':
612
+				return
613
+					/* I18N: gedcom tag NATI */
614
+					I18N::translate('Nationality');
615
+			case 'NATU':
616
+				return
617
+					/* I18N: gedcom tag NATU */
618
+					I18N::translate('Naturalization');
619
+			case 'NATU:DATE':
620
+				return I18N::translate('Date of naturalization');
621
+			case 'NATU:PLAC':
622
+				return I18N::translate('Place of naturalization');
623
+			case 'NCHI':
624
+				return
625
+					/* I18N: gedcom tag NCHI */
626
+					I18N::translate('Number of children');
627
+			case 'NICK':
628
+				return
629
+					/* I18N: gedcom tag NICK */
630
+					I18N::translate('Nickname');
631
+			case 'NMR':
632
+				return
633
+					/* I18N: gedcom tag NMR */
634
+					I18N::translate('Number of marriages');
635
+			case 'NOTE':
636
+				return
637
+					/* I18N: gedcom tag NOTE */
638
+					I18N::translate('Note');
639
+			case 'NPFX':
640
+				return
641
+					/* I18N: gedcom tag NPFX */
642
+					I18N::translate('Name prefix');
643
+			case 'NSFX':
644
+				return
645
+					/* I18N: gedcom tag NSFX */
646
+					I18N::translate('Name suffix');
647
+			case 'OBJE':
648
+				return
649
+					/* I18N: gedcom tag OBJE */
650
+					I18N::translate('Media object');
651
+			case 'OCCU':
652
+				return
653
+					/* I18N: gedcom tag OCCU */
654
+					I18N::translate('Occupation');
655
+			case 'OCCU:AGNC':
656
+				return I18N::translate('Employer');
657
+			case 'ORDI':
658
+				return
659
+					/* I18N: gedcom tag ORDI */
660
+					I18N::translate('Ordinance');
661
+			case 'ORDN':
662
+				return
663
+					/* I18N: gedcom tag ORDN */
664
+					I18N::translate('Ordination');
665
+			case 'ORDN:AGNC':
666
+				return I18N::translate('Religious institution');
667
+			case 'ORDN:DATE':
668
+				return I18N::translate('Date of ordination');
669
+			case 'ORDN:PLAC':
670
+				return I18N::translate('Place of ordination');
671
+			case 'PAGE':
672
+				return
673
+					/* I18N: gedcom tag PAGE */
674
+					I18N::translate('Citation details');
675
+			case 'PEDI':
676
+				return
677
+					/* I18N: gedcom tag PEDI */
678
+					I18N::translate('Relationship to parents');
679
+			case 'PHON':
680
+				return
681
+					/* I18N: gedcom tag PHON */
682
+					I18N::translate('Phone');
683
+			case 'PLAC':
684
+				return
685
+					/* I18N: gedcom tag PLAC */
686
+					I18N::translate('Place');
687
+			case 'PLAC:FONE':
688
+				return I18N::translate('Phonetic place');
689
+			case 'PLAC:ROMN':
690
+				return I18N::translate('Romanized place');
691
+			case 'PLAC:_HEB':
692
+				return I18N::translate('Place in Hebrew');
693
+			case 'POST':
694
+				return
695
+					/* I18N: gedcom tag POST */
696
+					I18N::translate('Postal code');
697
+			case 'PROB':
698
+				return
699
+					/* I18N: gedcom tag PROB */
700
+					I18N::translate('Probate');
701
+			case 'PROP':
702
+				return
703
+					/* I18N: gedcom tag PROP */
704
+					I18N::translate('Property');
705
+			case 'PUBL':
706
+				return
707
+					/* I18N: gedcom tag PUBL */
708
+					I18N::translate('Publication');
709
+			case 'QUAY':
710
+				return
711
+					/* I18N: gedcom tag QUAY */
712
+					I18N::translate('Quality of data');
713
+			case 'REFN':
714
+				return
715
+					/* I18N: gedcom tag REFN */
716
+					I18N::translate('Reference number');
717
+			case 'RELA':
718
+				return
719
+					/* I18N: gedcom tag RELA */
720
+					I18N::translate('Relationship');
721
+			case 'RELI':
722
+				return
723
+					/* I18N: gedcom tag RELI */
724
+					I18N::translate('Religion');
725
+			case 'REPO':
726
+				return
727
+					/* I18N: gedcom tag REPO */
728
+					I18N::translate('Repository');
729
+			case 'RESI':
730
+				return
731
+					/* I18N: gedcom tag RESI */
732
+					I18N::translate('Residence');
733
+			case 'RESI:DATE':
734
+				return I18N::translate('Date of residence');
735
+			case 'RESI:PLAC':
736
+				return I18N::translate('Place of residence');
737
+			case 'RESN':
738
+				return
739
+					/* I18N: gedcom tag RESN */
740
+					I18N::translate('Restriction');
741
+			case 'RETI':
742
+				return
743
+					/* I18N: gedcom tag RETI */
744
+					I18N::translate('Retirement');
745
+			case 'RETI:AGNC':
746
+				return I18N::translate('Employer');
747
+			case 'RFN':
748
+				return
749
+					/* I18N: gedcom tag RFN */
750
+					I18N::translate('Record file number');
751
+			case 'RIN':
752
+				return
753
+					/* I18N: gedcom tag RIN */
754
+					I18N::translate('Record ID number');
755
+			case 'ROLE':
756
+				return
757
+					/* I18N: gedcom tag ROLE */
758
+					I18N::translate('Role');
759
+			case 'ROMN':
760
+				return
761
+					/* I18N: gedcom tag ROMN */
762
+					I18N::translate('Romanized');
763
+			case 'SERV':
764
+				return
765
+					/* I18N: gedcom tag SERV */
766
+					I18N::translate('Remote server');
767
+			case 'SEX':
768
+				return
769
+					/* I18N: gedcom tag SEX */
770
+					I18N::translate('Gender');
771
+			case 'SHARED_NOTE':
772
+				return I18N::translate('Shared note');
773
+			case 'SLGC':
774
+				return
775
+					/* I18N: gedcom tag SLGC. LDS = Church of Latter Day Saints. */
776
+					I18N::translate('LDS child sealing');
777
+			case 'SLGC:DATE':
778
+				return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Date of LDS child sealing');
779
+			case 'SLGC:PLAC':
780
+				return /* I18N: LDS = Church of Latter Day Saints. */ I18N::translate('Place of LDS child sealing');
781
+			case 'SLGS':
782
+				return
783
+					/* I18N: gedcom tag SLGS. LDS = Church of Latter Day Saints. */
784
+					I18N::translate('LDS spouse sealing');
785
+			case 'SOUR':
786
+				return
787
+					/* I18N: gedcom tag SOUR */
788
+					I18N::translate('Source');
789
+			case 'SPFX':
790
+				return
791
+					/* I18N: gedcom tag SPFX */
792
+					I18N::translate('Surname prefix');
793
+			case 'SSN':
794
+				return
795
+					/* I18N: gedcom tag SSN */
796
+					I18N::translate('Social security number');
797
+			case 'STAE':
798
+				return
799
+					/* I18N: gedcom tag STAE */
800
+					I18N::translate('State');
801
+			case 'STAT':
802
+				return
803
+					/* I18N: gedcom tag STAT */
804
+					I18N::translate('Status');
805
+			case 'STAT:DATE':
806
+				return I18N::translate('Status change date');
807
+			case 'SUBM':
808
+				return
809
+					/* I18N: gedcom tag SUBM */
810
+					I18N::translate('Submitter');
811
+			case 'SUBN':
812
+				return
813
+					/* I18N: gedcom tag SUBN */
814
+					I18N::translate('Submission');
815
+			case 'SURN':
816
+				return
817
+					/* I18N: gedcom tag SURN */
818
+					I18N::translate('Surname');
819
+			case 'TEMP':
820
+				return
821
+					/* I18N: gedcom tag TEMP */
822
+					I18N::translate('Temple');
823
+			case 'TEXT':
824
+				return
825
+					/* I18N: gedcom tag TEXT */
826
+					I18N::translate('Text');
827
+			case 'TIME':
828
+				return
829
+					/* I18N: gedcom tag TIME */
830
+					I18N::translate('Time');
831
+			case 'TITL':
832
+				return
833
+					/* I18N: gedcom tag TITL */
834
+					I18N::translate('Title');
835
+			case 'TITL:FONE':
836
+				return I18N::translate('Phonetic title');
837
+			case 'TITL:ROMN':
838
+				return I18N::translate('Romanized title');
839
+			case 'TITL:_HEB':
840
+				return I18N::translate('Title in Hebrew');
841
+			case 'TRLR':
842
+				return
843
+					/* I18N: gedcom tag TRLR */
844
+					I18N::translate('Trailer');
845
+			case 'TYPE':
846
+				return
847
+					/* I18N: gedcom tag TYPE */
848
+					I18N::translate('Type');
849
+			case 'URL':
850
+				return
851
+					/* I18N: gedcom tag URL (A web address / URL) */
852
+					I18N::translate('URL');
853
+			case 'VERS':
854
+				return
855
+					/* I18N: gedcom tag VERS */
856
+					I18N::translate('Version');
857
+			case 'WIFE':
858
+				return
859
+					/* I18N: gedcom tag WIFE */
860
+					I18N::translate('Wife');
861
+			case 'WILL':
862
+				return
863
+					/* I18N: gedcom tag WILL */
864
+					I18N::translate('Will');
865
+			case 'WWW':
866
+				return
867
+					/* I18N: gedcom tag WWW (A web address / URL) */
868
+					I18N::translate('URL');
869
+			case '_ADOP_CHIL':
870
+				switch ($sex) {
871
+					case 'M':
872
+						return I18N::translate('Adoption of a son');
873
+					case 'F':
874
+						return I18N::translate('Adoption of a daughter');
875
+					default:
876
+						return I18N::translate('Adoption of a child');
877
+				}
878
+			case '_ADOP_GCHI':
879
+				switch ($sex) {
880
+					case 'M':
881
+						return I18N::translate('Adoption of a grandson');
882
+					case 'F':
883
+						return I18N::translate('Adoption of a granddaughter');
884
+					default:
885
+						return I18N::translate('Adoption of a grandchild');
886
+				}
887
+			case '_ADOP_GCH1':
888
+				switch ($sex) {
889
+					case 'M':
890
+						return I18N::translateContext('daughter’s son', 'Adoption of a grandson');
891
+					case 'F':
892
+						return I18N::translateContext('daughter’s daughter', 'Adoption of a granddaughter');
893
+					default:
894
+						return I18N::translate('Adoption of a grandchild');
895
+				}
896
+			case '_ADOP_GCH2':
897
+				switch ($sex) {
898
+					case 'M':
899
+						return I18N::translateContext('son’s son', 'Adoption of a grandson');
900
+					case 'F':
901
+						return I18N::translateContext('son’s daughter', 'Adoption of a granddaughter');
902
+					default:
903
+						return I18N::translate('Adoption of a grandchild');
904
+				}
905
+			case '_ADOP_HSIB':
906
+				switch ($sex) {
907
+					case 'M':
908
+						return I18N::translate('Adoption of a half-brother');
909
+					case 'F':
910
+						return I18N::translate('Adoption of a half-sister');
911
+					default:
912
+						return I18N::translate('Adoption of a half-sibling');
913
+				}
914
+			case '_ADOP_SIBL':
915
+				switch ($sex) {
916
+					case 'M':
917
+						return I18N::translate('Adoption of a brother');
918
+					case 'F':
919
+						return I18N::translate('Adoption of a sister');
920
+					default:
921
+						return I18N::translate('Adoption of a sibling');
922
+				}
923
+			case '_ADPF':
924
+				switch ($sex) {
925
+					case 'M':
926
+						return
927
+							/* I18N: gedcom tag _ADPF */
928
+							I18N::translateContext('MALE', 'Adopted by father');
929
+					case 'F':
930
+						return
931
+							/* I18N: gedcom tag _ADPF */
932
+							I18N::translateContext('FEMALE', 'Adopted by father');
933
+					default:
934
+						return
935
+							/* I18N: gedcom tag _ADPF */
936
+							I18N::translate('Adopted by father');
937
+				}
938
+			case '_ADPM':
939
+				switch ($sex) {
940
+					case 'M':
941
+						return
942
+							/* I18N: gedcom tag _ADPM */
943
+							I18N::translateContext('MALE', 'Adopted by mother');
944
+					case 'F':
945
+						return
946
+							/* I18N: gedcom tag _ADPM */
947
+							I18N::translateContext('FEMALE', 'Adopted by mother');
948
+					default:
949
+						return
950
+							/* I18N: gedcom tag _ADPM */
951
+							I18N::translate('Adopted by mother');
952
+				}
953
+			case '_AKA':
954
+			case '_AKAN':
955
+				switch ($sex) {
956
+					case 'M':
957
+						return
958
+							/* I18N: gedcom tag _AKA */
959
+							I18N::translateContext('MALE', 'Also known as');
960
+					case 'F':
961
+						return
962
+							/* I18N: gedcom tag _AKA */
963
+							I18N::translateContext('FEMALE', 'Also known as');
964
+					default:
965
+						return
966
+							/* I18N: gedcom tag _AKA */
967
+							I18N::translate('Also known as');
968
+				}
969
+			case '_ASSO':
970
+				return
971
+					/* I18N: gedcom tag _ASSO */
972
+					I18N::translate('Associate'); /* see also ASSO */
973
+			case '_BAPM_CHIL':
974
+				switch ($sex) {
975
+					case 'M':
976
+						return I18N::translate('Baptism of a son');
977
+					case 'F':
978
+						return I18N::translate('Baptism of a daughter');
979
+					default:
980
+						return I18N::translate('Baptism of a child');
981
+				}
982
+			case '_BAPM_GCHI':
983
+				switch ($sex) {
984
+					case 'M':
985
+						return I18N::translate('Baptism of a grandson');
986
+					case 'F':
987
+						return I18N::translate('Baptism of a granddaughter');
988
+					default:
989
+						return I18N::translate('Baptism of a grandchild');
990
+				}
991
+			case '_BAPM_GCH1':
992
+				switch ($sex) {
993
+					case 'M':
994
+						return I18N::translateContext('daughter’s son', 'Baptism of a grandson');
995
+					case 'F':
996
+						return I18N::translateContext('daughter’s daughter', 'Baptism of a granddaughter');
997
+					default:
998
+						return I18N::translate('Baptism of a grandchild');
999
+				}
1000
+			case '_BAPM_GCH2':
1001
+				switch ($sex) {
1002
+					case 'M':
1003
+						return I18N::translateContext('son’s son', 'Baptism of a grandson');
1004
+					case 'F':
1005
+						return I18N::translateContext('son’s daughter', 'Baptism of a granddaughter');
1006
+					default:
1007
+						return I18N::translate('Baptism of a grandchild');
1008
+				}
1009
+			case '_BAPM_HSIB':
1010
+				switch ($sex) {
1011
+					case 'M':
1012
+						return I18N::translate('Baptism of a half-brother');
1013
+					case 'F':
1014
+						return I18N::translate('Baptism of a half-sister');
1015
+					default:
1016
+						return I18N::translate('Baptism of a half-sibling');
1017
+				}
1018
+			case '_BAPM_SIBL':
1019
+				switch ($sex) {
1020
+					case 'M':
1021
+						return I18N::translate('Baptism of a brother');
1022
+					case 'F':
1023
+						return I18N::translate('Baptism of a sister');
1024
+					default:
1025
+						return I18N::translate('Baptism of a sibling');
1026
+				}
1027
+			case '_BIBL':
1028
+				return
1029
+					/* I18N: gedcom tag _BIBL */
1030
+					I18N::translate('Bibliography');
1031
+			case '_BIRT_CHIL':
1032
+				switch ($sex) {
1033
+					case 'M':
1034
+						return I18N::translate('Birth of a son');
1035
+					case 'F':
1036
+						return I18N::translate('Birth of a daughter');
1037
+					default:
1038
+						return I18N::translate('Birth of a child');
1039
+				}
1040
+			case '_BIRT_GCHI':
1041
+				switch ($sex) {
1042
+					case 'M':
1043
+						return I18N::translate('Birth of a grandson');
1044
+					case 'F':
1045
+						return I18N::translate('Birth of a granddaughter');
1046
+					default:
1047
+						return I18N::translate('Birth of a grandchild');
1048
+				}
1049
+			case '_BIRT_GCH1':
1050
+				switch ($sex) {
1051
+					case 'M':
1052
+						return I18N::translateContext('daughter’s son', 'Birth of a grandson');
1053
+					case 'F':
1054
+						return I18N::translateContext('daughter’s daughter', 'Birth of a granddaughter');
1055
+					default:
1056
+						return I18N::translate('Birth of a grandchild');
1057
+				}
1058
+			case '_BIRT_GCH2':
1059
+				switch ($sex) {
1060
+					case 'M':
1061
+						return I18N::translateContext('son’s son', 'Birth of a grandson');
1062
+					case 'F':
1063
+						return I18N::translateContext('son’s daughter', 'Birth of a granddaughter');
1064
+					default:
1065
+						return I18N::translate('Birth of a grandchild');
1066
+				}
1067
+			case '_BIRT_HSIB':
1068
+				switch ($sex) {
1069
+					case 'M':
1070
+						return I18N::translate('Birth of a half-brother');
1071
+					case 'F':
1072
+						return I18N::translate('Birth of a half-sister');
1073
+					default:
1074
+						return I18N::translate('Birth of a half-sibling');
1075
+				}
1076
+			case '_BIRT_SIBL':
1077
+				switch ($sex) {
1078
+					case 'M':
1079
+						return I18N::translate('Birth of a brother');
1080
+					case 'F':
1081
+						return I18N::translate('Birth of a sister');
1082
+					default:
1083
+						return I18N::translate('Birth of a sibling');
1084
+				}
1085
+			case '_BRTM':
1086
+				return
1087
+					/* I18N: gedcom tag _BRTM */
1088
+					I18N::translate('Brit milah');
1089
+			case '_BRTM:DATE':
1090
+				return I18N::translate('Date of brit milah');
1091
+			case '_BRTM:PLAC':
1092
+				return I18N::translate('Place of brit milah');
1093
+			case '_BURI_CHIL':
1094
+				switch ($sex) {
1095
+					case 'M':
1096
+						return I18N::translate('Burial of a son');
1097
+					case 'F':
1098
+						return I18N::translate('Burial of a daughter');
1099
+					default:
1100
+						return I18N::translate('Burial of a child');
1101
+				}
1102
+			case '_BURI_GCHI':
1103
+				switch ($sex) {
1104
+					case 'M':
1105
+						return I18N::translate('Burial of a grandson');
1106
+					case 'F':
1107
+						return I18N::translate('Burial of a granddaughter');
1108
+					default:
1109
+						return I18N::translate('Burial of a grandchild');
1110
+				}
1111
+			case '_BURI_GCH1':
1112
+				switch ($sex) {
1113
+					case 'M':
1114
+						return I18N::translateContext('daughter’s son', 'Burial of a grandson');
1115
+					case 'F':
1116
+						return I18N::translateContext('daughter’s daughter', 'Burial of a granddaughter');
1117
+					default:
1118
+						return I18N::translate('Burial of a grandchild');
1119
+				}
1120
+			case '_BURI_GCH2':
1121
+				switch ($sex) {
1122
+					case 'M':
1123
+						return I18N::translateContext('son’s son', 'Burial of a grandson');
1124
+					case 'F':
1125
+						return I18N::translateContext('son’s daughter', 'Burial of a granddaughter');
1126
+					default:
1127
+						return I18N::translate('Burial of a grandchild');
1128
+				}
1129
+			case '_BURI_GPAR':
1130
+				switch ($sex) {
1131
+					case 'M':
1132
+						return I18N::translate('Burial of a grandfather');
1133
+					case 'F':
1134
+						return I18N::translate('Burial of a grandmother');
1135
+					default:
1136
+						return I18N::translate('Burial of a grandparent');
1137
+				}
1138
+			case '_BURI_GPA1':
1139
+				switch ($sex) {
1140
+					case 'M':
1141
+						return I18N::translate('Burial of a paternal grandfather');
1142
+					case 'F':
1143
+						return I18N::translate('Burial of a paternal grandmother');
1144
+					default:
1145
+						return I18N::translate('Burial of a paternal grandparent');
1146
+				}
1147
+			case '_BURI_GPA2':
1148
+				switch ($sex) {
1149
+					case 'M':
1150
+						return I18N::translate('Burial of a maternal grandfather');
1151
+					case 'F':
1152
+						return I18N::translate('Burial of a maternal grandmother');
1153
+					default:
1154
+						return I18N::translate('Burial of a maternal grandparent');
1155
+				}
1156
+			case '_BURI_HSIB':
1157
+				switch ($sex) {
1158
+					case 'M':
1159
+						return I18N::translate('Burial of a half-brother');
1160
+					case 'F':
1161
+						return I18N::translate('Burial of a half-sister');
1162
+					default:
1163
+						return I18N::translate('Burial of a half-sibling');
1164
+				}
1165
+			case '_BURI_PARE':
1166
+				switch ($sex) {
1167
+					case 'M':
1168
+						return I18N::translate('Burial of a father');
1169
+					case 'F':
1170
+						return I18N::translate('Burial of a mother');
1171
+					default:
1172
+						return I18N::translate('Burial of a parent');
1173
+				}
1174
+			case '_BURI_SIBL':
1175
+				switch ($sex) {
1176
+					case 'M':
1177
+						return I18N::translate('Burial of a brother');
1178
+					case 'F':
1179
+						return I18N::translate('Burial of a sister');
1180
+					default:
1181
+						return I18N::translate('Burial of a sibling');
1182
+				}
1183
+			case '_BURI_SPOU':
1184
+				switch ($sex) {
1185
+					case 'M':
1186
+						return I18N::translate('Burial of a husband');
1187
+					case 'F':
1188
+						return I18N::translate('Burial of a wife');
1189
+					default:
1190
+						return I18N::translate('Burial of a spouse');
1191
+				}
1192
+			case '_CHR_CHIL':
1193
+				switch ($sex) {
1194
+					case 'M':
1195
+						return I18N::translate('Christening of a son');
1196
+					case 'F':
1197
+						return I18N::translate('Christening of a daughter');
1198
+					default:
1199
+						return I18N::translate('Christening of a child');
1200
+				}
1201
+			case '_CHR_GCHI':
1202
+				switch ($sex) {
1203
+					case 'M':
1204
+						return I18N::translate('Christening of a grandson');
1205
+					case 'F':
1206
+						return I18N::translate('Christening of a granddaughter');
1207
+					default:
1208
+						return I18N::translate('Christening of a grandchild');
1209
+				}
1210
+			case '_CHR_GCH1':
1211
+				switch ($sex) {
1212
+					case 'M':
1213
+						return I18N::translateContext('daughter’s son', 'Christening of a grandson');
1214
+					case 'F':
1215
+						return I18N::translateContext('daughter’s daughter', 'Christening of a granddaughter');
1216
+					default:
1217
+						return I18N::translate('Christening of a grandchild');
1218
+				}
1219
+			case '_CHR_GCH2':
1220
+				switch ($sex) {
1221
+					case 'M':
1222
+						return I18N::translateContext('son’s son', 'Christening of a grandson');
1223
+					case 'F':
1224
+						return I18N::translateContext('son’s daughter', 'Christening of a granddaughter');
1225
+					default:
1226
+						return I18N::translate('Christening of a grandchild');
1227
+				}
1228
+			case '_CHR_HSIB':
1229
+				switch ($sex) {
1230
+					case 'M':
1231
+						return I18N::translate('Christening of a half-brother');
1232
+					case 'F':
1233
+						return I18N::translate('Christening of a half-sister');
1234
+					default:
1235
+						return I18N::translate('Christening of a half-sibling');
1236
+				}
1237
+			case '_CHR_SIBL':
1238
+				switch ($sex) {
1239
+					case 'M':
1240
+						return I18N::translate('Christening of a brother');
1241
+					case 'F':
1242
+						return I18N::translate('Christening of a sister');
1243
+					default:
1244
+						return I18N::translate('Christening of a sibling');
1245
+				}
1246
+			case '_COML':
1247
+				return
1248
+					/* I18N: gedcom tag _COML */
1249
+					I18N::translate('Common law marriage');
1250
+			case '_CREM_CHIL':
1251
+				switch ($sex) {
1252
+					case 'M':
1253
+						return I18N::translate('Cremation of a son');
1254
+					case 'F':
1255
+						return I18N::translate('Cremation of a daughter');
1256
+					default:
1257
+						return I18N::translate('Cremation of a child');
1258
+				}
1259
+			case '_CREM_GCHI':
1260
+				switch ($sex) {
1261
+					case 'M':
1262
+						return I18N::translate('Cremation of a grandson');
1263
+					case 'F':
1264
+						return I18N::translate('Cremation of a granddaughter');
1265
+					default:
1266
+						return I18N::translate('Cremation of a grandchild');
1267
+				}
1268
+			case '_CREM_GCH1':
1269
+				switch ($sex) {
1270
+					case 'M':
1271
+						return I18N::translateContext('daughter’s son', 'Cremation of a grandson');
1272
+					case 'F':
1273
+						return I18N::translateContext('daughter’s daughter', 'Cremation of a granddaughter');
1274
+					default:
1275
+						return I18N::translate('Cremation of a grandchild');
1276
+				}
1277
+			case '_CREM_GCH2':
1278
+				switch ($sex) {
1279
+					case 'M':
1280
+						return I18N::translateContext('son’s son', 'Cremation of a grandson');
1281
+					case 'F':
1282
+						return I18N::translateContext('son’s daughter', 'Cremation of a granddaughter');
1283
+					default:
1284
+						return I18N::translate('Cremation of a grandchild');
1285
+				}
1286
+			case '_CREM_GPAR':
1287
+				switch ($sex) {
1288
+					case 'M':
1289
+						return I18N::translate('Cremation of a grandfather');
1290
+					case 'F':
1291
+						return I18N::translate('Cremation of a grandmother');
1292
+					default:
1293
+						return I18N::translate('Cremation of a grand-parent');
1294
+				}
1295
+			case '_CREM_GPA1':
1296
+				switch ($sex) {
1297
+					case 'M':
1298
+						return I18N::translate('Cremation of a paternal grandfather');
1299
+					case 'F':
1300
+						return I18N::translate('Cremation of a paternal grandmother');
1301
+					default:
1302
+						return I18N::translate('Cremation of a grand-parent');
1303
+				}
1304
+			case '_CREM_GPA2':
1305
+				switch ($sex) {
1306
+					case 'M':
1307
+						return I18N::translate('Cremation of a maternal grandfather');
1308
+					case 'F':
1309
+						return I18N::translate('Cremation of a maternal grandmother');
1310
+					default:
1311
+						return I18N::translate('Cremation of a grand-parent');
1312
+				}
1313
+			case '_CREM_HSIB':
1314
+				switch ($sex) {
1315
+					case 'M':
1316
+						return I18N::translate('Cremation of a half-brother');
1317
+					case 'F':
1318
+						return I18N::translate('Cremation of a half-sister');
1319
+					default:
1320
+						return I18N::translate('Cremation of a half-sibling');
1321
+				}
1322
+			case '_CREM_PARE':
1323
+				switch ($sex) {
1324
+					case 'M':
1325
+						return I18N::translate('Cremation of a father');
1326
+					case 'F':
1327
+						return I18N::translate('Cremation of a mother');
1328
+					default:
1329
+						return I18N::translate('Cremation of a parent');
1330
+				}
1331
+			case '_CREM_SIBL':
1332
+				switch ($sex) {
1333
+					case 'M':
1334
+						return I18N::translate('Cremation of a brother');
1335
+					case 'F':
1336
+						return I18N::translate('Cremation of a sister');
1337
+					default:
1338
+						return I18N::translate('Cremation of a sibling');
1339
+				}
1340
+			case '_CREM_SPOU':
1341
+				switch ($sex) {
1342
+					case 'M':
1343
+						return I18N::translate('Cremation of a husband');
1344
+					case 'F':
1345
+						return I18N::translate('Cremation of a wife');
1346
+					default:
1347
+						return I18N::translate('Cremation of a spouse');
1348
+				}
1349
+			case '_DBID':
1350
+				return
1351
+					/* I18N: gedcom tag _DBID */
1352
+					I18N::translate('Linked database ID');
1353
+			case '_DEAT_CHIL':
1354
+				switch ($sex) {
1355
+					case 'M':
1356
+						return I18N::translate('Death of a son');
1357
+					case 'F':
1358
+						return I18N::translate('Death of a daughter');
1359
+					default:
1360
+						return I18N::translate('Death of a child');
1361
+				}
1362
+			case '_DEAT_GCHI':
1363
+				switch ($sex) {
1364
+					case 'M':
1365
+						return I18N::translate('Death of a grandson');
1366
+					case 'F':
1367
+						return I18N::translate('Death of a granddaughter');
1368
+					default:
1369
+						return I18N::translate('Death of a grandchild');
1370
+				}
1371
+			case '_DEAT_GCH1':
1372
+				switch ($sex) {
1373
+					case 'M':
1374
+						return I18N::translateContext('daughter’s son', 'Death of a grandson');
1375
+					case 'F':
1376
+						return I18N::translateContext('daughter’s daughter', 'Death of a granddaughter');
1377
+					default:
1378
+						return I18N::translate('Death of a grandchild');
1379
+				}
1380
+			case '_DEAT_GCH2':
1381
+				switch ($sex) {
1382
+					case 'M':
1383
+						return I18N::translateContext('son’s son', 'Death of a grandson');
1384
+					case 'F':
1385
+						return I18N::translateContext('son’s daughter', 'Death of a granddaughter');
1386
+					default:
1387
+						return I18N::translate('Death of a grandchild');
1388
+				}
1389
+			case '_DEAT_GPAR':
1390
+				switch ($sex) {
1391
+					case 'M':
1392
+						return I18N::translate('Death of a grandfather');
1393
+					case 'F':
1394
+						return I18N::translate('Death of a grandmother');
1395
+					default:
1396
+						return I18N::translate('Death of a grand-parent');
1397
+				}
1398
+			case '_DEAT_GPA1':
1399
+				switch ($sex) {
1400
+					case 'M':
1401
+						return I18N::translate('Death of a paternal grandfather');
1402
+					case 'F':
1403
+						return I18N::translate('Death of a paternal grandmother');
1404
+					default:
1405
+						return I18N::translate('Death of a grand-parent');
1406
+				}
1407
+			case '_DEAT_GPA2':
1408
+				switch ($sex) {
1409
+					case 'M':
1410
+						return I18N::translate('Death of a maternal grandfather');
1411
+					case 'F':
1412
+						return I18N::translate('Death of a maternal grandmother');
1413
+					default:
1414
+						return I18N::translate('Death of a grand-parent');
1415
+				}
1416
+			case '_DEAT_HSIB':
1417
+				switch ($sex) {
1418
+					case 'M':
1419
+						return I18N::translate('Death of a half-brother');
1420
+					case 'F':
1421
+						return I18N::translate('Death of a half-sister');
1422
+					default:
1423
+						return I18N::translate('Death of a half-sibling');
1424
+				}
1425
+			case '_DEAT_PARE':
1426
+				switch ($sex) {
1427
+					case 'M':
1428
+						return I18N::translate('Death of a father');
1429
+					case 'F':
1430
+						return I18N::translate('Death of a mother');
1431
+					default:
1432
+						return I18N::translate('Death of a parent');
1433
+				}
1434
+			case '_DEAT_SIBL':
1435
+				switch ($sex) {
1436
+					case 'M':
1437
+						return I18N::translate('Death of a brother');
1438
+					case 'F':
1439
+						return I18N::translate('Death of a sister');
1440
+					default:
1441
+						return I18N::translate('Death of a sibling');
1442
+				}
1443
+			case '_DEAT_SPOU':
1444
+				switch ($sex) {
1445
+					case 'M':
1446
+						return I18N::translate('Death of a husband');
1447
+					case 'F':
1448
+						return I18N::translate('Death of a wife');
1449
+					default:
1450
+						return I18N::translate('Death of a spouse');
1451
+				}
1452
+			case '_DEG':
1453
+				return
1454
+					/* I18N: gedcom tag _DEG */
1455
+					I18N::translate('Degree');
1456
+			case '_DETS':
1457
+				return
1458
+					/* I18N: gedcom tag _DETS */
1459
+					I18N::translate('Death of one spouse');
1460
+			case '_DNA':
1461
+				return
1462
+					/* I18N: gedcom tag _DNA (from FTM 2010) */
1463
+					I18N::translate('DNA markers');
1464
+			case '_EMAIL':
1465
+				return
1466
+					/* I18N: gedcom tag _EMAIL */
1467
+					I18N::translate('Email address');
1468
+			case '_EYEC':
1469
+				return
1470
+					/* I18N: gedcom tag _EYEC */
1471
+					I18N::translate('Eye color');
1472
+			case '_FA1':
1473
+				return I18N::translate('Fact 1');
1474
+			case '_FA2':
1475
+				return I18N::translate('Fact 2');
1476
+			case '_FA3':
1477
+				return I18N::translate('Fact 3');
1478
+			case '_FA4':
1479
+				return I18N::translate('Fact 4');
1480
+			case '_FA5':
1481
+				return I18N::translate('Fact 5');
1482
+			case '_FA6':
1483
+				return I18N::translate('Fact 6');
1484
+			case '_FA7':
1485
+				return I18N::translate('Fact 7');
1486
+			case '_FA8':
1487
+				return I18N::translate('Fact 8');
1488
+			case '_FA9':
1489
+				return I18N::translate('Fact 9');
1490
+			case '_FA10':
1491
+				return I18N::translate('Fact 10');
1492
+			case '_FA11':
1493
+				return I18N::translate('Fact 11');
1494
+			case '_FA12':
1495
+				return I18N::translate('Fact 12');
1496
+			case '_FA13':
1497
+				return I18N::translate('Fact 13');
1498
+			case '_FNRL':
1499
+				return
1500
+					/* I18N: gedcom tag _FNRL */
1501
+					I18N::translate('Funeral');
1502
+			case '_FREL':
1503
+				return
1504
+					/* I18N: gedcom tag _FREL */
1505
+					I18N::translate('Relationship to father');
1506
+			case '_GEDF':
1507
+				return
1508
+					/* I18N: gedcom tag _GEDF */
1509
+					I18N::translate('GEDCOM file');
1510
+			case '_GODP':
1511
+				return
1512
+					/* I18N: gedcom tag _GODP */
1513
+					I18N::translate('Godparent');
1514
+			case '_HAIR':
1515
+				return
1516
+					/* I18N: gedcom tag _HAIR */
1517
+					I18N::translate('Hair color');
1518
+			case '_HEB':
1519
+				return
1520
+					/* I18N: gedcom tag _HEB */
1521
+					I18N::translate('Hebrew');
1522
+			case '_HEIG':
1523
+				return
1524
+					/* I18N: gedcom tag _HEIG */
1525
+					I18N::translate('Height');
1526
+			case '_HNM':
1527
+				return
1528
+					/* I18N: gedcom tag _HNM */
1529
+					I18N::translate('Hebrew name');
1530
+			case '_HOL':
1531
+				return
1532
+					/* I18N: gedcom tag _HOL */
1533
+					I18N::translate('Holocaust');
1534
+			case '_INTE':
1535
+				switch ($sex) {
1536
+					case 'M':
1537
+						return
1538
+							/* I18N: gedcom tag _INTE */
1539
+							I18N::translateContext('MALE', 'Interred');
1540
+					case 'F':
1541
+						return
1542
+							/* I18N: gedcom tag _INTE */
1543
+							I18N::translateContext('FEMALE', 'Interred');
1544
+					default:
1545
+						return
1546
+							/* I18N: gedcom tag _INTE */
1547
+							I18N::translate('Interred');
1548
+				}
1549
+			case '_LOC':
1550
+				return
1551
+					/* I18N: gedcom tag _LOC */
1552
+					I18N::translate('Location');
1553
+			case '_MARI':
1554
+				return
1555
+					/* I18N: gedcom tag _MARI */
1556
+					I18N::translate('Marriage intention');
1557
+			case '_MARNM':
1558
+				return
1559
+					/* I18N: gedcom tag _MARNM */
1560
+					I18N::translate('Married name');
1561
+			case '_PRIM':
1562
+				return
1563
+					/* I18N: gedcom tag _PRIM */
1564
+					I18N::translate('Highlighted image');
1565
+			case '_MARNM_SURN':
1566
+				return I18N::translate('Married surname');
1567
+			case '_MARR_CHIL':
1568
+				switch ($sex) {
1569
+					case 'M':
1570
+						return I18N::translate('Marriage of a son');
1571
+					case 'F':
1572
+						return I18N::translate('Marriage of a daughter');
1573
+					default:
1574
+						return I18N::translate('Marriage of a child');
1575
+				}
1576
+			case '_MARR_FAMC':
1577
+				return
1578
+					/* I18N: ...to each other */
1579
+					I18N::translate('Marriage of parents');
1580
+			case '_MARR_GCHI':
1581
+				switch ($sex) {
1582
+					case 'M':
1583
+						return I18N::translate('Marriage of a grandson');
1584
+					case 'F':
1585
+						return I18N::translate('Marriage of a granddaughter');
1586
+					default:
1587
+						return I18N::translate('Marriage of a grandchild');
1588
+				}
1589
+			case '_MARR_GCH1':
1590
+				switch ($sex) {
1591
+					case 'M':
1592
+						return I18N::translateContext('daughter’s son', 'Marriage of a grandson');
1593
+					case 'F':
1594
+						return I18N::translateContext('daughter’s daughter', 'Marriage of a granddaughter');
1595
+					default:
1596
+						return I18N::translate('Marriage of a grandchild');
1597
+				}
1598
+			case '_MARR_GCH2':
1599
+				switch ($sex) {
1600
+					case 'M':
1601
+						return I18N::translateContext('son’s son', 'Marriage of a grandson');
1602
+					case 'F':
1603
+						return I18N::translateContext('son’s daughter', 'Marriage of a granddaughter');
1604
+					default:
1605
+						return I18N::translate('Marriage of a grandchild');
1606
+				}
1607
+			case '_MARR_HSIB':
1608
+				switch ($sex) {
1609
+					case 'M':
1610
+						return I18N::translate('Marriage of a half-brother');
1611
+					case 'F':
1612
+						return I18N::translate('Marriage of a half-sister');
1613
+					default:
1614
+						return I18N::translate('Marriage of a half-sibling');
1615
+				}
1616
+			case '_MARR_PARE':
1617
+				switch ($sex) {
1618
+					case 'M':
1619
+						return
1620
+							/* I18N: ...to another spouse */
1621
+							I18N::translate('Marriage of a father');
1622
+					case 'F':
1623
+						return
1624
+							/* I18N: ...to another spouse */
1625
+							I18N::translate('Marriage of a mother');
1626
+					default:
1627
+						return
1628
+							/* I18N: ...to another spouse */
1629
+							I18N::translate('Marriage of a parent');
1630
+				}
1631
+			case '_MARR_SIBL':
1632
+				switch ($sex) {
1633
+					case 'M':
1634
+						return I18N::translate('Marriage of a brother');
1635
+					case 'F':
1636
+						return I18N::translate('Marriage of a sister');
1637
+					default:
1638
+						return I18N::translate('Marriage of a sibling');
1639
+				}
1640
+			case '_MBON':
1641
+				return
1642
+					/* I18N: gedcom tag _MBON */
1643
+					I18N::translate('Marriage bond');
1644
+			case '_MDCL':
1645
+				return
1646
+					/* I18N: gedcom tag _MDCL */
1647
+					I18N::translate('Medical');
1648
+			case '_MEDC':
1649
+				return
1650
+					/* I18N: gedcom tag _MEDC */
1651
+					I18N::translate('Medical condition');
1652
+			case '_MEND':
1653
+				return
1654
+					/* I18N: gedcom tag _MEND */
1655
+					I18N::translate('Marriage ending status');
1656
+			case '_MILI':
1657
+				return
1658
+					/* I18N: gedcom tag _MILI */
1659
+					I18N::translate('Military');
1660
+			case '_MILT':
1661
+				return
1662
+					/* I18N: gedcom tag _MILT */
1663
+					I18N::translate('Military service');
1664
+			case '_MREL':
1665
+				return
1666
+					/* I18N: gedcom tag _MREL */
1667
+					I18N::translate('Relationship to mother');
1668
+			case '_MSTAT':
1669
+				return
1670
+					/* I18N: gedcom tag _MSTAT */
1671
+					I18N::translate('Marriage beginning status');
1672
+			case '_NAME':
1673
+				return
1674
+					/* I18N: gedcom tag _NAME */
1675
+					I18N::translate('Mailing name');
1676
+			case '_NAMS':
1677
+				return
1678
+					/* I18N: gedcom tag _NAMS */
1679
+					I18N::translate('Namesake');
1680
+			case '_NLIV':
1681
+				return
1682
+					/* I18N: gedcom tag _NLIV */
1683
+					I18N::translate('Not living');
1684
+			case '_NMAR':
1685
+				switch ($sex) {
1686
+					case 'M':
1687
+						return
1688
+							/* I18N: gedcom tag _NMAR */
1689
+							I18N::translateContext('MALE', 'Never married');
1690
+					case 'F':
1691
+						return
1692
+							/* I18N: gedcom tag _NMAR */
1693
+							I18N::translateContext('FEMALE', 'Never married');
1694
+					default:
1695
+						return
1696
+							/* I18N: gedcom tag _NMAR */
1697
+							I18N::translate('Never married');
1698
+				}
1699
+			case '_NMR':
1700
+				switch ($sex) {
1701
+					case 'M':
1702
+						return
1703
+							/* I18N: gedcom tag _NMR */
1704
+							I18N::translateContext('MALE', 'Not married');
1705
+					case 'F':
1706
+						return
1707
+							/* I18N: gedcom tag _NMR */
1708
+							I18N::translateContext('FEMALE', 'Not married');
1709
+					default:
1710
+						return
1711
+							/* I18N: gedcom tag _NMR */
1712
+							I18N::translate('Not married');
1713
+				}
1714
+			case '_WT_USER':
1715
+				return I18N::translate('by');
1716
+			case '_PRMN':
1717
+				return
1718
+					/* I18N: gedcom tag _PRMN */
1719
+					I18N::translate('Permanent number');
1720
+			case '_SCBK':
1721
+				return
1722
+					/* I18N: gedcom tag _SCBK */
1723
+					I18N::translate('Scrapbook');
1724
+			case '_SEPR':
1725
+				return
1726
+					/* I18N: gedcom tag _SEPR */
1727
+					I18N::translate('Separated');
1728
+			case '_SSHOW':
1729
+				return
1730
+					/* I18N: gedcom tag _SSHOW */
1731
+					I18N::translate('Slide show');
1732
+			case '_STAT':
1733
+				return
1734
+					/* I18N: gedcom tag _STAT */
1735
+					I18N::translate('Marriage status');
1736
+			case '_SUBQ':
1737
+				return
1738
+					/* I18N: gedcom tag _SUBQ */
1739
+					I18N::translate('Short version');
1740
+			case '_TODO':
1741
+				return
1742
+					/* I18N: gedcom tag _TODO */
1743
+					I18N::translate('Research task');
1744
+			case '_TYPE':
1745
+				return
1746
+					/* I18N: gedcom tag _TYPE */
1747
+					I18N::translate('Media type');
1748
+			case '_UID':
1749
+				return
1750
+					/* I18N: gedcom tag _UID */
1751
+					I18N::translate('Unique identifier');
1752
+			case '_URL':
1753
+				return
1754
+					/* I18N: gedcom tag _URL */
1755
+					I18N::translate('URL');
1756
+			case '_WEIG':
1757
+				return
1758
+					/* I18N: gedcom tag _WEIG */
1759
+					I18N::translate('Weight');
1760
+			case '_WITN':
1761
+				return
1762
+					/* I18N: gedcom tag _WITN */
1763
+					I18N::translate('Witness');
1764
+			case '_WT_OBJE_SORT':
1765
+				return
1766
+					/* I18N: gedcom tag _WT_OBJE_SORT */
1767
+					I18N::translate('Re-order media');
1768
+			case '_YART':
1769
+				return /* I18N: gedcom tag _YART - A yahrzeit is a special anniversary of death in the Hebrew faith/calendar. */ I18N::translate('Yahrzeit');
1770
+				// Brit milah applies only to males, no need for male/female translations
1771
+			case '__BRTM_CHIL':
1772
+				return I18N::translate('Brit milah of a son');
1773
+			case '__BRTM_GCHI':
1774
+				return I18N::translate('Brit milah of a grandson');
1775
+			case '__BRTM_GCH1':
1776
+				return I18N::translateContext('daughter’s son', 'Brit milah of a grandson');
1777
+			case '__BRTM_GCH2':
1778
+				return I18N::translateContext('son’s son', 'Brit milah of a grandson');
1779
+			case '__BRTM_HSIB':
1780
+				return I18N::translate('Brit milah of a half-brother');
1781
+			case '__BRTM_SIBL':
1782
+				return I18N::translate('Brit milah of a brother');
1783
+				// These "pseudo" tags are generated internally to present information about a media object
1784
+			case '__FILE_SIZE__':
1785
+				return I18N::translate('File size');
1786
+			case '__IMAGE_SIZE__':
1787
+				return I18N::translate('Image dimensions');
1788
+			default:
1789
+				// If no specialisation exists (e.g. DEAT:CAUS), then look for the general (CAUS)
1790
+				if (strpos($tag, ':')) {
1791
+					list(, $tag) = explode(':', $tag, 2);
1792 1792
 
1793
-				return self::getLabel($tag, $record);
1794
-			}
1793
+					return self::getLabel($tag, $record);
1794
+				}
1795 1795
 
1796
-			// Still no translation? Highlight this as an error
1797
-			return '<span class="error" title="' . I18N::translate('Unrecognized GEDCOM code') . '">' . Filter::escapeHtml($tag) . '</span>';
1796
+				// Still no translation? Highlight this as an error
1797
+				return '<span class="error" title="' . I18N::translate('Unrecognized GEDCOM code') . '">' . Filter::escapeHtml($tag) . '</span>';
1798 1798
 		}
1799 1799
 	}
1800 1800
 
@@ -1823,69 +1823,69 @@  discard block
 block discarded – undo
1823 1823
 	 */
1824 1824
 	public static function getPicklistFacts($fact_type) {
1825 1825
 		switch ($fact_type) {
1826
-		case 'INDI':
1827
-			$tags = array(
1828
-				// Facts, attributes for individuals (no links to FAMs)
1829
-				'RESN', 'NAME', 'SEX', 'BIRT', 'CHR', 'DEAT', 'BURI', 'CREM',
1830
-				'ADOP', 'BAPM', 'BARM', 'BASM', 'BLES', 'CHRA', 'CONF', 'FCOM', 'ORDN',
1831
-				'NATU', 'EMIG', 'IMMI', 'CENS', 'PROB', 'WILL', 'GRAD', 'RETI', 'EVEN',
1832
-				'CAST', 'DSCR', 'EDUC', 'IDNO', 'NATI', 'NCHI', 'NMR',
1833
-				'OCCU', 'PROP', 'RELI', 'RESI', 'SSN', 'TITL', 'FACT',
1834
-				'BAPL', 'CONL', 'ENDL', 'SLGC',
1835
-				'SUBM', 'ASSO', 'ALIA', 'ANCI', 'DESI', 'RFN', 'AFN',
1836
-				'REFN', 'RIN', 'CHAN', 'NOTE', 'SHARED_NOTE', 'SOUR', 'OBJE',
1837
-				// non standard tags
1838
-				'_BRTM', '_DEG', '_DNA', '_EYEC', '_FNRL', '_HAIR', '_HEIG', '_HNM',
1839
-				'_HOL', '_INTE', '_MDCL', '_MEDC', '_MILI', '_MILT', '_NAME', '_NAMS',
1840
-				'_NLIV', '_NMAR', '_PRMN', '_TODO', '_UID', '_WEIG', '_YART',
1841
-			);
1842
-			break;
1843
-		case 'FAM':
1844
-			$tags = array(
1845
-				// Facts for families, left out HUSB, WIFE & CHIL links
1846
-				'RESN', 'ANUL', 'CENS', 'DIV', 'DIVF', 'ENGA', 'MARB', 'MARC',
1847
-				'MARR', 'MARL', 'MARS', 'RESI', 'EVEN', 'NCHI', 'SUBM', 'SLGS',
1848
-				'REFN', 'RIN', 'CHAN', 'NOTE', 'SHARED_NOTE', 'SOUR', 'OBJE',
1849
-				// non standard tags
1850
-				'_NMR', 'MARR_CIVIL', 'MARR_RELIGIOUS', 'MARR_PARTNERS', 'MARR_UNKNOWN',
1851
-				'_COML', '_MBON', '_MARI', '_SEPR', '_TODO',
1852
-			);
1853
-		break;
1854
-		case 'SOUR':
1855
-			$tags = array(
1856
-				// Facts for sources
1857
-				'DATA', 'AUTH', 'TITL', 'ABBR', 'PUBL', 'TEXT', 'REPO', 'REFN', 'RIN',
1858
-				'CHAN', 'NOTE', 'SHARED_NOTE', 'OBJE',
1859
-				'RESN',
1860
-			);
1861
-			break;
1862
-		case 'REPO':
1863
-			$tags = array(
1864
-				// Facts for repositories
1865
-				'NAME', 'ADDR', 'PHON', 'EMAIL', 'FAX', 'WWW',
1866
-				'NOTE', 'SHARED_NOTE', 'REFN', 'RIN', 'CHAN',
1867
-				'RESN',
1868
-			);
1869
-			break;
1870
-		case 'PLAC':
1871
-			$tags = array(
1872
-				// Facts for places
1873
-				'FONE', 'ROMN',
1874
-				// non standard tags
1875
-				'_HEB',
1876
-			);
1877
-			break;
1878
-		case 'NAME':
1879
-			$tags = array(
1880
-				// Facts subordinate to NAME
1881
-				'NICK', 'FONE', 'ROMN',
1882
-				// non standard tags
1883
-				'_HEB', '_AKA',
1884
-			);
1885
-			break;
1886
-		default:
1887
-			$tags = array();
1826
+			case 'INDI':
1827
+				$tags = array(
1828
+					// Facts, attributes for individuals (no links to FAMs)
1829
+					'RESN', 'NAME', 'SEX', 'BIRT', 'CHR', 'DEAT', 'BURI', 'CREM',
1830
+					'ADOP', 'BAPM', 'BARM', 'BASM', 'BLES', 'CHRA', 'CONF', 'FCOM', 'ORDN',
1831
+					'NATU', 'EMIG', 'IMMI', 'CENS', 'PROB', 'WILL', 'GRAD', 'RETI', 'EVEN',
1832
+					'CAST', 'DSCR', 'EDUC', 'IDNO', 'NATI', 'NCHI', 'NMR',
1833
+					'OCCU', 'PROP', 'RELI', 'RESI', 'SSN', 'TITL', 'FACT',
1834
+					'BAPL', 'CONL', 'ENDL', 'SLGC',
1835
+					'SUBM', 'ASSO', 'ALIA', 'ANCI', 'DESI', 'RFN', 'AFN',
1836
+					'REFN', 'RIN', 'CHAN', 'NOTE', 'SHARED_NOTE', 'SOUR', 'OBJE',
1837
+					// non standard tags
1838
+					'_BRTM', '_DEG', '_DNA', '_EYEC', '_FNRL', '_HAIR', '_HEIG', '_HNM',
1839
+					'_HOL', '_INTE', '_MDCL', '_MEDC', '_MILI', '_MILT', '_NAME', '_NAMS',
1840
+					'_NLIV', '_NMAR', '_PRMN', '_TODO', '_UID', '_WEIG', '_YART',
1841
+				);
1842
+				break;
1843
+			case 'FAM':
1844
+				$tags = array(
1845
+					// Facts for families, left out HUSB, WIFE & CHIL links
1846
+					'RESN', 'ANUL', 'CENS', 'DIV', 'DIVF', 'ENGA', 'MARB', 'MARC',
1847
+					'MARR', 'MARL', 'MARS', 'RESI', 'EVEN', 'NCHI', 'SUBM', 'SLGS',
1848
+					'REFN', 'RIN', 'CHAN', 'NOTE', 'SHARED_NOTE', 'SOUR', 'OBJE',
1849
+					// non standard tags
1850
+					'_NMR', 'MARR_CIVIL', 'MARR_RELIGIOUS', 'MARR_PARTNERS', 'MARR_UNKNOWN',
1851
+					'_COML', '_MBON', '_MARI', '_SEPR', '_TODO',
1852
+				);
1888 1853
 			break;
1854
+			case 'SOUR':
1855
+				$tags = array(
1856
+					// Facts for sources
1857
+					'DATA', 'AUTH', 'TITL', 'ABBR', 'PUBL', 'TEXT', 'REPO', 'REFN', 'RIN',
1858
+					'CHAN', 'NOTE', 'SHARED_NOTE', 'OBJE',
1859
+					'RESN',
1860
+				);
1861
+				break;
1862
+			case 'REPO':
1863
+				$tags = array(
1864
+					// Facts for repositories
1865
+					'NAME', 'ADDR', 'PHON', 'EMAIL', 'FAX', 'WWW',
1866
+					'NOTE', 'SHARED_NOTE', 'REFN', 'RIN', 'CHAN',
1867
+					'RESN',
1868
+				);
1869
+				break;
1870
+			case 'PLAC':
1871
+				$tags = array(
1872
+					// Facts for places
1873
+					'FONE', 'ROMN',
1874
+					// non standard tags
1875
+					'_HEB',
1876
+				);
1877
+				break;
1878
+			case 'NAME':
1879
+				$tags = array(
1880
+					// Facts subordinate to NAME
1881
+					'NICK', 'FONE', 'ROMN',
1882
+					// non standard tags
1883
+					'_HEB', '_AKA',
1884
+				);
1885
+				break;
1886
+			default:
1887
+				$tags = array();
1888
+				break;
1889 1889
 		}
1890 1890
 
1891 1891
 		$facts = array();
@@ -1906,42 +1906,42 @@  discard block
 block discarded – undo
1906 1906
 	 */
1907 1907
 	public static function getFileFormTypeValue($type) {
1908 1908
 		switch (strtolower($type)) {
1909
-		case 'audio':
1910
-			return /* I18N: Type of media object */ I18N::translate('Audio');
1911
-		case 'book':
1912
-			return /* I18N: Type of media object */ I18N::translate('Book');
1913
-		case 'card':
1914
-			return /* I18N: Type of media object */ I18N::translate('Card');
1915
-		case 'certificate':
1916
-			return /* I18N: Type of media object */ I18N::translate('Certificate');
1917
-		case 'coat':
1918
-			return /* I18N: Type of media object */ I18N::translate('Coat of arms');
1919
-		case 'document':
1920
-			return /* I18N: Type of media object */ I18N::translate('Document');
1921
-		case 'electronic':
1922
-			return /* I18N: Type of media object */ I18N::translate('Electronic');
1923
-		case 'fiche':
1924
-			return /* I18N: Type of media object */ I18N::translate('Microfiche');
1925
-		case 'film':
1926
-			return /* I18N: Type of media object */ I18N::translate('Microfilm');
1927
-		case 'magazine':
1928
-			return /* I18N: Type of media object */ I18N::translate('Magazine');
1929
-		case 'manuscript':
1930
-			return /* I18N: Type of media object */ I18N::translate('Manuscript');
1931
-		case 'map':
1932
-			return /* I18N: Type of media object */ I18N::translate('Map');
1933
-		case 'newspaper':
1934
-			return /* I18N: Type of media object */ I18N::translate('Newspaper');
1935
-		case 'photo':
1936
-			return /* I18N: Type of media object */ I18N::translate('Photo');
1937
-		case 'tombstone':
1938
-			return /* I18N: Type of media object */ I18N::translate('Tombstone');
1939
-		case 'video':
1940
-			return /* I18N: Type of media object */ I18N::translate('Video');
1941
-		case 'painting':
1942
-			return /* I18N: Type of media object */ I18N::translate('Painting');
1943
-		default:
1944
-			return /* I18N: Type of media object */ I18N::translate('Other');
1909
+			case 'audio':
1910
+				return /* I18N: Type of media object */ I18N::translate('Audio');
1911
+			case 'book':
1912
+				return /* I18N: Type of media object */ I18N::translate('Book');
1913
+			case 'card':
1914
+				return /* I18N: Type of media object */ I18N::translate('Card');
1915
+			case 'certificate':
1916
+				return /* I18N: Type of media object */ I18N::translate('Certificate');
1917
+			case 'coat':
1918
+				return /* I18N: Type of media object */ I18N::translate('Coat of arms');
1919
+			case 'document':
1920
+				return /* I18N: Type of media object */ I18N::translate('Document');
1921
+			case 'electronic':
1922
+				return /* I18N: Type of media object */ I18N::translate('Electronic');
1923
+			case 'fiche':
1924
+				return /* I18N: Type of media object */ I18N::translate('Microfiche');
1925
+			case 'film':
1926
+				return /* I18N: Type of media object */ I18N::translate('Microfilm');
1927
+			case 'magazine':
1928
+				return /* I18N: Type of media object */ I18N::translate('Magazine');
1929
+			case 'manuscript':
1930
+				return /* I18N: Type of media object */ I18N::translate('Manuscript');
1931
+			case 'map':
1932
+				return /* I18N: Type of media object */ I18N::translate('Map');
1933
+			case 'newspaper':
1934
+				return /* I18N: Type of media object */ I18N::translate('Newspaper');
1935
+			case 'photo':
1936
+				return /* I18N: Type of media object */ I18N::translate('Photo');
1937
+			case 'tombstone':
1938
+				return /* I18N: Type of media object */ I18N::translate('Tombstone');
1939
+			case 'video':
1940
+				return /* I18N: Type of media object */ I18N::translate('Video');
1941
+			case 'painting':
1942
+				return /* I18N: Type of media object */ I18N::translate('Painting');
1943
+			default:
1944
+				return /* I18N: Type of media object */ I18N::translate('Other');
1945 1945
 		}
1946 1946
 	}
1947 1947
 
Please login to merge, or discard this patch.
app/Module/BatchUpdate/BatchUpdateMarriedNamesPlugin.php 1 patch
Switch Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -74,15 +74,15 @@
 block discarded – undo
74 74
 		$married_names = array();
75 75
 		foreach (self::surnamesToAdd($xref, $gedrec) as $surname) {
76 76
 			switch ($this->surname) {
77
-			case 'add':
78
-				$married_names[] = "\n2 _MARNM " . str_replace('/', '', $wife_name) . ' /' . $surname . '/';
79
-				break;
80
-			case 'replace':
81
-				if ($SURNAME_TRADITION === 'polish') {
82
-					$surname = preg_replace(array('/ski$/', '/cki$/', '/dzki$/'), array('ska', 'cka', 'dzka'), $surname);
83
-				}
84
-				$married_names[] = "\n2 _MARNM " . preg_replace('!/.*/!', '/' . $surname . '/', $wife_name);
85
-				break;
77
+				case 'add':
78
+					$married_names[] = "\n2 _MARNM " . str_replace('/', '', $wife_name) . ' /' . $surname . '/';
79
+					break;
80
+				case 'replace':
81
+					if ($SURNAME_TRADITION === 'polish') {
82
+						$surname = preg_replace(array('/ski$/', '/cki$/', '/dzki$/'), array('ska', 'cka', 'dzka'), $surname);
83
+					}
84
+					$married_names[] = "\n2 _MARNM " . preg_replace('!/.*/!', '/' . $surname . '/', $wife_name);
85
+					break;
86 86
 			}
87 87
 		}
88 88
 
Please login to merge, or discard this patch.
app/Module/BatchUpdate/BatchUpdateSearchReplacePlugin.php 1 patch
Switch Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -106,26 +106,26 @@
 block discarded – undo
106 106
 
107 107
 		$this->error = '';
108 108
 		switch ($this->method) {
109
-		case 'exact':
110
-			$this->regex = preg_quote($this->search, '/');
111
-			break;
112
-		case 'words':
113
-			$this->regex = '\b' . preg_quote($this->search, '/') . '\b';
114
-			break;
115
-		case 'wildcards':
116
-			$this->regex = '\b' . str_replace(array('\*', '\?'), array('.*', '.'), preg_quote($this->search, '/')) . '\b';
117
-			break;
118
-		case 'regex':
119
-			$this->regex = $this->search;
120
-			// Check for invalid regular expressions.
121
-			// A valid regex on a null string returns zero.
122
-			// An invalid regex on a null string returns false and throws a warning.
123
-			try {
124
-				preg_match('/' . $this->search . '/', null);
125
-			} catch (\ErrorException $ex) {
126
-				$this->error = '<div class="alert alert-danger">' . /* I18N: http://en.wikipedia.org/wiki/Regular_expression */ I18N::translate('The regular expression appears to contain an error. It can’t be used.') . '</div>';
127
-			}
128
-			break;
109
+			case 'exact':
110
+				$this->regex = preg_quote($this->search, '/');
111
+				break;
112
+			case 'words':
113
+				$this->regex = '\b' . preg_quote($this->search, '/') . '\b';
114
+				break;
115
+			case 'wildcards':
116
+				$this->regex = '\b' . str_replace(array('\*', '\?'), array('.*', '.'), preg_quote($this->search, '/')) . '\b';
117
+				break;
118
+			case 'regex':
119
+				$this->regex = $this->search;
120
+				// Check for invalid regular expressions.
121
+				// A valid regex on a null string returns zero.
122
+				// An invalid regex on a null string returns false and throws a warning.
123
+				try {
124
+					preg_match('/' . $this->search . '/', null);
125
+				} catch (\ErrorException $ex) {
126
+					$this->error = '<div class="alert alert-danger">' . /* I18N: http://en.wikipedia.org/wiki/Regular_expression */ I18N::translate('The regular expression appears to contain an error. It can’t be used.') . '</div>';
127
+				}
128
+				break;
129 129
 		}
130 130
 	}
131 131
 
Please login to merge, or discard this patch.
app/Module/FamilyTreeFavoritesModule.php 1 patch
Switch Indentation   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -85,43 +85,43 @@  discard block
 block discarded – undo
85 85
 
86 86
 		$action = Filter::get('action');
87 87
 		switch ($action) {
88
-		case 'deletefav':
89
-			$favorite_id = Filter::getInteger('favorite_id');
90
-			if ($favorite_id) {
91
-				self::deleteFavorite($favorite_id);
92
-			}
93
-			break;
94
-		case 'addfav':
95
-			$gid      = Filter::get('gid', WT_REGEX_XREF);
96
-			$favnote  = Filter::get('favnote');
97
-			$url      = Filter::getUrl('url');
98
-			$favtitle = Filter::get('favtitle');
88
+			case 'deletefav':
89
+				$favorite_id = Filter::getInteger('favorite_id');
90
+				if ($favorite_id) {
91
+					self::deleteFavorite($favorite_id);
92
+				}
93
+				break;
94
+			case 'addfav':
95
+				$gid      = Filter::get('gid', WT_REGEX_XREF);
96
+				$favnote  = Filter::get('favnote');
97
+				$url      = Filter::getUrl('url');
98
+				$favtitle = Filter::get('favtitle');
99 99
 
100
-			if ($gid) {
101
-				$record = GedcomRecord::getInstance($gid, $WT_TREE);
102
-				if ($record && $record->canShow()) {
100
+				if ($gid) {
101
+					$record = GedcomRecord::getInstance($gid, $WT_TREE);
102
+					if ($record && $record->canShow()) {
103
+						self::addFavorite(array(
104
+							'user_id'   => $ctype === 'user' ? Auth::id() : null,
105
+							'gedcom_id' => $WT_TREE->getTreeId(),
106
+							'gid'       => $record->getXref(),
107
+							'type'      => $record::RECORD_TYPE,
108
+							'url'       => null,
109
+							'note'      => $favnote,
110
+							'title'     => $favtitle,
111
+						));
112
+					}
113
+				} elseif ($url) {
103 114
 					self::addFavorite(array(
104 115
 						'user_id'   => $ctype === 'user' ? Auth::id() : null,
105 116
 						'gedcom_id' => $WT_TREE->getTreeId(),
106
-						'gid'       => $record->getXref(),
107
-						'type'      => $record::RECORD_TYPE,
108
-						'url'       => null,
117
+						'gid'       => null,
118
+						'type'      => 'URL',
119
+						'url'       => $url,
109 120
 						'note'      => $favnote,
110
-						'title'     => $favtitle,
121
+						'title'     => $favtitle ? $favtitle : $url,
111 122
 					));
112 123
 				}
113
-			} elseif ($url) {
114
-				self::addFavorite(array(
115
-					'user_id'   => $ctype === 'user' ? Auth::id() : null,
116
-					'gedcom_id' => $WT_TREE->getTreeId(),
117
-					'gid'       => null,
118
-					'type'      => 'URL',
119
-					'url'       => $url,
120
-					'note'      => $favnote,
121
-					'title'     => $favtitle ? $favtitle : $url,
122
-				));
123
-			}
124
-			break;
124
+				break;
125 125
 		}
126 126
 
127 127
 		$block = $this->getBlockSetting($block_id, 'block', '0');
@@ -168,14 +168,14 @@  discard block
 block discarded – undo
168 168
 						if ($record instanceof Individual) {
169 169
 							$content .= '<div id="box' . $favorite["gid"] . '.0" class="person_box action_header';
170 170
 							switch ($record->getSex()) {
171
-							case 'M':
172
-								break;
173
-							case 'F':
174
-								$content .= 'F';
175
-								break;
176
-							default:
177
-								$content .= 'NN';
178
-								break;
171
+								case 'M':
172
+									break;
173
+								case 'F':
174
+									$content .= 'F';
175
+									break;
176
+								default:
177
+									$content .= 'NN';
178
+									break;
179 179
 							}
180 180
 							$content .= '">';
181 181
 							if ($ctype == "user" || Auth::isManager($WT_TREE)) {
Please login to merge, or discard this patch.
app/Module/FamiliesSidebarModule.php 1 patch
Switch Indentation   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -45,13 +45,13 @@  discard block
 block discarded – undo
45 45
 	 */
46 46
 	public function modAction($mod_action) {
47 47
 		switch ($mod_action) {
48
-		case 'ajax':
49
-			header('Content-Type: text/html; charset=UTF-8');
50
-			echo $this->getSidebarAjaxContent();
51
-			break;
52
-		default:
53
-			http_response_code(404);
54
-			break;
48
+			case 'ajax':
49
+				header('Content-Type: text/html; charset=UTF-8');
50
+				echo $this->getSidebarAjaxContent();
51
+				break;
52
+			default:
53
+				http_response_code(404);
54
+				break;
55 55
 		}
56 56
 	}
57 57
 
@@ -149,18 +149,18 @@  discard block
 block discarded – undo
149 149
 		$out = '<form method="post" action="module.php?mod=' . $this->getName() . '&amp;mod_action=ajax" onsubmit="return false;"><input type="search" name="sb_fam_name" id="sb_fam_name" placeholder="' . I18N::translate('Search') . '"><p>';
150 150
 		foreach ($initials as $letter => $count) {
151 151
 			switch ($letter) {
152
-			case '@':
153
-				$html = I18N::translateContext('Unknown surname', '…');
154
-				break;
155
-			case ',':
156
-				$html = I18N::translate('None');
157
-				break;
158
-			case ' ':
159
-				$html = '&nbsp;';
160
-				break;
161
-			default:
162
-				$html = $letter;
163
-				break;
152
+				case '@':
153
+					$html = I18N::translateContext('Unknown surname', '…');
154
+					break;
155
+				case ',':
156
+					$html = I18N::translate('None');
157
+					break;
158
+				case ' ':
159
+					$html = '&nbsp;';
160
+					break;
161
+				default:
162
+					$html = $letter;
163
+					break;
164 164
 			}
165 165
 			$html = '<a href="module.php?mod=' . $this->getName() . '&amp;mod_action=ajax&amp;alpha=' . urlencode($letter) . '" class="sb_fam_letter">' . $html . '</a>';
166 166
 			$out .= $html . " ";
Please login to merge, or discard this patch.
app/Module/RecentChangesModule.php 1 patch
Switch Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -89,12 +89,12 @@  discard block
 block discarded – undo
89 89
 			$content .= I18N::plural('There have been no changes within the last %s day.', 'There have been no changes within the last %s days.', $days, I18N::number($days));
90 90
 		} else {
91 91
 			switch ($infoStyle) {
92
-			case 'list':
93
-				$content .= $this->changesList($records, $sortStyle, $show_user);
94
-				break;
95
-			case 'table':
96
-				$content .= $this->changesTable($records, $sortStyle, $show_user);
97
-				break;
92
+				case 'list':
93
+					$content .= $this->changesList($records, $sortStyle, $show_user);
94
+					break;
95
+				case 'table':
96
+					$content .= $this->changesTable($records, $sortStyle, $show_user);
97
+					break;
98 98
 			}
99 99
 		}
100 100
 
@@ -229,15 +229,15 @@  discard block
 block discarded – undo
229 229
 	 */
230 230
 	private function changesList(array $records, $sort, $show_user) {
231 231
 		switch ($sort) {
232
-		case 'name':
233
-			uasort($records, array('self', 'sortByNameAndChangeDate'));
234
-			break;
235
-		case 'date_asc':
236
-			uasort($records, array('self', 'sortByChangeDateAndName'));
237
-			$records = array_reverse($records);
238
-			break;
239
-		case 'date_desc':
240
-			uasort($records, array('self', 'sortByChangeDateAndName'));
232
+			case 'name':
233
+				uasort($records, array('self', 'sortByNameAndChangeDate'));
234
+				break;
235
+			case 'date_asc':
236
+				uasort($records, array('self', 'sortByChangeDateAndName'));
237
+				$records = array_reverse($records);
238
+				break;
239
+			case 'date_desc':
240
+				uasort($records, array('self', 'sortByChangeDateAndName'));
241 241
 		}
242 242
 
243 243
 		$html = '';
@@ -282,16 +282,16 @@  discard block
 block discarded – undo
282 282
 		$table_id = 'table-chan-' . Uuid::uuid4(); // lists requires a unique ID in case there are multiple lists per page
283 283
 
284 284
 		switch ($sort) {
285
-		case 'name':
286
-		default:
287
-			$aaSorting = "[1,'asc'], [2,'desc']";
288
-			break;
289
-		case 'date_asc':
290
-			$aaSorting = "[2,'asc'], [1,'asc']";
291
-			break;
292
-		case 'date_desc':
293
-			$aaSorting = "[2,'desc'], [1,'asc']";
294
-			break;
285
+			case 'name':
286
+			default:
287
+				$aaSorting = "[1,'asc'], [2,'desc']";
288
+				break;
289
+			case 'date_asc':
290
+				$aaSorting = "[2,'asc'], [1,'asc']";
291
+				break;
292
+			case 'date_desc':
293
+				$aaSorting = "[2,'desc'], [1,'asc']";
294
+				break;
295 295
 		}
296 296
 
297 297
 		$html = '';
@@ -327,24 +327,24 @@  discard block
 block discarded – undo
327 327
 		foreach ($records as $record) {
328 328
 			$html .= '<tr><td>';
329 329
 			switch ($record::RECORD_TYPE) {
330
-			case 'INDI':
331
-				$html .= $record->getSexImage('small');
332
-				break;
333
-			case 'FAM':
334
-				$html .= '<i class="icon-button_family"></i>';
335
-				break;
336
-			case 'OBJE':
337
-				$html .= '<i class="icon-button_media"></i>';
338
-				break;
339
-			case 'NOTE':
340
-				$html .= '<i class="icon-button_note"></i>';
341
-				break;
342
-			case 'SOUR':
343
-				$html .= '<i class="icon-button_source"></i>';
344
-				break;
345
-			case 'REPO':
346
-				$html .= '<i class="icon-button_repository"></i>';
347
-				break;
330
+				case 'INDI':
331
+					$html .= $record->getSexImage('small');
332
+					break;
333
+				case 'FAM':
334
+					$html .= '<i class="icon-button_family"></i>';
335
+					break;
336
+				case 'OBJE':
337
+					$html .= '<i class="icon-button_media"></i>';
338
+					break;
339
+				case 'NOTE':
340
+					$html .= '<i class="icon-button_note"></i>';
341
+					break;
342
+				case 'SOUR':
343
+					$html .= '<i class="icon-button_source"></i>';
344
+					break;
345
+				case 'REPO':
346
+					$html .= '<i class="icon-button_repository"></i>';
347
+					break;
348 348
 			}
349 349
 			$html .= '</td>';
350 350
 			$html .= '<td data-sort="' . Filter::escapeHtml($record->getSortName()) . '">';
Please login to merge, or discard this patch.