Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,13 @@ var precise = TimeSpan.FromMilliseconds(1500).HumanizeWithFractionalSeconds(
Console.WriteLine(text); // 2 minutes
Console.WriteLine(indianNumber); // one hundred crore
Console.WriteLine(precise); // 1.5 seconds

var german = CultureInfo.GetCultureInfo("de-DE");
var duration = TimeSpan.FromDays(7).HumanizeWithCase(
GrammaticalCase.Dative,
culture: german);

Console.WriteLine($"in {duration}"); // in einer Woche
```

In v4 previews, applications can provide the exact noun forms for a culture's
Expand All @@ -54,6 +61,12 @@ it does not guess localized morphology or fall back to English. See
[inflection and quantities](https://humanizr.net/docs/scenarios/inflection-and-quantities/)
for the exact-form and lemmatization contracts.

`HumanizeWithCase` returns only the duration phrase; add any required
preposition yourself. Singular forms may include a locale-authored one-word
or article, and a locale may encode a count in the unit form. Locales and custom
components without verified case support throw `NotSupportedException`
instead of falling back to English.

## Documentation

- [Start using Humanizer](https://humanizr.net/docs/start/overview/)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ internal static class CanonicalLocaleAuthoring
[
"list",
"formatter",
"durationCases",
"phrases",
"number",
"ordinal",
Expand Down Expand Up @@ -146,6 +147,7 @@ internal static LocaleDefinition ToLocaleDefinition(CanonicalLocaleDocument docu
foreach (var propertyName in new[]
{
"pluralRule",
"casePluralRule",
"dataUnitPluralRule",
"dataUnitNonIntegralForm",
"prepositionMode",
Expand All @@ -166,6 +168,10 @@ internal static LocaleDefinition ToLocaleDefinition(CanonicalLocaleDocument docu

break;

case "durationCases":
features["durationCases"] = surfaceMapping;
break;

case "phrases":
features["phrases"] = surfaceMapping;
break;
Expand Down Expand Up @@ -544,6 +550,7 @@ public static class LegacyLocaleMigration
"collectionFormatter",
"dateOnlyToOrdinalWords",
"dateToOrdinalWords",
"durationCases",
"formatter",
"grammar",
"headings",
Expand Down Expand Up @@ -592,6 +599,7 @@ public static string ConvertToCanonicalYaml(string localeCode, string fileText)

builder.AppendLine();
builder.AppendLine("surfaces:");
AppendMigratedSurface(builder, "durationCases", root, "durationCases");
AppendMigratedSurface(builder, "list", root, "collectionFormatter", isCollectionFormatter: true);
AppendMigratedFormatterSurface(builder, root);
AppendMigratedPhrasesSurface(builder, root);
Expand Down
Loading
Loading