Skip to content

Releases: Humanizr/Humanizer

v3.0.1

20 Nov 04:46
Immutable release. Only release title and notes can be modified.
6e54d37

Choose a tag to compare

Changes:

  • #1651: Renormalize line endings
  • #1648: Extract duplicated regex patterns into constants across conditional compilation regions
  • #1649: Delete dotnet.config
  • #1647: move to net10 stable
  • #1641: Add analyzer tests to CI and fix test failures

This list of changes was auto generated.

v3.0.0-rc.30

04 Nov 23:48
Immutable release. Only release title and notes can be modified.
6a16847

Choose a tag to compare

Changes:

  • #1640: Update dependencies and refactor for performance

This list of changes was auto generated.

v3.0.0-rc.29

31 Oct 17:47
Immutable release. Only release title and notes can be modified.
0a58743

Choose a tag to compare

Changes:

Enhancement:

  • #1625: Add multi-targeted, performance-optimized Roslyn analyzer and code fix for Humanizer v3 namespace migration

Others:

  • #1637: Fix performance regressions vs v3.0.0-rc.6 in transformers and registry lookups
  • #1636: Fix performance regressions from eager registry initialization and micro-optimizations
  • #1635: Optimize ToLowerCase, PrependArticleSuffix, and ToQuantity for .NET 8+ performance and fix thread safety issues
  • #1634: Fix performance regressions vs v3.0.0-rc.6 with zero-allocation optimizations
  • #1633: Fix performance regressions in core hot paths (enum dehumanize, clock notation, metric numerals, transformers, truncators, string operations)
  • #1632: Fix ByteSize.TryParse for cultures with multi-character number format symbols and optimize performance
  • #1629: Comprehensive XML documentation enhancement for all public APIs, README modernization, and docs structure
See More
  • #1624: Performance optimizations: Source-generated regex, FrozenDictionary, SearchValues, benchmarks with baseline comparison workflow
  • #1622: Fix trim warnings in EnumCache and EnumDehumanizeExtensions for .NET 9/10 compatibility
  • #1620: Update verify-packages.ps1 to validate package restoration on multiple SDK versions
  • #1618: Clarify test run timing in AGENTS guidance
  • #1617: Update SDK version in global.json to 10.0.100-rc.2
  • #1616: Update testing and coverage to xUnit v3
  • #1615: Code modernization, formatting, cleanup
  • #1614: Add Jekyll GitHub Pages site with automatic dark mode support
  • #1613: Reorganize solution items and update build scripts

This list of changes was auto generated.

v3.0.0-rc.6

09 Oct 07:27
Immutable release. Only release title and notes can be modified.
535de3f

Choose a tag to compare

Changes:

Bugs:

  • #385: Titlelize returns empty if text contains no known letters
  • #1611: Fix Titleize to preserve input with no recognized letters (Issue #385)
  • #1605: Fix culture parameter being ignored in Blazor WebAssembly
  • #1570: Fix metric rounding

Localization:

  • #1590: Add Catalan localisation support
  • #1569: Added support for negative Vietnamese numbers to words
  • #1574: ru-Ru data units, heading, plus minor adjustments to numbers

Enhancement:

See More
  • #1596: Add long.ToMetric and associated tests

Others:

  • #1612: Add package verification step to Azure Pipeline
  • #1606: General documentation improvements for readme file
  • #1607: Bump to RC
  • #1610: Expand repository agent guidelines
  • #1609: ✨ Add comprehensive Copilot instructions for the repository
  • #1603: Switch to .slnx format for solution configuration
  • #1600: Add .devskim configuration file for code scanning
  • #1599: DevSkim workflow to trigger only on 'main'
  • #1595: Improve bit size validation in ByteSize.cs
  • #1582: Introduce TryToNumber methods for safe word-to-number conversion
  • #1594: Potential fix for code scanning alert no. 24: Possible loss of precision
  • #1593: Add CodeQL configuration for security analysis
  • #1592: Update CodeQL workflow for C# analysis
  • #1591: Update for .NET 10.0 RC and code modernization
  • #1587: Create jekyll-gh-pages.yml
  • #1531: Spelling and grammar improvements in Readme.md

This list of changes was auto generated.

v3.0.0-beta.96

07 May 14:26
858f2d9

Choose a tag to compare

Changes:

