              (fn [_ [s1 s2]]
                (let [comparison (if (every? seq? [s1 s2])
                                   ;; a chunked string
-                                  (by-vector s1 s2)
+                                  (locale-comparator s1 s2)
                                   ;; locale aware comparison
                                   (locale-compare s1 s2))]
                  (if (not= 0 comparison)

   (->>
    items
    collate-all-duplicate-items
    (sort-by sort-key by-vector)
    (reduce
     (fn [m item]
       (let [update-keys (get-update-keys-fn item)]

   (re-seq #"\d+|\D+")
   (map #(or (parse-int %) %))))

(defn- locale-comparator [v1 v2]
  (let [c1 (count v1)
        c2 (count v2)]
    (cond
