TRANSLATING VIM MESSAGES

This file explains how to create and maintain po files using
gnu-gettext.win32, a Windows port of gettext by Franco Bez
<franco.bez@gmx.de>.  You can find it at:

	http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html

First read the README.txt file in this directory for general remarks on
translating Vim messages.


SETUP

Set the enviroment variable LANGUAGE to the language code for the language you
are translating Vim messages to.  Languagde codes are typically two characters
and you can find a list of them at:

	http://www.geocities.com/click2speak/languages.html

The LANGUAGE environment variable can be set from the command line, by adding
a line to your autoexec.bat file, or by defining a user variable from the
Advanced tab in the System control panel.

Next, edit Make_mvc.mak so that GETTEXT_PATH points the binary directory of
the intallation.


CREATING A NEW TRANSLATION

When creating a new translation you must add your language code to the
Make_mvc.mak file in the lines defining LANGUAGES and MOFILES.  To create the
initial .po file for your language you must use the command:

	make -f make_mvc.mak first_time

Note: You need to be in the po directory when using this makefile.

Once you have your new .po file load it into Vim and source cleanup.vim, this
will convert untranslated messages to comments.  If you have syntax
highlighting turned on then untranslated messages will stand out more easily.

You will also need to edit the file names in the comments in the .po file.
You need to remove the absolute directory specification (which has the form
c:\vim61\src\).  You can do this in Vim with the following command with the
appropriate directory specfication for where you have installed the Vim
source:

	%s/c:\\vim61\\src\\//g


UPDATING A TRANSLATION

If there are new or changed messages in Vim that need translating, then the
first thing to do is merge them into the existing translations.  This is done
with the following command:

	nmake -f Make_mvc.mak xx.po

where xx is the langauge code for the language needing translations.  The
original .po file is copied to xx.po.orig.


DOING THE TRANSLATION

Now that you have a .po file you can do the translations for all messages that
need it.  See README.txt for specific instructions.

Once you have finished translating the messages you should make sure all
non-translated strings are commented out.  This can be done by sourcing
cleanup.vim once again.


CHECKING THE TRANSLATION

Check the translation with the following command:

	nmake -f make_mvc.mak xx.mo

Correct any syntax errors reported.  When there are no more errors, the
translation is ready to be installed.


INSTALLING THE TRANSLATION

Install your translation with the following command:

	nmake -f make_mvc.mak install

This will create the xx\LC_MESSAGES directory in runtime\lang if it does not
already exist.


vim:tw=78:
