from lxml import etree
from lxml.etree import tostring
-tree = etree.parse('mekanikk-1999/meksme-utf8.xml')
+filemakerxml = 'meksme-utf8.xml'
+
+tree = etree.parse(filemakerxml)
root = tree.getroot()
#print(root)
cols = (
'topic', 'sme', 'desc-sme', 'desc-nb', 'nb', 'sv', 'fi', 'en', 'is',
- 'unknown',
)
resultset = root.find("{http://www.filemaker.com/fmpxmlresult}RESULTSET")
index += 1
#print(d)
words.append(d)
+def langsort(lang, e):
+ if lang in e:
+ return e[lang]
+ else:
+ return e['sme']
-def make_glossary(lang):
- print(".. glossary::")
- print()
+def make_glossary_docbook(lang):
+ import lxml.builder
+ E = lxml.builder.ElementMaker(
+ nsmap={
+# 'xi': "http://www.w3.org/2001/XInclude",
+ }
+ )
+
+ langcodes = ('en', 'nb', 'sme', 'sv', 'fi',)
- def langsort(e):
- if lang in e:
- return e[lang]
- else:
- return e['sme']
- for e in sorted(words, key=langsort):
+ def indexit(entry, wlist, lang=None):
+ for w in wlist.split(","):
+ if "" != w:
+ if lang:
+ w += "[%s]" % lang
+ entry.append(E.indexterm(E.primary(w)))
+ glossary = E.glosslist()
+ for e in sorted(words, key=lambda x: langsort(lang, x)):
+ if 'topic' not in e:
+ e['topic'] = 'n/a'
if lang in e and 'desc-%s' % lang in e:
- if 'topic' not in e:
- e['topic'] = 'n/a'
- #print(e)
- print(" %s [%s]\n %s" % (e[lang], e['topic'], e['desc-%s' % lang]))
- print()
- else:
- # ERROR / missing definition
- pass
+ entry = E.glossentry(
+ E.glossterm('%s [%s]' % (e[lang], e['topic'])),
+ )
+ indexit(entry, e[lang])
+ lstr = ""
+ for l in langcodes:
+ if l != lang and l in e:
+ lstr += "%s (%s) " % (e[l], l)
+ # Add foreign words to index, split on comma
+ indexit(entry, e[l], l)
+ entry.append(E.glossdef(E.para(e['desc-%s' % lang])))
+ if "" != lstr:
+ entry.append(E.glossdef(E.para(lstr)))
+ glossary.append(entry)
-print("Nordsamisk")
-print("==========")
-print()
-make_glossary(lang='sme')
+ content = lxml.etree.tostring(glossary,
+ pretty_print=True,
+ xml_declaration=True,
+ encoding='UTF-8')
+# print(content)
+ with open('glossary.xml', 'wb') as f:
+ f.write(content)
-print("Norsk")
-print("=====")
-print()
-make_glossary(lang='nb')
+def make_glossary(lang):
+ make_glossary_docbook(lang)
+
+if True:
+ print("Norsk/bokmål")
+ print()
+ make_glossary(lang='nb')
+else:
+ print("Nordsamisk")
+ print()
+ make_glossary(lang='sme')
#print("Engelsk")
#print("=====")