205 lines
8.7 KiB
C#
205 lines
8.7 KiB
C#
<Query Kind="Program">
|
|
<Reference><ProgramFilesX64>\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Newtonsoft.Json.dll</Reference>
|
|
<Reference><RuntimeDirectory>\System.ComponentModel.Composition.dll</Reference>
|
|
<Reference><RuntimeDirectory>\System.ComponentModel.dll</Reference>
|
|
<Reference><RuntimeDirectory>\System.Net.dll</Reference>
|
|
<Reference><RuntimeDirectory>\System.Net.Http.dll</Reference>
|
|
<NuGetReference>Amazon.Lambda.S3Events</NuGetReference>
|
|
<NuGetReference>AWSSDK.Core</NuGetReference>
|
|
<NuGetReference>AWSSDK.S3</NuGetReference>
|
|
<NuGetReference>TimeZoneNames</NuGetReference>
|
|
<Namespace>Amazon</Namespace>
|
|
<Namespace>Amazon.Auth.AccessControlPolicy</Namespace>
|
|
<Namespace>Amazon.Auth.AccessControlPolicy.ActionIdentifiers</Namespace>
|
|
<Namespace>Amazon.Internal</Namespace>
|
|
<Namespace>Amazon.Lambda.S3Events</Namespace>
|
|
<Namespace>Amazon.MissingTypes</Namespace>
|
|
<Namespace>Amazon.Runtime</Namespace>
|
|
<Namespace>Amazon.Runtime.CredentialManagement</Namespace>
|
|
<Namespace>Amazon.Runtime.CredentialManagement.Internal</Namespace>
|
|
<Namespace>Amazon.Runtime.EventStreams</Namespace>
|
|
<Namespace>Amazon.Runtime.EventStreams.Internal</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Auth</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Settings</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Transform</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Util</Namespace>
|
|
<Namespace>Amazon.Runtime.SharedInterfaces</Namespace>
|
|
<Namespace>Amazon.Runtime.SharedInterfaces.Internal</Namespace>
|
|
<Namespace>Amazon.S3</Namespace>
|
|
<Namespace>Amazon.S3.Encryption</Namespace>
|
|
<Namespace>Amazon.S3.Encryption.Internal</Namespace>
|
|
<Namespace>Amazon.S3.Internal</Namespace>
|
|
<Namespace>Amazon.S3.IO</Namespace>
|
|
<Namespace>Amazon.S3.Model</Namespace>
|
|
<Namespace>Amazon.S3.Model.Internal.MarshallTransformations</Namespace>
|
|
<Namespace>Amazon.S3.Transfer</Namespace>
|
|
<Namespace>Amazon.S3.Util</Namespace>
|
|
<Namespace>Amazon.Util</Namespace>
|
|
<Namespace>Amazon.Util.Internal</Namespace>
|
|
<Namespace>Amazon.Util.Internal.PlatformServices</Namespace>
|
|
<Namespace>Newtonsoft.Json</Namespace>
|
|
<Namespace>Newtonsoft.Json.Converters</Namespace>
|
|
<Namespace>Newtonsoft.Json.Linq</Namespace>
|
|
<Namespace>Newtonsoft.Json.Schema</Namespace>
|
|
<Namespace>Newtonsoft.Json.Serialization</Namespace>
|
|
<Namespace>System</Namespace>
|
|
<Namespace>System.ComponentModel.Composition</Namespace>
|
|
<Namespace>System.ComponentModel.Composition.Hosting</Namespace>
|
|
<Namespace>System.ComponentModel.Composition.Primitives</Namespace>
|
|
<Namespace>System.ComponentModel.Composition.ReflectionModel</Namespace>
|
|
<Namespace>System.Diagnostics</Namespace>
|
|
<Namespace>System.Diagnostics.Tracing</Namespace>
|
|
<Namespace>System.Globalization</Namespace>
|
|
<Namespace>System.IO.Compression</Namespace>
|
|
<Namespace>System.Net.Http</Namespace>
|
|
<Namespace>System.Net.Http.Headers</Namespace>
|
|
<Namespace>System.Numerics</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Asn1</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Asn1.Utilities</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Math</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.OpenSsl</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Utilities.IO.Pem</Namespace>
|
|
<Namespace>ThirdParty.Ionic.Zlib</Namespace>
|
|
<Namespace>ThirdParty.Json.LitJson</Namespace>
|
|
<Namespace>ThirdParty.MD5</Namespace>
|
|
<Namespace>TimeZoneNames</Namespace>
|
|
</Query>
|
|
|
|
void Main()
|
|
{
|
|
var currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
|
|
// Get server DateTime.
|
|
DateTime date = DateTime.Now;
|
|
var amount = 12345.67M;
|
|
|
|
// Get a list of all Cultures
|
|
List<CultureInfo> cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
|
|
//.Where(ci => ci.Name == "en-MW")
|
|
.ToList();
|
|
|
|
// Add the Cultures to an ArrayList so we can sort them Alphabetically by name.
|
|
List<CultureData> cultureList = new List<CultureData>();
|
|
foreach (CultureInfo culture in cultures)
|
|
{
|
|
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
|
|
RegionInfo regionInfo = default(RegionInfo);
|
|
if (culture.LCID != 4096 && !culture.Equals(CultureInfo.InvariantCulture))
|
|
{
|
|
regionInfo = new RegionInfo(culture.LCID);
|
|
}
|
|
string pattern = null;
|
|
switch (culture.NumberFormat.CurrencyPositivePattern)
|
|
{
|
|
case 0:
|
|
pattern = "{0}{1:N" + culture.NumberFormat.CurrencyDecimalDigits + "}";
|
|
break;
|
|
case 1:
|
|
pattern = "{1:N" + culture.NumberFormat.CurrencyDecimalDigits + "}{0}";
|
|
break;
|
|
case 2:
|
|
pattern = "{0} {1:N" + culture.NumberFormat.CurrencyDecimalDigits + "}";
|
|
break;
|
|
case 3:
|
|
pattern = "{1:N" + culture.NumberFormat.CurrencyDecimalDigits + "} {0}";
|
|
break;
|
|
}
|
|
cultureList.Add(new CultureData
|
|
{
|
|
EnglishName = culture.EnglishName,
|
|
Name = culture.Name,
|
|
Details = new CultureDetails
|
|
{
|
|
ShortDate_Format = culture.DateTimeFormat.ShortDatePattern,
|
|
ShortDate_Example = date.ToShortDateString(),
|
|
LongDate_Format = culture.DateTimeFormat.LongDatePattern,
|
|
LongDate_Example = date.ToLongDateString(),
|
|
ShortTime_Format = culture.DateTimeFormat.ShortTimePattern,
|
|
ShortTime_Example = date.ToShortTimeString(),
|
|
LongTime_Format = culture.DateTimeFormat.LongTimePattern,
|
|
LongTime_Example = date.ToLongTimeString(),
|
|
Currency_EnglishName = regionInfo?.CurrencyEnglishName ?? string.Empty,
|
|
Currency_NativeName = regionInfo?.CurrencyNativeName ?? string.Empty,
|
|
Currency_Format = pattern,
|
|
Currency_Example = string.Format(culture, "{0:C}", amount),
|
|
Currency_ExampleNeg = string.Format(culture, "{0:C}", (amount * -1)),
|
|
Currency_ExampleAlt = string.Format(culture, "{0:c}", amount),
|
|
Currency_ExampleAltNeg = string.Format(culture, "{0:C}", (amount * -1)),
|
|
Percentage_Format = $"{{{culture.NumberFormat.PercentPositivePattern}{culture.NumberFormat.PercentDecimalSeparator}{culture.NumberFormat.PercentDecimalDigits}:P}}",
|
|
Percentage_Symbol = culture.NumberFormat.PercentSymbol,
|
|
Percentage_Example = string.Format(culture, "{0:P}", .333)
|
|
},
|
|
MonthNames = MonthNames(culture),
|
|
// TimeZones = TimeZones(currentCulture)
|
|
});
|
|
}
|
|
|
|
// Sort Cultures
|
|
//cultureList.Sort(new StringComparer());
|
|
cultureList
|
|
//.Where(l => l.Details.Percentage_Symbol != "%")
|
|
.OrderBy(c => c.EnglishName)
|
|
//.Where(c => c.EnglishName.Contains("Bermuda"))
|
|
.Dump(nameof(cultureList));
|
|
|
|
currentCulture = CultureInfo.GetCultures(CultureTypes.SpecificCultures).FirstOrDefault(c => c.EnglishName == "English (United States)");
|
|
System.Threading.Thread.CurrentThread.CurrentCulture = currentCulture;
|
|
|
|
}
|
|
|
|
class CultureDetails
|
|
{
|
|
public string ShortDate_Format { get; set; }
|
|
public string ShortDate_Example { get; set; }
|
|
public string LongDate_Format { get; set; }
|
|
public string LongDate_Example { get; set; }
|
|
public string ShortTime_Format { get; set; }
|
|
public string ShortTime_Example { get; set; }
|
|
public string LongTime_Format { get; set; }
|
|
public string LongTime_Example { get; set; }
|
|
public string Currency_EnglishName { get; set; }
|
|
public string Currency_NativeName { get; set; }
|
|
public string Currency_Format { get; set; }
|
|
public string Currency_Example { get; set; }
|
|
public string Currency_ExampleNeg { get; set; }
|
|
public string Currency_ExampleAlt { get; set; }
|
|
public string Currency_ExampleAltNeg { get; set; }
|
|
public string Percentage_Format { get; set; }
|
|
public string Percentage_Symbol { get; set; }
|
|
public string Percentage_Example { get; set; }
|
|
}
|
|
class CultureData
|
|
{
|
|
public string EnglishName { get; set; }
|
|
public string Name { get; set; }
|
|
public IDictionary<int, string> MonthNames { get; set; }
|
|
public CultureDetails Details { get; set; }
|
|
public IEnumerable<TimeZoneInfo> TimeZones { get; set; }
|
|
}
|
|
|
|
public IDictionary<int, string> MonthNames(CultureInfo culture)
|
|
{
|
|
return Enumerable.Range(1, 12).ToList()
|
|
.Select(mm => new { Key = mm, Value = culture.DateTimeFormat.GetMonthName(mm) })
|
|
.ToDictionary(item => item.Key, item => item.Value);
|
|
}
|
|
|
|
public IEnumerable<TimeZoneInfo> TimeZones(CultureInfo culture)
|
|
{
|
|
return TimeZoneInfo.GetSystemTimeZones();
|
|
}
|
|
|
|
public void TimeZoneList(CultureInfo culture)
|
|
{
|
|
TimeZoneInfo.GetSystemTimeZones()
|
|
.SelectMany(tzi => new[] {
|
|
TZNames.GetAbbreviationsForTimeZone(tzi.Id, culture.Name).Daylight != TZNames.GetAbbreviationsForTimeZone(tzi.Id, culture.Name).Standard
|
|
? new { Key = tzi.Id.Replace("Standard", "Daylight"), Value = TZNames.GetAbbreviationsForTimeZone(tzi.Id, culture.Name).Daylight }
|
|
: new { Key = tzi.Id, Value = TZNames.GetAbbreviationsForTimeZone(tzi.Id, culture.Name).Daylight },
|
|
new { Key = tzi.Id, Value = TZNames.GetAbbreviationsForTimeZone(tzi.Id, culture.Name).Standard }})
|
|
.GroupBy(x => x.Key)
|
|
.Select(g => g.First())
|
|
.ToDictionary(item => item.Key, item => item.Value)
|
|
.OrderBy(item => item.Key)
|
|
.Dump();
|
|
} |