-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- <title>Petter Reinholdtsen: From English wiki to translated PDF and epub via docbook</title>
- <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css" />
- <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/vim.css" />
-
-
- </head>
- <body>
- <div class="title">
- <h1>
- <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
-
- </h1>
-
-</div>
-
-
- <div class="entry">
- <div class="title">From English wiki to translated PDF and epub via docbook</div>
- <div class="date">17th June 2014</div>
- <div class="body"><p>The <a href="http://www.skolelinux.org/">Debian Edu / Skolelinux
-project</a> provide an instruction manual for teachers, system
-administrators and other users that contain useful tips for setting up
-and maintaining a Debian Edu installation. This text is about how the
-text processing of this manual is handled in the project.</p>
-
-<p>One goal of the project is to provide information in the native
-language of its users, and for this we need to handle translations.
-But we also want to make sure each language contain the same
-information, so for this we need a good way to keep the translations
-in sync. And we want it to be easy for our users to improve the
-documentation, avoiding the need to learn special formats or tools to
-contribute, and the obvious way to do this is to make it possible to
-edit the documentation using a web browser. We also want it to be
-easy for translators to keep the translation up to date, and give them
-help in figuring out what need to be translated. Here is the list of
-tools and the process we have found trying to reach all these
-goals.</p>
-
-<p>We maintain the authoritative source of our manual in the
-<a href="https://wiki.debian.org/DebianEdu/Documentation/Wheezy/">Debian
-wiki</a>, as several wiki pages written in English. It consist of one
-front page with references to the different chapters, several pages
-for each chapter, and finally one "collection page" gluing all the
-chapters together into one large web page (aka
-<a href="https://wiki.debian.org/DebianEdu/Documentation/Wheezy/AllInOne">the
-AllInOne page</a>). The AllInOne page is the one used for further
-processing and translations. Thanks to the fact that the
-<a href="http://moinmo.in/">MoinMoin</a> installation on
-wiki.debian.org support exporting pages in
-<a href="http://www.docbook.org/">the Docbook format</a>, we can fetch
-the list of pages to export using the raw version of the AllInOne
-page, loop over each of them to generate a Docbook XML version of the
-manual. This process also download images and transform image
-references to use the locally downloaded images. The generated
-Docbook XML files are slightly broken, so some post-processing is done
-using the <tt>documentation/scripts/get_manual</tt> program, and the
-result is a nice Docbook XML file (debian-edu-wheezy-manual.xml) and
-a handfull of images. The XML file can now be used to generate PDF, HTML
-and epub versions of the English manual. This is the basic step of
-our process, making PDF (using dblatex), HTML (using xsltproc) and
-epub (using dbtoepub) version from Docbook, and the resulting files
-are placed in the debian-edu-doc-en binary package.</p>
-
-<p>But English documentation is not enough for us. We want translated
-documentation too, and we want to make it easy for translators to
-track the English original. For this we use the
-<a href="http://packages.qa.debian.org/p/poxml.html">poxml</a> package,
-which allow us to transform the English Docbook XML file into a
-translation file (a .pot file), usable with the normal gettext based
-translation tools used by those translating free software. The pot
-file is used to create and maintain translation files (several .po
-files), which the translations update with the native language
-translations of all titles, paragraphs and blocks of text in the
-original. The next step is combining the original English Docbook XML
-and the translation file (say debian-edu-wheezy-manual.nb.po), to
-create a translated Docbook XML file (in this case
-debian-edu-wheezy-manual.nb.xml). This translated (or partly
-translated, if the translation is not complete) Docbook file can then
-be used like the original to create a PDF, HTML and epub version of
-the documentation.</p>
-
-<p>The translators use different tools to edit the .po files. We
-recommend using
-<a href="http://www.kde.org/applications/development/lokalize/">lokalize</a>,
-while some use emacs and vi, others can use web based editors like
-<a href="http://pootle.translatehouse.org/">Poodle</a> or
-<a href="https://www.transifex.com/">Transifex</a>. All we care about
-is where the .po file end up, in our git repository. Updated
-translations can either be committed directly to git, or submitted as
-<a href="https://bugs.debian.org/src:debian-edu-doc">bug reports
-against the debian-edu-doc package</a>.</p>
-
-<p>One challenge is images, which both might need to be translated (if
-they show translated user applications), and are needed in different
-formats when creating PDF and HTML versions (epub is a HTML version in
-this regard). For this we transform the original PNG images to the
-needed density and format during build, and have a way to provide
-translated images by storing translated versions in
-images/$LANGCODE/.</p>
-
-<p>If you wonder what the result look like, we provide
-<a href="http://maintainer.skolelinux.org/debian-edu-doc/">the content
-of the documentation packages on the web</a>. See for example the
-<a href="http://maintainer.skolelinux.org/debian-edu-doc/it/debian-edu-wheezy-manual.pdf">Italian
-PDF version</a> or the
-<a href="http://maintainer.skolelinux.org/debian-edu-doc/de/debian-edu-wheezy-manual.html">German
-HTML version</a>. We do not yet build the epub version by default,
-but perhaps it will be done in the future.</p>
-
-<p>To learn more, check out
-<a href="http://packages.qa.debian.org/d/debian-edu-doc.html">the
-debian-edu-doc package</a>,
-<a href="https://wiki.debian.org/DebianEdu/Documentation/Wheezy/">the
-manual on the wiki</a> and
-<a href="https://wiki.debian.org/DebianEdu/Documentation/Wheezy/Translations">the
-translation instructions</a> in the manual.</p>
-</div>
-
- <div class="tags">Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.</div>
-
-
- </div>
-
-
-
-
- <div id="sidebar">
-
-
-
-<h2>Archive</h2>
-<ul>
-
-<li>2014
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
-
-</ul></li>
-
-<li>2013
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
-
-</ul></li>
-
-<li>2012
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
-
-</ul></li>
-
-<li>2011
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
-
-</ul></li>
-
-<li>2010
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
-
-</ul></li>
-
-<li>2009
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
-
-</ul></li>
-
-<li>2008
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
-
-</ul></li>
-
-</ul>
-
-
-
-<h2>Tags</h2>
-<ul>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (8)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (14)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (99)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (147)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (10)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (15)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (11)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (248)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (21)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (12)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (8)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (11)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (40)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (9)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (18)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (7)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (28)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (246)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (162)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (11)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (46)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (72)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (9)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (40)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (44)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (9)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (25)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (8)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (42)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (32)</a></li>
-
-</ul>
-
-
- </div>
- <p style="text-align: right">
- Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
-</p>
-
- </body>
-</html>