Source code for gramps.plugins.rel.rel_ru

# -*- coding: utf-8 -*-
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2003-2005  Donald N. Allingham
# Copyright (C) 2008       Brian G. Matherly
# Copyright (C) 2009-2010  Andrew I Baznikin
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#

# Written by Alex Roitman, largely based on relationship.py by Don Allingham.
"""
Russian-specific definitions of relationships
"""

#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------

from gramps.gen.lib import Person
import gramps.gen.relationship

#-------------------------------------------------------------------------

_parents_level = [
  "",
  "родители",
  "дедушки/бабушки",
  "прадедушки/прабабушки",
  "прапрадедушки/прапрабабушки (5 поколение)",
  "прапрапрадедушки/прапрапрабабушки (6 поколение)",
  "прапрапрапрадедушки/прапрапрапрабабушки (7 поколение)",
  "прапрапрапрапрадедушки/прапрапрапрапрабабушки (8 поколение)",
  ]

_male_cousin_level = [
  "",
  "двоюродный",
  "троюродный",
  "четвероюродный",
  "пятиюродный",
  "шестиюродный",
  "семиюродный",
  "восьмиюродный",
  "девятиюродный",
  "десятиюродный",
  "одиннацатиюродный",
  "двенадцатиюродный",
  "тринадцатиюродный",
  "четырнадцатиюродный",
  "пятнадцатиюродный",
  "шестнадцатиюродный",
  "семнадцатиюродный",
  "восемнадцатиюродный",
  "девятнадцатиюродный",
  "двадцатиюродный",
  ]

_female_cousin_level = [
  "",
  "двоюродная",
  "троюродная",
  "четвероюродная",
  "пятиюродная",
  "шестиюродная",
  "семиюродная",
  "восьмиюродная",
  "девятиюродная",
  "десятиюродная",
  "одиннацатиюродная",
  "двенадцатиюродная",
  "тринадцатиюродная",
  "четырнадцатиюродная",
  "пятнадцатиюродная",
  "шестнадцатиюродная",
  "семнадцатиюродная",
  "восемнадцатиюродная",
  "девятнадцатиюродная",
  "двадцатиюродная",
  ]

_cousin_level = [
  "",
  "двоюродные",
  "троюродные",
  "четвероюродные",
  "пятиюродные",
  "шестиюродные",
  "семиюродные",
  "восьмиюродные",
  "девятиюродные",
  "десятиюродные",
  "одиннацатиюродные",
  "двенадцатиюродные",
  "тринадцатиюродные",
  "четырнадцатиюродные",
  "пятнадцатиюродные",
  "шестнадцатиюродные",
  "семнадцатиюродные",
  "восемнадцатиюродные",
  "девятнадцатиюродные",
  "двадцатиюродные",
  ]

_junior_male_removed_level = [
  "брат",
  "племянник",
  "внучатый племянник",
  "правнучатый племянник",
  "праправнучатый племянник",
  "прапраправнучатый племянник",
  "прапрапраправнучатый племянник",
  ]

_junior_female_removed_level = [
  "сестра",
  "племянница",
  "внучатая племянница",
  "правнучатая племянница",
  "праправнучатая племянница",
  "прапраправнучатая племянница",
  "прапрапраправнучатая племянница",
  ]

_juniors_removed_level = [
  "братья/сестры",
  "племянники",
  "внучатые племянники",
  "правнучатые племянники",
  "праправнучатые племянники",
  "прапраправнучатые племянники",
  "прапрапраправнучатые племянники",
  ]

_senior_male_removed_level = [
  "",
  "дядя",
  "дед",
  "прадед",
  "прапрадед",
  "прапрапрадед",
  "прапрапрапрадед",
  ]

_senior_female_removed_level = [
  "",
  "тётя",
  "бабушка",
  "прабабушка",
  "прапрабабушка",
  "прапрапрабабушка",
  "прапрапрапрабабушка",
  ]

_seniors_removed_level = [
  "",
  "дяди/тёти",
  "дедушки/бабушки",
  "прадеды/прабабушки",
  "прапрадеды/прапрабабушки",
  "прапрапрадеды/прапрапрабабушки",
  "прапрапрапрадеды/прапрапрапрабабушки",
  ]

_father_level = [
  "",
  "отец",
  "дед",
  "прадед",
  "прапрадед",
  "прапрапрадед",
  "прапрапрапрадед",
  ]

