Import from Ancestry displays date information in a thousand different ways

Original Thread Title:
Hello, I’m currently importing family trees and displaying dates in 1000 different formats? I have a total of 30,000 to import and am new here and to Gramps.

Hello, I found this software by chance and I’m thrilled. BUT I have all my family trees (in 4 lines) on Ancestry. I’ve now loaded two into Gramps 6.0 and am currently editing them (each with about 14,000 people). I’ve started and finished one of them, streamlining the location management into a tree structure from - world to → continents to → counties and then → states → counties → cities → boroughs/districts, etc. (what a job!). Now I’m working on the duplicates… but the biggest problem (why I’m writing here) is my many bold black date displays in various formats, from complete numbers in all sorts of sequences to date abbreviations, English, German, etc. There are roughly a few thousand of them. Is there a way to do this on a larger scale? Thanks for any further tips.

PS: I’ve already used the following add-ons and Gramlet (but I didn’t fully understand some of them, and English isn’t my strong suit): MultiMerge, PlaceTool, and Filter.

Thanks if anyone takes the time to help and replies.

I suspect that you may have done that the hard way. Hopefully, you used the Isotammi MultiMerge addon gramplet to automatically merge the duplicate places.

But there is a Extract Place Date from a Place Title Tool to split a comma separated Place title. It more automatically builds the hierarchy.

Always make a backup before running any tool that makes changes to your tree.

Sure, with MultiMerge and what’s better at locations — the -PlaceTool- 100 places in one U.S. state can be assigned easily in just 3 clicks and done :+1: Now I thought I’d check if there’s something for my date problems too. My AI isn’t reliable anymore, otherwise it helps me well with Gramps.

Hi,

Also, am I understanding correctly that you imported a GEDCOM file from Ancestry into Gramps and the date format was not recognized? Could you show a few examples? Honestly, such problems are easier to solve before the import (by manipulating the GEDCOM). Now it depends on how they were imported.

Best regards, David

1 Like

:germany: There are some discussions here on the Discourse forum about this exact situation.

What is happening is: the dates in Ancestry were entered in a non-standard format. And so Ancestry chooses to mark them ‘text strings’ rather than date values in its GEDDCOM export.

