Skip to content

Localize version 0.31.0

Choose a tag to compare

@kipcole9 kipcole9 released this 12 May 09:41
· 65 commits to main since this release

[0.31.0] — May 12th, 2026

Bug Fixes

  • Localize.Locale.Loader now stores fallback locale data under the requested locale id rather than the resolved fallback id, restoring 0.29 behaviour. The regression introduced in 0.30.0 caused provider.get(requested_locale, _) to miss in-memory fallback data and surface as a spurious ItemNotFoundError — most visibly crashing mix localize.download_locales with a MatchError when default_locale named an unavailable locale. Locked down with test/localize/locale/loader_fallback_test.exs. Closes #26.

  • mix localize.download_locales no longer pattern-matches on the result of Localize.Message.format/2 when building its progress banner; if formatting fails for any reason the task falls back to a plain ASCII banner and continues with the actual download.

Behaviour Changes

  • Localize.InvalidValueError gained an :allowed_values field and a new Localize.NoCertificateStoreError carries the searched paths; previously prose-stuffed :expected/:currency fields and bare-string :reason codes are now structural.

  • Eight option-validation sites across Localize.Language, Localize.Script, Localize.Collation, Localize.Utils.Map, and Localize.Utils.Http now raise structured Localize exceptions rather than ArgumentError/RuntimeError.