Parcourir la source

Split out command and category descs

Move them to a more appropriate ns that is just dictionary focused.
This _majorly_ slims down dependencies for the main translation ns
Also:
- add tests
- make medley requires consistent
- alter spec to reflect how command data is actually being used in
  command palette component
- add basic translation tests
Gabriel Horner il y a 3 ans
Parent
commit
5635469d7a

+ 1 - 0
.clj-kondo/config.edn

@@ -14,6 +14,7 @@
              datascript.transit dt
              datascript.db ddb
              lambdaisland.glogi log
+             medley.core medley
              frontend.db.query-dsl query-dsl
              frontend.db.react react
              frontend.db.query-react query-react}}}

+ 1 - 1
src/main/frontend/context/i18n.cljs

@@ -22,7 +22,7 @@
         _ (when (nil? preferred-language)
             (state/set-preferred-language! (fetch-local-language)))
         dicts (or (get @translate-dicts preferred-language)
-                  (let [result (some-> (deep-merge dicts/dicts shortcut-dict/dict)
+                  (let [result (some-> (deep-merge dicts/dicts shortcut-dict/dicts)
                                        dicts/translate)]
                     (swap! translate-dicts assoc preferred-language result)
                     result))]

+ 1 - 0
src/main/frontend/dicts.cljs

@@ -1,4 +1,5 @@
 (ns frontend.dicts
+  "Provides dictionary entries for most of the application"
   (:require [frontend.config :as config]
             [shadow.resource :as rc]
             [tongue.core :as tongue]))

+ 4 - 2
src/main/frontend/handler/command_palette.cljs

@@ -13,8 +13,10 @@
 (s/def :command/tag vector?)
 
 (s/def :command/command
-  (s/keys :req-un [:command/id :command/desc :command/action]
-          :opt-un [:command/shortcut :command/tag]))
+  (s/keys :req-un [:command/id :command/action]
+          ;; :command/desc is optional for internal commands since view
+          ;; checks translation ns first
+          :opt-un [:command/desc :command/shortcut :command/tag]))
 
 (defn global-shortcut-commands []
   (->> [:shortcut.handler/editor-global

+ 4 - 4
src/main/frontend/handler/plugin.cljs

@@ -6,7 +6,7 @@
             [frontend.handler.notification :as notifications]
             [camel-snake-kebab.core :as csk]
             [frontend.state :as state]
-            [medley.core :as md]
+            [medley.core :as medley]
             [frontend.fs :as fs]
             [electron.ipc :as ipc]
             [cljs-bean.core :as bean]
@@ -234,7 +234,7 @@
 
 (defn unregister-plugin-slash-command
   [pid]
-  (swap! state/state md/dissoc-in [:plugin/installed-commands (keyword pid)]))
+  (swap! state/state medley/dissoc-in [:plugin/installed-commands (keyword pid)]))
 
 (def keybinding-mode-handler-map
   {:global      :shortcut.handler/editor-global
@@ -278,7 +278,7 @@
 
 (defn unregister-plugin-simple-command
   [pid]
-  (swap! state/state md/dissoc-in [:plugin/simple-commands (keyword pid)]))
+  (swap! state/state medley/dissoc-in [:plugin/simple-commands (keyword pid)]))
 
 (defn register-plugin-ui-item
   [pid {:keys [type] :as opts}]
@@ -498,7 +498,7 @@
                                         ;; effects
                                         (unregister-plugin-themes pid)
                                         ;; plugins
-                                        (swap! state/state md/dissoc-in [:plugin/installed-plugins pid])
+                                        (swap! state/state medley/dissoc-in [:plugin/installed-plugins pid])
                                         ;; commands
                                         (clear-commands! pid))))
 

+ 127 - 221
src/main/frontend/modules/shortcut/config.cljs

@@ -11,307 +11,237 @@
             [frontend.handler.search :as search-handler]
             [frontend.handler.ui :as ui-handler]
             [frontend.handler.plugin :as plugin-handler]
+            [frontend.modules.shortcut.dict :as dict]
             [frontend.modules.shortcut.before :as m]
             [frontend.state :as state]
             [frontend.util :refer [mac?] :as util]
             [frontend.commands :as commands]
+            [clojure.data :as data]
             [medley.core :as medley]))
 
