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, DE, Swiss German, NO, DA, Swedish, Canadian French,
PT, IT, FI, RU, ES, Belgian, Icelandic.
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' 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
  10 denotes: ok ?
   5 denotes: available, but not in current layout 
  -- denotes: not available.
Please note that the Print32 dialog box is still under development,
so do not translate it yet.
See documentation/languages on how to add another language.

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



At this moment (May 29, 1999), the following is supported:

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

                 Sys| Commdlg                   | Shell| Programs
                 Res| OFN PD16 PSD CF CC FR PD32| 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      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  --      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  --      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"



