ADDING LANGUAGES TO WINE

This file documents the necessary procedure for adding a new language
to the list of languages that Wine can display system menus and forms
in. Currently at least the following languages are still missing:
Bulgarian, Chinese, Greek, Icelandic, Japanese, Romanian,
Croatian, Slovak, Turkish, and Slovanian.

To add a new language you need to be able to translate the relatively
few texts, of course.  You will need very little knowledge of
programming, so you have almost no excuses for not adding your language,
right?  We should easily be able to support 20 languages within a few
months, get going!  Apart from re-compilation it'll take you about an
hour or two.

To add a new language to the list of languages that Wine can handle
you must...

0.  Find the language ID in /include/winnls.h .

1.  Look in ole/ole2nls.c if your language is already incorporated in
    the "static const struct NLS_langlocale". If not: find the 
    appropriate entries in /include/winnls.h and add them to the list.

2.  Edit the parameters defined in /ole/nls/*.nls to fit your local 
    habits and language.

3.  Edit documentation/wine.man (search for -language) to show the new
    language abbreviation.

4.  Edit misc/main.c variable "Languages" to contain the new language
    abbreviation and language ID.  Also edit macro "USAGE" to show the
    new abbreviation.

5.  Edit include/options.h enum "WINE_LANGUAGE" to have a member called
    LANG_XX where XX is the new abbreviation.

6.  Edit resources/sysres.c variable "SYSRES_Resources" to contain an 
    entry for your language.

7.  Create a new file, resources/sysres_XX.rc, where XX is the
    abbreviation that you chose.  Your best bet is to copy sysres_En.rc
    and start translating.  [Warning: the author of this file does not
    know the details of the structure of these files.  
    There seems to be no need to, however.]

    In menus, the character "&" means that the next character will
    be highlighted and that pressing that letter will select the item.
    You should place these "&"s suitably for your language, not just
    copy the positions from (say) English.  In particular, items within
    one menu should have different highlighted letters.

8.  Edit resources/Makefile.in to add the name of the new file to the
    SYSRES_SRCS variable.

9.  Re-configure, re-make dependencies, and re-make Wine.

10. Check your new menus and forms; when they're not ok,
    go back to 7) and adapt the sizes, etc.

11. Edit /resources/TODO if necessary.

12. Submit patches for inclusion in the next Wine release, 
    see file ./ANNOUNCE for details about where to submit.


January 1996
Morten Welinder

[I hope I got all the places where changes are needed.  If you see any
place missing from the above list, submit a patch to this file please.
Also note that re-organization of the source code might change the list
of places.]

Therefore revised Februari 1999 by Klaas van Gend
