From 4b2030d48b14017d26ccb4eca3b2e2ddd0437796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Rapinat?= Date: Sat, 12 Dec 2009 10:59:26 +0000 Subject: [PATCH] 1683: Untranslatable text in Relationship calculator (by Andrew I Baznikin) svn: r13776 --- src/plugins/rel/rel_ru.py | 278 +++++++++++++++++++++++--------------- 1 file changed, 168 insertions(+), 110 deletions(-) diff --git a/src/plugins/rel/rel_ru.py b/src/plugins/rel/rel_ru.py index e41344f2d..6fbdfaa4f 100644 --- a/src/plugins/rel/rel_ru.py +++ b/src/plugins/rel/rel_ru.py @@ -4,6 +4,7 @@ # # 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 @@ -41,70 +42,101 @@ from gen.plug import PluginManager # #------------------------------------------------------------------------- -_parents_level = [ "", "родители", -"дедушки/бабушки", "прадедушки/прабабушки", "прапрадедушки/прапрабабушки", +_parents_level = [ u"", u"родители", + u"дедушки/бабушки", u"прадедушки/прабабушки", u"прапрадедушки/прапрабабушки (5 поколение)", + u"прапрапрадедушки/прапрапрабабушки (6 поколение)", u"прапрапрапрадедушки/прапрапрапрабабушки (7 поколение)", + u"прапрапрапрапрадедушки/прапрапрапрапрабабушки (8 поколение)", ] _male_cousin_level = [ - "", "двоюродный", "троюродный", "четвероюродный", - "пятиюродный", "шестиюродный", "семиюродный", "восьмиюродный", - "девятиюродный", "десятиюродный", "одиннацатиюродный", "двенадцатиюродный", - "тринадцатиюродный", "четырнадцатиюродный", "пятнадцатиюродный", "шестнадцатиюродный", - "семнадцатиюродный", "восемнадцатиюродный", "девятнадцатиюродный","двадцатиюродный" ] + u"", u"двоюродный", u"троюродный", u"четвероюродный", + u"пятиюродный", u"шестиюродный", u"семиюродный", u"восьмиюродный", + u"девятиюродный", u"десятиюродный", u"одиннацатиюродный", u"двенадцатиюродный", + u"тринадцатиюродный", u"четырнадцатиюродный", u"пятнадцатиюродный", u"шестнадцатиюродный", + u"семнадцатиюродный", u"восемнадцатиюродный", u"девятнадцатиюродный", u"двадцатиюродный" ] _female_cousin_level = [ - "", "двоюродная", "троюродная", "четвероюродная", - "пятиюродная", "шестиюродная", "семиюродная", "восьмиюродная", - "девятиюродная", "десятиюродная", "одиннацатиюродная", "двенадцатиюродная", - "тринадцатиюродная", "четырнадцатиюродная", "пятнадцатиюродная", "шестнадцатиюродная", - "семнадцатиюродная", "восемнадцатиюродная", "девятнадцатиюродная","двадцатиюродная" ] + u"", u"двоюродная", u"троюродная", u"четвероюродная", + u"пятиюродная", u"шестиюродная", u"семиюродная", u"восьмиюродная", + u"девятиюродная", u"десятиюродная", u"одиннацатиюродная", u"двенадцатиюродная", + u"тринадцатиюродная", u"четырнадцатиюродная", u"пятнадцатиюродная", u"шестнадцатиюродная", + u"семнадцатиюродная", u"восемнадцатиюродная", u"девятнадцатиюродная", u"двадцатиюродная" ] + +_cousin_level = [ + u"", u"двоюродные", u"троюродные", u"четвероюродные", + u"пятиюродные", u"шестиюродные", u"семиюродные", u"восьмиюродные", + u"девятиюродные", u"десятиюродные", u"одиннацатиюродные", u"двенадцатиюродные", + u"тринадцатиюродные", u"четырнадцатиюродные", u"пятнадцатиюродные", u"шестнадцатиюродные", + u"семнадцатиюродные", u"восемнадцатиюродные", u"девятнадцатиюродные", u"двадцатиюродные" ] _junior_male_removed_level = [ - "брат", "племянник", "внучатый племянник", "правнучатый племянник", - "праправнучатый племянник", "прапраправнучатый племянник", - "прапрапраправнучатый племянник" ] + u"брат", u"племянник", u"внучатый племянник", u"правнучатый племянник", + u"праправнучатый племянник", u"прапраправнучатый племянник", + u"прапрапраправнучатый племянник" ] _junior_female_removed_level = [ - "сестра", "племянница", "внучатая племянница", "правнучатая племянница", - "праправнучатая племянница", "прапраправнучатая племянница", - "прапрапраправнучатая племянница" ] + u"сестра", u"племянница", u"внучатая племянница", u"правнучатая племянница", + u"праправнучатая племянница", u"прапраправнучатая племянница", + u"прапрапраправнучатая племянница" ] + +_juniors_removed_level = [ + u"братя/сестры", u"племянники", u"внучатые племянники", u"правнучатые племянники", + u"праправнучатые племянники", u"прапраправнучатые племянники", + u"прапрапраправнучатые племянники" ] _senior_male_removed_level = [ - "", "дядя", "дед", "прадед", "прапрадед", "прапрапрадед","прапрапрапрадед" ] + u"", u"дядя", u"дед", u"прадед", u"прапрадед", u"прапрапрадед", u"прапрапрапрадед" ] _senior_female_removed_level = [ - "", "тетка", "бабка", "прабабка", "прапрабабка", "прапрапрабабка","прапрапрапрабабка" ] + u"", u"тётка", u"бабка", u"прабабка", u"прапрабабка", u"прапрапрабабка", u"прапрапрапрабабка" ] + +_seniors_removed_level = [ + u"", u"дядьки/тётки", u"дедушки/бабушки", u"прадеды/прабабушки", u"прапрадеды/прапрабабушки", u"прапрапрадеды/прапрапрабабушки", u"прапрапрапрадеды/прапрапрабабушки" ] _father_level = [ - "", "отец", "дед", "прадед", "прапрадед", "прапрапрадед", "прапрапрапрадед" ] + u"", u"отец", u"дед", u"прадед", u"прапрадед", u"прапрапрадед", u"прапрапрапрадед" ] _mother_level = [ - "", "мать", "бабка", "прабабка", "прапрабабка", "прапрапрабабка", "прапрапрапрабабка" ] + u"", u"мать", u"бабка", u"прабабка", u"прапрабабка", u"прапрапрабабка", u"прапрапрапрабабка" ] _son_level = [ - "", "сын", "внук", "правнук", "праправнук", "прапраправнук", "прапрапраправнук" ] + u"", u"сын", u"внук", u"правнук", u"праправнук", u"прапраправнук", u"прапрапраправнук" ] _daughter_level = [ - "", "дочь", "внучка", "правнучка", "праправнучка", "прапраправнучка", - "прапрапраправнучка" ] + u"", u"дочь", u"внучка", u"правнучка", u"праправнучка", u"прапраправнучка", + u"прапрапраправнучка" ] + +_children_level = [ u"", u"дети", u"внуки", u"правнуки", u"праправнуки", u"прапраправнуки", u"прапрапраправнуки", + u"прапрапрапраправнуки"] _sister_level = [ - "", "сестра", "тетка", "двоюродная бабка", "двоюродная прабабка", - "двоюродная прапрабабка", "двоюродная прапрапрабабка", "двоюродная прапрапрапрабабка" ] + u"", u"сестра", u"тётка", u"двоюродная бабка", u"двоюродная прабабка", + u"двоюродная прапрабабка", u"двоюродная прапрапрабабка", u"двоюродная прапрапрапрабабка" ] _brother_level = [ - "", "брат", "дядя", "двоюродный дед", "двоюродный прадед", - "двоюродный прапрадед", "двоюродный прапрапрадед", "двоюродный прапрапрапрадед" ] + u"", u"брат", u"дядя", u"двоюродный дед", u"двоюродный прадед", + u"двоюродный прапрадед", u"двоюродный прапрапрадед", u"двоюродный прапрапрапрадед" ] + +_siblings_level = [ + u"", u"братья/сестры", u"дядьки/тётки", u"двоюродные дедушки/бабушки", u"двоюродные прадедеды/прабабушки", + u"двоюродные прапрадедушки/прапрабабушки (5 поколение)", u"двоюродные прапрапрадедушки/прапрапрабабушки (6 поколение)", + u"двоюродные прапрапрапрадедушки/прапрапрапрабабушки (7 поколение)", + u"двоюродные прапрапрапрапрадедушки/прапрапрапрапрабабушки (8 поколение)", ] _nephew_level = [ - "", "племянник", "внучатый племянник", "правнучатый племянник", - "праправнучатый племянник", "прапраправнучатый племянник", - "прапрапраправнучатый племянник" ] + u"", u"племянник", u"внучатый племянник", u"правнучатый племянник", + u"праправнучатый племянник", u"прапраправнучатый племянник", + u"прапрапраправнучатый племянник" ] _niece_level = [ - "", "племянница", "внучатая племянница", "правнучатая племянница", - "праправнучатая племянница", "прапраправнучатая племянница", - "прапрапраправнучатая племянница" ] + u"", u"племянница", u"внучатая племянница", u"правнучатая племянница", + u"праправнучатая племянница", u"прапраправнучатая племянница", + u"прапрапраправнучатая племянница" ] + +_nephews_nieces_level = [ + u"", u"братья/сестры", u"племянники", u"внучатый племянники", u"правнучатый племянники", + u"праправнучатый племянники", u"прапраправнучатый племянники", + u"прапрапраправнучатый племянники" ] #------------------------------------------------------------------------- # @@ -118,148 +150,174 @@ class RelationshipCalculator(Relationship.RelationshipCalculator): def get_parents(self,level): if level>len(_parents_level)-1: - return "дальние родственники" + return u"дальние родственники" else: return _parents_level[level] def get_junior_male_cousin(self,level,removed): if removed > len(_junior_male_removed_level)-1 or level>len(_male_cousin_level)-1: - return "дальний родственник" + return u"дальний родственник" else: - return "%s %s" % (_male_cousin_level[level],_junior_male_removed_level[removed]) + return u"%s %s" % (_male_cousin_level[level],_junior_male_removed_level[removed]) def get_senior_male_cousin(self,level,removed): if removed > len(_senior_male_removed_level)-1 or level>len(_male_cousin_level)-1: - return "дальний родственник" + return u"дальний родственник" else: - return "%s %s" % (_male_cousin_level[level],_senior_male_removed_level[removed]) + return u"%s %s" % (_male_cousin_level[level],_senior_male_removed_level[removed]) def get_junior_female_cousin(self,level,removed): if removed > len(_junior_female_removed_level)-1 or level>len(_male_cousin_level)-1: - return "дальняя родственница" + return u"дальняя родственница" else: - return "%s %s" % (_female_cousin_level[level],_junior_female_removed_level[removed]) + return u"%s %s" % (_female_cousin_level[level],_junior_female_removed_level[removed]) def get_senior_female_cousin(self,level,removed): if removed > len(_senior_female_removed_level)-1 or level>len(_male_cousin_level)-1: - return "дальняя родственница" + return u"дальняя родственница" else: - return "%s %s" % (_female_cousin_level[level],_senior_female_removed_level[removed]) + return u"%s %s" % (_female_cousin_level[level],_senior_female_removed_level[removed]) def get_father(self,level): if level>len(_father_level)-1: - return "дальний предок" + return u"дальний предок" else: return _father_level[level] def get_son(self,level): if level>len(_son_level)-1: - return "дальний потомок" + return u"дальний потомок" else: return _son_level[level] def get_mother(self,level): if level>len(_mother_level)-1: - return "дальний предок" + return u"дальний предок" else: return _mother_level[level] def get_daughter(self,level): if level>len(_daughter_level)-1: - return "дальний потомок" + return u"дальний потомок" else: return _daughter_level[level] - def get_aunt(self,level): + def _get_aunt(self, level, step='', inlaw=''): if level>len(_sister_level)-1: - return "дальний предок" + return u"дальний предок" else: return _sister_level[level] - def get_uncle(self,level): + def _get_uncle(self, level, step='', inlaw=''): if level>len(_brother_level)-1: - return "дальний предок" + return u"дальний предок" else: return _brother_level[level] + def _get_sibling(self, level, step='', inlaw=''): + """Sibling of unknown gender + """ + return self._get_uncle(level, step, inlaw) + u" или u" + self._get_aunt(level, step, inlaw) + def get_nephew(self,level): if level>len(_nephew_level)-1: - return "дальний потомок" + return u"дальний потомок" else: return _nephew_level[level] def get_niece(self,level): if level>len(_niece_level)-1: - return "дальний потомок" + return u"дальний потомок" else: return _niece_level[level] - def get_relationship(self,db, orig_person, other_person): - """ - Return a string representing the relationshp between the two people, - along with a list of common ancestors (typically father,mother) - - Special cases: relation strings "", "undefined" and "spouse". - """ + 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 orig_person is None: - return ("undefined",[]) - - if orig_person.get_handle() == other_person.get_handle(): - return ('', []) - - is_spouse = self.is_spouse(db, orig_person, other_person) - if is_spouse: - return (is_spouse,[]) - - #get_relationship_distance changed, first data is relation to - #orig person, apperently secondRel in this function - (secondRel,firstRel,common) = \ - self.get_relationship_distance(db, orig_person, other_person) - - if isinstance(common, basestring): - return (common,[]) - elif common: - person_handle = common[0] + if Gb == 0: + if Ga == 0: + return ('один человек') + elif gender_b == gen.lib.Person.MALE: + return (self.get_father(Ga)) + else: + return (self.get_mother(Ga)) + elif Ga == 0: + if gender_b == gen.lib.Person.MALE: + return (self.get_son(Gb)) + else: + return (self.get_daughter(Gb)) + elif Gb == 1: + if gender_b == gen.lib.Person.MALE: + return (self._get_uncle(Ga)) + else: + return (self._get_aunt(Ga)) + elif Ga == 1: + if gender_b == gen.lib.Person.MALE: + return (self.get_nephew(Gb-1)) + else: + return (self.get_niece(Gb-1)) + elif Ga > Gb: + if gender_b == gen.lib.Person.MALE: + return (self.get_senior_male_cousin(Gb-1,Ga-Gb)) + else: + return (self.get_senior_female_cousin(Gb-1,Ga-Gb)) else: - return ("",[]) + if gender_b == gen.lib.Person.MALE: + return (self.get_junior_male_cousin(Ga-1,Gb-Ga)) + else: + return (self.get_junior_female_cousin(Ga-1,Gb-Ga)) - firstRel = len(firstRel) - secondRel = len(secondRel) - if firstRel == 0: - if secondRel == 0: - return ('',common) - elif other_person.get_gender() == gen.lib.Person.MALE: - return (self.get_father(secondRel),common) + def get_plural_relationship_string(self, Ga, Gb): + rel_str = u"дальние родственники" + if Ga == 0: + # These are descendants + if Gb < len(_children_level): + rel_str = _children_level[Gb] else: - return (self.get_mother(secondRel),common) - elif secondRel == 0: - if other_person.get_gender() == gen.lib.Person.MALE: - return (self.get_son(firstRel),common) + rel_str = u"дальние потомки" + elif Gb == 0: + # These are parents/grand parents + if Ga < len(_parents_level): + rel_str = _parents_level[Ga] else: - return (self.get_daughter(firstRel),common) - elif firstRel == 1: - if other_person.get_gender() == gen.lib.Person.MALE: - return (self.get_uncle(secondRel),common) + rel_str = u"дальние предки" + elif Gb == 1: + # These are siblings/aunts/uncles + if Ga < len(_siblings_level): + rel_str = _siblings_level[Ga] else: - return (self.get_aunt(secondRel),common) - elif secondRel == 1: - if other_person.get_gender() == gen.lib.Person.MALE: - return (self.get_nephew(firstRel-1),common) + rel_str = u"дальние дяди/тёти" + elif Ga == 1: + # These are nieces/nephews + if Gb < len(_nephews_nieces_level): + rel_str = _nephews_nieces_level[Gb] else: - return (self.get_niece(firstRel-1),common) - elif secondRel > firstRel: - if other_person.get_gender() == gen.lib.Person.MALE: - return (self.get_senior_male_cousin(firstRel-1,secondRel-firstRel),common) + rel_str = u"дальние племянники/племянницы" + 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 = u"%s %s" % ( _cousin_level[Gb-1], + _seniors_removed_level[Ga-Gb] ) else: - return (self.get_senior_female_cousin(firstRel-1,secondRel-firstRel),common) + rel_str = u"(старшие) дальние родственники" else: - if other_person.get_gender() == gen.lib.Person.MALE: - return (self.get_junior_male_cousin(secondRel-1,firstRel-secondRel),common) + # 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 = u"%s %s" % ( _cousin_level[Ga-1], + _juniors_removed_level[Gb-Ga] ) else: - return (self.get_junior_female_cousin(secondRel-1,firstRel-secondRel),common) - + rel_str = u"(младшие) дальние родственники" + return rel_str + +# TODO: def get_sibling_relationship_string for Russian step and inlaw relations + #------------------------------------------------------------------------- # # Register this class with the Plugins system @@ -267,4 +325,4 @@ class RelationshipCalculator(Relationship.RelationshipCalculator): #------------------------------------------------------------------------- pmgr = PluginManager.get_instance() pmgr.register_relcalc(RelationshipCalculator, - ["ru","RU","ru_RU","koi8r","ru_koi8r","russian","Russian","ru_RU.koi8r","ru_RU.KOI8-R","ru_RU.utf8","ru_RU.UTF8", "ru_RU.utf-8","ru_RU.UTF-8","ru_RU.iso88595","ru_RU.iso8859-5","ru_RU.iso-8859-5"]) + ["ru","RU","ru_RU","koi8r","ru_koi8r","russian","Russian","ru_RU.koi8r","ru_RU.KOI8-R","ru_RU.utf8","ru_RU.UTF8","ru_RU.utf-8","ru_RU.UTF-8","ru_RU.iso88595","ru_RU.iso8859-5","ru_RU.iso-8859-5"])