summaryrefslogtreecommitdiff
path: root/app/GedcomCode/GedcomCodeRela.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/GedcomCode/GedcomCodeRela.php')
-rw-r--r--app/GedcomCode/GedcomCodeRela.php549
1 files changed, 289 insertions, 260 deletions
diff --git a/app/GedcomCode/GedcomCodeRela.php b/app/GedcomCode/GedcomCodeRela.php
index 879742c76d..58b5924720 100644
--- a/app/GedcomCode/GedcomCodeRela.php
+++ b/app/GedcomCode/GedcomCodeRela.php
@@ -22,268 +22,297 @@ use Fisharebest\Webtrees\Individual;
/**
* Class GedcomCodeRela - Functions and logic for GEDCOM "RELA" codes
*/
-class GedcomCodeRela {
- /** @var string[] List of possible values for the RELA tag */
- private static $TYPES = [
- 'attendant', 'attending', 'best_man', 'bridesmaid', 'buyer',
- 'circumciser', 'civil_registrar', 'employee', 'employer', 'foster_child',
- 'foster_father', 'foster_mother', 'friend', 'godfather', 'godmother',
- 'godparent', 'godson', 'goddaughter', 'godchild', 'guardian',
- 'informant', 'lodger', 'nanny', 'nurse', 'owner',
- 'priest', 'rabbi', 'registry_officer', 'seller', 'servant',
- 'slave', 'ward', 'witness',
- ];
+class GedcomCodeRela
+{
+ /** @var string[] List of possible values for the RELA tag */
+ private static $TYPES = [
+ 'attendant',
+ 'attending',
+ 'best_man',
+ 'bridesmaid',
+ 'buyer',
+ 'circumciser',
+ 'civil_registrar',
+ 'employee',
+ 'employer',
+ 'foster_child',
+ 'foster_father',
+ 'foster_mother',
+ 'friend',
+ 'godfather',
+ 'godmother',
+ 'godparent',
+ 'godson',
+ 'goddaughter',
+ 'godchild',
+ 'guardian',
+ 'informant',
+ 'lodger',
+ 'nanny',
+ 'nurse',
+ 'owner',
+ 'priest',
+ 'rabbi',
+ 'registry_officer',
+ 'seller',
+ 'servant',
+ 'slave',
+ 'ward',
+ 'witness',
+ ];
- /**
- * Translate a code, for an (optional) record.
- * We need the record to translate the sex (godfather/godmother) but
- * we won’t have this when adding data for new individuals.
- *
- * @param string $type
- * @param GedcomRecord|null $record
- *
- * @return string
- */
- public static function getValue($type, GedcomRecord $record = null) {
- if ($record instanceof Individual) {
- $sex = $record->getSex();
- } else {
- $sex = 'U';
- }
+ /**
+ * Translate a code, for an (optional) record.
+ * We need the record to translate the sex (godfather/godmother) but
+ * we won’t have this when adding data for new individuals.
+ *
+ * @param string $type
+ * @param GedcomRecord|null $record
+ *
+ * @return string
+ */
+ public static function getValue($type, GedcomRecord $record = null)
+ {
+ if ($record instanceof Individual) {
+ $sex = $record->getSex();
+ } else {
+ $sex = 'U';
+ }
- switch ($type) {
- case 'attendant':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Attendant');
- case 'F':
- return I18N::translateContext('FEMALE', 'Attendant');
- default:
- return I18N::translate('Attendant');
- }
- case 'attending':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Attending');
- case 'F':
- return I18N::translateContext('FEMALE', 'Attending');
- default:
- return I18N::translate('Attending');
- }
- case 'best_man':
- // always male
- return I18N::translate('Best man');
- case 'bridesmaid':
- // always female
- return I18N::translate('Bridesmaid');
- case 'buyer':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Buyer');
- case 'F':
- return I18N::translateContext('FEMALE', 'Buyer');
- default:
- return I18N::translate('Buyer');
- }
- case 'circumciser':
- // always male
- return I18N::translate('Circumciser');
- case 'civil_registrar':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Civil registrar');
- case 'F':
- return I18N::translateContext('FEMALE', 'Civil registrar');
- default:
- return I18N::translate('Civil registrar');
- }
- case 'employee':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Employee');
- case 'F':
- return I18N::translateContext('FEMALE', 'Employee');
- default:
- return I18N::translate('Employee');
- }
- case 'employer':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Employer');
- case 'F':
- return I18N::translateContext('FEMALE', 'Employer');
- default:
- return I18N::translate('Employer');
- }
- case 'foster_child':
- // no sex implied
- return I18N::translate('Foster child');
- case 'foster_father':
- // always male
- return I18N::translate('Foster father');
- case 'foster_mother':
- // always female
- return I18N::translate('Foster mother');
- case 'friend':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Friend');
- case 'F':
- return I18N::translateContext('FEMALE', 'Friend');
- default:
- return I18N::translate('Friend');
- }
- case 'godfather':
- // always male
- return I18N::translate('Godfather');
- case 'godmother':
- // always female
- return I18N::translate('Godmother');
- case 'godparent':
- switch ($sex) {
- case 'M':
- return I18N::translate('Godfather');
- case 'F':
- return I18N::translate('Godmother');
- default:
- return I18N::translate('Godparent');
- }
- case 'godson':
- // always male
- return I18N::translate('Godson');
- case 'goddaughter':
- // always female
- return I18N::translate('Goddaughter');
- case 'godchild':
- switch ($sex) {
- case 'M':
- return I18N::translate('Godson');
- case 'F':
- return I18N::translate('Goddaughter');
- default:
- return I18N::translate('Godchild');
- }
- case 'guardian':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Guardian');
- case 'F':
- return I18N::translateContext('FEMALE', 'Guardian');
- default:
- return I18N::translate('Guardian');
- }
- case 'informant':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Informant');
- case 'F':
- return I18N::translateContext('FEMALE', 'Informant');
- default:
- return I18N::translate('Informant');
- }
- case 'lodger':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Lodger');
- case 'F':
- return I18N::translateContext('FEMALE', 'Lodger');
- default:
- return I18N::translate('Lodger');
- }
- case 'nanny':
- // no sex implied
- return I18N::translate('Nanny');
- case 'nurse':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Nurse');
- case 'F':
- return I18N::translateContext('FEMALE', 'Nurse');
- default:
- return I18N::translate('Nurse');
- }
- case 'owner':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Owner');
- case 'F':
- return I18N::translateContext('FEMALE', 'Owner');
- default:
- return I18N::translate('Owner');
- }
- case 'priest':
- // no sex implied
- return I18N::translate('Priest');
- case 'rabbi':
- // always male
- return I18N::translate('Rabbi');
- case 'registry_officer':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Registry officer');
- case 'F':
- return I18N::translateContext('FEMALE', 'Registry officer');
- default:
- return I18N::translate('Registry officer');
- }
- case 'seller':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Seller');
- case 'F':
- return I18N::translateContext('FEMALE', 'Seller');
- default:
- return I18N::translate('Seller');
- }
- case 'servant':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Servant');
- case 'F':
- return I18N::translateContext('FEMALE', 'Servant');
- default:
- return I18N::translate('Servant');
- }
- case 'slave':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Slave');
- case 'F':
- return I18N::translateContext('FEMALE', 'Slave');
- default:
- return I18N::translate('Slave');
- }
- case 'ward':
- switch ($sex) {
- case 'M':
- return I18N::translateContext('MALE', 'Ward');
- case 'F':
- return I18N::translateContext('FEMALE', 'Ward');
- default:
- return I18N::translate('Ward');
- }
- case 'witness':
- // Do we need separate male/female translations for this?
- return I18N::translate('Witness');
- default:
- return I18N::translate($type);
- }
- }
+ switch ($type) {
+ case 'attendant':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Attendant');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Attendant');
+ default:
+ return I18N::translate('Attendant');
+ }
+ case 'attending':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Attending');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Attending');
+ default:
+ return I18N::translate('Attending');
+ }
+ case 'best_man':
+ // always male
+ return I18N::translate('Best man');
+ case 'bridesmaid':
+ // always female
+ return I18N::translate('Bridesmaid');
+ case 'buyer':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Buyer');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Buyer');
+ default:
+ return I18N::translate('Buyer');
+ }
+ case 'circumciser':
+ // always male
+ return I18N::translate('Circumciser');
+ case 'civil_registrar':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Civil registrar');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Civil registrar');
+ default:
+ return I18N::translate('Civil registrar');
+ }
+ case 'employee':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Employee');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Employee');
+ default:
+ return I18N::translate('Employee');
+ }
+ case 'employer':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Employer');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Employer');
+ default:
+ return I18N::translate('Employer');
+ }
+ case 'foster_child':
+ // no sex implied
+ return I18N::translate('Foster child');
+ case 'foster_father':
+ // always male
+ return I18N::translate('Foster father');
+ case 'foster_mother':
+ // always female
+ return I18N::translate('Foster mother');
+ case 'friend':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Friend');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Friend');
+ default:
+ return I18N::translate('Friend');
+ }
+ case 'godfather':
+ // always male
+ return I18N::translate('Godfather');
+ case 'godmother':
+ // always female
+ return I18N::translate('Godmother');
+ case 'godparent':
+ switch ($sex) {
+ case 'M':
+ return I18N::translate('Godfather');
+ case 'F':
+ return I18N::translate('Godmother');
+ default:
+ return I18N::translate('Godparent');
+ }
+ case 'godson':
+ // always male
+ return I18N::translate('Godson');
+ case 'goddaughter':
+ // always female
+ return I18N::translate('Goddaughter');
+ case 'godchild':
+ switch ($sex) {
+ case 'M':
+ return I18N::translate('Godson');
+ case 'F':
+ return I18N::translate('Goddaughter');
+ default:
+ return I18N::translate('Godchild');
+ }
+ case 'guardian':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Guardian');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Guardian');
+ default:
+ return I18N::translate('Guardian');
+ }
+ case 'informant':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Informant');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Informant');
+ default:
+ return I18N::translate('Informant');
+ }
+ case 'lodger':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Lodger');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Lodger');
+ default:
+ return I18N::translate('Lodger');
+ }
+ case 'nanny':
+ // no sex implied
+ return I18N::translate('Nanny');
+ case 'nurse':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Nurse');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Nurse');
+ default:
+ return I18N::translate('Nurse');
+ }
+ case 'owner':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Owner');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Owner');
+ default:
+ return I18N::translate('Owner');
+ }
+ case 'priest':
+ // no sex implied
+ return I18N::translate('Priest');
+ case 'rabbi':
+ // always male
+ return I18N::translate('Rabbi');
+ case 'registry_officer':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Registry officer');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Registry officer');
+ default:
+ return I18N::translate('Registry officer');
+ }
+ case 'seller':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Seller');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Seller');
+ default:
+ return I18N::translate('Seller');
+ }
+ case 'servant':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Servant');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Servant');
+ default:
+ return I18N::translate('Servant');
+ }
+ case 'slave':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Slave');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Slave');
+ default:
+ return I18N::translate('Slave');
+ }
+ case 'ward':
+ switch ($sex) {
+ case 'M':
+ return I18N::translateContext('MALE', 'Ward');
+ case 'F':
+ return I18N::translateContext('FEMALE', 'Ward');
+ default:
+ return I18N::translate('Ward');
+ }
+ case 'witness':
+ // Do we need separate male/female translations for this?
+ return I18N::translate('Witness');
+ default:
+ return I18N::translate($type);
+ }
+ }
- /**
- * A list of all possible values for RELA
- *
- * @param GedcomRecord|null $record
- *
- * @return string[]
- */
- public static function getValues(GedcomRecord $record = null) {
- $values = [];
- foreach (self::$TYPES as $type) {
- $values[$type] = self::getValue($type, $record);
- }
- uasort($values, '\Fisharebest\Webtrees\I18N::strcasecmp');
+ /**
+ * A list of all possible values for RELA
+ *
+ * @param GedcomRecord|null $record
+ *
+ * @return string[]
+ */
+ public static function getValues(GedcomRecord $record = null)
+ {
+ $values = [];
+ foreach (self::$TYPES as $type) {
+ $values[$type] = self::getValue($type, $record);
+ }
+ uasort($values, '\Fisharebest\Webtrees\I18N::strcasecmp');
- return $values;
- }
+ return $values;
+ }
}