<data name="Argument_InvalidCultureName" xml:space="preserve">
<value>Culture name '{0}' is not supported.</value>
</data>
- <data name="Argument_InvalidPredefinedCultureName" xml:space="preserve">
- <value>Culture name '{0}' is not a predefined culture.</value>
- </data>
<data name="Argument_InvalidDateTimeKind" xml:space="preserve">
<value>Invalid DateTimeKind value.</value>
</data>
return UErrorCodeToBool(status);
}
-
-// GlobalizationNative_IsPredefinedLocale returns TRUE if ICU has a real data for the locale.
-// Otherwise it returns FALSE;
-
-int32_t GlobalizationNative_IsPredefinedLocale(const UChar* localeName)
-{
- UErrorCode err = U_ZERO_ERROR;
- char locale[ULOC_FULLNAME_CAPACITY];
- GetLocale(localeName, locale, ULOC_FULLNAME_CAPACITY, FALSE, &err);
-
- if (U_FAILURE(err))
- return FALSE;
-
- // ures_open returns err = U_ZERO_ERROR when ICU has data for localeName.
- // If it is fake locale, it will return err = U_USING_FALLBACK_WARNING || err = U_USING_DEFAULT_WARNING.
- // Other err values would be just a failure.
- UResourceBundle* uresb = ures_open(NULL, locale, &err);
- ures_close(uresb);
-
- return err == U_ZERO_ERROR;
-}
DLLEXPORT int32_t GlobalizationNative_GetLocaleName(const UChar* localeName, UChar* value, int32_t valueLength);
DLLEXPORT int32_t GlobalizationNative_GetDefaultLocaleName(UChar* value, int32_t valueLength);
-
-DLLEXPORT int32_t GlobalizationNative_IsPredefinedLocale(const UChar* localeName);
+++ /dev/null
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System.Collections.Generic;
-using Xunit;
-
-namespace System.Globalization.Tests
-{
- public class GetCultureInfoTests
- {
- public static bool PlatformSupportsFakeCulture => !PlatformDetection.IsWindows || (PlatformDetection.WindowsVersion >= 10 && !PlatformDetection.IsFullFramework);
-
- [ConditionalTheory(nameof(PlatformSupportsFakeCulture))]
- [InlineData("en")]
- [InlineData("en-US")]
- [InlineData("ja-JP")]
- [InlineData("ar-SA")]
- [InlineData("xx-XX")]
- public void GetCultureInfo(string name)
- {
- Assert.Equal(name, CultureInfo.GetCultureInfo(name).Name);
- Assert.Equal(name, CultureInfo.GetCultureInfo(name, predefinedOnly: false).Name);
- }
-
- [ConditionalTheory(nameof(PlatformSupportsFakeCulture))]
- [InlineData("en@US")]
- [InlineData("\uFFFF")]
- public void TestInvalidCultureNames(string name)
- {
- Assert.Throws<CultureNotFoundException>(() => CultureInfo.GetCultureInfo(name));
- Assert.Throws<CultureNotFoundException>(() => CultureInfo.GetCultureInfo(name, predefinedOnly: false));
- Assert.Throws<CultureNotFoundException>(() => CultureInfo.GetCultureInfo(name, predefinedOnly: true));
- }
-
- [ConditionalTheory(nameof(PlatformSupportsFakeCulture))]
- [InlineData("xx")]
- [InlineData("xx-XX")]
- [InlineData("xx-YY")]
- public void TestFakeCultureNames(string name)
- {
- Assert.Equal(name, CultureInfo.GetCultureInfo(name).Name);
- Assert.Equal(name, CultureInfo.GetCultureInfo(name, predefinedOnly: false).Name);
- Assert.Throws<CultureNotFoundException>(() => CultureInfo.GetCultureInfo(name, predefinedOnly: true));
- }
- }
-}
<Compile Include="CultureInfo\CultureInfoReadOnly.cs" />
<Compile Include="CultureInfo\CultureInfoTwoLetterISOLanguageName.cs" />
<Compile Include="CultureInfo\CultureInfoCurrentCulture.cs" />
- <Compile Include="CultureInfo\GetCultureInfo.cs" />
<Compile Include="DateTimeFormatInfo\DateTimeFormatInfoAbbreviatedDayNames.cs" />
<Compile Include="DateTimeFormatInfo\DateTimeFormatInfoAbbreviatedMonthGenitiveNames.cs" />
<Compile Include="DateTimeFormatInfo\DateTimeFormatInfoAbbreviatedMonthNames.cs" />
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern unsafe bool GetDefaultLocaleName(char* value, int valueLength);
- [DllImport(Libraries.GlobalizationNative, CharSet = CharSet.Unicode, EntryPoint = "GlobalizationNative_IsPredefinedLocale")]
- [return: MarshalAs(UnmanagedType.Bool)]
- internal static extern unsafe bool IsPredefinedLocale(string localeName);
-
[DllImport(Libraries.GlobalizationNative, CharSet = CharSet.Unicode, EntryPoint = "GlobalizationNative_GetLocaleTimeFormat")]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern unsafe bool GetLocaleTimeFormat(string localeName, bool shortFormat, char* value, int valueLength);
return cultureInfo;
}
- private static CultureInfo GetPredefinedCultureInfo(string name)
- {
- if (!Interop.Globalization.IsPredefinedLocale(name))
- {
- throw new CultureNotFoundException(nameof(name), SR.Format(SR.Argument_InvalidPredefinedCultureName, name));
- }
-
- return GetCultureInfo(name);
- }
-
private static CultureInfo GetUserDefaultUICulture()
{
return InitializeUserDefaultCulture();
return GetCultureByName(strDefault);
}
- private static CultureInfo GetPredefinedCultureInfo(string name)
- {
- CultureInfo culture = GetCultureInfo(name);
- string englishName = culture.EnglishName;
-
- // Check if the English Name starts with "Unknown Locale" or "Unknown Language" terms.
- const int SecondTermIndex = 8;
-
- if (englishName.StartsWith("Unknown ", StringComparison.Ordinal) && englishName.Length > SecondTermIndex &&
- (englishName.IndexOf("Locale", SecondTermIndex, StringComparison.Ordinal) == SecondTermIndex ||
- englishName.IndexOf("Language", SecondTermIndex, StringComparison.Ordinal) == SecondTermIndex))
- {
- throw new CultureNotFoundException(nameof(name), SR.Format(SR.Argument_InvalidPredefinedCultureName, name));
- }
-
- return culture;
- }
-
private static unsafe CultureInfo GetUserDefaultUICulture()
{
if (GlobalizationMode.Invariant)
return result;
}
- public static CultureInfo GetCultureInfo(string name, bool predefinedOnly)
- {
- if (name is null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- if (predefinedOnly)
- {
- return GetPredefinedCultureInfo(name);
- }
-
- return GetCultureInfo(name);
- }
-
private static Dictionary<string, CultureInfo> CachedCulturesByName
{
get
public System.Globalization.CultureInfo GetConsoleFallbackUICulture() { throw null; }
public static System.Globalization.CultureInfo GetCultureInfo(int culture) { throw null; }
public static System.Globalization.CultureInfo GetCultureInfo(string name) { throw null; }
- public static System.Globalization.CultureInfo GetCultureInfo(string name, bool predefinedOnly) { throw null; }
public static System.Globalization.CultureInfo GetCultureInfo(string name, string altName) { throw null; }
public static System.Globalization.CultureInfo GetCultureInfoByIetfLanguageTag(string name) { throw null; }
public static System.Globalization.CultureInfo[] GetCultures(System.Globalization.CultureTypes types) { throw null; }