Gabe
Graphic Simulations Corporation
[...]
>| (We need a simple program that will let our
>| distributor edit the strings that need to be localized.) Any pointers to
>| information on how to do this stuff would be greatly appreciated. Thanks,
You can take a look at my software:
http://www.worldnet.fr/~mguesdo/SBDev_WLT.html
Note: the 32Bits version will come soon...
WM_HOPETHISHELPS
____________________________________________________________________
Manuel GUESDON - SOFTWARE BUILDERS <mgu...@sbuilders.fr.eu.org>
Home: http://www.worldnet.fr/~mguesdo PGP Key Id: 76AB60D1
== Author of AppTranslator (A Windows Software Localization Tool) ==
========== http://www.worldnet.fr/~mguesdo/SBDev_WLT.html ==========
Put all of your strings into a STRINGTABLE resource. That can then
be bound into the .EXE or put into a separate resource-only DLL.
You can't really give the distributor an ASCII string table to edit
because they need a compiler to build the DLL. If you give them the
DLL to edit, then they need a resource editor to edit the strings.
Either way they need special tools. The only way to avoid that is
to read the ASCII strings from your ASCII data file. Then they can
edit their copy of the data file.
If your strings are put into a separate DLL, you will have one for
each language, i.e. XXXE.DLL, XXXF.DLL, XXXJ.DLL etc. (english,
french,japanese). When you install it, you can select the correct
one and rename it to a more generic name XXX.DLL. Or you can just
install it as XXXJ.DLL and then put a pointer in myapp.ini which tells
it to load XXXJ.DLL.
You can also have all of the strings in a single DLL (or .EXE) and
select the table at runtime:
#define LANG_ENGLISH 0
#define LANG_FRENCH 1
#define LANG_JAPANESE 2
...
#define STRING_XXX 0
#define STRING_YYY 1
#define STRING_ZZZ 2
...
#define STR(l,s) ((l)*1000+(s))
In your STRINGTABLE, you will use:
STR(LANG_ENGLISH,STRING_XXX) "..."
STR(LANG_ENGLISH,STRING_YYY) "...
...
STR(LANG_FRENCH,STRING_XXX) "..."
STR(LANG_FRENCH,STRING_YYY) "..."
...
When you load the string in your application, you might have a language
variable set to LANG_<ENGLISH FRENCH JAPANESE> (perhaps read from
myapp.ini) and you will use that to compute the integer id of the
required string:
LoadString(hinst,STR(lang,STRING_YYY),buffer,sizeof(buffer));
There are many other combinations and methods of managing strings.
Sorry, I know absolutely nothing about UNICODE.
--
John A. Grant jag...@nrcan.gc.ca
Airborne Geophysics, Geological Survey of Canada, Ottawa
If you followup, please do NOT e-mail me a copy: I will read it here.