Release 980215
[wine] / ole / ole2nls.c
1 /*
2  *      OLE2NLS library
3  *
4  *      Copyright 1995  Martin von Loewis
5  */
6
7 #include <string.h>
8 #include <ctype.h>
9 #include <stdlib.h>
10 #include "windows.h"
11 #include "heap.h"
12 #include "ole.h"
13 #include "options.h"
14 #include "winnls.h"
15 #include "winreg.h"
16 #include "winerror.h"
17 #include "stddebug.h"
18 #include "debug.h"
19
20 /* Locale name to id map. used by EnumSystemLocales, GetLocalInfoA 
21  * MUST contain all #defines from winnls.h
22  * last entry has NULL name, 0 id.
23  */ 
24 #define LOCALE_ENTRY(x) {#x,LOCALE_##x}
25 static struct tagLOCALE_NAME2ID {
26         char    *name;
27         DWORD   id;
28 } locale_name2id[]= {
29         LOCALE_ENTRY(ILANGUAGE),
30         LOCALE_ENTRY(SLANGUAGE),
31         LOCALE_ENTRY(SENGLANGUAGE),
32         LOCALE_ENTRY(SABBREVLANGNAME),
33         LOCALE_ENTRY(SNATIVELANGNAME),
34         LOCALE_ENTRY(ICOUNTRY),
35         LOCALE_ENTRY(SCOUNTRY),
36         LOCALE_ENTRY(SENGCOUNTRY),
37         LOCALE_ENTRY(SABBREVCTRYNAME),
38         LOCALE_ENTRY(SNATIVECTRYNAME),
39         LOCALE_ENTRY(IDEFAULTLANGUAGE),
40         LOCALE_ENTRY(IDEFAULTCOUNTRY),
41         LOCALE_ENTRY(IDEFAULTCODEPAGE),
42         LOCALE_ENTRY(IDEFAULTANSICODEPAGE),
43         LOCALE_ENTRY(SLIST),
44         LOCALE_ENTRY(IMEASURE),
45         LOCALE_ENTRY(SDECIMAL),
46         LOCALE_ENTRY(STHOUSAND),
47         LOCALE_ENTRY(SGROUPING),
48         LOCALE_ENTRY(IDIGITS),
49         LOCALE_ENTRY(ILZERO),
50         LOCALE_ENTRY(INEGNUMBER),
51         LOCALE_ENTRY(SNATIVEDIGITS),
52         LOCALE_ENTRY(SCURRENCY),
53         LOCALE_ENTRY(SINTLSYMBOL),
54         LOCALE_ENTRY(SMONDECIMALSEP),
55         LOCALE_ENTRY(SMONTHOUSANDSEP),
56         LOCALE_ENTRY(SMONGROUPING),
57         LOCALE_ENTRY(ICURRDIGITS),
58         LOCALE_ENTRY(IINTLCURRDIGITS),
59         LOCALE_ENTRY(ICURRENCY),
60         LOCALE_ENTRY(INEGCURR),
61         LOCALE_ENTRY(SDATE),
62         LOCALE_ENTRY(STIME),
63         LOCALE_ENTRY(SSHORTDATE),
64         LOCALE_ENTRY(SLONGDATE),
65         LOCALE_ENTRY(STIMEFORMAT),
66         LOCALE_ENTRY(IDATE),
67         LOCALE_ENTRY(ILDATE),
68         LOCALE_ENTRY(ITIME),
69         LOCALE_ENTRY(ITIMEMARKPOSN),
70         LOCALE_ENTRY(ICENTURY),
71         LOCALE_ENTRY(ITLZERO),
72         LOCALE_ENTRY(IDAYLZERO),
73         LOCALE_ENTRY(IMONLZERO),
74         LOCALE_ENTRY(S1159),
75         LOCALE_ENTRY(S2359),
76         LOCALE_ENTRY(ICALENDARTYPE),
77         LOCALE_ENTRY(IOPTIONALCALENDAR),
78         LOCALE_ENTRY(IFIRSTDAYOFWEEK),
79         LOCALE_ENTRY(IFIRSTWEEKOFYEAR),
80         LOCALE_ENTRY(SDAYNAME1),
81         LOCALE_ENTRY(SDAYNAME2),
82         LOCALE_ENTRY(SDAYNAME3),
83         LOCALE_ENTRY(SDAYNAME4),
84         LOCALE_ENTRY(SDAYNAME5),
85         LOCALE_ENTRY(SDAYNAME6),
86         LOCALE_ENTRY(SDAYNAME7),
87         LOCALE_ENTRY(SABBREVDAYNAME1),
88         LOCALE_ENTRY(SABBREVDAYNAME2),
89         LOCALE_ENTRY(SABBREVDAYNAME3),
90         LOCALE_ENTRY(SABBREVDAYNAME4),
91         LOCALE_ENTRY(SABBREVDAYNAME5),
92         LOCALE_ENTRY(SABBREVDAYNAME6),
93         LOCALE_ENTRY(SABBREVDAYNAME7),
94         LOCALE_ENTRY(SMONTHNAME1),
95         LOCALE_ENTRY(SMONTHNAME2),
96         LOCALE_ENTRY(SMONTHNAME3),
97         LOCALE_ENTRY(SMONTHNAME4),
98         LOCALE_ENTRY(SMONTHNAME5),
99         LOCALE_ENTRY(SMONTHNAME6),
100         LOCALE_ENTRY(SMONTHNAME7),
101         LOCALE_ENTRY(SMONTHNAME8),
102         LOCALE_ENTRY(SMONTHNAME9),
103         LOCALE_ENTRY(SMONTHNAME10),
104         LOCALE_ENTRY(SMONTHNAME11),
105         LOCALE_ENTRY(SMONTHNAME12),
106         LOCALE_ENTRY(SMONTHNAME13),
107         LOCALE_ENTRY(SABBREVMONTHNAME1),
108         LOCALE_ENTRY(SABBREVMONTHNAME2),
109         LOCALE_ENTRY(SABBREVMONTHNAME3),
110         LOCALE_ENTRY(SABBREVMONTHNAME4),
111         LOCALE_ENTRY(SABBREVMONTHNAME5),
112         LOCALE_ENTRY(SABBREVMONTHNAME6),
113         LOCALE_ENTRY(SABBREVMONTHNAME7),
114         LOCALE_ENTRY(SABBREVMONTHNAME8),
115         LOCALE_ENTRY(SABBREVMONTHNAME9),
116         LOCALE_ENTRY(SABBREVMONTHNAME10),
117         LOCALE_ENTRY(SABBREVMONTHNAME11),
118         LOCALE_ENTRY(SABBREVMONTHNAME12),
119         LOCALE_ENTRY(SABBREVMONTHNAME13),
120         LOCALE_ENTRY(SPOSITIVESIGN),
121         LOCALE_ENTRY(SNEGATIVESIGN),
122         LOCALE_ENTRY(IPOSSIGNPOSN),
123         LOCALE_ENTRY(INEGSIGNPOSN),
124         LOCALE_ENTRY(IPOSSYMPRECEDES),
125         LOCALE_ENTRY(IPOSSEPBYSPACE),
126         LOCALE_ENTRY(INEGSYMPRECEDES),
127         LOCALE_ENTRY(INEGSEPBYSPACE),
128 /*      LOCALE_ENTRY(FONTSIGNATURE),*/
129         {NULL,0},
130 };
131
132 const struct map_lcid2str {
133         LCID            langid;
134         const char      *langname;
135 } languages[]={
136         {0x0401,"Arabisch"},
137         {0x0402,"Bulgarisch"},
138         {0x0403,"Katalanisch"},
139         {0x0404,"Traditionales Chinesisch"},
140         {0x0405,"Tschecisch"},
141         {0x0406,"Ddnisch"},
142         {0x0407,"Deutsch"},
143         {0x0408,"Griechisch"},
144         {0x0409,"Amerikanisches Englisch"},
145         {0x040A,"Kastilisches Spanisch"},
146         {0x040B,"Finnisch"},
147         {0x040C,"Franzvsisch"},
148         {0x040D,"Hebrdisch"},
149         {0x040E,"Ungarisch"},
150         {0x040F,"Isldndisch"},
151         {0x0410,"Italienisch"},
152         {0x0411,"Japanisch"},
153         {0x0412,"Koreanisch"},
154         {0x0413,"Niederldndisch"},
155         {0x0414,"Norwegisch-Bokmal"},
156         {0x0415,"Polnisch"},
157         {0x0416,"Brasilianisches Portugiesisch"},
158         {0x0417,"Rdtoromanisch"},
159         {0x0418,"Rumdnisch"},
160         {0x0419,"Russisch"},
161         {0x041A,"Kroatoserbisch (lateinisch)"},
162         {0x041B,"Slowenisch"},
163         {0x041C,"Albanisch"},
164         {0x041D,"Schwedisch"},
165         {0x041E,"Thai"},
166         {0x041F,"T|rkisch"},
167         {0x0420,"Urdu"},
168         {0x0421,"Bahasa"},
169         {0x0804,"Vereinfachtes Chinesisch"},
170         {0x0807,"Schweizerdeutsch"},
171         {0x0809,"Britisches Englisch"},
172         {0x080A,"Mexikanisches Spanisch"},
173         {0x080C,"Belgisches Franzvsisch"},
174         {0x0810,"Schweizerisches Italienisch"},
175         {0x0813,"Belgisches Niederldndisch"},
176         {0x0814,"Norgwegisch-Nynorsk"},
177         {0x0816,"Portugiesisch"},
178         {0x081A,"Serbokratisch (kyrillisch)"},
179         {0x0C1C,"Kanadisches Franzvsisch"},
180         {0x100C,"Schweizerisches Franzvsisch"},
181         {0x0000,"Unbekannt"},
182 };
183
184 /***********************************************************************
185  *           GetUserDefaultLCID       (OLE2NLS.1)
186  */
187 LCID WINAPI GetUserDefaultLCID()
188 {
189 /* Default sorting, neutral sublanguage */
190     switch(Options.language)
191     {
192  /* case LANG_Bu: return 0x02; */      /* Bulgarian */
193  /* case LANG_Ch: return 0x04; */      /* Chinese */
194     case LANG_Cz: return 0x05;         /* Czech */
195     case LANG_Da: return 0x06;         /* Danish */
196     case LANG_De: return 0x07;         /* German */
197  /* case LANG_Gr: return 0x08; */      /* Greek */
198     case LANG_En: return 0x09;         /* English */
199     case LANG_Es: return 0x0a;         /* Spanish */
200     case LANG_Fi: return 0x0b;         /* Finnish */
201     case LANG_Fr: return 0x0c;         /* French */
202     case LANG_Hu: return 0x0e;         /* Hungarian */
203  /* case LANG_Ic: return 0x0f; */      /* Icelandic */
204     case LANG_It: return 0x10;         /* Italian */
205  /* case LANG_Jp: return 0x11; */      /* Japanese */
206     case LANG_Ko: return 0x12;         /* Korean */
207  /* case LANG_Du: return 0x13; */      /* Dutch */
208     case LANG_No: return 0x14;         /* Norwegian */
209     case LANG_Pl: return 0x15;         /* Polish */
210     case LANG_Po: return 0x16;         /* Portuguese */
211  /* case LANG_Ro: return 0x18; */      /* Romanian */
212  /* case LANG_Ru: return 0x19; */      /* Russian */
213  /* case LANG_Cr: return 0x1a; */      /* Croatian */
214  /* case LANG_Sl: return 0x1b; */      /* Slovak */
215     case LANG_Sw: return 0x1d;         /* Swedish */
216  /* case LANG_Tu: return 0x1f; */      /* Turkish */
217  /* case LANG_Sv: return 0x24; */      /* Slovenian */
218     case LANG_Eo: return 0x25;         /* Esperanto (not official) */
219     case LANG_Ca: return 0x26;         /* Catalan */
220
221     default:
222         return 0x00;                   /* Neutral language */
223     }
224 }
225
226 /***********************************************************************
227  *         GetSystemDefaultLCID       (OLE2NLS.2)
228  */
229 LCID WINAPI GetSystemDefaultLCID()
230 {
231         return GetUserDefaultLCID();
232 }
233
234 /***********************************************************************
235  *         GetUserDefaultLangID       (OLE2NLS.3)
236  */
237 LANGID WINAPI GetUserDefaultLangID()
238 {
239         return (WORD)GetUserDefaultLCID();
240 }
241
242 /***********************************************************************
243  *         GetSystemDefaultLangID     (OLE2NLS.4)
244  */
245 LANGID WINAPI GetSystemDefaultLangID()
246 {
247         return GetUserDefaultLangID();
248 }
249
250 /***********************************************************************
251  *         GetLocaleInfoA             (OLE2NLS.5)
252  * Is the last parameter really WORD for Win16?
253  */
254 INT16 WINAPI GetLocaleInfo16(LCID lcid,LCTYPE LCType,LPSTR buf,INT16 len)
255 {
256         return GetLocaleInfo32A(lcid,LCType,buf,len);
257 }
258
259 INT32 WINAPI GetLocaleInfo32A(LCID lcid,LCTYPE LCType,LPSTR buf,INT32 len)
260 {
261         char    *retString;
262         int     found,i;
263
264         dprintf_ole(stddeb,"GetLocaleInfo32A(%8lX,%8lX,%p,%4X)\n",
265                         lcid,LCType,buf,len);
266
267         LCType &= ~(LOCALE_NOUSEROVERRIDE|LOCALE_USE_CP_ACP);
268
269         /* As an option, we could obtain the value from win.ini.
270            This would not match the Wine compile-time option.
271            Also, not all identifiers are available from win.ini */
272         retString=0;
273         /* If we are through all of this, retLen should not be zero anymore.
274            If it is, the value is not supported */
275         i=0;
276         while (locale_name2id[i].name!=NULL) {
277                 if (LCType == locale_name2id[i].id) {
278                         retString = locale_name2id[i].name;
279                         break;
280                 }
281                 i++;
282         }
283         if (!retString) {
284                 fprintf(stderr,"Unkown LC type %lX\n",LCType);
285                 return 0;
286         }
287
288 #define LOCVAL(type,value) case type:retString=value;break;
289
290 /* Now, the language specific definitions. They don't have to be
291    complete */
292     found=1;
293     switch(Options.language)
294     {
295     case LANG_De:
296         switch (LCType) {
297 /* This definitions apply to Germany only. Users in Austria 
298    or Switzerland might want to modify them */
299 LOCVAL(LOCALE_ILANGUAGE,"9")
300 LOCVAL(LOCALE_SLANGUAGE,"Deutsch")
301 LOCVAL(LOCALE_SENGLANGUAGE,"German")
302 LOCVAL(LOCALE_SABBREVLANGNAME,"deu")
303 LOCVAL(LOCALE_SNATIVELANGNAME,"Deutsch")
304 LOCVAL(LOCALE_ICOUNTRY,"49")
305 LOCVAL(LOCALE_SCOUNTRY,"Deutschland")
306 LOCVAL(LOCALE_SENGCOUNTRY,"Deutschland")
307 LOCVAL(LOCALE_SABBREVCTRYNAME,"De")
308 LOCVAL(LOCALE_SNATIVECTRYNAME,"Deutschland")
309 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
310 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49")
311 LOCVAL(LOCALE_IDEFAULTCODEPAGE,"851")
312 /* Dunno
313 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
314 */
315 LOCVAL(LOCALE_SLIST,";")
316 LOCVAL(LOCALE_IMEASURE,"0")
317 LOCVAL(LOCALE_SDECIMAL,",")
318 LOCVAL(LOCALE_STHOUSAND,".")
319 /*
320 LOCVAL(LOCALE_SGROUPING)
321 */
322 LOCVAL(LOCALE_IDIGITS,"2")
323 LOCVAL(LOCALE_ILZERO,"1")
324 /*
325 LOCVAL(LOCALE_INEGNUMBER)
326 Is this "0123456789" ??
327 LOCVAL(LOCALE_SNATIVEDIGITS)
328 */
329 LOCVAL(LOCALE_SCURRENCY,"DM")
330 /*
331 LOCVAL(LOCALE_SINTLSYMBOL)
332 LOCVAL(LOCALE_SMONDECIMALSEP)
333 LOCVAL(LOCALE_SMONTHOUSANDSEP)
334 LOCVAL(LOCALE_SMONGROUPING)
335 */
336 LOCVAL(LOCALE_ICURRDIGITS,"2")
337 /*
338 LOCVAL(LOCALE_IINTLCURRDIGITS)
339 */
340 LOCVAL(LOCALE_ICURRENCY,"3")
341 LOCVAL(LOCALE_INEGCURR,"8")
342 LOCVAL(LOCALE_SDATE,".")
343 LOCVAL(LOCALE_STIME,":")
344 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
345 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
346 /*
347 LOCVAL(LOCALE_STIMEFORMAT)
348 */
349 LOCVAL(LOCALE_IDATE,"1")
350 /*
351 LOCVAL(LOCALE_ILDATE)
352 */
353 LOCVAL(LOCALE_ITIME,"1")
354 /*
355 LOCVAL(LOCALE_ITIMEMARKPOSN)
356 LOCVAL(LOCALE_ICENTURY)
357 */
358 LOCVAL(LOCALE_ITLZERO,"1")
359 /*
360 LOCVAL(LOCALE_IDAYLZERO)
361 LOCVAL(LOCALE_IMONLZERO)
362 LOCVAL(LOCALE_S1159)
363 LOCVAL(LOCALE_S2359)
364 LOCVAL(LOCALE_ICALENDARTYPE)
365 LOCVAL(LOCALE_IOPTIONALCALENDAR)
366 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
367 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
368 */
369 LOCVAL(LOCALE_SDAYNAME1,"Montag")
370 LOCVAL(LOCALE_SDAYNAME2,"Dienstag")
371 LOCVAL(LOCALE_SDAYNAME3,"Mittwoch")
372 LOCVAL(LOCALE_SDAYNAME4,"Donnerstag")
373 LOCVAL(LOCALE_SDAYNAME5,"Freitag")
374 LOCVAL(LOCALE_SDAYNAME6,"Sonnabend")
375 LOCVAL(LOCALE_SDAYNAME7,"Sonntag")
376 LOCVAL(LOCALE_SABBREVDAYNAME1,"Mo")
377 LOCVAL(LOCALE_SABBREVDAYNAME2,"Di")
378 LOCVAL(LOCALE_SABBREVDAYNAME3,"Mi")
379 LOCVAL(LOCALE_SABBREVDAYNAME4,"Do")
380 LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
381 LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa")
382 LOCVAL(LOCALE_SABBREVDAYNAME7,"So")
383 LOCVAL(LOCALE_SMONTHNAME1,"Januar")
384 LOCVAL(LOCALE_SMONTHNAME2,"Februar")
385 LOCVAL(LOCALE_SMONTHNAME3,"März")
386 LOCVAL(LOCALE_SMONTHNAME4,"April")
387 LOCVAL(LOCALE_SMONTHNAME5,"Mai")
388 LOCVAL(LOCALE_SMONTHNAME6,"Juni")
389 LOCVAL(LOCALE_SMONTHNAME7,"Juli")
390 LOCVAL(LOCALE_SMONTHNAME8,"August")
391 LOCVAL(LOCALE_SMONTHNAME9,"September")
392 LOCVAL(LOCALE_SMONTHNAME10,"Oktober")
393 LOCVAL(LOCALE_SMONTHNAME11,"November")
394 LOCVAL(LOCALE_SMONTHNAME12,"Dezember")
395 LOCVAL(LOCALE_SMONTHNAME13,"")
396 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
397 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
398 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mär")
399 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
400 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mai")
401 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun")
402 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul")
403 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
404 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep")
405 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
406 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
407 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dez")
408 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
409 /*
410 LOCVAL(LOCALE_SPOSITIVESIGN)
411 LOCVAL(LOCALE_SNEGATIVESIGN)
412 LOCVAL(LOCALE_IPOSSIGNPOSN)
413 LOCVAL(LOCALE_INEGSIGNPOSN)
414 LOCVAL(LOCALE_IPOSSYMPRECEDES)
415 LOCVAL(LOCALE_IPOSSEPBYSPACE)
416 LOCVAL(LOCALE_INEGSYMPRECEDES)
417 LOCVAL(LOCALE_INEGSEPBYSPACE)
418 */
419         default: found=0;break;
420         }
421     break;  /* LANG(De) */
422
423     case LANG_Da:
424         switch (LCType) {
425 LOCVAL(LOCALE_ILANGUAGE,"6")
426 LOCVAL(LOCALE_SLANGUAGE,"Dansk")
427 LOCVAL(LOCALE_SENGLANGUAGE,"Danish")
428 LOCVAL(LOCALE_SABBREVLANGNAME,"dan")
429 LOCVAL(LOCALE_SNATIVELANGNAME,"Dansk")
430 LOCVAL(LOCALE_ICOUNTRY,"45")
431 LOCVAL(LOCALE_SCOUNTRY,"Danmark")
432 LOCVAL(LOCALE_SENGCOUNTRY,"Denmark")
433 LOCVAL(LOCALE_SABBREVCTRYNAME,"DK")
434 LOCVAL(LOCALE_SNATIVECTRYNAME,"Danmark")
435 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"6")
436 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"45")
437 /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
438 /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
439 LOCVAL(LOCALE_SLIST,";")
440 LOCVAL(LOCALE_IMEASURE,"0")
441 LOCVAL(LOCALE_SDECIMAL,",")
442 LOCVAL(LOCALE_STHOUSAND,".")
443 /* LOCVAL(LOCALE_SGROUPING) */
444 LOCVAL(LOCALE_IDIGITS,"2")
445 LOCVAL(LOCALE_ILZERO,"1")
446 /* LOCVAL(LOCALE_INEGNUMBER) */
447 /* LOCVAL(LOCALE_SNATIVEDIGITS) */
448 LOCVAL(LOCALE_SCURRENCY,"kr")
449 /* LOCVAL(LOCALE_SINTLSYMBOL) */
450 LOCVAL(LOCALE_SMONDECIMALSEP,",")
451 LOCVAL(LOCALE_SMONTHOUSANDSEP,".")
452 /* LOCVAL(LOCALE_SMONGROUPING) */
453 LOCVAL(LOCALE_ICURRDIGITS,"2")
454 /* LOCVAL(LOCALE_IINTLCURRDIGITS) */
455 LOCVAL(LOCALE_ICURRENCY,"3")
456 LOCVAL(LOCALE_INEGCURR,"8")
457 LOCVAL(LOCALE_SDATE,".")
458 LOCVAL(LOCALE_STIME,":")
459 LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy")
460 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
461 /* LOCVAL(LOCALE_STIMEFORMAT) */
462 LOCVAL(LOCALE_IDATE,"1")
463 /* LOCVAL(LOCALE_ILDATE) */
464 LOCVAL(LOCALE_ITIME,"1")
465 /* LOCVAL(LOCALE_ITIMEMARKPOSN) */
466 /* LOCVAL(LOCALE_ICENTURY) */
467 LOCVAL(LOCALE_ITLZERO,"1")
468 /* LOCVAL(LOCALE_IDAYLZERO) */
469 /* LOCVAL(LOCALE_IMONLZERO) */
470 LOCVAL(LOCALE_S1159, "")
471 LOCVAL(LOCALE_S2359, "")
472 /* LOCVAL(LOCALE_ICALENDARTYPE) */
473 /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */
474 /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
475 /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
476 LOCVAL(LOCALE_SDAYNAME1,"Mandag")
477 LOCVAL(LOCALE_SDAYNAME2,"Tirsdag")
478 LOCVAL(LOCALE_SDAYNAME3,"Onsdag")
479 LOCVAL(LOCALE_SDAYNAME4,"Torsdag")
480 LOCVAL(LOCALE_SDAYNAME5,"Fredag")
481 LOCVAL(LOCALE_SDAYNAME6,"Lørdag")
482 LOCVAL(LOCALE_SDAYNAME7,"Søndag")
483 LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma")
484 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti")
485 LOCVAL(LOCALE_SABBREVDAYNAME3,"On")
486 LOCVAL(LOCALE_SABBREVDAYNAME4,"To")
487 LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
488 LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø")
489 LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø")
490 LOCVAL(LOCALE_SMONTHNAME1,"Januar")
491 LOCVAL(LOCALE_SMONTHNAME2,"Februar")
492 LOCVAL(LOCALE_SMONTHNAME3,"Marts")
493 LOCVAL(LOCALE_SMONTHNAME4,"April")
494 LOCVAL(LOCALE_SMONTHNAME5,"Maj")
495 LOCVAL(LOCALE_SMONTHNAME6,"Juni")
496 LOCVAL(LOCALE_SMONTHNAME7,"Juli")
497 LOCVAL(LOCALE_SMONTHNAME8,"August")
498 LOCVAL(LOCALE_SMONTHNAME9,"September")
499 LOCVAL(LOCALE_SMONTHNAME10,"Oktober")
500 LOCVAL(LOCALE_SMONTHNAME11,"November")
501 LOCVAL(LOCALE_SMONTHNAME12,"December")
502 LOCVAL(LOCALE_SMONTHNAME13,"")
503 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
504 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
505 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar")
506 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
507 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Maj")
508 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun")
509 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul")
510 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
511 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep")
512 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
513 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
514 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dec")
515 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
516 LOCVAL(LOCALE_SPOSITIVESIGN, "")
517 LOCVAL(LOCALE_SNEGATIVESIGN, "-")
518 LOCVAL(LOCALE_IPOSSIGNPOSN, "3")
519 LOCVAL(LOCALE_INEGSIGNPOSN, "3")
520 LOCVAL(LOCALE_IPOSSYMPRECEDES, "1")
521 LOCVAL(LOCALE_IPOSSEPBYSPACE, "0")
522 LOCVAL(LOCALE_INEGSYMPRECEDES, "1")
523 LOCVAL(LOCALE_INEGSEPBYSPACE, "0")
524         default: found=0;break;
525         }
526     break; /* LANG(Da) */
527
528     case LANG_En:
529         switch (LCType) {
530 LOCVAL(LOCALE_ILANGUAGE,"9")
531 LOCVAL(LOCALE_SLANGUAGE,"English")
532 LOCVAL(LOCALE_SENGLANGUAGE,"English")
533 LOCVAL(LOCALE_SABBREVLANGNAME,"enu")
534 LOCVAL(LOCALE_SNATIVELANGNAME,"English")
535 LOCVAL(LOCALE_ICOUNTRY,"11")
536 LOCVAL(LOCALE_SCOUNTRY,"Deutschland")
537 LOCVAL(LOCALE_SENGCOUNTRY,"Deutschland")
538 LOCVAL(LOCALE_SABBREVCTRYNAME,"De")
539 LOCVAL(LOCALE_SNATIVECTRYNAME,"Deutschland")
540 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
541 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49")
542 LOCVAL(LOCALE_IDEFAULTCODEPAGE,"437")
543 /* Dunno
544 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
545 */
546 LOCVAL(LOCALE_SLIST,";")
547 LOCVAL(LOCALE_IMEASURE,"0")
548 LOCVAL(LOCALE_SDECIMAL,",")
549 LOCVAL(LOCALE_STHOUSAND,".")
550 LOCVAL(LOCALE_SGROUPING, "3;0")
551 LOCVAL(LOCALE_IDIGITS,"2")
552 LOCVAL(LOCALE_ILZERO,"1")
553 /*
554 LOCVAL(LOCALE_INEGNUMBER)
555 Is this "0123456789" ??
556 LOCVAL(LOCALE_SNATIVEDIGITS)
557 */
558 LOCVAL(LOCALE_SCURRENCY,"DM")
559 LOCVAL(LOCALE_SINTLSYMBOL, "USD")
560 LOCVAL(LOCALE_SMONDECIMALSEP, ".")
561 LOCVAL(LOCALE_SMONTHOUSANDSEP, ".")
562 LOCVAL(LOCALE_SMONGROUPING, "3;0")
563 LOCVAL(LOCALE_ICURRDIGITS,"2")
564 LOCVAL(LOCALE_IINTLCURRDIGITS,"2")
565 LOCVAL(LOCALE_ICURRENCY,"3")
566 LOCVAL(LOCALE_INEGCURR,"8")
567 LOCVAL(LOCALE_SDATE,".")
568 LOCVAL(LOCALE_STIME,":")
569 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
570 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
571 LOCVAL(LOCALE_STIMEFORMAT, "h:mm:ss tt")
572 LOCVAL(LOCALE_IDATE,"1")
573 /*
574 LOCVAL(LOCALE_ILDATE)
575 */
576 LOCVAL(LOCALE_ITIME,"1")
577 /*
578 LOCVAL(LOCALE_ITIMEMARKPOSN)
579 LOCVAL(LOCALE_ICENTURY)
580 */
581 LOCVAL(LOCALE_ITLZERO,"1")
582 /*
583 LOCVAL(LOCALE_IDAYLZERO)
584 LOCVAL(LOCALE_IMONLZERO)
585 */
586 LOCVAL(LOCALE_S1159,"AM")
587 LOCVAL(LOCALE_S2359,"PM")
588 LOCVAL(LOCALE_ICALENDARTYPE,"1")
589 /*
590 LOCVAL(LOCALE_IOPTIONALCALENDAR)
591 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
592 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
593 */
594 LOCVAL(LOCALE_SDAYNAME1,"Montag")
595 LOCVAL(LOCALE_SDAYNAME2,"Dienstag")
596 LOCVAL(LOCALE_SDAYNAME3,"Mittwoch")
597 LOCVAL(LOCALE_SDAYNAME4,"Donnerstag")
598 LOCVAL(LOCALE_SDAYNAME5,"Freitag")
599 LOCVAL(LOCALE_SDAYNAME6,"Sonnabend")
600 LOCVAL(LOCALE_SDAYNAME7,"Sonntag")
601 LOCVAL(LOCALE_SABBREVDAYNAME1,"Mo")
602 LOCVAL(LOCALE_SABBREVDAYNAME2,"Di")
603 LOCVAL(LOCALE_SABBREVDAYNAME3,"Mi")
604 LOCVAL(LOCALE_SABBREVDAYNAME4,"Do")
605 LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
606 LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa")
607 LOCVAL(LOCALE_SABBREVDAYNAME7,"So")
608 LOCVAL(LOCALE_SMONTHNAME1,"Januar")
609 LOCVAL(LOCALE_SMONTHNAME2,"Februar")
610 LOCVAL(LOCALE_SMONTHNAME3,"März")
611 LOCVAL(LOCALE_SMONTHNAME4,"April")
612 LOCVAL(LOCALE_SMONTHNAME5,"Mai")
613 LOCVAL(LOCALE_SMONTHNAME6,"Juni")
614 LOCVAL(LOCALE_SMONTHNAME7,"Juli")
615 LOCVAL(LOCALE_SMONTHNAME8,"August")
616 LOCVAL(LOCALE_SMONTHNAME9,"September")
617 LOCVAL(LOCALE_SMONTHNAME10,"Oktober")
618 LOCVAL(LOCALE_SMONTHNAME11,"November")
619 LOCVAL(LOCALE_SMONTHNAME12,"Dezember")
620 LOCVAL(LOCALE_SMONTHNAME13,"")
621 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
622 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
623 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mär")
624 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
625 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mai")
626 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun")
627 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul")
628 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
629 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep")
630 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
631 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
632 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dez")
633 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
634 /*
635 LOCVAL(LOCALE_SPOSITIVESIGN)
636 LOCVAL(LOCALE_SNEGATIVESIGN)
637 LOCVAL(LOCALE_IPOSSIGNPOSN)
638 LOCVAL(LOCALE_INEGSIGNPOSN)
639 LOCVAL(LOCALE_IPOSSYMPRECEDES)
640 LOCVAL(LOCALE_IPOSSEPBYSPACE)
641 LOCVAL(LOCALE_INEGSYMPRECEDES)
642 LOCVAL(LOCALE_INEGSEPBYSPACE)
643 */
644         default: found=0;break;
645         }
646     break;  /* LANG(En) */
647
648     case LANG_Eo:
649         switch (LCType) {
650 /* LOCVAL(LOCALE_ILANGUAGE,"9") ISO numerical ID for language TODO */
651 LOCVAL(LOCALE_SLANGUAGE,"Esperanto")
652 LOCVAL(LOCALE_SENGLANGUAGE,"Esperanto")
653 /* LOCVAL(LOCALE_SABBREVLANGNAME,"deu") */
654 LOCVAL(LOCALE_SNATIVELANGNAME,"Esperanto")
655 /* LOCVAL(LOCALE_ICOUNTRY,"49") not official in any one country */
656 /* LOCVAL(LOCALE_SCOUNTRY,"Deutschland") */
657 /* LOCVAL(LOCALE_SENGCOUNTRY,"Germany") */
658 /* LOCVAL(LOCALE_SABBREVCTRYNAME,"De") */
659 /* LOCVAL(LOCALE_SNATIVECTRYNAME,"Deutschland") */
660 /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") ISO ID of lang TODO */
661 /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49") */
662 LOCVAL(LOCALE_IDEFAULTCODEPAGE,"3") /* is this right? TODO */
663 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE,"3") /* is this right? TODO */
664 LOCVAL(LOCALE_SLIST,";")
665 LOCVAL(LOCALE_IMEASURE,"0")
666 LOCVAL(LOCALE_SDECIMAL,",")
667 LOCVAL(LOCALE_STHOUSAND,".")
668 /* LOCVAL(LOCALE_SGROUPING) */
669 LOCVAL(LOCALE_IDIGITS,"2")
670 LOCVAL(LOCALE_ILZERO,"1")
671 /* LOCVAL(LOCALE_INEGNUMBER) */
672 /* LOCVAL(LOCALE_SNATIVEDIGITS) */
673 LOCVAL(LOCALE_SCURRENCY,"NLG") /* accounting currency of UEA */
674 /* LOCVAL(LOCALE_SINTLSYMBOL) */
675 /* LOCVAL(LOCALE_SMONDECIMALSEP) */
676 /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */
677 /* LOCVAL(LOCALE_SMONGROUPING) */
678 /* LOCVAL(LOCALE_ICURRDIGITS,"2") */
679 /* LOCVAL(LOCALE_IINTLCURRDIGITS) */
680 LOCVAL(LOCALE_ICURRENCY,"3")
681 LOCVAL(LOCALE_INEGCURR,"8")
682 LOCVAL(LOCALE_SDATE,".")
683 LOCVAL(LOCALE_STIME,":")
684 LOCVAL(LOCALE_SSHORTDATE,"yyyy.mm.dd")
685 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
686 /* LOCVAL(LOCALE_STIMEFORMAT) */
687 LOCVAL(LOCALE_IDATE,"1")
688 /* LOCVAL(LOCALE_ILDATE) */
689 LOCVAL(LOCALE_ITIME,"1")
690 /* LOCVAL(LOCALE_ITIMEMARKPOSN) */
691 /* LOCVAL(LOCALE_ICENTURY) */
692 LOCVAL(LOCALE_ITLZERO,"1")
693 /* LOCVAL(LOCALE_IDAYLZERO) */
694 /* LOCVAL(LOCALE_IMONLZERO) */
695 /* LOCVAL(LOCALE_S1159) */
696 /* LOCVAL(LOCALE_S2359) */
697 /* LOCVAL(LOCALE_ICALENDARTYPE) */
698 /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */
699 /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
700 /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
701 LOCVAL(LOCALE_SDAYNAME1,"lundo")
702 LOCVAL(LOCALE_SDAYNAME2,"mardo")
703 LOCVAL(LOCALE_SDAYNAME3,"merkredo")
704 LOCVAL(LOCALE_SDAYNAME4,"¼aýdo")
705 LOCVAL(LOCALE_SDAYNAME5,"vendredo")
706 LOCVAL(LOCALE_SDAYNAME6,"sabato")
707 LOCVAL(LOCALE_SDAYNAME7,"dimanæo")
708 LOCVAL(LOCALE_SABBREVDAYNAME1,"lu")
709 LOCVAL(LOCALE_SABBREVDAYNAME2,"ma")
710 LOCVAL(LOCALE_SABBREVDAYNAME3,"me")
711 LOCVAL(LOCALE_SABBREVDAYNAME4,"¼a")
712 LOCVAL(LOCALE_SABBREVDAYNAME5,"ve")
713 LOCVAL(LOCALE_SABBREVDAYNAME6,"sa")
714 LOCVAL(LOCALE_SABBREVDAYNAME7,"di")
715 LOCVAL(LOCALE_SMONTHNAME1,"januaro")
716 LOCVAL(LOCALE_SMONTHNAME2,"februaro")
717 LOCVAL(LOCALE_SMONTHNAME3,"marto")
718 LOCVAL(LOCALE_SMONTHNAME4,"aprilo")
719 LOCVAL(LOCALE_SMONTHNAME5,"majo")
720 LOCVAL(LOCALE_SMONTHNAME6,"junio")
721 LOCVAL(LOCALE_SMONTHNAME7,"julio")
722 LOCVAL(LOCALE_SMONTHNAME8,"aýgusto")
723 LOCVAL(LOCALE_SMONTHNAME9,"septembro")
724 LOCVAL(LOCALE_SMONTHNAME10,"oktobro")
725 LOCVAL(LOCALE_SMONTHNAME11,"novembro")
726 LOCVAL(LOCALE_SMONTHNAME12,"decembro")
727 LOCVAL(LOCALE_SMONTHNAME13,"")
728 LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan")
729 LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb")
730 LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar")
731 LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr")
732 LOCVAL(LOCALE_SABBREVMONTHNAME5,"maj")
733 LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun")
734 LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul")
735 LOCVAL(LOCALE_SABBREVMONTHNAME8,"aýg")
736 LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep")
737 LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt")
738 LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
739 LOCVAL(LOCALE_SABBREVMONTHNAME12,"dec")
740 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
741 /* LOCVAL(LOCALE_SPOSITIVESIGN) */
742 /* LOCVAL(LOCALE_SNEGATIVESIGN) */
743 /* LOCVAL(LOCALE_IPOSSIGNPOSN) */
744 /* LOCVAL(LOCALE_INEGSIGNPOSN) */
745 /* LOCVAL(LOCALE_IPOSSYMPRECEDES) */
746 /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */
747 /* LOCVAL(LOCALE_INEGSYMPRECEDES) */
748 /* LOCVAL(LOCALE_INEGSEPBYSPACE) */
749         default: found=0;break;
750         }
751     break;  /* LANG(Eo) */
752
753     case LANG_Fi:
754         switch (LCType) {
755 LOCVAL(LOCALE_ILANGUAGE,"11")
756 LOCVAL(LOCALE_SLANGUAGE,"Suomi")
757 LOCVAL(LOCALE_SENGLANGUAGE,"Finnish")
758 LOCVAL(LOCALE_SABBREVLANGNAME,"fin")
759 LOCVAL(LOCALE_SNATIVELANGNAME,"suomi")
760 LOCVAL(LOCALE_ICOUNTRY,"49")
761 LOCVAL(LOCALE_SCOUNTRY,"Suomi")
762 LOCVAL(LOCALE_SENGCOUNTRY,"Finland")
763 LOCVAL(LOCALE_SABBREVCTRYNAME,"Fin")
764 LOCVAL(LOCALE_SNATIVECTRYNAME,"Suomi")
765 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"11")
766 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"358")
767 /* 
768 LOCVAL(LOCALE_IDEFAULTCODEPAGE)
769 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
770 */
771 LOCVAL(LOCALE_SLIST,";")
772 LOCVAL(LOCALE_IMEASURE,"0")
773 LOCVAL(LOCALE_SDECIMAL,",")
774 LOCVAL(LOCALE_STHOUSAND,".")
775 /*
776 LOCVAL(LOCALE_SGROUPING)
777 */
778 LOCVAL(LOCALE_IDIGITS,"2")
779 LOCVAL(LOCALE_ILZERO,"1")
780 /*
781 LOCVAL(LOCALE_INEGNUMBER)
782 Is this "0123456789" ??
783 LOCVAL(LOCALE_SNATIVEDIGITS)
784 */
785 LOCVAL(LOCALE_SCURRENCY,"mk")
786 /*
787 LOCVAL(LOCALE_SINTLSYMBOL)
788 LOCVAL(LOCALE_SMONDECIMALSEP)
789 LOCVAL(LOCALE_SMONTHOUSANDSEP)
790 LOCVAL(LOCALE_SMONGROUPING)
791 */
792 LOCVAL(LOCALE_ICURRDIGITS,"2")
793 /*
794 LOCVAL(LOCALE_IINTLCURRDIGITS)
795 */
796 LOCVAL(LOCALE_ICURRENCY,"3")
797 LOCVAL(LOCALE_INEGCURR,"8")
798 LOCVAL(LOCALE_SDATE,".")
799 LOCVAL(LOCALE_STIME,":")
800 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
801 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
802 /*
803 LOCVAL(LOCALE_STIMEFORMAT)
804 */
805 LOCVAL(LOCALE_IDATE,"1")
806 /*
807 LOCVAL(LOCALE_ILDATE)
808 */
809 LOCVAL(LOCALE_ITIME,"1")
810 /*
811 LOCVAL(LOCALE_ITIMEMARKPOSN)
812 LOCVAL(LOCALE_ICENTURY)
813 */
814 LOCVAL(LOCALE_ITLZERO,"1")
815 /*
816 LOCVAL(LOCALE_IDAYLZERO)
817 LOCVAL(LOCALE_IMONLZERO)
818 */
819 LOCVAL(LOCALE_S1159, "AM")
820 LOCVAL(LOCALE_S2359, "PM")
821 /*
822 LOCVAL(LOCALE_ICALENDARTYPE)
823 LOCVAL(LOCALE_IOPTIONALCALENDAR)
824 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
825 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
826 */
827 LOCVAL(LOCALE_SDAYNAME1,"maanantai")
828 LOCVAL(LOCALE_SDAYNAME2,"tiistai")
829 LOCVAL(LOCALE_SDAYNAME3,"keskiviikko")
830 LOCVAL(LOCALE_SDAYNAME4,"torstai")
831 LOCVAL(LOCALE_SDAYNAME5,"perjantai")
832 LOCVAL(LOCALE_SDAYNAME6,"lauantai")
833 LOCVAL(LOCALE_SDAYNAME7,"sunnuntai")
834 LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma")
835 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti")
836 LOCVAL(LOCALE_SABBREVDAYNAME3,"Ke")
837 LOCVAL(LOCALE_SABBREVDAYNAME4,"To")
838 LOCVAL(LOCALE_SABBREVDAYNAME5,"Pe")
839 LOCVAL(LOCALE_SABBREVDAYNAME6,"La")
840 LOCVAL(LOCALE_SABBREVDAYNAME7,"Su")
841 LOCVAL(LOCALE_SMONTHNAME1,"tammikuu")
842 LOCVAL(LOCALE_SMONTHNAME2,"helmikuu")
843 LOCVAL(LOCALE_SMONTHNAME3,"maaliskuu")
844 LOCVAL(LOCALE_SMONTHNAME4,"huhtikuu")
845 LOCVAL(LOCALE_SMONTHNAME5,"toukokuu")
846 LOCVAL(LOCALE_SMONTHNAME6,"kesäkuu")
847 LOCVAL(LOCALE_SMONTHNAME7,"heinäkuu")
848 LOCVAL(LOCALE_SMONTHNAME8,"elokuu")
849 LOCVAL(LOCALE_SMONTHNAME9,"syyskuu")
850 LOCVAL(LOCALE_SMONTHNAME10,"lokakuu")
851 LOCVAL(LOCALE_SMONTHNAME11,"marraskuu")
852 LOCVAL(LOCALE_SMONTHNAME12,"joulukuu")
853 LOCVAL(LOCALE_SMONTHNAME13,"")
854 LOCVAL(LOCALE_SABBREVMONTHNAME1,"tammi")
855 LOCVAL(LOCALE_SABBREVMONTHNAME2,"helmi")
856 LOCVAL(LOCALE_SABBREVMONTHNAME3,"maalis")
857 LOCVAL(LOCALE_SABBREVMONTHNAME4,"huhti")
858 LOCVAL(LOCALE_SABBREVMONTHNAME5,"touko")
859 LOCVAL(LOCALE_SABBREVMONTHNAME6,"kesä")
860 LOCVAL(LOCALE_SABBREVMONTHNAME7,"heinä")
861 LOCVAL(LOCALE_SABBREVMONTHNAME8,"elo")
862 LOCVAL(LOCALE_SABBREVMONTHNAME9,"syys")
863 LOCVAL(LOCALE_SABBREVMONTHNAME10,"loka")
864 LOCVAL(LOCALE_SABBREVMONTHNAME11,"marras")
865 LOCVAL(LOCALE_SABBREVMONTHNAME12,"joulu")
866 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
867 LOCVAL(LOCALE_SPOSITIVESIGN, "")
868 LOCVAL(LOCALE_SNEGATIVESIGN, "-")
869 /*
870 LOCVAL(LOCALE_IPOSSIGNPOSN)
871 LOCVAL(LOCALE_INEGSIGNPOSN)
872 LOCVAL(LOCALE_IPOSSYMPRECEDES)
873 LOCVAL(LOCALE_IPOSSEPBYSPACE)
874 LOCVAL(LOCALE_INEGSYMPRECEDES)
875 LOCVAL(LOCALE_INEGSEPBYSPACE)
876 */
877         default: found=0;break;
878         }
879     break;  /* LANG(Fi) */
880
881     case LANG_It:
882         switch (LCType) {
883 LOCVAL(LOCALE_ILANGUAGE,"9")
884 LOCVAL(LOCALE_SLANGUAGE,"Italiano")
885 LOCVAL(LOCALE_SENGLANGUAGE,"Italian")
886 LOCVAL(LOCALE_SABBREVLANGNAME,"ita")
887 LOCVAL(LOCALE_SNATIVELANGNAME,"Italiano")
888 LOCVAL(LOCALE_ICOUNTRY,"39")
889 LOCVAL(LOCALE_SCOUNTRY,"Italia")
890 LOCVAL(LOCALE_SENGCOUNTRY,"Italy")
891 LOCVAL(LOCALE_SABBREVCTRYNAME,"It")
892 LOCVAL(LOCALE_SNATIVECTRYNAME,"Italia")
893 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
894 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"39")
895 /* Dunno
896 LOCVAL(LOCALE_IDEFAULTCODEPAGE)
897 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
898 */
899 LOCVAL(LOCALE_SLIST,";")
900 LOCVAL(LOCALE_IMEASURE,"0")
901 LOCVAL(LOCALE_SDECIMAL,",")
902 LOCVAL(LOCALE_STHOUSAND,".")
903 /*
904 LOCVAL(LOCALE_SGROUPING)
905 */
906 LOCVAL(LOCALE_IDIGITS,"2")
907 LOCVAL(LOCALE_ILZERO,"1")
908 /*
909 LOCVAL(LOCALE_INEGNUMBER)
910 Is this "0123456789" ??
911 LOCVAL(LOCALE_SNATIVEDIGITS)
912 */
913 LOCVAL(LOCALE_SCURRENCY,"Lit.")
914 /*
915 LOCVAL(LOCALE_SINTLSYMBOL)
916 LOCVAL(LOCALE_SMONDECIMALSEP)
917 LOCVAL(LOCALE_SMONTHOUSANDSEP)
918 LOCVAL(LOCALE_SMONGROUPING)
919 */
920 LOCVAL(LOCALE_ICURRDIGITS,"2")
921 /*
922 LOCVAL(LOCALE_IINTLCURRDIGITS)
923 */
924 LOCVAL(LOCALE_ICURRENCY,"3")
925 LOCVAL(LOCALE_INEGCURR,"8")
926 LOCVAL(LOCALE_SDATE,".")
927 LOCVAL(LOCALE_STIME,":")
928 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
929 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
930 /*
931 LOCVAL(LOCALE_STIMEFORMAT)
932 */
933 LOCVAL(LOCALE_IDATE,"1")
934 /*
935 LOCVAL(LOCALE_ILDATE)
936 */
937 LOCVAL(LOCALE_ITIME,"1")
938 /*
939 LOCVAL(LOCALE_ITIMEMARKPOSN)
940 LOCVAL(LOCALE_ICENTURY)
941 */
942 LOCVAL(LOCALE_ITLZERO,"1")
943 /*
944 LOCVAL(LOCALE_IDAYLZERO)
945 LOCVAL(LOCALE_IMONLZERO)
946 LOCVAL(LOCALE_S1159)
947 LOCVAL(LOCALE_S2359)
948 LOCVAL(LOCALE_ICALENDARTYPE)
949 LOCVAL(LOCALE_IOPTIONALCALENDAR)
950 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
951 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
952 */
953 LOCVAL(LOCALE_SDAYNAME1,"Lunedi'")
954 LOCVAL(LOCALE_SDAYNAME2,"Martedi'")
955 LOCVAL(LOCALE_SDAYNAME3,"Mercoledi'")
956 LOCVAL(LOCALE_SDAYNAME4,"Giovedi'")
957 LOCVAL(LOCALE_SDAYNAME5,"Venerdi'")
958 LOCVAL(LOCALE_SDAYNAME6,"Sabato")
959 LOCVAL(LOCALE_SDAYNAME7,"Domenica")
960 LOCVAL(LOCALE_SABBREVDAYNAME1,"Lu")
961 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ma")
962 LOCVAL(LOCALE_SABBREVDAYNAME3,"Me")
963 LOCVAL(LOCALE_SABBREVDAYNAME4,"Gi")
964 LOCVAL(LOCALE_SABBREVDAYNAME5,"Ve")
965 LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa")
966 LOCVAL(LOCALE_SABBREVDAYNAME7,"Do")
967 LOCVAL(LOCALE_SMONTHNAME1,"Gennaio")
968 LOCVAL(LOCALE_SMONTHNAME2,"Febbraio")
969 LOCVAL(LOCALE_SMONTHNAME3,"Marzo")
970 LOCVAL(LOCALE_SMONTHNAME4,"Aprile")
971 LOCVAL(LOCALE_SMONTHNAME5,"Maggio")
972 LOCVAL(LOCALE_SMONTHNAME6,"Giugno")
973 LOCVAL(LOCALE_SMONTHNAME7,"Luglio")
974 LOCVAL(LOCALE_SMONTHNAME8,"Agosto")
975 LOCVAL(LOCALE_SMONTHNAME9,"Settembre")
976 LOCVAL(LOCALE_SMONTHNAME10,"Ottobre")
977 LOCVAL(LOCALE_SMONTHNAME11,"Novembre")
978 LOCVAL(LOCALE_SMONTHNAME12,"Dicembre")
979 LOCVAL(LOCALE_SMONTHNAME13,"")
980 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Gen")
981 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
982 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar")
983 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
984 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mag")
985 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Giu")
986 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Lug")
987 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Ago")
988 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Set")
989 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Ott")
990 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
991 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dic")
992 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
993 /*
994 LOCVAL(LOCALE_SPOSITIVESIGN)
995 LOCVAL(LOCALE_SNEGATIVESIGN)
996 LOCVAL(LOCALE_IPOSSIGNPOSN)
997 LOCVAL(LOCALE_INEGSIGNPOSN)
998 LOCVAL(LOCALE_IPOSSYMPRECEDES)
999 LOCVAL(LOCALE_IPOSSEPBYSPACE)
1000 LOCVAL(LOCALE_INEGSYMPRECEDES)
1001 LOCVAL(LOCALE_INEGSEPBYSPACE)
1002 */
1003         default: found=0;break;
1004         }
1005     break;  /* LANG(It) */
1006
1007     case 0x0409:
1008         switch (LCType) {
1009 LOCVAL(LOCALE_ILANGUAGE, "0409")
1010 LOCVAL(LOCALE_SLANGUAGE, "English (United States)")
1011 LOCVAL(LOCALE_SENGLANGUAGE, "English")
1012 LOCVAL(LOCALE_SABBREVLANGNAME, "ENU")
1013 LOCVAL(LOCALE_SNATIVELANGNAME, "English")
1014 LOCVAL(LOCALE_ICOUNTRY, "1")
1015 LOCVAL(LOCALE_SCOUNTRY, "United States")
1016 LOCVAL(LOCALE_SENGCOUNTRY, "United States")
1017 LOCVAL(LOCALE_SABBREVCTRYNAME, "USA")
1018 LOCVAL(LOCALE_SNATIVECTRYNAME, "United States")
1019 LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0409")
1020 LOCVAL(LOCALE_IDEFAULTCOUNTRY, "1")
1021 LOCVAL(LOCALE_IDEFAULTCODEPAGE, "437")
1022 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252")
1023 LOCVAL(LOCALE_SLIST, ",")
1024 LOCVAL(LOCALE_IMEASURE, "1")
1025 LOCVAL(LOCALE_SDECIMAL, ".")
1026 LOCVAL(LOCALE_STHOUSAND, ",")
1027 LOCVAL(LOCALE_SGROUPING, "3;0")
1028 LOCVAL(LOCALE_IDIGITS, "2")
1029 LOCVAL(LOCALE_ILZERO, "1")
1030 LOCVAL(LOCALE_INEGNUMBER, "1")
1031 LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789")
1032 LOCVAL(LOCALE_SCURRENCY, "$")
1033 LOCVAL(LOCALE_SINTLSYMBOL, "USD")
1034 LOCVAL(LOCALE_SMONDECIMALSEP, ".")
1035 LOCVAL(LOCALE_SMONTHOUSANDSEP, ",")
1036 LOCVAL(LOCALE_SMONGROUPING, "3;0")
1037 LOCVAL(LOCALE_ICURRDIGITS, "2")
1038 LOCVAL(LOCALE_IINTLCURRDIGITS, "2")
1039 LOCVAL(LOCALE_ICURRENCY, "0")
1040 LOCVAL(LOCALE_INEGCURR, "0")
1041 LOCVAL(LOCALE_SDATE, "/")
1042 LOCVAL(LOCALE_STIME, ":")
1043 LOCVAL(LOCALE_SSHORTDATE, "M/d/yy")
1044 LOCVAL(LOCALE_SLONGDATE, "dddd, MMMM dd, yyyy")
1045 LOCVAL(LOCALE_STIMEFORMAT, "h:mm:ss tt")
1046 LOCVAL(LOCALE_IDATE, "0")
1047 LOCVAL(LOCALE_ILDATE, "0")
1048 LOCVAL(LOCALE_ITIME, "0")
1049 LOCVAL(LOCALE_ITIMEMARKPOSN, "0")
1050 LOCVAL(LOCALE_ICENTURY, "0")
1051 LOCVAL(LOCALE_ITLZERO, "0")
1052 LOCVAL(LOCALE_IDAYLZERO, "0")
1053 LOCVAL(LOCALE_IMONLZERO, "0")
1054 LOCVAL(LOCALE_S1159, "AM")
1055 LOCVAL(LOCALE_S2359, "PM")
1056 LOCVAL(LOCALE_ICALENDARTYPE, "1")
1057 LOCVAL(LOCALE_IOPTIONALCALENDAR, "0")
1058 LOCVAL(LOCALE_IFIRSTDAYOFWEEK, "6")
1059 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR, "0")
1060 LOCVAL(LOCALE_SDAYNAME1, "Monday")
1061 LOCVAL(LOCALE_SDAYNAME2, "Tuesday")
1062 LOCVAL(LOCALE_SDAYNAME3, "Wednesday")
1063 LOCVAL(LOCALE_SDAYNAME4, "Thursday")
1064 LOCVAL(LOCALE_SDAYNAME5, "Friday")
1065 LOCVAL(LOCALE_SDAYNAME6, "Saturday")
1066 LOCVAL(LOCALE_SDAYNAME7, "Sunday")
1067 LOCVAL(LOCALE_SABBREVDAYNAME1, "Mon")
1068 LOCVAL(LOCALE_SABBREVDAYNAME2, "Tue")
1069 LOCVAL(LOCALE_SABBREVDAYNAME3, "Wed")
1070 LOCVAL(LOCALE_SABBREVDAYNAME4, "Thu")
1071 LOCVAL(LOCALE_SABBREVDAYNAME5, "Fri")
1072 LOCVAL(LOCALE_SABBREVDAYNAME6, "Sat")
1073 LOCVAL(LOCALE_SABBREVDAYNAME7, "Sun")
1074 LOCVAL(LOCALE_SMONTHNAME1, "January")
1075 LOCVAL(LOCALE_SMONTHNAME2, "February")
1076 LOCVAL(LOCALE_SMONTHNAME3, "March")
1077 LOCVAL(LOCALE_SMONTHNAME4, "April")
1078 LOCVAL(LOCALE_SMONTHNAME5, "May")
1079 LOCVAL(LOCALE_SMONTHNAME6, "June")
1080 LOCVAL(LOCALE_SMONTHNAME7, "July")
1081 LOCVAL(LOCALE_SMONTHNAME8, "August")
1082 LOCVAL(LOCALE_SMONTHNAME9, "September")
1083 LOCVAL(LOCALE_SMONTHNAME10, "October")
1084 LOCVAL(LOCALE_SMONTHNAME11, "November")
1085 LOCVAL(LOCALE_SMONTHNAME12, "December")
1086 LOCVAL(LOCALE_SMONTHNAME13, "")
1087 LOCVAL(LOCALE_SABBREVMONTHNAME1, "Jan")
1088 LOCVAL(LOCALE_SABBREVMONTHNAME2, "Feb")
1089 LOCVAL(LOCALE_SABBREVMONTHNAME3, "Mar")
1090 LOCVAL(LOCALE_SABBREVMONTHNAME4, "Apr")
1091 LOCVAL(LOCALE_SABBREVMONTHNAME5, "May")
1092 LOCVAL(LOCALE_SABBREVMONTHNAME6, "Jun")
1093 LOCVAL(LOCALE_SABBREVMONTHNAME7, "Jul")
1094 LOCVAL(LOCALE_SABBREVMONTHNAME8, "Aug")
1095 LOCVAL(LOCALE_SABBREVMONTHNAME9, "Sep")
1096 LOCVAL(LOCALE_SABBREVMONTHNAME10, "Oct")
1097 LOCVAL(LOCALE_SABBREVMONTHNAME11, "Nov")
1098 LOCVAL(LOCALE_SABBREVMONTHNAME12, "Dec")
1099 LOCVAL(LOCALE_SABBREVMONTHNAME13, "")
1100 LOCVAL(LOCALE_SPOSITIVESIGN, "")
1101 LOCVAL(LOCALE_SNEGATIVESIGN, "-")
1102 LOCVAL(LOCALE_IPOSSIGNPOSN, "3")
1103 LOCVAL(LOCALE_INEGSIGNPOSN, "0")
1104 LOCVAL(LOCALE_IPOSSYMPRECEDES, "1")
1105 LOCVAL(LOCALE_IPOSSEPBYSPACE, "0")
1106 LOCVAL(LOCALE_INEGSYMPRECEDES, "1")
1107 LOCVAL(LOCALE_INEGSEPBYSPACE, "0")
1108         default: found=0;break;
1109         }
1110     break; /* LANG(0x0409) (U.S. English) */
1111
1112     case 0x0809:
1113         switch (LCType) {
1114 LOCVAL(LOCALE_ILANGUAGE, "0809")
1115 LOCVAL(LOCALE_SLANGUAGE, "English (United Kingdom)")
1116 LOCVAL(LOCALE_SENGLANGUAGE, "English")
1117 LOCVAL(LOCALE_SABBREVLANGNAME, "ENG")
1118 LOCVAL(LOCALE_SNATIVELANGNAME, "English")
1119 LOCVAL(LOCALE_ICOUNTRY, "44")
1120 LOCVAL(LOCALE_SCOUNTRY, "United Kingdom")
1121 LOCVAL(LOCALE_SENGCOUNTRY, "United Kingdom")
1122 LOCVAL(LOCALE_SABBREVCTRYNAME, "GBR")
1123 LOCVAL(LOCALE_SNATIVECTRYNAME, "United Kingdom")
1124 LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0809")
1125 LOCVAL(LOCALE_IDEFAULTCOUNTRY, "44")
1126 LOCVAL(LOCALE_IDEFAULTCODEPAGE, "850")
1127 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252")
1128 LOCVAL(LOCALE_SLIST, ",")
1129 LOCVAL(LOCALE_IMEASURE, "0")
1130 LOCVAL(LOCALE_SDECIMAL, ".")
1131 LOCVAL(LOCALE_STHOUSAND, ",")
1132 LOCVAL(LOCALE_SGROUPING, "3;0")
1133 LOCVAL(LOCALE_IDIGITS, "2")
1134 LOCVAL(LOCALE_ILZERO, "1")
1135 LOCVAL(LOCALE_INEGNUMBER, "1")
1136 LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789")
1137 LOCVAL(LOCALE_SCURRENCY, "£")
1138 LOCVAL(LOCALE_SINTLSYMBOL, "GBP")
1139 LOCVAL(LOCALE_SMONDECIMALSEP, ".")
1140 LOCVAL(LOCALE_SMONTHOUSANDSEP, ",")
1141 LOCVAL(LOCALE_SMONGROUPING, "3;0")
1142 LOCVAL(LOCALE_ICURRDIGITS, "2")
1143 LOCVAL(LOCALE_IINTLCURRDIGITS, "2")
1144 LOCVAL(LOCALE_ICURRENCY, "0")
1145 LOCVAL(LOCALE_INEGCURR, "1")
1146 LOCVAL(LOCALE_SDATE, "/")
1147 LOCVAL(LOCALE_STIME, ":")
1148 LOCVAL(LOCALE_SSHORTDATE, "dd/MM/yy")
1149 LOCVAL(LOCALE_SLONGDATE, "dd MMMM yyyy")
1150 LOCVAL(LOCALE_STIMEFORMAT, "HH:mm:ss")
1151 LOCVAL(LOCALE_IDATE, "1")
1152 LOCVAL(LOCALE_ILDATE, "1")
1153 LOCVAL(LOCALE_ITIME, "1")
1154 LOCVAL(LOCALE_ITIMEMARKPOSN, "0")
1155 LOCVAL(LOCALE_ICENTURY, "0")
1156 LOCVAL(LOCALE_ITLZERO, "1")
1157 LOCVAL(LOCALE_IDAYLZERO, "1")
1158 LOCVAL(LOCALE_IMONLZERO, "1")
1159 LOCVAL(LOCALE_S1159, "AM")
1160 LOCVAL(LOCALE_S2359, "PM")
1161 LOCVAL(LOCALE_ICALENDARTYPE, "1")
1162 LOCVAL(LOCALE_IOPTIONALCALENDAR, "0")
1163 LOCVAL(LOCALE_IFIRSTDAYOFWEEK, "0")
1164 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR, "0")
1165 LOCVAL(LOCALE_SDAYNAME1, "Monday")
1166 LOCVAL(LOCALE_SDAYNAME2, "Tuesday")
1167 LOCVAL(LOCALE_SDAYNAME3, "Wednesday")
1168 LOCVAL(LOCALE_SDAYNAME4, "Thursday")
1169 LOCVAL(LOCALE_SDAYNAME5, "Friday")
1170 LOCVAL(LOCALE_SDAYNAME6, "Saturday")
1171 LOCVAL(LOCALE_SDAYNAME7, "Sunday")
1172 LOCVAL(LOCALE_SABBREVDAYNAME1, "Mon")
1173 LOCVAL(LOCALE_SABBREVDAYNAME2, "Tue")
1174 LOCVAL(LOCALE_SABBREVDAYNAME3, "Wed")
1175 LOCVAL(LOCALE_SABBREVDAYNAME4, "Thu")
1176 LOCVAL(LOCALE_SABBREVDAYNAME5, "Fri")
1177 LOCVAL(LOCALE_SABBREVDAYNAME6, "Sat")
1178 LOCVAL(LOCALE_SABBREVDAYNAME7, "Sun")
1179 LOCVAL(LOCALE_SMONTHNAME1, "January")
1180 LOCVAL(LOCALE_SMONTHNAME2, "February")
1181 LOCVAL(LOCALE_SMONTHNAME3, "March")
1182 LOCVAL(LOCALE_SMONTHNAME4, "April")
1183 LOCVAL(LOCALE_SMONTHNAME5, "May")
1184 LOCVAL(LOCALE_SMONTHNAME6, "June")
1185 LOCVAL(LOCALE_SMONTHNAME7, "July")
1186 LOCVAL(LOCALE_SMONTHNAME8, "August")
1187 LOCVAL(LOCALE_SMONTHNAME9, "September")
1188 LOCVAL(LOCALE_SMONTHNAME10, "October")
1189 LOCVAL(LOCALE_SMONTHNAME11, "November")
1190 LOCVAL(LOCALE_SMONTHNAME12, "December")
1191 LOCVAL(LOCALE_SMONTHNAME13, "")
1192 LOCVAL(LOCALE_SABBREVMONTHNAME1, "Jan")
1193 LOCVAL(LOCALE_SABBREVMONTHNAME2, "Feb")
1194 LOCVAL(LOCALE_SABBREVMONTHNAME3, "Mar")
1195 LOCVAL(LOCALE_SABBREVMONTHNAME4, "Apr")
1196 LOCVAL(LOCALE_SABBREVMONTHNAME5, "May")
1197 LOCVAL(LOCALE_SABBREVMONTHNAME6, "Jun")
1198 LOCVAL(LOCALE_SABBREVMONTHNAME7, "Jul")
1199 LOCVAL(LOCALE_SABBREVMONTHNAME8, "Aug")
1200 LOCVAL(LOCALE_SABBREVMONTHNAME9, "Sep")
1201 LOCVAL(LOCALE_SABBREVMONTHNAME10, "Oct")
1202 LOCVAL(LOCALE_SABBREVMONTHNAME11, "Nov")
1203 LOCVAL(LOCALE_SABBREVMONTHNAME12, "Dec")
1204 LOCVAL(LOCALE_SABBREVMONTHNAME13, "")
1205 LOCVAL(LOCALE_SPOSITIVESIGN, "")
1206 LOCVAL(LOCALE_SNEGATIVESIGN, "-")
1207 LOCVAL(LOCALE_IPOSSIGNPOSN, "3")
1208 LOCVAL(LOCALE_INEGSIGNPOSN, "3")
1209 LOCVAL(LOCALE_IPOSSYMPRECEDES, "1")
1210 LOCVAL(LOCALE_IPOSSEPBYSPACE, "0")
1211 LOCVAL(LOCALE_INEGSYMPRECEDES, "1")
1212 LOCVAL(LOCALE_INEGSEPBYSPACE, "0")
1213         default: found=0;break;
1214         }
1215     break; /* LANG(0x0809) (U.K. English) */
1216
1217     case LANG_Ko: /* string using codepage 949 */
1218         switch (LCType) {
1219 LOCVAL(LOCALE_ILANGUAGE,"18")
1220 LOCVAL(LOCALE_SLANGUAGE,"\307\321\261\271\276\356")
1221 LOCVAL(LOCALE_SENGLANGUAGE,"Korean")
1222 LOCVAL(LOCALE_SABBREVLANGNAME,"KOR")
1223 LOCVAL(LOCALE_SNATIVELANGNAME,"\307\321\261\271\276\356")
1224 LOCVAL(LOCALE_ICOUNTRY,"82")
1225 LOCVAL(LOCALE_SCOUNTRY,"\264\353\307\321\271\316\261\271")
1226 LOCVAL(LOCALE_SENGCOUNTRY,"Korea (South)")
1227 LOCVAL(LOCALE_SABBREVCTRYNAME,"KOR")
1228 LOCVAL(LOCALE_SNATIVECTRYNAME,"\264\353\307\321\271\316\261\271")
1229 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"18")
1230 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"82")
1231 LOCVAL(LOCALE_IDEFAULTCODEPAGE,"949")
1232 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE,"949")
1233 LOCVAL(LOCALE_SLIST,",")
1234 LOCVAL(LOCALE_IMEASURE,"0")
1235 LOCVAL(LOCALE_SDECIMAL,".")
1236 LOCVAL(LOCALE_STHOUSAND,",")
1237 LOCVAL(LOCALE_SGROUPING,"3;0")
1238 LOCVAL(LOCALE_IDIGITS,"2")
1239 LOCVAL(LOCALE_ILZERO,"0")
1240 LOCVAL(LOCALE_INEGNUMBER,"1")
1241 LOCVAL(LOCALE_SNATIVEDIGITS,"0123456789")
1242 LOCVAL(LOCALE_SCURRENCY,"\\")
1243 LOCVAL(LOCALE_SINTLSYMBOL,"Won")
1244 LOCVAL(LOCALE_SMONDECIMALSEP,".")
1245 LOCVAL(LOCALE_SMONTHOUSANDSEP,",")
1246 LOCVAL(LOCALE_SMONGROUPING,"3;0")
1247 LOCVAL(LOCALE_ICURRDIGITS,"2")
1248 LOCVAL(LOCALE_IINTLCURRDIGITS,"2")
1249 LOCVAL(LOCALE_ICURRENCY,"3")
1250 LOCVAL(LOCALE_INEGCURR,"8")
1251 LOCVAL(LOCALE_SDATE,"/")
1252 LOCVAL(LOCALE_STIME,":")
1253 LOCVAL(LOCALE_SSHORTDATE,"yyyy/MM/dd")
1254 LOCVAL(LOCALE_SLONGDATE,"yyyy/MM/dd")
1255 LOCVAL(LOCALE_STIMEFORMAT,"h:mm:ss tt")
1256 LOCVAL(LOCALE_IDATE,"1")
1257 LOCVAL(LOCALE_ILDATE,"1")
1258 LOCVAL(LOCALE_ITIME,"1")
1259 LOCVAL(LOCALE_ITIMEMARKPOSN,"0")
1260 LOCVAL(LOCALE_ICENTURY,"0")
1261 LOCVAL(LOCALE_ITLZERO,"0")
1262 LOCVAL(LOCALE_IDAYLZERO,"0")
1263 LOCVAL(LOCALE_IMONLZERO,"0")
1264 LOCVAL(LOCALE_S1159,"\277\300\300\374")
1265 LOCVAL(LOCALE_S2359,"\277\300\310\304")
1266 LOCVAL(LOCALE_ICALENDARTYPE,"1")
1267 /* Korean Tangun Era calendar */
1268 LOCVAL(LOCALE_IOPTIONALCALENDAR,"5")
1269 LOCVAL(LOCALE_IFIRSTDAYOFWEEK,"6")
1270 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR,"0")
1271 LOCVAL(LOCALE_SDAYNAME1,"\277\371\277\344\300\317")
1272 LOCVAL(LOCALE_SDAYNAME2,"\310\255\277\344\300\317")
1273 LOCVAL(LOCALE_SDAYNAME3,"\274\366\277\344\300\317")
1274 LOCVAL(LOCALE_SDAYNAME4,"\270\361\277\344\300\317")
1275 LOCVAL(LOCALE_SDAYNAME5,"\261\335\277\344\300\317")
1276 LOCVAL(LOCALE_SDAYNAME6,"\305\344\277\344\300\317")
1277 LOCVAL(LOCALE_SDAYNAME7,"\300\317\277\344\300\317")
1278 LOCVAL(LOCALE_SABBREVDAYNAME1,"\277\371")
1279 LOCVAL(LOCALE_SABBREVDAYNAME2,"\310\255")
1280 LOCVAL(LOCALE_SABBREVDAYNAME3,"\274\366")
1281 LOCVAL(LOCALE_SABBREVDAYNAME4,"\270\361")
1282 LOCVAL(LOCALE_SABBREVDAYNAME5,"\261\335")
1283 LOCVAL(LOCALE_SABBREVDAYNAME6,"\305\344")
1284 LOCVAL(LOCALE_SABBREVDAYNAME7,"\300\317")
1285 LOCVAL(LOCALE_SMONTHNAME1,"1\277\371")
1286 LOCVAL(LOCALE_SMONTHNAME2,"2\277\371")
1287 LOCVAL(LOCALE_SMONTHNAME3,"3\277\371")
1288 LOCVAL(LOCALE_SMONTHNAME4,"4\277\371")
1289 LOCVAL(LOCALE_SMONTHNAME5,"5\277\371")
1290 LOCVAL(LOCALE_SMONTHNAME6,"6\277\371")
1291 LOCVAL(LOCALE_SMONTHNAME7,"7\277\371")
1292 LOCVAL(LOCALE_SMONTHNAME8,"8\277\371")
1293 LOCVAL(LOCALE_SMONTHNAME9,"9\277\371")
1294 LOCVAL(LOCALE_SMONTHNAME10,"10\277\371")
1295 LOCVAL(LOCALE_SMONTHNAME11,"11\277\371")
1296 LOCVAL(LOCALE_SMONTHNAME12,"12\277\371")
1297 LOCVAL(LOCALE_SMONTHNAME13,"")
1298 LOCVAL(LOCALE_SABBREVMONTHNAME1,"1\277\371")
1299 LOCVAL(LOCALE_SABBREVMONTHNAME2,"2\277\371")
1300 LOCVAL(LOCALE_SABBREVMONTHNAME3,"3\277\371")
1301 LOCVAL(LOCALE_SABBREVMONTHNAME4,"4\277\371")
1302 LOCVAL(LOCALE_SABBREVMONTHNAME5,"5\277\371")
1303 LOCVAL(LOCALE_SABBREVMONTHNAME6,"6\277\371")
1304 LOCVAL(LOCALE_SABBREVMONTHNAME7,"7\277\371")
1305 LOCVAL(LOCALE_SABBREVMONTHNAME8,"8\277\371")
1306 LOCVAL(LOCALE_SABBREVMONTHNAME9,"9\277\371")
1307 LOCVAL(LOCALE_SABBREVMONTHNAME10,"10\277\371")
1308 LOCVAL(LOCALE_SABBREVMONTHNAME11,"11\277\371")
1309 LOCVAL(LOCALE_SABBREVMONTHNAME12,"12\277\371")
1310 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
1311 LOCVAL(LOCALE_SPOSITIVESIGN,"")
1312 LOCVAL(LOCALE_SNEGATIVESIGN,"-")
1313 LOCVAL(LOCALE_IPOSSIGNPOSN,"3")
1314 LOCVAL(LOCALE_INEGSIGNPOSN,"0")
1315 LOCVAL(LOCALE_IPOSSYMPRECEDES,"3")
1316 LOCVAL(LOCALE_IPOSSEPBYSPACE,"0")
1317 LOCVAL(LOCALE_INEGSYMPRECEDES,"3")
1318 LOCVAL(LOCALE_INEGSEPBYSPACE,"0")
1319         default: found=0;break;
1320         }
1321     break;  /* LANG(Ko) */
1322
1323     case LANG_Hu:
1324         switch (LCType) {
1325 LOCVAL(LOCALE_ILANGUAGE,"9")
1326 LOCVAL(LOCALE_SLANGUAGE,"Magyar")
1327 LOCVAL(LOCALE_SENGLANGUAGE,"Hungarian")
1328 LOCVAL(LOCALE_SABBREVLANGNAME,"hun")
1329 LOCVAL(LOCALE_SNATIVELANGNAME,"Magyar")
1330 LOCVAL(LOCALE_ICOUNTRY,"36")
1331 LOCVAL(LOCALE_SCOUNTRY,"Magyarország")
1332 LOCVAL(LOCALE_SENGCOUNTRY,"Hungary")
1333 LOCVAL(LOCALE_SABBREVCTRYNAME,"Hu")
1334 LOCVAL(LOCALE_SNATIVECTRYNAME,"Magyarország")
1335 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
1336 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"36")
1337 LOCVAL(LOCALE_IDEFAULTCODEPAGE,"852")
1338 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE,"852")
1339 LOCVAL(LOCALE_SLIST,";")
1340 LOCVAL(LOCALE_IMEASURE,"0")
1341 LOCVAL(LOCALE_SDECIMAL,".")
1342 LOCVAL(LOCALE_STHOUSAND,",")
1343 /*
1344 LOCVAL(LOCALE_SGROUPING)
1345 */
1346 LOCVAL(LOCALE_IDIGITS,"2")
1347 LOCVAL(LOCALE_ILZERO,"1")
1348 /*
1349 LOCVAL(LOCALE_INEGNUMBER)
1350 Is this "0123456789" ??
1351 LOCVAL(LOCALE_SNATIVEDIGITS)
1352 */
1353 LOCVAL(LOCALE_SCURRENCY,"Ft")
1354 /*
1355 LOCVAL(LOCALE_SINTLSYMBOL)
1356 LOCVAL(LOCALE_SMONDECIMALSEP)
1357 LOCVAL(LOCALE_SMONTHOUSANDSEP)
1358 LOCVAL(LOCALE_SMONGROUPING)
1359 */
1360 LOCVAL(LOCALE_ICURRDIGITS,"0")
1361 /*
1362 LOCVAL(LOCALE_IINTLCURRDIGITS)
1363 */
1364 LOCVAL(LOCALE_ICURRENCY,"3")
1365 LOCVAL(LOCALE_INEGCURR,"8")
1366 LOCVAL(LOCALE_SDATE,"/")
1367 LOCVAL(LOCALE_STIME,":")
1368 LOCVAL(LOCALE_SSHORTDATE,"yyyy.MM.dd")
1369 LOCVAL(LOCALE_SLONGDATE,"ddd, yyyy. MMMM d")
1370 /*
1371 LOCVAL(LOCALE_STIMEFORMAT)
1372 */
1373 LOCVAL(LOCALE_IDATE,"1")
1374 /*
1375 LOCVAL(LOCALE_ILDATE)
1376 */
1377 LOCVAL(LOCALE_ITIME,"1")
1378 /*
1379 LOCVAL(LOCALE_ITIMEMARKPOSN)
1380 LOCVAL(LOCALE_ICENTURY)
1381 */
1382 LOCVAL(LOCALE_ITLZERO,"1")
1383 /*
1384 LOCVAL(LOCALE_IDAYLZERO)
1385 LOCVAL(LOCALE_IMONLZERO)
1386 LOCVAL(LOCALE_S1159)
1387 LOCVAL(LOCALE_S2359)
1388 LOCVAL(LOCALE_ICALENDARTYPE)
1389 LOCVAL(LOCALE_IOPTIONALCALENDAR)
1390 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
1391 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
1392 */
1393 LOCVAL(LOCALE_SDAYNAME1,"Hétfõ")
1394 LOCVAL(LOCALE_SDAYNAME2,"Kedd")
1395 LOCVAL(LOCALE_SDAYNAME3,"Szerda")
1396 LOCVAL(LOCALE_SDAYNAME4,"Csütörtök")
1397 LOCVAL(LOCALE_SDAYNAME5,"Péntek")
1398 LOCVAL(LOCALE_SDAYNAME6,"Szombat")
1399 LOCVAL(LOCALE_SDAYNAME7,"Vasárnap")
1400 LOCVAL(LOCALE_SABBREVDAYNAME1,"Hé")
1401 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ke")
1402 LOCVAL(LOCALE_SABBREVDAYNAME3,"Se")
1403 LOCVAL(LOCALE_SABBREVDAYNAME4,"Cs")
1404 LOCVAL(LOCALE_SABBREVDAYNAME5,"Pé")
1405 LOCVAL(LOCALE_SABBREVDAYNAME6,"So")
1406 LOCVAL(LOCALE_SABBREVDAYNAME7,"Va")
1407 LOCVAL(LOCALE_SMONTHNAME1,"Január")
1408 LOCVAL(LOCALE_SMONTHNAME2,"Február")
1409 LOCVAL(LOCALE_SMONTHNAME3,"Március")
1410 LOCVAL(LOCALE_SMONTHNAME4,"Április")
1411 LOCVAL(LOCALE_SMONTHNAME5,"Május")
1412 LOCVAL(LOCALE_SMONTHNAME6,"Június")
1413 LOCVAL(LOCALE_SMONTHNAME7,"Július")
1414 LOCVAL(LOCALE_SMONTHNAME8,"Augusztus")
1415 LOCVAL(LOCALE_SMONTHNAME9,"Szeptember")
1416 LOCVAL(LOCALE_SMONTHNAME10,"Október")
1417 LOCVAL(LOCALE_SMONTHNAME11,"November")
1418 LOCVAL(LOCALE_SMONTHNAME12,"December")
1419 LOCVAL(LOCALE_SMONTHNAME13,"")
1420 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
1421 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
1422 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Már")
1423 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Ápr")
1424 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Máj")
1425 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jún")
1426 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Júl")
1427 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
1428 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sze")
1429 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
1430 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
1431 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dec")
1432 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
1433 /*
1434 LOCVAL(LOCALE_SPOSITIVESIGN)
1435 LOCVAL(LOCALE_SNEGATIVESIGN)
1436 LOCVAL(LOCALE_IPOSSIGNPOSN)
1437 LOCVAL(LOCALE_INEGSIGNPOSN)
1438 LOCVAL(LOCALE_IPOSSYMPRECEDES)
1439 LOCVAL(LOCALE_IPOSSEPBYSPACE)
1440 LOCVAL(LOCALE_INEGSYMPRECEDES)
1441 LOCVAL(LOCALE_INEGSEPBYSPACE)
1442 */
1443         default: found=0;break;
1444         }
1445     break;  /* LANG(En) */
1446
1447     case LANG_Pl:
1448         switch (LCType) {
1449 LOCVAL(LOCALE_ILANGUAGE,"9")
1450 LOCVAL(LOCALE_SLANGUAGE,"Polski")
1451 LOCVAL(LOCALE_SENGLANGUAGE,"Polish")
1452 LOCVAL(LOCALE_SABBREVLANGNAME, "pol")
1453 LOCVAL(LOCALE_SNATIVELANGNAME,"Polski")
1454 LOCVAL(LOCALE_ICOUNTRY,"49")
1455 LOCVAL(LOCALE_SCOUNTRY,"Polska")
1456 LOCVAL(LOCALE_SENGCOUNTRY,"Poland")
1457 LOCVAL(LOCALE_SABBREVCTRYNAME,"Pl")
1458 LOCVAL(LOCALE_SNATIVECTRYNAME,"Polska")
1459 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
1460 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49")
1461 LOCVAL(LOCALE_IDEFAULTCODEPAGE,"1252")
1462 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE,"1252")
1463 LOCVAL(LOCALE_SLIST,";")
1464 LOCVAL(LOCALE_IMEASURE,"0")
1465 LOCVAL(LOCALE_SDECIMAL,",")
1466 LOCVAL(LOCALE_STHOUSAND," ")
1467 /*
1468 LOCVAL(LOCALE_SGROUPING)
1469 */
1470 LOCVAL(LOCALE_IDIGITS,"2")
1471 LOCVAL(LOCALE_ILZERO,"1")
1472 /*
1473 LOCVAL(LOCALE_INEGNUMBER)
1474 Is this "0123456789" ??
1475 LOCVAL(LOCALE_SNATIVEDIGITS)
1476 */
1477 LOCVAL(LOCALE_SCURRENCY,"z\xB3")
1478 /*
1479 LOCVAL(LOCALE_SINTLSYMBOL)
1480 LOCVAL(LOCALE_SMONDECIMALSEP)
1481 LOCVAL(LOCALE_SMONTHOUSANDSEP)
1482 LOCVAL(LOCALE_SMONGROUPING)
1483 */
1484 LOCVAL(LOCALE_ICURRDIGITS,"2")
1485 /*
1486 LOCVAL(LOCALE_IINTLCURRDIGITS)
1487 */
1488 LOCVAL(LOCALE_ICURRENCY,"3")
1489 LOCVAL(LOCALE_INEGCURR,"8")
1490 LOCVAL(LOCALE_SDATE,".")
1491 LOCVAL(LOCALE_STIME,":")
1492 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
1493 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
1494 /*
1495 LOCVAL(LOCALE_STIMEFORMAT)
1496 */
1497 LOCVAL(LOCALE_IDATE,"1")
1498 /*
1499 LOCVAL(LOCALE_ILDATE)
1500 */
1501 LOCVAL(LOCALE_ITIME,"1")
1502 /*
1503 LOCVAL(LOCALE_ITIMEMARKPOSN)
1504 LOCVAL(LOCALE_ICENTURY)
1505 */
1506 LOCVAL(LOCALE_ITLZERO,"1")
1507 /*
1508 LOCVAL(LOCALE_IDAYLZERO)
1509 LOCVAL(LOCALE_IMONLZERO)
1510 LOCVAL(LOCALE_S1159)
1511 LOCVAL(LOCALE_S2359)
1512 LOCVAL(LOCALE_ICALENDARTYPE)
1513 LOCVAL(LOCALE_IOPTIONALCALENDAR)
1514 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
1515 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
1516 */
1517 LOCVAL(LOCALE_SDAYNAME1,"Poniedzia\263ek")
1518 LOCVAL(LOCALE_SDAYNAME2,"Wtorek")
1519 LOCVAL(LOCALE_SDAYNAME3,"Sroda")
1520 LOCVAL(LOCALE_SDAYNAME4,"Czwartek")
1521 LOCVAL(LOCALE_SDAYNAME5,"Pi\xB9tek")
1522 LOCVAL(LOCALE_SDAYNAME6,"Sobota")
1523 LOCVAL(LOCALE_SDAYNAME7,"Niedziela")
1524 LOCVAL(LOCALE_SABBREVDAYNAME1,"Po")
1525 LOCVAL(LOCALE_SABBREVDAYNAME2,"Wt")
1526 LOCVAL(LOCALE_SABBREVDAYNAME3,"Sr")
1527 LOCVAL(LOCALE_SABBREVDAYNAME4,"Cz")
1528 LOCVAL(LOCALE_SABBREVDAYNAME5,"Pt")
1529 LOCVAL(LOCALE_SABBREVDAYNAME6,"So")
1530 LOCVAL(LOCALE_SABBREVDAYNAME7,"Ni")
1531 LOCVAL(LOCALE_SMONTHNAME1,"Stycze\xF1")
1532 LOCVAL(LOCALE_SMONTHNAME2,"Luty")
1533 LOCVAL(LOCALE_SMONTHNAME3,"Marzec")
1534 LOCVAL(LOCALE_SMONTHNAME4,"Kwiecie\xF1")
1535 LOCVAL(LOCALE_SMONTHNAME5,"Maj")
1536 LOCVAL(LOCALE_SMONTHNAME6,"Czerwiec")
1537 LOCVAL(LOCALE_SMONTHNAME7,"Lipiec")
1538 LOCVAL(LOCALE_SMONTHNAME8,"Sierpie\xF1")
1539 LOCVAL(LOCALE_SMONTHNAME9,"Wrzesie\xF1")
1540 LOCVAL(LOCALE_SMONTHNAME10,"Pa\237dziernik")
1541 LOCVAL(LOCALE_SMONTHNAME11,"Listapad")
1542 LOCVAL(LOCALE_SMONTHNAME12,"Grudzie\xF1")
1543 LOCVAL(LOCALE_SMONTHNAME13,"")
1544 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Sty")
1545 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Lut")
1546 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar")
1547 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Kwi")
1548 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Maj")
1549 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Cze")
1550 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Lip")
1551 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Sie")
1552 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Wrz")
1553 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Pa\x9F")
1554 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Lis")
1555 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Gru")
1556 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
1557 /*
1558 LOCVAL(LOCALE_SPOSITIVESIGN)
1559 LOCVAL(LOCALE_SNEGATIVESIGN)
1560 LOCVAL(LOCALE_IPOSSIGNPOSN)
1561 LOCVAL(LOCALE_INEGSIGNPOSN)
1562 LOCVAL(LOCALE_IPOSSYMPRECEDES)
1563 LOCVAL(LOCALE_IPOSSEPBYSPACE)
1564 LOCVAL(LOCALE_INEGSYMPRECEDES)
1565 LOCVAL(LOCALE_INEGSEPBYSPACE)
1566 */
1567         default: found=0;break;
1568         }
1569     break;  /* LANG(Pl) */
1570
1571     case LANG_Po:
1572         switch (LCType) {
1573 LOCVAL(LOCALE_ILANGUAGE, "0416")
1574 LOCVAL(LOCALE_SLANGUAGE, "Portugu\352s (Brasil)")
1575 LOCVAL(LOCALE_SENGLANGUAGE, "Protuguese")
1576 LOCVAL(LOCALE_SABBREVLANGNAME, "POR")
1577 LOCVAL(LOCALE_SNATIVELANGNAME, "Portugu\352s")
1578 LOCVAL(LOCALE_ICOUNTRY, "1")
1579 LOCVAL(LOCALE_SCOUNTRY, "Brasil")
1580 LOCVAL(LOCALE_SENGCOUNTRY, "Brazil")
1581 LOCVAL(LOCALE_SABBREVCTRYNAME, "BRA")
1582 LOCVAL(LOCALE_SNATIVECTRYNAME, "Brasil")
1583 LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0409")
1584 LOCVAL(LOCALE_IDEFAULTCOUNTRY, "1")
1585 LOCVAL(LOCALE_IDEFAULTCODEPAGE, "437")
1586 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252")
1587 LOCVAL(LOCALE_SLIST, ";")
1588 LOCVAL(LOCALE_IMEASURE, "1")
1589 LOCVAL(LOCALE_SDECIMAL, ",")
1590 LOCVAL(LOCALE_STHOUSAND, ".")
1591 LOCVAL(LOCALE_SGROUPING, "3;0")
1592 LOCVAL(LOCALE_IDIGITS, "2")
1593 LOCVAL(LOCALE_ILZERO, "1")
1594 LOCVAL(LOCALE_INEGNUMBER, "1")
1595 LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789")
1596 LOCVAL(LOCALE_SCURRENCY, "$")
1597 LOCVAL(LOCALE_SINTLSYMBOL, "USD")
1598 LOCVAL(LOCALE_SMONDECIMALSEP, ",")
1599 LOCVAL(LOCALE_SMONTHOUSANDSEP, ".")
1600 LOCVAL(LOCALE_SMONGROUPING, "3;0")
1601 LOCVAL(LOCALE_ICURRDIGITS, "2")
1602 LOCVAL(LOCALE_IINTLCURRDIGITS, "2")
1603 LOCVAL(LOCALE_ICURRENCY, "0")
1604 LOCVAL(LOCALE_INEGCURR, "0")
1605 LOCVAL(LOCALE_SDATE, "/")
1606 LOCVAL(LOCALE_STIME, ":")
1607 LOCVAL(LOCALE_SSHORTDATE, "dd/MM/yy")
1608 LOCVAL(LOCALE_SLONGDATE, "dddd, MMMM dd, yyyy")
1609 LOCVAL(LOCALE_STIMEFORMAT, "h:mm:ss tt")
1610 LOCVAL(LOCALE_IDATE, "0")
1611 LOCVAL(LOCALE_ILDATE, "0")
1612 LOCVAL(LOCALE_ITIME, "0")
1613 LOCVAL(LOCALE_ITIMEMARKPOSN, "0")
1614 LOCVAL(LOCALE_ICENTURY, "0")
1615 LOCVAL(LOCALE_ITLZERO, "0")
1616 LOCVAL(LOCALE_IDAYLZERO, "0")
1617 LOCVAL(LOCALE_IMONLZERO, "0")
1618 LOCVAL(LOCALE_S1159, "AM")
1619 LOCVAL(LOCALE_S2359, "PM")
1620 LOCVAL(LOCALE_ICALENDARTYPE, "1")
1621 LOCVAL(LOCALE_IOPTIONALCALENDAR, "0")
1622 LOCVAL(LOCALE_IFIRSTDAYOFWEEK, "6")
1623 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR, "0")
1624 LOCVAL(LOCALE_SDAYNAME1, "Segunda")
1625 LOCVAL(LOCALE_SDAYNAME2, "Ter\347a")
1626 LOCVAL(LOCALE_SDAYNAME3, "Quarta")
1627 LOCVAL(LOCALE_SDAYNAME4, "Quinta")
1628 LOCVAL(LOCALE_SDAYNAME5, "Sexta")
1629 LOCVAL(LOCALE_SDAYNAME6, "S\341bado")
1630 LOCVAL(LOCALE_SDAYNAME7, "Domingo")
1631 LOCVAL(LOCALE_SABBREVDAYNAME1, "Seg")
1632 LOCVAL(LOCALE_SABBREVDAYNAME2, "Ter")
1633 LOCVAL(LOCALE_SABBREVDAYNAME3, "Qua")
1634 LOCVAL(LOCALE_SABBREVDAYNAME4, "Qui")
1635 LOCVAL(LOCALE_SABBREVDAYNAME5, "Sex")
1636 LOCVAL(LOCALE_SABBREVDAYNAME6, "S\341b")
1637 LOCVAL(LOCALE_SABBREVDAYNAME7, "Dom")
1638 LOCVAL(LOCALE_SMONTHNAME1, "Janeiro")
1639 LOCVAL(LOCALE_SMONTHNAME2, "Fevereiro")
1640 LOCVAL(LOCALE_SMONTHNAME3, "Mar\347o")
1641 LOCVAL(LOCALE_SMONTHNAME4, "Abril")
1642 LOCVAL(LOCALE_SMONTHNAME5, "Maio")
1643 LOCVAL(LOCALE_SMONTHNAME6, "Junho")
1644 LOCVAL(LOCALE_SMONTHNAME7, "Julho")
1645 LOCVAL(LOCALE_SMONTHNAME8, "Agosto")
1646 LOCVAL(LOCALE_SMONTHNAME9, "Setembro")
1647 LOCVAL(LOCALE_SMONTHNAME10, "Outubro")
1648 LOCVAL(LOCALE_SMONTHNAME11, "Novembro")
1649 LOCVAL(LOCALE_SMONTHNAME12, "Dezembro")
1650 LOCVAL(LOCALE_SMONTHNAME13, "")
1651 LOCVAL(LOCALE_SABBREVMONTHNAME1, "Jan")
1652 LOCVAL(LOCALE_SABBREVMONTHNAME2, "Fev")
1653 LOCVAL(LOCALE_SABBREVMONTHNAME3, "Mar")
1654 LOCVAL(LOCALE_SABBREVMONTHNAME4, "Abr")
1655 LOCVAL(LOCALE_SABBREVMONTHNAME5, "Mai")
1656 LOCVAL(LOCALE_SABBREVMONTHNAME6, "Jun")
1657 LOCVAL(LOCALE_SABBREVMONTHNAME7, "Jul")
1658 LOCVAL(LOCALE_SABBREVMONTHNAME8, "Ago")
1659 LOCVAL(LOCALE_SABBREVMONTHNAME9, "Set")
1660 LOCVAL(LOCALE_SABBREVMONTHNAME10, "Out")
1661 LOCVAL(LOCALE_SABBREVMONTHNAME11, "Nov")
1662 LOCVAL(LOCALE_SABBREVMONTHNAME12, "Dez")
1663 LOCVAL(LOCALE_SABBREVMONTHNAME13, "")
1664 LOCVAL(LOCALE_SPOSITIVESIGN, "")
1665 LOCVAL(LOCALE_SNEGATIVESIGN, "-")
1666 LOCVAL(LOCALE_IPOSSIGNPOSN, "3")
1667 LOCVAL(LOCALE_INEGSIGNPOSN, "0")
1668 LOCVAL(LOCALE_IPOSSYMPRECEDES, "1")
1669 LOCVAL(LOCALE_IPOSSEPBYSPACE, "0")
1670 LOCVAL(LOCALE_INEGSYMPRECEDES, "1")
1671 LOCVAL(LOCALE_INEGSEPBYSPACE, "0")
1672         default: found=0;break;
1673         }
1674     break; /* LANG(Po) */
1675
1676 case LANG_Sw:
1677         switch (LCType) {
1678 LOCVAL(LOCALE_ILANGUAGE,"1d")
1679 LOCVAL(LOCALE_SLANGUAGE,"Svenska")
1680 LOCVAL(LOCALE_SENGLANGUAGE,"Swedish")
1681 LOCVAL(LOCALE_SABBREVLANGNAME,"SV")
1682 LOCVAL(LOCALE_SNATIVELANGNAME,"Svenska")
1683 LOCVAL(LOCALE_ICOUNTRY,"45")
1684 LOCVAL(LOCALE_SCOUNTRY,"SWE")
1685 LOCVAL(LOCALE_SENGCOUNTRY,"Sweden")
1686 LOCVAL(LOCALE_SABBREVCTRYNAME,"SVE")
1687 LOCVAL(LOCALE_SNATIVECTRYNAME,"Sverige")
1688 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"1d")
1689 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"45")
1690 /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
1691 /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
1692 LOCVAL(LOCALE_SLIST,";")
1693 LOCVAL(LOCALE_IMEASURE,"0")
1694 LOCVAL(LOCALE_SDECIMAL,",")
1695 LOCVAL(LOCALE_STHOUSAND,".")
1696 /* LOCVAL(LOCALE_SGROUPING) */
1697 LOCVAL(LOCALE_IDIGITS,"2")
1698 LOCVAL(LOCALE_ILZERO,"1")
1699 /* LOCVAL(LOCALE_INEGNUMBER) */
1700 /* LOCVAL(LOCALE_SNATIVEDIGITS) */
1701 LOCVAL(LOCALE_SCURRENCY,"kr")
1702 /* LOCVAL(LOCALE_SINTLSYMBOL) */
1703 LOCVAL(LOCALE_SMONDECIMALSEP,",")
1704 LOCVAL(LOCALE_SMONTHOUSANDSEP,".")
1705 /* LOCVAL(LOCALE_SMONGROUPING) */
1706 LOCVAL(LOCALE_ICURRDIGITS,"2")
1707 /* LOCVAL(LOCALE_IINTLCURRDIGITS) */
1708 LOCVAL(LOCALE_ICURRENCY,"3")
1709 LOCVAL(LOCALE_INEGCURR,"8")
1710 LOCVAL(LOCALE_SDATE,".")
1711 LOCVAL(LOCALE_STIME,":")
1712 LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy")
1713 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
1714 /* LOCVAL(LOCALE_STIMEFORMAT) */
1715 LOCVAL(LOCALE_IDATE,"1")
1716 /* LOCVAL(LOCALE_ILDATE) */
1717 LOCVAL(LOCALE_ITIME,"1")
1718 /* LOCVAL(LOCALE_ITIMEMARKPOSN) */
1719 /* LOCVAL(LOCALE_ICENTURY) */
1720 LOCVAL(LOCALE_ITLZERO,"1")
1721 /* LOCVAL(LOCALE_IDAYLZERO) */
1722 /* LOCVAL(LOCALE_IMONLZERO) */
1723 LOCVAL(LOCALE_S1159, "")
1724 LOCVAL(LOCALE_S2359, "")
1725 /* LOCVAL(LOCALE_ICALENDARTYPE) */
1726 /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */
1727 /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
1728 /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
1729 LOCVAL(LOCALE_SDAYNAME1,"Måndag")
1730 LOCVAL(LOCALE_SDAYNAME2,"Tisdag")
1731 LOCVAL(LOCALE_SDAYNAME3,"Onsdag")
1732 LOCVAL(LOCALE_SDAYNAME4,"Torsdag")
1733 LOCVAL(LOCALE_SDAYNAME5,"Fredag")
1734 LOCVAL(LOCALE_SDAYNAME6,"Lördag")
1735 LOCVAL(LOCALE_SDAYNAME7,"Söndag")
1736 LOCVAL(LOCALE_SABBREVDAYNAME1,"Må")
1737 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti")
1738 LOCVAL(LOCALE_SABBREVDAYNAME3,"On")
1739 LOCVAL(LOCALE_SABBREVDAYNAME4,"To")
1740 LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
1741 LOCVAL(LOCALE_SABBREVDAYNAME6,"Lö")
1742 LOCVAL(LOCALE_SABBREVDAYNAME7,"Sö")
1743 LOCVAL(LOCALE_SMONTHNAME1,"Januari")
1744 LOCVAL(LOCALE_SMONTHNAME2,"Februari")
1745 LOCVAL(LOCALE_SMONTHNAME3,"Mars")
1746 LOCVAL(LOCALE_SMONTHNAME4,"April")
1747 LOCVAL(LOCALE_SMONTHNAME5,"Maj")
1748 LOCVAL(LOCALE_SMONTHNAME6,"Juni")
1749 LOCVAL(LOCALE_SMONTHNAME7,"Juli")
1750 LOCVAL(LOCALE_SMONTHNAME8,"Augusti")
1751 LOCVAL(LOCALE_SMONTHNAME9,"September")
1752 LOCVAL(LOCALE_SMONTHNAME10,"Oktober")
1753 LOCVAL(LOCALE_SMONTHNAME11,"November")
1754 LOCVAL(LOCALE_SMONTHNAME12,"December")
1755 LOCVAL(LOCALE_SMONTHNAME13,"")
1756 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
1757 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
1758 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar")
1759 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
1760 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Maj")
1761 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun")
1762 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul")
1763 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
1764 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep")
1765 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
1766 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
1767 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dec")
1768 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
1769 LOCVAL(LOCALE_SPOSITIVESIGN, "")
1770 LOCVAL(LOCALE_SNEGATIVESIGN, "-")
1771 LOCVAL(LOCALE_IPOSSIGNPOSN, "3")
1772 LOCVAL(LOCALE_INEGSIGNPOSN, "3")
1773 LOCVAL(LOCALE_IPOSSYMPRECEDES, "1")
1774 LOCVAL(LOCALE_IPOSSEPBYSPACE, "0")
1775 LOCVAL(LOCALE_INEGSYMPRECEDES, "1")
1776 LOCVAL(LOCALE_INEGSEPBYSPACE, "0")
1777         default: found=0;break;
1778         }
1779     break; /* LANG(Sw) */
1780
1781 /*Insert other languages here*/
1782
1783     default:
1784         found=0;
1785         break;
1786     }  /* switch */
1787
1788         if(!found) {
1789                 fprintf(stderr,"'%s' not supported for your language.\n",
1790                         retString);
1791                 retString = "<WINE-NLS-unknown>";
1792                 /*return 0;*/
1793         }
1794         if (buf)
1795                 lstrcpyn32A(buf,retString,len);
1796         return strlen(retString)+1;
1797 }
1798
1799 /***********************************************************************
1800  *         GetLocaleInfo32W             (KERNEL32.230)
1801  * Is the last parameter really WORD for Win16?
1802  */
1803 INT32 WINAPI GetLocaleInfo32W(LCID lcid,LCTYPE LCType,LPWSTR wbuf,INT32 len)
1804 {
1805         LPSTR abuf = (LPSTR)HeapAlloc(GetProcessHeap(),0,len);
1806
1807         INT32 n = GetLocaleInfo32A(lcid, LCType, abuf, len);
1808         if (wbuf)
1809                 lstrcpynAtoW(wbuf,abuf,len);
1810         HeapFree(GetProcessHeap(),0,abuf);
1811         return n;
1812 }
1813
1814 /***********************************************************************
1815  *           CompareString16       (OLE2NLS.8)
1816  */
1817 UINT16 WINAPI CompareString16(DWORD lcid,DWORD fdwStyle,
1818                               LPCSTR s1,DWORD l1,LPCSTR s2,DWORD l2)
1819 {
1820         return (UINT16)CompareString32A(lcid,fdwStyle,s1,l1,s2,l2);
1821 }
1822
1823 /***********************************************************************
1824  *           CompareString32A   (KERNEL32.29)
1825  * This implementation ignores the locale
1826  * FIXME
1827  */
1828 UINT32 WINAPI CompareString32A(DWORD lcid, DWORD fdwStyle, 
1829                                LPCSTR s1, DWORD l1, LPCSTR s2,DWORD l2)
1830 {
1831         int len,ret;
1832         if(fdwStyle & NORM_IGNORENONSPACE)
1833         {
1834                 fprintf(stdnimp, "CompareStringA: IGNORENONSPACE not supprted\n");
1835         }
1836         if(fdwStyle & NORM_IGNORESYMBOLS)
1837                 fprintf(stdnimp, "CompareStringA: IGNORESYMBOLS not supported\n");
1838         /* Is strcmp defaulting to string sort or to word sort?? */
1839         /* FIXME: Handle NORM_STRINGSORT */
1840         l1 = (l1==-1)?strlen(s1):l1;
1841         l2 = (l2==-1)?strlen(s2):l2;
1842         len = l1<l2 ? l1:l2;
1843         ret = (fdwStyle & NORM_IGNORECASE) ?
1844                 lstrncmpi32A(s1,s2,len) : lstrncmp32A(s1,s2,len);
1845         /* not equal, return 1 or 3 */
1846         if(ret!=0)return ret+2;
1847         /* same len, return 2 */
1848         if(l1==l2)return 2;
1849         /* the longer one is lexically greater */
1850         return (l1<l2)? 1 : 3;
1851 }
1852
1853 /***********************************************************************
1854  *           CompareString32W       (KERNEL32.30)
1855  * This implementation ignores the locale
1856  * FIXME
1857  */
1858 UINT32 WINAPI CompareString32W(DWORD lcid, DWORD fdwStyle, 
1859                                LPCWSTR s1, DWORD l1, LPCWSTR s2,DWORD l2)
1860 {
1861         int len,ret;
1862         if(fdwStyle & NORM_IGNORENONSPACE)
1863                 fprintf(stdnimp,"CompareStringW:IGNORENONSPACE not supprted\n");
1864         if(fdwStyle & NORM_IGNORESYMBOLS)
1865                 fprintf(stdnimp,"CompareStringW:IGNORESYMBOLS not supported\n");
1866
1867         /* Is strcmp defaulting to string sort or to word sort?? */
1868         /* FIXME: Handle NORM_STRINGSORT */
1869         l1 = (l1==-1)?lstrlen32W(s1):l1;
1870         l2 = (l2==-1)?lstrlen32W(s2):l2;
1871         len = l1<l2 ? l1:l2;
1872         ret = (fdwStyle & NORM_IGNORECASE) ?
1873                 lstrncmpi32W(s1,s2,len) : lstrncmp32W(s1,s2,len);
1874         /* not equal, return 1 or 3 */
1875         if(ret!=0) return ret+2;
1876         /* same len, return 2 */
1877         if(l1==l2) return 2;
1878         /* the longer one is lexically greater */
1879         return (l1<l2)? 1 : 3;
1880 }
1881
1882 /***********************************************************************
1883  *           SetLocalInfoA       (KERNEL32.499)
1884  */
1885 BOOL16 WINAPI SetLocaleInfoA(DWORD lcid, DWORD lctype, LPCSTR data)
1886 {
1887     fprintf(stdnimp,"SetLocaleInfoA(%ld,%ld,%s)\n",lcid,lctype,data);
1888     return TRUE;
1889 }
1890
1891 /***********************************************************************
1892  *           IsValidLocale       (KERNEL32.361)
1893  */
1894 BOOL32 WINAPI IsValidLocale(LCID lcid,DWORD flags)
1895 {
1896         /* we support ANY language. Well, at least say that...*/
1897         return TRUE;
1898 }
1899
1900 /***********************************************************************
1901  *              EnumSystemLocales32W                (KERNEL32.93)
1902  */
1903 BOOL32 WINAPI EnumSystemLocales32W( LOCALE_ENUMPROC32W lpfnLocaleEnum,
1904                                     DWORD flags )
1905 {
1906         int     i;
1907         BOOL32  ret;
1908         WCHAR   buffer[200];
1909         HKEY    xhkey;
1910
1911         dprintf_win32(stddeb,"EnumSystemLocales32W(%p,%08lx)\n",
1912                       lpfnLocaleEnum,flags );
1913         /* see if we can reuse the Win95 registry entries.... */
1914         if (ERROR_SUCCESS==RegOpenKey32A(HKEY_LOCAL_MACHINE,"\\System\\CurrentControlSet\\control\\Nls\\Locale\\",&xhkey)) {
1915                 i=0;
1916                 while (1) {
1917                         if (ERROR_SUCCESS!=RegEnumKey32W(xhkey,i,buffer,sizeof(buffer)))
1918                                 break;
1919                         if (!lpfnLocaleEnum(buffer))
1920                                 break;
1921                         i++;
1922                 }
1923                 RegCloseKey(xhkey);
1924                 return TRUE;
1925         }
1926
1927         i=0;
1928         while (languages[i].langname!=NULL)
1929         {
1930             LPWSTR cp;
1931             char   xbuffer[10];
1932         
1933             sprintf(xbuffer,"%08lx",(DWORD)languages[i].langid);
1934
1935             cp = HEAP_strdupAtoW( GetProcessHeap(), 0, xbuffer );
1936             ret = lpfnLocaleEnum(cp);
1937             HeapFree( GetProcessHeap(), 0, cp );
1938             if (!ret) break;
1939             i++;
1940         }
1941         return TRUE;
1942 }
1943
1944 /***********************************************************************
1945  *              EnumSystemLocales32A                (KERNEL32.92)
1946  */
1947 BOOL32 WINAPI EnumSystemLocales32A(LOCALE_ENUMPROC32A lpfnLocaleEnum,
1948                                    DWORD flags)
1949 {
1950         int     i;
1951         CHAR    buffer[200];
1952         HKEY    xhkey;
1953
1954         dprintf_win32(stddeb,"EnumSystemLocales32A(%p,%08lx)\n",
1955                 lpfnLocaleEnum,flags
1956         );
1957         if (ERROR_SUCCESS==RegOpenKey32A(HKEY_LOCAL_MACHINE,"\\System\\CurrentControlSet\\control\\Nls\\Locale\\",&xhkey)) {
1958                 i=0;
1959                 while (1) {
1960                         if (ERROR_SUCCESS!=RegEnumKey32A(xhkey,i,buffer,sizeof(buffer)))
1961                                 break;
1962                         if (!lpfnLocaleEnum(buffer))
1963                                 break;
1964                         i++;
1965                 }
1966                 RegCloseKey(xhkey);
1967                 return TRUE;
1968         }
1969         i=0;
1970         while (languages[i].langname!=NULL) {
1971                 sprintf(buffer,"%08lx",(DWORD)languages[i].langid);
1972                 if (!lpfnLocaleEnum(buffer))
1973                         break;
1974                 i++;
1975         }
1976         return TRUE;
1977 }
1978
1979 /***********************************************************************
1980  *              GetStringTypeA                (OLE2NLS.7)
1981  */
1982 BOOL16 WINAPI GetStringType16(LCID locale,DWORD dwInfoType,LPCSTR src,
1983                               INT16 cchSrc,LPWORD chartype)
1984 {
1985         return GetStringTypeEx32A(locale,dwInfoType,src,cchSrc,chartype);
1986 }
1987 /***********************************************************************
1988  *              GetStringTypeA                (KERNEL32.277)
1989  */
1990 BOOL32 WINAPI GetStringType32A(LCID locale,DWORD dwInfoType,LPCSTR src,
1991                                INT32 cchSrc,LPWORD chartype)
1992 {
1993         return GetStringTypeEx32A(locale,dwInfoType,src,cchSrc,chartype);
1994 }
1995 /***********************************************************************
1996  *              GetStringTypeExA                (KERNEL32.276)
1997  */
1998 BOOL32 WINAPI GetStringTypeEx32A(LCID locale,DWORD dwInfoType,LPCSTR src,
1999                                  INT32 cchSrc,LPWORD chartype)
2000 {
2001         int     i;
2002
2003         switch (dwInfoType) {
2004         case CT_CTYPE2:
2005                 fprintf(stderr,"GetStringType32A:CT_CTYPE2 not supported.\n");
2006                 return FALSE;
2007         case CT_CTYPE3:
2008                 fprintf(stderr,"GetStringType32A:CT_CTYPE3 not supported.\n");
2009                 return FALSE;
2010         default:break;
2011         }
2012         if (cchSrc==-1)
2013                 cchSrc=lstrlen32A(src);
2014         for (i=0;i<cchSrc;i++) {
2015                 chartype[i] = 0;
2016                 if (isdigit(src[i])) chartype[i]|=C1_DIGIT;
2017                 if (isalpha(src[i])) chartype[i]|=C1_ALPHA;
2018                 if (islower(src[i])) chartype[i]|=C1_LOWER;
2019                 if (isupper(src[i])) chartype[i]|=C1_UPPER;
2020                 if (isspace(src[i])) chartype[i]|=C1_SPACE;
2021                 if (ispunct(src[i])) chartype[i]|=C1_PUNCT;
2022                 if (iscntrl(src[i])) chartype[i]|=C1_CNTRL;
2023 /* FIXME: isblank() is a GNU extension */
2024 /*              if (isblank(src[i])) chartype[i]|=C1_BLANK; */
2025                 if ((src[i] == ' ') || (src[i] == '\t')) chartype[i]|=C1_BLANK;
2026                 /* C1_XDIGIT */
2027         }
2028         return TRUE;
2029 }
2030
2031 /***********************************************************************
2032  *              GetStringTypeW                (KERNEL32.279)
2033  * Yes, this is missing LCID locale. MS fault.
2034  */
2035 BOOL32 WINAPI GetStringType32W(DWORD dwInfoType,LPCWSTR src,INT32 cchSrc,
2036                                LPWORD chartype)
2037 {
2038         return GetStringTypeEx32W(0/*defaultlocale*/,dwInfoType,src,cchSrc,chartype);
2039 }
2040
2041 /***********************************************************************
2042  *              GetStringTypeW                (KERNEL32.278)
2043  * FIXME: unicode chars are assumed chars
2044  */
2045 BOOL32 WINAPI GetStringTypeEx32W(LCID locale,DWORD dwInfoType,LPCWSTR src,
2046                                  INT32 cchSrc,LPWORD chartype)
2047 {
2048         int     i;
2049
2050         switch (dwInfoType) {
2051         case CT_CTYPE2:
2052                 fprintf(stderr,"GetStringType32W:CT_CTYPE2 not supported.\n");
2053                 return FALSE;
2054         case CT_CTYPE3:
2055                 fprintf(stderr,"GetStringType32W:CT_CTYPE3 not supported.\n");
2056                 return FALSE;
2057         default:break;
2058         }
2059         if (cchSrc==-1)
2060                 cchSrc=lstrlen32W(src);
2061         for (i=0;i<cchSrc;i++) {
2062                 chartype[i] = 0;
2063                 if (isdigit(src[i])) chartype[i]|=C1_DIGIT;
2064                 if (isalpha(src[i])) chartype[i]|=C1_ALPHA;
2065                 if (islower(src[i])) chartype[i]|=C1_LOWER;
2066                 if (isupper(src[i])) chartype[i]|=C1_UPPER;
2067                 if (isspace(src[i])) chartype[i]|=C1_SPACE;
2068                 if (ispunct(src[i])) chartype[i]|=C1_PUNCT;
2069                 if (iscntrl(src[i])) chartype[i]|=C1_CNTRL;
2070 /* FIXME: isblank() is a GNU extension */
2071 /*              if (isblank(src[i])) chartype[i]|=C1_BLANK; */
2072                 if ((src[i] == ' ') || (src[i] == '\t')) chartype[i]|=C1_BLANK;
2073                 /* C1_XDIGIT */
2074         }
2075         return TRUE;
2076 }
2077
2078 /* VerLanguageName                              [VER.10] */
2079 DWORD WINAPI VerLanguageName16(UINT16 langid,LPSTR langname,UINT16 langnamelen)
2080 {
2081         int     i;
2082         char    *buf;
2083
2084         dprintf_ver(stddeb,"VerLanguageName(%d,%p,%d)\n",langid,langname,langnamelen);
2085         /* First, check \System\CurrentControlSet\control\Nls\Locale\<langid>
2086          * from the registry. 
2087          */
2088         buf=(char*)malloc(strlen("\\System\\CurrentControlSet\\control\\Nls\\Locale\\")+9);
2089         sprintf(buf,"\\System\\CurrentControlSet\\control\\Nls\\Locale\\%08x",langid);
2090         if (ERROR_SUCCESS==RegQueryValue16(HKEY_LOCAL_MACHINE,buf,langname,(LPDWORD)&langnamelen)) {
2091                 langname[langnamelen-1]='\0';
2092                 return langnamelen;
2093         }
2094         /* if that fails, use the interal table */
2095         for (i=0;languages[i].langid!=0;i++)
2096                 if (langid==languages[i].langid)
2097                         break;
2098         strncpy(langname,languages[i].langname,langnamelen);
2099         langname[langnamelen-1]='\0';
2100         return strlen(languages[i].langname);
2101 }
2102
2103 /* VerLanguageNameA                             [VERSION.9] */
2104 DWORD WINAPI VerLanguageName32A(UINT32 langid,LPSTR langname,
2105                                 UINT32 langnamelen)
2106 {
2107         return VerLanguageName16(langid,langname,langnamelen);
2108 }
2109
2110 /* VerLanguageNameW                             [VERSION.10] */
2111 DWORD WINAPI VerLanguageName32W(UINT32 langid,LPWSTR langname,
2112                                 UINT32 langnamelen)
2113 {
2114         int     i;
2115         char    buffer[80];
2116         LPWSTR  keyname;
2117
2118         /* First, check \System\CurrentControlSet\control\Nls\Locale\<langid>
2119          * from the registry. 
2120          */
2121         sprintf(buffer,"\\System\\CurrentControlSet\\control\\Nls\\Locale\\%08x",langid);
2122         keyname = HEAP_strdupAtoW( GetProcessHeap(), 0, buffer );
2123         if (ERROR_SUCCESS==RegQueryValue32W(HKEY_LOCAL_MACHINE,keyname,langname,(LPDWORD)&langnamelen)) {
2124                 HeapFree( GetProcessHeap(), 0, keyname );
2125                 return langnamelen;
2126         }
2127         HeapFree( GetProcessHeap(), 0, keyname );
2128         /* if that fails, use the interal table */
2129         for (i=0;languages[i].langid!=0;i++)
2130                 if (langid==languages[i].langid)
2131                         break;
2132         lstrcpyAtoW( langname, languages[i].langname );
2133         return strlen(languages[i].langname); /* same as strlenW(langname); */
2134 }
2135
2136
2137 INT32 WINAPI LCMapString32A(
2138         LCID lcid,DWORD mapflags,LPCSTR srcstr,INT32 srclen,LPSTR dststr,
2139         INT32 dstlen
2140 ) {
2141         int     i,len;
2142
2143         dprintf_string(stderr,"LCMapStringA(0x%04lx,0x%08lx,%s,%d,%p,%d)\n",
2144                 lcid,mapflags,srcstr,srclen,dststr,dstlen);
2145         if (!dstlen || !dststr) {
2146                 dststr = (LPSTR)srcstr;
2147         }
2148         if (!srclen) srclen = strlen(srcstr);
2149         if (!dstlen) dstlen = strlen(dststr);
2150         len = dstlen;
2151         if (srclen < len)
2152                 len = srclen;
2153         if (mapflags & LCMAP_LOWERCASE) {
2154                 for (i=0;i<len;i++)
2155                         dststr[i]=tolower(srcstr[i]);
2156                 mapflags &= ~LCMAP_LOWERCASE;
2157         }
2158         if (mapflags & LCMAP_UPPERCASE) {
2159                 for (i=0;i<len;i++)
2160                         dststr[i]=toupper(srcstr[i]);
2161                 mapflags &= ~LCMAP_UPPERCASE;
2162         }
2163         if (mapflags)
2164           {
2165             fprintf(stderr,
2166                     "LCMapStringA(0x%04lx,0x%08lx,%p,%d,%p,%d)\n",
2167                     lcid,mapflags,srcstr,srclen,dststr,dstlen);
2168                 fprintf(stderr,"        unimplemented flags: 0x%08lx\n",mapflags);
2169           }
2170         return len;
2171 }
2172
2173 /* FIXME: implement everyhting & correct */
2174
2175 INT32 WINAPI LCMapString32W(
2176         LCID lcid,DWORD mapflags,LPCWSTR srcstr,INT32 srclen,LPWSTR dststr,
2177         INT32 dstlen
2178 ) {
2179         int     i,len;
2180
2181         dprintf_string(stderr,"LCMapStringW(0x%04lx,0x%08lx,%p,%d,%p,%d)\n",
2182                 lcid,mapflags,srcstr,srclen,dststr,dstlen
2183         );
2184         if (!dstlen || !dststr) {
2185                 dststr = (LPWSTR)srcstr;
2186         }
2187         if (!srclen) srclen = lstrlen32W(srcstr);
2188         if (!dstlen) dstlen = lstrlen32W(dststr);
2189         len = dstlen;
2190         if (srclen < len)
2191                 len = srclen;
2192         if (mapflags & LCMAP_LOWERCASE) {
2193                 for (i=0;i<len;i++)
2194                         dststr[i]=tolower(srcstr[i]);
2195                 mapflags &= ~LCMAP_LOWERCASE;
2196         }
2197         if (mapflags & LCMAP_UPPERCASE) {
2198                 for (i=0;i<len;i++)
2199                         dststr[i]=toupper(srcstr[i]);
2200                 mapflags &= ~LCMAP_UPPERCASE;
2201         }
2202         if (mapflags)
2203           {
2204             fprintf(stderr,
2205                     "LCMapStringW(0x%04lx,0x%08lx,%p,%d,%p,%d)\n",
2206                     lcid,mapflags,srcstr,srclen,dststr,dstlen);
2207                 fprintf(stderr,"        unimplemented flags: 0x%08lx\n",mapflags);
2208           }
2209         return len;
2210 }
2211
2212
2213 INT32 WINAPI GetDateFormat32A(LCID locale,DWORD flags,LPSYSTEMTIME xtime,
2214                               LPCSTR format, LPSTR date,INT32 datelen
2215 ) {
2216         fprintf(stderr,"GetDateFormat(0x%04lx,0x%08lx,%p,%s,%p,%d), stub\n",
2217                 locale,flags,xtime,format,date,datelen
2218         );
2219         lstrcpyn32A(date,"1.4.1997",datelen);
2220         return strlen("1.4.1997");
2221 }
2222
2223 INT32 WINAPI GetTimeFormat32A(LCID locale,DWORD flags,LPSYSTEMTIME xtime,
2224                               LPCSTR format, LPSTR timestr,INT32 timelen
2225 ) {
2226         fprintf(stderr,"GetDateFormat(0x%04lx,0x%08lx,%p,%s,%p,%d), stub\n",
2227                 locale,flags,xtime,format,timestr,timelen
2228         );
2229         lstrcpyn32A(timestr,"00:00:42",timelen);
2230         return strlen("00:00:42");
2231 }