diff --git a/src/Humanizer.Tests/ApiApprover/PublicApiApprovalTest.approve_public_api.approved.txt b/src/Humanizer.Tests/ApiApprover/PublicApiApprovalTest.approve_public_api.approved.txt index f41cef7d1..8105f495b 100644 --- a/src/Humanizer.Tests/ApiApprover/PublicApiApprovalTest.approve_public_api.approved.txt +++ b/src/Humanizer.Tests/ApiApprover/PublicApiApprovalTest.approve_public_api.approved.txt @@ -1636,7 +1636,7 @@ namespace Humanizer.Bytes public System.TimeSpan Interval { get; } public Humanizer.Bytes.ByteSize Size { get; } public string Humanize(Humanizer.Localisation.TimeUnit timeUnit = 1) { } - public string Humanize(string format, Humanizer.Localisation.TimeUnit timeUnit = 1) { } + public string Humanize(string format, Humanizer.Localisation.TimeUnit timeUnit = 1, System.Globalization.CultureInfo culture = null) { } } public struct ByteSize : System.IComparable, System.IComparable, System.IEquatable, System.IFormattable { diff --git a/src/Humanizer/Bytes/ByteRate.cs b/src/Humanizer/Bytes/ByteRate.cs index 67534eeca..350a53bff 100644 --- a/src/Humanizer/Bytes/ByteRate.cs +++ b/src/Humanizer/Bytes/ByteRate.cs @@ -1,4 +1,6 @@ using System; +using System.Globalization; + using Humanizer.Localisation; namespace Humanizer.Bytes @@ -47,34 +49,19 @@ public string Humanize(TimeUnit timeUnit = TimeUnit.Second) /// /// Unit of time to calculate rate for (defaults is per second) /// The string format to use for the number of bytes + /// Culture to use. If null, current thread's UI culture is used. /// - public string Humanize(string format, TimeUnit timeUnit = TimeUnit.Second) + public string Humanize(string format, TimeUnit timeUnit = TimeUnit.Second, CultureInfo culture = null) { - TimeSpan displayInterval; - string displayUnit; - - if (timeUnit == TimeUnit.Second) - { - displayInterval = TimeSpan.FromSeconds(1); - displayUnit = "s"; - } - else if (timeUnit == TimeUnit.Minute) + var displayInterval = timeUnit switch { - displayInterval = TimeSpan.FromMinutes(1); - displayUnit = "min"; - } - else if (timeUnit == TimeUnit.Hour) - { - displayInterval = TimeSpan.FromHours(1); - displayUnit = "hour"; - } - else - { - throw new NotSupportedException("timeUnit must be Second, Minute, or Hour"); - } - + TimeUnit.Second => TimeSpan.FromSeconds(1), + TimeUnit.Minute => TimeSpan.FromMinutes(1), + TimeUnit.Hour => TimeSpan.FromHours(1), + _ => throw new NotSupportedException("timeUnit must be Second, Minute, or Hour"), + }; return new ByteSize(Size.Bytes / Interval.TotalSeconds * displayInterval.TotalSeconds) - .Humanize(format) + '/' + displayUnit; + .Humanize(format, culture) + '/' + timeUnit.ToSymbol(culture); } } }