# # GED2HTML output program -- customize to taste # # Copyright (c) 1998 Eugene W. Stark # All rights reserved. # ## Okay then. ## ## Well, this is a fantastic program. I didn't think I could do ## all these things, but I registered anyway. And the output changes ## I've made to suit me are very easy to do. Great program, Mr. Stark. ## ## Changes I've made: ## 1) Many appearance tweaks. ## 2) A table-based index to line up names. ## 3) A table-based 4-gen pedigree chart that fits all screens. ## 3.5) A table-based families chart ## 4) Shuffling of code in this program to more easily follow output. ## 5) A catch-all "footer" line, consistent across all pages. ## ## Changes by Robert Stewart, 27 Apr 99, stewartr@csi.com ## ## Permission is hereby granted to registered users of GED2HTML to # make copies and modifications to this code for their own personal # use and to distribute such modified copies, provided that this # copyright notice is retained on all modified or distributed copies. # Any other use of this code is prohibited without written permission. # #--------------------------------------------------------------------- # The first several definitions in this file are entry points that # the output processor expects to be here. Whatever changes you make, # you must leave some sort of definitions here for these routines. #--------------------------------------------------------------------- define do_initialize { do_initialize_ ; } define do_index i { do_index_ i ; } define do_surnames s { do_surnames_ s ; } define do_individuals i { do_individuals_ i ; } define do_families f { do_families_ f ; } define do_sources s { do_sources_ s ; } define do_notes n { do_notes_ n ; } define do_gendex i { do_gendex_ i ; } #--------------------------------------------------------------------- # The rest are auxiliary routines used by the above. # You can change whatever you want from this point on. #--------------------------------------------------------------------- #--------------------------------------------------------------------- # INITIALIZATION #--------------------------------------------------------------------- # This routine runs *after* the initialization routine from an options # file specified in the dialog box or command line, and *before* any # GEDCOM is read. define do_initialize_ local l { internationalize ; # # The purpose of the following silliness is to get an English-formatted # date to put in the META elements of the HTML output, without # affecting the previously selected language and locale. # set l to LANGUAGE set LANGUAGE to "English" set METADATE to TODAY set LANGUAGE to l } #--------------------------------------------------------------------- # PAGE HEADERS AND FOOTERS #--------------------------------------------------------------------- # Output the HTML BODY tag, handling colors, images, etc. define html_body { print "" ; } # Produce the footer on each HTML page. define page_footer { print "
" ; print ""; print "
"; print ""; print "" , print_alternatives INDEX_TEXT "Index" ; print ", " ; print "" , print_alternatives SURNAMES_TEXT "Surnames" ; print ", " ; if HOMEPAGE then print "" , print_alternatives HOME_TEXT "Home" ; print ", " ; else print " " ; end if MAILTO then print "" , print_alternatives EMAIL_TEXT "E-mail" ; print ", " ; end print ""; print ""; print ""; print "" , print_alternatives CREATED_BY_TEXT "HTML by" ; print " " VERSION " " , print " " TODAY ". " ; print ""; print "
"; print "
" ; } # Output submitter information from the GEDCOM header define submitter_info s local t { if s.name | s.address | s.phone then print "

" , print_alternatives AUTHOR_TEXT "Author" ; print_alternatives COLON_TEXT ": " ; print "
" , if s.name & s.name.text then print s.name.text , print "
" ; end if s.address & s.address.text then set t to s.address.text while t do print t.text , if t.cont then print ", " , set t to t.cont else set t to t.conc end end print "
" ; end if s.phone & s.phone.text then print s.phone.text ; print "
" ; end end } # Output author contact information, if MAILTO is set define author_contact { if MAILTO then print "" , print_alternatives EMAIL_TEXT "E-mail" ; print "" ; print "


" ; else print "
" ; end } # Output the first argument if it is non-NULL, otherwise the second argument. # This is used for international customization. define print_alternatives x y { if x then print x , else print y , end } #--------------------------------------------------------------------- # PERSONS INDEX PAGES #--------------------------------------------------------------------- # Output a single page of the hierarchical persons index. # Parameter i is head of a list of index nodes to be output # on a single page. define do_index_ i { print "" ; print "" ; print "" ; print "" , print "(" , print_name i.parent.first.name ; print " - " , print_name i.parent.last.name ; print ")" , print "" ; if ~OMIT_META then print "" ; print "" ; print "" ; print "" ; if HEADER.copr then print "" ; end end print "" ; html_body ; print "

" , print_alternatives INDEX_OF_PERSONS_TEXT "Index of Persons" ; print "

" ; if ~(i.parent & i.parent.parent) then print "" , header_info ; if HEADER.copr then print "
" HEADER.copr ; end print "
" ; if HEADER.note then print "

" ; print_text HEADER.note 0 ; print "

" ; end if HEADER.submitter then submitter_info HEADER.submitter ; end author_contact ; end # # The Index of Persons, between the lines, itself # print "

" ; # print ""; # while i do if i.children then # # If there are still-lower-level index nodes, # output links to them. # # print ""; print ""; # else # # If we have reached a leaf node of the index, # output a link to the corresponding individual data page. # # print ""; end if ~i.next then # print"
"; # print "" , print_name i.first.name ; if i.first.title then print " (" i.first.title ")" , end # print "" ; print ""; # print " -to- " , # print ""; print "" , # print_name i.last.name ; if i.last.title then print " (" i.last.title ")" , end print "" ; # print "
"; # print "" ; print "" , print_name i.first.name ; if i.first.living then print "" , else if i.first.title then print " (" i.first.title ")" , end print "" , # print ""; # print " (" , birth_and_death i.first ; print ")" , end # print "
"; # print "

" ; index_links i.parent 0 ; end set i to i.next end page_footer ; print "" ; print "" ; } # # Create UP, BACK, and NEXT pointers for navigation within a # hierarchical index. # The second argument is zero for persons index, nonzero for # surnames index # define index_links i which local pred succ { print "

" ; if i then if i.parent then if UP_TEXT then index_link UP_TEXT i.parent which ; else index_link "UP" i.parent which ; end end if i.prev then if BACK_TEXT then index_link BACK_TEXT i.prev which ; else index_link "BACK" i.prev which ; end else set pred to i.pred if pred then if BACK_TEXT then index_link BACK_TEXT i.parent.pred which ; else index_link "BACK" i.parent.pred which ; end end end if i.next then if NEXT_TEXT then index_link NEXT_TEXT i.next which ; else index_link "NEXT" i.next which ; end else set succ to i.succ if succ then if NEXT_TEXT then index_link NEXT_TEXT i.succ which ; else index_link "NEXT" i.succ which ; end end end end print "

" ; } # Output a link to a node i in the persons index, # with d as the highlighted text of the link. # The third argument is zero for persons index, nonzero for # surnames index define index_link d s which { print "" d "" , print " (" , if which then emit_surname s.first.surname ; print " - " , emit_surname s.last.surname ; else print_name s.first.name ; print " - " , print_name s.last.name ; end print ")
" ; } # Routine that outputs information from the GEDCOM header on # each index page. define header_info { print NUMBER_OF_INDIVIDUALS " " , print_alternatives INDIVIDUALS_TEXT "individuals" ; print ", " NUMBER_OF_FAMILIES " " , print_alternatives FAMILIES_TEXT "families" ; if HEADER.filename then print " " , print_alternatives FROM_FILE_TEXT "from file" ; print " " HEADER.filename , if HEADER.date then print " (" HEADER.date.value ")" ; end end } #--------------------------------------------------------------------- # SURNAMES INDEX PAGES #--------------------------------------------------------------------- # Output a single page of the surnames index. # Parameter s is the head of a list of surname index nodes to # be output in a single file. define do_surnames_ s local pred succ tabs { print "" ; print "" ; print "" ; print "" , print_alternatives INDEX_OF_SURNAMES_TEXT "Index of Surnames" ; print "" ; if ~OMIT_META then print "" ; print "" ; print "" ; print "" ; if HEADER.copr then print "" ; end end print "" ; html_body ; print "

