From: Petter Reinholdtsen Date: Sun, 16 Aug 2020 19:24:28 +0000 (+0200) Subject: Start on multi-lingual builds. X-Git-Tag: published-en-nb-2021-07-17~62 X-Git-Url: https://pere.pagekite.me/gitweb/text-mekanikerord.git/commitdiff_plain/13c141fddb6b161439ca5b834d7d6fa61afdd7d3?ds=sidebyside Start on multi-lingual builds. Handle nb and sme for now. --- diff --git a/Makefile b/Makefile index 16fae40..8dcd6b9 100644 --- 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 - $(RM) glossary.xml book.pdf book.epub + $(RM) glossary.xml $(GENERATED) XMLLINTOPTS = --nonet --noout --xinclude --postvalid lint: book.xml glossary.xml @@ -17,8 +23,11 @@ epubcheck: book.epub 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 \ @@ -27,11 +36,27 @@ DBLATEX_OPTS = \ -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 + 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 $@ diff --git a/book.xml b/book.xml index 2d97181..37730ca 100644 --- a/book.xml +++ b/book.xml @@ -112,6 +112,6 @@ - + diff --git a/make-glossary b/make-glossary index 612fa52..a3f9149 100755 --- a/make-glossary +++ b/make-glossary @@ -59,7 +59,7 @@ def langsort(lang, e): 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={ @@ -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 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']))) @@ -108,23 +111,26 @@ 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() -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', 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', 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', langcodes=('en', 'nb', 'sme', 'sv', 'da', 'fi', 'is',), output=args.output) +else: + print("error: Unknown language code %s" % args.langcode)