Localization:

  • #1539: Replace "ناقص" with "سالب" for negative number representation in Arabic

Others:

  • #1536: Add german TimeOnly.ToClockNotationConverter
  • #1547: fix truncation if truncationString is null
  • #1544: Change in the lt language causing misconception
  • #1560: #1559
  • #4: Typo in Romanian localization
  • #1559: Truncate operation does not consider words
  • #3: Added Resources for Romanian
See More
  • #1548: Handling the special case in ToQuantity where they pass in a negative…
  • #1563: fixed exception thrown in lithuanian language for DateHumanize_Now resource key
  • #1564: Words to number convert Fixes #348
  • #1561: fix grammar in README
  • #1566: Add unit tests for Ordinalize method in Turkish culture
  • #348: Humanized string to number
  • #2: DateTime Humanize
  • #1: Allow localization of messages
  • #1553: Fixed minor typo in readme.md
  • #1517: Support native AoT
  • #1526: update Polyfill
  • #1524: update xunit
  • #1525: update Nerdbank.GitVersioning
  • #1523: update Microsoft.NET.Test.Sdk
  • #1518: Remove duplicate test case
  • #1516: Fix MSBuild condition

This list of changes was auto generated.

v3.0.0-beta.54

06 Jun 17:54
aaca290

Choose a tag to compare

Changes:

  • #1509: use InternalsVisibleTo MSBuild item
  • #1504: Remove allocation from ByteSize.TryParse
  • #1514: Various cleanup largely driven by analyzers
  • #1512: Fix assert in GetRomanNumeralCharValue
  • #1513: fix nuspec
  • #1505: Replace relevant Substring use with AsSpan
  • #1510: Remove some string interpolation allocation
  • #1506: Cache Truncator singletons returned from static properties
  • #1508: Remove overhead from RomanNumeralExtensions
  • #1498: changes to address idiomatic differences between pt-PT and pt-BR
See More
  • #1501: Added hungarian translations, and hungarian number formatters
  • #1493: Avoid string concat in resource lookups
  • #1491: enable nuget audit
  • #1488: Bump coverlet.collector from 6.0.1 to 6.0.2
  • #1485: Bump Polyfill from 3.0.0 to 4.0.0
  • #1486: Bump Verify.Xunit from 23.3.0 to 23.5.0

This list of changes was auto generated.

v3.0.0-beta.13

12 Mar 11:44
d16394e

Choose a tag to compare

Changes:

Bugs:

  • #1461: Fix to words for negative numbers below 1000 in Russian & Ukrainian
  • #1460: Fix Bulgarian TimeSpan to words & genders in number to words
  • #1426: Fix missing resources errors
  • #1165: Armenian nuspec lists "ru" as the language
  • #1250: Correct unit and tens names, expand conversion to int64, add unit test - Croatian
  • #1356: Add some more problematic plural/singular words to Vocabularies
  • #1244: As was to were irregularity
  • #1228: fix: Use DayNumber instead of DayOfYear to compare DateOnly instances
  • #1299: kebab-cased string returns a Kebab-Cased
See More
  • #1082: Fix Japanese single year translation
  • #1193: bulgarian number fix: "един" shoud be "едно" in string[] UnitsMap.
  • #1246: Replace the greek B (Beta) char to a regular B in method
  • #1280: Fix Hundreds Map typo for "εννιακόσιες"
  • #1178: special case for letter 's'

Localization:

  • #1197: #1196 - Support long for FarsiNumberToWordsConverter

