                              Wine Documentation                               
Prev                                                                       Next
-------------------------------------------------------------------------------

Chapter 5. Internationalization

5.1. Adding New Languages

Written by Morten Welinder < >, January 1996.

  * Thereafter revised February 1999 by Klaas van Gend
   
  * Revised again May 23, 1999, Klaas van Gend
   
  * Updated May 26, 2000, Zoran Dzelajlija
   
(Extracted from wine/documentation/languages)

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   Slovanian

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

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...

 1. Find the language ID in include/winnls.h.
   
 2. 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.
   
 3. Edit the parameters defined in ole/nls/*.nls to fit your local habits and
    language.
   
 4. Edit documentation/wine.man.in (search for -language) to show the new
    language abbreviation.
   
 5. 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.
   
 6. Edit include/options.h enum WINE_LANGUAGE to have a member called LANG_XX
    where XX is the new abbreviation.
   
 7. 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 "&" characters 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 dlls/commdlg/rsrc.rc to contain an #include statement for your
    cdlg_XX.rc file.
   
 9. Repeat steps 6 and 7 again for:
   
      + dlls/shell32/shell32_XX.rc and shres.rc
       
      + resources/sysres_XX.rc and user32.rc
       
10. Re-configure, re-make dependencies, and re-make Wine.
   
11. Check your new menus and forms; when they're not ok, go back to 6) and
    adapt the sizes, etc.
   
12. Several of the winelib based programs in the subdirectory programs also
    have internationalisation support. See the appropriate files there for
    reference.
   
13. Edit documentation/internationalisation to show the new status.
   
14. Submit patches for inclusion in the next Wine release, see file ./ANNOUNCE
    for details about where to submit.
   
-------------------------------------------------------------------------------
Prev                                  Home                                 Next
Quality Assurance                      Up                                 Tools