Typically, Gramps CAN parse those non-standard Date formats and standardize them as Date Values. But since they are marked as ‘Text strings’, it is being told to not do that. (You can test a particular format, Find a sample and open the Event Editor, then clicking in the date field and press Enter. If the date converts to your preferences Date Display Format, that proves that Gramps recognizes the old format.

Now the trick is to tell Gramps to do this task automatically instead of manually.

Fortunately, you can automate this with a SuperTool script or with the Dates gramplet. (Both are addons from the Isotammi project.)

1 Like


So only one can be loaded. The bold entries are the ones that are different. I downloaded a GEDCOM from Ancestry and imported it into Gramps (with files).

As you surely know, location management in Ancestry is very chaotic and messy, with numerous duplicate entries of people. While trying to weed out the duplicates, I found these thick entries, which affect the order.

I don’t know anything about editing with GETKOM yet, but I’m open to learning a lot more.

Hi, THANK YOU. Where can I find instructions, etc., for someone who still doesn’t understand English? AI always messes up a bit and leads me into nowhere, like with RootsMagic 11, where if the English doesn’t work, you’re lost.

:germany: Yes, that is a problem. And all the Isotammi addons are written and documented in Finnish. So it is doubly complex.

However, the key issue is that the dates that are invalid are in English. So the date parser will not read the dates correctly unless Gramps is running in English instead of German.

I do not speak German, so I cannot test if the Date Calculator could fix it by replacing the English month name with the German abbreviation… one month at a time.

If it does, you could fix the dates in 12 “Find and Replace” steps.

By sorting Events by the Date column, all the bad dates can be gathered. This will be a visual clue of what month name to replace next.

Original English:

:us_outlying_islands: Yes, that is a problem. And all the Isotammi addons are written and documented in Finnish. So it is doubly complex.

However, the key issue is that the dates that are invalid are in English. So the date parser will not read the dates correctly unless Gramps is running in English instead of German.

I do not speak German, so I cannot test if the Date Calculator could fix it by replacing the English month name with the German abbreviation… on month at a time.

If it does, you could fix the dates in 12 “Find and Replace” steps.

By sorting Events by the Date column, all the bad dates can be gathered. This will be a visual clue of what month name to replace next.

I’ve discussed this with Gemini. He will guide me through the English process and help me write the script together.

First of all, I want to thank you and am already looking forward to asking more questions.
You’re awesome—thank you all, and especially you.

2 Likes

Gern geschehen.

Auf der Wiki-Seite des Isotammi-Addons finden Sie Beispielskripte (als Links zu Diskussionen, in denen Probleme beschrieben und Lösungen geteilt wurden). Vier dieser Skripte dienen der Harmonisierung nicht standardisierter Datumsangaben. Eines davon wurde von einem Nutzer erstellt, der Gramps in einer Sprache verwendet und Datumsangaben in eine Fremdsprache (Italienisch) konvertieren muss.

https://www.gramps-project.org/wiki/index.php/Addon:Isotammi_addons#SuperTool_Scripts

Sie benötigen ein Beispielskript für SuperTool, das Gemini zur Verfügung stellt. Dies zeigt, dass nicht alles von Grund auf neu geschrieben werden muss. Gramps bietet Bibliotheken für gängige genealogische Datenmanipulationen.

Google Translate-Verhunzung. Original auf Englisch:

Glad to be of help.

There are example scripts available (as links to the discussions where people described a problem and shared their solution) from the Isotammi Addon wiki page. 4 scripts are related to harmonizing non-standard dates. One is by a people running Gramps in 1 languages and needing to convert dates in a foreign (Italian) language.
https://www.gramps-project.org/wiki/index.php/Addon:Isotammi_addons#SuperTool_Scripts

You need to provide a sample SupertTool script to Gemini. This will demonstrate that It doesn’t need to write everything from scratch. Gramps has libraries available for doing common genealogical data manipulations.

There are a few things that often surprise new users of SuperTool:

  1. SuperTool has a separte work space for each category. So a Date script is run when the Events category is active.
  2. The radio buttons and checkboxes in SuperTool are critically important. The buttons limit which records will be be fed through the script. Checkboxes limt the output. (The Execute is only a preview unless the “Commit changes” box is selected.)
  3. explore the Help (appended is a translation of the SuperTool helptxt.json that you can paste into that file.

Einige Dinge überraschen neue SuperTool-Nutzer oft:

  1. SuperTool hat für jede Kategorie einen separaten Arbeitsbereich. Ein Datumsskript wird also ausgeführt, wenn die Kategorie „Ereignisse“ aktiv ist.

  2. Die Optionsfelder und Kontrollkästchen in SuperTool sind von entscheidender Bedeutung. Die Schaltflächen schränken ein, welche Datensätze vom Skript verarbeitet werden. Kontrollkästchen begrenzen die Ausgabe. (Die Ausführung dient nur der Vorschau, sofern das Kontrollkästchen „Änderungen übernehmen“ nicht aktiviert ist.)

  3. Sehen Sie sich die Hilfe an (eine Übersetzung der SuperTool-Datei helptxt.json ist beigefügt, die Sie in diese Datei einfügen können).

Ersetzen Sie die englische Version der SuperTool-Datei helptext.json durch eine deutsche Übersetzung.

{
    "Hints": [
        [
            "Diagramm: SuperTool-Klassen",
            "Attribute und Beziehungen zwischen SuperTool-Objekten",
            "https://github.com/Taapeli/isotammi-addons/blob/master/source/SuperTool/supertool.svg"
        ],
        [
            "Beispielskripte",
            "Eine Liste von SuperTool-Skripten, die in verschiedenen Foren veröffentlicht wurden",
            "https://www.gramps-project.org/wiki/index.php/Addon:Isotammi_addons#SuperTool_Scripts"
        ],
        [
            "Gramps Entwickler-API-Handbuch",
            "Gramps-Methoden und Moduldokumentation",
            "https://gramps-project.org/docs/api.html",
            "Durchsuchbare Dokumentation im Sphinx-Markdown-CMS"
        ],
        [
            "Diagramm: Gramps-Datenmodell",
            "Gramps-Methoden und Module für primäre und sekundäre Objekte",
            "https://gramps-project.org/wiki/index.php/Gramps_Data_Model",
            "Durchsuchbare Dokumentation im Sphinx-Markdown-CMS"
        ],
        [
            "Diagramm: Gramps-API",
            "UML-Blockdiagramm der Gramps-Methoden und Moduldokumentation",
            "https://www.gramps-project.org/wiki/index.php/File:API.svg",
            "Unified-Modeling-Language-Blockdiagramm der API-Aufrufe"
        ],
        [
            "Python-Funktion: dir()",
            "Gibt typische Eigenschaften und Methoden zurück",
            "https://docs.python.org/3/library/functions.html#dir",
            "Ohne Argumente wird eine Liste der Namen im aktuellen lokalen Gültigkeitsbereich zurückgegeben"
        ],
        [
            "Python-Funktion: dir(obj)",
            "Gibt alle Eigenschaften und Methoden des angegebenen Objekts ohne deren Werte zurück",
            "https://www.w3schools.com/python/ref_func_dir.asp",
            "Mit einem Argument wird versucht, eine Liste gültiger Attribute für dieses Objekt zurückzugeben"
        ],
        [
            "Python-„Dunder“-Methoden",
            "„Double Underscore“- (führend und abschließend) oder „Magic“-Python-Methoden",
            "https://www.reddit.com/r/Python/comments/br9ok2/list_of_all_python_dunder_methods/"
        ],
        [
            "Python-Methoden mit einfachem Unterstrich",
            "Schwacher Hinweis auf „internen Gebrauch“ (führend), Vermeidung von Python-Schlüsselwortkonflikten (abschließend)"
        ],
        [
            "Funktion: repr(obj)",
            "Gibt eine druckbare Darstellung eines Objekts in Python zurück",
            "https://docs.python.org/3/library/functions.html#repr",
            "Gibt eine Zeichenkette mit einer druckbaren Darstellung eines Objekts zurück"
        ],
        [
            "Funktion: str(obj)",
            "Wandelt ein Objekt in seine Zeichenkettenrepräsentation um",
            "https://docs.python.org/3/library/stdtypes.html#str",
            "type(object).__str__(object)"
        ]
    ],

    "global": [
        ["active_person", "Aktive Person"],
        ["category", "Kategorie, z. B. „Dashboard“, „Personen“ usw."],
        ["db", "Datenbankobjekt"],
        ["dbstate", "Datenbankstatusobjekt"],
        ["filter", "Funktion, die einen benutzerdefinierten Filter anhand des Namens zurückgibt"],
        ["flatten", "Funktion, die Elemente aus verschachtelten Listen zurückgibt"],
        ["getargs", "Funktion, die den Benutzer nach Parametern für die Abfrage fragt"],
        ["makedate", "Funktion zum Erstellen eines Datumliterals; z. B. makedate(1800, 12, 31) oder makedate(1800)"],
        ["namespace", "z. B. „Person“, „Familie“ usw."],
        ["referrers", "Funktion, die Objekte der angegebenen Kategorie zurückgibt, die auf dieses Objekt verweisen"],
        ["today", "Funktion, die das heutige Datum zurückgibt"],
        ["trans", "Aktuelle Transaktion"],
        ["uistate", "UI-Statusobjekt"],
        ["uniq", "Funktion, die eindeutige Elemente aus einer Liste zurückgibt"],
        ["user", "Internes Gramps-Benutzerobjekt"]
    ],

    "People": [
        ["attributes", "Attribute als Liste von Tupeln (Name, Wert)"],
        ["birth", "Geburtsereignis"],
        ["children", "Liste der Kinder der Person"],
        ["citations", "Liste der Zitate"],
        ["death", "Todesereignis"],
        ["events", "Liste aller mit dieser Person verknüpften Ereignisse"],
        ["families", "Liste der Familien, in denen diese Person Elternteil ist"],
        ["father", "Vater der Person"],
        ["firstname", "Vorname im primären Namen der Person"],
        ["gender", "Geschlecht als Zeichenkette: M, F oder U"],
        ["gramps_id", "Gramps-ID, z. B. I0123"],
        ["handle", "Interner Gramps-Handle"],
        ["media_list", "Liste der Medien"],
        ["mother", "Mutter der Person"],
        ["name", "Primärer Name als Zeichenkette"],
        ["nameobjs", "Liste interner Gramps-Namensobjekte"],
        ["names", "Liste der Namen als Zeichenketten"],
        ["notes", "Liste der Notizen"],
        ["obj", "Dieses Gramps-Personenobjekt (gleich wie „person“)"],
        ["parent_families", "Liste der Familien, in denen diese Person ein Kind ist"],
        ["parents", "Liste der Eltern der Person"],
        ["person", "Dieses Gramps-Personenobjekt (gleich wie „obj“)"],
        ["self", "Dieses PersonProxy-Objekt"],
        ["spouses", "Liste der Ehepartner der Person"],
        ["suffix", "Namenszusatz im primären Namen der Person"],
        ["surname", "Nachname im primären Namen der Person"],
        ["tags", "Liste der Schlagwörter als Zeichenketten"]
    ],

    "Families": [
        ["attributes", "Attribute als Liste von Tupeln (Name, Wert)"],
        ["children", "Personenobjekte der Kinder der Familie"],
        ["citations", "Liste der Zitate"],
        ["events", "Liste aller mit dieser Familie verknüpften Ereignisse"],
        ["family", "Dieses Gramps-Familienobjekt (gleich wie „obj“)"],
        ["father", "Personenobjekt des Vaters der Familie"],
        ["gramps_id", "Gramps-ID, z. B. F0123"],
        ["handle", "Interner Gramps-Handle"],
        ["media_list", "Liste der Medien"],
        ["mother", "Personenobjekt der Mutter der Familie"],
        ["notes", "Liste der Notizen"],
        ["obj", "Dieses Gramps-Familienobjekt (gleich wie „family“)"],
        ["reltype", "Beziehungstyp"],
        ["self", "Dieses FamilyProxy-Objekt"],
        ["tags", "Liste der Schlagwörter als Zeichenketten"]
    ],

    "Events": [
        ["attributes", "Attribute als Liste von Tupeln (Name, Wert)"],
        ["citations", "Liste der Zitate"],
        ["date", "Datum des Ereignisses"],
        ["description", "Beschreibung des Ereignisses"],
        ["event", "Dieses Gramps-Ereignisobjekt (gleich wie „obj“)"],
        ["gramps_id", "Gramps-ID, z. B. E0123"],
        ["handle", "Interner Gramps-Handle"],
        ["media_list", "Liste der Medien"],
        ["notes", "Liste der Notizen"],
        ["obj", "Dieses Gramps-Ereignisobjekt (gleich wie „event“)"],
        ["participants", "Teilnehmer des Ereignisses (Personenobjekte)"],
        ["place", "Ortsobjekt des Ereignisses"],
        ["placename", "Name des Ortes"],
        ["refs", "Ref-Objekte, die auf dieses Ereignis verweisen"],
        ["role", "Rolle des Ereignisses"],
        ["self", "Dieses EventProxy-Objekt"],
        ["tags", "Liste der Schlagwörter als Zeichenketten"],
        ["type", "Typ der Rolle als Zeichenkette"]
    ],

    "Places": [
        ["altnames", "Liste alternativer Namen für diesen Ort"],
        ["citations", "Liste der Zitate"],
        ["code", "Code des Ortes"],
        ["enclosed_by", "Liste der Orte, die diesen Ort umschließen"],
        ["encloses", "Liste der Orte, die von diesem Ort umschlossen werden"],
        ["events", "Liste der Ereignisse, die an diesem Ort stattgefunden haben"],
        ["gramps_id", "Gramps-ID, z. B. P0123"],
        ["handle", "Interner Gramps-Handle"],
        ["lat", "Breitengrad"],
        ["long", "Längengrad"],
        ["longname", "Vollständiger Name einschließlich übergeordneter Orte"],
        ["media_list", "Liste der Medien"],
        ["name", "Name des Ortes"],
        ["notes", "Liste der Notizen"],
        ["obj", "Dieses Gramps-Ortsobjekt (gleich wie „place“)"],
        ["place", "Dieses Gramps-Ortsobjekt (gleich wie „obj“)"],
        ["self", "Dieses PlaceProxy-Objekt"],
        ["tags", "Liste der Schlagwörter als Zeichenketten"],
        ["title", "Titel des Ortes"],
        ["type", "Typ des Ortes als Zeichenkette"]
    ],

    "Citations": [
        ["attributes", "Attribute als Liste von Tupeln (Name, Wert)"],
        ["citation", "Dieses Gramps-Zitatobjekt (gleich wie „obj“)"],
        ["citators", "Objekte, die auf dieses Zitat verweisen"],
        ["confidence", "Vertrauensstufe"],
        ["date", "Datum des Zitats"],
        ["gramps_id", "Gramps-ID, z. B. C0123"],
        ["handle", "Interner Gramps-Handle"],
        ["media_list", "Liste der Medien"],
        ["notes", "Liste der Notizen"],
        ["obj", "Dieses Gramps-Zitatobjekt (gleich wie „citation“)"],
        ["page", "Seitenangabe"],
        ["self", "Dieses CitationProxy-Objekt"],
        ["source", "Quelle"],
        ["tags", "Liste der Schlagwörter als Zeichenketten"]
    ],

    "Sources": [
        ["abbrev", "Abkürzung"],
        ["attributes", "Attribute als Liste von Tupeln (Name, Wert)"],
        ["author", "Autor"],
        ["citations", "Liste der Zitate"],
        ["gramps_id", "Gramps-ID, z. B. S0123"],
        ["handle", "Interner Gramps-Handle"],
        ["media_list", "Liste der Medien"],
        ["notes", "Liste der Notizen"],
        ["obj", "Dieses Gramps-Quellenobjekt (gleich wie „source“)"],
        ["pubinfo", "Publikationsinformationen"],
        ["repositories", "Liste der Repositorien"],
        ["self", "Dieses SourceProxy-Objekt"],
        ["source", "Dieses Gramps-Quellenobjekt (gleich wie „obj“)"],
        ["tags", "Liste der Schlagwörter als Zeichenketten"],
        ["title", "Titel der Quelle"]
    ],

    "Repositories": [
        ["gramps_id", "Gramps-ID, z. B. R0123"],
        ["handle", "Interner Gramps-Handle"],
        ["name", "Name des Repositoriums"],
        ["obj", "Dieses Gramps-Repositoriumsobjekt (gleich wie „repository“)"],
        ["repository", "Dieses Gramps-Repositoriumsobjekt (gleich wie „obj“)"],
        ["self", "Dieses RepositoryProxy-Objekt"],
        ["sources", "Liste der Quellen in diesem Repositorium"],
        ["tags", "Liste der Schlagwörter als Zeichenketten"],
        ["type", "Typ des Repositoriums"]
    ],

    "Media": [
        ["attributes", "Attribute"],
        ["checksum", "Prüfsumme"],
        ["citations", "Liste der Zitate"],
        ["date", "Datum"],
        ["desc", "Beschreibung"],
        ["gramps_id", "Gramps-ID, z. B. O0123"],
        ["handle", "Interner Gramps-Handle"],
        ["media", "Dieses Gramps-Medienobjekt (gleich wie „obj“)"],
        ["mime", "MIME-Typ"],
        ["notes", "Liste der Notizen"],
        ["obj", "Dieses Gramps-Medienobjekt (gleich wie „media“)"],
        ["path", "Pfad zum Medienobjekt"],
        ["self", "Dieses MediaProxy-Objekt"],
        ["tags", "Liste der Schlagwörter als Zeichenketten"]
    ],

    "Notes": [
        ["gramps_id", "Gramps-ID, z. B. N0123"],
        ["handle", "Interner Gramps-Handle"],
        ["note", "Dieses Gramps-Notizobjekt (gleich wie „obj“)"],
        ["obj", "Dieses Gramps-Notizobjekt (gleich wie „note“)"],
        ["self", "Dieses NoteProxy-Objekt"],
        ["tags", "Liste der Schlagwörter als Zeichenketten"],
        ["text", "Text der Notiz"],
        ["type", "Typ der Notiz als Zeichenkette"]
    ]
}