0 Introduction
--------------

This version of VICE contains national language support (NLS) using
the GNU (or OS-supplied) gettext library. gettext eases the handling
of translations of (usually English) output messages to other
languages by introducing the concept of message catalogs.

Message catalogs can exist in various formats. The human-readable and
-editable format is the PO file format. These human-readable files are
then translated to MO files which can be used by the gettext library.

Please refer to the (quite good) GNU gettext documentation for further
details. Read it with info ('info gettext'), or go online to 
http://www.gnu.org/software/gettext/gettext.html

For the windows and amiga based platforms the same message catalogs
are used to generate string tables to provide national language
support for those platforms.


1 Compiling VICE with localized messages
----------------------------------------

VICE is compiled by default with *nix NLS enabled. If you don't want
NLS invoke configure with the option

./configure --disable-nls

Note however that this option will not turn off the windows and amiga
platforms NLS.

If you don't know how to compile VICE, please read the INSTALL file.


2 Changing *nix language settings
---------------------------------

In general most modern (Linux-) distributions add support for choosing
the language at login time or for the actual session.

However to enable vice internationalization support without changing
the language for all other applications you can try to set the
appropriate environment variables (see below). To choose the
appropriate language check the alias in 
  /usr/share/locale/locale.alias

There you'll find "danish", "german", "french", hungarian", italian",
"dutch", "swedish", "turkish" and "polish"; the "polish" translations
are very outdated and currently not well supported! Any volunteer?

so try
  LC_ALL=german ; export LC_ALL 
to get a german UI for Vice.

Make sure you have the proper language support package
installed. There you usually find the necessary fonts, etc. Check your
distro's manuals if you don't know what I'm speaking of.

Older (Linux-)distributions (based on older C-libs) sometimes use other
variables to set the language. 
Try this:
  You have to set the `LANG' environment variable to the appropriate
  language code before running VICE. ISO 639 language codes can be found
  in the gettext manual.
  
  For example, if you speak Swedish, just type `export LANG=sv' at the 
  BASH prompt. This can be done from your `.login' or `.profile' file, 
  once and for all.
  
  If this doesn't work on your system (e.g. you get messages like this:
    `locale not supported by C library'
  try to set the environment variable `LANGUAGE' or `LC_MESSAGES' to the
  values described above.
  
3 Changing windows and amiga language settings
----------------------------------------------

By default the windows and amiga versions of VICE will try to check
the current language set for the system/user and use the same
language (if supported) in VICE.

The windows and amiga versions of VICE can change the language
setting during runtime, just select the language menu item from
the main VICE menu and select the language you want to use.

4 Adding new messages
---------------------

1. Edit the ALL_LINGUAS line in 'configure.in' and add your
   language code. In this example we will use Italian, so we
   will add "it":

   ALL_LINGUAS="de sv fr it"
                        ^^^^
   As I said earlier, ISO 639 language codes can be found in
   the gettext manual.

2. Execute 'autoconf' to create a new 'configure' script.

3. Now issue './configure'.

4. Go to the 'po' subdirectory.

5. Do a 'cp vice.pot it.po'. 'vice.pot' is is the common ground 
   for the translation teams to produce one PO for their language.
   'it.po' is the new translation file for your language. The part
   before the dot is your language code.

6. Now use the editor of your choice to provide translations in
   'it.po'. There is an emacs major mode (po-mode) that eases this
   process. Please also read paragraph 5!

7. Now issue 'make'. This causes an 'it.gmo' to be created. It is the
   file that will be used by the gettext library.

8. Do a 'make install' to install 'it.gmo' to the appropriate directory.


5 Updating *nix messages
------------------------

VICE messages change at every release. Go to the 'po' subdirectory and 
do a 'make update-po'. This updates all existing PO-files (removing 
obsolete translations, providing new, empty entries). Check the PO file
for your language and provide translations for the new, empty entries.


6 Updating windows and amiga messages
-------------------------------------

To update the windows and amiga messages you go to the 'po'
subdirectory and do a 'make trans-update'. This will update
the windows, amiga and also the *nix translation files.

Note however that the automatic updating of the windows and amiga
messages can only be done from a *nix environment with NLS
support enabled, this might seem counter-intuitive, but because
we decided to generate all the messages from one set of files
this is unavoidable.

7 Notes on translating messages
-------------------------------

A leading '*' is a hint for the menu generator to generate a
checkbox. In your translation just leave the '*' in the beginning:

#: src/arch/unix/c128ui.c:78 src/arch/unix/uicrtc.c:58
#: src/arch/unix/uisettings.c:1195 src/arch/unix/uisettings.c:1215
msgid "*Double size"
msgstr "*Doppelte Größe"

C format strings must be saved within the translation otherwhise
the program might fail.

The example below tries to print a number (%d) and then a string
(%s). Your translation must also adhere this sequence (%d before
%s), otherwhise strange things (even a crash) might happen.

#: src/arch/unix/archdep.c:233
#, c-format
msgid "Received signal %d (%s)."
msgstr "Signal %d (%s) empfangen."

Luckily those situations are rare within Vice.

BTW, the `c-format' above indicates that a C-format string is
contained in the to-be-translated msgid.
 
Other format specifiers (\n, etc.) are used for print formatting,
and are not strictly required. It depends on the language what is
nicely formatted and what is not.

Sometimes you'll find messages marked as fuzzy. e.g.:
  #: src/event.c:466
  #, fuzzy, c-format
  msgid "Could not create start snapshot file %s."

Those have been translated by heuristic and shall be reviewed by the
translator. After correction or confirmation the word `fuzzy' has to
be removed: e.g.
  #: src/event.c:466
  #, c-format
  msgid "Could not create start snapshot file %s."
  [...]

If `,fuzzy' was the only mark, the whole line (including `#') can be
removed:
  #: src/event.c:486
  msgid "Could not create start snapshot."
  [...]

-- 
Andrea Musuruane, 
http://musuruane.cjb.net

pottendo <pottendo@gmx.net>

Marco van den Heuvel <blackystardust68@yahoo.com>
