Notes for translators
=====================

This book and its translations are managed with Publican [1]. It also uses
a custom publican brand available in the Debian package publican-debian.

$ sudo apt-get install publican publican-debian

[1] https://sourceware.org/publican/

Coordination mailing list
-------------------------
Please subscribe to this mailing list:
http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators

It will be relatively low-volume and will be used to send important
information about the book updates to the current translators.

Different translation workflows
-------------------------------
There are two ways to manage the translations:
- using the Weblate web application at
  https://hosted.weblate.org/projects/debian-handbook/
- using the Git repository to grab and commit PO files

Translation with Weblate
------------------------

If you decide to use Weblate, you don't have to learn Git usage.
Get in touch with us on the above mailing list so that we can setup
the initial translation files for you, and once they appear
on Weblate, you can start working! You should communicate us
the ISO code of your translation (see "How to start a new translation" for
more information on possible ISO codes).

Note, however, that you can't translate pictures with Weblate, so someone
must still commit those on the Git repository for you. If Git is too
complicated for you, feel free to send the files to the mailing list and
ask someone else to commit them for you.

If you want to retrieve the content of Weblate via git you can use
this git repository as remote:
$ git remote add weblate https://hosted.weblate.org/git/debian-handbook/12_advanced-administration

Translation without Weblate
---------------------------

If you're not using Weblate, you'll have to interact with the Git
repository. So read README.git first. Really. And then please respect the
guidelines below.

Please do not multiply commits uselessly. If you made several commits
which only complete PO files, please squash them together before pushing
(see man git-rebase for an explanation of how to squash commits together
with interactive rebase).

Write meaningful commit messages. Always start with the language
code of the affected translations. Some examples of good commit
messages:
* it-IT: Add initial README file
* es-ES: Complete translation of chapter 4
* zh-CN: Review of chapter 3

Take care to work on the most appropriate branch too. Currently
it's "buster/master" since that's the stable maintenance branch
for the current release of the book. If you already have downloaded the
repository, use "git checkout buster/master" to change the current
branch. Otherwise you can use one of the following commands to clone the
repository and start on the correct branch:

How to start a new translation
------------------------------

First, you must find out the ISO code of your translation (it looks like
"pt-BR" or "fr-FR"). See here for the list supported by Publican:
https://jfearn.fedorapeople.org/en-US/Publican/4.2/html/Users_Guide/appe-Publican-Users_Guide-Language_codes.html

(I'll use "pt-BR" as example in the rest of this section)

Then you need to tell publican who you are by creating a ~/.publican.cfg
file (change the values with your own name and email):
$ cat >~/.publican.cfg <<END
firstname=Raphael
surname=Hertzog
email=hertzog@debian.org
END

Then if this Git repository doesn't have any directory of this name,
you need to create the initial translation files:
$ publican update_po --langs=pt-BR

Now you have lots of PO files in pt-BR/*.po that you can translate.
You should probably commit the empty PO files before going further.

$ git add pt-BR/*.po
$ git commit -m "pt-BR: Start new translation"

Then add a pt-BR/README file where you put:
- the name and email of the (current) translation coordinator
- the name and email of the volunteers who contributed to the
  translation
- explanations (for new contributors) about the workflow that you use to
  coordinate the work
- translation choices that you made about the style to use, the
  vocabulary, etc.

$ vim pt-BR/README
$ git add pt-BR/README
$ git commit -m "pt-BR: Add initial README file"

You can certainly write that README file in your native language if you
want, but it's highly recommended to also have an English translation of
the instructions so that everybody else can see how a given team is
organized.

Translating PO files
--------------------

You're free to use the tool of your choice to complete the PO files. Once
you have done enough, you can commit your updated PO files:
$ git add pt-BR/*.po
$ git commit -m "pt-BR: Updated translation"

Depending on the workflow used by your translation team, you can either
push your work directly or make it available to your translation
coordinator that will integrate it for you.

If you use a plain text editor, please double check that you haven't
broken the PO files. Here is an example checking
pt-BR/01_the-debian-project.po where some issues are detected:

$ msgfmt -c -o /dev/null --statistics pt-BR/01_the-debian-project.po
pt-BR/01_the-debian-project.po:1432: 'msgid' and 'msgstr' entries do not both end with '\n'
msgfmt: found 1 fatal error
348 translated messages, 100 fuzzy translations, 9 untranslated messages.
$ msgcat pt-BR/01_the-debian-project.po >/dev/null

Translating pictures and schemas
--------------------------------

Some schemas contain texts that need to be translated. In those cases,
you should copy the relevant .dia files from en-US/images/ into the images
directory within your own translations directory (e.g. pt-BR/images/),
update the dia file, and regenerate the corresponding PNG files (with the
help of the "make foo.png" Makefile target).

Some screenshots need to be remade to use a locale that matches your
language. Do the screenshot and put them in the images directory of
your translation (eg pt-BR/images/).

Note: there's currently no automatic way to verify whether your translated
schemas/pictures are up-to-date.

Questions?
----------

Just ask on debian-handbook-translators@lists.alioth.debian.org.
