From: Petter Reinholdtsen Date: Sat, 15 Aug 2020 08:08:31 +0000 (+0200) Subject: Update generation script to translate topics and improve output. X-Git-Tag: published-en-nb-2021-07-17~76 X-Git-Url: https://pere.pagekite.me/gitweb/text-mekanikerord.git/commitdiff_plain/5af55c944483ca3521476ab3d361ce90a9dfc357 Update generation script to translate topics and improve output. --- diff --git a/make-glossary b/make-glossary index b38a8c7..c54b02c 100755 --- a/make-glossary +++ b/make-glossary @@ -15,6 +15,27 @@ cols = ( '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 = [] @@ -36,7 +57,7 @@ def langsort(lang, e): else: return e['sme'] -def make_glossary_docbook(lang): +def make_glossary_docbook(lang, langcodes): import lxml.builder E = lxml.builder.ElementMaker( nsmap={ @@ -44,8 +65,6 @@ def make_glossary_docbook(lang): } ) - langcodes = ('en', 'nb', 'sme', 'sv', 'fi',) - def indexit(entry, wlist, lang=None): for w in wlist.split(","): if "" != w: @@ -54,12 +73,15 @@ def make_glossary_docbook(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: - 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 '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: @@ -67,11 +89,18 @@ def make_glossary_docbook(lang): 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, @@ -80,19 +109,20 @@ def make_glossary_docbook(lang): 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',))