What’s with RegionInfo(en-US) type names?

In .Net 2.0 you can construct a RegionInfo() from a full culture name (ie: en-US instead of en).  In fact, counterintuitive though it may be, the full culture name is actually preferred.

This is because, despite the best intent of the original design, region information sometimes depends on more than just the region name.  An obvious example is "en-CA" and "fr-CA" for English and French Canada.  One gives you a currency name of "Canadian Dollar", and the other "Dollar canadien".  Azerbaijan is perhaps more obvious with az-Latn-AZ returning Azərbaycanca for the country name and az-Cyrl-AZ returning Азәрбајҹан.

For consistency, a region constructed with a full culture name also returns then same culture name (so that it round trips if you try to construct it again).  And since the language and script are necessary, a full culture name is recommended anyway.  If the ISO name is needed, the TwoLetterISORegionName and ThreeLetterISORegionName properties can be used.

See also CultureInfo.Name, ToString, LCID & CompareInfo.Name

Happy Holidays,


Skip to main content