Others:

  • #1483: remove netstandard1.0 from core nuspec
  • #1482: drop net462 and net472
  • #1481: Bump Verify.Xunit from 23.2.2 to 23.3.0
  • #1480: re-add gitversion
  • #1476: reduce string alloc in MalteseFormatter
  • #1477: remove redundant string alloc in RussianFormatter
  • #1478: remove redundant string alloc in UkrainianFormatter
  • #1479: remove redundant protected and public modifiers
  • #1475: Resolve some warnings
  • #1474: Disable some R# warnings due to differences in frameworks
  • #1472: Do not use Linq to slice array in DefaultCollectionFormatter
  • #1471: Fix nullable annotations for ICollectionFormatter
  • #1473: Fix leap year bug in InYear test
  • #1469: Bump Verify.Xunit from 23.2.1 to 23.2.2
  • #1468: Support InvariantGlobalization by using provided CultureInfo instead of instantiating
  • #1466: Convert some switch statements to switch expressions
  • #1465: Add missing static in GreekNumberToWordsConverter
  • #1464: Add missing static in LuxembourgishNumberToWordsConverter
  • #1463: Optimize English to words converter
  • #1458: Enabling Trimming
  • #1446: Code Quality: Enable .NET PublishTrimmed
  • #1449: Fix TimeSpan toWords for Russian and Ukrainian languages
  • #1457: spanify RomanNumeralExtensions
  • #1455: cleanup some usings
  • #1456: makes GermanNumberToWordsConverterBase static
  • #1453: clean up some formatting
  • #1452: file scoped namespaces
  • #1448: Merge Humanizer.Tests.Shared to Humanizer.Tests
  • #1447: Fix references to main branch
  • #1445: Updated Russian localization resources. fixes #1444
  • #1442: ToTitleCase Perf improvements
  • #1443: remove un-used EnglishArticles
  • #1441: cache CulturedStringTransformers
  • #1440: remove redundant number variables from LatvianNumberToWordsConverter
  • #1439: remove redundant defaultSeparator from OxfordStyleCollectionFormatter
  • #1437: Enable Nullable ref types
  • #1438: use some index from end expressions
  • #1435: use compound statements
  • #1436: move resource throw deeper
  • #1433: remove redundant parameter
  • #1432: fix InternalsVisibleTo for tests
  • #1431: use index from end expressions
  • #1430: add alias for ReadOnlySpan
  • #1428: Add missing italian strings
  • #1429: Test fix: handle when NumberGroupSeparator is different per OS
  • #1068: Add TimeSpan.ToAge() extension method
  • #1427: Simplify TimeSpanHumanize_Multiple* resources
  • #1424: Bump Verify.Xunit from 23.2.0 to 23.2.1
  • #1042: Inflection singularizes Databases to Databasis
  • #1423: Add test for #1042
  • #1422: Fix Armenian nuspec
  • #1421: Fix article sorting for words containing an article-like part inside
  • #1420: compile EnglishArticle regex
  • #1418: optimize EnglishArticle.AppendArticlePrefix
  • #1416: Polyfill 2.6.5
  • #1417: coverlet.collector 6.0.1
  • #1415: remove some redundant comments
  • #1414: Reduce some nesting from elses
  • #1412: Fix documentation spelling of "Terabyte"
  • #1411: update Polyfill
  • #1410: update System.ComponentModel.Annotations
  • #1408: Polyfill older frameworks
  • #1406: remove Microsoft.SourceLink.GitHub
  • #1407: remove GitVersioning
  • #1405: add a Benchmarks project
  • #1404: move enum to a TryGetDescription
  • #1402: remove extra expression from enum humanize
  • #1401: remove unsupported number range from BulgarianNumberToWordsConverter
  • #1400: remove some bool expressions where the result is known
  • #1399: remove redundant RegexOptionsUtil
  • #1398: replace string.Join+empty with sting.concat
  • #1395: Remove FormatWith extension
  • #1396: more redundant parens
  • #1394: improve perf IcelandicFormatter
  • #1393: better perf LuxembourgishFormatter
  • #1392: also target net7 and 8
  • #1391: remove redundant uiCulture from UseCultureAttribute
  • #1389: remove obsolete ToMetric overloads
  • #1390: redundant using in Approve_Public_Api
  • #1388: remove netstandard1.0 from nuspecs
  • #1386: Bump xunit from 2.6.6 to 2.7.0
  • #1387: Bump xunit.runner.visualstudio from 2.5.6 to 2.5.7
  • #1385: primary constructor for ByteSize
  • #1384: remove redundant ToQuantity asserts
  • #1383: remove redundant DummyStructWithEnumInterfaces members
  • #1382: remove redundant partials
  • #1381: redundant private
  • #1380: fix un-used variables
  • #1379: make spanish numbersAndWordsDict static. avoids alloc on each execution
  • #1378: remove redundant body
  • #1377: merge string literal
  • #1376: remove redundant type specs
  • #1375: use some pattern matching
  • #1374: target typed new
  • #1373: remove some redundant verbatim prefix
  • #1372: clean up some whitespace
  • #1371: remove redundant protected
  • #1370: remove some redundant internal
  • #1369: remove redundant variable assignments
  • #1368: use some compound statements
  • #1367: remove some un-used parameters
  • #1364: remove redundant alloc due to ToCharArray
  • #1365: fix editorconfig path
  • #1363: remove redundant parens
  • #1361: remove duplicate dictionary lookup
  • #1362: target typed new. and collection expressions
  • #1360: use static where possible
  • #1359: Global usings
  • #1358: avoid ApplyRules for singular when as plural has already matched
  • #1357: expression bodied methods
  • #1355: reduce some string allocation in Vocabulary
  • #1185: Make sure Humanize(LetterCasing.Sentence) does not remove commas
  • #986: Added unit tests
  • #1354: Bump Verify.Xunit from 23.1.0 to 23.2.0
  • #1353: make EnglishArticle regex static
  • #1352: Update editorconfig
  • #1351: collapse into a single Humanizer namespace
  • #1350: remove some usings
  • #1349: remove some redundant whitespace
  • #1348: use some primary constructors
  • #1347: avoid some double casts
  • #1346: missing var usage
  • #1345: use some pattern matching
  • #1344: shink test hours to avoid intermitant days bug
  • #1343: enable TreatWarningsAsErrors
  • #1282: Pascalize a kebab-cased string returns a Kebab-Cased string.
  • #1342: add InternalsVisibleTo for tests
  • #1341: add missing Humanizer.Core.lb.nuspec in sln
  • #1256: Add Luxembourgish localisation
  • #1340: redundant private set
  • #1339: use type keywords
  • #1338: remove redundant ToQuantityExtensions overloads
  • #1298: Localization PT string - Updating Resources.pt.resx
  • #1337: missing Humanizer.Core.lt.nuspec
  • #1302: Add Lithuanian localization
  • #1336: make DefaultStrategy_HoursApart test closer
  • #1335: sdk 8.0.200
  • #1300: Add future phrases to the Finnish language file
  • #1333: improve perf of DisplayAttribute detection
  • #1332: remove some redundant usings
  • #1313: improve perf of ResourceKeys.GetResourceKey
  • #1324: remove uwp tests
  • #1334: cleanup templates
  • #1322: drop netstandard1 support
  • #1331: remove some whitespace
  • #1190: correct ToHeading doc
  • #1273: Bump Nerdbank.GitVersioning from 3.6.132 to 3.6.133
  • #1330: use some auto properties
  • #1323: move to PackageLicenseExpression
  • #1245: Compilation fails on the very latest Visual Studios due to character-encoding problem
  • #1329: fix some typos
  • #1326: enable ImplicitUsings
  • #1328: use string format
  • #1308: Perf improvement: avoid Dictionary in spanish code
  • #1325: remove redundant LangVersion
  • #1320: suppress missing doc warnings
  • #1319: Update test refs
  • #1311: clean up templates
  • #1314: cache _timeUnits in TimeSpanHumanizeExtensions.cs
  • #1312: improve perf of IsUncountable
  • #1309: remove redundant virtual from internal classes
  • #1307: Cache spanish culture. new CultureInfo("es-ES")
  • #1305: EnglishOrdinalizer: Minor performance optimization for numbers ending in 114 - 120
  • #1310: remove redundant comments
  • #1315: use some compound expressions
  • #1317: Create global.json
  • #1306: Improve perf by removing some redundant ToArray
  • #1318: scrub TargetFrameworkAttribute from api approval
  • #1268: Bump Nerdbank.GitVersioning from 3.4.255 to 3.6.132
  • #1239: fix chinese translate error of 'now'
  • #1238: Chinese Simplified translation error
  • #1265: Add French TimeUnit translations
  • #1240: Fix broken dotnetfoundation project link and icon
  • #1216: Bump xunit from 2.4.1 to 2.4.2
  • #1196: Support long for FarsiNumberToWordsConverter
  • #1187: Bump DiffPlex from 1.7.0 to 1.7.1
  • #1175: Bump coverlet.collector from 3.1.1 to 3.1.2

