translations = {
- "Life Sketch": {
- "de": "Kurzinfo zum Lebenslauf",
- "eo": "[Ļîƒé Šķéţçĥ---- П國カ내]",
- "es": "Resumen de la vida de la persona",
- "fr": "Biographie succincte",
- "it": "Profilo",
- "ja": "生涯の概要",
- "ko": "인생 개요",
- "pt": "Resumo da Vida",
- "ru": "Краткое жизнеописание",
- "zh": "生活簡述"
+ 'Life Sketch': {
+ 'de': 'Kurzinfo zum Lebenslauf',
+ 'eo': '[Ļîƒé Šķéţçĥ---- П國カ내]',
+ 'es': 'Resumen de la vida de la persona',
+ 'fr': 'Biographie succincte',
+ 'it': 'Profilo',
+ 'ja': '生涯の概要',
+ 'ko': '인생 개요',
+ 'pt': 'Resumo da Vida',
+ 'ru': 'Краткое жизнеописание',
+ 'zh': '生活簡述'
},
- "Contributors": {
- "de": "Mitwirkende",
- "eo": "Contributors",
- "es": "Colaboradores",
- "fr": "Contributeurs",
- "it": "Contributori",
- "ja": "貢献者",
- "ko": "기여자",
- "pt": "Colaboradores",
- "ru": "Авторы",
- "zh": "贡献者"
+ 'Contributors': {
+ 'de': 'Mitwirkende',
+ 'eo': 'Contributors',
+ 'es': 'Colaboradores',
+ 'fr': 'Contributeurs',
+ 'it': 'Contributori',
+ 'ja': '貢献者',
+ 'ko': '기여자',
+ 'pt': 'Colaboradores',
+ 'ru': 'Авторы',
+ 'zh': '贡献者'
},
- "Stillborn": {
- "de": "Tot geboren",
- "eo": "[Šţîļļƀöŕñ----------- П國カ내]",
- "es": "Nacido muerto o mortinato",
- "fr": "Mort-né(e)",
- "it": "Nato morto",
- "ja": "死産",
- "ko": "사산아",
- "pt": "Natimorto",
- "ru": "Мертворожденный",
- "zh": "死胎"
+ 'Stillborn': {
+ 'de': 'Tot geboren',
+ 'eo': '[Šţîļļƀöŕñ----------- П國カ내]',
+ 'es': 'Nacido muerto o mortinato',
+ 'fr': 'Mort-né(e)',
+ 'it': 'Nato morto',
+ 'ja': '死産',
+ 'ko': '사산아',
+ 'pt': 'Natimorto',
+ 'ru': 'Мертворожденный',
+ 'zh': '死胎'
},
- "Affiliation": {
- "de": "Zugehörigkeit",
- "eo": "[Ńƒîļîåţîöñ---- П國カ내]",
- "es": "Afiliación",
- "fr": "Affiliation",
- "it": "Affiliazione",
- "ja": "所属",
- "ko": "소속",
- "pt": "Afiliação",
- "ru": "Принадлежность",
- "zh": "所屬團體"
+ 'Affiliation': {
+ 'de': 'Zugehörigkeit',
+ 'eo': '[Ńƒîļîåţîöñ---- П國カ내]',
+ 'es': 'Afiliación',
+ 'fr': 'Affiliation',
+ 'it': 'Affiliazione',
+ 'ja': '所属',
+ 'ko': '소속',
+ 'pt': 'Afiliação',
+ 'ru': 'Принадлежность',
+ 'zh': '所屬團體'
},
- "Clan Name": {
- "de": "Bezeichnung des Clans",
- "eo": "[Çļåñ Ñåɱé----------- П國カ내]",
- "es": "Nombre del clan",
- "fr": "Nom de clan",
- "it": "Nome clan",
- "ja": "氏族名",
- "ko": "씨족 이름",
- "pt": "Nome do Clã",
- "ru": "Название клана",
- "zh": "氏族名字"
+ 'Clan Name': {
+ 'de': 'Bezeichnung des Clans',
+ 'eo': '[Çļåñ Ñåɱé----------- П國カ내]',
+ 'es': 'Nombre del clan',
+ 'fr': 'Nom de clan',
+ 'it': 'Nome clan',
+ 'ja': '氏族名',
+ 'ko': '씨족 이름',
+ 'pt': 'Nome do Clã',
+ 'ru': 'Название клана',
+ 'zh': '氏族名字'
},
- "National Identification": {
- "de": "Ausweisnummer",
- "eo": "[Ñåţîöñåļ Îðéñţîƒîçåţîöñ----------- П國カ내]",
- "es": "Identificación nacional",
- "fr": "Numéro national d’identification",
- "it": "Documento di identità",
- "ja": "国民登録番号",
- "ko": "주민등록번호",
- "pt": "Carteira de Identidade Nacional",
- "ru": "Удостоверение личности",
- "zh": "國民身分證"
+ 'National Identification': {
+ 'de': 'Ausweisnummer',
+ 'eo': '[Ñåţîöñåļ Îðéñţîƒîçåţîöñ----------- П國カ내]',
+ 'es': 'Identificación nacional',
+ 'fr': 'Numéro national d’identification',
+ 'it': 'Documento di identità',
+ 'ja': '国民登録番号',
+ 'ko': '주민등록번호',
+ 'pt': 'Carteira de Identidade Nacional',
+ 'ru': 'Удостоверение личности',
+ 'zh': '國民身分證'
},
- "Race": {
- "de": "Ethnische Zugehörigkeit",
- "eo": "[Ŕåçé- П國カ내]",
- "es": "Raza",
- "fr": "Race",
- "it": "Razza",
- "ja": "人種",
- "ko": "인종",
- "pt": "Raça",
- "ru": "Раса",
- "zh": "種族"
+ 'Race': {
+ 'de': 'Ethnische Zugehörigkeit',
+ 'eo': '[Ŕåçé- П國カ내]',
+ 'es': 'Raza',
+ 'fr': 'Race',
+ 'it': 'Razza',
+ 'ja': '人種',
+ 'ko': '인종',
+ 'pt': 'Raça',
+ 'ru': 'Раса',
+ 'zh': '種族'
},
- "Tribe Name": {
- "de": "Bezeichnung des Stammes",
- "eo": "[Ţŕîƀé Ñåɱé------------- П國カ내]",
- "es": "Nombre de la tribu",
- "fr": "Nom de tribu",
- "it": "Nome tribù",
- "ja": "部族名",
- "ko": "부족명",
- "pt": "Nome da Tribo",
- "ru": "Название племени",
- "zh": "部落名字"
+ 'Tribe Name': {
+ 'de': 'Bezeichnung des Stammes',
+ 'eo': '[Ţŕîƀé Ñåɱé------------- П國カ내]',
+ 'es': 'Nombre de la tribu',
+ 'fr': 'Nom de tribu',
+ 'it': 'Nome tribù',
+ 'ja': '部族名',
+ 'ko': '부족명',
+ 'pt': 'Nome da Tribo',
+ 'ru': 'Название племени',
+ 'zh': '部落名字'
},
}
import getpass
import time
import asyncio
+import re
from fsearch_translation import translations
try:
}
+def cont(level, string):
+ return re.sub(r'[\r\n]+', '\n' + str(level) + ' CONT ', string)
+
+
# FamilySearch session class
class Session:
def __init__(self, username, password, verbose=False, logfile=sys.stderr, timeout=60):
self.text = text.strip()
def print(self, file=sys.stdout):
- file.write('0 @N' + str(self.num) + '@ NOTE ' + self.text.replace('\n', '\n1 CONT ') + '\n')
+ file.write('0 @N' + str(self.num) + '@ NOTE ' + cont(1, self.text) + '\n')
def link(self, file=sys.stdout, level=1):
file.write(str(level) + ' NOTE @N' + str(self.num) + '@\n')
def print(self, file=sys.stdout):
file.write('0 @S' + str(self.num) + '@ SOUR \n')
if self.title:
- file.write('1 TITL ' + self.title.replace('\n', '\n2 CONT ') + '\n')
+ file.write('1 TITL ' + cont(2, self.title) + '\n')
if self.citation:
- file.write('1 AUTH ' + self.citation.replace('\n', '\n2 CONT ') + '\n')
+ file.write('1 AUTH ' + cont(2, self.citation) + '\n')
if self.url:
- file.write('1 PUBL ' + self.url.replace('\n', '\n2 CONT ') + '\n')
+ file.write('1 PUBL ' + cont(2, self.url) + '\n')
for n in self.notes:
n.link(file, 1)
file.write('1 REFN ' + self.fid + '\n')
elif self.type:
file.write('1 EVEN\n2 TYPE ' + self.type)
if self.value:
- file.write('\n2 NOTE Description: ' + self.value)
+ file.write('\n2 NOTE Description: ' + cont(3, self.value))
else:
return
file.write('\n')
def print(self, file=sys.stdout):
file.write('1 OBJE\n2 FORM URL\n')
if self.description:
- file.write('2 TITL ' + self.description.replace('\n', '\n2 CONT ') + '\n')
+ file.write('2 TITL ' + cont(2, self.description) + '\n')
if self.url:
file.write('2 FILE ' + self.url + '\n')
for o in self.sources:
o[0].link(file, 1)
if len(o) > 1:
- file.write('2 PAGE ' + o[1].replace('\n', '\n2 CONT ') + '\n')
+ file.write('2 PAGE ' + cont(2, o[1]) + '\n')
# GEDCOM family class
for o in self.sources:
o[0].link(file, 1)
if len(o) > 1:
- file.write('2 PAGE ' + o[1].replace('\n', '\n2 CONT ') + '\n')
+ file.write('2 PAGE ' + cont(2, o[1]) + '\n')
# family tree class