CultureInfo Class
Represents information about a specific culture including the names of the culture, the writing system, and the calendar used, as well as access to culture-specific objects that provide information for common operations, such as formatting dates and sorting strings.
For a list of all members of this type, see CultureInfo Members.
System.Object
System.Globalization.CultureInfo
[Visual Basic] <Serializable> Public Class CultureInfo Implements ICloneable, IFormatProvider [C#] [Serializable] public class CultureInfo : ICloneable, IFormatProvider [C++] [Serializable] public __gc class CultureInfo : public ICloneable, IFormatProvider [JScript] public Serializable class CultureInfo implements ICloneable, IFormatProvider
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Remarks
The CultureInfo class holds culture-specific information, such as the associated language, sublanguage, country/region, calendar, and cultural conventions. This class also provides access to culture-specific instances of DateTimeFormatInfo, NumberFormatInfo, CompareInfo, and TextInfo. These objects contain the information required for culture-specific operations, such as casing, formatting dates and numbers, and comparing strings.
The String class indirectly uses this class to obtain information about the default culture.
The culture names follow the RFC 1766 standard in the format "<languagecode2>-<country/regioncode2>", where <languagecode2> is a lowercase two-letter code derived from ISO 639-1 and <country/regioncode2> is an uppercase two-letter code derived from ISO 3166. For example, U.S. English is "en-US". In cases where a two-letter language code is not available, the three-letter code derived from ISO 639-2 is used; for example, the three-letter code "div" is used for cultures that use the Dhivehi language. Some culture names have suffixes that specify the script; for example, "-Cyrl" specifies the Cyrillic script, "-Latn" specifies the Latin script.
The following predefined CultureInfo names and identifiers are accepted and used by this class and other classes in the System.Globalization namespace.
| Culture Name | Culture Identifier | Language-Country/Region |
|---|---|---|
| "" (empty string) | 0x007F | invariant culture |
| af | 0x0036 | Afrikaans |
| af-ZA | 0x0436 | Afrikaans - South Africa |
| sq | 0x001C | Albanian |
| sq-AL | 0x041C | Albanian - Albania |
| ar | 0x0001 | Arabic |
| ar-DZ | 0x1401 | Arabic - Algeria |
| ar-BH | 0x3C01 | Arabic - Bahrain |
| ar-EG | 0x0C01 | Arabic - Egypt |
| ar-IQ | 0x0801 | Arabic - Iraq |
| ar-JO | 0x2C01 | Arabic - Jordan |
| ar-KW | 0x3401 | Arabic - Kuwait |
| ar-LB | 0x3001 | Arabic - Lebanon |
| ar-LY | 0x1001 | Arabic - Libya |
| ar-MA | 0x1801 | Arabic - Morocco |
| ar-OM | 0x2001 | Arabic - Oman |
| ar-QA | 0x4001 | Arabic - Qatar |
| ar-SA | 0x0401 | Arabic - Saudi Arabia |
| ar-SY | 0x2801 | Arabic - Syria |
| ar-TN | 0x1C01 | Arabic - Tunisia |
| ar-AE | 0x3801 | Arabic - United Arab Emirates |
| ar-YE | 0x2401 | Arabic - Yemen |
| hy | 0x002B | Armenian |
| hy-AM | 0x042B | Armenian - Armenia |
| az | 0x002C | Azeri |
| az-AZ-Cyrl | 0x082C | Azeri (Cyrillic) - Azerbaijan |
| az-AZ-Latn | 0x042C | Azeri (Latin) - Azerbaijan |
| eu | 0x002D | Basque |
| eu-ES | 0x042D | Basque - Basque |
| be | 0x0023 | Belarusian |
| be-BY | 0x0423 | Belarusian - Belarus |
| bg | 0x0002 | Bulgarian |
| bg-BG | 0x0402 | Bulgarian - Bulgaria |
| ca | 0x0003 | Catalan |
| ca-ES | 0x0403 | Catalan - Catalan |
| zh-HK | 0x0C04 | Chinese - Hong Kong SAR |
| zh-MO | 0x1404 | Chinese - Macau SAR |
| zh-CN | 0x0804 | Chinese - China |
| zh-CHS | 0x0004 | Chinese (Simplified) |
| zh-SG | 0x1004 | Chinese - Singapore |
| zh-TW | 0x0404 | Chinese - Taiwan |
| zh-CHT | 0x7C04 | Chinese (Traditional) |
| hr | 0x001A | Croatian |
| hr-HR | 0x041A | Croatian - Croatia |
| cs | 0x0005 | Czech |
| cs-CZ | 0x0405 | Czech - Czech Republic |
| da | 0x0006 | Danish |
| da-DK | 0x0406 | Danish - Denmark |
| div | 0x0065 | Dhivehi |
| div-MV | 0x0465 | Dhivehi - Maldives |
| nl | 0x0013 | Dutch |
| nl-BE | 0x0813 | Dutch - Belgium |
| nl-NL | 0x0413 | Dutch - The Netherlands |
| en | 0x0009 | English |
| en-AU | 0x0C09 | English - Australia |
| en-BZ | 0x2809 | English - Belize |
| en-CA | 0x1009 | English - Canada |
| en-CB | 0x2409 | English - Caribbean |
| en-IE | 0x1809 | English - Ireland |
| en-JM | 0x2009 | English - Jamaica |
| en-NZ | 0x1409 | English - New Zealand |
| en-PH | 0x3409 | English - Philippines |
| en-ZA | 0x1C09 | English - South Africa |
| en-TT | 0x2C09 | English - Trinidad and Tobago |
| en-GB | 0x0809 | English - United Kingdom |
| en-US | 0x0409 | English - United States |
| en-ZW | 0x3009 | English - Zimbabwe |
| et | 0x0025 | Estonian |
| et-EE | 0x0425 | Estonian - Estonia |
| fo | 0x0038 | Faroese |
| fo-FO | 0x0438 | Faroese - Faroe Islands |
| fa | 0x0029 | Farsi |
| fa-IR | 0x0429 | Farsi - Iran |
| fi | 0x000B | Finnish |
| fi-FI | 0x040B | Finnish - Finland |
| fr | 0x000C | French |
| fr-BE | 0x080C | French - Belgium |
| fr-CA | 0x0C0C | French - Canada |
| fr-FR | 0x040C | French - France |
| fr-LU | 0x140C | French - Luxembourg |
| fr-MC | 0x180C | French - Monaco |
| fr-CH | 0x100C | French - Switzerland |
| gl | 0x0056 | Galician |
| gl-ES | 0x0456 | Galician - Galician |
| ka | 0x0037 | Georgian |
| ka-GE | 0x0437 | Georgian - Georgia |
| de | 0x0007 | German |
| de-AT | 0x0C07 | German - Austria |
| de-DE | 0x0407 | German - Germany |
| de-LI | 0x1407 | German - Liechtenstein |
| de-LU | 0x1007 | German - Luxembourg |
| de-CH | 0x0807 | German - Switzerland |
| el | 0x0008 | Greek |
| el-GR | 0x0408 | Greek - Greece |
| gu | 0x0047 | Gujarati |
| gu-IN | 0x0447 | Gujarati - India |
| he | 0x000D | Hebrew |
| he-IL | 0x040D | Hebrew - Israel |
| hi | 0x0039 | Hindi |
| hi-IN | 0x0439 | Hindi - India |
| hu | 0x000E | Hungarian |
| hu-HU | 0x040E | Hungarian - Hungary |
| is | 0x000F | Icelandic |
| is-IS | 0x040F | Icelandic - Iceland |
| id | 0x0021 | Indonesian |
| id-ID | 0x0421 | Indonesian - Indonesia |
| it | 0x0010 | Italian |
| it-IT | 0x0410 | Italian - Italy |
| it-CH | 0x0810 | Italian - Switzerland |
| ja | 0x0011 | Japanese |
| ja-JP | 0x0411 | Japanese - Japan |
| kn | 0x004B | Kannada |
| kn-IN | 0x044B | Kannada - India |
| kk | 0x003F | Kazakh |
| kk-KZ | 0x043F | Kazakh - Kazakhstan |
| kok | 0x0057 | Konkani |
| kok-IN | 0x0457 | Konkani - India |
| ko | 0x0012 | Korean |
| ko-KR | 0x0412 | Korean - Korea |
| ky | 0x0040 | Kyrgyz |
| ky-KZ | 0x0440 | Kyrgyz - Kazakhstan |
| lv | 0x0026 | Latvian |
| lv-LV | 0x0426 | Latvian - Latvia |
| lt | 0x0027 | Lithuanian |
| lt-LT | 0x0427 | Lithuanian - Lithuania |
| mk | 0x002F | Macedonian |
| mk-MK | 0x042F | Macedonian - FYROM |
| ms | 0x003E | Malay |
| ms-BN | 0x083E | Malay - Brunei |
| ms-MY | 0x043E | Malay - Malaysia |
| mr | 0x004E | Marathi |
| mr-IN | 0x044E | Marathi - India |
| mn | 0x0050 | Mongolian |
| mn-MN | 0x0450 | Mongolian - Mongolia |
| no | 0x0014 | Norwegian |
| nb-NO | 0x0414 | Norwegian (Bokml) - Norway |
| nn-NO | 0x0814 | Norwegian (Nynorsk) - Norway |
| pl | 0x0015 | Polish |
| pl-PL | 0x0415 | Polish - Poland |
| pt | 0x0016 | Portuguese |
| pt-BR | 0x0416 | Portuguese - Brazil |
| pt-PT | 0x0816 | Portuguese - Portugal |
| pa | 0x0046 | Punjabi |
| pa-IN | 0x0446 | Punjabi - India |
| ro | 0x0018 | Romanian |
| ro-RO | 0x0418 | Romanian - Romania |
| ru | 0x0019 | Russian |
| ru-RU | 0x0419 | Russian - Russia |
| sa | 0x004F | Sanskrit |
| sa-IN | 0x044F | Sanskrit - India |
| sr-SP-Cyrl | 0x0C1A | Serbian (Cyrillic) - Serbia |
| sr-SP-Latn | 0x081A | Serbian (Latin) - Serbia |
| sk | 0x001B | Slovak |
| sk-SK | 0x041B | Slovak - Slovakia |
| sl | 0x0024 | Slovenian |
| sl-SI | 0x0424 | Slovenian - Slovenia |
| es | 0x000A | Spanish |
| es-AR | 0x2C0A | Spanish - Argentina |
| es-BO | 0x400A | Spanish - Bolivia |
| es-CL | 0x340A | Spanish - Chile |
| es-CO | 0x240A | Spanish - Colombia |
| es-CR | 0x140A | Spanish - Costa Rica |
| es-DO | 0x1C0A | Spanish - Dominican Republic |
| es-EC | 0x300A | Spanish - Ecuador |
| es-SV | 0x440A | Spanish - El Salvador |
| es-GT | 0x100A | Spanish - Guatemala |
| es-HN | 0x480A | Spanish - Honduras |
| es-MX | 0x080A | Spanish - Mexico |
| es-NI | 0x4C0A | Spanish - Nicaragua |
| es-PA | 0x180A | Spanish - Panama |
| es-PY | 0x3C0A | Spanish - Paraguay |
| es-PE | 0x280A | Spanish - Peru |
| es-PR | 0x500A | Spanish - Puerto Rico |
| es-ES | 0x0C0A | Spanish - Spain |
| es-UY | 0x380A | Spanish - Uruguay |
| es-VE | 0x200A | Spanish - Venezuela |
| sw | 0x0041 | Swahili |
| sw-KE | 0x0441 | Swahili - Kenya |
| sv | 0x001D | Swedish |
| sv-FI | 0x081D | Swedish - Finland |
| sv-SE | 0x041D | Swedish - Sweden |
| syr | 0x005A | Syriac |
| syr-SY | 0x045A | Syriac - Syria |
| ta | 0x0049 | Tamil |
| ta-IN | 0x0449 | Tamil - India |
| tt | 0x0044 | Tatar |
| tt-RU | 0x0444 | Tatar - Russia |
| te | 0x004A | Telugu |
| te-IN | 0x044A | Telugu - India |
| th | 0x001E | Thai |
| th-TH | 0x041E | Thai - Thailand |
| tr | 0x001F | Turkish |
| tr-TR | 0x041F | Turkish - Turkey |
| uk | 0x0022 | Ukrainian |
| uk-UA | 0x0422 | Ukrainian - Ukraine |
| ur | 0x0020 | Urdu |
| ur-PK | 0x0420 | Urdu - Pakistan |
| uz | 0x0043 | Uzbek |
| uz-UZ-Cyrl | 0x0843 | Uzbek (Cyrillic) - Uzbekistan |
| uz-UZ-Latn | 0x0443 | Uzbek (Latin) - Uzbekistan |
| vi | 0x002A | Vietnamese |
| vi-VN | 0x042A | Vietnamese - Vietnam |
The culture identifier "0x0c0a" for "Spanish - Spain" uses the default international sort order; the culture identifier "0x040A", which is also for "Spanish - Spain", uses the traditional sort order. If the CultureInfo is constructed using the "es-ES" culture name, the new CultureInfo uses the default international sort order. To construct a CultureInfo that uses the traditional sort order, use the culture identifier "0x040A" with the constructor. For more information on other cultures that have alternate sorts, see Using Alternate Sort Orders.
The cultures are generally grouped into three sets: the invariant culture, the neutral cultures, and the specific cultures.
The invariant culture is culture-insensitive. You can specify the invariant culture by name using an empty string ("") or by its culture identifier 0x007F. InvariantCulture retrieves an instance of the invariant culture. It is associated with the English language but not with any country/region. It can be used in almost any method in the Globalization namespace that requires a culture. If a security decision depends on a string comparison or a case-change operation, use the InvariantCulture to ensure that the behavior will be consistent regardless of the culture settings of the system. However, the invariant culture must be used only by processes that require culture-independent results, such as system services; otherwise, it produces results that might be linguistically incorrect or culturally inappropriate.
A neutral culture is a culture that is associated with a language but not with a country/region. A specific culture is a culture that is associated with a language and a country/region. For example, "fr" is a neutral culture and "fr-FR" is a specific culture. Note that "zh-CHS" (Simplified Chinese) and "zh-CHT" (Traditional Chinese) are neutral cultures.
The cultures have a hierarchy, such that the parent of a specific culture is a neutral culture and the parent of a neutral culture is the InvariantCulture. The Parent property returns the neutral culture associated with a specific culture.
If the resources for the specific culture are not available in the system, the resources for the neutral culture are used; if the resources for the neutral culture are not available, the resources embedded in the main assembly are used. For more information on the resource fallback process, see Resource Fallback Process.
The list of cultures in the Windows API is slightly different from the list of cultures in the .NET Framework. For example, the neutral culture zh-CHT "Chinese (Traditional)" with culture identifier 0x7C04 is not available in the Windows API. If interoperability with Windows is required (for example, through the p/invoke mechanism), use a specific culture that is defined in the .NET Framework. This will ensure consistency with the equivalent Windows locale, which is identified with the same LCID.
A DateTimeFormatInfo or a NumberFormatInfo can be created only for the invariant culture or for specific cultures, not for neutral cultures.
The user might choose to override some of the values associated with the current culture of Windows through Regional and Language Options (or Regional Options or Regional Settings) in Control Panel. For example, the user might choose to display the date in a different format or to use a currency other than the default for the culture.
If UseUserOverride is true and the specified culture matches the current culture of Windows, the CultureInfo uses those overrides, including user settings for the properties of the DateTimeFormatInfo instance returned by the DateTimeFormat property, the properties of the NumberFormatInfo instance returned by the NumberFormat property, and the properties of the CompareInfo instance returned by the CompareInfo property. If the user settings are incompatible with the culture associated with the CultureInfo (for example, if the selected calendar is not one of the OptionalCalendars), the results of the methods and the values of the properties are undefined.
For cultures that use the euro, the .NET Framework and Windows XP set the default currency as euro; however, older versions of Windows do not. Therefore, if the user of an older version of Windows has not changed the currency setting through Regional Options or Regional Settings in Control Panel, the currency might be incorrect. To use the .NET Framework default setting for the currency, use a CultureInfo constructor overload that accepts a useUserOverride parameter and set it to false.
This class implements the ICloneable interface to enable duplication of CultureInfo objects. It also implements IFormatProvider to supply formatting information to applications.
Example
[Visual Basic, C#, C++] The following code example shows how to create a CultureInfo for "Spanish - Spain" with the international sort and another CultureInfo with the traditional sort.
[Visual Basic] Imports System Imports System.Collections Imports System.Globalization Public Class SamplesCultureInfo Public Shared Sub Main() ' Creates and initializes the CultureInfo which uses the international sort. Dim myCIintl As New CultureInfo("es-ES", False) ' Creates and initializes the CultureInfo which uses the traditional sort. Dim myCItrad As New CultureInfo(&H40A, False) ' Displays the properties of each culture. Console.WriteLine("{0,-33}{1,-25}{2,-25}", "PROPERTY", "INTERNATIONAL", "TRADITIONAL") Console.WriteLine("{0,-33}{1,-25}{2,-25}", "CompareInfo", myCIintl.CompareInfo, myCItrad.CompareInfo) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "DisplayName", myCIintl.DisplayName, myCItrad.DisplayName) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "EnglishName", myCIintl.EnglishName, myCItrad.EnglishName) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "IsNeutralCulture", myCIintl.IsNeutralCulture, myCItrad.IsNeutralCulture) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "IsReadOnly", myCIintl.IsReadOnly, myCItrad.IsReadOnly) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "LCID", myCIintl.LCID, myCItrad.LCID) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "Name", myCIintl.Name, myCItrad.Name) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "NativeName", myCIintl.NativeName, myCItrad.NativeName) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "Parent", myCIintl.Parent, myCItrad.Parent) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "TextInfo", myCIintl.TextInfo, myCItrad.TextInfo) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "ThreeLetterISOLanguageName", myCIintl.ThreeLetterISOLanguageName, myCItrad.ThreeLetterISOLanguageName) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "ThreeLetterWindowsLanguageName", myCIintl.ThreeLetterWindowsLanguageName, myCItrad.ThreeLetterWindowsLanguageName) Console.WriteLine("{0,-33}{1,-25}{2,-25}", "TwoLetterISOLanguageName", myCIintl.TwoLetterISOLanguageName, myCItrad.TwoLetterISOLanguageName) Console.WriteLine() ' Compare two strings using myCIintl. Console.WriteLine("Comparing ""llegar"" and ""lugar""") Console.WriteLine(" With myCIintl.CompareInfo.Compare: {0}", myCIintl.CompareInfo.Compare("llegar", "lugar")) Console.WriteLine(" With myCItrad.CompareInfo.Compare: {0}", myCItrad.CompareInfo.Compare("llegar", "lugar")) End Sub 'Main End Class 'SamplesCultureInfo 'This code produces the following output. ' 'PROPERTY INTERNATIONAL TRADITIONAL 'CompareInfo CompareInfo - 3082 CompareInfo - 1034 'DisplayName Spanish (Spain) Spanish (Spain) 'EnglishName Spanish (Spain) Spanish (Spain) 'IsNeutralCulture False False 'IsReadOnly False False 'LCID 3082 1034 'Name es-ES es-ES 'NativeName espaol (Espaa) espaol (Espaa) 'Parent es es 'TextInfo TextInfo - 3082 TextInfo - 1034 'ThreeLetterISOLanguageName spa spa 'ThreeLetterWindowsLanguageName ESN ESN 'TwoLetterISOLanguageName es es ' 'Comparing "llegar" and "lugar" ' With myCIintl.CompareInfo.Compare: -1 ' With myCItrad.CompareInfo.Compare: 1 [C#] using System; using System.Collections; using System.Globalization; public class SamplesCultureInfo { public static void Main() { // Creates and initializes the CultureInfo which uses the international sort. CultureInfo myCIintl = new CultureInfo( "es-ES", false ); // Creates and initializes the CultureInfo which uses the traditional sort. CultureInfo myCItrad = new CultureInfo( 0x040A, false ); // Displays the properties of each culture. Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "PROPERTY", "INTERNATIONAL", "TRADITIONAL" ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "CompareInfo", myCIintl.CompareInfo, myCItrad.CompareInfo ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "DisplayName", myCIintl.DisplayName, myCItrad.DisplayName ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "EnglishName", myCIintl.EnglishName, myCItrad.EnglishName ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "IsNeutralCulture", myCIintl.IsNeutralCulture, myCItrad.IsNeutralCulture ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "IsReadOnly", myCIintl.IsReadOnly, myCItrad.IsReadOnly ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "LCID", myCIintl.LCID, myCItrad.LCID ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "Name", myCIintl.Name, myCItrad.Name ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "NativeName", myCIintl.NativeName, myCItrad.NativeName ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "Parent", myCIintl.Parent, myCItrad.Parent ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "TextInfo", myCIintl.TextInfo, myCItrad.TextInfo ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "ThreeLetterISOLanguageName", myCIintl.ThreeLetterISOLanguageName, myCItrad.ThreeLetterISOLanguageName ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "ThreeLetterWindowsLanguageName", myCIintl.ThreeLetterWindowsLanguageName, myCItrad.ThreeLetterWindowsLanguageName ); Console.WriteLine( "{0,-33}{1,-25}{2,-25}", "TwoLetterISOLanguageName", myCIintl.TwoLetterISOLanguageName, myCItrad.TwoLetterISOLanguageName ); Console.WriteLine(); // Compare two strings using myCIintl. Console.WriteLine( "Comparing \"llegar\" and \"lugar\"" ); Console.WriteLine( " With myCIintl.CompareInfo.Compare: {0}", myCIintl.CompareInfo.Compare( "llegar", "lugar" ) ); Console.WriteLine( " With myCItrad.CompareInfo.Compare: {0}", myCItrad.CompareInfo.Compare( "llegar", "lugar" ) ); } } /* This code produces the following output. PROPERTY INTERNATIONAL TRADITIONAL CompareInfo CompareInfo - 3082 CompareInfo - 1034 DisplayName Spanish (Spain) Spanish (Spain) EnglishName Spanish (Spain) Spanish (Spain) IsNeutralCulture False False IsReadOnly False False LCID 3082 1034 Name es-ES es-ES NativeName espaol (Espaa) espaol (Espaa) Parent es es TextInfo TextInfo - 3082 TextInfo - 1034 ThreeLetterISOLanguageName spa spa ThreeLetterWindowsLanguageName ESN ESN TwoLetterISOLanguageName es es Comparing "llegar" and "lugar" With myCIintl.CompareInfo.Compare: -1 With myCItrad.CompareInfo.Compare: 1 */ [C++] #using <mscorlib.dll> using namespace System; using namespace System::Collections; using namespace System::Globalization; int main() { // Creates and initializes the CultureInfo which uses the international sort. CultureInfo* myCIintl = new CultureInfo(S"es-ES", false); // Creates and initializes the CultureInfo which uses the traditional sort. CultureInfo* myCItrad = new CultureInfo(0x040A, false); // Displays the properties of each culture. Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"PROPERTY", S"INTERNATIONAL", S"TRADITIONAL"); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"CompareInfo", myCIintl -> CompareInfo, myCItrad -> CompareInfo); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"DisplayName", myCIintl -> DisplayName, myCItrad -> DisplayName); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"EnglishName", myCIintl -> EnglishName, myCItrad -> EnglishName); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"IsNeutralCulture", __box(myCIintl -> IsNeutralCulture), __box(myCItrad -> IsNeutralCulture)); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"IsReadOnly", __box(myCIintl -> IsReadOnly), __box(myCItrad -> IsReadOnly)); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"LCID", __box(myCIintl -> LCID), __box(myCItrad -> LCID)); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"Name", myCIintl -> Name, myCItrad -> Name); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"NativeName", myCIintl -> NativeName, myCItrad -> NativeName); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"Parent", myCIintl -> Parent, myCItrad -> Parent); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"TextInfo", myCIintl -> TextInfo, myCItrad -> TextInfo); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"ThreeLetterISOLanguageName", myCIintl -> ThreeLetterISOLanguageName, myCItrad -> ThreeLetterISOLanguageName); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"ThreeLetterWindowsLanguageName", myCIintl -> ThreeLetterWindowsLanguageName, myCItrad -> ThreeLetterWindowsLanguageName); Console::WriteLine(S"{0,-33}{1,-25}{2,-25}", S"TwoLetterISOLanguageName", myCIintl -> TwoLetterISOLanguageName, myCItrad -> TwoLetterISOLanguageName); Console::WriteLine(); // Compare two strings using myCIintl -> Console::WriteLine(S"Comparing \"llegar\" and \"lugar\""); Console::WriteLine(S" With myCIintl -> CompareInfo -> Compare: {0}", __box(myCIintl -> CompareInfo -> Compare(S"llegar", S"lugar"))); Console::WriteLine(S" With myCItrad -> CompareInfo -> Compare: {0}", __box(myCItrad -> CompareInfo -> Compare(S"llegar", S"lugar"))); } /* This code produces the following output. PROPERTY INTERNATIONAL TRADITIONAL CompareInfo CompareInfo - 3082 CompareInfo - 1034 DisplayName Spanish (Spain) Spanish (Spain) EnglishName Spanish (Spain) Spanish (Spain) IsNeutralCulture False False IsReadOnly False False LCID 3082 1034 Name es-ES es-ES NativeName espaol (Espaa) espaol (Espaa) Parent es es TextInfo TextInfo - 3082 TextInfo - 1034 ThreeLetterISOLanguageName spa spa ThreeLetterWindowsLanguageName ESN ESN TwoLetterISOLanguageName es es Comparing "llegar" and "lugar" With myCIintl -> CompareInfo -> Compare: -1 With myCItrad -> CompareInfo -> Compare: 1 */
[Visual Basic, C#, C++] The following code example determines the parent culture of each specific culture using the Chinese language.
[Visual Basic] Imports System Imports System.Globalization Public Class SamplesCultureInfo Public Shared Sub Main() ' Prints the header. Console.WriteLine("SPECIFIC CULTURE PARENT CULTURE") ' Determines the specific cultures that use the Chinese language, and displays the parent culture. Dim ci As CultureInfo For Each ci In CultureInfo.GetCultures(CultureTypes.SpecificCultures) If ci.TwoLetterISOLanguageName = "zh" Then Console.Write("0x{0} {1} {2,-37}", ci.LCID.ToString("X4"), ci.Name, ci.EnglishName) Console.WriteLine("0x{0} {1} {2}", ci.Parent.LCID.ToString("X4"), ci.Parent.Name, ci.Parent.EnglishName) End If Next ci End Sub 'Main End Class 'SamplesCultureInfo 'This code produces the following output. ' 'SPECIFIC CULTURE PARENT CULTURE '0x0404 zh-TW Chinese (Taiwan) 0x7C04 zh-CHT Chinese (Traditional) '0x0804 zh-CN Chinese (People's Republic of China) 0x0004 zh-CHS Chinese (Simplified) '0x0C04 zh-HK Chinese (Hong Kong S.A.R.) 0x7C04 zh-CHT Chinese (Traditional) '0x1004 zh-SG Chinese (Singapore) 0x0004 zh-CHS Chinese (Simplified) '0x1404 zh-MO Chinese (Macau S.A.R.) 0x0004 zh-CHS Chinese (Simplified) [C#] using System; using System.Globalization; public class SamplesCultureInfo { public static void Main() { // Prints the header. Console.WriteLine( "SPECIFIC CULTURE PARENT CULTURE" ); // Determines the specific cultures that use the Chinese language, and displays the parent culture. foreach ( CultureInfo ci in CultureInfo.GetCultures( CultureTypes.SpecificCultures ) ) { if ( ci.TwoLetterISOLanguageName == "zh" ) { Console.Write( "0x{0} {1} {2,-37}", ci.LCID.ToString("X4"), ci.Name, ci.EnglishName ); Console.WriteLine( "0x{0} {1} {2}", ci.Parent.LCID.ToString("X4"), ci.Parent.Name, ci.Parent.EnglishName ); } } } } /* This code produces the following output. SPECIFIC CULTURE PARENT CULTURE 0x0404 zh-TW Chinese (Taiwan) 0x7C04 zh-CHT Chinese (Traditional) 0x0804 zh-CN Chinese (People's Republic of China) 0x0004 zh-CHS Chinese (Simplified) 0x0C04 zh-HK Chinese (Hong Kong S.A.R.) 0x7C04 zh-CHT Chinese (Traditional) 0x1004 zh-SG Chinese (Singapore) 0x0004 zh-CHS Chinese (Simplified) 0x1404 zh-MO Chinese (Macau S.A.R.) 0x0004 zh-CHS Chinese (Simplified) */ [C++] #using <mscorlib.dll> using namespace System; using namespace System::Globalization; int main() { // Prints the header. Console::WriteLine(S"SPECIFIC CULTURE PARENT CULTURE" ); // Determines the specific cultures that use the Chinese language, // and displays the parent culture. System::Collections::IEnumerator* en = CultureInfo::GetCultures(CultureTypes::SpecificCultures)->GetEnumerator(); while (en->MoveNext()) { CultureInfo* ci = __try_cast<CultureInfo*>(en->Current); if (ci->TwoLetterISOLanguageName->Equals(S"zh")) { Console::Write(S"0x{0} {1} {2,-37}", ci->LCID.ToString("X4"), ci->Name, ci->EnglishName); Console::WriteLine(S"0x{0} {1} {2}", ci->Parent->LCID.ToString(S"X4"), ci->Parent->Name, ci->Parent->EnglishName); } } } /* This code produces the following output. SPECIFIC CULTURE PARENT CULTURE 0x0404 zh-TW Chinese (Taiwan) 0x7C04 zh-CHT Chinese (Traditional) 0x0804 zh-CN Chinese (People's Republic of China) 0x0004 zh-CHS Chinese (Simplified) 0x0C04 zh-HK Chinese (Hong Kong S.A.R.) 0x7C04 zh-CHT Chinese (Traditional) 0x1004 zh-SG Chinese (Singapore) 0x0004 zh-CHS Chinese (Simplified) 0x1404 zh-MO Chinese (Macau S.A.R.) 0x0004 zh-CHS Chinese (Simplified) */
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System.Globalization
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework
Assembly: Mscorlib (in Mscorlib.dll)
See Also
CultureInfo Members | System.Globalization Namespace | RegionInfo