The failure of 1124

by Michael S. Kaplan, published on 2007/02/23 03:01 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2007/02/23/1745885.aspx


The question to the alias was something like this:

Hi

I hit a crash because of an argument exception. The text suggests a non-supported culture ID. I look at culture ID table and could not find ID 1124. This is an English W2K3 server with .Net 2.0. Any insight that caused this?

0:005> dc 00000000016612f8
00000000`016612f8  7881edd8 00000642 0000003e 00000034  ...xB...>...4...
00000000`01661308  00750043 0074006c 00720075 00200065  C.u.l.t.u.r.e. .
00000000`01661318  00440049 00310020 00320031 00200034  I.D. .1.1.2.4. .
00000000`01661328  00300028 00300078 00360034 00290034  (.0.x.0.4.6.4.).
00000000`01661338  00690020 00200073 006f006e 00200074   .i.s. .n.o.t. .
00000000`01661348  00200061 00750073 00700070 0072006f  a. .s.u.p.p.o.r.
00000000`01661358  00650074 00200064 00750063 0074006c  t.e.d. .c.u.l.t.
00000000`01661368  00720075 002e0065 00000000 00000000  u.r.e...........

So, I guess there are two problems here.

First -- don't use LCIDs, use locale names! LCIDs are provided for backwards compatibility with versions of Windows that only have LCIDs in them. Which brings us to the other problem....

Second - the locale in question that uses an LCID of 0x0464 is Filipino - Philippines (fil-PH), which was added in Vista and is not available in any version of Windows before Vista. So it will always fail if you try to ask for it by LCID in a version of Windows like Server 2003 (even if one added a custom culture for fil-PH, it still wouldn't have this LCID attached to it).

There is also an irony attached to all this, one that I will talk about soon. :-)

 

This post brought to you by  (U+2d52, a.k.a.TIFINAGH LETTER YAP)


# Ted. on 23 Feb 2007 10:32 AM:

Windows 2003 Server has locale names?

# Michael S. Kaplan on 23 Feb 2007 10:38 AM:

No, but if you have .NET 2.0 or later installed, it can have custom cultures, and those will have names....

# Mihai on 23 Feb 2007 12:04 PM:

<<First -- don't use LCIDs, use locale names! LCIDs are provided for backwards compatibility with versions of Windows that only have LCIDs in them>>

You mean ALL versions until Vista, which started to sell less than a month ago?

What is a developer to do? Drop XP on a dime?

A compatibility library back-ported to XP (MUI style) would help here. And I hope it does not come too late (MSLU style :-)

# Michael S. Kaplan on 23 Feb 2007 12:39 PM:

Of course we're talking about managed apps here, of course (at least in the case of the original question), though your points are well taken....

MSLU wasn't entirely too late. I think some people like it? :-)

# Mihai on 23 Feb 2007 1:31 PM:

<<MSLU wasn't entirely too late. I think some people like it? :-)>>

People like it because they where also late :-)

My experience is that many companies did not move to Unicode earlier because they did have to support 9x.

It was released July 2001. XP was released Oct. 2001, so Win 2000, exactly the system needing migration most, did not have much benefit from MSLU.

The "Design a Single Unicode App that Runs on Both Windows 98 and Windows 2000" article was out in 1999, but the prospect of wrapping thousands of APIs was not too appealing. Something a small company would not consider to take on, together with it's own projects.

MS wanted people to move to Win2000 and Unicode (a good thing), so providing (asap) a library to help would this have make sense.

Ok, in retrospective 2001 is not so far from 1999 for such a project, and MSLU was not too late, maybe.

But as an outsider my feeling was that it takes forever, and when I heard is out, the perception was really "too bad is soooooo late. Who cares about 9x when XP is out?"


Please consider a donation to keep this archive running, maintained and free of advertising.
Donate €20 or more to receive an offline copy of the whole archive including all images.

go to newer or older post, or back to index or month or day