using System.Globalization;
using System.Collections.Generic;
public static void Main()
DisplayForOneCulture("en-150");
DisplayForOneCulture("en-NL");
DisplayForOneCulture("en-SE");
DisplayForOneCulture("en");
List<string> list = new List<string>();
foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.AllCultures))
DisplayForOneCulture(ci);
private static void DisplayForOneCulture(string cultureID)
var culture = new CultureInfo(cultureID);
DisplayForOneCulture(culture);
private static void DisplayForOneCulture(CultureInfo culture)
Console.WriteLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6}","CULTURE","PARENT","ISNEUTRAL","LCID","REG_NAME","REG_METRIC","ENGLISH NAME"));
Console.WriteLine("--------------------------------------------------------------");
while(culture.Parent != null)
var regionFromLCID = new RegionInfo(culture.LCID);
var regionInfo = GetRegionInfo(regionFromLCID);
Console.WriteLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6}",
culture.Name, culture.Parent.Name,culture.IsNeutralCulture, culture.LCID, regionInfo.Item1, regionInfo.Item2, culture.EnglishName));
culture = culture.Parent;
Console.WriteLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6}",
culture.Name, culture.Parent.Name,culture.IsNeutralCulture, culture.LCID, "ERROR", "ERROR", culture.EnglishName));
private static Tuple<string, string> GetRegionInfo(RegionInfo region)
return Tuple.Create(region.Name, region.IsMetric.ToString());
return Tuple.Create("(none)","(none)");
private static RegionInfo AsRegionInfo(CultureInfo culture)
if (culture.IsNeutralCulture == false)
return new RegionInfo(culture.LCID);
var parentCulture = culture.Parent;
if (parentCulture != CultureInfo.InvariantCulture)
var parentRegion = AsRegionInfo(culture.Parent);
if (parentRegion != null)
return RegionInfo.CurrentRegion;