diff options
Diffstat (limited to 'app/GedcomCode/GedcomCodeRela.php')
| -rw-r--r-- | app/GedcomCode/GedcomCodeRela.php | 549 |
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; + } } |
