233 private static readonly
object s_lock =
new object();
263 {
"AZ",
"az-Cyrl-AZ" },
264 {
"BA",
"bs-Latn-BA" },
298 {
"CS",
"sr-Cyrl-CS" },
388 {
"ME",
"sr-Latn-ME" },
438 {
"RS",
"sr-Latn-RS" },
467 {
"TJ",
"tg-Cyrl-TJ" },
483 {
"UZ",
"uz-Cyrl-UZ" },
560 if (
string.IsNullOrEmpty(
text))
573 if (
string.IsNullOrEmpty(
text))
594 if (
string.IsNullOrEmpty(
text))
599 if (!(
sName ==
"zh-CHS"))
601 if (
sName ==
"zh-CHT")
614 if (
string.IsNullOrEmpty(
text))
859 for (
int i = 0; i < num; i++)
1009 if (
string.IsNullOrEmpty(
text))
1027 for (
int i = 0; i <
value.strings.Count; i++)
1054 if (
string.IsNullOrEmpty(cultureName))
1138 cultureData._bUseOverrides =
false;
1139 cultureData._bUseOverridesUserSetting =
false;
1140 cultureData._sRealName =
"";
1141 cultureData._sWindowsName =
"";
1142 cultureData._sName =
"";
1143 cultureData._sParent =
"";
1144 cultureData._bNeutral =
false;
1145 cultureData._sEnglishDisplayName =
"Invariant Language (Invariant Country)";
1146 cultureData._sNativeDisplayName =
"Invariant Language (Invariant Country)";
1147 cultureData._sSpecificCulture =
"";
1148 cultureData._sISO639Language =
"iv";
1149 cultureData._sISO639Language2 =
"ivl";
1150 cultureData._sEnglishLanguage =
"Invariant Language";
1151 cultureData._sNativeLanguage =
"Invariant Language";
1152 cultureData._sAbbrevLang =
"IVL";
1153 cultureData._sConsoleFallbackName =
"";
1154 cultureData._iInputLanguageHandle = 127;
1155 cultureData._sRegionName =
"IV";
1156 cultureData._sEnglishCountry =
"Invariant Country";
1157 cultureData._sNativeCountry =
"Invariant Country";
1158 cultureData._sISO3166CountryName =
"IV";
1159 cultureData._sISO3166CountryName2 =
"ivc";
1160 cultureData._iGeoId = 244;
1161 cultureData._sPositiveSign =
"+";
1162 cultureData._sNegativeSign =
"-";
1163 cultureData._iDigits = 2;
1164 cultureData._iNegativeNumber = 1;
1165 cultureData._waGrouping =
new int[1] { 3 };
1166 cultureData._sDecimalSeparator =
".";
1167 cultureData._sThousandSeparator =
",";
1168 cultureData._sNaN =
"NaN";
1169 cultureData._sPositiveInfinity =
"Infinity";
1170 cultureData._sNegativeInfinity =
"-Infinity";
1171 cultureData._iNegativePercent = 0;
1172 cultureData._iPositivePercent = 0;
1173 cultureData._sPercent =
"%";
1174 cultureData._sPerMille =
"‰";
1175 cultureData._sCurrency =
"¤";
1176 cultureData._sIntlMonetarySymbol =
"XDR";
1177 cultureData._sEnglishCurrency =
"International Monetary Fund";
1178 cultureData._sNativeCurrency =
"International Monetary Fund";
1179 cultureData._iCurrencyDigits = 2;
1180 cultureData._iCurrency = 0;
1181 cultureData._iNegativeCurrency = 0;
1182 cultureData._waMonetaryGrouping =
new int[1] { 3 };
1183 cultureData._sMonetaryDecimal =
".";
1184 cultureData._sMonetaryThousand =
",";
1185 cultureData._iMeasure = 0;
1186 cultureData._sListSeparator =
",";
1187 cultureData._sTimeSeparator =
":";
1188 cultureData._sAM1159 =
"AM";
1189 cultureData._sPM2359 =
"PM";
1190 cultureData._saLongTimes =
new string[1] {
"HH:mm:ss" };
1191 cultureData._saShortTimes =
new string[4] {
"HH:mm",
"hh:mm tt",
"H:mm",
"h:mm tt" };
1192 cultureData._saDurationFormats =
new string[1] {
"HH:mm:ss" };
1193 cultureData._iFirstDayOfWeek = 0;
1194 cultureData._iFirstWeekOfYear = 0;
1195 cultureData._waCalendars =
new CalendarId[1] { CalendarId.GREGORIAN };
1201 cultureData._iReadingLayout = 0;
1202 cultureData._iLanguage = 127;
1203 cultureData._iDefaultAnsiCodePage = 1252;
1204 cultureData._iDefaultOemCodePage = 437;
1205 cultureData._iDefaultMacCodePage = 10000;
1206 cultureData._iDefaultEbcdicCodePage = 37;
1209 cultureData._sLocalizedCountry =
cultureData._sNativeCountry;
1216 if (
string.IsNullOrEmpty(cultureName))
1238 if (flag &&
value !=
null)
1260 if (name.Length > 85)
1266 for (; i < name.Length && name[i] !=
'-' && name[i] !=
'_'; i++)
1268 if (name[i] >=
'A' && name[i] <=
'Z')
1270 span[i] = (char)(name[i] + 32);
1278 if (i < name.Length)
1282 for (; i < name.Length; i++)
1284 if (name[i] >=
'a' && name[i] <=
'z')
1286 span[i] = (char)(name[i] - 32);
1314 cultureData._iLanguage = 4096;
1317 if (cultureName.Length == 1 && (cultureName[0] ==
'C' || cultureName[0] ==
'c'))
1322 cultureData2._sRealName = cultureName;
1338 if (!(
text ==
"zh-chs"))
1340 if (!(
text ==
"zh-cht"))
1375 if (!
string.IsNullOrEmpty(
text))
1399 for (
int i = 0; i <
longTimes.Length; i++)
1410 for (
int i = 0; i < time.Length; i++)
1412 if (time[i] ==
'\'')
1416 else if (time[i] ==
'\\')
1454 while (
index < time.Length)
1456 switch (time[
index])
1463 if (time[
index] ==
' ')
1603 for (
int i =
start; i < str.Length && i <= end; i++)
1667 return string.Empty;
1682 if (i + 1 <
format.Length)
1686 if (c !=
'\'' && c !=
'\\')
1717 nfi._numberDecimalDigits =
_iDigits;
1741 nfi._nativeDigits =
new string[10];
1742 for (
int i = 0; i <
nfi._nativeDigits.Length; i++)
1757 nfi._percentDecimalDigits =
nfi._numberDecimalDigits;
1758 nfi._percentDecimalSeparator =
nfi._numberDecimalSeparator;
1759 nfi._percentGroupSizes =
nfi._numberGroupSizes;
1760 nfi._percentGroupSeparator =
nfi._numberGroupSeparator;
1761 if (
string.IsNullOrEmpty(
nfi._positiveSign))
1763 nfi._positiveSign =
"+";
1765 if (
string.IsNullOrEmpty(
nfi._currencyDecimalSeparator))
1767 nfi._currencyDecimalSeparator =
nfi._numberDecimalSeparator;
1886 _bNeutral = TwoLetterISOCountryName.Length == 0;
1921 return string.Empty;
1959 return string.Empty;
2113 for (
int i = 0; i <
locales; i += num)
2125 return list.ToArray();
2145 for (
int i = 0; i <
subject.Length; i++)
2152 if (i == 0 || i ==
subject.Length - 1)
2277 uint num = (uint)
type;
2309 value.cultureName =
null;
2310 value.regionName = regionName;
2312 if (
value.cultureName !=
null)
2356 for (
int i = 0; i <
str.Length; i++)
2362 if (i + 1 <
str.Length &&
str[i + 1] ==
'\'')
2379 else if (
str[i] ==
'\\')
2402 for (
int i = 0; i <
array.Length; i++)
2412 if (
string.IsNullOrEmpty(
win32Str))
2414 return new int[1] { 3 };
2423 array =
new int[win32Str.Length / 2];
2427 array =
new int[win32Str.Length / 2 + 2];
2436 return new int[1] { 3 };
2465 reference.cultureName =
text;
2511 if (
value.strings.Count > 0)
2516 uint
lctype = ((dwFlags == 2) ? 121
u : 4099
u);
2570 for (
int i = 0; i <
array.Length; i++)
2694 return new string[1] {
text };
static bool IsPredefinedLocale(string localeName)
static unsafe bool GetLocaleName(string localeName, char *value, int valueLength)
static unsafe bool GetLocaleTimeFormat(string localeName, bool shortFormat, char *value, int valueLength)
static unsafe bool GetLocaleInfoString(string localeName, uint localeStringData, char *value, int valueLength, string uiLocaleName=null)
static bool GetLocaleInfoInt(string localeName, uint localeNumberData, ref int value)
static int GetLocales([Out] char[] value, int valueLength)
static bool GetLocaleInfoGroupingSizes(string localeName, uint localeGroupingData, ref int primaryGroupSize, ref int secondaryGroupSize)
static unsafe int ResolveLocaleName(string lpNameToResolve, char *lpLocaleName, int cchLocaleName)
static unsafe bool EnumSystemLocalesEx(delegate *unmanaged< char *, uint, void *, BOOL > lpLocaleEnumProcEx, uint dwFlags, void *lParam, IntPtr reserved)
static int LocaleNameToLCID(string lpName, uint dwFlags)
static unsafe int GetGeoInfo(int location, int geoType, char *lpGeoData, int cchData, int LangId)
static unsafe int LCIDToLocaleName(int locale, char *pLocaleName, int cchName, uint dwFlags)
static int GetUserGeoID(int geoClass)
static unsafe int GetLocaleInfoEx(string lpLocaleName, uint LCType, void *lpLCData, int cchData)
static unsafe bool EnumTimeFormatsEx(delegate *unmanaged< char *, void *, BOOL > lpTimeFmtEnumProcEx, string lpLocaleName, uint dwFlags, void *lParam)
static unsafe void Copy(Array sourceArray, Array destinationArray, int length)
bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value)
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
void Add(TKey key, TValue value)
string[] saAbbrevMonthGenitiveNames
static int GetCalendarsCore(string localeName, bool useUserOverride, CalendarId[] calendars)
string[] saSuperShortDayNames
string[] saAbbrevMonthNames
static readonly CalendarData Invariant
string[] saAbbrevDayNames
string[] saMonthGenitiveNames
string[] saLeapYearMonthNames
string[] saAbbrevEnglishEraNames
string[] saAbbrevEraNames
string PositiveInfinitySymbol
string GetLocaleInfoCore(string localeName, LocaleStringData type, string uiCultureName=null)
static string GetDateSeparator(string format)
string NlsGetLanguageDisplayName(string cultureName)
string _sNegativeInfinity
bool IsSupplementalCustomCulture
string EnglishCountryName
static volatile Dictionary< string, string > s_regionNames
static CultureInfo[] GetCultures(CultureTypes types)
string CurrencyEnglishName
int IcuGetLocaleInfo(LocaleNumberData type)
int[] GetLocaleInfoCoreUserOverride(LocaleGroupingData type)
string _sDecimalSeparator
int GetOemCodePage(string cultureName)
int _iDefaultEbcdicCodePage
string NegativeInfinitySymbol
unsafe bool NlsIsReplacementCulture
static int[] ConvertWin32GroupString(string win32Str)
static bool NlsIsEnsurePredefinedLocaleName(string name)
string[] AbbreviatedMonthNames(CalendarId calendarId)
static volatile Dictionary< string, CultureData > s_cachedCultures
bool InitCompatibilityCultureData()
string[] DeriveShortTimesFromLong()
@ Iso639LanguageThreeLetterName
@ MonetaryDecimalSeparator
@ MonetaryThousandSeparator
@ Iso639LanguageTwoLetterName
@ AbbreviatedWindowsLanguageName
static volatile Dictionary< string, CultureData > s_cachedRegions
string IcuGetLanguageDisplayName(string cultureName)
int GetLocaleInfoCore(LocaleNumberData type)
static int NlsLocaleNameToLCID(string cultureName)
static int GetIndexOfNextTokenAfterSeconds(string time, int index, out bool containsSpace)
CalendarData GetCalendar(CalendarId calendarId)
string NlsGetLocaleInfo(LocaleStringData type)
string _sISO3166CountryName
static unsafe Interop.BOOL EnumSystemLocalesProc(char *lpLocaleString, uint flags, void *contextHandle)
bool InitIcuCultureDataCore()
string GetLocaleInfoCore(LocaleStringData type, string uiCultureName=null)
static unsafe Interop.BOOL EnumTimeCallback(char *lpTimeFormatString, void *lParam)
static unsafe CultureData NlsGetCultureDataFromRegionName(string regionName)
int GetMacCodePage(string cultureName)
string CalendarName(CalendarId calendarId)
string[] YearMonths(CalendarId calendarId)
volatile string[] _saLongTimes
string NlsGetThreeLetterWindowsLanguageName(string cultureName)
string NlsGetRegionDisplayName()
unsafe bool InitCultureDataCore()
int _iInputLanguageHandle
string _sISO3166CountryName2
string GetLanguageDisplayNameCore(string cultureName)
string ThreeLetterISOLanguageName
int GetEbcdicCodePage(string cultureName)
string LocalizedCountryName
static unsafe bool GetLocaleName(string localeName, out string windowsName)
static Dictionary< string, string > RegionNames
static CultureData CreateCultureData(string cultureName, bool useUserOverride)
static bool IsValidCultureName(string subject, out int indexOfUnderscore)
string CurrencyNativeName
int PercentPositivePattern
string[] DayNames(CalendarId calendarId)
static int IcuLocaleNameToLCID(string cultureName)
@ PositiveMonetaryNumberFormat
@ MonetaryFractionalDigitsCount
@ NegativeMonetaryNumberFormat
string _sMonetaryThousand
int NlsGetLocaleInfo(LocaleNumberData type)
string[] ShortDates(CalendarId calendarId)
static string AnsiToLower(string testString)
string[] AbbrevEraNames(CalendarId calendarId)
static string ConvertIcuTimeFormatString(ReadOnlySpan< char > icuFormatString)
string _sLocalizedCountry
static string StripSecondsFromPattern(string time)
string _sPositiveInfinity
string _sIntlMonetarySymbol
string LocalizedLanguageName
static int IcuGetDigitSubstitution(string cultureName)
static bool IsCustomCultureId(int cultureId)
static volatile CultureData s_Invariant
string NlsGetConsoleFallbackName(string cultureName)
int NlsGetFirstDayOfWeek()
static string NormalizeCultureName(string name, out bool isNeutralName)
string NativeLanguageName
string _sThousandSeparator
static CultureData CreateCultureWithInvariantData()
void InitUserOverride(bool useUserOverride)
string GetLocaleInfoCoreUserOverride(LocaleStringData type)
static string GetTimeSeparator(string format)
static int IcuGetGeoId(string cultureName)
static CultureData GetCultureData(string cultureName, bool useUserOverride)
static string UnescapeNlsString(string str, int start, int end)
bool ShouldUseUserOverrideNlsData
string TwoLetterISOCountryName
string[] GetTimeFormatsCore(bool shortFormat)
static string IcuGetConsoleFallbackName(string cultureName)
static string[] ReescapeWin32Strings(string[] array)
int[] _waMonetaryGrouping
string SCONSOLEFALLBACKNAME
string DateSeparator(CalendarId calendarId)
int GetAnsiCodePage(string cultureName)
string[] AbbreviatedGenitiveMonthNames(CalendarId calendarId)
static string IcuGetRegionDisplayName()
static string GetLocaleInfoFromLCType(string localeName, uint lctype, bool useUserOverride)
string IcuGetTimeFormatString()
int PercentNegativePattern
static unsafe int GetLocaleInfoEx(string lpLocaleName, uint lcType, char *lpLCData, int cchData)
string SpecificCultureName
string MonthDay(CalendarId calendarId)
bool _bUseOverridesUserSetting
static int ConvertFirstDayOfWeekMonToSun(int iTemp)
unsafe string IcuGetTimeFormatString(bool shortFormat)
int _iDefaultAnsiCodePage
static unsafe Interop.BOOL EnumAllSystemLocalesProc(char *lpLocaleString, uint flags, void *contextHandle)
volatile string[] _saDurationFormats
static string IcuGetListSeparator(string cultureName)
string ThreeLetterISOCountryName
static string GetSeparator(string format, string timeParts)
static bool IcuIsEnsurePredefinedLocaleName(string name)
int[] IcuGetLocaleInfo(LocaleGroupingData type)
static unsafe CultureInfo[] NlsEnumCultures(CultureTypes types)
string _sConsoleFallbackName
static int IndexOfTimePart(string format, int startIndex, string timeParts)
static CultureData IcuGetCultureDataFromRegionName(string regionName)
string[] AbbreviatedDayNames(CalendarId calendarId)
static unsafe string GetLocaleInfoEx(string localeName, uint field)
volatile CalendarId[] _waCalendars
static bool IsWin32Installed
CalendarData[] _calendars
static CultureData Invariant
bool IsReplacementCulture
static string IcuGetThreeLetterWindowsLanguageName(string cultureName)
static CultureInfo[] IcuEnumCultures(CultureTypes types)
string IcuGetLocaleInfo(LocaleStringData type, string uiCultureName=null)
string[] LongDates(CalendarId calendarId)
string NlsGetTimeFormatString()
int[] NlsGetLocaleInfo(LocaleGroupingData type)
string[] AbbreviatedEnglishEraNames(CalendarId calendarId)
string ThreeLetterWindowsLanguageName
void GetNFIValues(NumberFormatInfo nfi)
string TwoLetterISOLanguageName
string[] LeapYearMonthNames(CalendarId calendarId)
int GetLocaleInfoCoreUserOverride(LocaleNumberData type)
unsafe string IcuGetLocaleInfo(string localeName, LocaleStringData type, string uiCultureName=null)
string[] GenitiveMonthNames(CalendarId calendarId)
string[] EraNames(CalendarId calendarId)
static CultureData GetCultureData(int culture, bool bUseUserOverride)
static unsafe int GetLocaleInfoExInt(string localeName, uint field)
static void ClearCachedData()
string EnglishLanguageName
string NlsGetLocaleInfo(string localeName, LocaleStringData type)
static string ReescapeWin32String(string str)
string[] SuperShortDayNames(CalendarId calendarId)
static CultureData GetCultureDataForRegion(string cultureName, bool useUserOverride)
static readonly object s_lock
static unsafe string LCIDToLocaleName(int culture)
volatile string[] _saShortTimes
string[] MonthNames(CalendarId calendarId)
static unsafe string[] nativeEnumTimeFormats(string localeName, uint dwFlags, bool useUserOverride)
string _sNativeDisplayName
static unsafe CultureData GetCurrentRegionData()
string _sEnglishDisplayName
static bool VerifyCultureName(string cultureName, bool throwException)
static CultureInfo CurrentUICulture
static Calendar GetCalendarInstance(CalendarId calType)
static CultureInfo UserDefaultUICulture
static CultureInfo CurrentCulture
static ? string UserDefaultLocaleName
static CultureInfo InvariantCulture
static CultureInfo GetUserDefaultCulture()
static CultureInfo GetCultureInfo(int culture)
static ? CultureInfo DefaultThreadCurrentUICulture
static bool PredefinedCulturesOnly
static string GetSpecificCultureName(string cultureName)
static string GetThreeLetterWindowsLanguageName(string cultureName)
static int GetLocaleDataNumericPart(string cultureName, IcuLocaleDataParts part)
static string GetConsoleUICulture(string cultureName)
static unsafe string ToLowerAsciiInvariant(string s)
static bool EnforceLegacyJapaneseDateParsing
static string ArgumentOutOfRange_Range
static string Argument_InvalidId
static string Format(string resourceFormat, object p1)
static string Argument_CultureNotSupportedInInvariantMode
static string Argument_CultureNotSupported
static StringComparer OrdinalIgnoreCase
static readonly IntPtr Zero