Status of Internationalisation and Language Support in WINE
-----------------------------------------------------------
May 29, 1999, Klaas van Gend

Just like Windows, Wine must support several languages and
localised settings for countries other than the US.
Since the last module-loader re-organisation by Bertho,
this involves several files which need to be adapted to
support a certain language/region.


Keyboard Settings:
------------------
Currently, the following keyboard layouts are available:
US, UK, FR, Icelandic, DE, Swiss German, Swiss French, NO, DA, Swedish, 
Canadian French, PT, IT, FI, RU, ES, Belgian.
Please refer to documentation/keyboard by Ove Kaaven on how
to add more keyboard layouts.


Locale Settings:
----------------
You can find the locale settings in ole/nls/ .
Most languages have several locale settings for the various
countries. See the ole/nls/README, documentation/languages and 
MSDN's localeconv.htm for documentation on the structure
and sensible entries.


SysRes = System Resources : 
---------------------------
(System Menu, Edit Menu, MessageBox)
  10 denotes that all resources are localised
   e denotes that the EditMenu is still in English
   d denotes that the SYSMENU is lacking the 61762 debug entry in
     either English or Regional language
You can find these settings in resources/sysres_*.rc
where * stands for your language code.
Please use the English version (sysres_En.rc) as example.
See documentation/languages by Morten Wilinder and Klaas van Gend
on how to add another language.


Shell32:
--------
   1 SHELL_ABOUT_MSGBOX is in English, MENU_001, MENU_002 and 
     SHBRSFORFOLDER_MSGBOX are not present.
   2 SHELL_ABOUT_MSGBOX is translated, MENU_001, MENU_002 and 
     SHBRSFORFOLDER_MSGBOX are not present.
  10 all present and translated...
According to Juergen Schmiedt, MENU_001 and MENU_002 are not 
yet complete and shouldn't be translated yet.


Common Dialog boxes:
--------------------
OFN  = CommonDialogs' 16 bit File Dialog
FR   = CommonDialogs' Find & Replace Dialogs
CC   = CommonDialogs' Choose Colour Dialog
CF   = CommonDialogs' Choose Font Dialog
PD16 = CommonDialogs' 16 bit Print Dialog
PSD  = CommonDialogs' Page Setup Dialog
PD32 = CommonDialogs' 32 bit Print Dialog + stringtable
F32  = CommonDialogs' 32 bit File Dialogs + stringtables

  10 denotes: ok ?
   5 denotes: available, but not in current layout 
  -- denotes: not available.

See documentation/languages on how to add another language.


Common Controls:
----------------
There are several menus present in dlls/comctl32/rsrc.rc.
Thuy Nguyen is still modifying the property dialog sheet templates, 
so don't start translating them yet. Also, there is no structure for 
comctrl32 internationalisation.
The resources for the other controls are stable.


Multimedia:
-----------
In the multimedia subdirectory, a large stringtable with all
multimedia errors and messages is waiting for translation.
Be careful, this is a large piece of text!
	
    
Programs:
---------
Several of the Winelib-based programs in programs/* contain their own
resources, which can be internationalised.
Check the appropriate files and subdirectories for instructions on
how to add additional languages.
Note that currently the Swedish files are named "Sw.rc" where they
should be called "Sv.rc".
The WCMD program notes that internationalisation is lacking, but doesn't
support it, either.


At this moment (Oct 2, 1999), the following is supported:

(10 = max support, 0 = very bad/broken support, empty = no support,
 ** = submitted)
(note that I only looked into the source, I did not try to run the various languages)

                 Sys| Commdlg                        | Win | Shell| Programs
                 Res| OFN PD16 PSD CF CC FR PD32 F32 | MM  | 32   | Clock Notepad Progman WinHelp
                ----+--------------------------------+-----+------+------------------------------
Ca Catalan        10   10  10   10 10 10 10  --  --    --      2     --    --       --     --
Cs Czech          de   10  10   10  5  5 10  --  --    --      1     --    --       --     --
Da Danish         10   10  10   10 10 10 10  --  --    --      2
De German         10   10  10   10 10 10 10  --  --    --      1
En English        10   10  10   10 10 10 10  10  10    10      2

Eo Esperanto      de   10  10   10  5  5 10  --  --    --      1     --    --       --     --
Es Spanish        10   10  10   10 10 10 10  --  --    --      2
Fi Finnish        10   10  10   10 10 10 10  --  --    --      1
Fr French         10   10  10   10 10 10 10  --  --    10      2
Hu Hungarian       d   10  10   10 10 10 10  --  --    --      1     --    --

It Italian         d   10  10   10 10 10 10  --  --    --      1     --    --
Ko Korean          d   10  10   10  5 10 10  --  --    --      1     --    --
Nl Dutch          10   10  10   10 10 10 10  10  --    **      2     --    --       --     --
No Norwegian      de   10  10   10  5  5 10  --  --    --      1     --    --       --     --
Pl Polish          d   ---code is undecipherable---    --      1     --    --       --     --

Pt Portugese       d   10  10   10 10 10 10  --  --    --      2     --    --       --     --
Ru Russian        10   10  10   10 10 10 10  --  --    --      2     --    --       --     --
Sv Swedish         d   10  10   10 10 10 10  --  --    --      2    "Sw"  "Sw"     "Sw"   "Sw"
Wa Walon          10   10  10   10 10 10 10  --  --    --      2     --    --       --     --
Va Rumantsch Ladin (Vallader)                          --           "Va"  "Va"     "Va"   "Va"



