Locked History Actions

MicrosoftCertification/70-536/MyNotes/Globalization

.NET Framework Classes

  • CultureInfo

  • CurrentUICulture
  • RegionInfo

  • CompareInfo and CompareOptions enumeration

  • DateTimeFormatInfo

  • NumberFormatInfo

  • CultureAndRegionInfoBuilder and CultureAndRegionModifiers

Sample Code

Here is some IronPython code demonstrating the use of these classes

from System.Threading import *
from System.Globalization import *


#CultureInfo 
MyCultureInfo = Thread.CurrentThread.CurrentCulture
MyCultureInfo
MyCultureInfo = Thread.CurrentThread.CurrentCulture
print MyCultureInfo.Name
print MyCultureInfo.NativeName
print MyCultureInfo.TwoLetterISOLanguageName

#RegionInfo
MyRegionInfo = RegionInfo(Thread.CurrentThread.CurrentCulture.LCID)
print MyRegionInfo.DisplayName
print MyRegionInfo.EnglishName
print MyRegionInfo.CurrencySymbol
print

#CompareInfo, DateTimeFormatInfo, NumberFormatInfo
OtherCultureInfo = CultureInfo("fr-FR")
MyMonday =  MyCultureInfo.DateTimeFormat.DayNames[1]
print MyMonday
OtherMonday = OtherCultureInfo.DateTimeFormat.DayNames[1]
print OtherMonday

MyCompareInfo = MyCultureInfo.CompareInfo
print MyCompareInfo.Compare(MyMonday, MyMonday, CompareOptions.IgnoreCase)
print MyCompareInfo.Compare(MyMonday, OtherMonday, CompareOptions.IgnoreCase)
print

#NumberFormatInfo
print MyCultureInfo.NumberFormat.PositiveSign
print 

# CultureAndRegionInfoBuiler and CultureAndRegionModifiers
# some additonal steps needed to access this class
# import the clr module and add reference to the sysglobl assembly
# do an import again to bring these into the namespace
import clr
clr.AddReferenceToFileAndPath(r"C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\sysglobl.dll")
from System.Globalization import CultureAndRegionInfoBuilder
from System.Globalization import CultureAndRegionModifiers

MyCultureBuilder = CultureAndRegionInfoBuilder("my-culture", CultureAndRegionModifiers.None)
MyCultureBuilder.LoadDataFromCultureInfo( CultureInfo("en-US") )
MyCultureBuilder.LoadDataFromRegionInfo( RegionInfo("US") )
MyNumberFormatInfo = NumberFormatInfo()
MyNumberFormatInfo.CurrencySymbol = "$!"
MyCultureBuilder.NumberFormat = MyNumberFormatInfo
try:
    # note static method
    CultureAndRegionInfoBuilder.Unregister("my-culture")
except:
    print "my-culture was already registered, re-registering"
MyCultureBuilder.Register()

MyCustomCulture = CultureInfo("my-culture")
print MyCustomCulture.NumberFormat.CurrencySymbol

print 

The expected output is

en-US
English (United States)
en
United States
United States
$

Monday
lundi
0
1

+

$!

Book Feedback

The book start off explaining a bit about different categories of culture including Netural, Invariant and Specific Culture - it does a pretty poor job. This sample chapter from http://www.dotneti18n.com does a bit better job. A small excerpt here explains:

  • An invariant culture is represented as an empty string. E.g. "". (As opposed to "en-US".)
  • A netural culture is represented by just the language portion, E.g. "en", and does not represent localization
  • A specific culture specifies all details - both languge and culture, e.g. "en-US"


CategoryMicrosoftCertification