wxWidgets translator guide
==========================

This note is addressed to wxWidgets translators.

First of all, here is what you will need:

1. GNU gettext package

   - For Unix systems you can download gettext-0.xx.yy.tar.gz from any GNU
   mirror (RPMs and DEBs are also available from the usual places)
   - For Windows you can download the precompiled binaries from
   www.wxwidgets.org or install [Poedit](https://poedit.com/) and add
   `<installdir>/Poedit/GettextTools/bin` to your path (so it can find xgettext).

2. A way to run a program recursively on an entire directory from the command
   line:

   - For Unix systems, this is done in `locale/Makefile` using the standard `find`
   command and `xargs` which is installed on almost all modern Unices.
   - For Win32 systems you can use Cygwin, MSYS or WSL.

3. Access to the git repository is not necessary strictly speaking, but will
   make things a lot easier for you and others.


Now a brief overview of the process of translations (please refer to GNU
gettext documentation for more details). It happens in several steps:

1. the strings to translate are extracted from the C++ sources using `xgettext`
   program into a `wxstd.pot` file which is a "text message catalog"

2. this new wxstd.pot file (which is updated from time to time by running
   `make wxstd.pot` in the `locale` subdirectory) is merged with existing
   translations in another .po file (for example, de.po) and replaces this
   file (this is done using the program `msgmerge`)

3. the resulting .po file must be translated

4. finally, `msgformat` must be run to produce a .mo file: "binary message catalog"


How does it happen in practice? There is a Makefile in the "locale"
directory which will do almost everything (except translations) for you. i.e.
just type `make lang.po` to create or update the message catalog for 'lang'.
Then edit the resulting `lang.po` and make sure that there are no empty or fuzzy
translations left (empty translations are the ones with `msgstr ""`, fuzzy
translations are those which have the word "fuzzy" in a comment just above
them). Then type `make lang.mo` which will create the binary message catalog.

Under Windows (If you don't have Cygwin or MinGW), you should execute the
commands manually, please have a look at Makefile to see what must be done.
