diff --git a/src/Humanizer/Configuration/Configurator.cs b/src/Humanizer/Configuration/Configurator.cs
index d6c266c7e..25f24970a 100644
--- a/src/Humanizer/Configuration/Configurator.cs
+++ b/src/Humanizer/Configuration/Configurator.cs
@@ -13,7 +13,7 @@ public static class Configurator
///
/// A registry of formatters used to format strings based on the current locale
///
- public static LocaliserRegistry Formatters { get; } = new FormatterRegistry();
+ public static LocaliserRegistry Formatters { get; } = FormatterRegistry.CreateInstance();
///
/// A registry of number to words converters used to localise ToWords and ToOrdinalWords methods
diff --git a/src/Humanizer/Configuration/FormatterRegistry.cs b/src/Humanizer/Configuration/FormatterRegistry.cs
index b7c1e66ca..31a7c67b0 100644
--- a/src/Humanizer/Configuration/FormatterRegistry.cs
+++ b/src/Humanizer/Configuration/FormatterRegistry.cs
@@ -2,8 +2,27 @@
{
class FormatterRegistry : LocaliserRegistry
{
- public FormatterRegistry() : base(new DefaultFormatter("en-US"))
+ public static FormatterRegistry CreateInstance()
{
+ try
+ {
+ return new FormatterRegistry(new DefaultFormatter("en-US"), false);
+ }
+ catch (CultureNotFoundException)
+ {
+ // InvariantGlobalization is enabled, there is only one culture.
+ return new FormatterRegistry(new DefaultFormatter(CultureInfo.InvariantCulture), true);
+ }
+ }
+
+ private FormatterRegistry(IFormatter defaultFormatter, bool globalizationInvariant)
+ : base(defaultFormatter)
+ {
+ if (globalizationInvariant)
+ {
+ return;
+ }
+
Register("ar", new ArabicFormatter());
Register("de", new GermanFormatter());
Register("he", new HebrewFormatter());
diff --git a/src/Humanizer/Localisation/Formatters/DefaultFormatter.cs b/src/Humanizer/Localisation/Formatters/DefaultFormatter.cs
index a336cf399..de349d4bb 100644
--- a/src/Humanizer/Localisation/Formatters/DefaultFormatter.cs
+++ b/src/Humanizer/Localisation/Formatters/DefaultFormatter.cs
@@ -11,6 +11,10 @@ public class DefaultFormatter : IFormatter
public DefaultFormatter(string localeCode) =>
_culture = new(localeCode);
+ /// Culture to use.
+ internal DefaultFormatter(CultureInfo culture) =>
+ _culture = culture;
+
public virtual string DateHumanize_Now() =>
GetResourceForDate(TimeUnit.Millisecond, Tense.Past, 0);