xref: /webtrees/app/CustomTags/FamilyTreeMaker.php (revision b241c48b5a710d2f9216e4c871754fa824ee5259)
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