diff --git a/ArchiSteamFarm/ArchiSteamFarm.csproj b/ArchiSteamFarm/ArchiSteamFarm.csproj index ca8146756..81de6245a 100644 --- a/ArchiSteamFarm/ArchiSteamFarm.csproj +++ b/ArchiSteamFarm/ArchiSteamFarm.csproj @@ -79,6 +79,9 @@ ..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll True + + ..\packages\Humanizer.Core.2.1.0\lib\netstandard1.0\Humanizer.dll + ..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll diff --git a/ArchiSteamFarm/Localization/Strings.Designer.cs b/ArchiSteamFarm/Localization/Strings.Designer.cs index 0ae0efca8..8cbbc851e 100644 --- a/ArchiSteamFarm/Localization/Strings.Designer.cs +++ b/ArchiSteamFarm/Localization/Strings.Designer.cs @@ -1224,78 +1224,6 @@ namespace ArchiSteamFarm.Localization { } } - /// - /// Wyszukuje zlokalizowany ciąg podobny do ciągu 1 day. - /// - internal static string TimeSpanDay { - get { - return ResourceManager.GetString("TimeSpanDay", resourceCulture); - } - } - - /// - /// Wyszukuje zlokalizowany ciąg podobny do ciągu {0} days. - /// - internal static string TimeSpanDays { - get { - return ResourceManager.GetString("TimeSpanDays", resourceCulture); - } - } - - /// - /// Wyszukuje zlokalizowany ciąg podobny do ciągu 1 hour. - /// - internal static string TimeSpanHour { - get { - return ResourceManager.GetString("TimeSpanHour", resourceCulture); - } - } - - /// - /// Wyszukuje zlokalizowany ciąg podobny do ciągu {0} hours. - /// - internal static string TimeSpanHours { - get { - return ResourceManager.GetString("TimeSpanHours", resourceCulture); - } - } - - /// - /// Wyszukuje zlokalizowany ciąg podobny do ciągu 1 minute. - /// - internal static string TimeSpanMinute { - get { - return ResourceManager.GetString("TimeSpanMinute", resourceCulture); - } - } - - /// - /// Wyszukuje zlokalizowany ciąg podobny do ciągu {0} minutes. - /// - internal static string TimeSpanMinutes { - get { - return ResourceManager.GetString("TimeSpanMinutes", resourceCulture); - } - } - - /// - /// Wyszukuje zlokalizowany ciąg podobny do ciągu 1 second. - /// - internal static string TimeSpanSecond { - get { - return ResourceManager.GetString("TimeSpanSecond", resourceCulture); - } - } - - /// - /// Wyszukuje zlokalizowany ciąg podobny do ciągu {0} seconds. - /// - internal static string TimeSpanSeconds { - get { - return ResourceManager.GetString("TimeSpanSeconds", resourceCulture); - } - } - /// /// Wyszukuje zlokalizowany ciąg podobny do ciągu ASF will attempt to use your preferred {0} culture, but translation in that language was completed only in {1}. Perhaps you could help us improve ASF translation for your language?. /// diff --git a/ArchiSteamFarm/Localization/Strings.resx b/ArchiSteamFarm/Localization/Strings.resx index 4f1fb87cf..fcbd44957 100644 --- a/ArchiSteamFarm/Localization/Strings.resx +++ b/ArchiSteamFarm/Localization/Strings.resx @@ -255,34 +255,6 @@ StackTrace: Success! - - 1 day - - - {0} days - {0} will be replaced by number of days - - - 1 hour - - - {0} hours - {0} will be replaced by number of hours - - - 1 minute - - - {0} minutes - {0} will be replaced by number of minutes - - - 1 second - - - {0} seconds - {0} will be replaced by number of seconds - Unlocking parental account... diff --git a/ArchiSteamFarm/Utilities.cs b/ArchiSteamFarm/Utilities.cs index 934b3cbb4..1fb2f413c 100644 --- a/ArchiSteamFarm/Utilities.cs +++ b/ArchiSteamFarm/Utilities.cs @@ -29,8 +29,7 @@ using System.Globalization; using System.Linq; using System.Net; using System.Runtime.CompilerServices; -using System.Text; -using ArchiSteamFarm.Localization; +using Humanizer; namespace ArchiSteamFarm { internal static class Utilities { @@ -109,38 +108,7 @@ namespace ArchiSteamFarm { yield return item; } - internal static string ToHumanReadable(this TimeSpan timeSpan) { - // It's really dirty, I'd appreciate a lot if C# offered nice TimeSpan formatting by default - // Normally I'd use third-party library like Humanizer, but using it only for this bit is not worth it - // Besides, ILRepack has problem merging it's library due to referencing System.Runtime - - StringBuilder result = new StringBuilder(); - - if (timeSpan.Days > 0) { - result.Append((timeSpan.Days > 1 ? string.Format(Strings.TimeSpanDays, timeSpan.Days) : Strings.TimeSpanDay) + ", "); - } - - if (timeSpan.Hours > 0) { - result.Append((timeSpan.Hours > 1 ? string.Format(Strings.TimeSpanHours, timeSpan.Hours) : Strings.TimeSpanHour) + ", "); - } - - if (timeSpan.Minutes > 0) { - result.Append((timeSpan.Minutes > 1 ? string.Format(Strings.TimeSpanMinutes, timeSpan.Minutes) : Strings.TimeSpanMinute) + ", "); - } - - if (timeSpan.Seconds > 0) { - result.Append((timeSpan.Seconds > 1 ? string.Format(Strings.TimeSpanSeconds, timeSpan.Seconds) : Strings.TimeSpanSecond) + ", "); - } - - if (result.Length == 0) { - return string.Format(Strings.TimeSpanSeconds, 0); - } - - // Get rid of last comma + space - result.Length -= 2; - - return result.ToString(); - } + internal static string ToHumanReadable(this TimeSpan timeSpan) => timeSpan.Humanize(4); private static string[] GetArgs(this string[] args, byte argsToSkip = 1) { if (args.Length < argsToSkip) { diff --git a/ArchiSteamFarm/packages.config b/ArchiSteamFarm/packages.config index 1a6557ab3..d1f55ec06 100644 --- a/ArchiSteamFarm/packages.config +++ b/ArchiSteamFarm/packages.config @@ -1,9 +1,49 @@  - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GUI/GUI.csproj b/GUI/GUI.csproj index 494929a07..65492b664 100644 --- a/GUI/GUI.csproj +++ b/GUI/GUI.csproj @@ -48,6 +48,9 @@ ..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll True + + ..\packages\Humanizer.Core.2.1.0\lib\netstandard1.0\Humanizer.dll + ..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll diff --git a/GUI/packages.config b/GUI/packages.config index 82b08e40f..a639502f9 100644 --- a/GUI/packages.config +++ b/GUI/packages.config @@ -1,9 +1,49 @@  - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/Humanizer.2.1.0/Humanizer.2.1.0.nupkg b/packages/Humanizer.2.1.0/Humanizer.2.1.0.nupkg new file mode 100644 index 000000000..b6e6d727b Binary files /dev/null and b/packages/Humanizer.2.1.0/Humanizer.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.2.1.0/Humanizer.Core.2.1.0.nupkg b/packages/Humanizer.Core.2.1.0/Humanizer.Core.2.1.0.nupkg new file mode 100644 index 000000000..3930a85d3 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/Humanizer.Core.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/Humanizer.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/Humanizer.dll new file mode 100644 index 000000000..5fc964d40 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/Humanizer.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/Humanizer.xml b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/Humanizer.xml new file mode 100644 index 000000000..2fd92593b --- /dev/null +++ b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/Humanizer.xml @@ -0,0 +1,5526 @@ + + + + Humanizer + + + + + Class to hold a ByteSize and a measurement interval, for the purpose of calculating the rate of transfer + + + + + Quantity of bytes + + + + + + Interval that bytes were transferred in + + + + + + Create a ByteRate with given quantity of bytes across an interval + + + + + + + Calculate rate for the quantity of bytes and interval defined by this instance + + Unit of time to calculate rate for (defaults is per second) + + + + + Calculate rate for the quantity of bytes and interval defined by this instance + + Unit of time to calculate rate for (defaults is per second) + The string format to use for the number of bytes + + + + + Represents a byte size value. + + + + + Converts the value of the current ByteSize object to a string. + The metric prefix symbol (bit, byte, kilo, mega, giga, tera) used is + the largest metric prefix such that the corresponding value is greater + than or equal to one. + + + + + Humanizes an IEnumerable into a human readable list + + + + + Formats the collection for display, calling ToString() on each object and + using the default separator for the current culture. + + + + + + Formats the collection for display, calling `objectFormatter` on each object + and using the default separator for the current culture. + + + + + + Formats the collection for display, calling ToString() on each object + and using the provided separator. + + + + + + Formats the collection for display, calling `objectFormatter` on each object + and using the provided separator. + + + + + + A registry of localised system components with their associated locales + + + + + + Creates a localiser registry with the default localiser set to the provided value + + + + + + Creates a localiser registry with the default localiser factory set to the provided value + + + + + + Gets the localiser for the current thread's UI culture + + + + + Gets the localiser for the specified culture + + The culture to retrieve localiser for. If not specified, current thread's UI culture is used. + + + + Registers the localiser for the culture provided + + + + + Registers the localiser factory for the culture provided + + + + + Provides a configuration point for Humanizer + + + + + A registry of formatters used to format collections based on the current locale + + + + + A registry of formatters used to format strings based on the current locale + + + + + A registry of number to words converters used to localise ToWords and ToOrdinalWords methods + + + + + A registry of ordinalizers used to localise Ordinalize method + + + + + The formatter to be used + + The culture to retrieve formatter for. Null means that current thread's UI culture should be used. + + + + The converter to be used + + The culture to retrieve number to words converter for. Null means that current thread's UI culture should be used. + + + + The ordinalizer to be used + + + + + The strategy to be used for DateTime.Humanize + + + + + The strategy to be used for DateTimeOffset.Humanize + + + + + A predicate function for description property of attribute to use for Enum.Humanize + + + + + Algorithms used to convert distance between two dates into words. + + + + + Returns localized & humanized distance of time between two dates; given a specific precision. + + + + + Calculates the distance of time in words between two provided dates + + + + + The default 'distance of time' -> words calculator. + + + + + Calculates the distance of time in words between two provided dates + + + + + The default 'distance of time' -> words calculator. + + + + + Calculates the distance of time in words between two provided dates + + + + + Implement this interface to create a new strategy for DateTime.Humanize and hook it in the Configurator.DateTimeOffsetHumanizeStrategy + + + + + Calculates the distance of time in words between two provided dates used for DateTimeOffset.Humanize + + + + + Precision-based calculator for distance between two times + + + + + Constructs a precision-based calculator for distance of time with default precision 0.75. + + precision of approximation, if not provided 0.75 will be used as a default precision. + + + + Returns localized & humanized distance of time between two dates; given a specific precision. + + + + + Implement this interface to create a new strategy for DateTime.Humanize and hook it in the Configurator.DateTimeHumanizeStrategy + + + + + Calculates the distance of time in words between two provided dates used for DateTime.Humanize + + + + + Precision-based calculator for distance between two times + + + + + Constructs a precision-based calculator for distance of time with default precision 0.75. + + precision of approximation, if not provided 0.75 will be used as a default precision. + + + + Returns localized & humanized distance of time between two dates; given a specific precision. + + + + + Container for registered Vocabularies. At present, only a single vocabulary is supported: Default. + + + + + The default vocabulary used for singular/plural irregularities. + Rules can be added to this vocabulary and will be picked up by called to Singularize() and Pluralize(). + At this time, multiple vocabularies and removing existing rules are not supported. + + + + + A container for exceptions to simple pluralization/singularization rules. + Vocabularies.Default contains an extensive list of rules for US English. + At this time, multiple vocabularies and removing existing rules are not supported. + + + + + Adds a word to the vocabulary which cannot easily be pluralized/singularized by RegEx, e.g. "person" and "people". + + The singular form of the irregular word, e.g. "person". + The plural form of the irregular word, e.g. "people". + True to match these words on their own as well as at the end of longer words. False, otherwise. + + + + Adds an uncountable word to the vocabulary, e.g. "fish". Will be ignored when plurality is changed. + + Word to be added to the list of uncountables. + + + + Adds a rule to the vocabulary that does not follow trivial rules for pluralization, e.g. "bus" -> "buses" + + RegEx to be matched, case insensitive, e.g. "(bus)es$" + RegEx replacement e.g. "$1" + + + + Adds a rule to the vocabulary that does not follow trivial rules for singularization, e.g. "vertices/indices -> "vertex/index" + + RegEx to be matched, case insensitive, e.g. ""(vert|ind)ices$"" + RegEx replacement e.g. "$1ex" + + + + Pluralizes the provided input considering irregular words + + Word to be pluralized + Normally you call Pluralize on singular words; but if you're unsure call it with false + + + + + Singularizes the provided input considering irregular words + + Word to be singularized + Normally you call Singularize on plural words; but if you're unsure call it with false + + + + + An interface you should implement to localize Humanize for collections + + + + + Formats the collection for display, calling ToString() on each object. + + + + + + Formats the collection for display, calling `objectFormatter` on each object. + + + + + + Formats the collection for display, calling ToString() on each object + and using `separator` before the final item. + + + + + + Formats the collection for display, calling `objectFormatter` on each object + and using `separator` before the final item. + + + + + + Default implementation of IFormatter interface. + + + + + Constructor. + + Name of the culture to use. + + + + Now + + Returns Now + + + + Never + + Returns Never + + + + Returns the string representation of the provided DateTime + + + + + + + + + 0 seconds + + Returns 0 seconds as the string representation of Zero TimeSpan + + + + Returns the string representation of the provided TimeSpan + + Must be less than or equal to TimeUnit.Week + + + Is thrown when timeUnit is larger than TimeUnit.Week + + + + + + + + + + + + + + + + + + + Override this method if your locale has complex rules around multiple units; e.g. Arabic, Russian + + The resource key that's being in formatting + The number of the units being used in formatting + + + + + + + + + + + + Implement this interface if your language has complex rules around dealing with numbers. + For example in Romanian "5 days" is "5 zile", while "24 days" is "24 de zile" and + in Arabic 2 days is يومين not 2 يوم + + + + + Now + + Returns Now + + + + Never + + Returns Never + + + + Returns the string representation of the provided DateTime + + + + + + + + + 0 seconds + + Returns 0 seconds as the string representation of Zero TimeSpan + + + + Returns the string representation of the provided TimeSpan + + + + + + + + Converts the number to string using the locale's default grammatical gender + + + + + + + Converts the number to string using the provided grammatical gender + + + + + + + + Converts the number to ordinal string using the locale's default grammatical gender + + + + + + + Converts the number to ordinal string using the provided grammatical gender + + + + + + + + Converts the number to string + + + + + + + Converts the number to string ignoring the provided grammatical gender + + + + + + + + Converts the number to ordinal string + + + + + + + Converts the number to ordinal string ignoring the provided grammatical gender + + + + + + + + Lookup table converting units number to text. Index 1 for 1, index 2 for 2, up to index 9 for 9. + + + + + Lookup table converting teens number to text. Index 0 for 10, index 1 for 11, up to index 9 for 19. + + + + + Lookup table converting tens number to text. Index 2 for 20, index 3 for 30, up to index 9 for 90. + + + + + Enumerates sets of three-digits having distinct conversion to text. + + + + + Lowest three-digits set, from 1 to 999. + + + + + Three-digits set counting the thousands, from 1'000 to 999'000. + + + + + Three-digits set counting millions, from 1'000'000 to 999'000'000. + + + + + Three-digits set counting billions, from 1'000'000'000 to 999'000'000'000. + + + + + Three-digits set beyond 999 billions, from 1'000'000'000'000 onward. + + + + + Splits a number into a sequence of three-digits numbers, + starting from units, then thousands, millions, and so on. + + The number to split. + The sequence of three-digit numbers. + + + + During number conversion to text, finds out the converter + to use for the next three-digit set. + + The next conversion function to use. + + + + Converts a three-digit set to text. + + The three-digit set to convert. + The grammatical gender to convert to. + True if the current three-digit set is the last in the word. + The same three-digit set expressed as text. + + + + Converts a three-digit number, as units, to text. + + The three-digit number, as units, to convert. + The grammatical gender to convert to. + The same three-digit number, as units, expressed as text. + + + + Converts a thousands three-digit number to text. + + The three-digit number, as thousands, to convert. + The grammatical gender to convert to. + The same three-digit number of thousands expressed as text. + + + + Converts a millions three-digit number to text. + + The three-digit number, as millions, to convert. + The grammatical gender to convert to. + The same three-digit number of millions expressed as text. + + + + Converts a billions three-digit number to text. + + The three-digit number, as billions, to convert. + The grammatical gender to convert to. + The same three-digit number of billions expressed as text. + + + + Lookup table converting units number to text. Index 1 for 1, index 2 for 2, up to index 9. + + + + + Dutch spelling of numbers is not really officially regulated. + There are a few different rules that can be applied. + Used the rules as stated here. + http://www.beterspellen.nl/website/?pag=110 + + + + + Constructor. + + Culture to use. + + + + 3501.ToWords() -> "three thousand five hundred and one" + + Number to be turned to words + + + + + 1.ToOrdinalWords() -> "first" + + Number to be turned to ordinal words + + + + + Splits a number into a sequence of three-digits numbers, starting + from units, then thousands, millions, and so on. + + The number to split. + The sequence of three-digit numbers. + + + + During number conversion to text, finds out the converter to use + for the next three-digit set. + + The next conversion function to use. + + + + Converts a three-digit set to text. + + The three-digit set to convert. + True if the current three-digit set is the last in the word. + The same three-digit set expressed as text. + + + + Converts a three-digit number, as units, to text. + + The three-digit number, as units, to convert. + The same three-digit number, as units, expressed as text. + + + + Converts a thousands three-digit number to text. + + The three-digit number, as thousands, to convert. + The same three-digit number of thousands expressed as text. + + + + Converts a millions three-digit number to text. + + The three-digit number, as millions, to convert. + The same three-digit number of millions expressed as text. + + + + Converts a billions three-digit number to text. + + The three-digit number, as billions, to convert. + The same three-digit number of billions expressed as text. + + + + Lookup table converting units number to text. Index 1 for 1, index 2 for 2, up to index 9. + + + + + Lookup table converting tens number to text. Index 2 for 20, index 3 for 30, up to index 9 for 90. + + + + + Lookup table converting teens number to text. Index 0 for 10, index 1 for 11, up to index 9 for 19. + + + + + Lookup table converting hundreds number to text. Index 0 for no hundreds, index 1 for 100, up to index 9. + + + + + Enumerates sets of three-digits having distinct conversion to text. + + + + + Lowest three-digits set, from 1 to 999. + + + + + Three-digits set counting the thousands, from 1'000 to 999'000. + + + + + Three-digits set counting millions, from 1'000'000 to 999'000'000. + + + + + Three-digits set counting billions, from 1'000'000'000 to 999'000'000'000. + + + + + Three-digits set beyond 999 billions, from 1'000'000'000'000 onward. + + + + + Lookup table converting units number to text. Index 1 for 1, index 2 for 2, up to index 9. + + + + + An interface you should implement to localise ToWords and ToOrdinalWords methods + + + + + Converts the number to string using the locale's default grammatical gender + + + + + + + Converts the number to string using the provided grammatical gender + + + + + + + + Converts the number to ordinal string using the locale's default grammatical gender + + + + + + + Converts the number to ordinal string using the provided grammatical gender + + + + + + + + The interface used to localise the Ordinalize method + + + + + Ordinalizes the number + + + + + + + + Ordinalizes the number using the provided grammatical gender + + + + + + + + + Enumerates the possible time references; past or future. + + + + + Indicates the future. + + + + + Indicates the past. + + + + + + + + + + Encapsulates the logic required to get the resource keys for DateTime.Humanize + + + + + Resource key for Now. + + + + + Resource key for Never. + + + + + Examples: DateHumanize_SingleMinuteAgo, DateHumanize_MultipleHoursAgo + Note: "s" for plural served separately by third part. + + + + + Generates Resource Keys accordning to convention. + + Time unit + Is time unit in future or past + Number of units, default is One. + Resource key, like DateHumanize_SingleMinuteAgo + + + + Encapsulates the logic required to get the resource keys for TimeSpan.Humanize + + + + + Examples: TimeSpanHumanize_SingleMinute, TimeSpanHumanize_MultipleHours. + Note: "s" for plural served separately by third part. + + + + + Generates Resource Keys according to convention. + + Time unit, . + Number of units, default is One. + Resource key, like TimeSpanHumanize_SingleMinute + + + + Units of time. + + + + + Provides access to the resources of Humanizer + + + + + Returns the value of the specified string resource + + The name of the resource to retrieve. + The culture of the resource to retrieve. If not specified, current thread's UI culture is used. + The value of the resource localized for the specified culture. + + + + Options for specifying the desired grammatical case for the output words + + + + + Indicates the subject of a finite verb + + + + + Indicates the possessor of another noun + + + + + Indicates the indirect object of a verb + + + + + Indicates the direct object of a verb + + + + + Indicates an object used in performing an action + + + + + Indicates the object of a preposition + + + + + Options for specifying the desired grammatical gender for the output words + + + + + Indicates masculine grammatical gender + + + + + Indicates feminine grammatical gender + + + + + Indicates neuter grammatical gender + + + + + Provides extension methods for ByteSize + + + + + Considers input as bits + + + + + + + Considers input as bits + + + + + + + Considers input as bits + + + + + + + Considers input as bits + + + + + + + Considers input as bits + + + + + + + Considers input as bits + + + + + + + Considers input as bits + + + + + + + Considers input as bytes + + + + + + + Considers input as bytes + + + + + + + Considers input as bytes + + + + + + + Considers input as bytes + + + + + + + Considers input as bytes + + + + + + + Considers input as bytes + + + + + + + Considers input as bytes + + + + + + + Considers input as bytes + + + + + + + Considers input as kilobytes + + + + + + + Considers input as kilobytes + + + + + + + Considers input as kilobytes + + + + + + + Considers input as kilobytes + + + + + + + Considers input as kilobytes + + + + + + + Considers input as kilobytes + + + + + + + Considers input as kilobytes + + + + + + + Considers input as kilobytes + + + + + + + Considers input as megabytes + + + + + + + Considers input as megabytes + + + + + + + Considers input as megabytes + + + + + + + Considers input as megabytes + + + + + + + Considers input as megabytes + + + + + + + Considers input as megabytes + + + + + + + Considers input as megabytes + + + + + + + Considers input as megabytes + + + + + + + Considers input as gigabytes + + + + + + + Considers input as gigabytes + + + + + + + Considers input as gigabytes + + + + + + + Considers input as gigabytes + + + + + + + Considers input as gigabytes + + + + + + + Considers input as gigabytes + + + + + + + Considers input as gigabytes + + + + + + + Considers input as gigabytes + + + + + + + Considers input as terabytes + + + + + + + Considers input as terabytes + + + + + + + Considers input as terabytes + + + + + + + Considers input as terabytes + + + + + + + Considers input as terabytes + + + + + + + Considers input as terabytes + + + + + + + Considers input as terabytes + + + + + + + Considers input as terabytes + + + + + + + Turns a byte quantity into human readable form, eg 2 GB + + + The string format to use + + + + + Turns a quantity of bytes in a given interval into a rate that can be manipulated + + Quantity of bytes + Interval to create rate for + + + + + ApplyCase method to allow changing the case of a sentence easily + + + + + Changes the casing of the provided input + + + + + + + + Humanizes DateTime into human readable sentence + + + + + Turns the current or provided date into a human readable sentence + + The date to be humanized + Boolean value indicating whether the date is in UTC or local + Date to compare the input against. If null, current date is used as base + Culture to use. If null, current thread's UI culture is used. + distance of time in words + + + + Turns the current or provided date into a human readable sentence, overload for the nullable DateTime, returning 'never' in case null + + The date to be humanized + Boolean value indicating whether the date is in UTC or local + Date to compare the input against. If null, current date is used as base + Culture to use. If null, current thread's UI culture is used. + distance of time in words + + + + Turns the current or provided date into a human readable sentence + + The date to be humanized + Date to compare the input against. If null, current date is used as base + Culture to use. If null, current thread's UI culture is used. + distance of time in words + + + + Turns the current or provided date into a human readable sentence, overload for the nullable DateTimeOffset, returning 'never' in case null + + The date to be humanized + Date to compare the input against. If null, current date is used as base + Culture to use. If null, current thread's UI culture is used. + distance of time in words + + + + Contains extension methods for changing a number to Metric representation (ToMetric) + and from Metric representation back to the number (FromMetric) + + + + + Symbols is a list of every symbols for the Metric system. + + + + + Names link a Metric symbol (as key) to its name (as value). + + + We dont support : + {'h', "hecto"}, + {'da', "deca" }, // !string + {'d', "deci" }, + {'c', "centi"}, + + + + + Converts a Metric representation into a number. + + + We don't support input in the format {number}{name} nor {number} {name}. + We only provide a solution for {number}{symbol} and {number} {symbol}. + + Metric representation to convert to a number + + + "1k".FromMetric() => 1000d + "123".FromMetric() => 123d + "100m".FromMetric() => 1E-1 + + + A number after a conversion from a Metric representation. + + + + Converts a number into a valid and Human-readable Metric representation. + + + Inspired by a snippet from Thom Smith. + See this link for more. + + Number to convert to a Metric representation. + True will split the number and the symbol with a whitespace. + True will use symbol instead of name + + + 1000.ToMetric() => "1k" + 123.ToMetric() => "123" + 1E-1.ToMetric() => "100m" + + + A valid Metric representation + + + + Converts a number into a valid and Human-readable Metric representation. + + + Inspired by a snippet from Thom Smith. + See this link for more. + + Number to convert to a Metric representation. + True will split the number and the symbol with a whitespace. + True will use symbol instead of name + + + 1000d.ToMetric() => "1k" + 123d.ToMetric() => "123" + 1E-1.ToMetric() => "100m" + + + A valid Metric representation + + + + Clean or handle any wrong input + + Metric representation to clean + A cleaned representation + + + + Build a number from a metric representation or from a number + + A Metric representation to parse to a number + The last character of input + A number build from a Metric representation + + + + Build a number from a metric representation + + A Metric representation to parse to a number + The last character of input + A number build from a Metric representation + + + + Replace every symbol's name by its symbol representation. + + Metric representation with a name or a symbol + A metric representation with a symbol + + + + Build a Metric representation of the number. + + Number to convert to a Metric representation. + True will split the number and the symbol with a whitespace. + True will use symbol instead of name + A number in a Metric representation + + + + Build a Metric representation of the number. + + Number to convert to a Metric representation. + Exponent of the number in a scientific notation + True will split the number and the symbol with a whitespace. + True will use symbol instead of name + A number in a Metric representation + + + + Get the unit from a symbol of from the symbol's name. + + The symbol linked to the unit + True will use symbol instead of name + A symbol or a symbol's name + + + + Check if a Metric representation is out of the valid range. + + A Metric representation who might be out of the valid range. + True if input is out of the valid range. + + + + Check if a string is not a valid Metric representation. + A valid representation is in the format "{0}{1}" or "{0} {1}" + where {0} is a number and {1} is an allowed symbol. + + + ToDo: Performance: Use (string input, out number) to escape the double use of Parse() + + A string who might contain a invalid Metric representation. + True if input is not a valid Metric representation. + + + + Number to Number extensions + + + + + 5.Tens == 50 + + + + + 5.Tens == 50 + + + + + 5.Tens == 50 + + + + + 5.Tens == 50 + + + + + 5.Tens == 50 + + + + + 4.Hundreds() == 400 + + + + + 4.Hundreds() == 400 + + + + + 4.Hundreds() == 400 + + + + + 4.Hundreds() == 400 + + + + + 4.Hundreds() == 400 + + + + + 3.Thousands() == 3000 + + + + + 3.Thousands() == 3000 + + + + + 3.Thousands() == 3000 + + + + + 3.Thousands() == 3000 + + + + + 3.Thousands() == 3000 + + + + + 2.Millions() == 2000000 + + + + + 2.Millions() == 2000000 + + + + + 2.Millions() == 2000000 + + + + + 2.Millions() == 2000000 + + + + + 2.Millions() == 2000000 + + + + + 1.Billions() == 1000000000 (short scale) + + + + + 1.Billions() == 1000000000 (short scale) + + + + + 1.Billions() == 1000000000 (short scale) + + + + + 1.Billions() == 1000000000 (short scale) + + + + + 1.Billions() == 1000000000 (short scale) + + + + + Provides hint for Humanizer as to whether a word is singular, plural or with unknown plurality + + + + + The word is singular + + + + + The word is plural + + + + + I am unsure of the plurality + + + + + Humanizes TimeSpan into human readable form + + + + + Turns a TimeSpan into a human readable form. E.g. 1 day. + + + The maximum number of time units to return. Defaulted is 1 which means the largest unit is returned + Culture to use. If null, current thread's UI culture is used. + The maximum unit of time to output. + The minimum unit of time to output. + The separator to use when combining humanized time parts. If null, the default collection formatter for the current culture is used. + + + + + Turns a TimeSpan into a human readable form. E.g. 1 day. + + + The maximum number of time units to return. + Controls whether empty time units should be counted towards maximum number of time units. Leading empty time units never count. + Culture to use. If null, current thread's UI culture is used. + The maximum unit of time to output. + The minimum unit of time to output. + The separator to use when combining humanized time parts. If null, the default collection formatter for the current culture is used. + + + + + + + + + + + + + 1 seconds from now + + + + + 1 seconds from the provided date + + + + + 1 minutes from now + + + + + 1 minutes from the provided date + + + + + 1 hours from now + + + + + 1 hours from the provided date + + + + + 1 days from now + + + + + 1 days from the provided date + + + + + 1 weeks from now + + + + + 1 weeks from the provided date + + + + + 1 months from now + + + + + 1 months from the provided date + + + + + 1 years from now + + + + + 1 years from the provided date + + + + + + + + + 2 seconds from now + + + + + 2 seconds from the provided date + + + + + 2 minutes from now + + + + + 2 minutes from the provided date + + + + + 2 hours from now + + + + + 2 hours from the provided date + + + + + 2 days from now + + + + + 2 days from the provided date + + + + + 2 weeks from now + + + + + 2 weeks from the provided date + + + + + 2 months from now + + + + + 2 months from the provided date + + + + + 2 years from now + + + + + 2 years from the provided date + + + + + + + + + 3 seconds from now + + + + + 3 seconds from the provided date + + + + + 3 minutes from now + + + + + 3 minutes from the provided date + + + + + 3 hours from now + + + + + 3 hours from the provided date + + + + + 3 days from now + + + + + 3 days from the provided date + + + + + 3 weeks from now + + + + + 3 weeks from the provided date + + + + + 3 months from now + + + + + 3 months from the provided date + + + + + 3 years from now + + + + + 3 years from the provided date + + + + + + + + + 4 seconds from now + + + + + 4 seconds from the provided date + + + + + 4 minutes from now + + + + + 4 minutes from the provided date + + + + + 4 hours from now + + + + + 4 hours from the provided date + + + + + 4 days from now + + + + + 4 days from the provided date + + + + + 4 weeks from now + + + + + 4 weeks from the provided date + + + + + 4 months from now + + + + + 4 months from the provided date + + + + + 4 years from now + + + + + 4 years from the provided date + + + + + + + + + 5 seconds from now + + + + + 5 seconds from the provided date + + + + + 5 minutes from now + + + + + 5 minutes from the provided date + + + + + 5 hours from now + + + + + 5 hours from the provided date + + + + + 5 days from now + + + + + 5 days from the provided date + + + + + 5 weeks from now + + + + + 5 weeks from the provided date + + + + + 5 months from now + + + + + 5 months from the provided date + + + + + 5 years from now + + + + + 5 years from the provided date + + + + + + + + + 6 seconds from now + + + + + 6 seconds from the provided date + + + + + 6 minutes from now + + + + + 6 minutes from the provided date + + + + + 6 hours from now + + + + + 6 hours from the provided date + + + + + 6 days from now + + + + + 6 days from the provided date + + + + + 6 weeks from now + + + + + 6 weeks from the provided date + + + + + 6 months from now + + + + + 6 months from the provided date + + + + + 6 years from now + + + + + 6 years from the provided date + + + + + + + + + 7 seconds from now + + + + + 7 seconds from the provided date + + + + + 7 minutes from now + + + + + 7 minutes from the provided date + + + + + 7 hours from now + + + + + 7 hours from the provided date + + + + + 7 days from now + + + + + 7 days from the provided date + + + + + 7 weeks from now + + + + + 7 weeks from the provided date + + + + + 7 months from now + + + + + 7 months from the provided date + + + + + 7 years from now + + + + + 7 years from the provided date + + + + + + + + + 8 seconds from now + + + + + 8 seconds from the provided date + + + + + 8 minutes from now + + + + + 8 minutes from the provided date + + + + + 8 hours from now + + + + + 8 hours from the provided date + + + + + 8 days from now + + + + + 8 days from the provided date + + + + + 8 weeks from now + + + + + 8 weeks from the provided date + + + + + 8 months from now + + + + + 8 months from the provided date + + + + + 8 years from now + + + + + 8 years from the provided date + + + + + + + + + 9 seconds from now + + + + + 9 seconds from the provided date + + + + + 9 minutes from now + + + + + 9 minutes from the provided date + + + + + 9 hours from now + + + + + 9 hours from the provided date + + + + + 9 days from now + + + + + 9 days from the provided date + + + + + 9 weeks from now + + + + + 9 weeks from the provided date + + + + + 9 months from now + + + + + 9 months from the provided date + + + + + 9 years from now + + + + + 9 years from the provided date + + + + + + + + + 10 seconds from now + + + + + 10 seconds from the provided date + + + + + 10 minutes from now + + + + + 10 minutes from the provided date + + + + + 10 hours from now + + + + + 10 hours from the provided date + + + + + 10 days from now + + + + + 10 days from the provided date + + + + + 10 weeks from now + + + + + 10 weeks from the provided date + + + + + 10 months from now + + + + + 10 months from the provided date + + + + + 10 years from now + + + + + 10 years from the provided date + + + + + Returns the first of January of the provided year + + + + + + + Returns 1st of January of the current year + + + + + Returns 1st of January of the year passed in + + + + + Returns 1st of February of the current year + + + + + Returns 1st of February of the year passed in + + + + + Returns 1st of March of the current year + + + + + Returns 1st of March of the year passed in + + + + + Returns 1st of April of the current year + + + + + Returns 1st of April of the year passed in + + + + + Returns 1st of May of the current year + + + + + Returns 1st of May of the year passed in + + + + + Returns 1st of June of the current year + + + + + Returns 1st of June of the year passed in + + + + + Returns 1st of July of the current year + + + + + Returns 1st of July of the year passed in + + + + + Returns 1st of August of the current year + + + + + Returns 1st of August of the year passed in + + + + + Returns 1st of September of the current year + + + + + Returns 1st of September of the year passed in + + + + + Returns 1st of October of the current year + + + + + Returns 1st of October of the year passed in + + + + + Returns 1st of November of the current year + + + + + Returns 1st of November of the year passed in + + + + + Returns 1st of December of the current year + + + + + Returns 1st of December of the year passed in + + + + + + + + + Provides fluent date accessors for January + + + + + The nth day of January of the current year + + + + + The 1st day of January of the current year + + + + + The 2nd day of January of the current year + + + + + The 3rd day of January of the current year + + + + + The 4th day of January of the current year + + + + + The 5th day of January of the current year + + + + + The 6th day of January of the current year + + + + + The 7th day of January of the current year + + + + + The 8th day of January of the current year + + + + + The 9th day of January of the current year + + + + + The 10th day of January of the current year + + + + + The 11th day of January of the current year + + + + + The 12th day of January of the current year + + + + + The 13th day of January of the current year + + + + + The 14th day of January of the current year + + + + + The 15th day of January of the current year + + + + + The 16th day of January of the current year + + + + + The 17th day of January of the current year + + + + + The 18th day of January of the current year + + + + + The 19th day of January of the current year + + + + + The 20th day of January of the current year + + + + + The 21st day of January of the current year + + + + + The 22nd day of January of the current year + + + + + The 23rd day of January of the current year + + + + + The 24th day of January of the current year + + + + + The 25th day of January of the current year + + + + + The 26th day of January of the current year + + + + + The 27th day of January of the current year + + + + + The 28th day of January of the current year + + + + + The 29th day of January of the current year + + + + + The 30th day of January of the current year + + + + + The 31st day of January of the current year + + + + + Provides fluent date accessors for February + + + + + The nth day of February of the current year + + + + + The 1st day of February of the current year + + + + + The 2nd day of February of the current year + + + + + The 3rd day of February of the current year + + + + + The 4th day of February of the current year + + + + + The 5th day of February of the current year + + + + + The 6th day of February of the current year + + + + + The 7th day of February of the current year + + + + + The 8th day of February of the current year + + + + + The 9th day of February of the current year + + + + + The 10th day of February of the current year + + + + + The 11th day of February of the current year + + + + + The 12th day of February of the current year + + + + + The 13th day of February of the current year + + + + + The 14th day of February of the current year + + + + + The 15th day of February of the current year + + + + + The 16th day of February of the current year + + + + + The 17th day of February of the current year + + + + + The 18th day of February of the current year + + + + + The 19th day of February of the current year + + + + + The 20th day of February of the current year + + + + + The 21st day of February of the current year + + + + + The 22nd day of February of the current year + + + + + The 23rd day of February of the current year + + + + + The 24th day of February of the current year + + + + + The 25th day of February of the current year + + + + + The 26th day of February of the current year + + + + + The 27th day of February of the current year + + + + + The 28th day of February of the current year + + + + + The 29th day of February of the current year + + + + + Provides fluent date accessors for March + + + + + The nth day of March of the current year + + + + + The 1st day of March of the current year + + + + + The 2nd day of March of the current year + + + + + The 3rd day of March of the current year + + + + + The 4th day of March of the current year + + + + + The 5th day of March of the current year + + + + + The 6th day of March of the current year + + + + + The 7th day of March of the current year + + + + + The 8th day of March of the current year + + + + + The 9th day of March of the current year + + + + + The 10th day of March of the current year + + + + + The 11th day of March of the current year + + + + + The 12th day of March of the current year + + + + + The 13th day of March of the current year + + + + + The 14th day of March of the current year + + + + + The 15th day of March of the current year + + + + + The 16th day of March of the current year + + + + + The 17th day of March of the current year + + + + + The 18th day of March of the current year + + + + + The 19th day of March of the current year + + + + + The 20th day of March of the current year + + + + + The 21st day of March of the current year + + + + + The 22nd day of March of the current year + + + + + The 23rd day of March of the current year + + + + + The 24th day of March of the current year + + + + + The 25th day of March of the current year + + + + + The 26th day of March of the current year + + + + + The 27th day of March of the current year + + + + + The 28th day of March of the current year + + + + + The 29th day of March of the current year + + + + + The 30th day of March of the current year + + + + + The 31st day of March of the current year + + + + + Provides fluent date accessors for April + + + + + The nth day of April of the current year + + + + + The 1st day of April of the current year + + + + + The 2nd day of April of the current year + + + + + The 3rd day of April of the current year + + + + + The 4th day of April of the current year + + + + + The 5th day of April of the current year + + + + + The 6th day of April of the current year + + + + + The 7th day of April of the current year + + + + + The 8th day of April of the current year + + + + + The 9th day of April of the current year + + + + + The 10th day of April of the current year + + + + + The 11th day of April of the current year + + + + + The 12th day of April of the current year + + + + + The 13th day of April of the current year + + + + + The 14th day of April of the current year + + + + + The 15th day of April of the current year + + + + + The 16th day of April of the current year + + + + + The 17th day of April of the current year + + + + + The 18th day of April of the current year + + + + + The 19th day of April of the current year + + + + + The 20th day of April of the current year + + + + + The 21st day of April of the current year + + + + + The 22nd day of April of the current year + + + + + The 23rd day of April of the current year + + + + + The 24th day of April of the current year + + + + + The 25th day of April of the current year + + + + + The 26th day of April of the current year + + + + + The 27th day of April of the current year + + + + + The 28th day of April of the current year + + + + + The 29th day of April of the current year + + + + + The 30th day of April of the current year + + + + + Provides fluent date accessors for May + + + + + The nth day of May of the current year + + + + + The 1st day of May of the current year + + + + + The 2nd day of May of the current year + + + + + The 3rd day of May of the current year + + + + + The 4th day of May of the current year + + + + + The 5th day of May of the current year + + + + + The 6th day of May of the current year + + + + + The 7th day of May of the current year + + + + + The 8th day of May of the current year + + + + + The 9th day of May of the current year + + + + + The 10th day of May of the current year + + + + + The 11th day of May of the current year + + + + + The 12th day of May of the current year + + + + + The 13th day of May of the current year + + + + + The 14th day of May of the current year + + + + + The 15th day of May of the current year + + + + + The 16th day of May of the current year + + + + + The 17th day of May of the current year + + + + + The 18th day of May of the current year + + + + + The 19th day of May of the current year + + + + + The 20th day of May of the current year + + + + + The 21st day of May of the current year + + + + + The 22nd day of May of the current year + + + + + The 23rd day of May of the current year + + + + + The 24th day of May of the current year + + + + + The 25th day of May of the current year + + + + + The 26th day of May of the current year + + + + + The 27th day of May of the current year + + + + + The 28th day of May of the current year + + + + + The 29th day of May of the current year + + + + + The 30th day of May of the current year + + + + + The 31st day of May of the current year + + + + + Provides fluent date accessors for June + + + + + The nth day of June of the current year + + + + + The 1st day of June of the current year + + + + + The 2nd day of June of the current year + + + + + The 3rd day of June of the current year + + + + + The 4th day of June of the current year + + + + + The 5th day of June of the current year + + + + + The 6th day of June of the current year + + + + + The 7th day of June of the current year + + + + + The 8th day of June of the current year + + + + + The 9th day of June of the current year + + + + + The 10th day of June of the current year + + + + + The 11th day of June of the current year + + + + + The 12th day of June of the current year + + + + + The 13th day of June of the current year + + + + + The 14th day of June of the current year + + + + + The 15th day of June of the current year + + + + + The 16th day of June of the current year + + + + + The 17th day of June of the current year + + + + + The 18th day of June of the current year + + + + + The 19th day of June of the current year + + + + + The 20th day of June of the current year + + + + + The 21st day of June of the current year + + + + + The 22nd day of June of the current year + + + + + The 23rd day of June of the current year + + + + + The 24th day of June of the current year + + + + + The 25th day of June of the current year + + + + + The 26th day of June of the current year + + + + + The 27th day of June of the current year + + + + + The 28th day of June of the current year + + + + + The 29th day of June of the current year + + + + + The 30th day of June of the current year + + + + + Provides fluent date accessors for July + + + + + The nth day of July of the current year + + + + + The 1st day of July of the current year + + + + + The 2nd day of July of the current year + + + + + The 3rd day of July of the current year + + + + + The 4th day of July of the current year + + + + + The 5th day of July of the current year + + + + + The 6th day of July of the current year + + + + + The 7th day of July of the current year + + + + + The 8th day of July of the current year + + + + + The 9th day of July of the current year + + + + + The 10th day of July of the current year + + + + + The 11th day of July of the current year + + + + + The 12th day of July of the current year + + + + + The 13th day of July of the current year + + + + + The 14th day of July of the current year + + + + + The 15th day of July of the current year + + + + + The 16th day of July of the current year + + + + + The 17th day of July of the current year + + + + + The 18th day of July of the current year + + + + + The 19th day of July of the current year + + + + + The 20th day of July of the current year + + + + + The 21st day of July of the current year + + + + + The 22nd day of July of the current year + + + + + The 23rd day of July of the current year + + + + + The 24th day of July of the current year + + + + + The 25th day of July of the current year + + + + + The 26th day of July of the current year + + + + + The 27th day of July of the current year + + + + + The 28th day of July of the current year + + + + + The 29th day of July of the current year + + + + + The 30th day of July of the current year + + + + + The 31st day of July of the current year + + + + + Provides fluent date accessors for August + + + + + The nth day of August of the current year + + + + + The 1st day of August of the current year + + + + + The 2nd day of August of the current year + + + + + The 3rd day of August of the current year + + + + + The 4th day of August of the current year + + + + + The 5th day of August of the current year + + + + + The 6th day of August of the current year + + + + + The 7th day of August of the current year + + + + + The 8th day of August of the current year + + + + + The 9th day of August of the current year + + + + + The 10th day of August of the current year + + + + + The 11th day of August of the current year + + + + + The 12th day of August of the current year + + + + + The 13th day of August of the current year + + + + + The 14th day of August of the current year + + + + + The 15th day of August of the current year + + + + + The 16th day of August of the current year + + + + + The 17th day of August of the current year + + + + + The 18th day of August of the current year + + + + + The 19th day of August of the current year + + + + + The 20th day of August of the current year + + + + + The 21st day of August of the current year + + + + + The 22nd day of August of the current year + + + + + The 23rd day of August of the current year + + + + + The 24th day of August of the current year + + + + + The 25th day of August of the current year + + + + + The 26th day of August of the current year + + + + + The 27th day of August of the current year + + + + + The 28th day of August of the current year + + + + + The 29th day of August of the current year + + + + + The 30th day of August of the current year + + + + + The 31st day of August of the current year + + + + + Provides fluent date accessors for September + + + + + The nth day of September of the current year + + + + + The 1st day of September of the current year + + + + + The 2nd day of September of the current year + + + + + The 3rd day of September of the current year + + + + + The 4th day of September of the current year + + + + + The 5th day of September of the current year + + + + + The 6th day of September of the current year + + + + + The 7th day of September of the current year + + + + + The 8th day of September of the current year + + + + + The 9th day of September of the current year + + + + + The 10th day of September of the current year + + + + + The 11th day of September of the current year + + + + + The 12th day of September of the current year + + + + + The 13th day of September of the current year + + + + + The 14th day of September of the current year + + + + + The 15th day of September of the current year + + + + + The 16th day of September of the current year + + + + + The 17th day of September of the current year + + + + + The 18th day of September of the current year + + + + + The 19th day of September of the current year + + + + + The 20th day of September of the current year + + + + + The 21st day of September of the current year + + + + + The 22nd day of September of the current year + + + + + The 23rd day of September of the current year + + + + + The 24th day of September of the current year + + + + + The 25th day of September of the current year + + + + + The 26th day of September of the current year + + + + + The 27th day of September of the current year + + + + + The 28th day of September of the current year + + + + + The 29th day of September of the current year + + + + + The 30th day of September of the current year + + + + + Provides fluent date accessors for October + + + + + The nth day of October of the current year + + + + + The 1st day of October of the current year + + + + + The 2nd day of October of the current year + + + + + The 3rd day of October of the current year + + + + + The 4th day of October of the current year + + + + + The 5th day of October of the current year + + + + + The 6th day of October of the current year + + + + + The 7th day of October of the current year + + + + + The 8th day of October of the current year + + + + + The 9th day of October of the current year + + + + + The 10th day of October of the current year + + + + + The 11th day of October of the current year + + + + + The 12th day of October of the current year + + + + + The 13th day of October of the current year + + + + + The 14th day of October of the current year + + + + + The 15th day of October of the current year + + + + + The 16th day of October of the current year + + + + + The 17th day of October of the current year + + + + + The 18th day of October of the current year + + + + + The 19th day of October of the current year + + + + + The 20th day of October of the current year + + + + + The 21st day of October of the current year + + + + + The 22nd day of October of the current year + + + + + The 23rd day of October of the current year + + + + + The 24th day of October of the current year + + + + + The 25th day of October of the current year + + + + + The 26th day of October of the current year + + + + + The 27th day of October of the current year + + + + + The 28th day of October of the current year + + + + + The 29th day of October of the current year + + + + + The 30th day of October of the current year + + + + + The 31st day of October of the current year + + + + + Provides fluent date accessors for November + + + + + The nth day of November of the current year + + + + + The 1st day of November of the current year + + + + + The 2nd day of November of the current year + + + + + The 3rd day of November of the current year + + + + + The 4th day of November of the current year + + + + + The 5th day of November of the current year + + + + + The 6th day of November of the current year + + + + + The 7th day of November of the current year + + + + + The 8th day of November of the current year + + + + + The 9th day of November of the current year + + + + + The 10th day of November of the current year + + + + + The 11th day of November of the current year + + + + + The 12th day of November of the current year + + + + + The 13th day of November of the current year + + + + + The 14th day of November of the current year + + + + + The 15th day of November of the current year + + + + + The 16th day of November of the current year + + + + + The 17th day of November of the current year + + + + + The 18th day of November of the current year + + + + + The 19th day of November of the current year + + + + + The 20th day of November of the current year + + + + + The 21st day of November of the current year + + + + + The 22nd day of November of the current year + + + + + The 23rd day of November of the current year + + + + + The 24th day of November of the current year + + + + + The 25th day of November of the current year + + + + + The 26th day of November of the current year + + + + + The 27th day of November of the current year + + + + + The 28th day of November of the current year + + + + + The 29th day of November of the current year + + + + + The 30th day of November of the current year + + + + + Provides fluent date accessors for December + + + + + The nth day of December of the current year + + + + + The 1st day of December of the current year + + + + + The 2nd day of December of the current year + + + + + The 3rd day of December of the current year + + + + + The 4th day of December of the current year + + + + + The 5th day of December of the current year + + + + + The 6th day of December of the current year + + + + + The 7th day of December of the current year + + + + + The 8th day of December of the current year + + + + + The 9th day of December of the current year + + + + + The 10th day of December of the current year + + + + + The 11th day of December of the current year + + + + + The 12th day of December of the current year + + + + + The 13th day of December of the current year + + + + + The 14th day of December of the current year + + + + + The 15th day of December of the current year + + + + + The 16th day of December of the current year + + + + + The 17th day of December of the current year + + + + + The 18th day of December of the current year + + + + + The 19th day of December of the current year + + + + + The 20th day of December of the current year + + + + + The 21st day of December of the current year + + + + + The 22nd day of December of the current year + + + + + The 23rd day of December of the current year + + + + + The 24th day of December of the current year + + + + + The 25th day of December of the current year + + + + + The 26th day of December of the current year + + + + + The 27th day of December of the current year + + + + + The 28th day of December of the current year + + + + + The 29th day of December of the current year + + + + + The 30th day of December of the current year + + + + + The 31st day of December of the current year + + + + + Dictating what should be done when a match is not found - currently used only for DehumanizeTo + + + + + This is the default behavior which throws a NoMatchFoundException + + + + + If set to ReturnsNull the method returns null instead of throwing an exception + + + + + This is thrown on String.DehumanizeTo enum when the provided string cannot be mapped to the target enum + + + + + Contains extension methods for changing a number to Roman representation (ToRoman) and from Roman representation back to the number (FromRoman) + + + + + Converts Roman numbers into integer + + Roman number + Human-readable number + + + + Converts the input to Roman number + + Integer input + Roman number + + + + Extension methods for String type. + + + + + Extension method to format string with passed arguments. Current thread's current culture is used + + string format + arguments + + + + + Extension method to format string with passed arguments using specified format provider (i.e. CultureInfo) + + string format + An object that supplies culture-specific formatting information + arguments + + + + + Enumerates the ways of displaying a quantity value when converting + a word to a quantity string. + + + + + Indicates that no quantity will be included in the formatted string. + + + + + Indicates that the quantity will be included in the output, formatted + as its numeric value (e.g. "1"). + + + + + Incidates that the quantity will be included in the output, formatted as + words (e.g. 123 => "one hundred and twenty three"). + + + + + Provides extensions for formatting a word as a quantity. + + + + + Prefixes the provided word with the number and accordingly pluralizes or singularizes the word + + The word to be prefixed + The quantity of the word + How to show the quantity. Numeric by default + + "request".ToQuantity(0) => "0 requests" + "request".ToQuantity(1) => "1 request" + "request".ToQuantity(2) => "2 requests" + "men".ToQuantity(2) => "2 men" + "process".ToQuantity(1200, ShowQuantityAs.Words) => "one thousand two hundred processes" + + + + + + Prefixes the provided word with the number and accordingly pluralizes or singularizes the word + + The word to be prefixed + The quantity of the word + A standard or custom numeric format string. + An object that supplies culture-specific formatting information. + + "request".ToQuantity(0) => "0 requests" + "request".ToQuantity(10000, format: "N0") => "10,000 requests" + "request".ToQuantity(1, format: "N0") => "1 request" + + + + + + A portal to string transformation using IStringTransformer + + + + + Transforms a string using the provided transformers. Transformations are applied in the provided order. + + + + + + + + Changes string to title case + + + "INvalid caSEs arE corrected" -> "Invalid Cases Are Corrected" + + + + + Changes the string to lower case + + + "Sentence casing" -> "sentence casing" + + + + + Changes the string to upper case + + + "lower case statement" -> "LOWER CASE STATEMENT" + + + + + Changes the string to sentence case + + + "lower case statement" -> "Lower case statement" + + + + + Can tranform a string + + + + + Transform the input + + String to be transformed + + + + + Contains extension methods for dehumanizing Enum string values. + + + + + Dehumanizes a string into the Enum it was originally Humanized from! + + The target enum + The string to be converted + If TTargetEnum is not an enum + Couldn't find any enum member that matches the string + + + + + Dehumanizes a string into the Enum it was originally Humanized from! + + The string to be converted + The target enum + What to do when input is not matched to the enum. + + Couldn't find any enum member that matches the string + If targetEnum is not an enum + + + + Contains extension methods for humanizing Enums + + + + + Turns an enum member into a human readable string; e.g. AnonymousUser -> Anonymous user. It also honors DescriptionAttribute data annotation + + The enum member to be humanized + + + + + Checks whether the given enum is to be used as a bit field type. + + + True if the given enum is a bit field enum, false otherwise. + + + + Turns an enum member into a human readable string with the provided casing; e.g. AnonymousUser with Title casing -> Anonymous User. It also honors DescriptionAttribute data annotation + + The enum member to be humanized + The casing to use for humanizing the enum member + + + + + extensions related to spatial or temporal relations + + + + + Returns a new with the specifed hour and, optionally + provided minutes, seconds, and milliseconds. + + + + + Returns a new instance of DateTime based on the provided date where the time is set to midnight + + + + + + + Returns a new instance of DateTime based on the provided date where the time is set to noon + + + + + + + Returns a new instance of DateTime based on the provided date where the year is set to the provided year + + + + + + + + Number to TimeSpan extensions + + + + + 5.Milliseconds() == TimeSpan.FromMilliseconds(5) + + + + + + + 5.Milliseconds() == TimeSpan.FromMilliseconds(5) + + + + + + + 5.Milliseconds() == TimeSpan.FromMilliseconds(5) + + + + + + + 5.Milliseconds() == TimeSpan.FromMilliseconds(5) + + + + + + + 5.Milliseconds() == TimeSpan.FromMilliseconds(5) + + + + + + + 5.Milliseconds() == TimeSpan.FromMilliseconds(5) + + + + + + + 5.Milliseconds() == TimeSpan.FromMilliseconds(5) + + + + + + + 5.Milliseconds() == TimeSpan.FromMilliseconds(5) + + + + + + + 5.Milliseconds() == TimeSpan.FromMilliseconds(5) + + + + + + + 5.Seconds() == TimeSpan.FromSeconds(5) + + + + + + + 5.Seconds() == TimeSpan.FromSeconds(5) + + + + + + + 5.Seconds() == TimeSpan.FromSeconds(5) + + + + + + + 5.Seconds() == TimeSpan.FromSeconds(5) + + + + + + + 5.Seconds() == TimeSpan.FromSeconds(5) + + + + + + + 5.Seconds() == TimeSpan.FromSeconds(5) + + + + + + + 5.Seconds() == TimeSpan.FromSeconds(5) + + + + + + + 5.Seconds() == TimeSpan.FromSeconds(5) + + + + + + + 5.Seconds() == TimeSpan.FromSeconds(5) + + + + + + + 4.Minutes() == TimeSpan.FromMinutes(4) + + + + + + + 4.Minutes() == TimeSpan.FromMinutes(4) + + + + + + + 4.Minutes() == TimeSpan.FromMinutes(4) + + + + + + + 4.Minutes() == TimeSpan.FromMinutes(4) + + + + + + + 4.Minutes() == TimeSpan.FromMinutes(4) + + + + + + + 4.Minutes() == TimeSpan.FromMinutes(4) + + + + + + + 4.Minutes() == TimeSpan.FromMinutes(4) + + + + + + + 4.Minutes() == TimeSpan.FromMinutes(4) + + + + + + + 4.Minutes() == TimeSpan.FromMinutes(4) + + + + + + + 3.Hours() == TimeSpan.FromHours(3) + + + + + + + 3.Hours() == TimeSpan.FromHours(3) + + + + + + + 3.Hours() == TimeSpan.FromHours(3) + + + + + + + 3.Hours() == TimeSpan.FromHours(3) + + + + + + + 3.Hours() == TimeSpan.FromHours(3) + + + + + + + 3.Hours() == TimeSpan.FromHours(3) + + + + + + + 3.Hours() == TimeSpan.FromHours(3) + + + + + + + 3.Hours() == TimeSpan.FromHours(3) + + + + + + + 3.Hours() == TimeSpan.FromHours(3) + + + + + + + 2.Days() == TimeSpan.FromDays(2) + + + + + + + 2.Days() == TimeSpan.FromDays(2) + + + + + + + 2.Days() == TimeSpan.FromDays(2) + + + + + + + 2.Days() == TimeSpan.FromDays(2) + + + + + + + 2.Days() == TimeSpan.FromDays(2) + + + + + + + 2.Days() == TimeSpan.FromDays(2) + + + + + + + 2.Days() == TimeSpan.FromDays(2) + + + + + + + 2.Days() == TimeSpan.FromDays(2) + + + + + + + 2.Days() == TimeSpan.FromDays(2) + + + + + + + 2.Weeks() == new TimeSpan(14, 0, 0, 0) + + + + + + + 2.Weeks() == new TimeSpan(14, 0, 0, 0) + + + + + + + 2.Weeks() == new TimeSpan(14, 0, 0, 0) + + + + + + + 2.Weeks() == new TimeSpan(14, 0, 0, 0) + + + + + + + 2.Weeks() == new TimeSpan(14, 0, 0, 0) + + + + + + + 2.Weeks() == new TimeSpan(14, 0, 0, 0) + + + + + + + 2.Weeks() == new TimeSpan(14, 0, 0, 0) + + + + + + + 2.Weeks() == new TimeSpan(14, 0, 0, 0) + + + + + + + 2.Weeks() == new TimeSpan(14, 0, 0, 0) + + + + + + + Inflector extensions + + + + + Pluralizes the provided input considering irregular words + + Word to be pluralized + Normally you call Pluralize on singular words; but if you're unsure call it with false + + + + + Singularizes the provided input considering irregular words + + Word to be singularized + Normally you call Singularize on plural words; but if you're unsure call it with false + + + + + Humanizes the input with Title casing + + The string to be titleized + + + + + By default, pascalize converts strings to UpperCamelCase also removing underscores + + + + + + + Same as Pascalize except that the first character is lower case + + + + + + + Separates the input words with underscore + + The string to be underscored + + + + + Replaces underscores with dashes in the string + + + + + + + Replaces underscores with hyphens in the string + + + + + + + Options for specifying the desired letter casing for the output string + + + + + SomeString -> Some String + + + + + SomeString -> SOME STRING + + + + + SomeString -> some string + + + + + SomeString -> Some string + + + + + Transform a number into words; e.g. 1 => one + + + + + 3501.ToWords() -> "three thousand five hundred and one" + + Number to be turned to words + Culture to use. If null, current thread's UI culture is used. + + + + + For locales that support gender-specific forms + + + Russian: + + 1.ToWords(GrammaticalGender.Masculine) -> "один" + 1.ToWords(GrammaticalGender.Feminine) -> "одна" + + Hebrew: + + 1.ToWords(GrammaticalGender.Masculine) -> "אחד" + 1.ToWords(GrammaticalGender.Feminine) -> "אחת" + + + + Number to be turned to words + The grammatical gender to use for output words + Culture to use. If null, current thread's UI culture is used. + + + + + 1.ToOrdinalWords() -> "first" + + Number to be turned to ordinal words + Culture to use. If null, current thread's UI culture is used. + + + + + for Brazilian Portuguese locale + 1.ToOrdinalWords(GrammaticalGender.Masculine) -> "primeiro" + 1.ToOrdinalWords(GrammaticalGender.Feminine) -> "primeira" + + Number to be turned to words + The grammatical gender to use for output words + Culture to use. If null, current thread's UI culture is used. + + + + + Ordinalize extensions + + + + + Turns a number into an ordinal string used to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th. + + The number, in string, to be ordinalized + + + + + Turns a number into an ordinal string used to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th. + Gender for Brazilian Portuguese locale + "1".Ordinalize(GrammaticalGender.Masculine) -> "1º" + "1".Ordinalize(GrammaticalGender.Feminine) -> "1ª" + + The number, in string, to be ordinalized + The grammatical gender to use for output words + + + + + Turns a number into an ordinal number used to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th. + + The number to be ordinalized + + + + + Turns a number into an ordinal number used to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th. + Gender for Brazilian Portuguese locale + 1.Ordinalize(GrammaticalGender.Masculine) -> "1º" + 1.Ordinalize(GrammaticalGender.Feminine) -> "1ª" + + The number to be ordinalized + The grammatical gender to use for output words + + + + + Contains extension methods for dehumanizing strings. + + + + + Dehumanizes a string; e.g. 'some string', 'Some String', 'Some string' -> 'SomeString' + + The string to be dehumanized + + + + + Contains extension methods for humanizing string values. + + + + + Humanizes the input string; e.g. Underscored_input_String_is_turned_INTO_sentence -> 'Underscored input String is turned INTO sentence' + + The string to be humanized + + + + + Humanized the input string based on the provided casing + + The string to be humanized + The desired casing for the output + + + + + Truncate a string to a fixed length + + + + + Truncate a string to a fixed number of letters or digits + + + + + Truncate a string to a fixed number of words + + + + + Can truncate a string. + + + + + Truncate a string + + The string to truncate + The length to truncate to + The string used to truncate with + The enum value used to determine from where to truncate the string + The truncated string + + + + Allow strings to be truncated + + + + + Truncate the string + + The string to be truncated + The length to truncate to + The truncated string + + + + Truncate the string + + The string to be truncated + The length to truncate to + The truncate to use + The enum value used to determine from where to truncate the string + The truncated string + + + + Truncate the string + + The string to be truncated + The length to truncate to + The string used to truncate with + The enum value used to determine from where to truncate the string + The truncated string + + + + Truncate the string + + The string to be truncated + The length to truncate to + The string used to truncate with + The truncator to use + The enum value used to determine from where to truncate the string + The truncated string + + + + Truncation location for humanizer + + + + + Truncate letters from the left (start) of the string + + + + + Truncate letters from the right (end) of the string + + + + + Gets a ITruncator + + + + + Fixed length truncator + + + + + Fixed number of characters truncator + + + + + Fixed number of words truncator + + + + diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/af/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/af/Humanizer.resources.dll new file mode 100644 index 000000000..b86f3f399 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/af/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ar/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ar/Humanizer.resources.dll new file mode 100644 index 000000000..4d902d551 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ar/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/bg/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/bg/Humanizer.resources.dll new file mode 100644 index 000000000..9bc5cbbf7 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/bg/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/bn-BD/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/bn-BD/Humanizer.resources.dll new file mode 100644 index 000000000..f62ed3a19 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/bn-BD/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/cs/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/cs/Humanizer.resources.dll new file mode 100644 index 000000000..171329030 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/cs/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/da/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/da/Humanizer.resources.dll new file mode 100644 index 000000000..f8850d692 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/da/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/de/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/de/Humanizer.resources.dll new file mode 100644 index 000000000..d2a2c9409 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/de/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/el/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/el/Humanizer.resources.dll new file mode 100644 index 000000000..ce1cf04dd Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/el/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/es/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/es/Humanizer.resources.dll new file mode 100644 index 000000000..9cee62b14 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/es/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fa/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fa/Humanizer.resources.dll new file mode 100644 index 000000000..d568264f9 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fa/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fi-FI/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fi-FI/Humanizer.resources.dll new file mode 100644 index 000000000..3941613cb Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fi-FI/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fr-BE/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fr-BE/Humanizer.resources.dll new file mode 100644 index 000000000..1cb881081 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fr-BE/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fr/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fr/Humanizer.resources.dll new file mode 100644 index 000000000..1db8a0ccd Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/fr/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/he/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/he/Humanizer.resources.dll new file mode 100644 index 000000000..0d97455cb Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/he/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/hr/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/hr/Humanizer.resources.dll new file mode 100644 index 000000000..cd76f89c0 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/hr/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/hu/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/hu/Humanizer.resources.dll new file mode 100644 index 000000000..11c15775f Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/hu/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/id/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/id/Humanizer.resources.dll new file mode 100644 index 000000000..8ec59eea2 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/id/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/it/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/it/Humanizer.resources.dll new file mode 100644 index 000000000..9eba92c00 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/it/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ja/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ja/Humanizer.resources.dll new file mode 100644 index 000000000..ed43fc9a1 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ja/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/nb-NO/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/nb-NO/Humanizer.resources.dll new file mode 100644 index 000000000..e8b2e19da Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/nb-NO/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/nb/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/nb/Humanizer.resources.dll new file mode 100644 index 000000000..1bd089779 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/nb/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/nl/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/nl/Humanizer.resources.dll new file mode 100644 index 000000000..cb97af01f Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/nl/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/pl/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/pl/Humanizer.resources.dll new file mode 100644 index 000000000..90c0c92a3 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/pl/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/pt/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/pt/Humanizer.resources.dll new file mode 100644 index 000000000..85b43a962 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/pt/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ro/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ro/Humanizer.resources.dll new file mode 100644 index 000000000..071c4caf8 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ro/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ru/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ru/Humanizer.resources.dll new file mode 100644 index 000000000..287324e37 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/ru/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sk/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sk/Humanizer.resources.dll new file mode 100644 index 000000000..2fd36f8ac Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sk/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sl/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sl/Humanizer.resources.dll new file mode 100644 index 000000000..b8a1bd090 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sl/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sr-Latn/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sr-Latn/Humanizer.resources.dll new file mode 100644 index 000000000..408b286f3 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sr-Latn/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sr/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sr/Humanizer.resources.dll new file mode 100644 index 000000000..a322f2311 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sr/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sv/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sv/Humanizer.resources.dll new file mode 100644 index 000000000..727c5f6bf Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/sv/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/tr/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/tr/Humanizer.resources.dll new file mode 100644 index 000000000..30696f757 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/tr/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/uk/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/uk/Humanizer.resources.dll new file mode 100644 index 000000000..f33b8adb0 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/uk/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/uz-Cyrl-UZ/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/uz-Cyrl-UZ/Humanizer.resources.dll new file mode 100644 index 000000000..77d69b049 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/uz-Cyrl-UZ/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/uz-Latn-UZ/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/uz-Latn-UZ/Humanizer.resources.dll new file mode 100644 index 000000000..f92165feb Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/uz-Latn-UZ/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/vi/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/vi/Humanizer.resources.dll new file mode 100644 index 000000000..4a7427ce2 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/vi/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/zh-CN/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/zh-CN/Humanizer.resources.dll new file mode 100644 index 000000000..cea337f27 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/zh-CN/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/zh-Hans/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/zh-Hans/Humanizer.resources.dll new file mode 100644 index 000000000..7ce601aa4 Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/zh-Hans/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/zh-Hant/Humanizer.resources.dll b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/zh-Hant/Humanizer.resources.dll new file mode 100644 index 000000000..5a2b3244e Binary files /dev/null and b/packages/Humanizer.Core.2.1.0/lib/netstandard1.0/zh-Hant/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.af.2.1.0/Humanizer.Core.af.2.1.0.nupkg b/packages/Humanizer.Core.af.2.1.0/Humanizer.Core.af.2.1.0.nupkg new file mode 100644 index 000000000..9506bc026 Binary files /dev/null and b/packages/Humanizer.Core.af.2.1.0/Humanizer.Core.af.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.af.2.1.0/lib/netstandard1.0/af/Humanizer.resources.dll b/packages/Humanizer.Core.af.2.1.0/lib/netstandard1.0/af/Humanizer.resources.dll new file mode 100644 index 000000000..b86f3f399 Binary files /dev/null and b/packages/Humanizer.Core.af.2.1.0/lib/netstandard1.0/af/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.ar.2.1.0/Humanizer.Core.ar.2.1.0.nupkg b/packages/Humanizer.Core.ar.2.1.0/Humanizer.Core.ar.2.1.0.nupkg new file mode 100644 index 000000000..06e18c7a0 Binary files /dev/null and b/packages/Humanizer.Core.ar.2.1.0/Humanizer.Core.ar.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.ar.2.1.0/lib/netstandard1.0/ar/Humanizer.resources.dll b/packages/Humanizer.Core.ar.2.1.0/lib/netstandard1.0/ar/Humanizer.resources.dll new file mode 100644 index 000000000..4d902d551 Binary files /dev/null and b/packages/Humanizer.Core.ar.2.1.0/lib/netstandard1.0/ar/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.bg.2.1.0/Humanizer.Core.bg.2.1.0.nupkg b/packages/Humanizer.Core.bg.2.1.0/Humanizer.Core.bg.2.1.0.nupkg new file mode 100644 index 000000000..496569ec0 Binary files /dev/null and b/packages/Humanizer.Core.bg.2.1.0/Humanizer.Core.bg.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.bg.2.1.0/lib/netstandard1.0/bg/Humanizer.resources.dll b/packages/Humanizer.Core.bg.2.1.0/lib/netstandard1.0/bg/Humanizer.resources.dll new file mode 100644 index 000000000..9bc5cbbf7 Binary files /dev/null and b/packages/Humanizer.Core.bg.2.1.0/lib/netstandard1.0/bg/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.bn-BD.2.1.0/Humanizer.Core.bn-BD.2.1.0.nupkg b/packages/Humanizer.Core.bn-BD.2.1.0/Humanizer.Core.bn-BD.2.1.0.nupkg new file mode 100644 index 000000000..e7de60289 Binary files /dev/null and b/packages/Humanizer.Core.bn-BD.2.1.0/Humanizer.Core.bn-BD.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.bn-BD.2.1.0/lib/netstandard1.0/bn-BD/Humanizer.resources.dll b/packages/Humanizer.Core.bn-BD.2.1.0/lib/netstandard1.0/bn-BD/Humanizer.resources.dll new file mode 100644 index 000000000..f62ed3a19 Binary files /dev/null and b/packages/Humanizer.Core.bn-BD.2.1.0/lib/netstandard1.0/bn-BD/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.cs.2.1.0/Humanizer.Core.cs.2.1.0.nupkg b/packages/Humanizer.Core.cs.2.1.0/Humanizer.Core.cs.2.1.0.nupkg new file mode 100644 index 000000000..ea513bc7b Binary files /dev/null and b/packages/Humanizer.Core.cs.2.1.0/Humanizer.Core.cs.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.cs.2.1.0/lib/netstandard1.0/cs/Humanizer.resources.dll b/packages/Humanizer.Core.cs.2.1.0/lib/netstandard1.0/cs/Humanizer.resources.dll new file mode 100644 index 000000000..171329030 Binary files /dev/null and b/packages/Humanizer.Core.cs.2.1.0/lib/netstandard1.0/cs/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.da.2.1.0/Humanizer.Core.da.2.1.0.nupkg b/packages/Humanizer.Core.da.2.1.0/Humanizer.Core.da.2.1.0.nupkg new file mode 100644 index 000000000..497238503 Binary files /dev/null and b/packages/Humanizer.Core.da.2.1.0/Humanizer.Core.da.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.da.2.1.0/lib/netstandard1.0/da/Humanizer.resources.dll b/packages/Humanizer.Core.da.2.1.0/lib/netstandard1.0/da/Humanizer.resources.dll new file mode 100644 index 000000000..f8850d692 Binary files /dev/null and b/packages/Humanizer.Core.da.2.1.0/lib/netstandard1.0/da/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.de.2.1.0/Humanizer.Core.de.2.1.0.nupkg b/packages/Humanizer.Core.de.2.1.0/Humanizer.Core.de.2.1.0.nupkg new file mode 100644 index 000000000..da68fdac9 Binary files /dev/null and b/packages/Humanizer.Core.de.2.1.0/Humanizer.Core.de.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.de.2.1.0/lib/netstandard1.0/de/Humanizer.resources.dll b/packages/Humanizer.Core.de.2.1.0/lib/netstandard1.0/de/Humanizer.resources.dll new file mode 100644 index 000000000..d2a2c9409 Binary files /dev/null and b/packages/Humanizer.Core.de.2.1.0/lib/netstandard1.0/de/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.el.2.1.0/Humanizer.Core.el.2.1.0.nupkg b/packages/Humanizer.Core.el.2.1.0/Humanizer.Core.el.2.1.0.nupkg new file mode 100644 index 000000000..118b186b8 Binary files /dev/null and b/packages/Humanizer.Core.el.2.1.0/Humanizer.Core.el.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.el.2.1.0/lib/netstandard1.0/el/Humanizer.resources.dll b/packages/Humanizer.Core.el.2.1.0/lib/netstandard1.0/el/Humanizer.resources.dll new file mode 100644 index 000000000..ce1cf04dd Binary files /dev/null and b/packages/Humanizer.Core.el.2.1.0/lib/netstandard1.0/el/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.es.2.1.0/Humanizer.Core.es.2.1.0.nupkg b/packages/Humanizer.Core.es.2.1.0/Humanizer.Core.es.2.1.0.nupkg new file mode 100644 index 000000000..8f7fd518b Binary files /dev/null and b/packages/Humanizer.Core.es.2.1.0/Humanizer.Core.es.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.es.2.1.0/lib/netstandard1.0/es/Humanizer.resources.dll b/packages/Humanizer.Core.es.2.1.0/lib/netstandard1.0/es/Humanizer.resources.dll new file mode 100644 index 000000000..9cee62b14 Binary files /dev/null and b/packages/Humanizer.Core.es.2.1.0/lib/netstandard1.0/es/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.fa.2.1.0/Humanizer.Core.fa.2.1.0.nupkg b/packages/Humanizer.Core.fa.2.1.0/Humanizer.Core.fa.2.1.0.nupkg new file mode 100644 index 000000000..ca8d05524 Binary files /dev/null and b/packages/Humanizer.Core.fa.2.1.0/Humanizer.Core.fa.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.fa.2.1.0/lib/netstandard1.0/fa/Humanizer.resources.dll b/packages/Humanizer.Core.fa.2.1.0/lib/netstandard1.0/fa/Humanizer.resources.dll new file mode 100644 index 000000000..d568264f9 Binary files /dev/null and b/packages/Humanizer.Core.fa.2.1.0/lib/netstandard1.0/fa/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.fi-FI.2.1.0/Humanizer.Core.fi-FI.2.1.0.nupkg b/packages/Humanizer.Core.fi-FI.2.1.0/Humanizer.Core.fi-FI.2.1.0.nupkg new file mode 100644 index 000000000..73768d75d Binary files /dev/null and b/packages/Humanizer.Core.fi-FI.2.1.0/Humanizer.Core.fi-FI.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.fi-FI.2.1.0/lib/netstandard1.0/fi-FI/Humanizer.resources.dll b/packages/Humanizer.Core.fi-FI.2.1.0/lib/netstandard1.0/fi-FI/Humanizer.resources.dll new file mode 100644 index 000000000..3941613cb Binary files /dev/null and b/packages/Humanizer.Core.fi-FI.2.1.0/lib/netstandard1.0/fi-FI/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.fr-BE.2.1.0/Humanizer.Core.fr-BE.2.1.0.nupkg b/packages/Humanizer.Core.fr-BE.2.1.0/Humanizer.Core.fr-BE.2.1.0.nupkg new file mode 100644 index 000000000..2499b640f Binary files /dev/null and b/packages/Humanizer.Core.fr-BE.2.1.0/Humanizer.Core.fr-BE.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.fr-BE.2.1.0/lib/netstandard1.0/fr-BE/Humanizer.resources.dll b/packages/Humanizer.Core.fr-BE.2.1.0/lib/netstandard1.0/fr-BE/Humanizer.resources.dll new file mode 100644 index 000000000..1cb881081 Binary files /dev/null and b/packages/Humanizer.Core.fr-BE.2.1.0/lib/netstandard1.0/fr-BE/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.fr.2.1.0/Humanizer.Core.fr.2.1.0.nupkg b/packages/Humanizer.Core.fr.2.1.0/Humanizer.Core.fr.2.1.0.nupkg new file mode 100644 index 000000000..fab4a2fce Binary files /dev/null and b/packages/Humanizer.Core.fr.2.1.0/Humanizer.Core.fr.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.fr.2.1.0/lib/netstandard1.0/fr/Humanizer.resources.dll b/packages/Humanizer.Core.fr.2.1.0/lib/netstandard1.0/fr/Humanizer.resources.dll new file mode 100644 index 000000000..1db8a0ccd Binary files /dev/null and b/packages/Humanizer.Core.fr.2.1.0/lib/netstandard1.0/fr/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.he.2.1.0/Humanizer.Core.he.2.1.0.nupkg b/packages/Humanizer.Core.he.2.1.0/Humanizer.Core.he.2.1.0.nupkg new file mode 100644 index 000000000..16f77644c Binary files /dev/null and b/packages/Humanizer.Core.he.2.1.0/Humanizer.Core.he.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.he.2.1.0/lib/netstandard1.0/he/Humanizer.resources.dll b/packages/Humanizer.Core.he.2.1.0/lib/netstandard1.0/he/Humanizer.resources.dll new file mode 100644 index 000000000..0d97455cb Binary files /dev/null and b/packages/Humanizer.Core.he.2.1.0/lib/netstandard1.0/he/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.hr.2.1.0/Humanizer.Core.hr.2.1.0.nupkg b/packages/Humanizer.Core.hr.2.1.0/Humanizer.Core.hr.2.1.0.nupkg new file mode 100644 index 000000000..9cbf0a104 Binary files /dev/null and b/packages/Humanizer.Core.hr.2.1.0/Humanizer.Core.hr.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.hr.2.1.0/lib/netstandard1.0/hr/Humanizer.resources.dll b/packages/Humanizer.Core.hr.2.1.0/lib/netstandard1.0/hr/Humanizer.resources.dll new file mode 100644 index 000000000..cd76f89c0 Binary files /dev/null and b/packages/Humanizer.Core.hr.2.1.0/lib/netstandard1.0/hr/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.hu.2.1.0/Humanizer.Core.hu.2.1.0.nupkg b/packages/Humanizer.Core.hu.2.1.0/Humanizer.Core.hu.2.1.0.nupkg new file mode 100644 index 000000000..ae0abacd4 Binary files /dev/null and b/packages/Humanizer.Core.hu.2.1.0/Humanizer.Core.hu.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.hu.2.1.0/lib/netstandard1.0/hu/Humanizer.resources.dll b/packages/Humanizer.Core.hu.2.1.0/lib/netstandard1.0/hu/Humanizer.resources.dll new file mode 100644 index 000000000..11c15775f Binary files /dev/null and b/packages/Humanizer.Core.hu.2.1.0/lib/netstandard1.0/hu/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.id.2.1.0/Humanizer.Core.id.2.1.0.nupkg b/packages/Humanizer.Core.id.2.1.0/Humanizer.Core.id.2.1.0.nupkg new file mode 100644 index 000000000..c8d95571c Binary files /dev/null and b/packages/Humanizer.Core.id.2.1.0/Humanizer.Core.id.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.id.2.1.0/lib/netstandard1.0/id/Humanizer.resources.dll b/packages/Humanizer.Core.id.2.1.0/lib/netstandard1.0/id/Humanizer.resources.dll new file mode 100644 index 000000000..8ec59eea2 Binary files /dev/null and b/packages/Humanizer.Core.id.2.1.0/lib/netstandard1.0/id/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.it.2.1.0/Humanizer.Core.it.2.1.0.nupkg b/packages/Humanizer.Core.it.2.1.0/Humanizer.Core.it.2.1.0.nupkg new file mode 100644 index 000000000..4c5b5cdfe Binary files /dev/null and b/packages/Humanizer.Core.it.2.1.0/Humanizer.Core.it.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.it.2.1.0/lib/netstandard1.0/it/Humanizer.resources.dll b/packages/Humanizer.Core.it.2.1.0/lib/netstandard1.0/it/Humanizer.resources.dll new file mode 100644 index 000000000..9eba92c00 Binary files /dev/null and b/packages/Humanizer.Core.it.2.1.0/lib/netstandard1.0/it/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.ja.2.1.0/Humanizer.Core.ja.2.1.0.nupkg b/packages/Humanizer.Core.ja.2.1.0/Humanizer.Core.ja.2.1.0.nupkg new file mode 100644 index 000000000..71178660e Binary files /dev/null and b/packages/Humanizer.Core.ja.2.1.0/Humanizer.Core.ja.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.ja.2.1.0/lib/netstandard1.0/ja/Humanizer.resources.dll b/packages/Humanizer.Core.ja.2.1.0/lib/netstandard1.0/ja/Humanizer.resources.dll new file mode 100644 index 000000000..ed43fc9a1 Binary files /dev/null and b/packages/Humanizer.Core.ja.2.1.0/lib/netstandard1.0/ja/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.nb-NO.2.1.0/Humanizer.Core.nb-NO.2.1.0.nupkg b/packages/Humanizer.Core.nb-NO.2.1.0/Humanizer.Core.nb-NO.2.1.0.nupkg new file mode 100644 index 000000000..fc3bf3581 Binary files /dev/null and b/packages/Humanizer.Core.nb-NO.2.1.0/Humanizer.Core.nb-NO.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.nb-NO.2.1.0/lib/netstandard1.0/nb-NO/Humanizer.resources.dll b/packages/Humanizer.Core.nb-NO.2.1.0/lib/netstandard1.0/nb-NO/Humanizer.resources.dll new file mode 100644 index 000000000..e8b2e19da Binary files /dev/null and b/packages/Humanizer.Core.nb-NO.2.1.0/lib/netstandard1.0/nb-NO/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.nb.2.1.0/Humanizer.Core.nb.2.1.0.nupkg b/packages/Humanizer.Core.nb.2.1.0/Humanizer.Core.nb.2.1.0.nupkg new file mode 100644 index 000000000..bee46b110 Binary files /dev/null and b/packages/Humanizer.Core.nb.2.1.0/Humanizer.Core.nb.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.nb.2.1.0/lib/netstandard1.0/nb/Humanizer.resources.dll b/packages/Humanizer.Core.nb.2.1.0/lib/netstandard1.0/nb/Humanizer.resources.dll new file mode 100644 index 000000000..1bd089779 Binary files /dev/null and b/packages/Humanizer.Core.nb.2.1.0/lib/netstandard1.0/nb/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.nl.2.1.0/Humanizer.Core.nl.2.1.0.nupkg b/packages/Humanizer.Core.nl.2.1.0/Humanizer.Core.nl.2.1.0.nupkg new file mode 100644 index 000000000..2b10ab91a Binary files /dev/null and b/packages/Humanizer.Core.nl.2.1.0/Humanizer.Core.nl.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.nl.2.1.0/lib/netstandard1.0/nl/Humanizer.resources.dll b/packages/Humanizer.Core.nl.2.1.0/lib/netstandard1.0/nl/Humanizer.resources.dll new file mode 100644 index 000000000..cb97af01f Binary files /dev/null and b/packages/Humanizer.Core.nl.2.1.0/lib/netstandard1.0/nl/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.pl.2.1.0/Humanizer.Core.pl.2.1.0.nupkg b/packages/Humanizer.Core.pl.2.1.0/Humanizer.Core.pl.2.1.0.nupkg new file mode 100644 index 000000000..483b11ced Binary files /dev/null and b/packages/Humanizer.Core.pl.2.1.0/Humanizer.Core.pl.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.pl.2.1.0/lib/netstandard1.0/pl/Humanizer.resources.dll b/packages/Humanizer.Core.pl.2.1.0/lib/netstandard1.0/pl/Humanizer.resources.dll new file mode 100644 index 000000000..90c0c92a3 Binary files /dev/null and b/packages/Humanizer.Core.pl.2.1.0/lib/netstandard1.0/pl/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.pt.2.1.0/Humanizer.Core.pt.2.1.0.nupkg b/packages/Humanizer.Core.pt.2.1.0/Humanizer.Core.pt.2.1.0.nupkg new file mode 100644 index 000000000..ac39098c1 Binary files /dev/null and b/packages/Humanizer.Core.pt.2.1.0/Humanizer.Core.pt.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.pt.2.1.0/lib/netstandard1.0/pt/Humanizer.resources.dll b/packages/Humanizer.Core.pt.2.1.0/lib/netstandard1.0/pt/Humanizer.resources.dll new file mode 100644 index 000000000..85b43a962 Binary files /dev/null and b/packages/Humanizer.Core.pt.2.1.0/lib/netstandard1.0/pt/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.ro.2.1.0/Humanizer.Core.ro.2.1.0.nupkg b/packages/Humanizer.Core.ro.2.1.0/Humanizer.Core.ro.2.1.0.nupkg new file mode 100644 index 000000000..5f7e23681 Binary files /dev/null and b/packages/Humanizer.Core.ro.2.1.0/Humanizer.Core.ro.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.ro.2.1.0/lib/netstandard1.0/ro/Humanizer.resources.dll b/packages/Humanizer.Core.ro.2.1.0/lib/netstandard1.0/ro/Humanizer.resources.dll new file mode 100644 index 000000000..071c4caf8 Binary files /dev/null and b/packages/Humanizer.Core.ro.2.1.0/lib/netstandard1.0/ro/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.ru.2.1.0/Humanizer.Core.ru.2.1.0.nupkg b/packages/Humanizer.Core.ru.2.1.0/Humanizer.Core.ru.2.1.0.nupkg new file mode 100644 index 000000000..ce4735be3 Binary files /dev/null and b/packages/Humanizer.Core.ru.2.1.0/Humanizer.Core.ru.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.ru.2.1.0/lib/netstandard1.0/ru/Humanizer.resources.dll b/packages/Humanizer.Core.ru.2.1.0/lib/netstandard1.0/ru/Humanizer.resources.dll new file mode 100644 index 000000000..287324e37 Binary files /dev/null and b/packages/Humanizer.Core.ru.2.1.0/lib/netstandard1.0/ru/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.sk.2.1.0/Humanizer.Core.sk.2.1.0.nupkg b/packages/Humanizer.Core.sk.2.1.0/Humanizer.Core.sk.2.1.0.nupkg new file mode 100644 index 000000000..bf5e90269 Binary files /dev/null and b/packages/Humanizer.Core.sk.2.1.0/Humanizer.Core.sk.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.sk.2.1.0/lib/netstandard1.0/sk/Humanizer.resources.dll b/packages/Humanizer.Core.sk.2.1.0/lib/netstandard1.0/sk/Humanizer.resources.dll new file mode 100644 index 000000000..2fd36f8ac Binary files /dev/null and b/packages/Humanizer.Core.sk.2.1.0/lib/netstandard1.0/sk/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.sl.2.1.0/Humanizer.Core.sl.2.1.0.nupkg b/packages/Humanizer.Core.sl.2.1.0/Humanizer.Core.sl.2.1.0.nupkg new file mode 100644 index 000000000..3a61566d9 Binary files /dev/null and b/packages/Humanizer.Core.sl.2.1.0/Humanizer.Core.sl.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.sl.2.1.0/lib/netstandard1.0/sl/Humanizer.resources.dll b/packages/Humanizer.Core.sl.2.1.0/lib/netstandard1.0/sl/Humanizer.resources.dll new file mode 100644 index 000000000..b8a1bd090 Binary files /dev/null and b/packages/Humanizer.Core.sl.2.1.0/lib/netstandard1.0/sl/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.sr-Latn.2.1.0/Humanizer.Core.sr-Latn.2.1.0.nupkg b/packages/Humanizer.Core.sr-Latn.2.1.0/Humanizer.Core.sr-Latn.2.1.0.nupkg new file mode 100644 index 000000000..a6af41299 Binary files /dev/null and b/packages/Humanizer.Core.sr-Latn.2.1.0/Humanizer.Core.sr-Latn.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.sr-Latn.2.1.0/lib/netstandard1.0/sr-Latn/Humanizer.resources.dll b/packages/Humanizer.Core.sr-Latn.2.1.0/lib/netstandard1.0/sr-Latn/Humanizer.resources.dll new file mode 100644 index 000000000..408b286f3 Binary files /dev/null and b/packages/Humanizer.Core.sr-Latn.2.1.0/lib/netstandard1.0/sr-Latn/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.sr.2.1.0/Humanizer.Core.sr.2.1.0.nupkg b/packages/Humanizer.Core.sr.2.1.0/Humanizer.Core.sr.2.1.0.nupkg new file mode 100644 index 000000000..c2ad4dc22 Binary files /dev/null and b/packages/Humanizer.Core.sr.2.1.0/Humanizer.Core.sr.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.sr.2.1.0/lib/netstandard1.0/sr/Humanizer.resources.dll b/packages/Humanizer.Core.sr.2.1.0/lib/netstandard1.0/sr/Humanizer.resources.dll new file mode 100644 index 000000000..a322f2311 Binary files /dev/null and b/packages/Humanizer.Core.sr.2.1.0/lib/netstandard1.0/sr/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.sv.2.1.0/Humanizer.Core.sv.2.1.0.nupkg b/packages/Humanizer.Core.sv.2.1.0/Humanizer.Core.sv.2.1.0.nupkg new file mode 100644 index 000000000..5592b205d Binary files /dev/null and b/packages/Humanizer.Core.sv.2.1.0/Humanizer.Core.sv.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.sv.2.1.0/lib/netstandard1.0/sv/Humanizer.resources.dll b/packages/Humanizer.Core.sv.2.1.0/lib/netstandard1.0/sv/Humanizer.resources.dll new file mode 100644 index 000000000..727c5f6bf Binary files /dev/null and b/packages/Humanizer.Core.sv.2.1.0/lib/netstandard1.0/sv/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.tr.2.1.0/Humanizer.Core.tr.2.1.0.nupkg b/packages/Humanizer.Core.tr.2.1.0/Humanizer.Core.tr.2.1.0.nupkg new file mode 100644 index 000000000..f7b4c608c Binary files /dev/null and b/packages/Humanizer.Core.tr.2.1.0/Humanizer.Core.tr.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.tr.2.1.0/lib/netstandard1.0/tr/Humanizer.resources.dll b/packages/Humanizer.Core.tr.2.1.0/lib/netstandard1.0/tr/Humanizer.resources.dll new file mode 100644 index 000000000..30696f757 Binary files /dev/null and b/packages/Humanizer.Core.tr.2.1.0/lib/netstandard1.0/tr/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.uk.2.1.0/Humanizer.Core.uk.2.1.0.nupkg b/packages/Humanizer.Core.uk.2.1.0/Humanizer.Core.uk.2.1.0.nupkg new file mode 100644 index 000000000..484402832 Binary files /dev/null and b/packages/Humanizer.Core.uk.2.1.0/Humanizer.Core.uk.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.uk.2.1.0/lib/netstandard1.0/uk/Humanizer.resources.dll b/packages/Humanizer.Core.uk.2.1.0/lib/netstandard1.0/uk/Humanizer.resources.dll new file mode 100644 index 000000000..f33b8adb0 Binary files /dev/null and b/packages/Humanizer.Core.uk.2.1.0/lib/netstandard1.0/uk/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.uz-Cyrl-UZ.2.1.0/Humanizer.Core.uz-Cyrl-UZ.2.1.0.nupkg b/packages/Humanizer.Core.uz-Cyrl-UZ.2.1.0/Humanizer.Core.uz-Cyrl-UZ.2.1.0.nupkg new file mode 100644 index 000000000..b2e444c55 Binary files /dev/null and b/packages/Humanizer.Core.uz-Cyrl-UZ.2.1.0/Humanizer.Core.uz-Cyrl-UZ.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.uz-Cyrl-UZ.2.1.0/lib/netstandard1.0/uz-Cyrl-UZ/Humanizer.resources.dll b/packages/Humanizer.Core.uz-Cyrl-UZ.2.1.0/lib/netstandard1.0/uz-Cyrl-UZ/Humanizer.resources.dll new file mode 100644 index 000000000..77d69b049 Binary files /dev/null and b/packages/Humanizer.Core.uz-Cyrl-UZ.2.1.0/lib/netstandard1.0/uz-Cyrl-UZ/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.uz-Latn-UZ.2.1.0/Humanizer.Core.uz-Latn-UZ.2.1.0.nupkg b/packages/Humanizer.Core.uz-Latn-UZ.2.1.0/Humanizer.Core.uz-Latn-UZ.2.1.0.nupkg new file mode 100644 index 000000000..daaaac22b Binary files /dev/null and b/packages/Humanizer.Core.uz-Latn-UZ.2.1.0/Humanizer.Core.uz-Latn-UZ.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.uz-Latn-UZ.2.1.0/lib/netstandard1.0/uz-Latn-UZ/Humanizer.resources.dll b/packages/Humanizer.Core.uz-Latn-UZ.2.1.0/lib/netstandard1.0/uz-Latn-UZ/Humanizer.resources.dll new file mode 100644 index 000000000..f92165feb Binary files /dev/null and b/packages/Humanizer.Core.uz-Latn-UZ.2.1.0/lib/netstandard1.0/uz-Latn-UZ/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.vi.2.1.0/Humanizer.Core.vi.2.1.0.nupkg b/packages/Humanizer.Core.vi.2.1.0/Humanizer.Core.vi.2.1.0.nupkg new file mode 100644 index 000000000..625a18e58 Binary files /dev/null and b/packages/Humanizer.Core.vi.2.1.0/Humanizer.Core.vi.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.vi.2.1.0/lib/netstandard1.0/vi/Humanizer.resources.dll b/packages/Humanizer.Core.vi.2.1.0/lib/netstandard1.0/vi/Humanizer.resources.dll new file mode 100644 index 000000000..4a7427ce2 Binary files /dev/null and b/packages/Humanizer.Core.vi.2.1.0/lib/netstandard1.0/vi/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.zh-CN.2.1.0/Humanizer.Core.zh-CN.2.1.0.nupkg b/packages/Humanizer.Core.zh-CN.2.1.0/Humanizer.Core.zh-CN.2.1.0.nupkg new file mode 100644 index 000000000..802a87d79 Binary files /dev/null and b/packages/Humanizer.Core.zh-CN.2.1.0/Humanizer.Core.zh-CN.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.zh-CN.2.1.0/lib/netstandard1.0/zh-CN/Humanizer.resources.dll b/packages/Humanizer.Core.zh-CN.2.1.0/lib/netstandard1.0/zh-CN/Humanizer.resources.dll new file mode 100644 index 000000000..cea337f27 Binary files /dev/null and b/packages/Humanizer.Core.zh-CN.2.1.0/lib/netstandard1.0/zh-CN/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.zh-Hans.2.1.0/Humanizer.Core.zh-Hans.2.1.0.nupkg b/packages/Humanizer.Core.zh-Hans.2.1.0/Humanizer.Core.zh-Hans.2.1.0.nupkg new file mode 100644 index 000000000..b3eeac200 Binary files /dev/null and b/packages/Humanizer.Core.zh-Hans.2.1.0/Humanizer.Core.zh-Hans.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.zh-Hans.2.1.0/lib/netstandard1.0/zh-Hans/Humanizer.resources.dll b/packages/Humanizer.Core.zh-Hans.2.1.0/lib/netstandard1.0/zh-Hans/Humanizer.resources.dll new file mode 100644 index 000000000..7ce601aa4 Binary files /dev/null and b/packages/Humanizer.Core.zh-Hans.2.1.0/lib/netstandard1.0/zh-Hans/Humanizer.resources.dll differ diff --git a/packages/Humanizer.Core.zh-Hant.2.1.0/Humanizer.Core.zh-Hant.2.1.0.nupkg b/packages/Humanizer.Core.zh-Hant.2.1.0/Humanizer.Core.zh-Hant.2.1.0.nupkg new file mode 100644 index 000000000..8db57f572 Binary files /dev/null and b/packages/Humanizer.Core.zh-Hant.2.1.0/Humanizer.Core.zh-Hant.2.1.0.nupkg differ diff --git a/packages/Humanizer.Core.zh-Hant.2.1.0/lib/netstandard1.0/zh-Hant/Humanizer.resources.dll b/packages/Humanizer.Core.zh-Hant.2.1.0/lib/netstandard1.0/zh-Hant/Humanizer.resources.dll new file mode 100644 index 000000000..5a2b3244e Binary files /dev/null and b/packages/Humanizer.Core.zh-Hant.2.1.0/lib/netstandard1.0/zh-Hant/Humanizer.resources.dll differ