Release 960414
[wine.git] / misc / ole2nls.c
blobfc93301dce7109ae3409b92dc4f3a734479d200f
1 /*
2 * OLE2NLS library
4 * Copyright 1995 Martin von Loewis
5 */
7 /* At the moment, these are only empty stubs.
8 */
10 #include <string.h>
11 #include "windows.h"
12 #include "ole.h"
13 #include "options.h"
14 #include "winnls.h"
15 #include "stddebug.h"
16 #include "debug.h"
18 /***********************************************************************
19 * GetUserDefaultLCID (OLE2NLS.1)
21 DWORD WINAPI GetUserDefaultLCID()
23 /* Default sorting, neutral sublanguage */
24 switch(Options.language)
26 case LANG_En: return 0x09;
27 case LANG_Es: return 0x07; /* Just a Guess :-) */
28 case LANG_De: return 0x07;
29 case LANG_No: return 0x14;
30 case LANG_Fr:
31 case LANG_Fi:
32 case LANG_Da:
33 case LANG_Cz:
34 case LANG_Eo:
35 case LANG_It:
36 default:
37 return 0; /* Neutral language */
41 /***********************************************************************
42 * GetSystemDefaultLCID (OLE2NLS.2)
44 DWORD WINAPI GetSystemDefaultLCID()
46 return GetUserDefaultLCID();
49 /***********************************************************************
50 * GetUserDefaultLangID (OLE2NLS.3)
52 WORD WINAPI GetUserDefaultLangID()
54 return (WORD)GetUserDefaultLCID();
57 /***********************************************************************
58 * GetSystemDefaultLangID (OLE2NLS.4)
60 WORD WINAPI GetSystemDefaultLangID()
62 return GetUserDefaultLangID();
65 /***********************************************************************
66 * GetLocaleInfoA (OLE2NLS.5)
67 * Is the last parameter really WORD for Win16?
69 int WINAPI GetLocaleInfoA(DWORD lcid,DWORD LCType,LPSTR buf,WORD len)
71 char *retString;
72 int retLen;
73 dprintf_ole(stddeb,"GetLocaleInfoA(%8lX,%8lX,%p,%4X)\n",
74 lcid,LCType,buf,len);
75 /* Wine is supporting only the default locale */
76 if(lcid!=GetUserDefaultLCID())
78 dprintf_ole(stdnimp,"GetLocaleInfoA: Unknown locale\n");
79 return 0;
81 /* As an option, we could obtain the value from win.ini.
82 This would not match the Wine compile-time option.
83 Also, not all identifiers are available from win.ini */
84 retString=0;
85 retLen=0;
86 /* If we are through all of this, retLen should not be zero anymore.
87 If it is, the value is not supported */
88 #define LOCVAL(type,value) if(type==LCType) \
89 {retLen=strlen(value)+1;\
90 retString=value; \
92 #define UNSUPPORTED(type) if(type==lcid)retString=#type;
94 /* I really wish I would know a better way to do this */
95 UNSUPPORTED(LOCALE_ILANGUAGE)
96 UNSUPPORTED(LOCALE_SLANGUAGE)
97 UNSUPPORTED(LOCALE_SENGLANGUAGE)
98 UNSUPPORTED(LOCALE_SABBREVLANGNAME)
99 UNSUPPORTED(LOCALE_SNATIVELANGNAME)
100 UNSUPPORTED(LOCALE_ICOUNTRY)
101 UNSUPPORTED(LOCALE_SCOUNTRY)
102 UNSUPPORTED(LOCALE_SENGCOUNTRY)
103 UNSUPPORTED(LOCALE_SABBREVCTRYNAME)
104 UNSUPPORTED(LOCALE_SNATIVECTRYNAME)
105 UNSUPPORTED(LOCALE_IDEFAULTLANGUAGE)
106 UNSUPPORTED(LOCALE_IDEFAULTCOUNTRY)
107 UNSUPPORTED(LOCALE_IDEFAULTCODEPAGE)
108 UNSUPPORTED(LOCALE_IDEFAULTANSICODEPAGE)
109 UNSUPPORTED(LOCALE_SLIST)
110 UNSUPPORTED(LOCALE_IMEASURE)
111 UNSUPPORTED(LOCALE_SDECIMAL)
112 UNSUPPORTED(LOCALE_STHOUSAND)
113 UNSUPPORTED(LOCALE_SGROUPING)
114 UNSUPPORTED(LOCALE_IDIGITS)
115 UNSUPPORTED(LOCALE_ILZERO)
116 UNSUPPORTED(LOCALE_INEGNUMBER)
117 UNSUPPORTED(LOCALE_SNATIVEDIGITS)
118 UNSUPPORTED(LOCALE_SCURRENCY)
119 UNSUPPORTED(LOCALE_SINTLSYMBOL)
120 UNSUPPORTED(LOCALE_SMONDECIMALSEP)
121 UNSUPPORTED(LOCALE_SMONTHOUSANDSEP)
122 UNSUPPORTED(LOCALE_SMONGROUPING)
123 UNSUPPORTED(LOCALE_ICURRDIGITS)
124 UNSUPPORTED(LOCALE_IINTLCURRDIGITS)
125 UNSUPPORTED(LOCALE_ICURRENCY)
126 UNSUPPORTED(LOCALE_INEGCURR)
127 UNSUPPORTED(LOCALE_SDATE)
128 UNSUPPORTED(LOCALE_STIME)
129 UNSUPPORTED(LOCALE_SSHORTDATE)
130 UNSUPPORTED(LOCALE_SLONGDATE)
131 UNSUPPORTED(LOCALE_STIMEFORMAT)
132 UNSUPPORTED(LOCALE_IDATE)
133 UNSUPPORTED(LOCALE_ILDATE)
134 UNSUPPORTED(LOCALE_ITIME)
135 UNSUPPORTED(LOCALE_ITIMEMARKPOSN)
136 UNSUPPORTED(LOCALE_ICENTURY)
137 UNSUPPORTED(LOCALE_ITLZERO)
138 UNSUPPORTED(LOCALE_IDAYLZERO)
139 UNSUPPORTED(LOCALE_IMONLZERO)
140 UNSUPPORTED(LOCALE_S1159)
141 UNSUPPORTED(LOCALE_S2359)
142 UNSUPPORTED(LOCALE_ICALENDARTYPE)
143 UNSUPPORTED(LOCALE_IOPTIONALCALENDAR)
144 UNSUPPORTED(LOCALE_IFIRSTDAYOFWEEK)
145 UNSUPPORTED(LOCALE_IFIRSTWEEKOFYEAR)
146 UNSUPPORTED(LOCALE_SDAYNAME1)
147 UNSUPPORTED(LOCALE_SDAYNAME2)
148 UNSUPPORTED(LOCALE_SDAYNAME3)
149 UNSUPPORTED(LOCALE_SDAYNAME4)
150 UNSUPPORTED(LOCALE_SDAYNAME5)
151 UNSUPPORTED(LOCALE_SDAYNAME6)
152 UNSUPPORTED(LOCALE_SDAYNAME7)
153 UNSUPPORTED(LOCALE_SABBREVDAYNAME1)
154 UNSUPPORTED(LOCALE_SABBREVDAYNAME2)
155 UNSUPPORTED(LOCALE_SABBREVDAYNAME3)
156 UNSUPPORTED(LOCALE_SABBREVDAYNAME4)
157 UNSUPPORTED(LOCALE_SABBREVDAYNAME5)
158 UNSUPPORTED(LOCALE_SABBREVDAYNAME6)
159 UNSUPPORTED(LOCALE_SABBREVDAYNAME7)
160 UNSUPPORTED(LOCALE_SMONTHNAME1)
161 UNSUPPORTED(LOCALE_SMONTHNAME2)
162 UNSUPPORTED(LOCALE_SMONTHNAME3)
163 UNSUPPORTED(LOCALE_SMONTHNAME4)
164 UNSUPPORTED(LOCALE_SMONTHNAME5)
165 UNSUPPORTED(LOCALE_SMONTHNAME6)
166 UNSUPPORTED(LOCALE_SMONTHNAME7)
167 UNSUPPORTED(LOCALE_SMONTHNAME8)
168 UNSUPPORTED(LOCALE_SMONTHNAME9)
169 UNSUPPORTED(LOCALE_SMONTHNAME10)
170 UNSUPPORTED(LOCALE_SMONTHNAME11)
171 UNSUPPORTED(LOCALE_SMONTHNAME12)
172 UNSUPPORTED(LOCALE_SMONTHNAME13)
173 UNSUPPORTED(LOCALE_SABBREVMONTHNAME1)
174 UNSUPPORTED(LOCALE_SABBREVMONTHNAME2)
175 UNSUPPORTED(LOCALE_SABBREVMONTHNAME3)
176 UNSUPPORTED(LOCALE_SABBREVMONTHNAME4)
177 UNSUPPORTED(LOCALE_SABBREVMONTHNAME5)
178 UNSUPPORTED(LOCALE_SABBREVMONTHNAME6)
179 UNSUPPORTED(LOCALE_SABBREVMONTHNAME7)
180 UNSUPPORTED(LOCALE_SABBREVMONTHNAME8)
181 UNSUPPORTED(LOCALE_SABBREVMONTHNAME9)
182 UNSUPPORTED(LOCALE_SABBREVMONTHNAME10)
183 UNSUPPORTED(LOCALE_SABBREVMONTHNAME11)
184 UNSUPPORTED(LOCALE_SABBREVMONTHNAME12)
185 UNSUPPORTED(LOCALE_SABBREVMONTHNAME13)
186 UNSUPPORTED(LOCALE_SPOSITIVESIGN)
187 UNSUPPORTED(LOCALE_SNEGATIVESIGN)
188 UNSUPPORTED(LOCALE_IPOSSIGNPOSN)
189 UNSUPPORTED(LOCALE_INEGSIGNPOSN)
190 UNSUPPORTED(LOCALE_IPOSSYMPRECEDES)
191 UNSUPPORTED(LOCALE_IPOSSEPBYSPACE)
192 UNSUPPORTED(LOCALE_INEGSYMPRECEDES)
193 UNSUPPORTED(LOCALE_INEGSEPBYSPACE)
195 /* Now, the language specific definitions. They don't have to be
196 complete */
197 switch(Options.language)
199 case LANG_De:
200 /* This definitions apply to Germany only. Users in Austria
201 or Switzerland might want to modify them */
202 LOCVAL(LOCALE_ILANGUAGE,"9")
203 LOCVAL(LOCALE_SLANGUAGE,"Deutsch")
204 LOCVAL(LOCALE_SENGLANGUAGE,"German")
205 LOCVAL(LOCALE_SABBREVLANGNAME,"deu")
206 LOCVAL(LOCALE_SNATIVELANGNAME,"Deutsch")
207 LOCVAL(LOCALE_ICOUNTRY,"49")
208 LOCVAL(LOCALE_SCOUNTRY,"Deutschland")
209 LOCVAL(LOCALE_SENGCOUNTRY,"Deutschland")
210 LOCVAL(LOCALE_SABBREVCTRYNAME,"De")
211 LOCVAL(LOCALE_SNATIVECTRYNAME,"Deutschland")
212 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
213 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49")
214 /* Dunno
215 LOCVAL(LOCALE_IDEFAULTCODEPAGE)
216 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
218 LOCVAL(LOCALE_SLIST,";")
219 LOCVAL(LOCALE_IMEASURE,"0")
220 LOCVAL(LOCALE_SDECIMAL,",")
221 LOCVAL(LOCALE_STHOUSAND,".")
223 LOCVAL(LOCALE_SGROUPING)
225 LOCVAL(LOCALE_IDIGITS,"2")
226 LOCVAL(LOCALE_ILZERO,"1")
228 LOCVAL(LOCALE_INEGNUMBER)
229 Is this "0123456789" ??
230 LOCVAL(LOCALE_SNATIVEDIGITS)
232 LOCVAL(LOCALE_SCURRENCY,"DM")
234 LOCVAL(LOCALE_SINTLSYMBOL)
235 LOCVAL(LOCALE_SMONDECIMALSEP)
236 LOCVAL(LOCALE_SMONTHOUSANDSEP)
237 LOCVAL(LOCALE_SMONGROUPING)
239 LOCVAL(LOCALE_ICURRDIGITS,"2")
241 LOCVAL(LOCALE_IINTLCURRDIGITS)
243 LOCVAL(LOCALE_ICURRENCY,"3")
244 LOCVAL(LOCALE_INEGCURR,"8")
245 LOCVAL(LOCALE_SDATE,".")
246 LOCVAL(LOCALE_STIME,":")
247 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
248 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
250 LOCVAL(LOCALE_STIMEFORMAT)
252 LOCVAL(LOCALE_IDATE,"1")
254 LOCVAL(LOCALE_ILDATE)
256 LOCVAL(LOCALE_ITIME,"1")
258 LOCVAL(LOCALE_ITIMEMARKPOSN)
259 LOCVAL(LOCALE_ICENTURY)
261 LOCVAL(LOCALE_ITLZERO,"1")
263 LOCVAL(LOCALE_IDAYLZERO)
264 LOCVAL(LOCALE_IMONLZERO)
265 LOCVAL(LOCALE_S1159)
266 LOCVAL(LOCALE_S2359)
267 LOCVAL(LOCALE_ICALENDARTYPE)
268 LOCVAL(LOCALE_IOPTIONALCALENDAR)
269 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
270 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
272 LOCVAL(LOCALE_SDAYNAME1,"Montag")
273 LOCVAL(LOCALE_SDAYNAME2,"Dienstag")
274 LOCVAL(LOCALE_SDAYNAME3,"Mittwoch")
275 LOCVAL(LOCALE_SDAYNAME4,"Donnerstag")
276 LOCVAL(LOCALE_SDAYNAME5,"Freitag")
277 LOCVAL(LOCALE_SDAYNAME6,"Sonnabend")
278 LOCVAL(LOCALE_SDAYNAME7,"Sonntag")
279 LOCVAL(LOCALE_SABBREVDAYNAME1,"Mo")
280 LOCVAL(LOCALE_SABBREVDAYNAME2,"Di")
281 LOCVAL(LOCALE_SABBREVDAYNAME3,"Mi")
282 LOCVAL(LOCALE_SABBREVDAYNAME4,"Do")
283 LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
284 LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa")
285 LOCVAL(LOCALE_SABBREVDAYNAME7,"So")
286 LOCVAL(LOCALE_SMONTHNAME1,"Januar")
287 LOCVAL(LOCALE_SMONTHNAME2,"Februar")
288 LOCVAL(LOCALE_SMONTHNAME3,"März")
289 LOCVAL(LOCALE_SMONTHNAME4,"April")
290 LOCVAL(LOCALE_SMONTHNAME5,"Mai")
291 LOCVAL(LOCALE_SMONTHNAME6,"Juni")
292 LOCVAL(LOCALE_SMONTHNAME7,"Juli")
293 LOCVAL(LOCALE_SMONTHNAME8,"August")
294 LOCVAL(LOCALE_SMONTHNAME9,"September")
295 LOCVAL(LOCALE_SMONTHNAME10,"Oktober")
296 LOCVAL(LOCALE_SMONTHNAME11,"November")
297 LOCVAL(LOCALE_SMONTHNAME12,"Dezember")
298 LOCVAL(LOCALE_SMONTHNAME13,"")
299 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
300 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
301 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mär")
302 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
303 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mai")
304 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun")
305 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul")
306 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
307 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep")
308 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
309 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
310 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dez")
311 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
313 LOCVAL(LOCALE_SPOSITIVESIGN)
314 LOCVAL(LOCALE_SNEGATIVESIGN)
315 LOCVAL(LOCALE_IPOSSIGNPOSN)
316 LOCVAL(LOCALE_INEGSIGNPOSN)
317 LOCVAL(LOCALE_IPOSSYMPRECEDES)
318 LOCVAL(LOCALE_IPOSSEPBYSPACE)
319 LOCVAL(LOCALE_INEGSYMPRECEDES)
320 LOCVAL(LOCALE_INEGSEPBYSPACE)
322 break; /* LANG(De) */
324 case LANG_Da:
325 /* LOCVAL(LOCALE_ILANGUAGE,"9") */
326 LOCVAL(LOCALE_SLANGUAGE,"Dansk")
327 LOCVAL(LOCALE_SENGLANGUAGE,"Danish")
328 LOCVAL(LOCALE_SABBREVLANGNAME,"dan")
329 LOCVAL(LOCALE_SNATIVELANGNAME,"Dansk")
330 LOCVAL(LOCALE_ICOUNTRY,"45")
331 LOCVAL(LOCALE_SCOUNTRY,"Danmark")
332 LOCVAL(LOCALE_SENGCOUNTRY,"Denmark")
333 LOCVAL(LOCALE_SABBREVCTRYNAME,"Da")
334 LOCVAL(LOCALE_SNATIVECTRYNAME,"Danmark")
335 /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") */
336 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"45")
337 /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
338 /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
339 LOCVAL(LOCALE_SLIST,";")
340 LOCVAL(LOCALE_IMEASURE,"0")
341 LOCVAL(LOCALE_SDECIMAL,",")
342 LOCVAL(LOCALE_STHOUSAND,".")
343 /* LOCVAL(LOCALE_SGROUPING) */
344 LOCVAL(LOCALE_IDIGITS,"2")
345 LOCVAL(LOCALE_ILZERO,"1")
346 /* LOCVAL(LOCALE_INEGNUMBER) */
347 /* LOCVAL(LOCALE_SNATIVEDIGITS) */
348 LOCVAL(LOCALE_SCURRENCY,"kr")
349 /* LOCVAL(LOCALE_SINTLSYMBOL) */
350 LOCVAL(LOCALE_SMONDECIMALSEP,",")
351 LOCVAL(LOCALE_SMONTHOUSANDSEP,".")
352 /* LOCVAL(LOCALE_SMONGROUPING) */
353 LOCVAL(LOCALE_ICURRDIGITS,"2")
354 /* LOCVAL(LOCALE_IINTLCURRDIGITS) */
355 LOCVAL(LOCALE_ICURRENCY,"3")
356 LOCVAL(LOCALE_INEGCURR,"8")
357 LOCVAL(LOCALE_SDATE,".")
358 LOCVAL(LOCALE_STIME,":")
359 LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy")
360 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
361 /* LOCVAL(LOCALE_STIMEFORMAT) */
362 LOCVAL(LOCALE_IDATE,"1")
363 /* LOCVAL(LOCALE_ILDATE) */
364 LOCVAL(LOCALE_ITIME,"1")
365 /* LOCVAL(LOCALE_ITIMEMARKPOSN) */
366 /* LOCVAL(LOCALE_ICENTURY) */
367 LOCVAL(LOCALE_ITLZERO,"1")
368 /* LOCVAL(LOCALE_IDAYLZERO) */
369 /* LOCVAL(LOCALE_IMONLZERO) */
370 /* LOCVAL(LOCALE_S1159) */
371 /* LOCVAL(LOCALE_S2359) */
372 /* LOCVAL(LOCALE_ICALENDARTYPE) */
373 /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */
374 /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
375 /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
376 LOCVAL(LOCALE_SDAYNAME1,"Mandag")
377 LOCVAL(LOCALE_SDAYNAME2,"Tirsdag")
378 LOCVAL(LOCALE_SDAYNAME3,"Onsdag")
379 LOCVAL(LOCALE_SDAYNAME4,"Torsdag")
380 LOCVAL(LOCALE_SDAYNAME5,"Fredag")
381 LOCVAL(LOCALE_SDAYNAME6,"Lørdag")
382 LOCVAL(LOCALE_SDAYNAME7,"Søndag")
383 LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma")
384 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti")
385 LOCVAL(LOCALE_SABBREVDAYNAME3,"On")
386 LOCVAL(LOCALE_SABBREVDAYNAME4,"To")
387 LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
388 LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø")
389 LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø")
390 LOCVAL(LOCALE_SMONTHNAME1,"Januar")
391 LOCVAL(LOCALE_SMONTHNAME2,"Februar")
392 LOCVAL(LOCALE_SMONTHNAME3,"Marts")
393 LOCVAL(LOCALE_SMONTHNAME4,"April")
394 LOCVAL(LOCALE_SMONTHNAME5,"Maj")
395 LOCVAL(LOCALE_SMONTHNAME6,"Juni")
396 LOCVAL(LOCALE_SMONTHNAME7,"Juli")
397 LOCVAL(LOCALE_SMONTHNAME8,"August")
398 LOCVAL(LOCALE_SMONTHNAME9,"September")
399 LOCVAL(LOCALE_SMONTHNAME10,"Oktober")
400 LOCVAL(LOCALE_SMONTHNAME11,"November")
401 LOCVAL(LOCALE_SMONTHNAME12,"December")
402 LOCVAL(LOCALE_SMONTHNAME13,"")
403 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
404 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
405 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar")
406 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
407 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Maj")
408 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun")
409 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul")
410 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
411 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep")
412 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
413 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
414 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dec")
415 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
416 /* LOCVAL(LOCALE_SPOSITIVESIGN) */
417 /* LOCVAL(LOCALE_SNEGATIVESIGN) */
418 /* LOCVAL(LOCALE_IPOSSIGNPOSN) */
419 /* LOCVAL(LOCALE_INEGSIGNPOSN) */
420 /* LOCVAL(LOCALE_IPOSSYMPRECEDES) */
421 /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */
422 /* LOCVAL(LOCALE_INEGSYMPRECEDES) */
423 /* LOCVAL(LOCALE_INEGSEPBYSPACE) */
424 break; /* LANG(Da) */
426 case LANG_Eo:
427 /* LOCVAL(LOCALE_ILANGUAGE,"9") ISO numerical ID for language TODO */
428 LOCVAL(LOCALE_SLANGUAGE,"Esperanto")
429 LOCVAL(LOCALE_SENGLANGUAGE,"Esperanto")
430 /* LOCVAL(LOCALE_SABBREVLANGNAME,"deu") */
431 LOCVAL(LOCALE_SNATIVELANGNAME,"Esperanto")
432 /* LOCVAL(LOCALE_ICOUNTRY,"49") not official in any one country */
433 /* LOCVAL(LOCALE_SCOUNTRY,"Deutschland") */
434 /* LOCVAL(LOCALE_SENGCOUNTRY,"Germany") */
435 /* LOCVAL(LOCALE_SABBREVCTRYNAME,"De") */
436 /* LOCVAL(LOCALE_SNATIVECTRYNAME,"Deutschland") */
437 /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") ISO ID of lang TODO */
438 /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49") */
439 LOCVAL(LOCALE_IDEFAULTCODEPAGE,3) /* is this right? TODO */
440 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE,3) /* is this right? TODO */
441 LOCVAL(LOCALE_SLIST,";")
442 LOCVAL(LOCALE_IMEASURE,"0")
443 LOCVAL(LOCALE_SDECIMAL,",")
444 LOCVAL(LOCALE_STHOUSAND,".")
445 /* LOCVAL(LOCALE_SGROUPING) */
446 LOCVAL(LOCALE_IDIGITS,"2")
447 LOCVAL(LOCALE_ILZERO,"1")
448 /* LOCVAL(LOCALE_INEGNUMBER) */
449 /* LOCVAL(LOCALE_SNATIVEDIGITS) */
450 LOCVAL(LOCALE_SCURRENCY,"NLG") /* accounting currency of UEA */
451 /* LOCVAL(LOCALE_SINTLSYMBOL) */
452 /* LOCVAL(LOCALE_SMONDECIMALSEP) */
453 /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */
454 /* LOCVAL(LOCALE_SMONGROUPING) */
455 /* LOCVAL(LOCALE_ICURRDIGITS,"2") */
456 /* LOCVAL(LOCALE_IINTLCURRDIGITS) */
457 LOCVAL(LOCALE_ICURRENCY,"3")
458 LOCVAL(LOCALE_INEGCURR,"8")
459 LOCVAL(LOCALE_SDATE,".")
460 LOCVAL(LOCALE_STIME,":")
461 LOCVAL(LOCALE_SSHORTDATE,"yyyy.mm.dd")
462 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
463 /* LOCVAL(LOCALE_STIMEFORMAT) */
464 LOCVAL(LOCALE_IDATE,"1")
465 /* LOCVAL(LOCALE_ILDATE) */
466 LOCVAL(LOCALE_ITIME,"1")
467 /* LOCVAL(LOCALE_ITIMEMARKPOSN) */
468 /* LOCVAL(LOCALE_ICENTURY) */
469 LOCVAL(LOCALE_ITLZERO,"1")
470 /* LOCVAL(LOCALE_IDAYLZERO) */
471 /* LOCVAL(LOCALE_IMONLZERO) */
472 /* LOCVAL(LOCALE_S1159) */
473 /* LOCVAL(LOCALE_S2359) */
474 /* LOCVAL(LOCALE_ICALENDARTYPE) */
475 /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */
476 /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
477 /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
478 LOCVAL(LOCALE_SDAYNAME1,"lundo")
479 LOCVAL(LOCALE_SDAYNAME2,"mardo")
480 LOCVAL(LOCALE_SDAYNAME3,"merkredo")
481 LOCVAL(LOCALE_SDAYNAME4,"¼aýdo")
482 LOCVAL(LOCALE_SDAYNAME5,"vendredo")
483 LOCVAL(LOCALE_SDAYNAME6,"sabato")
484 LOCVAL(LOCALE_SDAYNAME7,"dimanæo")
485 LOCVAL(LOCALE_SABBREVDAYNAME1,"lu")
486 LOCVAL(LOCALE_SABBREVDAYNAME2,"ma")
487 LOCVAL(LOCALE_SABBREVDAYNAME3,"me")
488 LOCVAL(LOCALE_SABBREVDAYNAME4,"¼a")
489 LOCVAL(LOCALE_SABBREVDAYNAME5,"ve")
490 LOCVAL(LOCALE_SABBREVDAYNAME6,"sa")
491 LOCVAL(LOCALE_SABBREVDAYNAME7,"di")
492 LOCVAL(LOCALE_SMONTHNAME1,"januaro")
493 LOCVAL(LOCALE_SMONTHNAME2,"februaro")
494 LOCVAL(LOCALE_SMONTHNAME3,"marto")
495 LOCVAL(LOCALE_SMONTHNAME4,"aprilo")
496 LOCVAL(LOCALE_SMONTHNAME5,"majo")
497 LOCVAL(LOCALE_SMONTHNAME6,"junio")
498 LOCVAL(LOCALE_SMONTHNAME7,"julio")
499 LOCVAL(LOCALE_SMONTHNAME8,"aýgusto")
500 LOCVAL(LOCALE_SMONTHNAME9,"septembro")
501 LOCVAL(LOCALE_SMONTHNAME10,"oktobro")
502 LOCVAL(LOCALE_SMONTHNAME11,"novembro")
503 LOCVAL(LOCALE_SMONTHNAME12,"decembro")
504 LOCVAL(LOCALE_SMONTHNAME13,"")
505 LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan")
506 LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb")
507 LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar")
508 LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr")
509 LOCVAL(LOCALE_SABBREVMONTHNAME5,"maj")
510 LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun")
511 LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul")
512 LOCVAL(LOCALE_SABBREVMONTHNAME8,"aýg")
513 LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep")
514 LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt")
515 LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
516 LOCVAL(LOCALE_SABBREVMONTHNAME12,"dec")
517 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
518 /* LOCVAL(LOCALE_SPOSITIVESIGN) */
519 /* LOCVAL(LOCALE_SNEGATIVESIGN) */
520 /* LOCVAL(LOCALE_IPOSSIGNPOSN) */
521 /* LOCVAL(LOCALE_INEGSIGNPOSN) */
522 /* LOCVAL(LOCALE_IPOSSYMPRECEDES) */
523 /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */
524 /* LOCVAL(LOCALE_INEGSYMPRECEDES) */
525 /* LOCVAL(LOCALE_INEGSEPBYSPACE) */
526 break; /* LANG(Eo) */
528 case LANG_It:
529 LOCVAL(LOCALE_ILANGUAGE,"9")
530 LOCVAL(LOCALE_SLANGUAGE,"Italiano")
531 LOCVAL(LOCALE_SENGLANGUAGE,"Italian")
532 LOCVAL(LOCALE_SABBREVLANGNAME,"ita")
533 LOCVAL(LOCALE_SNATIVELANGNAME,"Italiano")
534 LOCVAL(LOCALE_ICOUNTRY,"39")
535 LOCVAL(LOCALE_SCOUNTRY,"Italia")
536 LOCVAL(LOCALE_SENGCOUNTRY,"Italy")
537 LOCVAL(LOCALE_SABBREVCTRYNAME,"It")
538 LOCVAL(LOCALE_SNATIVECTRYNAME,"Italia")
539 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
540 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"39")
541 /* Dunno
542 LOCVAL(LOCALE_IDEFAULTCODEPAGE)
543 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
545 LOCVAL(LOCALE_SLIST,";")
546 LOCVAL(LOCALE_IMEASURE,"0")
547 LOCVAL(LOCALE_SDECIMAL,",")
548 LOCVAL(LOCALE_STHOUSAND,".")
550 LOCVAL(LOCALE_SGROUPING)
552 LOCVAL(LOCALE_IDIGITS,"2")
553 LOCVAL(LOCALE_ILZERO,"1")
555 LOCVAL(LOCALE_INEGNUMBER)
556 Is this "0123456789" ??
557 LOCVAL(LOCALE_SNATIVEDIGITS)
559 LOCVAL(LOCALE_SCURRENCY,"Lit.")
561 LOCVAL(LOCALE_SINTLSYMBOL)
562 LOCVAL(LOCALE_SMONDECIMALSEP)
563 LOCVAL(LOCALE_SMONTHOUSANDSEP)
564 LOCVAL(LOCALE_SMONGROUPING)
566 LOCVAL(LOCALE_ICURRDIGITS,"2")
568 LOCVAL(LOCALE_IINTLCURRDIGITS)
570 LOCVAL(LOCALE_ICURRENCY,"3")
571 LOCVAL(LOCALE_INEGCURR,"8")
572 LOCVAL(LOCALE_SDATE,".")
573 LOCVAL(LOCALE_STIME,":")
574 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
575 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
577 LOCVAL(LOCALE_STIMEFORMAT)
579 LOCVAL(LOCALE_IDATE,"1")
581 LOCVAL(LOCALE_ILDATE)
583 LOCVAL(LOCALE_ITIME,"1")
585 LOCVAL(LOCALE_ITIMEMARKPOSN)
586 LOCVAL(LOCALE_ICENTURY)
588 LOCVAL(LOCALE_ITLZERO,"1")
590 LOCVAL(LOCALE_IDAYLZERO)
591 LOCVAL(LOCALE_IMONLZERO)
592 LOCVAL(LOCALE_S1159)
593 LOCVAL(LOCALE_S2359)
594 LOCVAL(LOCALE_ICALENDARTYPE)
595 LOCVAL(LOCALE_IOPTIONALCALENDAR)
596 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
597 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
599 LOCVAL(LOCALE_SDAYNAME1,"Lunedi'")
600 LOCVAL(LOCALE_SDAYNAME2,"Martedi'")
601 LOCVAL(LOCALE_SDAYNAME3,"Mercoledi'")
602 LOCVAL(LOCALE_SDAYNAME4,"Giovedi'")
603 LOCVAL(LOCALE_SDAYNAME5,"Venerdi'")
604 LOCVAL(LOCALE_SDAYNAME6,"Sabato")
605 LOCVAL(LOCALE_SDAYNAME7,"Domenica")
606 LOCVAL(LOCALE_SABBREVDAYNAME1,"Lu")
607 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ma")
608 LOCVAL(LOCALE_SABBREVDAYNAME3,"Me")
609 LOCVAL(LOCALE_SABBREVDAYNAME4,"Gi")
610 LOCVAL(LOCALE_SABBREVDAYNAME5,"Ve")
611 LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa")
612 LOCVAL(LOCALE_SABBREVDAYNAME7,"Do")
613 LOCVAL(LOCALE_SMONTHNAME1,"Gennaio")
614 LOCVAL(LOCALE_SMONTHNAME2,"Febbraio")
615 LOCVAL(LOCALE_SMONTHNAME3,"Marzo")
616 LOCVAL(LOCALE_SMONTHNAME4,"Aprile")
617 LOCVAL(LOCALE_SMONTHNAME5,"Maggio")
618 LOCVAL(LOCALE_SMONTHNAME6,"Giugno")
619 LOCVAL(LOCALE_SMONTHNAME7,"Luglio")
620 LOCVAL(LOCALE_SMONTHNAME8,"Agosto")
621 LOCVAL(LOCALE_SMONTHNAME9,"Settembre")
622 LOCVAL(LOCALE_SMONTHNAME10,"Ottobre")
623 LOCVAL(LOCALE_SMONTHNAME11,"Novembre")
624 LOCVAL(LOCALE_SMONTHNAME12,"Dicembre")
625 LOCVAL(LOCALE_SMONTHNAME13,"")
626 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Gen")
627 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
628 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar")
629 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
630 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mag")
631 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Giu")
632 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Lug")
633 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Ago")
634 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Set")
635 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Ott")
636 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
637 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dic")
638 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
640 LOCVAL(LOCALE_SPOSITIVESIGN)
641 LOCVAL(LOCALE_SNEGATIVESIGN)
642 LOCVAL(LOCALE_IPOSSIGNPOSN)
643 LOCVAL(LOCALE_INEGSIGNPOSN)
644 LOCVAL(LOCALE_IPOSSYMPRECEDES)
645 LOCVAL(LOCALE_IPOSSEPBYSPACE)
646 LOCVAL(LOCALE_INEGSYMPRECEDES)
647 LOCVAL(LOCALE_INEGSEPBYSPACE)
649 break; /* LANG(It) */
652 /*Insert other languages here*/
654 default:
655 break;
656 } /* switch */
658 if(!retLen)
660 if(!retString)fprintf(stderr,"Unkown LC type %lX\n",LCType);
661 else fprintf(stderr,"'%s' not supported for your language.\n",
662 retString);
663 return 0;
666 if(retLen>len)retLen=len;
667 lstrcpyn(buf,retString,len);
668 return retLen;
672 /***********************************************************************
673 * CompareStringA (OLE2NLS.8)
674 * This implementation ignores the locale, and trusts in libc
676 int CompareStringA(DWORD lcid, DWORD fdwStyle,
677 char *s1, int l1, char *s2,int l2)
679 int len,ret;
680 if(fdwStyle & NORM_IGNORENONSPACE)
682 fprintf(stdnimp, "CompareStringA: IGNORENONSPACE not supprted\n");
684 if(fdwStyle & NORM_IGNORESYMBOLS)
685 fprintf(stdnimp, "CompareStringA: IGNORESYMBOLS not supported\n");
686 /* Is strcmp defaulting to string sort or to word sort?? */
687 /* FIXME: Handle NORM_STRINGSORT */
688 l1 = (l1==-1)?strlen(s1):l1;
689 l2 = (l2==-1)?strlen(s2):l2;
690 len = l1<l2 ? l1:l2;
691 ret = (fdwStyle & NORM_IGNORECASE) ?
692 lstrncmpi(s1,s2,len) :
693 strncmp(s1,s2,len);
694 /* not equal, return 1 or 3 */
695 if(ret!=0)return ret+2;
696 /* same len, return 2 */
697 if(l1==l2)return 2;
698 /* the longer one is lexically greater */
699 return (l1<l2)? 1 : 3;