]> pere.pagekite.me Git - text-mekanikerord.git/commitdiff
Start on multi-lingual builds.
authorPetter Reinholdtsen <pere@hungry.com>
Sun, 16 Aug 2020 19:24:28 +0000 (21:24 +0200)
committerPetter Reinholdtsen <pere@hungry.com>
Sun, 16 Aug 2020 19:55:05 +0000 (21:55 +0200)
Handle nb and sme for now.

Makefile
book.xml
make-glossary

index 16fae4011dac33c76b34a6956a68152f7c5d4138..8dcd6b97fb25adf3415635433e328081900d5734 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,18 @@
-SOURCE = book.xml glossary.xml pdf.xsl
+SOURCE = pdf.xsl
+SOURCE_NB = $(SOURCE) book.xml glossary-nb.xml
+SOURCE_SME = $(SOURCE) book-sme.xml glossary-sme.xml
 
 
-all: book.pdf book.epub book.html
+GENERATED = \
+  mekaniker-ordbok-nb.pdf mekaniker-ordbok-nb.epub mekaniker-ordbok-nb.html \
+  mekaniker-ordbok-sme.pdf mekaniker-ordbok-sme.epub mekaniker-ordbok-sme.html
+
+all: $(GENERATED)
 
 clean:
        $(RM) *~
 
 distclean: clean
 
 clean:
        $(RM) *~
 
 distclean: clean
-       $(RM) glossary.xml book.pdf book.epub
+       $(RM) glossary.xml $(GENERATED)
 
 XMLLINTOPTS = --nonet --noout  --xinclude --postvalid
 lint: book.xml glossary.xml
 
 XMLLINTOPTS = --nonet --noout  --xinclude --postvalid
 lint: book.xml glossary.xml
@@ -17,8 +23,11 @@ epubcheck: book.epub
 
 check: lint epubcheck
 
 
 check: lint epubcheck
 
-glossary.xml: make-glossary meksme-utf8.xml
-       ./make-glossary
+glossary-nb.xml: make-glossary meksme-utf8.xml
+       ./make-glossary --output $@ nb
+
+glossary-sme.xml: make-glossary meksme-utf8.xml
+       ./make-glossary --output $@ sme
 
 DBLATEX_OPTS = \
        -b xetex \
 
 DBLATEX_OPTS = \
        -b xetex \
@@ -27,11 +36,27 @@ DBLATEX_OPTS = \
        -P latex.index.tool=xindy \
        -p pdf.xsl
 
        -P latex.index.tool=xindy \
        -p pdf.xsl
 
-book.pdf: $(SOURCE)
-       dblatex $(DBLATEX_OPTS) book.xml
+mekaniker-ordbok-nb.pdf: $(SOURCE_NB)
+       dblatex $(DBLATEX_OPTS) -o $@ book.xml
 
 
-book.epub: $(SOURCE)
-       dbtoepub book.xml
+mekaniker-ordbok-nb.epub: $(SOURCE_NB)
+       dbtoepub book.xml -o $@
 
 
-book.html: $(SOURCE)
+mekaniker-ordbok-nb.html: $(SOURCE_NB)
        xmlto html-nochunks book.xml
        xmlto html-nochunks book.xml
+       mv book.html $@
+
+book-sme.xml: book.xml
+# dblatex do not understand lang="sme", use "nb" for now
+#      sed -e 's/-nb/-sme/' -e 's/"nb"/"sme"/' < $^ >$@
+       sed -e 's/-nb/-sme/' < $^ >$@
+
+mekaniker-ordbok-sme.pdf: $(SOURCE_SME)
+       dblatex $(DBLATEX_OPTS) -o $@ book-sme.xml
+
+mekaniker-ordbok-sme.epub: $(SOURCE_SME)
+       dbtoepub book-sme.xml -o $@
+
+mekaniker-ordbok-sme.html: $(SOURCE_SME)
+       xmlto html-nochunks book-sme.xml
+       mv book-sme.html $@
index 2d97181123cd5a7a4806e667bebb6241f8c0cb69..37730caa2a9c8e15043fa045eed38bbda59e18ad 100644 (file)
--- a/book.xml
+++ b/book.xml
 
 </bookinfo>
 
 
 </bookinfo>
 
-<xi:include href="glossary.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<xi:include href="glossary-nb.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
 
 </book>
 
 </book>
index 612fa52b6359006f256c5a0d3f1fbc1757086883..a3f91499181bc5601a63b5bad91dd58a26b735e8 100755 (executable)
@@ -59,7 +59,7 @@ def langsort(lang, e):
     else:
         return e['sme']
 
     else:
         return e['sme']
 
-def make_glossary_docbook(lang, langcodes):
+def make_glossary_docbook(lang, langcodes, output='glossary.xml'):
     import lxml.builder
     E = lxml.builder.ElementMaker(
         nsmap={
     import lxml.builder
     E = lxml.builder.ElementMaker(
         nsmap={
@@ -79,6 +79,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 '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'])))
             entry = E.glossentry()
             if list_topic and 'topic' in e:
                 entry.append(E.glossterm('%s [%s]' % (e[lang], e['topic'])))
@@ -108,23 +111,26 @@ def make_glossary_docbook(lang, langcodes):
                                   xml_declaration=True,
                                   encoding='UTF-8')
 #    print(content)
                                   xml_declaration=True,
                                   encoding='UTF-8')
 #    print(content)
-    with open('glossary.xml', 'wb') as f:
+    with open(output, 'wb') as f:
         f.write(content)
 
         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()
 
 
-if 'nb' == focus:
+if 'nb' == args.langcode:
     print("Norsk/bokmål")
     print()
     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', langcodes=('en', 'sme', 'sv', 'da', 'fi', 'is',), output=args.output)
+elif 'sme' == args.langcode:
     print("Nordsamisk")
     print()
     print("Nordsamisk")
     print()
-    make_glossary_docbook(lang='sme', langcodes=('nb', 'en', 'sv', 'da', 'fi', 'is',))
-elif 'en' == focus:
+    make_glossary_docbook(lang='sme', langcodes=('nb', 'en', 'sv', 'da', 'fi', 'is',), output=args.output)
+elif 'en' == args.langcode:
     print("Engelsk")
     print()
     print("Engelsk")
     print()
-    make_glossary_docbook(lang='en',  langcodes=('en', 'nb', 'sme', 'sv', 'da', 'fi', 'is',))
+    make_glossary_docbook(lang='en',  langcodes=('en', 'nb', 'sme', 'sv', 'da', 'fi', 'is',), output=args.output)
+else:
+    print("error: Unknown language code %s" % args.langcode)