This list of changes was auto generated.

v2.14.1

29 Jan 15:16
3ebc38d

Choose a tag to compare

Changes:

Bugs:

  • #1171: Fixed The resource object with key 'DateHumanize_MultipleDaysAgo' was…
  • #1150: Fix DateOnly, TimeOnly & DateTime issues in French
  • #1151: Fix TimeSpan always returning words for Norwegian

Localization:

  • #1172: Improve Spanish localization
  • #1164: fixes #1161
  • #1158: Adds NumberToWordsConverter for Korean

Others:

  • #1162: Bump Nerdbank.GitVersioning from 3.4.244 to 3.4.255
See More
  • #1152: A proposal of an addition of Code of Conduct
  • #1129: TimeSpan.Humanize always returns value 1 as words for Norwegian (nb/nb-NO)

This list of changes was auto generated.

v2.13.14

16 Nov 13:18
18167e5

Choose a tag to compare

Changes:

Bugs:

  • #1136: Fix 'toes' being singularized to 'to'
  • #1122: Fixed issue #1102. Dehumanize() by pascalizing the words correctly

Localization:

  • #902: Add Latvian number to words converter
  • #1116: Feature/icelandic language support
  • #1105: Add German translations for ByteSize
  • #1096: Register Latvian formatter
  • #1094: Localisation of Tupleize method & Add Turkish support
  • #1098: Register Filipino formatter
