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.in (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 struct "option_table" in
    misc/options.c 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.  Create a new file dlls/commdlg/cdlg_XX.rc (where XX is your language 
    abbreviation) containing all menus.
    Your best bet is to copy cdlg_En.rc and start translating.  
    There is no real need to know how the internal structure of the file,
    as you only need to translate the text within quotes. 

    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.

7.  Edit dlls/commdlg/rsrc.rc to contain an include statement for your
    cdlg_XX.rc file.

8.  Repeat steps 6 and 7 again for:
    - dlls/shell32/shell32_XX.rc  and shres.rc
    - resources/sysres_XX.rc      and user32.rc

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 6) and adapt the sizes, etc.
    
11. Several of the winelib based programs in the subdirectory programs
    also have internationalisation support. See the appropriate files
    there for reference.

12. Edit /documentation/internationalisation to show the new status.

13. 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
Revised again May 23, 1999, Klaas van Gend
Updated May 26, 2000, Zoran Dzelajlija
