Browse Source

Handle zh culture in `IsCompatibleCulture` method.

pull/13845/head
maliming 4 years ago
parent
commit
cfc7007cec
No known key found for this signature in database GPG Key ID: 96224957E51C89E
  1. 16
      framework/src/Volo.Abp.Core/Volo/Abp/Localization/CultureHelper.cs
  2. 20
      framework/test/Volo.Abp.Core.Tests/Volo/Abp/Localization/CultureHelper_Tests.cs

16
framework/src/Volo.Abp.Core/Volo/Abp/Localization/CultureHelper.cs

@ -60,7 +60,7 @@ public static class CultureHelper
{
return new CultureInfo(cultureName).Parent.Name;
}
public static bool IsCompatibleCulture(
string sourceCultureName,
string targetCultureName)
@ -70,6 +70,20 @@ public static class CultureHelper
return true;
}
if (sourceCultureName.StartsWith("zh") && targetCultureName.StartsWith("zh"))
{
var culture = new CultureInfo(targetCultureName);
do
{
if (culture.Name == sourceCultureName)
{
return true;
}
culture = new CultureInfo(culture.Name).Parent;
} while (!culture.Equals(CultureInfo.InvariantCulture));
}
if (sourceCultureName.Contains("-"))
{
return false;

20
framework/test/Volo.Abp.Core.Tests/Volo/Abp/Localization/CultureHelper_Tests.cs

@ -13,8 +13,24 @@ public class CultureHelper_Tests
CultureHelper.IsCompatibleCulture("en", "tr").ShouldBeFalse();
CultureHelper.IsCompatibleCulture("en", "tr-TR").ShouldBeFalse();
CultureHelper.IsCompatibleCulture("en-US", "en").ShouldBeFalse();
CultureHelper.IsCompatibleCulture("en-US", "en-GB").ShouldBeFalse();
CultureHelper.IsCompatibleCulture("zh", "zh-CN").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh", "zh-HK").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh", "zh-MO").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh", "zh-SG").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh", "zh-TW").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh", "zh-Hans").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh", "zh-Hant").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh-Hans", "zh-CN").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh-Hans", "zh-SG").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh-Hant", "zh-HK").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh-Hant", "zh-MO").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh-Hant", "zh-TW").ShouldBeTrue();
CultureHelper.IsCompatibleCulture("zh-Hans", "zh-HK").ShouldBeFalse();
CultureHelper.IsCompatibleCulture("zh-Hant", "zh-SG").ShouldBeFalse();
}
}
}

Loading…
Cancel
Save