See More
  • #1090: Add Greek for To Ordinal Words
  • #1104: Add German translations for Headings
  • #1097: Register Malaysian formatter
  • #1095: Register Korean formatter

Enhancement:

  • #1134: Add support to humanizing a TimeOnly as a readable clock notation
  • #1114: Fixed default number format
  • #1108: Localize ByteRate humanization
  • #1106: Convert TimeUnit to symbols
  • #1135: Fix 'Metadata' being pluralized to 'Metadatas'

Others:

  • #1148: Bump Microsoft.SourceLink.GitHub from 1.0.0 to 1.1.1
  • #1142: Fixed merge issue with lost test case change
  • #1130: Bump Microsoft.NETCore.UniversalWindowsPlatform from 6.2.12 to 6.2.13
  • #1140: Bump Microsoft.NET.Test.Sdk from 16.11.0 to 17.0.0
  • #1139: Add 'heading' parameter XML docs to fix warnings during CI build
  • #1138: Move tests to the correct project
  • #1133: Bump Nerdbank.GitVersioning from 3.4.240 to 3.4.244
  • #1137: Update branch name in PR template
  • #1125: Bump Nerdbank.GitVersioning from 3.4.231 to 3.4.240
  • #898: Add latvian translations
  • #1102: Unexpected behaviour in certain cases for .Dehumanize()
  • #1117: Improve FromAbbreviatedHeading for localized headings
  • #1110: Bump coverlet.collector from 3.0.3 to 3.1.0
  • #1113: Bump Nerdbank.GitVersioning from 3.4.220 to 3.4.231
  • #1115: Bump Microsoft.NET.Test.Sdk from 16.10.0 to 16.11.0
  • #1086: Add tests for french culture ByteSize unit expression
  • #1099: Bump Nerdbank.GitVersioning from 3.4.216 to 3.4.220
  • #1085: Update readme.md
  • #1088: Bump Nerdbank.GitVersioning from 3.4.205 to 3.4.216

This list of changes was auto generated.

v2.11.10

07 Jun 17:57
937e827

Choose a tag to compare

Changes:

Bugs:

  • #1074: Fixes #1006: conjunctions etc lower case in Title Case
  • #1078: Fixed title casing for multiple upper case strings #1050
  • #1066: Fix singularization of the word "ties"

Localization:

  • #997: Add Danish resources for cardinal directions
  • #1070: TurkishNumberToWordConverter now works for values greater than Int32.MaxValue

Enhancement:

  • #1080: Add support for DateOnly and TimeOnly

Others:

See More
  • #1006: Transforming to title case should not affect two-character words such as "in", "of" etc.
  • #1075: Bump Nerdbank.GitVersioning from 3.4.203 to 3.4.205
  • #1050: Title Casing when string all UpperCase
  • #1072: Bump Microsoft.NET.Test.Sdk from 16.9.4 to 16.10.0
  • #1071: Bump Nerdbank.GitVersioning from 3.4.194 to 3.4.203
  • #1058: Upgrade to GitHub-native Dependabot
  • #989: Add number.ToWords() support for large numbers in French
  • #988: number.ToWords() should support large numbers in French

This list of changes was auto generated.