Skip to content

Commit

Permalink
Do more checks when creating NeutralCultureRegionMap.
Browse files Browse the repository at this point in the history
See issue #82.
No idea if this code makes any sense and maybe it will lead to other problems later.
  • Loading branch information
JohanLarsson committed Sep 18, 2018
1 parent 24215e0 commit 2c951f0
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion Gu.Localization/Internals/Culture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,9 @@ internal static class Culture
private static readonly Dictionary<CultureInfo, RegionInfo> NeutralCultureRegionMap =
AllCultures
.Where(x => x.IsNeutralCulture)
.Select(x => NameCultureMap[CultureInfo.CreateSpecificCulture(x.Name).Name])
.Select(x => CreateSpecificCultureOrDefault(x)?.Name)
.Where(x => x != null && NameCultureMap.ContainsKey(x))
.Select(x => NameCultureMap[x])
.Distinct(CultureInfoComparer.ByTwoLetterIsoLanguageName)
.ToDictionary(
x => x.Parent,
Expand Down Expand Up @@ -95,5 +97,25 @@ internal static bool IsInvariant(this CultureInfo culture)
{
return NameEquals(culture, CultureInfo.InvariantCulture);
}

private static CultureInfo CreateSpecificCultureOrDefault(CultureInfo neutral)
{
if (neutral == null ||
!neutral.IsNeutralCulture)
{
return null;
}

try
{
// try-catch swallow here as CreateSpecificCulture does parsing of the name.
// don't know if there is a
return CultureInfo.CreateSpecificCulture(neutral.Name);
}
catch
{
return null;
}
}
}
}

0 comments on commit 2c951f0

Please sign in to comment.