_mother_level = [
   "",
   "мать",
   "бабушка",
   "прабабушка",
   "прапрабабушка",
   "прапрапрабабушка",
   "прапрапрапрабабушка",
   ]

_son_level = [
  "",
  "сын",
  "внук",
  "правнук",
  "праправнук",
  "прапраправнук",
  "прапрапраправнук",
  ]

_daughter_level = [
  "",
  "дочь",
  "внучка",
  "правнучка",
  "праправнучка",
  "прапраправнучка",
  "прапрапраправнучка",
  ]

_children_level = [
 "",
 "дети",
 "внуки",
 "правнуки",
 "праправнуки",
 "прапраправнуки",
 "прапрапраправнуки",
 "прапрапрапраправнуки",
 ]

_sister_level = [
  "",
  "сестра",
  "тётя",
  "двоюродная бабушка",
  "двоюродная прабабушка",
  "двоюродная прапрабабушка",
  "двоюродная прапрапрабабушка",
  "двоюродная прапрапрапрабабушка",
  ]

_brother_level = [
  "",
  "брат",
  "дядя",
  "двоюродный дед",
  "двоюродный прадед",
  "двоюродный прапрадед",
  "двоюродный прапрапрадед",
  "двоюродный прапрапрапрадед",
  ]

_siblings_level = [
  "",
  "братья/сестры",
  "дядьки/тётки",
  "двоюродные дедушки/бабушки",
  "двоюродные прадедушки/прабабушки",
  "двоюродные прапрадедушки/прапрабабушки (5 поколение)",
  "двоюродные прапрапрадедушки/прапрапрабабушки (6 поколение)",
  "двоюродные прапрапрапрадедушки/прапрапрапрабабушки (7 поколение)",
  "двоюродные прапрапрапрапрадедушки/прапрапрапрапрабабушки (8 поколение)",
  ]

_nephew_level = [
  "",
  "племянник",
  "внучатый племянник",
  "правнучатый племянник",
  "праправнучатый племянник",
  "прапраправнучатый племянник",
  "прапрапраправнучатый племянник",
  ]

_niece_level = [
  "",
  "племянница",
  "внучатая племянница",
  "правнучатая племянница",
  "праправнучатая племянница",
  "прапраправнучатая племянница",
  "прапрапраправнучатая племянница",
  ]

_nephews_nieces_level = [
  "",
  "братья/сестры",
  "племянники",
  "внучатые племянники",
  "правнучатые племянники",
  "праправнучатые племянники",
  "прапраправнучатые племянники",
  "прапрапраправнучатые племянники",
  ]