" , print_alternatives INDEX_OF_SURNAMES_TEXT "Index of Surnames" ; print "

" ; if ~(s.parent & s.parent.parent) then print "" , header_info ; if HEADER.copr then print "
" HEADER.copr ; end print "
" ; if HEADER.note then print "

" ; print_text HEADER.note 0 ; print "

" ; end if HEADER.submitter then submitter_info HEADER.submitter ; end author_contact ; end # # If the index consists of a single node, and we haven't been # asked to produce a hierarchical index, then use "alphabet tab" format # if ~s.children & SURNAME_WIDTH = 0 & ~NO_ALPHABET_TABS then do_alphabetical s ; # # Otherwise use the more general hierarchical format # else print "

" ; while s do if s.children then # Internal node of hierarchical index # emit index tabs to lower levels print "" ; emit_surname s.first.surname ; print " -- to -- " , emit_surname s.last.surname ; print "
" ; else # Leaf node of hierarchical index # emit links to persons index print "" , emit_surname s.first.surname ; print "" , if s.next then print "," ; else print ; end end if ~s.next then print "

" ; index_links s.parent 1 ; end set s to s.next end end page_footer ; print "" ; print "" ; } # Produce an "alphabet tab" style surnames index page. define do_alphabetical s local tabs l n { set tabs to "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" print "

" ; for l in tabs do print "" l "" ; end print "

" ; for l in tabs do if s & s.first then print "

" ; while s & s.first & (~s.first.surname | s.first.surname <= l) do print "" , emit_surname s.first.surname ; print "" , set n to s.succ if n & n.first then if n.first.surname & n.first.surname <= l then print "," ; else print "
" ; end else print ; end set s to n end print "

" ; end print "" ; end if s then print "

" ; while s do print "" , emit_surname s.first.surname ; print "" , set n to s.succ if n then print "," ; else print ; end set s to n end print "

" ; end } # Routine for outputting a link to a node s in the surnames index, # with d as the highlighted text of the link. define surname_link d s { print "" d "" , print " (" , emit_surname s.first.surname ; print " - " , emit_surname s.last.surname ; print ")
" ; } # Routine for outputting either ??? or a surname. define emit_surname s { if s then print s , else print "???" , end } #--------------------------------------------------------------------- # INDIVIDUALS PAGES #--------------------------------------------------------------------- # Output a page of individuals. # Parameter i is head of a list of individuals to be output # in a single page. define do_individuals_ i local ii ok { # If we are doing family group sheet output, then we only output # something if there is an individual in the list who doesn't belong # to any family group. So, scan for this first. set ok to 0 set ii to i if FAMILY_GROUPS then while ii & ~ok do if ~ii.families & ~ii.marriages then set ok to 1 end set ii to ii.next end else set ok to 1 end if ok then print "" ; print "" ; print "" ; print "" , print i.xref ": " , print_name i.name ; if i.title then print " (" i.title ")" ; end if ~i.living then print " (" , birth_and_death i ; print ")" ; end print "" ; if ~OMIT_META then print "" ; print "" ; print "" ; print "" ; end print "" ; html_body ; while i do # If we are doing family-group-style output, then only output # an individual if they don't have any family. if ~FAMILY_GROUPS | (~i.families & ~i.marriages) then if i.living then do_living i ; else do_individual i ; end end set i to i.next end print "" ; print "" ; end } # Routine for outputting the data on an individual page for which # the individual is flagged as "living". define do_living i { print "

" , print_name i.name ; print "

" ; do_note i.living 1 ; print "

" ; print_alternatives INDEX_TEXT "INDEX" ; print ", " ; } # Routine for outputting the data on an individual page for which # the individual is not flagged as "living". define do_individual i local br fn s e a r f c n o { # # Emit Name (dates) # print ""; print "" , include i.xref ^ ".img" print_name i.name ; if i.title then print " (" i.title ")" , end print "" ; print " (", birth_and_death i; print ")" ; # # Emit general note footer pointers # if i.name & i.name.notes then for n in i.name.notes do do_note n 0 ; end end if i.notes then for n in i.notes do do_note n 0 ; end end for s in i.sources do source_link s ; end print "
"; # # Emit Names # # I wanted these separate from the events and such # So have put them just below the main name # if i.names & i.names.next then print "bynames/titles: "; for n in i.names.next do do_name n 1 ; print ", "; end end print "
"; # # Emit Events # if i.events | i.attributes | (i.names & i.names.next) | i.rfn | i.afn | i.refns | i.rin | i.ordinances then print "

