浏览代码

Update lang tasks to also read shortcuts

- Updated docs with more accurate picture of translation state
- invalid task found keys that were no longer used from 2 commands
- Cleaned up rewrite-clj
Gabriel Horner 3 年之前
父节点
当前提交
0fcdb498d8

+ 2 - 2
.github/workflows/build.yml

@@ -103,8 +103,8 @@ jobs:
       - name: Carve lint for unused vars
         run: scripts/carve.clj
 
-      - name: Lint invalid dictionary keys
-        run: bb lang:invalid-dicts
+      - name: Lint invalid translation entries
+        run: bb lang:invalid-translations
 
   e2e-test:
     runs-on: ubuntu-latest

+ 2 - 2
bb.edn

@@ -23,5 +23,5 @@
   lang:duplicates
   logseq.tasks.lang/list-duplicates
 
-  lang:invalid-dicts
-  logseq.tasks.lang/invalid-dicts}}
+  lang:invalid-translations
+  logseq.tasks.lang/invalid-translations}}

+ 12 - 15
docs/contributing-to-translations.md

@@ -29,24 +29,23 @@ language has compared to others:
 ```sh
 $ bb lang:list
 
+
 |  :locale | :percent-translated | :translation-count |              :language |
 |----------+---------------------+--------------------+------------------------|
-|      :en |                 100 |                383 |                English |
-|   :nb-NO |                  99 |                381 |         Norsk (bokmål) |
-|   :zh-CN |                  96 |                367 |                   简体中文 |
-|      :ru |                  94 |                359 |                Русский |
-|   :pt-BR |                  83 |                319 | Português (Brasileiro) |
-|   :pt-PT |                  81 |                310 |    Português (Europeu) |
-|      :es |                  75 |                286 |                Español |
-| :zh-Hant |                  65 |                250 |                   繁體中文 |
-|      :af |                  60 |                230 |              Afrikaans |
-|      :de |                  56 |                215 |                Deutsch |
-|      :fr |                  45 |                172 |               Français |
+|      :en |                 100 |                494 |                English |
+|   :nb-NO |                  90 |                445 |         Norsk (bokmål) |
+|   :zh-CN |                  87 |                432 |                   简体中文 |
+|      :ru |                  85 |                422 |                Русский |
+|   :pt-BR |                  77 |                382 | Português (Brasileiro) |
+|   :pt-PT |                  76 |                373 |    Português (Europeu) |
+|      :es |                  71 |                349 |                Español |
+| :zh-Hant |                  55 |                272 |                   繁體中文 |
+|      :af |                  51 |                253 |              Afrikaans |
+|      :de |                  48 |                238 |                Deutsch |
+|      :fr |                  39 |                195 |               Français |
 Total: 11
 ```
 
-_Note_: This is only showing `frontend/dicts.cljs` translations for now.
-
 Let's try to get your language translated as close to 100% as you can!
 
 ## Edit a Language
