Skip to content

v3.0.0 / 2014 Aug 28

Compare
Choose a tag to compare
@ptaoussanis ptaoussanis released this 28 Aug 09:43
· 70 commits to master since this release

This is a major update that may be BREAKING for users upgrading from < v2.1.0-RC1.
It introduces ClojureScript translation support and fixes a number of useability sharp edges.

  • FIX: All localization formatters are now correctly thread safe.

  • NEW: Added ClojureScript translation support. See the README for an example and notes.

  • NEW: timezones fn now supports optional timezone-ids arg.

  • NEW: Add all-timezone-ids set.

  • NEW [#42]: Translation dictionary now supports underscores in translation keys.

  • NEW [#43]: Translation fns can now take a vector of descending-preference locales (@vvvvalvalval).

  • NEW [#43]: Ring middleware now automatically attaches a smarter translation fn that'll search through all of a client's sorted Accept-Language header languages when looking for a translation.

  • NEW [#50], [#52]: Translation dictionary now supports arbitrary (non-JVM) locales.

  • CHANGE: Dropped (experimental) :scope-var tconfig option.

  • CHANGE: Dropped (experimental) :root-scope tconfig option.

  • CHANGE: Default :missing translations entry now avoids <>'s (no need for html escaping).

  • CHANGE: languages now returns languages as "localized (unlocalized)" pairs rather than "unlocalized (localized)" pairs.

  • CHANGE: All Exceptions are now ExceptionInfos.

  • POSSIBLY BREAKING: translate and t are both being phased out in favor of a new make-t fn. The new approach is more flexible and faster. This change is non-breaking if you use the Ring middleware; otherwise please see the README for new recommended usage examples.

  • DEPRECATED: locale->jvm-locale, try-locale->try-jvm-locale (only the names have changed).

  • DEPRECATED: wrap-tower-middleware -> wrap-tower. This is a recommended change, but it's BREAKING if you make it:

    ;;; 1. The fn signature has changed (tconfig is now an explicit arg):
    (wrap-tower-middleware <ring-handler> {:tconfig _ <other opts>}) ; Old
    ;; vs
    (wrap-tower <ring-handler> <tconfig> {<other-opts>}) ; New
    
    ;;; 2. The Ring request's `:t` key has changed:
    {:locale _ :t  (fn [k-or-ks & fmt-args])} ; Old
    ;; vs
    {:locale _ :t  (fn [locale k-or-ks & fmt-args]) ; Now takes a locale
               :t' (fn [k-or-ks & fmt-args])}       ; New, behaves like old `:t`

    The new behaviour is more consistent. t always refers to a translation fn that takes a locale arg, and t' always refer to a partial translation fn that has already been provided a locale arg. Migrate by swapping your middleware, and using t' instead of t as your locale-less translation fn. OR you can give a :legacy-t? true opt to wrap-tower to keep the old behaviour.

[com.taoensso/tower "3.0.0"]