+
diff --git a/src/public/translations/cn/translation.json b/src/public/translations/cn/translation.json
index 950a24805..8cdf4e411 100644
--- a/src/public/translations/cn/translation.json
+++ b/src/public/translations/cn/translation.json
@@ -1023,8 +1023,8 @@
"title": "下拉菜单可用的MIME文件类型"
},
"vim_key_bindings": {
- "use_vim_keybindings_in_code_notes": "在代码笔记中使用Vim键绑定(无ex模式)",
- "enable_vim_keybindings": "启用Vim键绑定"
+ "use_vim_keybindings_in_code_notes": "",
+ "enable_vim_keybindings": ""
},
"wrap_lines": {
"wrap_lines_in_code_notes": "代码笔记自动换行",
diff --git a/src/public/translations/en/translation.json b/src/public/translations/en/translation.json
index d92f2fe60..d2579f789 100644
--- a/src/public/translations/en/translation.json
+++ b/src/public/translations/en/translation.json
@@ -1026,8 +1026,8 @@
"title": "Available MIME types in the dropdown"
},
"vim_key_bindings": {
- "use_vim_keybindings_in_code_notes": "Use vim keybindings in code notes (no ex mode)",
- "enable_vim_keybindings": "Enable Vim Keybindings"
+ "use_vim_keybindings_in_code_notes": "Vim keybindings",
+ "enable_vim_keybindings": "Enable Vim keybindings in code notes (no ex mode)"
},
"wrap_lines": {
"wrap_lines_in_code_notes": "Wrap lines in code notes",
@@ -1244,5 +1244,79 @@
"note_is_editable": "Note is editable if it's not too long.",
"note_is_read_only": "Note is read-only, but can be edited with a button click.",
"note_is_always_editable": "Note is always editable, regardless of its length."
- }
+ },
+ "note-map": {
+ "button-link-map": "Link Map",
+ "button-tree-map": "Tree map"
+ },
+ "tree-context-menu": {
+ "open-in-a-new-tab": "Open in a new tab",
+ "open-in-a-new-split": "Open in a new split",
+ "insert-note-after": "Insert note after",
+ "insert-child-note": "Insert child note",
+ "delete": "Delete",
+ "search-in-subtree": "Search in subtree",
+ "edit-branch-prefix": "Edit branch prefix",
+ "advanced": "Advanced",
+ "expand-subtree": "Expand subtree",
+ "collapse-subtree": "Collapse subtree",
+ "sort-by": "Sort by...",
+ "recent-changes-in-subtree": "Recent changes in subtree",
+ "convert-to-attachment": "Convert to attachment",
+ "copy-note-path-to-clipboard": "Copy note path to clipboard",
+ "protect-subtree": "Protect subtree",
+ "unprotect-subtree": "Unprotect subtree",
+ "copy-clone": "Copy / clone",
+ "clone-to": "Clone to...",
+ "cut": "Cut",
+ "move-to": "Move to...",
+ "paste-into": "Paste into",
+ "paste-after": "Paste after",
+ "duplicate-subtree": "Duplicate subtree",
+ "export": "Export",
+ "import-into-note": "Import into note",
+ "apply-bulk-actions": "Apply bulk actions"
+ },
+ "shared_info": {
+ "shared_publicly": "This note is shared publicly on",
+ "shared_locally": "This note is shared locally on",
+ "help_link": "For help visit
wiki."
+ },
+ "note_types": {
+ "text": "Text",
+ "code": "Code",
+ "saved-search": "Saved Search",
+ "relation-map": "Relation Map",
+ "note-map": "Note Map",
+ "render-note": "Render Note",
+ "book": "Book",
+ "mermaid-diagram": "Mermaid Diagram",
+ "canvas": "Canvas",
+ "web-view": "Web View",
+ "mind-map": "Mind Map",
+ "file": "File",
+ "image": "Image",
+ "launcher": "Launcher",
+ "doc": "Doc",
+ "widget": "Widget"
+ },
+ "protect_note": {
+ "toggle-on": "Protect the note",
+ "toggle-off": "Unprotect the note",
+ "toggle-on-hint": "Note is not protected, click to make it protected",
+ "toggle-off-hint": "Note is protected, click to make it unprotected"
+ },
+ "shared_switch": {
+ "shared": "Shared",
+ "toggle-on-title": "Share the note",
+ "toggle-off-title": "Unshare the note",
+ "shared-branch": "This note exists only as a shared note, unsharing would delete it. Do you want to continue and thus delete this note?",
+ "inherited": "Note cannot be unshared here because it is shared through inheritance from an ancestor."
+ },
+ "template_switch": {
+ "template": "Template",
+ "toggle-on-hint": "Make the note a template",
+ "toggle-off-hint": "Remove the note as a template"
+ },
+ "open-help-page": "Open help page"
}
diff --git a/src/public/translations/es/translation.json b/src/public/translations/es/translation.json
index 6f98ddd27..c1176ad22 100644
--- a/src/public/translations/es/translation.json
+++ b/src/public/translations/es/translation.json
@@ -645,6 +645,9 @@
"hide_floating_buttons_button": {
"button_title": "Ocultar botones"
},
+ "svg_export_button": {
+ "button_title": "Exportar diagrama como SVG"
+ },
"relation_map_buttons": {
"create_child_note_title": "Crear una nueva nota hijo y agregarla a este mapa de relaciones",
"reset_pan_zoom_title": "Restablecer la panorámica y el zoom a las coordenadas y ampliación iniciales",
@@ -1023,8 +1026,8 @@
"title": "Tipos MIME disponibles en el menú desplegable"
},
"vim_key_bindings": {
- "use_vim_keybindings_in_code_notes": "Utilizar combinaciones de teclas Vim en notas de código (no modo ex)",
- "enable_vim_keybindings": "Habilitar combinaciones de teclas de Vim"
+ "use_vim_keybindings_in_code_notes": "",
+ "enable_vim_keybindings": ""
},
"wrap_lines": {
"wrap_lines_in_code_notes": "Ajustar líneas en notas de código",
@@ -1043,7 +1046,7 @@
"attachment_auto_deletion_description": "Los archivos adjuntos se eliminan (y borran) automáticamente si ya no se hace referencia a ellos en su nota después de un tiempo de espera definido.",
"erase_attachments_after_x_seconds": "Borrar archivos adjuntos después de X segundos de no usarse en su nota",
"manual_erasing_description": "También puede activar el borrado manualmente (sin considerar el tiempo de espera definido anteriormente):",
- "erase_unused_attachments_now": "Borrar ahora los archivos adjuntos no utilizados en la nota ",
+ "erase_unused_attachments_now": "Borrar ahora los archivos adjuntos no utilizados en la nota",
"unused_attachments_erased": "Los archivos adjuntos no utilizados se han eliminado."
},
"network_connections": {
@@ -1078,7 +1081,7 @@
"save_button": "Guardar"
},
"tray": {
- "title": "Bandeja",
+ "title": "Bandeja de sistema",
"enable_tray": "Habilitar bandeja (es necesario reiniciar Trilium para que este cambio surta efecto)"
},
"heading_style": {
diff --git a/src/public/translations/ro/translation.json b/src/public/translations/ro/translation.json
index f3285c4e7..6bc64185d 100644
--- a/src/public/translations/ro/translation.json
+++ b/src/public/translations/ro/translation.json
@@ -77,7 +77,7 @@
"attachment_auto_deletion_description": "Atașamentele se șterg automat (permanent) dacă nu sunt referențiate de către notița lor părinte după un timp prestabilit de timp.",
"attachment_erasure_timeout": "Perioadă de ștergere a atașamentelor",
"erase_attachments_after_x_seconds": "Șterge atașamentele după X secunde după ce acestea n-au mai fost folosite într-o notiță",
- "erase_unused_attachments_now": "Se poate lansa o ștergere manuală (fără a mai considera perioada de grație definită anterior):",
+ "erase_unused_attachments_now": "Elimină atașamentele șterse acum",
"manual_erasing_description": "Șterge acum toate atașamentele nefolosite din notițe",
"unused_attachments_erased": "Atașamentele nefolosite au fost șterse."
},
@@ -142,8 +142,8 @@
"icon_class": "valoarea acestei etichete este adăugată ca o clasă CSS la iconița notiței din ierarhia notițelor, fapt ce poate ajuta la identificarea vizuală mai rapidă a notițelor. Un exemplu ar fi „bx bx-home” pentru iconițe preluate din boxicons. Poate fi folosită în notițe de tip șablon.",
"inbox": "locația implicită în care vor apărea noile notițe atunci când se crează o noitiță utilizând butonul „Crează notiță” din bara laterală, notițele vor fi create în interiorul notiței cu această etichetă.",
"inherit": "atributele acestei notițe vor fi moștenite chiar dacă nu există o relație părinte-copil între notițe. A se vedea relația de tip șablon pentru un concept similar. De asemenea, a se vedea moștenirea atributelor în documentație.",
- "inheritable": "Moștenibil",
- "inheritable_title": "Atributele moștenibile vor fi moștenite tuturor descendenților acestei notițe.",
+ "inheritable": "Moștenibilă",
+ "inheritable_title": "Atributele moștenibile vor fi moștenite de către toți descendenții acestei notițe.",
"inverse_relation": "Relație inversă",
"inverse_relation_title": "Setare opțională pentru a defini relația inversă. Exemplu: Tată - Fiu sunt două relații inverse.",
"is_owned_by_note": "este deținut(ă) de notița",
@@ -1219,8 +1219,8 @@
"vacuuming_database": "Baza de date este în curs de compactare..."
},
"vim_key_bindings": {
- "enable_vim_keybindings": "Activează combinațiile de taste Vim",
- "use_vim_keybindings_in_code_notes": "Permite utilizarea combinațiilor de taste în stil Vim pentru notițeled e tip cod (fără modul ex)"
+ "enable_vim_keybindings": "Permite utilizarea combinațiilor de taste în stil Vim pentru notițele de tip cod (fără modul ex)",
+ "use_vim_keybindings_in_code_notes": "Combinații de taste Vim"
},
"web_view": {
"create_label": "Pentru a începe, creați o etichetă cu adresa URL de încorporat, e.g. #webViewSrc=\"https://www.google.com\"",
@@ -1244,5 +1244,79 @@
},
"svg_export_button": {
"button_title": "Exportă diagrama ca SVG"
- }
+ },
+ "note-map": {
+ "button-link-map": "Harta legăturilor",
+ "button-tree-map": "Harta ierarhiei"
+ },
+ "tree-context-menu": {
+ "advanced": "Opțiuni avansate",
+ "apply-bulk-actions": "Aplică acțiuni în masă",
+ "clone-to": "Clonare în...",
+ "collapse-subtree": "Minimizează subnotițele",
+ "convert-to-attachment": "Convertește în atașament",
+ "copy-clone": "Copiază/clonează",
+ "copy-note-path-to-clipboard": "Copiază calea notiței în clipboard",
+ "cut": "Decupează",
+ "delete": "Șterge",
+ "duplicate-subtree": "Dublifică ierarhia",
+ "edit-branch-prefix": "Editează prefixul ramurii",
+ "expand-subtree": "Expandează subnotițele",
+ "export": "Exportă",
+ "import-into-note": "Importă în notiță",
+ "insert-child-note": "Inserează subnotiță",
+ "insert-note-after": "Inserează după notiță",
+ "move-to": "Mutare la...",
+ "open-in-a-new-split": "Deschide în lateral",
+ "open-in-a-new-tab": "Deschide în tab nou",
+ "paste-after": "Lipește după notiță",
+ "paste-into": "Lipește în notiță",
+ "protect-subtree": "Protejează ierarhia",
+ "recent-changes-in-subtree": "Schimbări recente în ierarhie",
+ "search-in-subtree": "Caută în ierarhie",
+ "sort-by": "Ordonare după...",
+ "unprotect-subtree": "Deprotejează ierarhia"
+ },
+ "shared_info": {
+ "help_link": "Pentru informații vizitați
wiki-ul.",
+ "shared_locally": "Această notiță este partajată local la",
+ "shared_publicly": "Această notiță este partajată public la"
+ },
+ "note_types": {
+ "book": "Carte",
+ "canvas": "Schiță",
+ "code": "Cod sursă",
+ "mermaid-diagram": "Diagramă Mermaid",
+ "mind-map": "Hartă mentală",
+ "note-map": "Hartă notițe",
+ "relation-map": "Hartă relații",
+ "render-note": "Randare notiță",
+ "saved-search": "Căutare salvată",
+ "text": "Text",
+ "web-view": "Vizualizare web",
+ "doc": "Document",
+ "file": "Fișier",
+ "image": "Imagine",
+ "launcher": "Scurtătură",
+ "widget": "Widget"
+ },
+ "protect_note": {
+ "toggle-off": "Deprotejează notița",
+ "toggle-off-hint": "Notița este protejată, click pentru a o deproteja",
+ "toggle-on": "Protejează notița",
+ "toggle-on-hint": "Notița nu este protejată, clic pentru a o proteja"
+ },
+ "shared_switch": {
+ "inherited": "Nu se poate înlătura partajarea deoarece notița este partajată prin moștenirea de la o notiță părinte.",
+ "shared": "Partajată",
+ "shared-branch": "Această notiță există doar ca o notiță partajată, anularea partajării ar cauza ștergerea ei. Sigur doriți ștergerea notiței?",
+ "toggle-off-title": "Anulează partajarea notițeii",
+ "toggle-on-title": "Partajează notița"
+ },
+ "template_switch": {
+ "template": "Șablon",
+ "toggle-off-hint": "Înlătură notița ca șablon",
+ "toggle-on-hint": "Marchează notița drept șablon"
+ },
+ "open-help-page": "Deschide pagina de informații"
}
diff --git a/src/services/build.ts b/src/services/build.ts
index e56f37eea..ea9553c7f 100644
--- a/src/services/build.ts
+++ b/src/services/build.ts
@@ -1,4 +1,4 @@
export default {
- buildDate: "2024-08-09T22:05:59Z",
- buildRevision: "2a5c444eff3eb99389339716ea8bfc989be90ecd"
+ buildDate: "2024-09-07T18:36:34Z",
+ buildRevision: "7c0d6930fa8f20d269dcfbcbc8f636a25f6bb9a7"
};
diff --git a/src/services/i18n.ts b/src/services/i18n.ts
new file mode 100644
index 000000000..ea109499c
--- /dev/null
+++ b/src/services/i18n.ts
@@ -0,0 +1,31 @@
+import i18next from "i18next";
+import Backend from "i18next-fs-backend";
+import options from "./options.js";
+import sql_init from "./sql_init.js";
+
+export async function initializeTranslations() {
+ // Initialize translations
+ await i18next.use(Backend).init({
+ lng: await getCurrentLanguage(),
+ fallbackLng: "en",
+ ns: "server",
+ backend: {
+ loadPath: "translations/{{lng}}/{{ns}}.json"
+ },
+ debug: true
+ });
+}
+
+function getCurrentLanguage() {
+ let language;
+ if (sql_init.isDbInitialized()) {
+ language = options.getOption("locale");
+ }
+
+ if (!language) {
+ console.info("Language option not found, falling back to en.");
+ language = "en";
+ }
+
+ return language;
+}
\ No newline at end of file
diff --git a/src/services/keyboard_actions.ts b/src/services/keyboard_actions.ts
index 28e3aeeb4..c00186ef6 100644
--- a/src/services/keyboard_actions.ts
+++ b/src/services/keyboard_actions.ts
@@ -4,6 +4,7 @@ import optionService from "./options.js";
import log from "./log.js";
import utils from "./utils.js";
import { KeyboardShortcut } from './keyboard_actions_interface.js';
+import { t } from "i18next";
const isMac = process.platform === "darwin";
const isElectron = utils.isElectron();
@@ -19,7 +20,7 @@ const isElectron = utils.isElectron();
const DEFAULT_KEYBOARD_ACTIONS: KeyboardShortcut[] = [
{
- separator: "Note navigation"
+ separator: t("keyboard_actions.note-navigation")
},
{
actionName: "backInNoteHistory",
@@ -36,7 +37,7 @@ const DEFAULT_KEYBOARD_ACTIONS: KeyboardShortcut[] = [
{
actionName: "jumpToNote",
defaultShortcuts: ["CommandOrControl+J"],
- description: 'Open "Jump to note" dialog',
+ description: t("keyboard_actions.open-jump-to-note-dialog"),
scope: "window"
},
{
@@ -52,37 +53,37 @@ const DEFAULT_KEYBOARD_ACTIONS: KeyboardShortcut[] = [
{
actionName: "searchInSubtree",
defaultShortcuts: ["CommandOrControl+Shift+S"],
- description: "Search for notes in the active note's subtree",
+ description: t("keyboard_actions.search-in-subtree"),
scope: "note-tree"
},
{
actionName: "expandSubtree",
defaultShortcuts: [],
- description: "Expand subtree of current note",
+ description: t("keyboard_actions.expand-subtree"),
scope: "note-tree"
},
{
actionName: "collapseTree",
defaultShortcuts: ["Alt+C"],
- description: "Collapses the complete note tree",
+ description: t("keyboard_actions.collapse-tree"),
scope: "window"
},
{
actionName: "collapseSubtree",
defaultShortcuts: ["Alt+-"],
- description: "Collapses subtree of current note",
+ description: t("keyboard_actions.collapse-subtree"),
scope: "note-tree"
},
{
actionName: "sortChildNotes",
defaultShortcuts: ["Alt+S"],
- description: "Sort child notes",
+ description: t("keyboard_actions.sort-child-notes"),
scope: "note-tree"
},
{
- separator: "Creating and moving notes"
+ separator: t("keyboard_actions.creating-and-moving-notes")
},
{
actionName: "createNoteAfter",
@@ -97,49 +98,49 @@ const DEFAULT_KEYBOARD_ACTIONS: KeyboardShortcut[] = [
{
actionName: "createNoteIntoInbox",
defaultShortcuts: ["global:CommandOrControl+Alt+P"],
- description: "Create and open in the inbox (if defined) or day note",
+ description: t("keyboard_actions.create-note-into-inbox"),
scope: "window"
},
{
actionName: "deleteNotes",
defaultShortcuts: ["Delete"],
- description: "Delete note",
+ description: t("keyboard_actions.delete-note"),
scope: "note-tree"
},
{
actionName: "moveNoteUp",
defaultShortcuts: isMac ? ["Alt+Up"] : ["CommandOrControl+Up"],
- description: "Move note up",
+ description: t("keyboard_actions.move-note-up"),
scope: "note-tree"
},
{
actionName: "moveNoteDown",
defaultShortcuts: isMac ? ["Alt+Down"] : ["CommandOrControl+Down"],
- description: "Move note down",
+ description: t("keyboard_actions.move-note-down"),
scope: "note-tree"
},
{
actionName: "moveNoteUpInHierarchy",
defaultShortcuts: isMac ? ["Alt+Left"] : ["CommandOrControl+Left"],
- description: "Move note up in hierarchy",
+ description: t("keyboard_actions.move-note-up-in-hierarchy"),
scope: "note-tree"
},
{
actionName: "moveNoteDownInHierarchy",
defaultShortcuts: isMac ? ["Alt+Right"] : ["CommandOrControl+Right"],
- description: "Move note down in hierarchy",
+ description: t("keyboard_actions.move-note-down-in-hierarchy"),
scope: "note-tree"
},
{
actionName: "editNoteTitle",
defaultShortcuts: ["Enter"],
- description: "Jump from tree to the note detail and edit title",
+ description: t("keyboard_actions.edit-note-title"),
scope: "note-tree"
},
{
actionName: "editBranchPrefix",
defaultShortcuts: ["F2"],
- description: "Show Edit branch prefix dialog",
+ description: t("keyboard_actions.edit-branch-prefix"),
scope: "note-tree"
},
{
@@ -154,399 +155,398 @@ const DEFAULT_KEYBOARD_ACTIONS: KeyboardShortcut[] = [
},
{
- separator: "Note clipboard"
+ separator: t("keyboard_actions.note-clipboard")
},
-
{
actionName: "copyNotesToClipboard",
defaultShortcuts: ["CommandOrControl+C"],
- description: "Copy selected notes to the clipboard",
+ description: t("keyboard_actions.copy-notes-to-clipboard"),
scope: "note-tree"
},
{
actionName: "pasteNotesFromClipboard",
defaultShortcuts: ["CommandOrControl+V"],
- description: "Paste notes from the clipboard into active note",
+ description: t("keyboard_actions.paste-notes-from-clipboard"),
scope: "note-tree"
},
{
actionName: "cutNotesToClipboard",
defaultShortcuts: ["CommandOrControl+X"],
- description: "Cut selected notes to the clipboard",
+ description: t("keyboard_actions.cut-notes-to-clipboard"),
scope: "note-tree"
},
{
actionName: "selectAllNotesInParent",
defaultShortcuts: ["CommandOrControl+A"],
- description: "Select all notes from the current note level",
+ description: t("keyboard_actions.select-all-notes-in-parent"),
scope: "note-tree"
},
{
actionName: "addNoteAboveToSelection",
defaultShortcuts: ["Shift+Up"],
- description: "Add note above to the selection",
+ description: t("keyboard_actions.add-note-above-to-the-selection"),
scope: "note-tree"
},
{
actionName: "addNoteBelowToSelection",
defaultShortcuts: ["Shift+Down"],
- description: "Add note above to the selection",
+ description: t("keyboard_actions.add-note-below-to-selection"),
scope: "note-tree"
},
{
actionName: "duplicateSubtree",
defaultShortcuts: [],
- description: "Duplicate subtree",
+ description: t("keyboard_actions.duplicate-subtree"),
scope: "note-tree"
},
{
- separator: "Tabs & Windows"
+ separator: t("keyboard_actions.tabs-and-windows")
},
{
actionName: "openNewTab",
defaultShortcuts: isElectron ? ["CommandOrControl+T"] : [],
- description: "Opens new tab",
+ description: t("keyboard_actions.open-new-tab"),
scope: "window"
},
{
actionName: "closeActiveTab",
defaultShortcuts: isElectron ? ["CommandOrControl+W"] : [],
- description: "Closes active tab",
+ description: t("keyboard_actions.close-active-tab"),
scope: "window"
},
{
actionName: "reopenLastTab",
defaultShortcuts: isElectron ? ["CommandOrControl+Shift+T"] : [],
- description: "Reopens the last closed tab",
+ description: t("keyboard_actions.reopen-last-tab"),
scope: "window"
},
{
actionName: "activateNextTab",
defaultShortcuts: isElectron ? ["CommandOrControl+Tab", "CommandOrControl+PageDown"] : [],
- description: "Activates tab on the right",
+ description: t("keyboard_actions.activate-next-tab"),
scope: "window"
},
{
actionName: "activatePreviousTab",
defaultShortcuts: isElectron ? ["CommandOrControl+Shift+Tab", "CommandOrControl+PageUp"] : [],
- description: "Activates tab on the left",
+ description: t("keyboard_actions.activate-previous-tab"),
scope: "window"
},
{
actionName: "openNewWindow",
defaultShortcuts: [],
- description: "Open new empty window",
+ description: t("keyboard_actions.open-new-window"),
scope: "window"
},
{
actionName: "toggleTray",
defaultShortcuts: [],
- description: "Shows/hides the application from the system tray",
+ description: t("keyboard_actions.toggle-tray"),
scope: "window"
},
{
actionName: "firstTab",
defaultShortcuts: ["CommandOrControl+1"],
- description: "Activates the first tab in the list",
+ description: t("keyboard_actions.first-tab"),
scope: "window"
},
{
actionName: "secondTab",
defaultShortcuts: ["CommandOrControl+2"],
- description: "Activates the second tab in the list",
+ description: t("keyboard_actions.second-tab"),
scope: "window"
},
{
actionName: "thirdTab",
defaultShortcuts: ["CommandOrControl+3"],
- description: "Activates the third tab in the list",
+ description: t("keyboard_actions.third-tab"),
scope: "window"
},
{
actionName: "fourthTab",
defaultShortcuts: ["CommandOrControl+4"],
- description: "Activates the fourth tab in the list",
+ description: t("keyboard_actions.fourth-tab"),
scope: "window"
},
{
actionName: "fifthTab",
defaultShortcuts: ["CommandOrControl+5"],
- description: "Activates the fifth tab in the list",
+ description: t("keyboard_actions.fifth-tab"),
scope: "window"
},
{
actionName: "sixthTab",
defaultShortcuts: ["CommandOrControl+6"],
- description: "Activates the sixth tab in the list",
+ description: t("keyboard_actions.sixth-tab"),
scope: "window"
},
{
actionName: "seventhTab",
defaultShortcuts: ["CommandOrControl+7"],
- description: "Activates the seventh tab in the list",
+ description: t("keyboard_actions.seventh-tab"),
scope: "window"
},
{
actionName: "eigthTab",
defaultShortcuts: ["CommandOrControl+8"],
- description: "Activates the eighth tab in the list",
+ description: t("keyboard_actions.eight-tab"),
scope: "window"
},
{
actionName: "ninthTab",
defaultShortcuts: ["CommandOrControl+9"],
- description: "Activates the ninth tab in the list",
+ description: t("keyboard_actions.ninth-tab"),
scope: "window"
},
{
actionName: "lastTab",
defaultShortcuts: [],
- description: "Activates the last tab in the list",
+ description: t("keyboard_actions.last-tab"),
scope: "window"
},
{
- separator: "Dialogs"
+ separator: t("keyboard_actions.dialogs")
},
{
actionName: "showNoteSource",
defaultShortcuts: [],
- description: "Shows Note Source dialog",
+ description: t("keyboard_actions.show-note-source"),
scope: "window"
},
{
actionName: "showOptions",
defaultShortcuts: [],
- description: "Shows Options dialog",
+ description: t("keyboard_actions.show-options"),
scope: "window"
},
{
actionName: "showRevisions",
defaultShortcuts: [],
- description: "Shows Note Revisions dialog",
+ description: t("keyboard_actions.show-revisions"),
scope: "window"
},
{
actionName: "showRecentChanges",
defaultShortcuts: [],
- description: "Shows Recent Changes dialog",
+ description: t("keyboard_actions.show-recent-changes"),
scope: "window"
},
{
actionName: "showSQLConsole",
defaultShortcuts: ["Alt+O"],
- description: "Shows SQL Console dialog",
+ description: t("keyboard_actions.show-sql-console"),
scope: "window"
},
{
actionName: "showBackendLog",
defaultShortcuts: [],
- description: "Shows Backend Log dialog",
+ description: t("keyboard_actions.show-backend-log"),
scope: "window"
},
{
actionName: "showHelp",
defaultShortcuts: ["F1"],
- description: "Shows built-in Help / cheatsheet",
+ description: t("keyboard_actions.show-help"),
scope: "window"
},
{
- separator: "Text note operations"
+ separator: t("keyboard_actions.text-note-operations")
},
{
actionName: "addLinkToText",
defaultShortcuts: ["CommandOrControl+L"],
- description: "Open dialog to add link to the text",
+ description: t("keyboard_actions.add-link-to-text"),
scope: "text-detail"
},
{
actionName: "followLinkUnderCursor",
defaultShortcuts: ["CommandOrControl+Enter"],
- description: "Follow link within which the caret is placed",
+ description: t("keyboard_actions.follow-link-under-cursor"),
scope: "text-detail"
},
{
actionName: "insertDateTimeToText",
defaultShortcuts: ["Alt+T"],
- description: "Insert current date & time into text",
+ description: t("keyboard_actions.insert-date-and-time-to-text"),
scope: "text-detail"
},
{
actionName: "pasteMarkdownIntoText",
defaultShortcuts: [],
- description: "Pastes Markdown from clipboard into text note",
+ description: t("keyboard_actions.paste-markdown-into-text"),
scope: "text-detail"
},
{
actionName: "cutIntoNote",
defaultShortcuts: [],
- description: "Cuts the selection from the current note and creates subnote with the selected text",
+ description: t("keyboard_actions.cut-into-note"),
scope: "text-detail"
},
{
actionName: "addIncludeNoteToText",
defaultShortcuts: [],
- description: "Opens the dialog to include a note",
+ description: t("keyboard_actions.add-include-note-to-text"),
scope: "text-detail"
},
{
actionName: "editReadOnlyNote",
defaultShortcuts: [],
- description: "Edit a read-only note",
+ description: t("keyboard_actions.edit-readonly-note"),
scope: "window"
},
{
- separator: "Attributes (labels & relations)"
+ separator: t("keyboard_actions.attributes-labels-and-relations")
},
{
actionName: "addNewLabel",
defaultShortcuts: ["Alt+L"],
- description: "Create new label",
+ description: t("keyboard_actions.add-new-label"),
scope: "window"
},
{
actionName: "addNewRelation",
defaultShortcuts: ["Alt+R"],
- description: "Create new relation",
+ description: t("keyboard_actions.create-new-relation"),
scope: "window"
},
{
- separator: "Ribbon tabs"
+ separator: t("keyboard_actions.ribbon-tabs")
},
{
actionName: "toggleRibbonTabBasicProperties",
defaultShortcuts: [],
- description: "Toggle Basic Properties",
+ description: t("keyboard_actions.toggle-basic-properties"),
scope: "window"
},
{
actionName: "toggleRibbonTabBookProperties",
defaultShortcuts: [],
- description: "Toggle Book Properties",
+ description: t("keyboard_actions.toggle-book-properties"),
scope: "window"
},
{
actionName: "toggleRibbonTabFileProperties",
defaultShortcuts: [],
- description: "Toggle File Properties",
+ description: t("keyboard_actions.toggle-file-properties"),
scope: "window"
},
{
actionName: "toggleRibbonTabImageProperties",
defaultShortcuts: [],
- description: "Toggle Image Properties",
+ description: t("keyboard_actions.toggle-image-properties"),
scope: "window"
},
{
actionName: "toggleRibbonTabOwnedAttributes",
defaultShortcuts: ["Alt+A"],
- description: "Toggle Owned Attributes",
+ description: t("keyboard_actions.toggle-owned-attributes"),
scope: "window"
},
{
actionName: "toggleRibbonTabInheritedAttributes",
defaultShortcuts: [],
- description: "Toggle Inherited Attributes",
+ description: t("keyboard_actions.toggle-inherited-attributes"),
scope: "window"
},
{
actionName: "toggleRibbonTabPromotedAttributes",
defaultShortcuts: [],
- description: "Toggle Promoted Attributes",
+ description: t("keyboard_actions.toggle-promoted-attributes"),
scope: "window"
},
{
actionName: "toggleRibbonTabNoteMap",
defaultShortcuts: [],
- description: "Toggle Link Map",
+ description: t("keyboard_actions.toggle-link-map"),
scope: "window"
},
{
actionName: "toggleRibbonTabNoteInfo",
defaultShortcuts: [],
- description: "Toggle Note Info",
+ description: t("keyboard_actions.toggle-note-info"),
scope: "window"
},
{
actionName: "toggleRibbonTabNotePaths",
defaultShortcuts: [],
- description: "Toggle Note Paths",
+ description: t("keyboard_actions.toggle-note-paths"),
scope: "window"
},
{
actionName: "toggleRibbonTabSimilarNotes",
defaultShortcuts: [],
- description: "Toggle Similar Notes",
+ description: t("keyboard_actions.toggle-similar-notes"),
scope: "window"
},
{
- separator: "Other"
+ separator: t("keyboard_actions.other")
},
{
actionName: "toggleRightPane",
defaultShortcuts: [],
- description: "Toggle the display of the right pane, which includes Table of Contents and Highlights",
+ description: t("keyboard_actions.toggle-right-pane"),
scope: "window"
},
{
actionName: "printActiveNote",
defaultShortcuts: [],
- description: "Print active note",
+ description: t("keyboard_actions.print-active-note"),
scope: "window"
},
{
actionName: "openNoteExternally",
defaultShortcuts: [],
- description: "Open note as a file with default application",
+ description: t("keyboard_actions.open-note-externally"),
scope: "window"
},
{
actionName: "renderActiveNote",
defaultShortcuts: [],
- description: "Render (re-render) active note",
+ description: t("keyboard_actions.render-active-note"),
scope: "window"
},
{
actionName: "runActiveNote",
defaultShortcuts: ["CommandOrControl+Enter"],
- description: "Run active JavaScript (frontend/backend) code note",
+ description: t("keyboard_actions.run-active-note"),
scope: "code-detail"
},
{
actionName: "toggleNoteHoisting",
defaultShortcuts: ["Alt+H"],
- description: "Toggles note hoisting of active note",
+ description: t("keyboard_actions.toggle-note-hoisting"),
scope: "window"
},
{
actionName: "unhoist",
defaultShortcuts: ["Alt+U"],
- description: "Unhoist from anywhere",
+ description: t("keyboard_actions.unhoist"),
scope: "window"
},
{
actionName: "reloadFrontendApp",
defaultShortcuts: ["F5", "CommandOrControl+R"],
- description: "Reload frontend App",
+ description: t("keyboard_actions.reload-frontend-app"),
scope: "window"
},
{
actionName: "openDevTools",
defaultShortcuts: isElectron ? ["CommandOrControl+Shift+I"] : [],
- description: "Open dev tools",
+ description: t("keyboard_actions.open-dev-tools"),
scope: "window"
},
{
@@ -557,43 +557,43 @@ const DEFAULT_KEYBOARD_ACTIONS: KeyboardShortcut[] = [
{
actionName: "toggleLeftPane",
defaultShortcuts: [],
- description: "Toggle left (note tree) panel",
+ description: t("keyboard_actions.toggle-left-note-tree-panel"),
scope: "window"
},
{
actionName: "toggleFullscreen",
defaultShortcuts: ["F11"],
- description: "Toggle full screen",
+ description: t("keyboard_actions.toggle-full-screen"),
scope: "window"
},
{
actionName: "zoomOut",
defaultShortcuts: isElectron ? ["CommandOrControl+-"] : [],
- description: "Zoom Out",
+ description: t("keyboard_actions.zoom-out"),
scope: "window"
},
{
actionName: "zoomIn",
- description: "Zoom In",
+ description: t("keyboard_actions.zoom-in"),
defaultShortcuts: isElectron ? ["CommandOrControl+="] : [],
scope: "window"
},
{
actionName: "zoomReset",
- description: "Reset zoom level",
+ description: t("keyboard_actions.reset-zoom-level"),
defaultShortcuts: isElectron ? ["CommandOrControl+0"] : [],
scope: "window"
},
{
actionName: "copyWithoutFormatting",
defaultShortcuts: ["CommandOrControl+Alt+C"],
- description: "Copy selected text without formatting",
+ description: t("keyboard_actions.copy-without-formatting"),
scope: "text-detail"
},
{
actionName: "forceSaveRevision",
defaultShortcuts: [],
- description: "Force creating / saving new note revision of the active note",
+ description: t("keyboard_actions.force-save-revision"),
scope: "window"
}
];
diff --git a/src/views/desktop.ejs b/src/views/desktop.ejs
index 64135659a..59a4b2b4f 100644
--- a/src/views/desktop.ejs
+++ b/src/views/desktop.ejs
@@ -7,7 +7,7 @@
TriliumNext Notes
-
+