Merge remote-tracking branch 'origin/main' into feature/presentation_poc

This commit is contained in:
Elian Doran 2025-10-16 08:34:38 +03:00
commit 6ba729fd52
No known key found for this signature in database
25 changed files with 1653 additions and 720 deletions

View File

@ -75,8 +75,8 @@
"@types/reveal.js": "5.2.1",
"@types/tabulator-tables": "6.2.11",
"copy-webpack-plugin": "13.0.1",
"happy-dom": "20.0.1",
"happy-dom": "20.0.2",
"script-loader": "0.7.2",
"vite-plugin-static-copy": "3.1.3"
"vite-plugin-static-copy": "3.1.4"
}
}

View File

@ -360,7 +360,8 @@ button kbd {
}
.dropdown-menu,
.tabulator-popup-container {
.tabulator-popup-container,
:root .excalidraw .popover {
color: var(--menu-text-color) !important;
font-size: inherit;
background: var(--menu-background-color) !important;
@ -371,7 +372,9 @@ button kbd {
}
body.desktop .dropdown-menu,
body.desktop .tabulator-popup-container {
body.desktop .tabulator-popup-container,
:root .excalidraw .dropdown-menu .dropdown-menu-container,
:root .excalidraw .popover {
border: 1px solid var(--dropdown-border-color);
column-rule: 1px solid var(--dropdown-border-color);
box-shadow: 0px 10px 20px rgba(0, 0, 0, var(--dropdown-shadow-opacity));
@ -416,7 +419,8 @@ body.desktop .tabulator-popup-container {
.dropdown-menu a:hover:not(.disabled),
.dropdown-item:hover:not(.disabled, .dropdown-container-item),
.tabulator-menu-item:hover {
.tabulator-menu-item:hover,
:root .excalidraw .context-menu .context-menu-item:hover {
color: var(--hover-item-text-color) !important;
background-color: var(--hover-item-background-color) !important;
border-color: var(--hover-item-border-color) !important;
@ -457,7 +461,8 @@ body #context-menu-container .dropdown-item > span {
}
.dropdown-item,
.dropdown-header {
.dropdown-header,
:root .excalidraw .context-menu .context-menu-item:hover {
color: var(--menu-text-color) !important;
border: 1px solid transparent !important;
}

View File

@ -4,6 +4,7 @@
@import url(./pages.css);
@import url(./ribbon.css);
@import url(./notes/text.css);
@import url(./notes/canvas.css);
@import url(./notes/collections/table.css);
@font-face {
@ -96,9 +97,10 @@ body.backdrop-effects-disabled {
* supported when this class is used.
*/
.dropdown-menu:not(.static) {
.dropdown-menu:not(.static),
:root .excalidraw .popover {
border-radius: var(--dropdown-border-radius);
padding: var(--menu-padding-size) !important;
padding: var(--padding, var(--menu-padding-size)) !important;
font-size: 0.9rem !important;
}
@ -114,7 +116,8 @@ body.mobile .dropdown-menu .dropdown-menu {
}
body.desktop .dropdown-menu::before,
:root .ck.ck-dropdown__panel::before {
:root .ck.ck-dropdown__panel::before,
:root .excalidraw .popover::before {
content: "";
backdrop-filter: var(--dropdown-backdrop-filter);
border-radius: var(--dropdown-border-radius);
@ -148,9 +151,17 @@ body.desktop .dropdown-submenu .dropdown-menu {
}
.dropdown-item,
body.mobile .dropdown-submenu .dropdown-toggle {
padding: 2px 2px 2px 8px !important;
padding-inline-end: 22px !important;
body.mobile .dropdown-submenu .dropdown-toggle,
.excalidraw .context-menu .context-menu-item {
--menu-item-start-padding: 8px;
--menu-item-end-padding: 22px;
--menu-item-vertical-padding: 2px;
padding-top: var(--menu-item-vertical-padding) !important;
padding-bottom: var(--menu-item-vertical-padding) !important;
padding-inline-start: var(--menu-item-start-padding) !important;
padding-inline-end: var(--menu-item-end-padding) !important;
/* Note: the right padding should also accommodate the submenu arrow. */
border-radius: 6px;
cursor: default !important;
@ -202,7 +213,8 @@ html body .dropdown-item[disabled] {
}
/* Menu item keyboard shortcut */
.dropdown-item kbd {
.dropdown-item kbd,
.excalidraw .context-menu-item__shortcut {
font-family: unset !important;
font-size: unset !important;
color: var(--menu-item-keyboard-shortcut-color) !important;
@ -214,13 +226,15 @@ html body .dropdown-item[disabled] {
margin-inline-start: 16px;
}
.dropdown-divider {
.dropdown-divider,
.excalidraw .context-menu hr {
position: relative;
border-color: transparent !important;
overflow: visible;
}
.dropdown-divider::after {
.dropdown-divider::after,
.excalidraw .context-menu hr::before {
position: absolute;
content: "";
top: -1px;
@ -253,7 +267,9 @@ body[dir=rtl] .dropdown-menu:not([data-popper-placement="bottom-start"]) .dropdo
/* Menu item group heading */
/* The heading body */
.dropdown-menu h6 {
.dropdown-menu h6,
.excalidraw .dropdown-menu-container .dropdown-menu-group-title,
.excalidraw .dropdown-menu-container div[data-testid="canvas-background-label"] {
position: relative;
background: transparent;
padding: 1em 8px 14px 8px;
@ -264,7 +280,9 @@ body[dir=rtl] .dropdown-menu:not([data-popper-placement="bottom-start"]) .dropdo
}
/* The delimiter line */
.dropdown-menu h6::before {
.dropdown-menu h6::before,
.excalidraw .dropdown-menu-container .dropdown-menu-group-title::before,
.excalidraw .dropdown-menu-container div[data-testid="canvas-background-label"]::before {
content: "";
position: absolute;
bottom: 8px;

View File

@ -0,0 +1,229 @@
:root .excalidraw {
--ui-font: var(--main-font-family);
/* Button hover background color */
--button-hover-bg: var(--hover-item-background-color);
--color-surface-high: var(--hover-item-background-color);
--button-active-border: transparent;
--color-brand-active: transparent;
--color-surface-mid: transparent;
--color-surface-low: transparent;
/* Slider colors */
--color-slider-track: var(--menu-item-delimiter-color);
--color-slider-thumb: var(--muted-text-color);
/* Selected button icon fill color */
--color-on-primary-container: var(--ck-editor-toolbar-button-on-color);
--color-primary: var(--ck-editor-toolbar-button-on-color);
/* Selected button icon background color */
--color-surface-primary-container: var(--ck-editor-toolbar-button-on-background);
--color-primary-light: var(--ck-editor-toolbar-button-on-background);
--island-bg-color: var(--floating-button-background-color);
}
/* Dark theme tweaks */
:root body .excalidraw.theme--dark {
--color-surface-high: transparent;
--color-brand-hover: transparent;
}
:root .excalidraw.theme--dark.excalidraw .App-mobile-menu,
:root .excalidraw.theme--dark.excalidraw .App-menu__left {
--button-hover-bg: var(--hover-item-background-color);
}
:root .excalidraw.theme--dark.excalidraw .dropdown-menu-button:hover {
--background: var(--hover-item-background-color);
}
/* Note's root */
:root .type-canvas {
--floating-buttons-vert-offset: 20px;
}
/* Context menus */
/* Context menu - outer wrapper */
:root .excalidraw .popover {
--padding: 0;
max-width: unset;
overflow: hidden;
font-family: var(--main-font-family);
}
/* Context menu - inner wrapper */
:root .excalidraw .popover > .context-menu {
margin: 0;
padding: 8px !important;
overflow-y: auto;
overflow-x: hidden;
height: 100%;
border: none;
padding: 0;
box-shadow: none;
background: transparent;
}
/* Context menu item */
:root .excalidraw .context-menu .context-menu-item {
--menu-item-start-padding: 22px;
border: 1px solid transparent;
}
/* Context menu item icon */
:root .excalidraw .dropdown-menu-item__icon {
color: var(--menu-item-icon-color);
}
/* Context menu item label */
:root .excalidraw .context-menu-item__label,
:root .excalidraw .context-menu-item.dangerous .context-menu-item__label {
color: var(--menu-text-color);
}
:root .excalidraw .context-menu-item:hover .context-menu-item__label {
color: var(--hover-item-text-color);
}
/* Context menu item keyboard shortcut */
:root .excalidraw .context-menu-item__shortcut {
padding: 0;
opacity: 1;
}
/* Context menu separator */
.excalidraw .context-menu .context-menu-item-separator {
margin: 8px 0;
opacity: 1;
}
/* Main menu */
/* Hide separators - no longer needed as the menu group headers feature a delimiter line */
.excalidraw .Island.dropdown-menu-container>div:not(:has(>*)) {
display: none;
}
/* Menu group header */
.excalidraw .dropdown-menu-container .dropdown-menu-group-title,
.excalidraw .Island.dropdown-menu-container div[data-testid="canvas-background-label"] {
margin: 0 !important;
}
/* Header */
.excalidraw .App-menu.App-menu_top {
align-items: center;
}
.excalidraw .App-menu.App-menu_top .App-menu_top__left {
/* Fixes a layout glitch with the header when the options panel is visbile */
--gap: 0 !important;
}
/* The parent element of the "Library" button */
.excalidraw .App-menu.App-menu_top > div:nth-child(3) {
flex-direction: row-reverse;
}
/* Panels */
.excalidraw .Island:not(.App-menu__left),
.excalidraw .zoom-actions,
.undo-redo-buttons {
box-shadow: 1px 1px 1px var(--floating-button-shadow-color);
backdrop-filter: blur(10px) saturate(6);
}
:root .excalidraw .main-menu-trigger,
:root .excalidraw .sidebar-trigger,
:root .excalidraw .help-icon {
box-shadow: none;
}
/* Selected color outline */
:root .excalidraw .color-picker__button.active .color-picker__button-outline {
box-shadow: 0 0 0 2px var(--input-focus-outline-color);
}
:root .excalidraw .buttonList label.active {
border-color: transparent;
}
/* Options panel */
.excalidraw .Island.App-menu__left {
box-shadow: none;
background: transparent;
backdrop-filter: none;
width: 13.2em;
}
body[dir=ltr] .excalidraw .Island.App-menu__left {
right: 0;
}
body[dir=rtl] .excalidraw .Island.App-menu__left {
left: 0;
}
:root .App-menu__left > .panelColumn {
row-gap: 5px;
}
/* Options panel card */
:root .App-menu__left > .panelColumn > fieldset,
:root .App-menu__left > .panelColumn > label,
:root .App-menu__left > .panelColumn > div:has(> *) {
margin: 0;
border-radius: 4px;
box-shadow: 1px 1px 1px var(--floating-button-shadow-color);
background: var(--floating-button-background-color);
padding: 8px 12px;
backdrop-filter: blur(10px) saturate(6);
}
/* Options panel card title */
:root .App-menu__left fieldset > legend,
:root .App-menu__left div > h3,
:root .App-menu__left > .panelColumn > label {
text-transform: uppercase;
font-size: .65rem;
letter-spacing: 1pt;
color: var(--muted-text-color);
}
/* Options panel button bar */
:root .excalidraw .App-menu__left .buttonList {
padding: 0;
}
/* Properties panel */
body[dir=ltr] .excalidraw .exc-stats {
left: 0;
}
body[dir=rtl] .excalidraw .exc-stats {
right: 0;
}
/* Sidebar */
.split-note-container-widget > .component.type-canvas:has(.excalidraw-container > .Island.default-sidebar) > .floating-buttons {
/* Hide the floating buttons when the sidebar is open */
display: none;
}

View File

@ -646,8 +646,7 @@
"about": "Über Trilium Notes",
"logout": "Abmelden",
"show-cheatsheet": "Cheatsheet anzeigen",
"toggle-zen-mode": "Zen Modus",
"update_available": "Version {{latestVersion}} ist verfügbar. Klicke zum Download."
"toggle-zen-mode": "Zen Modus"
},
"sync_status": {
"unknown": "<p>Der Synchronisations-Status wird bekannt, sobald der nächste Synchronisierungsversuch gestartet wird.</p><p>Klicke, um eine Synchronisierung jetzt auszulösen.</p>",

View File

@ -647,7 +647,8 @@
"logout": "Logout",
"show-cheatsheet": "Show Cheatsheet",
"toggle-zen-mode": "Zen Mode",
"update_available": "Version {{latestVersion}} is available, click to download."
"new-version-available": "New Update Available",
"download-update": "Get Version {{latestVersion}}"
},
"zen_mode": {
"button_exit": "Exit Zen Mode"

View File

@ -646,8 +646,7 @@
"about": "À propos de Trilium Notes",
"logout": "Déconnexion",
"show-cheatsheet": "Afficher l'aide rapide",
"toggle-zen-mode": "Zen Mode",
"update_available": "La version {{latestVersion}} est disponible, cliquer ici pour la télécharger."
"toggle-zen-mode": "Zen Mode"
},
"zen_mode": {
"button_exit": "Sortir du Zen mode"

View File

@ -90,7 +90,8 @@
},
"info": {
"okButton": "OK",
"closeButton": "Chiudi"
"closeButton": "Chiudi",
"modalTitle": "Messaggio informativo"
},
"export": {
"close": "Chiudi",
@ -354,7 +355,53 @@
"notSet": "non impostato",
"goBackForwards": "indietro/avanti nella cronologia",
"showJumpToNoteDialog": "mostra <a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/note-navigation.html#jump-to-note\">finestra di dialogo “Vai a”</a>",
"title": "Scheda riassuntiva"
"title": "Scheda riassuntiva",
"noteNavigation": "Nota navigazione",
"scrollToActiveNote": "scorri fino alla nota attiva",
"jumpToParentNote": "vai alla nota principale",
"collapseWholeTree": "comprimi l'intero albero delle note",
"collapseSubTree": "comprimi sottoalbero",
"tabShortcuts": "Scorciatoie delle schede",
"newTabNoteLink": "Il link alla nota apre la nota in una nuova scheda",
"newTabWithActivationNoteLink": "Il link alla nota si apre e attiva la nota in una nuova scheda",
"onlyInDesktop": "Solo nella versione desktop (Electron build)",
"openEmptyTab": "apri scheda vuota",
"closeActiveTab": "chiudi scheda attiva",
"activateNextTab": "attiva la scheda successiva",
"activatePreviousTab": "attiva la scheda precedente",
"creatingNotes": "Creazione di note",
"createNoteAfter": "crea una nuova nota dopo quella attiva",
"createNoteInto": "crea una nuova sotto-nota nella nota attiva",
"editBranchPrefix": "modifica <a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/tree-concepts.html#prefix\">prefisso</a> del clone della nota attiva",
"movingCloningNotes": "Spostamento / clonazione delle note",
"moveNoteUpDown": "spostare la nota verso l'alto/verso il basso nell'elenco delle note",
"moveNoteUpHierarchy": "spostare la nota verso l'alto nella gerarchia",
"multiSelectNote": "nota multi-selezione sopra/sotto",
"selectAllNotes": "seleziona tutte le note del livello corrente",
"selectNote": "seleziona nota",
"copyNotes": "copia la nota attiva (o la selezione corrente) negli appunti (utilizzata per la <a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/cloning-notes.html#cloning-notes\">clonazione</a>)",
"cutNotes": "taglia la nota corrente (o la selezione corrente) negli appunti (utilizzato per spostare le note)",
"pasteNotes": "Incolla le note come sotto-note nella nota attiva (che viene spostata o clonata a seconda che sia stata copiata o tagliata negli appunti)",
"deleteNotes": "eliminazione nota / sottoalbero",
"editingNotes": "Modifica delle note",
"editNoteTitle": "nel riquadro ad albero passa dal riquadro ad albero al titolo della nota. Premendo Invio dal titolo della nota, il focus passerà all'editor di testo. <kbd>Ctrl+.</kbd> riporterà il focus dall'editor al riquadro ad albero.",
"createEditLink": "crea / modifica collegamento esterno",
"createInternalLink": "creare un collegamento interno",
"followLink": "segui il link sotto il cursore",
"insertDateTime": "inserisci la data e l'ora correnti nella posizione del cursore",
"jumpToTreePane": "passa al riquadro dell'albero e scorri fino alla nota attiva",
"markdownAutoformat": "Formattazione automatica simile a Markdown",
"headings": "<code>##</code>, <code>###</code>, <code>####</code> ecc. seguiti da uno spazio per i titoli",
"bulletList": "<code>*</code> o <code>-</code> seguito da uno spazio per un elenco puntato",
"numberedList": "<code>1.</code> o <code>1)</code> seguito da uno spazio per un elenco numerato",
"blockQuote": "inizia una riga con <code>></code> seguito da uno spazio per il blocco di citazione",
"troubleshooting": "Risoluzione dei problemi",
"reloadFrontend": "ricarica il frontend Trilium",
"showDevTools": "mostra strumenti di sviluppo",
"showSQLConsole": "mostra console SQL",
"other": "Altro",
"quickSearch": "concentrati sull'input della ricerca rapida",
"inPageSearch": "ricerca all'interno della pagina"
},
"i18n": {
"saturday": "Sabato",
@ -376,5 +423,51 @@
"notes_indexed_0": "{{ count }} nota indicizzata",
"notes_indexed_1": "{{ count }} note indicizzate",
"notes_indexed_2": "{{ count }} note indicizzate"
},
"import": {
"importIntoNote": "Importa nella nota",
"chooseImportFile": "Scegli file di importazione",
"importDescription": "Il contenuto dei file selezionati verranno importati come note secondarie in",
"options": "Opzioni",
"safeImportTooltip": "I file di esportazione Trilium <code>.zip</code> possono contenere script eseguibili che potrebbero avere comportamenti dannosi. L'importazione sicura disattiverà l'esecuzione automatica di tutti gli script importati. Deseleziona “Importazione sicura” solo se l'archivio importato dovrebbe contenere script eseguibili e ti fidi completamente del contenuto del file di importazione.",
"safeImport": "Importazione sicura",
"explodeArchivesTooltip": "Se questa opzione è selezionata, Trilium leggerà i file <code>.zip</code>, <code>.enex</code> e <code>.opml</code> e creerà delle note dai file contenuti in tali archivi. Se l'opzione non è selezionata, Trilium allegherà gli archivi stessi alla nota.",
"shrinkImages": "Riduci immagini",
"explodeArchives": "Leggi il contenuto degli archivi <code>.zip</code>, <code>.enex</code> e <code>.opml</code> .",
"html_import_tags": {
"title": "Tag di importazione HTML",
"description": "Configura quali tag HTML devono essere mantenuti durante l'importazione delle note. I tag che non sono presenti in questo elenco verranno rimossi durante l'importazione. Alcuni tag (come 'script') vengono sempre rimossi per motivi di sicurezza.",
"placeholder": "Inserisci i tag HTML, uno per riga",
"reset_button": "Ripristina elenco predefinito"
},
"import-status": "Stato importazione",
"in-progress": "Importazione in corso: {{progress}}",
"successful": "Importazione completata con successo."
},
"include_note": {
"dialog_title": "Includi nota",
"label_note": "Note",
"placeholder_search": "cerca una nota per nome",
"box_size_prompt": "Dimensione della casella della nota inclusa:",
"box_size_small": "piccola (~ 10 righe)",
"box_size_medium": "media (~ 30 righe)",
"box_size_full": "completa (la casella mostra il testo completo)",
"button_include": "Includi nota"
},
"jump_to_note": {
"search_placeholder": "Cerca una nota per nome oppure digita > per i comandi...",
"search_button": "Cerca nel testo completo"
},
"markdown_import": {
"dialog_title": "Importazione Markdown",
"modal_body_text": "A causa del sandbox del browser non è possibile leggere direttamente gli appunti tramite JavaScript. Incolla il Markdown da importare nell'area di testo sottostante e clicca sul pulsante Importa",
"import_button": "Importa",
"import_success": "Il contenuto Markdown è stato importato nel documento."
},
"move_to": {
"target_parent_note": "Nota principale di destinazione",
"dialog_title": "Sposta note in ...",
"notes_to_move": "Note da spostare",
"search_placeholder": "cerca una nota per nome"
}
}

View File

@ -67,8 +67,7 @@
"switch_to_mobile_version": "モバイル版に切り替え",
"switch_to_desktop_version": "デスクトップ版に切り替え",
"configure_launchbar": "ランチャーバーの設定",
"show_shared_notes_subtree": "共有ノートのサブツリーを表示",
"update_available": "バージョン {{latestVersion}} が利用可能です。クリックしてダウンロードしてください。"
"show_shared_notes_subtree": "共有ノートのサブツリーを表示"
},
"left_pane_toggle": {
"show_panel": "パネルを表示",

View File

@ -646,8 +646,7 @@
"about": "關於 TriliumNext 筆記",
"logout": "登出",
"show-cheatsheet": "顯示快捷鍵說明",
"toggle-zen-mode": "禪模式",
"update_available": "版本 {{latestVersion}} 已推出,點擊下載。"
"toggle-zen-mode": "禪模式"
},
"sync_status": {
"unknown": "<p>同步狀態將在下一次同步嘗試開始後顯示。</p><p>點擊以立即觸發同步。</p>",

View File

@ -3,7 +3,7 @@ import "./global_menu.css";
import { useStaticTooltip, useStaticTooltipWithKeyboardShortcut, useTriliumOption, useTriliumOptionBool, useTriliumOptionInt } from "../react/hooks";
import { useContext, useEffect, useRef, useState } from "preact/hooks";
import { t } from "../../services/i18n";
import { FormDropdownDivider, FormDropdownSubmenu, FormListItem } from "../react/FormList";
import { FormDropdownDivider, FormDropdownSubmenu, FormListHeader, FormListItem } from "../react/FormList";
import { CommandNames } from "../../components/app_context";
import KeyboardShortcut from "../react/KeyboardShortcut";
import { KeyboardActionNames } from "@triliumnext/commons";
@ -58,10 +58,14 @@ export default function GlobalMenu({ isHorizontalLayout }: { isHorizontalLayout:
<KeyboardActionMenuItem command="showHelp" icon="bx bx-help-circle" text={t("global_menu.show_help")} />
<KeyboardActionMenuItem command="showCheatsheet" icon="bx bxs-keyboard" text={t("global_menu.show-cheatsheet")} />
<MenuItem command="openAboutDialog" icon="bx bx-info-circle" text={t("global_menu.about")} />
{isUpdateAvailable && <>
<FormDropdownDivider />
<MenuItem command={() => window.open("https://github.com/TriliumNext/Trilium/releases/latest")} icon="bx bx-download" text={t("global_menu.update_available", { latestVersion })} />
<FormListHeader text={t("global_menu.new-version-available")} />
<MenuItem command={() => window.open("https://github.com/TriliumNext/Trilium/releases/latest")}
icon="bx bx-download"
text={t("global_menu.download-update", {latestVersion})} />
</>}
{!isElectron() && <BrowserOnlyOptions />}
</Dropdown>
)

View File

@ -34,7 +34,7 @@
"@triliumnext/commons": "workspace:*",
"@triliumnext/server": "workspace:*",
"copy-webpack-plugin": "13.0.1",
"electron": "38.2.2",
"electron": "38.3.0",
"@electron-forge/cli": "7.10.2",
"@electron-forge/maker-deb": "7.10.2",
"@electron-forge/maker-dmg": "7.10.2",

View File

@ -12,7 +12,7 @@
"@triliumnext/desktop": "workspace:*",
"@types/fs-extra": "11.0.4",
"copy-webpack-plugin": "13.0.1",
"electron": "38.2.2",
"electron": "38.3.0",
"fs-extra": "11.3.2"
},
"scripts": {

View File

@ -42,19 +42,19 @@ test("User can change language from settings", async ({ page, context }) => {
// Check that the default value (English) is set.
await expect(app.currentNoteSplit).toContainText("First day of the week");
const languageCombobox = app.currentNoteSplit.getByRole("combobox").first();
await expect(languageCombobox).toHaveValue("en");
const languageCombobox = app.dropdown(app.currentNoteSplit.locator(".options-section .dropdown").first());
await expect(languageCombobox).toContainText("English");
// Select Chinese and ensure the translation is set.
await languageCombobox.selectOption("cn");
await languageCombobox.selectOptionByText("简体中文");
await app.currentNoteSplit.locator("button[name=restart-app-button]").click();
await expect(app.currentNoteSplit).toContainText("一周的第一天", { timeout: 15000 });
await expect(languageCombobox).toHaveValue("cn");
await expect(languageCombobox).toContainText("简体中文");
// Select English again.
await languageCombobox.selectOption("en");
await languageCombobox.selectOptionByText("English");
await app.currentNoteSplit.locator("button[name=restart-app-button]").click();
await expect(app.currentNoteSplit).toContainText("Language", { timeout: 15000 });
await expect(languageCombobox).toHaveValue("en");
await expect(languageCombobox).toContainText("English");
});

View File

@ -9,6 +9,10 @@ interface GotoOpts {
const BASE_URL = "http://127.0.0.1:8082";
interface DropdownLocator extends Locator {
selectOptionByText: (text: string) => Promise<void>;
}
export default class App {
readonly page: Page;
readonly context: BrowserContext;
@ -157,4 +161,14 @@ export default class App {
})
).toBeOK();
}
dropdown(_locator: Locator): DropdownLocator {
let locator = _locator as DropdownLocator;
locator.selectOptionByText = async (text: string) => {
await locator.locator(".dropdown-toggle").click();
await locator.locator(".dropdown-item", { hasText: text }).click();
};
return locator;
}
}

View File

@ -29,7 +29,7 @@
"node-html-parser": "7.0.1"
},
"devDependencies": {
"@anthropic-ai/sdk": "0.65.0",
"@anthropic-ai/sdk": "0.66.0",
"@braintree/sanitize-url": "7.1.1",
"@electron/remote": "2.1.3",
"@preact/preset-vite": "2.10.2",
@ -81,7 +81,7 @@
"debounce": "2.2.0",
"debug": "4.4.3",
"ejs": "3.1.10",
"electron": "38.2.2",
"electron": "38.3.0",
"electron-debug": "4.1.0",
"electron-window-state": "5.0.3",
"escape-html": "1.0.3",

View File

@ -3,7 +3,7 @@
"back-in-note-history": "Navegar a la nota previa en el historial",
"forward-in-note-history": "Navegar a la nota siguiente en el historial",
"open-jump-to-note-dialog": "Abrir cuadro de diálogo \"Saltar a nota\"",
"scroll-to-active-note": "Desplazarse a la nota activa en el árbol de notas",
"scroll-to-active-note": "Desplazar el árbol de notas a la nota activa",
"quick-search": "Activar barra de búsqueda rápida",
"search-in-subtree": "Buscar notas en el subárbol de la nota activa",
"expand-subtree": "Expandir el subárbol de la nota actual",
@ -380,8 +380,8 @@
"reload-frontend-app": "Recargar aplicación del cliente",
"run-active-note": "Ejecutar nota activa",
"render-active-note": "Generar nota activa",
"back-in-note-history": "Anterior en el historial de notas",
"forward-in-note-history": "Posterior en el historial de notas",
"back-in-note-history": "Atrás en el historial de notas",
"forward-in-note-history": "Avanzar en el historial de notas",
"cut-notes-to-clipboard": "Cortar notas al portapapeles",
"select-all-notes-in-parent": "Seleccionar todas las notas en padre",
"show-backend-log": "Mostrar registro del servidor",

View File

@ -2,43 +2,152 @@
"keyboard_action_names": {
"zoom-in": "Ingrandisci",
"reset-zoom-level": "Ripristina il livello di ingrandimento",
"zoom-out": "Riduci",
"toggle-full-screen": "Attiva/disattiva lo Schermo Intero",
"toggle-left-pane": "Attiva/disattiva il Pannello Sinistro",
"zoom-out": "Rimpicciolisci",
"toggle-full-screen": "Attiva/Disattiva la modalità a schermo intero",
"toggle-left-pane": "Attiva/Disattiva il pannello sinistro",
"toggle-zen-mode": "Attiva/disattiva la modalità zen",
"toggle-right-pane": "Attiva/disattiva il Pannello Destro",
"toggle-system-tray-icon": "Attiva/disattiva l'Icona nel Vassoio di Sistema",
"toggle-note-hoisting": "Attiva/disattiva l'Ancoraggio della Nota",
"unhoist-note": "Disancora la Nota",
"reload-frontend-app": "Ricarica l'Applicazione Frontend",
"open-developer-tools": "Apri gli Strumenti da Sviluppatore",
"find-in-text": "Cerca nel Testo",
"print-active-note": "Stampa la Nota Attiva",
"toggle-right-pane": "Attiva/disattiva il pannello destro",
"toggle-system-tray-icon": "Attiva/Disattiva l'Icona nel vassoio di sistema",
"toggle-note-hoisting": "Attiva/Disattiva l'ancoraggio della Nota",
"unhoist-note": "Disancora la nota",
"reload-frontend-app": "Ricarica l'applicazione frontend",
"open-developer-tools": "Apri gli strumenti per sviluppatori",
"find-in-text": "Cerca nel testo",
"print-active-note": "Stampa la nota attiva",
"export-active-note-as-pdf": "Esporta la nota attiva come PDF",
"open-note-externally": "Apri Esternamente la Nota",
"open-note-externally": "Apri la nota esternamente",
"run-active-note": "Esegui la Nota Attiva",
"render-active-note": "Renderizza nota attiva"
"render-active-note": "Renderizza nota attiva",
"back-in-note-history": "Torna alla cronologia della nota",
"forward-in-note-history": "Avanti nella cronologia della nota",
"jump-to-note": "Vai a...",
"command-palette": "Menù dei comandi",
"scroll-to-active-note": "Scorri alla nota attiva",
"quick-search": "Ricerca rapida",
"search-in-subtree": "Ricerca in sotto-albero",
"expand-subtree": "Espandi sotto-albero",
"collapse-tree": "Comprimi albero",
"collapse-subtree": "Comprimi sotto-albero",
"sort-child-notes": "Ordina le note figlie",
"create-note-after": "Crea nota dopo",
"create-note-into": "Crea nota dentro",
"create-note-into-inbox": "Crea nota in Inbox",
"delete-notes": "Elimina note",
"move-note-up": "Sposta nota in alto",
"move-note-down": "Sposta nota in basso",
"move-note-up-in-hierarchy": "Sposta nota in alto nella gerarchia",
"move-note-down-in-hierarchy": "Sposta nota in basso nella gerarchia",
"edit-note-title": "Modifica il titolo della nota",
"edit-branch-prefix": "Modifica il prefisso del ramo",
"clone-notes-to": "Clona note in",
"move-notes-to": "Sposta note in",
"copy-notes-to-clipboard": "Copia note negli appunti",
"paste-notes-from-clipboard": "Incolla note dagli appunti",
"cut-notes-to-clipboard": "Taglia note negli appunti",
"select-all-notes-in-parent": "Seleziona tutte le note al livello superiore",
"add-note-above-to-selection": "Aggiungi una nota sopra la selezione",
"add-note-below-to-selection": "Aggiungi nota sotto la selezione",
"duplicate-subtree": "Duplica sotto-albero",
"open-new-tab": "Apri nuova scheda",
"close-active-tab": "Chiudi scheda attiva",
"reopen-last-tab": "Apri ultima scheda",
"activate-next-tab": "Attiva scheda seguente",
"activate-previous-tab": "Attiva scheda precedente",
"open-new-window": "Apri nuova finestra",
"switch-to-first-tab": "Vai alla prima scheda",
"switch-to-second-tab": "Vai alla seconda scheda",
"switch-to-third-tab": "Vai alla terza scheda",
"switch-to-fourth-tab": "Vai alla quarta scheda",
"switch-to-fifth-tab": "Vai alla quinta scheda",
"switch-to-sixth-tab": "Vai alla sesta scheda",
"switch-to-seventh-tab": "Vai alla settima scheda",
"switch-to-eighth-tab": "Vai alla ottava scheda",
"switch-to-ninth-tab": "Vai alla nona scheda",
"switch-to-last-tab": "Vai all'ultima scheda",
"show-note-source": "Mostra sorgente della nota",
"show-options": "Mostra opzioni",
"show-revisions": "Mostra revisioni",
"show-recent-changes": "Mostra cambiamenti recenti",
"show-sql-console": "Mostra console SQL",
"show-backend-log": "Mostra log del backend",
"show-help": "Mostra aiuto",
"show-cheatsheet": "Mostra scheda riassuntiva",
"add-link-to-text": "Aggiungi un collegamento al testo",
"follow-link-under-cursor": "Segui collegamento sotto il cursore",
"insert-date-and-time-to-text": "Inserisci data ed ora nel testo",
"paste-markdown-into-text": "Incolla markdown nel testo",
"cut-into-note": "Taglia in una nota",
"add-include-note-to-text": "Aggiungi una nota inclusa nel testo",
"edit-read-only-note": "Modifica nota in sola lettura",
"add-new-label": "Aggiungi una nuova etichetta",
"add-new-relation": "Aggiungi una nuova relazione",
"toggle-ribbon-tab-classic-editor": "Mostra/Nascondi il nastro delle schede nell'editor classico",
"copy-without-formatting": "Copia senza formattazione",
"force-save-revision": "Forza il salvataggio della revisione",
"toggle-ribbon-tab-basic-properties": "Mostra/Nascondi le proprietà di base",
"toggle-ribbon-tab-book-properties": "Mostra/Nascondi le proprietà del libro",
"toggle-ribbon-tab-file-properties": "Mostra/Nascondi le proprietà del file",
"toggle-ribbon-tab-image-properties": "Mostra/Nascondi le proprietà dell'immagine",
"toggle-ribbon-tab-owned-attributes": "Mostra/Nascondi le proprietà proprie",
"toggle-ribbon-tab-inherited-attributes": "Mostra/Nascondi le proprietà ereditate",
"toggle-ribbon-tab-promoted-attributes": "Mostra/Nascondi le proprietà promosse",
"toggle-ribbon-tab-note-map": "Mostra/Nascondi la mappa delle note",
"toggle-ribbon-tab-note-info": "Mostra/Nascondi le informazioni sulla nota",
"toggle-ribbon-tab-note-paths": "Mostra/Nascondi i percorsi della nota",
"toggle-ribbon-tab-similar-notes": "Mostra/Nascondi le note simili"
},
"hidden-subtree": {
"options-title": "Opzioni",
"appearance-title": "Aspetto",
"shortcuts-title": "Scorciatoie",
"text-notes": "Note di Testo",
"code-notes-title": "Note di Codice",
"text-notes": "Note di testo",
"code-notes-title": "Note di codice",
"images-title": "Immagini",
"spellcheck-title": "Controllo Ortografico",
"spellcheck-title": "Controllo ortografico",
"password-title": "Password",
"multi-factor-authentication-title": "MFA",
"multi-factor-authentication-title": "Autenticazione a più fattori",
"etapi-title": "ETAPI",
"backup-title": "Backup",
"sync-title": "Sincronizza",
"ai-llm-title": "IA/LLM",
"other": "Altro",
"advanced-title": "Avanzato",
"user-guide": "Guida Utente",
"visible-launchers-title": "Lanciatori Visibili",
"localization": "Lingua e Regione",
"inbox-title": "Posta in arrivo"
"user-guide": "Guida utente",
"visible-launchers-title": "Scorciatoie visibili",
"localization": "Lingua e regione",
"inbox-title": "Posta in arrivo",
"root-title": "Note nascoste",
"search-history-title": "Storico delle ricerche",
"note-map-title": "Mappa delle note",
"sql-console-history-title": "Storico della console SQL",
"shared-notes-title": "Note condivise",
"bulk-action-title": "Azioni di gruppo",
"backend-log-title": "Log del backend",
"user-hidden-title": "Utente nascosto",
"launch-bar-templates-title": "Modelli di barra delle scorciatoie",
"base-abstract-launcher-title": "Scorciatoia di base astratta",
"command-launcher-title": "Avviatore di comandi",
"built-in-widget-title": "Widget integrato",
"spacer-title": "Separatore",
"custom-widget-title": "Widget personalizzato",
"launch-bar-title": "Barra delle scorciatoie",
"available-launchers-title": "Barre delle scorciatoie disponibili",
"go-to-previous-note-title": "Vai alla nota precedente",
"go-to-next-note-title": "Vai alla nota successiva",
"new-note-title": "Nuova nota",
"search-notes-title": "Ricerca note",
"jump-to-note-title": "Vai a...",
"calendar-title": "Calendario",
"recent-changes-title": "Cambiamenti recenti",
"bookmarks-title": "Segnalibri",
"open-today-journal-note-title": "Apri la nota di oggi",
"quick-search-title": "Ricerca rapida",
"protected-session-title": "Sessione protetta",
"sync-status-title": "Stato della sincronizzazione",
"settings-title": "Impostazioni",
"llm-chat-title": "Parla con Notes",
"note-launcher-title": "Scorciatoie delle note",
"script-launcher-title": "Scorciatoie degli script"
},
"notes": {
"new-note": "Nuova nota",
@ -69,7 +178,7 @@
"open_new_window": "Aprire una nuova finestra"
},
"migration": {
"old_version": "La migrazione diretta dalla tua versione attuale non è supportata. Si prega di aggiornare prima all'ultima versione v0.60.4 e solo dopo a questa versione.",
"old_version": "La migrazione diretta dalla tua versione attuale non è supportata. Aggiorna prima all'ultima versione v0.60.4 e solo dopo a questa versione.",
"error_message": "Errore durante la migrazione alla versione {{version}}: {{stack}}",
"wrong_db_version": "La versione del database ({{version}}) è più recente di quanto l'applicazione si aspetti ({{targetVersion}}), il che significa che è stato creato da una versione più nuova e incompatibile di Trilium. Aggiorna Trilium all'ultima versione per risolvere questo problema."
},
@ -78,29 +187,34 @@
},
"share_theme": {
"site-theme": "Tema del sito",
"search_placeholder": "Cerca..."
"search_placeholder": "Cerca...",
"image_alt": "Immagine dell'articolo",
"last-updated": "Ultimo aggiornamento il {{- date}}",
"subpages": "Sottopagine:",
"on-this-page": "In questa pagina",
"expand": "Espandi"
},
"keyboard_actions": {
"back-in-note-history": "Navigare alla nota precedente della cronologia",
"forward-in-note-history": "Navigare alla prossima nota della cronologia",
"back-in-note-history": "Naviga alla nota precedente della cronologia",
"forward-in-note-history": "Naviga alla prossima nota della cronologia",
"open-jump-to-note-dialog": "Apri la finestra di dialogo \"Salta alla nota\"",
"open-command-palette": "Apri la palette dei comandi",
"open-command-palette": "Apri il menù dei comandi",
"scroll-to-active-note": "Scorri l'albero fino alla nota attiva",
"quick-search": "Attiva la barra di ricerca rapida",
"search-in-subtree": "Cerca le note nel sotto albero della nota attiva",
"expand-subtree": "Espande il sotto albero della nota corrente",
"collapse-tree": "Contrae l'albero completo delle note",
"collapse-subtree": "Contrae il sotto albero della nota corrente",
"search-in-subtree": "Cerca le note nel sotto-albero della nota attiva",
"expand-subtree": "Espandi il sotto-albero della nota corrente",
"collapse-tree": "Comprime l'albero completo delle note",
"collapse-subtree": "Comprime il sotto-albero della nota corrente",
"sort-child-notes": "Ordina le note figlio",
"creating-and-moving-notes": "Crea e sposta le note",
"create-note-after": "Crea una nota dopo quella attiva",
"create-note-into": "Crea una nota come figlia di quella attiva",
"create-note-into-inbox": "Creare una nota nella casella di posta (se definita) o nella nota del giorno",
"delete-note": "Elimina una nota",
"move-note-up": "Sposta su una nota",
"move-note-down": "Sposta giù una nota",
"create-note-into-inbox": "Crea una nota nella casella di posta (se definita) o nella nota del giorno",
"delete-note": "Elimina la nota",
"move-note-up": "Sposta su la nota",
"move-note-down": "Sposta giù la nota",
"move-note-up-in-hierarchy": "Sposta su la nota nella gerarchia",
"move-note-down-in-hierarchy": "Sposta giù una nota nella gerarchia",
"move-note-down-in-hierarchy": "Sposta giù la nota nella gerarchia",
"edit-note-title": "Salta dall'albero al dettaglio della nota e modifica il titolo",
"edit-branch-prefix": "Mostra la finestra di dialogo \"Modifica il prefisso del ramo\"",
"clone-notes-to": "Clona le note selezionate",
@ -112,7 +226,7 @@
"select-all-notes-in-parent": "Seleziona tutte le note dal livello di nota corrente",
"add-note-above-to-the-selection": "Aggiungi una nota sopra alla selezione",
"add-note-below-to-selection": "Aggiungi una nota sotto alla selezione",
"duplicate-subtree": "Duplica il sotto albero",
"duplicate-subtree": "Duplica il sotto-albero",
"tabs-and-windows": "Schede e Finestre",
"open-new-tab": "Apri una nuova scheda",
"close-active-tab": "Chiudi la scheda attiva",
@ -132,13 +246,13 @@
"ninth-tab": "Attiva la nona scheda nella lista",
"last-tab": "Attiva l'ultima scheda nell'elenco",
"dialogs": "Finestre di dialogo",
"show-note-source": "Mostra la finestra di dialogo \"Sorgente della Nota\"",
"show-note-source": "Mostra la finestra di dialogo \"Sorgente della nota\"",
"show-options": "Apri la pagina \"Opzioni\"",
"show-revisions": "Mostra la finestra di dialogo \"Revisione della Nota\"",
"show-recent-changes": "Mostra la finestra di dialogo \"Modifiche Recenti\"",
"show-revisions": "Mostra la finestra di dialogo \"Revisione della nota\"",
"show-recent-changes": "Mostra la finestra di dialogo \"Modifiche recenti\"",
"show-sql-console": "Apri la pagina \"Console SQL\"",
"show-backend-log": "Apri la pagina \"Log del Backend\"",
"show-help": "Apri la Guida Utente integrata",
"show-backend-log": "Apri la pagina \"Log del backend\"",
"show-help": "Apri la guida utente integrata",
"show-cheatsheet": "Mostra una finestra modale con le operazioni comuni da tastiera",
"text-note-operations": "Operazioni sulle note di testo",
"add-link-to-text": "Apri la finestra di dialogo per aggiungere il collegamento al testo",
@ -151,19 +265,171 @@
"attributes-labels-and-relations": "Attributi (etichette e relazioni)",
"add-new-label": "Crea una nuova etichetta",
"create-new-relation": "Crea una nuova relazione",
"ribbon-tabs": "Nastro delle schede",
"toggle-basic-properties": "Mostra/nascondi le Proprietà di Base",
"toggle-file-properties": "Attiva Proprietà del file",
"toggle-image-properties": "Attiva Proprietà Immagine",
"toggle-owned-attributes": "Attiva Attributi Propri",
"toggle-inherited-attributes": "Attiva Attributi Ereditati",
"toggle-promoted-attributes": "Attiva Attributi Promossi",
"toggle-link-map": "Attiva Mappa Link",
"toggle-note-info": "Attiva Informazioni Nota",
"toggle-note-paths": "Attiva Percorsi Note",
"toggle-similar-notes": "Attiva Note Simili",
"ribbon-tabs": "Barra delle schede",
"toggle-basic-properties": "Mostra/Nascondi le proprietà di base",
"toggle-file-properties": "Mostra/Nascondi le proprietà del file",
"toggle-image-properties": "Mostra/Nascondi le proprietà dell'immagine",
"toggle-owned-attributes": "Mostra/Nascondi gli attributi propri",
"toggle-inherited-attributes": "Mostra/Nascondi gli attributi ereditati",
"toggle-promoted-attributes": "Mostra/Nascondi gli attributi promossi",
"toggle-link-map": "Mostra/Nascondi la mappa dei collegamenti",
"toggle-note-info": "Mostra/Nascondi le informazioni sulla nota",
"toggle-note-paths": "Mostra/Nascondi i percorsi della nota",
"toggle-similar-notes": "Mostra/Nascondi note simili",
"other": "Altro",
"toggle-right-pane": "Attiva/disattiva la visualizzazione del riquadro destro, che include l'indice e gli elementi evidenziati",
"print-active-note": "Stampa nota attiva"
"toggle-right-pane": "Attiva/Disattiva la visualizzazione del riquadro destro, che include l'indice e gli elementi evidenziati",
"print-active-note": "Stampa nota attiva",
"open-note-externally": "Apri nota come file con l'applicazione predefinita",
"reload-frontend-app": "Ricarica frontend",
"open-dev-tools": "Apri strumenti di svilippo",
"toggle-full-screen": "Attiva la modalità a schermo intero",
"zoom-out": "Rimpicciolisci",
"zoom-in": "Ingrandisci",
"render-active-note": "Elabora (ri-elabora) la nota corrente",
"run-active-note": "Esegui nota JavaScript corrente (frontend/backend)",
"toggle-note-hoisting": "Cambia l'ancoraggio della nota corrente",
"find-in-text": "Mostra/Nascondi pannello di ricerca",
"note-navigation": "Navigazione note",
"reset-zoom-level": "Reimposta il livello di ingrandimento",
"copy-without-formatting": "Copia il testo selezionato senza formattazione",
"force-save-revision": "Forza la creazione o il salvataggio di una nuova revisione della nota corrente",
"toggle-book-properties": "Mostra/Nascondi le proprietà della collezione",
"export-as-pdf": "Esporta la nota corrente come PDF",
"toggle-zen-mode": "Abilita/disabilita la modalità Zen (Interfaccia minimale per una scrittura senza distrazioni)",
"toggle-left-note-tree-panel": "Mostra/Nascondi il pannello di sinistra (albero delle note)",
"toggle-classic-editor-toolbar": "Mostra/Nascondi il pannello della formattazione per l'editor con la barra degli strumenti fissa",
"unhoist": "Rimuovi qualsiasi ancoraggio"
},
"desktop": {
"instance_already_running": "C'è già una istanza in esecuzione, verrà mostrata."
},
"login": {
"title": "Accedi",
"heading": "Trilium",
"incorrect-totp": "Il codice TOTP è errato. Riprovare.",
"incorrect-password": "Le credenziali sono errate. Riprovare.",
"password": "Password",
"remember-me": "Ricorda l'accesso",
"button": "Accedi",
"sign_in_with_sso": "Accedi con {{ ssoIssuerName }}"
},
"set_password": {
"title": "Imposta password",
"heading": "Imposta password",
"description": "Prima di poter usare Trilium dal web, occorre impostare una password. Questa password sarà necessaria per accedere.",
"password": "Password",
"password-confirmation": "Conferma della password",
"button": "Imposta password"
},
"javascript-required": "Trilium richiede JavaScript abilitato per funzionare.",
"setup": {
"heading": "Configurazione di Trilium Notes",
"new-document": "Sono un nuovo utente, e desidero creare un nuovo documento Trilium per le mie note",
"sync-from-desktop": "Ho già una istanza desktop, e desidero configurare la sincronizzazione con quest'ultima",
"sync-from-server": "Ho già una istanza server, e desidero configurare la sincronizzazione con quest'ultima",
"next": "Avanti",
"init-in-progress": "Inizializzazione del documento in corso",
"redirecting": "Sarai reindirizzato a breve all'applicazione.",
"title": "Configurazione"
},
"setup_sync-from-desktop": {
"heading": "Sincronizza dal desktop",
"description": "Questa configurazione deve essere iniziata dalla istanza desktop:",
"step1": "Apri la tua istanza desktop di Trilium Notes.",
"step2": "Dal menù di Trilium, seleziona \"Opzioni\".",
"step3": "Clicca sulla categoria \"Sincronizzazione\".",
"step4": "Imposta \"{{- host}}\" come l'indirizzo dell'istanza server e clicca \"Salva\".",
"step5": "Clicca \"Prova sincronizzazione\" per verificare la connessione.",
"step6": "Dopo aver completato questi passaggi, clicca {{- link}}.",
"step6-here": "qui"
},
"setup_sync-from-server": {
"heading": "Sincronizza dal server",
"instructions": "Inserire l'indirizzo e le credenziali del server Trilium. L'intero documento Trilium verrà scaricato dal server, e sarà configurata la sincronizzazione allo stesso. L'operazione potrebbe impiegare un po' di tempo, in base alla velocità della connessione e alla dimensione del documento.",
"server-host": "Indirizzo del server Trilium",
"server-host-placeholder": "https://<nome host>:<porta>",
"proxy-server": "Server proxy (facoltativo)",
"proxy-server-placeholder": "https://<nome host>:<porta>",
"note": "Note:",
"proxy-instruction": "Se il campo del proxy viene lasciato vuoto, il proxy di sistema verrà utilizzato (si applica solo all'applicazione desktop)",
"password": "Password",
"password-placeholder": "Password",
"back": "Indietro",
"finish-setup": "Termina configurazione"
},
"setup_sync-in-progress": {
"heading": "Sincronizzazione in corso",
"successful": "La sincronizzazione è stata configurata correttamente. Ci potrebbe volere un po' di tempo prima che la sincronizzazione iniziale termini. Appena sarà terminata, sarai ri-indirizzato alla pagina di accesso.",
"outstanding-items": "Elementi eccezionali in sincronizzazione:",
"outstanding-items-default": "N/A"
},
"share_404": {
"title": "Pagina non trovata",
"heading": "Pagina non trovata"
},
"share_page": {
"parent": "padre:",
"clipped-from": "Questa nota è stata estratta inizialmente da {{- url}}",
"child-notes": "Note figlie:",
"no-content": "Questa nota è vuota."
},
"weekdays": {
"monday": "Lunedì",
"tuesday": "Martedì",
"wednesday": "Mercoledì",
"thursday": "Giovedì",
"friday": "Venerdì",
"saturday": "Sabato",
"sunday": "Domenica"
},
"weekdayNumber": "Settimana n. {weekNumber}",
"months": {
"january": "Gennaio",
"february": "Febbraio",
"march": "Marzo",
"april": "Aprile",
"may": "Maggio",
"june": "Giugno",
"july": "Luglio",
"august": "Agosto",
"september": "Settembre",
"october": "Ottobre",
"november": "Novembre",
"december": "Dicembre"
},
"quarterNumber": "Quadrimestre n. {quarterNumber}",
"special_notes": {
"search_prefix": "Ricerca:"
},
"test_sync": {
"not-configured": "L'host del server di sincronizzazione non è impostato. Configurare prima la sincronizzazione.",
"successful": "La sessione con il server di sincronizzazione è stata stabilita con successo. La sincronizzazione è iniziata."
},
"hidden_subtree_templates": {
"text-snippet": "Frammento di testo",
"description": "Descrizione",
"list-view": "Vista elenco",
"grid-view": "Vista griglia",
"calendar": "Calendario",
"table": "Tabella",
"geo-map": "Mappa geografica",
"start-date": "Data di inizio",
"end-date": "Data di fine",
"start-time": "Ora di inizio",
"end-time": "Ora di fine",
"geolocation": "Geolocalizzazione",
"built-in-templates": "Modelli integrati",
"board": "Tavola",
"status": "Stato",
"board_note_first": "Prima nota",
"board_note_second": "Seconda nota",
"board_note_third": "Terza nota",
"board_status_todo": "Da fare",
"board_status_progress": "In avanzamento",
"board_status_done": "Conclusi"
},
"sql_init": {
"db_not_initialized_desktop": "Database non inizializzato, seguire le istruzioni a schermo.",
"db_not_initialized_server": "Database non inizializzato, visitare la pagina di configurazione - http://[host-del-tuo-server]:{{port}} per ricevere istruzioni su come inizializzare Trilium."
}
}

View File

@ -103,6 +103,30 @@
"platform_big": "v{{version}} per {{platform}}",
"platform_small": "per {{platform}}",
"linux_big": "v{{version}} per Linux",
"linux_small": "per Linux"
"linux_small": "per Linux",
"more_platforms": "Più piattaforme e configurazione del server"
},
"social_buttons": {
"github": "GitHub",
"github_discussions": "GitHub Discussions",
"matrix": "Matrix",
"reddit": "Reddit"
},
"support_us": {
"title": "Supportaci",
"financial_donations_title": "Donazioni pecuniarie",
"financial_donations_description": "Trilium è costruito e mantenuto con <Link>centinaia di ore di lavoro</Link>. Il tuo supporto permette di mantenerlo open-source, di migliorare le funzionalità e di coprire i costi (ad esempio dell'hosting).",
"financial_donations_cta": "Considera di supportare lo sviluppatore principale dell'applicazione (<Link>eliandoran</Link>) attraverso:",
"github_sponsors": "Sponsor GitHub",
"paypal": "PayPal",
"buy_me_a_coffee": "Offrimi un caffè"
},
"footer": {
"copyright_community": "comunità"
},
"contribute": {
"title": "Altre possibilità di contribuzione",
"way_translate": "Traduci l'applicazione nella tua madrelingua su <Link>Weblate</Link>.",
"way_community": "Interagisci con la comunità su <Discussions>GitHub Discussions</Discussions> o su <Matrix>Matrix</Matrix>."
}
}

254
docs/README-es.md vendored
View File

@ -11,158 +11,164 @@
# Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)
![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\
![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium)
![GitHub Downloads (all assets, all
releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\
![Patrocinadores en GitHub](https://img.shields.io/github/sponsors/eliandoran)
![Patrocinadores en
LiberaPay](https://img.shields.io/liberapay/patrons/ElianDoran)\
![Descargas en Docker](https://img.shields.io/docker/pulls/triliumnext/trilium)
![Descargas en GitHub (todos los recursos, todas las
versiones)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\
[![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp)
[![Translation
status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/)
[![Estado de la
traducción](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/)
[English](./README.md) | [Chinese (Simplified)](./docs/README-ZH_CN.md) |
[Chinese (Traditional)](./docs/README-ZH_TW.md) | [Russian](./docs/README-ru.md)
| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) |
[Spanish](./docs/README-es.md)
[Inglés](./README.md) | [Chino (simplificado)](./docs/README-ZH_CN.md) | [Chino
(tradicional)](./docs/README-ZH_TW.md) | [Ruso](./docs/README-ru.md) |
[Japonés](./docs/README-ja.md) | [Italiano](./docs/README-it.md) |
[Español](./docs/README-es.md)
Trilium Notes is a free and open-source, cross-platform hierarchical note taking
application with focus on building large personal knowledge bases.
Trilium Notes es una aplicación gratuita, de código abierto y multiplataforma
para notas jerárquicas, orientada a crear amplias bases de conocimiento
personal.
See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for
quick overview:
Ver [capturas de
pantalla](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) para un
resumen rápido:
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="./docs/app.png" alt="Trilium Screenshot" width="1000"></a>
## 📚 Documentation
## 📚 Documentación
**Visit our comprehensive documentation at
**Accede a la documentación completa en
[docs.triliumnotes.org](https://docs.triliumnotes.org/)**
Our documentation is available in multiple formats:
- **Online Documentation**: Browse the full documentation at
La documentación está disponible en varios formatos:
- **Documentación en línea**: Consulta la documentación completa en
[docs.triliumnotes.org](https://docs.triliumnotes.org/)
- **In-App Help**: Press `F1` within Trilium to access the same documentation
directly in the application
- **GitHub**: Navigate through the [User
Guide](./docs/User%20Guide/User%20Guide/) in this repository
- **Ayuda en la aplicación**: Presiona `F1` dentro de Trilium para acceder a la
misma documentación directamente en la aplicación
- **GitHub**: Navega por la [Guía del
Usuario](./docs/User%20Guide/User%20Guide/) en este repositorio
### Quick Links
- [Getting Started Guide](https://docs.triliumnotes.org/)
- [Installation
Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md)
- [Docker
Setup](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md)
- [Upgrading
### Enlaces rápidos
- [Guía de inicio](https://docs.triliumnotes.org/)
- [Instrucciones de
instalación](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md)
- [Configuración de
Docker](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation/1.%20Installing%20the%20server/Using%20Docker.md)
- [Actualización de
TriliumNext](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Upgrading%20TriliumNext.md)
- [Basic Concepts and
Features](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md)
- [Patterns of Personal Knowledge
Base](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge)
- [Conceptos básicos y
funciones](./docs/User%20Guide/User%20Guide/Basic%20Concepts%20and%20Features/Notes.md)
- [Patrones para una base de conocimiento
personal](https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge)
## 🎁 Features
## 🎁 Características
* Notes can be arranged into arbitrarily deep tree. Single note can be placed
into multiple places in the tree (see
[cloning](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
* Rich WYSIWYG note editor including e.g. tables, images and
[math](https://triliumnext.github.io/Docs/Wiki/text-notes) with markdown
[autoformat](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)
* Support for editing [notes with source
code](https://triliumnext.github.io/Docs/Wiki/code-notes), including syntax
highlighting
* Fast and easy [navigation between
notes](https://triliumnext.github.io/Docs/Wiki/note-navigation), full text
search and [note
hoisting](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
* Seamless [note
versioning](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* Note [attributes](https://triliumnext.github.io/Docs/Wiki/attributes) can be
used for note organization, querying and advanced
[scripting](https://triliumnext.github.io/Docs/Wiki/scripts)
* UI available in English, German, Spanish, French, Romanian, and Chinese
(simplified and traditional)
* Direct [OpenID and TOTP
integration](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md)
for more secure login
* [Synchronization](https://triliumnext.github.io/Docs/Wiki/synchronization)
with self-hosted sync server
* there's a [3rd party service for hosting synchronisation
server](https://trilium.cc/paid-hosting)
* [Sharing](https://triliumnext.github.io/Docs/Wiki/sharing) (publishing) notes
to public internet
* Strong [note
encryption](https://triliumnext.github.io/Docs/Wiki/protected-notes) with
per-note granularity
* Sketching diagrams, based on [Excalidraw](https://excalidraw.com/) (note type
"canvas")
* [Relation maps](https://triliumnext.github.io/Docs/Wiki/relation-map) and
[link maps](https://triliumnext.github.io/Docs/Wiki/link-map) for visualizing
notes and their relations
* Mind maps, based on [Mind Elixir](https://docs.mind-elixir.com/)
* [Geo maps](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) with
location pins and GPX tracks
* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - see [Advanced
showcases](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) for automation
* Scales well in both usability and performance upwards of 100 000 notes
* Touch optimized [mobile
frontend](https://triliumnext.github.io/Docs/Wiki/mobile-frontend) for
smartphones and tablets
* Built-in [dark theme](https://triliumnext.github.io/Docs/Wiki/themes), support
for user themes
* [Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) and
[Markdown import & export](https://triliumnext.github.io/Docs/Wiki/markdown)
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) for easy
saving of web content
* Customizable UI (sidebar buttons, user-defined widgets, ...)
* [Metrics](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md), along
with a [Grafana
Dashboard](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json)
* Las notas se pueden organizar en un árbol de profundidad arbitraria. Una sola
nota puede colocarse en varios lugares del árbol (ver
[clonado](https://triliumnext.github.io/Docs/Wiki/cloning-notes))
* Editor de notas WYSIWYG completo, que incluye, por ejemplo, tablas, imágenes y
[matemáticas](https://triliumnext.github.io/Docs/Wiki/text-notes) con
[autoformato](https://triliumnext.github.io/Docs/Wiki/text-notes#autoformat)
en Markdown
* Soporte para editar [notas con código
fuente](https://triliumnext.github.io/Docs/Wiki/code-notes), incluyendo
resaltado de sintaxis
* [Navegación entre
notas](https://triliumnext.github.io/Docs/Wiki/note-navigation) rápida y
sencilla, búsqueda de texto completo y [elevación de
notas](https://triliumnext.github.io/Docs/Wiki/note-hoisting)
* Flujo continuo de [versionado de
notas](https://triliumnext.github.io/Docs/Wiki/note-revisions)
* Los [atributos](https://triliumnext.github.io/Docs/Wiki/attributes) de las
notas se pueden usar para organización, consultas y
[scripting](https://triliumnext.github.io/Docs/Wiki/scripts) avanzado
* Interfaz disponible en inglés, alemán, español, francés, rumano y chino
(simplificado y tradicional)
* Integración directa de [OpenID y
TOTP](./docs/User%20Guide/User%20Guide/Installation%20%26%20Setup/Server%20Installation/Multi-Factor%20Authentication.md)
para un inicio de sesión más seguro
* [Sincronización](https://triliumnext.github.io/Docs/Wiki/synchronization) con
servidor de sincronización autohospedado
* existe un [servicio de terceros para alojar el servidor de
sincronización](https://trilium.cc/paid-hosting)
* [Compartir](https://triliumnext.github.io/Docs/Wiki/sharing) (publicar) notas
en Internet público
* Fuerte [cifrado de
notas](https://triliumnext.github.io/Docs/Wiki/protected-notes) con
granularidad por nota
* Esbozo de diagramas, basado en [Excalidraw](https://excalidraw.com/) (tipo de
nota "lienzo")
* [Mapas de relaciones](https://triliumnext.github.io/Docs/Wiki/relation-map) y
[mapas de enlaces](https://triliumnext.github.io/Docs/Wiki/link-map) para
visualizar las notas y sus relaciones
* Mapas mentales, basados en [Mind Elixir](https://docs.mind-elixir.com/)
* [Mapas
geográficos](./docs/User%20Guide/User%20Guide/Note%20Types/Geo%20Map.md) con
marcadores de ubicación y rutas GPX
* [Scripting](https://triliumnext.github.io/Docs/Wiki/scripts) - ver [Casos de
uso avanzados](https://triliumnext.github.io/Docs/Wiki/advanced-showcases)
* [REST API](https://triliumnext.github.io/Docs/Wiki/etapi) para automatización
* Escala bien tanto en usabilidad como en rendimiento, incluso con más de
100.000 notas
* [Interfaz móvil](https://triliumnext.github.io/Docs/Wiki/mobile-frontend)
optimizada para pantallas táctiles, móviles y tabletas
* [Tema oscuro](https://triliumnext.github.io/Docs/Wiki/themes) integrado, con
soporte para temas personalizados
* Importación y exportación de
[Evernote](https://triliumnext.github.io/Docs/Wiki/evernote-import) y
[Markdown](https://triliumnext.github.io/Docs/Wiki/markdown)
* [Web Clipper](https://triliumnext.github.io/Docs/Wiki/web-clipper) para
guardar fácilmente contenido web
* Interfaz personalizable (botones de la barra lateral, widgets definidos por el
usuario, …)
* [Métricas](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics.md),
junto con un [Dashboard de
Grafana](./docs/User%20Guide/User%20Guide/Advanced%20Usage/Metrics/grafana-dashboard.json)
✨ Check out the following third-party resources/communities for more TriliumNext
related goodies:
✨ Consulta los siguientes recursos y comunidades de terceros para obtener más
contenido relacionado con TriliumNext:
- [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party
themes, scripts, plugins and more.
- [TriliumRocks!](https://trilium.rocks/) for tutorials, guides, and much more.
- [awesome-trilium](https://github.com/Nriver/awesome-trilium) para acceder a
temas, scripts, complementos y otros recursos de terceros.
- [TriliumRocks!](https://trilium.rocks/) para tutoriales, guías y mucho más.
## ❓Why TriliumNext?
## ❓¿Por qué TriliumNext?
The original Trilium developer ([Zadam](https://github.com/zadam)) has
graciously given the Trilium repository to the community project which resides
at https://github.com/TriliumNext
El desarrollador original de Trilium ([Zadam](https://github.com/zadam)) ha
cedido amablemente el repositorio de Trilium al proyecto comunitario, disponible
en https://github.com/TriliumNext
### ⬆️Migrating from Zadam/Trilium?
### ⬆️ ¿Migrando desde Zadam/Trilium?
There are no special migration steps to migrate from a zadam/Trilium instance to
a TriliumNext/Trilium instance. Simply [install
TriliumNext/Trilium](#-installation) as usual and it will use your existing
database.
No se requieren pasos especiales para migrar de una instancia de Zadam/Trilium a
TriliumNext/Trilium. Simplemente [instala TriliumNext/Trilium](#-installation)
como de costumbre, y utilizará la base de datos existente.
Versions up to and including
[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4) are
compatible with the latest zadam/trilium version of
[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Any later
versions of TriliumNext/Trilium have their sync versions incremented which
prevents direct migration.
Las versiones hasta
[v0.90.4](https://github.com/TriliumNext/Trilium/releases/tag/v0.90.4),
inclusive, son compatibles con la última versión de Zadam/Trilium
[v0.63.7](https://github.com/zadam/trilium/releases/tag/v0.63.7). Las versiones
posteriores de TriliumNext/Trilium incrementan su versión de sincronización, lo
que impide migrar directamente.
## 💬 Discuss with us
## 💬 Únete a la conversación
Feel free to join our official conversations. We would love to hear what
features, suggestions, or issues you may have!
Siéntete libre de unirte a nuestras conversaciones oficiales. ¡Nos interesa
mucho conocer tus funciones favoritas, sugerencias o posibles incidencias!
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (For synchronous
discussions.)
- The `General` Matrix room is also bridged to
- [Matrix](https://matrix.to/#/#triliumnext:matrix.org) (Para discusiones
síncronas.)
- La sala `General` de Matrix también está enlazada con
[XMPP](xmpp:discuss@trilium.thisgreat.party?join)
- [Github Discussions](https://github.com/TriliumNext/Trilium/discussions) (For
asynchronous discussions.)
- [Github Issues](https://github.com/TriliumNext/Trilium/issues) (For bug
reports and feature requests.)
- [Discusiones de GitHub](https://github.com/TriliumNext/Trilium/discussions)
(para discusiones asincrónicas.)
- [Problemas de GitHub](https://github.com/TriliumNext/Trilium/issues) (para
reportes de errores y solicitudes de funciones.)
## 🏗 Installation
## 🏗 Instalación
### Windows / MacOS
### Windows / macOS
Download the binary release for your platform from the [latest release
page](https://github.com/TriliumNext/Trilium/releases/latest), unzip the package

40
docs/README-it.md vendored
View File

@ -256,9 +256,9 @@ pnpm install
pnpm edit-docs:edit-docs
```
### Building the Executable
Download the repository, install dependencies using `pnpm` and then build the
desktop app for Windows:
### Compilare l'eseguibile
Scarica la repository, installa le dipendenze eseguendo `pnpm` e compila
l'applicazione desktop per Windows:
```shell
git clone https://github.com/TriliumNext/Trilium.git
cd Trilium
@ -266,31 +266,33 @@ pnpm install
pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32
```
For more details, see the [development
docs](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide).
Per più dettagli, consulta la [documentazione di
sviluppo](https://github.com/TriliumNext/Trilium/tree/main/docs/Developer%20Guide/Developer%20Guide).
### Developer Documentation
### Documentazione per sviluppatori
Please view the [documentation
guide](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md)
for details. If you have more questions, feel free to reach out via the links
described in the "Discuss with us" section above.
Visualizza la [guida sulla
documentazione](https://github.com/TriliumNext/Trilium/blob/main/docs/Developer%20Guide/Developer%20Guide/Environment%20Setup.md)
per i dettagli. Se hai altre domande, sentiti libero di contattarci tramite i
collegamenti presenti nella precedente sezione "Discuti con noi".
## 👏 Riconoscimenti
* [zadam](https://github.com/zadam) for the original concept and implementation
of the application.
* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the
application icon.
* [nriver](https://github.com/nriver) for his work on internationalization.
* [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas.
* [antoniotejada](https://github.com/nriver) for the original syntax highlight
widget.
* [zadam](https://github.com/zadam) per l'idea originale e l'implementazione
della applicazione.
* [Sarah Hussein](https://github.com/Sarah-Hussein) per il design della icona
della applicazione.
* [nriver](https://github.com/nriver) per il suo lavoro
sull'internazionalizzazione.
* [Thomas Frei](https://github.com/thfrei) per il suo lavoro originale sul
canvas.
* [antoniotejada](https://github.com/nriver) per lo strumento originale di
colorazione della sintassi.
* [Dosu](https://dosu.dev/) for providing us with the automated responses to
GitHub issues and discussions.
* [Tabler Icons](https://tabler.io/icons) for the system tray icons.
Trilium would not be possible without the technologies behind it:
Trilium non sarebbe possibile senza le tecnologie che lo supportano:
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - the visual editor behind
text notes. We are grateful for being offered a set of the premium features.

View File

@ -46,7 +46,7 @@
"chalk": "5.6.2",
"cross-env": "10.1.0",
"dpdm": "3.14.0",
"esbuild": "0.25.10",
"esbuild": "0.25.11",
"eslint": "9.37.0",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-playwright": "2.2.2",

View File

@ -15,7 +15,7 @@
"ckeditor5-premium-features": "47.0.0"
},
"devDependencies": {
"@smithy/middleware-retry": "4.4.3",
"@smithy/middleware-retry": "4.4.4",
"@types/jquery": "3.5.33"
}
}

View File

@ -27,7 +27,7 @@
"@typescript-eslint/eslint-plugin": "8.46.1",
"@typescript-eslint/parser": "8.46.1",
"dotenv": "17.2.3",
"esbuild": "0.25.10",
"esbuild": "0.25.11",
"eslint": "9.37.0",
"highlight.js": "11.11.1",
"typescript": "5.9.3"

1225
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff