]> pere.pagekite.me Git - text-mekanikerord.git/commitdiff
Update generation script to translate topics and improve output.
authorPetter Reinholdtsen <pere@hungry.com>
Sat, 15 Aug 2020 08:08:31 +0000 (10:08 +0200)
committerPetter Reinholdtsen <pere@hungry.com>
Sat, 15 Aug 2020 08:08:31 +0000 (10:08 +0200)
make-glossary

index b38a8c726962d268d017ce00684524cd0194423a..c54b02c694dcfaaaef5830b27b680084898b7a3a 100755 (executable)
@@ -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',))