I’m Shawn Steele, a Senior Software Development Engineer with Windows International and I love playing with strange locales.


Users choose their user locale during system setup or through the Regional and Language Options Control Panel.  In Vista (& Server 2008) we’ve started allowing “custom locales” to be installed by the machine admin for the users to choose from.  Those locales can be any locale the user creates with the Microsoft Locale Builder tool (available at http://www.microsoft.com/downloads/details.aspx?FamilyID=e4588c5e-8f21-45cc-b862-38df8d9bd528&displaylang=en ). 


For an application developer the most interesting things about custom locales are that:


A)     They change the data returned by system APIs such as GetLocaleInfo(), perhaps even to unexpected values, such as short or long strings, or unanticipated orders, and

B)      Custom locales all get the same LCID (locale ID) and are instead differentiated by name.  This makes it important for applications to either use LOCALE_USER_DEFAULT or use locale names instead of LCIDs.  If your application doesn’t do this, then users may have a reduced experience with your app.


To support the named locales we added new Ex versions of the NLS functions that take locales, such as CompareStringEx(), GetLocaleInfoEx(), GetDateFormatEx(), GetTimeFormatEx(), etc.


For more info about custom locales and locales in general (and other globalization issues) you can look at my blog, http://blogs.msdn.com/shawnste there’s even a Klingon custom locale there J.  Kieran & I also wrote an article for MSDN which is available at http://msdn.microsoft.com/msdnmag/issues/06/12/LocaleHero/default.aspx


Shawn Steele

Senior Software Development Engineer

Windows International