" ; end # Lets do notes now, before we go further indiv_notes i 1 ; # # Emit Pedigree Chart # pedigree i ; # # Emit Family Boxes # families i ; # # Leave sources associated with this individual at the bottom # indiv_sources i 1 ; include i.xref ^ ".inc" # # Complete page # page_footer ; } # Output codes for birth and death information for an individual. define birth_and_death i { if i.birth | i.death then if i.birth & i.birth.date then print i.birth.date.value , else print "____" , end print " - " , if i.death & i.death.date then print i.death.date.value , else print "____" , end else print "____ - ____" , end } #----------------------------------------------------------- # OUTPUT BYNAMES #----------------------------------------------------------- # Routine for outputting a name structure # If "item" is nonzero, then an HTML
  • is output, # together with the GEDCOM tag associated with the attribute. define do_name n item local s nn { if n.fullname then print n.fullname ; end for nn in n.notes do do_note nn 0 ; end for s in n.sources do source_link s ; end } # Routine for outputting the full text of a name, # if the name is non-null, and do nothing otherwise. define print_name n { if n then print n.fullname , end } # Routine to output an indication of whether family line continues # with a given individual define child_had_issue c local s f { set s to " " for f in c.marriages do if f.children then set s to "+" end end print "" s "" , } # Emit the proper URL to take us to the page that has the data # for a given individual. # # If we aren't producing family group sheets, then just link to # the URL for the individual. # If we are producing family group sheets, then link to the most # appropriate family page: # If the individual has a marriage, then the link goes to that # family's page. # If the individual has no marriage, then the link goes to the first # family in which the individual is listed as a child. # If the individual is not a child in any family, then the link goes # to the page for that individual. # # When doing family groups, the f argument specifies the particular # family group to which the link should go. define indiv_url i local m { if FAMILY_GROUPS then if i.marriages then set m to i.marriages if m then print m.url "#" i.xref , end else set m to i.families if m then print m.url "#" i.xref , else print i.url , end end else print i.url , end } define indiv_family_url i f local m notfound { if FAMILY_GROUPS then set notfound to 1 if i.marriages then for m in i.marriages do if m = f then print m.url "#" i.xref , set notfound to 0 end end if notfound then print i.marriages.url "#" i.xref , end elseif i.families then for m in i.families do if m = f then print m.url "#" i.xref , set notfound to 0 end end if notfound then print i.families.url "#" i.xref , end else print i.url , end else print i.url , end } #--------------------------------------------------------------------- # FAMILY GROUP PAGES #--------------------------------------------------------------------- # Output a page of families. # Parameter f is head of a list of families to be output # in a single page. define do_families_ f { # If we are not doing family-group-style output, then do nothing if FAMILY_GROUPS then print "" ; print "" ; print "" ; print "" , if f.husband then print_name f.husband.name ; else print "(Unknown)" , end print " / " , if f.wife then print_name f.wife.name ; else print "(Unknown)" , end print "" ; if ~OMIT_META then print "" ; print "" ; print "" ; end print "" ; html_body ; while f do do_family f ; set f to f.next end print "" ; print "" ; end } # Routines to output a family group sheet for a given family define do_family f local e m c n s { print "

    " , if f.husband then print "" , print_name f.husband.name ; print "" , else print "(Unknown)" , end print " / " , if f.wife then print "" , print_name f.wife.name ; print "" , else print "(Unknown)" , end print "

    " ; for n in f.notes do do_note n 0 ; end for s in f.sources do source_link s ; end print "" ; print "

    " ; if f.husband then print "
    " , print_alternatives HUSBAND_TEXT "Husband" ; print_alternatives COLON_TEXT ": " ; print "" , print_name f.husband.name ; print "" ; print "

    " ; do_husband_or_wife f f.husband "Husband" ; print "

    " ; else print "
    " , print_alternatives HUSBAND_TEXT "Husband" ; print_alternatives COLON_TEXT ": " ; print "

    " ; end if f.wife then print "
    " , print_alternatives WIFE_TEXT "Wife" ; print_alternatives COLON_TEXT ": " ; print "" , print_name f.wife.name ; print "" ; print "

    " ; do_husband_or_wife f f.wife "Wife" ; print "

    " ; else print "
    " , print_alternatives WIFE_TEXT "Wife" ; print_alternatives COLON_TEXT ": " ; print "

    " ; end print "
    " , print_alternatives CHILDREN_TEXT "CHILDREN" ; print "" ; print "

    " ; for c in f.children do do_child f c ; end print "
    " ; print "

    " , print_alternatives INDEX_TEXT "INDEX" ; print "

    " ; # # Emit all notes and sources associated with this individual # family_notes f 1 ; if f.husband then indiv_notes f.husband 1 ; end if f.wife then indiv_notes f.wife 1 ; end if f.children then for c in f.children do indiv_notes c 1 ; end end family_sources f 1 ; if f.husband then indiv_sources f.husband 1 ; end if f.wife then indiv_sources f.wife 1 ; end if f.children then for c in f.children do indiv_sources c 1 ; end end page_footer ; } define do_child f c local n s { print "" , print "" , print_alternatives NAME_TEXT "Name" ; print_alternatives COLON_TEXT ": " ; print "" , print "" ; print "" , print_name c.name ; print "" ; if ~c.living then for n in c.notes do do_note n 0 ; end for s in c.sources do source_link s ; end else do_note c.living 0 ; end print "" , born_field c ; if c.marriages then married_field c.marriages c ; end died_field c ; spouses_field c ; print "
    " ; } define do_husband_or_wife f i which local e m c n s { if i & (~i.living) then born_field i ; if which = "Husband" then married_field f i ; end died_field i ; father_field i f ; mother_field i f ; spouses_field i ; if i.notes then print "" , print_alternatives NOTES_TEXT "Notes" ; print_alternatives COLON_TEXT ": " ; print "" ; for n in i.notes do do_note n 0 ; end end if i.sources then print "" , print_alternatives SOURCES_TEXT "Sources" ; print_alternatives COLON_TEXT ": " ; print "" ; for s in i.sources do source_link s ; end end else print "Born:" , print "at:" ; print "at:" ; print "Died:" , print "at:" ; print "" , print_alternatives FATHER_TEXT "Father" ; print_alternatives COLON_TEXT ": " ; print "" , print "" , print_alternatives MOTHER_TEXT "Mother" ; print_alternatives COLON_TEXT ": " ; print "" , end } # Routines to do output of the various kinds of fields in the # family group sheet. define born_field i { print "" , print "" , print_alternatives BORN_TEXT "Born" ; print_alternatives COLON_TEXT ": " ; print "" , if i.birth & ~i.living then if i.birth.date then print i.birth.date.value , end event_notes i.birth 0 ; event_sources i.birth 0 ; end print "" , print_alternatives AT_TEXT "at" ; print_alternatives COLON_TEXT ": " ; print "" , if i.birth & i.birth.place & ~i.living then print i.birth.place.name ; else print ; end } define died_field i { print "" , print "" , print_alternatives DIED_TEXT "Died" ; print_alternatives COLON_TEXT ": " ; print "" , if i.death & ~i.living then if i.death.date then print i.death.date.value , end event_notes i.death 0 ; event_sources i.death 0 ; end print "" , print_alternatives AT_TEXT "at" ; print_alternatives COLON_TEXT ": " ; print "" , if i.death & i.death.place & ~i.living then print i.death.place.name , else print ; end } define married_field f c local m e { set m to 0 if ~c.living then for e in f.events do if e.tagcode = "MARR" then print "" , print "" , print_alternatives MARRIED_TEXT "Married" ; print_alternatives COLON_TEXT ": " ; print "" , if e.date then print e.date.value , end event_notes e 0 ; event_sources e 0 ; print "" , print_alternatives AT_TEXT "at" ; print_alternatives COLON_TEXT ": " ; print "" , if e.place then print e.place.name , end print ; set m to 1 end end end if m = 0 then print "" , print "" , print_alternatives MARRIED_TEXT "Married" ; print_alternatives COLON_TEXT ": " ; print "" , print "" , print_alternatives AT_TEXT "at" ; print_alternatives COLON_TEXT ": " ; print "" ; end } define spouses_field c local m first { print "" , print "" , print_alternatives SPOUSES_TEXT "Spouses" ; print_alternatives COLON_TEXT ": " ; print "" , if ~c.living then set first to 1 for m in c.marriages do if c.ismale & m.wife then if ~first then print ", " , else set first to 0 end print "" , print_name m.wife.name ; print "" ; elseif c.isfemale & m.husband then if ~first then print ", " , else set first to 0 end print "" , print_name m.husband.name ; print "" ; end end end } define father_field i f { print "" , print "" , print_alternatives FATHER_TEXT "Father" ; print_alternatives COLON_TEXT ": " ; print "" , if i.father & ~i.living then print "" , print_name i.father.name ; print "" ; else print ; end } define mother_field i f { print "" , print "" , print_alternatives MOTHER_TEXT "Mother" ; print_alternatives COLON_TEXT ": " ; print "" , if i.mother & ~i.living then print "" , print_name i.mother.name ; print "" ; else print ; end } #--------------------------------------------------------------------- # LINKS TO NOTES AND SOURCES #--------------------------------------------------------------------- # Find all notes associated with a single family. # If here is nonzero, then output the notes right now, # otherwise output links to the notes. define family_notes f here local n e { for n in f.notes do do_note n here ; end for e in f.events do event_notes e here ; end } # Find all notes associated with a single individual # If here is nonzero, then output the notes right now, # otherwise output links to the notes. define indiv_notes i here local n e a { if i.living then do_note i.living here ; else for n in i.notes do do_note n here ; end for n in i.names do name_notes n here ; end for a in i.attributes do if a.event then event_notes a.event here ; end end for e in i.events do event_notes e here ; end end } # Find all notes associated with a single event # If here is nonzero, then output the notes right now, # otherwise output links to the notes. define event_notes e here local n { for n in e.notes do do_note n here ; end } # Find all notes associated with a single source # If here is nonzero, then output the notes right now, # otherwise output links to the notes. define source_notes s here local n { for n in s.notes do do_note n here ; end } # Find all notes associated with a name # If here is nonzero, then output the notes right now, # otherwise output links to the notes. define name_notes n here local nn { for nn in n.notes do do_note nn here ; end } # Find all sources associated with a single family group # If here is nonzero, then output the sources right now, # otherwise output links to the sources. define family_sources f here local s c e { for e in f.events do event_sources e here ; end for s in f.sources do if here then do_citation s ; else source_link s ; end end } # Find all sources associated with a single individual # If here is nonzero, then output the sources right now, # otherwise output links to the sources. define indiv_sources i here local s e a n { if ~i.living then for s in i.sources do if here then do_citation s ; else source_link s ; end end for n in i.names do name_sources n here ; end for a in i.attributes do if a.event then event_sources a.event here ; end end for e in i.events do event_sources e here ; end end } # Output all sources associated with a single event # If here is nonzero, then output the sources right now, # otherwise output links to the sources. define event_sources e here local s { for s in e.sources do if here then do_citation s ; else source_link s ; end end } # Find all sources associated with a name # If here is nonzero, then output the sources right now, # otherwise output links to the sources. define name_sources n here local s { for s in n.sources do if here then do_citation s ; else source_link s ; end end } #--------------------------------------------------------------------- # SOURCES PAGES #--------------------------------------------------------------------- # Output a page of sources. # Parameter s is head of a list of sources to be output # in a single page. define do_sources_ s { print "" ; print "" ; print "" ; print "" , print_alternatives SOURCES_TEXT "Sources" ; print "" ; if ~OMIT_META then print "" ; print "" ; print "" ; print "" ; end print "" ; html_body ; print "

    " , print_alternatives SOURCES_TEXT "Sources" ; print "

    " ; while s do print "

    " ; do_source s ; set s to s.next end page_footer ; print "" ; print "" ; } # Routine for outputting a SOUR structure define do_source s local n r { if s.xref then print "[" s.xref "]" ; else print "[" s.tagname.upper "]" ; end if s.abbreviation then print "" ; do_attr s.abbreviation 0 ; print "" ; end if s.title then print "" ; print_text s.title 0 ; print "" ; end if s.text then print "

    " ; print_text s.text 0 ; print "

    " ; end if s.author | s.publication | s.refns | s.rin | s.change | s.repository | s.notes then print "" ; end } # Routine for outputting a link to a source citation # that appears later on the same page define source_link c { print "[" c.serial "]" ; } # Routine for outputting a source citation: define do_citation c local n t { print "

    " ; print "[" c.serial "]" ; if c.source then if INLINE_SOURCES then do_source c.source ; else print "[" c.source.xref "]" ; if c.source.abbreviation then print "" ; do_attr c.source.abbreviation 0 ; print "" ; end end else print "[" c.tagname.upper "]" ; end if c.description then print_text c.description 0 ; end if c.page | c.event | c.quay | c.data | c.texts | c.notes then print "

    " ; end } # Routine to output "source data", which is certain information that # can appear in a source record or in a source citation define do_source_data d local e n t { print "
  • " d.tagname.upper ": " ; if d.date | d.events | d.agency then print "" ; end for t in d.texts do print "

    " ; print_text t 0 ; print "

    " ; end for n in d.notes do do_note n 1 ; end } # Routine for outputting source repository info # First argument is a repository citation. # If "item" is nonzero, then an HTML
  • is output, # together with the GEDCOM tag. define do_repository r item local rr rn n { if item then print "
  • " r.tagname.upper ": " , end set rr to r.repository if rr.name & rr.name.text then print rr.name.text ; end if rr.refns | rr.rin | r.caln | (rr.address & rr.address.text) then print "" ; end for n in r.notes do do_note n 1 ; end for n in rr.notes do do_note n 1 ; end } # Output change info. # If "item" is nonzero, then an HTML
  • is output, # together with the GEDCOM tag. define do_change c item local n { if item then print "
  • " c.tagname.upper ": " , end if c.date then print c.date.value ; end for n in c.notes do do_note n 1 ; end } #--------------------------------------------------------------------- # NOTES PAGES #--------------------------------------------------------------------- # Output a page of notes. # Parameter n is head of a list of notes to be output # in a single page. define do_notes_ n { print "" ; print "" ; print "" ; print "" , print_alternatives NOTES_TEXT "Notes" ; print "" ; if ~OMIT_META then print "" ; print "" ; print "" ; print "" ; end print "" ; html_body ; print "

    " , print_alternatives NOTES_TEXT "Notes" ; print "

    " ; while n do do_note n 2 ; set n to n.next end page_footer ; print "" ; print "" ; } # Routine for outputting a NOTE structure: # If "here" is 0, then a link is output. For notes at GEDCOM # level 0, the link goes to a separate notes page. # For notes at GEDCOM level 1 or higher, the link goes to # the end of the same page. # If "here" is 1, then a note at GEDCOM level 1 or higher is # output now, and a note at GEDCOM level 0 is output # if INLINE_NOTES is nonzero, otherwise a link is output # to that note, either on this page or the notes page. # If "here" is 2, then the note is always output now. define do_note n here local s r { if here & ((~n.xref) | INLINE_NOTES | here = 2) then # Print the complete note information now, together with an anchor print "

    " ; if n.xref then print "[" n.xref "]" ; else print "[" n.serial "]" ; end if n.refns | n.rin then print "

    " ; end if n.text then print_text n.text 0 ; end print "

    " ; for s in n.sources do source_link s ; end else # Make a link to the note, either on this page, or on a notes page if n.xref then if INLINE_NOTES then print "[" n.xref "]" ; else print "[" n.xref "]" ; end else print "[" n.serial "]" ; end end } # Routine to output a "text" structure, which is a common # component of several other GEDCOM structures. # If "item" is nonzero, then an HTML

  • is output, # together with the GEDCOM tag associated with the text. define print_text t item { if item then print "
  • " t.tagname.upper ": " ; end while t do print t.text ; if t.cont then if CONT_MEANS_BREAK then print "
    " ; end set t to t.cont else set t to t.conc end end } #--------------------------------------------------------------------- # GENDEX FILE #--------------------------------------------------------------------- # Output a "gendex.txt" index file for use by the GENDEX index # server at http://www.gendex.com/gendex/ # # Parameter i is head of a list of individuals to be output # in a single page. # # PLEASE DO NOT CHANGE THIS. THE GENDEX SERVER DEPENDS ON THIS # FILE BEING IN A SPECIFIC FORMAT. define do_gendex_ i local e d p { print ";; " VERSION ", " TODAY ; print ";; See the documentation to find out how this file can" ; print ";; be used to add your names to a master index." ; print ";;" ; while i do if ~i.living then indiv_url i ; print "|" , if i.name & i.name.surname then print i.name.surname , end print "|" , if i.name & i.name.gedcom then print i.name.gedcom , end print "|" , set d to "" set p to "" if i.birth then if i.birth.date then set d to i.birth.date.string end if i.birth.place then set p to i.birth.place.name end else for e in i.events do if e.tagcode = "CHR" then if e.date then set d to e.date.string end if e.place then set p to e.place.name end end end end if d then print d , end print "|" , if p then print p , end print "|" , set d to "" set p to "" if i.death then if i.death.date then set d to i.death.date.string end if i.death.place then set p to i.death.place.name end else for e in i.events do if e.tagcode = "BURI" then if e.date then set d to e.date.string end if e.place then set p to e.place.name end end end end if d then print d , end print "|" , if p then print p , end print "|" , print ; end set i to i.next end print ";; This file has not been truncated." ; } #--------------------------------------------------------------------- # EVENTS AND ATTRIBUTES #--------------------------------------------------------------------- # Output an event structure # If "item" is nonzero, then an HTML
  • is output, # together with the GEDCOM tag associated with the event. define do_event e item { if item then print "
  • " e.tagname.upper ": " , end if e.text then print e.text "
    " ; end do_event_detail e ; } # Output an attribute consisting of a single text line, # plus possibly an event detail. # If "item" is nonzero, then an HTML
  • is output, # together with the GEDCOM tag associated with the attribute. define do_attr a item { if item then print "
  • " a.tagname.upper ": " , end if a.text then print a.text "
    " ; end if a.event then do_event_detail a.event ; end } # Outting an event, except for the tag # This code is also used by do_attr define do_event_detail e local s n { if e.type then print e.type ": " ; end if e.date & e.place then print e.date.value ", " e.place.name ; elseif e.date then print e.date.value ; elseif e.place then print e.place.name ; else print ; end for n in e.notes do do_note n 0 ; end for s in e.sources do source_link s ; end } # Output a REFN structure. # If "item" is nonzero, then an HTML
  • is output, # together with the GEDCOM tag associated with the refn. define do_refn r item { if item then print "
  • " r.tagname.upper , if r.type then print " (" r.type ")" , end print ": " , end print r.number ; } # Output LDS ordinance information. # If "item" is nonzero, then an HTML
  • is output, # together with the GEDCOM tag associated with the ordinance. define do_ordn o item local s { if item then print "
  • " o.tagname.upper ": " , end if o.date & o.place then print o.date.value ", " o.place.name ; elseif o.date then print o.date.value ; elseif o.place then print o.place.name ; else print ; end for s in o.sources do source_link s ; end if o.temple then print "
    " , print_alternatives TEMPLE_TEXT "Temple" ; print "" , print_alternatives COLON_TEXT ": " ; print o.temple ; end if o.status then print "
    " , print_alternatives STATUS_TEXT "Status" ; print "" , print_alternatives COLON_TEXT ": " ; print o.status ; end } # Fixed format pedigree code by David Stafford # (modified by Gene Stark for GED2HTML v3.5) # Table format code by Robert Stewart # # He said (on April 7, 1998): # Here is the code which works fine on my data set you may want to check it # out yourself. # There is just one point worth noting: if the individual being process does # not have a linked father - the code assumes that individual doesn't have a # paternal grandparents either. The same goes for the mother's side. # Obviously this causes a problem when one has information about a grandparent # and a grandchild but not about the parent. In my experience, that is a rare # occurance, but I guess it may be a restriction for some people. # #Please feel free to use this code as you see fit. define pedigree i local myf myfn myfu mym mymn mymu myff myffn myffu myfm myfmn myfmu mymf mymfn mymfu mymm mymmn mymmu myfff myfffn myfffu myffm myffmn myffmu myfmf myfmfn myfmfu myfmm myfmmn myfmmu mymff mymffn mymffu mymfm mymfmn mymfmu mymmf mymmfn mymmfu mymmm mymmmn mymmmu { if i.father then set myf to i.father set myfn to i.father.name.fullname set myfu to i.father.url if myf.father then set myffn to myf.father.name.fullname set myffu to myf.father.url set myff to myf.father if myff.father then set myfffn to myff.father.name.fullname set myfffu to myff.father.url else set myfffn to "Not Known" end if myff.mother then set myffmn to myff.mother.name.fullname set myffmu to myff.mother.url else set myffmn to "Not Known" end else set myffn to "Not Known" set myffmn to "Not Known" set myfffn to "Not Known" end if myf.mother then set myfm to myf.mother set myfmn to myf.mother.name.fullname set myfmu to myf.mother.url if myfm.father then set myfmfn to myfm.father.name.fullname set myfmfu to myfm.father.url else set myfmfn to "Not Known" end if myfm.mother then set myfmm to myfm.mother set myfmmn to myfm.mother.name.fullname set myfmmu to myfm.mother.url else set myfmmn to "Not Known" end else set myfmn to "Not Known" set myfmfn to "Not Known" set myfmmn to "Not Known" end else set myfffn to "Not Known" set myffmn to "Not Known" set myffn to "Not Known" set myfmn to "Not Known" set myfmfn to "Not Known" set myfmmn to "Not Known" set myfn to "Not Known" end if i.mother then set mym to i.mother set mymn to i.mother.name.fullname set mymu to i.mother.url if mym.father then set mymfu to mym.father.url set mymfn to mym.father.name.fullname set mymf to mym.father if mymf.father then set mymffn to mymf.father.name.fullname set mymffu to mymf.father.url else set mymffn to "Not Known" end if mymf.mother then set mymfmn to mymf.mother.name.fullname set mymfmu to mymf.mother.url else set mymfmn to "Not Known" end else set mymfn to "Not Known" set mymfmn to "Not Known" set mymffn to "Not Known" end if mym.mother then set mymm to mym.mother set mymmn to mym.mother.name.fullname set mymmu to mym.mother.url if mymm.father then set mymmfn to mymm.father.name.fullname set mymmfu to mymm.father.url else set mymmfn to "Not Known" end if mymm.mother then set mymmm to mymm.mother set mymmmn to mymm.mother.name.fullname set mymmmu to mymm.mother.url else set mymmmn to "Not Known" end else set mymmn to "Not Known" set mymmfn to "Not Known" set mymmmn to "Not Known" end else set mymffn to "Not Known" set mymfmn to "Not Known" set mymfn to "Not Known" set mymmn to "Not Known" set mymmfn to "Not Known" set mymmmn to "Not Known" set mymn to "Not Known" end print "
    "; print ""; print ""; if myfffn = "Not Known" then print ""; else print ""; end if myffmn = "Not Known" then print " "; else print ""; end if myfmfn = "Not Known" then print " "; else print " "; end if myfmmn = "Not Known" then print " "; else print " "; end if mymffn = "Not Known" then print " "; else print " "; end if mymfmn = "Not Known" then print " "; else print " "; end if mymmfn = "Not Known" then print " "; else print " "; end if mymmmn = "Not Known" then print " "; else print " "; end print ""; print ""; if myffn = "Not Known" then print ""; else print ""; end if myfmn = "Not Known" then print ""; else print ""; end if mymfn = "Not Known" then print ""; else print ""; end if mymmn = "Not Known" then print ""; else print ""; end print ""; print ""; print ""; if myfn = "Not Known" then print ""; else print ""; end print ""; print ""; if mymn = "Not Known" then print ""; else print ""; end print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; print "
    "myfffn""myffmn""myfmfn""myfmmn""mymffn""mymfmn""mymmfn""mymmmn"
    "myffn""myfmn""mymfn""mymmn"
    "myfn""mymn"
    " i.name.fullname "
    "; print "
    "; } # # Output of individuals families below the pedigree chart # define families i local fn f e mw c { print "
    "; print ""; set mw to 33 set fn to 1 for f in i.marriages do if fn=4 then print ""; elseif fn=7 then print ""; elseif fn=10 then print ""; end print ""; set fn to fn+1 end print "
    "; print "" , print_alternatives FAMILY_TEXT "Family" ; print " " fn "" ; print_alternatives COLON_TEXT ": " ; if i.ismale & f.wife then print "" , print_name f.wife.name ; print "" ; end if i.isfemale & f.husband then print "" , print_name f.husband.name ; print "" ; end if f.events | f.ordinances | f.refns | f.rin then print "
      " ; for e in f.events do do_event e 1 ; end for o in f.ordinances do do_ordn o 1 ; end for r in f.refns do do_refn r 1 ; end if f.rin then do_attr f.rin 1 ; end print "
    " ; end # # Let's put notes and sources in same family box. # family_notes f 1 ; family_sources f 1 ; if f.children then print "
      " ; for c in f.children do print "
    1. " , child_had_issue c ; print "" , print_name c.name ; print "" ; end print "
    " ; else print "
    " ; end print "
    "; } #--------------------------------------------------------------------- # INTERNATIONALIZATION #--------------------------------------------------------------------- # Sets the value of each piece of text in the template, based on the # specified language name. As this gets run *after* initializations # from any options file, we have to check each variable to see if it # has already been given a value. # # The English translations are already coded as defaults in the # rest of the template, so they don't appear again here. define internationalize local LANG { set LANG to LANGUAGE.upper if LANG = "FRENCH" then if ~HOME_TEXT then set HOME_TEXT to "PAGE D'ACCUEIL" end if ~EMAIL_TEXT then set EMAIL_TEXT to "COURRIER" end if ~CREATED_BY_TEXT then set CREATED_BY_TEXT to "HTML créé par" end if ~ON_TEXT then set ON_TEXT to "le" end if ~AUTHOR_TEXT then set AUTHOR_TEXT to "Auteur" end if ~INDEX_OF_PERSONS_TEXT then set INDEX_OF_PERSONS_TEXT to "Index des Personnes" end if ~INDEX_OF_SURNAMES_TEXT then set INDEX_OF_SURNAMES_TEXT to "Index des Noms de Famille" end if ~INDIVIDUALS_TEXT then set INDIVIDUALS_TEXT to "personnes" end if ~FAMILIES_TEXT then set FAMILIES_TEXT to "familles" end if ~FROM_FILE_TEXT then set FROM_FILE_TEXT to "du fichier" end if ~SURNAMES_TEXT then set SURNAMES_TEXT to "NOMS DE FAMILLE" end if ~INDEX_TEXT then set INDEX_TEXT to "PERSONNES" end if ~NOTES_TEXT then set NOTES_TEXT to "Notes" end if ~SOURCES_TEXT then set SOURCES_TEXT to "Sources" end if ~UP_TEXT then set UP_TEXT to "PLUS HAUT" end if ~BACK_TEXT then set BACK_TEXT to "PRÉCÉDENT" end if ~NEXT_TEXT then set NEXT_TEXT to "SUIVANT" end if ~MOTHER_TEXT then set MOTHER_TEXT to "Mère" end if ~FATHER_TEXT then set FATHER_TEXT to "Père" end if ~CHILDREN_TEXT then set CHILDREN_TEXT to "ENFANTS" end if ~FAMILY_TEXT then set FAMILY_TEXT to "Famille" end if ~TEMPLE_TEXT then set TEMPLE_TEXT to "Temple" end if ~STATUS_TEXT then set STATUS_TEXT to "Status" end if ~HUSBAND_TEXT then set HUSBAND_TEXT to "Époux" end if ~WIFE_TEXT then set WIFE_TEXT to "Épouse" end if ~NAME_TEXT then set NAME_TEXT to "Nom" end if ~BORN_TEXT then set BORN_TEXT to "Naissance" end if ~AT_TEXT then set AT_TEXT to "à" end if ~DIED_TEXT then set DIED_TEXT to "Décès" end if ~MARRIED_TEXT then set MARRIED_TEXT to "Mariés" end if ~SPOUSES_TEXT then set SPOUSES_TEXT to "Conjoint(e)" end if ~COLON_TEXT then set COLON_TEXT to " : " end elseif LANG = "DUTCH" then if ~HOME_TEXT then set HOME_TEXT to "HOME" end if ~EMAIL_TEXT then set EMAIL_TEXT to "E-MAIL" end if ~CREATED_BY_TEXT then set CREATED_BY_TEXT to "HTML aangemaakt met" end if ~ON_TEXT then set ON_TEXT to "op" end if ~AUTHOR_TEXT then set AUTHOR_TEXT to "Auteur" end if ~INDEX_OF_PERSONS_TEXT then set INDEX_OF_PERSONS_TEXT to "Lijst van personen" end if ~INDEX_OF_SURNAMES_TEXT then set INDEX_OF_SURNAMES_TEXT to "Lijst van achternamen" end if ~INDIVIDUALS_TEXT then set INDIVIDUALS_TEXT to "personen" end if ~FAMILIES_TEXT then set FAMILIES_TEXT to "gezinnen" end if ~FROM_FILE_TEXT then set FROM_FILE_TEXT to "uit bestand" end if ~SURNAMES_TEXT then set SURNAMES_TEXT to "ACHTERNAMEN" end if ~INDEX_TEXT then set INDEX_TEXT to "PERSONEN" end if ~NOTES_TEXT then set NOTES_TEXT to "Aantekeningen" end if ~SOURCES_TEXT then set SOURCES_TEXT to "Bronnen" end if ~UP_TEXT then set UP_TEXT to "OMHOOG" end if ~BACK_TEXT then set BACK_TEXT to "VORIGE" end if ~NEXT_TEXT then set NEXT_TEXT to "VOLGENDE" end if ~MOTHER_TEXT then set MOTHER_TEXT to "Moeder" end if ~FATHER_TEXT then set FATHER_TEXT to "Vader" end if ~CHILDREN_TEXT then set CHILDREN_TEXT to "Kinderen" end if ~FAMILY_TEXT then set FAMILY_TEXT to "Gezin" end if ~TEMPLE_TEXT then set TEMPLE_TEXT to "Tempel" end if ~STATUS_TEXT then set STATUS_TEXT to "Status" end if ~HUSBAND_TEXT then set HUSBAND_TEXT to "Echtgenoot" end if ~WIFE_TEXT then set WIFE_TEXT to "Echtgenote" end if ~NAME_TEXT then set NAME_TEXT to "Naam" end if ~BORN_TEXT then set BORN_TEXT to "Geboorte" end if ~AT_TEXT then set AT_TEXT to ", " end if ~DIED_TEXT then set DIED_TEXT to "Overlijden" end if ~MARRIED_TEXT then set MARRIED_TEXT to "Huwelijk" end if ~SPOUSES_TEXT then set SPOUSES_TEXT to "Echtgenoot" end if ~COLON_TEXT then set COLON_TEXT to ": " end elseif LANG = "GERMAN" then if ~HOME_TEXT then set HOME_TEXT to "HOME" end if ~EMAIL_TEXT then set EMAIL_TEXT to "EMAIL" end if ~CREATED_BY_TEXT then set CREATED_BY_TEXT to "HTML erzeugt von" end if ~ON_TEXT then set ON_TEXT to "am" end if ~AUTHOR_TEXT then set AUTHOR_TEXT to "Autor" end if ~INDEX_OF_PERSONS_TEXT then set INDEX_OF_PERSONS_TEXT to "Index der Personen" end if ~INDEX_OF_SURNAMES_TEXT then set INDEX_OF_SURNAMES_TEXT to "Index der Familiennamen" end if ~INDIVIDUALS_TEXT then set INDIVIDUALS_TEXT to "Personen" end if ~FAMILIES_TEXT then set FAMILIES_TEXT to "Familien" end if ~FROM_FILE_TEXT then set FROM_FILE_TEXT to "aus der Datei" end if ~SURNAMES_TEXT then set SURNAMES_TEXT to "FAMILIENNAMEN" end if ~INDEX_TEXT then set INDEX_TEXT to "PERSONEN" end if ~NOTES_TEXT then set NOTES_TEXT to "Anmerkungen" end if ~SOURCES_TEXT then set SOURCES_TEXT to "Quellen" end if ~UP_TEXT then set UP_TEXT to "NACH OBEN" end if ~BACK_TEXT then set BACK_TEXT to "VORHERIGE" end if ~NEXT_TEXT then set NEXT_TEXT to "FOLGENDE" end if ~MOTHER_TEXT then set MOTHER_TEXT to "Mutter" end if ~FATHER_TEXT then set FATHER_TEXT to "Vater" end if ~CHILDREN_TEXT then set CHILDREN_TEXT to "Kinder" end if ~FAMILY_TEXT then set FAMILY_TEXT to "Familie" end if ~TEMPLE_TEXT then set TEMPLE_TEXT to "Tempel" end if ~STATUS_TEXT then set STATUS_TEXT to "Status" end if ~HUSBAND_TEXT then set HUSBAND_TEXT to "Ehemann" end if ~WIFE_TEXT then set WIFE_TEXT to "Ehefrau" end if ~NAME_TEXT then set NAME_TEXT to "Name" end if ~BORN_TEXT then set BORN_TEXT to "Geburt" end if ~AT_TEXT then set AT_TEXT to "in" end if ~DIED_TEXT then set DIED_TEXT to "Tod" end if ~MARRIED_TEXT then set MARRIED_TEXT to "Geheiratet" end if ~SPOUSES_TEXT then set SPOUSES_TEXT to "Ehegatte" end if ~COLON_TEXT then set COLON_TEXT to ": " end elseif LANG = "NORWEGIAN" then if ~HOME_TEXT then set HOME_TEXT to "HJEMMESIDE" end if ~EMAIL_TEXT then set EMAIL_TEXT to "E-MAIL" end if ~CREATED_BY_TEXT then set CREATED_BY_TEXT to "HTML opprettet av" end if ~ON_TEXT then set ON_TEXT to "den" end if ~AUTHOR_TEXT then set AUTHOR_TEXT to "Forfatter" end if ~INDEX_OF_PERSONS_TEXT then set INDEX_OF_PERSONS_TEXT to "Index på personer" end if ~INDEX_OF_SURNAMES_TEXT then set INDEX_OF_SURNAMES_TEXT to "Index på familie" end if ~INDIVIDUALS_TEXT then set INDIVIDUALS_TEXT to "personer" end if ~FAMILIES_TEXT then set FAMILIES_TEXT to "familier" end if ~FROM_FILE_TEXT then set FROM_FILE_TEXT to "fra filen" end if ~SURNAMES_TEXT then set SURNAMES_TEXT to "FAMILIER" end if ~INDEX_TEXT then set INDEX_TEXT to "PERSONER" end if ~NOTES_TEXT then set NOTES_TEXT to "Notater" end if ~SOURCES_TEXT then set SOURCES_TEXT to "Sources" end if ~UP_TEXT then set UP_TEXT to "OPP" end if ~BACK_TEXT then set BACK_TEXT to "TILBAKE" end if ~NEXT_TEXT then set NEXT_TEXT to "NESTE" end if ~MOTHER_TEXT then set MOTHER_TEXT to "Mor" end if ~FATHER_TEXT then set FATHER_TEXT to "Far" end if ~CHILDREN_TEXT then set CHILDREN_TEXT to "Barn" end if ~FAMILY_TEXT then set FAMILY_TEXT to "Familie" end if ~TEMPLE_TEXT then set TEMPLE_TEXT to "Tempel" end if ~STATUS_TEXT then set STATUS_TEXT to "Status" end if ~HUSBAND_TEXT then set HUSBAND_TEXT to "Ektemann" end if ~WIFE_TEXT then set WIFE_TEXT to "Hustru" end if ~NAME_TEXT then set NAME_TEXT to "Navn" end if ~BORN_TEXT then set BORN_TEXT to "Født" end if ~AT_TEXT then set AT_TEXT to ", " end if ~DIED_TEXT then set DIED_TEXT to "Død" end if ~MARRIED_TEXT then set MARRIED_TEXT to "Gift" end if ~SPOUSES_TEXT then set SPOUSES_TEXT to "Ektefelle" end if ~COLON_TEXT then set COLON_TEXT to ": " end elseif LANG = "ITALIAN" then if ~HOME_TEXT then set HOME_TEXT to "HOME" end if ~EMAIL_TEXT then set EMAIL_TEXT to "EMAIL" end if ~CREATED_BY_TEXT then set CREATED_BY_TEXT to "HTML creato da" end if ~ON_TEXT then set ON_TEXT to "il" end if ~AUTHOR_TEXT then set AUTHOR_TEXT to "Autore" end if ~INDEX_OF_PERSONS_TEXT then set INDEX_OF_PERSONS_TEXT to "Indice delle Persone" end if ~INDEX_OF_SURNAMES_TEXT then set INDEX_OF_SURNAMES_TEXT to "Indice dei Cognomi" end if ~INDIVIDUALS_TEXT then set INDIVIDUALS_TEXT to "individui" end if ~FAMILIES_TEXT then set FAMILIES_TEXT to "famiglie" end if ~FROM_FILE_TEXT then set FROM_FILE_TEXT to "dal file" end if ~SURNAMES_TEXT then set SURNAMES_TEXT to "COGNOMI" end if ~INDEX_TEXT then set INDEX_TEXT to "PERSONE" end if ~NOTES_TEXT then set NOTES_TEXT to "Note" end if ~SOURCES_TEXT then set SOURCES_TEXT to "Sorgenti" end if ~UP_TEXT then set UP_TEXT to "SOPRA" end if ~BACK_TEXT then set BACK_TEXT to "PRECEDENTE" end if ~NEXT_TEXT then set NEXT_TEXT to "SEGUENTE" end if ~MOTHER_TEXT then set MOTHER_TEXT to "Madre" end if ~FATHER_TEXT then set FATHER_TEXT to "Padre" end if ~CHILDREN_TEXT then set CHILDREN_TEXT to "Figli" end if ~FAMILY_TEXT then set FAMILY_TEXT to "Famiglia" end if ~TEMPLE_TEXT then set TEMPLE_TEXT to "Tempio" end if ~STATUS_TEXT then set STATUS_TEXT to "Stato" end if ~HUSBAND_TEXT then set HUSBAND_TEXT to "Sposo" end if ~WIFE_TEXT then set WIFE_TEXT to "Sposa" end if ~NAME_TEXT then set NAME_TEXT to "Nome" end if ~BORN_TEXT then set BORN_TEXT to "Nascita" end if ~AT_TEXT then set AT_TEXT to "a" end if ~DIED_TEXT then set DIED_TEXT to "Morte" end if ~MARRIED_TEXT then set MARRIED_TEXT to "sposato" end if ~SPOUSES_TEXT then set SPOUSES_TEXT to "Coniuge" end if ~COLON_TEXT then set COLON_TEXT to " : " end elseif LANG = "SWEDISH" then if ~HOME_TEXT then set HOME_TEXT to "HEMSIDA" end if ~EMAIL_TEXT then set EMAIL_TEXT to "E-POST" end if ~CREATED_BY_TEXT then set CREATED_BY_TEXT to "HTML skapad av" end if ~ON_TEXT then set ON_TEXT to "" end if ~AUTHOR_TEXT then set AUTHOR_TEXT to "Författare" end if ~INDEX_OF_PERSONS_TEXT then set INDEX_OF_PERSONS_TEXT to "Personindex" end if ~INDEX_OF_SURNAMES_TEXT then set INDEX_OF_SURNAMES_TEXT to "Familjeindex" end if ~INDIVIDUALS_TEXT then set INDIVIDUALS_TEXT to "personer" end if ~FAMILIES_TEXT then set FAMILIES_TEXT to "familjer" end if ~FROM_FILE_TEXT then set FROM_FILE_TEXT to "från filen" end if ~SURNAMES_TEXT then set SURNAMES_TEXT to "FAMILJER" end if ~INDEX_TEXT then set INDEX_TEXT to "PERSONER" end if ~NOTES_TEXT then set NOTES_TEXT to "Anteckningar" end if ~SOURCES_TEXT then set SOURCES_TEXT to "Källor" end if ~UP_TEXT then set UP_TEXT to "UPP" end if ~BACK_TEXT then set BACK_TEXT to "TILLBAKA" end if ~NEXT_TEXT then set NEXT_TEXT to "NÄSTA" end if ~MOTHER_TEXT then set MOTHER_TEXT to "Mor" end if ~FATHER_TEXT then set FATHER_TEXT to "Far" end if ~CHILDREN_TEXT then set CHILDREN_TEXT to "Barn" end if ~FAMILY_TEXT then set FAMILY_TEXT to "Familj" end if ~TEMPLE_TEXT then set TEMPLE_TEXT to "Tempel" end if ~STATUS_TEXT then set STATUS_TEXT to "Status" end if ~HUSBAND_TEXT then set HUSBAND_TEXT to "Make" end if ~WIFE_TEXT then set WIFE_TEXT to "Hustru" end if ~NAME_TEXT then set NAME_TEXT to "Namn" end if ~BORN_TEXT then set BORN_TEXT to "Född" end if ~AT_TEXT then set AT_TEXT to ", " end if ~DIED_TEXT then set DIED_TEXT to "Död" end if ~MARRIED_TEXT then set MARRIED_TEXT to "Gift" end if ~SPOUSES_TEXT then set SPOUSES_TEXT to "Make" end if ~COLON_TEXT then set COLON_TEXT to ": " end elseif LANG = "DANISH" then if ~HOME_TEXT then set HOME_TEXT to "HJEMMESIDE" end if ~EMAIL_TEXT then set EMAIL_TEXT to "E-POST" end if ~CREATED_BY_TEXT then set CREATED_BY_TEXT to "HTML dannet af" end if ~ON_TEXT then set ON_TEXT to "den" end if ~AUTHOR_TEXT then set AUTHOR_TEXT to "Forfatter" end if ~INDEX_OF_PERSONS_TEXT then set INDEX_OF_PERSONS_TEXT to "Personregister" end if ~INDEX_OF_SURNAMES_TEXT then set INDEX_OF_SURNAMES_TEXT to "Efternavnsregister" end if ~INDIVIDUALS_TEXT then set INDIVIDUALS_TEXT to "personer" end if ~FAMILIES_TEXT then set FAMILIES_TEXT to "familier" end if ~FROM_FILE_TEXT then set FROM_FILE_TEXT to "fra filen" end if ~SURNAMES_TEXT then set SURNAMES_TEXT to "EFTERNAVNE" end if ~INDEX_TEXT then set INDEX_TEXT to "PERSONER" end if ~NOTES_TEXT then set NOTES_TEXT to "Bemærkninger" end if ~SOURCES_TEXT then set SOURCES_TEXT to "Kilder" end if ~UP_TEXT then set UP_TEXT to "OP" end if ~BACK_TEXT then set BACK_TEXT to "TILBAGE" end if ~NEXT_TEXT then set NEXT_TEXT to "NÆSTE" end if ~MOTHER_TEXT then set MOTHER_TEXT to "Mor" end if ~FATHER_TEXT then set FATHER_TEXT to "Far" end if ~CHILDREN_TEXT then set CHILDREN_TEXT to "Børn" end if ~FAMILY_TEXT then set FAMILY_TEXT to "Familie" end if ~TEMPLE_TEXT then set TEMPLE_TEXT to "Tempel" end if ~STATUS_TEXT then set STATUS_TEXT to "Status" end if ~HUSBAND_TEXT then set HUSBAND_TEXT to "Ægtemand" end if ~WIFE_TEXT then set WIFE_TEXT to "Hustru" end if ~NAME_TEXT then set NAME_TEXT to "Navn" end if ~BORN_TEXT then set BORN_TEXT to "Født" end if ~AT_TEXT then set AT_TEXT to "i" end if ~DIED_TEXT then set DIED_TEXT to "Død" end if ~MARRIED_TEXT then set MARRIED_TEXT to "Gift" end if ~SPOUSES_TEXT then set SPOUSES_TEXT to "Ægtefælle" end if ~COLON_TEXT then set COLON_TEXT to ": " end elseif LANG = "FINNISH" then if ~HOME_TEXT then set HOME_TEXT to "KOTISIVU" end if ~EMAIL_TEXT then set EMAIL_TEXT to "SÄHKÖPOSTI" end if ~CREATED_BY_TEXT then set CREATED_BY_TEXT to "HTML luotu: " end if ~ON_TEXT then set ON_TEXT to "" end if ~AUTHOR_TEXT then set AUTHOR_TEXT to "Kirjoittaja" end if ~INDEX_OF_PERSONS_TEXT then set INDEX_OF_PERSONS_TEXT to "Henkilöhakemisto" end if ~INDEX_OF_SURNAMES_TEXT then set INDEX_OF_SURNAMES_TEXT to "Sukunimihakemisto" end if ~INDIVIDUALS_TEXT then set INDIVIDUALS_TEXT to "henkilöä" end if ~FAMILIES_TEXT then set FAMILIES_TEXT to "perhettä" end if ~FROM_FILE_TEXT then set FROM_FILE_TEXT to "tiedostosta" end if ~SURNAMES_TEXT then set SURNAMES_TEXT to "SUKUNIMET" end if ~INDEX_TEXT then set INDEX_TEXT to "HENKILÖT" end if ~NOTES_TEXT then set NOTES_TEXT to "Huomautuksia" end if ~SOURCES_TEXT then set SOURCES_TEXT to "Lähteet" end if ~UP_TEXT then set UP_TEXT to "YLÖS" end if ~BACK_TEXT then set BACK_TEXT to "TAKAISIN" end if ~NEXT_TEXT then set NEXT_TEXT to "SEURAAVA" end if ~MOTHER_TEXT then set MOTHER_TEXT to "Äiti" end if ~FATHER_TEXT then set FATHER_TEXT to "Isä" end if ~CHILDREN_TEXT then set CHILDREN_TEXT to "Lapset" end if ~FAMILY_TEXT then set FAMILY_TEXT to "Perhe" end if ~TEMPLE_TEXT then set TEMPLE_TEXT to "Temppeli" end if ~STATUS_TEXT then set STATUS_TEXT to "Asema" end if ~HUSBAND_TEXT then set HUSBAND_TEXT to "Mies" end if ~WIFE_TEXT then set WIFE_TEXT to "Vaimo" end if ~NAME_TEXT then set NAME_TEXT to "Nimi" end if ~BORN_TEXT then set BORN_TEXT to "Syntynyt" end if ~AT_TEXT then set AT_TEXT to ", " end if ~DIED_TEXT then set DIED_TEXT to "Kuollut" end if ~MARRIED_TEXT then set MARRIED_TEXT to "Vihitty" end if ~SPOUSES_TEXT then set SPOUSES_TEXT to "Puoliso" end if ~COLON_TEXT then set COLON_TEXT to ": " end else if ~HOME_TEXT then # set HOME_TEXT to "" end if ~EMAIL_TEXT then # set EMAIL_TEXT to "" end if ~CREATED_BY_TEXT then # set CREATED_BY_TEXT to "" end if ~ON_TEXT then # set ON_TEXT to "" end if ~AUTHOR_TEXT then # set AUTHOR_TEXT to "" end if ~INDEX_OF_PERSONS_TEXT then # set INDEX_OF_PERSONS_TEXT to "" end if ~INDEX_OF_SURNAMES_TEXT then # set INDEX_OF_SURNAMES_TEXT to "" end if ~INDIVIDUALS_TEXT then # set INDIVIDUALS_TEXT to "" end if ~FAMILIES_TEXT then # set FAMILIES_TEXT to "" end if ~FROM_FILE_TEXT then # set FROM_FILE_TEXT to "" end if ~SURNAMES_TEXT then # set SURNAMES_TEXT to "" end if ~INDEX_TEXT then # set INDEX_TEXT to "" end if ~NOTES_TEXT then # set NOTES_TEXT to "" end if ~SOURCES_TEXT then # set SOURCES_TEXT to "" end if ~UP_TEXT then # set UP_TEXT to "" end if ~BACK_TEXT then # set BACK_TEXT to "" end if ~NEXT_TEXT then # set NEXT_TEXT to "" end if ~MOTHER_TEXT then # set MOTHER_TEXT to "" end if ~FATHER_TEXT then # set FATHER_TEXT to "" end if ~CHILDREN_TEXT then # set CHILDREN_TEXT to "" end if ~FAMILY_TEXT then # set FAMILY_TEXT to "" end if ~TEMPLE_TEXT then # set TEMPLE_TEXT to "" end if ~STATUS_TEXT then # set STATUS_TEXT to "" end if ~HUSBAND_TEXT then # set HUSBAND_TEXT to "" end if ~WIFE_TEXT then # set WIFE_TEXT to "" end if ~NAME_TEXT then # set NAME_TEXT to "" end if ~BORN_TEXT then # set BORN_TEXT to "" end if ~AT_TEXT then # set AT_TEXT to "" end if ~DIED_TEXT then # set DIED_TEXT to "" end if ~MARRIED_TEXT then # set MARRIED_TEXT to "" end if ~SPOUSES_TEXT then # set SPOUSES_TEXT to "" end if ~COLON_TEXT then # set COLON_TEXT to ": " end end }