]> pere.pagekite.me Git - text-mekanikerord.git/blobdiff - make-glossary
Juster README-formulering for å klargjøre Sveins rolle.
[text-mekanikerord.git] / make-glossary
index 612fa52b6359006f256c5a0d3f1fbc1757086883..bc353f8196d70768817cf7b768b03b32c245f40b 100755 (executable)
@@ -1,5 +1,7 @@
 #!/usr/bin/python3
 
+import locale
+
 from lxml import etree
 from lxml.etree import tostring
 
@@ -55,11 +57,11 @@ for row in resultset.getchildren():
     words.append(d)
 def langsort(lang, e):
     if lang in e:
-        return e[lang]
+        return locale.strxfrm(e[lang])
     else:
-        return e['sme']
+        return locale.strxfrm(e['sme'])
 
-def make_glossary_docbook(lang, langcodes):
+def make_glossary_docbook(lang, desccodes, langcodes, output='glossary.xml'):
     import lxml.builder
     E = lxml.builder.ElementMaker(
         nsmap={
@@ -79,6 +81,9 @@ def make_glossary_docbook(lang, langcodes):
         if 'topic' in e and lang in topicmap:
             e['topic'] = topicmap[lang][e['topic']]
         if lang in e:
+            if ldesc not in e:
+                print("warning: %s missing %s description" % (e[lang], lang))
+                continue
             entry = E.glossentry()
             if list_topic and 'topic' in e:
                 entry.append(E.glossterm('%s [%s]' % (e[lang], e['topic'])))
@@ -93,8 +98,11 @@ def make_glossary_docbook(lang, langcodes):
                     indexit(entry, e[l], l)
             if "" != lstr:
                 entry.append(E.glossdef(E.para(lstr)))
-            if ldesc in e:
-                entry.append(E.glossdef(E.para(e[ldesc])))
+            for desccode in desccodes:
+                codestr = 'desc-%s' % desccode
+                if codestr in e:
+                    entry.append(E.glossdef(E.para("%s: %s" % (desccode,
+                                                               e[codestr]))))
             glossary.append(entry)
 
     if False: # failed to set docbook glossary like xmlto and lint want it...
@@ -108,23 +116,34 @@ def make_glossary_docbook(lang, langcodes):
                                   xml_declaration=True,
                                   encoding='UTF-8')
 #    print(content)
-    with open('glossary.xml', 'wb') as f:
+    with open(output, 'wb') as f:
         f.write(content)
 
-focus = 'nb'
-#focus = 'sme'
-#focus = 'sv'
-#focus = 'en'
+import argparse
+parser = argparse.ArgumentParser()
+parser.add_argument("langcode", help="language code to generate glossary for")
+parser.add_argument("--output", help="where to store the glossary")
+args = parser.parse_args()
+
+locale.setlocale(locale.LC_ALL, '')
 
-if 'nb' == focus:
+if 'nb' == args.langcode:
     print("Norsk/bokmål")
     print()
-    make_glossary_docbook(lang='nb', langcodes=('en', 'sme', 'sv', 'da', 'fi', 'is',))
-elif 'sme' == focus:
+    make_glossary_docbook(lang='nb', desccodes=('nb',),
+                          langcodes=('en', 'sme', 'sv', 'da', 'fi', 'is',),
+                          output=args.output)
+elif 'sme' == args.langcode:
     print("Nordsamisk")
     print()
-    make_glossary_docbook(lang='sme', langcodes=('nb', 'en', 'sv', 'da', 'fi', 'is',))
-elif 'en' == focus:
+    make_glossary_docbook(lang='sme', desccodes=('sme', 'nb'),
+                          langcodes=('nb', 'en', 'sv', 'da', 'fi', 'is',),
+                          output=args.output)
+elif 'en' == args.langcode:
     print("Engelsk")
     print()
-    make_glossary_docbook(lang='en',  langcodes=('en', 'nb', 'sme', 'sv', 'da', 'fi', 'is',))
+    make_glossary_docbook(lang='en', desccodes=('en', 'nb'),
+                          langcodes=('en', 'nb', 'sme', 'sv', 'da', 'fi', 'is',),
+                          output=args.output)
+else:
+    print("error: Unknown language code %s" % args.langcode)