mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 14:14:55 +00:00
Refactor and simplify dicts
- frontend.dicts encapsulates dicts behavior for all other namespaces - Each dict ns only has one var which prepares us - No longer need shortcut.dicts - Fix remaining lints that were broken - Also bring back frontend.dicts - Update guide - Add a false binding to :editor/toggle-undo-redo-mode which throws a needless warning
This commit is contained in:
@@ -2,19 +2,14 @@
|
||||
"Tasks related to language translations"
|
||||
(:require [clojure.set :as set]
|
||||
[clojure.string :as string]
|
||||
[frontend.dicts.core :as dicts]
|
||||
[frontend.modules.shortcut.dicts :as shortcut-dicts]
|
||||
[frontend.dicts :as dicts]
|
||||
[logseq.tasks.util :as task-util]
|
||||
[babashka.cli :as cli]
|
||||
[babashka.process :refer [shell]]))
|
||||
|
||||
(defn- get-dicts
|
||||
[]
|
||||
(dissoc dicts/dicts :tongue/fallback))
|
||||
|
||||
(defn- get-all-dicts
|
||||
[]
|
||||
(merge-with merge (get-dicts) shortcut-dicts/dicts))
|
||||
dicts/dicts)
|
||||
|
||||
(defn- get-languages
|
||||
[]
|
||||
@@ -25,7 +20,7 @@
|
||||
(defn list-langs
|
||||
"List translated langagues with their number of translations"
|
||||
[]
|
||||
(let [dicts (get-all-dicts)
|
||||
(let [dicts (get-dicts)
|
||||
en-count (count (dicts :en))
|
||||
langs (get-languages)]
|
||||
(->> dicts
|
||||
@@ -52,24 +47,20 @@
|
||||
_ (when-not (contains? (get-languages) lang)
|
||||
(println "Language" lang "does not have an entry in dicts/core.cljs")
|
||||
(System/exit 1))
|
||||
all-dicts [[(get-dicts) "frontend/dicts/core.cljs"]
|
||||
[shortcut-dicts/dicts "shortcut/dicts.cljs"]]
|
||||
all-missing (map (fn [[dicts file]]
|
||||
[(select-keys (dicts :en)
|
||||
(set/difference (set (keys (dicts :en)))
|
||||
(set (keys (dicts lang)))))
|
||||
file])
|
||||
all-dicts)]
|
||||
(if (every? (comp zero? count first) all-missing)
|
||||
dicts (get-dicts)
|
||||
all-missing (select-keys (dicts :en)
|
||||
(set/difference (set (keys (dicts :en)))
|
||||
(set (keys (dicts lang)))))]
|
||||
(if (-> all-missing count zero?)
|
||||
(println "Language" lang "is fully translated!")
|
||||
(let [sorted-missing (->> all-missing
|
||||
(mapcat (fn [[m file]]
|
||||
(map (fn [[k v]]
|
||||
{:translation-key k
|
||||
(map (fn [[k v]]
|
||||
{:translation-key k
|
||||
;; Shorten values
|
||||
:string-to-translate (shorten v 50)
|
||||
:file file})
|
||||
m)))
|
||||
:string-to-translate (shorten v 50)
|
||||
:file (str "dicts/"
|
||||
(-> lang name (string/replace "-" "_") string/lower-case)
|
||||
".cljc")}))
|
||||
(sort-by (juxt :file :translation-key)))]
|
||||
(if (:copy options)
|
||||
(doseq [[file missing-for-file] (group-by :file sorted-missing)]
|
||||
@@ -84,7 +75,7 @@
|
||||
language. This catches mistakes where another language has accidentally typoed
|
||||
keys or added ones without updating :en"
|
||||
[]
|
||||
(let [dicts (get-all-dicts)
|
||||
(let [dicts (get-dicts)
|
||||
;; For now defined as :en but clj-kondo analysis could be more thorough
|
||||
valid-keys (set (keys (dicts :en)))
|
||||
invalid-dicts
|
||||
@@ -137,7 +128,8 @@
|
||||
(map #(keyword (subs % 4)))
|
||||
(concat (mapcat val manual-ui-dicts))
|
||||
set)
|
||||
expected-dicts (set (keys (:en (get-dicts))))
|
||||
expected-dicts (set (remove #(re-find #"^(command|shortcut)\." (str (namespace %)))
|
||||
(keys (:en (get-dicts)))))
|
||||
actual-only (set/difference actual-dicts expected-dicts)
|
||||
expected-only (set/difference expected-dicts actual-dicts)]
|
||||
(if (and (empty? actual-only) (empty? expected-only))
|
||||
@@ -160,7 +152,7 @@
|
||||
(defn list-duplicates
|
||||
"Lists translations that are the same as the one in English"
|
||||
[& args]
|
||||
(let [dicts (get-all-dicts)
|
||||
(let [dicts (get-dicts)
|
||||
en-dicts (dicts :en)
|
||||
lang (or (keyword (first args))
|
||||
(task-util/print-usage "LOCALE"))
|
||||
|
||||
Reference in New Issue
Block a user