The dimensions of the controls should be changed so that they will be big 
enough to contain the text for every individual language.

Therefore:

- Dimensions of controls are based on sysres_En.rc.  Other languages should
  change these dimensions in order to make the text fit.

I (krynos@qbc.clic.net) will try to make sysres_Fr.rc fit correctly, if 
someone is interrested in others languages, message me. I may correct 
others languages after, but not soon.

Here are structure of each line (for example):
PUSHBUTTON "&Help", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
1038: The ID of this button, you shouldn't change this.
174 : X-offset of the button with respect to the upper-left corner of
      the dialog box.
75  : Y-offset
50  : The width of the button
14  : The height
flags (WS_??? etc): They control how the dialog behaves.  Things like:
                    changing the focus with a TAB, scrolling to a list
                    of radiobuttons with up/down keys, etc.  If you're
                    not sure: leave them as they are (in the english
                    version).
 

Frans van Dorsselaer
dorssel@rulhm1.LeidenUniv.nl
***************************************************************
1996, May

Subject: ChooseColor
         ===========

Please delete the old CHOOSECOLOR in YOUR sysres_??.rc   
and insert the new CHOOSECOLOR from sysres_En.rc to YOUR 
language file and translate this as you like it - 
otherwise you'll get an undefined behavour. 

Today it works well for:
* English 
* German
* French
* Italian
* Korean
* Finnish
...to be continued......

Thank you.

Albrecht Kleine
kleine@ak.sax.de

**************************************************************
1996, May

Subject: ChooseFont

Just like ChooseColor, please copy CHOSEFONT from sysres_EN.rc,
and translate it to your language. It's okay for:

* English
* German
* Finnish
* Italian
* French
.....

Thank you.

Albrecht Kleine
kleine@ak.sax.de

**************************************************************
1997, January

Subject: EDITMENU

There now is a resource EDITMENU.  It is the menu that is displayed when you
click the right mouse button within an edit control.  I included an English
version in all sysres_??.rc files, which needs translation in your language.
This has now been done for:

* English
.....

Note: I picked the IDs of the menuitems "at random".  When someone wants to
find out the "real" (win95) values, feel free to change them.  However, you
should change _all_ sysres_??.rc files and subsequently the function
EDIT_WM_Command() in controls/edit.c.  This is a matter of minutes (i.e. no
programming skills required).

Bye,

Frans van Dorsselaer
dorssel@rulhm1.LeidenUniv.nl