-;; Note – when you change this file, you will need to do a hard reset.
-;; The commands are registered when the Clojurescript code runs for the first time
-(defonce ^:large-vars/data-var all-default-keyboard-shortcuts
-  {:date-picker/complete         {:desc    "Date picker: Choose selected day"
-                                  :binding "enter"
+;; To add a new entry to this map, first add it here and then
+;; a description for it in frontend.modules.shortcut.dict/all-default-keyboard-shortcuts
+(def ^:large-vars/data-var all-default-keyboard-shortcuts
+  {:date-picker/complete         {:binding "enter"
                                   :fn      ui-handler/shortcut-complete}
 
-   :date-picker/prev-day         {:desc    "Date picker: Select previous day"
-                                  :binding "left"
+   :date-picker/prev-day         {:binding "left"
                                   :fn      ui-handler/shortcut-prev-day}
 
-   :date-picker/next-day         {:desc    "Date picker: Select next day"
-                                  :binding "right"
+   :date-picker/next-day         {:binding "right"
                                   :fn      ui-handler/shortcut-next-day}
 
-   :date-picker/prev-week        {:desc    "Date picker: Select previous week"
-                                  :binding "up"
+   :date-picker/prev-week        {:binding "up"
                                   :fn      ui-handler/shortcut-prev-week}
 
-   :date-picker/next-week        {:desc    "Date picker: Select next week"
-                                  :binding "down"
+   :date-picker/next-week        {:binding "down"
                                   :fn      ui-handler/shortcut-next-week}
 
-   :pdf/previous-page            {:desc    "Previous page of current pdf doc"
-                                  :binding "alt+p"
+   :pdf/previous-page            {:binding "alt+p"
                                   :fn      pdf-utils/prev-page}
 
-   :pdf/next-page                {:desc    "Next page of current pdf doc"
-                                  :binding "alt+n"
+   :pdf/next-page                {:binding "alt+n"
                                   :fn      pdf-utils/next-page}
 
-   :auto-complete/complete       {:desc    "Auto-complete: Choose selected item"
-                                  :binding "enter"
+   :auto-complete/complete       {:binding "enter"
                                   :fn      ui-handler/auto-complete-complete}
 
-   :auto-complete/prev           {:desc    "Auto-complete: Select previous item"
-                                  :binding "up"
+   :auto-complete/prev           {:binding "up"
                                   :fn      ui-handler/auto-complete-prev}
 
-   :auto-complete/next           {:desc    "Auto-complete: Select next item"
-                                  :binding "down"
+   :auto-complete/next           {:binding "down"
                                   :fn      ui-handler/auto-complete-next}
 
-   :auto-complete/shift-complete {:desc    "Auto-complete: Open selected item in sidebar"
-                                  :binding "shift+enter"
+   :auto-complete/shift-complete {:binding "shift+enter"
                                   :fn      ui-handler/auto-complete-shift-complete}
 
-   :auto-complete/open-link      {:desc    "Auto-complete: Open selected item in browser"
-                                  :binding "mod+o"
+   :auto-complete/open-link      {:binding "mod+o"
                                   :fn      ui-handler/auto-complete-open-link}
 
-   :cards/toggle-answers         {:desc    "Cards: show/hide answers/clozes"
-                                  :binding "s"
+   :cards/toggle-answers         {:binding "s"
                                   :fn      srs/toggle-answers}
 
-   :cards/next-card              {:desc    "Cards: next card"
-                                  :binding "n"
+   :cards/next-card              {:binding "n"
                                   :fn      srs/next-card}
 
-   :cards/forgotten              {:desc    "Cards: forgotten"
-                                  :binding "f"
+   :cards/forgotten              {:binding "f"
                                   :fn      srs/forgotten}
 
-   :cards/remembered             {:desc    "Cards: remembered"
-                                  :binding "r"
+   :cards/remembered             {:binding "r"
                                   :fn      srs/remembered}
 
-   :cards/recall                 {:desc    "Cards: take a while to recall"
-                                  :binding "t"
+   :cards/recall                 {:binding "t"
                                   :fn      srs/recall}
 
-   :editor/escape-editing        {:desc    "Escape editing"
-                                  :binding false
+   :editor/escape-editing        {:binding false
                                   :fn      (fn [_ _]
                                              (editor-handler/escape-editing))}
 
-   :editor/backspace             {:desc    "Backspace / Delete backwards"
-                                  :binding "backspace"
+   :editor/backspace             {:binding "backspace"
                                   :fn      editor-handler/editor-backspace}
 
-   :editor/delete                {:desc    "Delete / Delete forwards"
-                                  :binding "delete"
+   :editor/delete                {:binding "delete"
                                   :fn      editor-handler/editor-delete}
 
-   :editor/new-block             {:desc    "Create new block"
-                                  :binding "enter"
+   :editor/new-block             {:binding "enter"
                                   :fn      editor-handler/keydown-new-block-handler}
 
-   :editor/new-line              {:desc    "New line in current block"
-                                  :binding "shift+enter"
+   :editor/new-line              {:binding "shift+enter"
                                   :fn      editor-handler/keydown-new-line-handler}
 
-   :editor/follow-link           {:desc    "Follow link under cursor"
-                                  :binding "mod+o"
+   :editor/follow-link           {:binding "mod+o"
                                   :fn      editor-handler/follow-link-under-cursor!}
 
-   :editor/open-link-in-sidebar  {:desc    "Open link in sidebar"
-                                  :binding "mod+shift+o"
+   :editor/open-link-in-sidebar  {:binding "mod+shift+o"
                                   :fn      editor-handler/open-link-in-sidebar!}
 
-   :editor/bold                  {:desc    "Bold"
-                                  :binding "mod+b"
+   :editor/bold                  {:binding "mod+b"
                                   :fn      editor-handler/bold-format!}
 
-   :editor/italics               {:desc    "Italics"
-                                  :binding "mod+i"
+   :editor/italics               {:binding "mod+i"
                                   :fn      editor-handler/italics-format!}
 
-   :editor/highlight             {:desc    "Highlight"
-                                  :binding "mod+shift+h"
+   :editor/highlight             {:binding "mod+shift+h"
                                   :fn      editor-handler/highlight-format!}
 
-   :editor/strike-through        {:desc    "Strikethrough"
-                                  :binding "mod+shift+s"
+   :editor/strike-through        {:binding "mod+shift+s"
                                   :fn      editor-handler/strike-through-format!}
 
-   :editor/clear-block           {:desc    "Delete entire block content"
-                                  :binding (if mac? "ctrl+l" "alt+l")
+   :editor/clear-block           {:binding (if mac? "ctrl+l" "alt+l")
                                   :fn      editor-handler/clear-block-content!}
 
-   :editor/kill-line-before      {:desc    "Delete line before cursor position"
-                                  :binding (if mac? "ctrl+u" "alt+u")
+   :editor/kill-line-before      {:binding (if mac? "ctrl+u" "alt+u")
                                   :fn      editor-handler/kill-line-before!}
 
-   :editor/kill-line-after       {:desc    "Delete line after cursor position"
-                                  :binding (if mac? false "alt+k")
+   :editor/kill-line-after       {:binding (if mac? false "alt+k")
                                   :fn      editor-handler/kill-line-after!}
 
-   :editor/beginning-of-block    {:desc    "Move cursor to the beginning of a block"
-                                  :binding (if mac? false "alt+a")
+   :editor/beginning-of-block    {:binding (if mac? false "alt+a")
                                   :fn      editor-handler/beginning-of-block}
 
-   :editor/end-of-block          {:desc    "Move cursor to the end of a block"
-                                  :binding (if mac? false "alt+e")
+   :editor/end-of-block          {:binding (if mac? false "alt+e")
                                   :fn      editor-handler/end-of-block}
 
-   :editor/forward-word          {:desc    "Move cursor forward a word"
-                                  :binding (if mac? "ctrl+shift+f" "alt+f")
+   :editor/forward-word          {:binding (if mac? "ctrl+shift+f" "alt+f")
                                   :fn      editor-handler/cursor-forward-word}
 
-   :editor/backward-word         {:desc    "Move cursor backward a word"
-                                  :binding (if mac? "ctrl+shift+b" "alt+b")
+   :editor/backward-word         {:binding (if mac? "ctrl+shift+b" "alt+b")
                                   :fn      editor-handler/cursor-backward-word}
 
-   :editor/forward-kill-word     {:desc    "Delete a word forwards"
-                                  :binding (if mac? "ctrl+w" "alt+d")
+   :editor/forward-kill-word     {:binding (if mac? "ctrl+w" "alt+d")
                                   :fn      editor-handler/forward-kill-word}
 
-   :editor/backward-kill-word    {:desc    "Delete a word backwards"
-                                  :binding (if mac? false "alt+w")
+   :editor/backward-kill-word    {:binding (if mac? false "alt+w")
                                   :fn      editor-handler/backward-kill-word}
 
-   :editor/replace-block-reference-at-point {:desc    "Replace block reference with its content at point"
-                                             :binding "mod+shift+r"
+   :editor/replace-block-reference-at-point {:binding "mod+shift+r"
                                              :fn      editor-handler/replace-block-reference-with-content-at-point}
 
-   :editor/paste-text-in-one-block-at-point {:desc    "Paste text into one block at point"
-                                             :binding "mod+shift+v"
+   :editor/paste-text-in-one-block-at-point {:binding "mod+shift+v"
                                              :fn      editor-handler/paste-text-in-one-block-at-point}
 
-   :editor/insert-youtube-timestamp         {:desc    "Insert youtube timestamp"
-                                             :binding "mod+shift+y"
+   :editor/insert-youtube-timestamp         {:binding "mod+shift+y"
                                              :fn      commands/insert-youtube-timestamp}
 
-   :editor/cycle-todo              {:desc    "Rotate the TODO state of the current item"
-                                    :binding "mod+enter"
+   :editor/cycle-todo              {:binding "mod+enter"
                                     :fn      editor-handler/cycle-todo!}
 
-   :editor/up                      {:desc    "Move cursor up / Select up"
-                                    :binding "up"
+   :editor/up                      {:binding "up"
                                     :fn      (editor-handler/shortcut-up-down :up)}
 
-   :editor/down                    {:desc    "Move cursor down / Select down"
-                                    :binding "down"
+   :editor/down                    {:binding "down"
                                     :fn      (editor-handler/shortcut-up-down :down)}
 
-   :editor/left                    {:desc    "Move cursor left / Open selected block at beginning"
-                                    :binding "left"
+   :editor/left                    {:binding "left"
                                     :fn      (editor-handler/shortcut-left-right :left)}
 
-   :editor/right                   {:desc    "Move cursor right / Open selected block at end"
-                                    :binding "right"
+   :editor/right                   {:binding "right"
                                     :fn      (editor-handler/shortcut-left-right :right)}
 
-   :editor/move-block-up           {:desc    "Move block up"
-                                    :binding (if mac? "mod+shift+up" "alt+shift+up")
+   :editor/move-block-up           {:binding (if mac? "mod+shift+up" "alt+shift+up")
                                     :fn      (editor-handler/move-up-down true)}
 
-   :editor/move-block-down         {:desc    "Move block down"
-                                    :binding (if mac? "mod+shift+down" "alt+shift+down")
+   :editor/move-block-down         {:binding (if mac? "mod+shift+down" "alt+shift+down")
                                     :fn      (editor-handler/move-up-down false)}
 
    ;; FIXME: add open edit in non-selection mode
-   :editor/open-edit               {:desc    "Edit selected block"
-                                    :binding "enter"
+   :editor/open-edit               {:binding "enter"
                                     :fn      (partial editor-handler/open-selected-block! :right)}
 
-   :editor/select-block-up         {:desc    "Select block above"
-                                    :binding "shift+up"
+   :editor/select-block-up         {:binding "shift+up"
                                     :fn      (editor-handler/on-select-block :up)}
 
-   :editor/select-block-down       {:desc    "Select block below"
-                                    :binding "shift+down"
+   :editor/select-block-down       {:binding "shift+down"
                                     :fn      (editor-handler/on-select-block :down)}
 
-   :editor/delete-selection        {:desc    "Delete selected blocks"
-                                    :binding ["backspace" "delete"]
+   :editor/delete-selection        {:binding ["backspace" "delete"]
                                     :fn      editor-handler/delete-selection}
 
-   :editor/expand-block-children   {:desc    "Expand"
-                                    :binding "mod+down"
+   :editor/expand-block-children   {:binding "mod+down"
                                     :fn      editor-handler/expand!}
 
-   :editor/collapse-block-children {:desc    "Collapse"
-                                    :binding "mod+up"
+   :editor/collapse-block-children {:binding "mod+up"
                                     :fn      editor-handler/collapse!}
 
-   :editor/indent                  {:desc    "Indent block"
-                                    :binding "tab"
+   :editor/indent                  {:binding "tab"
                                     :fn      (editor-handler/keydown-tab-handler :right)}
 
-   :editor/outdent                 {:desc    "Outdent block"
-                                    :binding "shift+tab"
+   :editor/outdent                 {:binding "shift+tab"
                                     :fn      (editor-handler/keydown-tab-handler :left)}
 
-   :editor/copy                    {:desc    "Copy (copies either selection, or block reference)"
-                                    :binding "mod+c"
+   :editor/copy                    {:binding "mod+c"
                                     :fn      editor-handler/shortcut-copy}
 
-   :editor/cut                     {:desc    "Cut"
-                                    :binding "mod+x"
+   :editor/cut                     {:binding "mod+x"
                                     :fn      editor-handler/shortcut-cut}
 
-   :editor/undo                    {:desc    "Undo"
-                                    :binding "mod+z"
+   :editor/undo                    {:binding "mod+z"
                                     :fn      history/undo!}
 
-   :editor/redo                    {:desc    "Redo"
-                                    :binding ["shift+mod+z" "mod+y"]
+   :editor/redo                    {:binding ["shift+mod+z" "mod+y"]
                                     :fn      history/redo!}
 
-   :editor/insert-link             {:desc    "HTML Link"
-                                    :binding "mod+l"
+   :editor/insert-link             {:binding "mod+l"
                                     :fn      #(editor-handler/html-link-format!)}
 
-   :editor/select-all-blocks       {:desc    "Select all blocks"
-                                    :binding "mod+shift+a"
+   :editor/select-all-blocks       {:binding "mod+shift+a"
                                     :fn      editor-handler/select-all-blocks!}
 
-   :editor/zoom-in                 {:desc    "Zoom in editing block / Forwards otherwise"
-                                    :binding (if mac? "mod+." "alt+right")
+   :editor/zoom-in                 {:binding (if mac? "mod+." "alt+right")
                                     :fn      editor-handler/zoom-in!}
 
-   :editor/zoom-out                {:desc    "Zoom out editing block / Backwards otherwise"
-                                    :binding (if mac? "mod+," "alt+left")
+   :editor/zoom-out                {:binding (if mac? "mod+," "alt+left")
                                     :fn      editor-handler/zoom-out!}
 
-   :ui/toggle-brackets             {:desc    "Toggle whether to display brackets"
-                                    :binding "mod+c mod+b"
+   :ui/toggle-brackets             {:binding "mod+c mod+b"
                                     :fn      config-handler/toggle-ui-show-brackets!}
 
-   :go/search-in-page              {:desc    "Search in the current page"
-                                    :binding "mod+shift+k"
+   :go/search-in-page              {:binding "mod+shift+k"
                                     :fn      #(do
                                                 (editor-handler/escape-editing)
                                                 (route-handler/go-to-search! :page))}
 
-   :go/search                      {:desc    "Full text search"
-                                    :binding "mod+k"
+   :go/search                      {:binding "mod+k"
                                     :fn      #(do
                                                 (editor-handler/escape-editing)
                                                 (route-handler/go-to-search! :global))}
 
-   :go/journals                    {:desc    "Go to journals"
-                                    :binding "g j"
+   :go/journals                    {:binding "g j"
                                     :fn      route-handler/go-to-journals!}
 
-   :go/backward                    {:desc    "Backwards"
-                                    :binding "mod+open-square-bracket"
+   :go/backward                    {:binding "mod+open-square-bracket"
                                     :fn      (fn [_] (js/window.history.back))}
 
-   :go/forward                     {:desc    "Forwards"
-                                    :binding "mod+close-square-bracket"
+   :go/forward                     {:binding "mod+close-square-bracket"
                                     :fn      (fn [_] (js/window.history.forward))}
 
-   :search/re-index                {:desc    "Rebuild search index"
-                                    :binding "mod+c mod+s"
+   :search/re-index                {:binding "mod+c mod+s"
                                     :fn      (fn [_] (search-handler/rebuild-indices! true))}
 
-   :sidebar/open-today-page        {:desc    "Open today's page in the right sidebar"
-                                    :binding (if mac? "mod+shift+j" "alt+shift+j")
+   :sidebar/open-today-page        {:binding (if mac? "mod+shift+j" "alt+shift+j")
                                     :fn      page-handler/open-today-in-sidebar}
 
-   :sidebar/clear                  {:desc    "Clear all in the right sidebar"
-                                    :binding "mod+c mod+c"
+   :sidebar/clear                  {:binding "mod+c mod+c"
                                     :fn      #(do
                                                 (state/clear-sidebar-blocks!)
                                                 (state/hide-right-sidebar!))}
@@ -319,151 +249,126 @@
    :misc/copy                      {:binding "mod+c"
                                     :fn      (fn [] (js/document.execCommand "copy"))}
 
-   :command-palette/toggle         {:desc    "Toggle command palette"
-                                    :binding "mod+shift+p"
+   :command-palette/toggle         {:binding "mod+shift+p"
                                     :fn      #(do
                                                 (editor-handler/escape-editing)
                                                 (state/toggle! :ui/command-palette-open?))}
 
-   :graph/open                     {:desc    "Select graph to open"
-                                    :fn      #(do
+   :graph/open                     {:fn      #(do
                                                 (editor-handler/escape-editing)
                                                 (state/set-state! :ui/open-select :graph-open))
                                     :binding "mod+shift+g"}
 
-   :graph/remove                   {:desc    "Remove a graph"
-                                    :fn      #(do
+   :graph/remove                   {:fn      #(do
                                                 (editor-handler/escape-editing)
                                                 (state/set-state! :ui/open-select :graph-remove))
                                     :binding false}
 
-   :graph/add                      {:desc "Add a graph"
-                                    :fn (fn [] (route-handler/redirect! {:to :repo-add}))
+   :graph/add                      {:fn (fn [] (route-handler/redirect! {:to :repo-add}))
                                     :binding false}
 
-   :graph/save                     {:desc "Save current graph to disk"
-                                    :fn #(state/pub-event! [:graph/save])
+   :graph/save                     {:fn #(state/pub-event! [:graph/save])
                                     :binding false}
 
    :command/run                    (when (util/electron?)
-                                     {:desc    "Run git command"
-                                      :binding "mod+shift+1"
+                                     {:binding "mod+shift+1"
                                       :fn      #(state/pub-event! [:command/run])})
 
-   :go/home                        {:desc    "Go to home"
-                                    :binding "g h"
+   :go/home                        {:binding "g h"
                                     :fn      route-handler/redirect-to-home!}
 
-   :go/all-pages                   {:desc    "Go to all pages"
-                                    :binding "g a"
+   :go/all-pages                   {:binding "g a"
                                     :fn      route-handler/redirect-to-all-pages!}
 
-   :go/graph-view                  {:desc    "Go to graph view"
-                                    :binding "g g"
+   :go/graph-view                  {:binding "g g"
                                     :fn      route-handler/redirect-to-graph-view!}
 
 
-   :go/keyboard-shortcuts          {:desc    "Go to keyboard shortcuts"
-                                    :binding "g s"
+   :go/keyboard-shortcuts          {:binding "g s"
                                     :fn      #(route-handler/redirect! {:to :shortcut-setting})}
 
-   :go/tomorrow                    {:desc    "Go to tomorrow"
-                                    :binding "g t"
+   :go/tomorrow                    {:binding "g t"
                                     :fn      journal-handler/go-to-tomorrow!}
 
-   :go/next-journal                {:desc    "Go to next journal"
-                                    :binding "g n"
+   :go/next-journal                {:binding "g n"
                                     :fn      journal-handler/go-to-next-journal!}
 
-   :go/prev-journal                {:desc    "Go to previous journal"
-                                    :binding "g p"
+   :go/prev-journal                {:binding "g p"
                                     :fn      journal-handler/go-to-prev-journal!}
 
-   :go/flashcards                  {:desc    "Toggle flashcards"
-                                    :binding "g f"
+   :go/flashcards                  {:binding "g f"
                                     :fn      (fn []
                                                (if (state/modal-opened?)
                                                  (state/close-modal!)
                                                  (state/pub-event! [:modal/show-cards])))}
 
-   :ui/toggle-document-mode        {:desc    "Toggle document mode"
-                                    :binding "t d"
+   :ui/toggle-document-mode        {:binding "t d"
                                     :fn      state/toggle-document-mode!}
 
-   :ui/toggle-settings              {:desc    "Toggle settings"
-                                     :binding (if mac? "t s" ["t s" "mod+,"])
+   :ui/toggle-settings              {:binding (if mac? "t s" ["t s" "mod+,"])
                                      :fn      ui-handler/toggle-settings-modal!}
 
-   :ui/toggle-right-sidebar         {:desc    "Toggle right sidebar"
-                                     :binding "t r"
+   :ui/toggle-right-sidebar         {:binding "t r"
                                      :fn      ui-handler/toggle-right-sidebar!}
 
-   :ui/toggle-left-sidebar          {:desc    "Toggle left sidebar"
-                                     :binding "t l"
+   :ui/toggle-left-sidebar          {:binding "t l"
                                      :fn      state/toggle-left-sidebar!}
 
-   :ui/toggle-help                  {:desc    "Toggle help"
-                                     :binding "shift+/"
+   :ui/toggle-help                  {:binding "shift+/"
                                      :fn      ui-handler/toggle-help!}
 
-   :ui/toggle-theme                 {:desc    "Toggle between dark/light theme"
-                                     :binding "t t"
+   :ui/toggle-theme                 {:binding "t t"
                                      :fn      state/toggle-theme!}
 
-   :ui/toggle-contents              {:desc    "Toggle Contents in sidebar"
-                                     :binding "mod+shift+c"
+   :ui/toggle-contents              {:binding "mod+shift+c"
                                      :fn      ui-handler/toggle-contents!}
+
    :ui/open-new-window              (when (util/electron?)
-                                      {:desc    "Open another window"
-                                       :binding "mod+n"
+                                      {:binding "mod+n"
                                        :fn      #(state/pub-event! [:graph/open-new-window nil])})
 
-   :command/toggle-favorite         {:desc    "Add to/remove from favorites"
-                                     :binding "mod+shift+f"
+   :command/toggle-favorite         {:binding "mod+shift+f"
                                      :fn      page-handler/toggle-favorite!}
 
    :editor/open-file-in-default-app (when (util/electron?)
-                                      {:desc    "Open file in default app"
-                                       :binding false
+                                      {:binding false
                                        :fn      page-handler/open-file-in-default-app})
 
    :editor/open-file-in-directory   (when (util/electron?)
-                                      {:desc    "Open file in parent directory"
-                                       :binding false
+                                      {:binding false
                                        :fn      page-handler/open-file-in-directory})
 
    :editor/copy-current-file        (when (util/electron?)
-                                      {:desc    "Copy current file"
-                                       :binding false
+                                      {:binding false
                                        :fn      page-handler/copy-current-file})
 
-   :ui/toggle-wide-mode             {:desc    "Toggle wide mode"
-                                     :binding "t w"
+   :ui/toggle-wide-mode             {:binding "t w"
                                      :fn      ui-handler/toggle-wide-mode!}
 
-   :ui/select-theme-color           {:desc    "Select available theme colors"
-                                     :binding "t i"
+   :ui/select-theme-color           {:binding "t i"
                                      :fn      plugin-handler/show-themes-modal!}
 
    :ui/goto-plugins                  (when plugin-handler/lsp-enabled?
-                                       {:desc    "Go to plugins dashboard"
-                                        :binding "t p"
+                                       {:binding "t p"
                                         :fn      plugin-handler/goto-plugins-dashboard!})
 
 
-   :editor/toggle-open-blocks       {:desc    "Toggle open blocks (collapse or expand all blocks)"
-                                     :binding "t o"
+   :editor/toggle-open-blocks       {:binding "t o"
                                      :fn      editor-handler/toggle-open!}
 
-   :ui/toggle-cards                 {:desc    "Toggle cards"
-                                     :binding "t c"
+   :ui/toggle-cards                 {:binding "t c"
                                      :fn      ui-handler/toggle-cards!}
-   ;; :ui/toggle-between-page-and-file route-handler/toggle-between-page-and-file!
 
-   :git/commit                      {:desc    "Git commit message"
-                                     :binding "c"
+   :git/commit                      {:binding "c"
                                      :fn      commit/show-commit-modal!}})
 
+(let [keyboard-shortcuts
+      {::keyboard-shortcuts (set (keys all-default-keyboard-shortcuts))
+       ::dict/keyboard-shortcuts (set (keys dict/all-default-keyboard-shortcuts))}]
+  (assert (= (::keyboard-shortcuts keyboard-shortcuts) (::dict/keyboard-shortcuts keyboard-shortcuts))
+          (str "Keys for keyboard shortcuts must be the same "
+               (data/diff (::keyboard-shortcuts keyboard-shortcuts) (::dict/keyboard-shortcuts keyboard-shortcuts)))))
+
 (defn build-category-map [symbols]
   (reduce into {}
           (map (fn [sym] {sym (get all-default-keyboard-shortcuts sym)}) symbols)))
@@ -605,10 +510,11 @@
                           :git/commit])
      (with-meta {:before m/enable-when-not-editing-mode!}))}))
 
-;; Categories for docs purpose
+;; To add a new entry to this map, first add it here and then
+;; a description for it in frontend.modules.shortcut.dict/category
 (def ^:large-vars/data-var category
+  "Categories for docs purpose"
   {:shortcut.category/basics
-   ^{:doc "Basics"}
    [:editor/new-block
     :editor/new-line
     :editor/indent
@@ -622,14 +528,12 @@
     :editor/cut]
 
    :shortcut.category/formatting
-   ^{:doc "Formatting"}
    [:editor/bold
     :editor/insert-link
     :editor/italics
     :editor/highlight]
 
    :shortcut.category/navigating
-   ^{:doc "Navigation"}
    [:editor/up
     :editor/down
     :editor/left
@@ -653,7 +557,6 @@
     :ui/open-new-window]
 
    :shortcut.category/block-editing
-   ^{:doc "Block editing general"}
    [:editor/backspace
     :editor/delete
     :editor/indent
@@ -670,7 +573,6 @@
     :editor/escape-editing]
 
    :shortcut.category/block-command-editing
-   ^{:doc "Block command editing"}
    [:editor/backspace
     :editor/clear-block
     :editor/kill-line-before
@@ -685,7 +587,6 @@
     :editor/paste-text-in-one-block-at-point]
 
    :shortcut.category/block-selection
-   ^{:doc "Block selection (press Esc to quit selection)"}
    [:editor/open-edit
     :editor/select-all-blocks
     :editor/select-block-up
@@ -693,7 +594,6 @@
     :editor/delete-selection]
 
    :shortcut.category/toggle
-   ^{:doc "Toggle"}
    [:ui/toggle-help
     :editor/toggle-open-blocks
     :ui/toggle-wide-mode
@@ -707,7 +607,6 @@
     :ui/toggle-contents]
 
    :shortcut.category/others
-   ^{:doc "Others"}
    [:pdf/previous-page
     :pdf/next-page
     :command/toggle-favorite
@@ -732,6 +631,13 @@
     :date-picker/next-week
     :date-picker/complete]})
 
+(let [category-maps {::category (set (keys category))
+                     ::dict/category (set (keys dict/category))}]
+  (assert (= (::category category-maps) (::dict/category category-maps))
+          (str "Keys for category maps must be the same "
+               (data/diff (::category category-maps) (::dict/category category-maps)))))
+
+
 (defn add-shortcut!
   [handler-id id shortcut-map]
   (swap! config assoc-in [handler-id id] shortcut-map))

+ 0 - 13
src/main/frontend/modules/shortcut/data_helper.cljs

@@ -77,19 +77,6 @@
         ns (namespace k)]
     (keyword (str "command." ns) n)))
 
-(defn desc-helper []
-  (->> (vals @config/config)
-       (apply merge)
-       (map (fn [[k {:keys [desc]}]]
-              {(decorate-namespace k) desc}))
-       (into {})))
-
-(defn category-helper []
-  (->> config/category
-       (map (fn [[k v]]
-              {k (:doc (meta v))}))
-       (into {})))
-
 (defn decorate-binding [binding]
   (-> (if (string? binding) binding (str/join "+"  binding))
       (str/replace "mod" (if util/mac? "cmd" "ctrl"))

+ 642 - 520
src/main/frontend/modules/shortcut/dict.cljs

@@ -1,530 +1,652 @@
-(ns frontend.modules.shortcut.dict
-  (:require [frontend.modules.shortcut.data-helper :as dh]
-            [frontend.modules.shortcut.macro :refer [shortcut-dict]]))
+(ns ^:bb-compatible frontend.modules.shortcut.dict
+  "Provides dictionary entries for shortcuts"
+  (:require [medley.core :as medley]))
 
-(def ^:large-vars/data-var dict
-  (shortcut-dict
-    (dh/desc-helper)
-    (dh/category-helper)
-    {:zh-CN   {:shortcut.category/formatting            "格式化"
-               :shortcut.category/basics                "基础操作"
-               :shortcut.category/navigating            "移动"
-               :shortcut.category/block-editing         "块编辑基本"
-               :shortcut.category/block-command-editing "块编辑文本操作"
-               :shortcut.category/block-selection       "块选择操作"
-               :shortcut.category/toggle                "切换"
-               :shortcut.category/others                "其他"
-               :command.editor/indent                   "缩进块标签"
-               :command.editor/outdent                  "取消缩进块"
-               :command.editor/move-block-up            "向上移动块"
-               :command.editor/move-block-down          "向下移动块"
-               :command.editor/new-block                "创建块"
-               :command.editor/new-line                 "块中新建行"
-               :command.editor/zoom-in                  "聚焦"
-               :command.editor/zoom-out                 "退出聚焦"
-               :command.editor/follow-link              "跟随光标下的链接"
-               :command.editor/open-link-in-sidebar     "在侧边栏打开"
-               :command.editor/expand-block-children    "展开"
-               :command.editor/collapse-block-children  "折叠"
-               :command.editor/select-block-up          "选择上方的块"
-               :command.editor/select-block-down        "选择下方的块"
-               :command.editor/select-all-blocks        "选择所有块"
-               :command.ui/toggle-help                  "显示/关闭帮助"
-               :command.git/commit                      "提交消息"
-               :command.go/search                       "全文搜索"
-               :command.go/backward                     "回退"
-               :command.go/forward                      "前进"
-               :command.go/search-in-page               "在当前页面搜索"
-               :command.ui/toggle-document-mode         "切换文档模式"
-               :command.ui/toggle-contents              "打开/关闭目录"
-               :command.ui/toggle-theme                 "在暗色/亮色主题之间切换"
-               :command.ui/toggle-right-sidebar         "启用/关闭右侧栏"
-               :command.ui/toggle-settings              "显示/关闭设置"
-               :command.go/journals                     "跳转到日记"
-               :command.ui/toggle-wide-mode             "切换宽屏模式"
-               :command.ui/toggle-brackets              "切换是否显示括号"
-               :command.search/re-index                 "重新建立搜索索引"
-               :command.editor/bold                     "粗体"
-               :command.editor/italics                  "斜体"
-               :command.editor/insert-link              "Html 链接"
-               :command.editor/highlight                "高亮"
-               :command.editor/undo                     "撤销"
-               :command.editor/redo                     "重做"
-               :command.editor/copy                     "复制"
-               :command.editor/cut                      "剪切"
-               :command.editor/up                       "向上移动光标 / 向上选择"
-               :command.editor/down                     "向下移动光标 / 向下选择"
-               :command.editor/left                     "向左移动光标 / 向左选择"
-               :command.editor/right                    "向右移动光标 / 向右选择"
-               :command.editor/backspace                "向左删除"
-               :command.editor/delete                   "向右删除"
-               :command.editor/cycle-todo               "切换TODO状态"
-               :command.editor/clear-block              "清除块内容"
-               :command.editor/kill-line-before         "删除光标右侧行"
-               :command.editor/kill-line-after          "删除光标左侧行"
-               :command.editor/beginning-of-block       "移动光标到块开始位置"
-               :command.editor/end-of-block             "移动光标到块末尾"
-               :command.editor/forward-word             "光标向后移动一个单词"
-               :command.editor/backward-word            "光标向前移动一个单词"
-               :command.editor/forward-kill-word        "向后删除一个单词"
-               :command.editor/backward-kill-word       "向前删除一个单词"
-               :command.editor/open-edit                "编辑选中块"
-               :command.editor/delete-selection         "删除选中块"
-               :command.editor/toggle-open-blocks       "切换折叠/展开所有块(非编辑状态)"}
+(defn- decorate-namespace [k]
+  (let [n (name k)
+        ns (namespace k)]
+    (keyword (str "command." ns) n)))
 
-     :zh-Hant {:command.editor/indent                  "縮進塊標簽"
-               :command.editor/outdent                 "取消縮進塊"
-               :command.editor/move-block-up           "向上移動塊"
-               :command.editor/move-block-down         "向下移動塊"
-               :command.editor/new-block               "創建塊"
-               :command.editor/new-line                "塊中新建行"
-               :command.editor/zoom-in                 "聚焦"
-               :command.editor/zoom-out                "推出聚焦"
-               :command.editor/follow-link             "跟隨光標下的鏈接"
-               :command.editor/open-link-in-sidebar    "在側邊欄打開"
-               :command.editor/expand-block-children   "展開"
-               :command.editor/collapse-block-children "折疊"
-               :command.editor/select-block-up         "選擇上方的塊"
-               :command.editor/select-block-down       "選擇下方的塊"
-               :command.editor/select-all-blocks       "選擇所有塊"
-               :command.ui/toggle-help                 "顯示/關閉幫助"
-               :command.git/commit                     "提交消息"
-               :command.go/search                      "全文搜索"
-               :command.ui/toggle-document-mode        "切換文檔模式"
-               :command.ui/toggle-theme                "“在暗色/亮色主題之間切換”"
-               :command.ui/toggle-right-sidebar        "啟用/關閉右側欄"
-               :command.go/journals                    "跳轉到日記"}
+(def ^:large-vars/data-var all-default-keyboard-shortcuts
+  {:date-picker/complete         "Date picker: Choose selected day"
+   :date-picker/prev-day         "Date picker: Select previous day"
+   :date-picker/next-day         "Date picker: Select next day"
+   :date-picker/prev-week        "Date picker: Select previous week"
+   :date-picker/next-week        "Date picker: Select next week"
+   :pdf/previous-page            "Previous page of current pdf doc"
+   :pdf/next-page                "Next page of current pdf doc"
+   :auto-complete/complete       "Auto-complete: Choose selected item"
+   :auto-complete/prev           "Auto-complete: Select previous item"
+   :auto-complete/next           "Auto-complete: Select next item"
+   :auto-complete/shift-complete "Auto-complete: Open selected item in sidebar"
+   :auto-complete/open-link      "Auto-complete: Open selected item in browser"
+   :cards/toggle-answers         "Cards: show/hide answers/clozes"
+   :cards/next-card              "Cards: next card"
+   :cards/forgotten              "Cards: forgotten"
+   :cards/remembered             "Cards: remembered"
+   :cards/recall                 "Cards: take a while to recall"
+   :editor/escape-editing        "Escape editing"
+   :editor/backspace             "Backspace / Delete backwards"
+   :editor/delete                "Delete / Delete forwards"
+   :editor/new-block             "Create new block"
+   :editor/new-line              "New line in current block"
+   :editor/follow-link           "Follow link under cursor"
+   :editor/open-link-in-sidebar  "Open link in sidebar"
+   :editor/bold                  "Bold"
+   :editor/italics               "Italics"
+   :editor/highlight             "Highlight"
+   :editor/strike-through        "Strikethrough"
+   :editor/clear-block           "Delete entire block content"
+   :editor/kill-line-before      "Delete line before cursor position"
+   :editor/kill-line-after       "Delete line after cursor position"
+   :editor/beginning-of-block    "Move cursor to the beginning of a block"
+   :editor/end-of-block          "Move cursor to the end of a block"
+   :editor/forward-word          "Move cursor forward a word"
+   :editor/backward-word         "Move cursor backward a word"
+   :editor/forward-kill-word     "Delete a word forwards"
+   :editor/backward-kill-word    "Delete a word backwards"
+   :editor/replace-block-reference-at-point "Replace block reference with its content at point"
+   :editor/paste-text-in-one-block-at-point "Paste text into one block at point"
+   :editor/insert-youtube-timestamp         "Insert youtube timestamp"
+   :editor/cycle-todo              "Rotate the TODO state of the current item"
+   :editor/up                      "Move cursor up / Select up"
+   :editor/down                    "Move cursor down / Select down"
+   :editor/left                    "Move cursor left / Open selected block at beginning"
+   :editor/right                   "Move cursor right / Open selected block at end"
+   :editor/move-block-up           "Move block up"
+   :editor/move-block-down         "Move block down"
+   :editor/open-edit               "Edit selected block"
+   :editor/select-block-up         "Select block above"
+   :editor/select-block-down       "Select block below"
+   :editor/delete-selection        "Delete selected blocks"
+   :editor/expand-block-children   "Expand"
+   :editor/collapse-block-children "Collapse"
+   :editor/indent                  "Indent block"
+   :editor/outdent                 "Outdent block"
+   :editor/copy                    "Copy (copies either selection, or block reference)"
+   :editor/cut                     "Cut"
+   :editor/undo                    "Undo"
+   :editor/redo                    "Redo"
+   :editor/insert-link             "HTML Link"
+   :editor/select-all-blocks       "Select all blocks"
+   :editor/zoom-in                 "Zoom in editing block / Forwards otherwise"
+   :editor/zoom-out                "Zoom out editing block / Backwards otherwise"
+   :ui/toggle-brackets             "Toggle whether to display brackets"
+   :go/search-in-page              "Search in the current page"
+   :go/search                      "Full text search"
+   :go/journals                    "Go to journals"
+   :go/backward                    "Backwards"
+   :go/forward                     "Forwards"
+   :search/re-index                "Rebuild search index"
+   :sidebar/open-today-page        "Open today's page in the right sidebar"
+   :sidebar/clear                  "Clear all in the right sidebar"
+   :misc/copy                      "mod+c"
+   :command-palette/toggle         "Toggle command palette"
+   :graph/open                     "Select graph to open"
+   :graph/remove                   "Remove a graph"
+   :graph/add                      "Add a graph"
+   :graph/save                     "Save current graph to disk"
+   :command/run                    "Run git command"
+   :go/home                        "Go to home"
+   :go/all-pages                   "Go to all pages"
+   :go/graph-view                  "Go to graph view"
+   :go/keyboard-shortcuts          "Go to keyboard shortcuts"
+   :go/tomorrow                    "Go to tomorrow"
+   :go/next-journal                "Go to next journal"
+   :go/prev-journal                "Go to previous journal"
+   :go/flashcards                  "Toggle flashcards"
+   :ui/toggle-document-mode        "Toggle document mode"
+   :ui/toggle-settings             "Toggle settings"
+   :ui/toggle-right-sidebar        "Toggle right sidebar"
+   :ui/toggle-left-sidebar         "Toggle left sidebar"
+   :ui/toggle-help                 "Toggle help"
+   :ui/toggle-theme                "Toggle between dark/light theme"
+   :ui/toggle-contents             "Toggle Contents in sidebar"
+   :ui/open-new-window             "Open another window"
+   :command/toggle-favorite        "Add to/remove from favorites"
+   :editor/open-file-in-default-app "Open file in default app"
+   :editor/open-file-in-directory   "Open file in parent directory"
+   :editor/copy-current-file        "Copy current file"
+   :ui/toggle-wide-mode             "Toggle wide mode"
+   :ui/select-theme-color           "Select available theme colors"
+   :ui/goto-plugins                 "Go to plugins dashboard"
+   :editor/toggle-open-blocks       "Toggle open blocks (collapse or expand all blocks)"
+   :ui/toggle-cards                 "Toggle cards"
+   :git/commit                      "Git commit message"})
 
-     :de      {:shortcut.category/formatting           "Formatierung"
-               :command.editor/indent                  "Block einrücken"
-               :command.editor/outdent                 "Block ausrücken"
-               :command.editor/move-block-up           "Block nach oben verschieben"
-               :command.editor/move-block-down         "Block nach unten verschieben"
-               :command.editor/new-block               "Neuen Block erstellen"
-               :command.editor/new-line                "Neue Zeile innerhalb des Blocks erstellen"
-               :command.editor/zoom-in                 "Heranzoomen"
-               :command.editor/zoom-out                "Herauszoomen"
-               :command.editor/follow-link             "Link unter dem Cursor folgen"
-               :command.editor/open-link-in-sidebar    "Link in Seitenleiste öffnen"
-               :command.editor/expand-block-children   "Erweitern"
-               :command.editor/collapse-block-children "Zusammenklappen"
-               :command.editor/select-block-up         "Block oberhalb auswählen"
-               :command.ui/toggle-help                 "Hilfe aktivieren"
-               :command.go/search                      "Volltextsuche"
-               :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.go/journals                    "Zu Journalen springen"
-               :command.git/commit                     "Git Commit-Nachricht"
-               :command.editor/select-block-down       "Block unterhalb auswählen"
-               :command.editor/select-all-blocks       "Alle Blöcke auswählen"}
+(def category
+  {:shortcut.category/basics "Basics"
+   :shortcut.category/formatting "Formatting"
+   :shortcut.category/navigating "Navigation"
+   :shortcut.category/block-editing "Block editing general"
+   :shortcut.category/block-command-editing "Block command editing"
+   :shortcut.category/block-selection "Block selection (press Esc to quit selection)"
+   :shortcut.category/toggle "Toggle"
+   :shortcut.category/others "Others"})
 
-     :fr      {:shortcut.category/formatting           "Formats"
-               :command.editor/indent                  "Indenter un Bloc vers la droite"
-               :command.editor/outdent                 "Indenter un Bloc vers la gauche"
-               :command.editor/move-block-up           "Déplacer un bloc au dessus"
-               :command.editor/move-block-down         "Déplacer un bloc en dessous"
-               :command.editor/new-block               "Créer un nouveau bloc"
-               :command.editor/new-line                "Aller à la ligne dans un bloc"
-               :command.editor/zoom-in                 "Zoomer"
-               :command.editor/zoom-out                "Dézoomer"
-               :command.editor/follow-link             "Suivre le lien sous le curseur"
-               :command.editor/open-link-in-sidebar    "Ouvrir le lien dans la barre latérale"
-               :command.editor/expand-block-children   "Etendre"
-               :command.editor/collapse-block-children "Réduire"
-               :command.editor/select-block-up         "Sélectionner le bloc au dessus"
-               :command.editor/select-block-down       "Sélectionner le bloc en dessous"
-               :command.editor/select-all-blocks       "Sélectionner tous les blocs"
-               :command.ui/toggle-help                 "Afficher l'aide"
-               :command.git/commit                     "Message de commit Git"
-               :command.go/search                      "Recherche globale dans le texte"
-               :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.go/journals                    "Aller au Journal"}
+(def ^:large-vars/data-var dicts
+  {:en (merge
+        (medley/map-keys decorate-namespace all-default-keyboard-shortcuts)
+        category)
+   :zh-CN   {:shortcut.category/formatting            "格式化"
+             :shortcut.category/basics                "基础操作"
+             :shortcut.category/navigating            "移动"
+             :shortcut.category/block-editing         "块编辑基本"
+             :shortcut.category/block-command-editing "块编辑文本操作"
+             :shortcut.category/block-selection       "块选择操作"
+             :shortcut.category/toggle                "切换"
+             :shortcut.category/others                "其他"
+             :command.editor/indent                   "缩进块标签"
+             :command.editor/outdent                  "取消缩进块"
+             :command.editor/move-block-up            "向上移动块"
+             :command.editor/move-block-down          "向下移动块"
+             :command.editor/new-block                "创建块"
+             :command.editor/new-line                 "块中新建行"
+             :command.editor/zoom-in                  "聚焦"
+             :command.editor/zoom-out                 "退出聚焦"
+             :command.editor/follow-link              "跟随光标下的链接"
+             :command.editor/open-link-in-sidebar     "在侧边栏打开"
+             :command.editor/expand-block-children    "展开"
+             :command.editor/collapse-block-children  "折叠"
+             :command.editor/select-block-up          "选择上方的块"
+             :command.editor/select-block-down        "选择下方的块"
+             :command.editor/select-all-blocks        "选择所有块"
+             :command.ui/toggle-help                  "显示/关闭帮助"
+             :command.git/commit                      "提交消息"
+             :command.go/search                       "全文搜索"
+             :command.go/backward                     "回退"
+             :command.go/forward                      "前进"
+             :command.go/search-in-page               "在当前页面搜索"
+             :command.ui/toggle-document-mode         "切换文档模式"
+             :command.ui/toggle-contents              "打开/关闭目录"
+             :command.ui/toggle-theme                 "在暗色/亮色主题之间切换"
+             :command.ui/toggle-right-sidebar         "启用/关闭右侧栏"
+             :command.ui/toggle-settings              "显示/关闭设置"
+             :command.go/journals                     "跳转到日记"
+             :command.ui/toggle-wide-mode             "切换宽屏模式"
+             :command.ui/toggle-brackets              "切换是否显示括号"
+             :command.search/re-index                 "重新建立搜索索引"
+             :command.editor/bold                     "粗体"
+             :command.editor/italics                  "斜体"
+             :command.editor/insert-link              "Html 链接"
+             :command.editor/highlight                "高亮"
+             :command.editor/undo                     "撤销"
+             :command.editor/redo                     "重做"
+             :command.editor/copy                     "复制"
+             :command.editor/cut                      "剪切"
+             :command.editor/up                       "向上移动光标 / 向上选择"
+             :command.editor/down                     "向下移动光标 / 向下选择"
+             :command.editor/left                     "向左移动光标 / 向左选择"
+             :command.editor/right                    "向右移动光标 / 向右选择"
+             :command.editor/backspace                "向左删除"
+             :command.editor/delete                   "向右删除"
+             :command.editor/cycle-todo               "切换TODO状态"
+             :command.editor/clear-block              "清除块内容"
+             :command.editor/kill-line-before         "删除光标右侧行"
+             :command.editor/kill-line-after          "删除光标左侧行"
+             :command.editor/beginning-of-block       "移动光标到块开始位置"
+             :command.editor/end-of-block             "移动光标到块末尾"
+             :command.editor/forward-word             "光标向后移动一个单词"
+             :command.editor/backward-word            "光标向前移动一个单词"
+             :command.editor/forward-kill-word        "向后删除一个单词"
+             :command.editor/backward-kill-word       "向前删除一个单词"
+             :command.editor/open-edit                "编辑选中块"
+             :command.editor/delete-selection         "删除选中块"
+             :command.editor/toggle-open-blocks       "切换折叠/展开所有块(非编辑状态)"}
 
-     :af      {:shortcut.category/formatting           "Formatering"
-               :command.editor/indent                  "Ingekeepte blok oortjie"
-               :command.editor/outdent                 "Oningekeepte blok"
-               :command.editor/move-block-up           "Skuif Blok Boontoe"
-               :command.editor/move-block-down         "Skuif Blok Ondertoe"
-               :command.editor/new-block               "Skep 'n nuwe blok"
-               :command.editor/new-line                "Nuwe lyn in blok"
-               :command.editor/zoom-in                 "Zoem in"
-               :command.editor/zoom-out                "Zoem uit"
-               :command.editor/follow-link             "Volg die skakel onder die wyser"
-               :command.editor/open-link-in-sidebar    "Maak skakel in kantlys oop"
-               :command.editor/expand-block-children   "Brei uit"
-               :command.editor/collapse-block-children "Vou in"
-               :command.editor/select-block-up         "Kies blok bo"
-               :command.editor/select-block-down       "Kies blok onder"
-               :command.editor/select-all-blocks       "Kies alle blokke"
-               :command.ui/toggle-help                 "Wissel help"
-               :command.git/commit                     "Jou git stoor boodskap"
-               :command.go/search                      "Volteks soek"
-               :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"}
+   :zh-Hant {:command.editor/indent                  "縮進塊標簽"
+             :command.editor/outdent                 "取消縮進塊"
+             :command.editor/move-block-up           "向上移動塊"
+             :command.editor/move-block-down         "向下移動塊"
+             :command.editor/new-block               "創建塊"
+             :command.editor/new-line                "塊中新建行"
+             :command.editor/zoom-in                 "聚焦"
+             :command.editor/zoom-out                "推出聚焦"
+             :command.editor/follow-link             "跟隨光標下的鏈接"
+             :command.editor/open-link-in-sidebar    "在側邊欄打開"
+             :command.editor/expand-block-children   "展開"
+             :command.editor/collapse-block-children "折疊"
+             :command.editor/select-block-up         "選擇上方的塊"
+             :command.editor/select-block-down       "選擇下方的塊"
+             :command.editor/select-all-blocks       "選擇所有塊"
+             :command.ui/toggle-help                 "顯示/關閉幫助"
+             :command.git/commit                     "提交消息"
+             :command.go/search                      "全文搜索"
+             :command.ui/toggle-document-mode        "切換文檔模式"
+             :command.ui/toggle-theme                "“在暗色/亮色主題之間切換”"
+             :command.ui/toggle-right-sidebar        "啟用/關閉右側欄"
+             :command.go/journals                    "跳轉到日記"}
 
-     :es      {:shortcut.category/formatting            "Formato"
-               :shortcut.category/basics                "Básico"
-               :shortcut.category/navigating            "Navegación"
-               :shortcut.category/block-editing         "Edición de bloque general"
-               :shortcut.category/block-command-editing "Comandos edición de bloque"
-               :shortcut.category/block-selection       "Selección de bloques (pulsar Esc para salir)"
-               :shortcut.category/toggle                "Alternar"
-               :shortcut.category/others                "Otros"
-               :command.editor/indent                   "Aumentar sangría"
-               :command.editor/outdent                  "Disminuir sangría"
-               :command.editor/move-block-up            "Mover bloque arriba"
-               :command.editor/move-block-down          "Mover bloque abajo"
-               :command.editor/new-block                "Crear bloque nuevo"
-               :command.editor/new-line                 "Nueva linea en bloque"
-               :command.editor/zoom-in                  "Acercar / Adelante"
-               :command.editor/zoom-out                 "Alejar / Atrás"
-               :command.editor/follow-link              "Seguir enlace bajo el cursor"
-               :command.editor/open-link-in-sidebar     "Abrir enlace en barra lateral"
-               :command.editor/expand-block-children    "Expandir"
-               :command.editor/collapse-block-children  "Colapsar"
-               :command.editor/select-block-up          "Seleccionar bloque de arriba"
-               :command.editor/select-block-down        "Seleccionar bloque de abajo"
-               :command.editor/select-all-blocks        "Seleccionar todos los bloques"
-               :command.ui/toggle-help                  "Alternar ayuda"
-               :command.git/commit                      "Confirmar"
-               :command.go/search                       "Buscar en el grafo"
-               :command.go/search-in-page               "Buscar en la página actual"
-               :command.ui/toggle-document-mode         "Alternar modo documento"
-               :command.ui/toggle-contents              "Alternar Contenido en barra lateral"
-               :command.ui/toggle-theme                 "Alternar entre tema claro/oscuro"
-               :command.ui/toggle-right-sidebar         "Alternar barra lateral"
-               :command.ui/toggle-settings              "Alternar Opciones"
-               :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.editor/bold                     "Negrita"
-               :command.editor/italics                  "Cursiva"
-               :command.editor/insert-link              "Enlace html"
-               :command.editor/highlight                "Resaltado"
-               :command.editor/undo                     "Deshacer"
-               :command.editor/redo                     "Rehacer"
-               :command.editor/copy                     "Copiar"
-               :command.editor/cut                      "Pegar"
-               :command.editor/up                       "Mover cursor arriba / Seleccionar arriba"
-               :command.editor/down                     "Mover cursor abajo / Seleccionar abajo"
-               :command.editor/left                     "Mover cursor a la izquierda / Abrir bloque seleccionado al inicio"
-               :command.editor/right                    "Mover cursor a la derecha / Abrir bloque seleccionado al final"
-               :command.editor/backspace                "Retroceso / Eliminar hacia atrás"
-               :command.editor/delete                   "Suprimir / Eliminar hacia delante"
-               :command.editor/cycle-todo               "Rotar estado TODO del elemento"
-               :command.editor/clear-block              "Borrar contenido del bloque"
-               :command.editor/kill-line-before         "Borrar linea antes del cursor"
-               :command.editor/kill-line-after          "Borrar linea despues del cursor"
-               :command.editor/beginning-of-block       "Mover cursor al inicio del bloque"
-               :command.editor/end-of-block             "Mover cursor al final del bloque"
-               :command.editor/forward-word             "Mover cursor una palabra adelante"
-               :command.editor/backward-word            "Mover cursor una palabra atrás"
-               :command.editor/forward-kill-word        "Borrar palabra posterior"
-               :command.editor/backward-kill-word       "Borrar palabra anterior"
-               :command.editor/open-edit                "Editar bloque seleccionado"
-               :command.editor/delete-selection         "Eliminar bloques seleccionados"
-               :command.editor/toggle-open-blocks       "Alternar bloques abieros, (colapsar o expandir todos)"}
+   :de      {:shortcut.category/formatting           "Formatierung"
+             :command.editor/indent                  "Block einrücken"
+             :command.editor/outdent                 "Block ausrücken"
+             :command.editor/move-block-up           "Block nach oben verschieben"
+             :command.editor/move-block-down         "Block nach unten verschieben"
+             :command.editor/new-block               "Neuen Block erstellen"
+             :command.editor/new-line                "Neue Zeile innerhalb des Blocks erstellen"
+             :command.editor/zoom-in                 "Heranzoomen"
+             :command.editor/zoom-out                "Herauszoomen"
+             :command.editor/follow-link             "Link unter dem Cursor folgen"
+             :command.editor/open-link-in-sidebar    "Link in Seitenleiste öffnen"
+             :command.editor/expand-block-children   "Erweitern"
+             :command.editor/collapse-block-children "Zusammenklappen"
+             :command.editor/select-block-up         "Block oberhalb auswählen"
+             :command.ui/toggle-help                 "Hilfe aktivieren"
+             :command.go/search                      "Volltextsuche"
+             :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.go/journals                    "Zu Journalen springen"
+             :command.git/commit                     "Git Commit-Nachricht"
+             :command.editor/select-block-down       "Block unterhalb auswählen"
+             :command.editor/select-all-blocks       "Alle Blöcke auswählen"}
 
-     :ru      {:shortcut.category/formatting            "Форматирование"
-               :shortcut.category/basics                "Базовые"
-               :shortcut.category/navigating            "Навигация"
-               :shortcut.category/block-editing         "Общее редактирование блока"
-               :shortcut.category/block-command-editing "Команды редактирования блока"
-               :shortcut.category/block-selection       "Выделение блоков (нажмите Esc для снятия выделения)"
-               :shortcut.category/toggle                "Переключатели"
-               :shortcut.category/others                "Разное"
-               :command.editor/indent                   "Увеличить отступ"
-               :command.editor/outdent                  "Уменьшить отступ"
-               :command.editor/move-block-up            "Передвинуть блок выше"
-               :command.editor/move-block-down          "Передвинуть блок ниже"
-               :command.editor/new-block                "Создать новый блок"
-               :command.editor/new-line                 "Новая строка в блоке"
-               :command.editor/zoom-in                  "Увеличить / Вперед"
-               :command.editor/zoom-out                 "Уменьшить / Назад"
-               :command.editor/follow-link              "Перейти по ссылке под курсором"
-               :command.editor/open-link-in-sidebar     "Открыть ссылку в боковой панели"
-               :command.editor/expand-block-children    "Раскрыть"
-               :command.editor/collapse-block-children  "Свернуть"
-               :command.editor/select-block-up          "Выбрать блок выше"
-               :command.editor/select-block-down        "Выбрать блок ниже"
-               :command.editor/select-all-blocks        "Выбрать все блоки"
-               :command.ui/toggle-help                  "Переключить помощь"
-               :command.git/commit                      "Подтвердить"
-               :command.go/search                       "Искать на графе"
-               :command.go/search-in-page               "Искать на текущей странице"
-               :command.ui/toggle-document-mode         "Переключить режи документа"
-               :command.ui/toggle-contents              "Переключить контент на боковой панели"
-               :command.ui/toggle-theme                 "Переключение между светлой / темной темой"
-               :command.ui/toggle-right-sidebar         "Переключить боковую панель"
-               :command.ui/toggle-settings              "Переключить параметры"
-               :command.go/journals                     "Перейти в Дневники"
-               :command.ui/toggle-wide-mode             "Переключить широкоформатный режим"
-               :command.ui/toggle-brackets              "Переключить скобки"
-               :command.search/re-index                 "Восстановить индекс поиска"
-               :command.editor/bold                     "Жирный"
-               :command.editor/italics                  "Курсив"
-               :command.editor/insert-link              "HTML ссылка"
-               :command.editor/highlight                "Выделение"
-               :command.editor/undo                     "Отменить"
-               :command.editor/redo                     "Вернуть"
-               :command.editor/copy                     "Копировать"
-               :command.editor/cut                      "Вырезать"
-               :command.editor/up                       "Переместить курсор вверх / Выбрать вверх"
-               :command.editor/down                     "Переместить курсор вниз / Выбрать вниз"
-               :command.editor/left                     "Переместить курсор влево / Открыть выбранный блок в начале"
-               :command.editor/right                    "Переместить курсор вправо / Открыть выбранный блок в конце"
-               :command.editor/backspace                "Удалить перед курсором"
-               :command.editor/delete                   "Удалить после курсора"
-               :command.editor/cycle-todo               "Переключить состояние элемента TODO"
-               :command.editor/clear-block              "Удалить содержимое блока"
-               :command.editor/kill-line-before         "Удалить строку до курсора"
-               :command.editor/kill-line-after          "Удалить строку после курсора"
-               :command.editor/beginning-of-block       "Переместите курсор в начало блока"
-               :command.editor/end-of-block             "Переместите курсор в конец блока"
-               :command.editor/forward-word             "Переместить курсор на одно слово вперед"
-               :command.editor/backward-word            "Переместить курсор на одно слово назад"
-               :command.editor/forward-kill-word        "Удалить следующее слово"
-               :command.editor/backward-kill-word       "Удалить предыдущее слово"
-               :command.editor/open-edit                "Редактировать выбранный блок"
-               :command.editor/delete-selection         "Удалить выбранные блоки"
-               :command.editor/toggle-open-blocks       "Переключить открытые блоки (свернуть или развернуть все)"}
+   :fr      {:shortcut.category/formatting           "Formats"
+             :command.editor/indent                  "Indenter un Bloc vers la droite"
+             :command.editor/outdent                 "Indenter un Bloc vers la gauche"
+             :command.editor/move-block-up           "Déplacer un bloc au dessus"
+             :command.editor/move-block-down         "Déplacer un bloc en dessous"
+             :command.editor/new-block               "Créer un nouveau bloc"
+             :command.editor/new-line                "Aller à la ligne dans un bloc"
+             :command.editor/zoom-in                 "Zoomer"
+             :command.editor/zoom-out                "Dézoomer"
+             :command.editor/follow-link             "Suivre le lien sous le curseur"
+             :command.editor/open-link-in-sidebar    "Ouvrir le lien dans la barre latérale"
+             :command.editor/expand-block-children   "Etendre"
+             :command.editor/collapse-block-children "Réduire"
+             :command.editor/select-block-up         "Sélectionner le bloc au dessus"
+             :command.editor/select-block-down       "Sélectionner le bloc en dessous"
+             :command.editor/select-all-blocks       "Sélectionner tous les blocs"
+             :command.ui/toggle-help                 "Afficher l'aide"
+             :command.git/commit                     "Message de commit Git"
+             :command.go/search                      "Recherche globale dans le texte"
+             :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.go/journals                    "Aller au Journal"}
 
-     :nb-NO   {:shortcut.category/formatting            "Formatering"
-               :shortcut.category/basics                "Basis"
-               :shortcut.category/navigating            "Navigasjon"
-               :shortcut.category/block-editing         "Blokkredigering generelt"
-               :shortcut.category/block-command-editing "Blokkredigering kommandoer"
-               :shortcut.category/block-selection       "Blokkseleksjon (trykk ESC for å avslutte)"
-               :shortcut.category/toggle                "Veksling"
-               :shortcut.category/others                "Annet"
-               :command.editor/indent                   "Innrykk inn"
-               :command.editor/outdent                  "Innrykk ut"
-               :command.editor/move-block-up            "Flytt blokk opp"
-               :command.editor/move-block-down          "Flytt blokk ned"
-               :command.editor/new-block                "Opprett ny blokk"
-               :command.editor/new-line                 "Ny linje i nåværende blokk"
-               :command.editor/zoom-in                  "Zoom inn / Fremover"
-               :command.editor/zoom-out                 "Zoom ut / Tilbake"
-               :command.editor/follow-link              "Følg lenke under markøren"
-               :command.editor/open-link-in-sidebar     "Åpne lenke i sidestolpe"
-               :command.editor/expand-block-children    "Utvid"
-               :command.editor/collapse-block-children  "Slå sammen"
-               :command.editor/select-block-up          "Velg blokk over"
-               :command.editor/select-block-down        "Velg blokk under"
-               :command.editor/select-all-blocks        "Velg alle blokker"
-               :command.ui/toggle-help                  "Vis hjelp"
-               :command.git/commit                      "Git commit beskjed"
-               :command.go/search                       "Fulltekst søk"
-               :command.go/search-in-page               "Søk på nåværende side"
-               :command.ui/toggle-document-mode         "Aktiver dokumentmodus"
-               :command.ui/toggle-contents              "Åpne favoritter i sidestolpen"
-               :command.ui/toggle-theme                 "Veksle mellom lyst og mørkt tema"
-               :command.ui/toggle-left-sidebar          "Aktiver venstre sidestolpe"
-               :command.ui/toggle-right-sidebar         "Aktiver høyre sidestolpe"
-               :command.ui/toggle-settings              "Åpne innstillinger"
-               :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.editor/bold                     "Fet"
-               :command.editor/italics                  "Kursiv"
-               :command.editor/insert-link              "HTML lenke"
-               :command.editor/highlight                "Markering"
-               :command.editor/undo                     "Angre"
-               :command.editor/redo                     "Gjør om"
-               :command.editor/copy                     "Kopier"
-               :command.editor/cut                      "Klipp ut"
-               :command.editor/up                       "Flytt markøren opp / Velg opp"
-               :command.editor/down                     "Flytt markøren ned / Velg ned"
-               :command.editor/left                     "Flytt markøren til venstre / Åpne valgt blokk på begynnelsen"
-               :command.editor/right                    "Flytt markøren til høyre / Åpne valgt blokk på slutten"
-               :command.editor/backspace                "Backspace / Slett bakover"
-               :command.editor/delete                   "Delete / Slett forover"
-               :command.editor/cycle-todo               "Veksle TODO status for valg linje"
-               :command.editor/clear-block              "Slett alt innhold i blokken"
-               :command.editor/kill-line-before         "Slett linje foran markøren"
-               :command.editor/kill-line-after          "Slett linsje etter markøren"
-               :command.editor/beginning-of-block       "Flytt markøren til begynnelsen av blokken"
-               :command.editor/end-of-block             "Flytt markøren til slutten av blokken"
-               :command.editor/forward-word             "Flytt markøren frem ett ord"
-               :command.editor/backward-word            "Flytt markøren bakover ett ord"
-               :command.editor/forward-kill-word        "Slett ett ord forover"
-               :command.editor/backward-kill-word       "Slett ett ord bakover"
-               :command.editor/open-edit                "Rediger valgt blokk"
-               :command.editor/delete-selection         "Slett valgte blokker"
-               :command.editor/toggle-open-blocks       "Veksle åpne blokker (slå sammen eller utvid alle blokker)"}
+   :af      {:shortcut.category/formatting           "Formatering"
+             :command.editor/indent                  "Ingekeepte blok oortjie"
+             :command.editor/outdent                 "Oningekeepte blok"
+             :command.editor/move-block-up           "Skuif Blok Boontoe"
+             :command.editor/move-block-down         "Skuif Blok Ondertoe"
+             :command.editor/new-block               "Skep 'n nuwe blok"
+             :command.editor/new-line                "Nuwe lyn in blok"
+             :command.editor/zoom-in                 "Zoem in"
+             :command.editor/zoom-out                "Zoem uit"
+             :command.editor/follow-link             "Volg die skakel onder die wyser"
+             :command.editor/open-link-in-sidebar    "Maak skakel in kantlys oop"
+             :command.editor/expand-block-children   "Brei uit"
+             :command.editor/collapse-block-children "Vou in"
+             :command.editor/select-block-up         "Kies blok bo"
+             :command.editor/select-block-down       "Kies blok onder"
+             :command.editor/select-all-blocks       "Kies alle blokke"
+             :command.ui/toggle-help                 "Wissel help"
+             :command.git/commit                     "Jou git stoor boodskap"
+             :command.go/search                      "Volteks soek"
+             :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"}
 
-     :pt-PT   {:shortcut.category/formatting            "Formatação"
-               :shortcut.category/basics                "Básico"
-               :shortcut.category/navigating            "Navegação"
-               :shortcut.category/block-editing         "Edição geral de blocos"
-               :shortcut.category/block-command-editing "Comandos de edição de blocos"
-               :shortcut.category/block-selection       "Seleção de blocos (premir Esc para sair)"
-               :shortcut.category/toggle                "Alternar"
-               :shortcut.category/others                "Outros"
-               :command.editor/indent                   "Aumentar avanço de parágrafo"
-               :command.editor/outdent                  "Diminuir avanço de parágrafo"
-               :command.editor/move-block-up            "Mover bloco para cima"
-               :command.editor/move-block-down          "Mover bloco para baixo"
-               :command.editor/new-block                "Criar novo bloco"
-               :command.editor/new-line                 "Nova linha no bloco actual"
-               :command.editor/zoom-in                  "Aproximar / Para a frente"
-               :command.editor/zoom-out                 "Afastar / Para trás"
-               :command.editor/follow-link              "Seguir ligação sob o cursor"
-               :command.editor/open-link-in-sidebar     "Abrir ligação na barra lateral"
-               :command.editor/expand-block-children    "Expandir"
-               :command.editor/collapse-block-children  "Colapsar"
-               :command.editor/select-block-up          "Selecionar bloco acima"
-               :command.editor/select-block-down        "Selecionar bloco abaixo"
-               :command.editor/select-all-blocks        "Selecionar todos os blocos"
-               :command.ui/toggle-help                  "Alternar ajuda"
-               :command.git/commit                      "Confirmar"
-               :command.go/search                       "Pesquisar no grafo"
-               :command.go/search-in-page               "Pesquisar na página atual"
-               :command.ui/toggle-document-mode         "Alternar modo de documento"
-               :command.ui/toggle-contents              "Alternar Conteúdo na barra lateral"
-               :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.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.editor/bold                     "Negrito"
-               :command.editor/italics                  "Itálico"
-               :command.editor/insert-link              "Inserir ligação html"
-               :command.editor/highlight                "Realçado"
-               :command.editor/undo                     "Desfazer"
-               :command.editor/redo                     "Refazer"
-               :command.editor/copy                     "Copiar"
-               :command.editor/cut                      "Cortar"
-               :command.editor/up                       "Mover cursor para cima / Selecionar para cima"
-               :command.editor/down                     "Mover cursor para baixo / Selecionar para baixo"
-               :command.editor/left                     "Mover cursor para a esquerda / Abrir bloco selecionado no início"
-               :command.editor/right                    "Mover cursor para a direita / Abrir bloco selecionado no final"
-               :command.editor/backspace                "Retroceder / Eliminar para atrás"
-               :command.editor/delete                   "Apagar / Eliminar para a frente"
-               :command.editor/cycle-todo               "Alternar estado TODO do elemento"
-               :command.editor/clear-block              "Apagar conteúdo do bloco"
-               :command.editor/kill-line-before         "Apagar linha antes do cursor"
-               :command.editor/kill-line-after          "Apagar linha depois do cursor"
-               :command.editor/beginning-of-block       "Mover o cursor para o início do bloco"
-               :command.editor/end-of-block             "Mover o cursor para o fim do bloco"
-               :command.editor/forward-word             "Mover o cursor para a próxima palavra"
-               :command.editor/backward-word            "Mover o cursor para a palavra anterior"
-               :command.editor/forward-kill-word        "Apagar a próxima palavra"
-               :command.editor/backward-kill-word       "Apagar a palavra anterior"
-               :command.editor/open-edit                "Editar bloco selecionado"
-               :command.editor/delete-selection         "Eliminar blocos selecionados"
-               :command.editor/toggle-open-blocks       "Alternar blocos abertos (colapsar ou expandir todos)"}
+   :es      {:shortcut.category/formatting            "Formato"
+             :shortcut.category/basics                "Básico"
+             :shortcut.category/navigating            "Navegación"
+             :shortcut.category/block-editing         "Edición de bloque general"
+             :shortcut.category/block-command-editing "Comandos edición de bloque"
+             :shortcut.category/block-selection       "Selección de bloques (pulsar Esc para salir)"
+             :shortcut.category/toggle                "Alternar"
+             :shortcut.category/others                "Otros"
+             :command.editor/indent                   "Aumentar sangría"
+             :command.editor/outdent                  "Disminuir sangría"
+             :command.editor/move-block-up            "Mover bloque arriba"
+             :command.editor/move-block-down          "Mover bloque abajo"
+             :command.editor/new-block                "Crear bloque nuevo"
+             :command.editor/new-line                 "Nueva linea en bloque"
+             :command.editor/zoom-in                  "Acercar / Adelante"
+             :command.editor/zoom-out                 "Alejar / Atrás"
+             :command.editor/follow-link              "Seguir enlace bajo el cursor"
+             :command.editor/open-link-in-sidebar     "Abrir enlace en barra lateral"
+             :command.editor/expand-block-children    "Expandir"
+             :command.editor/collapse-block-children  "Colapsar"
+             :command.editor/select-block-up          "Seleccionar bloque de arriba"
+             :command.editor/select-block-down        "Seleccionar bloque de abajo"
+             :command.editor/select-all-blocks        "Seleccionar todos los bloques"
+             :command.ui/toggle-help                  "Alternar ayuda"
+             :command.git/commit                      "Confirmar"
+             :command.go/search                       "Buscar en el grafo"
+             :command.go/search-in-page               "Buscar en la página actual"
+             :command.ui/toggle-document-mode         "Alternar modo documento"
+             :command.ui/toggle-contents              "Alternar Contenido en barra lateral"
+             :command.ui/toggle-theme                 "Alternar entre tema claro/oscuro"
+             :command.ui/toggle-right-sidebar         "Alternar barra lateral"
+             :command.ui/toggle-settings              "Alternar Opciones"
+             :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.editor/bold                     "Negrita"
+             :command.editor/italics                  "Cursiva"
+             :command.editor/insert-link              "Enlace html"
+             :command.editor/highlight                "Resaltado"
+             :command.editor/undo                     "Deshacer"
+             :command.editor/redo                     "Rehacer"
+             :command.editor/copy                     "Copiar"
+             :command.editor/cut                      "Pegar"
+             :command.editor/up                       "Mover cursor arriba / Seleccionar arriba"
+             :command.editor/down                     "Mover cursor abajo / Seleccionar abajo"
+             :command.editor/left                     "Mover cursor a la izquierda / Abrir bloque seleccionado al inicio"
+             :command.editor/right                    "Mover cursor a la derecha / Abrir bloque seleccionado al final"
+             :command.editor/backspace                "Retroceso / Eliminar hacia atrás"
+             :command.editor/delete                   "Suprimir / Eliminar hacia delante"
+             :command.editor/cycle-todo               "Rotar estado TODO del elemento"
+             :command.editor/clear-block              "Borrar contenido del bloque"
+             :command.editor/kill-line-before         "Borrar linea antes del cursor"
+             :command.editor/kill-line-after          "Borrar linea despues del cursor"
+             :command.editor/beginning-of-block       "Mover cursor al inicio del bloque"
+             :command.editor/end-of-block             "Mover cursor al final del bloque"
+             :command.editor/forward-word             "Mover cursor una palabra adelante"
+             :command.editor/backward-word            "Mover cursor una palabra atrás"
+             :command.editor/forward-kill-word        "Borrar palabra posterior"
+             :command.editor/backward-kill-word       "Borrar palabra anterior"
+             :command.editor/open-edit                "Editar bloque seleccionado"
+             :command.editor/delete-selection         "Eliminar bloques seleccionados"
+             :command.editor/toggle-open-blocks       "Alternar bloques abieros, (colapsar o expandir todos)"}
 
-     :pt-BR   {:shortcut.category/formatting            "Formatação"
-               :shortcut.category/basics                "Básico"
-               :shortcut.category/navigating            "Navegação"
-               :shortcut.category/block-editing         "Edição geral de blocos"
-               :shortcut.category/block-command-editing "Comandos de edição de blocos"
-               :shortcut.category/block-selection       "Seleção de blocos (aperte Esc para sair)"
-               :shortcut.category/toggle                "Alternar"
-               :shortcut.category/others                "Outros"
-               :command.editor/indent                   "Aumentar avanço de parágrafo"
-               :command.editor/outdent                  "Diminuir avanço de parágrafo"
-               :command.editor/move-block-up            "Mover bloco para cima"
-               :command.editor/move-block-down          "Mover bloco para baixo"
-               :command.editor/new-block                "Criar novo bloco"
-               :command.editor/new-line                 "Nova linha no bloco actual"
-               :command.editor/zoom-in                  "Aproximar / Para a frente"
-               :command.editor/zoom-out                 "Afastar / Para trás"
-               :command.editor/follow-link              "Seguir ligação sob o cursor"
-               :command.editor/open-link-in-sidebar     "Abrir ligação na barra lateral"
-               :command.editor/expand-block-children    "Expandir"
-               :command.editor/collapse-block-children  "Recolher"
-               :command.editor/select-block-up          "Selecionar bloco acima"
-               :command.editor/select-block-down        "Selecionar bloco abaixo"
-               :command.editor/select-all-blocks        "Selecionar todos os blocos"
-               :command.ui/toggle-help                  "Alternar ajuda"
-               :command.git/commit                      "Confirmar"
-               :command.go/search                       "Pesquisar no grafo"
-               :command.go/search-in-page               "Pesquisar na página atual"
-               :command.ui/toggle-document-mode         "Alternar modo de documento"
-               :command.ui/toggle-contents              "Alternar Conteúdo na barra lateral"
-               :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.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.editor/bold                     "Negrito"
-               :command.editor/italics                  "Itálico"
-               :command.editor/insert-link              "Inserir vínculo"
-               :command.editor/highlight                "Realçado"
-               :command.editor/undo                     "Desfazer"
-               :command.editor/redo                     "Refazer"
-               :command.editor/copy                     "Copiar"
-               :command.editor/cut                      "Cortar"
-               :command.editor/up                       "Mover cursor para cima / Selecionar para cima"
-               :command.editor/down                     "Mover cursor para baixo / Selecionar para baixo"
-               :command.editor/left                     "Mover cursor para a esquerda / Abrir bloco selecionado no início"
-               :command.editor/right                    "Mover cursor para a direita / Abrir bloco selecionado no final"
-               :command.editor/backspace                "Retroceder / Eliminar para trás"
-               :command.editor/delete                   "Deletar / Eliminar para frente"
-               :command.editor/cycle-todo               "Alternar estado A FAZER do elemento"
-               :command.editor/clear-block              "Apagar conteúdo do bloco"
-               :command.editor/kill-line-before         "Apagar linha antes do cursor"
-               :command.editor/kill-line-after          "Apagar linha depois do cursor"
-               :command.editor/beginning-of-block       "Mover o cursor para o início do bloco"
-               :command.editor/end-of-block             "Mover o cursor para o fim do bloco"
-               :command.editor/forward-word             "Mover o cursor para a próxima palavra"
-               :command.editor/backward-word            "Mover o cursor para a palavra anterior"
-               :command.editor/forward-kill-word        "Apagar a próxima palavra"
-               :command.editor/backward-kill-word       "Apagar a palavra anterior"
-               :command.editor/open-edit                "Editar bloco selecionado"
-               :command.editor/delete-selection         "Eliminar blocos selecionados"
-               :command.editor/toggle-open-blocks       "Alternar blocos abertos (recolher ou expandir todos)"
-               :command.auto-complete/complete          "Auto-completar: Escolha o item selecionado"
-               :command.auto-complete/next              "Auto-completar: Selecione o próximo item"
-               :command.auto-complete/prev              "Auto-completar: Selecione o item anterior"
-               :command.auto-complete/shift-complete    "Auto-completar: Abra o item selecionado na barra lateral"
-               :command.cards/forgotten                 "Cartas: Esquecido"
-               :command.cards/next-card                 "Cartas: Próxima carta"
-               :command.cards/recall                    "Cartas: Demorar um pouco para lembrar"
-               :command.cards/remembered                "Cartas: Relembrado"
-               :command.cards/toggle-answers            "Cartas: mostrar/esconder as respostas/clozes"
-               :command.command/toggle-favorite         "Adicionar para/remover dos favoritos"
-               :command.command-palette/toggle          "Editar atalhos"
-               :command.date-picker/complete            "Pegar data: Escolha o dia selecionado"
-               :command.date-picker/next-day            "Pegar data: Selecione o próximo dia"
-               :command.date-picker/next-week           "Pegar data: Selecione a próxima semana"
-               :command.date-picker/prev-day            "Pegar data: Selecione o dia anterior"
-               :command.date-picker/prev-week           "Pegar data: Selecione a semana anterior"
-               :command.editor/escape-editing           "Sair da edição"
-               :command.editor/insert-youtube-timestamp "Inserir timestamp do youtube"
-               :command.editor/paste-text-in-one-block-at-point "Colar texto em um bloco no ponto"
-               :command.editor/replace-block-reference-at-point "Substitua a referência do bloco pelo seu conteúdo no ponto"
-               :command.editor/strike-through           "Tachar"
-               :command.go/all-pages                    "Ir para todas as páginas"
-               :command.go/backward                     "Voltar"
-               :command.go/flashcards                   "Trocar flashcards"
-               :command.go/forward                      "Avançar"
-               :command.go/graph-view                   "Ir para o gráfico"
-               :command.go/home                         "Volar para o inicio"
-               :command.go/keyboard-shortcuts           "Ir para os atalhos do teclado"
-               :command.go/next-journal                 "Ir ao proximo jornal"
-               :command.go/prev-journal                 "Ir ao jornal anterior"
-               :command.go/tomorrow                     "Ir para amanhã"
-               :command.graph/add                       "Adicionar um gráfico"
-               :command.graph/open                      "Selecionar gráfico para abrir"
-               :command.graph/remove                    "Remover um gráfico"
-               :command.pdf/next-page                   "Próxima página do atual pdf doc"
-               :command.pdf/previous-page               "Página anterior do atual pdf doc"
-               :command.sidebar/clear                   "Limpar tudo da barra lateral direita"
-               :command.sidebar/open-today-page         "Abrir a página de hoje na barra lateral direita"
-               :command.ui/select-theme-color           "Selecionar as cores do tema disponível"
-               :command.ui/toggle-cards                 "Trocar cartas"
-               :command.ui/toggle-left-sidebar          "Trocar barra lateral esquerda"}}))
+   :ru      {:shortcut.category/formatting            "Форматирование"
+             :shortcut.category/basics                "Базовые"
+             :shortcut.category/navigating            "Навигация"
+             :shortcut.category/block-editing         "Общее редактирование блока"
+             :shortcut.category/block-command-editing "Команды редактирования блока"
+             :shortcut.category/block-selection       "Выделение блоков (нажмите Esc для снятия выделения)"
+             :shortcut.category/toggle                "Переключатели"
+             :shortcut.category/others                "Разное"
+             :command.editor/indent                   "Увеличить отступ"
+             :command.editor/outdent                  "Уменьшить отступ"
+             :command.editor/move-block-up            "Передвинуть блок выше"
+             :command.editor/move-block-down          "Передвинуть блок ниже"
+             :command.editor/new-block                "Создать новый блок"
+             :command.editor/new-line                 "Новая строка в блоке"
+             :command.editor/zoom-in                  "Увеличить / Вперед"
+             :command.editor/zoom-out                 "Уменьшить / Назад"
+             :command.editor/follow-link              "Перейти по ссылке под курсором"
+             :command.editor/open-link-in-sidebar     "Открыть ссылку в боковой панели"
+             :command.editor/expand-block-children    "Раскрыть"
+             :command.editor/collapse-block-children  "Свернуть"
+             :command.editor/select-block-up          "Выбрать блок выше"
+             :command.editor/select-block-down        "Выбрать блок ниже"
+             :command.editor/select-all-blocks        "Выбрать все блоки"
+             :command.ui/toggle-help                  "Переключить помощь"
+             :command.git/commit                      "Подтвердить"
+             :command.go/search                       "Искать на графе"
+             :command.go/search-in-page               "Искать на текущей странице"
+             :command.ui/toggle-document-mode         "Переключить режи документа"
+             :command.ui/toggle-contents              "Переключить контент на боковой панели"
+             :command.ui/toggle-theme                 "Переключение между светлой / темной темой"
+             :command.ui/toggle-right-sidebar         "Переключить боковую панель"
+             :command.ui/toggle-settings              "Переключить параметры"
+             :command.go/journals                     "Перейти в Дневники"
+             :command.ui/toggle-wide-mode             "Переключить широкоформатный режим"
+             :command.ui/toggle-brackets              "Переключить скобки"
+             :command.search/re-index                 "Восстановить индекс поиска"
+             :command.editor/bold                     "Жирный"
+             :command.editor/italics                  "Курсив"
+             :command.editor/insert-link              "HTML ссылка"
+             :command.editor/highlight                "Выделение"
+             :command.editor/undo                     "Отменить"
+             :command.editor/redo                     "Вернуть"
+             :command.editor/copy                     "Копировать"
+             :command.editor/cut                      "Вырезать"
+             :command.editor/up                       "Переместить курсор вверх / Выбрать вверх"
+             :command.editor/down                     "Переместить курсор вниз / Выбрать вниз"
+             :command.editor/left                     "Переместить курсор влево / Открыть выбранный блок в начале"
+             :command.editor/right                    "Переместить курсор вправо / Открыть выбранный блок в конце"
+             :command.editor/backspace                "Удалить перед курсором"
+             :command.editor/delete                   "Удалить после курсора"
+             :command.editor/cycle-todo               "Переключить состояние элемента TODO"
+             :command.editor/clear-block              "Удалить содержимое блока"
+             :command.editor/kill-line-before         "Удалить строку до курсора"
+             :command.editor/kill-line-after          "Удалить строку после курсора"
+             :command.editor/beginning-of-block       "Переместите курсор в начало блока"
+             :command.editor/end-of-block             "Переместите курсор в конец блока"
+             :command.editor/forward-word             "Переместить курсор на одно слово вперед"
+             :command.editor/backward-word            "Переместить курсор на одно слово назад"
+             :command.editor/forward-kill-word        "Удалить следующее слово"
+             :command.editor/backward-kill-word       "Удалить предыдущее слово"
+             :command.editor/open-edit                "Редактировать выбранный блок"
+             :command.editor/delete-selection         "Удалить выбранные блоки"
+             :command.editor/toggle-open-blocks       "Переключить открытые блоки (свернуть или развернуть все)"}
+
+   :nb-NO   {:shortcut.category/formatting            "Formatering"
+             :shortcut.category/basics                "Basis"
+             :shortcut.category/navigating            "Navigasjon"
+             :shortcut.category/block-editing         "Blokkredigering generelt"
+             :shortcut.category/block-command-editing "Blokkredigering kommandoer"
+             :shortcut.category/block-selection       "Blokkseleksjon (trykk ESC for å avslutte)"
+             :shortcut.category/toggle                "Veksling"
+             :shortcut.category/others                "Annet"
+             :command.editor/indent                   "Innrykk inn"
+             :command.editor/outdent                  "Innrykk ut"
+             :command.editor/move-block-up            "Flytt blokk opp"
+             :command.editor/move-block-down          "Flytt blokk ned"
+             :command.editor/new-block                "Opprett ny blokk"
+             :command.editor/new-line                 "Ny linje i nåværende blokk"
+             :command.editor/zoom-in                  "Zoom inn / Fremover"
+             :command.editor/zoom-out                 "Zoom ut / Tilbake"
+             :command.editor/follow-link              "Følg lenke under markøren"
+             :command.editor/open-link-in-sidebar     "Åpne lenke i sidestolpe"
+             :command.editor/expand-block-children    "Utvid"
+             :command.editor/collapse-block-children  "Slå sammen"
+             :command.editor/select-block-up          "Velg blokk over"
+             :command.editor/select-block-down        "Velg blokk under"
+             :command.editor/select-all-blocks        "Velg alle blokker"
+             :command.ui/toggle-help                  "Vis hjelp"
+             :command.git/commit                      "Git commit beskjed"
+             :command.go/search                       "Fulltekst søk"
+             :command.go/search-in-page               "Søk på nåværende side"
+             :command.ui/toggle-document-mode         "Aktiver dokumentmodus"
+             :command.ui/toggle-contents              "Åpne favoritter i sidestolpen"
+             :command.ui/toggle-theme                 "Veksle mellom lyst og mørkt tema"
+             :command.ui/toggle-left-sidebar          "Aktiver venstre sidestolpe"
+             :command.ui/toggle-right-sidebar         "Aktiver høyre sidestolpe"
+             :command.ui/toggle-settings              "Åpne innstillinger"
+             :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.editor/bold                     "Fet"
+             :command.editor/italics                  "Kursiv"
+             :command.editor/insert-link              "HTML lenke"
+             :command.editor/highlight                "Markering"
+             :command.editor/undo                     "Angre"
+             :command.editor/redo                     "Gjør om"
+             :command.editor/copy                     "Kopier"
+             :command.editor/cut                      "Klipp ut"
+             :command.editor/up                       "Flytt markøren opp / Velg opp"
+             :command.editor/down                     "Flytt markøren ned / Velg ned"
+             :command.editor/left                     "Flytt markøren til venstre / Åpne valgt blokk på begynnelsen"
+             :command.editor/right                    "Flytt markøren til høyre / Åpne valgt blokk på slutten"
+             :command.editor/backspace                "Backspace / Slett bakover"
+             :command.editor/delete                   "Delete / Slett forover"
+             :command.editor/cycle-todo               "Veksle TODO status for valg linje"
+             :command.editor/clear-block              "Slett alt innhold i blokken"
+             :command.editor/kill-line-before         "Slett linje foran markøren"
+             :command.editor/kill-line-after          "Slett linsje etter markøren"
+             :command.editor/beginning-of-block       "Flytt markøren til begynnelsen av blokken"
+             :command.editor/end-of-block             "Flytt markøren til slutten av blokken"
+             :command.editor/forward-word             "Flytt markøren frem ett ord"
+             :command.editor/backward-word            "Flytt markøren bakover ett ord"
+             :command.editor/forward-kill-word        "Slett ett ord forover"
+             :command.editor/backward-kill-word       "Slett ett ord bakover"
+             :command.editor/open-edit                "Rediger valgt blokk"
+             :command.editor/delete-selection         "Slett valgte blokker"
+             :command.editor/toggle-open-blocks       "Veksle åpne blokker (slå sammen eller utvid alle blokker)"}
+
+   :pt-PT   {:shortcut.category/formatting            "Formatação"
+             :shortcut.category/basics                "Básico"
+             :shortcut.category/navigating            "Navegação"
+             :shortcut.category/block-editing         "Edição geral de blocos"
+             :shortcut.category/block-command-editing "Comandos de edição de blocos"
+             :shortcut.category/block-selection       "Seleção de blocos (premir Esc para sair)"
+             :shortcut.category/toggle                "Alternar"
+             :shortcut.category/others                "Outros"
+             :command.editor/indent                   "Aumentar avanço de parágrafo"
+             :command.editor/outdent                  "Diminuir avanço de parágrafo"
+             :command.editor/move-block-up            "Mover bloco para cima"
+             :command.editor/move-block-down          "Mover bloco para baixo"
+             :command.editor/new-block                "Criar novo bloco"
+             :command.editor/new-line                 "Nova linha no bloco actual"
+             :command.editor/zoom-in                  "Aproximar / Para a frente"
+             :command.editor/zoom-out                 "Afastar / Para trás"
+             :command.editor/follow-link              "Seguir ligação sob o cursor"
+             :command.editor/open-link-in-sidebar     "Abrir ligação na barra lateral"
+             :command.editor/expand-block-children    "Expandir"
+             :command.editor/collapse-block-children  "Colapsar"
+             :command.editor/select-block-up          "Selecionar bloco acima"
+             :command.editor/select-block-down        "Selecionar bloco abaixo"
+             :command.editor/select-all-blocks        "Selecionar todos os blocos"
+             :command.ui/toggle-help                  "Alternar ajuda"
+             :command.git/commit                      "Confirmar"
+             :command.go/search                       "Pesquisar no grafo"
+             :command.go/search-in-page               "Pesquisar na página atual"
+             :command.ui/toggle-document-mode         "Alternar modo de documento"
+             :command.ui/toggle-contents              "Alternar Conteúdo na barra lateral"
+             :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.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.editor/bold                     "Negrito"
+             :command.editor/italics                  "Itálico"
+             :command.editor/insert-link              "Inserir ligação html"
+             :command.editor/highlight                "Realçado"
+             :command.editor/undo                     "Desfazer"
+             :command.editor/redo                     "Refazer"
+             :command.editor/copy                     "Copiar"
+             :command.editor/cut                      "Cortar"
+             :command.editor/up                       "Mover cursor para cima / Selecionar para cima"
+             :command.editor/down                     "Mover cursor para baixo / Selecionar para baixo"
+             :command.editor/left                     "Mover cursor para a esquerda / Abrir bloco selecionado no início"
+             :command.editor/right                    "Mover cursor para a direita / Abrir bloco selecionado no final"
+             :command.editor/backspace                "Retroceder / Eliminar para atrás"
+             :command.editor/delete                   "Apagar / Eliminar para a frente"
+             :command.editor/cycle-todo               "Alternar estado TODO do elemento"
+             :command.editor/clear-block              "Apagar conteúdo do bloco"
+             :command.editor/kill-line-before         "Apagar linha antes do cursor"
+             :command.editor/kill-line-after          "Apagar linha depois do cursor"
+             :command.editor/beginning-of-block       "Mover o cursor para o início do bloco"
+             :command.editor/end-of-block             "Mover o cursor para o fim do bloco"
+             :command.editor/forward-word             "Mover o cursor para a próxima palavra"
+             :command.editor/backward-word            "Mover o cursor para a palavra anterior"
+             :command.editor/forward-kill-word        "Apagar a próxima palavra"
+             :command.editor/backward-kill-word       "Apagar a palavra anterior"
+             :command.editor/open-edit                "Editar bloco selecionado"
+             :command.editor/delete-selection         "Eliminar blocos selecionados"
+             :command.editor/toggle-open-blocks       "Alternar blocos abertos (colapsar ou expandir todos)"}
+
+   :pt-BR   {:shortcut.category/formatting            "Formatação"
+             :shortcut.category/basics                "Básico"
+             :shortcut.category/navigating            "Navegação"
+             :shortcut.category/block-editing         "Edição geral de blocos"
+             :shortcut.category/block-command-editing "Comandos de edição de blocos"
+             :shortcut.category/block-selection       "Seleção de blocos (aperte Esc para sair)"
+             :shortcut.category/toggle                "Alternar"
+             :shortcut.category/others                "Outros"
+             :command.editor/indent                   "Aumentar avanço de parágrafo"
+             :command.editor/outdent                  "Diminuir avanço de parágrafo"
+             :command.editor/move-block-up            "Mover bloco para cima"
+             :command.editor/move-block-down          "Mover bloco para baixo"
+             :command.editor/new-block                "Criar novo bloco"
+             :command.editor/new-line                 "Nova linha no bloco actual"
+             :command.editor/zoom-in                  "Aproximar / Para a frente"
+             :command.editor/zoom-out                 "Afastar / Para trás"
+             :command.editor/follow-link              "Seguir ligação sob o cursor"
+             :command.editor/open-link-in-sidebar     "Abrir ligação na barra lateral"
+             :command.editor/expand-block-children    "Expandir"
+             :command.editor/collapse-block-children  "Recolher"
+             :command.editor/select-block-up          "Selecionar bloco acima"
+             :command.editor/select-block-down        "Selecionar bloco abaixo"
+             :command.editor/select-all-blocks        "Selecionar todos os blocos"
+             :command.ui/toggle-help                  "Alternar ajuda"
+             :command.git/commit                      "Confirmar"
+             :command.go/search                       "Pesquisar no grafo"
+             :command.go/search-in-page               "Pesquisar na página atual"
+             :command.ui/toggle-document-mode         "Alternar modo de documento"
+             :command.ui/toggle-contents              "Alternar Conteúdo na barra lateral"
+             :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.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.editor/bold                     "Negrito"
+             :command.editor/italics                  "Itálico"
+             :command.editor/insert-link              "Inserir vínculo"
+             :command.editor/highlight                "Realçado"
+             :command.editor/undo                     "Desfazer"
+             :command.editor/redo                     "Refazer"
+             :command.editor/copy                     "Copiar"
+             :command.editor/cut                      "Cortar"
+             :command.editor/up                       "Mover cursor para cima / Selecionar para cima"
+             :command.editor/down                     "Mover cursor para baixo / Selecionar para baixo"
+             :command.editor/left                     "Mover cursor para a esquerda / Abrir bloco selecionado no início"
+             :command.editor/right                    "Mover cursor para a direita / Abrir bloco selecionado no final"
+             :command.editor/backspace                "Retroceder / Eliminar para trás"
+             :command.editor/delete                   "Deletar / Eliminar para frente"
+             :command.editor/cycle-todo               "Alternar estado A FAZER do elemento"
+             :command.editor/clear-block              "Apagar conteúdo do bloco"
+             :command.editor/kill-line-before         "Apagar linha antes do cursor"
+             :command.editor/kill-line-after          "Apagar linha depois do cursor"
+             :command.editor/beginning-of-block       "Mover o cursor para o início do bloco"
+             :command.editor/end-of-block             "Mover o cursor para o fim do bloco"
+             :command.editor/forward-word             "Mover o cursor para a próxima palavra"
+             :command.editor/backward-word            "Mover o cursor para a palavra anterior"
+             :command.editor/forward-kill-word        "Apagar a próxima palavra"
+             :command.editor/backward-kill-word       "Apagar a palavra anterior"
+             :command.editor/open-edit                "Editar bloco selecionado"
+             :command.editor/delete-selection         "Eliminar blocos selecionados"
+             :command.editor/toggle-open-blocks       "Alternar blocos abertos (recolher ou expandir todos)"
+             :command.auto-complete/complete          "Auto-completar: Escolha o item selecionado"
+             :command.auto-complete/next              "Auto-completar: Selecione o próximo item"
+             :command.auto-complete/prev              "Auto-completar: Selecione o item anterior"
+             :command.auto-complete/shift-complete    "Auto-completar: Abra o item selecionado na barra lateral"
+             :command.cards/forgotten                 "Cartas: Esquecido"
+             :command.cards/next-card                 "Cartas: Próxima carta"
+             :command.cards/recall                    "Cartas: Demorar um pouco para lembrar"
+             :command.cards/remembered                "Cartas: Relembrado"
+             :command.cards/toggle-answers            "Cartas: mostrar/esconder as respostas/clozes"
+             :command.command/toggle-favorite         "Adicionar para/remover dos favoritos"
+             :command.command-palette/toggle          "Editar atalhos"
+             :command.date-picker/complete            "Pegar data: Escolha o dia selecionado"
+             :command.date-picker/next-day            "Pegar data: Selecione o próximo dia"
+             :command.date-picker/next-week           "Pegar data: Selecione a próxima semana"
+             :command.date-picker/prev-day            "Pegar data: Selecione o dia anterior"
+             :command.date-picker/prev-week           "Pegar data: Selecione a semana anterior"
+             :command.editor/escape-editing           "Sair da edição"
+             :command.editor/insert-youtube-timestamp "Inserir timestamp do youtube"
+             :command.editor/paste-text-in-one-block-at-point "Colar texto em um bloco no ponto"
+             :command.editor/replace-block-reference-at-point "Substitua a referência do bloco pelo seu conteúdo no ponto"
+             :command.editor/strike-through           "Tachar"
+             :command.go/all-pages                    "Ir para todas as páginas"
+             :command.go/backward                     "Voltar"
+             :command.go/flashcards                   "Trocar flashcards"
+             :command.go/forward                      "Avançar"
+             :command.go/graph-view                   "Ir para o gráfico"
+             :command.go/home                         "Volar para o inicio"
+             :command.go/keyboard-shortcuts           "Ir para os atalhos do teclado"
+             :command.go/next-journal                 "Ir ao proximo jornal"
+             :command.go/prev-journal                 "Ir ao jornal anterior"
+             :command.go/tomorrow                     "Ir para amanhã"
+             :command.graph/add                       "Adicionar um gráfico"
+             :command.graph/open                      "Selecionar gráfico para abrir"
+             :command.graph/remove                    "Remover um gráfico"
+             :command.pdf/next-page                   "Próxima página do atual pdf doc"
+             :command.pdf/previous-page               "Página anterior do atual pdf doc"
+             :command.sidebar/clear                   "Limpar tudo da barra lateral direita"
+             :command.sidebar/open-today-page         "Abrir a página de hoje na barra lateral direita"
+             :command.ui/select-theme-color           "Selecionar as cores do tema disponível"
+             :command.ui/toggle-cards                 "Trocar cartas"
+             :command.ui/toggle-left-sidebar          "Trocar barra lateral esquerda"}})

+ 0 - 11
src/main/frontend/modules/shortcut/macro.cljc

@@ -1,11 +0,0 @@
-(ns frontend.modules.shortcut.macro
-  #?(:cljs (:require-macros [frontend.modules.shortcut.macro])))
-
-(defmacro shortcut-dict
-  "All docs for EN are generated from :desc field of shortcut default-config map.
-  For all other languages, need manual translation in dict file. "
-  [desc category & maps]
-  `(medley.core/deep-merge
-    {:en ~category}
-    {:en ~desc}
-    ~@maps))

+ 1 - 1
src/main/frontend/spec.cljs

@@ -15,7 +15,7 @@
   (when config/dev?
     (if (s/explain-data spec value)
      (let [error-message (expound/expound-str spec value)
-           ex (ex-info "Error in validate" {})]
+           ex (ex-info "Error in validate" {:value value})]
        (log/error :exception ex :spec/validate-failed error-message)
        false)
      true)))

+ 31 - 0
src/test/frontend/context/i18n_test.cljs

@@ -0,0 +1,31 @@
+(ns frontend.context.i18n-test
+  (:require [frontend.context.i18n :as i18n]
+            [frontend.state :as state]
+            [cljs.test :refer [deftest is testing use-fixtures]]))
+
+(use-fixtures :once (fn [f]
+                      (f)
+                      (state/set-state! :preferred-language nil)))
+
+(deftest translations
+  (testing "dict/dicts.cljs translations"
+    (state/set-preferred-language! :en)
+    (is (= "About Logseq"
+           (i18n/t :help/about)))
+
+    (state/set-preferred-language! :es)
+    (is (= "Acerca de Logseq"
+           (i18n/t :help/about))))
+
+  (testing "shortcut/dict.cljs translations"
+    (state/set-preferred-language! :en)
+    (is (= "Go to journals"
+           (i18n/t :command.go/journals))
+        "Check config/config")
+    (is (= "Basics"
+           (i18n/t :shortcut.category/basics))
+        "Check config/category")
+
+    (state/set-preferred-language! :es)
+    (is (= "Ir a los diarios"
+           (i18n/t :command.go/journals)))))