From fd1418dc8a9ca141cc151b8b63c0d9b6972b1bb7 Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Wed, 24 May 2017 00:18:31 +0100 Subject: [PATCH 01/14] Disable development warning message --- gramps/gen/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gramps/gen/config.py b/gramps/gen/config.py index a2b8472b1..12bccaa8b 100644 --- a/gramps/gen/config.py +++ b/gramps/gen/config.py @@ -132,7 +132,7 @@ register('behavior.addmedia-image-dir', '') register('behavior.addmedia-relative-path', False) register('behavior.autoload', False) register('behavior.avg-generation-gap', 20) -register('behavior.betawarn', False) +register('behavior.betawarn', True) register('behavior.check-for-addon-updates', 0) register('behavior.check-for-addon-update-types', ["new"]) register('behavior.last-check-for-addon-updates', "1970/01/01") From 2d1d0342c9d6207f9ee6d29c246af5fd5de06f53 Mon Sep 17 00:00:00 2001 From: Leonhaeuser Date: Thu, 25 May 2017 21:59:41 +0200 Subject: [PATCH 02/14] Update German translation --- po/de.po | 876 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 463 insertions(+), 413 deletions(-) diff --git a/po/de.po b/po/de.po index b23312047..5b7399530 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-24 22:29+0200\n" +"PO-Revision-Date: 2017-05-25 21:49+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 @@ -11188,7 +11206,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 +11524,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 +11571,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 +11586,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 +11618,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 +11632,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 +11652,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 +11685,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 +11778,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 +11804,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 +12481,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 +12507,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 +13430,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 +13615,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 +14052,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 +14167,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" @@ -14610,6 +14627,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 +15780,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 +15835,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 +17268,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 +17557,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 +18116,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 +18241,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 +18265,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 +18439,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 +18466,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 +18555,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 +18778,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 +18794,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 +18843,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 +18873,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 +19413,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 +19890,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 +19926,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 +19953,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 +20125,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 +20310,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 +20340,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 +20436,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 +20487,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 +20889,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 +21149,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 +21159,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 +21304,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 +21458,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 +22927,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 +23747,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 +23809,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 +23862,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 +23932,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 +24061,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 +24259,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 +24378,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 +24532,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 +24560,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 +25037,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" @@ -30218,13 +30288,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 +30338,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 +30372,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 +30444,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 +30453,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 +30476,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 +30522,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 +30546,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 +30574,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 +30614,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 +30709,65 @@ 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/detancestralreport.py:919 +#: ../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 +30776,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 +30858,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 +30930,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 +31090,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 +31832,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 +33200,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 +34106,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 +34152,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 +34638,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 +35115,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 +35959,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 +36251,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 +36267,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" @@ -39474,9 +39530,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 +40824,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." From 22e724366039ab104f14fbfdd63ca2c8be58d3fe Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Sun, 28 May 2017 17:54:46 +0100 Subject: [PATCH 03/14] 9229: Use the term "Delete" instead of "Remove" The term "Delete" should be used when an object is deleted from the database. The term "Remove" should be used when an object is removed from a list, but not actually deleted. --- gramps/gui/views/listview.py | 2 +- gramps/plugins/lib/libpersonview.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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/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), From f1659d556e1143c39cb22fb5ce3cc1d2c47f1b56 Mon Sep 17 00:00:00 2001 From: vantu5z Date: Wed, 24 May 2017 09:16:11 -0300 Subject: [PATCH 04/14] update Russian translation --- po/ru.po | 304 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 155 insertions(+), 149 deletions(-) diff --git a/po/ru.po b/po/ru.po index b25a57c9b..10dd84e86 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-29 09:44+0300\n" +"PO-Revision-Date: 2017-05-29 09:46+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 @@ -1760,7 +1760,7 @@ 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/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 @@ -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" @@ -3446,7 +3446,7 @@ 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 @@ -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 @@ -6702,7 +6702,7 @@ 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 @@ -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,7 +6845,7 @@ 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 @@ -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 @@ -7569,9 +7569,9 @@ 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 @@ -7591,9 +7591,9 @@ 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 @@ -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 @@ -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 @@ -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 @@ -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" @@ -8235,7 +8235,7 @@ 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/textreport/indivcomplete.py:922 #: ../gramps/plugins/webreport/narrativeweb.py:7389 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 "Альтернативные имена" @@ -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 @@ -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 @@ -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" @@ -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 "В галерее обнаружен несуществующий документ" @@ -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 "Процедура СПД" @@ -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 "_Удалить" @@ -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 @@ -19924,7 +19925,7 @@ 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 @@ -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,7 +20951,7 @@ 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 @@ -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 "Главное лицо для фильтра." @@ -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 @@ -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" @@ -24363,30 +24368,30 @@ msgstr "Не удаётся найти отца для I%(person)s (Отец=%(i 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 " @@ -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" @@ -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/textreport/indivcomplete.py:443 #: ../gramps/plugins/webreport/narrativeweb.py:7137 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 "Стиль для описания изображений." @@ -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 "" From d14383cb3a1a6eacf518e756bbf0a620afe42bf7 Mon Sep 17 00:00:00 2001 From: Leonhaeuser Date: Mon, 29 May 2017 19:18:56 +0200 Subject: [PATCH 05/14] Update German translation --- po/de.po | 60 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/po/de.po b/po/de.po index 5b7399530..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-24 22:29+0200\n" -"PO-Revision-Date: 2017-05-25 21:49+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" @@ -1382,8 +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 (verwende" -" Reguläre Ausdrücke)\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" @@ -5421,8 +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." +"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" @@ -11147,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" @@ -14563,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" @@ -15780,8 +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," +"Verwende entweder die beiden Felder unten um die Koordinaten (Längen- und " +"Breitengrad) einzugeben," #: ../gramps/gui/glade/editplace.glade:119 msgid "L_atitude:" @@ -15835,16 +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:" +"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, ..." +"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 @@ -17269,10 +17270,10 @@ msgid "" "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." +"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" @@ -19419,8 +19420,8 @@ 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." +"Entspricht Orten innerhalb einer bestimmten Distanz zum aktiven Ort. Du hast " +"keinen aktiven Ort." #: ../gramps/gui/widgets/progressdialog.py:298 msgid "Progress Information" @@ -24599,15 +24600,15 @@ 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." +"VCard ist falsch gestaltet fehlende zwingendes N Objekt, also gibt es keinen " +"Namen; also las es aus." #: ../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." +"VCard ist falsch gestaltet fehlendes zwingendes FN Objekt, nimm Namen nur " +"von N." #: ../gramps/plugins/importer/importvcard.py:375 msgid "VCard is malformed wrong number of name components." @@ -28813,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" @@ -30732,7 +30733,9 @@ msgstr "Fotos/Bilder aus der Galerie aufnehmen" msgid "Whether to include images." msgstr "Legt fest, ob Bilder aufgenommen werden." -#. #########################. ###############################: ../gramps/plugins/textreport/detancestralreport.py:919 +#. ######################### +#. ############################### +#: ../gramps/plugins/textreport/detancestralreport.py:919 #: ../gramps/plugins/textreport/detdescendantreport.py:1110 #: ../gramps/plugins/textreport/familygroup.py:777 #: ../gramps/plugins/textreport/indivcomplete.py:1119 @@ -36642,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" From 83d24ed681d2f2ca2681700546a0a47c24381f34 Mon Sep 17 00:00:00 2001 From: prculley Date: Mon, 29 May 2017 10:57:47 -0700 Subject: [PATCH 06/14] 8366: February 29th invalid date in Julian dual-dated leap year --- gramps/gui/glade/editdate.glade | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) 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 From 352d6fc5582ce86c7760a13587cfc138e30a873e Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Tue, 30 May 2017 00:19:42 +0100 Subject: [PATCH 07/14] Convert handle type to str in the database API (#405) The mixed type of handles has been a constant source of bugs. Converting them all to str in the database API should make maintenance easier. The key to BSDDB tables must still be bytes in the database layer. --- gramps/gen/db/base.py | 2 +- gramps/gen/db/dummydb.py | 40 +-- gramps/gen/db/generic.py | 2 - .../filters/rules/test/event_rules_test.py | 38 +- .../filters/rules/test/family_rules_test.py | 86 ++--- .../filters/rules/test/media_rules_test.py | 28 +- .../gen/filters/rules/test/note_rules_test.py | 32 +- .../filters/rules/test/person_rules_test.py | 330 +++++++++--------- .../filters/rules/test/place_rules_test.py | 56 +-- .../rules/test/repository_rules_test.py | 14 +- gramps/gen/proxy/cache.py | 22 -- gramps/gen/proxy/filter.py | 16 - gramps/gen/proxy/proxybase.py | 8 +- gramps/gui/filters/sidebar/_sidebarfilter.py | 3 - gramps/gui/views/treemodels/flatbasemodel.py | 14 +- gramps/gui/views/treemodels/peoplemodel.py | 8 - gramps/gui/views/treemodels/treebasemodel.py | 17 +- gramps/plugins/db/bsddb/cursor.py | 6 +- gramps/plugins/db/bsddb/read.py | 163 +++------ gramps/plugins/db/bsddb/test/cursor_test.py | 14 +- gramps/plugins/db/bsddb/write.py | 63 +--- gramps/plugins/db/dbapi/dbapi.py | 32 +- gramps/plugins/db/dbapi/test/db_test.py | 4 +- gramps/plugins/importer/importprogen.py | 10 +- gramps/plugins/lib/libgedcom.py | 5 +- gramps/plugins/tool/check.py | 192 +++++----- gramps/plugins/tool/removeunused.py | 3 +- gramps/plugins/webreport/narrativeweb.py | 20 +- 28 files changed, 503 insertions(+), 725 deletions(-) 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..20f97a2d7 100644 --- a/gramps/gen/db/dummydb.py +++ b/gramps/gen/db/dummydb.py @@ -526,7 +526,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 +670,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 +782,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 +829,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 +887,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 +907,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 +916,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 +925,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 +934,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 +943,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 +952,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 +961,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 +970,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 +979,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 +988,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 +1026,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): """ @@ -1097,7 +1097,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 +1155,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 +1193,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 +1611,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/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..8daf2ce0d 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 @@ -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/write.py b/gramps/plugins/db/bsddb/write.py index ca03409b8..34623a9b8 100644 --- a/gramps/plugins/db/bsddb/write.py +++ b/gramps/plugins/db/bsddb/write.py @@ -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): 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/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 c044b8980..9e5c850ed 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, "", "") From 5939e722e43b468046a951ce5400df4a21f83ce0 Mon Sep 17 00:00:00 2001 From: vantu5z Date: Tue, 30 May 2017 11:06:42 +0300 Subject: [PATCH 08/14] update Russian translation (fixes for [add->new] menu translations) --- po/ru.po | 966 +++++++++++++++++++++++++++---------------------------- 1 file changed, 483 insertions(+), 483 deletions(-) diff --git a/po/ru.po b/po/ru.po index 10dd84e86..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-29 09:44+0300\n" -"PO-Revision-Date: 2017-05-29 09:46+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" @@ -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 @@ -1761,7 +1761,7 @@ msgstr "Заблокировано %s" #: ../gramps/plugins/textreport/detdescendantreport.py:831 #: ../gramps/plugins/textreport/indivcomplete.py:85 #: ../gramps/plugins/textreport/indivcomplete.py:934 -#: ../gramps/plugins/tool/check.py:2356 ../gramps/plugins/tool/check.py:2382 +#: ../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 @@ -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 "Версия базы данных" @@ -3449,7 +3449,7 @@ msgstr "Применение ..." #: ../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" @@ -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 "Дата" @@ -6708,7 +6708,7 @@ msgstr "Источник" #: ../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 "Альбом" @@ -6848,7 +6848,7 @@ msgstr "Личное" #: ../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 "после" @@ -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 "Смерть" @@ -7575,7 +7575,7 @@ msgstr "аннул." #: ../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 "Отец" @@ -7597,7 +7597,7 @@ msgstr "Отец" #: ../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 "Мать" @@ -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 "События" @@ -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 @@ -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 "Фамилии" @@ -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 "Лицо" @@ -8236,7 +8236,7 @@ msgstr "Лицо" #: ../gramps/plugins/lib/libpersonview.py:100 #: ../gramps/plugins/quickview/siblings.py:48 #: ../gramps/plugins/textreport/indivcomplete.py:922 -#: ../gramps/plugins/webreport/narrativeweb.py:7389 +#: ../gramps/plugins/webreport/narrativeweb.py:7381 msgid "Gender" 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" @@ -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 "Телефон" @@ -11468,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" @@ -11667,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" @@ -12462,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 "Группировать как" @@ -12609,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 "Крёстный отец" @@ -14316,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 "Отношение" @@ -14326,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 "Дата рождения" @@ -14338,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 "Дата смерти" @@ -14724,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 "Личная информация" @@ -17036,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 "Родители" @@ -17940,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 "Параметры отчёта" @@ -18498,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" @@ -18694,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 "Мб" @@ -19053,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 "Загрузка объектов..." @@ -19393,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 " @@ -19406,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\", " @@ -19419,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 "Версия базы данных" @@ -19578,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 " @@ -19929,7 +19929,7 @@ msgstr "Включать ли пустые страницы." #: ../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)" @@ -20954,7 +20954,7 @@ msgstr "Определяет какие люди будут включены в #: ../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 "Фильтр по лицу" @@ -21091,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 "Главное лицо для фильтра" @@ -21336,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 "Факс" @@ -21360,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 "Веб-страница" @@ -21489,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 "Статистика" @@ -21865,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 "Предки" @@ -21932,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 "Родословная" @@ -22355,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 "Ссылки" @@ -22888,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" @@ -22899,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 "Утерянные документы" @@ -24358,12 +24358,12 @@ 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)" @@ -24814,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 "Расположение" @@ -24880,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. " @@ -24931,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. " @@ -24940,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 " @@ -24951,7 +24951,7 @@ msgstr "" "(введено как %(orig_person)s) не является членом семьи. Ссылка на семью " "удалена из лица" -#: ../gramps/plugins/lib/libgedcom.py:3230 +#: ../gramps/plugins/lib/libgedcom.py:3229 #, python-format msgid "" "\n" @@ -24971,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 " @@ -25150,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." @@ -25239,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 пуст." @@ -29228,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" @@ -29289,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 "Тип события" @@ -29370,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 "Партнёр" @@ -29565,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 "Источники" @@ -30951,7 +30951,7 @@ msgid "Alternate Parents" msgstr "Альтернативные родители" #: ../gramps/plugins/textreport/indivcomplete.py:443 -#: ../gramps/plugins/webreport/narrativeweb.py:7137 +#: ../gramps/plugins/webreport/narrativeweb.py:7129 msgid "Associations" msgstr "Связи" @@ -31671,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" @@ -31716,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" @@ -31834,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" @@ -31853,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" @@ -31872,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 "" @@ -31882,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" @@ -31891,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" @@ -31899,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" @@ -31909,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" @@ -31918,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" @@ -31927,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" @@ -31937,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" @@ -31945,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" @@ -31954,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" @@ -31963,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" @@ -31973,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" @@ -31982,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" @@ -31991,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" @@ -32001,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" @@ -32009,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" @@ -32017,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" @@ -32026,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" @@ -32035,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" @@ -32044,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" @@ -32052,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" @@ -32061,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" @@ -32070,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" @@ -32093,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 "Проверка и коррекция" @@ -32976,7 +32976,7 @@ msgstr "Неиспользуемые объекты" msgid "Mark" msgstr "Отметка" -#: ../gramps/plugins/tool/removeunused.py:300 +#: ../gramps/plugins/tool/removeunused.py:299 msgid "Remove unused objects" msgstr "Удалить неиспользуемые объекты" @@ -35095,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 "Загрузить" @@ -35110,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 "Адресная книга" @@ -35119,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 "Контакт" @@ -35129,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 "Веб-ссылки" @@ -35153,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 "Карта семьи" @@ -35169,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 "<отсутствует>" @@ -35186,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 "Имя" @@ -35196,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 "Повествовательный сайт" @@ -35353,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" @@ -35367,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 " @@ -35389,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 " @@ -35409,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 " @@ -35431,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 " @@ -35455,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 "Возраст на момент смерти" @@ -35479,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 " @@ -35516,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 " @@ -35531,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" @@ -35790,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" @@ -35806,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 " @@ -35860,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." @@ -35872,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." @@ -35884,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." @@ -36041,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." @@ -36069,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." @@ -36082,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" From 16cd995558eda3305203a9112f21a5a5a8dcc9bd Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Tue, 30 May 2017 19:23:48 +0100 Subject: [PATCH 09/14] Database upgrade to convert default handle to str --- gramps/plugins/db/bsddb/upgrade.py | 11 +++++++++++ gramps/plugins/db/bsddb/write.py | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) 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 34623a9b8..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" @@ -2159,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) From 512fa615bfc92b6d076c9cf5bd22410f472f3bb2 Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Tue, 30 May 2017 23:27:08 +0100 Subject: [PATCH 10/14] Fix DummyDb errors after a cancelled database upgrade --- gramps/gen/db/dummydb.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gramps/gen/db/dummydb.py b/gramps/gen/db/dummydb.py index 20f97a2d7..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): """ @@ -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): """ From ed8807f73a127cfe5c479bbe0054cbd5374b3088 Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Wed, 31 May 2017 17:03:20 +0100 Subject: [PATCH 11/14] Fix get_gramps_ids method to return a list of str --- gramps/plugins/db/bsddb/read.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gramps/plugins/db/bsddb/read.py b/gramps/plugins/db/bsddb/read.py index 8daf2ce0d..ca2cacca0 100644 --- a/gramps/plugins/db/bsddb/read.py +++ b/gramps/plugins/db/bsddb/read.py @@ -1211,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 = { From b4fed8101a5b76d8c81acfd9c1d81f11fa66ab98 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Wed, 31 May 2017 12:06:53 -0700 Subject: [PATCH 12/14] 8366: February 29th invalid date in Julian dual-dated leap year --- gramps/gen/datehandler/_dateparser.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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 From 7230e8618e540a7ee01b27c6a3def09e1931c58d Mon Sep 17 00:00:00 2001 From: SNoiraud Date: Fri, 2 Jun 2017 13:27:53 +0200 Subject: [PATCH 13/14] 10049: Narrated Web Report options reorganization --- gramps/plugins/webreport/narrativeweb.py | 65 +++++++++++++----------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/gramps/plugins/webreport/narrativeweb.py b/gramps/plugins/webreport/narrativeweb.py index 9e5c850ed..640512e59 100644 --- a/gramps/plugins/webreport/narrativeweb.py +++ b/gramps/plugins/webreport/narrativeweb.py @@ -9718,10 +9718,10 @@ class NavWebOptions(MenuReportOptions): @param: menu -- The menu for which we add options """ self.__add_report_options(menu) - self.__add_report_options_2(menu) + self.__add_report_html(menu) + self.__add_report_display(menu) self.__add_page_generation_options(menu) self.__add_images_generation_options(menu) - self.__add_privacy_options(menu) self.__add_download_options(menu) self.__add_advanced_options(menu) self.__add_advanced_options_2(menu) @@ -9772,21 +9772,16 @@ class NavWebOptions(MenuReportOptions): self.__update_filters() - stdoptions.add_name_format_option(menu, category_name) + stdoptions.add_living_people_option(menu, category_name) + stdoptions.add_private_data_option(menu, category_name, default=False) - locale_opt = stdoptions.add_localization_option(menu, category_name) - stdoptions.add_date_format_option(menu, category_name, locale_opt) + addopt = partial(menu.add_option, category_name) - self.__securesite = BooleanOption(_("This is a secure site (https)"), - False) - self.__securesite.set_help(_('Whether to use http:// or https://')) - addopt("securesite", self.__securesite) - - def __add_report_options_2(self, menu): + def __add_report_html(self, menu): """ - Continue Options on the "Report Options" tab. + Html Options for the Report. """ - category_name = _("Report Options (2)") + category_name = _("Html options") addopt = partial( menu.add_option, category_name ) ext = EnumeratedListOption(_("File extension"), ".html") @@ -9851,9 +9846,34 @@ class NavWebOptions(MenuReportOptions): addopt("graphgens", self.__graphgens) self.__graph_changed() + self.__securesite = BooleanOption(_("This is a secure site (https)"), + False) + self.__securesite.set_help(_('Whether to use http:// or https://')) + addopt("securesite", self.__securesite) + + def __add_report_display(self, menu): + """ + How to display names, datyes, ... + """ + category_name = _("Display") + addopt = partial( menu.add_option, category_name ) + + + stdoptions.add_name_format_option(menu, category_name) + + locale_opt = stdoptions.add_localization_option(menu, category_name) + stdoptions.add_date_format_option(menu, category_name, locale_opt) + nogid = BooleanOption(_('Suppress Gramps ID'), False) nogid.set_help(_('Whether to include the Gramps ID of objects')) addopt( "nogid", nogid ) + addopt = partial(menu.add_option, category_name) + + birthorder = BooleanOption( + _('Sort all children in birth order'), False) + birthorder.set_help( + _('Whether to display children in birth order or in entry order?')) + addopt("birthorder", birthorder) def __add_page_generation_options(self, menu): """ @@ -9947,17 +9967,6 @@ class NavWebOptions(MenuReportOptions): self.__gallery_changed() - def __add_privacy_options(self, menu): - """ - Options on the "Privacy" tab. - """ - category_name = _("Privacy") - - stdoptions.add_living_people_option(menu, category_name) - stdoptions.add_private_data_option(menu, category_name, default=False) - - addopt = partial(menu.add_option, category_name) - def __add_download_options(self, menu): """ Options for the download tab ... @@ -10049,15 +10058,9 @@ class NavWebOptions(MenuReportOptions): """ Continue options on the "Advanced" tab. """ - category_name = _("Advanced Options (2)") + category_name = _("Include") addopt = partial(menu.add_option, category_name) - birthorder = BooleanOption( - _('Sort all children in birth order'), False) - birthorder.set_help( - _('Whether to display children in birth order or in entry order?')) - addopt("birthorder", birthorder) - inc_families = BooleanOption(_("Include family pages"), False) inc_families.set_help(_("Whether or not to include family pages.")) addopt("inc_families", inc_families) From 736f10875f2a633e480f1c2dda7ff784aef5cc7e Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Fri, 2 Jun 2017 23:50:44 +0100 Subject: [PATCH 14/14] Comment out beta warning rather than change config setting --- gramps/gen/config.py | 2 +- gramps/gui/grampsgui.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gramps/gen/config.py b/gramps/gen/config.py index 12bccaa8b..a2b8472b1 100644 --- a/gramps/gen/config.py +++ b/gramps/gen/config.py @@ -132,7 +132,7 @@ register('behavior.addmedia-image-dir', '') register('behavior.addmedia-relative-path', False) register('behavior.autoload', False) register('behavior.avg-generation-gap', 20) -register('behavior.betawarn', True) +register('behavior.betawarn', False) register('behavior.check-for-addon-updates', 0) register('behavior.check-for-addon-update-types', ["new"]) register('behavior.last-check-for-addon-updates', "1970/01/01") diff --git a/gramps/gui/grampsgui.py b/gramps/gui/grampsgui.py index a1d273b15..16b74c02e 100644 --- a/gramps/gui/grampsgui.py +++ b/gramps/gui/grampsgui.py @@ -256,7 +256,7 @@ class Gramps: and not gettext.find(GTK_GETTEXT_DOMAIN)): _display_gtk_gettext_message(parent=self._vm.window) - _display_welcome_message(parent=self._vm.window) + #_display_welcome_message(parent=self._vm.window) _display_translator_message(parent=self._vm.window)