1<?php 2 3/** 4 * webtrees: online genealogy 5 * Copyright (C) 2023 webtrees development team 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <https://www.gnu.org/licenses/>. 16 */ 17 18declare(strict_types=1); 19 20namespace Fisharebest\Webtrees\CustomTags; 21 22use Fisharebest\Webtrees\Contracts\CustomTagInterface; 23use Fisharebest\Webtrees\Contracts\ElementInterface; 24use Fisharebest\Webtrees\Elements\CustomElement; 25use Fisharebest\Webtrees\Elements\NamePersonal; 26use Fisharebest\Webtrees\Elements\XrefMedia; 27use Fisharebest\Webtrees\I18N; 28 29/** 30 * GEDCOM files created by FamilyTreeMaker 31 * 32 * @see https://wiki-de.genealogy.net/GEDCOM/_Nutzerdef-Tag 33 */ 34class FamilyTreeMaker implements CustomTagInterface 35{ 36 /** 37 * The name of the application. 38 * 39 * @return string 40 */ 41 public function name(): string 42 { 43 return 'FamilyTreeMaker'; 44 } 45 46 /** 47 * Tags created by this application. 48 * 49 * @return array<string,ElementInterface> 50 */ 51 public function tags(): array 52 { 53 return [ 54 'FAM:CHIL:_FREL' => new CustomElement(I18N::translate('Relationship to father')), 55 'FAM:CHIL:_MREL' => new CustomElement(I18N::translate('Relationship to mother')), 56 'FAM:_DETS' => new CustomElement(I18N::translate('Death of one spouse')), 57 'FAM:_FA1' => new CustomElement(I18N::translate('Fact 1')), 58 'FAM:_FA10' => new CustomElement(I18N::translate('Fact 10')), 59 'FAM:_FA11' => new CustomElement(I18N::translate('Fact 11')), 60 'FAM:_FA12' => new CustomElement(I18N::translate('Fact 12')), 61 'FAM:_FA13' => new CustomElement(I18N::translate('Fact 13')), 62 'FAM:_FA2' => new CustomElement(I18N::translate('Fact 2')), 63 'FAM:_FA3' => new CustomElement(I18N::translate('Fact 3')), 64 'FAM:_FA4' => new CustomElement(I18N::translate('Fact 4')), 65 'FAM:_FA5' => new CustomElement(I18N::translate('Fact 5')), 66 'FAM:_FA6' => new CustomElement(I18N::translate('Fact 6')), 67 'FAM:_FA7' => new CustomElement(I18N::translate('Fact 7')), 68 'FAM:_FA8' => new CustomElement(I18N::translate('Fact 8')), 69 'FAM:_FA9' => new CustomElement(I18N::translate('Fact 9')), 70 'FAM:_MEND' => new CustomElement(I18N::translate('Marriage ending status')), 71 'FAM:_MSTAT' => new CustomElement(I18N::translate('Marriage beginning status')), 72 'FAM:_SEPR' => new CustomElement(I18N::translate('Separation')), 73 'HEAD:_SCHEMA' => new CustomElement(I18N::translate('Schema')), 74 'HEAD:_SCHEMA:FAM' => new CustomElement(I18N::translate('Family')), 75 'HEAD:_SCHEMA:FAM:_FA*:LABL' => new CustomElement(I18N::translate('Label')), 76 'HEAD:_SCHEMA:FAM:_FA1' => new CustomElement(I18N::translate('Fact 1')), 77 'HEAD:_SCHEMA:FAM:_FA10' => new CustomElement(I18N::translate('Fact 10')), 78 'HEAD:_SCHEMA:FAM:_FA11' => new CustomElement(I18N::translate('Fact 11')), 79 'HEAD:_SCHEMA:FAM:_FA12' => new CustomElement(I18N::translate('Fact 12')), 80 'HEAD:_SCHEMA:FAM:_FA13' => new CustomElement(I18N::translate('Fact 13')), 81 'HEAD:_SCHEMA:FAM:_FA2' => new CustomElement(I18N::translate('Fact 2')), 82 'HEAD:_SCHEMA:FAM:_FA3' => new CustomElement(I18N::translate('Fact 3')), 83 'HEAD:_SCHEMA:FAM:_FA4' => new CustomElement(I18N::translate('Fact 4')), 84 'HEAD:_SCHEMA:FAM:_FA5' => new CustomElement(I18N::translate('Fact 5')), 85 'HEAD:_SCHEMA:FAM:_FA6' => new CustomElement(I18N::translate('Fact 6')), 86 'HEAD:_SCHEMA:FAM:_FA7' => new CustomElement(I18N::translate('Fact 7')), 87 'HEAD:_SCHEMA:FAM:_FA8' => new CustomElement(I18N::translate('Fact 8')), 88 'HEAD:_SCHEMA:FAM:_FA9' => new CustomElement(I18N::translate('Fact 9')), 89 'HEAD:_SCHEMA:FAM:_M*:LABL' => new CustomElement(I18N::translate('Label')), 90 'HEAD:_SCHEMA:FAM:_MEND' => new CustomElement(I18N::translate('Marriage ending status')), 91 'HEAD:_SCHEMA:FAM:_MSTAT' => new CustomElement(I18N::translate('Marriage beginning status')), 92 'HEAD:_SCHEMA:INDI' => new CustomElement(I18N::translate('Individual')), 93 'HEAD:_SCHEMA:INDI:_FA*:LABL' => new CustomElement(I18N::translate('Label')), 94 'HEAD:_SCHEMA:INDI:_FA1' => new CustomElement(I18N::translate('Fact 1')), 95 'HEAD:_SCHEMA:INDI:_FA10' => new CustomElement(I18N::translate('Fact 10')), 96 'HEAD:_SCHEMA:INDI:_FA11' => new CustomElement(I18N::translate('Fact 11')), 97 'HEAD:_SCHEMA:INDI:_FA12' => new CustomElement(I18N::translate('Fact 12')), 98 'HEAD:_SCHEMA:INDI:_FA13' => new CustomElement(I18N::translate('Fact 13')), 99 'HEAD:_SCHEMA:INDI:_FA2' => new CustomElement(I18N::translate('Fact 2')), 100 'HEAD:_SCHEMA:INDI:_FA3' => new CustomElement(I18N::translate('Fact 3')), 101 'HEAD:_SCHEMA:INDI:_FA4' => new CustomElement(I18N::translate('Fact 4')), 102 'HEAD:_SCHEMA:INDI:_FA5' => new CustomElement(I18N::translate('Fact 5')), 103 'HEAD:_SCHEMA:INDI:_FA6' => new CustomElement(I18N::translate('Fact 6')), 104 'HEAD:_SCHEMA:INDI:_FA7' => new CustomElement(I18N::translate('Fact 7')), 105 'HEAD:_SCHEMA:INDI:_FA8' => new CustomElement(I18N::translate('Fact 8')), 106 'HEAD:_SCHEMA:INDI:_FA9' => new CustomElement(I18N::translate('Fact 9')), 107 'HEAD:_SCHEMA:INDI:_FREL' => new CustomElement(I18N::translate('Relationship to father')), 108 'HEAD:_SCHEMA:INDI:_M*:LABL' => new CustomElement(I18N::translate('Label')), 109 'HEAD:_SCHEMA:INDI:_MREL' => new CustomElement(I18N::translate('Relationship to mother')), 110 'INDI:*:SOUR:_APID' => /* I18N: GEDCOM tag _APID */ new CustomElement(I18N::translate('Ancestry.com source identifier')), 111 'INDI:*:SOUR:_LINK' => new CustomElement(I18N::translate('External link')), 112 'INDI:NAME:_AKA' => new NamePersonal(I18N::translate('Also known as'), []), 113 'INDI:NAME:_MARNM' => new NamePersonal(I18N::translate('Married name'), []), 114 'INDI:_CIRC' => new CustomElement(I18N::translate('Circumcision')), 115 'INDI:_DCAUSE' => new CustomElement(I18N::translate('Cause of death')), 116 'INDI:_DEG' => new CustomElement(I18N::translate('Degree')), 117 'INDI:_DNA' => new CustomElement(I18N::translate('DNA markers')), 118 'INDI:_ELEC' => new CustomElement('Elected'), 119 'INDI:_EMPLOY' => new CustomElement('Employment'), 120 'INDI:_EXCM' => new CustomElement('Excommunicated'), 121 'INDI:_FA1' => new CustomElement(I18N::translate('Fact 1')), 122 'INDI:_FA10' => new CustomElement(I18N::translate('Fact 10')), 123 'INDI:_FA11' => new CustomElement(I18N::translate('Fact 11')), 124 'INDI:_FA12' => new CustomElement(I18N::translate('Fact 12')), 125 'INDI:_FA13' => new CustomElement(I18N::translate('Fact 13')), 126 'INDI:_FA2' => new CustomElement(I18N::translate('Fact 2')), 127 'INDI:_FA3' => new CustomElement(I18N::translate('Fact 3')), 128 'INDI:_FA4' => new CustomElement(I18N::translate('Fact 4')), 129 'INDI:_FA5' => new CustomElement(I18N::translate('Fact 5')), 130 'INDI:_FA6' => new CustomElement(I18N::translate('Fact 6')), 131 'INDI:_FA7' => new CustomElement(I18N::translate('Fact 7')), 132 'INDI:_FA8' => new CustomElement(I18N::translate('Fact 8')), 133 'INDI:_FA9' => new CustomElement(I18N::translate('Fact 9')), 134 'INDI:_MDCL' => new CustomElement(I18N::translate('Medical')), 135 'INDI:_MILT' => new CustomElement(I18N::translate('Military service')), 136 'INDI:_MILTID' => new CustomElement('Military ID number'), 137 'INDI:_MISN' => new CustomElement('Mission'), 138 'INDI:_NAMS' => new CustomElement(I18N::translate('Namesake')), 139 'INDI:_PHOTO' => new XrefMedia(I18N::translate('Photo')), 140 'INDI:_UNKN' => new CustomElement(I18N::translate('Unknown')), // Special individual ID code for later file comparisons 141 ]; 142 } 143} 144