from lxml import etree
from lxml.etree import tostring
+list_topic = False
+
filemakerxml = 'meksme-utf8.xml'
tree = etree.parse(filemakerxml)
'topic', 'sme', 'desc-sme', 'desc-nb', 'nb', 'sv', 'fi', 'en', 'is',
)
+topicmap = {
+ 'nb' : {
+ 'fáddá': 'tema',
+ 'ávnnas': 'emne',
+ 'eanan': 'land',
+ 'biras': 'miljø',
+ 'huksen': 'bygg',
+ 'bohcci': 'rør',
+ 'data': 'data',
+ 'hydr': 'hydraulikk',
+ 'fys': 'fysikk',
+ 'sveis': 'sveising',
+ 'mihttu': 'måling',
+ 'elektro': 'elektro',
+ 'neavvu': 'verktøy',
+ 'mohtor': 'motor',
+ 'mašiidna': 'maskin',
+ 'fuolahas': 'bearbeiding',
+ }
+}
+
resultset = root.find("{http://www.filemaker.com/fmpxmlresult}RESULTSET")
words = []
else:
return e['sme']
-def make_glossary_docbook(lang):
+def make_glossary_docbook(lang, langcodes):
import lxml.builder
E = lxml.builder.ElementMaker(
nsmap={
}
)
- langcodes = ('en', 'nb', 'sme', 'sv', 'fi',)
-
def indexit(entry, wlist, lang=None):
for w in wlist.split(","):
if "" != w:
if lang and '[' not in w:
w += "[%s]" % lang
entry.append(E.indexterm(E.primary(w)))
- glossary = E.glosslist()
+ glossary = E.glossary()
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:
- entry = E.glossentry(
- E.glossterm('%s [%s]' % (e[lang], e['topic'])),
- )
+ ldesc = 'desc-%s' % lang
+ if 'topic' in e and lang in topicmap:
+ e['topic'] = topicmap[lang][e['topic']]
+ if lang in e:
+ entry = E.glossentry()
+ if list_topic and 'topic' in e:
+ entry.append(E.glossterm('%s [%s]' % (e[lang], e['topic'])))
+ else:
+ entry.append(E.glossterm(e[lang]))
indexit(entry, e[lang])
lstr = ""
for l in langcodes:
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)))
+ if ldesc in e:
+ entry.append(E.glossdef(E.para(e[ldesc])))
glossary.append(entry)
+ if False: # failed to set docbook glossary like xmlto and lint want it...
+ glossary =\
+ E.glossary(E.title("x"),
+ E.glossdiv(E.title("y"),
+ glossary))
+
content = lxml.etree.tostring(glossary,
pretty_print=True,
xml_declaration=True,
with open('glossary.xml', 'wb') as f:
f.write(content)
-def make_glossary(lang):
- make_glossary_docbook(lang)
+focus = 'nb'
+#focus = 'sme'
+#focus = 'sv'
+#focus = 'en'
-if True:
+if 'nb' == focus:
print("Norsk/bokmål")
print()
- make_glossary(lang='nb')
-else:
+ make_glossary_docbook(lang='nb', langcodes=('en', 'sme', 'sv', 'da', 'fi', 'is',))
+elif 'sme' == focus:
print("Nordsamisk")
print()
- make_glossary(lang='sme')
-
-#print("Engelsk")
-#print("=====")
-#print()
-#make_glossary(lang='en')
+ make_glossary_docbook(lang='sme', langcodes=('nb', 'en', 'sv', 'da', 'fi', 'is',))
+elif 'en' == focus:
+ print("Engelsk")
+ print()
+ make_glossary_docbook(lang='en', langcodes=('en', 'nb', 'sme', 'sv', 'da', 'fi', 'is',))