diff --git a/gramps/gen/datehandler/_dateparser.py b/gramps/gen/datehandler/_dateparser.py index ce6e54afc..3ef821e4c 100644 --- a/gramps/gen/datehandler/_dateparser.py +++ b/gramps/gen/datehandler/_dateparser.py @@ -618,12 +618,11 @@ class DateParser: y = self._get_int(groups[0]) m = self._get_int(groups[3]) d = self._get_int(groups[4]) - if check and not check((d, m, y)): - return Date.EMPTY - if groups[2]: # slash year digit + if groups[2] and julian_valid((d, m, y + 1)): # slash year digit return (d, m, y + 1, True) - else: + if check is None or check((d, m, y)): return (d, m, y, False) + return Date.EMPTY # Database datetime format, used in ex. MSSQL # YYYYMMDD HH:MM:SS or YYYYMMDD or YYYYMMDDHHMMSS diff --git a/gramps/gen/db/base.py b/gramps/gen/db/base.py index d78a7624c..12e44233e 100644 --- a/gramps/gen/db/base.py +++ b/gramps/gen/db/base.py @@ -1385,7 +1385,7 @@ class DbReadBase: def set_mediapath(self, path): """ - Set the default media path for database, path should be utf-8. + Set the default media path for database. """ raise NotImplementedError diff --git a/gramps/gen/db/dummydb.py b/gramps/gen/db/dummydb.py index cdd19b759..ebdf0c37e 100644 --- a/gramps/gen/db/dummydb.py +++ b/gramps/gen/db/dummydb.py @@ -67,6 +67,7 @@ from .base import DbReadBase from .dbconst import DBLOGNAME from ..errors import HandleError from ..utils.callback import Callback +from ..lib import Researcher LOG = logging.getLogger(DBLOGNAME) @@ -218,6 +219,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): Callback.__init__(self) self.db_is_open = False self.readonly = True + self.name_formats = [] self.bookmarks = Bookmarks() self.family_bookmarks = Bookmarks() self.event_bookmarks = Bookmarks() @@ -227,6 +229,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): self.repo_bookmarks = Bookmarks() self.media_bookmarks = Bookmarks() self.note_bookmarks = Bookmarks() + self.owner = Researcher() def get_feature(self, feature): """ @@ -526,7 +529,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_family_handles(self, sort_handles=False): """ @@ -670,7 +673,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_note_handles(self): """ @@ -782,7 +785,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_person_attribute_types(self): """ @@ -829,7 +832,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_person_handles(self, sort_handles=False): """ @@ -887,7 +890,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_place_handles(self, sort_handles=False): """ @@ -907,7 +910,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_raw_family_data(self, handle): """ @@ -916,7 +919,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_raw_note_data(self, handle): """ @@ -925,7 +928,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_raw_media_data(self, handle): """ @@ -934,7 +937,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_raw_person_data(self, handle): """ @@ -943,7 +946,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_raw_place_data(self, handle): """ @@ -952,7 +955,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_raw_repository_data(self, handle): """ @@ -961,7 +964,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_raw_source_data(self, handle): """ @@ -970,7 +973,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_raw_citation_data(self, handle): """ @@ -979,7 +982,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_raw_tag_data(self, handle): """ @@ -988,7 +991,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_repo_bookmarks(self): """ @@ -1026,7 +1029,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_repository_handles(self): """ @@ -1053,7 +1056,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): """ if not self.db_is_open: LOG.warning("database is closed") - return None + return self.owner def get_save_path(self): """ @@ -1097,7 +1100,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_source_handles(self, sort_handles=False): """ @@ -1155,7 +1158,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_citation_handles(self, sort_handles=False): """ @@ -1193,7 +1196,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): if not self.db_is_open: LOG.warning("database is closed") LOG.warning("handle %s does not exist in the dummy database", handle) - raise HandleError('Handle %s not found' % handle.encode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_tag_from_name(self, val): """ @@ -1611,7 +1614,7 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})): def set_mediapath(self, path): """ - Set the default media path for database, path should be utf-8. + Set the default media path for database. """ if not self.db_is_open: LOG.warning("database is closed") diff --git a/gramps/gen/db/generic.py b/gramps/gen/db/generic.py index 509325057..1d5332d28 100644 --- a/gramps/gen/db/generic.py +++ b/gramps/gen/db/generic.py @@ -1285,8 +1285,6 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback): ################################################################ def _get_from_handle(self, obj_key, obj_class, handle): - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle is None: raise HandleError('Handle is None') if not handle: diff --git a/gramps/gen/filters/rules/test/event_rules_test.py b/gramps/gen/filters/rules/test/event_rules_test.py index f158ee45d..010706996 100644 --- a/gramps/gen/filters/rules/test/event_rules_test.py +++ b/gramps/gen/filters/rules/test/event_rules_test.py @@ -81,7 +81,7 @@ class BaseTest(unittest.TestCase): """ rule = HasIdOf(['E0001']) self.assertEqual(self.filter_with_rule(rule), - set([b'a5af0eb696917232725'])) + set(['a5af0eb696917232725'])) def test_hasgallery(self): """ @@ -89,7 +89,7 @@ class BaseTest(unittest.TestCase): """ rule = HasGallery(['0', 'greater than']) self.assertEqual(self.filter_with_rule(rule), - set([b'a5af0ecb107303354a0'])) + set(['a5af0ecb107303354a0'])) def test_regexpidof(self): """ @@ -97,11 +97,11 @@ class BaseTest(unittest.TestCase): """ rule = RegExpIdOf(['E000.'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), set([ - b'a5af0eb69cf2d3fb615', b'a5af0eb667015e355db', - b'a5af0eb6a016da2d6d1', b'a5af0eb6a405acb126c', - b'a5af0eb698f29568502', b'a5af0eb69b82a6cdc5a', - b'a5af0eb69f41bfb5a6a', b'a5af0eb69c40c179441', - b'a5af0eb6a3229544ba2', b'a5af0eb696917232725'])) + 'a5af0eb69cf2d3fb615', 'a5af0eb667015e355db', + 'a5af0eb6a016da2d6d1', 'a5af0eb6a405acb126c', + 'a5af0eb698f29568502', 'a5af0eb69b82a6cdc5a', + 'a5af0eb69f41bfb5a6a', 'a5af0eb69c40c179441', + 'a5af0eb6a3229544ba2', 'a5af0eb696917232725'])) def test_hascitation(self): """ @@ -109,7 +109,7 @@ class BaseTest(unittest.TestCase): """ rule = HasCitation(['page 1', '', '']) self.assertEqual(self.filter_with_rule(rule), - set([b'a5af0ecb107303354a0'])) + set(['a5af0ecb107303354a0'])) def test_hasnote(self): """ @@ -117,7 +117,7 @@ class BaseTest(unittest.TestCase): """ rule = HasNote([]) self.assertEqual(self.filter_with_rule(rule), - set([b'a5af0ecb11f5ac3110e'])) + set(['a5af0ecb11f5ac3110e'])) def test_hasnoteregexp(self): """ @@ -125,7 +125,7 @@ class BaseTest(unittest.TestCase): """ rule = HasNoteRegexp(['.'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), - set([b'a5af0ecb11f5ac3110e'])) + set(['a5af0ecb11f5ac3110e'])) def test_hasreferencecountof(self): """ @@ -133,8 +133,8 @@ class BaseTest(unittest.TestCase): """ rule = HasReferenceCountOf(['greater than', '1']) self.assertEqual(self.filter_with_rule(rule), set([ - b'cc8205d86fc4e9706a5', b'a5af0ed60de7a612b9e', - b'cc820604ef05cb67907'])) + 'cc8205d86fc4e9706a5', 'a5af0ed60de7a612b9e', + 'cc820604ef05cb67907'])) def test_hassourcecount(self): """ @@ -142,7 +142,7 @@ class BaseTest(unittest.TestCase): """ rule = HasSourceCount(['1', 'greater than']) self.assertEqual(self.filter_with_rule(rule), - set([b'a5af0ecb107303354a0'])) + set(['a5af0ecb107303354a0'])) def test_eventprivate(self): """ @@ -157,7 +157,7 @@ class BaseTest(unittest.TestCase): """ rule = MatchesSourceConfidence(['2']) self.assertEqual(self.filter_with_rule(rule), - set([b'a5af0ecb107303354a0'])) + set(['a5af0ecb107303354a0'])) def test_hasattribute(self): """ @@ -165,7 +165,7 @@ class BaseTest(unittest.TestCase): """ rule = HasAttribute(['Cause', '']) self.assertEqual(self.filter_with_rule(rule), - set([b'a5af0ecb11f5ac3110e'])) + set(['a5af0ecb11f5ac3110e'])) def test_hasdata(self): """ @@ -173,8 +173,8 @@ class BaseTest(unittest.TestCase): """ rule = HasData(['Burial', 'before 1800', 'USA', '']) self.assertEqual(self.filter_with_rule(rule), set([ - b'a5af0ed4211095487d2', b'a5af0ed36793c1d3e05', - b'a5af0ecfcc16ce7a96a'])) + 'a5af0ed4211095487d2', 'a5af0ed36793c1d3e05', + 'a5af0ecfcc16ce7a96a'])) def test_changedsince(self): """ @@ -182,8 +182,8 @@ class BaseTest(unittest.TestCase): """ rule = ChangedSince(['2011-01-01', '2014-01-01']) self.assertEqual(self.filter_with_rule(rule), set([ - b'a5af0ecb107303354a0', b'a5af0ecb11f5ac3110e', - b'a5af0ed5df832ee65c1'])) + 'a5af0ecb107303354a0', 'a5af0ecb11f5ac3110e', + 'a5af0ed5df832ee65c1'])) def test_hastag(self): """ diff --git a/gramps/gen/filters/rules/test/family_rules_test.py b/gramps/gen/filters/rules/test/family_rules_test.py index 2cce8d523..7b626e788 100644 --- a/gramps/gen/filters/rules/test/family_rules_test.py +++ b/gramps/gen/filters/rules/test/family_rules_test.py @@ -83,7 +83,7 @@ class BaseTest(unittest.TestCase): """ rule = HasGallery(['0', 'greater than']) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_hasidof(self): """ @@ -91,7 +91,7 @@ class BaseTest(unittest.TestCase): """ rule = HasIdOf(['F0001']) self.assertEqual(self.filter_with_rule(rule), - set([b'48TJQCGNNIR5SJRCAK'])) + set(['48TJQCGNNIR5SJRCAK'])) def test_haslds(self): """ @@ -99,7 +99,7 @@ class BaseTest(unittest.TestCase): """ rule = HasLDS(['0', 'greater than']) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_hasnote(self): """ @@ -107,7 +107,7 @@ class BaseTest(unittest.TestCase): """ rule = HasNote([]) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_regexpidof(self): """ @@ -115,11 +115,11 @@ class BaseTest(unittest.TestCase): """ rule = RegExpIdOf(['F000.'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), set([ - b'LOTJQC78O5B4WQGJRP', b'UPTJQC4VPCABZUDB75', - b'NBTJQCIX49EKOCIHBP', b'C9UJQCF6ETBTV2MRRV', - b'74UJQCKV8R4NBNHCB', b'4BTJQCL4CHNA5OUTKF', - b'48TJQCGNNIR5SJRCAK', b'4YTJQCTEH7PQUU4AD', - b'MTTJQC05LKVFFLN01A', b'd5839c123c034ef82ab', + 'LOTJQC78O5B4WQGJRP', 'UPTJQC4VPCABZUDB75', + 'NBTJQCIX49EKOCIHBP', 'C9UJQCF6ETBTV2MRRV', + '74UJQCKV8R4NBNHCB', '4BTJQCL4CHNA5OUTKF', + '48TJQCGNNIR5SJRCAK', '4YTJQCTEH7PQUU4AD', + 'MTTJQC05LKVFFLN01A', 'd5839c123c034ef82ab', ])) def test_hasnoteregexp(self): @@ -128,7 +128,7 @@ class BaseTest(unittest.TestCase): """ rule = HasNoteRegexp(['.'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_hasreferencecountof(self): """ @@ -136,10 +136,10 @@ class BaseTest(unittest.TestCase): """ rule = HasReferenceCountOf(['greater than', '12']) self.assertEqual(self.filter_with_rule(rule), set([ - b'29IKQCMUNFTIBV653N', b'8OUJQCUVZ0XML7BQLF', b'UPTJQC4VPCABZUDB75', - b'9NWJQCJGLXUR3AQSFJ', b'5G2KQCGBTS86UVSRG5', b'WG2KQCSY9LEFDFQHMN', - b'MTTJQC05LKVFFLN01A', b'C2VJQC71TNHO7RBBMX', b'QIDKQCJQ37SIUQ3UFU', - b'DV4KQCX9OBVQ74H77F'])) + '29IKQCMUNFTIBV653N', '8OUJQCUVZ0XML7BQLF', 'UPTJQC4VPCABZUDB75', + '9NWJQCJGLXUR3AQSFJ', '5G2KQCGBTS86UVSRG5', 'WG2KQCSY9LEFDFQHMN', + 'MTTJQC05LKVFFLN01A', 'C2VJQC71TNHO7RBBMX', 'QIDKQCJQ37SIUQ3UFU', + 'DV4KQCX9OBVQ74H77F'])) def test_hassourcecount(self): """ @@ -147,7 +147,7 @@ class BaseTest(unittest.TestCase): """ rule = HasSourceCount(['1', 'greater than']) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_hassourceof(self): """ @@ -155,7 +155,7 @@ class BaseTest(unittest.TestCase): """ rule = HasSourceOf(['S0001']) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_hascitation(self): """ @@ -163,7 +163,7 @@ class BaseTest(unittest.TestCase): """ rule = HasCitation(['page 10', '', '2']) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_familyprivate(self): """ @@ -178,8 +178,8 @@ class BaseTest(unittest.TestCase): """ rule = HasEvent(['Marriage', 'before 1900', 'USA', '', 'Garner']) self.assertEqual(self.filter_with_rule(rule), set([ - b'KSFKQCP4V0YXGM1LR9', b'8ZFKQC3FRSHACOJBOU', b'3XFKQCE7QUDJ99AVNV', - b'OVFKQC51DX0OQUV3JB', b'9OUJQCBOHW9UEK9CNV'])) + 'KSFKQCP4V0YXGM1LR9', '8ZFKQC3FRSHACOJBOU', '3XFKQCE7QUDJ99AVNV', + 'OVFKQC51DX0OQUV3JB', '9OUJQCBOHW9UEK9CNV'])) def test_hasattribute(self): """ @@ -187,7 +187,7 @@ class BaseTest(unittest.TestCase): """ rule = HasAttribute(['Number of Children', '']) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_isbookmarked(self): """ @@ -195,7 +195,7 @@ class BaseTest(unittest.TestCase): """ rule = IsBookmarked([]) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_matchessourceconfidence(self): """ @@ -211,7 +211,7 @@ class BaseTest(unittest.TestCase): rule = FatherHasNameOf(['', '', 'Dr.', '', '', '', '', '', '', '', '']) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_fatherhasidof(self): """ @@ -219,7 +219,7 @@ class BaseTest(unittest.TestCase): """ rule = FatherHasIdOf(['I0106']) self.assertEqual(self.filter_with_rule(rule), - set([b'8OUJQCUVZ0XML7BQLF'])) + set(['8OUJQCUVZ0XML7BQLF'])) def test_motherhasnameof(self): """ @@ -228,8 +228,8 @@ class BaseTest(unittest.TestCase): rule = MotherHasNameOf(['', 'Alvarado', '', '', '', '', '', '', '', '', '']) self.assertEqual(self.filter_with_rule(rule), set([ - b'EM3KQC48HFLA02TF8D', b'K9NKQCBG105ECXZ48D', - b'2QMKQC5YWNAWZMG6VO', b'6JUJQCCAXGENRX990K'])) + 'EM3KQC48HFLA02TF8D', 'K9NKQCBG105ECXZ48D', + '2QMKQC5YWNAWZMG6VO', '6JUJQCCAXGENRX990K'])) def test_motherhasidof(self): """ @@ -237,7 +237,7 @@ class BaseTest(unittest.TestCase): """ rule = MotherHasIdOf(['I0107']) self.assertEqual(self.filter_with_rule(rule), - set([b'8OUJQCUVZ0XML7BQLF'])) + set(['8OUJQCUVZ0XML7BQLF'])) def test_childhasnameof(self): """ @@ -246,9 +246,9 @@ class BaseTest(unittest.TestCase): rule = ChildHasNameOf(['Eugene', '', '', '', '', '', '', '', '', '', '']) self.assertEqual(self.filter_with_rule(rule), set([ - b'D1YJQCGLEIBPPLNL4B', b'5GTJQCXVYVAIQTBVKA', b'I42KQCM3S926FMJ91O', - b'7CTJQCFJVBQSY076A6', b'9OUJQCBOHW9UEK9CNV', b'9IXJQCX18AHUFPQHEZ', - b'9NWJQCJGLXUR3AQSFJ'])) + 'D1YJQCGLEIBPPLNL4B', '5GTJQCXVYVAIQTBVKA', 'I42KQCM3S926FMJ91O', + '7CTJQCFJVBQSY076A6', '9OUJQCBOHW9UEK9CNV', '9IXJQCX18AHUFPQHEZ', + '9NWJQCJGLXUR3AQSFJ'])) def test_childhasidof(self): """ @@ -256,7 +256,7 @@ class BaseTest(unittest.TestCase): """ rule = ChildHasIdOf(['I0001']) self.assertEqual(self.filter_with_rule(rule), - set([b'48TJQCGNNIR5SJRCAK'])) + set(['48TJQCGNNIR5SJRCAK'])) def test_changedsince(self): """ @@ -264,7 +264,7 @@ class BaseTest(unittest.TestCase): """ rule = ChangedSince(['2008-01-01', '2014-01-01']) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_hastag(self): """ @@ -272,7 +272,7 @@ class BaseTest(unittest.TestCase): """ rule = HasTag(['ToDo']) self.assertEqual(self.filter_with_rule(rule), - set([b'9OUJQCBOHW9UEK9CNV'])) + set(['9OUJQCBOHW9UEK9CNV'])) def test_hastwins(self): """ @@ -280,8 +280,8 @@ class BaseTest(unittest.TestCase): """ rule = HasTwins([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'SD6KQC7LB8MYGA7F5W', b'8OUJQCUVZ0XML7BQLF', b'1BVJQCNTFAGS8273LJ', - b'5IUJQCRJY47YQ8PU7N', b'ZLUJQCPDV93OR8KHB7', b'4U2KQCBXG2VTPH6U1F', + 'SD6KQC7LB8MYGA7F5W', '8OUJQCUVZ0XML7BQLF', '1BVJQCNTFAGS8273LJ', + '5IUJQCRJY47YQ8PU7N', 'ZLUJQCPDV93OR8KHB7', '4U2KQCBXG2VTPH6U1F', ])) def test_isancestorof(self): @@ -290,10 +290,10 @@ class BaseTest(unittest.TestCase): """ rule = IsAncestorOf(['F0031', '0']) self.assertEqual(self.filter_with_rule(rule), set([ - b'4AXJQC96KTN3WGPTVE', b'1RUJQCYX9QL1V45YLD', b'5GTJQCXVYVAIQTBVKA', - b'X3WJQCSF48F6809142', b'NSVJQC89IHEEBIPDP2', b'9OUJQCBOHW9UEK9CNV', - b'1RUJQCCL9MVRYLMTBO', b'RRVJQC5A8DDHQFPRDL', b'0SUJQCOS78AXGWP8QR', - b'57WJQCTBJKR5QYPS6K', b'8OUJQCUVZ0XML7BQLF', b'7PUJQC4PPS4EDIVMYE' + '4AXJQC96KTN3WGPTVE', '1RUJQCYX9QL1V45YLD', '5GTJQCXVYVAIQTBVKA', + 'X3WJQCSF48F6809142', 'NSVJQC89IHEEBIPDP2', '9OUJQCBOHW9UEK9CNV', + '1RUJQCCL9MVRYLMTBO', 'RRVJQC5A8DDHQFPRDL', '0SUJQCOS78AXGWP8QR', + '57WJQCTBJKR5QYPS6K', '8OUJQCUVZ0XML7BQLF', '7PUJQC4PPS4EDIVMYE' ])) def test_isdescendantof(self): @@ -302,11 +302,11 @@ class BaseTest(unittest.TestCase): """ rule = IsDescendantOf(['F0031', '0']) self.assertEqual(self.filter_with_rule(rule), set([ - b'SFXJQCLE8PIG7PH38J', b'UCXJQCC5HS8VXDKWBM', b'IIEKQCRX89WYBHKB7R', - b'XDXJQCMWU5EIV8XCRF', b'7BXJQCU22OCA4HN38A', b'3FXJQCR749H2H7G321', - b'IEXJQCFUN95VENI6BO', b'4FXJQC7656WDQ3HJGW', b'FLEKQCRVG3O1UA9YUB', - b'BCXJQC9AQ0DBXCVLEQ', b'9SEKQCAAWRUCIO7A0M', b'DDXJQCVT5X72TOXP0C', - b'CGXJQC515QL9RLPQTU', b'XGXJQCNVZH2PWRMVAH', b'RBXJQCUYMQR2KRMDFY' + 'SFXJQCLE8PIG7PH38J', 'UCXJQCC5HS8VXDKWBM', 'IIEKQCRX89WYBHKB7R', + 'XDXJQCMWU5EIV8XCRF', '7BXJQCU22OCA4HN38A', '3FXJQCR749H2H7G321', + 'IEXJQCFUN95VENI6BO', '4FXJQC7656WDQ3HJGW', 'FLEKQCRVG3O1UA9YUB', + 'BCXJQC9AQ0DBXCVLEQ', '9SEKQCAAWRUCIO7A0M', 'DDXJQCVT5X72TOXP0C', + 'CGXJQC515QL9RLPQTU', 'XGXJQCNVZH2PWRMVAH', 'RBXJQCUYMQR2KRMDFY' ])) diff --git a/gramps/gen/filters/rules/test/media_rules_test.py b/gramps/gen/filters/rules/test/media_rules_test.py index 9c289b064..395496109 100644 --- a/gramps/gen/filters/rules/test/media_rules_test.py +++ b/gramps/gen/filters/rules/test/media_rules_test.py @@ -74,7 +74,7 @@ class BaseTest(unittest.TestCase): """ rule = HasIdOf(['O0000']) self.assertEqual(self.filter_with_rule(rule), - set([b'b39fe1cfc1305ac4a21'])) + set(['b39fe1cfc1305ac4a21'])) def test_regexpidof(self): """ @@ -82,9 +82,9 @@ class BaseTest(unittest.TestCase): """ rule = RegExpIdOf(['O000.'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), set([ - b'F0QIGQFT275JFJ75E8', b'78V2GQX2FKNSYQ3OHE', - b'b39fe1cfc1305ac4a21', b'F8JYGQFL2PKLSYH79X', - b'B1AUFQV7H8R9NR4SZM'])) + 'F0QIGQFT275JFJ75E8', '78V2GQX2FKNSYQ3OHE', + 'b39fe1cfc1305ac4a21', 'F8JYGQFL2PKLSYH79X', + 'B1AUFQV7H8R9NR4SZM'])) def test_hascitation(self): """ @@ -92,7 +92,7 @@ class BaseTest(unittest.TestCase): """ rule = HasCitation(['page 21', '', '']) self.assertEqual(self.filter_with_rule(rule), - set([b'B1AUFQV7H8R9NR4SZM'])) + set(['B1AUFQV7H8R9NR4SZM'])) def test_hasnoteregexp(self): """ @@ -114,7 +114,7 @@ class BaseTest(unittest.TestCase): """ rule = HasReferenceCountOf(['greater than', '1']) self.assertEqual(self.filter_with_rule(rule), set([ - b'238CGQ939HG18SS5MG', b'b39fe1cfc1305ac4a21'])) + '238CGQ939HG18SS5MG', 'b39fe1cfc1305ac4a21'])) def test_hassourcecount(self): """ @@ -122,7 +122,7 @@ class BaseTest(unittest.TestCase): """ rule = HasSourceCount(['1', 'equal to']) self.assertEqual(self.filter_with_rule(rule), - set([b'B1AUFQV7H8R9NR4SZM'])) + set(['B1AUFQV7H8R9NR4SZM'])) def test_hassourceof(self): """ @@ -130,7 +130,7 @@ class BaseTest(unittest.TestCase): """ rule = HasSourceOf(['S0001']) self.assertEqual(self.filter_with_rule(rule), - set([b'B1AUFQV7H8R9NR4SZM'])) + set(['B1AUFQV7H8R9NR4SZM'])) def test_mediaprivate(self): """ @@ -145,7 +145,7 @@ class BaseTest(unittest.TestCase): """ rule = MatchesSourceConfidence(['2']) self.assertEqual(self.filter_with_rule(rule), - set([b'B1AUFQV7H8R9NR4SZM'])) + set(['B1AUFQV7H8R9NR4SZM'])) def test_hasmedia(self): """ @@ -153,7 +153,7 @@ class BaseTest(unittest.TestCase): """ rule = HasMedia(['mannschaft', 'image/jpeg', '.jpg', '1897']) self.assertEqual(self.filter_with_rule(rule), - set([b'238CGQ939HG18SS5MG'])) + set(['238CGQ939HG18SS5MG'])) def test_hasattribute(self): """ @@ -161,7 +161,7 @@ class BaseTest(unittest.TestCase): """ rule = HasAttribute(['Description', '']) self.assertEqual(self.filter_with_rule(rule), - set([b'B1AUFQV7H8R9NR4SZM'])) + set(['B1AUFQV7H8R9NR4SZM'])) def test_changedsince(self): """ @@ -169,8 +169,8 @@ class BaseTest(unittest.TestCase): """ rule = ChangedSince(['2010-01-01', '2016-01-01']) self.assertEqual(self.filter_with_rule(rule), set([ - b'b39fe1cfc1305ac4a21', b'B1AUFQV7H8R9NR4SZM', - b'238CGQ939HG18SS5MG', b'F0QIGQFT275JFJ75E8'])) + 'b39fe1cfc1305ac4a21', 'B1AUFQV7H8R9NR4SZM', + '238CGQ939HG18SS5MG', 'F0QIGQFT275JFJ75E8'])) def test_hastag(self): """ @@ -178,7 +178,7 @@ class BaseTest(unittest.TestCase): """ rule = HasTag(['ToDo']) self.assertEqual(self.filter_with_rule(rule), - set([b'238CGQ939HG18SS5MG'])) + set(['238CGQ939HG18SS5MG'])) if __name__ == "__main__": diff --git a/gramps/gen/filters/rules/test/note_rules_test.py b/gramps/gen/filters/rules/test/note_rules_test.py index c71714a94..c8a429201 100644 --- a/gramps/gen/filters/rules/test/note_rules_test.py +++ b/gramps/gen/filters/rules/test/note_rules_test.py @@ -72,7 +72,7 @@ class BaseTest(unittest.TestCase): """ rule = HasIdOf(['N0001']) self.assertEqual(self.filter_with_rule(rule), - set([b'ac380498bac48eedee8'])) + set(['ac380498bac48eedee8'])) def test_regexpidof(self): """ @@ -80,11 +80,11 @@ class BaseTest(unittest.TestCase): """ rule = RegExpIdOf(['N000.'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), set([ - b'ac380498c020c7bcdc7', b'ac3804a842b21358c97', - b'ae13613d581506d040892f88a21', b'ac3804a8405171ef666', - b'ac3804a1d747a39822c', b'ac3804aac6b762b75a5', - b'ac380498bac48eedee8', b'ac3804a1d66258b8e13', - b'ac380498bc46102e1e8', b'b39fe2e143d1e599450'])) + 'ac380498c020c7bcdc7', 'ac3804a842b21358c97', + 'ae13613d581506d040892f88a21', 'ac3804a8405171ef666', + 'ac3804a1d747a39822c', 'ac3804aac6b762b75a5', + 'ac380498bac48eedee8', 'ac3804a1d66258b8e13', + 'ac380498bc46102e1e8', 'b39fe2e143d1e599450'])) def test_hasnote(self): """ @@ -92,7 +92,7 @@ class BaseTest(unittest.TestCase): """ rule = HasNote(['note', 'Person Note']) self.assertEqual(self.filter_with_rule(rule), set([ - b'b39ff11d8912173cded', b'b39ff01f75c1f76859a'])) + 'b39ff11d8912173cded', 'b39ff01f75c1f76859a'])) def test_matchesregexpof(self): """ @@ -100,8 +100,8 @@ class BaseTest(unittest.TestCase): """ rule = MatchesRegexpOf(['^This'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), set([ - b'b39ff11d8912173cded', b'c140d4c29520c92055c', - b'b39ff01f75c1f76859a'])) + 'b39ff11d8912173cded', 'c140d4c29520c92055c', + 'b39ff01f75c1f76859a'])) def test_hasreferencecountof(self): """ @@ -109,7 +109,7 @@ class BaseTest(unittest.TestCase): """ rule = HasReferenceCountOf(['greater than', '1']) self.assertEqual(self.filter_with_rule(rule), - set([b'c140d4c29520c92055c'])) + set(['c140d4c29520c92055c'])) def test_noteprivate(self): """ @@ -124,9 +124,9 @@ class BaseTest(unittest.TestCase): """ rule = ChangedSince(['2010-01-01', '2016-01-01']) self.assertEqual(self.filter_with_rule(rule), set([ - b'c140d4c29520c92055c', b'd0436bcc69d6bba278bff5bc7db', - b'b39fe2e143d1e599450', b'd0436bba4ec328d3b631259a4ee', - b'd0436be64ac277b615b79b34e72'])) + 'c140d4c29520c92055c', 'd0436bcc69d6bba278bff5bc7db', + 'b39fe2e143d1e599450', 'd0436bba4ec328d3b631259a4ee', + 'd0436be64ac277b615b79b34e72'])) def test_hastag(self): """ @@ -134,7 +134,7 @@ class BaseTest(unittest.TestCase): """ rule = HasTag(['ToDo']) self.assertEqual(self.filter_with_rule(rule), set([ - b'b39ff01f75c1f76859a', b'b39fe2e143d1e599450'])) + 'b39ff01f75c1f76859a', 'b39fe2e143d1e599450'])) def test_hastype(self): """ @@ -142,8 +142,8 @@ class BaseTest(unittest.TestCase): """ rule = HasType(['Person Note']) self.assertEqual(self.filter_with_rule(rule), set([ - b'ac380498c020c7bcdc7', b'b39ff11d8912173cded', - b'b39ff01f75c1f76859a'])) + 'ac380498c020c7bcdc7', 'b39ff11d8912173cded', + 'b39ff01f75c1f76859a'])) if __name__ == "__main__": diff --git a/gramps/gen/filters/rules/test/person_rules_test.py b/gramps/gen/filters/rules/test/person_rules_test.py index 900afcfc1..75e9f6aad 100644 --- a/gramps/gen/filters/rules/test/person_rules_test.py +++ b/gramps/gen/filters/rules/test/person_rules_test.py @@ -68,31 +68,31 @@ class BaseTest(unittest.TestCase): """ rule = Disconnected([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'0PBKQCXHLAEIB46ZIA', b'QEVJQC04YO01UAWJ2N', b'UT0KQCMN7PC9XURRXJ', - b'MZAKQCKAQLIQYWP5IW', b'Y7BKQC9CUXWQLGLPQM', b'OBBKQC8NJM5UYBO849', - b'NPBKQCKEF0G7T4H312', b'423KQCGLT8UISDUM1Q', b'8S0KQCNORIWDL0X8SB', - b'AP5KQC0LBXPM727OWB', b'AREKQC0VPBHNZ5R3IO', b'KU0KQCJ0RUTJTIUKSA', - b'VC4KQC7L7KKH9RLHXN', b'0P3KQCRSIVL1A4VJ19', b'PK6KQCGEL4PTE720BL', - b'YIKKQCSD2Z85UHJ8LX', b'KY8KQCMIH2HUUGLA3R', b'RD7KQCQ24B1N3OEC5X', - b'NV0KQC7SIEH3SVDPP1', b'KIKKQCU2CJ543TLM5J', b'AT0KQC4P3MMUCHI3BK', - b'J6BKQC1PMNBAYSLM9U', b'IXXJQCLKOUAJ5RSQY4', b'U4ZJQC5VR0QBIE8DU', - b'F7BKQC4NXO9R7XOG2W', b'7U0KQC6PGZBNQATNOT', b'78AKQCI05U36T3E82O', - b'H1GKQCWOUJHFSHXABA', b'ZWGKQCRFZAPC5PYJZ1', b'EZ0KQCF3LSM9PRSG0K', - b'FHKKQC963NGSY18ZDZ', b'FJ9KQCRJ3RGHNBWW4S', b'S2EKQC9F4UR4R71IC3', - b'1XBKQCX019BKJ0M9IH', b'Z62KQC706L0B0WTN3Q', b'O7EKQCEVZ7FBEWMNWE', - b'XY8KQCULFPN4SR915Q', b'WQDKQCEULSD5G9XNFI', b'2Z0KQCSWKVFG7RPFD8', - b'26BKQC0SJIJOH02H2A', b'262KQCH2RQKN0CBRLF', b'P5ZJQCMKO7EYV4HFCL', - b'KXBKQC52JO3AP4GMLF', b'9IFKQC60JTDBV57N6S', b'TQ0KQCZ8LA7X9DIEAN', - b'BAXJQCORQA5Q46FCDG', b'VR0KQC7LVANO83AL35', b'75CKQC4T617U2E5T5Y', - b'LCTKQCZU3F94CEFSOM', b'WJYJQCPNJJI5JN07SD', b'3N6KQC6BE5EIXTRMDL', - b'CM5KQCD57I15GKLAMB', b'cccbffffd3e69819cd8', - b'BJKKQCVDA66528PDAU', b'QS0KQCLMIZFI8ZDLM3', b'UW0KQCRHBIYMA8LPZD', - b'GJ7KQC7APJSAMHEK5Q', b'711KQCDXOQWB3KDWEP', b'PY0KQC77AJ3457A6C2', - b'WZ0KQCYVMEJHDR4MV2', b'28EKQCQGM6NLLWFRG7', b'E33KQCRREJALRA715H', - b'8HKKQCTEJAOBVH410L', b'IO6KQC70PMBQUDNB3L', b'1YBKQCWRBNB433NEMH', - b'M01KQCF7KUWCDY67JD', b'CR0KQCOMV2QPPC90IF', b'85ZJQCMG38N7Q2WKIK', - b'I9GKQCERACL8UZF2PY', b'BY0KQCOZUK47R2JZDE', b'7W0KQCYDMD4LTSY5JL', - b'A0YJQC3HONEKD1JCPK', b'd5839c13b0541b7b8e6', + '0PBKQCXHLAEIB46ZIA', 'QEVJQC04YO01UAWJ2N', 'UT0KQCMN7PC9XURRXJ', + 'MZAKQCKAQLIQYWP5IW', 'Y7BKQC9CUXWQLGLPQM', 'OBBKQC8NJM5UYBO849', + 'NPBKQCKEF0G7T4H312', '423KQCGLT8UISDUM1Q', '8S0KQCNORIWDL0X8SB', + 'AP5KQC0LBXPM727OWB', 'AREKQC0VPBHNZ5R3IO', 'KU0KQCJ0RUTJTIUKSA', + 'VC4KQC7L7KKH9RLHXN', '0P3KQCRSIVL1A4VJ19', 'PK6KQCGEL4PTE720BL', + 'YIKKQCSD2Z85UHJ8LX', 'KY8KQCMIH2HUUGLA3R', 'RD7KQCQ24B1N3OEC5X', + 'NV0KQC7SIEH3SVDPP1', 'KIKKQCU2CJ543TLM5J', 'AT0KQC4P3MMUCHI3BK', + 'J6BKQC1PMNBAYSLM9U', 'IXXJQCLKOUAJ5RSQY4', 'U4ZJQC5VR0QBIE8DU', + 'F7BKQC4NXO9R7XOG2W', '7U0KQC6PGZBNQATNOT', '78AKQCI05U36T3E82O', + 'H1GKQCWOUJHFSHXABA', 'ZWGKQCRFZAPC5PYJZ1', 'EZ0KQCF3LSM9PRSG0K', + 'FHKKQC963NGSY18ZDZ', 'FJ9KQCRJ3RGHNBWW4S', 'S2EKQC9F4UR4R71IC3', + '1XBKQCX019BKJ0M9IH', 'Z62KQC706L0B0WTN3Q', 'O7EKQCEVZ7FBEWMNWE', + 'XY8KQCULFPN4SR915Q', 'WQDKQCEULSD5G9XNFI', '2Z0KQCSWKVFG7RPFD8', + '26BKQC0SJIJOH02H2A', '262KQCH2RQKN0CBRLF', 'P5ZJQCMKO7EYV4HFCL', + 'KXBKQC52JO3AP4GMLF', '9IFKQC60JTDBV57N6S', 'TQ0KQCZ8LA7X9DIEAN', + 'BAXJQCORQA5Q46FCDG', 'VR0KQC7LVANO83AL35', '75CKQC4T617U2E5T5Y', + 'LCTKQCZU3F94CEFSOM', 'WJYJQCPNJJI5JN07SD', '3N6KQC6BE5EIXTRMDL', + 'CM5KQCD57I15GKLAMB', 'cccbffffd3e69819cd8', + 'BJKKQCVDA66528PDAU', 'QS0KQCLMIZFI8ZDLM3', 'UW0KQCRHBIYMA8LPZD', + 'GJ7KQC7APJSAMHEK5Q', '711KQCDXOQWB3KDWEP', 'PY0KQC77AJ3457A6C2', + 'WZ0KQCYVMEJHDR4MV2', '28EKQCQGM6NLLWFRG7', 'E33KQCRREJALRA715H', + '8HKKQCTEJAOBVH410L', 'IO6KQC70PMBQUDNB3L', '1YBKQCWRBNB433NEMH', + 'M01KQCF7KUWCDY67JD', 'CR0KQCOMV2QPPC90IF', '85ZJQCMG38N7Q2WKIK', + 'I9GKQCERACL8UZF2PY', 'BY0KQCOZUK47R2JZDE', '7W0KQCYDMD4LTSY5JL', + 'A0YJQC3HONEKD1JCPK', 'd5839c13b0541b7b8e6', ])) def test_everyone(self): @@ -117,7 +117,7 @@ class BaseTest(unittest.TestCase): """ rule = HasAlternateName([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'46WJQCIOLQ0KOX2XCC', b'GNUJQCL9MD64AM56OH', + '46WJQCIOLQ0KOX2XCC', 'GNUJQCL9MD64AM56OH', ])) def test_commonancestor_empty(self): @@ -134,7 +134,7 @@ class BaseTest(unittest.TestCase): """ rule = HasCommonAncestorWith(['I0000']) self.assertEqual(self.filter_with_rule(rule), set([ - b'd5839c1237765987724' + 'd5839c1237765987724' ])) def test_commonancestor_irregular(self): @@ -151,39 +151,39 @@ class BaseTest(unittest.TestCase): """ rule = HasCommonAncestorWith(['I0044']) self.assertEqual(self.filter_with_rule(rule), set([ - b'GNUJQCL9MD64AM56OH', b'SOFKQCBYAO18OWC0CS', b'EMEKQC02EOUF8H0SHM', - b'3EXJQCVWOSQFGLYB6H', b'EMTJQCQU6TL4WAVSE4', b'QUEKQCZL61S8BJJ388', - b'MKEKQCSBQGAVHAPCQT', b'MUFKQCMXUJ07MCDUNI', b'DBXJQCJCEZMO17WZ89', - b'ORFKQC4KLWEGTGR19L', b'MG5KQC6ZKSVO4A63G2', b'N26KQCF3ASHMZ0HEW6', - b'GNWJQC9NLVF2MZLHU9', b'ZFXJQCHAD8SLZZ7KRP', b'44WJQCLCQIPZUB0UH', - b'B8TJQC53HJXOGXK8F7', b'D3WJQCCGV58IP8PNHZ', b'3LEKQCRF3FD2E1H73I', - b'F06KQCZY1I4H4IFZM', b'VMTJQC49IGKLG2EQ5', b'9BXKQC1PVLPYFMD6IX', - b'H1DKQC4YGZ5A61FGS', b'1GWJQCGOOZ8FJW3YK9', b'S16KQCX8XUO3EEL85N', - b'OREKQCF34YE89RL8S6', b'RU5KQCQTPC9SJ5Q1JN', b'GYFKQCPH8Q0JDN94GR', - b'9QFKQC54ET79K2SD57', b'MLEKQCH64557K610VR', b'AWFKQCJELLUWDY2PD3', - b'ZDWJQC7TMS2AWAVF2Y', b'VJFKQCFO7WESWPNKHE', b'LV5KQCJCCR0S3DN5WW', - b'CDTJQCVTVX7CNMY9YU', b'OX5KQCKE3I94MEPDC', b'JF5KQC2L6ABI0MVD3E', - b'CH5KQCIEXSN1J5UEHB', b'4JEKQC22K5UTH9QHCU', b'EPFKQCETTDTEL3PYIR', - b'D16KQCIZS56HVPW6DA', b'2TEKQCTSCRL4Z2AUHE', b'3WEKQCHXRH61E3CIKB', - b'TDTJQCGYRS2RCCGQN3', b'SMWJQCXQ6I2GEXSPK9', b'PXFKQCXEHJX3W1Q1IV', - b'Q9TJQCXDL1599L2B2Z', b'BFXJQCF1JBOXPRW2OS', b'6TFKQCUTO94WB2NHN', - b'FNEKQCO239QSNK0R78', b'3RFKQCNKMX9HVLNSLW', b'W2DKQCV4H3EZUJ35DX', - b'5IEKQCN37EFBK9EBUD', b'LW5KQCXSXRC2XV3T3D', b'ZNEKQCULV911DIXBK3', - b'35WJQC1B7T7NPV8OLV', b'MPEKQC6TIP3SP1YF7I', b'DMFKQC5MHGYC6503F2', - b'3KEKQC45RL87D4ZG86', b'KLTJQC70XVZJSPQ43U', b'LVEKQCP09W7JNFDAFC', - b'DPUJQCUYKKDPT78JJV', b'JDXJQCR5L0NTR21SQA', b'UAXJQC6HC354V7Q6JA', - b'XBXJQCS4QY316ZGHRN', b'HCXJQCRKB4K65V1C07', b'66TJQC6CC7ZWL9YZ64', - b'XNFKQC6DN59LACS9IU', b'LL5KQCG687Y165GL5P', b'7X5KQC9ABK4T6AW7QF', - b'HKTJQCIJD8RK9RJFO1', b'1LTJQCYQI1DXBLG6Z', b'0FWJQCLYEP736P3YZK', - b'0DXJQC1T8P3CQKZIUO', b'ISEKQC97YI74A9VKWC', b'KGXJQCBQ39ON9VB37T', - b'BZ5KQCD4KFI3BTIMZU', b'0HEKQCLINMQS4RB7B8', b'BBTJQCNT6N1H4X6TL4', - b'COFKQCUXC2H4G3QBYT', b'DI5KQC3CLKWQI3I0CC', b'T8TJQCWWI8RY57YNTQ', - b'46WJQCIOLQ0KOX2XCC', b'OEXJQCQJHF2BLSAAIS', b'GNFKQCH8AFJRJO9V4Y', - b'8LFKQCQWXTJQJR4CXV', b'IGWJQCSVT8NXTFXOFJ', b'3PEKQC8ZDCYTSSIKZ9', - b'5UEKQC8N8NEPSWU1QQ', b'NK5KQC1MAOU2BP35ZV', b'UZFKQCIHVT44DC9KGH', - b'JJ5KQC83DT7VDMUYRQ', b'626KQC7C08H3UTM38E', b'XIFKQCLQOY645QTGP7', - b'HEWJQCWQQ3K4BNRLIO', b'HDWJQCT361VOV2PQLP', b'XFKKQCGA4DVECEB48E', - b'KWEKQCTNIIV9BROFFG', + 'GNUJQCL9MD64AM56OH', 'SOFKQCBYAO18OWC0CS', 'EMEKQC02EOUF8H0SHM', + '3EXJQCVWOSQFGLYB6H', 'EMTJQCQU6TL4WAVSE4', 'QUEKQCZL61S8BJJ388', + 'MKEKQCSBQGAVHAPCQT', 'MUFKQCMXUJ07MCDUNI', 'DBXJQCJCEZMO17WZ89', + 'ORFKQC4KLWEGTGR19L', 'MG5KQC6ZKSVO4A63G2', 'N26KQCF3ASHMZ0HEW6', + 'GNWJQC9NLVF2MZLHU9', 'ZFXJQCHAD8SLZZ7KRP', '44WJQCLCQIPZUB0UH', + 'B8TJQC53HJXOGXK8F7', 'D3WJQCCGV58IP8PNHZ', '3LEKQCRF3FD2E1H73I', + 'F06KQCZY1I4H4IFZM', 'VMTJQC49IGKLG2EQ5', '9BXKQC1PVLPYFMD6IX', + 'H1DKQC4YGZ5A61FGS', '1GWJQCGOOZ8FJW3YK9', 'S16KQCX8XUO3EEL85N', + 'OREKQCF34YE89RL8S6', 'RU5KQCQTPC9SJ5Q1JN', 'GYFKQCPH8Q0JDN94GR', + '9QFKQC54ET79K2SD57', 'MLEKQCH64557K610VR', 'AWFKQCJELLUWDY2PD3', + 'ZDWJQC7TMS2AWAVF2Y', 'VJFKQCFO7WESWPNKHE', 'LV5KQCJCCR0S3DN5WW', + 'CDTJQCVTVX7CNMY9YU', 'OX5KQCKE3I94MEPDC', 'JF5KQC2L6ABI0MVD3E', + 'CH5KQCIEXSN1J5UEHB', '4JEKQC22K5UTH9QHCU', 'EPFKQCETTDTEL3PYIR', + 'D16KQCIZS56HVPW6DA', '2TEKQCTSCRL4Z2AUHE', '3WEKQCHXRH61E3CIKB', + 'TDTJQCGYRS2RCCGQN3', 'SMWJQCXQ6I2GEXSPK9', 'PXFKQCXEHJX3W1Q1IV', + 'Q9TJQCXDL1599L2B2Z', 'BFXJQCF1JBOXPRW2OS', '6TFKQCUTO94WB2NHN', + 'FNEKQCO239QSNK0R78', '3RFKQCNKMX9HVLNSLW', 'W2DKQCV4H3EZUJ35DX', + '5IEKQCN37EFBK9EBUD', 'LW5KQCXSXRC2XV3T3D', 'ZNEKQCULV911DIXBK3', + '35WJQC1B7T7NPV8OLV', 'MPEKQC6TIP3SP1YF7I', 'DMFKQC5MHGYC6503F2', + '3KEKQC45RL87D4ZG86', 'KLTJQC70XVZJSPQ43U', 'LVEKQCP09W7JNFDAFC', + 'DPUJQCUYKKDPT78JJV', 'JDXJQCR5L0NTR21SQA', 'UAXJQC6HC354V7Q6JA', + 'XBXJQCS4QY316ZGHRN', 'HCXJQCRKB4K65V1C07', '66TJQC6CC7ZWL9YZ64', + 'XNFKQC6DN59LACS9IU', 'LL5KQCG687Y165GL5P', '7X5KQC9ABK4T6AW7QF', + 'HKTJQCIJD8RK9RJFO1', '1LTJQCYQI1DXBLG6Z', '0FWJQCLYEP736P3YZK', + '0DXJQC1T8P3CQKZIUO', 'ISEKQC97YI74A9VKWC', 'KGXJQCBQ39ON9VB37T', + 'BZ5KQCD4KFI3BTIMZU', '0HEKQCLINMQS4RB7B8', 'BBTJQCNT6N1H4X6TL4', + 'COFKQCUXC2H4G3QBYT', 'DI5KQC3CLKWQI3I0CC', 'T8TJQCWWI8RY57YNTQ', + '46WJQCIOLQ0KOX2XCC', 'OEXJQCQJHF2BLSAAIS', 'GNFKQCH8AFJRJO9V4Y', + '8LFKQCQWXTJQJR4CXV', 'IGWJQCSVT8NXTFXOFJ', '3PEKQC8ZDCYTSSIKZ9', + '5UEKQC8N8NEPSWU1QQ', 'NK5KQC1MAOU2BP35ZV', 'UZFKQCIHVT44DC9KGH', + 'JJ5KQC83DT7VDMUYRQ', '626KQC7C08H3UTM38E', 'XIFKQCLQOY645QTGP7', + 'HEWJQCWQQ3K4BNRLIO', 'HDWJQCT361VOV2PQLP', 'XFKKQCGA4DVECEB48E', + 'KWEKQCTNIIV9BROFFG', ])) def test_hasnickname(self): @@ -192,8 +192,8 @@ class BaseTest(unittest.TestCase): """ rule = HasNickname([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'cc8205d883763f02abd', b'GNUJQCL9MD64AM56OH', - b'Q8HKQC3VMRM1M6M7ES', + 'cc8205d883763f02abd', 'GNUJQCL9MD64AM56OH', + 'Q8HKQC3VMRM1M6M7ES', ])) def test_hasunknowngender(self): @@ -202,13 +202,13 @@ class BaseTest(unittest.TestCase): """ rule = HasUnknownGender([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'OJOKQC83Y1EDBIMLJ6', b'8BHKQCFK9UZFRJYC2Y', b'PGFKQC1TUQMXFAMLMB', - b'IHOKQCECRZYQDKW6KF', b'8HKKQCTEJAOBVH410L', b'AGFKQCO358R18LNJYV', - b'1ENKQCBPFZTAQJSP4O', b'NUWKQCO7TVAOH0CHLV', b'P5IKQC88STY3FNTFZ3', - b'7GXKQCMVFU8WR1LKZL', b'LGXKQCJ5OP6MKF9QLN', b'XNFKQC6DN59LACS9IU', - b'7IOKQC1NVGUI1E55CQ', b'57PKQCFAWY7AM3JS4M', b'BNXKQCEBXC1RCOGJNF', - b'TFFKQC1RMG8RRADKDH', b'FHKKQC963NGSY18ZDZ', b'WMXKQCDUJ4JKQQYCR7', - b'PBHKQCHOAGTECRKT9L', b'OFXKQC8W0N3N6JP6YQ', + 'OJOKQC83Y1EDBIMLJ6', '8BHKQCFK9UZFRJYC2Y', 'PGFKQC1TUQMXFAMLMB', + 'IHOKQCECRZYQDKW6KF', '8HKKQCTEJAOBVH410L', 'AGFKQCO358R18LNJYV', + '1ENKQCBPFZTAQJSP4O', 'NUWKQCO7TVAOH0CHLV', 'P5IKQC88STY3FNTFZ3', + '7GXKQCMVFU8WR1LKZL', 'LGXKQCJ5OP6MKF9QLN', 'XNFKQC6DN59LACS9IU', + '7IOKQC1NVGUI1E55CQ', '57PKQCFAWY7AM3JS4M', 'BNXKQCEBXC1RCOGJNF', + 'TFFKQC1RMG8RRADKDH', 'FHKKQC963NGSY18ZDZ', 'WMXKQCDUJ4JKQQYCR7', + 'PBHKQCHOAGTECRKT9L', 'OFXKQC8W0N3N6JP6YQ', ])) def test_hassourceof_empty(self): @@ -218,25 +218,25 @@ class BaseTest(unittest.TestCase): # when run with an empty string finds people with no sourc citations rule = HasSourceOf(['']) self.assertEqual(self.filter_with_rule(rule), set([ - b'cc82060512042f67e2c', b'cc8205d87831c772e87', - b'cc82060516c6c141500', b'cc8205d87fd529000ff', - b'cc82060504445ab6deb', b'cc8205d887376aacba2', - b'cccbffffd3e69819cd8', b'cc8205d87c20350420b', - b'cc8206050e541f79f92', b'cc8205d883763f02abd', - b'cc8206050980ea622d0', b'cc8205d872f532ab14e', - b'd5839c132b11d9e3632', b'd583a5ba0d50afbbaaf', - b'd5839c1352c64b924d9', b'd583a5b9fc864e3bf4e', - b'd583a5ba1bd083ce4c2', b'd583a5b9df71bceb48c', - b'd583a5b9ced473a7e6a', b'd583a5ba2bc7b9d1388', - b'd5839c12fec09785f6a', b'd5839c1237765987724', - b'd5839c137b3640ad776', b'd5839c126d11a754f46', - b'd5839c12d3b4d5e619b', b'd5839c13380462b246f', - b'd5839c12e9e08301ce2', b'd5839c1366b21411fb4', - b'd5839c13a282b51dd0d', b'd5839c12ac91650a72b', - b'd583a5b9edf6cb5d8d5', b'd583a5ba4be3acdd312', - b'd5839c131d560e06bac', b'd5839c13b0541b7b8e6', - b'd5839c1388e3ab6c87c', b'd583a5ba5ca6b698463', - b'd583a5ba3bc48c2002c', b'd583a5b90777391ea9a', + 'cc82060512042f67e2c', 'cc8205d87831c772e87', + 'cc82060516c6c141500', 'cc8205d87fd529000ff', + 'cc82060504445ab6deb', 'cc8205d887376aacba2', + 'cccbffffd3e69819cd8', 'cc8205d87c20350420b', + 'cc8206050e541f79f92', 'cc8205d883763f02abd', + 'cc8206050980ea622d0', 'cc8205d872f532ab14e', + 'd5839c132b11d9e3632', 'd583a5ba0d50afbbaaf', + 'd5839c1352c64b924d9', 'd583a5b9fc864e3bf4e', + 'd583a5ba1bd083ce4c2', 'd583a5b9df71bceb48c', + 'd583a5b9ced473a7e6a', 'd583a5ba2bc7b9d1388', + 'd5839c12fec09785f6a', 'd5839c1237765987724', + 'd5839c137b3640ad776', 'd5839c126d11a754f46', + 'd5839c12d3b4d5e619b', 'd5839c13380462b246f', + 'd5839c12e9e08301ce2', 'd5839c1366b21411fb4', + 'd5839c13a282b51dd0d', 'd5839c12ac91650a72b', + 'd583a5b9edf6cb5d8d5', 'd583a5ba4be3acdd312', + 'd5839c131d560e06bac', 'd5839c13b0541b7b8e6', + 'd5839c1388e3ab6c87c', 'd583a5ba5ca6b698463', + 'd583a5ba3bc48c2002c', 'd583a5b90777391ea9a', ])) def test_hassourceof_nonmatching(self): @@ -261,7 +261,7 @@ class BaseTest(unittest.TestCase): """ rule = HasSourceOf(['S0000']) self.assertEqual(self.filter_with_rule(rule), set([ - b'GNUJQCL9MD64AM56OH', + 'GNUJQCL9MD64AM56OH', ])) @@ -271,7 +271,7 @@ class BaseTest(unittest.TestCase): """ rule = HaveAltFamilies([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'CH5KQCIEXSN1J5UEHB', b'MG5KQC6ZKSVO4A63G2', + 'CH5KQCIEXSN1J5UEHB', 'MG5KQC6ZKSVO4A63G2', ])) def test_havechildren(self): @@ -288,36 +288,36 @@ class BaseTest(unittest.TestCase): """ rule = IncompleteNames([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'IHOKQCECRZYQDKW6KF', b'cc82060504445ab6deb', - b'LCXKQCQZH5EH56NTCD', b'cc8205d87831c772e87', - b'3RFKQCNKMX9HVLNSLW', b'cc8205d87fd529000ff', - b'B1UKQCBR49WB3134PN', b'0TTKQCXXY59OCDPLV3', - b'F3UKQC7ZV3EYVWTZ8O', b'1MXKQCJ2BR43910ZYX', - b'cc8206050e541f79f92', b'FHKKQC963NGSY18ZDZ', - b'R5HKQCIEPOY1DMQOWX', b'ZHMKQC50PFVAPI8PZ6', b'T4UKQCYGECXGVNBWMY', - b'cc82060516c6c141500', b'UPWKQCYVFH7RZOSZ29', - b'2AMKQCE67YOH3TBVYI', b'2CUKQCFDVN3EZE2E4C', b'7IOKQC1NVGUI1E55CQ', - b'KSTKQC018GNA7HDCAS', b'WIVKQC4Q4FCQJT5M63', b'A4YKQCRYSI5FT5T38', - b'BUNKQCO4HZHZP70F3K', b'YRTKQCNDP343OD5OQJ', b'7VEKQCV05EDK0625KI', - b'cc8205d872f532ab14e', b'TPXKQCEGL04KHGMO2X', - b'L9LKQCQ8KJRKHM4D2E', b'8QXKQCHJ2EUC7OV8EQ', b'W0XKQCKSFWWJWQ2OSN', - b'I6QKQCFRDTV2LDC8M2', b'XTUKQC7WCIVA5F0NC4', b'F4UKQCPK572VWU2YZQ', - b'JKDKQCF4ND92A088J2', b'COFKQCUXC2H4G3QBYT', b'BNXKQCEBXC1RCOGJNF', - b'Q42KQCKJZGS4IZWHF5', b'P5IKQC88STY3FNTFZ3', b'7CXKQC59NSZFXIG1UE', - b'cc8205d87c20350420b', b'FQUKQCWEHOAWUP4QWS', - b'3YTKQCK2W63W0MQBJE', b'8HKKQCTEJAOBVH410L', b'HLQKQC0BJIZL0V4EK4', - b'B0UKQC9A54F1GUB7NR', b'EPXKQCQRZP2PNPN7BE', - b'cc82060512042f67e2c', b'XZLKQCRQA9EHPBNZPT', - b'OQXKQC2Y5FVH9PK0JL', b'AXLKQC0YTFAWQ234YD', b'OFXKQC8W0N3N6JP6YQ', - b'MWUKQCD2ZSCECQOCLG', b'1ENKQCBPFZTAQJSP4O', b'N7XKQCYD3VSCSZREGJ', - b'2LQKQC62GJUQCJIOK8', b'QXXKQC9PT5FWNT140K', b'VAXKQC19HIFPX61J28', - b'0PXKQCJ9S1M3NNASET', b'K8XKQCDSVLSK422A3K', b'52UKQCFYXMFTKIGNBS', - b'7GXKQCMVFU8WR1LKZL', b'4UMKQCF07KL2K92CI5', b'LGXKQCJ5OP6MKF9QLN', - b'FZTKQCSTPIQ3C9JC46', b'WMXKQCDUJ4JKQQYCR7', b'R6UKQC939L9FV62UGE', - b'OIUKQCBHUWDGL7DNTI', b'FRTKQC3G6JBJAR2ZPX', b'PIEKQCKUL6OAMS8Q9R', - b'cc8205d887376aacba2', b'LGMKQCQP5M5L18FVTN', - b'8HUKQCRV8B3J2LLQ3B', b'LOUKQC45HUN532HOOM', - b'cc8205d883763f02abd', b'TBXKQC7OHIN28PVCS3', + 'IHOKQCECRZYQDKW6KF', 'cc82060504445ab6deb', + 'LCXKQCQZH5EH56NTCD', 'cc8205d87831c772e87', + '3RFKQCNKMX9HVLNSLW', 'cc8205d87fd529000ff', + 'B1UKQCBR49WB3134PN', '0TTKQCXXY59OCDPLV3', + 'F3UKQC7ZV3EYVWTZ8O', '1MXKQCJ2BR43910ZYX', + 'cc8206050e541f79f92', 'FHKKQC963NGSY18ZDZ', + 'R5HKQCIEPOY1DMQOWX', 'ZHMKQC50PFVAPI8PZ6', 'T4UKQCYGECXGVNBWMY', + 'cc82060516c6c141500', 'UPWKQCYVFH7RZOSZ29', + '2AMKQCE67YOH3TBVYI', '2CUKQCFDVN3EZE2E4C', '7IOKQC1NVGUI1E55CQ', + 'KSTKQC018GNA7HDCAS', 'WIVKQC4Q4FCQJT5M63', 'A4YKQCRYSI5FT5T38', + 'BUNKQCO4HZHZP70F3K', 'YRTKQCNDP343OD5OQJ', '7VEKQCV05EDK0625KI', + 'cc8205d872f532ab14e', 'TPXKQCEGL04KHGMO2X', + 'L9LKQCQ8KJRKHM4D2E', '8QXKQCHJ2EUC7OV8EQ', 'W0XKQCKSFWWJWQ2OSN', + 'I6QKQCFRDTV2LDC8M2', 'XTUKQC7WCIVA5F0NC4', 'F4UKQCPK572VWU2YZQ', + 'JKDKQCF4ND92A088J2', 'COFKQCUXC2H4G3QBYT', 'BNXKQCEBXC1RCOGJNF', + 'Q42KQCKJZGS4IZWHF5', 'P5IKQC88STY3FNTFZ3', '7CXKQC59NSZFXIG1UE', + 'cc8205d87c20350420b', 'FQUKQCWEHOAWUP4QWS', + '3YTKQCK2W63W0MQBJE', '8HKKQCTEJAOBVH410L', 'HLQKQC0BJIZL0V4EK4', + 'B0UKQC9A54F1GUB7NR', 'EPXKQCQRZP2PNPN7BE', + 'cc82060512042f67e2c', 'XZLKQCRQA9EHPBNZPT', + 'OQXKQC2Y5FVH9PK0JL', 'AXLKQC0YTFAWQ234YD', 'OFXKQC8W0N3N6JP6YQ', + 'MWUKQCD2ZSCECQOCLG', '1ENKQCBPFZTAQJSP4O', 'N7XKQCYD3VSCSZREGJ', + '2LQKQC62GJUQCJIOK8', 'QXXKQC9PT5FWNT140K', 'VAXKQC19HIFPX61J28', + '0PXKQCJ9S1M3NNASET', 'K8XKQCDSVLSK422A3K', '52UKQCFYXMFTKIGNBS', + '7GXKQCMVFU8WR1LKZL', '4UMKQCF07KL2K92CI5', 'LGXKQCJ5OP6MKF9QLN', + 'FZTKQCSTPIQ3C9JC46', 'WMXKQCDUJ4JKQQYCR7', 'R6UKQC939L9FV62UGE', + 'OIUKQCBHUWDGL7DNTI', 'FRTKQC3G6JBJAR2ZPX', 'PIEKQCKUL6OAMS8Q9R', + 'cc8205d887376aacba2', 'LGMKQCQP5M5L18FVTN', + '8HUKQCRV8B3J2LLQ3B', 'LOUKQC45HUN532HOOM', + 'cc8205d883763f02abd', 'TBXKQC7OHIN28PVCS3', ])) def test_isbookmarked(self): @@ -326,7 +326,7 @@ class BaseTest(unittest.TestCase): """ rule = IsBookmarked([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'35WJQC1B7T7NPV8OLV', b'AWFKQCJELLUWDY2PD3', b'Q8HKQC3VMRM1M6M7ES', + '35WJQC1B7T7NPV8OLV', 'AWFKQCJELLUWDY2PD3', 'Q8HKQC3VMRM1M6M7ES', ])) def test_dupancestor_empty(self): @@ -359,7 +359,7 @@ class BaseTest(unittest.TestCase): """ rule = IsDuplicatedAncestorOf(['I1631']) self.assertEqual(self.filter_with_rule(rule), set([ - b'I3VJQCUY5I6UR92507', b'D4VJQC09STQCWD393E', + 'I3VJQCUY5I6UR92507', 'D4VJQC09STQCWD393E', ])) def test_isrelatedwith_empty(self): @@ -376,7 +376,7 @@ class BaseTest(unittest.TestCase): """ rule = IsRelatedWith(['I0000']) self.assertEqual(self.filter_with_rule(rule), set([ - b'd5839c1237765987724', b'd5839c126d11a754f46', + 'd5839c1237765987724', 'd5839c126d11a754f46', ])) def test_isrelatedwith_irregular(self): @@ -393,24 +393,24 @@ class BaseTest(unittest.TestCase): """ rule = IsRelatedWith(['I1844']) self.assertEqual(self.filter_with_rule(rule), set([ - b'HWTKQCSM28EI6WFDHP', b'T4UKQCYGECXGVNBWMY', b'YOTKQCEX2PLG03LZQS', - b'X8UKQCIDY21QIQBDVI', b'F3UKQC7ZV3EYVWTZ8O', b'0TTKQCXXY59OCDPLV3', - b'EVTKQCHV2E2PODFD7C', b'BBUKQC5GPRPDJHJAWU', b'FRTKQC3G6JBJAR2ZPX', - b'NDTKQCN95VFLGJ21L', b'SFTKQC26EJ2BYQCRIA', b'MYTKQCVCFOFM32H9GB', - b'B0UKQC9A54F1GUB7NR', b'PTTKQCYN0JR3ZZJNWR', b'F4UKQCPK572VWU2YZQ', - b'LLTKQCX39KCXFSX0U4', b'IXTKQC1BAU1F1WNXKB', b'3YTKQCK2W63W0MQBJE', - b'TQTKQCO897BNA1H93B', b'DOTKQCP1MG3VC8D7V2', b'3NTKQCZKLMIM6HYFE1', - b'WUTKQCVQCUPFFOGUT8', b'GETKQCPRC2W5YDUYM6', b'YRTKQCNDP343OD5OQJ', - b'U0UKQCBZS0R6WW7LBS', b'J2UKQC897I42M9VHDD', b'7MTKQC1QNE4H5RF35S', - b'5FTKQCKT9SDZ8TB03C', b'O1UKQCJD5YHDRW887V', b'EUTKQCFATXRU431YY6', - b'UHTKQCORH3NTZ0FYL3', b'2CUKQCFDVN3EZE2E4C', b'RNTKQCMLGRRKQVKDPR', - b'CGTKQC4WO8W3WSQRCX', b'WAUKQCOQ91QCJZWQ9U', b'FZTKQCSTPIQ3C9JC46', - b'AHTKQCM2YFRW3AGSRL', b'WBTKQCC775IAAGIWZD', b'8KTKQC407A8CN5O68H', - b'8QTKQCN8ZKY5OWWJZF', b'UKTKQCSL3AUJIWTD2A', b'HAUKQCM3GYGVTREGZS', - b'52UKQCFYXMFTKIGNBS', b'U3UKQCO30PWAK6JQBA', b'R6UKQC939L9FV62UGE', - b'TZTKQCR39A060AQ63C', b'X9UKQCFELSDAQ2TDP1', b'B1UKQCBR49WB3134PN', - b'KSTKQC018GNA7HDCAS', b'FJTKQCJCMAHJOA9NHI', b'HITKQCWJSCZX2AN6NP', - b'WVTKQCZC91I63LHEE7', b'0DTKQC6KBOS69LQJ35', + 'HWTKQCSM28EI6WFDHP', 'T4UKQCYGECXGVNBWMY', 'YOTKQCEX2PLG03LZQS', + 'X8UKQCIDY21QIQBDVI', 'F3UKQC7ZV3EYVWTZ8O', '0TTKQCXXY59OCDPLV3', + 'EVTKQCHV2E2PODFD7C', 'BBUKQC5GPRPDJHJAWU', 'FRTKQC3G6JBJAR2ZPX', + 'NDTKQCN95VFLGJ21L', 'SFTKQC26EJ2BYQCRIA', 'MYTKQCVCFOFM32H9GB', + 'B0UKQC9A54F1GUB7NR', 'PTTKQCYN0JR3ZZJNWR', 'F4UKQCPK572VWU2YZQ', + 'LLTKQCX39KCXFSX0U4', 'IXTKQC1BAU1F1WNXKB', '3YTKQCK2W63W0MQBJE', + 'TQTKQCO897BNA1H93B', 'DOTKQCP1MG3VC8D7V2', '3NTKQCZKLMIM6HYFE1', + 'WUTKQCVQCUPFFOGUT8', 'GETKQCPRC2W5YDUYM6', 'YRTKQCNDP343OD5OQJ', + 'U0UKQCBZS0R6WW7LBS', 'J2UKQC897I42M9VHDD', '7MTKQC1QNE4H5RF35S', + '5FTKQCKT9SDZ8TB03C', 'O1UKQCJD5YHDRW887V', 'EUTKQCFATXRU431YY6', + 'UHTKQCORH3NTZ0FYL3', '2CUKQCFDVN3EZE2E4C', 'RNTKQCMLGRRKQVKDPR', + 'CGTKQC4WO8W3WSQRCX', 'WAUKQCOQ91QCJZWQ9U', 'FZTKQCSTPIQ3C9JC46', + 'AHTKQCM2YFRW3AGSRL', 'WBTKQCC775IAAGIWZD', '8KTKQC407A8CN5O68H', + '8QTKQCN8ZKY5OWWJZF', 'UKTKQCSL3AUJIWTD2A', 'HAUKQCM3GYGVTREGZS', + '52UKQCFYXMFTKIGNBS', 'U3UKQCO30PWAK6JQBA', 'R6UKQC939L9FV62UGE', + 'TZTKQCR39A060AQ63C', 'X9UKQCFELSDAQ2TDP1', 'B1UKQCBR49WB3134PN', + 'KSTKQC018GNA7HDCAS', 'FJTKQCJCMAHJOA9NHI', 'HITKQCWJSCZX2AN6NP', + 'WVTKQCZC91I63LHEE7', '0DTKQC6KBOS69LQJ35', ])) def test_hasidof_empty(self): @@ -427,7 +427,7 @@ class BaseTest(unittest.TestCase): """ rule = HasIdOf(['I0000']) self.assertEqual(self.filter_with_rule(rule), set([ - b'd5839c1237765987724' + 'd5839c1237765987724' ])) def test_hasidof_irregular(self): @@ -444,7 +444,7 @@ class BaseTest(unittest.TestCase): """ rule = HasIdOf(['I0044']) self.assertEqual(self.filter_with_rule(rule), set([ - b'GNUJQCL9MD64AM56OH', + 'GNUJQCL9MD64AM56OH', ])) def test_isdefaultperson(self): @@ -453,7 +453,7 @@ class BaseTest(unittest.TestCase): """ rule = IsDefaultPerson([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'GNUJQCL9MD64AM56OH', + 'GNUJQCL9MD64AM56OH', ])) def test_isfemale(self): @@ -486,24 +486,24 @@ class BaseTest(unittest.TestCase): """ rule = MultipleMarriages([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'R1VKQCJWNP24VN7BO', b'ZTVJQCTSMI85EGMXFM', b'ENTJQCZXQV1IRKJXUL', - b'44WJQCLCQIPZUB0UH', b'SMWJQCXQ6I2GEXSPK9', b'DN3KQC1URTED410L3R', - b'5FYJQC86G8EZ0L4E4B', b'5F4KQCJRU8ZKL6SILT', b'0YNKQC5U4EQGVNUZD8', - b'YRYJQCE3RF4U8A59UB', b'APWKQCI6YXAXBLC33I', b'XSKKQC6GGKLAYANWAF', - b'0FQKQCOQD0VRVJPTSD', b'B3UJQCZHDXII99AWW4', - b'cc8205d872f532ab14e', b'SS1KQCWWF9488Q330U', - b'OCYJQCS8YT7JO8KIMO', b'I6HKQCQF72V2N56JQ5', b'6YWJQC86FBVN0J6JS', - b'KYNKQCVA6FE65ONFIQ', b'SHAKQCNY5IXO30GUAB', b'O5XKQC3V6BPJI13J24', - b'ZN7KQC3RLB82EXF1QF', b'CIYJQCF3UK12DL0S2Y', b'H3XJQCFJ4FP4U2WGZC', - b'cc82060504445ab6deb', b'4E4KQC1K4XUEX29IJO', - b'0XVJQCJUNJY40WDSMA', b'1WUJQCHNH76G6YD3A', b'IH3KQCM1VZPRKLBLK7', - b'242KQCBALBOD8ZK5VI', b'8G4KQCS6C1AOM6ZGR3', b'I1EKQCGGDSUD8ILUW4', - b'X8BKQCSFF4AET5MY23', b'RJWJQCN1XKXRN5KMCP', b'ZWNKQC9DAZ3C6UHUAV', - b'9QUJQCCSWRZNSAPCR', b'HI0KQCG9TGT5AAIPU', b'DI4KQC3S1AO27VWOLN', - b'QBDKQCH2IU6N8IXMFE', b'DK2KQCJYW14VXUJ85', b'117KQCBB32RMTTV4G6', - b'0QLKQCFTQMNVGCV4GM', b'D2OKQCGDNPT3BH4WH', b'CAYJQCKOL49OF7XWB3', - b'ZQGKQCGHS67Q4IMHEG', b'OEXJQCQJHF2BLSAAIS', b'UKYJQC70LIZQ11BP89', - b'FF2KQCRBSPCG1QY97', b'L6EKQCO8QYL2UO2MQO', + 'R1VKQCJWNP24VN7BO', 'ZTVJQCTSMI85EGMXFM', 'ENTJQCZXQV1IRKJXUL', + '44WJQCLCQIPZUB0UH', 'SMWJQCXQ6I2GEXSPK9', 'DN3KQC1URTED410L3R', + '5FYJQC86G8EZ0L4E4B', '5F4KQCJRU8ZKL6SILT', '0YNKQC5U4EQGVNUZD8', + 'YRYJQCE3RF4U8A59UB', 'APWKQCI6YXAXBLC33I', 'XSKKQC6GGKLAYANWAF', + '0FQKQCOQD0VRVJPTSD', 'B3UJQCZHDXII99AWW4', + 'cc8205d872f532ab14e', 'SS1KQCWWF9488Q330U', + 'OCYJQCS8YT7JO8KIMO', 'I6HKQCQF72V2N56JQ5', '6YWJQC86FBVN0J6JS', + 'KYNKQCVA6FE65ONFIQ', 'SHAKQCNY5IXO30GUAB', 'O5XKQC3V6BPJI13J24', + 'ZN7KQC3RLB82EXF1QF', 'CIYJQCF3UK12DL0S2Y', 'H3XJQCFJ4FP4U2WGZC', + 'cc82060504445ab6deb', '4E4KQC1K4XUEX29IJO', + '0XVJQCJUNJY40WDSMA', '1WUJQCHNH76G6YD3A', 'IH3KQCM1VZPRKLBLK7', + '242KQCBALBOD8ZK5VI', '8G4KQCS6C1AOM6ZGR3', 'I1EKQCGGDSUD8ILUW4', + 'X8BKQCSFF4AET5MY23', 'RJWJQCN1XKXRN5KMCP', 'ZWNKQC9DAZ3C6UHUAV', + '9QUJQCCSWRZNSAPCR', 'HI0KQCG9TGT5AAIPU', 'DI4KQC3S1AO27VWOLN', + 'QBDKQCH2IU6N8IXMFE', 'DK2KQCJYW14VXUJ85', '117KQCBB32RMTTV4G6', + '0QLKQCFTQMNVGCV4GM', 'D2OKQCGDNPT3BH4WH', 'CAYJQCKOL49OF7XWB3', + 'ZQGKQCGHS67Q4IMHEG', 'OEXJQCQJHF2BLSAAIS', 'UKYJQC70LIZQ11BP89', + 'FF2KQCRBSPCG1QY97', 'L6EKQCO8QYL2UO2MQO', ])) def test_nevermarried(self): @@ -560,8 +560,8 @@ class BaseTest(unittest.TestCase): """ rule = RelationshipPathBetweenBookmarks([]) self.assertEqual(self.filter_with_rule(rule), set([ - b'44WJQCLCQIPZUB0UH', b'35WJQC1B7T7NPV8OLV', b'AWFKQCJELLUWDY2PD3', - b'D3WJQCCGV58IP8PNHZ', b'Q8HKQC3VMRM1M6M7ES', + '44WJQCLCQIPZUB0UH', '35WJQC1B7T7NPV8OLV', 'AWFKQCJELLUWDY2PD3', + 'D3WJQCCGV58IP8PNHZ', 'Q8HKQC3VMRM1M6M7ES', ])) def test_hassoundexname(self): @@ -578,7 +578,7 @@ class BaseTest(unittest.TestCase): rule = HasNameOf(['Lewis', 'Garner', 'Dr.', 'Sr', 'Anderson', 'Big Louie', 'von', 'Zieliński', None, None, None]) self.assertEqual(self.filter_with_rule(rule), set([ - b'GNUJQCL9MD64AM56OH'])) + 'GNUJQCL9MD64AM56OH'])) if __name__ == "__main__": diff --git a/gramps/gen/filters/rules/test/place_rules_test.py b/gramps/gen/filters/rules/test/place_rules_test.py index a4390e78f..c850d5ecf 100644 --- a/gramps/gen/filters/rules/test/place_rules_test.py +++ b/gramps/gen/filters/rules/test/place_rules_test.py @@ -77,7 +77,7 @@ class BaseTest(unittest.TestCase): """ rule = HasCitation(['page 23', '', '']) self.assertEqual(self.filter_with_rule(rule), - set([b'YNUJQC8YM5EGRG868J'])) + set(['YNUJQC8YM5EGRG868J'])) def test_hasgallery(self): """ @@ -85,7 +85,7 @@ class BaseTest(unittest.TestCase): """ rule = HasGallery(['0', 'greater than']) self.assertEqual(self.filter_with_rule(rule), - set([b'YNUJQC8YM5EGRG868J'])) + set(['YNUJQC8YM5EGRG868J'])) def test_hasidof(self): """ @@ -93,7 +93,7 @@ class BaseTest(unittest.TestCase): """ rule = HasIdOf(['P0001']) self.assertEqual(self.filter_with_rule(rule), - set([b'c96587262e91149933fcea5f20a'])) + set(['c96587262e91149933fcea5f20a'])) def test_regexpidof(self): """ @@ -101,11 +101,11 @@ class BaseTest(unittest.TestCase): """ rule = RegExpIdOf(['P000.'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), set([ - b'c96587262e91149933fcea5f20a', b'c96587262ff262aaac31f6db7af', - b'c96587262f24c33ab2420276737', b'c96587262e566596a225682bf53', - b'c9658726302661576894508202d', b'c96587262f8329d37b252e1b9e5', - b'c965872630664f33485fc18e75', b'c96587262fb7dbb954077cb1286', - b'c96587262f4a44183c65ff1e52', b'c96587262ed43fdb37bf04bdb7f', + 'c96587262e91149933fcea5f20a', 'c96587262ff262aaac31f6db7af', + 'c96587262f24c33ab2420276737', 'c96587262e566596a225682bf53', + 'c9658726302661576894508202d', 'c96587262f8329d37b252e1b9e5', + 'c965872630664f33485fc18e75', 'c96587262fb7dbb954077cb1286', + 'c96587262f4a44183c65ff1e52', 'c96587262ed43fdb37bf04bdb7f', ])) def test_hasnote(self): @@ -128,9 +128,9 @@ class BaseTest(unittest.TestCase): """ rule = HasReferenceCountOf(['greater than', '35']) self.assertEqual(self.filter_with_rule(rule), set([ - b'c96587262e566596a225682bf53', b'MATJQCJYH8ULRIRYTH', - b'5HTJQCSB91P69HY731', b'4ECKQCWCLO5YIHXEXC', - b'c965872630a68ebd32322c4a30a'])) + 'c96587262e566596a225682bf53', 'MATJQCJYH8ULRIRYTH', + '5HTJQCSB91P69HY731', '4ECKQCWCLO5YIHXEXC', + 'c965872630a68ebd32322c4a30a'])) def test_hassourcecount(self): """ @@ -138,7 +138,7 @@ class BaseTest(unittest.TestCase): """ rule = HasSourceCount(['1', 'equal to']) self.assertEqual(self.filter_with_rule(rule), - set([b'YNUJQC8YM5EGRG868J'])) + set(['YNUJQC8YM5EGRG868J'])) def test_hassourceof(self): """ @@ -146,7 +146,7 @@ class BaseTest(unittest.TestCase): """ rule = HasSourceOf(['S0001']) self.assertEqual(self.filter_with_rule(rule), - set([b'YNUJQC8YM5EGRG868J'])) + set(['YNUJQC8YM5EGRG868J'])) def test_placeprivate(self): """ @@ -161,7 +161,7 @@ class BaseTest(unittest.TestCase): """ rule = MatchesSourceConfidence(['2']) self.assertEqual(self.filter_with_rule(rule), - set([b'YNUJQC8YM5EGRG868J'])) + set(['YNUJQC8YM5EGRG868J'])) def test_hasdata(self): """ @@ -169,7 +169,7 @@ class BaseTest(unittest.TestCase): """ rule = HasData(['Albany', 'County', '']) self.assertEqual(self.filter_with_rule(rule), - set([b'c9658726d602acadb74e330116a'])) + set(['c9658726d602acadb74e330116a'])) def test_hasnolatorlon(self): """ @@ -184,8 +184,8 @@ class BaseTest(unittest.TestCase): """ rule = InLatLonNeighborhood(['30N', '90W', '2', '2']) self.assertEqual(self.filter_with_rule(rule), set([ - b'C6WJQC0GDYP3HZDPR3', b'N88LQCRB363ES5WJ83', - b'03EKQCC2KTNLHFLDRJ', b'M9VKQCJV91X0M12J8'])) + 'C6WJQC0GDYP3HZDPR3', 'N88LQCRB363ES5WJ83', + '03EKQCC2KTNLHFLDRJ', 'M9VKQCJV91X0M12J8'])) def test_changedsince(self): """ @@ -207,8 +207,8 @@ class BaseTest(unittest.TestCase): """ rule = HasTitle(['Albany']) self.assertEqual(self.filter_with_rule(rule), set([ - b'51VJQCXUP61H9JRL66', b'9XBKQCE1LZ7PMJE56G', - b'c9658726d602acadb74e330116a', b'P9MKQCT08Z3YBJV5UB'])) + '51VJQCXUP61H9JRL66', '9XBKQCE1LZ7PMJE56G', + 'c9658726d602acadb74e330116a', 'P9MKQCT08Z3YBJV5UB'])) def test_isenclosedby(self): """ @@ -216,9 +216,9 @@ class BaseTest(unittest.TestCase): """ rule = IsEnclosedBy(['P0001', '0']) self.assertEqual(self.filter_with_rule(rule), set([ - b'EAFKQCR0ED5QWL87EO', b'S22LQCLUZM135LVKRL', b'VDUJQCFP24ZV3O4ID2', - b'V6ALQCZZFN996CO4D', b'OC6LQCXMKP6NUVYQD8', b'CUUKQC6BY5LAZXLXC6', - b'PTFKQCKPHO2VC5SYKS', b'PHUJQCJ9R4XQO5Y0WS'])) + 'EAFKQCR0ED5QWL87EO', 'S22LQCLUZM135LVKRL', 'VDUJQCFP24ZV3O4ID2', + 'V6ALQCZZFN996CO4D', 'OC6LQCXMKP6NUVYQD8', 'CUUKQC6BY5LAZXLXC6', + 'PTFKQCKPHO2VC5SYKS', 'PHUJQCJ9R4XQO5Y0WS'])) def test_withinarea(self): """ @@ -226,8 +226,8 @@ class BaseTest(unittest.TestCase): """ rule = WithinArea(['P1339', 100, 0]) self.assertEqual(self.filter_with_rule(rule), set([ - b'KJUJQCY580EB77WIVO', b'TLVJQC4FD2CD9OYAXU', b'TE4KQCL9FDYA4PB6VW', - b'W9GLQCSRJIQ9N2TGDF'])) + 'KJUJQCY580EB77WIVO', 'TLVJQC4FD2CD9OYAXU', 'TE4KQCL9FDYA4PB6VW', + 'W9GLQCSRJIQ9N2TGDF'])) def test_isenclosedby_inclusive(self): """ @@ -235,10 +235,10 @@ class BaseTest(unittest.TestCase): """ rule = IsEnclosedBy(['P0001', '1']) self.assertEqual(self.filter_with_rule(rule), set([ - b'c96587262e91149933fcea5f20a', b'EAFKQCR0ED5QWL87EO', - b'S22LQCLUZM135LVKRL', b'VDUJQCFP24ZV3O4ID2', b'V6ALQCZZFN996CO4D', - b'OC6LQCXMKP6NUVYQD8', b'CUUKQC6BY5LAZXLXC6', b'PTFKQCKPHO2VC5SYKS', - b'PHUJQCJ9R4XQO5Y0WS'])) + 'c96587262e91149933fcea5f20a', 'EAFKQCR0ED5QWL87EO', + 'S22LQCLUZM135LVKRL', 'VDUJQCFP24ZV3O4ID2', 'V6ALQCZZFN996CO4D', + 'OC6LQCXMKP6NUVYQD8', 'CUUKQC6BY5LAZXLXC6', 'PTFKQCKPHO2VC5SYKS', + 'PHUJQCJ9R4XQO5Y0WS'])) if __name__ == "__main__": diff --git a/gramps/gen/filters/rules/test/repository_rules_test.py b/gramps/gen/filters/rules/test/repository_rules_test.py index 8d6728e63..11e9d75c0 100644 --- a/gramps/gen/filters/rules/test/repository_rules_test.py +++ b/gramps/gen/filters/rules/test/repository_rules_test.py @@ -72,7 +72,7 @@ class BaseTest(unittest.TestCase): """ rule = HasIdOf(['R0000']) self.assertEqual(self.filter_with_rule(rule), - set([b'b39fe38593f3f8c4f12'])) + set(['b39fe38593f3f8c4f12'])) def test_regexpidof(self): """ @@ -80,8 +80,8 @@ class BaseTest(unittest.TestCase): """ rule = RegExpIdOf(['R000.'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), set([ - b'a701ead12841521cd4d', b'a701e99f93e5434f6f3', - b'b39fe38593f3f8c4f12'])) + 'a701ead12841521cd4d', 'a701e99f93e5434f6f3', + 'b39fe38593f3f8c4f12'])) def test_hasnoteregexp(self): """ @@ -89,7 +89,7 @@ class BaseTest(unittest.TestCase): """ rule = HasNoteRegexp(['.'], use_regex=True) self.assertEqual(self.filter_with_rule(rule), set([ - b'a701ead12841521cd4d', b'b39fe38593f3f8c4f12'])) + 'a701ead12841521cd4d', 'b39fe38593f3f8c4f12'])) def test_hasreferencecountof(self): """ @@ -97,7 +97,7 @@ class BaseTest(unittest.TestCase): """ rule = HasReferenceCountOf(['greater than', '1']) self.assertEqual(self.filter_with_rule(rule), - set([b'a701e99f93e5434f6f3'])) + set(['a701e99f93e5434f6f3'])) def test_repoprivate(self): """ @@ -112,7 +112,7 @@ class BaseTest(unittest.TestCase): """ rule = ChangedSince(['2010-01-01', '2016-01-01']) self.assertEqual(self.filter_with_rule(rule), - set([b'a701e99f93e5434f6f3'])) + set(['a701e99f93e5434f6f3'])) def test_matchesnamesubstringof(self): """ @@ -120,7 +120,7 @@ class BaseTest(unittest.TestCase): """ rule = MatchesNameSubstringOf(['Martha']) self.assertEqual(self.filter_with_rule(rule), - set([b'a701ead12841521cd4d'])) + set(['a701ead12841521cd4d'])) def test_hastag(self): """ diff --git a/gramps/gen/proxy/cache.py b/gramps/gen/proxy/cache.py index c2a0d3447..ed7845e29 100644 --- a/gramps/gen/proxy/cache.py +++ b/gramps/gen/proxy/cache.py @@ -64,8 +64,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_person_from_handle(handle) return self.cache_handle[handle] @@ -75,8 +73,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_event_from_handle(handle) return self.cache_handle[handle] @@ -86,8 +82,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_family_from_handle(handle) return self.cache_handle[handle] @@ -97,8 +91,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_repository_from_handle(handle) return self.cache_handle[handle] @@ -108,8 +100,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_place_from_handle(handle) return self.cache_handle[handle] @@ -119,8 +109,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_place_from_handle(handle) return self.cache_handle[handle] @@ -130,8 +118,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_citation_from_handle(handle) return self.cache_handle[handle] @@ -141,8 +127,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_source_from_handle(handle) return self.cache_handle[handle] @@ -152,8 +136,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_note_from_handle(handle) return self.cache_handle[handle] @@ -163,8 +145,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_media_from_handle(handle) return self.cache_handle[handle] @@ -174,8 +154,6 @@ class CacheProxyDb: Gets item from cache if it exists. Converts handles to string, for uniformity. """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if handle not in self.cache_handle: self.cache_handle[handle] = self.db.get_tag_from_handle(handle) return self.cache_handle[handle] diff --git a/gramps/gen/proxy/filter.py b/gramps/gen/proxy/filter.py index e1ecca6bc..b3a35a456 100644 --- a/gramps/gen/proxy/filter.py +++ b/gramps/gen/proxy/filter.py @@ -78,8 +78,6 @@ class FilterProxyDb(ProxyDbBase): Finds a Person in the database from the passed Gramps ID. If no such Person exists, None is returned. """ - if isinstance(handle, bytes): - handle = str(handle, 'utf-8') if handle in self.plist: person = self.db.get_person_from_handle(handle) if person is None: @@ -117,23 +115,15 @@ class FilterProxyDb(ProxyDbBase): return None def include_person(self, handle): - if isinstance(handle, bytes): - handle = str(handle, 'utf-8') return handle in self.plist def include_family(self, handle): - if isinstance(handle, bytes): - handle = str(handle, 'utf-8') return handle in self.flist def include_event(self, handle): - if isinstance(handle, bytes): - handle = str(handle, 'utf-8') return handle in self.elist def include_note(self, handle): - if isinstance(handle, bytes): - handle = str(handle, 'utf-8') return handle in self.nlist def get_source_from_handle(self, handle): @@ -212,8 +202,6 @@ class FilterProxyDb(ProxyDbBase): Finds a Event in the database from the passed Gramps ID. If no such Event exists, None is returned. """ - if isinstance(handle, bytes): - handle = str(handle, 'utf-8') if handle in self.elist: event = self.db.get_event_from_handle(handle) # Filter all notes out @@ -227,8 +215,6 @@ class FilterProxyDb(ProxyDbBase): Finds a Family in the database from the passed Gramps ID. If no such Family exists, None is returned. """ - if isinstance(handle, bytes): - handle = str(handle, 'utf-8') if handle in self.flist: family = self.db.get_family_from_handle(handle) if family is None: @@ -295,8 +281,6 @@ class FilterProxyDb(ProxyDbBase): Finds a Note in the database from the passed Gramps ID. If no such Note exists, None is returned. """ - if isinstance(handle, bytes): - handle = str(handle, 'utf-8') if handle in self.nlist: return self.db.get_note_from_handle(handle) else: diff --git a/gramps/gen/proxy/proxybase.py b/gramps/gen/proxy/proxybase.py index b35167be4..a2d3009f1 100644 --- a/gramps/gen/proxy/proxybase.py +++ b/gramps/gen/proxy/proxybase.py @@ -58,7 +58,7 @@ class ProxyCursor: def __iter__(self): for handle in self.get_handles(): - yield bytes(handle, "utf-8"), self.get_raw(handle) + yield handle, self.get_raw(handle) class ProxyMap: """ @@ -75,7 +75,7 @@ class ProxyMap: def keys(self): """ return the keys """ - return [bytes(key, "utf-8") for key in self.get_keys()] + return self.get_keys() class ProxyDbBase(DbReadBase): """ @@ -207,7 +207,7 @@ class ProxyDbBase(DbReadBase): if (self.db is not None) and self.db.is_open(): proxied = set(self.iter_person_handles()) all = self.basedb.get_person_handles(sort_handles=sort_handles) - return [hdl for hdl in all if str(hdl, 'utf-8') in proxied] + return [hdl for hdl in all if hdl in proxied] else: return [] @@ -219,7 +219,7 @@ class ProxyDbBase(DbReadBase): if (self.db is not None) and self.db.is_open(): proxied = set(self.iter_family_handles()) all = self.basedb.get_family_handles(sort_handles=sort_handles) - return [hdl for hdl in all if str(hdl, 'utf-8') in proxied] + return [hdl for hdl in all if hdl in proxied] else: return [] diff --git a/gramps/gui/filters/sidebar/_sidebarfilter.py b/gramps/gui/filters/sidebar/_sidebarfilter.py index ab3e95202..b28f33c19 100644 --- a/gramps/gui/filters/sidebar/_sidebarfilter.py +++ b/gramps/gui/filters/sidebar/_sidebarfilter.py @@ -212,9 +212,6 @@ class SidebarFilter(DbGUIElement): if self.dbstate.is_open(): for handle in self.dbstate.db.get_tag_handles(sort_handles=True): tag = self.dbstate.db.get_tag_from_handle(handle) - # for python3 this returns a byte object, so conversion needed - if not isinstance(handle, str): - handle = handle.decode('utf-8') self.__tag_list.append((tag.get_name(), handle)) self.on_tags_changed([item[0] for item in self.__tag_list]) diff --git a/gramps/gui/glade/editdate.glade b/gramps/gui/glade/editdate.glade index 2aed504a7..c7d9cc428 100644 --- a/gramps/gui/glade/editdate.glade +++ b/gramps/gui/glade/editdate.glade @@ -227,7 +227,7 @@ True - False + True Month-Day of first day of new year (e.g., "1-1", "3-1", "3-25") @@ -340,7 +340,7 @@ start_day - 0 + 2 3 @@ -366,7 +366,7 @@ start_year - 2 + 0 3 @@ -381,7 +381,7 @@ True - 0 + 2 4 @@ -406,7 +406,7 @@ True - 2 + 0 4 @@ -436,7 +436,7 @@ stop_day - 3 + 5 3 @@ -462,7 +462,7 @@ stop_year - 5 + 3 3 @@ -477,7 +477,7 @@ True - 3 + 5 4 @@ -502,7 +502,7 @@ True - 5 + 3 4 diff --git a/gramps/gui/views/listview.py b/gramps/gui/views/listview.py index 2409f7bec..b122cd1cc 100644 --- a/gramps/gui/views/listview.py +++ b/gramps/gui/views/listview.py @@ -209,7 +209,7 @@ class ListView(NavigationView): self.edit_action.add_actions([ ('Add', 'list-add', _("_Add..."), "Insert", self.ADD_MSG, self.add), - ('Remove', 'list-remove', _("_Remove"), "Delete", + ('Remove', 'list-remove', _("_Delete"), "Delete", self.DEL_MSG, self.remove), ('Merge', 'gramps-merge', _('_Merge...'), None, self.MERGE_MSG, self.merge), diff --git a/gramps/gui/views/treemodels/flatbasemodel.py b/gramps/gui/views/treemodels/flatbasemodel.py index af31d044a..2b6429a2a 100644 --- a/gramps/gui/views/treemodels/flatbasemodel.py +++ b/gramps/gui/views/treemodels/flatbasemodel.py @@ -310,10 +310,7 @@ class FlatNodeMap: :type path: integer :return handle: unicode form of the handle """ - handle = self._index2hndl[self.real_index(path)][1] - if not isinstance(handle, str): - handle = handle.decode('utf-8') - return handle + return self._index2hndl[self.real_index(path)][1] def iter_next(self, iter): """ @@ -567,7 +564,7 @@ class FlatBaseModel(GObject.GObject, Gtk.TreeModel, BaseModel): # use cursor as a context manager with self.gen_cursor() as cursor: #loop over database and store the sort field, and the handle - srt_keys=[(self.sort_func(data), key.decode('utf8')) + srt_keys=[(self.sort_func(data), key) for key, data in cursor] srt_keys.sort() return srt_keys @@ -796,12 +793,7 @@ class FlatBaseModel(GObject.GObject, Gtk.TreeModel, BaseModel): val = self._get_value(handle, col) #print 'val is', val, type(val) - #GTK 3 should convert unicode objects automatically, but this - # gives wrong column values, so we convert for python 2.7 - if not isinstance(val, str): - return val.encode('utf-8') - else: - return val + return val def do_iter_previous(self, iter): #print 'do_iter_previous' diff --git a/gramps/gui/views/treemodels/peoplemodel.py b/gramps/gui/views/treemodels/peoplemodel.py index 69884f59e..4a311ecb9 100644 --- a/gramps/gui/views/treemodels/peoplemodel.py +++ b/gramps/gui/views/treemodels/peoplemodel.py @@ -168,9 +168,6 @@ class PeopleBaseModel(BaseModel): cached, name = self.get_cached_value(handle, "SORT_NAME") if not cached: name = name_displayer.raw_sorted_name(data[COLUMN_NAME]) - # internally we work with utf-8 - if not isinstance(name, str): - name = name.decode('utf-8') self.set_cached_value(handle, "SORT_NAME", name) return name @@ -179,9 +176,6 @@ class PeopleBaseModel(BaseModel): cached, name = self.get_cached_value(handle, "NAME") if not cached: name = name_displayer.raw_display_name(data[COLUMN_NAME]) - # internally we work with utf-8 for python 2.7 - if not isinstance(name, str): - name = name.encode('utf-8') self.set_cached_value(handle, "NAME", name) return name @@ -629,8 +623,6 @@ class PersonTreeModel(PeopleBaseModel, TreeBaseModel): name_data = data[COLUMN_NAME] group_name = ngn(self.db, name_data) - #if isinstance(group_name, str): - # group_name = group_name.encode('utf-8') sort_key = self.sort_func(data) #if group_name not in self.group_list: diff --git a/gramps/gui/views/treemodels/treebasemodel.py b/gramps/gui/views/treemodels/treebasemodel.py index f7127c488..ca361f2be 100644 --- a/gramps/gui/views/treemodels/treebasemodel.py +++ b/gramps/gui/views/treemodels/treebasemodel.py @@ -537,9 +537,6 @@ class TreeBaseModel(GObject.GObject, Gtk.TreeModel, BaseModel): pmon.add_op(status) with gen_cursor() as cursor: for handle, data in cursor: - # for python3 this returns a byte object, so conversion needed - if not isinstance(handle, str): - handle = handle.decode('utf-8') status.heartbeat() self.__total += 1 if not (handle in skip or (dfilter and not @@ -865,10 +862,7 @@ class TreeBaseModel(GObject.GObject, Gtk.TreeModel, BaseModel): not correspond to a gramps object. """ node = self.get_node_from_iter(iter) - handle = node.handle - if handle and not isinstance(handle, str): - handle = handle.decode('utf-8') - return handle + return node.handle # The following implement the public interface of Gtk.TreeModel @@ -904,7 +898,6 @@ class TreeBaseModel(GObject.GObject, Gtk.TreeModel, BaseModel): if node.handle is None: # Header rows dont get the foreground color set if col == self.color_column(): - #color must not be utf-8 return "#000000000000" # Return the node name for the first column @@ -917,14 +910,10 @@ class TreeBaseModel(GObject.GObject, Gtk.TreeModel, BaseModel): # return values for 'data' row, calling a function # according to column_defs table val = self._get_value(node.handle, col, node.secondary) - #GTK 3 should convert unicode objects automatically, but this - # gives wrong column values, so convert for python 2.7 + if val is None: return '' - elif not isinstance(val, str): - return val.decode('utf-8') - else: - return val + return val def _get_value(self, handle, col, secondary=False, store_cache=True): """ diff --git a/gramps/plugins/db/bsddb/cursor.py b/gramps/plugins/db/bsddb/cursor.py index f22c6b9ef..3e3fa63ae 100644 --- a/gramps/plugins/db/bsddb/cursor.py +++ b/gramps/plugins/db/bsddb/cursor.py @@ -111,11 +111,7 @@ class BsddbBaseCursor: _flags | flags | (db.DB_RMW if self._update else 0), **kwargs) - try: - return (data[0], loads(data[1])) if data else None - except UnicodeDecodeError: - #we need to assume we opened data in python3 saved in python2 - return (data[0], loads(data[1], encoding='utf-8')) if data else None + return (data[0].decode('utf-8'), loads(data[1])) if data else None return get diff --git a/gramps/plugins/db/bsddb/read.py b/gramps/plugins/db/bsddb/read.py index bfbad545c..ca2cacca0 100644 --- a/gramps/plugins/db/bsddb/read.py +++ b/gramps/plugins/db/bsddb/read.py @@ -108,14 +108,11 @@ def find_byte_surname(key, data): """ surn = __index_surname(data[3][5]) # in python 3 we work with unicode internally, but need byte function sometimes - if isinstance(surn, str): - return surn.encode('utf-8') - return surn + return surn.encode('utf-8') def find_fullname(key, data): """ Creating a fullname from raw data of a person, to use for sort and index - returns a byte string """ # data[3] -> primary_name # data[3][4] -> primary given @@ -140,7 +137,6 @@ def find_fullname(key, data): def find_surname(key, data): """ Creating a surname from raw data of a person, to use for sort and index - returns a byte string """ # data[3][5] -> surname_list return __index_surname(data[3][5]) @@ -148,7 +144,6 @@ def find_surname(key, data): def find_surname_name(key, data): """ Creating a surname from raw name, to use for sort and index - returns a byte string """ return __index_surname(data[5]) @@ -156,7 +151,6 @@ def __index_surname(surn_list): """ All non pa/matronymic surnames are used in indexing. pa/matronymic not as they change for every generation! - returns a byte string """ if surn_list: surn = " ".join([x[0] for x in surn_list if not (x[3][0] in [ @@ -196,11 +190,10 @@ class DbBsddbTreeCursor(BsddbBaseCursor): Iterator """ _n = self.next_dup - to_do = [b''] + to_do = [''] while to_do: key = to_do.pop() - key = key.encode('utf-8') if not isinstance(key, bytes) else key - data = self.set(key) + data = self.set(key.encode('utf-8')) while data: ### FIXME: this is a dirty hack that works without no ### sensible explanation. For some reason, for a readonly @@ -629,12 +622,9 @@ class DbBsddbRead(DbReadBase, Callback): Helper function for find_next__gramps_id methods """ index = prefix % map_index - #in bytes - bindex = index.encode('utf-8') - while trans.get(bindex, txn=self.txn) is not None: + while trans.get(index.encode('utf-8'), txn=self.txn) is not None: map_index += 1 index = prefix % map_index - bindex = index.encode('utf-8') map_index += 1 return (map_index, index) @@ -720,14 +710,12 @@ class DbBsddbRead(DbReadBase, Callback): return gid def _get_from_handle(self, handle, class_type, data_map): - if isinstance(handle, str): - handle = handle.encode('utf-8') - data = data_map.get(handle) + data = data_map.get(handle.encode('utf-8')) if data: newobj = class_type() newobj.unserialize(data) return newobj - raise HandleError('Handle %s not found' % handle.decode('utf-8')) + raise HandleError('Handle %s not found' % handle) def get_person_from_handle(self, handle): """ @@ -812,10 +800,10 @@ class DbBsddbRead(DbReadBase, Callback): def __get_obj_from_gramps_id(self, val, tbl, class_, prim_tbl): if isinstance(tbl, dict): return None ## trying to get object too early - if isinstance(val, str): - val = val.encode('utf-8') + if val is None: + return None try: - data = tbl.get(val, txn=self.txn) + data = tbl.get(val.encode('utf-8'), txn=self.txn) if data is not None: obj = class_() ### FIXME: this is a dirty hack that works without no @@ -929,15 +917,8 @@ class DbBsddbRead(DbReadBase, Callback): Return the default grouping name for a surname. Return type is a unicode object """ - if isinstance(surname, str): - key = surname.encode('utf-8') - else: - key = surname - name_group = self.name_group.get(key, surname) - if isinstance(name_group, bytes): - return name_group.decode("utf-8") - else: - return name_group + key = surname.encode('utf-8') + return self.name_group.get(key, surname) def get_name_group_keys(self): """ @@ -951,8 +932,7 @@ class DbBsddbRead(DbReadBase, Callback): """ # The use of has_key seems allright because there is no write lock # on the name_group table when this is called. - if isinstance(name, str): - name = name.encode('utf-8') + name = name.encode('utf-8') return name in self.name_group def get_number_of_records(self, table): @@ -1036,12 +1016,10 @@ class DbBsddbRead(DbReadBase, Callback): return True def _all_handles(self, table): - """ return all the keys of a database table - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ - return table.keys(txn=self.txn) + Return all the keys of a database table + """ + return [key.decode('utf-8') for key in table.keys(txn=self.txn)] def get_person_handles(self, sort_handles=False): """ @@ -1049,9 +1027,6 @@ class DbBsddbRead(DbReadBase, Callback): the database. If sort_handles is True, the list is sorted by surnames. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: handle_list = self._all_handles(self.person_map) @@ -1066,9 +1041,6 @@ class DbBsddbRead(DbReadBase, Callback): the database. If sort_handles is True, the list is sorted by Place title. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: @@ -1084,9 +1056,6 @@ class DbBsddbRead(DbReadBase, Callback): the database. If sort_handles is True, the list is sorted by Source title. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: handle_list = self._all_handles(self.source_map) @@ -1101,9 +1070,6 @@ class DbBsddbRead(DbReadBase, Callback): the database. If sort_handles is True, the list is sorted by Citation Volume/Page. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: handle_list = self._all_handles(self.citation_map) @@ -1118,9 +1084,6 @@ class DbBsddbRead(DbReadBase, Callback): the database. If sort_handles is True, the list is sorted by title. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: handle_list = self._all_handles(self.media_map) @@ -1133,9 +1096,6 @@ class DbBsddbRead(DbReadBase, Callback): """ Return a list of database handles, one handle for each Event in the database. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: return self._all_handles(self.event_map) @@ -1147,9 +1107,6 @@ class DbBsddbRead(DbReadBase, Callback): the database. If sort_handles is True, the list is sorted by surnames. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: handle_list = self._all_handles(self.family_map) @@ -1162,9 +1119,6 @@ class DbBsddbRead(DbReadBase, Callback): """ Return a list of database handles, one handle for each Repository in the database. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: return self._all_handles(self.repository_map) @@ -1174,9 +1128,6 @@ class DbBsddbRead(DbReadBase, Callback): """ Return a list of database handles, one handle for each Note in the database. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: return self._all_handles(self.note_map) @@ -1188,9 +1139,6 @@ class DbBsddbRead(DbReadBase, Callback): the database. If sort_handles is True, the list is sorted by Tag name. - - .. warning:: For speed the keys are directly returned, so on python3 - bytestrings are returned! """ if self.db_is_open: handle_list = self._all_handles(self.tag_map) @@ -1206,7 +1154,7 @@ class DbBsddbRead(DbReadBase, Callback): def g(self): with curs_(self) as cursor: for key, data in cursor: - yield key.decode('utf-8') + yield key return g # Use closure to define iterators for each primary object type @@ -1263,7 +1211,7 @@ class DbBsddbRead(DbReadBase, Callback): } table = key2table[obj_key] - return list(table.keys()) + return [key.decode('utf-8') for key in table.keys()] def has_gramps_id(self, obj_key, gramps_id): key2table = { @@ -1279,8 +1227,7 @@ class DbBsddbRead(DbReadBase, Callback): } table = key2table[obj_key] - if isinstance(gramps_id, str): - gramps_id = gramps_id.encode('utf-8') + gramps_id = gramps_id.encode('utf-8') return table.get(gramps_id, txn=self.txn) is not None def find_initial_person(self): @@ -1293,7 +1240,7 @@ class DbBsddbRead(DbReadBase, Callback): @staticmethod def _validated_id_prefix(val, default): - if isinstance(val, str) and val: + if val: try: str_ = val % 1 except TypeError: # missing conversion specifier @@ -1649,10 +1596,8 @@ class DbBsddbRead(DbReadBase, Callback): """ if table is None: return None ## trying to get object too early - if isinstance(handle, str): - handle = handle.encode('utf-8') try: - return table.get(handle, txn=self.txn) + return table.get(handle.encode('utf-8'), txn=self.txn) except DBERRS as msg: self.__log_error() raise DbError(msg) @@ -1691,10 +1636,10 @@ class DbBsddbRead(DbReadBase, Callback): """ Helper function for has__handle methods """ - if isinstance(handle, str): - handle = handle.encode('utf-8') + if handle is None: + return False try: - return table.get(handle, txn=self.txn) is not None + return table.get(handle.encode('utf-8'), txn=self.txn) is not None except DBERRS as msg: self.__log_error() raise DbError(msg) @@ -1763,8 +1708,9 @@ class DbBsddbRead(DbReadBase, Callback): """ Helper function for has__gramps_id methods """ - if isinstance(gramps_id, str): - gramps_id = gramps_id.encode('utf-8') + if gramps_id is None: + return False + gramps_id = gramps_id.encode('utf-8') try: return id_map.get(gramps_id, txn=self.txn) is not None except DBERRS as msg: @@ -1826,104 +1772,85 @@ class DbBsddbRead(DbReadBase, Callback): return self.__has_gramps_id(self.cid_trans, gramps_id) def __sortbyperson_key(self, handle): - if isinstance(handle, str): - handle = handle.encode('utf-8') + handle = handle.encode('utf-8') return glocale.sort_key(find_fullname(handle, self.person_map.get(handle))) def __sortbyfamily_key(self, handle): - if isinstance(handle, str): - handle = handle.encode('utf-8') + handle = handle.encode('utf-8') data = self.family_map.get(handle) data2 = data[2] - if isinstance(data2, str): - data2 = data2.encode('utf-8') data3 = data[3] - if isinstance(data3, str): - data3 = data3.encode('utf-8') if data2: # father handle + data2 = data2.encode('utf-8') return glocale.sort_key(find_fullname(data2, self.person_map.get(data2))) elif data3: # mother handle + data3 = data3.encode('utf-8') return glocale.sort_key(find_fullname(data3, self.person_map.get(data3))) return '' def __sortbyplace(self, first, second): - if isinstance(first, str): - first = first.encode('utf-8') - if isinstance(second, str): - second = second.encode('utf-8') + first = first.encode('utf-8') + second = second.encode('utf-8') return glocale.strcoll(self.place_map.get(first)[2], self.place_map.get(second)[2]) def __sortbyplace_key(self, place): - if isinstance(place, str): - place = place.encode('utf-8') + place = place.encode('utf-8') return glocale.sort_key(self.place_map.get(place)[2]) def __sortbysource(self, first, second): - if isinstance(first, str): - first = first.encode('utf-8') - if isinstance(second, str): - second = second.encode('utf-8') + first = first.encode('utf-8') + second = second.encode('utf-8') source1 = str(self.source_map[first][2]) source2 = str(self.source_map[second][2]) return glocale.strcoll(source1, source2) def __sortbysource_key(self, key): - if isinstance(key, str): - key = key.encode('utf-8') + key = key.encode('utf-8') source = str(self.source_map[key][2]) return glocale.sort_key(source) def __sortbycitation(self, first, second): - if isinstance(first, str): - first = first.encode('utf-8') - if isinstance(second, str): - second = second.encode('utf-8') + first = first.encode('utf-8') + second = second.encode('utf-8') citation1 = str(self.citation_map[first][3]) citation2 = str(self.citation_map[second][3]) return glocale.strcoll(citation1, citation2) def __sortbycitation_key(self, key): - if isinstance(key, str): - key = key.encode('utf-8') + key = key.encode('utf-8') citation = str(self.citation_map[key][3]) return glocale.sort_key(citation) def __sortbymedia(self, first, second): - if isinstance(first, str): - first = first.encode('utf-8') - if isinstance(second, str): - second = second.encode('utf-8') + first = first.encode('utf-8') + second = second.encode('utf-8') media1 = self.media_map[first][4] media2 = self.media_map[second][4] return glocale.strcoll(media1, media2) def __sortbymedia_key(self, key): - if isinstance(key, str): - key = key.encode('utf-8') + key = key.encode('utf-8') media = self.media_map[key][4] return glocale.sort_key(media) def __sortbytag(self, first, second): - if isinstance(first, str): - first = first.encode('utf-8') - if isinstance(second, str): - second = second.encode('utf-8') + first = first.encode('utf-8') + second = second.encode('utf-8') tag1 = self.tag_map[first][1] tag2 = self.tag_map[second][1] return glocale.strcoll(tag1, tag2) def __sortbytag_key(self, key): - if isinstance(key, str): - key = key.encode('utf-8') + key = key.encode('utf-8') tag = self.tag_map[key][1] return glocale.sort_key(tag) def set_mediapath(self, path): - """Set the default media path for database, path should be utf-8.""" + """Set the default media path for database.""" if (self.metadata is not None) and (not self.readonly): self.metadata[b'mediapath'] = path diff --git a/gramps/plugins/db/bsddb/test/cursor_test.py b/gramps/plugins/db/bsddb/test/cursor_test.py index 44ee375e1..cd432603c 100644 --- a/gramps/plugins/db/bsddb/test/cursor_test.py +++ b/gramps/plugins/db/bsddb/test/cursor_test.py @@ -203,14 +203,14 @@ class CursorTest(unittest.TestCase): def test_treecursor(self): #fill with data the_txn = self.env.txn_begin() - data = [(b'1', 'countryA', '' ), - (b'2', 'localityA', '1' ), - (b'3', 'localityB', '1' ), - (b'4', 'countryB', '' ), - (b'5', 'streetA', '2' ), - (b'6', 'countryB', '' )] + data = [('1', 'countryA', '' ), + ('2', 'localityA', '1' ), + ('3', 'localityB', '1' ), + ('4', 'countryB', '' ), + ('5', 'streetA', '2' ), + ('6', 'countryB', '' )] for d in data: - self.place_map.put(d[0], d, txn=the_txn) + self.place_map.put(d[0].encode('utf-8'), d, txn=the_txn) the_txn.commit() cursor_txn = self.env.txn_begin() diff --git a/gramps/plugins/db/bsddb/upgrade.py b/gramps/plugins/db/bsddb/upgrade.py index e111357b2..bd1593d79 100644 --- a/gramps/plugins/db/bsddb/upgrade.py +++ b/gramps/plugins/db/bsddb/upgrade.py @@ -77,6 +77,17 @@ def gramps_upgrade_pickle(self): with BSDDBTxn(self.env, self.metadata) as txn: txn.put(b'upgraded', 'Yes') +def gramps_upgrade_19(self): + """ + Upgrade database from version 18 to 19. + """ + default_handle = self.metadata.get(b'default') + with BSDDBTxn(self.env, self.metadata) as txn: + if default_handle is not None: + default_handle = default_handle.decode('utf-8') + txn.put(b'default', default_handle) + txn.put(b'version', 19) + def gramps_upgrade_18(self): """ Upgrade database from version 17 to 18. diff --git a/gramps/plugins/db/bsddb/write.py b/gramps/plugins/db/bsddb/write.py index ca03409b8..5bdcd5455 100644 --- a/gramps/plugins/db/bsddb/write.py +++ b/gramps/plugins/db/bsddb/write.py @@ -87,7 +87,7 @@ LOG = logging.getLogger(".citation") #_hdlr.setFormatter(logging.Formatter(fmt="%(name)s.%(levelname)s: %(message)s")) #_LOG.addHandler(_hdlr) _MINVERSION = 9 -_DBVERSION = 18 +_DBVERSION = 19 IDTRANS = "person_id" FIDTRANS = "family_id" @@ -139,7 +139,7 @@ def find_idmap(key, data): returns a byte string """ val = data[1] - if isinstance(val, str): + if val is not None: val = val.encode('utf-8') return val @@ -148,9 +148,7 @@ def find_parent(key, data): val = data[5][0][0] else: val = '' - if isinstance(val, str): - val = val.encode('utf-8') - return val + return val.encode('utf-8') # Secondary database key lookups for reference_map table # reference_map data values are of the form: @@ -162,18 +160,14 @@ def find_primary_handle(key, data): returns byte string """ val = (data)[0][1] - if isinstance(val, str): - val = val.encode('utf-8') - return val + return val.encode('utf-8') def find_referenced_handle(key, data): """ return handle for association of indexes returns byte string """ val = (data)[1][1] - if isinstance(val, str): - val = val.encode('utf-8') - return val + return val.encode('utf-8') #------------------------------------------------------------------------- # @@ -344,9 +338,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): @catch_db_error def set_default_person_handle(self, handle): """Set the default Person to the passed instance.""" - #we store a byte string! - if isinstance(handle, str): - handle = handle.encode('utf-8') if not self.readonly: # Start transaction with BSDDBTxn(self.env, self.metadata) as txn: @@ -370,7 +361,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): return None def set_mediapath(self, path): - """Set the default media path for database, path should be utf-8.""" + """Set the default media path for database.""" if self.metadata and not self.readonly: # Start transaction with BSDDBTxn(self.env, self.metadata) as txn: @@ -973,12 +964,10 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): """ Find all child places having the given place as the primary parent. """ - if isinstance(handle, str): - handle = handle.encode('utf-8') parent_cur = self.get_place_parent_cursor() try: - ret = parent_cur.set(handle) + ret = parent_cur.set(handle.encode('utf-8')) except: ret = None @@ -1017,14 +1006,12 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): result_list = list(find_backlink_handles(handle)) """ - if isinstance(handle, str): - handle = handle.encode('utf-8') # Use the secondary index to locate all the reference_map entries # that include a reference to the object we are looking for. referenced_cur = self._get_reference_map_referenced_cursor() try: - ret = referenced_cur.set(handle) + ret = referenced_cur.set(handle.encode('utf-8')) except: ret = None @@ -1103,11 +1090,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): handle = obj.handle existing_references = set() primary_cur = self._get_reference_map_primary_cursor() + key = handle.encode('utf-8') try: - if isinstance(handle, str): - key = handle.encode('utf-8') - else: - key = handle ret = primary_cur.set(key) except: ret = None @@ -1164,8 +1148,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): 'which is partly bytecode, this is not allowed.\n' 'Key is %s') % str(key)) key = str(key) - if isinstance(key, str): - key = key.encode('utf-8') + key = key.encode('utf-8') if not self.readonly: if not transaction.batch: old_data = self.reference_map.get(key, txn=txn) @@ -1181,8 +1164,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): if isinstance(key, tuple): #create a string key key = str(key) - if isinstance(key, str): - key = key.encode('utf-8') + key = key.encode('utf-8') if self.readonly or not key: return @@ -1540,8 +1522,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): if self.readonly or not handle: return - if isinstance(handle, str): - handle = handle.encode('utf-8') + handle = handle.encode('utf-8') if transaction.batch: with BSDDBTxn(self.env, data_map) as txn: self._delete_primary_from_reference_map(handle, transaction, @@ -1565,8 +1546,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): person = self.get_person_from_handle(handle) self.genderStats.uncount_person (person) self.remove_from_surname_list(person) - if isinstance(handle, str): - handle = handle.encode('utf-8') + handle = handle.encode('utf-8') if transaction.batch: with BSDDBTxn(self.env, self.person_map) as txn: self._delete_primary_from_reference_map(handle, transaction, @@ -1702,13 +1682,9 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): If not then we need to remove the name from the list. The function must be overridden in the derived class. """ - name = find_surname_name(person.handle, - person.get_primary_name().serialize()) - if isinstance(name, str): - uname = name - name = name.encode('utf-8') - else: - uname = str(name) + uname = find_surname_name(person.handle, + person.get_primary_name().serialize()) + name = uname.encode('utf-8') try: cursor = self.surnames.cursor(txn=self.txn) cursor_position = cursor.set(name) @@ -1736,8 +1712,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): obj.change = int(change_time or time.time()) handle = obj.handle - if isinstance(handle, str): - handle = handle.encode('utf-8') + handle = handle.encode('utf-8') self._update_reference_map(obj, transaction, self.txn) @@ -1969,18 +1944,16 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): transaction, change_time) def get_from_handle(self, handle, class_type, data_map): - if isinstance(handle, str): - handle = handle.encode('utf-8') if handle is None: raise HandleError('Handle is None') if not handle: raise HandleError('Handle is empty') - data = data_map.get(handle, txn=self.txn) + data = data_map.get(handle.encode('utf-8'), txn=self.txn) if data: newobj = class_type() newobj.unserialize(data) return newobj - raise HandleError('Handle %s not found' % handle.decode('utf-8')) + raise HandleError('Handle %s not found' % handle) @catch_db_error def transaction_begin(self, transaction): @@ -2186,6 +2159,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): upgrade.gramps_upgrade_17(self) if version < 18: upgrade.gramps_upgrade_18(self) + if version < 19: + upgrade.gramps_upgrade_19(self) self.reset() self.set_total(6) diff --git a/gramps/plugins/db/dbapi/dbapi.py b/gramps/plugins/db/dbapi/dbapi.py index f47f312db..5bbc87e8c 100644 --- a/gramps/plugins/db/dbapi/dbapi.py +++ b/gramps/plugins/db/dbapi/dbapi.py @@ -423,7 +423,7 @@ class DBAPI(DbGeneric): else: self.dbapi.execute("SELECT handle FROM person") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_family_handles(self, sort_handles=False): """ @@ -452,7 +452,7 @@ class DBAPI(DbGeneric): else: self.dbapi.execute("SELECT handle FROM family") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_event_handles(self): """ @@ -461,7 +461,7 @@ class DBAPI(DbGeneric): """ self.dbapi.execute("SELECT handle FROM event") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_citation_handles(self, sort_handles=False): """ @@ -476,7 +476,7 @@ class DBAPI(DbGeneric): else: self.dbapi.execute("SELECT handle FROM citation") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_source_handles(self, sort_handles=False): """ @@ -491,7 +491,7 @@ class DBAPI(DbGeneric): else: self.dbapi.execute("SELECT handle from source") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_place_handles(self, sort_handles=False): """ @@ -506,7 +506,7 @@ class DBAPI(DbGeneric): else: self.dbapi.execute("SELECT handle FROM place") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_repository_handles(self): """ @@ -515,7 +515,7 @@ class DBAPI(DbGeneric): """ self.dbapi.execute("SELECT handle FROM repository") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_media_handles(self, sort_handles=False): """ @@ -530,7 +530,7 @@ class DBAPI(DbGeneric): else: self.dbapi.execute("SELECT handle FROM media") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_note_handles(self): """ @@ -539,7 +539,7 @@ class DBAPI(DbGeneric): """ self.dbapi.execute("SELECT handle FROM note") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_tag_handles(self, sort_handles=False): """ @@ -554,7 +554,7 @@ class DBAPI(DbGeneric): else: self.dbapi.execute("SELECT handle FROM tag") rows = self.dbapi.fetchall() - return [bytes(row[0], "utf-8") for row in rows] + return [row[0] for row in rows] def get_tag_from_name(self, name): """ @@ -678,8 +678,6 @@ class DBAPI(DbGeneric): transaction.add(REFERENCE_KEY, TXNDEL, key, old_data, None) def _do_remove(self, handle, transaction, obj_key): - if isinstance(handle, bytes): - handle = str(handle, "utf-8") if self.readonly or not handle: return if self.has_handle(obj_key, handle): @@ -707,8 +705,6 @@ class DBAPI(DbGeneric): result_list = list(find_backlink_handles(handle)) """ - if isinstance(handle, bytes): - handle = str(handle, "utf-8") self.dbapi.execute("SELECT obj_class, obj_handle " "FROM reference " "WHERE ref_handle = ?", @@ -755,7 +751,7 @@ class DBAPI(DbGeneric): rows = cursor.fetchmany() while rows: for row in rows: - yield (row[0].encode('utf8'), pickle.loads(row[1])) + yield (row[0], pickle.loads(row[1])) rows = cursor.fetchmany() def _iter_raw_place_tree_data(self): @@ -770,7 +766,7 @@ class DBAPI(DbGeneric): rows = self.dbapi.fetchall() for row in rows: to_do.append(row[0]) - yield (row[0].encode('utf8'), pickle.loads(row[1])) + yield (row[0], pickle.loads(row[1])) def reindex_reference_map(self, callback): """ @@ -821,8 +817,6 @@ class DBAPI(DbGeneric): self.genderStats = GenderStats(gstats) def has_handle(self, obj_key, handle): - if isinstance(handle, bytes): - handle = str(handle, "utf-8") table = KEY_TO_NAME_MAP[obj_key] sql = "SELECT 1 FROM %s WHERE handle = ?" % table self.dbapi.execute(sql, [handle]) @@ -842,8 +836,6 @@ class DBAPI(DbGeneric): return [row[0] for row in rows] def get_raw_data(self, obj_key, handle): - if isinstance(handle, bytes): - handle = str(handle, "utf-8") table = KEY_TO_NAME_MAP[obj_key] sql = "SELECT blob_data FROM %s WHERE handle = ?" % table self.dbapi.execute(sql, [handle]) diff --git a/gramps/plugins/db/dbapi/test/db_test.py b/gramps/plugins/db/dbapi/test/db_test.py index 55217cb4a..82a79d7d9 100644 --- a/gramps/plugins/db/dbapi/test/db_test.py +++ b/gramps/plugins/db/dbapi/test/db_test.py @@ -152,7 +152,7 @@ class DbRandomTest(unittest.TestCase): handles = handles_func() self.assertEqual(len(handles), number_func()) for handle in handles: - self.assertIn(handle.decode('utf8'), self.handles[obj_type]) + self.assertIn(handle, self.handles[obj_type]) def test_get_person_handles(self): self.__get_handles_test('Person', @@ -312,7 +312,7 @@ class DbRandomTest(unittest.TestCase): for handle in handles_func(): person = get_func(handle) self.assertIsInstance(person, obj_class) - self.assertEqual(person.handle, handle.decode('utf8')) + self.assertEqual(person.handle, handle) def test_get_person_from_handle(self): self.__get_from_handle_test(Person, diff --git a/gramps/plugins/importer/importprogen.py b/gramps/plugins/importer/importprogen.py index beabf4d04..e568b7e27 100644 --- a/gramps/plugins/importer/importprogen.py +++ b/gramps/plugins/importer/importprogen.py @@ -763,7 +763,7 @@ class ProgenParser(UpdateCallback): # create a new Person gramps_id = self.dbase.id2user_format("I%05d" % progen_id) # make sure that gramps_id are bytes ... - if self.dbase.has_person_gramps_id(gramps_id.encode('utf-8')): + if self.dbase.has_person_gramps_id(gramps_id): gramps_id = self.dbase.find_next_person_gramps_id() intid = _find_from_handle(progen_id, self.gid2id) person.set_handle(intid) @@ -783,7 +783,7 @@ class ProgenParser(UpdateCallback): # create a new Family gramps_id = self.dbase.fid2user_format("F%04d" % progen_id) # make sure that gramps_id are bytes ... - if self.dbase.has_family_gramps_id(gramps_id.encode('utf-8')): + if self.dbase.has_family_gramps_id(gramps_id): gramps_id = self.dbase.find_next_family_gramps_id() intid = _find_from_handle(progen_id, self.fid2id) family.set_handle(intid) @@ -1063,7 +1063,7 @@ class ProgenParser(UpdateCallback): # Hmmm. Just use the plain text. LOG.warning(_("Date did not match: '%(text)s' (%(msg)s)"), \ - {'text' : date_text.encode('utf-8'), 'msg' : diag_msg or ''}) + {'text' : date_text, 'msg' : diag_msg or ''}) date.set_as_text(date_text) return date @@ -1197,9 +1197,7 @@ class ProgenParser(UpdateCallback): self.__add_tag('Person', person) # create diagnose message - diag_msg = "%s: %s %s" % (person.gramps_id, - first_name.encode('utf-8'), - sur_name.encode('utf-8')) + diag_msg = "%s: %s %s" % (person.gramps_id, first_name, sur_name) # prcesss F25 Birth Date birth_date = self.__create_date_from_text \ diff --git a/gramps/plugins/lib/libgedcom.py b/gramps/plugins/lib/libgedcom.py index 06367bcbc..d488f90ba 100644 --- a/gramps/plugins/lib/libgedcom.py +++ b/gramps/plugins/lib/libgedcom.py @@ -1627,11 +1627,10 @@ class IdFinder: @rtype: str """ index = self.prefix % self.index - # self.ids contains 'bytes' data - while index.encode('utf-8') in self.ids: + while index in self.ids: self.index += 1 index = self.prefix % self.index - self.ids.add(index.encode('utf-8')) + self.ids.add(index) self.index += 1 return index diff --git a/gramps/plugins/lib/libpersonview.py b/gramps/plugins/lib/libpersonview.py index 6bdd698f0..ecaf95e2c 100644 --- a/gramps/plugins/lib/libpersonview.py +++ b/gramps/plugins/lib/libpersonview.py @@ -123,7 +123,7 @@ class BasePersonView(ListView): ) ADD_MSG = _("Add a new person") EDIT_MSG = _("Edit the selected person") - DEL_MSG = _("Remove the selected person") + DEL_MSG = _("Delete the selected person") MERGE_MSG = _("Merge the selected persons") FILTER_TYPE = "Person" QR_CATEGORY = CATEGORY_QR_PERSON @@ -388,7 +388,7 @@ class BasePersonView(ListView): [ ('Add', 'list-add', _("_Add..."), "Insert", self.ADD_MSG, self.add), - ('Remove', 'list-remove', _("_Remove"), "Delete", + ('Remove', 'list-remove', _("_Delete"), "Delete", self.DEL_MSG, self.remove), ('Merge', 'gramps-merge', _('_Merge...'), None, self.MERGE_MSG, self.merge), diff --git a/gramps/plugins/tool/check.py b/gramps/plugins/tool/check.py index 327f5d6ab..46d7f0f68 100644 --- a/gramps/plugins/tool/check.py +++ b/gramps/plugins/tool/check.py @@ -357,8 +357,7 @@ class CheckIntegrity: logging.info('Looking for duplicate spouses') previous_errors = len(self.duplicate_links) - for bhandle in self.db.get_person_handles(): - handle = bhandle.decode('utf-8') + for handle in self.db.get_person_handles(): pers = self.db.get_person_from_handle(handle) splist = pers.get_family_handle_list() if len(splist) != len(set(splist)): @@ -379,8 +378,7 @@ class CheckIntegrity: self.db.get_number_of_media()) logging.info('Looking for character encoding errors') error_count = 0 - for bhandle in self.db.get_media_handles(): - handle = bhandle.decode('utf-8') + for handle in self.db.get_media_handles(): data = self.db.get_raw_media_data(handle) if not isinstance(data[2], str) or not isinstance(data[4], str): obj = self.db.get_media_from_handle(handle) @@ -420,8 +418,7 @@ class CheckIntegrity: self.db.get_number_of_notes()) logging.info('Looking for ctrl characters in notes') error_count = 0 - for bhandle in self.db.get_note_handles(): - handle = bhandle.decode('utf-8') + for handle in self.db.get_note_handles(): note = self.db.get_note_from_handle(handle) stext = note.get_styledtext() old_text = str(stext) @@ -447,8 +444,7 @@ class CheckIntegrity: self.progress.set_pass(_('Looking for bad alternate place names'), self.db.get_number_of_places()) logging.info('Looking for bad alternate place names') - for bhandle in self.db.get_place_handles(): - handle = bhandle.decode('utf-8') + for handle in self.db.get_place_handles(): place = self.db.get_place_from_handle(handle) fixed_alt_names = [] fixup = False @@ -480,8 +476,7 @@ class CheckIntegrity: logging.info('Looking for broken family links') previous_errors = len(self.broken_parent_links + self.broken_links) - for bfamily_handle in fhandle_list: - family_handle = bfamily_handle.decode('utf-8') + for family_handle in fhandle_list: family = self.db.get_family_from_handle(family_handle) father_handle = family.get_father_handle() mother_handle = family.get_mother_handle() @@ -612,8 +607,7 @@ class CheckIntegrity: self.progress.step() # Check persons membership in referenced families - for bperson_handle in self.db.get_person_handles(): - person_handle = bperson_handle.decode('utf-8') + for person_handle in self.db.get_person_handles(): person = self.db.get_person_from_handle(person_handle) phandle_list = person.get_parent_family_handle_list() @@ -778,8 +772,7 @@ class CheckIntegrity: # -------------------------------------------------------------------- - for bobjectid in self.db.get_media_handles(): - objectid = bobjectid.decode('utf-8') + for objectid in self.db.get_media_handles(): obj = self.db.get_media_from_handle(objectid) photo_name = media_path_full(self.db, obj.get_path()) photo_desc = obj.get_description() @@ -985,8 +978,7 @@ class CheckIntegrity: len(fhandle_list)) logging.info('Looking for empty families') previous_errors = len(self.empty_family) - for bfamily_handle in fhandle_list: - family_handle = bfamily_handle.decode('utf-8') + for family_handle in fhandle_list: self.progress.step() family = self.db.get_family_from_handle(family_handle) @@ -1022,8 +1014,7 @@ class CheckIntegrity: logging.info('Looking for broken parent relationships') previous_errors = len(self.fam_rel) - for bfamily_handle in fhandle_list: - family_handle = bfamily_handle.decode('utf-8') + for family_handle in fhandle_list: self.progress.step() family = self.db.get_family_from_handle(family_handle) @@ -1062,8 +1053,7 @@ class CheckIntegrity: self.db.get_number_of_families()) logging.info('Looking for event problems') - for bkey in self.db.get_person_handles(sort_handles=False): - key = bkey.decode('utf-8') + for key in self.db.get_person_handles(sort_handles=False): self.progress.step() person = self.db.get_person_from_handle(key) @@ -1184,8 +1174,7 @@ class CheckIntegrity: self.db.commit_person(person, self.trans) self.invalid_events.add(key) - for bkey in self.db.get_family_handles(): - key = bkey.decode('utf-8') + for key in self.db.get_family_handles(): self.progress.step() family = self.db.get_family_from_handle(key) if family.get_event_ref_list(): @@ -1234,8 +1223,7 @@ class CheckIntegrity: len(plist)) logging.info('Looking for person reference problems') - for bkey in plist: - key = bkey.decode('utf-8') + for key in plist: self.progress.step() none_handle = False newlist = [] @@ -1268,8 +1256,7 @@ class CheckIntegrity: len(plist)) logging.info('Looking for family reference problems') - for bkey in plist: - key = bkey.decode('utf-8') + for key in plist: self.progress.step() person = self.db.get_person_from_handle(key) for ordinance in person.get_lds_ord_list(): @@ -1295,8 +1282,7 @@ class CheckIntegrity: len(slist)) logging.info('Looking for repository reference problems') - for bkey in slist: - key = bkey.decode('utf-8') + for key in slist: self.progress.step() none_handle = False newlist = [] @@ -1331,8 +1317,7 @@ class CheckIntegrity: len(elist) + len(plist) + len(flist) + len(llist)) logging.info('Looking for place reference problems') - for bkey in llist: - key = bkey.decode('utf-8') + for key in llist: self.progress.step() none_handle = False newlist = [] @@ -1360,8 +1345,7 @@ class CheckIntegrity: self.db.commit_place(place, self.trans) # check persons -> the LdsOrd references a place - for bkey in plist: - key = bkey.decode('utf-8') + for key in plist: self.progress.step() person = self.db.get_person_from_handle(key) for ordinance in person.lds_ord_list: @@ -1383,8 +1367,7 @@ class CheckIntegrity: 'hand': place_handle}) self.invalid_place_references.add(key) # check families -> the LdsOrd references a place - for bkey in flist: - key = bkey.decode('utf-8') + for key in flist: self.progress.step() family = self.db.get_family_from_handle(key) for ordinance in family.lds_ord_list: @@ -1404,8 +1387,7 @@ class CheckIntegrity: 'hand': place_handle}) self.invalid_place_references.add(key) # check events - for bkey in elist: - key = bkey.decode('utf-8') + for key in elist: self.progress.step() event = self.db.get_event_from_handle(key) place_handle = event.get_place_handle() @@ -1429,8 +1411,7 @@ class CheckIntegrity: def check_citation_references(self): '''Looking for citation reference problems''' - known_handles = [key.decode('utf-8') for key in - self.db.get_citation_handles()] + known_handles = self.db.get_citation_handles() total = ( self.db.get_number_of_people() + @@ -1447,9 +1428,9 @@ class CheckIntegrity: total) logging.info('Looking for citation reference problems') - for bhandle in self.db.get_person_handles(): + for handle in self.db.get_person_handles(): self.progress.step() - person = self.db.get_person_from_handle(bhandle) + person = self.db.get_person_from_handle(handle) handle_list = person.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Citation': @@ -1461,9 +1442,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_citation_references.add(item[1]) - for bhandle in self.db.get_family_handles(): + for handle in self.db.get_family_handles(): self.progress.step() - family = self.db.get_family_from_handle(bhandle) + family = self.db.get_family_from_handle(handle) handle_list = family.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Citation': @@ -1475,9 +1456,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_citation_references.add(item[1]) - for bhandle in self.db.get_place_handles(): + for handle in self.db.get_place_handles(): self.progress.step() - place = self.db.get_place_from_handle(bhandle) + place = self.db.get_place_from_handle(handle) handle_list = place.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Citation': @@ -1489,9 +1470,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_citation_references.add(item[1]) - for bhandle in self.db.get_citation_handles(): + for handle in self.db.get_citation_handles(): self.progress.step() - citation = self.db.get_citation_from_handle(bhandle) + citation = self.db.get_citation_from_handle(handle) handle_list = citation.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Citation': @@ -1503,9 +1484,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_citation_references.add(item[1]) - for bhandle in self.db.get_repository_handles(): + for handle in self.db.get_repository_handles(): self.progress.step() - repository = self.db.get_repository_from_handle(bhandle) + repository = self.db.get_repository_from_handle(handle) handle_list = repository.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Citation': @@ -1518,9 +1499,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_citation_references.add(item[1]) - for bhandle in self.db.get_media_handles(): + for handle in self.db.get_media_handles(): self.progress.step() - obj = self.db.get_media_from_handle(bhandle) + obj = self.db.get_media_from_handle(handle) handle_list = obj.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Citation': @@ -1532,9 +1513,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_citation_references.add(item[1]) - for bhandle in self.db.get_event_handles(): + for handle in self.db.get_event_handles(): self.progress.step() - event = self.db.get_event_from_handle(bhandle) + event = self.db.get_event_from_handle(handle) handle_list = event.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Citation': @@ -1565,8 +1546,7 @@ class CheckIntegrity: len(clist)) logging.info('Looking for source reference problems') - for bkey in clist: - key = bkey.decode('utf-8') + for key in clist: self.progress.step() citation = self.db.get_citation_from_handle(key) source_handle = citation.get_reference_handle() @@ -1593,8 +1573,7 @@ class CheckIntegrity: def check_media_references(self): '''Looking for media object reference problems''' - known_handles = [key.decode('utf-8') for key in - self.db.get_media_handles(False)] + known_handles = self.db.get_media_handles(False) total = ( self.db.get_number_of_people() + @@ -1609,9 +1588,9 @@ class CheckIntegrity: 'problems'), total) logging.info('Looking for media object reference problems') - for bhandle in self.db.get_person_handles(): + for handle in self.db.get_person_handles(): self.progress.step() - person = self.db.get_person_from_handle(bhandle) + person = self.db.get_person_from_handle(handle) handle_list = person.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Media': @@ -1623,9 +1602,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_media_references.add(item[1]) - for bhandle in self.db.get_family_handles(): + for handle in self.db.get_family_handles(): self.progress.step() - family = self.db.get_family_from_handle(bhandle) + family = self.db.get_family_from_handle(handle) handle_list = family.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Media': @@ -1637,9 +1616,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_media_references.add(item[1]) - for bhandle in self.db.get_place_handles(): + for handle in self.db.get_place_handles(): self.progress.step() - place = self.db.get_place_from_handle(bhandle) + place = self.db.get_place_from_handle(handle) handle_list = place.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Media': @@ -1651,9 +1630,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_media_references.add(item[1]) - for bhandle in self.db.get_event_handles(): + for handle in self.db.get_event_handles(): self.progress.step() - event = self.db.get_event_from_handle(bhandle) + event = self.db.get_event_from_handle(handle) handle_list = event.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Media': @@ -1665,9 +1644,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_media_references.add(item[1]) - for bhandle in self.db.get_citation_handles(): + for handle in self.db.get_citation_handles(): self.progress.step() - citation = self.db.get_citation_from_handle(bhandle) + citation = self.db.get_citation_from_handle(handle) handle_list = citation.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Media': @@ -1679,9 +1658,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_media_references.add(item[1]) - for bhandle in self.db.get_source_handles(): + for handle in self.db.get_source_handles(): self.progress.step() - source = self.db.get_source_from_handle(bhandle) + source = self.db.get_source_from_handle(handle) handle_list = source.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Media': @@ -1716,8 +1695,7 @@ class CheckIntegrity: if missing_references: self.db.add_note(self.explanation, self.trans, set_gid=True) - known_handles = [key.decode('utf-8') for key in - self.db.get_note_handles()] + known_handles = self.db.get_note_handles() total = (self.db.get_number_of_people() + self.db.get_number_of_families() + @@ -1732,9 +1710,9 @@ class CheckIntegrity: total) logging.info('Looking for note reference problems') - for bhandle in self.db.get_person_handles(): + for handle in self.db.get_person_handles(): self.progress.step() - person = self.db.get_person_from_handle(bhandle) + person = self.db.get_person_from_handle(handle) handle_list = person.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Note': @@ -1746,9 +1724,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_note_references.add(item[1]) - for bhandle in self.db.get_family_handles(): + for handle in self.db.get_family_handles(): self.progress.step() - family = self.db.get_family_from_handle(bhandle) + family = self.db.get_family_from_handle(handle) handle_list = family.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Note': @@ -1760,9 +1738,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_note_references.add(item[1]) - for bhandle in self.db.get_place_handles(): + for handle in self.db.get_place_handles(): self.progress.step() - place = self.db.get_place_from_handle(bhandle) + place = self.db.get_place_from_handle(handle) handle_list = place.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Note': @@ -1774,9 +1752,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_note_references.add(item[1]) - for bhandle in self.db.get_citation_handles(): + for handle in self.db.get_citation_handles(): self.progress.step() - citation = self.db.get_citation_from_handle(bhandle) + citation = self.db.get_citation_from_handle(handle) handle_list = citation.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Note': @@ -1788,9 +1766,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_note_references.add(item[1]) - for bhandle in self.db.get_source_handles(): + for handle in self.db.get_source_handles(): self.progress.step() - source = self.db.get_source_from_handle(bhandle) + source = self.db.get_source_from_handle(handle) handle_list = source.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Note': @@ -1802,9 +1780,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_note_references.add(item[1]) - for bhandle in self.db.get_media_handles(): + for handle in self.db.get_media_handles(): self.progress.step() - obj = self.db.get_media_from_handle(bhandle) + obj = self.db.get_media_from_handle(handle) handle_list = obj.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Note': @@ -1816,9 +1794,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_note_references.add(item[1]) - for bhandle in self.db.get_event_handles(): + for handle in self.db.get_event_handles(): self.progress.step() - event = self.db.get_event_from_handle(bhandle) + event = self.db.get_event_from_handle(handle) handle_list = event.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Note': @@ -1830,9 +1808,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_note_references.add(item[1]) - for bhandle in self.db.get_repository_handles(): + for handle in self.db.get_repository_handles(): self.progress.step() - repo = self.db.get_repository_from_handle(bhandle) + repo = self.db.get_repository_from_handle(handle) handle_list = repo.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Note': @@ -1858,9 +1836,8 @@ class CheckIntegrity: ''' fix media checksums ''' self.progress.set_pass(_('Updating checksums on media'), len(self.db.get_media_handles())) - for bobjectid in self.db.get_media_handles(): + for objectid in self.db.get_media_handles(): self.progress.step() - objectid = bobjectid.decode('utf-8') obj = self.db.get_media_from_handle(objectid) full_path = media_path_full(self.db, obj.get_path()) new_checksum = create_checksum(full_path) @@ -1871,8 +1848,7 @@ class CheckIntegrity: def check_tag_references(self): '''Looking for tag reference problems''' - known_handles = [key.decode('utf-8') for key in - self.db.get_tag_handles()] + known_handles = self.db.get_tag_handles() total = (self.db.get_number_of_people() + self.db.get_number_of_families() + @@ -1888,9 +1864,9 @@ class CheckIntegrity: total) logging.info('Looking for tag reference problems') - for bhandle in self.db.get_person_handles(): + for handle in self.db.get_person_handles(): self.progress.step() - person = self.db.get_person_from_handle(bhandle) + person = self.db.get_person_from_handle(handle) handle_list = person.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Tag': @@ -1902,9 +1878,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_tag_references.add(item[1]) - for bhandle in self.db.get_family_handles(): + for handle in self.db.get_family_handles(): self.progress.step() - family = self.db.get_family_from_handle(bhandle) + family = self.db.get_family_from_handle(handle) handle_list = family.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Tag': @@ -1916,9 +1892,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_tag_references.add(item[1]) - for bhandle in self.db.get_media_handles(): + for handle in self.db.get_media_handles(): self.progress.step() - obj = self.db.get_media_from_handle(bhandle) + obj = self.db.get_media_from_handle(handle) handle_list = obj.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Tag': @@ -1930,9 +1906,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_tag_references.add(item[1]) - for bhandle in self.db.get_note_handles(): + for handle in self.db.get_note_handles(): self.progress.step() - note = self.db.get_note_from_handle(bhandle) + note = self.db.get_note_from_handle(handle) handle_list = note.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Tag': @@ -1944,9 +1920,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_tag_references.add(item[1]) - for bhandle in self.db.get_event_handles(): + for handle in self.db.get_event_handles(): self.progress.step() - event = self.db.get_event_from_handle(bhandle) + event = self.db.get_event_from_handle(handle) handle_list = event.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Tag': @@ -1958,9 +1934,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_tag_references.add(item[1]) - for bhandle in self.db.get_citation_handles(): + for handle in self.db.get_citation_handles(): self.progress.step() - citation = self.db.get_citation_from_handle(bhandle) + citation = self.db.get_citation_from_handle(handle) handle_list = citation.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Tag': @@ -1972,9 +1948,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_tag_references.add(item[1]) - for bhandle in self.db.get_source_handles(): + for handle in self.db.get_source_handles(): self.progress.step() - source = self.db.get_source_from_handle(bhandle) + source = self.db.get_source_from_handle(handle) handle_list = source.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Tag': @@ -1986,9 +1962,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_tag_references.add(item[1]) - for bhandle in self.db.get_place_handles(): + for handle in self.db.get_place_handles(): self.progress.step() - place = self.db.get_place_from_handle(bhandle) + place = self.db.get_place_from_handle(handle) handle_list = place.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Tag': @@ -2000,9 +1976,9 @@ class CheckIntegrity: elif item[1] not in known_handles: self.invalid_tag_references.add(item[1]) - for bhandle in self.db.get_repository_handles(): + for handle in self.db.get_repository_handles(): self.progress.step() - repository = self.db.get_repository_from_handle(bhandle) + repository = self.db.get_repository_from_handle(handle) handle_list = repository.get_referenced_handles_recursively() for item in handle_list: if item[0] == 'Tag': diff --git a/gramps/plugins/tool/removeunused.py b/gramps/plugins/tool/removeunused.py index 0caf3fbda..d41412426 100644 --- a/gramps/plugins/tool/removeunused.py +++ b/gramps/plugins/tool/removeunused.py @@ -291,8 +291,7 @@ class RemoveUnused(tool.Tool, ManagedWindow, UpdateCallback): for handle, data in cursor: if not any(h for h in fbh(handle)): if handle not in todo_list and handle not in link_list: - self.add_results((the_type, handle.decode('utf-8'), - data)) + self.add_results((the_type, handle, data)) self.update() self.reset() diff --git a/gramps/plugins/webreport/narrativeweb.py b/gramps/plugins/webreport/narrativeweb.py index 836c37c8a..640512e59 100644 --- a/gramps/plugins/webreport/narrativeweb.py +++ b/gramps/plugins/webreport/narrativeweb.py @@ -5226,12 +5226,8 @@ class MediaPages(BasePage): # add unused media media_list = self.r_db.get_media_handles() for media_ref in media_list: - if isinstance(media_ref, bytes): - media_handle = media_ref.decode("utf-8") - else: - media_handle = media_ref - if media_handle not in self.report.obj_dict[Media]: - unused_media_handles.append(media_handle) + if media_ref not in self.report.obj_dict[Media]: + unused_media_handles.append(media_ref) unused_media_handles = sorted( unused_media_handles, key=lambda x: sort_by_desc_and_gid( @@ -5677,12 +5673,8 @@ class ThumbnailPreviewPage(BasePage): media_list = self.r_db.get_media_handles() unused_media_handles = [] for media_ref in media_list: - if isinstance(media_ref, bytes): - media_handle = media_ref.decode("utf-8") - else: - media_handle = media_ref - if media_handle not in self.report.obj_dict[Media]: - self.photo_keys.append(media_handle) + if media_ref not in self.report.obj_dict[Media]: + self.photo_keys.append(media_ref) media_list = [] for person_handle in self.photo_keys: @@ -8706,10 +8698,6 @@ class NavWebReport(Report): _('Constructing list of other objects...'), sum(1 for _ in ind_list)) as step: for handle in ind_list: - # FIXME work around bug that self.database.iter under python 3 - # returns (binary) data rather than text - if not isinstance(handle, str): - handle = handle.decode('utf-8') step() self._add_person(handle, "", "") diff --git a/po/de.po b/po/de.po index b23312047..93412dd88 100644 --- a/po/de.po +++ b/po/de.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-14 17:43+0200\n" -"PO-Revision-Date: 2017-05-14 18:15+0100\n" +"POT-Creation-Date: 2017-05-29 19:10+0200\n" +"PO-Revision-Date: 2017-05-29 19:12+0100\n" "Last-Translator: Mirko Leonhäuser \n" "Language-Team: German \n" "Language: de\n" @@ -1334,7 +1334,6 @@ msgid "Unknown action: %s." msgstr "Unbekannte Aktion: %s." #: ../gramps/cli/argparser.py:53 -#, fuzzy msgid "" "\n" "Usage: gramps.py [OPTION...]\n" @@ -1370,7 +1369,7 @@ msgid "" msgstr "" "\n" "Aufruf: gramps.py [OPTION...]\n" -" --load-modules=MODUL1,MODUL2,... Softwaremodule zum nachladen\n" +" --load-modules=MODUL1,MODUL2,... Dynamische Module zum nachladen\n" "\n" "Hilfeoptionen\n" " -?, --help Zeigt diese Hilfe\n" @@ -1383,7 +1382,8 @@ msgstr "" "wenn neu\n" " -i, --import=DATEINAME Importiert eine Datei\n" " -e, --export=DATEINAME Exportiert eine Datei\n" -" -r, --remove=STAMMBAUMMUSTER Entfernt passende Stammbäume\n" +" -r, --remove=STAMMBAUMMUSTER Entfernt passende Stammbäume (verwende " +"Reguläre Ausdrücke)\n" " -f, --format=FORMAT Format festlegen\n" " -a, --action=AKTION Aktion festlegen\n" " -p, --options=OPTIONENZEICHENKETTE Optionen festlegen\n" @@ -1639,12 +1639,12 @@ msgstr "Stammbaum \"%s\":" #: ../gramps/gui/plug/_windows.py:1116 #: ../gramps/plugins/gramplet/whatsnext.py:493 #: ../gramps/plugins/textreport/detancestralreport.py:469 -#: ../gramps/plugins/textreport/detdescendantreport.py:517 +#: ../gramps/plugins/textreport/detdescendantreport.py:501 #: ../gramps/plugins/textreport/familygroup.py:138 #: ../gramps/plugins/textreport/familygroup.py:304 -#: ../gramps/plugins/textreport/indivcomplete.py:900 -#: ../gramps/plugins/textreport/indivcomplete.py:940 -#: ../gramps/plugins/textreport/indivcomplete.py:1011 +#: ../gramps/plugins/textreport/indivcomplete.py:911 +#: ../gramps/plugins/textreport/indivcomplete.py:951 +#: ../gramps/plugins/textreport/indivcomplete.py:1022 #: ../gramps/plugins/textreport/placereport.py:183 #: ../gramps/plugins/webreport/narrativeweb.py:1107 #: ../gramps/plugins/webreport/narrativeweb.py:2640 @@ -1775,17 +1775,17 @@ msgstr "Gesperrt durch %s" #: ../gramps/plugins/textreport/detancestralreport.py:673 #: ../gramps/plugins/textreport/detancestralreport.py:675 #: ../gramps/plugins/textreport/detancestralreport.py:733 -#: ../gramps/plugins/textreport/detdescendantreport.py:336 -#: ../gramps/plugins/textreport/detdescendantreport.py:434 -#: ../gramps/plugins/textreport/detdescendantreport.py:623 -#: ../gramps/plugins/textreport/detdescendantreport.py:663 -#: ../gramps/plugins/textreport/detdescendantreport.py:665 -#: ../gramps/plugins/textreport/detdescendantreport.py:672 -#: ../gramps/plugins/textreport/detdescendantreport.py:674 -#: ../gramps/plugins/textreport/detdescendantreport.py:702 -#: ../gramps/plugins/textreport/detdescendantreport.py:847 +#: ../gramps/plugins/textreport/detdescendantreport.py:333 +#: ../gramps/plugins/textreport/detdescendantreport.py:431 +#: ../gramps/plugins/textreport/detdescendantreport.py:607 +#: ../gramps/plugins/textreport/detdescendantreport.py:647 +#: ../gramps/plugins/textreport/detdescendantreport.py:649 +#: ../gramps/plugins/textreport/detdescendantreport.py:656 +#: ../gramps/plugins/textreport/detdescendantreport.py:658 +#: ../gramps/plugins/textreport/detdescendantreport.py:686 +#: ../gramps/plugins/textreport/detdescendantreport.py:831 #: ../gramps/plugins/textreport/indivcomplete.py:85 -#: ../gramps/plugins/textreport/indivcomplete.py:923 +#: ../gramps/plugins/textreport/indivcomplete.py:934 #: ../gramps/plugins/tool/check.py:2356 ../gramps/plugins/tool/check.py:2382 #: ../gramps/plugins/tool/dumpgenderstats.py:74 #: ../gramps/plugins/tool/dumpgenderstats.py:97 @@ -1835,12 +1835,12 @@ msgstr "" "Dies kann mit der Stammbaumverwaltung repariert werden. Wähle die Datenbank " "und klicke auf die Reparatur-Schaltfläche" -#: ../gramps/cli/grampscli.py:152 ../gramps/gui/dbloader.py:160 +#: ../gramps/cli/grampscli.py:152 ../gramps/gui/dbloader.py:164 msgid "Read only database" msgstr "Schreibgeschützte Datenbank" -#: ../gramps/cli/grampscli.py:153 ../gramps/gui/dbloader.py:161 -#: ../gramps/gui/dbloader.py:500 +#: ../gramps/cli/grampscli.py:153 ../gramps/gui/dbloader.py:165 +#: ../gramps/gui/dbloader.py:507 msgid "You do not have write access to the selected file." msgstr "Du hast keinen Schreibzugriff auf die ausgewählte Datei." @@ -1848,14 +1848,14 @@ msgstr "Du hast keinen Schreibzugriff auf die ausgewählte Datei." #: ../gramps/cli/grampscli.py:185 ../gramps/cli/grampscli.py:188 #: ../gramps/cli/grampscli.py:191 ../gramps/cli/grampscli.py:194 #: ../gramps/cli/grampscli.py:197 ../gramps/cli/grampscli.py:200 -#: ../gramps/cli/grampscli.py:203 ../gramps/gui/dbloader.py:264 -#: ../gramps/gui/dbloader.py:267 ../gramps/gui/dbloader.py:270 -#: ../gramps/gui/dbloader.py:273 ../gramps/gui/dbloader.py:276 +#: ../gramps/cli/grampscli.py:203 ../gramps/gui/dbloader.py:268 +#: ../gramps/gui/dbloader.py:271 ../gramps/gui/dbloader.py:274 +#: ../gramps/gui/dbloader.py:277 ../gramps/gui/dbloader.py:280 msgid "Cannot open database" msgstr "Kann die Datenbank nicht öffnen" -#: ../gramps/cli/grampscli.py:207 ../gramps/gui/dbloader.py:280 -#: ../gramps/gui/dbloader.py:457 +#: ../gramps/cli/grampscli.py:207 ../gramps/gui/dbloader.py:284 +#: ../gramps/gui/dbloader.py:464 #, python-format msgid "Could not open file: %s" msgstr "Kann die folgende Datei nicht öffnen: %s" @@ -3479,7 +3479,7 @@ msgstr "Anwendung ..." #: ../gramps/plugins/quickview/quickview.gpr.py:130 #: ../gramps/plugins/textreport/birthdayreport.py:411 #: ../gramps/plugins/textreport/familygroup.py:711 -#: ../gramps/plugins/textreport/indivcomplete.py:1045 +#: ../gramps/plugins/textreport/indivcomplete.py:1056 #: ../gramps/plugins/textreport/recordsreport.py:217 #: ../gramps/plugins/tool/sortevents.py:167 #: ../gramps/plugins/webreport/narrativeweb.py:9774 @@ -3695,6 +3695,7 @@ msgstr "Anzahl der Instanzen:" #: ../gramps/gen/filters/rules/person/_matchidof.py:44 #: ../gramps/gen/filters/rules/person/_relationshippathbetween.py:45 #: ../gramps/gen/filters/rules/place/_isenclosedby.py:48 +#: ../gramps/gen/filters/rules/place/_withinarea.py:50 #: ../gramps/gui/editors/filtereditor.py:517 #: ../gramps/gui/glade/editplaceref.glade:244 msgid "ID:" @@ -4114,6 +4115,7 @@ msgstr "Ereignisattribut:" #: ../gramps/gen/filters/rules/media/_hasattribute.py:44 #: ../gramps/gen/filters/rules/person/_hasattribute.py:44 #: ../gramps/gen/filters/rules/person/_hasfamilyattribute.py:44 +#: ../gramps/gen/filters/rules/place/_withinarea.py:50 msgid "Value:" msgstr "Wert:" @@ -4786,7 +4788,7 @@ msgstr "Typ:" #: ../gramps/gen/filters/rules/media/_hasmedia.py:48 #: ../gramps/gui/glade/mergemedia.glade:245 -#: ../gramps/gui/glade/mergemedia.glade:261 ../gramps/gui/viewmanager.py:1702 +#: ../gramps/gui/glade/mergemedia.glade:261 ../gramps/gui/viewmanager.py:1827 msgid "Path:" msgstr "Pfad:" @@ -5419,6 +5421,8 @@ msgid "" "Soundex Match of people with a specified name. First name, Surname, Call " "name, and Nickname are searched in primary and alternate names." msgstr "" +"Soundex Passt auf Personen mit einem bestimmten Namen. Vorname, Nachname, " +"Rufname, und Spitzname werden im primären und den alternativen Namen gesucht." #: ../gramps/gen/filters/rules/person/_hassourcecount.py:45 msgid "People with sources" @@ -5999,6 +6003,7 @@ msgstr "Entspricht Orten mit leerem Längen- oder Breitengrad." #: ../gramps/gen/filters/rules/place/_hasnolatorlon.py:50 #: ../gramps/gen/filters/rules/place/_inlatlonneighborhood.py:56 +#: ../gramps/gen/filters/rules/place/_withinarea.py:53 msgid "Position filters" msgstr "Positionsfilter" @@ -6194,6 +6199,20 @@ msgstr "" "Entspricht Orten, deren Gramps ID dem vorgegebenen 'regulären Ausdruck' " "entspricht." +#: ../gramps/gen/filters/rules/place/_withinarea.py:50 +#: ../gramps/gui/editors/filtereditor.py:584 +msgid "Units:" +msgstr "Einheiten:" + +#: ../gramps/gen/filters/rules/place/_withinarea.py:51 +msgid "Places within an area" +msgstr "Orte innerhalb eines Gebiets" + +#: ../gramps/gen/filters/rules/place/_withinarea.py:52 +msgid "Matches places within a given distance of another place" +msgstr "" +"Entspricht Orten innerhalb einer bestimmten Distanz zu einem anderen Ort" + #: ../gramps/gen/filters/rules/repository/_allrepos.py:44 msgid "Every repository" msgstr "Jeder Aufbewahrungsort" @@ -6720,8 +6739,8 @@ msgstr "Gramps ID" #: ../gramps/plugins/quickview/onthisday.py:80 #: ../gramps/plugins/quickview/onthisday.py:81 #: ../gramps/plugins/quickview/onthisday.py:82 -#: ../gramps/plugins/textreport/indivcomplete.py:494 -#: ../gramps/plugins/textreport/indivcomplete.py:692 +#: ../gramps/plugins/textreport/indivcomplete.py:505 +#: ../gramps/plugins/textreport/indivcomplete.py:703 #: ../gramps/plugins/textreport/placereport.py:223 #: ../gramps/plugins/textreport/placereport.py:301 #: ../gramps/plugins/textreport/tagreport.py:351 @@ -6794,7 +6813,7 @@ msgstr "Quelle" #: ../gramps/plugins/gramplet/gramplet.gpr.py:771 #: ../gramps/plugins/quickview/filterbyname.py:112 #: ../gramps/plugins/quickview/filterbyname.py:137 -#: ../gramps/plugins/textreport/indivcomplete.py:261 +#: ../gramps/plugins/textreport/indivcomplete.py:268 #: ../gramps/plugins/textreport/tagreport.py:486 #: ../gramps/plugins/view/noteview.py:110 ../gramps/plugins/view/view.gpr.py:97 #: ../gramps/plugins/view/view.gpr.py:105 @@ -6859,7 +6878,7 @@ msgstr "Zuletzt geändert" #: ../gramps/gui/selectors/selectnote.py:77 #: ../gramps/plugins/lib/libpersonview.py:111 #: ../gramps/plugins/lib/libplaceview.py:92 -#: ../gramps/plugins/textreport/indivcomplete.py:535 +#: ../gramps/plugins/textreport/indivcomplete.py:546 #: ../gramps/plugins/tool/notrelated.py:129 #: ../gramps/plugins/view/citationlistview.py:103 #: ../gramps/plugins/view/citationtreeview.py:98 @@ -6937,7 +6956,7 @@ msgstr "Vertraulich" #: ../gramps/gui/filters/sidebar/_personsidebarfilter.py:89 #: ../gramps/gui/merge/mergeperson.py:64 #: ../gramps/gui/views/treemodels/peoplemodel.py:97 -#: ../gramps/plugins/textreport/indivcomplete.py:649 +#: ../gramps/plugins/textreport/indivcomplete.py:660 #: ../gramps/plugins/tool/dumpgenderstats.py:46 #: ../gramps/plugins/view/relview.py:648 #: ../gramps/plugins/webreport/narrativeweb.py:6398 @@ -7123,8 +7142,8 @@ msgstr "Ereignis" #: ../gramps/plugins/quickview/onthisday.py:82 #: ../gramps/plugins/quickview/quickview.gpr.py:206 #: ../gramps/plugins/quickview/references.py:92 -#: ../gramps/plugins/textreport/indivcomplete.py:497 -#: ../gramps/plugins/textreport/indivcomplete.py:695 +#: ../gramps/plugins/textreport/indivcomplete.py:508 +#: ../gramps/plugins/textreport/indivcomplete.py:706 #: ../gramps/plugins/tool/reorderids.glade:686 #: ../gramps/plugins/tool/sortevents.py:58 #: ../gramps/plugins/view/eventview.py:86 @@ -7160,8 +7179,8 @@ msgstr "Ereignisreferenz" #: ../gramps/plugins/gramplet/gramplet.gpr.py:631 #: ../gramps/plugins/gramplet/gramplet.gpr.py:645 #: ../gramps/plugins/gramplet/gramplet.gpr.py:659 -#: ../gramps/plugins/textreport/indivcomplete.py:459 -#: ../gramps/plugins/textreport/indivcomplete.py:678 +#: ../gramps/plugins/textreport/indivcomplete.py:470 +#: ../gramps/plugins/textreport/indivcomplete.py:689 #: ../gramps/plugins/webreport/narrativeweb.py:832 #: ../gramps/plugins/webreport/narrativeweb.py:1406 #: ../gramps/plugins/webreport/narrativeweb.py:1662 @@ -7657,9 +7676,9 @@ msgstr "annul." #: ../gramps/plugins/quickview/all_relations.py:300 #: ../gramps/plugins/textreport/familygroup.py:230 #: ../gramps/plugins/textreport/familygroup.py:241 -#: ../gramps/plugins/textreport/indivcomplete.py:318 -#: ../gramps/plugins/textreport/indivcomplete.py:320 -#: ../gramps/plugins/textreport/indivcomplete.py:912 +#: ../gramps/plugins/textreport/indivcomplete.py:327 +#: ../gramps/plugins/textreport/indivcomplete.py:329 +#: ../gramps/plugins/textreport/indivcomplete.py:923 #: ../gramps/plugins/textreport/tagreport.py:250 #: ../gramps/plugins/view/familyview.py:80 #: ../gramps/plugins/view/relview.py:899 @@ -7679,9 +7698,9 @@ msgstr "Vater" #: ../gramps/plugins/quickview/all_relations.py:297 #: ../gramps/plugins/textreport/familygroup.py:247 #: ../gramps/plugins/textreport/familygroup.py:258 -#: ../gramps/plugins/textreport/indivcomplete.py:327 -#: ../gramps/plugins/textreport/indivcomplete.py:329 -#: ../gramps/plugins/textreport/indivcomplete.py:913 +#: ../gramps/plugins/textreport/indivcomplete.py:336 +#: ../gramps/plugins/textreport/indivcomplete.py:338 +#: ../gramps/plugins/textreport/indivcomplete.py:924 #: ../gramps/plugins/textreport/tagreport.py:256 #: ../gramps/plugins/view/familyview.py:81 #: ../gramps/plugins/view/relview.py:900 @@ -7694,7 +7713,7 @@ msgstr "Mutter" #: ../gramps/plugins/gramplet/gramplet.gpr.py:855 #: ../gramps/plugins/gramplet/gramplet.gpr.py:869 #: ../gramps/plugins/textreport/familygroup.py:644 -#: ../gramps/plugins/textreport/indivcomplete.py:664 +#: ../gramps/plugins/textreport/indivcomplete.py:675 #: ../gramps/plugins/view/pedigreeview.py:1753 #: ../gramps/plugins/view/relview.py:1420 #: ../gramps/plugins/webreport/narrativeweb.py:763 @@ -7778,8 +7797,8 @@ msgstr "Verheiratet" #: ../gramps/plugins/quickview/onthisday.py:82 #: ../gramps/plugins/quickview/references.py:70 #: ../gramps/plugins/quickview/siblings.py:48 -#: ../gramps/plugins/textreport/indivcomplete.py:493 -#: ../gramps/plugins/textreport/indivcomplete.py:691 +#: ../gramps/plugins/textreport/indivcomplete.py:504 +#: ../gramps/plugins/textreport/indivcomplete.py:702 #: ../gramps/plugins/textreport/tagreport.py:339 #: ../gramps/plugins/textreport/tagreport.py:434 #: ../gramps/plugins/textreport/tagreport.py:503 @@ -7806,11 +7825,11 @@ msgstr "Begabung" #: ../gramps/gen/lib/ldsord.py:98 msgid "Sealed to Parents" -msgstr "Siegelung zu Eltern" +msgstr "" #: ../gramps/gen/lib/ldsord.py:99 msgid "Sealed to Spouse" -msgstr "Siegelung zu Partner" +msgstr "" #: ../gramps/gen/lib/ldsord.py:103 msgid "" @@ -7822,7 +7841,7 @@ msgstr "" #: ../gramps/gen/lib/ldsord.py:105 msgid "Canceled" -msgstr "Annulliert" +msgstr "" #: ../gramps/gen/lib/ldsord.py:106 #: ../gramps/gui/filters/sidebar/_familysidebarfilter.py:116 @@ -7837,11 +7856,11 @@ msgstr "Kind" #: ../gramps/gen/lib/ldsord.py:107 msgid "Cleared" -msgstr "Freigegeben" +msgstr "" #: ../gramps/gen/lib/ldsord.py:108 msgid "Completed" -msgstr "Abgeschlossen" +msgstr "" #: ../gramps/gen/lib/ldsord.py:109 msgid "Do not seal" @@ -7928,7 +7947,7 @@ msgstr "Prüfsumme" #: ../gramps/plugins/lib/libpersonview.py:98 #: ../gramps/plugins/lib/libplaceview.py:84 #: ../gramps/plugins/quickview/filterbyname.py:306 -#: ../gramps/plugins/textreport/indivcomplete.py:910 +#: ../gramps/plugins/textreport/indivcomplete.py:921 #: ../gramps/plugins/textreport/tagreport.py:162 #: ../gramps/plugins/textreport/tagreport.py:428 #: ../gramps/plugins/textreport/tagreport.py:656 @@ -8035,10 +8054,10 @@ msgstr "%(surname)s, %(first)s %(suffix)s" #: ../gramps/gen/plug/report/utils.py:257 #: ../gramps/plugins/graph/gvfamilylines.py:483 #: ../gramps/plugins/textreport/detancestralreport.py:448 -#: ../gramps/plugins/textreport/detdescendantreport.py:499 -#: ../gramps/plugins/textreport/indivcomplete.py:199 -#: ../gramps/plugins/textreport/indivcomplete.py:207 -#: ../gramps/plugins/textreport/indivcomplete.py:1001 +#: ../gramps/plugins/textreport/detdescendantreport.py:483 +#: ../gramps/plugins/textreport/indivcomplete.py:200 +#: ../gramps/plugins/textreport/indivcomplete.py:208 +#: ../gramps/plugins/textreport/indivcomplete.py:1012 #, python-format msgid "%(str1)s, %(str2)s" msgstr "%(str1)s, %(str2)s" @@ -8309,7 +8328,7 @@ msgstr "Person" #: ../gramps/plugins/importer/importcsv.py:168 #: ../gramps/plugins/lib/libpersonview.py:100 #: ../gramps/plugins/quickview/siblings.py:48 -#: ../gramps/plugins/textreport/indivcomplete.py:911 +#: ../gramps/plugins/textreport/indivcomplete.py:922 #: ../gramps/plugins/webreport/narrativeweb.py:7389 msgid "Gender" msgstr "Geschlecht" @@ -8335,7 +8354,7 @@ msgstr "Ereignisreferenzen" #: ../gramps/plugins/graph/gvrelgraph.py:894 #: ../gramps/plugins/quickview/filterbyname.py:94 #: ../gramps/plugins/quickview/filterbyname.py:119 -#: ../gramps/plugins/textreport/indivcomplete.py:627 +#: ../gramps/plugins/textreport/indivcomplete.py:638 #: ../gramps/plugins/textreport/tagreport.py:233 #: ../gramps/plugins/tool/verify.glade:753 #: ../gramps/plugins/view/familyview.py:114 @@ -8355,7 +8374,7 @@ msgstr "Eltern Familien" #: ../gramps/gen/lib/person.py:209 ../gramps/gen/lib/repo.py:103 #: ../gramps/gui/merge/mergeperson.py:268 -#: ../gramps/plugins/textreport/indivcomplete.py:407 +#: ../gramps/plugins/textreport/indivcomplete.py:418 #: ../gramps/plugins/webreport/narrativeweb.py:1475 msgid "Addresses" msgstr "Adressen" @@ -8406,7 +8425,7 @@ msgid "Places" msgstr "Orte" #: ../gramps/gen/lib/place.py:154 ../gramps/gui/merge/mergeperson.py:199 -#: ../gramps/plugins/textreport/indivcomplete.py:379 +#: ../gramps/plugins/textreport/indivcomplete.py:389 msgid "Alternate Names" msgstr "Alternative Namen" @@ -8706,9 +8725,8 @@ msgid "Text" msgstr "Text" #: ../gramps/gen/lib/styledtext.py:311 -#, fuzzy msgid "Styled Text Tags" -msgstr "Gestylter Texteditor" +msgstr "Gestylte Textmarkierung" #: ../gramps/gen/lib/styledtexttagtype.py:61 #: ../gramps/gui/widgets/styledtexteditor.py:458 @@ -9472,7 +9490,7 @@ msgstr "Gültige Werte:" #. #. ------------------------------------------------------------------------ #: ../gramps/gen/plug/report/_book.py:71 ../gramps/gui/plug/_dialogs.py:59 -#: ../gramps/gui/plug/report/_bookdialog.py:84 ../gramps/gui/viewmanager.py:113 +#: ../gramps/gui/plug/report/_bookdialog.py:84 ../gramps/gui/viewmanager.py:119 msgid "Unsupported" msgstr "Nicht unterstützt" @@ -9507,7 +9525,7 @@ msgstr "Grafiken" #: ../gramps/gen/plug/report/endnotes.py:61 #: ../gramps/plugins/textreport/ancestorreport.py:376 #: ../gramps/plugins/textreport/detancestralreport.py:978 -#: ../gramps/plugins/textreport/detdescendantreport.py:1202 +#: ../gramps/plugins/textreport/detdescendantreport.py:1183 #: ../gramps/plugins/textreport/endoflinereport.py:326 msgid "The style used for the generation header." msgstr "Der Stil, der für die Generation Überschriften verwendet wird." @@ -9568,11 +9586,11 @@ msgstr "Schlussnotizen" #: ../gramps/plugins/gramplet/statsgramplet.py:137 #: ../gramps/plugins/gramplet/statsgramplet.py:141 #: ../gramps/plugins/textreport/familygroup.py:408 -#: ../gramps/plugins/textreport/indivcomplete.py:908 -#: ../gramps/plugins/textreport/indivcomplete.py:910 -#: ../gramps/plugins/textreport/indivcomplete.py:911 -#: ../gramps/plugins/textreport/indivcomplete.py:912 -#: ../gramps/plugins/textreport/indivcomplete.py:913 +#: ../gramps/plugins/textreport/indivcomplete.py:919 +#: ../gramps/plugins/textreport/indivcomplete.py:921 +#: ../gramps/plugins/textreport/indivcomplete.py:922 +#: ../gramps/plugins/textreport/indivcomplete.py:923 +#: ../gramps/plugins/textreport/indivcomplete.py:924 #: ../gramps/plugins/view/relview.py:538 ../gramps/plugins/view/relview.py:602 #: ../gramps/plugins/view/relview.py:614 ../gramps/plugins/view/relview.py:631 #: ../gramps/plugins/view/relview.py:641 ../gramps/plugins/view/relview.py:646 @@ -9643,9 +9661,8 @@ msgid "Years from death to consider living" msgstr "Definiere 'lebende Person' über die Anzahl der Jahre seit Todesjahr." #: ../gramps/gen/plug/report/stdoptions.py:191 -#, fuzzy msgid "Whether to restrict data on recently-dead people" -msgstr "Daten von lebenden Pe_rsonen beschränken" +msgstr "Ob Daten von kürzlich verstorbenen Personen beschränkt werden" #: ../gramps/gen/plug/report/stdoptions.py:256 ../gramps/gui/configure.py:1009 msgid "Date format" @@ -9653,7 +9670,7 @@ msgstr "Datumsformat" #: ../gramps/gen/plug/report/stdoptions.py:259 msgid "The format and language for dates, with examples" -msgstr "" +msgstr "Das Format und die Sprache von Daten mit Beispielen" #: ../gramps/gen/plug/report/stdoptions.py:321 msgid "Do not include" @@ -9677,13 +9694,13 @@ msgstr "Ob (und wo) Gramps IDs enthalten sind" #. ######################### #. ############################### #: ../gramps/gen/plug/report/stdoptions.py:327 -#: ../gramps/gui/viewmanager.py:1761 +#: ../gramps/gui/viewmanager.py:1886 #: ../gramps/plugins/graph/gvfamilylines.py:211 #: ../gramps/plugins/graph/gvrelgraph.py:804 #: ../gramps/plugins/textreport/detancestralreport.py:888 -#: ../gramps/plugins/textreport/detdescendantreport.py:1094 +#: ../gramps/plugins/textreport/detdescendantreport.py:1075 #: ../gramps/plugins/textreport/familygroup.py:747 -#: ../gramps/plugins/textreport/indivcomplete.py:1083 +#: ../gramps/plugins/textreport/indivcomplete.py:1094 msgid "Include" msgstr "Einbeziehen" @@ -9692,12 +9709,12 @@ msgid "Whether to include Gramps IDs" msgstr "Ob Gramps IDs enthalten sind" #: ../gramps/gen/plug/report/utils.py:158 -#: ../gramps/plugins/textreport/indivcomplete.py:902 +#: ../gramps/plugins/textreport/indivcomplete.py:913 msgid "File does not exist" msgstr "Datei existiert nicht" #: ../gramps/gen/plug/report/utils.py:159 -#: ../gramps/plugins/textreport/indivcomplete.py:898 +#: ../gramps/plugins/textreport/indivcomplete.py:909 #: ../gramps/plugins/textreport/simplebooktitle.py:106 #: ../gramps/plugins/webreport/narrativeweb.py:2153 #: ../gramps/plugins/webreport/narrativeweb.py:2368 @@ -10781,7 +10798,7 @@ msgstr "Für eine andere Reihenfolge ziehe die Spalte an eine neue Position." #: ../gramps/gui/columnorder.py:107 ../gramps/gui/configure.py:1545 #: ../gramps/gui/configure.py:1567 ../gramps/gui/configure.py:1590 -#: ../gramps/gui/plug/_dialogs.py:130 ../gramps/gui/viewmanager.py:1832 +#: ../gramps/gui/plug/_dialogs.py:130 ../gramps/gui/viewmanager.py:1957 #: ../gramps/plugins/lib/maps/geography.py:1009 #: ../gramps/plugins/lib/maps/geography.py:1263 msgid "_Apply" @@ -10825,7 +10842,7 @@ msgstr "Namenseditor anzeigen" #: ../gramps/gui/glade/updateaddons.glade:25 ../gramps/gui/plug/_windows.py:105 #: ../gramps/gui/plug/_windows.py:691 ../gramps/gui/plug/_windows.py:747 #: ../gramps/gui/plug/quick/_textbufdoc.py:60 ../gramps/gui/undohistory.py:90 -#: ../gramps/gui/viewmanager.py:515 ../gramps/gui/viewmanager.py:1696 +#: ../gramps/gui/viewmanager.py:538 ../gramps/gui/viewmanager.py:1821 #: ../gramps/gui/views/bookmarks.py:287 ../gramps/gui/views/tags.py:430 #: ../gramps/gui/widgets/grampletbar.py:635 #: ../gramps/gui/widgets/grampletpane.py:237 @@ -11097,7 +11114,8 @@ msgstr "Beispiel" #: ../gramps/gui/editors/displaytabs/nameembedlist.py:129 #: ../gramps/gui/editors/displaytabs/webembedlist.py:115 #: ../gramps/gui/editors/editfamily.py:148 -#: ../gramps/gui/plug/report/_bookdialog.py:653 ../gramps/gui/views/tags.py:422 +#: ../gramps/gui/plug/report/_bookdialog.py:653 +#: ../gramps/gui/viewmanager.py:600 ../gramps/gui/views/tags.py:422 #: ../gramps/gui/widgets/fanchart.py:1712 #: ../gramps/gui/widgets/fanchart.py:1754 #: ../gramps/plugins/view/pedigreeview.py:1627 @@ -11114,7 +11132,7 @@ msgstr "_Hinzufügen" #: ../gramps/gui/editors/displaytabs/webembedlist.py:116 #: ../gramps/gui/glade/editlink.glade:222 #: ../gramps/gui/plug/report/_bookdialog.py:627 -#: ../gramps/gui/viewmanager.py:490 ../gramps/gui/views/tags.py:423 +#: ../gramps/gui/viewmanager.py:513 ../gramps/gui/views/tags.py:423 #: ../gramps/gui/widgets/fanchart.py:1511 #: ../gramps/plugins/view/pedigreeview.py:1662 #: ../gramps/plugins/view/pedigreeview.py:1890 @@ -11129,8 +11147,7 @@ msgstr "_Bearbeiten" #: ../gramps/gui/editors/displaytabs/webembedlist.py:117 #: ../gramps/gui/editors/editfamily.py:151 #: ../gramps/gui/plug/report/_bookdialog.py:622 -#: ../gramps/gui/views/bookmarks.py:283 ../gramps/gui/views/listview.py:212 -#: ../gramps/gui/views/tags.py:424 ../gramps/plugins/lib/libpersonview.py:391 +#: ../gramps/gui/views/bookmarks.py:283 ../gramps/gui/views/tags.py:424 msgid "_Remove" msgstr "_Entfernen" @@ -11188,7 +11205,7 @@ msgid "Active person's name and ID" msgstr "Name und GRAMPS-ID der aktiven Person" #: ../gramps/gui/configure.py:1085 -#: ../gramps/plugins/textreport/indivcomplete.py:359 +#: ../gramps/plugins/textreport/indivcomplete.py:368 msgid "Relationship to home person" msgstr "Verwandtschaftsverhältnis zur Hauptperson" @@ -11506,7 +11523,7 @@ msgid "Select media directory" msgstr "Wähle ein Medienverzeichnis" #: ../gramps/gui/configure.py:1543 ../gramps/gui/configure.py:1566 -#: ../gramps/gui/configure.py:1588 ../gramps/gui/dbloader.py:397 +#: ../gramps/gui/configure.py:1588 ../gramps/gui/dbloader.py:401 #: ../gramps/gui/editors/edittaglist.py:119 #: ../gramps/gui/glade/addmedia.glade:22 #: ../gramps/gui/glade/baseselector.glade:24 @@ -11553,7 +11570,7 @@ msgstr "Wähle ein Medienverzeichnis" #: ../gramps/gui/plug/_guioptions.py:1738 ../gramps/gui/plug/_windows.py:440 #: ../gramps/gui/plug/report/_fileentry.py:64 #: ../gramps/gui/plug/report/_reportdialog.py:161 ../gramps/gui/utils.py:178 -#: ../gramps/gui/viewmanager.py:1830 ../gramps/gui/views/listview.py:1022 +#: ../gramps/gui/viewmanager.py:1955 ../gramps/gui/views/listview.py:1022 #: ../gramps/gui/views/navigationview.py:362 ../gramps/gui/views/tags.py:645 #: ../gramps/gui/widgets/progressdialog.py:437 #: ../gramps/plugins/lib/maps/geography.py:1008 @@ -11568,7 +11585,7 @@ msgstr "_Abbrechen" msgid "Select database directory" msgstr "Wähle ein Datenbankverzeichnis." -#: ../gramps/gui/configure.py:1585 ../gramps/gui/viewmanager.py:1827 +#: ../gramps/gui/configure.py:1585 ../gramps/gui/viewmanager.py:1952 msgid "Select backup directory" msgstr "Sicherungsverzeichnis wählen" @@ -11600,13 +11617,13 @@ msgstr "_Import starten" msgid "_Stop" msgstr "_Stopp" -#: ../gramps/gui/dbloader.py:202 ../gramps/gui/dbloader.py:217 -#: ../gramps/gui/dbloader.py:247 +#: ../gramps/gui/dbloader.py:206 ../gramps/gui/dbloader.py:221 +#: ../gramps/gui/dbloader.py:251 msgid "Are you sure you want to upgrade this Family Tree?" msgstr "Willst du wirklich den Stammbaum aktualisieren?" -#: ../gramps/gui/dbloader.py:205 ../gramps/gui/dbloader.py:220 -#: ../gramps/gui/dbloader.py:250 +#: ../gramps/gui/dbloader.py:209 ../gramps/gui/dbloader.py:224 +#: ../gramps/gui/dbloader.py:254 msgid "" "I have made a backup,\n" "please upgrade my Family Tree" @@ -11614,19 +11631,19 @@ msgstr "" "Ich habe eine Sicherung erstellt,\n" " bitte aktualisiere meinen Stammbaum" -#: ../gramps/gui/dbloader.py:207 ../gramps/gui/dbloader.py:222 -#: ../gramps/gui/dbloader.py:237 ../gramps/gui/dbloader.py:252 +#: ../gramps/gui/dbloader.py:211 ../gramps/gui/dbloader.py:226 +#: ../gramps/gui/dbloader.py:241 ../gramps/gui/dbloader.py:256 #: ../gramps/gui/plug/report/_bookdialog.py:243 #: ../gramps/gui/plug/report/_bookdialog.py:739 -#: ../gramps/gui/viewmanager.py:796 +#: ../gramps/gui/viewmanager.py:840 msgid "Cancel" msgstr "Abbrechen" -#: ../gramps/gui/dbloader.py:232 +#: ../gramps/gui/dbloader.py:236 msgid "Are you sure you want to downgrade this Family Tree?" msgstr "Willst du wirklich den Stammbaum herunterstufen?" -#: ../gramps/gui/dbloader.py:235 +#: ../gramps/gui/dbloader.py:239 msgid "" "I have made a backup,\n" "please downgrade my Family Tree" @@ -11634,27 +11651,27 @@ msgstr "" "Ich habe eine Sicherung erstellt,\n" "bitte stufe meinen Stammbaum herunter." -#: ../gramps/gui/dbloader.py:321 +#: ../gramps/gui/dbloader.py:325 msgid "All files" msgstr "Alle Dateien" -#: ../gramps/gui/dbloader.py:362 +#: ../gramps/gui/dbloader.py:366 msgid "Automatically detected" msgstr "Automatisch erkannt" -#: ../gramps/gui/dbloader.py:371 +#: ../gramps/gui/dbloader.py:375 msgid "Select file _type:" msgstr "Datei_typ auswählen:" -#: ../gramps/gui/dbloader.py:387 +#: ../gramps/gui/dbloader.py:391 msgid "Import Family Tree" msgstr "Stammbaum importieren" -#: ../gramps/gui/dbloader.py:398 +#: ../gramps/gui/dbloader.py:402 msgid "Import" msgstr "Importieren" -#: ../gramps/gui/dbloader.py:458 +#: ../gramps/gui/dbloader.py:465 #, python-format msgid "" "File type \"%s\" is unknown to Gramps.\n" @@ -11667,29 +11684,29 @@ msgstr "" "Gültige Typen sind: Gramps-Datenbank, Gramps-XML, Gramps-Paket, GEDCOM und " "andere." -#: ../gramps/gui/dbloader.py:481 ../gramps/gui/dbloader.py:488 +#: ../gramps/gui/dbloader.py:488 ../gramps/gui/dbloader.py:495 msgid "Cannot open file" msgstr "Die Datei kann nicht geöffnet werden." -#: ../gramps/gui/dbloader.py:482 +#: ../gramps/gui/dbloader.py:489 msgid "The selected file is a directory, not a file.\n" msgstr "" "Die ausgewählte Datei ist ein ganzes Verzeichnis und keine einzelne Datei.\n" -#: ../gramps/gui/dbloader.py:489 +#: ../gramps/gui/dbloader.py:496 msgid "You do not have read access to the selected file." msgstr "Du hast keinen Lesezugriff auf die ausgewählte Datei." -#: ../gramps/gui/dbloader.py:499 +#: ../gramps/gui/dbloader.py:506 msgid "Cannot create file" msgstr "Die Datei kann nicht erstellt werden." -#: ../gramps/gui/dbloader.py:524 +#: ../gramps/gui/dbloader.py:531 #, python-format msgid "Could not import file: %s" msgstr "Die Datei kann nicht importiert werden: %s." -#: ../gramps/gui/dbloader.py:525 +#: ../gramps/gui/dbloader.py:532 msgid "" "This file incorrectly identifies its character set, so it cannot be " "accurately imported. Please fix the encoding, and import again" @@ -11760,7 +11777,7 @@ msgstr "Datumsinformation" #: ../gramps/gui/glade/styleeditor.glade:1738 #: ../gramps/gui/plug/_guioptions.py:79 #: ../gramps/gui/plug/report/_reportdialog.py:165 ../gramps/gui/utils.py:192 -#: ../gramps/gui/viewmanager.py:1698 ../gramps/gui/views/tags.py:646 +#: ../gramps/gui/viewmanager.py:1823 ../gramps/gui/views/tags.py:646 #: ../gramps/plugins/tool/check.py:770 ../gramps/plugins/tool/patchnames.py:118 #: ../gramps/plugins/tool/populatesources.py:91 #: ../gramps/plugins/tool/testcasegenerator.py:328 @@ -11786,8 +11803,8 @@ msgstr "Stammbaumname:" #: ../gramps/gui/editors/displaytabs/ldsembedlist.py:63 #: ../gramps/gui/plug/_windows.py:127 ../gramps/gui/plug/_windows.py:184 #: ../gramps/plugins/quickview/ageondate.py:54 -#: ../gramps/plugins/textreport/indivcomplete.py:495 -#: ../gramps/plugins/textreport/indivcomplete.py:693 +#: ../gramps/plugins/textreport/indivcomplete.py:506 +#: ../gramps/plugins/textreport/indivcomplete.py:704 #: ../gramps/plugins/textreport/notelinkreport.py:95 #: ../gramps/plugins/webreport/narrativeweb.py:1355 msgid "Status" @@ -12463,8 +12480,8 @@ msgstr "%(groupname)s - %(groupnumber)d" #: ../gramps/gui/editors/displaytabs/familyldsembedlist.py:54 #: ../gramps/gui/editors/displaytabs/ldsembedlist.py:64 -#: ../gramps/plugins/textreport/indivcomplete.py:496 -#: ../gramps/plugins/textreport/indivcomplete.py:694 +#: ../gramps/plugins/textreport/indivcomplete.py:507 +#: ../gramps/plugins/textreport/indivcomplete.py:705 #: ../gramps/plugins/webreport/narrativeweb.py:1353 msgid "Temple" msgstr "Tempel" @@ -12489,7 +12506,7 @@ msgstr "_Medium aktivieren" #: ../gramps/gui/editors/displaytabs/gallerytab.py:257 #: ../gramps/gui/editors/editperson.py:960 -#: ../gramps/plugins/textreport/indivcomplete.py:588 +#: ../gramps/plugins/textreport/indivcomplete.py:599 msgid "Non existing media found in the Gallery" msgstr "Nicht existierendes Medium in der Galerie gefunden" @@ -13412,8 +13429,8 @@ msgstr "%(mother)s [%(gramps_id)s]" #: ../gramps/gui/editors/editldsord.py:314 #: ../gramps/gui/editors/editldsord.py:442 -#: ../gramps/plugins/textreport/indivcomplete.py:486 -#: ../gramps/plugins/textreport/indivcomplete.py:690 +#: ../gramps/plugins/textreport/indivcomplete.py:497 +#: ../gramps/plugins/textreport/indivcomplete.py:701 #: ../gramps/plugins/webreport/narrativeweb.py:820 msgid "LDS Ordinance" msgstr "LDS Ordination" @@ -13597,7 +13614,7 @@ msgstr "Neue Notiz - %(context)s" msgid "New Note" msgstr "Neue Notiz" -#: ../gramps/gui/editors/editnote.py:189 +#: ../gramps/gui/editors/editnote.py:189 ../gramps/gui/viewmanager.py:618 msgid "_Note" msgstr "_Notiz" @@ -14034,7 +14051,7 @@ msgstr "Markierungenauswahl" #: ../gramps/gui/glade/rule.glade:351 ../gramps/gui/glade/rule.glade:781 #: ../gramps/gui/logger/_errorview.py:170 #: ../gramps/gui/plug/report/_reportdialog.py:158 -#: ../gramps/gui/undohistory.py:82 ../gramps/gui/viewmanager.py:493 +#: ../gramps/gui/undohistory.py:82 ../gramps/gui/viewmanager.py:516 #: ../gramps/gui/views/bookmarks.py:288 ../gramps/gui/views/tags.py:431 #: ../gramps/gui/views/tags.py:644 ../gramps/gui/widgets/grampletbar.py:641 #: ../gramps/gui/widgets/grampletpane.py:242 @@ -14149,19 +14166,18 @@ msgstr "Auch Familienereignisse bei denen die Person Partner(in) ist" msgid "Only include primary participants" msgstr "Nur Hauptbeteiligte aufnehmen" -#: ../gramps/gui/editors/filtereditor.py:584 -msgid "Units:" -msgstr "Einheiten:" - #: ../gramps/gui/editors/filtereditor.py:586 +#: ../gramps/gui/widgets/placewithin.py:73 msgid "degrees" msgstr "Grad" #: ../gramps/gui/editors/filtereditor.py:586 +#: ../gramps/gui/widgets/placewithin.py:73 msgid "kilometers" msgstr "Kilometer" #: ../gramps/gui/editors/filtereditor.py:586 +#: ../gramps/gui/widgets/placewithin.py:73 msgid "miles" msgstr "Meilen" @@ -14546,6 +14562,8 @@ msgid "Configure currently selected item" msgstr "Den gewählten Artikel konfigurieren" #: ../gramps/gui/glade/book.glade:523 ../gramps/gui/glade/dbman.glade:265 +#: ../gramps/gui/views/listview.py:212 +#: ../gramps/plugins/lib/libpersonview.py:391 msgid "_Delete" msgstr "_Löschen" @@ -14610,6 +14628,7 @@ msgid "_Load Family Tree" msgstr "Stammbaum _laden" #: ../gramps/gui/glade/dbman.glade:234 ../gramps/gui/glade/editlink.glade:208 +#: ../gramps/gui/viewmanager.py:601 msgid "_New" msgstr "_Neu" @@ -15762,6 +15781,8 @@ msgstr "" msgid "" "Either use the two fields below to enter coordinates(latitude and longitude)," msgstr "" +"Verwende entweder die beiden Felder unten um die Koordinaten (Längen- und " +"Breitengrad) einzugeben," #: ../gramps/gui/glade/editplace.glade:119 msgid "L_atitude:" @@ -15815,12 +15836,16 @@ msgid "" "or use copy/paste from your favorite map provider (format : latitude," "longitude) in the following field:" msgstr "" +"oder verwende copy/paste von deinem bevorzugten Kartenanbieter (Format: " +"Breitengrad, Längengrad) im folgenden Feld:" #: ../gramps/gui/glade/editplace.glade:237 #: ../gramps/gui/glade/editplaceref.glade:375 msgid "" "Field used to paste info from a web page like google, openstreetmap, ... " msgstr "" +"Feld wird verwendet um Informationen von einer Webseite hinein zu kopieren " +"wie Google, OpenStreetmap, ..." #: ../gramps/gui/glade/editplace.glade:264 #: ../gramps/gui/glade/editplaceref.glade:495 @@ -17244,6 +17269,11 @@ msgid "" "handle. We recommend that you go to Relationships view and see if " "additional manual merging of families is necessary." msgstr "" +"Die Personen wurden zusammengefasst.\n" +"Jedoch sind die Familien für diese Zusammenführung zu komplex um sie " +"automatisch durchzuführen. Wir empfehlen das du in die Beziehungenansicht " +"gehst und schaust ob noch zusätzliche Zusammenfassungen von Familien nötig " +"sind." #: ../gramps/gui/merge/mergeplace.py:53 msgid "manual|Merge_Places" @@ -17528,11 +17558,8 @@ msgstr[0] "{number_of} Zusatzmodul wurde installiert." msgstr[1] "{number_of} Zusatzmodule wurden installiert." #: ../gramps/gui/plug/_windows.py:1221 -#, fuzzy msgid "If you have installed a 'Gramps View', you will need to restart Gramps." -msgstr "" -"Wenn aktiv verwenden wir webkit sonst mozilla\n" -"Gramps muß neu gestartet werden." +msgstr "Wenn du eine 'Grampsansicht' hast, musst du Gramps neu starten." #: ../gramps/gui/plug/_windows.py:1225 msgid "No addons were installed." @@ -18090,10 +18117,10 @@ msgstr "Stil" #: ../gramps/plugins/textreport/birthdayreport.py:409 #: ../gramps/plugins/textreport/descendreport.py:517 #: ../gramps/plugins/textreport/detancestralreport.py:818 -#: ../gramps/plugins/textreport/detdescendantreport.py:1011 +#: ../gramps/plugins/textreport/detdescendantreport.py:995 #: ../gramps/plugins/textreport/endoflinereport.py:270 #: ../gramps/plugins/textreport/familygroup.py:707 -#: ../gramps/plugins/textreport/indivcomplete.py:1042 +#: ../gramps/plugins/textreport/indivcomplete.py:1053 #: ../gramps/plugins/textreport/kinshipreport.py:356 #: ../gramps/plugins/textreport/numberofancestorsreport.py:202 #: ../gramps/plugins/textreport/placereport.py:435 @@ -18215,7 +18242,7 @@ msgstr "Fehler beim Speichern der Formatvorlage" #: ../gramps/gui/plug/report/_styleeditor.py:166 #: ../gramps/gui/plug/report/_styleeditor.py:180 #: ../gramps/plugins/textreport/detancestralreport.py:948 -#: ../gramps/plugins/textreport/detdescendantreport.py:1170 +#: ../gramps/plugins/textreport/detdescendantreport.py:1151 msgid "Missing information" msgstr "Fehlende Information" @@ -18239,7 +18266,7 @@ msgstr "Keine Beschreibung verfügbar" #: ../gramps/gui/plug/report/_styleeditor.py:344 #, python-format msgid "(Embedded style '%s' must be edited separately)" -msgstr "" +msgstr "(Eingebetteter Stil '%s' muss separat editiert werden)" #: ../gramps/gui/plug/report/_styleeditor.py:397 #, python-format @@ -18413,7 +18440,7 @@ msgid "Spelling checker initialization failed: %s" msgstr "Die Einrichtung der Rechtschreibprüfung ist fehlgeschlagen: %s" #: ../gramps/gui/tipofday.py:67 ../gramps/gui/tipofday.py:68 -#: ../gramps/gui/tipofday.py:121 ../gramps/gui/viewmanager.py:510 +#: ../gramps/gui/tipofday.py:121 ../gramps/gui/viewmanager.py:533 msgid "Tip of the Day" msgstr "Tipp des Tages" @@ -18440,13 +18467,13 @@ msgstr "11" msgid "Undo History" msgstr "Bearbeitungschronik" -#: ../gramps/gui/undohistory.py:84 ../gramps/gui/viewmanager.py:598 -#: ../gramps/gui/viewmanager.py:1243 +#: ../gramps/gui/undohistory.py:84 ../gramps/gui/viewmanager.py:642 +#: ../gramps/gui/viewmanager.py:1287 msgid "_Undo" msgstr "_Rückgängig" -#: ../gramps/gui/undohistory.py:86 ../gramps/gui/viewmanager.py:603 -#: ../gramps/gui/viewmanager.py:1260 +#: ../gramps/gui/undohistory.py:86 ../gramps/gui/viewmanager.py:647 +#: ../gramps/gui/viewmanager.py:1304 msgid "_Redo" msgstr "_Wiederherstellen" @@ -18529,189 +18556,222 @@ msgstr "" msgid "Cannot open new citation editor" msgstr "Der neue Fundstelleneditor kann nicht geöffnet werden." -#: ../gramps/gui/viewmanager.py:442 ../gramps/gui/viewmanager.py:1217 +#: ../gramps/gui/viewmanager.py:465 ../gramps/gui/viewmanager.py:1261 msgid "No Family Tree" msgstr "Kein Stammbaum" -#: ../gramps/gui/viewmanager.py:464 +#: ../gramps/gui/viewmanager.py:487 msgid "Connect to a recent database" msgstr "Mit neuer Datenbank verbinden" -#: ../gramps/gui/viewmanager.py:482 +#: ../gramps/gui/viewmanager.py:505 msgid "_Family Trees" msgstr "_Stammbäume" -#: ../gramps/gui/viewmanager.py:483 +#: ../gramps/gui/viewmanager.py:506 msgid "_Manage Family Trees..." msgstr "Stammbäume _verwalten..." -#: ../gramps/gui/viewmanager.py:484 +#: ../gramps/gui/viewmanager.py:507 msgid "Manage databases" msgstr "Datenbanken verwalten" -#: ../gramps/gui/viewmanager.py:485 +#: ../gramps/gui/viewmanager.py:508 msgid "Open _Recent" msgstr "_Zuletzt geöffnet" -#: ../gramps/gui/viewmanager.py:486 +#: ../gramps/gui/viewmanager.py:509 msgid "Open an existing database" msgstr "Eine existierende Datenbank öffnen" -#: ../gramps/gui/viewmanager.py:487 +#: ../gramps/gui/viewmanager.py:510 msgid "_Quit" msgstr "_Beenden" -#: ../gramps/gui/viewmanager.py:489 +#: ../gramps/gui/viewmanager.py:512 msgid "_View" msgstr "_Ansicht" -#: ../gramps/gui/viewmanager.py:491 +#: ../gramps/gui/viewmanager.py:514 msgid "_Preferences..." msgstr "_Einstellungen..." -#: ../gramps/gui/viewmanager.py:494 +#: ../gramps/gui/viewmanager.py:517 msgid "Gramps _Home Page" msgstr "Gramps _Homepage" -#: ../gramps/gui/viewmanager.py:496 +#: ../gramps/gui/viewmanager.py:519 msgid "Gramps _Mailing Lists" msgstr "Gramps _Mailinglisten" -#: ../gramps/gui/viewmanager.py:498 +#: ../gramps/gui/viewmanager.py:521 msgid "_Report a Bug" msgstr "_Programmfehler melden" -#: ../gramps/gui/viewmanager.py:500 +#: ../gramps/gui/viewmanager.py:523 msgid "_Extra Reports/Tools" msgstr "_Weitere Berichte/Werkzeuge" -#: ../gramps/gui/viewmanager.py:502 +#: ../gramps/gui/viewmanager.py:525 msgid "_About" msgstr "_Info" -#: ../gramps/gui/viewmanager.py:504 +#: ../gramps/gui/viewmanager.py:527 msgid "_Plugin Manager" msgstr "_Zusatzmodulverwaltung" -#: ../gramps/gui/viewmanager.py:506 +#: ../gramps/gui/viewmanager.py:529 msgid "_FAQ" msgstr "Häufig gestellte _Fragen" -#: ../gramps/gui/viewmanager.py:507 +#: ../gramps/gui/viewmanager.py:530 msgid "_Key Bindings" msgstr "Tastatur_kürzel" -#: ../gramps/gui/viewmanager.py:508 +#: ../gramps/gui/viewmanager.py:531 msgid "_User Manual" msgstr "_Benutzerhandbuch" -#: ../gramps/gui/viewmanager.py:516 +#: ../gramps/gui/viewmanager.py:539 msgid "Close the current database" msgstr "Schließe die aktuelle Datenbank" -#: ../gramps/gui/viewmanager.py:517 +#: ../gramps/gui/viewmanager.py:540 msgid "_Export..." msgstr "_Export..." -#: ../gramps/gui/viewmanager.py:519 +#: ../gramps/gui/viewmanager.py:542 msgid "Make Backup..." msgstr "Erstelle Sicherung..." -#: ../gramps/gui/viewmanager.py:520 +#: ../gramps/gui/viewmanager.py:543 msgid "Make a Gramps XML backup of the database" msgstr "Gramps XML Sicherung der Datenbank erstellen" -#: ../gramps/gui/viewmanager.py:522 +#: ../gramps/gui/viewmanager.py:545 msgid "_Abandon Changes and Quit" msgstr "Änderungen _Verwerfen und Beenden" -#: ../gramps/gui/viewmanager.py:523 ../gramps/gui/viewmanager.py:526 +#: ../gramps/gui/viewmanager.py:546 ../gramps/gui/viewmanager.py:549 msgid "_Reports" msgstr "Be_richte" -#: ../gramps/gui/viewmanager.py:524 +#: ../gramps/gui/viewmanager.py:547 msgid "Open the reports dialog" msgstr "Öffnet den Berichtsdialog" -#: ../gramps/gui/viewmanager.py:525 +#: ../gramps/gui/viewmanager.py:548 msgid "_Go" msgstr "_Gehe zu" -#: ../gramps/gui/viewmanager.py:527 +#: ../gramps/gui/viewmanager.py:550 msgid "Books..." msgstr "Bücher..." -#: ../gramps/gui/viewmanager.py:528 +#: ../gramps/gui/viewmanager.py:551 msgid "_Windows" msgstr "_Fenster" -#: ../gramps/gui/viewmanager.py:575 +#: ../gramps/gui/viewmanager.py:598 msgid "Clip_board" msgstr "Zwischena_blage" -#: ../gramps/gui/viewmanager.py:576 +#: ../gramps/gui/viewmanager.py:599 msgid "Open the Clipboard dialog" msgstr "Öffnet den Zwischenablagedialog" -#: ../gramps/gui/viewmanager.py:577 +#: ../gramps/gui/viewmanager.py:602 +msgid "_Person" +msgstr "_Person" + +#: ../gramps/gui/viewmanager.py:604 +msgid "Famil_y" +msgstr "Famil_ie" + +#: ../gramps/gui/viewmanager.py:606 +msgid "_Event" +msgstr "_Ereignis" + +#: ../gramps/gui/viewmanager.py:608 +msgid "_Place" +msgstr "_Ort" + +#: ../gramps/gui/viewmanager.py:610 +msgid "_Source" +msgstr "_Quelle" + +#: ../gramps/gui/viewmanager.py:612 +msgid "_Citation" +msgstr "_Fundstelle" + +#: ../gramps/gui/viewmanager.py:614 +msgid "Repositor_y" +msgstr "_Aufbewahrungsort" + +#: ../gramps/gui/viewmanager.py:616 +msgid "_Media" +msgstr "_Medien" + +#. -------------------------------------- +#: ../gramps/gui/viewmanager.py:621 msgid "_Import..." msgstr "_Import..." -#: ../gramps/gui/viewmanager.py:579 ../gramps/gui/viewmanager.py:582 +#: ../gramps/gui/viewmanager.py:623 ../gramps/gui/viewmanager.py:626 msgid "_Tools" msgstr "_Werkzeuge" -#: ../gramps/gui/viewmanager.py:580 +#: ../gramps/gui/viewmanager.py:624 msgid "Open the tools dialog" msgstr "Öffnet den Werkzeugdialog" -#: ../gramps/gui/viewmanager.py:581 +#: ../gramps/gui/viewmanager.py:625 msgid "_Bookmarks" msgstr "_Lesezeichen" -#: ../gramps/gui/viewmanager.py:583 +#: ../gramps/gui/viewmanager.py:627 msgid "_Configure..." msgstr "_Konfigurieren..." -#: ../gramps/gui/viewmanager.py:584 +#: ../gramps/gui/viewmanager.py:628 msgid "Configure the active view" msgstr "Die aktive Ansicht konfigurieren" -#: ../gramps/gui/viewmanager.py:589 +#: ../gramps/gui/viewmanager.py:633 msgid "_Navigator" msgstr "_Navigator" -#: ../gramps/gui/viewmanager.py:591 +#: ../gramps/gui/viewmanager.py:635 msgid "_Toolbar" msgstr "_Werkzeugleiste" -#: ../gramps/gui/viewmanager.py:593 +#: ../gramps/gui/viewmanager.py:637 msgid "F_ull Screen" msgstr "Vollbild" -#: ../gramps/gui/viewmanager.py:609 +#: ../gramps/gui/viewmanager.py:653 msgid "Undo History..." msgstr "Bearbeitungschronik..." -#: ../gramps/gui/viewmanager.py:632 +#: ../gramps/gui/viewmanager.py:676 #, python-format msgid "Key %s is not bound" msgstr "Schlüssel %s ist nicht eingebunden" #. registering plugins -#: ../gramps/gui/viewmanager.py:739 +#: ../gramps/gui/viewmanager.py:783 msgid "Registering plugins..." msgstr "Zusatzmodule registrieren..." -#: ../gramps/gui/viewmanager.py:747 +#: ../gramps/gui/viewmanager.py:791 msgid "Ready" msgstr "Bereit" -#: ../gramps/gui/viewmanager.py:792 +#: ../gramps/gui/viewmanager.py:836 msgid "Abort changes?" msgstr "Änderungen verwerfen?" -#: ../gramps/gui/viewmanager.py:793 +#: ../gramps/gui/viewmanager.py:837 msgid "" "Aborting changes will return the database to the state it was before you " "started this editing session." @@ -18719,15 +18779,15 @@ msgstr "" "Änderungen verwerfen bringt die Datenbank in den Stand vor Beginn dieser " "Bearbeitungssitzung zurück." -#: ../gramps/gui/viewmanager.py:795 +#: ../gramps/gui/viewmanager.py:839 msgid "Abort changes" msgstr "Änderungen verwerfen" -#: ../gramps/gui/viewmanager.py:806 +#: ../gramps/gui/viewmanager.py:850 msgid "Cannot abandon session's changes" msgstr "Die Sitzungsänderungen können nicht zurück genommen werden." -#: ../gramps/gui/viewmanager.py:807 +#: ../gramps/gui/viewmanager.py:851 msgid "" "Changes cannot be completely abandoned because the number of changes made in " "the session exceeded the limit." @@ -18735,31 +18795,31 @@ msgstr "" "Die Änderungen können nicht vollständig zurück genommen werden, da die " "Anzahl der Änderungen das Limit der Sitzung überschritten hat." -#: ../gramps/gui/viewmanager.py:968 +#: ../gramps/gui/viewmanager.py:1012 msgid "View failed to load. Check error output." msgstr "Ansicht konnte nicht geladen werden. Fehlerbericht kontrollieren." -#: ../gramps/gui/viewmanager.py:1120 +#: ../gramps/gui/viewmanager.py:1164 msgid "Import Statistics" msgstr "Importstatistiken" -#: ../gramps/gui/viewmanager.py:1187 +#: ../gramps/gui/viewmanager.py:1231 msgid "Read Only" msgstr "Nur lesen" -#: ../gramps/gui/viewmanager.py:1306 +#: ../gramps/gui/viewmanager.py:1350 msgid "Autobackup..." msgstr "Automatisches Backup..." -#: ../gramps/gui/viewmanager.py:1311 +#: ../gramps/gui/viewmanager.py:1355 msgid "Error saving backup data" msgstr "Fehler beim speichern der Sicherungsdaten." -#: ../gramps/gui/viewmanager.py:1521 +#: ../gramps/gui/viewmanager.py:1646 msgid "Failed Loading View" msgstr "Laden der Ansicht fehlgeschlagen" -#: ../gramps/gui/viewmanager.py:1522 +#: ../gramps/gui/viewmanager.py:1647 #, python-format msgid "" "The view %(name)s did not load and reported an error.\n" @@ -18784,11 +18844,11 @@ msgstr "" "Wenn du nicht willst, das Gramps weiter versucht diese Ansicht zu laden, " "kannst du sie in der Zusatzmodulverwaltung über das Hilfemenü verstecken." -#: ../gramps/gui/viewmanager.py:1614 +#: ../gramps/gui/viewmanager.py:1739 msgid "Failed Loading Plugin" msgstr "Laden des Zusatzmodul fehlgeschlagen" -#: ../gramps/gui/viewmanager.py:1615 +#: ../gramps/gui/viewmanager.py:1740 #, python-format msgid "" "The plugin %(name)s did not load and reported an error.\n" @@ -18814,55 +18874,55 @@ msgstr "" "laden, kannst du es in der Zusatzmodulverwaltung über das Hilfemenü " "verstecken." -#: ../gramps/gui/viewmanager.py:1694 +#: ../gramps/gui/viewmanager.py:1819 msgid "Gramps XML Backup" msgstr "Gramps XML Sicherung" -#: ../gramps/gui/viewmanager.py:1723 +#: ../gramps/gui/viewmanager.py:1848 msgid "File:" msgstr "Datei:" -#: ../gramps/gui/viewmanager.py:1755 +#: ../gramps/gui/viewmanager.py:1880 msgid "Media:" msgstr "Medium:" -#: ../gramps/gui/viewmanager.py:1762 +#: ../gramps/gui/viewmanager.py:1887 #: ../gramps/plugins/gramplet/statsgramplet.py:139 #: ../gramps/plugins/webreport/narrativeweb.py:8243 msgid "Megabyte|MB" msgstr "MB" -#: ../gramps/gui/viewmanager.py:1764 +#: ../gramps/gui/viewmanager.py:1889 msgid "Exclude" msgstr "Ausschließen" -#: ../gramps/gui/viewmanager.py:1784 +#: ../gramps/gui/viewmanager.py:1909 msgid "Backup file already exists! Overwrite?" msgstr "Sicherungsdatei existiert bereits! Überschreiben?" -#: ../gramps/gui/viewmanager.py:1785 +#: ../gramps/gui/viewmanager.py:1910 #, python-format msgid "The file '%s' exists." msgstr "Die Datei '%s' existiert." -#: ../gramps/gui/viewmanager.py:1786 +#: ../gramps/gui/viewmanager.py:1911 msgid "Proceed and overwrite" msgstr "Fortsetzen und überschreiben" -#: ../gramps/gui/viewmanager.py:1787 +#: ../gramps/gui/viewmanager.py:1912 msgid "Cancel the backup" msgstr "Sicherung abbrechen" -#: ../gramps/gui/viewmanager.py:1802 +#: ../gramps/gui/viewmanager.py:1927 msgid "Making backup..." msgstr "Erstelle Sicherung..." -#: ../gramps/gui/viewmanager.py:1815 +#: ../gramps/gui/viewmanager.py:1940 #, python-format msgid "Backup saved to '%s'" msgstr "Sicherung gespeichert in '%s'" -#: ../gramps/gui/viewmanager.py:1818 +#: ../gramps/gui/viewmanager.py:1943 msgid "Backup aborted" msgstr "Sicherung abgebrochen" @@ -19354,6 +19414,15 @@ msgstr "" msgid "Make Active Media" msgstr "zum aktiven Medium machen" +#. initial tooltip when no place already selected. +#: ../gramps/gui/widgets/placewithin.py:63 +msgid "" +"Matches places within a given distance of the active place. You have no " +"active place." +msgstr "" +"Entspricht Orten innerhalb einer bestimmten Distanz zum aktiven Ort. Du hast " +"keinen aktiven Ort." + #: ../gramps/gui/widgets/progressdialog.py:298 msgid "Progress Information" msgstr "Fortschritt Informationen" @@ -19822,7 +19891,7 @@ msgstr "Ahnendiagramm für %s" #: ../gramps/plugins/textreport/birthdayreport.py:111 #: ../gramps/plugins/textreport/descendreport.py:452 #: ../gramps/plugins/textreport/detancestralreport.py:166 -#: ../gramps/plugins/textreport/detdescendantreport.py:186 +#: ../gramps/plugins/textreport/detdescendantreport.py:183 #: ../gramps/plugins/textreport/endoflinereport.py:91 #: ../gramps/plugins/textreport/kinshipreport.py:106 #: ../gramps/plugins/textreport/numberofancestorsreport.py:84 @@ -19858,7 +19927,7 @@ msgstr "Baumoptionen" #: ../gramps/plugins/textreport/ancestorreport.py:290 #: ../gramps/plugins/textreport/descendreport.py:519 #: ../gramps/plugins/textreport/detancestralreport.py:821 -#: ../gramps/plugins/textreport/detdescendantreport.py:1014 +#: ../gramps/plugins/textreport/detdescendantreport.py:998 #: ../gramps/plugins/textreport/endoflinereport.py:272 #: ../gramps/plugins/textreport/kinshipreport.py:358 #: ../gramps/plugins/textreport/numberofancestorsreport.py:204 @@ -19885,7 +19954,7 @@ msgstr "" #: ../gramps/plugins/textreport/ancestorreport.py:294 #: ../gramps/plugins/textreport/descendreport.py:534 #: ../gramps/plugins/textreport/detancestralreport.py:830 -#: ../gramps/plugins/textreport/detdescendantreport.py:1036 +#: ../gramps/plugins/textreport/detdescendantreport.py:1021 msgid "Generations" msgstr "Generationen" @@ -20057,9 +20126,9 @@ msgstr "Ob leere Seiten enthalten sind." #: ../gramps/plugins/textreport/birthdayreport.py:438 #: ../gramps/plugins/textreport/descendreport.py:554 #: ../gramps/plugins/textreport/detancestralreport.py:846 -#: ../gramps/plugins/textreport/detdescendantreport.py:1052 +#: ../gramps/plugins/textreport/detdescendantreport.py:1037 #: ../gramps/plugins/textreport/familygroup.py:729 -#: ../gramps/plugins/textreport/indivcomplete.py:1066 +#: ../gramps/plugins/textreport/indivcomplete.py:1077 #: ../gramps/plugins/textreport/kinshipreport.py:382 #: ../gramps/plugins/textreport/placereport.py:458 #: ../gramps/plugins/textreport/recordsreport.py:243 @@ -20242,10 +20311,10 @@ msgstr "Leere Boxen für unbekannte Vorfahren erzeugen." #: ../gramps/plugins/textreport/alphabeticalindex.py:120 #: ../gramps/plugins/textreport/ancestorreport.py:386 #: ../gramps/plugins/textreport/detancestralreport.py:1016 -#: ../gramps/plugins/textreport/detdescendantreport.py:1240 +#: ../gramps/plugins/textreport/detdescendantreport.py:1221 #: ../gramps/plugins/textreport/endoflinereport.py:317 #: ../gramps/plugins/textreport/familygroup.py:873 -#: ../gramps/plugins/textreport/indivcomplete.py:1218 +#: ../gramps/plugins/textreport/indivcomplete.py:1229 #: ../gramps/plugins/textreport/kinshipreport.py:424 #: ../gramps/plugins/textreport/notelinkreport.py:206 #: ../gramps/plugins/textreport/numberofancestorsreport.py:233 @@ -20272,10 +20341,10 @@ msgstr "Der Basisstil, der für die Notizenanzeige verwendet wird." #: ../gramps/plugins/textreport/ancestorreport.py:363 #: ../gramps/plugins/textreport/descendreport.py:579 #: ../gramps/plugins/textreport/detancestralreport.py:968 -#: ../gramps/plugins/textreport/detdescendantreport.py:1192 +#: ../gramps/plugins/textreport/detdescendantreport.py:1173 #: ../gramps/plugins/textreport/endoflinereport.py:299 #: ../gramps/plugins/textreport/familygroup.py:864 -#: ../gramps/plugins/textreport/indivcomplete.py:1186 +#: ../gramps/plugins/textreport/indivcomplete.py:1197 #: ../gramps/plugins/textreport/kinshipreport.py:406 #: ../gramps/plugins/textreport/notelinkreport.py:186 #: ../gramps/plugins/textreport/numberofancestorsreport.py:226 @@ -20368,7 +20437,7 @@ msgstr "" #: ../gramps/plugins/textreport/ancestorreport.py:291 #: ../gramps/plugins/textreport/descendreport.py:520 #: ../gramps/plugins/textreport/detancestralreport.py:822 -#: ../gramps/plugins/textreport/detdescendantreport.py:1015 +#: ../gramps/plugins/textreport/detdescendantreport.py:999 #: ../gramps/plugins/textreport/endoflinereport.py:273 #: ../gramps/plugins/textreport/kinshipreport.py:359 #: ../gramps/plugins/textreport/numberofancestorsreport.py:205 @@ -20419,7 +20488,7 @@ msgstr "Kalender nur mit lebenden Personen" #: ../gramps/plugins/drawreport/calendarreport.py:512 #: ../gramps/plugins/textreport/birthdayreport.py:453 #: ../gramps/plugins/textreport/detancestralreport.py:861 -#: ../gramps/plugins/textreport/detdescendantreport.py:1067 +#: ../gramps/plugins/textreport/detdescendantreport.py:1052 #: ../gramps/plugins/view/relview.py:1726 msgid "Content" msgstr "Inhalt" @@ -20821,7 +20890,7 @@ msgstr "" #: ../gramps/plugins/textreport/ancestorreport.py:296 #: ../gramps/plugins/textreport/descendreport.py:535 #: ../gramps/plugins/textreport/detancestralreport.py:831 -#: ../gramps/plugins/textreport/detdescendantreport.py:1037 +#: ../gramps/plugins/textreport/detdescendantreport.py:1022 msgid "The number of generations to include in the report" msgstr "Anzahl der im Bericht enthaltenen Generationen" @@ -21081,7 +21150,7 @@ msgstr "Legt fest, welche Personen im Bericht enthalten sind." #: ../gramps/plugins/drawreport/statisticschart.py:996 #: ../gramps/plugins/drawreport/timeline.py:421 #: ../gramps/plugins/textreport/birthdayreport.py:417 -#: ../gramps/plugins/textreport/indivcomplete.py:1051 +#: ../gramps/plugins/textreport/indivcomplete.py:1062 #: ../gramps/plugins/textreport/recordsreport.py:223 #: ../gramps/plugins/tool/sortevents.py:172 #: ../gramps/plugins/webreport/narrativeweb.py:9780 @@ -21091,7 +21160,7 @@ msgstr "Personenfilter" #: ../gramps/plugins/drawreport/statisticschart.py:997 #: ../gramps/plugins/textreport/birthdayreport.py:418 -#: ../gramps/plugins/textreport/indivcomplete.py:1052 +#: ../gramps/plugins/textreport/indivcomplete.py:1063 msgid "The center person for the filter." msgstr "Die Hauptperson für den Filter." @@ -21236,7 +21305,7 @@ msgid "Sorting method to use" msgstr "Zu verwendendes Sortierverfahren" #: ../gramps/plugins/drawreport/timeline.py:488 -#: ../gramps/plugins/textreport/indivcomplete.py:1198 +#: ../gramps/plugins/textreport/indivcomplete.py:1209 #: ../gramps/plugins/textreport/notelinkreport.py:196 #: ../gramps/plugins/textreport/placereport.py:527 #: ../gramps/plugins/textreport/recordsreport.py:327 @@ -21390,7 +21459,7 @@ msgstr "Heiraten aufnehmen" #: ../gramps/plugins/export/exportcsv.py:138 #: ../gramps/plugins/textreport/detancestralreport.py:890 -#: ../gramps/plugins/textreport/detdescendantreport.py:1096 +#: ../gramps/plugins/textreport/detdescendantreport.py:1077 msgid "Include children" msgstr "Kinder aufnehmen" @@ -22859,7 +22928,7 @@ msgstr " enthält 1 von 1 Personen (%(percent)s komplett)\n" #: ../gramps/plugins/gramplet/pedigreegramplet.py:267 #: ../gramps/plugins/textreport/ancestorreport.py:218 #: ../gramps/plugins/textreport/detancestralreport.py:224 -#: ../gramps/plugins/textreport/detdescendantreport.py:354 +#: ../gramps/plugins/textreport/detdescendantreport.py:351 #: ../gramps/plugins/textreport/endoflinereport.py:186 #, python-format msgid "Generation %d" @@ -23679,13 +23748,13 @@ msgstr "Die Farbe, die für die Anzeige von Familien verwendet wird." #: ../gramps/plugins/graph/gvfamilylines.py:398 #: ../gramps/plugins/textreport/familygroup.py:677 -#: ../gramps/plugins/textreport/indivcomplete.py:813 +#: ../gramps/plugins/textreport/indivcomplete.py:824 msgid "Empty report" msgstr "Leerer Bericht" #: ../gramps/plugins/graph/gvfamilylines.py:399 #: ../gramps/plugins/textreport/familygroup.py:678 -#: ../gramps/plugins/textreport/indivcomplete.py:814 +#: ../gramps/plugins/textreport/indivcomplete.py:825 msgid "You did not specify anybody" msgstr "Du hast niemanden angegeben" @@ -23741,24 +23810,20 @@ msgid "child: %s" msgstr "Kind: %s" #: ../gramps/plugins/graph/gvhourglass.py:61 -#, fuzzy msgid "Center -> Others" -msgstr "Hier zentrieren" +msgstr "Zentrum -> Andere" #: ../gramps/plugins/graph/gvhourglass.py:62 -#, fuzzy msgid "Center <- Others" -msgstr "Hier zentrieren" +msgstr "Zentrum <- Andere" #: ../gramps/plugins/graph/gvhourglass.py:63 -#, fuzzy msgid "Center <-> Other" -msgstr "Hier zentrieren" +msgstr "Zentrum <-> Andere" #: ../gramps/plugins/graph/gvhourglass.py:64 -#, fuzzy msgid "Center - Other" -msgstr "Hier zentrieren" +msgstr "Zentrum - Andere" #: ../gramps/plugins/graph/gvhourglass.py:316 msgid "The Center person for the graph" @@ -23798,7 +23863,7 @@ msgid "Graph Style" msgstr "Diagrammstil" #: ../gramps/plugins/graph/gvrelgraph.py:203 -#: ../gramps/plugins/textreport/indivcomplete.py:818 +#: ../gramps/plugins/textreport/indivcomplete.py:829 #: ../gramps/plugins/textreport/notelinkreport.py:103 #: ../gramps/plugins/textreport/placereport.py:158 msgid "Generating report" @@ -23868,7 +23933,7 @@ msgstr "" #: ../gramps/plugins/graph/gvrelgraph.py:836 #: ../gramps/plugins/textreport/birthdayreport.py:494 -#: ../gramps/plugins/textreport/indivcomplete.py:1126 +#: ../gramps/plugins/textreport/indivcomplete.py:1137 msgid "Include relationship to center person" msgstr "Mit Beziehungen zur Hauptperson" @@ -23997,19 +24062,23 @@ msgstr "Daten aus vKarte-Dateien importieren" msgid "%s could not be opened\n" msgstr "%s konnte nicht geöffnet werden\n" +#. # a "GEDCOM import report" happens in GedcomParser so this is not needed: +#. # (but the imports_test.py unittest currently requires it, so here it is) +#. # a "VCARD import report" happens in VCardParser so this is not needed: +#. # (but the imports_test.py unittest currently requires it, so here it is) #: ../gramps/plugins/importer/importcsv.py:125 -#: ../gramps/plugins/importer/importgedcom.py:152 +#: ../gramps/plugins/importer/importgedcom.py:154 #: ../gramps/plugins/importer/importgeneweb.py:161 #: ../gramps/plugins/importer/importprogen.py:92 -#: ../gramps/plugins/importer/importvcard.py:74 +#: ../gramps/plugins/importer/importvcard.py:76 msgid "Results" msgstr "Ergebnisse" #: ../gramps/plugins/importer/importcsv.py:125 -#: ../gramps/plugins/importer/importgedcom.py:152 +#: ../gramps/plugins/importer/importgedcom.py:154 #: ../gramps/plugins/importer/importgeneweb.py:161 #: ../gramps/plugins/importer/importprogen.py:92 -#: ../gramps/plugins/importer/importvcard.py:74 +#: ../gramps/plugins/importer/importvcard.py:76 msgid "done" msgstr "fertig" @@ -24191,7 +24260,7 @@ msgstr "CSV Import" #. translators: leave all/any {...} untranslated #: ../gramps/plugins/importer/importcsv.py:354 #: ../gramps/plugins/importer/importgeneweb.py:273 -#: ../gramps/plugins/importer/importvcard.py:247 +#: ../gramps/plugins/importer/importvcard.py:249 #, python-brace-format msgid "Import Complete: {number_of} second" msgid_plural "Import Complete: {number_of} seconds" @@ -24310,7 +24379,7 @@ msgstr "Krankheit" #: ../gramps/plugins/importer/importgeneweb.py:108 msgid "List Passenger" -msgstr "" +msgstr "Liste Passagier" #: ../gramps/plugins/importer/importgeneweb.py:109 msgid "Military Distinction" @@ -24464,7 +24533,7 @@ msgstr "Kann DEF Datei nicht finden: %(dname)s" #. Raise a error message #: ../gramps/plugins/importer/importprogen.py:515 msgid "Not a supported Pro-Gen import file language" -msgstr "" +msgstr "Keine unterstützte Pro-Gen Import Datei Sprache" #. self.reset(_("Import from Pro-Gen")) # non-functional for now #: ../gramps/plugins/importer/importprogen.py:526 @@ -24492,63 +24561,66 @@ msgstr "Kann den Vater für I%(person)s (Father=%(id)d) nicht finden" msgid "Cannot find mother for I%(person)s (Mother=%(mother)d)" msgstr "Kann die Mutter für I%(person)s (Mother=%(mother)d) nicht finden" -#: ../gramps/plugins/importer/importvcard.py:226 +#: ../gramps/plugins/importer/importvcard.py:228 #, python-format msgid "Line %(line)5d: %(prob)s\n" msgstr "Linie %(line)5d: %(prob)s\n" -#: ../gramps/plugins/importer/importvcard.py:241 +#: ../gramps/plugins/importer/importvcard.py:243 msgid "vCard import" msgstr "vKarte importieren" -#: ../gramps/plugins/importer/importvcard.py:252 +#: ../gramps/plugins/importer/importvcard.py:254 msgid "VCARD import report: No errors detected" msgstr "VCARD Importbericht: keine Fehler gefunden" -#: ../gramps/plugins/importer/importvcard.py:254 +#: ../gramps/plugins/importer/importvcard.py:256 #, python-format msgid "VCARD import report: %s errors detected\n" msgstr "VCARD Importbericht: %s Fehler gefunden\n" -#: ../gramps/plugins/importer/importvcard.py:319 +#: ../gramps/plugins/importer/importvcard.py:321 #, python-format msgid "Token >%(token)s< unknown. line skipped: %(line)s" msgstr "Token >%(token)s< unbekannte Zeile übersprungen: %(line)s" -#: ../gramps/plugins/importer/importvcard.py:333 +#: ../gramps/plugins/importer/importvcard.py:335 msgid "" "BEGIN property not properly closed by END property, Gramps can't cope with " "nested VCards." msgstr "" -#: ../gramps/plugins/importer/importvcard.py:344 +#: ../gramps/plugins/importer/importvcard.py:346 #, python-format msgid "Import of VCards version %s is not supported by Gramps." msgstr "Der Import von VCards Version %s wird von Gramps nicht unterstützt." -#: ../gramps/plugins/importer/importvcard.py:364 +#: ../gramps/plugins/importer/importvcard.py:366 msgid "" "VCard is malformed missing the compulsory N property, so there is no name; " "skip it." msgstr "" +"VCard ist falsch gestaltet fehlende zwingendes N Objekt, also gibt es keinen " +"Namen; also las es aus." -#: ../gramps/plugins/importer/importvcard.py:369 +#: ../gramps/plugins/importer/importvcard.py:371 msgid "" "VCard is malformed missing the compulsory FN property, get name from N alone." msgstr "" +"VCard ist falsch gestaltet fehlendes zwingendes FN Objekt, nimm Namen nur " +"von N." -#: ../gramps/plugins/importer/importvcard.py:373 +#: ../gramps/plugins/importer/importvcard.py:375 msgid "VCard is malformed wrong number of name components." -msgstr "" +msgstr "VCard ist falsch gestaltet falsche Anzahl von Namenskomponenten." -#: ../gramps/plugins/importer/importvcard.py:515 -#, fuzzy, python-brace-format +#: ../gramps/plugins/importer/importvcard.py:517 +#, python-brace-format msgid "Invalid date in BDAY {vcard_snippet}, preserving date as text." msgstr "" -"Ungültiges Datum {date} in BDAY {vcard_snippet}, Datum wird als Text " -"gespeichert." +"Ungültiges Datum in BDAY {vcard_snippet}, Datum wird als Text gespeichert." -#: ../gramps/plugins/importer/importvcard.py:523 +#: ../gramps/plugins/importer/importvcard.py:525 #, python-brace-format msgid "" "Date {vcard_snippet} not in appropriate format yyyy-mm-dd, preserving date " @@ -24966,9 +25038,8 @@ msgid "Military ID" msgstr "Militär ID" #: ../gramps/plugins/lib/libgedcom.py:616 -#, fuzzy msgid "Mission (LDS)" -msgstr "Sitzungsaufzeichnungen" +msgstr "" #: ../gramps/plugins/lib/libgedcom.py:617 msgid "Namesake" @@ -28743,8 +28814,8 @@ msgid "Edit the selected person" msgstr "Gewählte Person bearbeiten" #: ../gramps/plugins/lib/libpersonview.py:126 -msgid "Remove the selected person" -msgstr "Gewählte Person entfernen" +msgid "Delete the selected person" +msgstr "Die ausgewählte Person löschen" #: ../gramps/plugins/lib/libpersonview.py:127 msgid "Merge the selected persons" @@ -30218,13 +30289,13 @@ msgstr "Ahnentafel für %s" #: ../gramps/plugins/textreport/ancestorreport.py:301 #: ../gramps/plugins/textreport/detancestralreport.py:836 -#: ../gramps/plugins/textreport/detdescendantreport.py:1042 +#: ../gramps/plugins/textreport/detdescendantreport.py:1027 msgid "Page break between generations" msgstr "Seitenumbruch zwischen Generationen" #: ../gramps/plugins/textreport/ancestorreport.py:303 #: ../gramps/plugins/textreport/detancestralreport.py:838 -#: ../gramps/plugins/textreport/detdescendantreport.py:1044 +#: ../gramps/plugins/textreport/detdescendantreport.py:1029 msgid "Whether to start a new page after each generation." msgstr "Legt fest, ob nach jeder Generation eine neue Seite begonnen wird." @@ -30268,7 +30339,7 @@ msgstr[1] "{person}, {age}{relation}" #: ../gramps/plugins/textreport/birthdayreport.py:413 #: ../gramps/plugins/textreport/familygroup.py:713 -#: ../gramps/plugins/textreport/indivcomplete.py:1047 +#: ../gramps/plugins/textreport/indivcomplete.py:1058 msgid "Select the filter to be applied to the report." msgstr "Filter wählen, um ihn auf den Bericht anzuwenden." @@ -30302,10 +30373,9 @@ msgid "Year of report" msgstr "Jahr des Berichts" #: ../gramps/plugins/textreport/birthdayreport.py:496 -#: ../gramps/plugins/textreport/indivcomplete.py:1128 -#, fuzzy +#: ../gramps/plugins/textreport/indivcomplete.py:1139 msgid "Whether to include relationships to the center person" -msgstr "Mit Beziehungen zur Hauptperson" +msgstr "Ob die Beziehungen zur Hauptperson aufgenommen werden" #: ../gramps/plugins/textreport/birthdayreport.py:565 msgid "Title text style" @@ -30375,7 +30445,7 @@ msgid "%s sp." msgstr "%s Part." #: ../gramps/plugins/textreport/descendreport.py:523 -#: ../gramps/plugins/textreport/detdescendantreport.py:1018 +#: ../gramps/plugins/textreport/detdescendantreport.py:1003 msgid "Numbering system" msgstr "Nummerierungssystem" @@ -30384,17 +30454,17 @@ msgid "Simple numbering" msgstr "Einfache Nummerierung" #: ../gramps/plugins/textreport/descendreport.py:526 -#: ../gramps/plugins/textreport/detdescendantreport.py:1022 +#: ../gramps/plugins/textreport/detdescendantreport.py:1007 msgid "d'Aboville numbering" msgstr "d'Aboville Nummerierung" #: ../gramps/plugins/textreport/descendreport.py:527 -#: ../gramps/plugins/textreport/detdescendantreport.py:1020 +#: ../gramps/plugins/textreport/detdescendantreport.py:1005 msgid "Henry numbering" msgstr "Henry-Nummerierung" #: ../gramps/plugins/textreport/descendreport.py:528 -#: ../gramps/plugins/textreport/detdescendantreport.py:1021 +#: ../gramps/plugins/textreport/detdescendantreport.py:1006 msgid "Modified Henry numbering" msgstr "Modifizierte Henry-Nummerierung" @@ -30407,7 +30477,7 @@ msgid "Meurgey de Tupigny numbering" msgstr "Meurgey de Tupigny Nummerierung" #: ../gramps/plugins/textreport/descendreport.py:531 -#: ../gramps/plugins/textreport/detdescendantreport.py:1025 +#: ../gramps/plugins/textreport/detdescendantreport.py:1010 msgid "The numbering system to be used" msgstr "Das Nummerierungssystem, das verwendet wird" @@ -30453,23 +30523,22 @@ msgid "Ancestral Report for %s" msgstr "Ahnenbericht für %s" #: ../gramps/plugins/textreport/detancestralreport.py:275 -#: ../gramps/plugins/textreport/detdescendantreport.py:902 -#: ../gramps/plugins/textreport/detdescendantreport.py:920 -#: ../gramps/plugins/textreport/detdescendantreport.py:931 -#: ../gramps/plugins/textreport/detdescendantreport.py:957 +#: ../gramps/plugins/textreport/detdescendantreport.py:886 +#: ../gramps/plugins/textreport/detdescendantreport.py:904 +#: ../gramps/plugins/textreport/detdescendantreport.py:915 +#: ../gramps/plugins/textreport/detdescendantreport.py:941 #, python-format msgid "More about %(person_name)s:" msgstr "Mehr über %(person_name)s:" #: ../gramps/plugins/textreport/detancestralreport.py:313 -#: ../gramps/plugins/textreport/detdescendantreport.py:457 #, python-format msgid "%(name)s is the same person as [%(id_str)s]." msgstr "%(name)s ist die gleiche Person wie [%(id_str)s]." #. feature request 2356: avoid genitive form #: ../gramps/plugins/textreport/detancestralreport.py:355 -#: ../gramps/plugins/textreport/detdescendantreport.py:889 +#: ../gramps/plugins/textreport/detdescendantreport.py:873 #, python-format msgid "Notes for %s" msgstr "Notizen für %s" @@ -30478,22 +30547,22 @@ msgstr "Notizen für %s" #: ../gramps/plugins/textreport/detancestralreport.py:373 #: ../gramps/plugins/textreport/detancestralreport.py:424 #: ../gramps/plugins/textreport/detancestralreport.py:492 -#: ../gramps/plugins/textreport/detdescendantreport.py:533 -#: ../gramps/plugins/textreport/detdescendantreport.py:825 -#: ../gramps/plugins/textreport/detdescendantreport.py:910 -#: ../gramps/plugins/textreport/detdescendantreport.py:966 +#: ../gramps/plugins/textreport/detdescendantreport.py:517 +#: ../gramps/plugins/textreport/detdescendantreport.py:809 +#: ../gramps/plugins/textreport/detdescendantreport.py:894 +#: ../gramps/plugins/textreport/detdescendantreport.py:950 #, python-format msgid "%(type)s: %(value)s%(endnotes)s" msgstr "%(type)s: %(value)s%(endnotes)s" #: ../gramps/plugins/textreport/detancestralreport.py:402 -#: ../gramps/plugins/textreport/detdescendantreport.py:944 +#: ../gramps/plugins/textreport/detdescendantreport.py:928 msgid "Address: " msgstr "Adresse: " #. translators: needed for Arabic, ignore otherwise #: ../gramps/plugins/textreport/detancestralreport.py:411 -#: ../gramps/plugins/textreport/detdescendantreport.py:947 +#: ../gramps/plugins/textreport/detdescendantreport.py:931 #, python-format msgid "%s, " msgstr "%s, " @@ -30506,33 +30575,33 @@ msgstr "" #. translators: needed for Arabic, ignore otherwise #: ../gramps/plugins/textreport/detancestralreport.py:489 -#: ../gramps/plugins/textreport/detdescendantreport.py:414 -#: ../gramps/plugins/textreport/detdescendantreport.py:530 +#: ../gramps/plugins/textreport/detdescendantreport.py:411 +#: ../gramps/plugins/textreport/detdescendantreport.py:514 #: ../gramps/plugins/textreport/familygroup.py:135 msgid "; " msgstr "; " #: ../gramps/plugins/textreport/detancestralreport.py:598 -#: ../gramps/plugins/textreport/detdescendantreport.py:691 +#: ../gramps/plugins/textreport/detdescendantreport.py:675 #, python-format msgid "Children of %(mother_name)s and %(father_name)s" msgstr "Kinder von %(mother_name)s und %(father_name)s" #: ../gramps/plugins/textreport/detancestralreport.py:682 -#: ../gramps/plugins/textreport/detdescendantreport.py:798 -#: ../gramps/plugins/textreport/detdescendantreport.py:817 +#: ../gramps/plugins/textreport/detdescendantreport.py:782 +#: ../gramps/plugins/textreport/detdescendantreport.py:801 #, python-format msgid "More about %(mother_name)s and %(father_name)s:" msgstr "Mehr über %(mother_name)s und %(father_name)s:" #: ../gramps/plugins/textreport/detancestralreport.py:737 -#: ../gramps/plugins/textreport/detdescendantreport.py:626 +#: ../gramps/plugins/textreport/detdescendantreport.py:610 #, python-format msgid "Spouse: %s" msgstr "Partner(in): %s" #: ../gramps/plugins/textreport/detancestralreport.py:741 -#: ../gramps/plugins/textreport/detdescendantreport.py:630 +#: ../gramps/plugins/textreport/detdescendantreport.py:614 #, python-format msgid "Relationship with: %s" msgstr "Beziehung mit: %s" @@ -30546,91 +30615,88 @@ msgid "The Sosa-Stradonitz number of the central person." msgstr "Die Kekule-Nummer der zentralen Person." #: ../gramps/plugins/textreport/detancestralreport.py:841 -#: ../gramps/plugins/textreport/detdescendantreport.py:1047 -#: ../gramps/plugins/textreport/indivcomplete.py:1060 +#: ../gramps/plugins/textreport/detdescendantreport.py:1032 +#: ../gramps/plugins/textreport/indivcomplete.py:1071 msgid "Page break before end notes" msgstr "Seitenumbruch vor Endnotiz" #: ../gramps/plugins/textreport/detancestralreport.py:843 -#: ../gramps/plugins/textreport/detdescendantreport.py:1049 -#: ../gramps/plugins/textreport/indivcomplete.py:1062 +#: ../gramps/plugins/textreport/detdescendantreport.py:1034 +#: ../gramps/plugins/textreport/indivcomplete.py:1073 msgid "Whether to start a new page before the end notes." msgstr "Legt fest, ob vor der Endnotiz eine neue Seite begonnen wird." #: ../gramps/plugins/textreport/detancestralreport.py:863 -#: ../gramps/plugins/textreport/detdescendantreport.py:1069 +#: ../gramps/plugins/textreport/detdescendantreport.py:1054 msgid "Use complete sentences" msgstr "Benutze vollständige Sätze" #: ../gramps/plugins/textreport/detancestralreport.py:865 -#: ../gramps/plugins/textreport/detdescendantreport.py:1071 +#: ../gramps/plugins/textreport/detdescendantreport.py:1056 msgid "Whether to use complete sentences or succinct language." msgstr "Legt fest, ob vollständige Sätze oder knappe Sprache benutzt wird." #: ../gramps/plugins/textreport/detancestralreport.py:869 -#: ../gramps/plugins/textreport/detdescendantreport.py:1075 +#: ../gramps/plugins/textreport/detdescendantreport.py:1060 msgid "Use full dates instead of only the year" msgstr "Zeige vollständiges Datum, anstatt nur das Jahr zu verwenden." #: ../gramps/plugins/textreport/detancestralreport.py:871 -#: ../gramps/plugins/textreport/detdescendantreport.py:1077 +#: ../gramps/plugins/textreport/detdescendantreport.py:1062 msgid "Whether to use full dates instead of just year." msgstr "" "Legt fest, ob ein vollständiges Datum anstelle der Jahreszahl benutzt wird." #: ../gramps/plugins/textreport/detancestralreport.py:874 -#: ../gramps/plugins/textreport/detdescendantreport.py:1080 +#: ../gramps/plugins/textreport/detdescendantreport.py:1065 msgid "Compute death age" msgstr "Alter bei Tot berechnen" #: ../gramps/plugins/textreport/detancestralreport.py:875 -#: ../gramps/plugins/textreport/detdescendantreport.py:1081 +#: ../gramps/plugins/textreport/detdescendantreport.py:1066 msgid "Whether to compute a person's age at death." msgstr "Legt fest, ob das Alter einer Person beim Tod berechnet wird." #: ../gramps/plugins/textreport/detancestralreport.py:878 -#: ../gramps/plugins/textreport/detdescendantreport.py:1084 msgid "Omit duplicate ancestors" msgstr "Doppelte Vorfahren weglassen" #: ../gramps/plugins/textreport/detancestralreport.py:879 -#: ../gramps/plugins/textreport/detdescendantreport.py:1085 msgid "Whether to omit duplicate ancestors." msgstr "Legt fest, ob doppelte Vorfahren weglassen werden." #: ../gramps/plugins/textreport/detancestralreport.py:882 -#: ../gramps/plugins/textreport/detdescendantreport.py:1088 +#: ../gramps/plugins/textreport/detdescendantreport.py:1069 msgid "Use callname for common name" msgstr "Benutze Rufnamen für Namen" #: ../gramps/plugins/textreport/detancestralreport.py:883 -#: ../gramps/plugins/textreport/detdescendantreport.py:1089 +#: ../gramps/plugins/textreport/detdescendantreport.py:1070 msgid "Whether to use the call name as the first name." msgstr "Legt fest, ob der Rufname als Vorname benutzt wird." #: ../gramps/plugins/textreport/detancestralreport.py:891 -#: ../gramps/plugins/textreport/detdescendantreport.py:1097 +#: ../gramps/plugins/textreport/detdescendantreport.py:1078 msgid "Whether to list children." msgstr "Legt fest, ob Kinder aufgelistet werden." #: ../gramps/plugins/textreport/detancestralreport.py:894 -#: ../gramps/plugins/textreport/detdescendantreport.py:1100 +#: ../gramps/plugins/textreport/detdescendantreport.py:1081 msgid "Include spouses of children" msgstr "Partner(inen) der Kinder aufnehmen" #: ../gramps/plugins/textreport/detancestralreport.py:896 -#: ../gramps/plugins/textreport/detdescendantreport.py:1102 -#, fuzzy +#: ../gramps/plugins/textreport/detdescendantreport.py:1083 msgid "Whether to list the spouses of the children." -msgstr "Legt fest, ob Partner im Baum eingerückt werden." +msgstr "Ob die Partner(inen) der Kinder aufgelistet werden." #: ../gramps/plugins/textreport/detancestralreport.py:899 -#: ../gramps/plugins/textreport/detdescendantreport.py:1114 +#: ../gramps/plugins/textreport/detdescendantreport.py:1095 msgid "Include events" msgstr "Ereignisse aufnehmen" #: ../gramps/plugins/textreport/detancestralreport.py:900 -#: ../gramps/plugins/textreport/detdescendantreport.py:1115 +#: ../gramps/plugins/textreport/detdescendantreport.py:1096 msgid "Whether to include events." msgstr "Legt fest, ob Ereignisse aufgenommen werden." @@ -30644,68 +30710,67 @@ msgstr "" "Ob andere Ereignisse an denen Personen beteiligt sind aufgenommen werden." #: ../gramps/plugins/textreport/detancestralreport.py:909 -#: ../gramps/plugins/textreport/detdescendantreport.py:1119 +#: ../gramps/plugins/textreport/detdescendantreport.py:1100 msgid "Include descendant reference in child list" msgstr "Verweis auf Nachfahren in die Liste der Kinder aufnehmen" #: ../gramps/plugins/textreport/detancestralreport.py:911 -#: ../gramps/plugins/textreport/detdescendantreport.py:1121 +#: ../gramps/plugins/textreport/detdescendantreport.py:1102 msgid "Whether to add descendant references in child list." msgstr "" "Legt fest, ob Verweise auf Nachfahren in die Liste der Kinder aufgenommen " "wird." #: ../gramps/plugins/textreport/detancestralreport.py:915 -#: ../gramps/plugins/textreport/detdescendantreport.py:1125 -#: ../gramps/plugins/textreport/indivcomplete.py:1103 +#: ../gramps/plugins/textreport/detdescendantreport.py:1106 +#: ../gramps/plugins/textreport/indivcomplete.py:1114 msgid "Include Photo/Images from Gallery" msgstr "Fotos/Bilder aus der Galerie aufnehmen" #: ../gramps/plugins/textreport/detancestralreport.py:916 -#: ../gramps/plugins/textreport/detdescendantreport.py:1126 -#: ../gramps/plugins/textreport/indivcomplete.py:1104 +#: ../gramps/plugins/textreport/detdescendantreport.py:1107 +#: ../gramps/plugins/textreport/indivcomplete.py:1115 msgid "Whether to include images." msgstr "Legt fest, ob Bilder aufgenommen werden." #. ######################### #. ############################### #: ../gramps/plugins/textreport/detancestralreport.py:919 -#: ../gramps/plugins/textreport/detdescendantreport.py:1129 +#: ../gramps/plugins/textreport/detdescendantreport.py:1110 #: ../gramps/plugins/textreport/familygroup.py:777 -#: ../gramps/plugins/textreport/indivcomplete.py:1108 -#, fuzzy +#: ../gramps/plugins/textreport/indivcomplete.py:1119 msgid "Include (2)" -msgstr "Einbeziehen 2" +msgstr "Einbeziehen (2)" #: ../gramps/plugins/textreport/detancestralreport.py:921 -#: ../gramps/plugins/textreport/detdescendantreport.py:1131 +#: ../gramps/plugins/textreport/detdescendantreport.py:1112 msgid "Include notes" msgstr "Notizen aufnehmen" #: ../gramps/plugins/textreport/detancestralreport.py:922 -#: ../gramps/plugins/textreport/detdescendantreport.py:1132 +#: ../gramps/plugins/textreport/detdescendantreport.py:1113 msgid "Whether to include notes." msgstr "Legt fest, ob Notizen aufgenommen werden." #: ../gramps/plugins/textreport/detancestralreport.py:925 -#: ../gramps/plugins/textreport/detdescendantreport.py:1135 +#: ../gramps/plugins/textreport/detdescendantreport.py:1116 msgid "Include sources" msgstr "Quellen einbeziehen" #: ../gramps/plugins/textreport/detancestralreport.py:926 -#: ../gramps/plugins/textreport/detdescendantreport.py:1136 +#: ../gramps/plugins/textreport/detdescendantreport.py:1117 msgid "Whether to include source references." msgstr "Legt fest, ob Quellenangaben einbezogen werden." #: ../gramps/plugins/textreport/detancestralreport.py:929 -#: ../gramps/plugins/textreport/detdescendantreport.py:1139 -#: ../gramps/plugins/textreport/indivcomplete.py:1095 +#: ../gramps/plugins/textreport/detdescendantreport.py:1120 +#: ../gramps/plugins/textreport/indivcomplete.py:1106 msgid "Include sources notes" msgstr "Quellennotizen einbeziehen" #: ../gramps/plugins/textreport/detancestralreport.py:931 -#: ../gramps/plugins/textreport/detdescendantreport.py:1141 -#: ../gramps/plugins/textreport/indivcomplete.py:1097 +#: ../gramps/plugins/textreport/detdescendantreport.py:1122 +#: ../gramps/plugins/textreport/indivcomplete.py:1108 msgid "" "Whether to include source notes in the Endnotes section. Only works if " "Include sources is selected." @@ -30714,82 +30779,81 @@ msgstr "" "Funktioniert nur, wenn 'Quellen aufnehmen' gewählt ist." #: ../gramps/plugins/textreport/detancestralreport.py:935 -#: ../gramps/plugins/textreport/detdescendantreport.py:1145 +#: ../gramps/plugins/textreport/detdescendantreport.py:1126 msgid "Include attributes" msgstr "Attribute aufnehmen" #: ../gramps/plugins/textreport/detancestralreport.py:936 -#: ../gramps/plugins/textreport/detdescendantreport.py:1146 +#: ../gramps/plugins/textreport/detdescendantreport.py:1127 #: ../gramps/plugins/textreport/familygroup.py:768 -#: ../gramps/plugins/textreport/indivcomplete.py:1118 +#: ../gramps/plugins/textreport/indivcomplete.py:1129 msgid "Whether to include attributes." msgstr "Legt fest, ob Attribute aufgenommen werden." #: ../gramps/plugins/textreport/detancestralreport.py:939 -#: ../gramps/plugins/textreport/detdescendantreport.py:1149 +#: ../gramps/plugins/textreport/detdescendantreport.py:1130 msgid "Include addresses" msgstr "Adressen einbeziehen" #: ../gramps/plugins/textreport/detancestralreport.py:940 -#: ../gramps/plugins/textreport/detdescendantreport.py:1150 +#: ../gramps/plugins/textreport/detdescendantreport.py:1131 msgid "Whether to include addresses." msgstr "Legt fest, ob Adressen aufgenommen werden." #: ../gramps/plugins/textreport/detancestralreport.py:943 -#: ../gramps/plugins/textreport/detdescendantreport.py:1153 +#: ../gramps/plugins/textreport/detdescendantreport.py:1134 msgid "Include alternative names" msgstr "Alternative Namen mit einbeziehen" #: ../gramps/plugins/textreport/detancestralreport.py:944 -#: ../gramps/plugins/textreport/detdescendantreport.py:1154 +#: ../gramps/plugins/textreport/detdescendantreport.py:1135 msgid "Whether to include other names." msgstr "Legt fest, ob andere Namen aufgenommen werden." #: ../gramps/plugins/textreport/detancestralreport.py:950 -#: ../gramps/plugins/textreport/detdescendantreport.py:1173 +#: ../gramps/plugins/textreport/detdescendantreport.py:1154 msgid "Replace missing places with ______" msgstr "Ersetze fehlende Orte durch ______" #: ../gramps/plugins/textreport/detancestralreport.py:951 -#: ../gramps/plugins/textreport/detdescendantreport.py:1175 +#: ../gramps/plugins/textreport/detdescendantreport.py:1156 msgid "Whether to replace missing Places with blanks." msgstr "Legt fest, ob fehlende Orte durch Lücken ersetzt werden." #: ../gramps/plugins/textreport/detancestralreport.py:954 -#: ../gramps/plugins/textreport/detdescendantreport.py:1178 +#: ../gramps/plugins/textreport/detdescendantreport.py:1159 msgid "Replace missing dates with ______" msgstr "Ersetze fehlende Daten durch ______" #: ../gramps/plugins/textreport/detancestralreport.py:955 -#: ../gramps/plugins/textreport/detdescendantreport.py:1179 +#: ../gramps/plugins/textreport/detdescendantreport.py:1160 msgid "Whether to replace missing Dates with blanks." msgstr "Legt fest, ob fehlende Daten durch Lücken ersetzt werden." #: ../gramps/plugins/textreport/detancestralreport.py:988 -#: ../gramps/plugins/textreport/detdescendantreport.py:1212 +#: ../gramps/plugins/textreport/detdescendantreport.py:1193 msgid "The style used for the children list title." msgstr "Der Stil, der für den Titel der Kinderliste verwendet wird." #: ../gramps/plugins/textreport/detancestralreport.py:999 -#: ../gramps/plugins/textreport/detdescendantreport.py:1223 +#: ../gramps/plugins/textreport/detdescendantreport.py:1204 #: ../gramps/plugins/textreport/familygroup.py:895 msgid "The style used for the text related to the children." msgstr "Der Stil, der für den Text zu den Kindern verwendet wird." #: ../gramps/plugins/textreport/detancestralreport.py:1009 -#: ../gramps/plugins/textreport/detdescendantreport.py:1233 -#, fuzzy +#: ../gramps/plugins/textreport/detdescendantreport.py:1214 msgid "The style used for the note header." -msgstr "Der Stil, der für die Generation Überschriften verwendet wird." +msgstr "Der Stil, der für die Notiz Überschrift verwendet wird." #: ../gramps/plugins/textreport/detancestralreport.py:1023 -#: ../gramps/plugins/textreport/detdescendantreport.py:1247 +#: ../gramps/plugins/textreport/detdescendantreport.py:1228 #: ../gramps/plugins/textreport/tableofcontents.py:117 msgid "The style used for first level headings." msgstr "Der Stil für Ebene eins Überschriften." #: ../gramps/plugins/textreport/detancestralreport.py:1033 -#: ../gramps/plugins/textreport/detdescendantreport.py:1257 +#: ../gramps/plugins/textreport/detdescendantreport.py:1238 #: ../gramps/plugins/textreport/kinshipreport.py:416 #: ../gramps/plugins/textreport/summary.py:319 #: ../gramps/plugins/textreport/tableofcontents.py:123 @@ -30797,71 +30861,71 @@ msgid "The style used for second level headings." msgstr "Der Stil für Ebene zwei Überschriften." #: ../gramps/plugins/textreport/detancestralreport.py:1043 -#: ../gramps/plugins/textreport/detdescendantreport.py:1267 +#: ../gramps/plugins/textreport/detdescendantreport.py:1248 #: ../gramps/plugins/textreport/endoflinereport.py:335 #: ../gramps/plugins/textreport/placereport.py:539 msgid "The style used for details." msgstr "Der Stil, der für die Details verwendet wird." #. feature request 2356: avoid genitive form -#: ../gramps/plugins/textreport/detdescendantreport.py:341 +#: ../gramps/plugins/textreport/detdescendantreport.py:338 #, python-format msgid "Descendant Report for %(person_name)s" msgstr "Nachkommenbericht für %(person_name)s" -#: ../gramps/plugins/textreport/detdescendantreport.py:648 +#: ../gramps/plugins/textreport/detdescendantreport.py:632 #, python-format msgid "Ref: %(number)s. %(name)s" msgstr "Ref: %(number)s. %(name)s" -#: ../gramps/plugins/textreport/detdescendantreport.py:775 +#: ../gramps/plugins/textreport/detdescendantreport.py:759 #, python-format msgid "Notes for %(mother_name)s and %(father_name)s:" msgstr "Notizen für %(mother_name)s und %(father_name)s:" -#: ../gramps/plugins/textreport/detdescendantreport.py:1024 +#: ../gramps/plugins/textreport/detdescendantreport.py:1009 msgid "Record (Modified Register) numbering" msgstr "Datensatz (Modifizierte Register) Nummerierung" -#: ../gramps/plugins/textreport/detdescendantreport.py:1028 +#: ../gramps/plugins/textreport/detdescendantreport.py:1013 msgid "Report structure" msgstr "Berichtsstruktur" -#: ../gramps/plugins/textreport/detdescendantreport.py:1031 +#: ../gramps/plugins/textreport/detdescendantreport.py:1016 msgid "show people by generations" msgstr "zeige Personen nach Generationen" -#: ../gramps/plugins/textreport/detdescendantreport.py:1032 +#: ../gramps/plugins/textreport/detdescendantreport.py:1017 msgid "show people by lineage" msgstr "zeige Personen nach Abstammungslinie" -#: ../gramps/plugins/textreport/detdescendantreport.py:1033 +#: ../gramps/plugins/textreport/detdescendantreport.py:1018 msgid "How people are organized in the report" msgstr "Wie Personen im Bericht geordnet sind" -#: ../gramps/plugins/textreport/detdescendantreport.py:1105 +#: ../gramps/plugins/textreport/detdescendantreport.py:1086 #: ../gramps/plugins/textreport/kinshipreport.py:370 msgid "Include spouses" msgstr "Partner einbeziehen" -#: ../gramps/plugins/textreport/detdescendantreport.py:1107 +#: ../gramps/plugins/textreport/detdescendantreport.py:1088 msgid "Whether to include detailed spouse information." msgstr "" "Legt fest, ob detaillierte Informationen über den Partner enthalten sind." -#: ../gramps/plugins/textreport/detdescendantreport.py:1110 +#: ../gramps/plugins/textreport/detdescendantreport.py:1091 msgid "Include spouse reference" msgstr "Partner Referenzen einbeziehen" -#: ../gramps/plugins/textreport/detdescendantreport.py:1111 +#: ../gramps/plugins/textreport/detdescendantreport.py:1092 msgid "Whether to include reference to spouse." msgstr "Legt fest, ob Referenzen zum Partner einbezogen werden." -#: ../gramps/plugins/textreport/detdescendantreport.py:1158 +#: ../gramps/plugins/textreport/detdescendantreport.py:1139 msgid "Include sign of succession ('+') in child-list" msgstr "Mit Nachkommenzeichen ('+') in Kinderliste" -#: ../gramps/plugins/textreport/detdescendantreport.py:1159 +#: ../gramps/plugins/textreport/detdescendantreport.py:1140 msgid "" "Whether to include a sign ('+') before the descendant number in the child-" "list to indicate a child has succession." @@ -30869,11 +30933,11 @@ msgstr "" "Legt fest, ob ein Zeichen ('+') vor der Nachkommennummer in der Kinderliste " "angezeigt wird, um anzuzeigen, dass ein Kind Nachkommen hat." -#: ../gramps/plugins/textreport/detdescendantreport.py:1164 +#: ../gramps/plugins/textreport/detdescendantreport.py:1145 msgid "Include path to start-person" msgstr "Mit Weg zur Start-Person" -#: ../gramps/plugins/textreport/detdescendantreport.py:1165 +#: ../gramps/plugins/textreport/detdescendantreport.py:1146 msgid "" "Whether to include the path of descendancy from the start-person to each " "descendant." @@ -31029,130 +31093,130 @@ msgid "The style used for the parent's name" msgstr "Der Stil, der für den Namen der Eltern verwendet wird" #. make sure it's translated, so it can be used below, in "combine" -#: ../gramps/plugins/textreport/indivcomplete.py:188 +#: ../gramps/plugins/textreport/indivcomplete.py:189 #, python-format msgid "%(str1)s in %(str2)s. " msgstr "%(str1)s in %(str2)s. " #. for example (a stepfather): John Smith, relationship: Step -#: ../gramps/plugins/textreport/indivcomplete.py:244 +#: ../gramps/plugins/textreport/indivcomplete.py:247 #, python-format msgid "%(parent-name)s, relationship: %(rel-type)s" msgstr "%(parent-name)s, Beziehung: %(rel-type)s" -#: ../gramps/plugins/textreport/indivcomplete.py:292 +#: ../gramps/plugins/textreport/indivcomplete.py:301 msgid "Alternate Parents" msgstr "Alternative Eltern" -#: ../gramps/plugins/textreport/indivcomplete.py:432 +#: ../gramps/plugins/textreport/indivcomplete.py:443 #: ../gramps/plugins/webreport/narrativeweb.py:7137 msgid "Associations" msgstr "Verknüpfungen" -#: ../gramps/plugins/textreport/indivcomplete.py:577 +#: ../gramps/plugins/textreport/indivcomplete.py:588 msgid "Images" msgstr "Bilder" -#: ../gramps/plugins/textreport/indivcomplete.py:817 -#: ../gramps/plugins/textreport/indivcomplete.py:839 +#: ../gramps/plugins/textreport/indivcomplete.py:828 +#: ../gramps/plugins/textreport/indivcomplete.py:850 #: ../gramps/plugins/textreport/textplugins.gpr.py:214 msgid "Complete Individual Report" msgstr "Alle Daten einer Person" -#: ../gramps/plugins/textreport/indivcomplete.py:919 +#: ../gramps/plugins/textreport/indivcomplete.py:930 #: ../gramps/plugins/tool/dumpgenderstats.py:72 #: ../gramps/plugins/tool/dumpgenderstats.py:96 #: ../gramps/plugins/tool/dumpgenderstats.py:99 msgid "Male" msgstr "Männlich" -#: ../gramps/plugins/textreport/indivcomplete.py:921 +#: ../gramps/plugins/textreport/indivcomplete.py:932 #: ../gramps/plugins/tool/dumpgenderstats.py:73 #: ../gramps/plugins/tool/dumpgenderstats.py:97 #: ../gramps/plugins/tool/dumpgenderstats.py:99 msgid "Female" msgstr "Weiblich" -#: ../gramps/plugins/textreport/indivcomplete.py:935 +#: ../gramps/plugins/textreport/indivcomplete.py:946 msgid "(image)" msgstr "(Bild)" -#: ../gramps/plugins/textreport/indivcomplete.py:1056 +#: ../gramps/plugins/textreport/indivcomplete.py:1067 msgid "List events chronologically" msgstr "Listet Ereignisse chronologisch" -#: ../gramps/plugins/textreport/indivcomplete.py:1057 +#: ../gramps/plugins/textreport/indivcomplete.py:1068 msgid "Whether to sort events into chronological order." msgstr "" "Legt fest, ob Ereignisse in chronologischer Reihenfolge sortiert werden." #. ############################### -#: ../gramps/plugins/textreport/indivcomplete.py:1086 +#: ../gramps/plugins/textreport/indivcomplete.py:1097 msgid "Include Notes" msgstr "Notizen aufnehmen" -#: ../gramps/plugins/textreport/indivcomplete.py:1087 +#: ../gramps/plugins/textreport/indivcomplete.py:1098 msgid "Whether to include Person and Family Notes." msgstr "Ob Personen- und Familiennotizen aufgenommen werden." -#: ../gramps/plugins/textreport/indivcomplete.py:1090 +#: ../gramps/plugins/textreport/indivcomplete.py:1101 msgid "Include Source Information" msgstr "Quellinformationen aufnehmen" -#: ../gramps/plugins/textreport/indivcomplete.py:1091 +#: ../gramps/plugins/textreport/indivcomplete.py:1102 msgid "Whether to cite sources." msgstr "Legt fest, ob Quellen zitiert werden." -#: ../gramps/plugins/textreport/indivcomplete.py:1113 +#: ../gramps/plugins/textreport/indivcomplete.py:1124 msgid "Include Tags" msgstr "Markierungen aufnehmen" -#: ../gramps/plugins/textreport/indivcomplete.py:1114 +#: ../gramps/plugins/textreport/indivcomplete.py:1125 msgid "Whether to include tags." msgstr "Ob Markierungen aufgenommen werden." -#: ../gramps/plugins/textreport/indivcomplete.py:1117 +#: ../gramps/plugins/textreport/indivcomplete.py:1128 msgid "Include Attributes" msgstr "Attribute aufnehmen" -#: ../gramps/plugins/textreport/indivcomplete.py:1121 +#: ../gramps/plugins/textreport/indivcomplete.py:1132 msgid "Include Census Events" msgstr "Volkszählungsereignisse aufnehmen" -#: ../gramps/plugins/textreport/indivcomplete.py:1122 +#: ../gramps/plugins/textreport/indivcomplete.py:1133 msgid "Whether to include Census Events." msgstr "Ob Volkszählungsereignisse aufgenommen werden." #. ############################### -#: ../gramps/plugins/textreport/indivcomplete.py:1132 +#: ../gramps/plugins/textreport/indivcomplete.py:1143 msgid "Sections" msgstr "Abschnitte" #. ############################### -#: ../gramps/plugins/textreport/indivcomplete.py:1135 +#: ../gramps/plugins/textreport/indivcomplete.py:1146 msgid "Event groups" msgstr "Ereignisgruppen" -#: ../gramps/plugins/textreport/indivcomplete.py:1136 +#: ../gramps/plugins/textreport/indivcomplete.py:1147 msgid "Check if a separate section is required." msgstr "Prüfen, ob ein separater Abschnitt benötigt wird." -#: ../gramps/plugins/textreport/indivcomplete.py:1209 +#: ../gramps/plugins/textreport/indivcomplete.py:1220 msgid "The style used for the spouse's name." msgstr "Der Stil, der für den Namen des Partners verwendet wird." -#: ../gramps/plugins/textreport/indivcomplete.py:1228 +#: ../gramps/plugins/textreport/indivcomplete.py:1239 #: ../gramps/plugins/textreport/notelinkreport.py:217 #: ../gramps/plugins/textreport/placereport.py:551 #: ../gramps/plugins/textreport/tagreport.py:979 msgid "The basic style used for table headings." msgstr "Der Basisstil, der für Tabellenüberschriften verwendet wird." -#: ../gramps/plugins/textreport/indivcomplete.py:1238 +#: ../gramps/plugins/textreport/indivcomplete.py:1249 msgid "The style used for image notes." msgstr "Der Stil, der für Bildnotizen verwendet wird." -#: ../gramps/plugins/textreport/indivcomplete.py:1248 +#: ../gramps/plugins/textreport/indivcomplete.py:1259 msgid "The style used for image descriptions." msgstr "Der Stil, der für Bildbeschreibungen verwendet wird." @@ -31771,9 +31835,8 @@ msgid "Looking for ctrl characters in notes" msgstr "Suche nach Strg Zeichen in den Notizen" #: ../gramps/plugins/tool/check.py:447 -#, fuzzy msgid "Looking for bad alternate place names" -msgstr "Suche nach leeren Ortsdatensätzen" +msgstr "Suche nach ungültigen alternativen Ortsnamen" #: ../gramps/plugins/tool/check.py:477 msgid "Looking for broken family links" @@ -33140,7 +33203,7 @@ msgstr "Ordne %s IDs neu" #: ../gramps/plugins/tool/reorderids.py:624 msgid "Finding and assigning unused IDs." -msgstr "" +msgstr "Nicht verwendete IDs finden und neu zuordnen." #: ../gramps/plugins/tool/sortevents.py:76 msgid "Sort Events" @@ -34046,7 +34109,7 @@ msgstr "Hintergrund" #: ../gramps/plugins/view/fanchart2wayview.py:331 msgid "Add global background colored gradient" -msgstr "" +msgstr "Allgemeinen Farbverlauf Hintergrund hinzufügen" #. colors, stored as hex values #: ../gramps/plugins/view/fanchart2wayview.py:335 @@ -34092,7 +34155,7 @@ msgstr "Zeige Namen in zwei Zeilen" #: ../gramps/plugins/view/fanchartdescview.py:356 #: ../gramps/plugins/view/fanchartview.py:339 msgid "Flip name on the left of the fan" -msgstr "" +msgstr "Kippe Namen links im Fächer" #. options we don't show on the dialog #. #configdialog.add_checkbox(table, @@ -34578,9 +34641,8 @@ msgid "Show all places" msgstr "Alle Orte zeigen" #: ../gramps/plugins/view/geoplaces.py:591 -#, fuzzy msgid "The places marker color" -msgstr "Hat Marker" +msgstr "Die Ortemakierungfarbe" #: ../gramps/plugins/view/mediaview.py:113 msgid "Edit the selected media object" @@ -35056,9 +35118,8 @@ msgid "Showing descendants through a fanchart" msgstr "Zeigt Nachkommen in einer Fächergrafik" #: ../gramps/plugins/view/view.gpr.py:175 -#, fuzzy msgid "Showing ascendants and descendants through a fanchart" -msgstr "Zeigt Nachkommen in einer Fächergrafik" +msgstr "Zeigt Vorfahren und Nachkommen in einer Fächergrafik" #: ../gramps/plugins/view/view.gpr.py:188 msgid "Grouped People" @@ -35901,9 +35962,8 @@ msgid "A note to be used as the page footer" msgstr "Eine Notiz, die als Fußzeile benutzt wird." #: ../gramps/plugins/webreport/narrativeweb.py:9919 -#, fuzzy msgid "Images Generation" -msgstr "Seiten Generation" +msgstr "Bilder Erstellung" #: ../gramps/plugins/webreport/narrativeweb.py:9922 msgid "Include images and media objects" @@ -36194,7 +36254,7 @@ msgstr "Der API Schlüssel, der für Google maps verwendet wird" #: ../gramps/plugins/webreport/narrativeweb.py:10160 msgid "Other inclusion (CMS, Web Calendar, Php)" -msgstr "" +msgstr "Andere Einbindungen (CMS, Webkalender, PHP)" #: ../gramps/plugins/webreport/narrativeweb.py:10164 msgid "Do we include these pages in a cms web ?" @@ -36210,9 +36270,8 @@ msgid "Where do you place your web site ? default = /NAVWEB" msgstr "Wo speicherst du deine Website ? Standard = /NAVWEB" #: ../gramps/plugins/webreport/narrativeweb.py:10181 -#, fuzzy msgid "Do we include the web calendar ?" -msgstr "Integrieren wir diese Seiten in ein CMS Web?" +msgstr "Integrieren wir den Webkalender?" #: ../gramps/plugins/webreport/narrativeweb.py:10191 msgid "Where do you place your web site ? default = /WEBCAL" @@ -36586,6 +36645,9 @@ msgstr "Nebraska" msgid "No style sheet" msgstr "Kein Stylesheet" +#~ msgid "Remove the selected person" +#~ msgstr "Gewählte Person entfernen" + #~ msgid " %(item)s: %(summary)s" #~ msgstr " %(item)s: %(summary)s" @@ -39474,9 +39536,6 @@ msgstr "Kein Stylesheet" #~ msgid "Move the selected source downwards" #~ msgstr "Gewählte Quelle nach unten verschieben" -#~ msgid "_Sources" -#~ msgstr "_Quellen" - #~ msgid "Selection Options" #~ msgstr "Auswahloptionen" @@ -40771,9 +40830,6 @@ msgstr "Kein Stylesheet" #~ msgid "Attempt to view places of the selected people's family." #~ msgstr "Versuche Orte der Personen der gewählten Familien zu zeigen." -#~ msgid "_Event" -#~ msgstr "_Ereignis" - #~ msgid "Attempt to view places connected to all events." #~ msgstr "" #~ "Versuche die Orte die mit allen Ereignissen verbunden sind zu zeigen." diff --git a/po/ru.po b/po/ru.po index b25a57c9b..09541ed3f 100644 --- a/po/ru.po +++ b/po/ru.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: gramps50\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-16 13:54-0300\n" -"PO-Revision-Date: 2017-05-16 14:22-0300\n" +"POT-Creation-Date: 2017-05-30 09:18+0300\n" +"PO-Revision-Date: 2017-05-30 09:44+0300\n" "Last-Translator: Ivan Komaritsyn \n" "Language-Team: Russian\n" "Language: ru\n" @@ -1617,9 +1617,9 @@ msgstr "Семейное древо \"%s\":" #: ../gramps/plugins/textreport/detdescendantreport.py:501 #: ../gramps/plugins/textreport/familygroup.py:138 #: ../gramps/plugins/textreport/familygroup.py:304 -#: ../gramps/plugins/textreport/indivcomplete.py:900 -#: ../gramps/plugins/textreport/indivcomplete.py:940 -#: ../gramps/plugins/textreport/indivcomplete.py:1011 +#: ../gramps/plugins/textreport/indivcomplete.py:911 +#: ../gramps/plugins/textreport/indivcomplete.py:951 +#: ../gramps/plugins/textreport/indivcomplete.py:1022 #: ../gramps/plugins/textreport/placereport.py:183 #: ../gramps/plugins/webreport/narrativeweb.py:1107 #: ../gramps/plugins/webreport/narrativeweb.py:2640 @@ -1721,7 +1721,7 @@ msgstr "Заблокировано %s" #: ../gramps/gui/editors/displaytabs/personrefembedlist.py:143 #: ../gramps/gui/editors/editmedia.py:178 #: ../gramps/gui/editors/editmediaref.py:142 -#: ../gramps/plugins/db/bsddb/write.py:2314 +#: ../gramps/plugins/db/bsddb/write.py:2287 #: ../gramps/plugins/gramplet/persondetails.py:208 #: ../gramps/plugins/gramplet/persondetails.py:214 #: ../gramps/plugins/gramplet/persondetails.py:216 @@ -1760,8 +1760,8 @@ msgstr "Заблокировано %s" #: ../gramps/plugins/textreport/detdescendantreport.py:686 #: ../gramps/plugins/textreport/detdescendantreport.py:831 #: ../gramps/plugins/textreport/indivcomplete.py:85 -#: ../gramps/plugins/textreport/indivcomplete.py:923 -#: ../gramps/plugins/tool/check.py:2356 ../gramps/plugins/tool/check.py:2382 +#: ../gramps/plugins/textreport/indivcomplete.py:934 +#: ../gramps/plugins/tool/check.py:2332 ../gramps/plugins/tool/check.py:2358 #: ../gramps/plugins/tool/dumpgenderstats.py:74 #: ../gramps/plugins/tool/dumpgenderstats.py:97 #: ../gramps/plugins/tool/dumpgenderstats.py:100 @@ -1810,12 +1810,12 @@ msgstr "" "возможно, устранима через диалог «Управление семейными древами». Выберите " "базу данных и нажмите кнопку «Исправить»" -#: ../gramps/cli/grampscli.py:152 ../gramps/gui/dbloader.py:160 +#: ../gramps/cli/grampscli.py:152 ../gramps/gui/dbloader.py:164 msgid "Read only database" msgstr "База данных только для чтения" -#: ../gramps/cli/grampscli.py:153 ../gramps/gui/dbloader.py:161 -#: ../gramps/gui/dbloader.py:500 +#: ../gramps/cli/grampscli.py:153 ../gramps/gui/dbloader.py:165 +#: ../gramps/gui/dbloader.py:507 msgid "You do not have write access to the selected file." msgstr "У вас нет доступа для записи выбранного файла." @@ -1823,14 +1823,14 @@ msgstr "У вас нет доступа для записи выбранного #: ../gramps/cli/grampscli.py:185 ../gramps/cli/grampscli.py:188 #: ../gramps/cli/grampscli.py:191 ../gramps/cli/grampscli.py:194 #: ../gramps/cli/grampscli.py:197 ../gramps/cli/grampscli.py:200 -#: ../gramps/cli/grampscli.py:203 ../gramps/gui/dbloader.py:264 -#: ../gramps/gui/dbloader.py:267 ../gramps/gui/dbloader.py:270 -#: ../gramps/gui/dbloader.py:273 ../gramps/gui/dbloader.py:276 +#: ../gramps/cli/grampscli.py:203 ../gramps/gui/dbloader.py:268 +#: ../gramps/gui/dbloader.py:271 ../gramps/gui/dbloader.py:274 +#: ../gramps/gui/dbloader.py:277 ../gramps/gui/dbloader.py:280 msgid "Cannot open database" msgstr "Ошибка открытия базы данных" -#: ../gramps/cli/grampscli.py:207 ../gramps/gui/dbloader.py:280 -#: ../gramps/gui/dbloader.py:457 +#: ../gramps/cli/grampscli.py:207 ../gramps/gui/dbloader.py:284 +#: ../gramps/gui/dbloader.py:464 #, python-format msgid "Could not open file: %s" msgstr "Ошибка открытия файла: %s" @@ -3169,9 +3169,9 @@ msgstr "" "древа из неё." #: ../gramps/gen/db/generic.py:162 ../gramps/gen/db/generic.py:214 -#: ../gramps/gen/db/generic.py:2053 ../gramps/plugins/db/bsddb/undoredo.py:252 +#: ../gramps/gen/db/generic.py:2051 ../gramps/plugins/db/bsddb/undoredo.py:252 #: ../gramps/plugins/db/bsddb/undoredo.py:296 -#: ../gramps/plugins/db/bsddb/write.py:2158 +#: ../gramps/plugins/db/bsddb/write.py:2131 #, python-format msgid "_Undo %s" msgstr "_Откатить %s" @@ -3183,70 +3183,70 @@ msgstr "_Откатить %s" msgid "_Redo %s" msgstr "Ве_рнуть %s" -#: ../gramps/gen/db/generic.py:2445 ../gramps/plugins/db/bsddb/read.py:2071 -#: ../gramps/plugins/db/bsddb/write.py:2317 +#: ../gramps/gen/db/generic.py:2443 ../gramps/plugins/db/bsddb/read.py:1998 +#: ../gramps/plugins/db/bsddb/write.py:2290 msgid "Number of people" msgstr "Количество людей" -#: ../gramps/gen/db/generic.py:2446 ../gramps/plugins/db/bsddb/read.py:2072 -#: ../gramps/plugins/db/bsddb/write.py:2318 +#: ../gramps/gen/db/generic.py:2444 ../gramps/plugins/db/bsddb/read.py:1999 +#: ../gramps/plugins/db/bsddb/write.py:2291 #: ../gramps/plugins/gramplet/statsgramplet.py:117 -#: ../gramps/plugins/webreport/narrativeweb.py:8229 -#: ../gramps/plugins/webreport/narrativeweb.py:8296 +#: ../gramps/plugins/webreport/narrativeweb.py:8221 +#: ../gramps/plugins/webreport/narrativeweb.py:8288 msgid "Number of families" msgstr "Количество семей" -#: ../gramps/gen/db/generic.py:2447 ../gramps/plugins/db/bsddb/read.py:2073 -#: ../gramps/plugins/db/bsddb/write.py:2319 -#: ../gramps/plugins/webreport/narrativeweb.py:8257 -#: ../gramps/plugins/webreport/narrativeweb.py:8308 +#: ../gramps/gen/db/generic.py:2445 ../gramps/plugins/db/bsddb/read.py:2000 +#: ../gramps/plugins/db/bsddb/write.py:2292 +#: ../gramps/plugins/webreport/narrativeweb.py:8249 +#: ../gramps/plugins/webreport/narrativeweb.py:8300 msgid "Number of sources" msgstr "Количество источников" -#: ../gramps/gen/db/generic.py:2448 ../gramps/plugins/db/bsddb/read.py:2074 -#: ../gramps/plugins/db/bsddb/write.py:2320 -#: ../gramps/plugins/webreport/narrativeweb.py:8261 -#: ../gramps/plugins/webreport/narrativeweb.py:8311 +#: ../gramps/gen/db/generic.py:2446 ../gramps/plugins/db/bsddb/read.py:2001 +#: ../gramps/plugins/db/bsddb/write.py:2293 +#: ../gramps/plugins/webreport/narrativeweb.py:8253 +#: ../gramps/plugins/webreport/narrativeweb.py:8303 msgid "Number of citations" msgstr "Количество цитат" -#: ../gramps/gen/db/generic.py:2449 ../gramps/plugins/db/bsddb/read.py:2075 -#: ../gramps/plugins/db/bsddb/write.py:2321 -#: ../gramps/plugins/webreport/narrativeweb.py:8250 -#: ../gramps/plugins/webreport/narrativeweb.py:8302 +#: ../gramps/gen/db/generic.py:2447 ../gramps/plugins/db/bsddb/read.py:2002 +#: ../gramps/plugins/db/bsddb/write.py:2294 +#: ../gramps/plugins/webreport/narrativeweb.py:8242 +#: ../gramps/plugins/webreport/narrativeweb.py:8294 msgid "Number of events" msgstr "Количество событий" -#: ../gramps/gen/db/generic.py:2450 ../gramps/plugins/db/bsddb/read.py:2076 -#: ../gramps/plugins/db/bsddb/write.py:2322 +#: ../gramps/gen/db/generic.py:2448 ../gramps/plugins/db/bsddb/read.py:2003 +#: ../gramps/plugins/db/bsddb/write.py:2295 msgid "Number of media" msgstr "Количество документов" -#: ../gramps/gen/db/generic.py:2451 ../gramps/plugins/db/bsddb/read.py:2077 -#: ../gramps/plugins/db/bsddb/write.py:2323 -#: ../gramps/plugins/webreport/narrativeweb.py:8253 -#: ../gramps/plugins/webreport/narrativeweb.py:8305 +#: ../gramps/gen/db/generic.py:2449 ../gramps/plugins/db/bsddb/read.py:2004 +#: ../gramps/plugins/db/bsddb/write.py:2296 +#: ../gramps/plugins/webreport/narrativeweb.py:8245 +#: ../gramps/plugins/webreport/narrativeweb.py:8297 msgid "Number of places" msgstr "Количество мест" -#: ../gramps/gen/db/generic.py:2452 ../gramps/plugins/db/bsddb/read.py:2078 -#: ../gramps/plugins/db/bsddb/write.py:2324 -#: ../gramps/plugins/webreport/narrativeweb.py:8265 -#: ../gramps/plugins/webreport/narrativeweb.py:8314 +#: ../gramps/gen/db/generic.py:2450 ../gramps/plugins/db/bsddb/read.py:2005 +#: ../gramps/plugins/db/bsddb/write.py:2297 +#: ../gramps/plugins/webreport/narrativeweb.py:8257 +#: ../gramps/plugins/webreport/narrativeweb.py:8306 msgid "Number of repositories" msgstr "Количество хранилищ" -#: ../gramps/gen/db/generic.py:2453 ../gramps/plugins/db/bsddb/read.py:2079 -#: ../gramps/plugins/db/bsddb/write.py:2325 +#: ../gramps/gen/db/generic.py:2451 ../gramps/plugins/db/bsddb/read.py:2006 +#: ../gramps/plugins/db/bsddb/write.py:2298 msgid "Number of notes" msgstr "Количество заметок" -#: ../gramps/gen/db/generic.py:2454 ../gramps/plugins/db/bsddb/read.py:2080 -#: ../gramps/plugins/db/bsddb/write.py:2326 +#: ../gramps/gen/db/generic.py:2452 ../gramps/plugins/db/bsddb/read.py:2007 +#: ../gramps/plugins/db/bsddb/write.py:2299 msgid "Number of tags" msgstr "Количество меток" -#: ../gramps/gen/db/generic.py:2455 ../gramps/plugins/db/bsddb/write.py:2327 +#: ../gramps/gen/db/generic.py:2453 ../gramps/plugins/db/bsddb/write.py:2300 msgid "Data version" msgstr "Версия базы данных" @@ -3446,10 +3446,10 @@ msgstr "Применение ..." #: ../gramps/plugins/quickview/quickview.gpr.py:130 #: ../gramps/plugins/textreport/birthdayreport.py:411 #: ../gramps/plugins/textreport/familygroup.py:711 -#: ../gramps/plugins/textreport/indivcomplete.py:1045 +#: ../gramps/plugins/textreport/indivcomplete.py:1056 #: ../gramps/plugins/textreport/recordsreport.py:217 #: ../gramps/plugins/tool/sortevents.py:167 -#: ../gramps/plugins/webreport/narrativeweb.py:9774 +#: ../gramps/plugins/webreport/narrativeweb.py:9762 #: ../gramps/plugins/webreport/webcal.py:1623 msgid "Filter" msgstr "Фильтр" @@ -5521,8 +5521,8 @@ msgstr "" #: ../gramps/plugins/graph/gvfamilylines.py:276 #: ../gramps/plugins/graph/gvhourglass.py:370 #: ../gramps/plugins/graph/gvrelgraph.py:884 -#: ../gramps/plugins/webreport/narrativeweb.py:8222 -#: ../gramps/plugins/webreport/narrativeweb.py:8289 +#: ../gramps/plugins/webreport/narrativeweb.py:8214 +#: ../gramps/plugins/webreport/narrativeweb.py:8281 msgid "Females" msgstr "Женщины" @@ -5596,8 +5596,8 @@ msgstr "" #: ../gramps/plugins/graph/gvfamilylines.py:272 #: ../gramps/plugins/graph/gvhourglass.py:366 #: ../gramps/plugins/graph/gvrelgraph.py:880 -#: ../gramps/plugins/webreport/narrativeweb.py:8220 -#: ../gramps/plugins/webreport/narrativeweb.py:8287 +#: ../gramps/plugins/webreport/narrativeweb.py:8212 +#: ../gramps/plugins/webreport/narrativeweb.py:8279 msgid "Males" msgstr "Мужчины" @@ -6420,7 +6420,7 @@ msgstr "Каста" #: ../gramps/plugins/webreport/narrativeweb.py:1325 #: ../gramps/plugins/webreport/narrativeweb.py:2504 #: ../gramps/plugins/webreport/narrativeweb.py:3165 -#: ../gramps/plugins/webreport/narrativeweb.py:5932 +#: ../gramps/plugins/webreport/narrativeweb.py:5924 msgid "Description" msgstr "Описание" @@ -6490,7 +6490,7 @@ msgstr "Время" #: ../gramps/gui/filters/sidebar/_placesidebarfilter.py:191 #: ../gramps/gui/filters/sidebar/_reposidebarfilter.py:171 #: ../gramps/gui/filters/sidebar/_sourcesidebarfilter.py:154 -#: ../gramps/plugins/tool/check.py:2410 +#: ../gramps/plugins/tool/check.py:2386 msgid "None" msgstr "Нет" @@ -6506,7 +6506,7 @@ msgstr "Нет" #: ../gramps/plugins/textreport/tagreport.py:168 #: ../gramps/plugins/view/relview.py:612 #: ../gramps/plugins/webreport/narrativeweb.py:3314 -#: ../gramps/plugins/webreport/narrativeweb.py:6199 +#: ../gramps/plugins/webreport/narrativeweb.py:6191 msgid "Birth" msgstr "Рождение" @@ -6577,9 +6577,9 @@ msgstr "Указатель" #: ../gramps/plugins/webreport/narrativeweb.py:4266 #: ../gramps/plugins/webreport/narrativeweb.py:4477 #: ../gramps/plugins/webreport/narrativeweb.py:5025 -#: ../gramps/plugins/webreport/narrativeweb.py:5530 -#: ../gramps/plugins/webreport/narrativeweb.py:7378 -#: ../gramps/plugins/webreport/narrativeweb.py:7953 +#: ../gramps/plugins/webreport/narrativeweb.py:5526 +#: ../gramps/plugins/webreport/narrativeweb.py:7370 +#: ../gramps/plugins/webreport/narrativeweb.py:7945 msgid "Gramps ID" msgstr "Gramps ID" @@ -6628,8 +6628,8 @@ msgstr "Gramps ID" #: ../gramps/plugins/quickview/onthisday.py:80 #: ../gramps/plugins/quickview/onthisday.py:81 #: ../gramps/plugins/quickview/onthisday.py:82 -#: ../gramps/plugins/textreport/indivcomplete.py:494 -#: ../gramps/plugins/textreport/indivcomplete.py:692 +#: ../gramps/plugins/textreport/indivcomplete.py:505 +#: ../gramps/plugins/textreport/indivcomplete.py:703 #: ../gramps/plugins/textreport/placereport.py:223 #: ../gramps/plugins/textreport/placereport.py:301 #: ../gramps/plugins/textreport/tagreport.py:351 @@ -6647,8 +6647,8 @@ msgstr "Gramps ID" #: ../gramps/plugins/webreport/narrativeweb.py:2634 #: ../gramps/plugins/webreport/narrativeweb.py:4265 #: ../gramps/plugins/webreport/narrativeweb.py:5184 -#: ../gramps/plugins/webreport/narrativeweb.py:5553 -#: ../gramps/plugins/webreport/narrativeweb.py:6854 +#: ../gramps/plugins/webreport/narrativeweb.py:5549 +#: ../gramps/plugins/webreport/narrativeweb.py:6846 msgid "Date" msgstr "Дата" @@ -6702,13 +6702,13 @@ msgstr "Источник" #: ../gramps/plugins/gramplet/gramplet.gpr.py:771 #: ../gramps/plugins/quickview/filterbyname.py:112 #: ../gramps/plugins/quickview/filterbyname.py:137 -#: ../gramps/plugins/textreport/indivcomplete.py:261 +#: ../gramps/plugins/textreport/indivcomplete.py:268 #: ../gramps/plugins/textreport/tagreport.py:486 #: ../gramps/plugins/view/noteview.py:110 ../gramps/plugins/view/view.gpr.py:97 #: ../gramps/plugins/view/view.gpr.py:105 #: ../gramps/plugins/webreport/narrativeweb.py:1044 #: ../gramps/plugins/webreport/narrativeweb.py:1679 -#: ../gramps/plugins/webreport/narrativeweb.py:7151 +#: ../gramps/plugins/webreport/narrativeweb.py:7143 msgid "Notes" msgstr "Заметки" @@ -6738,7 +6738,7 @@ msgstr "Заметки" #: ../gramps/plugins/webreport/narrativeweb.py:2107 #: ../gramps/plugins/webreport/narrativeweb.py:2407 #: ../gramps/plugins/webreport/narrativeweb.py:5151 -#: ../gramps/plugins/webreport/narrativeweb.py:5350 +#: ../gramps/plugins/webreport/narrativeweb.py:5346 msgid "Media" msgstr "Альбом" @@ -6767,7 +6767,7 @@ msgstr "Последнее изменение" #: ../gramps/gui/selectors/selectnote.py:77 #: ../gramps/plugins/lib/libpersonview.py:111 #: ../gramps/plugins/lib/libplaceview.py:92 -#: ../gramps/plugins/textreport/indivcomplete.py:535 +#: ../gramps/plugins/textreport/indivcomplete.py:546 #: ../gramps/plugins/tool/notrelated.py:129 #: ../gramps/plugins/view/citationlistview.py:103 #: ../gramps/plugins/view/citationtreeview.py:98 @@ -6845,10 +6845,10 @@ msgstr "Личное" #: ../gramps/gui/filters/sidebar/_personsidebarfilter.py:89 #: ../gramps/gui/merge/mergeperson.py:64 #: ../gramps/gui/views/treemodels/peoplemodel.py:97 -#: ../gramps/plugins/textreport/indivcomplete.py:649 +#: ../gramps/plugins/textreport/indivcomplete.py:660 #: ../gramps/plugins/tool/dumpgenderstats.py:46 #: ../gramps/plugins/view/relview.py:648 -#: ../gramps/plugins/webreport/narrativeweb.py:6398 +#: ../gramps/plugins/webreport/narrativeweb.py:6390 msgid "unknown" msgstr "неизвестно" @@ -6969,7 +6969,7 @@ msgid "about" msgstr "около" #: ../gramps/gen/lib/date.py:1864 -#: ../gramps/plugins/importer/importprogen.py:1723 +#: ../gramps/plugins/importer/importprogen.py:1721 #: ../gramps/plugins/lib/libsubstkeyword.py:313 msgid "after" msgstr "после" @@ -7034,8 +7034,8 @@ msgstr "Событие" #: ../gramps/plugins/quickview/onthisday.py:82 #: ../gramps/plugins/quickview/quickview.gpr.py:206 #: ../gramps/plugins/quickview/references.py:92 -#: ../gramps/plugins/textreport/indivcomplete.py:497 -#: ../gramps/plugins/textreport/indivcomplete.py:695 +#: ../gramps/plugins/textreport/indivcomplete.py:508 +#: ../gramps/plugins/textreport/indivcomplete.py:706 #: ../gramps/plugins/tool/reorderids.glade:686 #: ../gramps/plugins/tool/sortevents.py:58 #: ../gramps/plugins/view/eventview.py:86 @@ -7071,8 +7071,8 @@ msgstr "Ссылка на событие" #: ../gramps/plugins/gramplet/gramplet.gpr.py:631 #: ../gramps/plugins/gramplet/gramplet.gpr.py:645 #: ../gramps/plugins/gramplet/gramplet.gpr.py:659 -#: ../gramps/plugins/textreport/indivcomplete.py:459 -#: ../gramps/plugins/textreport/indivcomplete.py:678 +#: ../gramps/plugins/textreport/indivcomplete.py:470 +#: ../gramps/plugins/textreport/indivcomplete.py:689 #: ../gramps/plugins/webreport/narrativeweb.py:832 #: ../gramps/plugins/webreport/narrativeweb.py:1406 #: ../gramps/plugins/webreport/narrativeweb.py:1662 @@ -7166,7 +7166,7 @@ msgstr "Правовое" #: ../gramps/gen/lib/eventtype.py:153 ../gramps/gen/lib/eventtype.py:195 #: ../gramps/plugins/gramplet/gramplet.gpr.py:463 #: ../gramps/plugins/webreport/narrativeweb.py:3143 -#: ../gramps/plugins/webreport/narrativeweb.py:8050 +#: ../gramps/plugins/webreport/narrativeweb.py:8042 msgid "Residence" msgstr "Место жительства" @@ -7184,7 +7184,7 @@ msgstr "Другое" #: ../gramps/plugins/textreport/tagreport.py:174 #: ../gramps/plugins/view/relview.py:621 ../gramps/plugins/view/relview.py:646 #: ../gramps/plugins/webreport/narrativeweb.py:3318 -#: ../gramps/plugins/webreport/narrativeweb.py:6203 +#: ../gramps/plugins/webreport/narrativeweb.py:6195 msgid "Death" msgstr "Смерть" @@ -7569,13 +7569,13 @@ msgstr "аннул." #: ../gramps/plugins/quickview/all_relations.py:300 #: ../gramps/plugins/textreport/familygroup.py:230 #: ../gramps/plugins/textreport/familygroup.py:241 -#: ../gramps/plugins/textreport/indivcomplete.py:318 -#: ../gramps/plugins/textreport/indivcomplete.py:320 -#: ../gramps/plugins/textreport/indivcomplete.py:912 +#: ../gramps/plugins/textreport/indivcomplete.py:327 +#: ../gramps/plugins/textreport/indivcomplete.py:329 +#: ../gramps/plugins/textreport/indivcomplete.py:923 #: ../gramps/plugins/textreport/tagreport.py:250 #: ../gramps/plugins/view/familyview.py:80 #: ../gramps/plugins/view/relview.py:899 -#: ../gramps/plugins/webreport/narrativeweb.py:7540 +#: ../gramps/plugins/webreport/narrativeweb.py:7532 msgid "Father" msgstr "Отец" @@ -7591,13 +7591,13 @@ msgstr "Отец" #: ../gramps/plugins/quickview/all_relations.py:297 #: ../gramps/plugins/textreport/familygroup.py:247 #: ../gramps/plugins/textreport/familygroup.py:258 -#: ../gramps/plugins/textreport/indivcomplete.py:327 -#: ../gramps/plugins/textreport/indivcomplete.py:329 -#: ../gramps/plugins/textreport/indivcomplete.py:913 +#: ../gramps/plugins/textreport/indivcomplete.py:336 +#: ../gramps/plugins/textreport/indivcomplete.py:338 +#: ../gramps/plugins/textreport/indivcomplete.py:924 #: ../gramps/plugins/textreport/tagreport.py:256 #: ../gramps/plugins/view/familyview.py:81 #: ../gramps/plugins/view/relview.py:900 -#: ../gramps/plugins/webreport/narrativeweb.py:7554 +#: ../gramps/plugins/webreport/narrativeweb.py:7546 msgid "Mother" msgstr "Мать" @@ -7606,7 +7606,7 @@ msgstr "Мать" #: ../gramps/plugins/gramplet/gramplet.gpr.py:855 #: ../gramps/plugins/gramplet/gramplet.gpr.py:869 #: ../gramps/plugins/textreport/familygroup.py:644 -#: ../gramps/plugins/textreport/indivcomplete.py:664 +#: ../gramps/plugins/textreport/indivcomplete.py:675 #: ../gramps/plugins/view/pedigreeview.py:1753 #: ../gramps/plugins/view/relview.py:1420 #: ../gramps/plugins/webreport/narrativeweb.py:763 @@ -7626,7 +7626,7 @@ msgstr "Дети" #: ../gramps/plugins/webreport/narrativeweb.py:2050 #: ../gramps/plugins/webreport/narrativeweb.py:4230 #: ../gramps/plugins/webreport/narrativeweb.py:4453 -#: ../gramps/plugins/webreport/narrativeweb.py:7437 +#: ../gramps/plugins/webreport/narrativeweb.py:7429 msgid "Events" msgstr "События" @@ -7690,8 +7690,8 @@ msgstr "Женаты" #: ../gramps/plugins/quickview/onthisday.py:82 #: ../gramps/plugins/quickview/references.py:70 #: ../gramps/plugins/quickview/siblings.py:48 -#: ../gramps/plugins/textreport/indivcomplete.py:493 -#: ../gramps/plugins/textreport/indivcomplete.py:691 +#: ../gramps/plugins/textreport/indivcomplete.py:504 +#: ../gramps/plugins/textreport/indivcomplete.py:702 #: ../gramps/plugins/textreport/tagreport.py:339 #: ../gramps/plugins/textreport/tagreport.py:434 #: ../gramps/plugins/textreport/tagreport.py:503 @@ -7707,8 +7707,8 @@ msgstr "Женаты" #: ../gramps/plugins/webreport/narrativeweb.py:2503 #: ../gramps/plugins/webreport/narrativeweb.py:3100 #: ../gramps/plugins/webreport/narrativeweb.py:4264 -#: ../gramps/plugins/webreport/narrativeweb.py:7873 -#: ../gramps/plugins/webreport/narrativeweb.py:7961 +#: ../gramps/plugins/webreport/narrativeweb.py:7865 +#: ../gramps/plugins/webreport/narrativeweb.py:7953 msgid "Type" msgstr "Тип" @@ -7843,7 +7843,7 @@ msgstr "Контрольная сумма" #: ../gramps/gui/selectors/selectperson.py:93 #: ../gramps/gui/selectors/selectplace.py:70 #: ../gramps/gui/views/bookmarks.py:270 ../gramps/gui/views/tags.py:408 -#: ../gramps/gui/views/treemodels/peoplemodel.py:616 +#: ../gramps/gui/views/treemodels/peoplemodel.py:610 #: ../gramps/plugins/export/exportcsv.py:286 #: ../gramps/plugins/gramplet/ancestor.py:63 #: ../gramps/plugins/gramplet/backlinks.py:56 @@ -7854,7 +7854,7 @@ msgstr "Контрольная сумма" #: ../gramps/plugins/lib/libpersonview.py:98 #: ../gramps/plugins/lib/libplaceview.py:84 #: ../gramps/plugins/quickview/filterbyname.py:306 -#: ../gramps/plugins/textreport/indivcomplete.py:910 +#: ../gramps/plugins/textreport/indivcomplete.py:921 #: ../gramps/plugins/textreport/tagreport.py:162 #: ../gramps/plugins/textreport/tagreport.py:428 #: ../gramps/plugins/textreport/tagreport.py:656 @@ -7867,7 +7867,7 @@ msgstr "Контрольная сумма" #: ../gramps/plugins/tool/removeunused.py:201 #: ../gramps/plugins/tool/verify.py:578 ../gramps/plugins/view/repoview.py:85 #: ../gramps/plugins/webreport/narrativeweb.py:779 -#: ../gramps/plugins/webreport/narrativeweb.py:7700 +#: ../gramps/plugins/webreport/narrativeweb.py:7692 msgid "Name" msgstr "Имя" @@ -7882,7 +7882,7 @@ msgstr "Имя" #: ../gramps/plugins/webreport/narrativeweb.py:2042 #: ../gramps/plugins/webreport/narrativeweb.py:4569 #: ../gramps/plugins/webreport/narrativeweb.py:4619 -#: ../gramps/plugins/webreport/narrativeweb.py:6260 +#: ../gramps/plugins/webreport/narrativeweb.py:6252 msgid "Surnames" msgstr "Фамилии" @@ -7962,9 +7962,9 @@ msgstr "%(surname)s, %(first)s %(suffix)s" #: ../gramps/plugins/graph/gvfamilylines.py:483 #: ../gramps/plugins/textreport/detancestralreport.py:448 #: ../gramps/plugins/textreport/detdescendantreport.py:483 -#: ../gramps/plugins/textreport/indivcomplete.py:199 -#: ../gramps/plugins/textreport/indivcomplete.py:207 -#: ../gramps/plugins/textreport/indivcomplete.py:1001 +#: ../gramps/plugins/textreport/indivcomplete.py:200 +#: ../gramps/plugins/textreport/indivcomplete.py:208 +#: ../gramps/plugins/textreport/indivcomplete.py:1012 #, python-format msgid "%(str1)s, %(str2)s" msgstr "%(str1)s, %(str2)s" @@ -8222,7 +8222,7 @@ msgstr "Заметка о ссылке на ребёнка" #: ../gramps/plugins/tool/reorderids.glade:642 #: ../gramps/plugins/webreport/narrativeweb.py:3570 #: ../gramps/plugins/webreport/narrativeweb.py:4267 -#: ../gramps/plugins/webreport/narrativeweb.py:7149 +#: ../gramps/plugins/webreport/narrativeweb.py:7141 msgid "Person" msgstr "Лицо" @@ -8235,8 +8235,8 @@ msgstr "Лицо" #: ../gramps/plugins/importer/importcsv.py:168 #: ../gramps/plugins/lib/libpersonview.py:100 #: ../gramps/plugins/quickview/siblings.py:48 -#: ../gramps/plugins/textreport/indivcomplete.py:911 -#: ../gramps/plugins/webreport/narrativeweb.py:7389 +#: ../gramps/plugins/textreport/indivcomplete.py:922 +#: ../gramps/plugins/webreport/narrativeweb.py:7381 msgid "Gender" msgstr "Пол" @@ -8261,7 +8261,7 @@ msgstr "Ссылки на событие" #: ../gramps/plugins/graph/gvrelgraph.py:894 #: ../gramps/plugins/quickview/filterbyname.py:94 #: ../gramps/plugins/quickview/filterbyname.py:119 -#: ../gramps/plugins/textreport/indivcomplete.py:627 +#: ../gramps/plugins/textreport/indivcomplete.py:638 #: ../gramps/plugins/textreport/tagreport.py:233 #: ../gramps/plugins/tool/verify.glade:753 #: ../gramps/plugins/view/familyview.py:114 @@ -8281,7 +8281,7 @@ msgstr "Семьи родителей" #: ../gramps/gen/lib/person.py:209 ../gramps/gen/lib/repo.py:103 #: ../gramps/gui/merge/mergeperson.py:268 -#: ../gramps/plugins/textreport/indivcomplete.py:407 +#: ../gramps/plugins/textreport/indivcomplete.py:418 #: ../gramps/plugins/webreport/narrativeweb.py:1475 msgid "Addresses" msgstr "Адреса" @@ -8332,7 +8332,7 @@ msgid "Places" msgstr "Места" #: ../gramps/gen/lib/place.py:154 ../gramps/gui/merge/mergeperson.py:199 -#: ../gramps/plugins/textreport/indivcomplete.py:379 +#: ../gramps/plugins/textreport/indivcomplete.py:389 msgid "Alternate Names" msgstr "Альтернативные имена" @@ -8561,8 +8561,8 @@ msgstr "Аббревиатура" #: ../gramps/plugins/webreport/narrativeweb.py:1924 #: ../gramps/plugins/webreport/narrativeweb.py:2053 #: ../gramps/plugins/webreport/narrativeweb.py:3087 -#: ../gramps/plugins/webreport/narrativeweb.py:7849 -#: ../gramps/plugins/webreport/narrativeweb.py:7934 +#: ../gramps/plugins/webreport/narrativeweb.py:7841 +#: ../gramps/plugins/webreport/narrativeweb.py:7926 msgid "Repositories" msgstr "Хранилища" @@ -8694,7 +8694,7 @@ msgstr "Интернет-ссылка" #: ../gramps/plugins/quickview/filterbyname.py:354 #: ../gramps/plugins/webreport/narrativeweb.py:3282 #: ../gramps/plugins/webreport/narrativeweb.py:4618 -#: ../gramps/plugins/webreport/narrativeweb.py:6193 +#: ../gramps/plugins/webreport/narrativeweb.py:6185 msgid "Surname" msgstr "Фамилия" @@ -8917,8 +8917,8 @@ msgstr "Боковая панель" #: ../gramps/gen/plug/_pluginreg.py:514 #: ../gramps/plugins/gramplet/faqgramplet.py:135 #: ../gramps/plugins/webreport/narrativeweb.py:2110 -#: ../gramps/plugins/webreport/narrativeweb.py:8249 -#: ../gramps/plugins/webreport/narrativeweb.py:8301 +#: ../gramps/plugins/webreport/narrativeweb.py:8241 +#: ../gramps/plugins/webreport/narrativeweb.py:8293 msgid "Miscellaneous" msgstr "Разное" @@ -9009,7 +9009,7 @@ msgstr "Файл %s уже открыт, сначала закройте его. #: ../gramps/plugins/lib/libhtmlbackend.py:253 #: ../gramps/plugins/lib/libhtmlbackend.py:259 #: ../gramps/plugins/lib/libhtmlbackend.py:263 -#: ../gramps/plugins/webreport/narrativeweb.py:8540 +#: ../gramps/plugins/webreport/narrativeweb.py:8532 #, python-format msgid "Could not create %s" msgstr "Ошибка при создании %s" @@ -9482,11 +9482,11 @@ msgstr "Сноски" #: ../gramps/plugins/gramplet/statsgramplet.py:137 #: ../gramps/plugins/gramplet/statsgramplet.py:141 #: ../gramps/plugins/textreport/familygroup.py:408 -#: ../gramps/plugins/textreport/indivcomplete.py:908 -#: ../gramps/plugins/textreport/indivcomplete.py:910 -#: ../gramps/plugins/textreport/indivcomplete.py:911 -#: ../gramps/plugins/textreport/indivcomplete.py:912 -#: ../gramps/plugins/textreport/indivcomplete.py:913 +#: ../gramps/plugins/textreport/indivcomplete.py:919 +#: ../gramps/plugins/textreport/indivcomplete.py:921 +#: ../gramps/plugins/textreport/indivcomplete.py:922 +#: ../gramps/plugins/textreport/indivcomplete.py:923 +#: ../gramps/plugins/textreport/indivcomplete.py:924 #: ../gramps/plugins/view/relview.py:538 ../gramps/plugins/view/relview.py:602 #: ../gramps/plugins/view/relview.py:614 ../gramps/plugins/view/relview.py:631 #: ../gramps/plugins/view/relview.py:641 ../gramps/plugins/view/relview.py:646 @@ -9596,7 +9596,7 @@ msgstr "Как и где включать номера-идентификато #: ../gramps/plugins/textreport/detancestralreport.py:888 #: ../gramps/plugins/textreport/detdescendantreport.py:1075 #: ../gramps/plugins/textreport/familygroup.py:747 -#: ../gramps/plugins/textreport/indivcomplete.py:1083 +#: ../gramps/plugins/textreport/indivcomplete.py:1094 msgid "Include" msgstr "Включить" @@ -9605,12 +9605,12 @@ msgid "Whether to include Gramps IDs" msgstr "Включать ли номера-идентификаторы объектов Gramps ID" #: ../gramps/gen/plug/report/utils.py:158 -#: ../gramps/plugins/textreport/indivcomplete.py:902 +#: ../gramps/plugins/textreport/indivcomplete.py:913 msgid "File does not exist" msgstr "Файл не существует" #: ../gramps/gen/plug/report/utils.py:159 -#: ../gramps/plugins/textreport/indivcomplete.py:898 +#: ../gramps/plugins/textreport/indivcomplete.py:909 #: ../gramps/plugins/textreport/simplebooktitle.py:106 #: ../gramps/plugins/webreport/narrativeweb.py:2153 #: ../gramps/plugins/webreport/narrativeweb.py:2368 @@ -10421,7 +10421,7 @@ msgstr "%(west_longitude)s З" #: ../gramps/gui/merge/mergeperson.py:64 #: ../gramps/gui/views/treemodels/peoplemodel.py:97 #: ../gramps/plugins/tool/dumpgenderstats.py:46 -#: ../gramps/plugins/webreport/narrativeweb.py:6396 +#: ../gramps/plugins/webreport/narrativeweb.py:6388 msgid "male" msgstr "мужской" @@ -10430,7 +10430,7 @@ msgstr "мужской" #: ../gramps/gui/merge/mergeperson.py:64 #: ../gramps/gui/views/treemodels/peoplemodel.py:97 #: ../gramps/plugins/tool/dumpgenderstats.py:46 -#: ../gramps/plugins/webreport/narrativeweb.py:6397 +#: ../gramps/plugins/webreport/narrativeweb.py:6389 msgid "female" msgstr "женский" @@ -10580,10 +10580,10 @@ msgstr "Использование_буфера_обмена" #: ../gramps/gui/editors/editaddress.py:167 #: ../gramps/gui/filters/sidebar/_reposidebarfilter.py:106 #: ../gramps/plugins/gramplet/repositorydetails.py:133 -#: ../gramps/plugins/lib/libgedcom.py:5433 -#: ../gramps/plugins/lib/libgedcom.py:5599 +#: ../gramps/plugins/lib/libgedcom.py:5432 +#: ../gramps/plugins/lib/libgedcom.py:5598 #: ../gramps/plugins/textreport/familygroup.py:350 -#: ../gramps/plugins/webreport/narrativeweb.py:8049 +#: ../gramps/plugins/webreport/narrativeweb.py:8041 msgid "Address" msgstr "Адрес" @@ -10862,8 +10862,8 @@ msgstr "Индекс/Почтовый код" #: ../gramps/gui/configure.py:523 ../gramps/plugins/export/exportgedcom.py:788 #: ../gramps/plugins/export/exportgedcom.py:1156 #: ../gramps/plugins/gramplet/repositorydetails.py:121 -#: ../gramps/plugins/lib/libgedcom.py:3982 -#: ../gramps/plugins/lib/libgedcom.py:5696 +#: ../gramps/plugins/lib/libgedcom.py:3981 +#: ../gramps/plugins/lib/libgedcom.py:5695 #: ../gramps/plugins/webreport/narrativeweb.py:1527 msgid "Phone" msgstr "Телефон" @@ -11041,8 +11041,7 @@ msgstr "_Правка" #: ../gramps/gui/editors/displaytabs/webembedlist.py:117 #: ../gramps/gui/editors/editfamily.py:151 #: ../gramps/gui/plug/report/_bookdialog.py:622 -#: ../gramps/gui/views/bookmarks.py:283 ../gramps/gui/views/listview.py:212 -#: ../gramps/gui/views/tags.py:424 ../gramps/plugins/lib/libpersonview.py:391 +#: ../gramps/gui/views/bookmarks.py:283 ../gramps/gui/views/tags.py:424 msgid "_Remove" msgstr "_Удалить" @@ -11101,7 +11100,7 @@ msgid "Active person's name and ID" msgstr "Имя и ID активного лица" #: ../gramps/gui/configure.py:1085 -#: ../gramps/plugins/textreport/indivcomplete.py:359 +#: ../gramps/plugins/textreport/indivcomplete.py:368 msgid "Relationship to home person" msgstr "Отношение к базовому лицу" @@ -11417,7 +11416,7 @@ msgid "Select media directory" msgstr "Выбрать каталог документов" #: ../gramps/gui/configure.py:1543 ../gramps/gui/configure.py:1566 -#: ../gramps/gui/configure.py:1588 ../gramps/gui/dbloader.py:397 +#: ../gramps/gui/configure.py:1588 ../gramps/gui/dbloader.py:401 #: ../gramps/gui/editors/edittaglist.py:119 #: ../gramps/gui/glade/addmedia.glade:22 #: ../gramps/gui/glade/baseselector.glade:24 @@ -11469,7 +11468,7 @@ msgstr "Выбрать каталог документов" #: ../gramps/gui/widgets/progressdialog.py:437 #: ../gramps/plugins/lib/maps/geography.py:1008 #: ../gramps/plugins/lib/maps/geography.py:1261 -#: ../gramps/plugins/tool/check.py:769 ../gramps/plugins/tool/eventcmp.py:398 +#: ../gramps/plugins/tool/check.py:763 ../gramps/plugins/tool/eventcmp.py:398 #: ../gramps/plugins/tool/populatesources.py:90 #: ../gramps/plugins/tool/testcasegenerator.py:327 msgid "_Cancel" @@ -11510,31 +11509,31 @@ msgstr "_Продолжить импорт" msgid "_Stop" msgstr "С_топ" -#: ../gramps/gui/dbloader.py:202 ../gramps/gui/dbloader.py:217 -#: ../gramps/gui/dbloader.py:247 +#: ../gramps/gui/dbloader.py:206 ../gramps/gui/dbloader.py:221 +#: ../gramps/gui/dbloader.py:251 msgid "Are you sure you want to upgrade this Family Tree?" msgstr "Вы уверены, что хотите обновить формат этого древа?" -#: ../gramps/gui/dbloader.py:205 ../gramps/gui/dbloader.py:220 -#: ../gramps/gui/dbloader.py:250 +#: ../gramps/gui/dbloader.py:209 ../gramps/gui/dbloader.py:224 +#: ../gramps/gui/dbloader.py:254 msgid "" "I have made a backup,\n" "please upgrade my Family Tree" msgstr "У меня есть резервная копия, моё древо можно обновить" -#: ../gramps/gui/dbloader.py:207 ../gramps/gui/dbloader.py:222 -#: ../gramps/gui/dbloader.py:237 ../gramps/gui/dbloader.py:252 +#: ../gramps/gui/dbloader.py:211 ../gramps/gui/dbloader.py:226 +#: ../gramps/gui/dbloader.py:241 ../gramps/gui/dbloader.py:256 #: ../gramps/gui/plug/report/_bookdialog.py:243 #: ../gramps/gui/plug/report/_bookdialog.py:739 #: ../gramps/gui/viewmanager.py:840 msgid "Cancel" msgstr "Отменить" -#: ../gramps/gui/dbloader.py:232 +#: ../gramps/gui/dbloader.py:236 msgid "Are you sure you want to downgrade this Family Tree?" msgstr "Вы действительно хотите откатить версию этого древа на более старую?" -#: ../gramps/gui/dbloader.py:235 +#: ../gramps/gui/dbloader.py:239 msgid "" "I have made a backup,\n" "please downgrade my Family Tree" @@ -11542,27 +11541,27 @@ msgstr "" "Да, я сделал резервную копию.\n" "Откатить версию моего древа" -#: ../gramps/gui/dbloader.py:321 +#: ../gramps/gui/dbloader.py:325 msgid "All files" msgstr "Все файлы" -#: ../gramps/gui/dbloader.py:362 +#: ../gramps/gui/dbloader.py:366 msgid "Automatically detected" msgstr "Автоматически" -#: ../gramps/gui/dbloader.py:371 +#: ../gramps/gui/dbloader.py:375 msgid "Select file _type:" msgstr "Выбрать _тип файла:" -#: ../gramps/gui/dbloader.py:387 +#: ../gramps/gui/dbloader.py:391 msgid "Import Family Tree" msgstr "Импортировать семейное древо" -#: ../gramps/gui/dbloader.py:398 +#: ../gramps/gui/dbloader.py:402 msgid "Import" msgstr "Импорт" -#: ../gramps/gui/dbloader.py:458 +#: ../gramps/gui/dbloader.py:465 #, python-format msgid "" "File type \"%s\" is unknown to Gramps.\n" @@ -11575,28 +11574,28 @@ msgstr "" "Известные типы: база данных GRAMPS, GRAMPS XML, пакет GRAMPS, GEDCOM и " "другие." -#: ../gramps/gui/dbloader.py:481 ../gramps/gui/dbloader.py:488 +#: ../gramps/gui/dbloader.py:488 ../gramps/gui/dbloader.py:495 msgid "Cannot open file" msgstr "Не могу открыть файл" -#: ../gramps/gui/dbloader.py:482 +#: ../gramps/gui/dbloader.py:489 msgid "The selected file is a directory, not a file.\n" msgstr "Выбранное имя является каталогом, а не файлом.\n" -#: ../gramps/gui/dbloader.py:489 +#: ../gramps/gui/dbloader.py:496 msgid "You do not have read access to the selected file." msgstr "У вас нет доступа для чтения выбранного файла." -#: ../gramps/gui/dbloader.py:499 +#: ../gramps/gui/dbloader.py:506 msgid "Cannot create file" msgstr "Не могу создать файл" -#: ../gramps/gui/dbloader.py:524 +#: ../gramps/gui/dbloader.py:531 #, python-format msgid "Could not import file: %s" msgstr "Ошибка импорта файла %s" -#: ../gramps/gui/dbloader.py:525 +#: ../gramps/gui/dbloader.py:532 msgid "" "This file incorrectly identifies its character set, so it cannot be " "accurately imported. Please fix the encoding, and import again" @@ -11668,7 +11667,7 @@ msgstr "Информация о базе данных" #: ../gramps/gui/plug/_guioptions.py:79 #: ../gramps/gui/plug/report/_reportdialog.py:165 ../gramps/gui/utils.py:192 #: ../gramps/gui/viewmanager.py:1823 ../gramps/gui/views/tags.py:646 -#: ../gramps/plugins/tool/check.py:770 ../gramps/plugins/tool/patchnames.py:118 +#: ../gramps/plugins/tool/check.py:764 ../gramps/plugins/tool/patchnames.py:118 #: ../gramps/plugins/tool/populatesources.py:91 #: ../gramps/plugins/tool/testcasegenerator.py:328 msgid "_OK" @@ -11693,8 +11692,8 @@ msgstr "Название семейного древа" #: ../gramps/gui/editors/displaytabs/ldsembedlist.py:63 #: ../gramps/gui/plug/_windows.py:127 ../gramps/gui/plug/_windows.py:184 #: ../gramps/plugins/quickview/ageondate.py:54 -#: ../gramps/plugins/textreport/indivcomplete.py:495 -#: ../gramps/plugins/textreport/indivcomplete.py:693 +#: ../gramps/plugins/textreport/indivcomplete.py:506 +#: ../gramps/plugins/textreport/indivcomplete.py:704 #: ../gramps/plugins/textreport/notelinkreport.py:95 #: ../gramps/plugins/webreport/narrativeweb.py:1355 msgid "Status" @@ -12366,8 +12365,8 @@ msgstr "%(groupname)s - %(groupnumber)d" #: ../gramps/gui/editors/displaytabs/familyldsembedlist.py:54 #: ../gramps/gui/editors/displaytabs/ldsembedlist.py:64 -#: ../gramps/plugins/textreport/indivcomplete.py:496 -#: ../gramps/plugins/textreport/indivcomplete.py:694 +#: ../gramps/plugins/textreport/indivcomplete.py:507 +#: ../gramps/plugins/textreport/indivcomplete.py:705 #: ../gramps/plugins/webreport/narrativeweb.py:1353 msgid "Temple" msgstr "Храм" @@ -12392,7 +12391,7 @@ msgstr "Сделать _текущим документом" #: ../gramps/gui/editors/displaytabs/gallerytab.py:257 #: ../gramps/gui/editors/editperson.py:960 -#: ../gramps/plugins/textreport/indivcomplete.py:588 +#: ../gramps/plugins/textreport/indivcomplete.py:599 msgid "Non existing media found in the Gallery" msgstr "В галерее обнаружен несуществующий документ" @@ -12463,7 +12462,7 @@ msgid "Move the selected name downwards" msgstr "Переместить выделенное имя ниже" #: ../gramps/gui/editors/displaytabs/nameembedlist.py:77 -#: ../gramps/gui/views/treemodels/peoplemodel.py:616 +#: ../gramps/gui/views/treemodels/peoplemodel.py:610 msgid "Group As" msgstr "Группировать как" @@ -12610,7 +12609,7 @@ msgid "_Associations" msgstr "Связи" #: ../gramps/gui/editors/displaytabs/personrefembedlist.py:90 -#: ../gramps/plugins/importer/importprogen.py:1389 +#: ../gramps/plugins/importer/importprogen.py:1387 msgid "Godfather" msgstr "Крёстный отец" @@ -13298,8 +13297,8 @@ msgstr "%(mother)s [%(gramps_id)s]" #: ../gramps/gui/editors/editldsord.py:314 #: ../gramps/gui/editors/editldsord.py:442 -#: ../gramps/plugins/textreport/indivcomplete.py:486 -#: ../gramps/plugins/textreport/indivcomplete.py:690 +#: ../gramps/plugins/textreport/indivcomplete.py:497 +#: ../gramps/plugins/textreport/indivcomplete.py:701 #: ../gramps/plugins/webreport/narrativeweb.py:820 msgid "LDS Ordinance" msgstr "Процедура СПД" @@ -14317,7 +14316,7 @@ msgstr "Участники" #: ../gramps/gui/widgets/reorderfam.py:91 #: ../gramps/plugins/textreport/tagreport.py:262 #: ../gramps/plugins/view/familyview.py:82 -#: ../gramps/plugins/webreport/narrativeweb.py:7150 +#: ../gramps/plugins/webreport/narrativeweb.py:7142 msgid "Relationship" msgstr "Отношение" @@ -14327,7 +14326,7 @@ msgstr "любой" #: ../gramps/gui/filters/sidebar/_personsidebarfilter.py:129 #: ../gramps/plugins/export/exportcsv.py:357 -#: ../gramps/plugins/webreport/narrativeweb.py:7701 +#: ../gramps/plugins/webreport/narrativeweb.py:7693 msgid "Birth date" msgstr "Дата рождения" @@ -14339,7 +14338,7 @@ msgstr "пример: «%(msg1)s» или «%(msg2)s»" #: ../gramps/gui/filters/sidebar/_personsidebarfilter.py:131 #: ../gramps/plugins/export/exportcsv.py:359 -#: ../gramps/plugins/webreport/narrativeweb.py:7702 +#: ../gramps/plugins/webreport/narrativeweb.py:7694 msgid "Death date" msgstr "Дата смерти" @@ -14422,6 +14421,8 @@ msgid "Configure currently selected item" msgstr "Настроить выделенный элемент" #: ../gramps/gui/glade/book.glade:523 ../gramps/gui/glade/dbman.glade:265 +#: ../gramps/gui/views/listview.py:212 +#: ../gramps/plugins/lib/libpersonview.py:391 msgid "_Delete" msgstr "_Удалить" @@ -14723,7 +14724,7 @@ msgstr "" #: ../gramps/gui/glade/editrepository.glade:205 #: ../gramps/gui/glade/editsource.glade:288 #: ../gramps/gui/glade/editurl.glade:149 -#: ../gramps/plugins/webreport/narrativeweb.py:9966 +#: ../gramps/plugins/webreport/narrativeweb.py:9954 msgid "Privacy" msgstr "Личная информация" @@ -17035,8 +17036,8 @@ msgstr "Объединить людей" #: ../gramps/plugins/view/relview.py:538 ../gramps/plugins/view/relview.py:862 #: ../gramps/plugins/view/relview.py:898 #: ../gramps/plugins/webreport/narrativeweb.py:3327 -#: ../gramps/plugins/webreport/narrativeweb.py:6212 -#: ../gramps/plugins/webreport/narrativeweb.py:7684 +#: ../gramps/plugins/webreport/narrativeweb.py:6204 +#: ../gramps/plugins/webreport/narrativeweb.py:7676 msgid "Parents" msgstr "Родители" @@ -17930,7 +17931,7 @@ msgstr "Стиль" #: ../gramps/plugins/textreport/detdescendantreport.py:995 #: ../gramps/plugins/textreport/endoflinereport.py:270 #: ../gramps/plugins/textreport/familygroup.py:707 -#: ../gramps/plugins/textreport/indivcomplete.py:1042 +#: ../gramps/plugins/textreport/indivcomplete.py:1053 #: ../gramps/plugins/textreport/kinshipreport.py:356 #: ../gramps/plugins/textreport/numberofancestorsreport.py:202 #: ../gramps/plugins/textreport/placereport.py:435 @@ -17939,7 +17940,7 @@ msgstr "Стиль" #: ../gramps/plugins/textreport/summary.py:286 #: ../gramps/plugins/textreport/tableofcontents.py:92 #: ../gramps/plugins/textreport/tagreport.py:896 -#: ../gramps/plugins/webreport/narrativeweb.py:9748 +#: ../gramps/plugins/webreport/narrativeweb.py:9736 #: ../gramps/plugins/webreport/webcal.py:1608 msgid "Report Options" msgstr "Параметры отчёта" @@ -18497,11 +18498,11 @@ msgstr "Со_бытие" #: ../gramps/gui/viewmanager.py:608 msgid "_Place" -msgstr "М_есто:" +msgstr "М_есто" #: ../gramps/gui/viewmanager.py:610 msgid "_Source" -msgstr "Ис_точники" +msgstr "Ис_точник" #: ../gramps/gui/viewmanager.py:612 msgid "_Citation" @@ -18693,7 +18694,7 @@ msgstr "Альбом:" #: ../gramps/gui/viewmanager.py:1887 #: ../gramps/plugins/gramplet/statsgramplet.py:139 -#: ../gramps/plugins/webreport/narrativeweb.py:8243 +#: ../gramps/plugins/webreport/narrativeweb.py:8235 msgid "Megabyte|MB" msgstr "Мб" @@ -19052,7 +19053,7 @@ msgid "Error in format" msgstr "Ошибка в формате" #: ../gramps/gui/views/treemodels/treebasemodel.py:534 -#: ../gramps/gui/views/treemodels/treebasemodel.py:582 +#: ../gramps/gui/views/treemodels/treebasemodel.py:579 msgid "Loading items..." msgstr "Загрузка объектов..." @@ -19392,7 +19393,7 @@ msgstr "" msgid "Upgrade Statistics" msgstr "Итоги обновления" -#: ../gramps/plugins/db/bsddb/write.py:1163 +#: ../gramps/plugins/db/bsddb/write.py:1147 #, python-format msgid "" "An attempt is made to save a reference key which is partly bytecode, this is " @@ -19405,11 +19406,11 @@ msgstr "" #. Make a tuple of the functions and classes that we need for #. each of the primary object tables. -#: ../gramps/plugins/db/bsddb/write.py:1232 +#: ../gramps/plugins/db/bsddb/write.py:1214 msgid "Rebuild reference map" msgstr "Воссоздать таблицу ссылок" -#: ../gramps/plugins/db/bsddb/write.py:2005 +#: ../gramps/plugins/db/bsddb/write.py:1978 #, python-format msgid "" "A second transaction is started while there is still a transaction, \"%s\", " @@ -19418,11 +19419,11 @@ msgstr "" "Начата вторая транзакция с базой данных, хотя текущая транзакция, «%s», ещё " "не завершилась." -#: ../gramps/plugins/db/bsddb/write.py:2316 +#: ../gramps/plugins/db/bsddb/write.py:2289 msgid "DB-API version" msgstr "Версия DB-API" -#: ../gramps/plugins/db/bsddb/write.py:2328 +#: ../gramps/plugins/db/bsddb/write.py:2301 msgid "Database db version" msgstr "Версия базы данных" @@ -19577,13 +19578,13 @@ msgid "of %d" msgstr "из %d" #: ../gramps/plugins/docgen/htmldoc.py:273 -#: ../gramps/plugins/webreport/narrativeweb.py:9658 +#: ../gramps/plugins/webreport/narrativeweb.py:9646 #: ../gramps/plugins/webreport/webcal.py:269 msgid "Possible destination error" msgstr "Возможно, некорректный выбор директории назначения" #: ../gramps/plugins/docgen/htmldoc.py:274 -#: ../gramps/plugins/webreport/narrativeweb.py:9659 +#: ../gramps/plugins/webreport/narrativeweb.py:9647 #: ../gramps/plugins/webreport/webcal.py:270 msgid "" "You appear to have set your target directory to a directory used for data " @@ -19924,11 +19925,11 @@ msgstr "Включать ли пустые страницы." #: ../gramps/plugins/textreport/detancestralreport.py:846 #: ../gramps/plugins/textreport/detdescendantreport.py:1037 #: ../gramps/plugins/textreport/familygroup.py:729 -#: ../gramps/plugins/textreport/indivcomplete.py:1066 +#: ../gramps/plugins/textreport/indivcomplete.py:1077 #: ../gramps/plugins/textreport/kinshipreport.py:382 #: ../gramps/plugins/textreport/placereport.py:458 #: ../gramps/plugins/textreport/recordsreport.py:243 -#: ../gramps/plugins/webreport/narrativeweb.py:9801 +#: ../gramps/plugins/webreport/narrativeweb.py:9789 #: ../gramps/plugins/webreport/webcal.py:1661 msgid "Report Options (2)" msgstr "Параметры отчёта (2)" @@ -20112,7 +20113,7 @@ msgstr " поколений неизвестных предков в пусты #: ../gramps/plugins/textreport/detdescendantreport.py:1221 #: ../gramps/plugins/textreport/endoflinereport.py:317 #: ../gramps/plugins/textreport/familygroup.py:873 -#: ../gramps/plugins/textreport/indivcomplete.py:1218 +#: ../gramps/plugins/textreport/indivcomplete.py:1229 #: ../gramps/plugins/textreport/kinshipreport.py:424 #: ../gramps/plugins/textreport/notelinkreport.py:206 #: ../gramps/plugins/textreport/numberofancestorsreport.py:233 @@ -20142,7 +20143,7 @@ msgstr "Основной стиль используемый для отобра #: ../gramps/plugins/textreport/detdescendantreport.py:1173 #: ../gramps/plugins/textreport/endoflinereport.py:299 #: ../gramps/plugins/textreport/familygroup.py:864 -#: ../gramps/plugins/textreport/indivcomplete.py:1186 +#: ../gramps/plugins/textreport/indivcomplete.py:1197 #: ../gramps/plugins/textreport/kinshipreport.py:406 #: ../gramps/plugins/textreport/notelinkreport.py:186 #: ../gramps/plugins/textreport/numberofancestorsreport.py:226 @@ -20950,10 +20951,10 @@ msgstr "Определяет какие люди будут включены в #: ../gramps/plugins/drawreport/statisticschart.py:996 #: ../gramps/plugins/drawreport/timeline.py:421 #: ../gramps/plugins/textreport/birthdayreport.py:417 -#: ../gramps/plugins/textreport/indivcomplete.py:1051 +#: ../gramps/plugins/textreport/indivcomplete.py:1062 #: ../gramps/plugins/textreport/recordsreport.py:223 #: ../gramps/plugins/tool/sortevents.py:172 -#: ../gramps/plugins/webreport/narrativeweb.py:9780 +#: ../gramps/plugins/webreport/narrativeweb.py:9768 #: ../gramps/plugins/webreport/webcal.py:1629 msgid "Filter Person" msgstr "Фильтр по лицу" @@ -20961,7 +20962,7 @@ msgstr "Фильтр по лицу" # !!!FIXME!!! #: ../gramps/plugins/drawreport/statisticschart.py:997 #: ../gramps/plugins/textreport/birthdayreport.py:418 -#: ../gramps/plugins/textreport/indivcomplete.py:1052 +#: ../gramps/plugins/textreport/indivcomplete.py:1063 msgid "The center person for the filter." msgstr "Главное лицо для фильтра." @@ -21090,7 +21091,7 @@ msgstr "Определяет какие люди будут включены в #: ../gramps/plugins/drawreport/timeline.py:422 #: ../gramps/plugins/textreport/recordsreport.py:224 #: ../gramps/plugins/tool/sortevents.py:173 -#: ../gramps/plugins/webreport/narrativeweb.py:9781 +#: ../gramps/plugins/webreport/narrativeweb.py:9769 #: ../gramps/plugins/webreport/webcal.py:1630 msgid "The center person for the filter" msgstr "Главное лицо для фильтра" @@ -21106,7 +21107,7 @@ msgid "Sorting method to use" msgstr "Используемый метод сортировки" #: ../gramps/plugins/drawreport/timeline.py:488 -#: ../gramps/plugins/textreport/indivcomplete.py:1198 +#: ../gramps/plugins/textreport/indivcomplete.py:1209 #: ../gramps/plugins/textreport/notelinkreport.py:196 #: ../gramps/plugins/textreport/placereport.py:527 #: ../gramps/plugins/textreport/recordsreport.py:327 @@ -21335,9 +21336,9 @@ msgstr "Запись людей" #: ../gramps/plugins/export/exportgedcom.py:790 #: ../gramps/plugins/export/exportgedcom.py:1066 #: ../gramps/plugins/export/exportgedcom.py:1158 -#: ../gramps/plugins/lib/libgedcom.py:3997 -#: ../gramps/plugins/lib/libgedcom.py:5708 -#: ../gramps/plugins/lib/libgedcom.py:6841 +#: ../gramps/plugins/lib/libgedcom.py:3996 +#: ../gramps/plugins/lib/libgedcom.py:5707 +#: ../gramps/plugins/lib/libgedcom.py:6840 msgid "FAX" msgstr "Факс" @@ -21359,12 +21360,12 @@ msgid "Writing repositories" msgstr "Запись хранилищ" #: ../gramps/plugins/export/exportgedcom.py:1160 -#: ../gramps/plugins/lib/libgedcom.py:5720 +#: ../gramps/plugins/lib/libgedcom.py:5719 msgid "EMAIL" msgstr "Эл. почта" #: ../gramps/plugins/export/exportgedcom.py:1162 -#: ../gramps/plugins/lib/libgedcom.py:5732 +#: ../gramps/plugins/lib/libgedcom.py:5731 msgid "WWW" msgstr "Веб-страница" @@ -21488,7 +21489,7 @@ msgstr "Распределение разницы в возрасте матер #: ../gramps/plugins/gramplet/gramplet.gpr.py:262 #: ../gramps/plugins/gramplet/gramplet.gpr.py:269 #: ../gramps/plugins/webreport/narrativeweb.py:1931 -#: ../gramps/plugins/webreport/narrativeweb.py:8184 +#: ../gramps/plugins/webreport/narrativeweb.py:8176 msgid "Statistics" msgstr "Статистика" @@ -21864,7 +21865,7 @@ msgstr "Грамплет показывает потомков активног #: ../gramps/plugins/gramplet/gramplet.gpr.py:104 #: ../gramps/plugins/gramplet/gramplet.gpr.py:111 -#: ../gramps/plugins/webreport/narrativeweb.py:7068 +#: ../gramps/plugins/webreport/narrativeweb.py:7060 msgid "Ancestors" msgstr "Предки" @@ -21931,7 +21932,7 @@ msgstr "Грамплет показывает имена в виде текст #: ../gramps/plugins/gramplet/gramplet.gpr.py:205 #: ../gramps/plugins/view/pedigreeview.py:528 #: ../gramps/plugins/view/view.gpr.py:127 -#: ../gramps/plugins/webreport/narrativeweb.py:7254 +#: ../gramps/plugins/webreport/narrativeweb.py:7246 msgid "Pedigree" msgstr "Родословная" @@ -22354,8 +22355,8 @@ msgstr "Отображает все записи, ссылающиеся на в #: ../gramps/plugins/gramplet/gramplet.gpr.py:995 #: ../gramps/plugins/webreport/narrativeweb.py:2720 #: ../gramps/plugins/webreport/narrativeweb.py:3228 -#: ../gramps/plugins/webreport/narrativeweb.py:5801 -#: ../gramps/plugins/webreport/narrativeweb.py:6840 +#: ../gramps/plugins/webreport/narrativeweb.py:5793 +#: ../gramps/plugins/webreport/narrativeweb.py:6832 msgid "References" msgstr "Ссылки" @@ -22887,7 +22888,7 @@ msgstr "Двойной щелчок, чтобы увидеть соответс #: ../gramps/plugins/gramplet/statsgramplet.py:87 #: ../gramps/plugins/textreport/summary.py:240 -#: ../gramps/plugins/webreport/narrativeweb.py:8204 +#: ../gramps/plugins/webreport/narrativeweb.py:8196 msgid "less than 1" msgstr "меньше чем 1" @@ -22898,61 +22899,61 @@ msgstr "меньше чем 1" #: ../gramps/plugins/webreport/narrativeweb.py:1918 #: ../gramps/plugins/webreport/narrativeweb.py:1976 #: ../gramps/plugins/webreport/narrativeweb.py:2041 -#: ../gramps/plugins/webreport/narrativeweb.py:6160 -#: ../gramps/plugins/webreport/narrativeweb.py:8215 -#: ../gramps/plugins/webreport/narrativeweb.py:8283 +#: ../gramps/plugins/webreport/narrativeweb.py:6152 +#: ../gramps/plugins/webreport/narrativeweb.py:8207 +#: ../gramps/plugins/webreport/narrativeweb.py:8275 msgid "Individuals" msgstr "Люди" #: ../gramps/plugins/gramplet/statsgramplet.py:101 -#: ../gramps/plugins/webreport/narrativeweb.py:8218 -#: ../gramps/plugins/webreport/narrativeweb.py:8284 +#: ../gramps/plugins/webreport/narrativeweb.py:8210 +#: ../gramps/plugins/webreport/narrativeweb.py:8276 msgid "Number of individuals" msgstr "Количество человек" #: ../gramps/plugins/gramplet/statsgramplet.py:111 -#: ../gramps/plugins/webreport/narrativeweb.py:8224 -#: ../gramps/plugins/webreport/narrativeweb.py:8291 +#: ../gramps/plugins/webreport/narrativeweb.py:8216 +#: ../gramps/plugins/webreport/narrativeweb.py:8283 msgid "Individuals with unknown gender" msgstr "Лица неизвестного пола" #: ../gramps/plugins/gramplet/statsgramplet.py:115 #: ../gramps/plugins/textreport/summary.py:211 -#: ../gramps/plugins/webreport/narrativeweb.py:8228 -#: ../gramps/plugins/webreport/narrativeweb.py:8295 +#: ../gramps/plugins/webreport/narrativeweb.py:8220 +#: ../gramps/plugins/webreport/narrativeweb.py:8287 msgid "Family Information" msgstr "Семейная информация" #: ../gramps/plugins/gramplet/statsgramplet.py:122 -#: ../gramps/plugins/webreport/narrativeweb.py:8231 +#: ../gramps/plugins/webreport/narrativeweb.py:8223 msgid "Unique surnames" msgstr "Уникальные фамилии" # !!!FIXME!!! #: ../gramps/plugins/gramplet/statsgramplet.py:126 #: ../gramps/plugins/textreport/summary.py:228 -#: ../gramps/plugins/webreport/narrativeweb.py:8235 +#: ../gramps/plugins/webreport/narrativeweb.py:8227 msgid "Media Objects" msgstr "Документы" #: ../gramps/plugins/gramplet/statsgramplet.py:128 -#: ../gramps/plugins/webreport/narrativeweb.py:8237 +#: ../gramps/plugins/webreport/narrativeweb.py:8229 msgid "Total number of media object references" msgstr "Общее количество ссылок на документы" #: ../gramps/plugins/gramplet/statsgramplet.py:132 -#: ../gramps/plugins/webreport/narrativeweb.py:8239 +#: ../gramps/plugins/webreport/narrativeweb.py:8231 msgid "Number of unique media objects" msgstr "Количество уникальных документов" #: ../gramps/plugins/gramplet/statsgramplet.py:137 -#: ../gramps/plugins/webreport/narrativeweb.py:8241 +#: ../gramps/plugins/webreport/narrativeweb.py:8233 msgid "Total size of media objects" msgstr "Общий размер документов" #: ../gramps/plugins/gramplet/statsgramplet.py:141 #: ../gramps/plugins/textreport/summary.py:258 -#: ../gramps/plugins/webreport/narrativeweb.py:8245 +#: ../gramps/plugins/webreport/narrativeweb.py:8237 msgid "Missing Media Objects" msgstr "Утерянные документы" @@ -23560,13 +23561,13 @@ msgstr "Цвет для отображения семей." #: ../gramps/plugins/graph/gvfamilylines.py:398 #: ../gramps/plugins/textreport/familygroup.py:677 -#: ../gramps/plugins/textreport/indivcomplete.py:813 +#: ../gramps/plugins/textreport/indivcomplete.py:824 msgid "Empty report" msgstr "Пустой отчёт" #: ../gramps/plugins/graph/gvfamilylines.py:399 #: ../gramps/plugins/textreport/familygroup.py:678 -#: ../gramps/plugins/textreport/indivcomplete.py:814 +#: ../gramps/plugins/textreport/indivcomplete.py:825 msgid "You did not specify anybody" msgstr "Вы никого не указали" @@ -23676,7 +23677,7 @@ msgid "Graph Style" msgstr "Стиль графа" #: ../gramps/plugins/graph/gvrelgraph.py:203 -#: ../gramps/plugins/textreport/indivcomplete.py:818 +#: ../gramps/plugins/textreport/indivcomplete.py:829 #: ../gramps/plugins/textreport/notelinkreport.py:103 #: ../gramps/plugins/textreport/placereport.py:158 msgid "Generating report" @@ -23743,7 +23744,7 @@ msgstr "" #: ../gramps/plugins/graph/gvrelgraph.py:836 #: ../gramps/plugins/textreport/birthdayreport.py:494 -#: ../gramps/plugins/textreport/indivcomplete.py:1126 +#: ../gramps/plugins/textreport/indivcomplete.py:1137 msgid "Include relationship to center person" msgstr "Включать родство по отношению к центральному лицу" @@ -23869,19 +23870,23 @@ msgstr "Импортировать данные из файлов vCard" msgid "%s could not be opened\n" msgstr "%s не может быть открыт\n" +#. # a "GEDCOM import report" happens in GedcomParser so this is not needed: +#. # (but the imports_test.py unittest currently requires it, so here it is) +#. # a "VCARD import report" happens in VCardParser so this is not needed: +#. # (but the imports_test.py unittest currently requires it, so here it is) #: ../gramps/plugins/importer/importcsv.py:125 -#: ../gramps/plugins/importer/importgedcom.py:152 +#: ../gramps/plugins/importer/importgedcom.py:154 #: ../gramps/plugins/importer/importgeneweb.py:161 #: ../gramps/plugins/importer/importprogen.py:92 -#: ../gramps/plugins/importer/importvcard.py:74 +#: ../gramps/plugins/importer/importvcard.py:76 msgid "Results" msgstr "Результаты" #: ../gramps/plugins/importer/importcsv.py:125 -#: ../gramps/plugins/importer/importgedcom.py:152 +#: ../gramps/plugins/importer/importgedcom.py:154 #: ../gramps/plugins/importer/importgeneweb.py:161 #: ../gramps/plugins/importer/importprogen.py:92 -#: ../gramps/plugins/importer/importvcard.py:74 +#: ../gramps/plugins/importer/importvcard.py:76 msgid "done" msgstr "завершено" @@ -24063,7 +24068,7 @@ msgstr "Импорт CSV" #. translators: leave all/any {...} untranslated #: ../gramps/plugins/importer/importcsv.py:354 #: ../gramps/plugins/importer/importgeneweb.py:273 -#: ../gramps/plugins/importer/importvcard.py:247 +#: ../gramps/plugins/importer/importvcard.py:249 #, python-brace-format msgid "Import Complete: {number_of} second" msgid_plural "Import Complete: {number_of} seconds" @@ -24353,40 +24358,40 @@ msgstr "Импорт из Pro-Gen (%s)" msgid "Date did not match: '%(text)s' (%(msg)s)" msgstr "Даты не совпадают: '%(text)s' (%(msg)s)" -#: ../gramps/plugins/importer/importprogen.py:1791 +#: ../gramps/plugins/importer/importprogen.py:1789 #, python-format msgid "Cannot find father for I%(person)s (Father=%(id)d)" msgstr "Не удаётся найти отца для I%(person)s (Отец=%(id)d)" -#: ../gramps/plugins/importer/importprogen.py:1794 +#: ../gramps/plugins/importer/importprogen.py:1792 #, python-format msgid "Cannot find mother for I%(person)s (Mother=%(mother)d)" msgstr "Не удаётся найти мать для I%(person)s (Мать=%(mother)d)" -#: ../gramps/plugins/importer/importvcard.py:226 +#: ../gramps/plugins/importer/importvcard.py:228 #, python-format msgid "Line %(line)5d: %(prob)s\n" msgstr "Cтрока %(line)5d: %(prob)s\n" -#: ../gramps/plugins/importer/importvcard.py:241 +#: ../gramps/plugins/importer/importvcard.py:243 msgid "vCard import" msgstr "Импорт vCard" -#: ../gramps/plugins/importer/importvcard.py:252 +#: ../gramps/plugins/importer/importvcard.py:254 msgid "VCARD import report: No errors detected" msgstr "Отчёт импорта VCARD: ошибок не обнаружено" -#: ../gramps/plugins/importer/importvcard.py:254 +#: ../gramps/plugins/importer/importvcard.py:256 #, python-format msgid "VCARD import report: %s errors detected\n" msgstr "Отчёт импорта VCARD: обнаружены ошибки %s\n" -#: ../gramps/plugins/importer/importvcard.py:319 +#: ../gramps/plugins/importer/importvcard.py:321 #, python-format msgid "Token >%(token)s< unknown. line skipped: %(line)s" msgstr "Элемент >%(token)s< неизвестен. Строка пропущена: %(line)s" -#: ../gramps/plugins/importer/importvcard.py:333 +#: ../gramps/plugins/importer/importvcard.py:335 msgid "" "BEGIN property not properly closed by END property, Gramps can't cope with " "nested VCards." @@ -24394,12 +24399,12 @@ msgstr "" "Оператор BEGIN корректно не завершён оператором END, Gramps не удалось " "обработать VCards." -#: ../gramps/plugins/importer/importvcard.py:344 +#: ../gramps/plugins/importer/importvcard.py:346 #, python-format msgid "Import of VCards version %s is not supported by Gramps." msgstr "Версия VCards %s не поддерживается этой версией Gramps." -#: ../gramps/plugins/importer/importvcard.py:364 +#: ../gramps/plugins/importer/importvcard.py:366 msgid "" "VCard is malformed missing the compulsory N property, so there is no name; " "skip it." @@ -24407,25 +24412,25 @@ msgstr "" "Неверная запись в VCard, отсутствует обязательный параметр N, как следствие " "- нет имени; будет пропущено." -#: ../gramps/plugins/importer/importvcard.py:369 +#: ../gramps/plugins/importer/importvcard.py:371 msgid "" "VCard is malformed missing the compulsory FN property, get name from N alone." msgstr "" "Неверная запись в VCard, отсутствует обязательный параметр FN, имя будет " "получено только из N." -#: ../gramps/plugins/importer/importvcard.py:373 +#: ../gramps/plugins/importer/importvcard.py:375 msgid "VCard is malformed wrong number of name components." msgstr "Неверное количество компонентов имени в VCard." -#: ../gramps/plugins/importer/importvcard.py:515 +#: ../gramps/plugins/importer/importvcard.py:517 #, python-brace-format msgid "Invalid date in BDAY {vcard_snippet}, preserving date as text." msgstr "" "Неверная дата в поле BDAY {vcard_snippet}, дата будет сохранена в виде " "текста." -#: ../gramps/plugins/importer/importvcard.py:523 +#: ../gramps/plugins/importer/importvcard.py:525 #, python-brace-format msgid "" "Date {vcard_snippet} not in appropriate format yyyy-mm-dd, preserving date " @@ -24809,7 +24814,7 @@ msgid "Common Law Marriage" msgstr "Гражданский брак" #: ../gramps/plugins/lib/libgedcom.py:606 -#: ../gramps/plugins/webreport/narrativeweb.py:9761 +#: ../gramps/plugins/webreport/narrativeweb.py:9749 #: ../gramps/plugins/webreport/webcal.py:1612 msgid "Destination" msgstr "Расположение" @@ -24875,49 +24880,49 @@ msgstr "Строка проигнорирована " msgid "Illegal character%s" msgstr "Недопустимый символ %s" -#: ../gramps/plugins/lib/libgedcom.py:1703 +#: ../gramps/plugins/lib/libgedcom.py:1702 msgid "Your GEDCOM file is corrupted. It appears to have been truncated." msgstr "Ваш файл GEDCOM сломан. Похоже, что он записан не до конца." -#: ../gramps/plugins/lib/libgedcom.py:1785 +#: ../gramps/plugins/lib/libgedcom.py:1784 #, python-format msgid "Import from GEDCOM (%s)" msgstr "Импорт из GEDCOM (%s)" -#: ../gramps/plugins/lib/libgedcom.py:2621 -#: ../gramps/plugins/lib/libgedcom.py:3071 +#: ../gramps/plugins/lib/libgedcom.py:2620 +#: ../gramps/plugins/lib/libgedcom.py:3070 msgid "GEDCOM import" msgstr "Импорт GEDCOM" -#: ../gramps/plugins/lib/libgedcom.py:2649 +#: ../gramps/plugins/lib/libgedcom.py:2648 msgid "GEDCOM import report: No errors detected" msgstr "Отчёт импорта GEDCOM: ошибок не обнаружено" -#: ../gramps/plugins/lib/libgedcom.py:2651 +#: ../gramps/plugins/lib/libgedcom.py:2650 #, python-format msgid "GEDCOM import report: %s errors detected" msgstr "Отчёт импорта GEDCOM: обнаружены ошибки %s" -#: ../gramps/plugins/lib/libgedcom.py:2964 -#: ../gramps/plugins/lib/libgedcom.py:2988 -#: ../gramps/plugins/lib/libgedcom.py:3001 +#: ../gramps/plugins/lib/libgedcom.py:2963 +#: ../gramps/plugins/lib/libgedcom.py:2987 +#: ../gramps/plugins/lib/libgedcom.py:3000 msgid "Line ignored as not understood" msgstr "Строка не распознана и будет проигнорирована" -#: ../gramps/plugins/lib/libgedcom.py:2990 +#: ../gramps/plugins/lib/libgedcom.py:2989 msgid "Tag recognized but not supported" msgstr "Метка распознана, но не поддерживается" # FIXME: is it correct term? -#: ../gramps/plugins/lib/libgedcom.py:3026 +#: ../gramps/plugins/lib/libgedcom.py:3025 msgid "Skipped subordinate line" msgstr "Пропущена зависимая строка" -#: ../gramps/plugins/lib/libgedcom.py:3060 +#: ../gramps/plugins/lib/libgedcom.py:3059 msgid "Records not imported into " msgstr "Записи не импортированы в " -#: ../gramps/plugins/lib/libgedcom.py:3098 +#: ../gramps/plugins/lib/libgedcom.py:3097 #, python-format msgid "" "Error: %(msg)s '%(gramps_id)s' (input as @%(xref)s@) not in input GEDCOM. " @@ -24926,7 +24931,7 @@ msgstr "" "Ошибка: %(msg)s '%(gramps_id)s' (введена как @%(xref)s@) не ввод GEDCOM. " "Запись синтезирована" -#: ../gramps/plugins/lib/libgedcom.py:3107 +#: ../gramps/plugins/lib/libgedcom.py:3106 #, python-format msgid "" "Error: %(msg)s '%(gramps_id)s' (input as @%(xref)s@) not in input GEDCOM. " @@ -24935,7 +24940,7 @@ msgstr "" "Ошибка: %(msg)s '%(gramps_id)s' (введена как @%(xref)s@) не ввод GEDCOM. " "Запись создана с атрибутом 'Неизвестный'" -#: ../gramps/plugins/lib/libgedcom.py:3152 +#: ../gramps/plugins/lib/libgedcom.py:3151 #, python-format msgid "" "Error: family '%(family)s' (input as @%(orig_family)s@) person %(person)s " @@ -24946,7 +24951,7 @@ msgstr "" "(введено как %(orig_person)s) не является членом семьи. Ссылка на семью " "удалена из лица" -#: ../gramps/plugins/lib/libgedcom.py:3230 +#: ../gramps/plugins/lib/libgedcom.py:3229 #, python-format msgid "" "\n" @@ -24966,177 +24971,177 @@ msgstr "" #. message means that the element %s was ignored, but #. expressed the wrong way round because the message is #. truncated for output -#: ../gramps/plugins/lib/libgedcom.py:3302 +#: ../gramps/plugins/lib/libgedcom.py:3301 #, python-format msgid "ADDR element ignored '%s'" msgstr "Элемент ADDR проигнорирован '%s'" -#: ../gramps/plugins/lib/libgedcom.py:3322 +#: ../gramps/plugins/lib/libgedcom.py:3321 msgid "TRLR (trailer)" msgstr "TRLR (трейлер)" -#: ../gramps/plugins/lib/libgedcom.py:3351 +#: ../gramps/plugins/lib/libgedcom.py:3350 msgid "(Submitter):" msgstr "(Исследователь):" -#: ../gramps/plugins/lib/libgedcom.py:3375 -#: ../gramps/plugins/lib/libgedcom.py:7097 +#: ../gramps/plugins/lib/libgedcom.py:3374 +#: ../gramps/plugins/lib/libgedcom.py:7096 msgid "GEDCOM data" msgstr "Данные GEDCOM" -#: ../gramps/plugins/lib/libgedcom.py:3421 +#: ../gramps/plugins/lib/libgedcom.py:3420 msgid "Unknown tag" msgstr "Неизвестная метка" -#: ../gramps/plugins/lib/libgedcom.py:3423 -#: ../gramps/plugins/lib/libgedcom.py:3437 -#: ../gramps/plugins/lib/libgedcom.py:3441 -#: ../gramps/plugins/lib/libgedcom.py:3462 +#: ../gramps/plugins/lib/libgedcom.py:3422 +#: ../gramps/plugins/lib/libgedcom.py:3436 +#: ../gramps/plugins/lib/libgedcom.py:3440 +#: ../gramps/plugins/lib/libgedcom.py:3461 msgid "Top Level" msgstr "Высший уровень" -#: ../gramps/plugins/lib/libgedcom.py:3537 +#: ../gramps/plugins/lib/libgedcom.py:3536 #, python-format msgid "INDI (individual) Gramps ID %s" msgstr "INDI (лицо) Gramps ID %s" -#: ../gramps/plugins/lib/libgedcom.py:3656 +#: ../gramps/plugins/lib/libgedcom.py:3655 msgid "Empty Alias ignored" msgstr "Пустой Alias проигнорирован" -#: ../gramps/plugins/lib/libgedcom.py:4824 +#: ../gramps/plugins/lib/libgedcom.py:4823 #, python-format msgid "FAM (family) Gramps ID %s" msgstr "FAM (семья) Gramps ID %s" -#: ../gramps/plugins/lib/libgedcom.py:5176 -#: ../gramps/plugins/lib/libgedcom.py:6530 +#: ../gramps/plugins/lib/libgedcom.py:5175 +#: ../gramps/plugins/lib/libgedcom.py:6529 msgid "Filename omitted" msgstr "Имя файла опущено" -#: ../gramps/plugins/lib/libgedcom.py:5199 -#: ../gramps/plugins/lib/libgedcom.py:6570 +#: ../gramps/plugins/lib/libgedcom.py:5198 +#: ../gramps/plugins/lib/libgedcom.py:6569 #, python-format msgid "Could not import %s" msgstr "Не удалось импортировать %s" -#: ../gramps/plugins/lib/libgedcom.py:5256 -#: ../gramps/plugins/lib/libgedcom.py:6671 +#: ../gramps/plugins/lib/libgedcom.py:5255 +#: ../gramps/plugins/lib/libgedcom.py:6670 msgid "Media-Type" msgstr "Тип документа" -#: ../gramps/plugins/lib/libgedcom.py:5280 -#: ../gramps/plugins/lib/libgedcom.py:6561 +#: ../gramps/plugins/lib/libgedcom.py:5279 +#: ../gramps/plugins/lib/libgedcom.py:6560 msgid "Multiple FILE in a single OBJE ignored" msgstr "Несколько файлов для одного объекта проигнорировано" #. We have previously found a PLAC -#: ../gramps/plugins/lib/libgedcom.py:5435 +#: ../gramps/plugins/lib/libgedcom.py:5434 msgid "A second PLAC ignored" msgstr "Второй PLAC проигнорирован" #. For RootsMagic etc. Place Details e.g. address, hospital, cemetary -#: ../gramps/plugins/lib/libgedcom.py:5573 +#: ../gramps/plugins/lib/libgedcom.py:5572 msgid "Detail" msgstr "Подробности" #. We have perviously found an ADDR, or have populated location #. from PLAC title -#: ../gramps/plugins/lib/libgedcom.py:5586 +#: ../gramps/plugins/lib/libgedcom.py:5585 msgid "Location already populated; ADDR ignored" msgstr "Местоположение уже указано; ADDR проигнорирован" -#: ../gramps/plugins/lib/libgedcom.py:5991 -#: ../gramps/plugins/lib/libgedcom.py:6878 +#: ../gramps/plugins/lib/libgedcom.py:5990 +#: ../gramps/plugins/lib/libgedcom.py:6877 msgid "Warn: ADDR overwritten" msgstr "Внимание: ADDR перезаписан" -#: ../gramps/plugins/lib/libgedcom.py:6156 +#: ../gramps/plugins/lib/libgedcom.py:6155 msgid "Citation Justification" msgstr "Достоверность цитаты" -#: ../gramps/plugins/lib/libgedcom.py:6183 +#: ../gramps/plugins/lib/libgedcom.py:6182 msgid "REFN ignored" msgstr "REFN проигнорирован" #. SOURce with the given gramps_id had no title -#: ../gramps/plugins/lib/libgedcom.py:6282 +#: ../gramps/plugins/lib/libgedcom.py:6281 #, python-format msgid "No title - ID %s" msgstr "Нет названия - ID %s" -#: ../gramps/plugins/lib/libgedcom.py:6287 +#: ../gramps/plugins/lib/libgedcom.py:6286 #, python-format msgid "SOUR (source) Gramps ID %s" msgstr "SOUR (источник) Gramps ID %s" -#: ../gramps/plugins/lib/libgedcom.py:6537 +#: ../gramps/plugins/lib/libgedcom.py:6536 #, python-format msgid "OBJE (multi-media object) Gramps ID %s" msgstr "OBJE (документ) Gramps ID %s" -#: ../gramps/plugins/lib/libgedcom.py:6767 +#: ../gramps/plugins/lib/libgedcom.py:6766 #, python-format msgid "REPO (repository) Gramps ID %s" msgstr "REPO (хранилище) Gramps ID %s" -#: ../gramps/plugins/lib/libgedcom.py:6828 -#: ../gramps/plugins/lib/libgedcom.py:7804 +#: ../gramps/plugins/lib/libgedcom.py:6827 +#: ../gramps/plugins/lib/libgedcom.py:7803 msgid "Only one phone number supported" msgstr "Поддерживается только один телефонный номер" -#: ../gramps/plugins/lib/libgedcom.py:7013 +#: ../gramps/plugins/lib/libgedcom.py:7012 msgid "HEAD (header)" msgstr "HEAD (заголовок)" -#: ../gramps/plugins/lib/libgedcom.py:7034 +#: ../gramps/plugins/lib/libgedcom.py:7033 msgid "Approved system identification" msgstr "Система идентифицирована" -#: ../gramps/plugins/lib/libgedcom.py:7046 +#: ../gramps/plugins/lib/libgedcom.py:7045 msgid "Generated By" msgstr "Создано с помощью" -#: ../gramps/plugins/lib/libgedcom.py:7062 +#: ../gramps/plugins/lib/libgedcom.py:7061 msgid "Name of software product" msgstr "Название продукта" -#: ../gramps/plugins/lib/libgedcom.py:7076 +#: ../gramps/plugins/lib/libgedcom.py:7075 msgid "Version number of software product" msgstr "Номер версии продукта" -#: ../gramps/plugins/lib/libgedcom.py:7094 +#: ../gramps/plugins/lib/libgedcom.py:7093 #, python-format msgid "Business that produced the product: %s" msgstr "Продукт предоставлен: %s" -#: ../gramps/plugins/lib/libgedcom.py:7116 +#: ../gramps/plugins/lib/libgedcom.py:7115 msgid "Name of source data" msgstr "Название источника данных" -#: ../gramps/plugins/lib/libgedcom.py:7133 +#: ../gramps/plugins/lib/libgedcom.py:7132 msgid "Copyright of source data" msgstr "Авторство источника данных" -#: ../gramps/plugins/lib/libgedcom.py:7150 +#: ../gramps/plugins/lib/libgedcom.py:7149 msgid "Publication date of source data" msgstr "Дата публикации источника данных" #. feature request 2356: avoid genitive form -#: ../gramps/plugins/lib/libgedcom.py:7164 +#: ../gramps/plugins/lib/libgedcom.py:7163 #, python-format msgid "Import from %s" msgstr "Импорт из %s" -#: ../gramps/plugins/lib/libgedcom.py:7203 +#: ../gramps/plugins/lib/libgedcom.py:7202 msgid "Submission record identifier" msgstr "Идентификатор подтверждения записи" -#: ../gramps/plugins/lib/libgedcom.py:7216 +#: ../gramps/plugins/lib/libgedcom.py:7215 msgid "Language of GEDCOM text" msgstr "Язык текста GEDCOM" -#: ../gramps/plugins/lib/libgedcom.py:7237 +#: ../gramps/plugins/lib/libgedcom.py:7236 #, python-format msgid "" "Import of GEDCOM file %(filename)s with DEST=%(by)s, could cause errors in " @@ -25145,88 +25150,88 @@ msgstr "" "Импорт файла GEDCOM %(filename)s с DEST=%(by)s, может вызвать ошибки в " "полученной базе данных!" -#: ../gramps/plugins/lib/libgedcom.py:7240 +#: ../gramps/plugins/lib/libgedcom.py:7239 msgid "Look for nameless events." msgstr "Искать безымянные события." -#: ../gramps/plugins/lib/libgedcom.py:7264 +#: ../gramps/plugins/lib/libgedcom.py:7263 msgid "Character set" msgstr "Кодировка символов" -#: ../gramps/plugins/lib/libgedcom.py:7269 +#: ../gramps/plugins/lib/libgedcom.py:7268 msgid "Character set and version" msgstr "Кодировка символов и её версия" -#: ../gramps/plugins/lib/libgedcom.py:7286 +#: ../gramps/plugins/lib/libgedcom.py:7285 msgid "GEDCOM version not supported" msgstr "Версия GEDCOM не поддерживается" -#: ../gramps/plugins/lib/libgedcom.py:7290 +#: ../gramps/plugins/lib/libgedcom.py:7289 msgid "GEDCOM version" msgstr "Версия GEDCOM" #. Allow Lineage-Linked etc. though it should be in uppercase -#: ../gramps/plugins/lib/libgedcom.py:7298 +#: ../gramps/plugins/lib/libgedcom.py:7297 msgid "GEDCOM FORM should be in uppercase" msgstr "Форма GEDCOM должна быть в верхнем регистре" -#: ../gramps/plugins/lib/libgedcom.py:7300 +#: ../gramps/plugins/lib/libgedcom.py:7299 msgid "GEDCOM FORM not supported" msgstr "Форма GEDCOM не поддерживается" -#: ../gramps/plugins/lib/libgedcom.py:7303 +#: ../gramps/plugins/lib/libgedcom.py:7302 msgid "GEDCOM form" msgstr "Форма GEDCOM" -#: ../gramps/plugins/lib/libgedcom.py:7352 +#: ../gramps/plugins/lib/libgedcom.py:7351 msgid "Creation date of GEDCOM" msgstr "Дата создания GEDCOM" -#: ../gramps/plugins/lib/libgedcom.py:7357 +#: ../gramps/plugins/lib/libgedcom.py:7356 msgid "Creation date and time of GEDCOM" msgstr "Дата и время создания GEDCOM" -#: ../gramps/plugins/lib/libgedcom.py:7398 -#: ../gramps/plugins/lib/libgedcom.py:7440 +#: ../gramps/plugins/lib/libgedcom.py:7397 +#: ../gramps/plugins/lib/libgedcom.py:7439 msgid "Empty note ignored" msgstr "Пустая заметка была проигнорирована" -#: ../gramps/plugins/lib/libgedcom.py:7456 +#: ../gramps/plugins/lib/libgedcom.py:7455 #, python-format msgid "NOTE Gramps ID %s" msgstr "ID заметки Gramps %s" -#: ../gramps/plugins/lib/libgedcom.py:7507 +#: ../gramps/plugins/lib/libgedcom.py:7506 msgid "Submission: Submitter" msgstr "Подтверждение: Исследователь" -#: ../gramps/plugins/lib/libgedcom.py:7509 +#: ../gramps/plugins/lib/libgedcom.py:7508 msgid "Submission: Family file" msgstr "Подтверждение: Семейный файл" -#: ../gramps/plugins/lib/libgedcom.py:7511 +#: ../gramps/plugins/lib/libgedcom.py:7510 msgid "Submission: Temple code" msgstr "Подтверждение: Код церкви" -#: ../gramps/plugins/lib/libgedcom.py:7513 +#: ../gramps/plugins/lib/libgedcom.py:7512 msgid "Submission: Generations of ancestors" msgstr "Подтверждение: Поколения предка" -#: ../gramps/plugins/lib/libgedcom.py:7515 +#: ../gramps/plugins/lib/libgedcom.py:7514 msgid "Submission: Generations of descendants" msgstr "Подтверждение: Поколения потомка" -#: ../gramps/plugins/lib/libgedcom.py:7517 +#: ../gramps/plugins/lib/libgedcom.py:7516 msgid "Submission: Ordinance process flag" msgstr "Подтверждение: Флаг обработки" #. # Okay we have no clue which temple this is. #. # We should tell the user and store it anyway. -#: ../gramps/plugins/lib/libgedcom.py:7743 +#: ../gramps/plugins/lib/libgedcom.py:7742 msgid "Invalid temple code" msgstr "Неверный код церкви" -#: ../gramps/plugins/lib/libgedcom.py:7837 +#: ../gramps/plugins/lib/libgedcom.py:7836 msgid "" "Your GEDCOM file is corrupted. The file appears to be encoded using the " "UTF16 character set, but is missing the BOM marker." @@ -25234,7 +25239,7 @@ msgstr "" "Файл GEDCOM поврежден. Похоже что файл использует набор символов UTF16, но в " "нем отсутствует пометка BOM." -#: ../gramps/plugins/lib/libgedcom.py:7840 +#: ../gramps/plugins/lib/libgedcom.py:7839 msgid "Your GEDCOM file is empty." msgstr "Файл GEDCOM пуст." @@ -28661,8 +28666,8 @@ msgid "Edit the selected person" msgstr "Редактировать выделенное лицо" #: ../gramps/plugins/lib/libpersonview.py:126 -msgid "Remove the selected person" -msgstr "Удалить выделенное лицо" +msgid "Delete the selected person" +msgstr "Удалить выделенное место" #: ../gramps/plugins/lib/libpersonview.py:127 msgid "Merge the selected persons" @@ -29223,7 +29228,7 @@ msgid "Open on maps.google.com" msgstr "Открыть на maps.google.com" #: ../gramps/plugins/mapservices/mapservice.gpr.py:71 -#: ../gramps/plugins/webreport/narrativeweb.py:10107 +#: ../gramps/plugins/webreport/narrativeweb.py:10095 msgid "OpenStreetMap" msgstr "OpenStreetMap" @@ -29284,7 +29289,7 @@ msgstr "Место события" #: ../gramps/plugins/quickview/all_events.py:60 #: ../gramps/plugins/quickview/all_events.py:109 #: ../gramps/plugins/quickview/all_events.py:124 -#: ../gramps/plugins/webreport/narrativeweb.py:6856 +#: ../gramps/plugins/webreport/narrativeweb.py:6848 msgid "Event Type" msgstr "Тип события" @@ -29365,7 +29370,7 @@ msgstr "Родители" #: ../gramps/plugins/webreport/narrativeweb.py:2778 #: ../gramps/plugins/webreport/narrativeweb.py:2780 #: ../gramps/plugins/webreport/narrativeweb.py:3322 -#: ../gramps/plugins/webreport/narrativeweb.py:6207 +#: ../gramps/plugins/webreport/narrativeweb.py:6199 msgid "Partner" msgstr "Партнёр" @@ -29560,7 +29565,7 @@ msgstr "Люди" #: ../gramps/plugins/webreport/narrativeweb.py:2052 #: ../gramps/plugins/webreport/narrativeweb.py:4895 #: ../gramps/plugins/webreport/narrativeweb.py:4992 -#: ../gramps/plugins/webreport/narrativeweb.py:7152 +#: ../gramps/plugins/webreport/narrativeweb.py:7144 msgid "Sources" msgstr "Источники" @@ -30185,7 +30190,7 @@ msgstr[2] "{person}, {age} лет {relation}" #: ../gramps/plugins/textreport/birthdayreport.py:413 #: ../gramps/plugins/textreport/familygroup.py:713 -#: ../gramps/plugins/textreport/indivcomplete.py:1047 +#: ../gramps/plugins/textreport/indivcomplete.py:1058 msgid "Select the filter to be applied to the report." msgstr "Выберите фильтр, который будет применён при создании отчёта." @@ -30219,7 +30224,7 @@ msgid "Year of report" msgstr "Год отчёта" #: ../gramps/plugins/textreport/birthdayreport.py:496 -#: ../gramps/plugins/textreport/indivcomplete.py:1128 +#: ../gramps/plugins/textreport/indivcomplete.py:1139 msgid "Whether to include relationships to the center person" msgstr "Включать ли родство по отношению к главному лицу" @@ -30461,13 +30466,13 @@ msgstr "Число Sosa-Stradonitz для центрального лица." #: ../gramps/plugins/textreport/detancestralreport.py:841 #: ../gramps/plugins/textreport/detdescendantreport.py:1032 -#: ../gramps/plugins/textreport/indivcomplete.py:1060 +#: ../gramps/plugins/textreport/indivcomplete.py:1071 msgid "Page break before end notes" msgstr "Новая страница перед сносками" #: ../gramps/plugins/textreport/detancestralreport.py:843 #: ../gramps/plugins/textreport/detdescendantreport.py:1034 -#: ../gramps/plugins/textreport/indivcomplete.py:1062 +#: ../gramps/plugins/textreport/indivcomplete.py:1073 msgid "Whether to start a new page before the end notes." msgstr "Открывать ли новую страницу перед сносками." @@ -30564,13 +30569,13 @@ msgstr "Добавлять ли ссылки на потомков в списк #: ../gramps/plugins/textreport/detancestralreport.py:915 #: ../gramps/plugins/textreport/detdescendantreport.py:1106 -#: ../gramps/plugins/textreport/indivcomplete.py:1103 +#: ../gramps/plugins/textreport/indivcomplete.py:1114 msgid "Include Photo/Images from Gallery" msgstr "Включать изображения из галерей" #: ../gramps/plugins/textreport/detancestralreport.py:916 #: ../gramps/plugins/textreport/detdescendantreport.py:1107 -#: ../gramps/plugins/textreport/indivcomplete.py:1104 +#: ../gramps/plugins/textreport/indivcomplete.py:1115 msgid "Whether to include images." msgstr "Включать ли изображения." @@ -30579,7 +30584,7 @@ msgstr "Включать ли изображения." #: ../gramps/plugins/textreport/detancestralreport.py:919 #: ../gramps/plugins/textreport/detdescendantreport.py:1110 #: ../gramps/plugins/textreport/familygroup.py:777 -#: ../gramps/plugins/textreport/indivcomplete.py:1108 +#: ../gramps/plugins/textreport/indivcomplete.py:1119 msgid "Include (2)" msgstr "Включить (2)" @@ -30605,13 +30610,13 @@ msgstr "Включать ли ссылки на источники." #: ../gramps/plugins/textreport/detancestralreport.py:929 #: ../gramps/plugins/textreport/detdescendantreport.py:1120 -#: ../gramps/plugins/textreport/indivcomplete.py:1095 +#: ../gramps/plugins/textreport/indivcomplete.py:1106 msgid "Include sources notes" msgstr "Включать заметки об источниках" #: ../gramps/plugins/textreport/detancestralreport.py:931 #: ../gramps/plugins/textreport/detdescendantreport.py:1122 -#: ../gramps/plugins/textreport/indivcomplete.py:1097 +#: ../gramps/plugins/textreport/indivcomplete.py:1108 msgid "" "Whether to include source notes in the Endnotes section. Only works if " "Include sources is selected." @@ -30627,7 +30632,7 @@ msgstr "Включать атрибуты" #: ../gramps/plugins/textreport/detancestralreport.py:936 #: ../gramps/plugins/textreport/detdescendantreport.py:1127 #: ../gramps/plugins/textreport/familygroup.py:768 -#: ../gramps/plugins/textreport/indivcomplete.py:1118 +#: ../gramps/plugins/textreport/indivcomplete.py:1129 msgid "Whether to include attributes." msgstr "Включать ли атрибуты." @@ -30930,129 +30935,129 @@ msgid "The style used for the parent's name" msgstr "Стиль имён родителей" #. make sure it's translated, so it can be used below, in "combine" -#: ../gramps/plugins/textreport/indivcomplete.py:188 +#: ../gramps/plugins/textreport/indivcomplete.py:189 #, python-format msgid "%(str1)s in %(str2)s. " msgstr "%(str1)s в %(str2)s. " #. for example (a stepfather): John Smith, relationship: Step -#: ../gramps/plugins/textreport/indivcomplete.py:244 +#: ../gramps/plugins/textreport/indivcomplete.py:247 #, python-format msgid "%(parent-name)s, relationship: %(rel-type)s" msgstr "%(parent-name)s, отношение: %(rel-type)s" -#: ../gramps/plugins/textreport/indivcomplete.py:292 +#: ../gramps/plugins/textreport/indivcomplete.py:301 msgid "Alternate Parents" msgstr "Альтернативные родители" -#: ../gramps/plugins/textreport/indivcomplete.py:432 -#: ../gramps/plugins/webreport/narrativeweb.py:7137 +#: ../gramps/plugins/textreport/indivcomplete.py:443 +#: ../gramps/plugins/webreport/narrativeweb.py:7129 msgid "Associations" msgstr "Связи" -#: ../gramps/plugins/textreport/indivcomplete.py:577 +#: ../gramps/plugins/textreport/indivcomplete.py:588 msgid "Images" msgstr "Изображения" -#: ../gramps/plugins/textreport/indivcomplete.py:817 -#: ../gramps/plugins/textreport/indivcomplete.py:839 +#: ../gramps/plugins/textreport/indivcomplete.py:828 +#: ../gramps/plugins/textreport/indivcomplete.py:850 #: ../gramps/plugins/textreport/textplugins.gpr.py:214 msgid "Complete Individual Report" msgstr "Полный индивидуальный отчёт" -#: ../gramps/plugins/textreport/indivcomplete.py:919 +#: ../gramps/plugins/textreport/indivcomplete.py:930 #: ../gramps/plugins/tool/dumpgenderstats.py:72 #: ../gramps/plugins/tool/dumpgenderstats.py:96 #: ../gramps/plugins/tool/dumpgenderstats.py:99 msgid "Male" msgstr "Мужской" -#: ../gramps/plugins/textreport/indivcomplete.py:921 +#: ../gramps/plugins/textreport/indivcomplete.py:932 #: ../gramps/plugins/tool/dumpgenderstats.py:73 #: ../gramps/plugins/tool/dumpgenderstats.py:97 #: ../gramps/plugins/tool/dumpgenderstats.py:99 msgid "Female" msgstr "Женский" -#: ../gramps/plugins/textreport/indivcomplete.py:935 +#: ../gramps/plugins/textreport/indivcomplete.py:946 msgid "(image)" msgstr "(изображение)" -#: ../gramps/plugins/textreport/indivcomplete.py:1056 +#: ../gramps/plugins/textreport/indivcomplete.py:1067 msgid "List events chronologically" msgstr "Располагать события в хронологическом порядке" -#: ../gramps/plugins/textreport/indivcomplete.py:1057 +#: ../gramps/plugins/textreport/indivcomplete.py:1068 msgid "Whether to sort events into chronological order." msgstr "Располагать ли события в хронологическом порядке." #. ############################### -#: ../gramps/plugins/textreport/indivcomplete.py:1086 +#: ../gramps/plugins/textreport/indivcomplete.py:1097 msgid "Include Notes" msgstr "Включать заметки" -#: ../gramps/plugins/textreport/indivcomplete.py:1087 +#: ../gramps/plugins/textreport/indivcomplete.py:1098 msgid "Whether to include Person and Family Notes." msgstr "Включать ли заметки лица и семьи." -#: ../gramps/plugins/textreport/indivcomplete.py:1090 +#: ../gramps/plugins/textreport/indivcomplete.py:1101 msgid "Include Source Information" msgstr "Включать информацию об источниках" -#: ../gramps/plugins/textreport/indivcomplete.py:1091 +#: ../gramps/plugins/textreport/indivcomplete.py:1102 msgid "Whether to cite sources." msgstr "Цитировать ли источники." -#: ../gramps/plugins/textreport/indivcomplete.py:1113 +#: ../gramps/plugins/textreport/indivcomplete.py:1124 msgid "Include Tags" msgstr "Включать метки" -#: ../gramps/plugins/textreport/indivcomplete.py:1114 +#: ../gramps/plugins/textreport/indivcomplete.py:1125 msgid "Whether to include tags." msgstr "Включать ли метки." -#: ../gramps/plugins/textreport/indivcomplete.py:1117 +#: ../gramps/plugins/textreport/indivcomplete.py:1128 msgid "Include Attributes" msgstr "Включать атрибуты" -#: ../gramps/plugins/textreport/indivcomplete.py:1121 +#: ../gramps/plugins/textreport/indivcomplete.py:1132 msgid "Include Census Events" msgstr "Включать события переписи" -#: ../gramps/plugins/textreport/indivcomplete.py:1122 +#: ../gramps/plugins/textreport/indivcomplete.py:1133 msgid "Whether to include Census Events." msgstr "Включать ли события переписи." #. ############################### -#: ../gramps/plugins/textreport/indivcomplete.py:1132 +#: ../gramps/plugins/textreport/indivcomplete.py:1143 msgid "Sections" msgstr "Разделы" #. ############################### -#: ../gramps/plugins/textreport/indivcomplete.py:1135 +#: ../gramps/plugins/textreport/indivcomplete.py:1146 msgid "Event groups" msgstr "Группы событий" -#: ../gramps/plugins/textreport/indivcomplete.py:1136 +#: ../gramps/plugins/textreport/indivcomplete.py:1147 msgid "Check if a separate section is required." msgstr "Выберите если требуется отдельный раздел." -#: ../gramps/plugins/textreport/indivcomplete.py:1209 +#: ../gramps/plugins/textreport/indivcomplete.py:1220 msgid "The style used for the spouse's name." msgstr "Стиль имени супруга." -#: ../gramps/plugins/textreport/indivcomplete.py:1228 +#: ../gramps/plugins/textreport/indivcomplete.py:1239 #: ../gramps/plugins/textreport/notelinkreport.py:217 #: ../gramps/plugins/textreport/placereport.py:551 #: ../gramps/plugins/textreport/tagreport.py:979 msgid "The basic style used for table headings." msgstr "Основной стиль используемый для заголовков таблиц." -#: ../gramps/plugins/textreport/indivcomplete.py:1238 +#: ../gramps/plugins/textreport/indivcomplete.py:1249 msgid "The style used for image notes." msgstr "Стиль для заметок к изображениям." -#: ../gramps/plugins/textreport/indivcomplete.py:1248 +#: ../gramps/plugins/textreport/indivcomplete.py:1259 msgid "The style used for image descriptions." msgstr "Стиль для описания изображений." @@ -31666,35 +31671,35 @@ msgstr "Поиск сломанных ссылкок на формат имен msgid "Looking for duplicate spouses" msgstr "Поиск дублированных супругов" -#: ../gramps/plugins/tool/check.py:378 +#: ../gramps/plugins/tool/check.py:377 msgid "Looking for character encoding errors" msgstr "Поиск ошибок кодировки символов" -#: ../gramps/plugins/tool/check.py:419 +#: ../gramps/plugins/tool/check.py:417 msgid "Looking for ctrl characters in notes" msgstr "Поиск ошибочных символов в записках" -#: ../gramps/plugins/tool/check.py:447 +#: ../gramps/plugins/tool/check.py:444 msgid "Looking for bad alternate place names" msgstr "Поиск неверных альтернативных названий мест" -#: ../gramps/plugins/tool/check.py:477 +#: ../gramps/plugins/tool/check.py:473 msgid "Looking for broken family links" msgstr "Поиск сломанных семейных связей" -#: ../gramps/plugins/tool/check.py:689 +#: ../gramps/plugins/tool/check.py:683 msgid "Looking for unused objects" msgstr "Поиск неиспользуемых объектов" -#: ../gramps/plugins/tool/check.py:767 +#: ../gramps/plugins/tool/check.py:761 msgid "Select file" msgstr "Выберите файл" -#: ../gramps/plugins/tool/check.py:800 +#: ../gramps/plugins/tool/check.py:793 msgid "Media object could not be found" msgstr "Документ не найден" -#: ../gramps/plugins/tool/check.py:801 +#: ../gramps/plugins/tool/check.py:794 #, python-format msgid "" "The file:\n" @@ -31711,116 +31716,116 @@ msgstr "" "ссылку из базы данных,\n" "оставить ссылку на отсутствующий файл или выбрать новый файл." -#: ../gramps/plugins/tool/check.py:884 +#: ../gramps/plugins/tool/check.py:877 msgid "Looking for empty people records" msgstr "Поиск пустых записей о лицах" -#: ../gramps/plugins/tool/check.py:891 +#: ../gramps/plugins/tool/check.py:884 msgid "Looking for empty family records" msgstr "Поиск пустых записей о семьях" -#: ../gramps/plugins/tool/check.py:898 +#: ../gramps/plugins/tool/check.py:891 msgid "Looking for empty event records" msgstr "Поиск пустых записей о событиях" -#: ../gramps/plugins/tool/check.py:905 +#: ../gramps/plugins/tool/check.py:898 msgid "Looking for empty source records" msgstr "Поиск пустых записей об источниках" -#: ../gramps/plugins/tool/check.py:912 +#: ../gramps/plugins/tool/check.py:905 msgid "Looking for empty citation records" msgstr "Поиск пустых цитат" -#: ../gramps/plugins/tool/check.py:919 +#: ../gramps/plugins/tool/check.py:912 msgid "Looking for empty place records" msgstr "Поиск пустых записей о местах" -#: ../gramps/plugins/tool/check.py:926 +#: ../gramps/plugins/tool/check.py:919 msgid "Looking for empty media records" msgstr "Поиск пустых записей о документах" -#: ../gramps/plugins/tool/check.py:933 +#: ../gramps/plugins/tool/check.py:926 msgid "Looking for empty repository records" msgstr "Поиск пустых записей о хранилищах" -#: ../gramps/plugins/tool/check.py:940 +#: ../gramps/plugins/tool/check.py:933 msgid "Looking for empty note records" msgstr "Поиск пустых заметкок" -#: ../gramps/plugins/tool/check.py:984 +#: ../gramps/plugins/tool/check.py:977 msgid "Looking for empty families" msgstr "Поиск пустых семей" -#: ../gramps/plugins/tool/check.py:1020 +#: ../gramps/plugins/tool/check.py:1012 msgid "Looking for broken parent relationships" msgstr "Поиск нарушенных отношений родителей/детей" -#: ../gramps/plugins/tool/check.py:1060 +#: ../gramps/plugins/tool/check.py:1051 msgid "Looking for event problems" msgstr "Поиск сломанных событий" -#: ../gramps/plugins/tool/check.py:1233 +#: ../gramps/plugins/tool/check.py:1222 msgid "Looking for person reference problems" msgstr "Поиск сломанных ссылок на людей" -#: ../gramps/plugins/tool/check.py:1267 +#: ../gramps/plugins/tool/check.py:1255 msgid "Looking for family reference problems" msgstr "Поиск сломанных ссылок на семьи" -#: ../gramps/plugins/tool/check.py:1294 +#: ../gramps/plugins/tool/check.py:1281 msgid "Looking for repository reference problems" msgstr "Поиск сломанных ссылок на хранилища" -#: ../gramps/plugins/tool/check.py:1330 +#: ../gramps/plugins/tool/check.py:1316 msgid "Looking for place reference problems" msgstr "Поиск сломанных ссылок на места" -#: ../gramps/plugins/tool/check.py:1446 +#: ../gramps/plugins/tool/check.py:1427 msgid "Looking for citation reference problems" msgstr "Поиск сломанных ссылок на цитаты" -#: ../gramps/plugins/tool/check.py:1564 +#: ../gramps/plugins/tool/check.py:1545 msgid "Looking for source reference problems" msgstr "Поиск сломанных ссылок на источники" -#: ../gramps/plugins/tool/check.py:1608 +#: ../gramps/plugins/tool/check.py:1587 msgid "Looking for media object reference problems" msgstr "Поиск сломанных ссылок на документы" -#: ../gramps/plugins/tool/check.py:1731 +#: ../gramps/plugins/tool/check.py:1709 msgid "Looking for note reference problems" msgstr "Поиск сломанных ссылок на заметки" -#: ../gramps/plugins/tool/check.py:1859 +#: ../gramps/plugins/tool/check.py:1837 msgid "Updating checksums on media" msgstr "Обновление контрольных сумм документов" -#: ../gramps/plugins/tool/check.py:1887 +#: ../gramps/plugins/tool/check.py:1863 msgid "Looking for tag reference problems" msgstr "Поиск сломанных ссылок на метки" -#: ../gramps/plugins/tool/check.py:2032 +#: ../gramps/plugins/tool/check.py:2008 msgid "Looking for media source reference problems" msgstr "Поиск сломанных ссылок на документы" -#: ../gramps/plugins/tool/check.py:2100 +#: ../gramps/plugins/tool/check.py:2076 msgid "Looking for Duplicated Gramps ID problems" msgstr "Поиск проблем связанных с дублированными Gramps ID" -#: ../gramps/plugins/tool/check.py:2331 +#: ../gramps/plugins/tool/check.py:2307 msgid "No errors were found" msgstr "Ошибок не найдено" -#: ../gramps/plugins/tool/check.py:2332 +#: ../gramps/plugins/tool/check.py:2308 msgid "The database has passed internal checks" msgstr "База данных прошла все внутренние проверки успешно" -#: ../gramps/plugins/tool/check.py:2335 +#: ../gramps/plugins/tool/check.py:2311 msgid "No errors were found: the database has passed internal checks." msgstr "База данных прошла все внутренние проверки успешно." #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2342 +#: ../gramps/plugins/tool/check.py:2318 #, python-brace-format msgid "{quantity} broken child/family link was fixed\n" msgid_plural "{quantity} broken child/family links were fixed\n" @@ -31829,18 +31834,18 @@ msgstr[1] "{quantity} нарушенные связи ребёнок/семья msgstr[2] "{quantity} нарушенных связей ребёнок/семья было исправлено\n" # !!!FIXME!!! -#: ../gramps/plugins/tool/check.py:2350 +#: ../gramps/plugins/tool/check.py:2326 msgid "Non existing child" msgstr "Несуществующий ребёнок" # !!!FIXME!!! -#: ../gramps/plugins/tool/check.py:2361 +#: ../gramps/plugins/tool/check.py:2337 #, python-format msgid "%(person)s was removed from the family of %(family)s\n" msgstr "%(person)s был(а) удален(а) из семьи %(family)s\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2368 +#: ../gramps/plugins/tool/check.py:2344 #, python-brace-format msgid "{quantity} broken spouse/family link was fixed\n" msgid_plural "{quantity} broken spouse/family links were fixed\n" @@ -31848,17 +31853,17 @@ msgstr[0] "{quantity} нарушенная связь супруги/семья msgstr[1] "{quantity} нарушенные связи супруги/семья были исправлены\n" msgstr[2] "{quantity} нарушенных связей супруги/семья было исправлено\n" -#: ../gramps/plugins/tool/check.py:2376 ../gramps/plugins/tool/check.py:2404 +#: ../gramps/plugins/tool/check.py:2352 ../gramps/plugins/tool/check.py:2380 msgid "Non existing person" msgstr "Несуществующее лицо" -#: ../gramps/plugins/tool/check.py:2387 ../gramps/plugins/tool/check.py:2415 +#: ../gramps/plugins/tool/check.py:2363 ../gramps/plugins/tool/check.py:2391 #, python-format msgid "%(person)s was restored to the family of %(family)s\n" msgstr "%(person)s был(а) восстановлен(а) в семье %(family)s\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2394 +#: ../gramps/plugins/tool/check.py:2370 #, python-brace-format msgid "{quantity} duplicate spouse/family link was found\n" msgid_plural "{quantity} duplicate spouse/family links were found\n" @@ -31867,7 +31872,7 @@ msgstr[1] "{quantity} дублированные связи супруги/се msgstr[2] "{quantity} дублированных связей супруги/семья было найдено\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2422 +#: ../gramps/plugins/tool/check.py:2398 #, python-brace-format msgid "{quantity} family with no parents or children found, removed.\n" msgid_plural "" @@ -31877,7 +31882,7 @@ msgstr[1] "Удалены {quantity} семьи без родителей или msgstr[2] "Удалено {quantity} семей без родителей или детей.\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2434 +#: ../gramps/plugins/tool/check.py:2410 #, python-brace-format msgid "{quantity} corrupted family relationship fixed\n" msgid_plural "{quantity} corrupted family relationships fixed\n" @@ -31886,7 +31891,7 @@ msgstr[1] "Исправлено {quantity} нарушенных семейных msgstr[2] "Исправлено {quantity} нарушенных семейных отношений\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2442 +#: ../gramps/plugins/tool/check.py:2418 #, python-brace-format msgid "{quantity} place alternate name fixed\n" msgid_plural "{quantity} place alternate names fixed\n" @@ -31894,7 +31899,7 @@ msgstr[0] "{quantity} альтернативное название места msgstr[1] "{quantity} альтернативных названия мест исправлено\n" msgstr[2] "{quantity} альтернативных названий мест исправлено\n" -#: ../gramps/plugins/tool/check.py:2451 +#: ../gramps/plugins/tool/check.py:2427 #, python-brace-format msgid "{quantity} person was referenced but not found\n" msgid_plural "{quantity} persons were referenced, but not found\n" @@ -31904,7 +31909,7 @@ msgstr[2] "{quantity} лиц на которые ссылаются не най # !!!FIXME!!! #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2459 +#: ../gramps/plugins/tool/check.py:2435 #, python-brace-format msgid "{quantity} family was referenced but not found\n" msgid_plural "{quantity} families were referenced, but not found\n" @@ -31913,7 +31918,7 @@ msgstr[1] "{quantity} семьи на которые ссылаются не н msgstr[2] "{quantity} семей на которые ссылаются не найдены\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2469 +#: ../gramps/plugins/tool/check.py:2445 #, python-brace-format msgid "{quantity} date was corrected\n" msgid_plural "{quantity} dates were corrected\n" @@ -31922,7 +31927,7 @@ msgstr[1] "{quantity} даты исправлены\n" msgstr[2] "{quantity} дат исправлено\n" # !!!FIXME!!! -#: ../gramps/plugins/tool/check.py:2478 +#: ../gramps/plugins/tool/check.py:2454 #, python-brace-format msgid "{quantity} repository was referenced but not found\n" msgid_plural "{quantity} repositories were referenced, but not found\n" @@ -31932,7 +31937,7 @@ msgstr[2] "{quantity} хранилищ на которые ссылаются н # !!!FIXME!!! #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2488 ../gramps/plugins/tool/check.py:2575 +#: ../gramps/plugins/tool/check.py:2464 ../gramps/plugins/tool/check.py:2551 #, python-brace-format msgid "{quantity} media object was referenced but not found\n" msgid_plural "{quantity} media objects were referenced, but not found\n" @@ -31940,7 +31945,7 @@ msgstr[0] "{quantity} документ на который ссылаются н msgstr[1] "{quantity} документа на которые ссылаются не найдены\n" msgstr[2] "{quantity} документов на которые ссылаются не найдены\n" -#: ../gramps/plugins/tool/check.py:2499 +#: ../gramps/plugins/tool/check.py:2475 #, python-brace-format msgid "Reference to {quantity} missing media object was kept\n" msgid_plural "References to {quantity} media objects were kept\n" @@ -31949,7 +31954,7 @@ msgstr[1] "Ссылки на {quantity} отсутствующих докуме msgstr[2] "Ссылки на {quantity} отсутствующих документов были сохранены\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2507 +#: ../gramps/plugins/tool/check.py:2483 #, python-brace-format msgid "{quantity} missing media object was replaced\n" msgid_plural "{quantity} missing media objects were replaced\n" @@ -31958,7 +31963,7 @@ msgstr[1] "{quantity} отсутствующих документа замене msgstr[2] "{quantity} отсутствующих документов заменено\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2515 +#: ../gramps/plugins/tool/check.py:2491 #, python-brace-format msgid "{quantity} missing media object was removed\n" msgid_plural "{quantity} missing media objects were removed\n" @@ -31968,7 +31973,7 @@ msgstr[2] "{quantity} отсутствующих документов удале # !!!FIXME!!! #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2523 +#: ../gramps/plugins/tool/check.py:2499 #, python-brace-format msgid "{quantity} event was referenced but not found\n" msgid_plural "{quantity} events were referenced, but not found\n" @@ -31977,7 +31982,7 @@ msgstr[1] "{quantity} события на которые ссылаются не msgstr[2] "{quantity} событий на которые ссылаются не найдены\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2531 +#: ../gramps/plugins/tool/check.py:2507 #, python-brace-format msgid "{quantity} invalid birth event name was fixed\n" msgid_plural "{quantity} invalid birth event names were fixed\n" @@ -31986,7 +31991,7 @@ msgstr[1] "{quantity} неверных названия событий рожд msgstr[2] "{quantity} неверных названия событий рождения исправлено\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2539 +#: ../gramps/plugins/tool/check.py:2515 #, python-brace-format msgid "{quantity} invalid death event name was fixed\n" msgid_plural "{quantity} invalid death event names were fixed\n" @@ -31996,7 +32001,7 @@ msgstr[2] "{quantity} неверных названий события смер # !!!FIXME!!! #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2547 +#: ../gramps/plugins/tool/check.py:2523 #, python-brace-format msgid "{quantity} place was referenced but not found\n" msgid_plural "{quantity} places were referenced, but not found\n" @@ -32004,7 +32009,7 @@ msgstr[0] "{quantity} место на которое ссылаются не н msgstr[1] "{quantity} места на которые ссылаются не найдены\n" msgstr[2] "{quantity} мест на которые ссылаются не найдены\n" -#: ../gramps/plugins/tool/check.py:2556 +#: ../gramps/plugins/tool/check.py:2532 #, python-brace-format msgid "{quantity} citation was referenced but not found\n" msgid_plural "{quantity} citations were referenced, but not found\n" @@ -32012,7 +32017,7 @@ msgstr[0] "{quantity} цитата на которую ссылаются не msgstr[1] "{quantity} цитаты на которые ссылаются не найдены\n" msgstr[2] "{quantity} цитат на которые ссылаются не найдены\n" -#: ../gramps/plugins/tool/check.py:2566 +#: ../gramps/plugins/tool/check.py:2542 #, python-brace-format msgid "{quantity} source was referenced but not found\n" msgid_plural "{quantity} sources were referenced, but not found\n" @@ -32021,7 +32026,7 @@ msgstr[1] "{quantity} источника на которые ссылаются msgstr[2] "{quantity} источников на которые ссылаются не найдены\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2584 +#: ../gramps/plugins/tool/check.py:2560 #, python-brace-format msgid "{quantity} note object was referenced but not found\n" msgid_plural "{quantity} note objects were referenced, but not found\n" @@ -32030,7 +32035,7 @@ msgstr[1] "{quantity} заметки на которые ссылаются не msgstr[2] "{quantity} заметкок на которые ссылаются не найдены\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2594 ../gramps/plugins/tool/check.py:2604 +#: ../gramps/plugins/tool/check.py:2570 ../gramps/plugins/tool/check.py:2580 #, python-brace-format msgid "{quantity} tag object was referenced but not found\n" msgid_plural "{quantity} tag objects were referenced, but not found\n" @@ -32039,7 +32044,7 @@ msgstr[1] "{quantity} метки на которые ссылаются не н msgstr[2] "{quantity} меток на которые ссылаются не найдены\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2614 +#: ../gramps/plugins/tool/check.py:2590 #, python-brace-format msgid "{quantity} invalid name format reference was removed\n" msgid_plural "{quantity} invalid name format references were removed\n" @@ -32047,7 +32052,7 @@ msgstr[0] "{quantity} неверная ссылка на формат имён msgstr[1] "{quantity} неверные ссылки на формат имён удалены\n" msgstr[2] "{quantity} неверных ссылок на формат имён удалено\n" -#: ../gramps/plugins/tool/check.py:2625 +#: ../gramps/plugins/tool/check.py:2601 #, python-brace-format msgid "{quantity} invalid source citation was fixed\n" msgid_plural "{quantity} invalid source citations were fixed\n" @@ -32056,7 +32061,7 @@ msgstr[1] "{quantity} неверных источника цитат испра msgstr[2] "{quantity} неверных источников цитат исправлено\n" #. translators: leave all/any {...} untranslated -#: ../gramps/plugins/tool/check.py:2634 +#: ../gramps/plugins/tool/check.py:2610 #, python-brace-format msgid "{quantity} Duplicated Gramps ID fixed\n" msgid_plural "{quantity} Duplicated Gramps IDs fixed\n" @@ -32065,7 +32070,7 @@ msgstr[1] "{quantity} дублированных Gramps ID исправлено\ msgstr[2] "{quantity} дублированных Gramps ID исправлено\n" # need proper plural -#: ../gramps/plugins/tool/check.py:2641 +#: ../gramps/plugins/tool/check.py:2617 #, python-format msgid "" "%(empty_obj)d empty objects removed:\n" @@ -32088,11 +32093,11 @@ msgstr "" " %(repo)d хранилищ\n" " %(note)d заметок\n" -#: ../gramps/plugins/tool/check.py:2688 +#: ../gramps/plugins/tool/check.py:2664 msgid "Integrity Check Results" msgstr "Результаты проверки целостности" -#: ../gramps/plugins/tool/check.py:2694 +#: ../gramps/plugins/tool/check.py:2670 msgid "Check and Repair" msgstr "Проверка и коррекция" @@ -32971,7 +32976,7 @@ msgstr "Неиспользуемые объекты" msgid "Mark" msgstr "Отметка" -#: ../gramps/plugins/tool/removeunused.py:300 +#: ../gramps/plugins/tool/removeunused.py:299 msgid "Remove unused objects" msgstr "Удалить неиспользуемые объекты" @@ -35090,14 +35095,14 @@ msgstr "Домой" #: ../gramps/plugins/webreport/narrativeweb.py:1926 #: ../gramps/plugins/webreport/narrativeweb.py:2061 -#: ../gramps/plugins/webreport/narrativeweb.py:5702 +#: ../gramps/plugins/webreport/narrativeweb.py:5694 msgid "Thumbnails" msgstr "Миниатюры" #: ../gramps/plugins/webreport/narrativeweb.py:1927 #: ../gramps/plugins/webreport/narrativeweb.py:2068 -#: ../gramps/plugins/webreport/narrativeweb.py:5899 -#: ../gramps/plugins/webreport/narrativeweb.py:9977 +#: ../gramps/plugins/webreport/narrativeweb.py:5891 +#: ../gramps/plugins/webreport/narrativeweb.py:9965 msgid "Download" msgstr "Загрузить" @@ -35105,8 +35110,8 @@ msgstr "Загрузить" #: ../gramps/plugins/webreport/narrativeweb.py:1928 #: ../gramps/plugins/webreport/narrativeweb.py:1994 #: ../gramps/plugins/webreport/narrativeweb.py:2069 -#: ../gramps/plugins/webreport/narrativeweb.py:8018 -#: ../gramps/plugins/webreport/narrativeweb.py:8132 +#: ../gramps/plugins/webreport/narrativeweb.py:8010 +#: ../gramps/plugins/webreport/narrativeweb.py:8124 msgid "Address Book" msgstr "Адресная книга" @@ -35114,7 +35119,7 @@ msgstr "Адресная книга" #: ../gramps/plugins/webreport/narrativeweb.py:1930 #: ../gramps/plugins/webreport/narrativeweb.py:2076 #: ../gramps/plugins/webreport/narrativeweb.py:2113 -#: ../gramps/plugins/webreport/narrativeweb.py:6015 +#: ../gramps/plugins/webreport/narrativeweb.py:6007 msgid "Contact" msgstr "Контакт" @@ -35124,17 +35129,17 @@ msgid "Web Calendar" msgstr "Веб-календарь" #: ../gramps/plugins/webreport/narrativeweb.py:2012 -#: ../gramps/plugins/webreport/narrativeweb.py:5370 +#: ../gramps/plugins/webreport/narrativeweb.py:5366 msgid "Previous" msgstr "Предыдущее" #: ../gramps/plugins/webreport/narrativeweb.py:2014 -#: ../gramps/plugins/webreport/narrativeweb.py:5382 +#: ../gramps/plugins/webreport/narrativeweb.py:5378 msgid "Next" msgstr "Следующее" #: ../gramps/plugins/webreport/narrativeweb.py:2489 -#: ../gramps/plugins/webreport/narrativeweb.py:8051 +#: ../gramps/plugins/webreport/narrativeweb.py:8043 msgid "Web Links" msgstr "Веб-ссылки" @@ -35148,8 +35153,8 @@ msgstr "С.П.Д." #: ../gramps/plugins/webreport/narrativeweb.py:2754 #: ../gramps/plugins/webreport/narrativeweb.py:2755 -#: ../gramps/plugins/webreport/narrativeweb.py:6595 -#: ../gramps/plugins/webreport/narrativeweb.py:6903 +#: ../gramps/plugins/webreport/narrativeweb.py:6587 +#: ../gramps/plugins/webreport/narrativeweb.py:6895 msgid "Family Map" msgstr "Карта семьи" @@ -35164,7 +35169,7 @@ msgstr "Расположения" #: ../gramps/plugins/webreport/narrativeweb.py:3277 #: ../gramps/plugins/webreport/narrativeweb.py:4661 -#: ../gramps/plugins/webreport/narrativeweb.py:6229 +#: ../gramps/plugins/webreport/narrativeweb.py:6221 msgid "" msgstr "<отсутствует>" @@ -35181,7 +35186,7 @@ msgstr "" #. Name Column #: ../gramps/plugins/webreport/narrativeweb.py:3310 -#: ../gramps/plugins/webreport/narrativeweb.py:6195 +#: ../gramps/plugins/webreport/narrativeweb.py:6187 msgid "Given Name" msgstr "Имя" @@ -35191,14 +35196,14 @@ msgstr "Имя" #: ../gramps/plugins/webreport/narrativeweb.py:4203 #: ../gramps/plugins/webreport/narrativeweb.py:4868 #: ../gramps/plugins/webreport/narrativeweb.py:5109 -#: ../gramps/plugins/webreport/narrativeweb.py:6124 -#: ../gramps/plugins/webreport/narrativeweb.py:7813 -#: ../gramps/plugins/webreport/narrativeweb.py:8705 -#: ../gramps/plugins/webreport/narrativeweb.py:9236 -#: ../gramps/plugins/webreport/narrativeweb.py:9289 -#: ../gramps/plugins/webreport/narrativeweb.py:9309 -#: ../gramps/plugins/webreport/narrativeweb.py:9318 -#: ../gramps/plugins/webreport/narrativeweb.py:9360 +#: ../gramps/plugins/webreport/narrativeweb.py:6116 +#: ../gramps/plugins/webreport/narrativeweb.py:7805 +#: ../gramps/plugins/webreport/narrativeweb.py:8697 +#: ../gramps/plugins/webreport/narrativeweb.py:9224 +#: ../gramps/plugins/webreport/narrativeweb.py:9277 +#: ../gramps/plugins/webreport/narrativeweb.py:9297 +#: ../gramps/plugins/webreport/narrativeweb.py:9306 +#: ../gramps/plugins/webreport/narrativeweb.py:9348 msgid "Narrated Web Site Report" msgstr "Повествовательный сайт" @@ -35348,11 +35353,11 @@ msgstr "Название" msgid "Mime Type" msgstr "Тип MIME" -#: ../gramps/plugins/webreport/narrativeweb.py:5249 +#: ../gramps/plugins/webreport/narrativeweb.py:5245 msgid "Below unused media objects" msgstr "Ниже неиспользуемые документы" -#: ../gramps/plugins/webreport/narrativeweb.py:5371 +#: ../gramps/plugins/webreport/narrativeweb.py:5367 #, python-format msgid "" "%(strong1_start)s%(page_number)d%(strong_end)s of %(strong2_start)s" @@ -35362,19 +35367,19 @@ msgstr "" "%(total_pages)d%(strong_end)s" #. missing media error message -#: ../gramps/plugins/webreport/narrativeweb.py:5385 +#: ../gramps/plugins/webreport/narrativeweb.py:5381 msgid "The file has been moved or deleted." msgstr "Файл был перемещён или удалён." -#: ../gramps/plugins/webreport/narrativeweb.py:5541 +#: ../gramps/plugins/webreport/narrativeweb.py:5537 msgid "File Type" msgstr "Тип файла" -#: ../gramps/plugins/webreport/narrativeweb.py:5644 +#: ../gramps/plugins/webreport/narrativeweb.py:5640 msgid "Missing media object:" msgstr "Документ утерян:" -#: ../gramps/plugins/webreport/narrativeweb.py:5707 +#: ../gramps/plugins/webreport/narrativeweb.py:5699 msgid "" "This page displays a indexed list of all the media objects in this " "database. It is sorted by media title. There is an index of all the media " @@ -35384,11 +35389,11 @@ msgstr "" "Эта страница содержит список всех документов из базы данных, отсортированный " "по названию. Выбор миниатюры ведёт к странице соответствующего изображения." -#: ../gramps/plugins/webreport/narrativeweb.py:5726 +#: ../gramps/plugins/webreport/narrativeweb.py:5718 msgid "Thumbnail Preview" msgstr "Миниатюра" -#: ../gramps/plugins/webreport/narrativeweb.py:5905 +#: ../gramps/plugins/webreport/narrativeweb.py:5897 msgid "" "This page is for the user/ creator of this Family Tree/ Narrative website to " "share a couple of files with you regarding their family. If there are any " @@ -35404,20 +35409,20 @@ msgstr "" "предоставлены под теми же условиями распространения (авторским правом), как " "и остальные страницы этого сайта." -#: ../gramps/plugins/webreport/narrativeweb.py:5931 +#: ../gramps/plugins/webreport/narrativeweb.py:5923 msgid "File Name" msgstr "Имя файла" -#: ../gramps/plugins/webreport/narrativeweb.py:5933 +#: ../gramps/plugins/webreport/narrativeweb.py:5925 msgid "Last Modified" msgstr "Дата последнего изменения" -#: ../gramps/plugins/webreport/narrativeweb.py:6125 +#: ../gramps/plugins/webreport/narrativeweb.py:6117 msgid "Creating individual pages" msgstr "Создаю индивидуальные страницы" #. Individual List page message -#: ../gramps/plugins/webreport/narrativeweb.py:6168 +#: ../gramps/plugins/webreport/narrativeweb.py:6160 msgid "" "This page contains an index of all the individuals in the database, sorted " "by their last names. Selecting the person’s name will take you to that " @@ -35426,18 +35431,18 @@ msgstr "" "Эта страница содержит список лиц из базы данных, отсортированный по фамилии. " "Выбор лица приведёт к странице этого лица." -#: ../gramps/plugins/webreport/narrativeweb.py:6253 +#: ../gramps/plugins/webreport/narrativeweb.py:6245 #, python-format msgid "Surnames %(surname)s beginning with letter %(letter)s" msgstr "Фамилии %(surname)s на букву %(letter)s" -#: ../gramps/plugins/webreport/narrativeweb.py:6755 +#: ../gramps/plugins/webreport/narrativeweb.py:6747 #, python-format msgid "Tracking %s" msgstr "Отслеживание %s" #. page description -#: ../gramps/plugins/webreport/narrativeweb.py:6759 +#: ../gramps/plugins/webreport/narrativeweb.py:6751 msgid "" "This map page represents that person and any descendants with all of their " "event/ places. If you place your mouse over the marker it will display the " @@ -35450,23 +35455,23 @@ msgstr "" "места. Отметки и ссылки хранятся с сортировкой по дате (если такая есть). " "Клик на имени места в разделе ссылок перенесёт Вас на страницу данного места." -#: ../gramps/plugins/webreport/narrativeweb.py:6830 +#: ../gramps/plugins/webreport/narrativeweb.py:6822 msgid "Drop Markers" msgstr "Не показывать маркеры" -#: ../gramps/plugins/webreport/narrativeweb.py:6855 +#: ../gramps/plugins/webreport/narrativeweb.py:6847 msgid "Place Title" msgstr "Название места" -#: ../gramps/plugins/webreport/narrativeweb.py:7348 +#: ../gramps/plugins/webreport/narrativeweb.py:7340 msgid "Call Name" msgstr "Имя в быту" -#: ../gramps/plugins/webreport/narrativeweb.py:7366 +#: ../gramps/plugins/webreport/narrativeweb.py:7358 msgid "Nick Name" msgstr "Прозвище" -#: ../gramps/plugins/webreport/narrativeweb.py:7412 +#: ../gramps/plugins/webreport/narrativeweb.py:7404 msgid "Age at Death" msgstr "Возраст на момент смерти" @@ -35474,35 +35479,35 @@ msgstr "Возраст на момент смерти" #. actually be StepFather-in-law), but it is too expensive to #. calculate out the correct relationship using the Relationship #. Calculator -#: ../gramps/plugins/webreport/narrativeweb.py:7546 +#: ../gramps/plugins/webreport/narrativeweb.py:7538 msgid "Stepfather" msgstr "Отчим" -#: ../gramps/plugins/webreport/narrativeweb.py:7556 +#: ../gramps/plugins/webreport/narrativeweb.py:7548 msgid "Stepmother" msgstr "Мачеха" -#: ../gramps/plugins/webreport/narrativeweb.py:7582 +#: ../gramps/plugins/webreport/narrativeweb.py:7574 msgid "Not siblings" msgstr "Не братья/сестры" -#: ../gramps/plugins/webreport/narrativeweb.py:7662 +#: ../gramps/plugins/webreport/narrativeweb.py:7654 msgid "Relation to the center person" msgstr "Родство с базовым лицом" -#: ../gramps/plugins/webreport/narrativeweb.py:7699 +#: ../gramps/plugins/webreport/narrativeweb.py:7691 msgid "Relation to main person" msgstr "Родство с базовым лицом" -#: ../gramps/plugins/webreport/narrativeweb.py:7703 +#: ../gramps/plugins/webreport/narrativeweb.py:7695 msgid "Relation within this family (if not by birth)" msgstr "Отношение к этой семье (для не родных)" -#: ../gramps/plugins/webreport/narrativeweb.py:7814 +#: ../gramps/plugins/webreport/narrativeweb.py:7806 msgid "Creating repository pages" msgstr "Создаю страницы хранилищ" -#: ../gramps/plugins/webreport/narrativeweb.py:7857 +#: ../gramps/plugins/webreport/narrativeweb.py:7849 msgid "" "This page contains an index of all the repositories in the database, sorted " "by their title. Clicking on a repositories’s title will take you to " @@ -35511,12 +35516,12 @@ msgstr "" "Эта страница содержит список всех хранилищ из базы данных, отсортированный " "по названию. Выбор названия ведёт к странице данного хранилища." -#: ../gramps/plugins/webreport/narrativeweb.py:7875 +#: ../gramps/plugins/webreport/narrativeweb.py:7867 msgid "Repository |Name" msgstr "Название" #. Address Book Page message -#: ../gramps/plugins/webreport/narrativeweb.py:8026 +#: ../gramps/plugins/webreport/narrativeweb.py:8018 msgid "" "This page contains an index of all the individuals in the database, sorted " "by their surname, with one of the following: Address, Residence, or Web " @@ -35526,256 +35531,256 @@ msgstr "" "Эта страница содержит список всех лиц из базы данных, отсортированный по " "фамилии. Выбор имени ведёт к странице соответствующего лица." -#: ../gramps/plugins/webreport/narrativeweb.py:8048 +#: ../gramps/plugins/webreport/narrativeweb.py:8040 msgid "Full Name" msgstr "Полное имя" -#: ../gramps/plugins/webreport/narrativeweb.py:8212 +#: ../gramps/plugins/webreport/narrativeweb.py:8204 msgid "Database overview" msgstr "Обзор базы данных" -#: ../gramps/plugins/webreport/narrativeweb.py:8279 +#: ../gramps/plugins/webreport/narrativeweb.py:8271 msgid "Narrative web content report for" msgstr "Содержание повествовательного сайта" -#: ../gramps/plugins/webreport/narrativeweb.py:8494 +#: ../gramps/plugins/webreport/narrativeweb.py:8486 #, python-format msgid "Neither %(current)s nor %(parent)s are directories" msgstr "Ни %(current)s, ни %(parent)s не являются каталогами" -#: ../gramps/plugins/webreport/narrativeweb.py:8503 -#: ../gramps/plugins/webreport/narrativeweb.py:8508 -#: ../gramps/plugins/webreport/narrativeweb.py:8521 -#: ../gramps/plugins/webreport/narrativeweb.py:8526 +#: ../gramps/plugins/webreport/narrativeweb.py:8495 +#: ../gramps/plugins/webreport/narrativeweb.py:8500 +#: ../gramps/plugins/webreport/narrativeweb.py:8513 +#: ../gramps/plugins/webreport/narrativeweb.py:8518 #, python-format msgid "Could not create the directory: %s" msgstr "Ошибка создания каталога: %s" -#: ../gramps/plugins/webreport/narrativeweb.py:8533 +#: ../gramps/plugins/webreport/narrativeweb.py:8525 msgid "Invalid file name" msgstr "Некорректное имя файла" -#: ../gramps/plugins/webreport/narrativeweb.py:8534 +#: ../gramps/plugins/webreport/narrativeweb.py:8526 msgid "The archive file must be a file, not a directory" msgstr "Архивом должен быть файл, а не каталог" -#: ../gramps/plugins/webreport/narrativeweb.py:8669 +#: ../gramps/plugins/webreport/narrativeweb.py:8661 #, python-format msgid "ID=%(grampsid)s, path=%(dir)s" msgstr "ID=%(grampsid)s, путь=%(dir)s" -#: ../gramps/plugins/webreport/narrativeweb.py:8674 +#: ../gramps/plugins/webreport/narrativeweb.py:8666 msgid "Missing media objects:" msgstr "Утерянные документы:" -#: ../gramps/plugins/webreport/narrativeweb.py:8706 +#: ../gramps/plugins/webreport/narrativeweb.py:8698 msgid "Constructing list of other objects..." msgstr "Составляется список других объектов..." -#: ../gramps/plugins/webreport/narrativeweb.py:8945 +#: ../gramps/plugins/webreport/narrativeweb.py:8933 #, python-format msgid "Family of %(husband)s and %(spouse)s" msgstr "Семья %(husband)s и %(spouse)s" #. Only the name of the husband is known #. Only the name of the wife is known -#: ../gramps/plugins/webreport/narrativeweb.py:8951 -#: ../gramps/plugins/webreport/narrativeweb.py:8955 +#: ../gramps/plugins/webreport/narrativeweb.py:8939 +#: ../gramps/plugins/webreport/narrativeweb.py:8943 #, python-format msgid "Family of %s" msgstr "Семья %s" -#: ../gramps/plugins/webreport/narrativeweb.py:9237 +#: ../gramps/plugins/webreport/narrativeweb.py:9225 msgid "Creating GENDEX file" msgstr "Создаю файл GENDEX" -#: ../gramps/plugins/webreport/narrativeweb.py:9290 +#: ../gramps/plugins/webreport/narrativeweb.py:9278 msgid "Creating surname pages" msgstr "Создаю страницы фамилий" -#: ../gramps/plugins/webreport/narrativeweb.py:9310 +#: ../gramps/plugins/webreport/narrativeweb.py:9298 msgid "Creating thumbnail preview page..." msgstr "Создаю страницу предпросмотра изображений..." -#: ../gramps/plugins/webreport/narrativeweb.py:9319 +#: ../gramps/plugins/webreport/narrativeweb.py:9307 msgid "Creating statistics page..." msgstr "Создаю страницы статистики..." -#: ../gramps/plugins/webreport/narrativeweb.py:9361 +#: ../gramps/plugins/webreport/narrativeweb.py:9349 msgid "Creating address book pages ..." msgstr "Создаю адресную книгу..." -#: ../gramps/plugins/webreport/narrativeweb.py:9751 +#: ../gramps/plugins/webreport/narrativeweb.py:9739 msgid "Store web pages in .tar.gz archive" msgstr "Сохранить веб страницы в архиве .tar.gz" -#: ../gramps/plugins/webreport/narrativeweb.py:9753 +#: ../gramps/plugins/webreport/narrativeweb.py:9741 msgid "Whether to store the web pages in an archive file" msgstr "Сохранить веб-страницы в сжатом архиве" -#: ../gramps/plugins/webreport/narrativeweb.py:9764 +#: ../gramps/plugins/webreport/narrativeweb.py:9752 #: ../gramps/plugins/webreport/webcal.py:1615 msgid "The destination directory for the web files" msgstr "Каталог размещения веб файлов" -#: ../gramps/plugins/webreport/narrativeweb.py:9770 +#: ../gramps/plugins/webreport/narrativeweb.py:9758 msgid "My Family Tree" msgstr "Моё семейное древо" -#: ../gramps/plugins/webreport/narrativeweb.py:9770 +#: ../gramps/plugins/webreport/narrativeweb.py:9758 msgid "Web site title" msgstr "Название сайта" -#: ../gramps/plugins/webreport/narrativeweb.py:9771 +#: ../gramps/plugins/webreport/narrativeweb.py:9759 msgid "The title of the web site" msgstr "Название веб-сайта" -#: ../gramps/plugins/webreport/narrativeweb.py:9776 +#: ../gramps/plugins/webreport/narrativeweb.py:9764 msgid "Select filter to restrict people that appear on web site" msgstr "Выберите фильтр для отбора лиц в отчёт" -#: ../gramps/plugins/webreport/narrativeweb.py:9792 +#: ../gramps/plugins/webreport/narrativeweb.py:9780 msgid "This is a secure site (https)" msgstr "Это защищённый сайт (https)" -#: ../gramps/plugins/webreport/narrativeweb.py:9794 +#: ../gramps/plugins/webreport/narrativeweb.py:9782 msgid "Whether to use http:// or https://" msgstr "Использовать http:// или https://" -#: ../gramps/plugins/webreport/narrativeweb.py:9804 +#: ../gramps/plugins/webreport/narrativeweb.py:9792 #: ../gramps/plugins/webreport/webcal.py:1636 msgid "File extension" msgstr "Расширение файла" -#: ../gramps/plugins/webreport/narrativeweb.py:9807 +#: ../gramps/plugins/webreport/narrativeweb.py:9795 #: ../gramps/plugins/webreport/webcal.py:1639 msgid "The extension to be used for the web files" msgstr "Расширение файлов веб-сайта" -#: ../gramps/plugins/webreport/narrativeweb.py:9810 +#: ../gramps/plugins/webreport/narrativeweb.py:9798 #: ../gramps/plugins/webreport/webcal.py:1642 msgid "Copyright" msgstr "Авторское право" -#: ../gramps/plugins/webreport/narrativeweb.py:9813 +#: ../gramps/plugins/webreport/narrativeweb.py:9801 #: ../gramps/plugins/webreport/webcal.py:1645 msgid "The copyright to be used for the web files" msgstr "Авторские права, которые будут использоваться для веб-страниц" -#: ../gramps/plugins/webreport/narrativeweb.py:9816 +#: ../gramps/plugins/webreport/narrativeweb.py:9804 #: ../gramps/plugins/webreport/webcal.py:1651 msgid "StyleSheet" msgstr "Таблица стилей" -#: ../gramps/plugins/webreport/narrativeweb.py:9821 +#: ../gramps/plugins/webreport/narrativeweb.py:9809 #: ../gramps/plugins/webreport/webcal.py:1654 msgid "The stylesheet to be used for the web pages" msgstr "Таблица стилей для веб-страниц" -#: ../gramps/plugins/webreport/narrativeweb.py:9826 +#: ../gramps/plugins/webreport/narrativeweb.py:9814 msgid "Horizontal -- Default" msgstr "Горизонтально (по умолчанию)" -#: ../gramps/plugins/webreport/narrativeweb.py:9827 +#: ../gramps/plugins/webreport/narrativeweb.py:9815 msgid "Vertical -- Left Side" msgstr "Вертикально (слева)" -#: ../gramps/plugins/webreport/narrativeweb.py:9828 +#: ../gramps/plugins/webreport/narrativeweb.py:9816 msgid "Fade -- WebKit Browsers Only" msgstr "Fade (только для WebKit браузеров)" -#: ../gramps/plugins/webreport/narrativeweb.py:9829 -#: ../gramps/plugins/webreport/narrativeweb.py:9843 +#: ../gramps/plugins/webreport/narrativeweb.py:9817 +#: ../gramps/plugins/webreport/narrativeweb.py:9831 msgid "Drop-Down -- WebKit Browsers Only" msgstr "Drop-Down (только для WebKit браузеров)" -#: ../gramps/plugins/webreport/narrativeweb.py:9831 +#: ../gramps/plugins/webreport/narrativeweb.py:9819 msgid "Navigation Menu Layout" msgstr "Раскладка меню навигации" -#: ../gramps/plugins/webreport/narrativeweb.py:9835 +#: ../gramps/plugins/webreport/narrativeweb.py:9823 msgid "Choose which layout for the Navigation Menus." msgstr "Выберите раскладку для меню навигации." -#: ../gramps/plugins/webreport/narrativeweb.py:9842 +#: ../gramps/plugins/webreport/narrativeweb.py:9830 msgid "Normal Outline Style" msgstr "Обычный стиль с подчеркиванием" -#: ../gramps/plugins/webreport/narrativeweb.py:9846 +#: ../gramps/plugins/webreport/narrativeweb.py:9834 msgid "Citation Referents Layout" msgstr "Отображение ссылок на цитаты" -#: ../gramps/plugins/webreport/narrativeweb.py:9850 +#: ../gramps/plugins/webreport/narrativeweb.py:9838 msgid "" "Determine the default layout for the Source Page's Citation Referents section" msgstr "" "Определяет стиль вывода на странице источников в разделе ссылок на цитаты" -#: ../gramps/plugins/webreport/narrativeweb.py:9854 +#: ../gramps/plugins/webreport/narrativeweb.py:9842 msgid "Include ancestor's tree" msgstr "Включить древо предков" -#: ../gramps/plugins/webreport/narrativeweb.py:9855 +#: ../gramps/plugins/webreport/narrativeweb.py:9843 msgid "Whether to include an ancestor graph on each individual page" msgstr "Включать ли граф предков на каждой индивидуальной странице" -#: ../gramps/plugins/webreport/narrativeweb.py:9860 +#: ../gramps/plugins/webreport/narrativeweb.py:9848 msgid "Graph generations" msgstr "Граф поколений" -#: ../gramps/plugins/webreport/narrativeweb.py:9861 +#: ../gramps/plugins/webreport/narrativeweb.py:9849 msgid "The number of generations to include in the ancestor graph" msgstr "Количество поколений для графа предков" -#: ../gramps/plugins/webreport/narrativeweb.py:9866 +#: ../gramps/plugins/webreport/narrativeweb.py:9854 msgid "Suppress Gramps ID" msgstr "Не включать Gramps ID" -#: ../gramps/plugins/webreport/narrativeweb.py:9867 +#: ../gramps/plugins/webreport/narrativeweb.py:9855 msgid "Whether to include the Gramps ID of objects" msgstr "Включать ли номера идентификаторы объектов Gramps ID" -#: ../gramps/plugins/webreport/narrativeweb.py:9874 +#: ../gramps/plugins/webreport/narrativeweb.py:9862 msgid "Page Generation" msgstr "Создание страниц" -#: ../gramps/plugins/webreport/narrativeweb.py:9877 +#: ../gramps/plugins/webreport/narrativeweb.py:9865 msgid "Home page note" msgstr "Заметка для главной страницы" -#: ../gramps/plugins/webreport/narrativeweb.py:9878 +#: ../gramps/plugins/webreport/narrativeweb.py:9866 msgid "A note to be used on the home page" msgstr "Заметка для размещения на главной странице" -#: ../gramps/plugins/webreport/narrativeweb.py:9881 +#: ../gramps/plugins/webreport/narrativeweb.py:9869 msgid "Home page image" msgstr "Изображение для главной страницы" -#: ../gramps/plugins/webreport/narrativeweb.py:9882 +#: ../gramps/plugins/webreport/narrativeweb.py:9870 msgid "An image to be used on the home page" msgstr "Изображение для использования на домашней странице" -#: ../gramps/plugins/webreport/narrativeweb.py:9885 +#: ../gramps/plugins/webreport/narrativeweb.py:9873 msgid "Introduction note" msgstr "Заметка для введения" -#: ../gramps/plugins/webreport/narrativeweb.py:9886 +#: ../gramps/plugins/webreport/narrativeweb.py:9874 msgid "A note to be used as the introduction" msgstr "Заметка для использования в качестве введения" -#: ../gramps/plugins/webreport/narrativeweb.py:9889 +#: ../gramps/plugins/webreport/narrativeweb.py:9877 msgid "Introduction image" msgstr "Изображение для введения" -#: ../gramps/plugins/webreport/narrativeweb.py:9890 +#: ../gramps/plugins/webreport/narrativeweb.py:9878 msgid "An image to be used as the introduction" msgstr "Изображение для использования во введении" -#: ../gramps/plugins/webreport/narrativeweb.py:9893 +#: ../gramps/plugins/webreport/narrativeweb.py:9881 msgid "Publisher contact note" msgstr "Заметка с данными издателя" -#: ../gramps/plugins/webreport/narrativeweb.py:9894 +#: ../gramps/plugins/webreport/narrativeweb.py:9882 msgid "" "A note to be used as the publisher contact.\n" "If no publisher information is given,\n" @@ -35785,13 +35790,13 @@ msgstr "" "Если информация не предоставлена, страница\n" "об издателе не будет создана" -#: ../gramps/plugins/webreport/narrativeweb.py:9900 +#: ../gramps/plugins/webreport/narrativeweb.py:9888 msgid "Publisher contact image" msgstr "" "Изображение для страницы\n" "с информацией об издателе" -#: ../gramps/plugins/webreport/narrativeweb.py:9901 +#: ../gramps/plugins/webreport/narrativeweb.py:9889 msgid "" "An image to be used as the publisher contact.\n" "If no publisher information is given,\n" @@ -35801,51 +35806,51 @@ msgstr "" "Если информация не предоставлена, страница\n" "об издателе не будет создана" -#: ../gramps/plugins/webreport/narrativeweb.py:9907 +#: ../gramps/plugins/webreport/narrativeweb.py:9895 msgid "HTML user header" msgstr "Верхний колонтитул (HTML)" -#: ../gramps/plugins/webreport/narrativeweb.py:9908 +#: ../gramps/plugins/webreport/narrativeweb.py:9896 msgid "A note to be used as the page header" msgstr "Заметка для использования в качестве верхнего колонтитула" -#: ../gramps/plugins/webreport/narrativeweb.py:9911 +#: ../gramps/plugins/webreport/narrativeweb.py:9899 msgid "HTML user footer" msgstr "Нижний колонтитул (HTML)" -#: ../gramps/plugins/webreport/narrativeweb.py:9912 +#: ../gramps/plugins/webreport/narrativeweb.py:9900 msgid "A note to be used as the page footer" msgstr "Заметка для использования в качестве нижнего колонтитула" -#: ../gramps/plugins/webreport/narrativeweb.py:9919 +#: ../gramps/plugins/webreport/narrativeweb.py:9907 msgid "Images Generation" msgstr "Создание изображений" # !!!FIXME!!! -#: ../gramps/plugins/webreport/narrativeweb.py:9922 +#: ../gramps/plugins/webreport/narrativeweb.py:9910 msgid "Include images and media objects" msgstr "Включать изображения и документы" # !!!FIXME!!! -#: ../gramps/plugins/webreport/narrativeweb.py:9924 +#: ../gramps/plugins/webreport/narrativeweb.py:9912 msgid "Whether to include a gallery of media objects" msgstr "Включать ли галерею документов" # !!!FIXME!!! -#: ../gramps/plugins/webreport/narrativeweb.py:9930 +#: ../gramps/plugins/webreport/narrativeweb.py:9918 msgid "Include unused images and media objects" msgstr "Включать неиспользуемые изображения и документы" # !!!FIXME!!! -#: ../gramps/plugins/webreport/narrativeweb.py:9931 +#: ../gramps/plugins/webreport/narrativeweb.py:9919 msgid "Whether to include unused or unreferenced media objects" msgstr "Включать ли неиспользуемые документы" -#: ../gramps/plugins/webreport/narrativeweb.py:9936 +#: ../gramps/plugins/webreport/narrativeweb.py:9924 msgid "Create and only use thumbnail- sized images" msgstr "Создать и использовать только эскизы - уменьшенные изображения" -#: ../gramps/plugins/webreport/narrativeweb.py:9938 +#: ../gramps/plugins/webreport/narrativeweb.py:9926 msgid "" "This option allows you to create only thumbnail images instead of the full-" "sized images on the Media Page. This will allow you to have a much smaller " @@ -35855,11 +35860,11 @@ msgstr "" "чтобы использовать полноразмерные изображения. Это позволит получить намного " "меньший размер данных для загрузки на хостинг." -#: ../gramps/plugins/webreport/narrativeweb.py:9947 +#: ../gramps/plugins/webreport/narrativeweb.py:9935 msgid "Max width of initial image" msgstr "Макс. ширина изображения" -#: ../gramps/plugins/webreport/narrativeweb.py:9949 +#: ../gramps/plugins/webreport/narrativeweb.py:9937 msgid "" "This allows you to set the maximum width of the image shown on the media " "page. Set to 0 for no limit." @@ -35867,11 +35872,11 @@ msgstr "" "Это поле позволяет задать максимальную ширину изображения на странице с " "документами. Укажите 0, чтобы не ограничивать ширину." -#: ../gramps/plugins/webreport/narrativeweb.py:9954 +#: ../gramps/plugins/webreport/narrativeweb.py:9942 msgid "Max height of initial image" msgstr "Макс. высота изображения" -#: ../gramps/plugins/webreport/narrativeweb.py:9956 +#: ../gramps/plugins/webreport/narrativeweb.py:9944 msgid "" "This allows you to set the maximum height of the image shown on the media " "page. Set to 0 for no limit." @@ -35879,156 +35884,156 @@ msgstr "" "Это поле позволяет задать максимальную высоту изображения на странице с " "документами. Укажите 0, чтобы не ограничивать высоту." -#: ../gramps/plugins/webreport/narrativeweb.py:9980 +#: ../gramps/plugins/webreport/narrativeweb.py:9968 msgid "Include download page" msgstr "Включить страницу загрузки" -#: ../gramps/plugins/webreport/narrativeweb.py:9982 +#: ../gramps/plugins/webreport/narrativeweb.py:9970 msgid "Whether to include a database download option" msgstr "Включать ли возможность загрузки базы данных" +#: ../gramps/plugins/webreport/narrativeweb.py:9975 #: ../gramps/plugins/webreport/narrativeweb.py:9987 -#: ../gramps/plugins/webreport/narrativeweb.py:9999 msgid "Download Filename" msgstr "Имя файла" +#: ../gramps/plugins/webreport/narrativeweb.py:9978 #: ../gramps/plugins/webreport/narrativeweb.py:9990 -#: ../gramps/plugins/webreport/narrativeweb.py:10002 msgid "File to be used for downloading of database" msgstr "Файл с базой данных, который вы хотите предоставить для скачивания" +#: ../gramps/plugins/webreport/narrativeweb.py:9981 #: ../gramps/plugins/webreport/narrativeweb.py:9993 -#: ../gramps/plugins/webreport/narrativeweb.py:10005 msgid "Description for download" msgstr "Описание" -#: ../gramps/plugins/webreport/narrativeweb.py:9994 +#: ../gramps/plugins/webreport/narrativeweb.py:9982 msgid "Smith Family Tree" msgstr "Семейное древо Ивановых" +#: ../gramps/plugins/webreport/narrativeweb.py:9983 #: ../gramps/plugins/webreport/narrativeweb.py:9995 -#: ../gramps/plugins/webreport/narrativeweb.py:10007 msgid "Give a description for this file." msgstr "Опишите этот файл." -#: ../gramps/plugins/webreport/narrativeweb.py:10006 +#: ../gramps/plugins/webreport/narrativeweb.py:9994 msgid "Johnson Family Tree" msgstr "Семейное древо Сидоровых" -#: ../gramps/plugins/webreport/narrativeweb.py:10016 +#: ../gramps/plugins/webreport/narrativeweb.py:10004 #: ../gramps/plugins/webreport/webcal.py:1826 msgid "Advanced Options" msgstr "Дополнительные настройки" -#: ../gramps/plugins/webreport/narrativeweb.py:10019 +#: ../gramps/plugins/webreport/narrativeweb.py:10007 #: ../gramps/plugins/webreport/webcal.py:1828 msgid "Character set encoding" msgstr "Кодировка символов" -#: ../gramps/plugins/webreport/narrativeweb.py:10023 +#: ../gramps/plugins/webreport/narrativeweb.py:10011 #: ../gramps/plugins/webreport/webcal.py:1832 msgid "The encoding to be used for the web files" msgstr "Кодировка, которая будет использоваться для веб-страниц" -#: ../gramps/plugins/webreport/narrativeweb.py:10027 +#: ../gramps/plugins/webreport/narrativeweb.py:10015 msgid "Include link to active person on every page" msgstr "Включать ли на каждой странице ссылку на главное лицо" -#: ../gramps/plugins/webreport/narrativeweb.py:10029 +#: ../gramps/plugins/webreport/narrativeweb.py:10017 msgid "Include a link to the active person (if they have a webpage)" msgstr "Включить ссылку на активное лицо (если есть веб-страница)" -#: ../gramps/plugins/webreport/narrativeweb.py:10033 +#: ../gramps/plugins/webreport/narrativeweb.py:10021 msgid "Include a column for birth dates on the index pages" msgstr "Включить колонку с датами рождений на индексных страницах" -#: ../gramps/plugins/webreport/narrativeweb.py:10034 +#: ../gramps/plugins/webreport/narrativeweb.py:10022 msgid "Whether to include a birth column" msgstr "Включать ли колонку с датами рождений" -#: ../gramps/plugins/webreport/narrativeweb.py:10038 +#: ../gramps/plugins/webreport/narrativeweb.py:10026 msgid "Include a column for death dates on the index pages" msgstr "Включить колонку с датами смерти на индексных страницах" -#: ../gramps/plugins/webreport/narrativeweb.py:10039 +#: ../gramps/plugins/webreport/narrativeweb.py:10027 msgid "Whether to include a death column" msgstr "Включать ли колонку с датами смерти" -#: ../gramps/plugins/webreport/narrativeweb.py:10042 +#: ../gramps/plugins/webreport/narrativeweb.py:10030 msgid "Include a column for partners on the index pages" msgstr "Включить колонку с данными о партнёре на индексных страницах" -#: ../gramps/plugins/webreport/narrativeweb.py:10044 +#: ../gramps/plugins/webreport/narrativeweb.py:10032 msgid "Whether to include a partners column" msgstr "Включать ли колонку с данными о партнёре" -#: ../gramps/plugins/webreport/narrativeweb.py:10047 +#: ../gramps/plugins/webreport/narrativeweb.py:10035 msgid "Include a column for parents on the index pages" msgstr "Включить колонку с данными о родителях на индексных страницах" -#: ../gramps/plugins/webreport/narrativeweb.py:10049 +#: ../gramps/plugins/webreport/narrativeweb.py:10037 msgid "Whether to include a parents column" msgstr "Включать ли колонку с данными о родителях" -#: ../gramps/plugins/webreport/narrativeweb.py:10053 +#: ../gramps/plugins/webreport/narrativeweb.py:10041 msgid "Include half and/ or step-siblings on the individual pages" msgstr "Включать братьев и сестёр на индивидуальной странице" -#: ../gramps/plugins/webreport/narrativeweb.py:10056 +#: ../gramps/plugins/webreport/narrativeweb.py:10044 msgid "" "Whether to include half and/ or step-siblings with the parents and siblings" msgstr "Включать братьев и сестёр с их родителями и братьями/сёстрами" -#: ../gramps/plugins/webreport/narrativeweb.py:10064 +#: ../gramps/plugins/webreport/narrativeweb.py:10052 msgid "Advanced Options (2)" msgstr "Дополнительные настройки (2)" -#: ../gramps/plugins/webreport/narrativeweb.py:10068 +#: ../gramps/plugins/webreport/narrativeweb.py:10056 msgid "Sort all children in birth order" msgstr "Сортировать всех детей в порядке рождения" -#: ../gramps/plugins/webreport/narrativeweb.py:10070 +#: ../gramps/plugins/webreport/narrativeweb.py:10058 msgid "Whether to display children in birth order or in entry order?" msgstr "" "Показывать детей в порядке рождения или в порядке ввода их в базу данных?" -#: ../gramps/plugins/webreport/narrativeweb.py:10073 +#: ../gramps/plugins/webreport/narrativeweb.py:10061 msgid "Include family pages" msgstr "Включить семейные страницы" -#: ../gramps/plugins/webreport/narrativeweb.py:10074 +#: ../gramps/plugins/webreport/narrativeweb.py:10062 msgid "Whether or not to include family pages." msgstr "Включать или нет семейные страницы." -#: ../gramps/plugins/webreport/narrativeweb.py:10077 +#: ../gramps/plugins/webreport/narrativeweb.py:10065 msgid "Include event pages" msgstr "Включить страницы с событиями" -#: ../gramps/plugins/webreport/narrativeweb.py:10079 +#: ../gramps/plugins/webreport/narrativeweb.py:10067 msgid "Add a complete events list and relevant pages or not" msgstr "Включать ли полный список событий на отдельных страницах" -#: ../gramps/plugins/webreport/narrativeweb.py:10082 +#: ../gramps/plugins/webreport/narrativeweb.py:10070 msgid "Include repository pages" msgstr "Включить страницы с источниками" -#: ../gramps/plugins/webreport/narrativeweb.py:10084 +#: ../gramps/plugins/webreport/narrativeweb.py:10072 msgid "Whether or not to include the Repository Pages." msgstr "Включать или нет страницы с источниками." -#: ../gramps/plugins/webreport/narrativeweb.py:10088 +#: ../gramps/plugins/webreport/narrativeweb.py:10076 msgid "Include GENDEX file (/gendex.txt)" msgstr "Включить файл GENDEX (/gendex.txt)" -#: ../gramps/plugins/webreport/narrativeweb.py:10089 +#: ../gramps/plugins/webreport/narrativeweb.py:10077 msgid "Whether to include a GENDEX file or not" msgstr "Включать ли файл GENDEX" -#: ../gramps/plugins/webreport/narrativeweb.py:10092 +#: ../gramps/plugins/webreport/narrativeweb.py:10080 msgid "Include address book pages" msgstr "Включить страницы с адресами" -#: ../gramps/plugins/webreport/narrativeweb.py:10093 +#: ../gramps/plugins/webreport/narrativeweb.py:10081 msgid "" "Whether or not to add Address Book pages,which can include e-mail and " "website addresses and personal address/ residence events." @@ -36036,27 +36041,27 @@ msgstr "" "Добавлять или нет страницы с адресами, которые могут содержать адреса " "электронной почты, веб-страницы и почтовые адреса, места жительство." -#: ../gramps/plugins/webreport/narrativeweb.py:10103 +#: ../gramps/plugins/webreport/narrativeweb.py:10091 msgid "Place Map Options" msgstr "Отображение мест на карте" -#: ../gramps/plugins/webreport/narrativeweb.py:10108 +#: ../gramps/plugins/webreport/narrativeweb.py:10096 msgid "Google" msgstr "Карты Google" -#: ../gramps/plugins/webreport/narrativeweb.py:10109 +#: ../gramps/plugins/webreport/narrativeweb.py:10097 msgid "Map Service" msgstr "Картографический сервис" -#: ../gramps/plugins/webreport/narrativeweb.py:10113 +#: ../gramps/plugins/webreport/narrativeweb.py:10101 msgid "Choose your choice of map service for creating the Place Map Pages." msgstr "Выберите картографический сервис для создания страниц мест на карте." -#: ../gramps/plugins/webreport/narrativeweb.py:10119 +#: ../gramps/plugins/webreport/narrativeweb.py:10107 msgid "Include Place map on Place Pages" msgstr "Включить карту на страницах с местоположениями" -#: ../gramps/plugins/webreport/narrativeweb.py:10121 +#: ../gramps/plugins/webreport/narrativeweb.py:10109 msgid "" "Whether to include a place map on the Place Pages, where Latitude/ Longitude " "are available." @@ -36064,11 +36069,11 @@ msgstr "" "Включать ли карту на странице с местоположениями для мест с известными " "широтой и долготой." -#: ../gramps/plugins/webreport/narrativeweb.py:10126 +#: ../gramps/plugins/webreport/narrativeweb.py:10114 msgid "Include Family Map Pages with all places shown on the map" msgstr "Включать страницы карт семьи со всеми местами отмеченными на карте" -#: ../gramps/plugins/webreport/narrativeweb.py:10130 +#: ../gramps/plugins/webreport/narrativeweb.py:10118 msgid "" "Whether or not to add an individual page map showing all the places on this " "page. This will allow you to see how your family traveled around the country." @@ -36077,64 +36082,64 @@ msgstr "" "упомянутые на данной странице. Это позволит видеть, как ваша семья " "переезжала." -#: ../gramps/plugins/webreport/narrativeweb.py:10138 +#: ../gramps/plugins/webreport/narrativeweb.py:10126 msgid "Family Links" msgstr "Семейные связи" -#: ../gramps/plugins/webreport/narrativeweb.py:10139 +#: ../gramps/plugins/webreport/narrativeweb.py:10127 msgid "Drop" msgstr "Не показывать маркеры" -#: ../gramps/plugins/webreport/narrativeweb.py:10140 +#: ../gramps/plugins/webreport/narrativeweb.py:10128 msgid "Markers" msgstr "Маркеры" -#: ../gramps/plugins/webreport/narrativeweb.py:10141 +#: ../gramps/plugins/webreport/narrativeweb.py:10129 msgid "Google/ FamilyMap Option" msgstr "Настройки Google/ Семейной карты" -#: ../gramps/plugins/webreport/narrativeweb.py:10146 +#: ../gramps/plugins/webreport/narrativeweb.py:10134 msgid "" "Select which option that you would like to have for the Google Maps Family " "Map pages..." msgstr "Выберите параметр для страниц с картами Google и Семейными картами..." -#: ../gramps/plugins/webreport/narrativeweb.py:10150 +#: ../gramps/plugins/webreport/narrativeweb.py:10138 msgid "Google maps API key" msgstr "API-ключ для карт Google" -#: ../gramps/plugins/webreport/narrativeweb.py:10151 +#: ../gramps/plugins/webreport/narrativeweb.py:10139 msgid "The API key used for the Google maps" msgstr "API-ключ используемый для карт Google" -#: ../gramps/plugins/webreport/narrativeweb.py:10160 +#: ../gramps/plugins/webreport/narrativeweb.py:10148 msgid "Other inclusion (CMS, Web Calendar, Php)" msgstr "Включить другое (CMS, Веб-календарь, Php)" -#: ../gramps/plugins/webreport/narrativeweb.py:10164 +#: ../gramps/plugins/webreport/narrativeweb.py:10152 msgid "Do we include these pages in a cms web ?" msgstr "Включать эти страницы в cms веб?" -#: ../gramps/plugins/webreport/narrativeweb.py:10168 -#: ../gramps/plugins/webreport/narrativeweb.py:10185 +#: ../gramps/plugins/webreport/narrativeweb.py:10156 +#: ../gramps/plugins/webreport/narrativeweb.py:10173 msgid "URI" msgstr "URI" -#: ../gramps/plugins/webreport/narrativeweb.py:10174 +#: ../gramps/plugins/webreport/narrativeweb.py:10162 msgid "Where do you place your web site ? default = /NAVWEB" msgstr "Где размещён веб сайт? по умолчанию = /NAVWEB" -#: ../gramps/plugins/webreport/narrativeweb.py:10181 +#: ../gramps/plugins/webreport/narrativeweb.py:10169 msgid "Do we include the web calendar ?" msgstr "Включать веб-календарь?" -#: ../gramps/plugins/webreport/narrativeweb.py:10191 +#: ../gramps/plugins/webreport/narrativeweb.py:10179 msgid "Where do you place your web site ? default = /WEBCAL" msgstr "Где размещён веб сайт? по умолчанию = /WEBCAL" #. adding title to hyperlink menu for screen readers and #. braille writers -#: ../gramps/plugins/webreport/narrativeweb.py:10680 +#: ../gramps/plugins/webreport/narrativeweb.py:10668 #, python-format msgid "Alphabet Menu: %s" msgstr "Алфавитное меню: %s" @@ -37162,7 +37167,8 @@ msgstr "Без стилевого листа" #~ "Changing the place format will not take effect until the next time Gramps " #~ "is started." #~ msgstr "" -#~ "Изменение формата местоположения не вступит с силу до нового запуска Gramps." +#~ "Изменение формата местоположения не вступит с силу до нового запуска " +#~ "Gramps." #~ msgid "TRANSLATORS: Translate this to your name in your native language" #~ msgstr ""