LCIDs are are really bad idea

Well, it's been 4 years since I posted about the deprecation of LCIDs, though I started discussing the topic over a decade ago. It's pretty much time to dump LCIDs.

LCIDs were an OK idea when they were invented, though a couple quirks quickly broke their pattern.  However on a modern Windows 10 machine they're not nearly enough information to describe their intended locale.

In the past I've warned that there isn't enough room in the namespace for LCIDs for every locale, and then I warned about the restrictions that would prevent applications from seeing custom locales.  And then may have mentioned that we've added a few esoteric locales without LCIDs.

But in the modern Windows, half of the locales we ship in-box do not have assigned LCIDs.  That means that applications depending on LCIDs are unable to accurately specify half the locales and languages on the box.

Even worse, there are thousands of languages in the real world and hundreds of countries.  Users that have correctly requested or tagged data with BCP-47 languages ids for those languages will be not be recognized by applications limited to LCIDs.  That leads users to either mis-tag the data or mislead the computer about their desired settings.  Which makes matching even more difficult.

Additionally the LCID concept confuses other systems that depend on the standard names, making data interchange and requests with LCIDs awkward and error prone.  Those systems have to do conversions and have little incentive to ensure that the LCID code path is perfect.

With Windows 10, Windows will do it's best to provide information for whatever language tag the user or application has requested, meaning that there are millions (literally) of valid tags that the system recognizes.  Less than two hundredths of a percent of those have assigned LCIDs.  0.02%.

So: Please don't use LCIDs..


Comments (0)

Skip to main content