#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
[docs] class RelationshipCalculator(gramps.gen.relationship.RelationshipCalculator): """ RelationshipCalculator Class """ def __init__(self): gramps.gen.relationship.RelationshipCalculator.__init__(self)
[docs] def get_parents(self, level): if level > len(_parents_level)-1: return "дальние родственники" else: return _parents_level[level]
[docs] def get_junior_male_cousin(self, level, removed): if removed > len(_junior_male_removed_level)-1 or \ level > len(_male_cousin_level)-1: return "дальний родственник" else: return "%s %s" % (_male_cousin_level[level], _junior_male_removed_level[removed])
[docs] def get_senior_male_cousin(self, level, removed): if removed > len(_senior_male_removed_level)-1 or \ level > len(_male_cousin_level)-1: return "дальний родственник" else: return "%s %s" % (_male_cousin_level[level], _senior_male_removed_level[removed])
[docs] def get_junior_female_cousin(self, level, removed): if removed > len(_junior_female_removed_level)-1 or \ level > len(_male_cousin_level)-1: return "дальняя родственница" else: return "%s %s" % (_female_cousin_level[level], _junior_female_removed_level[removed])
[docs] def get_senior_female_cousin(self, level, removed): if removed > len(_senior_female_removed_level)-1 or \ level > len(_male_cousin_level)-1: return "дальняя родственница" else: return "%s %s" % (_female_cousin_level[level], _senior_female_removed_level[removed])
[docs] def get_father(self, level): if level > len(_father_level)-1: return "дальний предок" else: return _father_level[level]
[docs] def get_son(self, level): if level > len(_son_level)-1: return "дальний потомок" else: return _son_level[level]
[docs] def get_mother(self, level): if level > len(_mother_level)-1: return "дальний предок" else: return _mother_level[level]
[docs] def get_daughter(self, level): if level > len(_daughter_level)-1: return "дальний потомок" else: return _daughter_level[level]
def _get_aunt(self, level, step='', inlaw=''): if level > len(_sister_level)-1: return "дальний предок в соседнем поколении" else: return _sister_level[level] def _get_uncle(self, level, step='', inlaw=''): if level > len(_brother_level)-1: return "дальний предок в соседнем поколении" else: return _brother_level[level] def _get_sibling(self, level, step='', inlaw=''): """ Sibling of unknown gender """ return self._get_uncle(level, step, inlaw) + " или " + self._get_aunt(level, step, inlaw)
[docs] def get_nephew(self, level): if level > len(_nephew_level)-1: return "дальний потомок в соседнем поколении" else: return _nephew_level[level]
[docs] def get_niece(self, level): if level > len(_niece_level)-1: return "дальний потомок в соседнем поколении" else: return _niece_level[level]
[docs] def get_single_relationship_string(self, Ga, Gb, gender_a, gender_b, reltocommon_a, reltocommon_b, only_birth=True, in_law_a=False, in_law_b=False): if Gb == 0: if Ga == 0: return ('один человек') elif gender_b == Person.MALE: return (self.get_father(Ga)) else: return (self.get_mother(Ga)) elif Ga == 0: if gender_b == Person.MALE: return (self.get_son(Gb)) else: return (self.get_daughter(Gb)) elif Gb == 1: if gender_b == Person.MALE: return (self._get_uncle(Ga)) else: return (self._get_aunt(Ga)) elif Ga == 1: if gender_b == Person.MALE: return (self.get_nephew(Gb-1)) else: return (self.get_niece(Gb-1)) elif Ga > Gb: if gender_b == Person.MALE: return (self.get_senior_male_cousin(Gb-1, Ga-Gb)) else: return (self.get_senior_female_cousin(Gb-1, Ga-Gb)) else: if gender_b == Person.MALE: return (self.get_junior_male_cousin(Ga-1, Gb-Ga)) else: return (self.get_junior_female_cousin(Ga-1, Gb-Ga))
[docs] def get_plural_relationship_string(self, Ga, Gb, reltocommon_a='', reltocommon_b='', only_birth=True, in_law_a=False, in_law_b=False): rel_str = "дальние родственники" if Ga == 0: # These are descendants if Gb < len(_children_level): rel_str = _children_level[Gb] else: rel_str = "дальние потомки" elif Gb == 0: # These are parents/grand parents if Ga < len(_parents_level): rel_str = _parents_level[Ga] else: rel_str = "дальние предки" elif Gb == 1: # These are siblings/aunts/uncles if Ga < len(_siblings_level): rel_str = _siblings_level[Ga] else: rel_str = "дальние дяди/тёти" elif Ga == 1: # These are nieces/nephews if Gb < len(_nephews_nieces_level): rel_str = _nephews_nieces_level[Gb] else: rel_str = "дальние племянники/племянницы" elif Ga > Gb: # These are cousins in different generations with the second person # being in a higher generation from the common ancestor than the # first person. if Gb <= len(_seniors_removed_level) and (Ga-Gb) < len(_cousin_level): rel_str = "%s %s" % ( _cousin_level[Gb-1], _seniors_removed_level[Ga-Gb] ) else: rel_str = "(старшие) дальние родственники" else: # These are cousins in different generations with the second person # being in a lower generation from the common ancestor than the # first person. if Ga <= len(_juniors_removed_level) and (Gb-Ga) < len(_cousin_level): rel_str = "%s %s" % ( _cousin_level[Ga-1], _juniors_removed_level[Gb-Ga] ) else: rel_str = "(младшие) дальние родственники" if in_law_b == True: # TODO: Translate this! rel_str = "spouses of %s" % rel_str return rel_str
# TODO: def get_sibling_relationship_string for Russian step and inlaw relations if __name__ == "__main__": # Test function. Call it as follows from the command line (so as to find # imported modules): # export PYTHONPATH=/path/to/gramps/src # python src/plugins/rel/rel_ru.py # (Above not needed here) """TRANSLATORS, copy this if statement at the bottom of your rel_xx.py module, and test your work with: python src/plugins/rel/rel_xx.py """ from gramps.gen.relationship import test RC = RelationshipCalculator() test(RC, True)