Localize version 0.23.0
[0.23.0] — April 25th, 2026
Bug Fixes
-
Fix
Cldr.Number.to_string/2forDecimalnumbers to produce the correct decimal digits. -
Fix
LOCALIZE_UNSAFE_HTTPSenv-var contract — values like"FALSE","nil", an empty string, or unset all keep TLS verification on; only a truthy value disables it. Thanks to @rubas for the PR. Closes #15. -
Fix
Localize.Locale.load/2andLocalize.Locale.get/3to honor the:provideroption —load/2no longer callsprovider.store/2with the locale id, andget/3now loads through the same provider it reads from. Thanks to @rubas for the PR. Closes #16. -
Localize.Locale.get/3now honors the:fallbackoption by walking the CLDR parent locale chain when a key is missing in the requested locale. Fallback is handled inLocalize.Localeso provider modules stay focused on store-and-fetch semantics. Thanks to @rubas for the PR. Closes #17. -
Public formatters (
Localize.Date,Localize.Time,Localize.DateTime,Localize.DateTime.Relative,Localize.Interval,Localize.List,Localize.Calendar) now accept raw parsedLocalize.LanguageTagstructs whose:cldr_locale_idis not yet populated. The seven per-module locale resolvers collapse to one sharedLocalize.Locale.cldr_locale_id_from/1. Thanks to @rubas for the PR. Closes #18. -
Fix
Localize.available_locale_id?/1,Localize.validate_calendar/1, andLocalize.validate_number_system/1to never intern caller-supplied strings as new atoms. Lookups now use compile-time string→atom maps for O(1) safe membership. Thanks to @rubas for the PR. Closes #19. -
Localize.supported_locales/0now lazily resolvesconfig :localize, supported_locales: [...]from the application environment when the:persistent_termcache has not yet been populated, instead of falling back to the full CLDR locale list. The cache is populated on application startup, but callers that run before the application has started — notably compile-time macro expansion in dependent applications likelocalize_web's~qsigil — previously saw the full CLDR list during partial recompiles. This causedLocalize.validate_locale/1to best-match against all CLDR locales rather than the configured subset, producing incorrectcldr_locale_idresolutions.