@@ -66,8 +65,6 @@ $ bb lang:missing
 ...
 ```
 
-_Note_: This is only showing `frontend/dicts.cljs` translations for now.
-
 Now, add keys for your language, save and rerun the above command. Over time
 you're hoping to have this list drop to zero.
 

+ 73 - 31
scripts/src/logseq/tasks/lang.clj

@@ -1,33 +1,68 @@
 (ns logseq.tasks.lang
   "Tasks related to language translations"
-  (:require [logseq.rewrite-clj :as rewrite-clj]
+  (:require [logseq.tasks.rewrite-clj :as rewrite-clj]
             [clojure.set :as set]
             [logseq.tasks.util :as task-util]))
 
 (defn- get-dicts
   []
-  (dissoc (rewrite-clj/var-sexp ["dicts" "src/main/frontend/dicts.cljs"])
+  (dissoc (rewrite-clj/var-sexp "src/main/frontend/dicts.cljs" "dicts")
           :tongue/fallback))
 
+(defn- get-non-en-shortcuts
+  []
+  (nth (rewrite-clj/var-sexp "src/main/frontend/modules/shortcut/dict.cljs" "dict")
+       3))
+
+;; unnecessary complexity :(
+(defn- decorate-namespace [k]
+  (let [n (name k)
+        ns (namespace k)]
+    (keyword (str "command." ns) n)))
+
+(defn- get-en-shortcut-dicts
+  []
+  (->> (rewrite-clj/var-sexp
+        "src/main/frontend/modules/shortcut/config.cljs"
+        "all-default-keyboard-shortcuts")
+       (map (fn [[k v]] (vector (decorate-namespace k) (:desc v))))
+       (into {})))
+
+(defn- get-en-categories
+  []
+  (->> (rewrite-clj/var-sexp
+        "src/main/frontend/modules/shortcut/config.cljs"
+        "category")
+       (map (fn [[k v]] (vector k (:doc (meta v)))))
+       (into {})))
+
+(defn- get-shortcuts
+  []
+  (merge {:en (merge (get-en-categories)
+                     (get-en-shortcut-dicts))}
+         (get-non-en-shortcuts)))
+
 (defn- get-languages
   []
-  (rewrite-clj/var-sexp ["languages" "src/main/frontend/dicts.cljs"]))
+  (->> (rewrite-clj/var-sexp "src/main/frontend/dicts.cljs" "languages")
+       (map (juxt :value :label))
+       (into {})))
 
 (defn list-langs
   "List translated langagues with their number of translations"
   []
-  (let [dicts (get-dicts)
+  (let [dicts (merge-with merge (get-dicts) (get-shortcuts))
         en-count (count (dicts :en))
-        langs (into {} (map (juxt :value :label) (get-languages)))]
+        langs (get-languages)]
     (->> dicts
-         (map (fn [[locale dicts]]
-                [locale
-                 (Math/round (* 100.0 (/ (count dicts) en-count)))
-                 (count dicts)
-                 (langs locale)]))
-         (sort-by #(nth % 2) >)
-         (map #(zipmap [:locale :percent-translated :translation-count :language] %))
-         task-util/print-table)))
+           (map (fn [[locale dicts]]
+                  [locale
+                   (Math/round (* 100.0 (/ (count dicts) en-count)))
+                   (count dicts)
+                   (langs locale)]))
+           (sort-by #(nth % 2) >)
+           (map #(zipmap [:locale :percent-translated :translation-count :language] %))
+           task-util/print-table)))
 
 (defn- shorten [s length]
   (if (< (count s) length)
@@ -39,27 +74,34 @@
   [& args]
   (let [lang (or (keyword (first args))
                  (task-util/print-usage "LOCALE"))
-        dicts (get-dicts)
-        translated-language (dicts lang)
-        _ (when-not translated-language
+        _ (when-not (contains? (get-languages) lang)
             (println "Language" lang "does not have an entry in dicts.cljs")
             (System/exit 1))
-        missing (set/difference (set (keys (dicts :en)))
-                                (set (keys translated-language)))]
-    (if (zero? (count missing))
+        all-dicts [[(get-dicts) "frontend/dicts.cljs"]
+                   [(get-shortcuts) "shortcut/dict.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)
       (println "Language" lang "is fully translated!")
-      (->> (select-keys (dicts :en) missing)
-           (map (fn [[k v]]
-                  {:translation-key k
-                   ;; Shorten values
-                   :string-to-translate (shorten v 50)}))
-           (sort-by :translation-key)
+      (->> all-missing
+           (mapcat (fn [[m file]]
+                     (map (fn [[k v]]
+                            {:translation-key k
+                             ;; Shorten values
+                             :string-to-translate (shorten v 50)
+                             :file file})
+                          m)))
+           (sort-by (juxt :file :translation-key))
            task-util/print-table))))
 
-(defn invalid-dicts
-  "Lists translation keys that don't exist in English"
+(defn invalid-translations
+  "Lists translation that don't exist in English"
   []
-  (let [dicts (get-dicts)
+  (let [dicts (merge-with merge (get-dicts) (get-shortcuts))
         ;; For now defined as :en but clj-kondo analysis could be more thorough
         valid-keys (set (keys (dicts :en)))
         invalid-dicts
@@ -70,16 +112,16 @@
                         (set/difference (set (keys get-dicts))
                                         valid-keys)))))]
     (if (empty? invalid-dicts)
-      (println "All dicts have valid keys!")
+      (println "All translations have valid keys!")
       (do
-        (println "Invalid dict keys found:")
+        (println "Invalid translation keys found:")
         (task-util/print-table invalid-dicts)
         (System/exit 1)))))
 
 (defn list-duplicates
   "Lists translations that are the same as the one in English"
   [& args]
-  (let [dicts (get-dicts)
+  (let [dicts (merge-with merge (get-dicts) (get-shortcuts))
         en-dicts (dicts :en)
         lang (or (keyword (first args))
                  (task-util/print-usage "LOCALE"))

+ 2 - 2
scripts/src/logseq/rewrite_clj.clj → scripts/src/logseq/tasks/rewrite_clj.clj

@@ -1,4 +1,4 @@
-(ns logseq.rewrite-clj
+(ns logseq.tasks.rewrite-clj
   "Rewrite-clj fns"
   (:require [rewrite-clj.zip :as z]))
 
@@ -10,6 +10,6 @@
       z/sexpr))
 
 (defn var-sexp
-  [[string-var file]]
+  [file string-var]
   (let [zloc (z/of-string (slurp file))]
     (find-symbol-first-right-sexpr zloc (symbol string-var))))

+ 1 - 17
src/main/frontend/modules/shortcut/dict.cljs

@@ -41,12 +41,10 @@
      :command.ui/toggle-theme                "在暗色/亮色主题之间切换"
      :command.ui/toggle-right-sidebar        "启用/关闭右侧栏"
      :command.ui/toggle-settings             "显示/关闭设置"
-     :command.ui/toggle-new-block            "切换 Enter/Shift+Enter 以插入新块"
      :command.go/journals                    "跳转到日记"
      :command.ui/toggle-wide-mode            "切换宽屏模式"
      :command.ui/toggle-brackets             "切换是否显示括号"
      :command.search/re-index                "重新建立搜索索引"
-     :command.graph/re-index                 "重新建立图库索引"
      :command.editor/bold                    "粗体"
      :command.editor/italics                 "斜体"
      :command.editor/insert-link             "Html 链接"
@@ -96,7 +94,6 @@
      :command.ui/toggle-document-mode        "切換文檔模式"
      :command.ui/toggle-theme                "“在暗色/亮色主題之間切換”"
      :command.ui/toggle-right-sidebar        "啟用/關閉右側欄"
-     :command.ui/toggle-new-block            "切換 Enter/Shift+Enter 以插入新塊"
      :command.go/journals                    "跳轉到日記"}
     :de
     {:shortcut.category/formatting            "Formatierung"
@@ -118,7 +115,6 @@
      :command.ui/toggle-document-mode        "Dokumentenmodus umschalten"
      :command.ui/toggle-theme                "Umschalten zwischen dunklem/hellem Thema"
      :command.ui/toggle-right-sidebar        "Rechte Seitenleiste umschalten"
-     :command.ui/toggle-new-block            "Umschalten von Enter/Shift+Enter zum Einfügen eines neuen Blocks"
      :command.go/journals                    "Zu Journalen springen"
      :command.git/commit                     "Git Commit-Nachricht"
      :command.editor/select-block-down       "Block unterhalb auswählen"
@@ -146,7 +142,6 @@
      :command.ui/toggle-document-mode        "Intervertir le mode document"
      :command.ui/toggle-theme                "Intervertir le thème foncé/clair"
      :command.ui/toggle-right-sidebar        "Afficher/cacher la barre latérale"
-     :command.ui/toggle-new-block            "Activer Entreée ou Shift+Enter pour insérer un bloc"
      :command.go/journals                    "Aller au Journal"}
     :af
     {:shortcut.category/formatting            "Formatering"
@@ -171,8 +166,7 @@
      :command.ui/toggle-document-mode        "Wissel dokument modus"
      :command.go/journals                    "Spring na joernale"
      :command.ui/toggle-theme                "Wissel tussen donker/lig temas"
-     :command.ui/toggle-right-sidebar        "Wissel regter sybalk"
-     :command.ui/toggle-new-block            "Wissel Enter/Shift+enter vir die byvoeging van nuwe blokke"}
+     :command.ui/toggle-right-sidebar        "Wissel regter sybalk"}
     :es
     {:shortcut.category/formatting            "Formato"
      :shortcut.category/basics                "Básico"
@@ -206,12 +200,10 @@
      :command.ui/toggle-theme                "Alternar entre tema claro/oscuro"
      :command.ui/toggle-right-sidebar        "Alternar barra lateral"
      :command.ui/toggle-settings             "Alternar Opciones"
-     :command.ui/toggle-new-block            "Alternar Enter/Shift+Enter para crear nuevas lineas"
      :command.go/journals                    "Ir a los diarios"
      :command.ui/toggle-wide-mode            "Alternar modo ancho"
      :command.ui/toggle-brackets             "Alternar corchetes"
      :command.search/re-index                "Reconstruir índice de búsqueda"
-     :command.graph/re-index                 "Reindexar el grafo completo"
      :command.editor/bold                    "Negrita"
      :command.editor/italics                 "Cursiva"
      :command.editor/insert-link             "Enlace html"
@@ -272,12 +264,10 @@
      :command.ui/toggle-theme                 "Переключение между светлой / темной темой"
      :command.ui/toggle-right-sidebar         "Переключить боковую панель"
      :command.ui/toggle-settings              "Переключить параметры"
-     :command.ui/toggle-new-block             "Переключение Enter/Shift+Enter для перехода на новую строку"
      :command.go/journals                     "Перейти в Дневники"
      :command.ui/toggle-wide-mode             "Переключить широкоформатный режим"
      :command.ui/toggle-brackets              "Переключить скобки"
      :command.search/re-index                 "Восстановить индекс поиска"
-     :command.graph/re-index                  "Переиндексировать весь граф"
      :command.editor/bold                     "Жирный"
      :command.editor/italics                  "Курсив"
      :command.editor/insert-link              "HTML ссылка"
@@ -339,12 +329,10 @@
      :command.ui/toggle-left-sidebar         "Aktiver venstre sidestolpe"
      :command.ui/toggle-right-sidebar        "Aktiver høyre sidestolpe"
      :command.ui/toggle-settings             "Åpne innstillinger"
-     :command.ui/toggle-new-block            "Veksle mellom Enter og Shift+Enter for ny linje"
      :command.go/journals                    "Gå til dagbok"
      :command.ui/toggle-wide-mode            "Aktiver vid-modus"
      :command.ui/toggle-brackets             "Aktiver vising av klammer"
      :command.search/re-index                "Gjenoppbygg søkeindeks"
-     :command.graph/re-index                 "Reindekser hele diagrammet"
      :command.editor/bold                    "Fet"
      :command.editor/italics                 "Kursiv"
      :command.editor/insert-link             "HTML lenke"
@@ -405,12 +393,10 @@
      :command.ui/toggle-theme                "Alternar entre tema claro/escuro"
      :command.ui/toggle-right-sidebar        "Alternar barra lateral"
      :command.ui/toggle-settings             "Alternar Opções"
-     :command.ui/toggle-new-block            "Alternar Enter/Shift+Enter para criar novas linhas"
      :command.go/journals                    "Ir para diários"
      :command.ui/toggle-wide-mode            "Alternar modo de ecrã amplo"
      :command.ui/toggle-brackets             "Alternar parênteses rectos"
      :command.search/re-index                "Reconstruir índice de pesquisa"
-     :command.graph/re-index                 "Reindexar o grafo completo"
      :command.editor/bold                    "Negrito"
      :command.editor/italics                 "Itálico"
      :command.editor/insert-link             "Inserir ligação html"
@@ -471,12 +457,10 @@
      :command.ui/toggle-theme                "Alternar entre tema claro/escuro"
      :command.ui/toggle-right-sidebar        "Alternar barra lateral"
      :command.ui/toggle-settings             "Alternar Opções"
-     :command.ui/toggle-new-block            "Alternar Enter/Shift+Enter para criar novas linhas"
      :command.go/journals                    "Ir para diários"
      :command.ui/toggle-wide-mode            "Alternar largura extendida"
      :command.ui/toggle-brackets             "Alternar colchetes"
      :command.search/re-index                "Reconstruir índice de pesquisa"
-     :command.graph/re-index                 "Reindexar o grafo completo"
      :command.editor/bold                    "Negrito"
      :command.editor/italics                 "Itálico"
      :command.editor/insert-link             "Inserir vínculo"