i18n & L10n library for Clojure/Script
As beta3 with updated deps
[com.taoensso/tower "3.1.0-beta4"]
Non-breaking hotfix release
[com.taoensso/tower "3.1.0-beta3"]
Non-breaking hotfix release.
[com.taoensso/tower "3.1.0-beta2"]
This is a major update that may be BREAKING.
dict-compile
->dict-compile*
for consistency with new dict-load
,dict-load*
fn+macro pair.t
now always returns a string unless it has an explicit nil
fallback.get-countries
, get-langs
(experimental).kw-locale
:lang-only?
option.country-name
, lang-name
are now public (experimental).foo.bar
and foo/bar
reach same translation.t
, Ring middleware performance improvements.[com.taoensso/tower "3.1.0-beta1"]
nil
format patterns (e.g. for missing translation key).[com.taoensso/tower "3.0.2"]
[com.taoensso/tower "3.0.1"]
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 Exception
s are now ExceptionInfo
s.
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"]
This is a backwards compatible bug fix release. Recommended upgrade.
normalize
fn now takes optional normalization form.fmt-fn
argument for translate fn.locale-key
called on their locale.t
parent fallback for empty child locales.[com.taoensso/tower "2.0.2"]