mirror of
https://github.com/zadam/trilium.git
synced 2026-02-14 10:26:56 +01:00
Compare commits
2 Commits
renovate/r
...
feat/remov
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3d415a3a7 | ||
|
|
d7d411caf9 |
@@ -9,9 +9,9 @@
|
||||
"keywords": [],
|
||||
"author": "Elian Doran <contact@eliandoran.me>",
|
||||
"license": "AGPL-3.0-only",
|
||||
"packageManager": "pnpm@10.29.3",
|
||||
"packageManager": "pnpm@10.29.2",
|
||||
"devDependencies": {
|
||||
"@redocly/cli": "2.18.0",
|
||||
"@redocly/cli": "2.17.0",
|
||||
"archiver": "7.0.1",
|
||||
"fs-extra": "11.3.3",
|
||||
"react": "19.2.4",
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
"draggabilly": "3.0.0",
|
||||
"force-graph": "1.51.1",
|
||||
"globals": "17.3.0",
|
||||
"i18next": "25.8.6",
|
||||
"i18next": "25.8.4",
|
||||
"i18next-http-backend": "3.0.2",
|
||||
"jquery": "4.0.0",
|
||||
"jquery.fancytree": "2.38.5",
|
||||
@@ -54,14 +54,14 @@
|
||||
"leaflet": "1.9.4",
|
||||
"leaflet-gpx": "2.2.0",
|
||||
"mark.js": "8.11.1",
|
||||
"marked": "17.0.2",
|
||||
"marked": "17.0.1",
|
||||
"mermaid": "11.12.2",
|
||||
"mind-elixir": "5.8.0",
|
||||
"normalize.css": "8.0.1",
|
||||
"panzoom": "9.4.3",
|
||||
"preact": "10.28.3",
|
||||
"react-i18next": "16.5.4",
|
||||
"react-window": "2.2.7",
|
||||
"react-window": "2.2.6",
|
||||
"reveal.js": "5.2.1",
|
||||
"svg-pan-zoom": "3.6.2",
|
||||
"tabulator-tables": "6.3.1",
|
||||
@@ -78,7 +78,7 @@
|
||||
"@types/reveal.js": "5.2.2",
|
||||
"@types/tabulator-tables": "6.3.1",
|
||||
"copy-webpack-plugin": "13.0.1",
|
||||
"happy-dom": "20.6.1",
|
||||
"happy-dom": "20.5.0",
|
||||
"lightningcss": "1.31.1",
|
||||
"script-loader": "0.7.2",
|
||||
"vite-plugin-static-copy": "3.2.0"
|
||||
|
||||
@@ -101,8 +101,6 @@ export type CommandMappings = {
|
||||
showRevisions: CommandData & {
|
||||
noteId?: string | null;
|
||||
};
|
||||
showLlmChat: CommandData;
|
||||
createAiChat: CommandData;
|
||||
showOptions: CommandData & {
|
||||
section: string;
|
||||
};
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import dateNoteService from "../services/date_notes.js";
|
||||
import froca from "../services/froca.js";
|
||||
import noteCreateService from "../services/note_create.js";
|
||||
import openService from "../services/open.js";
|
||||
import options from "../services/options.js";
|
||||
import protectedSessionService from "../services/protected_session.js";
|
||||
import toastService from "../services/toast.js";
|
||||
import treeService from "../services/tree.js";
|
||||
import utils, { openInReusableSplit } from "../services/utils.js";
|
||||
import appContext, { type CommandListenerData } from "./app_context.js";
|
||||
@@ -248,34 +246,4 @@ export default class RootCommandExecutor extends Component {
|
||||
}
|
||||
}
|
||||
|
||||
async createAiChatCommand() {
|
||||
try {
|
||||
// Create a new AI Chat note at the root level
|
||||
const rootNoteId = "root";
|
||||
|
||||
const result = await noteCreateService.createNote(rootNoteId, {
|
||||
title: "New AI Chat",
|
||||
type: "aiChat",
|
||||
content: JSON.stringify({
|
||||
messages: [],
|
||||
title: "New AI Chat"
|
||||
})
|
||||
});
|
||||
|
||||
if (!result.note) {
|
||||
toastService.showError("Failed to create AI Chat note");
|
||||
return;
|
||||
}
|
||||
|
||||
await appContext.tabManager.openTabWithNoteWithHoisting(result.note.noteId, {
|
||||
activate: true
|
||||
});
|
||||
|
||||
toastService.showMessage("Created new AI Chat note");
|
||||
}
|
||||
catch (e) {
|
||||
console.error("Error creating AI Chat note:", e);
|
||||
toastService.showError(`Failed to create AI Chat note: ${(e as Error).message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ const RELATION = "relation";
|
||||
* end user. Those types should be used only for checking against, they are
|
||||
* not for direct use.
|
||||
*/
|
||||
export type NoteType = "file" | "image" | "search" | "noteMap" | "launcher" | "doc" | "contentWidget" | "text" | "relationMap" | "render" | "canvas" | "mermaid" | "book" | "webView" | "code" | "mindMap" | "aiChat";
|
||||
export type NoteType = "file" | "image" | "search" | "noteMap" | "launcher" | "doc" | "contentWidget" | "text" | "relationMap" | "render" | "canvas" | "mermaid" | "book" | "webView" | "code" | "mindMap";
|
||||
|
||||
export interface NotePathRecord {
|
||||
isArchived: boolean;
|
||||
|
||||
@@ -17,8 +17,7 @@ export const byNoteType: Record<Exclude<NoteType, "book">, string | null> = {
|
||||
render: null,
|
||||
search: null,
|
||||
text: null,
|
||||
webView: null,
|
||||
aiChat: null
|
||||
webView: null
|
||||
};
|
||||
|
||||
export const byBookType: Record<ViewTypeOptions, string | null> = {
|
||||
|
||||
@@ -53,7 +53,6 @@ export const NOTE_TYPES: NoteTypeMapping[] = [
|
||||
{ type: "file", title: t("note_types.file"), reserved: true },
|
||||
{ type: "image", title: t("note_types.image"), reserved: true },
|
||||
{ type: "launcher", mime: "", title: t("note_types.launcher"), reserved: true },
|
||||
{ type: "aiChat", mime: "application/json", title: t("note_types.ai-chat"), reserved: true }
|
||||
];
|
||||
|
||||
/** The maximum age in days for a template to be marked with the "New" badge */
|
||||
|
||||
@@ -133,49 +133,6 @@ async function handleMessage(event: MessageEvent<any>) {
|
||||
appContext.triggerEvent("apiLogMessages", { noteId: message.noteId, messages: message.messages });
|
||||
} else if (message.type === "toast") {
|
||||
toastService.showMessage(message.message);
|
||||
} else if (message.type === "llm-stream") {
|
||||
// ENHANCED LOGGING FOR DEBUGGING
|
||||
console.log(`[WS-CLIENT] >>> RECEIVED LLM STREAM MESSAGE <<<`);
|
||||
console.log(`[WS-CLIENT] Message details: sessionId=${message.sessionId}, hasContent=${!!message.content}, contentLength=${message.content ? message.content.length : 0}, hasThinking=${!!message.thinking}, hasToolExecution=${!!message.toolExecution}, isDone=${!!message.done}`);
|
||||
|
||||
if (message.content) {
|
||||
console.log(`[WS-CLIENT] CONTENT PREVIEW: "${message.content.substring(0, 50)}..."`);
|
||||
}
|
||||
|
||||
// Create the event with detailed logging
|
||||
console.log(`[WS-CLIENT] Creating CustomEvent 'llm-stream-message'`);
|
||||
const llmStreamEvent = new CustomEvent('llm-stream-message', { detail: message });
|
||||
|
||||
// Dispatch to multiple targets to ensure delivery
|
||||
try {
|
||||
console.log(`[WS-CLIENT] Dispatching event to window`);
|
||||
window.dispatchEvent(llmStreamEvent);
|
||||
console.log(`[WS-CLIENT] Event dispatched to window`);
|
||||
|
||||
// Also try document for completeness
|
||||
console.log(`[WS-CLIENT] Dispatching event to document`);
|
||||
document.dispatchEvent(new CustomEvent('llm-stream-message', { detail: message }));
|
||||
console.log(`[WS-CLIENT] Event dispatched to document`);
|
||||
} catch (err) {
|
||||
console.error(`[WS-CLIENT] Error dispatching event:`, err);
|
||||
}
|
||||
|
||||
// Debug current listeners (though we can't directly check for specific event listeners)
|
||||
console.log(`[WS-CLIENT] Active event listeners should receive this message now`);
|
||||
|
||||
// Detailed logging based on message type
|
||||
if (message.content) {
|
||||
console.log(`[WS-CLIENT] Content message: ${message.content.length} chars`);
|
||||
} else if (message.thinking) {
|
||||
console.log(`[WS-CLIENT] Thinking update: "${message.thinking}"`);
|
||||
} else if (message.toolExecution) {
|
||||
console.log(`[WS-CLIENT] Tool execution: action=${message.toolExecution.action}, tool=${message.toolExecution.tool || 'unknown'}`);
|
||||
if (message.toolExecution.result) {
|
||||
console.log(`[WS-CLIENT] Tool result preview: "${String(message.toolExecution.result).substring(0, 50)}..."`);
|
||||
}
|
||||
} else if (message.done) {
|
||||
console.log(`[WS-CLIENT] Completion signal received`);
|
||||
}
|
||||
} else if (message.type === "execute-script") {
|
||||
// TODO: Remove after porting the file
|
||||
// @ts-ignore
|
||||
|
||||
@@ -1,450 +0,0 @@
|
||||
/* LLM Chat Panel Styles */
|
||||
.note-context-chat {
|
||||
background-color: var(--main-background-color);
|
||||
}
|
||||
|
||||
/* Message Styling */
|
||||
.chat-message {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.message-avatar {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 50%;
|
||||
font-size: 1.25rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.user-avatar {
|
||||
background-color: var(--input-background-color);
|
||||
color: var(--cmd-button-icon-color);
|
||||
}
|
||||
|
||||
.assistant-avatar {
|
||||
background-color: var(--subtle-border-color, var(--main-border-color));
|
||||
color: var(--hover-item-text-color);
|
||||
}
|
||||
|
||||
.message-content {
|
||||
max-width: calc(100% - 50px);
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
|
||||
color: var(--main-text-color);
|
||||
}
|
||||
|
||||
.user-content {
|
||||
border-radius: 0.5rem 0.5rem 0 0.5rem !important;
|
||||
background-color: var(--input-background-color) !important;
|
||||
}
|
||||
|
||||
.assistant-content {
|
||||
border-radius: 0.5rem 0.5rem 0.5rem 0 !important;
|
||||
background-color: var(--main-background-color);
|
||||
border: 1px solid var(--subtle-border-color, var(--main-border-color));
|
||||
}
|
||||
|
||||
/* Tool Execution Styling */
|
||||
.tool-execution-info {
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 1.5rem;
|
||||
border: 1px solid var(--subtle-border-color);
|
||||
border-radius: 0.5rem;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
|
||||
background-color: var(--main-background-color);
|
||||
/* Add a subtle transition effect */
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.tool-execution-status {
|
||||
background-color: var(--accented-background-color, rgba(0, 0, 0, 0.03)) !important;
|
||||
border-radius: 0 !important;
|
||||
padding: 0.5rem !important;
|
||||
max-height: 250px !important;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.tool-execution-status .d-flex {
|
||||
border-bottom: 1px solid var(--subtle-border-color);
|
||||
padding-bottom: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.tool-step {
|
||||
padding: 0.5rem;
|
||||
margin-bottom: 0.75rem;
|
||||
border-radius: 0.375rem;
|
||||
background-color: var(--main-background-color);
|
||||
border: 1px solid var(--subtle-border-color);
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.tool-step:hover {
|
||||
background-color: rgba(0, 0, 0, 0.01);
|
||||
}
|
||||
|
||||
.tool-step:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Tool step specific styling */
|
||||
.tool-step.executing {
|
||||
background-color: rgba(0, 123, 255, 0.05);
|
||||
border-color: rgba(0, 123, 255, 0.2);
|
||||
}
|
||||
|
||||
.tool-step.result {
|
||||
background-color: rgba(40, 167, 69, 0.05);
|
||||
border-color: rgba(40, 167, 69, 0.2);
|
||||
}
|
||||
|
||||
.tool-step.error {
|
||||
background-color: rgba(220, 53, 69, 0.05);
|
||||
border-color: rgba(220, 53, 69, 0.2);
|
||||
}
|
||||
|
||||
/* Tool result formatting */
|
||||
.tool-result pre {
|
||||
margin: 0.5rem 0;
|
||||
padding: 0.5rem;
|
||||
background-color: rgba(0, 0, 0, 0.03);
|
||||
border-radius: 0.25rem;
|
||||
overflow: auto;
|
||||
max-height: 300px;
|
||||
}
|
||||
|
||||
.tool-result code {
|
||||
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.tool-args code {
|
||||
display: block;
|
||||
padding: 0.5rem;
|
||||
background-color: rgba(0, 0, 0, 0.03);
|
||||
border-radius: 0.25rem;
|
||||
margin-top: 0.25rem;
|
||||
font-size: 0.85em;
|
||||
color: var(--muted-text-color);
|
||||
white-space: pre-wrap;
|
||||
overflow: auto;
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
/* Tool Execution in Chat Styling */
|
||||
.chat-tool-execution {
|
||||
padding: 0 0 0 36px; /* Aligned with message content, accounting for avatar width */
|
||||
width: 100%;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.tool-execution-container {
|
||||
background-color: var(--accented-background-color, rgba(245, 247, 250, 0.7));
|
||||
border: 1px solid var(--subtle-border-color);
|
||||
border-radius: 0.375rem;
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
|
||||
overflow: hidden;
|
||||
max-width: calc(100% - 20px);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.tool-execution-container.collapsed {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tool-execution-header {
|
||||
background-color: var(--main-background-color);
|
||||
border-bottom: 1px solid var(--subtle-border-color);
|
||||
margin-bottom: 0.5rem;
|
||||
color: var(--muted-text-color);
|
||||
font-weight: 500;
|
||||
padding: 0.6rem 0.8rem;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.tool-execution-header:hover {
|
||||
background-color: var(--hover-item-background-color, rgba(0, 0, 0, 0.03));
|
||||
}
|
||||
|
||||
.tool-execution-toggle {
|
||||
color: var(--muted-text-color) !important;
|
||||
background: transparent !important;
|
||||
padding: 0.2rem 0.4rem !important;
|
||||
transition: transform 0.2s ease;
|
||||
}
|
||||
|
||||
.tool-execution-toggle:hover {
|
||||
color: var(--main-text-color) !important;
|
||||
}
|
||||
|
||||
.tool-execution-toggle i.bx-chevron-down {
|
||||
transform: rotate(0deg);
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.tool-execution-toggle i.bx-chevron-right {
|
||||
transform: rotate(-90deg);
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.tool-execution-chat-steps {
|
||||
padding: 0.5rem;
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
/* Make error text more visible */
|
||||
.text-danger {
|
||||
color: #dc3545 !important;
|
||||
}
|
||||
|
||||
/* Sources Styling */
|
||||
.sources-container {
|
||||
background-color: var(--accented-background-color, var(--main-background-color));
|
||||
border-top: 1px solid var(--main-border-color);
|
||||
color: var(--main-text-color);
|
||||
}
|
||||
|
||||
.source-item {
|
||||
transition: all 0.2s ease;
|
||||
background-color: var(--main-background-color);
|
||||
border-color: var(--subtle-border-color, var(--main-border-color)) !important;
|
||||
}
|
||||
|
||||
.source-item:hover {
|
||||
background-color: var(--link-hover-background, var(--hover-item-background-color));
|
||||
}
|
||||
|
||||
.source-link {
|
||||
color: var(--link-color, var(--hover-item-text-color));
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.source-link:hover {
|
||||
color: var(--link-hover-color, var(--hover-item-text-color));
|
||||
}
|
||||
|
||||
/* Input Area Styling */
|
||||
.note-context-chat-form {
|
||||
background-color: var(--main-background-color);
|
||||
border-top: 1px solid var(--main-border-color);
|
||||
}
|
||||
|
||||
.context-option-container {
|
||||
padding: 0.5rem 0;
|
||||
border-bottom: 1px solid var(--subtle-border-color, var(--main-border-color));
|
||||
color: var(--main-text-color);
|
||||
}
|
||||
|
||||
.chat-input-container {
|
||||
padding-top: 0.5rem;
|
||||
}
|
||||
|
||||
.note-context-chat-input {
|
||||
border-color: var(--subtle-border-color, var(--main-border-color));
|
||||
background-color: var(--input-background-color) !important;
|
||||
color: var(--input-text-color) !important;
|
||||
resize: none;
|
||||
transition: all 0.2s ease;
|
||||
min-height: 50px;
|
||||
max-height: 150px;
|
||||
}
|
||||
|
||||
.note-context-chat-input:focus {
|
||||
border-color: var(--input-focus-outline-color, var(--main-border-color));
|
||||
box-shadow: 0 0 0 0.25rem var(--input-focus-outline-color, rgba(13, 110, 253, 0.25));
|
||||
}
|
||||
|
||||
.note-context-chat-send-button {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
align-self: flex-end;
|
||||
background-color: var(--cmd-button-background-color) !important;
|
||||
color: var(--cmd-button-text-color) !important;
|
||||
}
|
||||
|
||||
/* Loading Indicator */
|
||||
.loading-indicator {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 1rem;
|
||||
color: var(--muted-text-color);
|
||||
}
|
||||
|
||||
/* Thinking display styles */
|
||||
.llm-thinking-container {
|
||||
margin: 1rem 0;
|
||||
animation: fadeInUp 0.3s ease-out;
|
||||
}
|
||||
|
||||
.thinking-bubble {
|
||||
background-color: var(--accented-background-color, var(--main-background-color));
|
||||
border: 1px solid var(--subtle-border-color, var(--main-border-color));
|
||||
border-radius: 0.75rem;
|
||||
padding: 0.75rem;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.thinking-bubble:hover {
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
.thinking-bubble::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
inset-inline-start: -100%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: linear-gradient(90deg, transparent, var(--hover-item-background-color, rgba(0, 0, 0, 0.03)), transparent);
|
||||
animation: shimmer 2s infinite;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.thinking-header {
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
border-radius: 0.375rem;
|
||||
}
|
||||
|
||||
.thinking-header:hover {
|
||||
background-color: var(--hover-item-background-color, rgba(0, 0, 0, 0.03));
|
||||
padding: 0.25rem;
|
||||
margin: -0.25rem;
|
||||
}
|
||||
|
||||
.thinking-dots {
|
||||
display: flex;
|
||||
gap: 3px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.thinking-dots span {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
background-color: var(--link-color, var(--hover-item-text-color));
|
||||
border-radius: 50%;
|
||||
animation: thinkingPulse 1.4s infinite ease-in-out;
|
||||
}
|
||||
|
||||
.thinking-dots span:nth-child(1) {
|
||||
animation-delay: -0.32s;
|
||||
}
|
||||
|
||||
.thinking-dots span:nth-child(2) {
|
||||
animation-delay: -0.16s;
|
||||
}
|
||||
|
||||
.thinking-dots span:nth-child(3) {
|
||||
animation-delay: 0s;
|
||||
}
|
||||
|
||||
.thinking-label {
|
||||
font-weight: 500;
|
||||
color: var(--link-color, var(--hover-item-text-color)) !important;
|
||||
}
|
||||
|
||||
.thinking-toggle {
|
||||
color: var(--muted-text-color) !important;
|
||||
transition: transform 0.2s ease;
|
||||
background: transparent !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
.thinking-toggle:hover {
|
||||
color: var(--main-text-color) !important;
|
||||
}
|
||||
|
||||
.thinking-toggle.expanded {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.thinking-content {
|
||||
margin-top: 0.75rem;
|
||||
padding-top: 0.75rem;
|
||||
border-top: 1px solid var(--subtle-border-color, var(--main-border-color));
|
||||
animation: expandDown 0.3s ease-out;
|
||||
}
|
||||
|
||||
.thinking-text {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.5;
|
||||
color: var(--main-text-color);
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
background-color: var(--input-background-color);
|
||||
padding: 0.75rem;
|
||||
border-radius: 0.5rem;
|
||||
border: 1px solid var(--subtle-border-color, var(--main-border-color));
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
transition: border-color 0.2s ease;
|
||||
}
|
||||
|
||||
.thinking-text:hover {
|
||||
border-color: var(--main-border-color);
|
||||
}
|
||||
|
||||
/* Animations */
|
||||
@keyframes thinkingPulse {
|
||||
0%, 80%, 100% {
|
||||
transform: scale(0.8);
|
||||
opacity: 0.6;
|
||||
}
|
||||
40% {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes shimmer {
|
||||
0% {
|
||||
inset-inline-start: -100%;
|
||||
}
|
||||
100% {
|
||||
inset-inline-start: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeInUp {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(10px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes expandDown {
|
||||
from {
|
||||
opacity: 0;
|
||||
max-height: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
max-height: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Responsive adjustments */
|
||||
@media (max-width: 768px) {
|
||||
.thinking-bubble {
|
||||
margin: 0.5rem 0;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
.thinking-text {
|
||||
font-size: 0.8rem;
|
||||
padding: 0.5rem;
|
||||
max-height: 200px;
|
||||
}
|
||||
}
|
||||
@@ -1336,12 +1336,15 @@ body.desktop .dropdown-submenu > .dropdown-menu {
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.dropdown-submenu.dropstart > .dropdown-menu,
|
||||
body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
||||
.dropdown-submenu.dropstart > .dropdown-menu {
|
||||
inset-inline-start: auto;
|
||||
inset-inline-end: calc(100% - 2px);
|
||||
}
|
||||
|
||||
body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
|
||||
inset-inline-start: calc(-100% + 10px);
|
||||
}
|
||||
|
||||
.right-dropdown-widget {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
/* LLM Chat Launcher Widget Styles */
|
||||
.note-context-chat {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.note-context-chat-container {
|
||||
flex-grow: 1;
|
||||
overflow-y: auto;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.chat-message {
|
||||
display: flex;
|
||||
margin-bottom: 15px;
|
||||
max-width: 85%;
|
||||
}
|
||||
|
||||
.chat-message.user-message {
|
||||
margin-inline-start: auto;
|
||||
}
|
||||
|
||||
.chat-message.assistant-message {
|
||||
margin-inline-end: auto;
|
||||
}
|
||||
|
||||
.message-avatar {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-inline-end: 8px;
|
||||
}
|
||||
|
||||
.user-message .message-avatar {
|
||||
background-color: var(--primary-color);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.assistant-message .message-avatar {
|
||||
background-color: var(--secondary-color);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.message-content {
|
||||
background-color: var(--more-accented-background-color);
|
||||
border-radius: 12px;
|
||||
padding: 10px 15px;
|
||||
max-width: calc(100% - 40px);
|
||||
}
|
||||
|
||||
.user-message .message-content {
|
||||
background-color: var(--accented-background-color);
|
||||
}
|
||||
|
||||
.message-content pre {
|
||||
background-color: var(--code-background-color);
|
||||
border-radius: 5px;
|
||||
padding: 10px;
|
||||
overflow-x: auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.message-content code {
|
||||
background-color: var(--code-background-color);
|
||||
padding: 2px 4px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.loading-indicator {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 10px 0;
|
||||
color: var(--muted-text-color);
|
||||
}
|
||||
|
||||
.sources-container {
|
||||
background-color: var(--accented-background-color);
|
||||
border-top: 1px solid var(--main-border-color);
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.sources-list {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.source-item {
|
||||
padding: 4px 0;
|
||||
}
|
||||
|
||||
.source-link {
|
||||
color: var(--link-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.source-link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.note-context-chat-form {
|
||||
display: flex;
|
||||
background-color: var(--main-background-color);
|
||||
border-top: 1px solid var(--main-border-color);
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.note-context-chat-input {
|
||||
resize: vertical;
|
||||
min-height: 44px;
|
||||
max-height: 200px;
|
||||
}
|
||||
|
||||
/* Responsive adjustments */
|
||||
@media (max-width: 768px) {
|
||||
.chat-message {
|
||||
max-width: 95%;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -13,46 +13,6 @@
|
||||
"critical-error": {
|
||||
"title": "Κρίσιμο σφάλμα",
|
||||
"message": "Συνέβη κάποιο κρίσιμο σφάλμα, το οποίο δεν επιτρέπει στην εφαρμογή χρήστη να ξεκινήσει:\n\n{{message}}\n\nΤο πιθανότερο είναι να προκλήθηκε από κάποιο script που απέτυχε απρόοπτα. Δοκιμάστε να ξεκινήσετε την εφαρμογή σε ασφαλή λειτουργία για να λύσετε το πρόβλημα."
|
||||
},
|
||||
"widget-error": {
|
||||
"title": "Δεν ήταν δυνατή η αρχικοποίηση του widget",
|
||||
"message-custom": "Προσαρμοσμένο widget της σημείωσης με ID \"{{id}}\", με τίτλο \"{{title}}\", δεν ήταν δυνατό να αρχικοποιηθεί λόγω:\n\n{{message}}",
|
||||
"message-unknown": "Άγνωστο widget δεν ήταν δυνατό να αρχικοποιηθεί λόγω:\n\n{{message}}"
|
||||
},
|
||||
"bundle-error": {
|
||||
"title": "Δεν ήταν δυνατή η φόρτωση προσαρμοσμένου script",
|
||||
"message": "Το script δεν ήταν δυνατό να εκτελεστεί λόγω:\n\n{{message}}"
|
||||
},
|
||||
"widget-list-error": {
|
||||
"title": "Δεν ήταν δυνατή η λήψη της λίστας των widgets από τον server"
|
||||
},
|
||||
"widget-render-error": {
|
||||
"title": "Δεν ήταν δυνατή η απόδοση προσαρμοσμένου React widget"
|
||||
},
|
||||
"widget-missing-parent": "Το προσαρμοσμένο widget δεν έχει ορισμένη την υποχρεωτική ιδιότητα '{{property}}'.\n\nΕάν το script προορίζεται για εκτέλεση χωρίς UI element, χρησιμοποιήστε '#run=frontendStartup' αντί για αυτό.",
|
||||
"open-script-note": "Άνοιγμα σημείωσης script",
|
||||
"scripting-error": "Σφάλμα προσαρμοσμένου script: {{title}}"
|
||||
},
|
||||
"bookmark_buttons": {
|
||||
"bookmarks": "Σελιδοδείκτες"
|
||||
},
|
||||
"add_link": {
|
||||
"add_link": "Προσθήκη συνδέσμου",
|
||||
"help_on_links": "Βοήθεια για συνδέσμους",
|
||||
"note": "Σημείωση",
|
||||
"search_note": "Αναζήτηση σημείωσης με βάση το όνομά της",
|
||||
"link_title_mirrors": "Ο τίτλος του συνδέσμου αντικατοπτρίζει τον τρέχοντα τίτλο της σημείωσης",
|
||||
"link_title_arbitrary": "Ο τίτλος του συνδέσμου μπορεί να τροποποιηθεί ελεύθερα",
|
||||
"link_title": "Τίτλος συνδέσμου",
|
||||
"button_add_link": "Προσθήκη συνδέσμου"
|
||||
},
|
||||
"branch_prefix": {
|
||||
"edit_branch_prefix": "Επεξεργασία προθέματος κλάδου",
|
||||
"edit_branch_prefix_multiple": "Επεξεργασία προθέματος κλάδου για {{count}} κλάδους",
|
||||
"help_on_tree_prefix": "Βοήθεια για πρόθεμα δέντρου",
|
||||
"prefix": "Πρόθεμα: ",
|
||||
"save": "Αποθήκευση",
|
||||
"branch_prefix_saved": "Το πρόθεμα κλάδου αποθηκεύτηκε.",
|
||||
"branch_prefix_saved_multiple": "Το πρόθεμα κλάδου αποθηκεύτηκε για {{count}} κλάδους."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,76 +1,71 @@
|
||||
{
|
||||
"import": {
|
||||
"safeImportTooltip": "Trilium <code>.zip</code> export files can contain executable scripts which may contain harmful behaviour. Safe import will deactivate automatic execution of all imported scripts. Uncheck \"Safe import\" only if the imported archive is supposed to contain executable scripts and you completely trust the contents of the import file.",
|
||||
"shrinkImagesTooltip": "<p>If you check this option, Trilium will attempt to shrink the imported images by scaling and optimisation which may affect the perceived image quality. If unchecked, images will be imported without changes.</p><p>This doesn't apply to <code>.zip</code> imports with metadata since it is assumed these files are already optimised.</p>",
|
||||
"codeImportedAsCode": "Import recognised code files (e.g. <code>.json</code>) as code notes if it's unclear from metadata"
|
||||
},
|
||||
"upload_attachments": {
|
||||
"tooltip": "If you check this option, Trilium will attempt to shrink the uploaded images by scaling and optimisation which may affect the perceived image quality. If unchecked, images will be uploaded without changes."
|
||||
},
|
||||
"attribute_detail": {
|
||||
"auto_read_only_disabled": "text/code notes can be set automatically into read mode when they are too large. You can disable this behaviour on per-note basis by adding this label to the note",
|
||||
"workspace_tab_background_color": "CSS colour used in the note tab when hoisted to this note",
|
||||
"color": "defines colour of the note in note tree, links etc. Use any valid CSS colour value like 'red' or #a13d5f",
|
||||
"color_type": "Colour"
|
||||
},
|
||||
"mobile_detail_menu": {
|
||||
"error_unrecognized_command": "Unrecognised command {{command}}"
|
||||
},
|
||||
"promoted_attributes": {
|
||||
"remove_color": "Remove the colour label"
|
||||
},
|
||||
"max_content_width": {
|
||||
"centerContent": "Keep content centred"
|
||||
},
|
||||
"theme": {
|
||||
"auto_theme": "Legacy (Follow system colour scheme)",
|
||||
"triliumnext": "Trilium (Follow system colour scheme)"
|
||||
},
|
||||
"search_engine": {
|
||||
"custom_name_placeholder": "Customise search engine name",
|
||||
"custom_url_placeholder": "Customise search engine url"
|
||||
},
|
||||
"highlights_list": {
|
||||
"description": "You can customise the highlights list displayed in the right panel:",
|
||||
"color": "Coloured text",
|
||||
"bg_color": "Text with background colour"
|
||||
},
|
||||
"table_of_contents": {
|
||||
"description": "Table of contents will appear in text notes when the note has more than a defined number of headings. You can customise this number:"
|
||||
},
|
||||
"custom_date_time_format": {
|
||||
"description": "Customise the format of the date and time inserted via <shortcut /> or the toolbar. See <doc>Day.js docs</doc> for available format tokens."
|
||||
},
|
||||
"i18n": {
|
||||
"title": "Localisation"
|
||||
},
|
||||
"attachment_detail_2": {
|
||||
"unrecognized_role": "Unrecognised attachment role '{{role}}'."
|
||||
},
|
||||
"ai_llm": {
|
||||
"reprocess_index_started": "Search index optimisation started in the background",
|
||||
"index_rebuilding": "Optimising index ({{percentage}}%)",
|
||||
"index_rebuild_complete": "Index optimisation complete"
|
||||
},
|
||||
"highlighting": {
|
||||
"color-scheme": "Colour Scheme"
|
||||
},
|
||||
"code_theme": {
|
||||
"color-scheme": "Colour scheme"
|
||||
},
|
||||
"call_to_action": {
|
||||
"background_effects_message": "On Windows devices, background effects are now fully stable. The background effects adds a touch of colour to the user interface by blurring the background behind it. This technique is also used in other applications such as Windows Explorer."
|
||||
},
|
||||
"settings_appearance": {
|
||||
"related_code_blocks": "Colour scheme for code blocks in text notes",
|
||||
"related_code_notes": "Colour scheme for code notes"
|
||||
},
|
||||
"note-color": {
|
||||
"clear-color": "Clear note colour",
|
||||
"set-color": "Set note colour",
|
||||
"set-custom-color": "Set custom note colour"
|
||||
},
|
||||
"about": {
|
||||
"title": "About Trilium Notes"
|
||||
}
|
||||
"import": {
|
||||
"safeImportTooltip": "Trilium <code>.zip</code> export files can contain executable scripts which may contain harmful behaviour. Safe import will deactivate automatic execution of all imported scripts. Uncheck \"Safe import\" only if the imported archive is supposed to contain executable scripts and you completely trust the contents of the import file.",
|
||||
"shrinkImagesTooltip": "<p>If you check this option, Trilium will attempt to shrink the imported images by scaling and optimisation which may affect the perceived image quality. If unchecked, images will be imported without changes.</p><p>This doesn't apply to <code>.zip</code> imports with metadata since it is assumed these files are already optimised.</p>",
|
||||
"codeImportedAsCode": "Import recognised code files (e.g. <code>.json</code>) as code notes if it's unclear from metadata"
|
||||
},
|
||||
"upload_attachments": {
|
||||
"tooltip": "If you check this option, Trilium will attempt to shrink the uploaded images by scaling and optimisation which may affect the perceived image quality. If unchecked, images will be uploaded without changes."
|
||||
},
|
||||
"attribute_detail": {
|
||||
"auto_read_only_disabled": "text/code notes can be set automatically into read mode when they are too large. You can disable this behaviour on per-note basis by adding this label to the note",
|
||||
"workspace_tab_background_color": "CSS colour used in the note tab when hoisted to this note",
|
||||
"color": "defines colour of the note in note tree, links etc. Use any valid CSS colour value like 'red' or #a13d5f",
|
||||
"color_type": "Colour"
|
||||
},
|
||||
"mobile_detail_menu": {
|
||||
"error_unrecognized_command": "Unrecognised command {{command}}"
|
||||
},
|
||||
"promoted_attributes": {
|
||||
"remove_color": "Remove the colour label"
|
||||
},
|
||||
"max_content_width": {
|
||||
"centerContent": "Keep content centred"
|
||||
},
|
||||
"theme": {
|
||||
"auto_theme": "Legacy (Follow system colour scheme)",
|
||||
"triliumnext": "Trilium (Follow system colour scheme)"
|
||||
},
|
||||
"search_engine": {
|
||||
"custom_name_placeholder": "Customise search engine name",
|
||||
"custom_url_placeholder": "Customise search engine url"
|
||||
},
|
||||
"highlights_list": {
|
||||
"description": "You can customise the highlights list displayed in the right panel:",
|
||||
"color": "Coloured text",
|
||||
"bg_color": "Text with background colour"
|
||||
},
|
||||
"table_of_contents": {
|
||||
"description": "Table of contents will appear in text notes when the note has more than a defined number of headings. You can customise this number:"
|
||||
},
|
||||
"custom_date_time_format": {
|
||||
"description": "Customise the format of the date and time inserted via <shortcut /> or the toolbar. See <doc>Day.js docs</doc> for available format tokens."
|
||||
},
|
||||
"i18n": {
|
||||
"title": "Localisation"
|
||||
},
|
||||
"attachment_detail_2": {
|
||||
"unrecognized_role": "Unrecognised attachment role '{{role}}'."
|
||||
},
|
||||
"highlighting": {
|
||||
"color-scheme": "Colour Scheme"
|
||||
},
|
||||
"code_theme": {
|
||||
"color-scheme": "Colour scheme"
|
||||
},
|
||||
"call_to_action": {
|
||||
"background_effects_message": "On Windows devices, background effects are now fully stable. The background effects adds a touch of colour to the user interface by blurring the background behind it. This technique is also used in other applications such as Windows Explorer."
|
||||
},
|
||||
"settings_appearance": {
|
||||
"related_code_blocks": "Colour scheme for code blocks in text notes",
|
||||
"related_code_notes": "Colour scheme for code notes"
|
||||
},
|
||||
"note-color": {
|
||||
"clear-color": "Clear note colour",
|
||||
"set-color": "Set note colour",
|
||||
"set-custom-color": "Set custom note colour"
|
||||
},
|
||||
"about": {
|
||||
"title": "About Trilium Notes"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -50,8 +50,7 @@
|
||||
"save": "Simpan",
|
||||
"branch_prefix_saved": "Prefiks cabang telah disimpan.",
|
||||
"branch_prefix_saved_multiple": "Prefix cabang telah disimpan pada {{count}} cabang.",
|
||||
"affected_branches": "Cabang terdampak ({{count}}):",
|
||||
"edit_branch_prefix": "Sunting awalan cabang"
|
||||
"affected_branches": "Cabang terdampak ({{count}}):"
|
||||
},
|
||||
"bulk_actions": {
|
||||
"bulk_actions": "Aksi borongan",
|
||||
@@ -62,10 +61,7 @@
|
||||
"execute_bulk_actions": "Eksekusi aksi borongan",
|
||||
"bulk_actions_executed": "Aksi borongan telah di eksekusi dengan sukses.",
|
||||
"none_yet": "Belum ada... tambahkan aksi dengan memilih salah satu dari aksi di atas.",
|
||||
"labels": "Label-label",
|
||||
"relations": "Hubungan",
|
||||
"notes": "Catatan",
|
||||
"other": "Lainnya"
|
||||
"labels": "Label-label"
|
||||
},
|
||||
"confirm": {
|
||||
"cancel": "Batal",
|
||||
@@ -84,8 +80,6 @@
|
||||
"no_note_to_delete": "Tidak ada Catatan yang akan dihapus (hanya duplikat)."
|
||||
},
|
||||
"clone_to": {
|
||||
"clone_notes_to": "Duplikat catatan ke…",
|
||||
"help_on_links": "Bantuan pada tautan",
|
||||
"notes_to_clone": "Catatan untuk kloning"
|
||||
"clone_notes_to": "Duplikat catatan ke…"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -10,7 +10,7 @@ import BookmarkButtons from "./BookmarkButtons";
|
||||
import CalendarWidget from "./CalendarWidget";
|
||||
import HistoryNavigationButton from "./HistoryNavigation";
|
||||
import { LaunchBarContext } from "./launch_bar_widgets";
|
||||
import { AiChatButton, CommandButton, CustomWidget, NoteLauncher, QuickSearchLauncherWidget, ScriptLauncher, TodayLauncher } from "./LauncherDefinitions";
|
||||
import { CommandButton, CustomWidget, NoteLauncher, QuickSearchLauncherWidget, ScriptLauncher, TodayLauncher } from "./LauncherDefinitions";
|
||||
import ProtectedSessionStatusWidget from "./ProtectedSessionStatusWidget";
|
||||
import SpacerWidget from "./SpacerWidget";
|
||||
import SyncStatus from "./SyncStatus";
|
||||
@@ -96,8 +96,6 @@ function initBuiltinWidget(note: FNote, isHorizontalLayout: boolean) {
|
||||
return <TodayLauncher launcherNote={note} />;
|
||||
case "quickSearch":
|
||||
return <QuickSearchLauncherWidget />;
|
||||
case "aiChatLauncher":
|
||||
return <AiChatButton launcherNote={note} />;
|
||||
case "mobileTabSwitcher":
|
||||
return <TabSwitcher />;
|
||||
default:
|
||||
|
||||
@@ -11,7 +11,7 @@ import { getErrorMessage, isMobile } from "../../services/utils";
|
||||
import BasicWidget from "../basic_widget";
|
||||
import NoteContextAwareWidget from "../note_context_aware_widget";
|
||||
import QuickSearchWidget from "../quick_search";
|
||||
import { useGlobalShortcut, useLegacyWidget, useNoteLabel, useNoteRelationTarget, useTriliumOptionBool } from "../react/hooks";
|
||||
import { useGlobalShortcut, useLegacyWidget, useNoteLabel, useNoteRelationTarget } from "../react/hooks";
|
||||
import { ParentComponent } from "../react/react_utils";
|
||||
import { CustomNoteLauncher } from "./GenericButtons";
|
||||
import { LaunchBarActionButton, LaunchBarContext, LauncherNoteProps, useLauncherIconAndTitle } from "./launch_bar_widgets";
|
||||
@@ -81,19 +81,6 @@ export function ScriptLauncher({ launcherNote }: LauncherNoteProps) {
|
||||
);
|
||||
}
|
||||
|
||||
export function AiChatButton({ launcherNote }: LauncherNoteProps) {
|
||||
const [ aiEnabled ] = useTriliumOptionBool("aiEnabled");
|
||||
const { icon, title } = useLauncherIconAndTitle(launcherNote);
|
||||
|
||||
return aiEnabled && (
|
||||
<LaunchBarActionButton
|
||||
icon={icon}
|
||||
text={title}
|
||||
triggerCommand="createAiChat"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export function TodayLauncher({ launcherNote }: LauncherNoteProps) {
|
||||
return (
|
||||
<CustomNoteLauncher
|
||||
|
||||
@@ -1,260 +0,0 @@
|
||||
/**
|
||||
* Communication functions for LLM Chat
|
||||
*/
|
||||
import server from "../../services/server.js";
|
||||
import type { SessionResponse } from "./types.js";
|
||||
|
||||
/**
|
||||
* Create a new chat session
|
||||
* @param currentNoteId - Optional current note ID for context
|
||||
* @returns The noteId of the created chat note
|
||||
*/
|
||||
export async function createChatSession(currentNoteId?: string): Promise<string | null> {
|
||||
try {
|
||||
const resp = await server.post<SessionResponse>('llm/chat', {
|
||||
title: 'Note Chat',
|
||||
currentNoteId: currentNoteId // Pass the current note ID if available
|
||||
});
|
||||
|
||||
if (resp && resp.id) {
|
||||
// Backend returns the chat note ID as 'id'
|
||||
return resp.id;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to create chat session:', error);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a chat note exists
|
||||
* @param noteId - The ID of the chat note
|
||||
*/
|
||||
export async function checkSessionExists(noteId: string): Promise<boolean> {
|
||||
try {
|
||||
const sessionCheck = await server.getWithSilentNotFound<any>(`llm/chat/${noteId}`);
|
||||
return !!(sessionCheck && sessionCheck.id);
|
||||
} catch (error: any) {
|
||||
console.log(`Error checking chat note ${noteId}:`, error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up streaming response via WebSocket
|
||||
* @param noteId - The ID of the chat note
|
||||
* @param messageParams - Message parameters
|
||||
* @param onContentUpdate - Callback for content updates
|
||||
* @param onThinkingUpdate - Callback for thinking updates
|
||||
* @param onToolExecution - Callback for tool execution
|
||||
* @param onComplete - Callback for completion
|
||||
* @param onError - Callback for errors
|
||||
*/
|
||||
export async function setupStreamingResponse(
|
||||
noteId: string,
|
||||
messageParams: any,
|
||||
onContentUpdate: (content: string, isDone?: boolean) => void,
|
||||
onThinkingUpdate: (thinking: string) => void,
|
||||
onToolExecution: (toolData: any) => void,
|
||||
onComplete: () => void,
|
||||
onError: (error: Error) => void
|
||||
): Promise<void> {
|
||||
return new Promise((resolve, reject) => {
|
||||
let assistantResponse = '';
|
||||
let receivedAnyContent = false;
|
||||
let timeoutId: number | null = null;
|
||||
let initialTimeoutId: number | null = null;
|
||||
let cleanupTimeoutId: number | null = null;
|
||||
let receivedAnyMessage = false;
|
||||
let eventListener: ((event: Event) => void) | null = null;
|
||||
let lastMessageTimestamp = 0;
|
||||
|
||||
// Create a unique identifier for this response process
|
||||
const responseId = `llm-stream-${Date.now()}-${Math.floor(Math.random() * 1000)}`;
|
||||
console.log(`[${responseId}] Setting up WebSocket streaming for chat note ${noteId}`);
|
||||
|
||||
// Send the initial request to initiate streaming
|
||||
(async () => {
|
||||
try {
|
||||
const streamResponse = await server.post<any>(`llm/chat/${noteId}/messages/stream`, {
|
||||
content: messageParams.content,
|
||||
useAdvancedContext: messageParams.useAdvancedContext,
|
||||
showThinking: messageParams.showThinking,
|
||||
options: {
|
||||
temperature: 0.7,
|
||||
maxTokens: 2000
|
||||
}
|
||||
});
|
||||
|
||||
if (!streamResponse || !streamResponse.success) {
|
||||
console.error(`[${responseId}] Failed to initiate streaming`);
|
||||
reject(new Error('Failed to initiate streaming'));
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`[${responseId}] Streaming initiated successfully`);
|
||||
} catch (error) {
|
||||
console.error(`[${responseId}] Error initiating streaming:`, error);
|
||||
reject(error);
|
||||
return;
|
||||
}
|
||||
})();
|
||||
|
||||
// Function to safely perform cleanup
|
||||
const performCleanup = () => {
|
||||
if (cleanupTimeoutId) {
|
||||
window.clearTimeout(cleanupTimeoutId);
|
||||
cleanupTimeoutId = null;
|
||||
}
|
||||
|
||||
console.log(`[${responseId}] Performing final cleanup of event listener`);
|
||||
cleanupEventListener(eventListener);
|
||||
onComplete();
|
||||
resolve();
|
||||
};
|
||||
|
||||
// Set initial timeout to catch cases where no message is received at all
|
||||
initialTimeoutId = window.setTimeout(() => {
|
||||
if (!receivedAnyMessage) {
|
||||
console.error(`[${responseId}] No initial message received within timeout`);
|
||||
performCleanup();
|
||||
reject(new Error('No response received from server'));
|
||||
}
|
||||
}, 10000);
|
||||
|
||||
// Create a message handler for CustomEvents
|
||||
eventListener = (event: Event) => {
|
||||
const customEvent = event as CustomEvent;
|
||||
const message = customEvent.detail;
|
||||
|
||||
// Only process messages for our chat note
|
||||
if (!message || message.chatNoteId !== noteId) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Update last message timestamp
|
||||
lastMessageTimestamp = Date.now();
|
||||
|
||||
// Cancel any pending cleanup when we receive a new message
|
||||
if (cleanupTimeoutId) {
|
||||
console.log(`[${responseId}] Cancelling scheduled cleanup due to new message`);
|
||||
window.clearTimeout(cleanupTimeoutId);
|
||||
cleanupTimeoutId = null;
|
||||
}
|
||||
|
||||
console.log(`[${responseId}] LLM Stream message received: content=${!!message.content}, contentLength=${message.content?.length || 0}, thinking=${!!message.thinking}, toolExecution=${!!message.toolExecution}, done=${!!message.done}`);
|
||||
|
||||
// Mark first message received
|
||||
if (!receivedAnyMessage) {
|
||||
receivedAnyMessage = true;
|
||||
console.log(`[${responseId}] First message received for chat note ${noteId}`);
|
||||
|
||||
// Clear the initial timeout since we've received a message
|
||||
if (initialTimeoutId !== null) {
|
||||
window.clearTimeout(initialTimeoutId);
|
||||
initialTimeoutId = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle error
|
||||
if (message.error) {
|
||||
console.error(`[${responseId}] Stream error: ${message.error}`);
|
||||
performCleanup();
|
||||
reject(new Error(message.error));
|
||||
return;
|
||||
}
|
||||
|
||||
// Handle thinking updates - only show if showThinking is enabled
|
||||
if (message.thinking && messageParams.showThinking) {
|
||||
console.log(`[${responseId}] Received thinking: ${message.thinking.substring(0, 100)}...`);
|
||||
onThinkingUpdate(message.thinking);
|
||||
}
|
||||
|
||||
// Handle tool execution updates
|
||||
if (message.toolExecution) {
|
||||
console.log(`[${responseId}] Tool execution update:`, message.toolExecution);
|
||||
onToolExecution(message.toolExecution);
|
||||
}
|
||||
|
||||
// Handle content updates
|
||||
if (message.content) {
|
||||
// Simply append the new content - no complex deduplication
|
||||
assistantResponse += message.content;
|
||||
|
||||
// Update the UI immediately with each chunk
|
||||
onContentUpdate(assistantResponse, message.done || false);
|
||||
receivedAnyContent = true;
|
||||
|
||||
// Reset timeout since we got content
|
||||
if (timeoutId !== null) {
|
||||
window.clearTimeout(timeoutId);
|
||||
}
|
||||
|
||||
// Set new timeout
|
||||
timeoutId = window.setTimeout(() => {
|
||||
console.warn(`[${responseId}] Stream timeout for chat note ${noteId}`);
|
||||
performCleanup();
|
||||
reject(new Error('Stream timeout'));
|
||||
}, 30000);
|
||||
}
|
||||
|
||||
// Handle completion
|
||||
if (message.done) {
|
||||
console.log(`[${responseId}] Stream completed for chat note ${noteId}, final response: ${assistantResponse.length} chars`);
|
||||
|
||||
// Clear all timeouts
|
||||
if (timeoutId !== null) {
|
||||
window.clearTimeout(timeoutId);
|
||||
timeoutId = null;
|
||||
}
|
||||
|
||||
// Schedule cleanup after a brief delay to ensure all processing is complete
|
||||
cleanupTimeoutId = window.setTimeout(() => {
|
||||
performCleanup();
|
||||
}, 100);
|
||||
}
|
||||
};
|
||||
|
||||
// Register the event listener for WebSocket messages
|
||||
window.addEventListener('llm-stream-message', eventListener);
|
||||
|
||||
console.log(`[${responseId}] Event listener registered, waiting for messages...`);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up an event listener
|
||||
*/
|
||||
function cleanupEventListener(listener: ((event: Event) => void) | null): void {
|
||||
if (listener) {
|
||||
try {
|
||||
window.removeEventListener('llm-stream-message', listener);
|
||||
console.log(`Successfully removed event listener`);
|
||||
} catch (err) {
|
||||
console.error(`Error removing event listener:`, err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a direct response from the server without streaming
|
||||
*/
|
||||
export async function getDirectResponse(noteId: string, messageParams: any): Promise<any> {
|
||||
try {
|
||||
const postResponse = await server.post<any>(`llm/chat/${noteId}/messages`, {
|
||||
message: messageParams.content,
|
||||
includeContext: messageParams.useAdvancedContext,
|
||||
options: {
|
||||
temperature: 0.7,
|
||||
maxTokens: 2000
|
||||
}
|
||||
});
|
||||
|
||||
return postResponse;
|
||||
} catch (error) {
|
||||
console.error('Error getting direct response:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
/**
|
||||
* LLM Chat Panel Widget Module
|
||||
*/
|
||||
import LlmChatPanel from './llm_chat_panel.js';
|
||||
|
||||
export default LlmChatPanel;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,59 +0,0 @@
|
||||
/**
|
||||
* Message processing functions for LLM Chat
|
||||
*/
|
||||
import type { ToolExecutionStep } from "./types.js";
|
||||
|
||||
/**
|
||||
* Extract tool execution steps from the DOM that are within the chat flow
|
||||
*/
|
||||
export function extractInChatToolSteps(chatMessagesElement: HTMLElement): ToolExecutionStep[] {
|
||||
const steps: ToolExecutionStep[] = [];
|
||||
|
||||
// Look for tool execution in the chat flow
|
||||
const toolExecutionElement = chatMessagesElement.querySelector('.chat-tool-execution');
|
||||
|
||||
if (toolExecutionElement) {
|
||||
// Find all tool step elements
|
||||
const stepElements = toolExecutionElement.querySelectorAll('.tool-step');
|
||||
|
||||
stepElements.forEach(stepEl => {
|
||||
const stepHtml = stepEl.innerHTML;
|
||||
|
||||
// Determine the step type based on icons or classes present
|
||||
let type = 'info';
|
||||
let name: string | undefined;
|
||||
let content = '';
|
||||
|
||||
if (stepHtml.includes('bx-code-block')) {
|
||||
type = 'executing';
|
||||
content = 'Executing tools...';
|
||||
} else if (stepHtml.includes('bx-terminal')) {
|
||||
type = 'result';
|
||||
// Extract the tool name from the step
|
||||
const nameMatch = stepHtml.match(/<span[^>]*>Tool: ([^<]+)<\/span>/);
|
||||
name = nameMatch ? nameMatch[1] : 'unknown';
|
||||
|
||||
// Extract the content from the div with class mt-1 ps-3
|
||||
const contentEl = stepEl.querySelector('.mt-1.ps-3');
|
||||
content = contentEl ? contentEl.innerHTML : '';
|
||||
} else if (stepHtml.includes('bx-error-circle')) {
|
||||
type = 'error';
|
||||
const nameMatch = stepHtml.match(/<span[^>]*>Tool: ([^<]+)<\/span>/);
|
||||
name = nameMatch ? nameMatch[1] : 'unknown';
|
||||
|
||||
const contentEl = stepEl.querySelector('.mt-1.ps-3.text-danger');
|
||||
content = contentEl ? contentEl.innerHTML : '';
|
||||
} else if (stepHtml.includes('bx-message-dots')) {
|
||||
type = 'generating';
|
||||
content = 'Generating response with tool results...';
|
||||
} else if (stepHtml.includes('bx-loader-alt')) {
|
||||
// Skip the initializing spinner
|
||||
return;
|
||||
}
|
||||
|
||||
steps.push({ type, name, content });
|
||||
});
|
||||
}
|
||||
|
||||
return steps;
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
/**
|
||||
* Types for LLM Chat Panel
|
||||
*/
|
||||
|
||||
export interface ChatResponse {
|
||||
id: string;
|
||||
messages: Array<{role: string; content: string}>;
|
||||
sources?: Array<{noteId: string; title: string}>;
|
||||
}
|
||||
|
||||
export interface SessionResponse {
|
||||
id: string;
|
||||
title: string;
|
||||
noteId: string; // The ID of the chat note
|
||||
}
|
||||
|
||||
export interface ToolExecutionStep {
|
||||
type: string;
|
||||
name?: string;
|
||||
content: string;
|
||||
}
|
||||
|
||||
export interface MessageData {
|
||||
role: string;
|
||||
content: string;
|
||||
timestamp?: Date;
|
||||
mentions?: Array<{
|
||||
noteId: string;
|
||||
title: string;
|
||||
notePath: string;
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface ChatData {
|
||||
messages: MessageData[];
|
||||
noteId: string; // The ID of the chat note
|
||||
chatNoteId?: string; // Deprecated - kept for backward compatibility, should equal noteId
|
||||
toolSteps: ToolExecutionStep[];
|
||||
sources?: Array<{
|
||||
noteId: string;
|
||||
title: string;
|
||||
similarity?: number;
|
||||
content?: string;
|
||||
}>;
|
||||
metadata?: {
|
||||
model?: string;
|
||||
provider?: string;
|
||||
temperature?: number;
|
||||
maxTokens?: number;
|
||||
lastUpdated?: string;
|
||||
toolExecutions?: Array<{
|
||||
id: string;
|
||||
name: string;
|
||||
arguments: any;
|
||||
result: any;
|
||||
error?: string;
|
||||
timestamp: string;
|
||||
}>;
|
||||
};
|
||||
}
|
||||
@@ -1,272 +0,0 @@
|
||||
/**
|
||||
* UI-related functions for LLM Chat
|
||||
*/
|
||||
import { t } from "../../services/i18n.js";
|
||||
import type { ToolExecutionStep } from "./types.js";
|
||||
import { formatMarkdown, applyHighlighting } from "./utils.js";
|
||||
|
||||
// Template for the chat widget
|
||||
export const TPL = `
|
||||
<div class="note-context-chat h-100 w-100 d-flex flex-column">
|
||||
<!-- Move validation warning outside the card with better styling -->
|
||||
<div class="provider-validation-warning alert alert-warning m-2 border-inline-start border-warning" style="display: none; padding-inline-start: 15px; border-inline-start: 4px solid #ffc107; background-color: rgba(255, 248, 230, 0.9); font-size: 0.9rem; box-shadow: 0 2px 5px rgba(0,0,0,0.05);"></div>
|
||||
|
||||
<div class="note-context-chat-container flex-grow-1 overflow-auto p-3">
|
||||
<div class="note-context-chat-messages"></div>
|
||||
|
||||
<!-- Thinking display area -->
|
||||
<div class="llm-thinking-container" style="display: none;">
|
||||
<div class="thinking-bubble">
|
||||
<div class="thinking-header d-flex align-items-center">
|
||||
<div class="thinking-dots">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
<span class="thinking-label ms-2 text-muted small">AI is thinking...</span>
|
||||
<button type="button" class="btn btn-sm btn-link p-0 ms-auto thinking-toggle" title="Toggle thinking details">
|
||||
<i class="bx bx-chevron-down"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="thinking-content" style="display: none;">
|
||||
<div class="thinking-text"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="loading-indicator" style="display: none;">
|
||||
<div class="spinner-border spinner-border-sm text-primary" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
<span class="ms-2">${t('ai_llm.agent.processing')}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="sources-container p-2 border-top" style="display: none;">
|
||||
<h6 class="m-0 p-1 d-flex align-items-center">
|
||||
<i class="bx bx-link-alt me-1"></i> ${t('ai_llm.sources')}
|
||||
<span class="badge bg-primary rounded-pill ms-2 sources-count"></span>
|
||||
</h6>
|
||||
<div class="sources-list mt-2"></div>
|
||||
</div>
|
||||
|
||||
<form class="note-context-chat-form d-flex flex-column border-top p-2">
|
||||
<div class="d-flex chat-input-container mb-2">
|
||||
<div
|
||||
class="form-control note-context-chat-input flex-grow-1"
|
||||
style="min-height: 60px; max-height: 200px; overflow-y: auto;"
|
||||
data-placeholder="${t('ai_llm.enter_message')}"
|
||||
></div>
|
||||
<button type="submit" class="btn btn-primary note-context-chat-send-button ms-2 d-flex align-items-center justify-content-center">
|
||||
<i class="bx bx-send"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="d-flex align-items-center context-option-container mt-1 justify-content-end">
|
||||
<small class="text-muted me-auto fst-italic">Options:</small>
|
||||
<div class="form-check form-switch me-3 small">
|
||||
<input class="form-check-input use-advanced-context-checkbox" type="checkbox" id="useEnhancedContext" checked>
|
||||
<label class="form-check-label small" for="useEnhancedContext" title="${t('ai.enhanced_context_description')}">
|
||||
${t('ai_llm.use_enhanced_context')}
|
||||
<i class="bx bx-info-circle small text-muted"></i>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check form-switch small">
|
||||
<input class="form-check-input show-thinking-checkbox" type="checkbox" id="showThinking">
|
||||
<label class="form-check-label small" for="showThinking" title="${t('ai.show_thinking_description')}">
|
||||
${t('ai_llm.show_thinking')}
|
||||
<i class="bx bx-info-circle small text-muted"></i>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
`;
|
||||
|
||||
/**
|
||||
* Add a message to the chat UI
|
||||
*/
|
||||
export function addMessageToChat(messagesContainer: HTMLElement, chatContainer: HTMLElement, role: 'user' | 'assistant', content: string) {
|
||||
const messageElement = document.createElement('div');
|
||||
messageElement.className = `chat-message ${role}-message mb-3 d-flex`;
|
||||
|
||||
const avatarElement = document.createElement('div');
|
||||
avatarElement.className = 'message-avatar d-flex align-items-center justify-content-center me-2';
|
||||
|
||||
if (role === 'user') {
|
||||
avatarElement.innerHTML = '<i class="bx bx-user"></i>';
|
||||
avatarElement.classList.add('user-avatar');
|
||||
} else {
|
||||
avatarElement.innerHTML = '<i class="bx bx-bot"></i>';
|
||||
avatarElement.classList.add('assistant-avatar');
|
||||
}
|
||||
|
||||
const contentElement = document.createElement('div');
|
||||
contentElement.className = 'message-content p-3 rounded flex-grow-1';
|
||||
|
||||
if (role === 'user') {
|
||||
contentElement.classList.add('user-content', 'bg-light');
|
||||
} else {
|
||||
contentElement.classList.add('assistant-content');
|
||||
}
|
||||
|
||||
// Format the content with markdown
|
||||
contentElement.innerHTML = formatMarkdown(content);
|
||||
|
||||
messageElement.appendChild(avatarElement);
|
||||
messageElement.appendChild(contentElement);
|
||||
|
||||
messagesContainer.appendChild(messageElement);
|
||||
|
||||
// Apply syntax highlighting to any code blocks in the message
|
||||
applyHighlighting(contentElement);
|
||||
|
||||
// Scroll to bottom
|
||||
chatContainer.scrollTop = chatContainer.scrollHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show sources in the UI
|
||||
*/
|
||||
export function showSources(
|
||||
sourcesList: HTMLElement,
|
||||
sourcesContainer: HTMLElement,
|
||||
sourcesCount: HTMLElement,
|
||||
sources: Array<{noteId: string, title: string}>,
|
||||
onSourceClick: (noteId: string) => void
|
||||
) {
|
||||
sourcesList.innerHTML = '';
|
||||
sourcesCount.textContent = sources.length.toString();
|
||||
|
||||
sources.forEach(source => {
|
||||
const sourceElement = document.createElement('div');
|
||||
sourceElement.className = 'source-item p-2 mb-1 border rounded d-flex align-items-center';
|
||||
|
||||
// Create the direct link to the note
|
||||
sourceElement.innerHTML = `
|
||||
<div class="d-flex align-items-center w-100">
|
||||
<a href="#root/${source.noteId}"
|
||||
data-note-id="${source.noteId}"
|
||||
class="source-link text-truncate d-flex align-items-center"
|
||||
title="Open note: ${source.title}">
|
||||
<i class="bx bx-file-blank me-1"></i>
|
||||
<span class="source-title">${source.title}</span>
|
||||
</a>
|
||||
</div>`;
|
||||
|
||||
// Add click handler
|
||||
sourceElement.querySelector('.source-link')?.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
onSourceClick(source.noteId);
|
||||
return false;
|
||||
});
|
||||
|
||||
sourcesList.appendChild(sourceElement);
|
||||
});
|
||||
|
||||
sourcesContainer.style.display = 'block';
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide sources in the UI
|
||||
*/
|
||||
export function hideSources(sourcesContainer: HTMLElement) {
|
||||
sourcesContainer.style.display = 'none';
|
||||
}
|
||||
|
||||
/**
|
||||
* Show loading indicator
|
||||
*/
|
||||
export function showLoadingIndicator(loadingIndicator: HTMLElement) {
|
||||
const logId = `ui-${Date.now()}`;
|
||||
console.log(`[${logId}] Showing loading indicator`);
|
||||
|
||||
try {
|
||||
loadingIndicator.style.display = 'flex';
|
||||
const forceUpdate = loadingIndicator.offsetHeight;
|
||||
console.log(`[${logId}] Loading indicator initialized`);
|
||||
} catch (err) {
|
||||
console.error(`[${logId}] Error showing loading indicator:`, err);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide loading indicator
|
||||
*/
|
||||
export function hideLoadingIndicator(loadingIndicator: HTMLElement) {
|
||||
const logId = `ui-${Date.now()}`;
|
||||
console.log(`[${logId}] Hiding loading indicator`);
|
||||
|
||||
try {
|
||||
loadingIndicator.style.display = 'none';
|
||||
const forceUpdate = loadingIndicator.offsetHeight;
|
||||
console.log(`[${logId}] Loading indicator hidden`);
|
||||
} catch (err) {
|
||||
console.error(`[${logId}] Error hiding loading indicator:`, err);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render tool steps as HTML for display in chat
|
||||
*/
|
||||
export function renderToolStepsHtml(steps: ToolExecutionStep[]): string {
|
||||
if (!steps || steps.length === 0) return '';
|
||||
|
||||
let html = '';
|
||||
|
||||
steps.forEach(step => {
|
||||
let icon, labelClass, content;
|
||||
|
||||
switch (step.type) {
|
||||
case 'executing':
|
||||
icon = 'bx-code-block text-primary';
|
||||
labelClass = '';
|
||||
content = `<div class="d-flex align-items-center">
|
||||
<i class="bx ${icon} me-1"></i>
|
||||
<span>${step.content}</span>
|
||||
</div>`;
|
||||
break;
|
||||
|
||||
case 'result':
|
||||
icon = 'bx-terminal text-success';
|
||||
labelClass = 'fw-bold';
|
||||
content = `<div class="d-flex align-items-center">
|
||||
<i class="bx ${icon} me-1"></i>
|
||||
<span class="${labelClass}">Tool: ${step.name || 'unknown'}</span>
|
||||
</div>
|
||||
<div class="mt-1 ps-3">${step.content}</div>`;
|
||||
break;
|
||||
|
||||
case 'error':
|
||||
icon = 'bx-error-circle text-danger';
|
||||
labelClass = 'fw-bold text-danger';
|
||||
content = `<div class="d-flex align-items-center">
|
||||
<i class="bx ${icon} me-1"></i>
|
||||
<span class="${labelClass}">Tool: ${step.name || 'unknown'}</span>
|
||||
</div>
|
||||
<div class="mt-1 ps-3 text-danger">${step.content}</div>`;
|
||||
break;
|
||||
|
||||
case 'generating':
|
||||
icon = 'bx-message-dots text-info';
|
||||
labelClass = '';
|
||||
content = `<div class="d-flex align-items-center">
|
||||
<i class="bx ${icon} me-1"></i>
|
||||
<span>${step.content}</span>
|
||||
</div>`;
|
||||
break;
|
||||
|
||||
default:
|
||||
icon = 'bx-info-circle text-muted';
|
||||
labelClass = '';
|
||||
content = `<div class="d-flex align-items-center">
|
||||
<i class="bx ${icon} me-1"></i>
|
||||
<span>${step.content}</span>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
html += `<div class="tool-step my-1">${content}</div>`;
|
||||
});
|
||||
|
||||
return html;
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
/**
|
||||
* Utility functions for LLM Chat
|
||||
*/
|
||||
import { marked } from "marked";
|
||||
import { formatCodeBlocks } from "../../services/syntax_highlight.js";
|
||||
|
||||
/**
|
||||
* Format markdown content for display
|
||||
*/
|
||||
export function formatMarkdown(content: string): string {
|
||||
if (!content) return '';
|
||||
|
||||
// First, extract HTML thinking visualization to protect it from replacements
|
||||
const thinkingBlocks: string[] = [];
|
||||
let processedContent = content.replace(/<div class=['"](thinking-process|reasoning-process)['"][\s\S]*?<\/div>/g, (match) => {
|
||||
const placeholder = `__THINKING_BLOCK_${thinkingBlocks.length}__`;
|
||||
thinkingBlocks.push(match);
|
||||
return placeholder;
|
||||
});
|
||||
|
||||
// Use marked library to parse the markdown
|
||||
const markedContent = marked(processedContent, {
|
||||
breaks: true, // Convert line breaks to <br>
|
||||
gfm: true, // Enable GitHub Flavored Markdown
|
||||
silent: true // Ignore errors
|
||||
});
|
||||
|
||||
// Handle potential promise (though it shouldn't be with our options)
|
||||
if (typeof markedContent === 'string') {
|
||||
processedContent = markedContent;
|
||||
} else {
|
||||
console.warn('Marked returned a promise unexpectedly');
|
||||
// Use the original content as fallback
|
||||
processedContent = content;
|
||||
}
|
||||
|
||||
// Restore thinking visualization blocks
|
||||
thinkingBlocks.forEach((block, index) => {
|
||||
processedContent = processedContent.replace(`__THINKING_BLOCK_${index}__`, block);
|
||||
});
|
||||
|
||||
return processedContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Simple HTML escaping for safer content display
|
||||
*/
|
||||
export function escapeHtml(text: string): string {
|
||||
if (typeof text !== 'string') {
|
||||
text = String(text || '');
|
||||
}
|
||||
|
||||
return text
|
||||
.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''');
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply syntax highlighting to content
|
||||
*/
|
||||
export function applyHighlighting(element: HTMLElement): void {
|
||||
formatCodeBlocks($(element));
|
||||
}
|
||||
|
||||
/**
|
||||
* Format tool arguments for display
|
||||
*/
|
||||
export function formatToolArgs(args: any): string {
|
||||
if (!args || typeof args !== 'object') return '';
|
||||
|
||||
return Object.entries(args)
|
||||
.map(([key, value]) => {
|
||||
// Format the value based on its type
|
||||
let displayValue;
|
||||
if (typeof value === 'string') {
|
||||
displayValue = value.length > 50 ? `"${value.substring(0, 47)}..."` : `"${value}"`;
|
||||
} else if (value === null) {
|
||||
displayValue = 'null';
|
||||
} else if (Array.isArray(value)) {
|
||||
displayValue = '[...]'; // Simplified array representation
|
||||
} else if (typeof value === 'object') {
|
||||
displayValue = '{...}'; // Simplified object representation
|
||||
} else {
|
||||
displayValue = String(value);
|
||||
}
|
||||
|
||||
return `<span class="text-primary">${escapeHtml(key)}</span>: ${escapeHtml(displayValue)}`;
|
||||
})
|
||||
.join(', ');
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
/**
|
||||
* Validation functions for LLM Chat
|
||||
*/
|
||||
import options from "../../services/options.js";
|
||||
import { t } from "../../services/i18n.js";
|
||||
|
||||
/**
|
||||
* Validate providers configuration
|
||||
*/
|
||||
export async function validateProviders(validationWarning: HTMLElement): Promise<void> {
|
||||
try {
|
||||
// Check if AI is enabled
|
||||
const aiEnabled = options.is('aiEnabled');
|
||||
if (!aiEnabled) {
|
||||
validationWarning.style.display = 'none';
|
||||
return;
|
||||
}
|
||||
|
||||
// Get precedence list from options
|
||||
const precedenceStr = options.get('aiProviderPrecedence') || 'openai,anthropic,ollama';
|
||||
let precedenceList: string[] = [];
|
||||
|
||||
if (precedenceStr) {
|
||||
if (precedenceStr.startsWith('[') && precedenceStr.endsWith(']')) {
|
||||
try {
|
||||
precedenceList = JSON.parse(precedenceStr);
|
||||
} catch (e) {
|
||||
console.error('Error parsing precedence list:', e);
|
||||
precedenceList = ['openai']; // Default if parsing fails
|
||||
}
|
||||
} else if (precedenceStr.includes(',')) {
|
||||
precedenceList = precedenceStr.split(',').map(p => p.trim());
|
||||
} else {
|
||||
precedenceList = [precedenceStr];
|
||||
}
|
||||
}
|
||||
|
||||
// Check for configuration issues with providers in the precedence list
|
||||
const configIssues: string[] = [];
|
||||
|
||||
// Always add experimental warning as the first item
|
||||
configIssues.push(t("ai_llm.experimental_warning"));
|
||||
|
||||
// Check each provider in the precedence list for proper configuration
|
||||
for (const provider of precedenceList) {
|
||||
if (provider === 'openai') {
|
||||
// Check OpenAI configuration
|
||||
const apiKey = options.get('openaiApiKey');
|
||||
if (!apiKey) {
|
||||
configIssues.push(`OpenAI API key is missing (optional for OpenAI-compatible endpoints)`);
|
||||
}
|
||||
} else if (provider === 'anthropic') {
|
||||
// Check Anthropic configuration
|
||||
const apiKey = options.get('anthropicApiKey');
|
||||
if (!apiKey) {
|
||||
configIssues.push(`Anthropic API key is missing`);
|
||||
}
|
||||
} else if (provider === 'ollama') {
|
||||
// Check Ollama configuration
|
||||
const baseUrl = options.get('ollamaBaseUrl');
|
||||
if (!baseUrl) {
|
||||
configIssues.push(`Ollama Base URL is missing`);
|
||||
}
|
||||
}
|
||||
// Add checks for other providers as needed
|
||||
}
|
||||
|
||||
// Show warning if there are configuration issues
|
||||
if (configIssues.length > 0) {
|
||||
let message = '<i class="bx bx-error-circle me-2"></i><strong>AI Provider Configuration Issues</strong>';
|
||||
|
||||
message += '<ul class="mb-1 ps-4">';
|
||||
|
||||
// Show configuration issues
|
||||
for (const issue of configIssues) {
|
||||
message += `<li>${issue}</li>`;
|
||||
}
|
||||
|
||||
message += '</ul>';
|
||||
message += '<div class="mt-2"><a href="javascript:" class="settings-link btn btn-sm btn-outline-secondary"><i class="bx bx-cog me-1"></i>Open AI Settings</a></div>';
|
||||
|
||||
// Update HTML content
|
||||
validationWarning.innerHTML = message;
|
||||
validationWarning.style.display = 'block';
|
||||
} else {
|
||||
validationWarning.style.display = 'none';
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error validating providers:', error);
|
||||
validationWarning.style.display = 'none';
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
/**
|
||||
* LLM Chat Panel Widget
|
||||
* This file is preserved for backward compatibility.
|
||||
* The actual implementation has been moved to the llm_chat/ folder.
|
||||
*/
|
||||
import LlmChatPanel from './llm_chat/index.js';
|
||||
export default LlmChatPanel;
|
||||
@@ -12,7 +12,7 @@ import { TypeWidgetProps } from "./type_widgets/type_widget";
|
||||
* A `NoteType` altered by the note detail widget, taking into consideration whether the note is editable or not and adding special note types such as an empty one,
|
||||
* for protected session or attachment information.
|
||||
*/
|
||||
export type ExtendedNoteType = Exclude<NoteType, "launcher" | "text" | "code"> | "empty" | "readOnlyCode" | "readOnlyText" | "editableText" | "editableCode" | "attachmentDetail" | "attachmentList" | "protectedSession" | "aiChat" | "sqlConsole";
|
||||
export type ExtendedNoteType = Exclude<NoteType, "launcher" | "text" | "code"> | "empty" | "readOnlyCode" | "readOnlyText" | "editableText" | "editableCode" | "attachmentDetail" | "attachmentList" | "protectedSession" | "sqlConsole";
|
||||
|
||||
export type TypeWidget = ((props: TypeWidgetProps) => VNode | JSX.Element | undefined);
|
||||
type NoteTypeView = () => (Promise<{ default: TypeWidget } | TypeWidget> | TypeWidget);
|
||||
@@ -137,11 +137,6 @@ export const TYPE_MAPPINGS: Record<ExtendedNoteType, NoteTypeMapping> = {
|
||||
printable: true,
|
||||
isFullHeight: true
|
||||
},
|
||||
aiChat: {
|
||||
view: () => import("./type_widgets/AiChat"),
|
||||
className: "ai-chat-widget-container",
|
||||
isFullHeight: true
|
||||
},
|
||||
sqlConsole: {
|
||||
view: () => import("./type_widgets/SqlConsole"),
|
||||
className: "sql-console-widget-container",
|
||||
|
||||
@@ -85,7 +85,7 @@ export function NoteContextMenu({ note, noteContext, itemsAtStart, itemsNearNote
|
||||
);
|
||||
const isElectron = getIsElectron();
|
||||
const isMac = getIsMac();
|
||||
const hasSource = ["text", "code", "relationMap", "mermaid", "canvas", "mindMap", "aiChat"].includes(noteType);
|
||||
const hasSource = ["text", "code", "relationMap", "mermaid", "canvas", "mindMap"].includes(noteType);
|
||||
const isSearchOrBook = ["search", "book"].includes(noteType);
|
||||
const isHelpPage = note.noteId.startsWith("_help");
|
||||
const [syncServerHost] = useTriliumOption("syncServerHost");
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { AttributeType } from "@triliumnext/commons";
|
||||
import clsx from "clsx";
|
||||
import { ComponentChildren, VNode } from "preact";
|
||||
import { useEffect, useMemo, useRef } from "preact/hooks";
|
||||
|
||||
@@ -8,7 +7,6 @@ import FNote from "../../entities/fnote";
|
||||
import { removeOwnedAttributesByNameOrType } from "../../services/attributes";
|
||||
import { t } from "../../services/i18n";
|
||||
import server from "../../services/server";
|
||||
import Admonition from "../react/Admonition";
|
||||
import FormSelect from "../react/FormSelect";
|
||||
import FormTextArea from "../react/FormTextArea";
|
||||
import FormTextBox from "../react/FormTextBox";
|
||||
@@ -107,9 +105,8 @@ export const SEARCH_OPTIONS: SearchOption[] = [
|
||||
}
|
||||
];
|
||||
|
||||
function SearchOption({ note, className, title, titleIcon, children, help, attributeName, attributeType, additionalAttributesToDelete }: {
|
||||
function SearchOption({ note, title, titleIcon, children, help, attributeName, attributeType, additionalAttributesToDelete }: {
|
||||
note: FNote;
|
||||
className?: string;
|
||||
title: string,
|
||||
titleIcon?: string,
|
||||
children?: ComponentChildren,
|
||||
@@ -119,7 +116,7 @@ function SearchOption({ note, className, title, titleIcon, children, help, attri
|
||||
additionalAttributesToDelete?: { type: "label" | "relation", name: string }[]
|
||||
}) {
|
||||
return (
|
||||
<tr className={clsx(attributeName, className)}>
|
||||
<tr className={attributeName}>
|
||||
<td className="title-column">
|
||||
{titleIcon && <><Icon icon={titleIcon} />{" "}</>}
|
||||
{title}
|
||||
@@ -157,57 +154,64 @@ function SearchStringOption({ note, refreshResults, error, ...restProps }: Searc
|
||||
}
|
||||
}, 1000);
|
||||
|
||||
// React to errors
|
||||
const { showTooltip, hideTooltip } = useTooltip(inputRef, {
|
||||
trigger: "manual",
|
||||
title: `${t("search_string.error", { error: error?.message })}`,
|
||||
html: true,
|
||||
placement: "bottom"
|
||||
});
|
||||
|
||||
// Auto-focus.
|
||||
useEffect(() => inputRef.current?.focus(), []);
|
||||
|
||||
return <>
|
||||
<SearchOption
|
||||
title={t("search_string.title_column")}
|
||||
className={clsx({ "has-error": !!error })}
|
||||
help={<>
|
||||
<strong>{t("search_string.search_syntax")}</strong> - {t("search_string.also_see")} <a href="#" data-help-page="search.html">{t("search_string.complete_help")}</a>
|
||||
<ul style="marigin-bottom: 0;">
|
||||
<li>{t("search_string.full_text_search")}</li>
|
||||
<li><code>#abc</code> - {t("search_string.label_abc")}</li>
|
||||
<li><code>#year = 2019</code> - {t("search_string.label_year")}</li>
|
||||
<li><code>#rock #pop</code> - {t("search_string.label_rock_pop")}</li>
|
||||
<li><code>#rock or #pop</code> - {t("search_string.label_rock_or_pop")}</li>
|
||||
<li><code>#year <= 2000</code> - {t("search_string.label_year_comparison")}</li>
|
||||
<li><code>note.dateCreated >= MONTH-1</code> - {t("search_string.label_date_created")}</li>
|
||||
</ul>
|
||||
</>}
|
||||
note={note} {...restProps}
|
||||
>
|
||||
<FormTextArea
|
||||
inputRef={inputRef}
|
||||
className="search-string"
|
||||
placeholder={t("search_string.placeholder")}
|
||||
currentValue={searchString ?? ""}
|
||||
onChange={text => {
|
||||
currentValue.current = text;
|
||||
spacedUpdate.scheduleUpdate();
|
||||
}}
|
||||
onKeyDown={async (e) => {
|
||||
if (e.key === "Enter") {
|
||||
e.preventDefault();
|
||||
useEffect(() => {
|
||||
if (error) {
|
||||
showTooltip();
|
||||
setTimeout(() => hideTooltip(), 4000);
|
||||
} else {
|
||||
hideTooltip();
|
||||
}
|
||||
}, [ error ]);
|
||||
|
||||
// this also in effect disallows new lines in query string.
|
||||
// on one hand, this makes sense since search string is a label
|
||||
// on the other hand, it could be nice for structuring long search string. It's probably a niche case though.
|
||||
await spacedUpdate.updateNowIfNecessary();
|
||||
refreshResults();
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</SearchOption>
|
||||
{error?.message && (
|
||||
<tr>
|
||||
<td colspan={3}>
|
||||
<Admonition type="caution">{error.message}</Admonition>
|
||||
</td>
|
||||
</tr>
|
||||
)}
|
||||
</>;
|
||||
return <SearchOption
|
||||
title={t("search_string.title_column")}
|
||||
help={<>
|
||||
<strong>{t("search_string.search_syntax")}</strong> - {t("search_string.also_see")} <a href="#" data-help-page="search.html">{t("search_string.complete_help")}</a>
|
||||
<ul style="marigin-bottom: 0;">
|
||||
<li>{t("search_string.full_text_search")}</li>
|
||||
<li><code>#abc</code> - {t("search_string.label_abc")}</li>
|
||||
<li><code>#year = 2019</code> - {t("search_string.label_year")}</li>
|
||||
<li><code>#rock #pop</code> - {t("search_string.label_rock_pop")}</li>
|
||||
<li><code>#rock or #pop</code> - {t("search_string.label_rock_or_pop")}</li>
|
||||
<li><code>#year <= 2000</code> - {t("search_string.label_year_comparison")}</li>
|
||||
<li><code>note.dateCreated >= MONTH-1</code> - {t("search_string.label_date_created")}</li>
|
||||
</ul>
|
||||
</>}
|
||||
note={note} {...restProps}
|
||||
>
|
||||
<FormTextArea
|
||||
inputRef={inputRef}
|
||||
className="search-string"
|
||||
placeholder={t("search_string.placeholder")}
|
||||
currentValue={searchString ?? ""}
|
||||
onChange={text => {
|
||||
currentValue.current = text;
|
||||
spacedUpdate.scheduleUpdate();
|
||||
}}
|
||||
onKeyDown={async (e) => {
|
||||
if (e.key === "Enter") {
|
||||
e.preventDefault();
|
||||
|
||||
// this also in effect disallows new lines in query string.
|
||||
// on one hand, this makes sense since search string is a label
|
||||
// on the other hand, it could be nice for structuring long search string. It's probably a niche case though.
|
||||
await spacedUpdate.updateNowIfNecessary();
|
||||
refreshResults();
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</SearchOption>;
|
||||
}
|
||||
|
||||
function SearchScriptOption({ note, ...restProps }: SearchOptionProps) {
|
||||
|
||||
@@ -4,12 +4,6 @@
|
||||
width: 100%;
|
||||
border-collapse: separate;
|
||||
border-spacing: 10px;
|
||||
|
||||
.admonition {
|
||||
margin-top: 0.25em;
|
||||
margin-bottom: 1em;
|
||||
text-wrap: wrap;
|
||||
}
|
||||
}
|
||||
|
||||
.search-setting-table div {
|
||||
@@ -147,26 +141,20 @@ body.mobile .search-definition-widget {
|
||||
gap: 0.5em;
|
||||
}
|
||||
|
||||
.search-setting-table tr.searchString {
|
||||
td:nth-of-type(2) {
|
||||
flex-grow: 1;
|
||||
}
|
||||
.search-setting-table tr.searchString td:nth-of-type(2) {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.button-column {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
width: 64px;
|
||||
}
|
||||
|
||||
&.has-error {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.search-setting-table tr.searchString .button-column {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
width: 64px;
|
||||
}
|
||||
|
||||
.search-setting-table tr.ancestor > td > div {
|
||||
flex-direction: column;
|
||||
align-items: flex-start !important;
|
||||
}
|
||||
}
|
||||
|
||||
.search-actions tr {
|
||||
border-bottom: 0;
|
||||
@@ -183,4 +171,4 @@ body.mobile .search-definition-widget {
|
||||
overflow: unset;
|
||||
height: unset !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
import { useEffect, useRef } from "preact/hooks";
|
||||
|
||||
import LlmChatPanel from "../llm_chat";
|
||||
import { useEditorSpacedUpdate, useLegacyWidget } from "../react/hooks";
|
||||
import { type TypeWidgetProps } from "./type_widget";
|
||||
|
||||
export default function AiChat({ note, noteContext }: TypeWidgetProps) {
|
||||
const dataRef = useRef<object>();
|
||||
const spacedUpdate = useEditorSpacedUpdate({
|
||||
note,
|
||||
noteContext,
|
||||
noteType: "aiChat",
|
||||
getData: async () => ({
|
||||
content: JSON.stringify(dataRef.current)
|
||||
}),
|
||||
onContentChange: (newContent) => {
|
||||
try {
|
||||
dataRef.current = JSON.parse(newContent);
|
||||
llmChatPanel.refresh();
|
||||
} catch (e) {
|
||||
dataRef.current = {};
|
||||
}
|
||||
}
|
||||
});
|
||||
const [ ChatWidget, llmChatPanel ] = useLegacyWidget(() => {
|
||||
const llmChatPanel = new LlmChatPanel();
|
||||
llmChatPanel.setDataCallbacks(
|
||||
async (data) => {
|
||||
dataRef.current = data;
|
||||
spacedUpdate.scheduleUpdate();
|
||||
},
|
||||
async () => dataRef.current
|
||||
);
|
||||
return llmChatPanel;
|
||||
}, {
|
||||
noteContext,
|
||||
containerStyle: {
|
||||
height: "100%"
|
||||
}
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
llmChatPanel.setNoteId(note.noteId);
|
||||
llmChatPanel.setCurrentNoteId(note.noteId);
|
||||
}, [ note ]);
|
||||
|
||||
return ChatWidget;
|
||||
}
|
||||
@@ -1,7 +1,16 @@
|
||||
.type-contentWidget .note-detail {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.note-detail-content-widget {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.note-detail-content-widget-content {
|
||||
padding: 15px;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.note-detail.full-height .note-detail-content-widget-content {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,6 @@ import MultiFactorAuthenticationSettings from "./options/multi_factor_authentica
|
||||
import EtapiSettings from "./options/etapi";
|
||||
import BackupSettings from "./options/backup";
|
||||
import SyncOptions from "./options/sync";
|
||||
import AiSettings from "./options/ai_settings";
|
||||
import OtherSettings from "./options/other";
|
||||
import InternationalizationOptions from "./options/i18n";
|
||||
import AdvancedSettings from "./options/advanced";
|
||||
@@ -19,7 +18,7 @@ import "./ContentWidget.css";
|
||||
import { t } from "../../services/i18n";
|
||||
import BackendLog from "./code/BackendLog";
|
||||
|
||||
export type OptionPages = "_optionsAppearance" | "_optionsShortcuts" | "_optionsTextNotes" | "_optionsCodeNotes" | "_optionsImages" | "_optionsSpellcheck" | "_optionsPassword" | "_optionsMFA" | "_optionsEtapi" | "_optionsBackup" | "_optionsSync" | "_optionsAi" | "_optionsOther" | "_optionsLocalization" | "_optionsAdvanced";
|
||||
export type OptionPages = "_optionsAppearance" | "_optionsShortcuts" | "_optionsTextNotes" | "_optionsCodeNotes" | "_optionsImages" | "_optionsSpellcheck" | "_optionsPassword" | "_optionsMFA" | "_optionsEtapi" | "_optionsBackup" | "_optionsSync" | "_optionsOther" | "_optionsLocalization" | "_optionsAdvanced";
|
||||
|
||||
const CONTENT_WIDGETS: Record<OptionPages | "_backendLog", (props: TypeWidgetProps) => JSX.Element> = {
|
||||
_optionsAppearance: AppearanceSettings,
|
||||
@@ -33,7 +32,6 @@ const CONTENT_WIDGETS: Record<OptionPages | "_backendLog", (props: TypeWidgetPro
|
||||
_optionsEtapi: EtapiSettings,
|
||||
_optionsBackup: BackupSettings,
|
||||
_optionsSync: SyncOptions,
|
||||
_optionsAi: AiSettings,
|
||||
_optionsOther: OtherSettings,
|
||||
_optionsLocalization: InternationalizationOptions,
|
||||
_optionsAdvanced: AdvancedSettings,
|
||||
|
||||
@@ -1,236 +0,0 @@
|
||||
import { useCallback, useEffect, useState } from "preact/hooks";
|
||||
import { t } from "../../../services/i18n";
|
||||
import toast from "../../../services/toast";
|
||||
import FormCheckbox from "../../react/FormCheckbox";
|
||||
import FormGroup from "../../react/FormGroup";
|
||||
import { useTriliumOption, useTriliumOptionBool } from "../../react/hooks";
|
||||
import OptionsSection from "./components/OptionsSection";
|
||||
import Admonition from "../../react/Admonition";
|
||||
import FormSelect from "../../react/FormSelect";
|
||||
import FormTextBox from "../../react/FormTextBox";
|
||||
import type { OllamaModelResponse, OpenAiOrAnthropicModelResponse, OptionNames } from "@triliumnext/commons";
|
||||
import server from "../../../services/server";
|
||||
import Button from "../../react/Button";
|
||||
import FormTextArea from "../../react/FormTextArea";
|
||||
|
||||
export default function AiSettings() {
|
||||
return (
|
||||
<>
|
||||
<EnableAiSettings />
|
||||
<ProviderSettings />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
function EnableAiSettings() {
|
||||
const [ aiEnabled, setAiEnabled ] = useTriliumOptionBool("aiEnabled");
|
||||
|
||||
return (
|
||||
<>
|
||||
<OptionsSection title={t("ai_llm.title")}>
|
||||
<FormGroup name="ai-enabled" description={t("ai_llm.enable_ai_description")}>
|
||||
<FormCheckbox
|
||||
label={t("ai_llm.enable_ai_features")}
|
||||
currentValue={aiEnabled} onChange={(isEnabled) => {
|
||||
if (isEnabled) {
|
||||
toast.showMessage(t("ai_llm.ai_enabled"));
|
||||
} else {
|
||||
toast.showMessage(t("ai_llm.ai_disabled"));
|
||||
}
|
||||
|
||||
setAiEnabled(isEnabled);
|
||||
}}
|
||||
/>
|
||||
</FormGroup>
|
||||
{aiEnabled && <Admonition type="warning">{t("ai_llm.experimental_warning")}</Admonition>}
|
||||
</OptionsSection>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
function ProviderSettings() {
|
||||
const [ aiSelectedProvider, setAiSelectedProvider ] = useTriliumOption("aiSelectedProvider");
|
||||
const [ aiTemperature, setAiTemperature ] = useTriliumOption("aiTemperature");
|
||||
const [ aiSystemPrompt, setAiSystemPrompt ] = useTriliumOption("aiSystemPrompt");
|
||||
|
||||
return (
|
||||
<OptionsSection title={t("ai_llm.provider_configuration")}>
|
||||
<FormGroup name="selected-provider" label={t("ai_llm.selected_provider")} description={t("ai_llm.selected_provider_description")}>
|
||||
<FormSelect
|
||||
values={[
|
||||
{ value: "", text: t("ai_llm.select_provider") },
|
||||
{ value: "openai", text: "OpenAI" },
|
||||
{ value: "anthropic", text: "Anthropic" },
|
||||
{ value: "ollama", text: "Ollama" }
|
||||
]}
|
||||
currentValue={aiSelectedProvider} onChange={setAiSelectedProvider}
|
||||
keyProperty="value" titleProperty="text"
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
{
|
||||
aiSelectedProvider === "openai" ?
|
||||
<SingleProviderSettings
|
||||
title={t("ai_llm.openai_settings")}
|
||||
apiKeyDescription={t("ai_llm.openai_api_key_description")}
|
||||
baseUrlDescription={t("ai_llm.openai_url_description")}
|
||||
modelDescription={t("ai_llm.openai_model_description")}
|
||||
validationErrorMessage={t("ai_llm.empty_key_warning.openai")}
|
||||
apiKeyOption="openaiApiKey" baseUrlOption="openaiBaseUrl" modelOption="openaiDefaultModel"
|
||||
provider={aiSelectedProvider}
|
||||
/>
|
||||
: aiSelectedProvider === "anthropic" ?
|
||||
<SingleProviderSettings
|
||||
title={t("ai_llm.anthropic_settings")}
|
||||
apiKeyDescription={t("ai_llm.anthropic_api_key_description")}
|
||||
modelDescription={t("ai_llm.anthropic_model_description")}
|
||||
baseUrlDescription={t("ai_llm.anthropic_url_description")}
|
||||
validationErrorMessage={t("ai_llm.empty_key_warning.anthropic")}
|
||||
apiKeyOption="anthropicApiKey" baseUrlOption="anthropicBaseUrl" modelOption="anthropicDefaultModel"
|
||||
provider={aiSelectedProvider}
|
||||
/>
|
||||
: aiSelectedProvider === "ollama" ?
|
||||
<SingleProviderSettings
|
||||
title={t("ai_llm.ollama_settings")}
|
||||
baseUrlDescription={t("ai_llm.ollama_url_description")}
|
||||
modelDescription={t("ai_llm.ollama_model_description")}
|
||||
validationErrorMessage={t("ai_llm.ollama_no_url")}
|
||||
baseUrlOption="ollamaBaseUrl"
|
||||
provider={aiSelectedProvider} modelOption="ollamaDefaultModel"
|
||||
/>
|
||||
:
|
||||
<></>
|
||||
}
|
||||
|
||||
<FormGroup name="ai-temperature" label={t("ai_llm.temperature")} description={t("ai_llm.temperature_description")}>
|
||||
<FormTextBox
|
||||
type="number" min="0" max="2" step="0.1"
|
||||
currentValue={aiTemperature} onChange={setAiTemperature}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup name="system-prompt" label={t("ai_llm.system_prompt")} description={t("ai_llm.system_prompt_description")}>
|
||||
<FormTextArea
|
||||
rows={3}
|
||||
currentValue={aiSystemPrompt} onBlur={setAiSystemPrompt}
|
||||
/>
|
||||
</FormGroup>
|
||||
</OptionsSection>
|
||||
)
|
||||
}
|
||||
|
||||
interface SingleProviderSettingsProps {
|
||||
provider: string;
|
||||
title: string;
|
||||
apiKeyDescription?: string;
|
||||
baseUrlDescription: string;
|
||||
modelDescription: string;
|
||||
validationErrorMessage: string;
|
||||
apiKeyOption?: OptionNames;
|
||||
baseUrlOption: OptionNames;
|
||||
modelOption: OptionNames;
|
||||
}
|
||||
|
||||
function SingleProviderSettings({ provider, title, apiKeyDescription, baseUrlDescription, modelDescription, validationErrorMessage, apiKeyOption, baseUrlOption, modelOption }: SingleProviderSettingsProps) {
|
||||
const [ apiKey, setApiKey ] = useTriliumOption(apiKeyOption ?? baseUrlOption);
|
||||
const [ baseUrl, setBaseUrl ] = useTriliumOption(baseUrlOption);
|
||||
const isValid = (apiKeyOption ? !!apiKey : !!baseUrl);
|
||||
|
||||
return (
|
||||
<div class="provider-settings">
|
||||
<div class="card mt-3">
|
||||
<div class="card-header">
|
||||
<h5>{title}</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
{!isValid && <Admonition type="caution">{validationErrorMessage}</Admonition> }
|
||||
|
||||
{apiKeyOption && (
|
||||
<FormGroup name="api-key" label={t("ai_llm.api_key")} description={apiKeyDescription}>
|
||||
<FormTextBox
|
||||
type="password" autoComplete="off"
|
||||
currentValue={apiKey} onChange={setApiKey}
|
||||
/>
|
||||
</FormGroup>
|
||||
)}
|
||||
|
||||
<FormGroup name="base-url" label={t("ai_llm.url")} description={baseUrlDescription}>
|
||||
<FormTextBox
|
||||
currentValue={baseUrl ?? "https://api.openai.com/v1"} onChange={setBaseUrl}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
{isValid &&
|
||||
<FormGroup name="model" label={t("ai_llm.model")} description={modelDescription}>
|
||||
<ModelSelector provider={provider} baseUrl={baseUrl} modelOption={modelOption} />
|
||||
</FormGroup>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
function ModelSelector({ provider, baseUrl, modelOption }: { provider: string; baseUrl: string, modelOption: OptionNames }) {
|
||||
const [ model, setModel ] = useTriliumOption(modelOption);
|
||||
const [ models, setModels ] = useState<{ name: string, id: string }[]>([]);
|
||||
|
||||
const loadProviders = useCallback(async () => {
|
||||
switch (provider) {
|
||||
case "openai":
|
||||
case "anthropic": {
|
||||
try {
|
||||
const response = await server.get<OpenAiOrAnthropicModelResponse>(`llm/providers/${provider}/models?baseUrl=${encodeURIComponent(baseUrl)}`);
|
||||
if (response.success) {
|
||||
setModels(response.chatModels.toSorted((a, b) => a.name.localeCompare(b.name)));
|
||||
} else {
|
||||
toast.showError(t("ai_llm.no_models_found_online"));
|
||||
}
|
||||
} catch (e) {
|
||||
toast.showError(t("ai_llm.error_fetching", { error: e }));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "ollama": {
|
||||
try {
|
||||
const response = await server.get<OllamaModelResponse>(`llm/providers/ollama/models?baseUrl=${encodeURIComponent(baseUrl)}`);
|
||||
if (response.success) {
|
||||
setModels(response.models
|
||||
.map(model => ({
|
||||
name: model.name,
|
||||
id: model.model
|
||||
}))
|
||||
.toSorted((a, b) => a.name.localeCompare(b.name)));
|
||||
} else {
|
||||
toast.showError(t("ai_llm.no_models_found_ollama"));
|
||||
}
|
||||
} catch (e) {
|
||||
toast.showError(t("ai_llm.error_fetching", { error: e }));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}, [provider]);
|
||||
|
||||
useEffect(() => {
|
||||
loadProviders();
|
||||
}, [provider]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<FormSelect
|
||||
values={models}
|
||||
keyProperty="id" titleProperty="name"
|
||||
currentValue={model} onChange={setModel}
|
||||
/>
|
||||
|
||||
<Button
|
||||
text={t("ai_llm.refresh_models")}
|
||||
onClick={loadProviders}
|
||||
size="small"
|
||||
style={{ marginTop: "0.5em" }}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
.shortcuts-options-section {
|
||||
> header {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: var(--main-background-color);
|
||||
padding-block: 0.5em;
|
||||
border-bottom: 1px solid var(--main-border-color);
|
||||
}
|
||||
|
||||
> footer {
|
||||
position: sticky;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: var(--main-background-color);
|
||||
padding-block: 0.5em;
|
||||
border-top: 1px solid var(--main-border-color);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
|
||||
th {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.separator {
|
||||
background-color: var(--accented-background-color);
|
||||
font-weight: bold;
|
||||
|
||||
&:first-of-type {
|
||||
padding-top: 1em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ import { ActionKeyboardShortcut, KeyboardShortcut, OptionNames } from "@triliumn
|
||||
import { t } from "../../../services/i18n";
|
||||
import { arrayEqual, reloadFrontendApp } from "../../../services/utils";
|
||||
import Button from "../../react/Button";
|
||||
import FormGroup from "../../react/FormGroup";
|
||||
import FormText from "../../react/FormText";
|
||||
import FormTextBox from "../../react/FormTextBox";
|
||||
import RawHtml from "../../react/RawHtml";
|
||||
@@ -11,8 +12,6 @@ import server from "../../../services/server";
|
||||
import options from "../../../services/options";
|
||||
import dialog from "../../../services/dialog";
|
||||
import { useTriliumEvent } from "../../react/hooks";
|
||||
import "./shortcuts.css";
|
||||
import NoItems from "../../react/NoItems";
|
||||
|
||||
export default function ShortcutSettings() {
|
||||
const [ keyboardShortcuts, setKeyboardShortcuts ] = useState<KeyboardShortcut[]>([]);
|
||||
@@ -71,29 +70,29 @@ export default function ShortcutSettings() {
|
||||
options.saveMany(optionsToSet);
|
||||
}, [ keyboardShortcuts ]);
|
||||
|
||||
const filterLowerCase = filter?.toLowerCase() ?? "";
|
||||
const filteredKeyboardShortcuts = filter ? keyboardShortcuts.filter((action) => filterKeyboardAction(action, filterLowerCase)) : keyboardShortcuts;
|
||||
|
||||
return (
|
||||
<OptionsSection
|
||||
className="shortcuts-options-section"
|
||||
style={{ display: "flex", flexDirection: "column", height: "100%" }}
|
||||
noCard
|
||||
>
|
||||
<FormText>
|
||||
{t("shortcuts.multiple_shortcuts")}{" "}
|
||||
{t("shortcuts.multiple_shortcuts")}
|
||||
<RawHtml html={t("shortcuts.electron_documentation")} />
|
||||
</FormText>
|
||||
|
||||
<header>
|
||||
<FormGroup name="keyboard-shortcut-filter">
|
||||
<FormTextBox
|
||||
placeholder={t("shortcuts.type_text_to_filter")}
|
||||
currentValue={filter} onChange={(value) => setFilter(value)}
|
||||
currentValue={filter} onChange={(value) => setFilter(value.toLowerCase())}
|
||||
/>
|
||||
</header>
|
||||
</FormGroup>
|
||||
|
||||
<KeyboardShortcutTable filteredKeyboardActions={filteredKeyboardShortcuts} filter={filter} />
|
||||
<div style={{overflow: "auto", flexGrow: 1, flexShrink: 1}}>
|
||||
<KeyboardShortcutTable keyboardShortcuts={keyboardShortcuts} filter={filter} />
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div style={{ display: "flex", justifyContent: "space-between", margin: "15px 15px 0 15px"}}>
|
||||
<Button
|
||||
text={t("shortcuts.reload_app")}
|
||||
onClick={reloadFrontendApp}
|
||||
@@ -103,17 +102,12 @@ export default function ShortcutSettings() {
|
||||
text={t("shortcuts.set_all_to_default")}
|
||||
onClick={resetShortcuts}
|
||||
/>
|
||||
</footer>
|
||||
</div>
|
||||
</OptionsSection>
|
||||
)
|
||||
}
|
||||
|
||||
function filterKeyboardAction(action: KeyboardShortcut, filter: string) {
|
||||
// Hide separators when filtering is active.
|
||||
if ("separator" in action) {
|
||||
return !filter;
|
||||
}
|
||||
|
||||
function filterKeyboardAction(action: ActionKeyboardShortcut, filter: string) {
|
||||
return action.actionName.toLowerCase().includes(filter) ||
|
||||
(action.friendlyName && action.friendlyName.toLowerCase().includes(filter)) ||
|
||||
(action.defaultShortcuts ?? []).some((shortcut) => shortcut.toLowerCase().includes(filter)) ||
|
||||
@@ -121,7 +115,7 @@ function filterKeyboardAction(action: KeyboardShortcut, filter: string) {
|
||||
(action.description && action.description.toLowerCase().includes(filter));
|
||||
}
|
||||
|
||||
function KeyboardShortcutTable({ filteredKeyboardActions, filter }: { filteredKeyboardActions: KeyboardShortcut[], filter: string | undefined }) {
|
||||
function KeyboardShortcutTable({ filter, keyboardShortcuts }: { filter?: string, keyboardShortcuts: KeyboardShortcut[] }) {
|
||||
return (
|
||||
<table class="keyboard-shortcut-table" cellPadding="10">
|
||||
<thead>
|
||||
@@ -133,17 +127,16 @@ function KeyboardShortcutTable({ filteredKeyboardActions, filter }: { filteredKe
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{filteredKeyboardActions.length > 0
|
||||
? filteredKeyboardActions.map(action => (
|
||||
{keyboardShortcuts.map(action => (
|
||||
<tr>
|
||||
{"separator" in action ?
|
||||
{"separator" in action ? ( !filter &&
|
||||
<td class="separator" colspan={4} style={{
|
||||
backgroundColor: "var(--accented-background-color)",
|
||||
fontWeight: "bold"
|
||||
}}>
|
||||
{action.separator}
|
||||
</td>
|
||||
: (
|
||||
) : ( (!filter || filterKeyboardAction(action, filter)) &&
|
||||
<>
|
||||
<td>{action.friendlyName}</td>
|
||||
<td>
|
||||
@@ -154,17 +147,7 @@ function KeyboardShortcutTable({ filteredKeyboardActions, filter }: { filteredKe
|
||||
</>
|
||||
)}
|
||||
</tr>
|
||||
))
|
||||
: (
|
||||
<tr>
|
||||
<td colspan={4} class="text-center">
|
||||
<NoItems
|
||||
icon="bx bx-filter-alt"
|
||||
text={t("shortcuts.no_results", { filter })}
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
)}
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
);
|
||||
|
||||
@@ -65,7 +65,7 @@ export default function RelationMap({ note, noteContext, ntxId, parentComponent
|
||||
};
|
||||
},
|
||||
onContentChange(content) {
|
||||
let newData: Partial<MapData> | null = null;
|
||||
let newData: MapData | null = null;
|
||||
|
||||
if (content) {
|
||||
try {
|
||||
@@ -75,7 +75,7 @@ export default function RelationMap({ note, noteContext, ntxId, parentComponent
|
||||
}
|
||||
}
|
||||
|
||||
if (!newData || !newData.notes || !newData.transform) {
|
||||
if (!newData) {
|
||||
newData = {
|
||||
notes: [],
|
||||
// it is important to have this exact value here so that initial transform is the same as this
|
||||
@@ -90,8 +90,8 @@ export default function RelationMap({ note, noteContext, ntxId, parentComponent
|
||||
};
|
||||
}
|
||||
|
||||
setData(newData as MapData);
|
||||
mapApiRef.current = new RelationMapApi(note, newData as MapData, (newData, refreshUi) => {
|
||||
setData(newData);
|
||||
mapApiRef.current = new RelationMapApi(note, newData, (newData, refreshUi) => {
|
||||
if (refreshUi) {
|
||||
setData(newData);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"@triliumnext/commons": "workspace:*",
|
||||
"@triliumnext/server": "workspace:*",
|
||||
"copy-webpack-plugin": "13.0.1",
|
||||
"electron": "40.4.0",
|
||||
"electron": "40.2.1",
|
||||
"@electron-forge/cli": "7.11.1",
|
||||
"@electron-forge/maker-deb": "7.11.1",
|
||||
"@electron-forge/maker-dmg": "7.11.1",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"@triliumnext/desktop": "workspace:*",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"copy-webpack-plugin": "13.0.1",
|
||||
"electron": "40.4.0",
|
||||
"electron": "40.2.1",
|
||||
"fs-extra": "11.3.3"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -6,6 +6,6 @@
|
||||
"e2e": "playwright test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"dotenv": "17.3.1"
|
||||
"dotenv": "17.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,216 +0,0 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import App from "./support/app";
|
||||
|
||||
test.describe("LLM Chat Features", () => {
|
||||
test("Should handle basic navigation", async ({ page, context }) => {
|
||||
page.setDefaultTimeout(15_000);
|
||||
|
||||
const app = new App(page, context);
|
||||
await app.goto();
|
||||
|
||||
// Basic navigation test - verify the app loads
|
||||
await expect(app.currentNoteSplit).toBeVisible();
|
||||
await expect(app.noteTree).toBeVisible();
|
||||
|
||||
// Test passes if basic interface is working
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
|
||||
test("Should look for LLM/AI features in the interface", async ({ page, context }) => {
|
||||
const app = new App(page, context);
|
||||
await app.goto();
|
||||
|
||||
// Look for any AI/LLM related elements in the interface
|
||||
const aiElements = page.locator('[class*="ai"], [class*="llm"], [class*="chat"], [data-*="ai"], [data-*="llm"]');
|
||||
const aiElementsCount = await aiElements.count();
|
||||
|
||||
if (aiElementsCount > 0) {
|
||||
console.log(`Found ${aiElementsCount} AI/LLM related elements in the interface`);
|
||||
|
||||
// If AI elements exist, verify they are in the DOM
|
||||
const firstAiElement = aiElements.first();
|
||||
expect(await firstAiElement.count()).toBeGreaterThan(0);
|
||||
} else {
|
||||
console.log("No AI/LLM elements found - this may be expected in test environment");
|
||||
}
|
||||
|
||||
// Test always passes - we're just checking for presence
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
|
||||
test("Should handle launcher functionality", async ({ page, context }) => {
|
||||
const app = new App(page, context);
|
||||
await app.goto();
|
||||
|
||||
// Test the launcher bar functionality
|
||||
await expect(app.launcherBar).toBeVisible();
|
||||
|
||||
// Look for any buttons in the launcher
|
||||
const launcherButtons = app.launcherBar.locator('.launcher-button');
|
||||
const buttonCount = await launcherButtons.count();
|
||||
|
||||
if (buttonCount > 0) {
|
||||
// Try clicking the first launcher button
|
||||
const firstButton = launcherButtons.first();
|
||||
await expect(firstButton).toBeVisible();
|
||||
|
||||
// Click and verify some response
|
||||
await firstButton.click();
|
||||
await page.waitForTimeout(500);
|
||||
|
||||
// Verify the interface is still responsive
|
||||
await expect(app.currentNoteSplit).toBeVisible();
|
||||
}
|
||||
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
|
||||
test("Should handle note creation", async ({ page, context }) => {
|
||||
const app = new App(page, context);
|
||||
await app.goto();
|
||||
|
||||
// Verify basic UI is loaded
|
||||
await expect(app.noteTree).toBeVisible();
|
||||
|
||||
// Get initial tab count
|
||||
const initialTabCount = await app.tabBar.locator('.note-tab-wrapper').count();
|
||||
|
||||
// Try to add a new tab using the UI button
|
||||
try {
|
||||
await app.addNewTab();
|
||||
await page.waitForTimeout(1000);
|
||||
|
||||
// Verify a new tab was created
|
||||
const newTabCount = await app.tabBar.locator('.note-tab-wrapper').count();
|
||||
expect(newTabCount).toBeGreaterThan(initialTabCount);
|
||||
|
||||
// The new tab should have focus, so we can test if we can interact with any note
|
||||
// Instead of trying to find a hidden title input, let's just verify the tab system works
|
||||
const activeTab = await app.getActiveTab();
|
||||
await expect(activeTab).toBeVisible();
|
||||
|
||||
console.log("Successfully created a new tab");
|
||||
} catch (error) {
|
||||
console.log("Could not create new tab, but basic navigation works");
|
||||
// Even if tab creation fails, the test passes if basic navigation works
|
||||
await expect(app.noteTree).toBeVisible();
|
||||
await expect(app.launcherBar).toBeVisible();
|
||||
}
|
||||
});
|
||||
|
||||
test("Should handle search functionality", async ({ page, context }) => {
|
||||
const app = new App(page, context);
|
||||
await app.goto();
|
||||
|
||||
// Look for the search input specifically (based on the quick_search.ts template)
|
||||
const searchInputs = page.locator('.quick-search .search-string');
|
||||
const count = await searchInputs.count();
|
||||
|
||||
// The search widget might be hidden by default on some layouts
|
||||
if (count > 0) {
|
||||
// Use the first visible search input
|
||||
const searchInput = searchInputs.first();
|
||||
|
||||
if (await searchInput.isVisible()) {
|
||||
// Test search input
|
||||
await searchInput.fill('test search');
|
||||
await expect(searchInput).toHaveValue('test search');
|
||||
|
||||
// Clear search
|
||||
await searchInput.fill('');
|
||||
} else {
|
||||
console.log("Search input not visible in current layout");
|
||||
}
|
||||
} else {
|
||||
// Skip test if search is not visible
|
||||
console.log("No search inputs found in current layout");
|
||||
}
|
||||
});
|
||||
|
||||
test("Should handle basic interface interactions", async ({ page, context }) => {
|
||||
const app = new App(page, context);
|
||||
await app.goto();
|
||||
|
||||
// Test that the interface responds to basic interactions
|
||||
await expect(app.currentNoteSplit).toBeVisible();
|
||||
await expect(app.noteTree).toBeVisible();
|
||||
|
||||
// Test clicking on note tree
|
||||
const noteTreeItems = app.noteTree.locator('.fancytree-node');
|
||||
const itemCount = await noteTreeItems.count();
|
||||
|
||||
if (itemCount > 0) {
|
||||
// Click on a note tree item
|
||||
const firstItem = noteTreeItems.first();
|
||||
await firstItem.click();
|
||||
await page.waitForTimeout(500);
|
||||
|
||||
// Verify the interface is still responsive
|
||||
await expect(app.currentNoteSplit).toBeVisible();
|
||||
}
|
||||
|
||||
// Test keyboard navigation
|
||||
await page.keyboard.press('ArrowDown');
|
||||
await page.waitForTimeout(100);
|
||||
await page.keyboard.press('ArrowUp');
|
||||
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
|
||||
test("Should handle LLM panel if available", async ({ page, context }) => {
|
||||
const app = new App(page, context);
|
||||
await app.goto();
|
||||
|
||||
// Look for LLM chat panel elements
|
||||
const llmPanel = page.locator('.note-context-chat-container, .llm-chat-panel');
|
||||
|
||||
if (await llmPanel.count() > 0 && await llmPanel.isVisible()) {
|
||||
// Check for chat input
|
||||
const chatInput = page.locator('.note-context-chat-input');
|
||||
await expect(chatInput).toBeVisible();
|
||||
|
||||
// Check for send button
|
||||
const sendButton = page.locator('.note-context-chat-send-button');
|
||||
await expect(sendButton).toBeVisible();
|
||||
|
||||
// Check for chat messages area
|
||||
const messagesArea = page.locator('.note-context-chat-messages');
|
||||
await expect(messagesArea).toBeVisible();
|
||||
} else {
|
||||
console.log("LLM chat panel not visible in current view");
|
||||
}
|
||||
});
|
||||
|
||||
test("Should navigate to AI settings if needed", async ({ page, context }) => {
|
||||
const app = new App(page, context);
|
||||
await app.goto();
|
||||
|
||||
// Navigate to settings first
|
||||
await app.goToSettings();
|
||||
|
||||
// Wait for settings to load
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
// Try to navigate to AI settings using the URL
|
||||
await page.goto('#root/_hidden/_options/_optionsAi');
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
// Check if we're in some kind of settings page (more flexible check)
|
||||
const settingsContent = page.locator('.note-split:not(.hidden-ext)');
|
||||
await expect(settingsContent).toBeVisible({ timeout: 10000 });
|
||||
|
||||
// Look for AI/LLM related content or just verify we're in settings
|
||||
const hasAiContent = await page.locator('text="AI"').count() > 0 ||
|
||||
await page.locator('text="LLM"').count() > 0 ||
|
||||
await page.locator('text="AI features"').count() > 0;
|
||||
|
||||
if (hasAiContent) {
|
||||
console.log("Successfully found AI-related settings");
|
||||
} else {
|
||||
console.log("AI settings may not be configured, but navigation to settings works");
|
||||
}
|
||||
|
||||
// Test passes if we can navigate to settings area
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
});
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:24.13.1-bullseye-slim AS builder
|
||||
FROM node:24.13.0-bullseye-slim AS builder
|
||||
RUN corepack enable
|
||||
|
||||
# Install native dependencies since we might be building cross-platform.
|
||||
@@ -7,7 +7,7 @@ COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
|
||||
# We have to use --no-frozen-lockfile due to CKEditor patches
|
||||
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
|
||||
|
||||
FROM node:24.13.1-bullseye-slim
|
||||
FROM node:24.13.0-bullseye-slim
|
||||
# Install only runtime dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:24.13.1-alpine AS builder
|
||||
FROM node:24.13.0-alpine AS builder
|
||||
RUN corepack enable
|
||||
|
||||
# Install native dependencies since we might be building cross-platform.
|
||||
@@ -7,7 +7,7 @@ COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
|
||||
# We have to use --no-frozen-lockfile due to CKEditor patches
|
||||
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
|
||||
|
||||
FROM node:24.13.1-alpine
|
||||
FROM node:24.13.0-alpine
|
||||
# Install runtime dependencies
|
||||
RUN apk add --no-cache su-exec shadow
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:24.13.1-alpine AS builder
|
||||
FROM node:24.13.0-alpine AS builder
|
||||
RUN corepack enable
|
||||
|
||||
# Install native dependencies since we might be building cross-platform.
|
||||
@@ -7,7 +7,7 @@ COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
|
||||
# We have to use --no-frozen-lockfile due to CKEditor patches
|
||||
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
|
||||
|
||||
FROM node:24.13.1-alpine
|
||||
FROM node:24.13.0-alpine
|
||||
# Create a non-root user with configurable UID/GID
|
||||
ARG USER=trilium
|
||||
ARG UID=1001
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:24.13.1-bullseye-slim AS builder
|
||||
FROM node:24.13.0-bullseye-slim AS builder
|
||||
RUN corepack enable
|
||||
|
||||
# Install native dependencies since we might be building cross-platform.
|
||||
@@ -7,7 +7,7 @@ COPY ./docker/package.json ./docker/pnpm-workspace.yaml /usr/src/app/
|
||||
# We have to use --no-frozen-lockfile due to CKEditor patches
|
||||
RUN pnpm install --no-frozen-lockfile --prod && pnpm rebuild
|
||||
|
||||
FROM node:24.13.1-bullseye-slim
|
||||
FROM node:24.13.0-bullseye-slim
|
||||
# Create a non-root user with configurable UID/GID
|
||||
ARG USER=trilium
|
||||
ARG UID=1001
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
"sucrase": "3.35.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@anthropic-ai/sdk": "0.74.0",
|
||||
"@braintree/sanitize-url": "7.1.2",
|
||||
"@electron/remote": "2.1.3",
|
||||
"@triliumnext/commons": "workspace:*",
|
||||
@@ -83,7 +82,7 @@
|
||||
"debounce": "3.0.0",
|
||||
"debug": "4.4.3",
|
||||
"ejs": "4.0.1",
|
||||
"electron": "40.4.0",
|
||||
"electron": "40.2.1",
|
||||
"electron-debug": "4.1.0",
|
||||
"electron-window-state": "5.0.3",
|
||||
"escape-html": "1.0.3",
|
||||
@@ -99,7 +98,7 @@
|
||||
"html2plaintext": "2.1.4",
|
||||
"http-proxy-agent": "7.0.2",
|
||||
"https-proxy-agent": "7.0.6",
|
||||
"i18next": "25.8.6",
|
||||
"i18next": "25.8.4",
|
||||
"i18next-fs-backend": "2.6.1",
|
||||
"image-type": "6.0.0",
|
||||
"ini": "6.0.0",
|
||||
@@ -107,12 +106,10 @@
|
||||
"is-svg": "6.1.0",
|
||||
"jimp": "1.6.0",
|
||||
"lorem-ipsum": "2.0.8",
|
||||
"marked": "17.0.2",
|
||||
"marked": "17.0.1",
|
||||
"mime-types": "3.0.2",
|
||||
"multer": "2.0.2",
|
||||
"normalize-strings": "1.1.1",
|
||||
"ollama": "0.6.3",
|
||||
"openai": "6.21.0",
|
||||
"rand-token": "1.0.1",
|
||||
"safe-compare": "1.1.4",
|
||||
"sanitize-filename": "1.6.3",
|
||||
|
||||
@@ -1,375 +1,373 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "فتح مربع الحوار \"الانتقال الى الملاحظة\"",
|
||||
"open-command-palette": "فتح لوحة الاوامر",
|
||||
"quick-search": "تفعيل شريط البحث السريع",
|
||||
"collapse-tree": "طي جميع الملاحظات",
|
||||
"collapse-subtree": "طي الفروع التابعة للملاحظة الحالية",
|
||||
"sort-child-notes": "ترتيب الملاحظات الفرعية",
|
||||
"creating-and-moving-notes": "انشاء الملاحظات ونقلها",
|
||||
"create-note-after": "انشاء ملاحظة بعد الملاحظة الحالية",
|
||||
"create-note-into": "انشاء ملاحظة فرعية تابعة للملاحظة الحالية",
|
||||
"delete-note": "حذف ملاحظة",
|
||||
"move-note-up": "نقل الملاحظة للاعلى",
|
||||
"move-note-down": "نثل الملاحظة للاسفل",
|
||||
"clone-notes-to": "استنساخ الملاحظات المحددة",
|
||||
"move-notes-to": "نقل الملاحظات للمحددة",
|
||||
"note-clipboard": "حافظة الملاحظات",
|
||||
"copy-notes-to-clipboard": "نسخ الملاحظات المحددة الى الحافظة",
|
||||
"paste-notes-from-clipboard": "لصق الملاحظا من الحافظة الى الملاحظة الحالية",
|
||||
"cut-notes-to-clipboard": "قص الملاحظات المحددة الى الحافظة",
|
||||
"select-all-notes-in-parent": "تحديد جميع الملاحظات من مستوى الملاحظة الحالي",
|
||||
"back-in-note-history": "الانتقال الى الملاحظة السابقة في السجل",
|
||||
"forward-in-note-history": "الانتقال الى الملاحظة التالية في السجل",
|
||||
"scroll-to-active-note": "تمرير شجرة الملاحظات الى الملاحظة النشطة",
|
||||
"search-in-subtree": "البحث عن الملاحظات في الشجرة الفرعية للملاحظة النشطة",
|
||||
"expand-subtree": "توسيع الشجرة الفرعية للملاحظة الحالية",
|
||||
"create-note-into-inbox": "انشاء ملاحظة في صندوق الوارد (اذا كان معرفا) او في ملاحظة اليوم",
|
||||
"move-note-up-in-hierarchy": "نقل الملاحظة للاعلى في التسلسل الهرمي",
|
||||
"move-note-down-in-hierarchy": "نقل الملاحظة للاسفل في التسلسل الهرمي",
|
||||
"edit-note-title": "الانتقال من شجرة الملاحظات إلى تفاصيل الملاحظة وتحرير العنوان",
|
||||
"edit-branch-prefix": "عرض مربع حوار \"تعديل بادئة الفرع\"",
|
||||
"add-note-above-to-the-selection": "اضافة ملاحظة فوق الملاحظة المحددة",
|
||||
"add-note-below-to-selection": "اضافة ملاحظة اسفل الملاحظة المحددة",
|
||||
"duplicate-subtree": "استنساخ الشجرة الفرعية",
|
||||
"tabs-and-windows": "التبويبات والنوافذ",
|
||||
"open-new-tab": "فتح تبويب جديد",
|
||||
"close-active-tab": "غلق التبويب النشط",
|
||||
"reopen-last-tab": "اعادة فتح اخر تبويب مغلق",
|
||||
"activate-next-tab": "تنشيط التبويب الموجود على اليمين",
|
||||
"activate-previous-tab": "تنشيط التبويب الموجود على اليسار",
|
||||
"open-new-window": "فتح نافذة جديدة فارغة",
|
||||
"first-tab": "تنشيط التبويب الاول في القائمة",
|
||||
"second-tab": "تنشيط التبويب الثاني في القائمة",
|
||||
"third-tab": "تنشيط التبويب الثالث في الثائمة",
|
||||
"fourth-tab": "تنشيط التبويب الرابع في القائمة",
|
||||
"fifth-tab": "تنشيط التبويب الخامس في القائمة",
|
||||
"sixth-tab": "تنشيط التبويب السادس في القائمة",
|
||||
"seventh-tab": "تنشيط التبويب السابع في القائمة",
|
||||
"eight-tab": "تنشيط التبويب الثامن في القائمة",
|
||||
"ninth-tab": "تنشيط التبويب التاسع في القائمة",
|
||||
"last-tab": "تنشيط التبويب الاخير في القائمة",
|
||||
"other": "أخرى",
|
||||
"dialogs": "مربعات الحوار",
|
||||
"ribbon-tabs": "علامات التبويب في الشريط",
|
||||
"reload-frontend-app": "اعادة تحميل الواجهة",
|
||||
"zoom-out": "تصغير العرض",
|
||||
"zoom-in": "تكبير العرض",
|
||||
"note-navigation": "التنقل بين الملاحظات",
|
||||
"show-options": "افتح صفحة \"الخيارات\"",
|
||||
"text-note-operations": "عمليات الملاحظة النصية",
|
||||
"add-new-label": "انشاء تسمية جديدة",
|
||||
"create-new-relation": "انشاء علاقة جديدة",
|
||||
"toggle-basic-properties": "اظهار/اخفاء الخصائص الاساسية",
|
||||
"toggle-file-properties": "اظهار/اخفاء خصائص الملف",
|
||||
"toggle-image-properties": "اظهار/اخفاء خصائص الصورة",
|
||||
"toggle-owned-attributes": "اظهار/اخفاء السمات المملوكة",
|
||||
"toggle-inherited-attributes": "اظهار/اخفاء السمات المتوارثه",
|
||||
"toggle-promoted-attributes": "اظخار/اخفاء السمات المروجة",
|
||||
"toggle-link-map": "اظهار/اخفاء خريطة الرابط",
|
||||
"toggle-note-info": "اظهار/اخفاء معلومات الملاحظة",
|
||||
"toggle-note-paths": "اظها/اخفاء مسارات الملاحظة",
|
||||
"toggle-similar-notes": "اظهار/اخفاء الملاحظات المشابهة",
|
||||
"print-active-note": "طباعة الملاحظة النشطة",
|
||||
"unhoist": "الغاء التركيز من اي مكان",
|
||||
"open-dev-tools": "فتح ادوات المطور",
|
||||
"find-in-text": "اظهار/اخفاء لوحة الفتح",
|
||||
"toggle-full-screen": "اظهار/اخفاء وضع ملء الشاشة",
|
||||
"reset-zoom-level": "اعادة ضبط مستوى التكبير",
|
||||
"toggle-book-properties": "اظهار/اخفاء خصائص المجموعة",
|
||||
"show-note-source": "عرض مربع حوار \"مصدر الملاحظات\"",
|
||||
"show-revisions": "عرض مربع حوار \" مراجعات الملاحظة\"",
|
||||
"show-recent-changes": "عرض مربع حوار \" التغيرات الاخيرة\"",
|
||||
"show-sql-console": "فتح صفحة \" وحدة تحكم SQL\"",
|
||||
"show-backend-log": "فتح صفحة \"سجل الخلفية\"",
|
||||
"edit-readonly-note": "تعديل ملاحظة القراءة فقط",
|
||||
"attributes-labels-and-relations": "سمات ( تسميات و علاقات)",
|
||||
"render-active-note": "عرض ( اعادة عرض) الملاحظة المؤرشفة",
|
||||
"show-help": "فتح دليل التعليمات",
|
||||
"copy-without-formatting": "نسخ النص المحدد بدون تنسيق"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"note": "ملاحظة:",
|
||||
"password": "كلمة المرور",
|
||||
"password-placeholder": "كلمة المرور",
|
||||
"back": "رجوع",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"finish-setup": "اكمال التثبيت",
|
||||
"heading": "مزامنة من الخادم",
|
||||
"server-host": "عنوان خادم تريليوم",
|
||||
"proxy-server": "خادم وكيل (اختياري)"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "الاثنين",
|
||||
"tuesday": "الثلاثاء",
|
||||
"wednesday": "الاربعاء",
|
||||
"thursday": "الخميس",
|
||||
"friday": "الجمعة",
|
||||
"saturday": "السبت",
|
||||
"sunday": "الأحد"
|
||||
},
|
||||
"months": {
|
||||
"january": "يناير",
|
||||
"february": "فبراير",
|
||||
"march": "مارس",
|
||||
"april": "ابريل",
|
||||
"may": "مايو",
|
||||
"june": "يونيو",
|
||||
"july": "يوليو",
|
||||
"august": "أغسطس",
|
||||
"september": "سبتمبر",
|
||||
"october": "أكتوبر",
|
||||
"november": "نوفمبر",
|
||||
"december": "ديسمبر"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "بحث:"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"calendar-title": "تقويم",
|
||||
"bookmarks-title": "العلامات المرجعية",
|
||||
"settings-title": "أعدادات",
|
||||
"options-title": "خيارات",
|
||||
"appearance-title": "المظهر",
|
||||
"shortcuts-title": "أختصارات",
|
||||
"images-title": "صور",
|
||||
"password-title": "كلمة المرور",
|
||||
"backup-title": "نسخة أحتياطية",
|
||||
"sync-title": "مزامنة",
|
||||
"other": "أخرى",
|
||||
"advanced-title": "متقدم",
|
||||
"inbox-title": "صندوق الوارد",
|
||||
"spacer-title": "فاصل",
|
||||
"spellcheck-title": "التدقيق الاملائي",
|
||||
"multi-factor-authentication-title": "المصادقة متعددة العوامل",
|
||||
"root-title": "الملاحظات المخفية",
|
||||
"search-history-title": "سجل البحث",
|
||||
"note-map-title": "خريطة الملاحظات",
|
||||
"shared-notes-title": "الملاحظات المشتركة",
|
||||
"bulk-action-title": "اجراء جماعي",
|
||||
"backend-log-title": "سجل الخادم",
|
||||
"user-hidden-title": "مخفي عن المستخدم",
|
||||
"command-launcher-title": "مشغل الاوامر",
|
||||
"note-launcher-title": "مشغل الملاحظة",
|
||||
"script-launcher-title": "مشغل السكربت",
|
||||
"built-in-widget-title": "عنصر واجهة مدمج",
|
||||
"custom-widget-title": "عنصر واجهة مخصص",
|
||||
"launch-bar-title": "شريط التشغيل",
|
||||
"available-launchers-title": "المشغلات المتاحة",
|
||||
"new-note-title": "ملاحظة جديدة",
|
||||
"search-notes-title": "البحث في الملاحظات",
|
||||
"jump-to-note-title": "انتقل الى...",
|
||||
"recent-changes-title": "التغيرات الاخيرة",
|
||||
"quick-search-title": "البحث السريع",
|
||||
"protected-session-title": "الجلسة المحمية",
|
||||
"sync-status-title": "حالة المزامنة",
|
||||
"text-notes": "ملاحظات نصية",
|
||||
"code-notes-title": "ملاحظات برمجية",
|
||||
"visible-launchers-title": "المشغلات المرئية",
|
||||
"user-guide": "دليل المستخدم",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"etapi-title": "ETAPI",
|
||||
"sql-console-history-title": "سجل وحدة تحكم SQL",
|
||||
"launch-bar-templates-title": "قوالب شريط التشغيل",
|
||||
"base-abstract-launcher-title": "المشغل الاساسي المجرد",
|
||||
"llm-chat-title": "الدردشة مع الملاحظات",
|
||||
"localization": "اللغة والمنطقة",
|
||||
"go-to-previous-note-title": "اذهب الى الملاحظة السابقة",
|
||||
"go-to-next-note-title": "اذهب الى الملاحظة التالية",
|
||||
"open-today-journal-note-title": "فتح ملاحظة مجلة اليوم"
|
||||
},
|
||||
"tray": {
|
||||
"bookmarks": "العلامات المرجعية",
|
||||
"tooltip": "ملاحظات تريليوم",
|
||||
"close": "انهاء تريليوم",
|
||||
"recents": "الملاحظات الحديثة",
|
||||
"new-note": "ملاحظة جديدة",
|
||||
"show-windows": "اظهار النوافذ",
|
||||
"open_new_window": "فتح نافذة جديدة",
|
||||
"today": "فتح ملاحظة مجلة اليوم"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "خطأ"
|
||||
},
|
||||
"share_theme": {
|
||||
"search_placeholder": "بحث...",
|
||||
"subpages": "الصفحات الفرعية:",
|
||||
"expand": "توسيع",
|
||||
"site-theme": "المظهر العام للموقع",
|
||||
"image_alt": "صورة المقال",
|
||||
"on-this-page": "في هذه السفحة",
|
||||
"last-updated": "اخر تحديث {{- date}}"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"description": "الوصف",
|
||||
"calendar": "التقويم",
|
||||
"table": "جدول",
|
||||
"geolocation": "الموقع الجغرافي",
|
||||
"board": "لوحة",
|
||||
"status": "الحالة",
|
||||
"board_status_done": "تمت",
|
||||
"start-time": "وقت البدء",
|
||||
"end-time": "وقت الانتهاء",
|
||||
"built-in-templates": "القوالب المدمجة",
|
||||
"board_note_first": "الملاحظة الاولى",
|
||||
"board_note_second": "الملاحظة الثانية",
|
||||
"board_note_third": "الملاحظة الرابعة",
|
||||
"board_status_todo": "قائمة المهام",
|
||||
"board_status_progress": "قيد التنفيذ",
|
||||
"text-snippet": "مقتطف نصي",
|
||||
"list-view": "عرض القائمة",
|
||||
"grid-view": "عرض شبكي",
|
||||
"geo-map": "خريطة جغرافية",
|
||||
"start-date": "تاريخ البدء",
|
||||
"end-date": "تاريخ الانتهاء",
|
||||
"presentation": "عرض تقديمي",
|
||||
"presentation_slide": "شريحة العرض التقديمي",
|
||||
"presentation_slide_first": "الشريحة الاولى",
|
||||
"presentation_slide_second": "الشريحة الثانية",
|
||||
"background": "الخلفية"
|
||||
},
|
||||
"login": {
|
||||
"title": "تسجيل الدخول",
|
||||
"password": "كلمة المرور",
|
||||
"button": "تسجيل الدخول",
|
||||
"heading": "تسجيل الدخول الى تريليوم",
|
||||
"remember-me": "تذكرني"
|
||||
},
|
||||
"set_password": {
|
||||
"password": "كلمة المرور",
|
||||
"title": "تعين كلمة المرور",
|
||||
"heading": "تعين كلمة المرور",
|
||||
"password-confirmation": "تاكيد كلمة المرور",
|
||||
"button": "تعين كلمة المرور"
|
||||
},
|
||||
"setup": {
|
||||
"next": "التالي",
|
||||
"title": "تثبيت",
|
||||
"heading": "تثبيت تريليوم للملاحظات",
|
||||
"init-in-progress": "جار تهيئة المستند"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"step6-here": "هنا",
|
||||
"heading": "مزامنة من سطح المكتب",
|
||||
"step3": "انقر على صنف المزامنة."
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"outstanding-items-default": "غير متوفر",
|
||||
"heading": "المزامنة جارية",
|
||||
"outstanding-items": "عناصر المزامنة المعلقة:"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "الأصل:",
|
||||
"child-notes": "الملاحظات الفرعية:",
|
||||
"no-content": "لاتحتوي هذة الملاحظة على محتوى."
|
||||
},
|
||||
"notes": {
|
||||
"duplicate-note-suffix": "(مكرر)",
|
||||
"new-note": "ملاحظة جديدة"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"jump-to-note": "انتقل الى ...",
|
||||
"command-palette": "لوحة الاوامر",
|
||||
"quick-search": "البحث السريع",
|
||||
"expand-subtree": "توسيع الشجرة الفرعية",
|
||||
"collapse-tree": "طي الشجرة",
|
||||
"collapse-subtree": "طي الشجرة الفرعية",
|
||||
"delete-notes": "حذف الملاحظات",
|
||||
"duplicate-subtree": "تكرار الشجرة الفرعية",
|
||||
"show-options": "عرض الخيارات",
|
||||
"show-revisions": "عرض المراجعات",
|
||||
"show-help": "عرض المساعدة",
|
||||
"show-cheatsheet": "عرض دليل الاختصارات",
|
||||
"unhoist-note": "الغاء تثبيت الملاحظة",
|
||||
"zoom-out": "تصغير العرض",
|
||||
"zoom-in": "تكبير العرض",
|
||||
"search-in-subtree": "البحث في الشجرة الفرعية",
|
||||
"sort-child-notes": "ترتيب الملاحظات الفرعية",
|
||||
"create-note-after": "انشاء ملاحظة بعد",
|
||||
"create-note-into": "انشاء معلومات الملاحظة",
|
||||
"move-note-up": "انقل الملاحظة للاعلى",
|
||||
"move-note-down": "انقل الملاحظة للاسفل",
|
||||
"edit-note-title": "تحرير عنوان الملاحظة",
|
||||
"clone-notes-to": "نسخ الملاحظة الى",
|
||||
"move-notes-to": "نقل الملاحظات الى",
|
||||
"open-new-tab": "فتح علامة تبويب جديدة",
|
||||
"close-active-tab": "اغلاق التبويب النشط",
|
||||
"reopen-last-tab": "اعادة فتح اخر تبويب",
|
||||
"activate-next-tab": "تنشيط علامة التبويب اللاحقة",
|
||||
"activate-previous-tab": "تنشيط علامة التبويب السابقة",
|
||||
"open-new-window": "فتح نافذة جديدة",
|
||||
"print-active-note": "طباعة الملاحظة النشطة",
|
||||
"open-note-externally": "افتح الملاحظة خارجيا",
|
||||
"render-active-note": "عرض الملاحظة النشطة",
|
||||
"run-active-note": "تشغيل الملاحظة النشطة",
|
||||
"open-developer-tools": "فتح ادوات المطور",
|
||||
"find-in-text": "البحث في النص",
|
||||
"toggle-left-pane": "اظهار/اخفاء اللوحة اليسرى",
|
||||
"toggle-full-screen": "اظهار/اخفاء وضع ملء الشاشة",
|
||||
"reset-zoom-level": "اعادة ضبط مستوى التكبير",
|
||||
"copy-without-formatting": "نسخ بدون تنسيق",
|
||||
"add-new-relation": "اضافة علاقة جديدة",
|
||||
"toggle-right-pane": "اظهار/اخفاء اللوحة اليمنى",
|
||||
"switch-to-second-tab": "الانتقال الى التبويب الثاني",
|
||||
"switch-to-third-tab": "الانتقال الى التبويب الثالث",
|
||||
"switch-to-fourth-tab": "الانتقال الى التبويب الرابع",
|
||||
"switch-to-fifth-tab": "الانتقال الى التبويب الخامس",
|
||||
"switch-to-sixth-tab": "الانتقال الى التبويب السادس",
|
||||
"switch-to-seventh-tab": "الانتقال الى التبويب السابع",
|
||||
"switch-to-eighth-tab": "الانتقال الى التبويب الثامن",
|
||||
"switch-to-ninth-tab": "الانتقال الى التبويب التاسع",
|
||||
"switch-to-last-tab": "الانتقال الى اخر تبويب",
|
||||
"add-link-to-text": "اضافة رابط الى النص",
|
||||
"edit-branch-prefix": "تحرير بادئة الفرع",
|
||||
"toggle-zen-mode": "اظهار/ اخفاء وضع Zen",
|
||||
"show-note-source": "اظهار مصدر الملاحظة",
|
||||
"show-recent-changes": "عرض التغيرات الاخيرة",
|
||||
"show-sql-console": "عرض وحدة تحكم SQL",
|
||||
"show-backend-log": "عرض سجل الخلفية",
|
||||
"cut-into-note": "قص الى الملاحظة",
|
||||
"edit-read-only-note": "تحرير ملاحظة للقراءة فقط",
|
||||
"add-new-label": "اضافة تسمية جديدة",
|
||||
"reload-frontend-app": "اعادة تحميل الواجهة الامامية للتطبيق",
|
||||
"force-save-revision": "فرض حفظ المراجعة",
|
||||
"toggle-note-hoisting": "اظهار/ اخفاء التركيز في الملاحظة",
|
||||
"back-in-note-history": "الرجوع الى سجل الملاحظة",
|
||||
"forward-in-note-history": "التقدم للامام في سجل الملاحظة",
|
||||
"scroll-to-active-note": "تمرير تلى الملاحظة النشطة",
|
||||
"create-note-into-inbox": "انشاء ملاحظة في البريد الوارد",
|
||||
"copy-notes-to-clipboard": "نسخ الملاحظات الى الخافظة",
|
||||
"paste-notes-from-clipboard": "لصق الملاحظات الى الحافظة",
|
||||
"cut-notes-to-clipboard": "قص الملاحظات الى الحافظة",
|
||||
"toggle-system-tray-icon": "تبديل ايقونة علبة النظام",
|
||||
"switch-to-first-tab": "التبديل الى التبويب الاول",
|
||||
"follow-link-under-cursor": "اتبع الرابط اسفل المؤشر",
|
||||
"paste-markdown-into-text": "لصق نص بتنسبق Markdown",
|
||||
"move-note-up-in-hierarchy": "نقل الملاحظة للاعلى في الهيكل",
|
||||
"move-note-down-in-hierarchy": "نقل الملاحظة للاسفل في الهيكل",
|
||||
"select-all-notes-in-parent": "تحديد جميع الملاحظات التابعة للملاحظة الاصل",
|
||||
"add-note-above-to-selection": "اضافة ملاحظة فوق الملاحظة المحددة",
|
||||
"add-note-below-to-selection": "اصافة ملاحظة اسفل الملاحظة المحددة",
|
||||
"add-include-note-to-text": "اضافة الملاحظة الى النص",
|
||||
"toggle-ribbon-tab-image-properties": "اظهار/ اخفاء صورة علامة التبويب في الشريط.",
|
||||
"toggle-ribbon-tab-classic-editor": "عرض/اخفاء تبويب المحور الكلاسيكي",
|
||||
"toggle-ribbon-tab-basic-properties": "عرض/اخفاء تبويب الخصائص الاساسية",
|
||||
"toggle-ribbon-tab-book-properties": "عرض/اخفاء تبويب خصائص الدفتر",
|
||||
"toggle-ribbon-tab-file-properties": "عرض/ادخفاء تبويب خصائص الملف",
|
||||
"toggle-ribbon-tab-owned-attributes": "عرض/اخفاء تبويب المميزات المملوكة",
|
||||
"toggle-ribbon-tab-inherited-attributes": "عرض/اخفاء تبويب السمات الموروثة",
|
||||
"toggle-ribbon-tab-promoted-attributes": "عرض/ اخفاء تبويب السمات المعززة",
|
||||
"toggle-ribbon-tab-note-map": "عرض/اخفاء تبويب خريطة الملاحظات",
|
||||
"toggle-ribbon-tab-similar-notes": "عرض/اخفاء شريط الملاحظات المشابهة",
|
||||
"export-active-note-as-pdf": "تصدير الملاحظة النشطة كملفPDF"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "غير موجود",
|
||||
"heading": "غير موجود"
|
||||
},
|
||||
"weekdayNumber": "الاسبوع{رقم الاسيوع}",
|
||||
"quarterNumber": "الربع {رقم الربع}",
|
||||
"pdf": {
|
||||
"export_filter": "مستند PDF (.pdf)",
|
||||
"unable-to-export-title": "تعذر التصدير كملف PDF"
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "فتح مربع الحوار \"الانتقال الى الملاحظة\"",
|
||||
"open-command-palette": "فتح لوحة الاوامر",
|
||||
"quick-search": "تفعيل شريط البحث السريع",
|
||||
"collapse-tree": "طي جميع الملاحظات",
|
||||
"collapse-subtree": "طي الفروع التابعة للملاحظة الحالية",
|
||||
"sort-child-notes": "ترتيب الملاحظات الفرعية",
|
||||
"creating-and-moving-notes": "انشاء الملاحظات ونقلها",
|
||||
"create-note-after": "انشاء ملاحظة بعد الملاحظة الحالية",
|
||||
"create-note-into": "انشاء ملاحظة فرعية تابعة للملاحظة الحالية",
|
||||
"delete-note": "حذف ملاحظة",
|
||||
"move-note-up": "نقل الملاحظة للاعلى",
|
||||
"move-note-down": "نثل الملاحظة للاسفل",
|
||||
"clone-notes-to": "استنساخ الملاحظات المحددة",
|
||||
"move-notes-to": "نقل الملاحظات للمحددة",
|
||||
"note-clipboard": "حافظة الملاحظات",
|
||||
"copy-notes-to-clipboard": "نسخ الملاحظات المحددة الى الحافظة",
|
||||
"paste-notes-from-clipboard": "لصق الملاحظا من الحافظة الى الملاحظة الحالية",
|
||||
"cut-notes-to-clipboard": "قص الملاحظات المحددة الى الحافظة",
|
||||
"select-all-notes-in-parent": "تحديد جميع الملاحظات من مستوى الملاحظة الحالي",
|
||||
"back-in-note-history": "الانتقال الى الملاحظة السابقة في السجل",
|
||||
"forward-in-note-history": "الانتقال الى الملاحظة التالية في السجل",
|
||||
"scroll-to-active-note": "تمرير شجرة الملاحظات الى الملاحظة النشطة",
|
||||
"search-in-subtree": "البحث عن الملاحظات في الشجرة الفرعية للملاحظة النشطة",
|
||||
"expand-subtree": "توسيع الشجرة الفرعية للملاحظة الحالية",
|
||||
"create-note-into-inbox": "انشاء ملاحظة في صندوق الوارد (اذا كان معرفا) او في ملاحظة اليوم",
|
||||
"move-note-up-in-hierarchy": "نقل الملاحظة للاعلى في التسلسل الهرمي",
|
||||
"move-note-down-in-hierarchy": "نقل الملاحظة للاسفل في التسلسل الهرمي",
|
||||
"edit-note-title": "الانتقال من شجرة الملاحظات إلى تفاصيل الملاحظة وتحرير العنوان",
|
||||
"edit-branch-prefix": "عرض مربع حوار \"تعديل بادئة الفرع\"",
|
||||
"add-note-above-to-the-selection": "اضافة ملاحظة فوق الملاحظة المحددة",
|
||||
"add-note-below-to-selection": "اضافة ملاحظة اسفل الملاحظة المحددة",
|
||||
"duplicate-subtree": "استنساخ الشجرة الفرعية",
|
||||
"tabs-and-windows": "التبويبات والنوافذ",
|
||||
"open-new-tab": "فتح تبويب جديد",
|
||||
"close-active-tab": "غلق التبويب النشط",
|
||||
"reopen-last-tab": "اعادة فتح اخر تبويب مغلق",
|
||||
"activate-next-tab": "تنشيط التبويب الموجود على اليمين",
|
||||
"activate-previous-tab": "تنشيط التبويب الموجود على اليسار",
|
||||
"open-new-window": "فتح نافذة جديدة فارغة",
|
||||
"first-tab": "تنشيط التبويب الاول في القائمة",
|
||||
"second-tab": "تنشيط التبويب الثاني في القائمة",
|
||||
"third-tab": "تنشيط التبويب الثالث في الثائمة",
|
||||
"fourth-tab": "تنشيط التبويب الرابع في القائمة",
|
||||
"fifth-tab": "تنشيط التبويب الخامس في القائمة",
|
||||
"sixth-tab": "تنشيط التبويب السادس في القائمة",
|
||||
"seventh-tab": "تنشيط التبويب السابع في القائمة",
|
||||
"eight-tab": "تنشيط التبويب الثامن في القائمة",
|
||||
"ninth-tab": "تنشيط التبويب التاسع في القائمة",
|
||||
"last-tab": "تنشيط التبويب الاخير في القائمة",
|
||||
"other": "أخرى",
|
||||
"dialogs": "مربعات الحوار",
|
||||
"ribbon-tabs": "علامات التبويب في الشريط",
|
||||
"reload-frontend-app": "اعادة تحميل الواجهة",
|
||||
"zoom-out": "تصغير العرض",
|
||||
"zoom-in": "تكبير العرض",
|
||||
"note-navigation": "التنقل بين الملاحظات",
|
||||
"show-options": "افتح صفحة \"الخيارات\"",
|
||||
"text-note-operations": "عمليات الملاحظة النصية",
|
||||
"add-new-label": "انشاء تسمية جديدة",
|
||||
"create-new-relation": "انشاء علاقة جديدة",
|
||||
"toggle-basic-properties": "اظهار/اخفاء الخصائص الاساسية",
|
||||
"toggle-file-properties": "اظهار/اخفاء خصائص الملف",
|
||||
"toggle-image-properties": "اظهار/اخفاء خصائص الصورة",
|
||||
"toggle-owned-attributes": "اظهار/اخفاء السمات المملوكة",
|
||||
"toggle-inherited-attributes": "اظهار/اخفاء السمات المتوارثه",
|
||||
"toggle-promoted-attributes": "اظخار/اخفاء السمات المروجة",
|
||||
"toggle-link-map": "اظهار/اخفاء خريطة الرابط",
|
||||
"toggle-note-info": "اظهار/اخفاء معلومات الملاحظة",
|
||||
"toggle-note-paths": "اظها/اخفاء مسارات الملاحظة",
|
||||
"toggle-similar-notes": "اظهار/اخفاء الملاحظات المشابهة",
|
||||
"print-active-note": "طباعة الملاحظة النشطة",
|
||||
"unhoist": "الغاء التركيز من اي مكان",
|
||||
"open-dev-tools": "فتح ادوات المطور",
|
||||
"find-in-text": "اظهار/اخفاء لوحة الفتح",
|
||||
"toggle-full-screen": "اظهار/اخفاء وضع ملء الشاشة",
|
||||
"reset-zoom-level": "اعادة ضبط مستوى التكبير",
|
||||
"toggle-book-properties": "اظهار/اخفاء خصائص المجموعة",
|
||||
"show-note-source": "عرض مربع حوار \"مصدر الملاحظات\"",
|
||||
"show-revisions": "عرض مربع حوار \" مراجعات الملاحظة\"",
|
||||
"show-recent-changes": "عرض مربع حوار \" التغيرات الاخيرة\"",
|
||||
"show-sql-console": "فتح صفحة \" وحدة تحكم SQL\"",
|
||||
"show-backend-log": "فتح صفحة \"سجل الخلفية\"",
|
||||
"edit-readonly-note": "تعديل ملاحظة القراءة فقط",
|
||||
"attributes-labels-and-relations": "سمات ( تسميات و علاقات)",
|
||||
"render-active-note": "عرض ( اعادة عرض) الملاحظة المؤرشفة",
|
||||
"show-help": "فتح دليل التعليمات",
|
||||
"copy-without-formatting": "نسخ النص المحدد بدون تنسيق"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"note": "ملاحظة:",
|
||||
"password": "كلمة المرور",
|
||||
"password-placeholder": "كلمة المرور",
|
||||
"back": "رجوع",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"finish-setup": "اكمال التثبيت",
|
||||
"heading": "مزامنة من الخادم",
|
||||
"server-host": "عنوان خادم تريليوم",
|
||||
"proxy-server": "خادم وكيل (اختياري)"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "الاثنين",
|
||||
"tuesday": "الثلاثاء",
|
||||
"wednesday": "الاربعاء",
|
||||
"thursday": "الخميس",
|
||||
"friday": "الجمعة",
|
||||
"saturday": "السبت",
|
||||
"sunday": "الأحد"
|
||||
},
|
||||
"months": {
|
||||
"january": "يناير",
|
||||
"february": "فبراير",
|
||||
"march": "مارس",
|
||||
"april": "ابريل",
|
||||
"may": "مايو",
|
||||
"june": "يونيو",
|
||||
"july": "يوليو",
|
||||
"august": "أغسطس",
|
||||
"september": "سبتمبر",
|
||||
"october": "أكتوبر",
|
||||
"november": "نوفمبر",
|
||||
"december": "ديسمبر"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "بحث:"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"calendar-title": "تقويم",
|
||||
"bookmarks-title": "العلامات المرجعية",
|
||||
"settings-title": "أعدادات",
|
||||
"options-title": "خيارات",
|
||||
"appearance-title": "المظهر",
|
||||
"shortcuts-title": "أختصارات",
|
||||
"images-title": "صور",
|
||||
"password-title": "كلمة المرور",
|
||||
"backup-title": "نسخة أحتياطية",
|
||||
"sync-title": "مزامنة",
|
||||
"other": "أخرى",
|
||||
"advanced-title": "متقدم",
|
||||
"inbox-title": "صندوق الوارد",
|
||||
"spacer-title": "فاصل",
|
||||
"spellcheck-title": "التدقيق الاملائي",
|
||||
"multi-factor-authentication-title": "المصادقة متعددة العوامل",
|
||||
"root-title": "الملاحظات المخفية",
|
||||
"search-history-title": "سجل البحث",
|
||||
"note-map-title": "خريطة الملاحظات",
|
||||
"shared-notes-title": "الملاحظات المشتركة",
|
||||
"bulk-action-title": "اجراء جماعي",
|
||||
"backend-log-title": "سجل الخادم",
|
||||
"user-hidden-title": "مخفي عن المستخدم",
|
||||
"command-launcher-title": "مشغل الاوامر",
|
||||
"note-launcher-title": "مشغل الملاحظة",
|
||||
"script-launcher-title": "مشغل السكربت",
|
||||
"built-in-widget-title": "عنصر واجهة مدمج",
|
||||
"custom-widget-title": "عنصر واجهة مخصص",
|
||||
"launch-bar-title": "شريط التشغيل",
|
||||
"available-launchers-title": "المشغلات المتاحة",
|
||||
"new-note-title": "ملاحظة جديدة",
|
||||
"search-notes-title": "البحث في الملاحظات",
|
||||
"jump-to-note-title": "انتقل الى...",
|
||||
"recent-changes-title": "التغيرات الاخيرة",
|
||||
"quick-search-title": "البحث السريع",
|
||||
"protected-session-title": "الجلسة المحمية",
|
||||
"sync-status-title": "حالة المزامنة",
|
||||
"text-notes": "ملاحظات نصية",
|
||||
"code-notes-title": "ملاحظات برمجية",
|
||||
"visible-launchers-title": "المشغلات المرئية",
|
||||
"user-guide": "دليل المستخدم",
|
||||
"etapi-title": "ETAPI",
|
||||
"sql-console-history-title": "سجل وحدة تحكم SQL",
|
||||
"launch-bar-templates-title": "قوالب شريط التشغيل",
|
||||
"base-abstract-launcher-title": "المشغل الاساسي المجرد",
|
||||
"localization": "اللغة والمنطقة",
|
||||
"go-to-previous-note-title": "اذهب الى الملاحظة السابقة",
|
||||
"go-to-next-note-title": "اذهب الى الملاحظة التالية",
|
||||
"open-today-journal-note-title": "فتح ملاحظة مجلة اليوم"
|
||||
},
|
||||
"tray": {
|
||||
"bookmarks": "العلامات المرجعية",
|
||||
"tooltip": "ملاحظات تريليوم",
|
||||
"close": "انهاء تريليوم",
|
||||
"recents": "الملاحظات الحديثة",
|
||||
"new-note": "ملاحظة جديدة",
|
||||
"show-windows": "اظهار النوافذ",
|
||||
"open_new_window": "فتح نافذة جديدة",
|
||||
"today": "فتح ملاحظة مجلة اليوم"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "خطأ"
|
||||
},
|
||||
"share_theme": {
|
||||
"search_placeholder": "بحث...",
|
||||
"subpages": "الصفحات الفرعية:",
|
||||
"expand": "توسيع",
|
||||
"site-theme": "المظهر العام للموقع",
|
||||
"image_alt": "صورة المقال",
|
||||
"on-this-page": "في هذه السفحة",
|
||||
"last-updated": "اخر تحديث {{- date}}"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"description": "الوصف",
|
||||
"calendar": "التقويم",
|
||||
"table": "جدول",
|
||||
"geolocation": "الموقع الجغرافي",
|
||||
"board": "لوحة",
|
||||
"status": "الحالة",
|
||||
"board_status_done": "تمت",
|
||||
"start-time": "وقت البدء",
|
||||
"end-time": "وقت الانتهاء",
|
||||
"built-in-templates": "القوالب المدمجة",
|
||||
"board_note_first": "الملاحظة الاولى",
|
||||
"board_note_second": "الملاحظة الثانية",
|
||||
"board_note_third": "الملاحظة الرابعة",
|
||||
"board_status_todo": "قائمة المهام",
|
||||
"board_status_progress": "قيد التنفيذ",
|
||||
"text-snippet": "مقتطف نصي",
|
||||
"list-view": "عرض القائمة",
|
||||
"grid-view": "عرض شبكي",
|
||||
"geo-map": "خريطة جغرافية",
|
||||
"start-date": "تاريخ البدء",
|
||||
"end-date": "تاريخ الانتهاء",
|
||||
"presentation": "عرض تقديمي",
|
||||
"presentation_slide": "شريحة العرض التقديمي",
|
||||
"presentation_slide_first": "الشريحة الاولى",
|
||||
"presentation_slide_second": "الشريحة الثانية",
|
||||
"background": "الخلفية"
|
||||
},
|
||||
"login": {
|
||||
"title": "تسجيل الدخول",
|
||||
"password": "كلمة المرور",
|
||||
"button": "تسجيل الدخول",
|
||||
"heading": "تسجيل الدخول الى تريليوم",
|
||||
"remember-me": "تذكرني"
|
||||
},
|
||||
"set_password": {
|
||||
"password": "كلمة المرور",
|
||||
"title": "تعين كلمة المرور",
|
||||
"heading": "تعين كلمة المرور",
|
||||
"password-confirmation": "تاكيد كلمة المرور",
|
||||
"button": "تعين كلمة المرور"
|
||||
},
|
||||
"setup": {
|
||||
"next": "التالي",
|
||||
"title": "تثبيت",
|
||||
"heading": "تثبيت تريليوم للملاحظات",
|
||||
"init-in-progress": "جار تهيئة المستند"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"step6-here": "هنا",
|
||||
"heading": "مزامنة من سطح المكتب",
|
||||
"step3": "انقر على صنف المزامنة."
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"outstanding-items-default": "غير متوفر",
|
||||
"heading": "المزامنة جارية",
|
||||
"outstanding-items": "عناصر المزامنة المعلقة:"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "الأصل:",
|
||||
"child-notes": "الملاحظات الفرعية:",
|
||||
"no-content": "لاتحتوي هذة الملاحظة على محتوى."
|
||||
},
|
||||
"notes": {
|
||||
"duplicate-note-suffix": "(مكرر)",
|
||||
"new-note": "ملاحظة جديدة"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"jump-to-note": "انتقل الى ...",
|
||||
"command-palette": "لوحة الاوامر",
|
||||
"quick-search": "البحث السريع",
|
||||
"expand-subtree": "توسيع الشجرة الفرعية",
|
||||
"collapse-tree": "طي الشجرة",
|
||||
"collapse-subtree": "طي الشجرة الفرعية",
|
||||
"delete-notes": "حذف الملاحظات",
|
||||
"duplicate-subtree": "تكرار الشجرة الفرعية",
|
||||
"show-options": "عرض الخيارات",
|
||||
"show-revisions": "عرض المراجعات",
|
||||
"show-help": "عرض المساعدة",
|
||||
"show-cheatsheet": "عرض دليل الاختصارات",
|
||||
"unhoist-note": "الغاء تثبيت الملاحظة",
|
||||
"zoom-out": "تصغير العرض",
|
||||
"zoom-in": "تكبير العرض",
|
||||
"search-in-subtree": "البحث في الشجرة الفرعية",
|
||||
"sort-child-notes": "ترتيب الملاحظات الفرعية",
|
||||
"create-note-after": "انشاء ملاحظة بعد",
|
||||
"create-note-into": "انشاء معلومات الملاحظة",
|
||||
"move-note-up": "انقل الملاحظة للاعلى",
|
||||
"move-note-down": "انقل الملاحظة للاسفل",
|
||||
"edit-note-title": "تحرير عنوان الملاحظة",
|
||||
"clone-notes-to": "نسخ الملاحظة الى",
|
||||
"move-notes-to": "نقل الملاحظات الى",
|
||||
"open-new-tab": "فتح علامة تبويب جديدة",
|
||||
"close-active-tab": "اغلاق التبويب النشط",
|
||||
"reopen-last-tab": "اعادة فتح اخر تبويب",
|
||||
"activate-next-tab": "تنشيط علامة التبويب اللاحقة",
|
||||
"activate-previous-tab": "تنشيط علامة التبويب السابقة",
|
||||
"open-new-window": "فتح نافذة جديدة",
|
||||
"print-active-note": "طباعة الملاحظة النشطة",
|
||||
"open-note-externally": "افتح الملاحظة خارجيا",
|
||||
"render-active-note": "عرض الملاحظة النشطة",
|
||||
"run-active-note": "تشغيل الملاحظة النشطة",
|
||||
"open-developer-tools": "فتح ادوات المطور",
|
||||
"find-in-text": "البحث في النص",
|
||||
"toggle-left-pane": "اظهار/اخفاء اللوحة اليسرى",
|
||||
"toggle-full-screen": "اظهار/اخفاء وضع ملء الشاشة",
|
||||
"reset-zoom-level": "اعادة ضبط مستوى التكبير",
|
||||
"copy-without-formatting": "نسخ بدون تنسيق",
|
||||
"add-new-relation": "اضافة علاقة جديدة",
|
||||
"toggle-right-pane": "اظهار/اخفاء اللوحة اليمنى",
|
||||
"switch-to-second-tab": "الانتقال الى التبويب الثاني",
|
||||
"switch-to-third-tab": "الانتقال الى التبويب الثالث",
|
||||
"switch-to-fourth-tab": "الانتقال الى التبويب الرابع",
|
||||
"switch-to-fifth-tab": "الانتقال الى التبويب الخامس",
|
||||
"switch-to-sixth-tab": "الانتقال الى التبويب السادس",
|
||||
"switch-to-seventh-tab": "الانتقال الى التبويب السابع",
|
||||
"switch-to-eighth-tab": "الانتقال الى التبويب الثامن",
|
||||
"switch-to-ninth-tab": "الانتقال الى التبويب التاسع",
|
||||
"switch-to-last-tab": "الانتقال الى اخر تبويب",
|
||||
"add-link-to-text": "اضافة رابط الى النص",
|
||||
"edit-branch-prefix": "تحرير بادئة الفرع",
|
||||
"toggle-zen-mode": "اظهار/ اخفاء وضع Zen",
|
||||
"show-note-source": "اظهار مصدر الملاحظة",
|
||||
"show-recent-changes": "عرض التغيرات الاخيرة",
|
||||
"show-sql-console": "عرض وحدة تحكم SQL",
|
||||
"show-backend-log": "عرض سجل الخلفية",
|
||||
"cut-into-note": "قص الى الملاحظة",
|
||||
"edit-read-only-note": "تحرير ملاحظة للقراءة فقط",
|
||||
"add-new-label": "اضافة تسمية جديدة",
|
||||
"reload-frontend-app": "اعادة تحميل الواجهة الامامية للتطبيق",
|
||||
"force-save-revision": "فرض حفظ المراجعة",
|
||||
"toggle-note-hoisting": "اظهار/ اخفاء التركيز في الملاحظة",
|
||||
"back-in-note-history": "الرجوع الى سجل الملاحظة",
|
||||
"forward-in-note-history": "التقدم للامام في سجل الملاحظة",
|
||||
"scroll-to-active-note": "تمرير تلى الملاحظة النشطة",
|
||||
"create-note-into-inbox": "انشاء ملاحظة في البريد الوارد",
|
||||
"copy-notes-to-clipboard": "نسخ الملاحظات الى الخافظة",
|
||||
"paste-notes-from-clipboard": "لصق الملاحظات الى الحافظة",
|
||||
"cut-notes-to-clipboard": "قص الملاحظات الى الحافظة",
|
||||
"toggle-system-tray-icon": "تبديل ايقونة علبة النظام",
|
||||
"switch-to-first-tab": "التبديل الى التبويب الاول",
|
||||
"follow-link-under-cursor": "اتبع الرابط اسفل المؤشر",
|
||||
"paste-markdown-into-text": "لصق نص بتنسبق Markdown",
|
||||
"move-note-up-in-hierarchy": "نقل الملاحظة للاعلى في الهيكل",
|
||||
"move-note-down-in-hierarchy": "نقل الملاحظة للاسفل في الهيكل",
|
||||
"select-all-notes-in-parent": "تحديد جميع الملاحظات التابعة للملاحظة الاصل",
|
||||
"add-note-above-to-selection": "اضافة ملاحظة فوق الملاحظة المحددة",
|
||||
"add-note-below-to-selection": "اصافة ملاحظة اسفل الملاحظة المحددة",
|
||||
"add-include-note-to-text": "اضافة الملاحظة الى النص",
|
||||
"toggle-ribbon-tab-image-properties": "اظهار/ اخفاء صورة علامة التبويب في الشريط.",
|
||||
"toggle-ribbon-tab-classic-editor": "عرض/اخفاء تبويب المحور الكلاسيكي",
|
||||
"toggle-ribbon-tab-basic-properties": "عرض/اخفاء تبويب الخصائص الاساسية",
|
||||
"toggle-ribbon-tab-book-properties": "عرض/اخفاء تبويب خصائص الدفتر",
|
||||
"toggle-ribbon-tab-file-properties": "عرض/ادخفاء تبويب خصائص الملف",
|
||||
"toggle-ribbon-tab-owned-attributes": "عرض/اخفاء تبويب المميزات المملوكة",
|
||||
"toggle-ribbon-tab-inherited-attributes": "عرض/اخفاء تبويب السمات الموروثة",
|
||||
"toggle-ribbon-tab-promoted-attributes": "عرض/ اخفاء تبويب السمات المعززة",
|
||||
"toggle-ribbon-tab-note-map": "عرض/اخفاء تبويب خريطة الملاحظات",
|
||||
"toggle-ribbon-tab-similar-notes": "عرض/اخفاء شريط الملاحظات المشابهة",
|
||||
"export-active-note-as-pdf": "تصدير الملاحظة النشطة كملفPDF"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "غير موجود",
|
||||
"heading": "غير موجود"
|
||||
},
|
||||
"weekdayNumber": "الاسبوع{رقم الاسيوع}",
|
||||
"quarterNumber": "الربع {رقم الربع}",
|
||||
"pdf": {
|
||||
"export_filter": "مستند PDF (.pdf)",
|
||||
"unable-to-export-title": "تعذر التصدير كملف PDF"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,108 +1,107 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Navega a la nota previa a l'historial",
|
||||
"forward-in-note-history": "Navega a la següent nota a l'historial",
|
||||
"dialogs": "Diàlegs",
|
||||
"other": "Altres",
|
||||
"open-jump-to-note-dialog": "Obre \"Salta a la nota\"",
|
||||
"open-command-palette": "Obre el panell de comandes"
|
||||
},
|
||||
"login": {
|
||||
"title": "Inicia sessió",
|
||||
"password": "Contrasenya",
|
||||
"button": "Inicia sessió"
|
||||
},
|
||||
"set_password": {
|
||||
"password": "Contrasenya"
|
||||
},
|
||||
"setup": {
|
||||
"next": "Següent",
|
||||
"title": "Configuració"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"step6-here": "aquí"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Nota:",
|
||||
"password": "Contrasenya",
|
||||
"password-placeholder": "Contrasenya",
|
||||
"back": "Torna"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "pare:"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Dilluns",
|
||||
"tuesday": "Dimarts",
|
||||
"wednesday": "Dimecres",
|
||||
"thursday": "Dijous",
|
||||
"friday": "Divendres",
|
||||
"saturday": "Dissabte",
|
||||
"sunday": "Diumenge"
|
||||
},
|
||||
"months": {
|
||||
"january": "Gener",
|
||||
"february": "Febrer",
|
||||
"march": "Març",
|
||||
"april": "Abril",
|
||||
"may": "Maig",
|
||||
"june": "Juny",
|
||||
"july": "Juliol",
|
||||
"august": "Agost",
|
||||
"september": "Setembre",
|
||||
"october": "Octubre",
|
||||
"november": "Novembre",
|
||||
"december": "Desembre"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Cerca:"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"spacer-title": "Espaiador",
|
||||
"calendar-title": "Calendari",
|
||||
"bookmarks-title": "Marcadors",
|
||||
"settings-title": "Ajustos",
|
||||
"options-title": "Opcions",
|
||||
"appearance-title": "Aparença",
|
||||
"shortcuts-title": "Dreceres",
|
||||
"images-title": "Imatges",
|
||||
"spellcheck-title": "Correció ortogràfica",
|
||||
"password-title": "Contrasenya",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Còpia de seguretat",
|
||||
"sync-title": "Sincronització",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "Altres",
|
||||
"advanced-title": "Avançat",
|
||||
"inbox-title": "Safata d'entrada"
|
||||
},
|
||||
"notes": {
|
||||
"duplicate-note-suffix": "(dup)"
|
||||
},
|
||||
"tray": {
|
||||
"bookmarks": "Marcadors"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Error"
|
||||
},
|
||||
"share_theme": {
|
||||
"search_placeholder": "Cerca...",
|
||||
"subpages": "Subpàgines:",
|
||||
"expand": "Expandeix"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"description": "Descripció",
|
||||
"calendar": "Calendari",
|
||||
"table": "Taula",
|
||||
"geolocation": "Geolocalització",
|
||||
"board": "Tauler",
|
||||
"status": "Estat",
|
||||
"board_status_done": "Fet"
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Navega a la nota previa a l'historial",
|
||||
"forward-in-note-history": "Navega a la següent nota a l'historial",
|
||||
"dialogs": "Diàlegs",
|
||||
"other": "Altres",
|
||||
"open-jump-to-note-dialog": "Obre \"Salta a la nota\"",
|
||||
"open-command-palette": "Obre el panell de comandes"
|
||||
},
|
||||
"login": {
|
||||
"title": "Inicia sessió",
|
||||
"password": "Contrasenya",
|
||||
"button": "Inicia sessió"
|
||||
},
|
||||
"set_password": {
|
||||
"password": "Contrasenya"
|
||||
},
|
||||
"setup": {
|
||||
"next": "Següent",
|
||||
"title": "Configuració"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"step6-here": "aquí"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Nota:",
|
||||
"password": "Contrasenya",
|
||||
"password-placeholder": "Contrasenya",
|
||||
"back": "Torna"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "pare:"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Dilluns",
|
||||
"tuesday": "Dimarts",
|
||||
"wednesday": "Dimecres",
|
||||
"thursday": "Dijous",
|
||||
"friday": "Divendres",
|
||||
"saturday": "Dissabte",
|
||||
"sunday": "Diumenge"
|
||||
},
|
||||
"months": {
|
||||
"january": "Gener",
|
||||
"february": "Febrer",
|
||||
"march": "Març",
|
||||
"april": "Abril",
|
||||
"may": "Maig",
|
||||
"june": "Juny",
|
||||
"july": "Juliol",
|
||||
"august": "Agost",
|
||||
"september": "Setembre",
|
||||
"october": "Octubre",
|
||||
"november": "Novembre",
|
||||
"december": "Desembre"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Cerca:"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"spacer-title": "Espaiador",
|
||||
"calendar-title": "Calendari",
|
||||
"bookmarks-title": "Marcadors",
|
||||
"settings-title": "Ajustos",
|
||||
"options-title": "Opcions",
|
||||
"appearance-title": "Aparença",
|
||||
"shortcuts-title": "Dreceres",
|
||||
"images-title": "Imatges",
|
||||
"spellcheck-title": "Correció ortogràfica",
|
||||
"password-title": "Contrasenya",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Còpia de seguretat",
|
||||
"sync-title": "Sincronització",
|
||||
"other": "Altres",
|
||||
"advanced-title": "Avançat",
|
||||
"inbox-title": "Safata d'entrada"
|
||||
},
|
||||
"notes": {
|
||||
"duplicate-note-suffix": "(dup)"
|
||||
},
|
||||
"tray": {
|
||||
"bookmarks": "Marcadors"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Error"
|
||||
},
|
||||
"share_theme": {
|
||||
"search_placeholder": "Cerca...",
|
||||
"subpages": "Subpàgines:",
|
||||
"expand": "Expandeix"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"description": "Descripció",
|
||||
"calendar": "Calendari",
|
||||
"table": "Taula",
|
||||
"geolocation": "Geolocalització",
|
||||
"board": "Tauler",
|
||||
"status": "Estat",
|
||||
"board_status_done": "Fet"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,441 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "打开“跳转到笔记”对话框",
|
||||
"search-in-subtree": "在当前笔记的子树中搜索笔记",
|
||||
"expand-subtree": "展开当前笔记的子树",
|
||||
"collapse-tree": "折叠完整的笔记树",
|
||||
"collapse-subtree": "折叠当前笔记的子树",
|
||||
"sort-child-notes": "排序子笔记",
|
||||
"creating-and-moving-notes": "创建和移动笔记",
|
||||
"create-note-into-inbox": "在收件箱(若已定义)或日记中创建笔记",
|
||||
"delete-note": "删除笔记",
|
||||
"move-note-up": "向上移动笔记",
|
||||
"move-note-down": "向下移动笔记",
|
||||
"move-note-up-in-hierarchy": "在层级中向上移动笔记",
|
||||
"move-note-down-in-hierarchy": "在层级中向下移动笔记",
|
||||
"edit-note-title": "从树跳转到笔记详情并编辑标题",
|
||||
"edit-branch-prefix": "显示编辑分支前缀对话框",
|
||||
"note-clipboard": "笔记剪贴板",
|
||||
"copy-notes-to-clipboard": "复制选定的笔记到剪贴板",
|
||||
"paste-notes-from-clipboard": "从剪贴板粘贴笔记到当前笔记中",
|
||||
"cut-notes-to-clipboard": "剪切选定的笔记到剪贴板",
|
||||
"select-all-notes-in-parent": "选择当前笔记级别的所有笔记",
|
||||
"add-note-above-to-the-selection": "将上方笔记添加到选择中",
|
||||
"add-note-below-to-selection": "将下方笔记添加到选择中",
|
||||
"duplicate-subtree": "复制子树",
|
||||
"tabs-and-windows": "标签页和窗口",
|
||||
"open-new-tab": "打开新标签页",
|
||||
"close-active-tab": "关闭当前标签页",
|
||||
"reopen-last-tab": "重新打开最后关闭的标签页",
|
||||
"activate-next-tab": "切换下一个标签页",
|
||||
"activate-previous-tab": "切换上一个标签页",
|
||||
"open-new-window": "打开新窗口",
|
||||
"toggle-tray": "显示/隐藏系统托盘图标",
|
||||
"first-tab": "切换到第一个标签页",
|
||||
"second-tab": "切换到第二个标签页",
|
||||
"third-tab": "切换到第三个标签页",
|
||||
"fourth-tab": "切换到第四个标签页",
|
||||
"fifth-tab": "切换到第五个标签页",
|
||||
"sixth-tab": "切换到第六个标签页",
|
||||
"seventh-tab": "切换到第七个标签页",
|
||||
"eight-tab": "切换到第八个标签页",
|
||||
"ninth-tab": "切换到第九个标签页",
|
||||
"last-tab": "切换到最后一个标签页",
|
||||
"dialogs": "对话框",
|
||||
"show-note-source": "显示笔记源代码对话框",
|
||||
"show-options": "显示选项对话框",
|
||||
"show-revisions": "显示修订历史对话框",
|
||||
"show-recent-changes": "显示最近更改对话框",
|
||||
"show-sql-console": "显示SQL控制台对话框",
|
||||
"show-backend-log": "显示后端日志对话框",
|
||||
"text-note-operations": "文本笔记操作",
|
||||
"add-link-to-text": "打开对话框以添加链接到文本",
|
||||
"follow-link-under-cursor": "访问光标下的链接",
|
||||
"insert-date-and-time-to-text": "在文本中插入日期和时间",
|
||||
"paste-markdown-into-text": "从剪贴板粘贴 Markdown 到文本笔记",
|
||||
"cut-into-note": "剪切当前笔记的选区并创建包含选定文本的子笔记",
|
||||
"add-include-note-to-text": "打开对话框以添加一个包含笔记",
|
||||
"edit-readonly-note": "编辑只读笔记",
|
||||
"attributes-labels-and-relations": "属性(标签和关系)",
|
||||
"add-new-label": "创建新标签",
|
||||
"create-new-relation": "创建新关系",
|
||||
"ribbon-tabs": "功能区标签页",
|
||||
"toggle-basic-properties": "切换基本属性",
|
||||
"toggle-file-properties": "切换文件属性",
|
||||
"toggle-image-properties": "切换图像属性",
|
||||
"toggle-owned-attributes": "切换拥有的属性",
|
||||
"toggle-inherited-attributes": "切换继承的属性",
|
||||
"toggle-promoted-attributes": "切换提升的属性",
|
||||
"toggle-link-map": "切换链接地图",
|
||||
"toggle-note-info": "切换笔记信息",
|
||||
"toggle-note-paths": "切换笔记路径",
|
||||
"toggle-similar-notes": "切换相似笔记",
|
||||
"other": "其他",
|
||||
"toggle-right-pane": "切换右侧面板的显示,包括目录和高亮",
|
||||
"print-active-note": "打印当前笔记",
|
||||
"open-note-externally": "以默认应用打开笔记文件",
|
||||
"render-active-note": "渲染(重新渲染)当前笔记",
|
||||
"run-active-note": "运行当前 JavaScript(前/后端)代码笔记",
|
||||
"toggle-note-hoisting": "提升笔记",
|
||||
"unhoist": "取消提升笔记",
|
||||
"reload-frontend-app": "重新加载前端应用",
|
||||
"open-dev-tools": "打开开发者工具",
|
||||
"toggle-left-note-tree-panel": "切换左侧(笔记树)面板",
|
||||
"toggle-full-screen": "切换全屏模式",
|
||||
"zoom-out": "缩小",
|
||||
"zoom-in": "放大",
|
||||
"note-navigation": "笔记导航",
|
||||
"reset-zoom-level": "重置缩放级别",
|
||||
"copy-without-formatting": "无格式复制选定文本",
|
||||
"force-save-revision": "强制创建/保存当前笔记的新修订版本",
|
||||
"show-help": "显示帮助",
|
||||
"toggle-book-properties": "切换书籍属性",
|
||||
"toggle-classic-editor-toolbar": "为编辑器切换格式标签页的固定工具栏",
|
||||
"export-as-pdf": "导出当前笔记为 PDF",
|
||||
"show-cheatsheet": "显示快捷键指南",
|
||||
"toggle-zen-mode": "启用/禁用禅模式(为专注编辑而精简界面)",
|
||||
"open-command-palette": "打开命令面板",
|
||||
"quick-search": "激活快速搜索栏",
|
||||
"create-note-after": "在当前笔记后面创建笔记",
|
||||
"create-note-into": "创建笔记作为当前笔记的子笔记",
|
||||
"clone-notes-to": "克隆选中的笔记到",
|
||||
"move-notes-to": "移动选中的笔记到",
|
||||
"find-in-text": "在文本中查找",
|
||||
"back-in-note-history": "导航到历史记录中的上一个笔记",
|
||||
"forward-in-note-history": "导航到历史记录的下一个笔记",
|
||||
"scroll-to-active-note": "滚动笔记树到当前笔记"
|
||||
},
|
||||
"login": {
|
||||
"title": "登录",
|
||||
"heading": "Trilium 登录",
|
||||
"incorrect-totp": "TOTP 不正确,请重试。",
|
||||
"incorrect-password": "密码不正确,请重试。",
|
||||
"password": "密码",
|
||||
"remember-me": "记住我",
|
||||
"button": "登录",
|
||||
"sign_in_with_sso": "使用 {{ ssoIssuerName }} 登录"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "设置密码",
|
||||
"heading": "设置密码",
|
||||
"description": "在您能够从Web开始使用Trilium之前,您需要先设置一个密码。您之后将使用此密码登录。",
|
||||
"password": "密码",
|
||||
"password-confirmation": "密码确认",
|
||||
"button": "设置密码"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "TriliumNext笔记设置",
|
||||
"new-document": "我是新用户,我想为我的笔记创建一个新的Trilium文档",
|
||||
"sync-from-desktop": "我已经有一个桌面实例,我想设置与它的同步",
|
||||
"sync-from-server": "我已经有一个服务器实例,我想设置与它的同步",
|
||||
"next": "下一步",
|
||||
"init-in-progress": "文档初始化进行中",
|
||||
"redirecting": "您将很快被重定向到应用程序。",
|
||||
"title": "设置"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "从桌面同步",
|
||||
"description": "此设置需要从桌面实例开始:",
|
||||
"step1": "打开您的TriliumNext笔记桌面实例。",
|
||||
"step2": "从Trilium菜单中,点击“选项”。",
|
||||
"step3": "点击“同步”类别。",
|
||||
"step4": "将服务器实例地址更改为:{{- host}} 并点击保存。",
|
||||
"step5": "点击“测试同步”按钮以验证连接是否成功。",
|
||||
"step6": "完成这些步骤后,点击{{- link}}。",
|
||||
"step6-here": "这里"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "从服务器同步",
|
||||
"instructions": "请在下面输入Trilium服务器地址和凭据。这将从服务器下载整个Trilium文档并设置与它的同步。根据文档大小和您的连接的速度,这可能需要一段时间。",
|
||||
"server-host": "Trilium服务器地址",
|
||||
"server-host-placeholder": "https://<主机名称>:<端口>",
|
||||
"proxy-server": "代理服务器(可选)",
|
||||
"proxy-server-placeholder": "https://<主机名称>:<端口>",
|
||||
"note": "注意:",
|
||||
"proxy-instruction": "如果您将代理设置留空,将使用系统代理(仅适用于桌面应用)",
|
||||
"password": "密码",
|
||||
"password-placeholder": "密码",
|
||||
"back": "返回",
|
||||
"finish-setup": "完成设置"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "同步中",
|
||||
"successful": "同步已被正确设置。初始同步完成可能需要一些时间。完成后,您将被重定向到登录页面。",
|
||||
"outstanding-items": "未完成的同步项目:",
|
||||
"outstanding-items-default": "无"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "未找到",
|
||||
"heading": "未找到"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "父级:",
|
||||
"clipped-from": "此笔记最初剪切自 {{- url}}",
|
||||
"child-notes": "子笔记:",
|
||||
"no-content": "此笔记没有内容。"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "周一",
|
||||
"tuesday": "周二",
|
||||
"wednesday": "周三",
|
||||
"thursday": "周四",
|
||||
"friday": "周五",
|
||||
"saturday": "周六",
|
||||
"sunday": "周日"
|
||||
},
|
||||
"weekdayNumber": "第 {weekNumber} 周",
|
||||
"months": {
|
||||
"january": "一月",
|
||||
"february": "二月",
|
||||
"march": "三月",
|
||||
"april": "四月",
|
||||
"may": "五月",
|
||||
"june": "六月",
|
||||
"july": "七月",
|
||||
"august": "八月",
|
||||
"september": "九月",
|
||||
"october": "十月",
|
||||
"november": "十一月",
|
||||
"december": "十二月"
|
||||
},
|
||||
"quarterNumber": "第 {quarterNumber} 季度",
|
||||
"special_notes": {
|
||||
"search_prefix": "搜索:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "同步服务器主机未配置。请先配置同步。",
|
||||
"successful": "同步服务器握手成功,同步已开始。"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "隐藏的笔记",
|
||||
"search-history-title": "搜索历史",
|
||||
"note-map-title": "笔记地图",
|
||||
"sql-console-history-title": "SQL 控制台历史",
|
||||
"shared-notes-title": "共享笔记",
|
||||
"bulk-action-title": "批量操作",
|
||||
"backend-log-title": "后端日志",
|
||||
"user-hidden-title": "隐藏的用户",
|
||||
"launch-bar-templates-title": "启动栏模板",
|
||||
"base-abstract-launcher-title": "基础摘要启动器",
|
||||
"command-launcher-title": "命令启动器",
|
||||
"note-launcher-title": "笔记启动器",
|
||||
"script-launcher-title": "脚本启动器",
|
||||
"built-in-widget-title": "内置小组件",
|
||||
"spacer-title": "空白占位",
|
||||
"custom-widget-title": "自定义小组件",
|
||||
"launch-bar-title": "启动栏",
|
||||
"available-launchers-title": "可用启动器",
|
||||
"go-to-previous-note-title": "跳转到上一条笔记",
|
||||
"go-to-next-note-title": "跳转到下一条笔记",
|
||||
"new-note-title": "新建笔记",
|
||||
"search-notes-title": "搜索笔记",
|
||||
"calendar-title": "日历",
|
||||
"recent-changes-title": "最近更改",
|
||||
"bookmarks-title": "书签",
|
||||
"open-today-journal-note-title": "打开今天的日记笔记",
|
||||
"quick-search-title": "快速搜索",
|
||||
"protected-session-title": "受保护的会话",
|
||||
"sync-status-title": "同步状态",
|
||||
"settings-title": "设置",
|
||||
"options-title": "选项",
|
||||
"appearance-title": "外观",
|
||||
"shortcuts-title": "快捷键",
|
||||
"text-notes": "文本笔记",
|
||||
"code-notes-title": "代码笔记",
|
||||
"images-title": "图片",
|
||||
"spellcheck-title": "拼写检查",
|
||||
"password-title": "密码",
|
||||
"multi-factor-authentication-title": "多因素认证",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "备份",
|
||||
"sync-title": "同步",
|
||||
"other": "其他",
|
||||
"advanced-title": "高级",
|
||||
"visible-launchers-title": "可见启动器",
|
||||
"user-guide": "用户指南",
|
||||
"localization": "语言和区域",
|
||||
"jump-to-note-title": "跳转至...",
|
||||
"llm-chat-title": "与笔记聊天",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"inbox-title": "收件箱",
|
||||
"command-palette": "打开命令面板",
|
||||
"zen-mode": "禅模式",
|
||||
"tab-switcher-title": "标签切换器"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "新建笔记",
|
||||
"duplicate-note-suffix": "(重复)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "后端日志文件 '{{ fileName }}' 暂不存在。",
|
||||
"reading-log-failed": "读取后端日志文件 '{{ fileName }}' 失败。"
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "此笔记类型无法显示。"
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF 文档 (*.pdf)",
|
||||
"unable-to-export-message": "当前笔记无法被导出为 PDF。",
|
||||
"unable-to-export-title": "无法导出为 PDF",
|
||||
"unable-to-save-message": "所选文件不能被写入。重试或选择另一个目的地。",
|
||||
"unable-to-print": "无法打印笔记"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "TriliumNext 笔记",
|
||||
"close": "退出 Trilium",
|
||||
"recents": "最近笔记",
|
||||
"bookmarks": "书签",
|
||||
"today": "打开今天的日记笔记",
|
||||
"new-note": "新建笔记",
|
||||
"show-windows": "显示窗口",
|
||||
"open_new_window": "打开新窗口"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "由您当前版本的直接迁移不被支持。请先升级到最新的 v0.60.4 然后再到这个版本。",
|
||||
"error_message": "迁移到版本 {{version}} 时发生错误: {{stack}}",
|
||||
"wrong_db_version": "数据库的版本({{version}})新于应用期望的版本({{targetVersion}}),这意味着它由一个更加新的且不兼容的 Trilium 所创建。升级到最新版的 Trilium 以解决此问题。"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "错误"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "返回笔记历史",
|
||||
"forward-in-note-history": "前进笔记历史",
|
||||
"jump-to-note": "跳转到...",
|
||||
"command-palette": "命令面板",
|
||||
"scroll-to-active-note": "滚动到当前笔记",
|
||||
"quick-search": "快速搜索",
|
||||
"search-in-subtree": "在子树中搜索",
|
||||
"expand-subtree": "展开子树",
|
||||
"collapse-tree": "折叠整个树",
|
||||
"collapse-subtree": "折叠子树",
|
||||
"sort-child-notes": "排序子笔记",
|
||||
"create-note-after": "在后面创建笔记",
|
||||
"create-note-into": "创建笔记到",
|
||||
"create-note-into-inbox": "创建笔记到收件箱",
|
||||
"delete-notes": "删除笔记",
|
||||
"move-note-up": "上移笔记",
|
||||
"move-note-down": "下移笔记",
|
||||
"move-note-up-in-hierarchy": "在层级中上移笔记",
|
||||
"move-note-down-in-hierarchy": "在层级中下移笔记",
|
||||
"edit-note-title": "编辑笔记标题",
|
||||
"edit-branch-prefix": "编辑分支前缀",
|
||||
"clone-notes-to": "克隆笔记到",
|
||||
"move-notes-to": "移动笔记到",
|
||||
"copy-notes-to-clipboard": "复制笔记到剪贴板",
|
||||
"paste-notes-from-clipboard": "从剪贴板粘贴笔记",
|
||||
"cut-notes-to-clipboard": "剪切笔记到剪贴板",
|
||||
"select-all-notes-in-parent": "选择父节点中所有笔记",
|
||||
"zoom-in": "放大",
|
||||
"zoom-out": "缩小",
|
||||
"reset-zoom-level": "重置缩放级别",
|
||||
"copy-without-formatting": "无格式复制",
|
||||
"force-save-revision": "强制保存修订版本",
|
||||
"add-note-above-to-selection": "将上方笔记添加到选择",
|
||||
"add-note-below-to-selection": "将下方笔记添加到选择",
|
||||
"duplicate-subtree": "复制子树",
|
||||
"open-new-tab": "打开新标签页",
|
||||
"close-active-tab": "关闭当前标签页",
|
||||
"reopen-last-tab": "重新打开最后关闭的标签页",
|
||||
"activate-next-tab": "切换下一个标签页",
|
||||
"activate-previous-tab": "切换上一个标签页",
|
||||
"open-new-window": "打开新窗口",
|
||||
"toggle-system-tray-icon": "显示/隐藏系统托盘图标",
|
||||
"toggle-zen-mode": "启用/禁用禅模式",
|
||||
"switch-to-first-tab": "切换到第一个标签页",
|
||||
"switch-to-second-tab": "切换到第二个标签页",
|
||||
"switch-to-third-tab": "切换到第三个标签页",
|
||||
"switch-to-fourth-tab": "切换到第四个标签页",
|
||||
"switch-to-fifth-tab": "切换到第五个标签页",
|
||||
"switch-to-sixth-tab": "切换到第六个标签页",
|
||||
"switch-to-seventh-tab": "切换到第七个标签页",
|
||||
"switch-to-eighth-tab": "切换到第八个标签页",
|
||||
"switch-to-ninth-tab": "切换到第九个标签页",
|
||||
"switch-to-last-tab": "切换到最后一个标签页",
|
||||
"show-note-source": "显示笔记源代码",
|
||||
"show-options": "显示选项",
|
||||
"show-revisions": "显示修订历史",
|
||||
"show-recent-changes": "显示最近更改",
|
||||
"show-sql-console": "显示SQL控制台",
|
||||
"show-backend-log": "显示后端日志",
|
||||
"show-help": "显示帮助",
|
||||
"show-cheatsheet": "显示快捷键指南",
|
||||
"add-link-to-text": "为文本添加链接",
|
||||
"follow-link-under-cursor": "访问光标下的链接",
|
||||
"insert-date-and-time-to-text": "在文本中插入日期和时间",
|
||||
"paste-markdown-into-text": "粘贴Markdown到文本",
|
||||
"cut-into-note": "剪切到笔记",
|
||||
"add-include-note-to-text": "在文本中添加包含笔记",
|
||||
"edit-read-only-note": "编辑只读笔记",
|
||||
"add-new-label": "添加新标签",
|
||||
"add-new-relation": "添加新关系",
|
||||
"toggle-ribbon-tab-classic-editor": "切换功能区标签:经典编辑器",
|
||||
"toggle-ribbon-tab-basic-properties": "切换功能区标签:基本属性",
|
||||
"toggle-ribbon-tab-book-properties": "切换功能区标签:书籍属性",
|
||||
"toggle-ribbon-tab-file-properties": "切换功能区标签:文件属性",
|
||||
"toggle-ribbon-tab-image-properties": "切换功能区标签:图片属性",
|
||||
"toggle-ribbon-tab-owned-attributes": "切换功能区标签:自有属性",
|
||||
"toggle-ribbon-tab-inherited-attributes": "切换功能区标签:继承属性",
|
||||
"toggle-ribbon-tab-promoted-attributes": "切换功能区标签:提升属性",
|
||||
"toggle-ribbon-tab-note-map": "切换功能区标签:笔记地图",
|
||||
"toggle-ribbon-tab-note-info": "切换功能区标签:笔记信息",
|
||||
"toggle-ribbon-tab-note-paths": "切换功能区标签:笔记路径",
|
||||
"toggle-ribbon-tab-similar-notes": "切换功能区标签:相似笔记",
|
||||
"toggle-right-pane": "切换右侧面板",
|
||||
"print-active-note": "打印当前笔记",
|
||||
"export-active-note-as-pdf": "导出当前笔记为 PDF",
|
||||
"open-note-externally": "在外部打开笔记",
|
||||
"render-active-note": "渲染当前笔记",
|
||||
"run-active-note": "运行当前笔记",
|
||||
"toggle-note-hoisting": "提升笔记",
|
||||
"unhoist-note": "取消提升笔记",
|
||||
"reload-frontend-app": "重新加载前端应用",
|
||||
"open-developer-tools": "打开开发者工具",
|
||||
"find-in-text": "在文本中查找",
|
||||
"toggle-left-pane": "切换左侧面板",
|
||||
"toggle-full-screen": "切换全屏模式"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "网站主题",
|
||||
"search_placeholder": "搜索...",
|
||||
"image_alt": "文章图片",
|
||||
"last-updated": "最后更新于 {{- date}}",
|
||||
"subpages": "子页面:",
|
||||
"on-this-page": "本页内容",
|
||||
"expand": "展开"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "文本片段",
|
||||
"description": "描述",
|
||||
"list-view": "列表视图",
|
||||
"grid-view": "网格视图",
|
||||
"calendar": "日历",
|
||||
"table": "表格",
|
||||
"geo-map": "地理地图",
|
||||
"start-date": "开始日期",
|
||||
"end-date": "结束日期",
|
||||
"start-time": "开始时间",
|
||||
"end-time": "结束时间",
|
||||
"geolocation": "地理位置",
|
||||
"built-in-templates": "内置模板",
|
||||
"board": "看板",
|
||||
"status": "状态",
|
||||
"board_note_first": "第一个笔记",
|
||||
"board_note_second": "第二个笔记",
|
||||
"board_note_third": "第三个笔记",
|
||||
"board_status_todo": "待办",
|
||||
"board_status_progress": "进行中",
|
||||
"board_status_done": "已完成",
|
||||
"presentation": "演示",
|
||||
"presentation_slide": "演示幻灯片",
|
||||
"presentation_slide_first": "第一张幻灯片",
|
||||
"presentation_slide_second": "第二张幻灯片",
|
||||
"background": "背景"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "数据库尚未初始化,请依照屏幕提示操作。",
|
||||
"db_not_initialized_server": "数据库尚未初始化,请访问设置页面 http://[your-server-host]:{{port}} 查看如何初始化 Trilium。"
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "已经有一个运行中的实例,正在将焦点切换到该实例。"
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "打开“跳转到笔记”对话框",
|
||||
"search-in-subtree": "在当前笔记的子树中搜索笔记",
|
||||
"expand-subtree": "展开当前笔记的子树",
|
||||
"collapse-tree": "折叠完整的笔记树",
|
||||
"collapse-subtree": "折叠当前笔记的子树",
|
||||
"sort-child-notes": "排序子笔记",
|
||||
"creating-and-moving-notes": "创建和移动笔记",
|
||||
"create-note-into-inbox": "在收件箱(若已定义)或日记中创建笔记",
|
||||
"delete-note": "删除笔记",
|
||||
"move-note-up": "向上移动笔记",
|
||||
"move-note-down": "向下移动笔记",
|
||||
"move-note-up-in-hierarchy": "在层级中向上移动笔记",
|
||||
"move-note-down-in-hierarchy": "在层级中向下移动笔记",
|
||||
"edit-note-title": "从树跳转到笔记详情并编辑标题",
|
||||
"edit-branch-prefix": "显示编辑分支前缀对话框",
|
||||
"note-clipboard": "笔记剪贴板",
|
||||
"copy-notes-to-clipboard": "复制选定的笔记到剪贴板",
|
||||
"paste-notes-from-clipboard": "从剪贴板粘贴笔记到当前笔记中",
|
||||
"cut-notes-to-clipboard": "剪切选定的笔记到剪贴板",
|
||||
"select-all-notes-in-parent": "选择当前笔记级别的所有笔记",
|
||||
"add-note-above-to-the-selection": "将上方笔记添加到选择中",
|
||||
"add-note-below-to-selection": "将下方笔记添加到选择中",
|
||||
"duplicate-subtree": "复制子树",
|
||||
"tabs-and-windows": "标签页和窗口",
|
||||
"open-new-tab": "打开新标签页",
|
||||
"close-active-tab": "关闭当前标签页",
|
||||
"reopen-last-tab": "重新打开最后关闭的标签页",
|
||||
"activate-next-tab": "切换下一个标签页",
|
||||
"activate-previous-tab": "切换上一个标签页",
|
||||
"open-new-window": "打开新窗口",
|
||||
"toggle-tray": "显示/隐藏系统托盘图标",
|
||||
"first-tab": "切换到第一个标签页",
|
||||
"second-tab": "切换到第二个标签页",
|
||||
"third-tab": "切换到第三个标签页",
|
||||
"fourth-tab": "切换到第四个标签页",
|
||||
"fifth-tab": "切换到第五个标签页",
|
||||
"sixth-tab": "切换到第六个标签页",
|
||||
"seventh-tab": "切换到第七个标签页",
|
||||
"eight-tab": "切换到第八个标签页",
|
||||
"ninth-tab": "切换到第九个标签页",
|
||||
"last-tab": "切换到最后一个标签页",
|
||||
"dialogs": "对话框",
|
||||
"show-note-source": "显示笔记源代码对话框",
|
||||
"show-options": "显示选项对话框",
|
||||
"show-revisions": "显示修订历史对话框",
|
||||
"show-recent-changes": "显示最近更改对话框",
|
||||
"show-sql-console": "显示SQL控制台对话框",
|
||||
"show-backend-log": "显示后端日志对话框",
|
||||
"text-note-operations": "文本笔记操作",
|
||||
"add-link-to-text": "打开对话框以添加链接到文本",
|
||||
"follow-link-under-cursor": "访问光标下的链接",
|
||||
"insert-date-and-time-to-text": "在文本中插入日期和时间",
|
||||
"paste-markdown-into-text": "从剪贴板粘贴 Markdown 到文本笔记",
|
||||
"cut-into-note": "剪切当前笔记的选区并创建包含选定文本的子笔记",
|
||||
"add-include-note-to-text": "打开对话框以添加一个包含笔记",
|
||||
"edit-readonly-note": "编辑只读笔记",
|
||||
"attributes-labels-and-relations": "属性(标签和关系)",
|
||||
"add-new-label": "创建新标签",
|
||||
"create-new-relation": "创建新关系",
|
||||
"ribbon-tabs": "功能区标签页",
|
||||
"toggle-basic-properties": "切换基本属性",
|
||||
"toggle-file-properties": "切换文件属性",
|
||||
"toggle-image-properties": "切换图像属性",
|
||||
"toggle-owned-attributes": "切换拥有的属性",
|
||||
"toggle-inherited-attributes": "切换继承的属性",
|
||||
"toggle-promoted-attributes": "切换提升的属性",
|
||||
"toggle-link-map": "切换链接地图",
|
||||
"toggle-note-info": "切换笔记信息",
|
||||
"toggle-note-paths": "切换笔记路径",
|
||||
"toggle-similar-notes": "切换相似笔记",
|
||||
"other": "其他",
|
||||
"toggle-right-pane": "切换右侧面板的显示,包括目录和高亮",
|
||||
"print-active-note": "打印当前笔记",
|
||||
"open-note-externally": "以默认应用打开笔记文件",
|
||||
"render-active-note": "渲染(重新渲染)当前笔记",
|
||||
"run-active-note": "运行当前 JavaScript(前/后端)代码笔记",
|
||||
"toggle-note-hoisting": "提升笔记",
|
||||
"unhoist": "取消提升笔记",
|
||||
"reload-frontend-app": "重新加载前端应用",
|
||||
"open-dev-tools": "打开开发者工具",
|
||||
"toggle-left-note-tree-panel": "切换左侧(笔记树)面板",
|
||||
"toggle-full-screen": "切换全屏模式",
|
||||
"zoom-out": "缩小",
|
||||
"zoom-in": "放大",
|
||||
"note-navigation": "笔记导航",
|
||||
"reset-zoom-level": "重置缩放级别",
|
||||
"copy-without-formatting": "无格式复制选定文本",
|
||||
"force-save-revision": "强制创建/保存当前笔记的新修订版本",
|
||||
"show-help": "显示帮助",
|
||||
"toggle-book-properties": "切换书籍属性",
|
||||
"toggle-classic-editor-toolbar": "为编辑器切换格式标签页的固定工具栏",
|
||||
"export-as-pdf": "导出当前笔记为 PDF",
|
||||
"show-cheatsheet": "显示快捷键指南",
|
||||
"toggle-zen-mode": "启用/禁用禅模式(为专注编辑而精简界面)",
|
||||
"open-command-palette": "打开命令面板",
|
||||
"quick-search": "激活快速搜索栏",
|
||||
"create-note-after": "在当前笔记后面创建笔记",
|
||||
"create-note-into": "创建笔记作为当前笔记的子笔记",
|
||||
"clone-notes-to": "克隆选中的笔记到",
|
||||
"move-notes-to": "移动选中的笔记到",
|
||||
"find-in-text": "在文本中查找",
|
||||
"back-in-note-history": "导航到历史记录中的上一个笔记",
|
||||
"forward-in-note-history": "导航到历史记录的下一个笔记",
|
||||
"scroll-to-active-note": "滚动笔记树到当前笔记"
|
||||
},
|
||||
"login": {
|
||||
"title": "登录",
|
||||
"heading": "Trilium 登录",
|
||||
"incorrect-totp": "TOTP 不正确,请重试。",
|
||||
"incorrect-password": "密码不正确,请重试。",
|
||||
"password": "密码",
|
||||
"remember-me": "记住我",
|
||||
"button": "登录",
|
||||
"sign_in_with_sso": "使用 {{ ssoIssuerName }} 登录"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "设置密码",
|
||||
"heading": "设置密码",
|
||||
"description": "在您能够从Web开始使用Trilium之前,您需要先设置一个密码。您之后将使用此密码登录。",
|
||||
"password": "密码",
|
||||
"password-confirmation": "密码确认",
|
||||
"button": "设置密码"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "TriliumNext笔记设置",
|
||||
"new-document": "我是新用户,我想为我的笔记创建一个新的Trilium文档",
|
||||
"sync-from-desktop": "我已经有一个桌面实例,我想设置与它的同步",
|
||||
"sync-from-server": "我已经有一个服务器实例,我想设置与它的同步",
|
||||
"next": "下一步",
|
||||
"init-in-progress": "文档初始化进行中",
|
||||
"redirecting": "您将很快被重定向到应用程序。",
|
||||
"title": "设置"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "从桌面同步",
|
||||
"description": "此设置需要从桌面实例开始:",
|
||||
"step1": "打开您的TriliumNext笔记桌面实例。",
|
||||
"step2": "从Trilium菜单中,点击“选项”。",
|
||||
"step3": "点击“同步”类别。",
|
||||
"step4": "将服务器实例地址更改为:{{- host}} 并点击保存。",
|
||||
"step5": "点击“测试同步”按钮以验证连接是否成功。",
|
||||
"step6": "完成这些步骤后,点击{{- link}}。",
|
||||
"step6-here": "这里"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "从服务器同步",
|
||||
"instructions": "请在下面输入Trilium服务器地址和凭据。这将从服务器下载整个Trilium文档并设置与它的同步。根据文档大小和您的连接的速度,这可能需要一段时间。",
|
||||
"server-host": "Trilium服务器地址",
|
||||
"server-host-placeholder": "https://<主机名称>:<端口>",
|
||||
"proxy-server": "代理服务器(可选)",
|
||||
"proxy-server-placeholder": "https://<主机名称>:<端口>",
|
||||
"note": "注意:",
|
||||
"proxy-instruction": "如果您将代理设置留空,将使用系统代理(仅适用于桌面应用)",
|
||||
"password": "密码",
|
||||
"password-placeholder": "密码",
|
||||
"back": "返回",
|
||||
"finish-setup": "完成设置"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "同步中",
|
||||
"successful": "同步已被正确设置。初始同步完成可能需要一些时间。完成后,您将被重定向到登录页面。",
|
||||
"outstanding-items": "未完成的同步项目:",
|
||||
"outstanding-items-default": "无"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "未找到",
|
||||
"heading": "未找到"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "父级:",
|
||||
"clipped-from": "此笔记最初剪切自 {{- url}}",
|
||||
"child-notes": "子笔记:",
|
||||
"no-content": "此笔记没有内容。"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "周一",
|
||||
"tuesday": "周二",
|
||||
"wednesday": "周三",
|
||||
"thursday": "周四",
|
||||
"friday": "周五",
|
||||
"saturday": "周六",
|
||||
"sunday": "周日"
|
||||
},
|
||||
"weekdayNumber": "第 {weekNumber} 周",
|
||||
"months": {
|
||||
"january": "一月",
|
||||
"february": "二月",
|
||||
"march": "三月",
|
||||
"april": "四月",
|
||||
"may": "五月",
|
||||
"june": "六月",
|
||||
"july": "七月",
|
||||
"august": "八月",
|
||||
"september": "九月",
|
||||
"october": "十月",
|
||||
"november": "十一月",
|
||||
"december": "十二月"
|
||||
},
|
||||
"quarterNumber": "第 {quarterNumber} 季度",
|
||||
"special_notes": {
|
||||
"search_prefix": "搜索:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "同步服务器主机未配置。请先配置同步。",
|
||||
"successful": "同步服务器握手成功,同步已开始。"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "隐藏的笔记",
|
||||
"search-history-title": "搜索历史",
|
||||
"note-map-title": "笔记地图",
|
||||
"sql-console-history-title": "SQL 控制台历史",
|
||||
"shared-notes-title": "共享笔记",
|
||||
"bulk-action-title": "批量操作",
|
||||
"backend-log-title": "后端日志",
|
||||
"user-hidden-title": "隐藏的用户",
|
||||
"launch-bar-templates-title": "启动栏模板",
|
||||
"base-abstract-launcher-title": "基础摘要启动器",
|
||||
"command-launcher-title": "命令启动器",
|
||||
"note-launcher-title": "笔记启动器",
|
||||
"script-launcher-title": "脚本启动器",
|
||||
"built-in-widget-title": "内置小组件",
|
||||
"spacer-title": "空白占位",
|
||||
"custom-widget-title": "自定义小组件",
|
||||
"launch-bar-title": "启动栏",
|
||||
"available-launchers-title": "可用启动器",
|
||||
"go-to-previous-note-title": "跳转到上一条笔记",
|
||||
"go-to-next-note-title": "跳转到下一条笔记",
|
||||
"new-note-title": "新建笔记",
|
||||
"search-notes-title": "搜索笔记",
|
||||
"calendar-title": "日历",
|
||||
"recent-changes-title": "最近更改",
|
||||
"bookmarks-title": "书签",
|
||||
"open-today-journal-note-title": "打开今天的日记笔记",
|
||||
"quick-search-title": "快速搜索",
|
||||
"protected-session-title": "受保护的会话",
|
||||
"sync-status-title": "同步状态",
|
||||
"settings-title": "设置",
|
||||
"options-title": "选项",
|
||||
"appearance-title": "外观",
|
||||
"shortcuts-title": "快捷键",
|
||||
"text-notes": "文本笔记",
|
||||
"code-notes-title": "代码笔记",
|
||||
"images-title": "图片",
|
||||
"spellcheck-title": "拼写检查",
|
||||
"password-title": "密码",
|
||||
"multi-factor-authentication-title": "多因素认证",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "备份",
|
||||
"sync-title": "同步",
|
||||
"other": "其他",
|
||||
"advanced-title": "高级",
|
||||
"visible-launchers-title": "可见启动器",
|
||||
"user-guide": "用户指南",
|
||||
"localization": "语言和区域",
|
||||
"jump-to-note-title": "跳转至...",
|
||||
"inbox-title": "收件箱",
|
||||
"command-palette": "打开命令面板",
|
||||
"zen-mode": "禅模式",
|
||||
"tab-switcher-title": "标签切换器"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "新建笔记",
|
||||
"duplicate-note-suffix": "(重复)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "后端日志文件 '{{ fileName }}' 暂不存在。",
|
||||
"reading-log-failed": "读取后端日志文件 '{{ fileName }}' 失败。"
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "此笔记类型无法显示。"
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF 文档 (*.pdf)",
|
||||
"unable-to-export-message": "当前笔记无法被导出为 PDF。",
|
||||
"unable-to-export-title": "无法导出为 PDF",
|
||||
"unable-to-save-message": "所选文件不能被写入。重试或选择另一个目的地。",
|
||||
"unable-to-print": "无法打印笔记"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "TriliumNext 笔记",
|
||||
"close": "退出 Trilium",
|
||||
"recents": "最近笔记",
|
||||
"bookmarks": "书签",
|
||||
"today": "打开今天的日记笔记",
|
||||
"new-note": "新建笔记",
|
||||
"show-windows": "显示窗口",
|
||||
"open_new_window": "打开新窗口"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "由您当前版本的直接迁移不被支持。请先升级到最新的 v0.60.4 然后再到这个版本。",
|
||||
"error_message": "迁移到版本 {{version}} 时发生错误: {{stack}}",
|
||||
"wrong_db_version": "数据库的版本({{version}})新于应用期望的版本({{targetVersion}}),这意味着它由一个更加新的且不兼容的 Trilium 所创建。升级到最新版的 Trilium 以解决此问题。"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "错误"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "返回笔记历史",
|
||||
"forward-in-note-history": "前进笔记历史",
|
||||
"jump-to-note": "跳转到...",
|
||||
"command-palette": "命令面板",
|
||||
"scroll-to-active-note": "滚动到当前笔记",
|
||||
"quick-search": "快速搜索",
|
||||
"search-in-subtree": "在子树中搜索",
|
||||
"expand-subtree": "展开子树",
|
||||
"collapse-tree": "折叠整个树",
|
||||
"collapse-subtree": "折叠子树",
|
||||
"sort-child-notes": "排序子笔记",
|
||||
"create-note-after": "在后面创建笔记",
|
||||
"create-note-into": "创建笔记到",
|
||||
"create-note-into-inbox": "创建笔记到收件箱",
|
||||
"delete-notes": "删除笔记",
|
||||
"move-note-up": "上移笔记",
|
||||
"move-note-down": "下移笔记",
|
||||
"move-note-up-in-hierarchy": "在层级中上移笔记",
|
||||
"move-note-down-in-hierarchy": "在层级中下移笔记",
|
||||
"edit-note-title": "编辑笔记标题",
|
||||
"edit-branch-prefix": "编辑分支前缀",
|
||||
"clone-notes-to": "克隆笔记到",
|
||||
"move-notes-to": "移动笔记到",
|
||||
"copy-notes-to-clipboard": "复制笔记到剪贴板",
|
||||
"paste-notes-from-clipboard": "从剪贴板粘贴笔记",
|
||||
"cut-notes-to-clipboard": "剪切笔记到剪贴板",
|
||||
"select-all-notes-in-parent": "选择父节点中所有笔记",
|
||||
"zoom-in": "放大",
|
||||
"zoom-out": "缩小",
|
||||
"reset-zoom-level": "重置缩放级别",
|
||||
"copy-without-formatting": "无格式复制",
|
||||
"force-save-revision": "强制保存修订版本",
|
||||
"add-note-above-to-selection": "将上方笔记添加到选择",
|
||||
"add-note-below-to-selection": "将下方笔记添加到选择",
|
||||
"duplicate-subtree": "复制子树",
|
||||
"open-new-tab": "打开新标签页",
|
||||
"close-active-tab": "关闭当前标签页",
|
||||
"reopen-last-tab": "重新打开最后关闭的标签页",
|
||||
"activate-next-tab": "切换下一个标签页",
|
||||
"activate-previous-tab": "切换上一个标签页",
|
||||
"open-new-window": "打开新窗口",
|
||||
"toggle-system-tray-icon": "显示/隐藏系统托盘图标",
|
||||
"toggle-zen-mode": "启用/禁用禅模式",
|
||||
"switch-to-first-tab": "切换到第一个标签页",
|
||||
"switch-to-second-tab": "切换到第二个标签页",
|
||||
"switch-to-third-tab": "切换到第三个标签页",
|
||||
"switch-to-fourth-tab": "切换到第四个标签页",
|
||||
"switch-to-fifth-tab": "切换到第五个标签页",
|
||||
"switch-to-sixth-tab": "切换到第六个标签页",
|
||||
"switch-to-seventh-tab": "切换到第七个标签页",
|
||||
"switch-to-eighth-tab": "切换到第八个标签页",
|
||||
"switch-to-ninth-tab": "切换到第九个标签页",
|
||||
"switch-to-last-tab": "切换到最后一个标签页",
|
||||
"show-note-source": "显示笔记源代码",
|
||||
"show-options": "显示选项",
|
||||
"show-revisions": "显示修订历史",
|
||||
"show-recent-changes": "显示最近更改",
|
||||
"show-sql-console": "显示SQL控制台",
|
||||
"show-backend-log": "显示后端日志",
|
||||
"show-help": "显示帮助",
|
||||
"show-cheatsheet": "显示快捷键指南",
|
||||
"add-link-to-text": "为文本添加链接",
|
||||
"follow-link-under-cursor": "访问光标下的链接",
|
||||
"insert-date-and-time-to-text": "在文本中插入日期和时间",
|
||||
"paste-markdown-into-text": "粘贴Markdown到文本",
|
||||
"cut-into-note": "剪切到笔记",
|
||||
"add-include-note-to-text": "在文本中添加包含笔记",
|
||||
"edit-read-only-note": "编辑只读笔记",
|
||||
"add-new-label": "添加新标签",
|
||||
"add-new-relation": "添加新关系",
|
||||
"toggle-ribbon-tab-classic-editor": "切换功能区标签:经典编辑器",
|
||||
"toggle-ribbon-tab-basic-properties": "切换功能区标签:基本属性",
|
||||
"toggle-ribbon-tab-book-properties": "切换功能区标签:书籍属性",
|
||||
"toggle-ribbon-tab-file-properties": "切换功能区标签:文件属性",
|
||||
"toggle-ribbon-tab-image-properties": "切换功能区标签:图片属性",
|
||||
"toggle-ribbon-tab-owned-attributes": "切换功能区标签:自有属性",
|
||||
"toggle-ribbon-tab-inherited-attributes": "切换功能区标签:继承属性",
|
||||
"toggle-ribbon-tab-promoted-attributes": "切换功能区标签:提升属性",
|
||||
"toggle-ribbon-tab-note-map": "切换功能区标签:笔记地图",
|
||||
"toggle-ribbon-tab-note-info": "切换功能区标签:笔记信息",
|
||||
"toggle-ribbon-tab-note-paths": "切换功能区标签:笔记路径",
|
||||
"toggle-ribbon-tab-similar-notes": "切换功能区标签:相似笔记",
|
||||
"toggle-right-pane": "切换右侧面板",
|
||||
"print-active-note": "打印当前笔记",
|
||||
"export-active-note-as-pdf": "导出当前笔记为 PDF",
|
||||
"open-note-externally": "在外部打开笔记",
|
||||
"render-active-note": "渲染当前笔记",
|
||||
"run-active-note": "运行当前笔记",
|
||||
"toggle-note-hoisting": "提升笔记",
|
||||
"unhoist-note": "取消提升笔记",
|
||||
"reload-frontend-app": "重新加载前端应用",
|
||||
"open-developer-tools": "打开开发者工具",
|
||||
"find-in-text": "在文本中查找",
|
||||
"toggle-left-pane": "切换左侧面板",
|
||||
"toggle-full-screen": "切换全屏模式"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "网站主题",
|
||||
"search_placeholder": "搜索...",
|
||||
"image_alt": "文章图片",
|
||||
"last-updated": "最后更新于 {{- date}}",
|
||||
"subpages": "子页面:",
|
||||
"on-this-page": "本页内容",
|
||||
"expand": "展开"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "文本片段",
|
||||
"description": "描述",
|
||||
"list-view": "列表视图",
|
||||
"grid-view": "网格视图",
|
||||
"calendar": "日历",
|
||||
"table": "表格",
|
||||
"geo-map": "地理地图",
|
||||
"start-date": "开始日期",
|
||||
"end-date": "结束日期",
|
||||
"start-time": "开始时间",
|
||||
"end-time": "结束时间",
|
||||
"geolocation": "地理位置",
|
||||
"built-in-templates": "内置模板",
|
||||
"board": "看板",
|
||||
"status": "状态",
|
||||
"board_note_first": "第一个笔记",
|
||||
"board_note_second": "第二个笔记",
|
||||
"board_note_third": "第三个笔记",
|
||||
"board_status_todo": "待办",
|
||||
"board_status_progress": "进行中",
|
||||
"board_status_done": "已完成",
|
||||
"presentation": "演示",
|
||||
"presentation_slide": "演示幻灯片",
|
||||
"presentation_slide_first": "第一张幻灯片",
|
||||
"presentation_slide_second": "第二张幻灯片",
|
||||
"background": "背景"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "数据库尚未初始化,请依照屏幕提示操作。",
|
||||
"db_not_initialized_server": "数据库尚未初始化,请访问设置页面 http://[your-server-host]:{{port}} 查看如何初始化 Trilium。"
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "已经有一个运行中的实例,正在将焦点切换到该实例。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,441 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "Öffne das Dialogfeld \"Zu Notiz springen\"",
|
||||
"search-in-subtree": "Nach Notizen im Unterbaum der aktuellen Notiz suchen",
|
||||
"expand-subtree": "Unterbaum der aktuellen Notiz ausklappen",
|
||||
"collapse-tree": "Gesamten Notizbaum einklappen",
|
||||
"collapse-subtree": "Unterbaum der aktuellen Notiz einklappen",
|
||||
"sort-child-notes": "Untergeordnete Notizen sortieren",
|
||||
"creating-and-moving-notes": "Notizen erstellen und verschieben",
|
||||
"create-note-into-inbox": "Erstelle eine Notiz im Posteingang (falls definiert) oder in der Tagesnotiz",
|
||||
"delete-note": "Notiz löschen",
|
||||
"move-note-up": "Notiz nach oben verschieben",
|
||||
"move-note-down": "Notiz nach unten verschieben",
|
||||
"move-note-up-in-hierarchy": "Notiz in der Hierarchie nach oben verschieben",
|
||||
"move-note-down-in-hierarchy": "Notiz in der Hierarchie nach unten verschieben",
|
||||
"edit-note-title": "Vom Notiz-Baum zur Notiz-Detailansicht springen und den Titel bearbeiten",
|
||||
"edit-branch-prefix": "Dialog zum Bearbeiten des Zweigpräfixes anzeigen",
|
||||
"note-clipboard": "Notiz-Zwischenablage",
|
||||
"copy-notes-to-clipboard": "Ausgewählte Notizen in die Zwischenablage kopieren",
|
||||
"paste-notes-from-clipboard": "Notizen aus der Zwischenablage in die aktive Notiz einfügen",
|
||||
"cut-notes-to-clipboard": "Ausgewählte Notizen in die Zwischenablage ausschneiden",
|
||||
"select-all-notes-in-parent": "Alle Notizen der aktuellen Notizenebene auswählen",
|
||||
"add-note-above-to-the-selection": "Notiz oberhalb der Auswahl hinzufügen",
|
||||
"add-note-below-to-selection": "Notiz unterhalb der Auswahl hinzufügen",
|
||||
"duplicate-subtree": "Unterbaum duplizieren",
|
||||
"tabs-and-windows": "Tabs & Fenster",
|
||||
"open-new-tab": "Neuen Tab öffnen",
|
||||
"close-active-tab": "Aktiven Tab schließen",
|
||||
"reopen-last-tab": "Zuletzt geschlossenen Tab wieder öffnen",
|
||||
"activate-next-tab": "Rechten Tab aktivieren",
|
||||
"activate-previous-tab": "Linken Tab aktivieren",
|
||||
"open-new-window": "Neues leeres Fenster öffnen",
|
||||
"toggle-tray": "Anwendung im Systemtray anzeigen/verstecken",
|
||||
"first-tab": "Ersten Tab in der Liste aktivieren",
|
||||
"second-tab": "Zweiten Tab in der Liste aktivieren",
|
||||
"third-tab": "Dritten Tab in der Liste aktivieren",
|
||||
"fourth-tab": "Vierten Tab in der Liste aktivieren",
|
||||
"fifth-tab": "Fünften Tab in der Liste aktivieren",
|
||||
"sixth-tab": "Sechsten Tab in der Liste aktivieren",
|
||||
"seventh-tab": "Siebten Tab in der Liste aktivieren",
|
||||
"eight-tab": "Achten Tab in der Liste aktivieren",
|
||||
"ninth-tab": "Neunten Tab in der Liste aktivieren",
|
||||
"last-tab": "Letzten Tab in der Liste aktivieren",
|
||||
"dialogs": "Dialoge",
|
||||
"show-note-source": "Notizquellen-Dialog anzeigen",
|
||||
"show-options": "Optionen-Dialog anzeigen",
|
||||
"show-revisions": "Notizrevisionen-Dialog anzeigen",
|
||||
"show-recent-changes": "Letzte Änderungen-Dialog anzeigen",
|
||||
"show-sql-console": "SQL-Konsole-Dialog anzeigen",
|
||||
"show-backend-log": "Backend-Logs-Dialog anzeigen",
|
||||
"text-note-operations": "Textnotiz-Operationen",
|
||||
"add-link-to-text": "Dialogfeld zum Hinzufügen eines Links zum Text öffnen",
|
||||
"follow-link-under-cursor": "Folge dem Link, unter dem Mauszeiger",
|
||||
"insert-date-and-time-to-text": "Aktuelles Datum & Uhrzeit in den Text einfügen",
|
||||
"paste-markdown-into-text": "Markdown aus der Zwischenablage in die Textnotiz einfügen",
|
||||
"cut-into-note": "Auswahl aus der aktuellen Notiz ausschneiden und eine Unternotiz mit dem ausgewählten Text erstellen",
|
||||
"add-include-note-to-text": "Notiz-Einfügen-Dialog öffnen",
|
||||
"edit-readonly-note": "Schreibgeschützte Notiz bearbeiten",
|
||||
"attributes-labels-and-relations": "Attribute (Labels & Verknüpfungen)",
|
||||
"add-new-label": "Neues Label erstellen",
|
||||
"create-new-relation": "Neue Verknüpfungen",
|
||||
"ribbon-tabs": "Ribbon-Tabs",
|
||||
"toggle-basic-properties": "Grundattribute umschalten",
|
||||
"toggle-file-properties": "Dateiattribute umschalten",
|
||||
"toggle-image-properties": "Bildattribute umschalten",
|
||||
"toggle-owned-attributes": "Eigene Attribute umschalten",
|
||||
"toggle-inherited-attributes": "Vererbte Attribute umschalten",
|
||||
"toggle-promoted-attributes": "Hervorgehobene Attribute umschalten",
|
||||
"toggle-link-map": "Link-Karte umschalten",
|
||||
"toggle-note-info": "Notizinformationen umschalten",
|
||||
"toggle-note-paths": "Notizpfade umschalten",
|
||||
"toggle-similar-notes": "Ähnliche Notizen umschalten",
|
||||
"other": "Sonstige",
|
||||
"toggle-right-pane": "Anzeige der rechten Leiste umschalten, das Inhaltsverzeichnis und Markierungen enthält",
|
||||
"print-active-note": "Aktive Notiz drucken",
|
||||
"open-note-externally": "Notiz als Datei mit Standardanwendung öffnen",
|
||||
"render-active-note": "Aktive Notiz rendern (erneut rendern)",
|
||||
"run-active-note": "Aktive JavaScript(Frontend/Backend)-Codenotiz ausführen",
|
||||
"toggle-note-hoisting": "Notiz-Fokus der aktiven Notiz umschalten",
|
||||
"unhoist": "Notiz-Fokus aufheben",
|
||||
"reload-frontend-app": "Frontend-App neuladen",
|
||||
"open-dev-tools": "Entwicklertools öffnen",
|
||||
"toggle-left-note-tree-panel": "Linke Notizbaum-Leiste umschalten",
|
||||
"toggle-full-screen": "Vollbildmodus umschalten",
|
||||
"zoom-out": "Herauszoomen",
|
||||
"zoom-in": "Hineinzoomen",
|
||||
"note-navigation": "Notiznavigation",
|
||||
"reset-zoom-level": "Zoomlevel zurücksetzen",
|
||||
"copy-without-formatting": "Ausgewählten Text ohne Formatierung kopieren",
|
||||
"force-save-revision": "Erstellen / Speichern einer neuen Notizrevision der aktiven Notiz erzwingen",
|
||||
"show-help": "Eingebaute Hilfe / Cheat-Sheet anzeigen",
|
||||
"toggle-book-properties": "Buch-Eigenschaften umschalten",
|
||||
"clone-notes-to": "Ausgewählte Notizen duplizieren",
|
||||
"open-command-palette": "Kommandopalette öffnen",
|
||||
"export-as-pdf": "Aktuelle Notiz als PDF exportieren",
|
||||
"back-in-note-history": "Navigiere zur vorherigen Notiz im Verlauf",
|
||||
"forward-in-note-history": "Navigiere zur nächsten Notiz im Verlauf",
|
||||
"scroll-to-active-note": "Zum aktiven Notizbaumeintrag springen",
|
||||
"quick-search": "Schnellsuche öffnen",
|
||||
"create-note-after": "Erstelle eine neue Notiz nach der aktuellen Notiz",
|
||||
"create-note-into": "Unternotiz zur aktiven Notiz anlegen",
|
||||
"move-notes-to": "Ausgewählte Notizen verschieben",
|
||||
"show-cheatsheet": "Übersicht der Tastenkombinationen anzeigen",
|
||||
"find-in-text": "Suchleiste umschalten",
|
||||
"toggle-classic-editor-toolbar": "Schalte um zum Formatierungs-Tab für den Editor mit fester Werkzeugleiste",
|
||||
"toggle-zen-mode": "Zen-Modus ein-/ausschalten (reduzierte Benutzeroberfläche für ablenkungsfreies Arbeiten)"
|
||||
},
|
||||
"login": {
|
||||
"title": "Anmeldung",
|
||||
"heading": "Trilium Anmeldung",
|
||||
"incorrect-password": "Das Passwort ist falsch. Bitte versuche es erneut.",
|
||||
"password": "Passwort",
|
||||
"remember-me": "Angemeldet bleiben",
|
||||
"button": "Anmelden",
|
||||
"incorrect-totp": "Einmaltoken ist falsch. Bitte erneut versuchen.",
|
||||
"sign_in_with_sso": "Mit {{ ssoIssuerName }} anmelden"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Passwort festlegen",
|
||||
"heading": "Passwort festlegen",
|
||||
"description": "Bevor du Trilium im Web verwenden kannst, musst du zuerst ein Passwort festlegen. Du wirst dieses Passwort dann zur Anmeldung verwenden.",
|
||||
"password": "Passwort",
|
||||
"password-confirmation": "Passwortbestätigung",
|
||||
"button": "Passwort festlegen"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes Setup",
|
||||
"new-document": "Ich bin ein neuer Benutzer und möchte ein neues Trilium-Dokument für meine Notizen erstellen",
|
||||
"sync-from-desktop": "Ich habe bereits eine Desktop-Instanz und möchte die Synchronisierung damit einrichten",
|
||||
"sync-from-server": "Ich habe bereits eine Server-Instanz und möchte die Synchronisierung damit einrichten",
|
||||
"next": "Weiter",
|
||||
"init-in-progress": "Dokumenteninitialisierung läuft",
|
||||
"redirecting": "Du wirst in Kürze zur Anwendung weitergeleitet.",
|
||||
"title": "Setup"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Synchronisation vom Desktop",
|
||||
"description": "Dieses Setup muss von der Desktop-Instanz aus initiiert werden:",
|
||||
"step1": "Öffne deine Trilium Notes Desktop-Instanz.",
|
||||
"step2": "Klicke im Trilium-Menü auf Optionen.",
|
||||
"step3": "Klicke auf die Kategorie Synchronisation.",
|
||||
"step4": "Ändere die Server-Instanzadresse auf: {{- host}} und klicke auf Speichern.",
|
||||
"step5": "Klicke auf den Button \"Test-Synchronisation\", um zu überprüfen, ob die Verbindung erfolgreich ist.",
|
||||
"step6": "Sobald du diese Schritte abgeschlossen hast, klicke auf {{- link}}.",
|
||||
"step6-here": "hier"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Synchronisation vom Server",
|
||||
"instructions": "Bitte gib unten die Trilium-Server-Adresse und die Zugangsdaten ein. Dies wird das gesamte Trilium-Dokument vom Server herunterladen und die Synchronisation einrichten. Je nach Dokumentgröße und Verbindungsgeschwindigkeit kann dies eine Weile dauern.",
|
||||
"server-host": "Trilium Server-Adresse",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Proxy-Server (optional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Hinweis:",
|
||||
"proxy-instruction": "Wenn du die Proxy-Einstellung leer lässt, wird der System-Proxy verwendet (gilt nur für die Desktop-Anwendung)",
|
||||
"password": "Passwort",
|
||||
"password-placeholder": "Passwort",
|
||||
"back": "Zurück",
|
||||
"finish-setup": "Setup abschließen"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Synchronisation läuft",
|
||||
"successful": "Die Synchronisation wurde erfolgreich eingerichtet. Es wird eine Weile dauern, bis die erste Synchronisation abgeschlossen ist. Sobald dies erledigt ist, wirst du zur Anmeldeseite weitergeleitet.",
|
||||
"outstanding-items": "Ausstehende Synchronisationselemente:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Nicht gefunden",
|
||||
"heading": "Nicht gefunden"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "Übergeordnete Notiz:",
|
||||
"clipped-from": "Diese Notiz wurde ursprünglich von {{- url}} ausgeschnitten",
|
||||
"child-notes": "Untergeordnete Notizen:",
|
||||
"no-content": "Diese Notiz hat keinen Inhalt."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Montag",
|
||||
"tuesday": "Dienstag",
|
||||
"wednesday": "Mittwoch",
|
||||
"thursday": "Donnerstag",
|
||||
"friday": "Freitag",
|
||||
"saturday": "Samstag",
|
||||
"sunday": "Sonntag"
|
||||
},
|
||||
"months": {
|
||||
"january": "Januar",
|
||||
"february": "Februar",
|
||||
"march": "März",
|
||||
"april": "April",
|
||||
"may": "Mai",
|
||||
"june": "Juni",
|
||||
"july": "Juli",
|
||||
"august": "August",
|
||||
"september": "September",
|
||||
"october": "Oktober",
|
||||
"november": "November",
|
||||
"december": "Dezember"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Suche:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Der Synchronisations-Server-Host ist nicht konfiguriert. Bitte konfiguriere zuerst die Synchronisation.",
|
||||
"successful": "Die Server-Verbindung wurde erfolgreich hergestellt, die Synchronisation wurde gestartet."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Versteckte Notizen",
|
||||
"search-history-title": "Suchverlauf",
|
||||
"note-map-title": "Notiz Karte",
|
||||
"sql-console-history-title": "SQL Konsolen Verlauf",
|
||||
"shared-notes-title": "Geteilte Notizen",
|
||||
"bulk-action-title": "Massenverarbeitung",
|
||||
"backend-log-title": "Backend Log",
|
||||
"user-hidden-title": "Versteckt vom Nutzer",
|
||||
"launch-bar-templates-title": "Startleiste Vorlagen",
|
||||
"base-abstract-launcher-title": "Basis Abstrakte Startleiste",
|
||||
"command-launcher-title": "Befehlslauncher",
|
||||
"note-launcher-title": "Notiz-Starter",
|
||||
"script-launcher-title": "Skript-Starter",
|
||||
"built-in-widget-title": "Eingebautes Widget",
|
||||
"spacer-title": "Freifeld",
|
||||
"custom-widget-title": "Benutzerdefiniertes Widget",
|
||||
"launch-bar-title": "Starterleiste",
|
||||
"available-launchers-title": "Verfügbare Starter",
|
||||
"go-to-previous-note-title": "Zur vorherigen Notiz gehen",
|
||||
"go-to-next-note-title": "Zur nächsten Notiz gehen",
|
||||
"new-note-title": "Neue Notiz",
|
||||
"search-notes-title": "Notizen durchsuchen",
|
||||
"calendar-title": "Kalender",
|
||||
"recent-changes-title": "neue Änderungen",
|
||||
"bookmarks-title": "Lesezeichen",
|
||||
"open-today-journal-note-title": "Heutigen Journaleintrag öffnen",
|
||||
"quick-search-title": "Schnellsuche",
|
||||
"protected-session-title": "Geschützte Sitzung",
|
||||
"sync-status-title": "Status Synchronisation",
|
||||
"settings-title": "Einstellungen",
|
||||
"options-title": "Optionen",
|
||||
"appearance-title": "Erscheinungsbild",
|
||||
"shortcuts-title": "Tastenkürzel",
|
||||
"text-notes": "Text Notizen",
|
||||
"code-notes-title": "Code Notizen",
|
||||
"images-title": "Bilder",
|
||||
"spellcheck-title": "Rechtschreibprüfung",
|
||||
"password-title": "Passwort",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Sicherung",
|
||||
"sync-title": "Synchronisation",
|
||||
"other": "Weitere",
|
||||
"advanced-title": "Erweitert",
|
||||
"visible-launchers-title": "Sichtbare Starter",
|
||||
"user-guide": "Nutzerhandbuch",
|
||||
"jump-to-note-title": "Springe zu...",
|
||||
"llm-chat-title": "Chat mit Notizen",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"localization": "Sprache & Region",
|
||||
"inbox-title": "Posteingang",
|
||||
"zen-mode": "Zen-Modus",
|
||||
"command-palette": "Befehlspalette öffnen",
|
||||
"tab-switcher-title": "Tabauswahl"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Neue Notiz",
|
||||
"duplicate-note-suffix": "(dopp)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Die Backend-Log-Datei '{{ fileName }}' existiert (noch) nicht.",
|
||||
"reading-log-failed": "Das Lesen der Backend-Log-Datei '{{ fileName }}' ist fehlgeschlagen."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Dieser Notiztyp kann nicht angezeigt werden."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF Dokument (*.pdf)",
|
||||
"unable-to-export-message": "Die aktuelle Notiz konnte nicht als PDF exportiert werden.",
|
||||
"unable-to-export-title": "Export als PDF fehlgeschlagen",
|
||||
"unable-to-save-message": "Die ausgewählte Datei konnte nicht beschrieben werden. Erneut versuchen oder ein anderes Ziel auswählen.",
|
||||
"unable-to-print": "Notiz kann nicht gedruckt werden"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Trilium schließen",
|
||||
"recents": "Kürzliche Notizen",
|
||||
"bookmarks": "Lesezeichen",
|
||||
"today": "Heutigen Journal Eintrag öffnen",
|
||||
"new-note": "Neue Notiz",
|
||||
"show-windows": "Fenster anzeigen",
|
||||
"open_new_window": "Öffne neues Fenster"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"table": "Tabelle",
|
||||
"board_status_done": "Erledigt",
|
||||
"text-snippet": "Text Ausschnitt",
|
||||
"description": "Beschreibung",
|
||||
"list-view": "Listenansicht",
|
||||
"grid-view": "Gitteransicht",
|
||||
"calendar": "Kalender",
|
||||
"geo-map": "Geokarte",
|
||||
"start-date": "Startdatum",
|
||||
"end-date": "Enddatum",
|
||||
"start-time": "Startzeit",
|
||||
"end-time": "Endzeit",
|
||||
"geolocation": "Geolokation",
|
||||
"built-in-templates": "Integrierte Vorlagen",
|
||||
"board": "Kanban-Board",
|
||||
"status": "Status",
|
||||
"board_note_first": "Erste Notiz",
|
||||
"board_note_second": "Zweite Notiz",
|
||||
"board_note_third": "Dritte Notiz",
|
||||
"board_status_todo": "To-Do",
|
||||
"board_status_progress": "In Bearbeitung",
|
||||
"presentation": "Präsentation",
|
||||
"presentation_slide": "Präsentationsfolie",
|
||||
"presentation_slide_first": "Erste Folie",
|
||||
"presentation_slide_second": "Zweite Folie",
|
||||
"background": "Hintergrund"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"copy-notes-to-clipboard": "Notizen in Zwischenablage kopieren",
|
||||
"paste-notes-from-clipboard": "Notizen aus Zwischenablage einfügen",
|
||||
"back-in-note-history": "Zurück im Notizverlauf",
|
||||
"forward-in-note-history": "Vorwärts im Notizverlauf",
|
||||
"jump-to-note": "Wechseln zu...",
|
||||
"command-palette": "Befehlsübersicht",
|
||||
"scroll-to-active-note": "Zur aktiven Notiz scrollen",
|
||||
"quick-search": "Schnellsuche",
|
||||
"search-in-subtree": "Im Unterzweig suchen",
|
||||
"expand-subtree": "Unterzweig aufklappen",
|
||||
"collapse-tree": "Baumstruktur einklappen",
|
||||
"collapse-subtree": "Unterzweig einklappen",
|
||||
"sort-child-notes": "Unternotizen sortieren",
|
||||
"create-note-after": "Erstelle eine neue Notiz dahinter",
|
||||
"create-note-into": "Erstelle eine neue Notiz davor",
|
||||
"create-note-into-inbox": "Neue Notiz in Inbox erstellen",
|
||||
"delete-notes": "Notizen löschen",
|
||||
"move-note-up": "Notiz nach oben verschieben",
|
||||
"move-note-down": "Notiz nach unten verschieben",
|
||||
"edit-note-title": "Bearbeite Notiz Titel",
|
||||
"clone-notes-to": "Vervielfältige Notiz nach",
|
||||
"move-notes-to": "Verschiebe Notiz nach",
|
||||
"cut-notes-to-clipboard": "Notizen in Zwischenablage ausschneiden",
|
||||
"add-note-above-to-selection": "Notiz oberhalb der Selektion hinzufügen",
|
||||
"add-note-below-to-selection": "Notiz unterhalb der Selektion hinzufügen",
|
||||
"open-new-tab": "Öffne im neuen Tab",
|
||||
"close-active-tab": "Schließe aktiven Tab",
|
||||
"reopen-last-tab": "Öffne zuletzt geschlossenen Tab",
|
||||
"activate-next-tab": "Aktiviere nächsten Tab",
|
||||
"activate-previous-tab": "Aktiviere vorherigen Tab",
|
||||
"open-new-window": "Öffne im neuen Fenster",
|
||||
"toggle-system-tray-icon": "Systemablage-Symbol umschalten",
|
||||
"toggle-zen-mode": "Zen-Modus umschalten",
|
||||
"switch-to-first-tab": "Wechsle zum ersten Tab",
|
||||
"switch-to-second-tab": "Wechsle zum zweiten Tab",
|
||||
"switch-to-third-tab": "Wechsle zum dritten Tab",
|
||||
"switch-to-fourth-tab": "Wechsle zum vierten Tab",
|
||||
"switch-to-fifth-tab": "Wechsle zum fünften Tab",
|
||||
"switch-to-sixth-tab": "Wechsle zum sechsten Tab",
|
||||
"switch-to-seventh-tab": "Wechsle zum siebten Tab",
|
||||
"switch-to-eighth-tab": "Wechsle zum achten Tab",
|
||||
"switch-to-ninth-tab": "Wechsle zum neunten Tab",
|
||||
"switch-to-last-tab": "Wechsle zum letzten Tab",
|
||||
"show-note-source": "Zeige Notiz Quelle",
|
||||
"show-options": "Zeige Optionen",
|
||||
"show-revisions": "Zeige Revisionen",
|
||||
"show-recent-changes": "Zeige letzte Änderungen",
|
||||
"show-sql-console": "Zeige SQL Konsole",
|
||||
"show-backend-log": "Zeige Backend-Protokoll",
|
||||
"show-help": "Zeige Hilfe",
|
||||
"show-cheatsheet": "Zeige Cheatsheet",
|
||||
"add-link-to-text": "Link zum Text hinzufügen",
|
||||
"cut-into-note": "In neue Notiz verschieben",
|
||||
"add-new-label": "Neues Label hinzufügen",
|
||||
"add-new-relation": "Neue Beziehung hinzufügen",
|
||||
"print-active-note": "Drucke aktive Notiz",
|
||||
"export-active-note-as-pdf": "Exportiere aktive Notiz als PDF",
|
||||
"move-note-up-in-hierarchy": "Notiz in der Hierarchie nach oben verschieben",
|
||||
"move-note-down-in-hierarchy": "Notiz in der Hierarchie nach unten verschieben",
|
||||
"edit-branch-prefix": "Zweigpräfix bearbeiten",
|
||||
"select-all-notes-in-parent": "Alle Notizen in übergeordnetem Element auswählen",
|
||||
"duplicate-subtree": "Unterbaum duplizieren",
|
||||
"follow-link-under-cursor": "Folge Link unterhalb des Mauszeigers",
|
||||
"insert-date-and-time-to-text": "Datum und Uhrzeit in Text einfügen",
|
||||
"paste-markdown-into-text": "Markdown in Text einfügen",
|
||||
"add-include-note-to-text": "Notiz in Text einfügen",
|
||||
"edit-read-only-note": "Schreibgeschützte Notiz bearbeiten",
|
||||
"toggle-ribbon-tab-classic-editor": "Registerkarte Klassischer Editor umschalten",
|
||||
"toggle-ribbon-tab-basic-properties": "Registerkarte Grundlegende Eigenschaften umschalten",
|
||||
"toggle-ribbon-tab-book-properties": "Registerkarte Buch-Eigenschaften umschalten",
|
||||
"toggle-ribbon-tab-file-properties": "Registerkarte Datei-Eigenschaften umschalten",
|
||||
"toggle-ribbon-tab-image-properties": "Registerkarte Bilder-Eigenschaften umschalten",
|
||||
"toggle-ribbon-tab-owned-attributes": "Registerkarte Besitzerattribute umschalten",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Registerkarte geerbte Attribute umschalten",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Registerkarte hervorgehobene Attribute umschalten",
|
||||
"toggle-ribbon-tab-note-map": "Registerkarte Notizkarte umschalten",
|
||||
"toggle-ribbon-tab-note-info": "Registerkarte Notiz-Info umschalten",
|
||||
"toggle-ribbon-tab-note-paths": "Registerkarte Notiz-Pfad umschalten",
|
||||
"toggle-ribbon-tab-similar-notes": "Registerkarte ähnliche Notizen umschalten",
|
||||
"toggle-right-pane": "Rechten Bereich ein-/ausblenden",
|
||||
"open-note-externally": "Notiz extern öffnen",
|
||||
"render-active-note": "Aktive Notiz rendern",
|
||||
"run-active-note": "Aktive Notiz ausführen",
|
||||
"toggle-note-hoisting": "Notiz hochziehen umschalten",
|
||||
"unhoist-note": "Notiz hochziehen rückgängig machen",
|
||||
"reload-frontend-app": "Oberfläche neu laden",
|
||||
"open-developer-tools": "Öffne Entwickler-Tools",
|
||||
"find-in-text": "Im Text suchen",
|
||||
"toggle-left-pane": "Linken Bereich ein-/ausblenden",
|
||||
"toggle-full-screen": "Vollbild-Modus de-/aktivieren",
|
||||
"zoom-out": "Vergrößern",
|
||||
"zoom-in": "Verkleinern",
|
||||
"reset-zoom-level": "Zoom zurücksetzen",
|
||||
"copy-without-formatting": "Kopieren ohne Formatierung",
|
||||
"force-save-revision": "Speichern der Notizrevision erzwingen"
|
||||
},
|
||||
"weekdayNumber": "Woche {weekNumber}",
|
||||
"quarterNumber": "Quartal {quarterNumber}",
|
||||
"migration": {
|
||||
"old_version": "Eine direkte Migration von Ihrer aktuellen Version wird nicht unterstützt. Bitte führen Sie zunächst ein Upgrade auf die neueste Version v0.60.4 durch und erst dann auf diese Version.",
|
||||
"error_message": "Fehler bei der Migration zu Version {{version}}: {{stack}}",
|
||||
"wrong_db_version": "Die Version der Datenbank ({{version}}) ist neuer als die von der Anwendung erwartete Version ({{targetVersion}}), was bedeutet, dass diese mit einer neueren und inkompatiblen Version von Trilium erstellt wurde. Führen Sie ein Upgrade auf die neueste Version von Trilium durch, um dieses Problem zu beheben."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Fehler"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Webseite Stil",
|
||||
"search_placeholder": "Suche...",
|
||||
"image_alt": "Artikel Bild",
|
||||
"last-updated": "Zuletzt aktualisiert am {{- date}}",
|
||||
"subpages": "Unterseiten:",
|
||||
"on-this-page": "Auf dieser Seite",
|
||||
"expand": "Erweitern"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Datenbank nicht initialisiert, bitte folge den Anweisungen auf dem Bildschirm.",
|
||||
"db_not_initialized_server": "DB nicht initialisiert, bitte besuche die Einrichtungsseite - http://[Server-Host]:{{port}}, um Anweisungen zur Initialisierung von Trilium zu erhalten."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Es läuft bereits eine Instanz, bitte beachte stattdessen diese Instanz."
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "Öffne das Dialogfeld \"Zu Notiz springen\"",
|
||||
"search-in-subtree": "Nach Notizen im Unterbaum der aktuellen Notiz suchen",
|
||||
"expand-subtree": "Unterbaum der aktuellen Notiz ausklappen",
|
||||
"collapse-tree": "Gesamten Notizbaum einklappen",
|
||||
"collapse-subtree": "Unterbaum der aktuellen Notiz einklappen",
|
||||
"sort-child-notes": "Untergeordnete Notizen sortieren",
|
||||
"creating-and-moving-notes": "Notizen erstellen und verschieben",
|
||||
"create-note-into-inbox": "Erstelle eine Notiz im Posteingang (falls definiert) oder in der Tagesnotiz",
|
||||
"delete-note": "Notiz löschen",
|
||||
"move-note-up": "Notiz nach oben verschieben",
|
||||
"move-note-down": "Notiz nach unten verschieben",
|
||||
"move-note-up-in-hierarchy": "Notiz in der Hierarchie nach oben verschieben",
|
||||
"move-note-down-in-hierarchy": "Notiz in der Hierarchie nach unten verschieben",
|
||||
"edit-note-title": "Vom Notiz-Baum zur Notiz-Detailansicht springen und den Titel bearbeiten",
|
||||
"edit-branch-prefix": "Dialog zum Bearbeiten des Zweigpräfixes anzeigen",
|
||||
"note-clipboard": "Notiz-Zwischenablage",
|
||||
"copy-notes-to-clipboard": "Ausgewählte Notizen in die Zwischenablage kopieren",
|
||||
"paste-notes-from-clipboard": "Notizen aus der Zwischenablage in die aktive Notiz einfügen",
|
||||
"cut-notes-to-clipboard": "Ausgewählte Notizen in die Zwischenablage ausschneiden",
|
||||
"select-all-notes-in-parent": "Alle Notizen der aktuellen Notizenebene auswählen",
|
||||
"add-note-above-to-the-selection": "Notiz oberhalb der Auswahl hinzufügen",
|
||||
"add-note-below-to-selection": "Notiz unterhalb der Auswahl hinzufügen",
|
||||
"duplicate-subtree": "Unterbaum duplizieren",
|
||||
"tabs-and-windows": "Tabs & Fenster",
|
||||
"open-new-tab": "Neuen Tab öffnen",
|
||||
"close-active-tab": "Aktiven Tab schließen",
|
||||
"reopen-last-tab": "Zuletzt geschlossenen Tab wieder öffnen",
|
||||
"activate-next-tab": "Rechten Tab aktivieren",
|
||||
"activate-previous-tab": "Linken Tab aktivieren",
|
||||
"open-new-window": "Neues leeres Fenster öffnen",
|
||||
"toggle-tray": "Anwendung im Systemtray anzeigen/verstecken",
|
||||
"first-tab": "Ersten Tab in der Liste aktivieren",
|
||||
"second-tab": "Zweiten Tab in der Liste aktivieren",
|
||||
"third-tab": "Dritten Tab in der Liste aktivieren",
|
||||
"fourth-tab": "Vierten Tab in der Liste aktivieren",
|
||||
"fifth-tab": "Fünften Tab in der Liste aktivieren",
|
||||
"sixth-tab": "Sechsten Tab in der Liste aktivieren",
|
||||
"seventh-tab": "Siebten Tab in der Liste aktivieren",
|
||||
"eight-tab": "Achten Tab in der Liste aktivieren",
|
||||
"ninth-tab": "Neunten Tab in der Liste aktivieren",
|
||||
"last-tab": "Letzten Tab in der Liste aktivieren",
|
||||
"dialogs": "Dialoge",
|
||||
"show-note-source": "Notizquellen-Dialog anzeigen",
|
||||
"show-options": "Optionen-Dialog anzeigen",
|
||||
"show-revisions": "Notizrevisionen-Dialog anzeigen",
|
||||
"show-recent-changes": "Letzte Änderungen-Dialog anzeigen",
|
||||
"show-sql-console": "SQL-Konsole-Dialog anzeigen",
|
||||
"show-backend-log": "Backend-Logs-Dialog anzeigen",
|
||||
"text-note-operations": "Textnotiz-Operationen",
|
||||
"add-link-to-text": "Dialogfeld zum Hinzufügen eines Links zum Text öffnen",
|
||||
"follow-link-under-cursor": "Folge dem Link, unter dem Mauszeiger",
|
||||
"insert-date-and-time-to-text": "Aktuelles Datum & Uhrzeit in den Text einfügen",
|
||||
"paste-markdown-into-text": "Markdown aus der Zwischenablage in die Textnotiz einfügen",
|
||||
"cut-into-note": "Auswahl aus der aktuellen Notiz ausschneiden und eine Unternotiz mit dem ausgewählten Text erstellen",
|
||||
"add-include-note-to-text": "Notiz-Einfügen-Dialog öffnen",
|
||||
"edit-readonly-note": "Schreibgeschützte Notiz bearbeiten",
|
||||
"attributes-labels-and-relations": "Attribute (Labels & Verknüpfungen)",
|
||||
"add-new-label": "Neues Label erstellen",
|
||||
"create-new-relation": "Neue Verknüpfungen",
|
||||
"ribbon-tabs": "Ribbon-Tabs",
|
||||
"toggle-basic-properties": "Grundattribute umschalten",
|
||||
"toggle-file-properties": "Dateiattribute umschalten",
|
||||
"toggle-image-properties": "Bildattribute umschalten",
|
||||
"toggle-owned-attributes": "Eigene Attribute umschalten",
|
||||
"toggle-inherited-attributes": "Vererbte Attribute umschalten",
|
||||
"toggle-promoted-attributes": "Hervorgehobene Attribute umschalten",
|
||||
"toggle-link-map": "Link-Karte umschalten",
|
||||
"toggle-note-info": "Notizinformationen umschalten",
|
||||
"toggle-note-paths": "Notizpfade umschalten",
|
||||
"toggle-similar-notes": "Ähnliche Notizen umschalten",
|
||||
"other": "Sonstige",
|
||||
"toggle-right-pane": "Anzeige der rechten Leiste umschalten, das Inhaltsverzeichnis und Markierungen enthält",
|
||||
"print-active-note": "Aktive Notiz drucken",
|
||||
"open-note-externally": "Notiz als Datei mit Standardanwendung öffnen",
|
||||
"render-active-note": "Aktive Notiz rendern (erneut rendern)",
|
||||
"run-active-note": "Aktive JavaScript(Frontend/Backend)-Codenotiz ausführen",
|
||||
"toggle-note-hoisting": "Notiz-Fokus der aktiven Notiz umschalten",
|
||||
"unhoist": "Notiz-Fokus aufheben",
|
||||
"reload-frontend-app": "Frontend-App neuladen",
|
||||
"open-dev-tools": "Entwicklertools öffnen",
|
||||
"toggle-left-note-tree-panel": "Linke Notizbaum-Leiste umschalten",
|
||||
"toggle-full-screen": "Vollbildmodus umschalten",
|
||||
"zoom-out": "Herauszoomen",
|
||||
"zoom-in": "Hineinzoomen",
|
||||
"note-navigation": "Notiznavigation",
|
||||
"reset-zoom-level": "Zoomlevel zurücksetzen",
|
||||
"copy-without-formatting": "Ausgewählten Text ohne Formatierung kopieren",
|
||||
"force-save-revision": "Erstellen / Speichern einer neuen Notizrevision der aktiven Notiz erzwingen",
|
||||
"show-help": "Eingebaute Hilfe / Cheat-Sheet anzeigen",
|
||||
"toggle-book-properties": "Buch-Eigenschaften umschalten",
|
||||
"clone-notes-to": "Ausgewählte Notizen duplizieren",
|
||||
"open-command-palette": "Kommandopalette öffnen",
|
||||
"export-as-pdf": "Aktuelle Notiz als PDF exportieren",
|
||||
"back-in-note-history": "Navigiere zur vorherigen Notiz im Verlauf",
|
||||
"forward-in-note-history": "Navigiere zur nächsten Notiz im Verlauf",
|
||||
"scroll-to-active-note": "Zum aktiven Notizbaumeintrag springen",
|
||||
"quick-search": "Schnellsuche öffnen",
|
||||
"create-note-after": "Erstelle eine neue Notiz nach der aktuellen Notiz",
|
||||
"create-note-into": "Unternotiz zur aktiven Notiz anlegen",
|
||||
"move-notes-to": "Ausgewählte Notizen verschieben",
|
||||
"show-cheatsheet": "Übersicht der Tastenkombinationen anzeigen",
|
||||
"find-in-text": "Suchleiste umschalten",
|
||||
"toggle-classic-editor-toolbar": "Schalte um zum Formatierungs-Tab für den Editor mit fester Werkzeugleiste",
|
||||
"toggle-zen-mode": "Zen-Modus ein-/ausschalten (reduzierte Benutzeroberfläche für ablenkungsfreies Arbeiten)"
|
||||
},
|
||||
"login": {
|
||||
"title": "Anmeldung",
|
||||
"heading": "Trilium Anmeldung",
|
||||
"incorrect-password": "Das Passwort ist falsch. Bitte versuche es erneut.",
|
||||
"password": "Passwort",
|
||||
"remember-me": "Angemeldet bleiben",
|
||||
"button": "Anmelden",
|
||||
"incorrect-totp": "Einmaltoken ist falsch. Bitte erneut versuchen.",
|
||||
"sign_in_with_sso": "Mit {{ ssoIssuerName }} anmelden"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Passwort festlegen",
|
||||
"heading": "Passwort festlegen",
|
||||
"description": "Bevor du Trilium im Web verwenden kannst, musst du zuerst ein Passwort festlegen. Du wirst dieses Passwort dann zur Anmeldung verwenden.",
|
||||
"password": "Passwort",
|
||||
"password-confirmation": "Passwortbestätigung",
|
||||
"button": "Passwort festlegen"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes Setup",
|
||||
"new-document": "Ich bin ein neuer Benutzer und möchte ein neues Trilium-Dokument für meine Notizen erstellen",
|
||||
"sync-from-desktop": "Ich habe bereits eine Desktop-Instanz und möchte die Synchronisierung damit einrichten",
|
||||
"sync-from-server": "Ich habe bereits eine Server-Instanz und möchte die Synchronisierung damit einrichten",
|
||||
"next": "Weiter",
|
||||
"init-in-progress": "Dokumenteninitialisierung läuft",
|
||||
"redirecting": "Du wirst in Kürze zur Anwendung weitergeleitet.",
|
||||
"title": "Setup"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Synchronisation vom Desktop",
|
||||
"description": "Dieses Setup muss von der Desktop-Instanz aus initiiert werden:",
|
||||
"step1": "Öffne deine Trilium Notes Desktop-Instanz.",
|
||||
"step2": "Klicke im Trilium-Menü auf Optionen.",
|
||||
"step3": "Klicke auf die Kategorie Synchronisation.",
|
||||
"step4": "Ändere die Server-Instanzadresse auf: {{- host}} und klicke auf Speichern.",
|
||||
"step5": "Klicke auf den Button \"Test-Synchronisation\", um zu überprüfen, ob die Verbindung erfolgreich ist.",
|
||||
"step6": "Sobald du diese Schritte abgeschlossen hast, klicke auf {{- link}}.",
|
||||
"step6-here": "hier"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Synchronisation vom Server",
|
||||
"instructions": "Bitte gib unten die Trilium-Server-Adresse und die Zugangsdaten ein. Dies wird das gesamte Trilium-Dokument vom Server herunterladen und die Synchronisation einrichten. Je nach Dokumentgröße und Verbindungsgeschwindigkeit kann dies eine Weile dauern.",
|
||||
"server-host": "Trilium Server-Adresse",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Proxy-Server (optional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Hinweis:",
|
||||
"proxy-instruction": "Wenn du die Proxy-Einstellung leer lässt, wird der System-Proxy verwendet (gilt nur für die Desktop-Anwendung)",
|
||||
"password": "Passwort",
|
||||
"password-placeholder": "Passwort",
|
||||
"back": "Zurück",
|
||||
"finish-setup": "Setup abschließen"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Synchronisation läuft",
|
||||
"successful": "Die Synchronisation wurde erfolgreich eingerichtet. Es wird eine Weile dauern, bis die erste Synchronisation abgeschlossen ist. Sobald dies erledigt ist, wirst du zur Anmeldeseite weitergeleitet.",
|
||||
"outstanding-items": "Ausstehende Synchronisationselemente:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Nicht gefunden",
|
||||
"heading": "Nicht gefunden"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "Übergeordnete Notiz:",
|
||||
"clipped-from": "Diese Notiz wurde ursprünglich von {{- url}} ausgeschnitten",
|
||||
"child-notes": "Untergeordnete Notizen:",
|
||||
"no-content": "Diese Notiz hat keinen Inhalt."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Montag",
|
||||
"tuesday": "Dienstag",
|
||||
"wednesday": "Mittwoch",
|
||||
"thursday": "Donnerstag",
|
||||
"friday": "Freitag",
|
||||
"saturday": "Samstag",
|
||||
"sunday": "Sonntag"
|
||||
},
|
||||
"months": {
|
||||
"january": "Januar",
|
||||
"february": "Februar",
|
||||
"march": "März",
|
||||
"april": "April",
|
||||
"may": "Mai",
|
||||
"june": "Juni",
|
||||
"july": "Juli",
|
||||
"august": "August",
|
||||
"september": "September",
|
||||
"october": "Oktober",
|
||||
"november": "November",
|
||||
"december": "Dezember"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Suche:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Der Synchronisations-Server-Host ist nicht konfiguriert. Bitte konfiguriere zuerst die Synchronisation.",
|
||||
"successful": "Die Server-Verbindung wurde erfolgreich hergestellt, die Synchronisation wurde gestartet."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Versteckte Notizen",
|
||||
"search-history-title": "Suchverlauf",
|
||||
"note-map-title": "Notiz Karte",
|
||||
"sql-console-history-title": "SQL Konsolen Verlauf",
|
||||
"shared-notes-title": "Geteilte Notizen",
|
||||
"bulk-action-title": "Massenverarbeitung",
|
||||
"backend-log-title": "Backend Log",
|
||||
"user-hidden-title": "Versteckt vom Nutzer",
|
||||
"launch-bar-templates-title": "Startleiste Vorlagen",
|
||||
"base-abstract-launcher-title": "Basis Abstrakte Startleiste",
|
||||
"command-launcher-title": "Befehlslauncher",
|
||||
"note-launcher-title": "Notiz-Starter",
|
||||
"script-launcher-title": "Skript-Starter",
|
||||
"built-in-widget-title": "Eingebautes Widget",
|
||||
"spacer-title": "Freifeld",
|
||||
"custom-widget-title": "Benutzerdefiniertes Widget",
|
||||
"launch-bar-title": "Starterleiste",
|
||||
"available-launchers-title": "Verfügbare Starter",
|
||||
"go-to-previous-note-title": "Zur vorherigen Notiz gehen",
|
||||
"go-to-next-note-title": "Zur nächsten Notiz gehen",
|
||||
"new-note-title": "Neue Notiz",
|
||||
"search-notes-title": "Notizen durchsuchen",
|
||||
"calendar-title": "Kalender",
|
||||
"recent-changes-title": "neue Änderungen",
|
||||
"bookmarks-title": "Lesezeichen",
|
||||
"open-today-journal-note-title": "Heutigen Journaleintrag öffnen",
|
||||
"quick-search-title": "Schnellsuche",
|
||||
"protected-session-title": "Geschützte Sitzung",
|
||||
"sync-status-title": "Status Synchronisation",
|
||||
"settings-title": "Einstellungen",
|
||||
"options-title": "Optionen",
|
||||
"appearance-title": "Erscheinungsbild",
|
||||
"shortcuts-title": "Tastenkürzel",
|
||||
"text-notes": "Text Notizen",
|
||||
"code-notes-title": "Code Notizen",
|
||||
"images-title": "Bilder",
|
||||
"spellcheck-title": "Rechtschreibprüfung",
|
||||
"password-title": "Passwort",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Sicherung",
|
||||
"sync-title": "Synchronisation",
|
||||
"other": "Weitere",
|
||||
"advanced-title": "Erweitert",
|
||||
"visible-launchers-title": "Sichtbare Starter",
|
||||
"user-guide": "Nutzerhandbuch",
|
||||
"jump-to-note-title": "Springe zu...",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"localization": "Sprache & Region",
|
||||
"inbox-title": "Posteingang",
|
||||
"zen-mode": "Zen-Modus",
|
||||
"command-palette": "Befehlspalette öffnen",
|
||||
"tab-switcher-title": "Tabauswahl"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Neue Notiz",
|
||||
"duplicate-note-suffix": "(dopp)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Die Backend-Log-Datei '{{ fileName }}' existiert (noch) nicht.",
|
||||
"reading-log-failed": "Das Lesen der Backend-Log-Datei '{{ fileName }}' ist fehlgeschlagen."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Dieser Notiztyp kann nicht angezeigt werden."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF Dokument (*.pdf)",
|
||||
"unable-to-export-message": "Die aktuelle Notiz konnte nicht als PDF exportiert werden.",
|
||||
"unable-to-export-title": "Export als PDF fehlgeschlagen",
|
||||
"unable-to-save-message": "Die ausgewählte Datei konnte nicht beschrieben werden. Erneut versuchen oder ein anderes Ziel auswählen.",
|
||||
"unable-to-print": "Notiz kann nicht gedruckt werden"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Trilium schließen",
|
||||
"recents": "Kürzliche Notizen",
|
||||
"bookmarks": "Lesezeichen",
|
||||
"today": "Heutigen Journal Eintrag öffnen",
|
||||
"new-note": "Neue Notiz",
|
||||
"show-windows": "Fenster anzeigen",
|
||||
"open_new_window": "Öffne neues Fenster"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"table": "Tabelle",
|
||||
"board_status_done": "Erledigt",
|
||||
"text-snippet": "Text Ausschnitt",
|
||||
"description": "Beschreibung",
|
||||
"list-view": "Listenansicht",
|
||||
"grid-view": "Gitteransicht",
|
||||
"calendar": "Kalender",
|
||||
"geo-map": "Geokarte",
|
||||
"start-date": "Startdatum",
|
||||
"end-date": "Enddatum",
|
||||
"start-time": "Startzeit",
|
||||
"end-time": "Endzeit",
|
||||
"geolocation": "Geolokation",
|
||||
"built-in-templates": "Integrierte Vorlagen",
|
||||
"board": "Kanban-Board",
|
||||
"status": "Status",
|
||||
"board_note_first": "Erste Notiz",
|
||||
"board_note_second": "Zweite Notiz",
|
||||
"board_note_third": "Dritte Notiz",
|
||||
"board_status_todo": "To-Do",
|
||||
"board_status_progress": "In Bearbeitung",
|
||||
"presentation": "Präsentation",
|
||||
"presentation_slide": "Präsentationsfolie",
|
||||
"presentation_slide_first": "Erste Folie",
|
||||
"presentation_slide_second": "Zweite Folie",
|
||||
"background": "Hintergrund"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"copy-notes-to-clipboard": "Notizen in Zwischenablage kopieren",
|
||||
"paste-notes-from-clipboard": "Notizen aus Zwischenablage einfügen",
|
||||
"back-in-note-history": "Zurück im Notizverlauf",
|
||||
"forward-in-note-history": "Vorwärts im Notizverlauf",
|
||||
"jump-to-note": "Wechseln zu...",
|
||||
"command-palette": "Befehlsübersicht",
|
||||
"scroll-to-active-note": "Zur aktiven Notiz scrollen",
|
||||
"quick-search": "Schnellsuche",
|
||||
"search-in-subtree": "Im Unterzweig suchen",
|
||||
"expand-subtree": "Unterzweig aufklappen",
|
||||
"collapse-tree": "Baumstruktur einklappen",
|
||||
"collapse-subtree": "Unterzweig einklappen",
|
||||
"sort-child-notes": "Unternotizen sortieren",
|
||||
"create-note-after": "Erstelle eine neue Notiz dahinter",
|
||||
"create-note-into": "Erstelle eine neue Notiz davor",
|
||||
"create-note-into-inbox": "Neue Notiz in Inbox erstellen",
|
||||
"delete-notes": "Notizen löschen",
|
||||
"move-note-up": "Notiz nach oben verschieben",
|
||||
"move-note-down": "Notiz nach unten verschieben",
|
||||
"edit-note-title": "Bearbeite Notiz Titel",
|
||||
"clone-notes-to": "Vervielfältige Notiz nach",
|
||||
"move-notes-to": "Verschiebe Notiz nach",
|
||||
"cut-notes-to-clipboard": "Notizen in Zwischenablage ausschneiden",
|
||||
"add-note-above-to-selection": "Notiz oberhalb der Selektion hinzufügen",
|
||||
"add-note-below-to-selection": "Notiz unterhalb der Selektion hinzufügen",
|
||||
"open-new-tab": "Öffne im neuen Tab",
|
||||
"close-active-tab": "Schließe aktiven Tab",
|
||||
"reopen-last-tab": "Öffne zuletzt geschlossenen Tab",
|
||||
"activate-next-tab": "Aktiviere nächsten Tab",
|
||||
"activate-previous-tab": "Aktiviere vorherigen Tab",
|
||||
"open-new-window": "Öffne im neuen Fenster",
|
||||
"toggle-system-tray-icon": "Systemablage-Symbol umschalten",
|
||||
"toggle-zen-mode": "Zen-Modus umschalten",
|
||||
"switch-to-first-tab": "Wechsle zum ersten Tab",
|
||||
"switch-to-second-tab": "Wechsle zum zweiten Tab",
|
||||
"switch-to-third-tab": "Wechsle zum dritten Tab",
|
||||
"switch-to-fourth-tab": "Wechsle zum vierten Tab",
|
||||
"switch-to-fifth-tab": "Wechsle zum fünften Tab",
|
||||
"switch-to-sixth-tab": "Wechsle zum sechsten Tab",
|
||||
"switch-to-seventh-tab": "Wechsle zum siebten Tab",
|
||||
"switch-to-eighth-tab": "Wechsle zum achten Tab",
|
||||
"switch-to-ninth-tab": "Wechsle zum neunten Tab",
|
||||
"switch-to-last-tab": "Wechsle zum letzten Tab",
|
||||
"show-note-source": "Zeige Notiz Quelle",
|
||||
"show-options": "Zeige Optionen",
|
||||
"show-revisions": "Zeige Revisionen",
|
||||
"show-recent-changes": "Zeige letzte Änderungen",
|
||||
"show-sql-console": "Zeige SQL Konsole",
|
||||
"show-backend-log": "Zeige Backend-Protokoll",
|
||||
"show-help": "Zeige Hilfe",
|
||||
"show-cheatsheet": "Zeige Cheatsheet",
|
||||
"add-link-to-text": "Link zum Text hinzufügen",
|
||||
"cut-into-note": "In neue Notiz verschieben",
|
||||
"add-new-label": "Neues Label hinzufügen",
|
||||
"add-new-relation": "Neue Beziehung hinzufügen",
|
||||
"print-active-note": "Drucke aktive Notiz",
|
||||
"export-active-note-as-pdf": "Exportiere aktive Notiz als PDF",
|
||||
"move-note-up-in-hierarchy": "Notiz in der Hierarchie nach oben verschieben",
|
||||
"move-note-down-in-hierarchy": "Notiz in der Hierarchie nach unten verschieben",
|
||||
"edit-branch-prefix": "Zweigpräfix bearbeiten",
|
||||
"select-all-notes-in-parent": "Alle Notizen in übergeordnetem Element auswählen",
|
||||
"duplicate-subtree": "Unterbaum duplizieren",
|
||||
"follow-link-under-cursor": "Folge Link unterhalb des Mauszeigers",
|
||||
"insert-date-and-time-to-text": "Datum und Uhrzeit in Text einfügen",
|
||||
"paste-markdown-into-text": "Markdown in Text einfügen",
|
||||
"add-include-note-to-text": "Notiz in Text einfügen",
|
||||
"edit-read-only-note": "Schreibgeschützte Notiz bearbeiten",
|
||||
"toggle-ribbon-tab-classic-editor": "Registerkarte Klassischer Editor umschalten",
|
||||
"toggle-ribbon-tab-basic-properties": "Registerkarte Grundlegende Eigenschaften umschalten",
|
||||
"toggle-ribbon-tab-book-properties": "Registerkarte Buch-Eigenschaften umschalten",
|
||||
"toggle-ribbon-tab-file-properties": "Registerkarte Datei-Eigenschaften umschalten",
|
||||
"toggle-ribbon-tab-image-properties": "Registerkarte Bilder-Eigenschaften umschalten",
|
||||
"toggle-ribbon-tab-owned-attributes": "Registerkarte Besitzerattribute umschalten",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Registerkarte geerbte Attribute umschalten",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Registerkarte hervorgehobene Attribute umschalten",
|
||||
"toggle-ribbon-tab-note-map": "Registerkarte Notizkarte umschalten",
|
||||
"toggle-ribbon-tab-note-info": "Registerkarte Notiz-Info umschalten",
|
||||
"toggle-ribbon-tab-note-paths": "Registerkarte Notiz-Pfad umschalten",
|
||||
"toggle-ribbon-tab-similar-notes": "Registerkarte ähnliche Notizen umschalten",
|
||||
"toggle-right-pane": "Rechten Bereich ein-/ausblenden",
|
||||
"open-note-externally": "Notiz extern öffnen",
|
||||
"render-active-note": "Aktive Notiz rendern",
|
||||
"run-active-note": "Aktive Notiz ausführen",
|
||||
"toggle-note-hoisting": "Notiz hochziehen umschalten",
|
||||
"unhoist-note": "Notiz hochziehen rückgängig machen",
|
||||
"reload-frontend-app": "Oberfläche neu laden",
|
||||
"open-developer-tools": "Öffne Entwickler-Tools",
|
||||
"find-in-text": "Im Text suchen",
|
||||
"toggle-left-pane": "Linken Bereich ein-/ausblenden",
|
||||
"toggle-full-screen": "Vollbild-Modus de-/aktivieren",
|
||||
"zoom-out": "Vergrößern",
|
||||
"zoom-in": "Verkleinern",
|
||||
"reset-zoom-level": "Zoom zurücksetzen",
|
||||
"copy-without-formatting": "Kopieren ohne Formatierung",
|
||||
"force-save-revision": "Speichern der Notizrevision erzwingen"
|
||||
},
|
||||
"weekdayNumber": "Woche {weekNumber}",
|
||||
"quarterNumber": "Quartal {quarterNumber}",
|
||||
"migration": {
|
||||
"old_version": "Eine direkte Migration von Ihrer aktuellen Version wird nicht unterstützt. Bitte führen Sie zunächst ein Upgrade auf die neueste Version v0.60.4 durch und erst dann auf diese Version.",
|
||||
"error_message": "Fehler bei der Migration zu Version {{version}}: {{stack}}",
|
||||
"wrong_db_version": "Die Version der Datenbank ({{version}}) ist neuer als die von der Anwendung erwartete Version ({{targetVersion}}), was bedeutet, dass diese mit einer neueren und inkompatiblen Version von Trilium erstellt wurde. Führen Sie ein Upgrade auf die neueste Version von Trilium durch, um dieses Problem zu beheben."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Fehler"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Webseite Stil",
|
||||
"search_placeholder": "Suche...",
|
||||
"image_alt": "Artikel Bild",
|
||||
"last-updated": "Zuletzt aktualisiert am {{- date}}",
|
||||
"subpages": "Unterseiten:",
|
||||
"on-this-page": "Auf dieser Seite",
|
||||
"expand": "Erweitern"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Datenbank nicht initialisiert, bitte folge den Anweisungen auf dem Bildschirm.",
|
||||
"db_not_initialized_server": "DB nicht initialisiert, bitte besuche die Einrichtungsseite - http://[Server-Host]:{{port}}, um Anweisungen zur Initialisierung von Trilium zu erhalten."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Es läuft bereits eine Instanz, bitte beachte stattdessen diese Instanz."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,37 +3,6 @@
|
||||
"back-in-note-history": "Μετάβαση στην προηγούμενη σημείωση στο ιστορικό",
|
||||
"forward-in-note-history": "Μεταβείτε στην επόμενη σημείωση στο ιστορικό",
|
||||
"open-jump-to-note-dialog": "Ανοίξτε το παράθυρο διαλόγου \"Μετάβαση στη σημείωση\"",
|
||||
"open-command-palette": "Άνοιγμα παλέτας εντολών",
|
||||
"scroll-to-active-note": "Μετακίνηση του δέντρου σημειώσεων στην ενεργή σημείωση",
|
||||
"quick-search": "Ενεργοποίηση γραμμής γρήγορης αναζήτησης",
|
||||
"search-in-subtree": "Αναζήτηση σημειώσεων στο υποδέντρο της ενεργής σημείωσης",
|
||||
"expand-subtree": "Ανάπτυξη υποδέντρου της τρέχουσας σημείωσης",
|
||||
"collapse-tree": "Σύμπτυξη ολόκληρου του δέντρου σημειώσεων",
|
||||
"collapse-subtree": "Σύμπτυξη υποδέντρου της τρέχουσας σημείωσης",
|
||||
"sort-child-notes": "Ταξινόμηση υποσημειώσεων",
|
||||
"creating-and-moving-notes": "Δημιουργία και μετακίνηση σημειώσεων",
|
||||
"create-note-after": "Δημιουργία σημείωσης μετά την ενεργή σημείωση",
|
||||
"create-note-into": "Δημιουργία σημείωσης ως υποσημείωσης της ενεργής σημείωσης",
|
||||
"create-note-into-inbox": "Δημιουργία σημείωσης στα Εισερχόμενα (εάν έχουν οριστεί) ή στη σημείωση ημέρας",
|
||||
"delete-note": "Διαγραφή σημείωσης",
|
||||
"move-note-up": "Μετακίνηση σημείωσης προς τα επάνω",
|
||||
"move-note-down": "Μετακίνηση σημείωσης προς τα κάτω",
|
||||
"move-note-up-in-hierarchy": "Μετακίνηση σημείωσης προς τα επάνω στην ιεραρχία",
|
||||
"move-note-down-in-hierarchy": "Μετακίνηση σημείωσης προς τα κάτω στην ιεραρχία",
|
||||
"edit-note-title": "Μετάβαση από το δέντρο στις λεπτομέρειες της σημείωσης και επεξεργασία τίτλου",
|
||||
"edit-branch-prefix": "Εμφάνιση παραθύρου «Επεξεργασία προθέματος κλάδου»",
|
||||
"clone-notes-to": "Κλωνοποίηση επιλεγμένων σημειώσεων",
|
||||
"move-notes-to": "Μετακίνηση επιλεγμένων σημειώσεων",
|
||||
"note-clipboard": "Πρόχειρο σημειώσεων",
|
||||
"copy-notes-to-clipboard": "Αντιγραφή επιλεγμένων σημειώσεων στο πρόχειρο",
|
||||
"paste-notes-from-clipboard": "Επικόλληση σημειώσεων από το πρόχειρο στην ενεργή σημείωση",
|
||||
"cut-notes-to-clipboard": "Αποκοπή επιλεγμένων σημειώσεων στο πρόχειρο",
|
||||
"select-all-notes-in-parent": "Επιλογή όλων των σημειώσεων από το τρέχον επίπεδο σημείωσης",
|
||||
"add-note-above-to-the-selection": "Προσθήκη της παραπάνω σημείωσης στην επιλογή",
|
||||
"add-note-below-to-selection": "Προσθήκη της παρακάτω σημείωσης στην επιλογή",
|
||||
"duplicate-subtree": "Αντιγραφή υποδέντρου",
|
||||
"tabs-and-windows": "Καρτέλες & Παράθυρα",
|
||||
"open-new-tab": "Άνοιγμα νέας καρτέλας",
|
||||
"close-active-tab": "Κλείσιμο ενεργής καρτέλας"
|
||||
"open-command-palette": "Άνοιγμα παλέτας εντολών"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,441 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Navigate to previous note in history",
|
||||
"forward-in-note-history": "Navigate to next note in history",
|
||||
"open-jump-to-note-dialog": "Open \"Jump to note\" dialog",
|
||||
"open-command-palette": "Open command palette",
|
||||
"scroll-to-active-note": "Scroll note tree to active note",
|
||||
"quick-search": "Activate quick search bar",
|
||||
"search-in-subtree": "Search for notes in the active note's subtree",
|
||||
"expand-subtree": "Expand subtree of current note",
|
||||
"collapse-tree": "Collapses the complete note tree",
|
||||
"collapse-subtree": "Collapses subtree of current note",
|
||||
"sort-child-notes": "Sort child notes",
|
||||
"creating-and-moving-notes": "Creating and moving notes",
|
||||
"create-note-after": "Create note after active note",
|
||||
"create-note-into": "Create note as child of active note",
|
||||
"create-note-into-inbox": "Create a note in the inbox (if defined) or day note",
|
||||
"delete-note": "Delete note",
|
||||
"move-note-up": "Move note up",
|
||||
"move-note-down": "Move note down",
|
||||
"move-note-up-in-hierarchy": "Move note up in hierarchy",
|
||||
"move-note-down-in-hierarchy": "Move note down in hierarchy",
|
||||
"edit-note-title": "Jump from tree to the note detail and edit title",
|
||||
"edit-branch-prefix": "Show \"Edit branch prefix\" dialog",
|
||||
"clone-notes-to": "Clone selected notes",
|
||||
"move-notes-to": "Move selected notes",
|
||||
"note-clipboard": "Note clipboard",
|
||||
"copy-notes-to-clipboard": "Copy selected notes to the clipboard",
|
||||
"paste-notes-from-clipboard": "Paste notes from the clipboard into active note",
|
||||
"cut-notes-to-clipboard": "Cut selected notes to the clipboard",
|
||||
"select-all-notes-in-parent": "Select all notes from the current note level",
|
||||
"add-note-above-to-the-selection": "Add note above to the selection",
|
||||
"add-note-below-to-selection": "Add note below to the selection",
|
||||
"duplicate-subtree": "Duplicate subtree",
|
||||
"tabs-and-windows": "Tabs & Windows",
|
||||
"open-new-tab": "Open new tab",
|
||||
"close-active-tab": "Close active tab",
|
||||
"reopen-last-tab": "Reopen the last closed tab",
|
||||
"activate-next-tab": "Activate tab on the right",
|
||||
"activate-previous-tab": "Activate tab on the left",
|
||||
"open-new-window": "Open new empty window",
|
||||
"toggle-tray": "Show/hide the application from the system tray",
|
||||
"first-tab": "Activate the first tab in the list",
|
||||
"second-tab": "Activate the second tab in the list",
|
||||
"third-tab": "Activate the third tab in the list",
|
||||
"fourth-tab": "Activate the fourth tab in the list",
|
||||
"fifth-tab": "Activate the fifth tab in the list",
|
||||
"sixth-tab": "Activate the sixth tab in the list",
|
||||
"seventh-tab": "Activate the seventh tab in the list",
|
||||
"eight-tab": "Activate the eighth tab in the list",
|
||||
"ninth-tab": "Activate the ninth tab in the list",
|
||||
"last-tab": "Activate the last tab in the list",
|
||||
"dialogs": "Dialogs",
|
||||
"show-note-source": "Show \"Note Source\" dialog",
|
||||
"show-options": "Open \"Options\" page",
|
||||
"show-revisions": "Show \"Note Revisions\" dialog",
|
||||
"show-recent-changes": "Show \"Recent Changes\" dialog",
|
||||
"show-sql-console": "Open \"SQL Console\" page",
|
||||
"show-backend-log": "Open \"Backend Log\" page",
|
||||
"show-help": "Open the built-in User Guide",
|
||||
"show-cheatsheet": "Show a modal with common keyboard operations",
|
||||
"text-note-operations": "Text note operations",
|
||||
"add-link-to-text": "Open dialog to add link to the text",
|
||||
"follow-link-under-cursor": "Follow link within which the caret is placed",
|
||||
"insert-date-and-time-to-text": "Insert current date & time into text",
|
||||
"paste-markdown-into-text": "Pastes Markdown from clipboard into text note",
|
||||
"cut-into-note": "Cuts the selection from the current note and creates subnote with the selected text",
|
||||
"add-include-note-to-text": "Opens the dialog to include a note",
|
||||
"edit-readonly-note": "Edit a read-only note",
|
||||
"attributes-labels-and-relations": "Attributes (labels & relations)",
|
||||
"add-new-label": "Create new label",
|
||||
"create-new-relation": "Create new relation",
|
||||
"ribbon-tabs": "Ribbon tabs",
|
||||
"toggle-basic-properties": "Toggle Basic Properties",
|
||||
"toggle-file-properties": "Toggle File Properties",
|
||||
"toggle-image-properties": "Toggle Image Properties",
|
||||
"toggle-owned-attributes": "Toggle Owned Attributes",
|
||||
"toggle-inherited-attributes": "Toggle Inherited Attributes",
|
||||
"toggle-promoted-attributes": "Toggle Promoted Attributes",
|
||||
"toggle-link-map": "Toggle Link Map",
|
||||
"toggle-note-info": "Toggle Note Info",
|
||||
"toggle-note-paths": "Toggle Note Paths",
|
||||
"toggle-similar-notes": "Toggle Similar Notes",
|
||||
"other": "Other",
|
||||
"toggle-right-pane": "Toggle the display of the right pane, which includes Table of Contents and Highlights",
|
||||
"print-active-note": "Print active note",
|
||||
"open-note-externally": "Open note as a file with default application",
|
||||
"render-active-note": "Render (re-render) active note",
|
||||
"run-active-note": "Run active JavaScript (frontend/backend) code note",
|
||||
"toggle-note-hoisting": "Toggle note hoisting of active note",
|
||||
"unhoist": "Unhoist from anywhere",
|
||||
"reload-frontend-app": "Reload frontend",
|
||||
"open-dev-tools": "Open developer tools",
|
||||
"find-in-text": "Toggle search panel",
|
||||
"toggle-left-note-tree-panel": "Toggle left (note tree) panel",
|
||||
"toggle-full-screen": "Toggle full screen",
|
||||
"zoom-out": "Zoom Out",
|
||||
"zoom-in": "Zoom In",
|
||||
"note-navigation": "Note navigation",
|
||||
"reset-zoom-level": "Reset zoom level",
|
||||
"copy-without-formatting": "Copy selected text without formatting",
|
||||
"force-save-revision": "Force creating / saving new note revision of the active note",
|
||||
"toggle-book-properties": "Toggle Collection Properties",
|
||||
"toggle-classic-editor-toolbar": "Toggle the Formatting tab for the editor with fixed toolbar",
|
||||
"export-as-pdf": "Export the current note as a PDF",
|
||||
"toggle-zen-mode": "Enables/disables the zen mode (minimal UI for more focused editing)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Back in Note History",
|
||||
"forward-in-note-history": "Forward in Note History",
|
||||
"jump-to-note": "Jump to...",
|
||||
"command-palette": "Command Palette",
|
||||
"scroll-to-active-note": "Scroll to Active Note",
|
||||
"quick-search": "Quick Search",
|
||||
"search-in-subtree": "Search in Subtree",
|
||||
"expand-subtree": "Expand Subtree",
|
||||
"collapse-tree": "Collapse Tree",
|
||||
"collapse-subtree": "Collapse Subtree",
|
||||
"sort-child-notes": "Sort Child Notes",
|
||||
"create-note-after": "Create Note After",
|
||||
"create-note-into": "Create Note Into",
|
||||
"create-note-into-inbox": "Create Note Into Inbox",
|
||||
"delete-notes": "Delete Notes",
|
||||
"move-note-up": "Move Note Up",
|
||||
"move-note-down": "Move Note Down",
|
||||
"move-note-up-in-hierarchy": "Move Note Up in Hierarchy",
|
||||
"move-note-down-in-hierarchy": "Move Note Down in Hierarchy",
|
||||
"edit-note-title": "Edit Note Title",
|
||||
"edit-branch-prefix": "Edit Branch Prefix",
|
||||
"clone-notes-to": "Clone Notes To",
|
||||
"move-notes-to": "Move Notes To",
|
||||
"copy-notes-to-clipboard": "Copy Notes to Clipboard",
|
||||
"paste-notes-from-clipboard": "Paste Notes from Clipboard",
|
||||
"cut-notes-to-clipboard": "Cut Notes to Clipboard",
|
||||
"select-all-notes-in-parent": "Select All Notes in Parent",
|
||||
"add-note-above-to-selection": "Add Note Above to Selection",
|
||||
"add-note-below-to-selection": "Add Note Below to Selection",
|
||||
"duplicate-subtree": "Duplicate Subtree",
|
||||
"open-new-tab": "Open New Tab",
|
||||
"close-active-tab": "Close Active Tab",
|
||||
"reopen-last-tab": "Reopen Last Tab",
|
||||
"activate-next-tab": "Activate Next Tab",
|
||||
"activate-previous-tab": "Activate Previous Tab",
|
||||
"open-new-window": "Open New Window",
|
||||
"toggle-system-tray-icon": "Toggle System Tray Icon",
|
||||
"toggle-zen-mode": "Toggle Zen Mode",
|
||||
"switch-to-first-tab": "Switch to First Tab",
|
||||
"switch-to-second-tab": "Switch to Second Tab",
|
||||
"switch-to-third-tab": "Switch to Third Tab",
|
||||
"switch-to-fourth-tab": "Switch to Fourth Tab",
|
||||
"switch-to-fifth-tab": "Switch to Fifth Tab",
|
||||
"switch-to-sixth-tab": "Switch to Sixth Tab",
|
||||
"switch-to-seventh-tab": "Switch to Seventh Tab",
|
||||
"switch-to-eighth-tab": "Switch to Eighth Tab",
|
||||
"switch-to-ninth-tab": "Switch to Ninth Tab",
|
||||
"switch-to-last-tab": "Switch to Last Tab",
|
||||
"show-note-source": "Show Note Source",
|
||||
"show-options": "Show Options",
|
||||
"show-revisions": "Show Revisions",
|
||||
"show-recent-changes": "Show Recent Changes",
|
||||
"show-sql-console": "Show SQL Console",
|
||||
"show-backend-log": "Show Backend Log",
|
||||
"show-help": "Show Help",
|
||||
"show-cheatsheet": "Show Cheatsheet",
|
||||
"add-link-to-text": "Add Link to Text",
|
||||
"follow-link-under-cursor": "Follow Link Under Cursor",
|
||||
"insert-date-and-time-to-text": "Insert Date and Time to Text",
|
||||
"paste-markdown-into-text": "Paste Markdown into Text",
|
||||
"cut-into-note": "Cut into Note",
|
||||
"add-include-note-to-text": "Add Include Note to Text",
|
||||
"edit-read-only-note": "Edit Read-Only Note",
|
||||
"add-new-label": "Add New Label",
|
||||
"add-new-relation": "Add New Relation",
|
||||
"toggle-ribbon-tab-classic-editor": "Toggle Ribbon Tab Classic Editor",
|
||||
"toggle-ribbon-tab-basic-properties": "Toggle Ribbon Tab Basic Properties",
|
||||
"toggle-ribbon-tab-book-properties": "Toggle Ribbon Tab Book Properties",
|
||||
"toggle-ribbon-tab-file-properties": "Toggle Ribbon Tab File Properties",
|
||||
"toggle-ribbon-tab-image-properties": "Toggle Ribbon Tab Image Properties",
|
||||
"toggle-ribbon-tab-owned-attributes": "Toggle Ribbon Tab Owned Attributes",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Toggle Ribbon Tab Inherited Attributes",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Toggle Ribbon Tab Promoted Attributes",
|
||||
"toggle-ribbon-tab-note-map": "Toggle Ribbon Tab Note Map",
|
||||
"toggle-ribbon-tab-note-info": "Toggle Ribbon Tab Note Info",
|
||||
"toggle-ribbon-tab-note-paths": "Toggle Ribbon Tab Note Paths",
|
||||
"toggle-ribbon-tab-similar-notes": "Toggle Ribbon Tab Similar Notes",
|
||||
"toggle-right-pane": "Toggle Right Pane",
|
||||
"print-active-note": "Print Active Note",
|
||||
"export-active-note-as-pdf": "Export Active Note as PDF",
|
||||
"open-note-externally": "Open Note Externally",
|
||||
"render-active-note": "Render Active Note",
|
||||
"run-active-note": "Run Active Note",
|
||||
"toggle-note-hoisting": "Toggle Note Hoisting",
|
||||
"unhoist-note": "Unhoist Note",
|
||||
"reload-frontend-app": "Reload Frontend App",
|
||||
"open-developer-tools": "Open Developer Tools",
|
||||
"find-in-text": "Find In Text",
|
||||
"toggle-left-pane": "Toggle Left Pane",
|
||||
"toggle-full-screen": "Toggle Full Screen",
|
||||
"zoom-out": "Zoom Out",
|
||||
"zoom-in": "Zoom In",
|
||||
"reset-zoom-level": "Reset Zoom Level",
|
||||
"copy-without-formatting": "Copy Without Formatting",
|
||||
"force-save-revision": "Force Save Revision"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"heading": "Trilium Login",
|
||||
"incorrect-totp": "TOTP is incorrect. Please try again.",
|
||||
"incorrect-password": "Password is incorrect. Please try again.",
|
||||
"password": "Password",
|
||||
"remember-me": "Remember me",
|
||||
"button": "Login",
|
||||
"sign_in_with_sso": "Sign in with {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Set Password",
|
||||
"heading": "Set password",
|
||||
"description": "Before you can start using Trilium from web, you need to set a password first. You will then use this password to login.",
|
||||
"password": "Password",
|
||||
"password-confirmation": "Password confirmation",
|
||||
"button": "Set password"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes setup",
|
||||
"new-document": "I'm a new user, and I want to create a new Trilium document for my notes",
|
||||
"sync-from-desktop": "I have a desktop instance already, and I want to set up sync with it",
|
||||
"sync-from-server": "I have a server instance already, and I want to set up sync with it",
|
||||
"next": "Next",
|
||||
"init-in-progress": "Document initialization in progress",
|
||||
"redirecting": "You will be shortly redirected to the application.",
|
||||
"title": "Setup"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sync from Desktop",
|
||||
"description": "This setup needs to be initiated from the desktop instance:",
|
||||
"step1": "Open your desktop instance of Trilium Notes.",
|
||||
"step2": "From the Trilium Menu, click Options.",
|
||||
"step3": "Click on Sync category.",
|
||||
"step4": "Change server instance address to: {{- host}} and click Save.",
|
||||
"step5": "Click \"Test sync\" button to verify connection is successful.",
|
||||
"step6": "Once you've completed these steps, click {{- link}}.",
|
||||
"step6-here": "here"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sync from Server",
|
||||
"instructions": "Please enter Trilium server address and credentials below. This will download the whole Trilium document from server and setup sync to it. Depending on the document size and your connection speed, this may take a while.",
|
||||
"server-host": "Trilium server address",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Proxy server (optional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Note:",
|
||||
"proxy-instruction": "If you leave proxy setting blank, system proxy will be used (applies to the desktop application only)",
|
||||
"password": "Password",
|
||||
"password-placeholder": "Password",
|
||||
"back": "Back",
|
||||
"finish-setup": "Finish setup"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sync in progress",
|
||||
"successful": "Sync has been correctly set up. It will take some time for the initial sync to finish. Once it's done, you'll be redirected to the login page.",
|
||||
"outstanding-items": "Outstanding sync items:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Not found",
|
||||
"heading": "Not found"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "parent:",
|
||||
"clipped-from": "This note was originally clipped from {{- url}}",
|
||||
"child-notes": "Child notes:",
|
||||
"no-content": "This note has no content."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Monday",
|
||||
"tuesday": "Tuesday",
|
||||
"wednesday": "Wednesday",
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
},
|
||||
"weekdayNumber": "Week {weekNumber}",
|
||||
"months": {
|
||||
"january": "January",
|
||||
"february": "February",
|
||||
"march": "March",
|
||||
"april": "April",
|
||||
"may": "May",
|
||||
"june": "June",
|
||||
"july": "July",
|
||||
"august": "August",
|
||||
"september": "September",
|
||||
"october": "October",
|
||||
"november": "November",
|
||||
"december": "December"
|
||||
},
|
||||
"quarterNumber": "Quarter {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Search:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Sync server host is not configured. Please configure sync first.",
|
||||
"successful": "Sync server handshake has been successful, sync has been started."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Hidden Notes",
|
||||
"search-history-title": "Search History",
|
||||
"note-map-title": "Note Map",
|
||||
"sql-console-history-title": "SQL Console History",
|
||||
"shared-notes-title": "Shared Notes",
|
||||
"bulk-action-title": "Bulk Action",
|
||||
"backend-log-title": "Backend Log",
|
||||
"user-hidden-title": "User Hidden",
|
||||
"launch-bar-templates-title": "Launch Bar Templates",
|
||||
"base-abstract-launcher-title": "Base Abstract Launcher",
|
||||
"command-launcher-title": "Command Launcher",
|
||||
"note-launcher-title": "Note Launcher",
|
||||
"script-launcher-title": "Script Launcher",
|
||||
"built-in-widget-title": "Built-in Widget",
|
||||
"spacer-title": "Spacer",
|
||||
"custom-widget-title": "Custom Widget",
|
||||
"launch-bar-title": "Launch Bar",
|
||||
"available-launchers-title": "Available Launchers",
|
||||
"go-to-previous-note-title": "Go to Previous Note",
|
||||
"go-to-next-note-title": "Go to Next Note",
|
||||
"new-note-title": "New Note",
|
||||
"search-notes-title": "Search Notes",
|
||||
"jump-to-note-title": "Jump to...",
|
||||
"calendar-title": "Calendar",
|
||||
"recent-changes-title": "Recent Changes",
|
||||
"bookmarks-title": "Bookmarks",
|
||||
"command-palette": "Open Command Palette",
|
||||
"zen-mode": "Zen Mode",
|
||||
"open-today-journal-note-title": "Open Today's Journal Note",
|
||||
"quick-search-title": "Quick Search",
|
||||
"protected-session-title": "Protected Session",
|
||||
"sync-status-title": "Sync Status",
|
||||
"settings-title": "Settings",
|
||||
"llm-chat-title": "Chat with Notes",
|
||||
"options-title": "Options",
|
||||
"appearance-title": "Appearance",
|
||||
"shortcuts-title": "Shortcuts",
|
||||
"text-notes": "Text Notes",
|
||||
"code-notes-title": "Code Notes",
|
||||
"images-title": "Images",
|
||||
"spellcheck-title": "Spellcheck",
|
||||
"password-title": "Password",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Backup",
|
||||
"sync-title": "Sync",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "Other",
|
||||
"advanced-title": "Advanced",
|
||||
"visible-launchers-title": "Visible Launchers",
|
||||
"user-guide": "User Guide",
|
||||
"localization": "Language & Region",
|
||||
"inbox-title": "Inbox",
|
||||
"tab-switcher-title": "Tab Switcher"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "New note",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "The backend log file '{{ fileName }}' does not exist (yet).",
|
||||
"reading-log-failed": "Reading the backend log file '{{ fileName }}' failed."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "This note type cannot be displayed."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF Document (*.pdf)",
|
||||
"unable-to-export-message": "The current note could not be exported as a PDF.",
|
||||
"unable-to-export-title": "Unable to export as PDF",
|
||||
"unable-to-save-message": "The selected file could not be written to. Try again or select another destination.",
|
||||
"unable-to-print": "Unable to print the note"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Quit Trilium",
|
||||
"recents": "Recent notes",
|
||||
"bookmarks": "Bookmarks",
|
||||
"today": "Open today's journal note",
|
||||
"new-note": "New note",
|
||||
"show-windows": "Show windows",
|
||||
"open_new_window": "Open new window"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "Direct migration from your current version is not supported. Please upgrade to the latest v0.60.4 first and only then to this version.",
|
||||
"error_message": "Error during migration to version {{version}}: {{stack}}",
|
||||
"wrong_db_version": "The version of the database ({{version}}) is newer than what the application expects ({{targetVersion}}), which means that it was created by a newer and incompatible version of Trilium. Upgrade to the latest version of Trilium to resolve this issue."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Error"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Site Theme",
|
||||
"search_placeholder": "Search...",
|
||||
"image_alt": "Article Image",
|
||||
"last-updated": "Last updated on {{- date}}",
|
||||
"subpages": "Subpages:",
|
||||
"on-this-page": "On This Page",
|
||||
"expand": "Expand"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Text Snippet",
|
||||
"description": "Description",
|
||||
"list-view": "List View",
|
||||
"grid-view": "Grid View",
|
||||
"calendar": "Calendar",
|
||||
"table": "Table",
|
||||
"geo-map": "Geo Map",
|
||||
"start-date": "Start Date",
|
||||
"end-date": "End Date",
|
||||
"start-time": "Start Time",
|
||||
"end-time": "End Time",
|
||||
"geolocation": "Geolocation",
|
||||
"built-in-templates": "Built-in templates",
|
||||
"board": "Kanban Board",
|
||||
"status": "Status",
|
||||
"board_note_first": "First note",
|
||||
"board_note_second": "Second note",
|
||||
"board_note_third": "Third note",
|
||||
"board_status_todo": "To Do",
|
||||
"board_status_progress": "In Progress",
|
||||
"board_status_done": "Done",
|
||||
"presentation": "Presentation",
|
||||
"presentation_slide": "Presentation slide",
|
||||
"presentation_slide_first": "First slide",
|
||||
"presentation_slide_second": "Second slide",
|
||||
"background": "Background"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "DB not initialized, please follow on-screen instructions.",
|
||||
"db_not_initialized_server": "DB not initialized, please visit setup page - http://[your-server-host]:{{port}} to see instructions on how to initialize Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "There's already an instance running, focusing that instance instead."
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Navigate to previous note in history",
|
||||
"forward-in-note-history": "Navigate to next note in history",
|
||||
"open-jump-to-note-dialog": "Open \"Jump to note\" dialog",
|
||||
"open-command-palette": "Open command palette",
|
||||
"scroll-to-active-note": "Scroll note tree to active note",
|
||||
"quick-search": "Activate quick search bar",
|
||||
"search-in-subtree": "Search for notes in the active note's subtree",
|
||||
"expand-subtree": "Expand subtree of current note",
|
||||
"collapse-tree": "Collapses the complete note tree",
|
||||
"collapse-subtree": "Collapses subtree of current note",
|
||||
"sort-child-notes": "Sort child notes",
|
||||
"creating-and-moving-notes": "Creating and moving notes",
|
||||
"create-note-after": "Create note after active note",
|
||||
"create-note-into": "Create note as child of active note",
|
||||
"create-note-into-inbox": "Create a note in the inbox (if defined) or day note",
|
||||
"delete-note": "Delete note",
|
||||
"move-note-up": "Move note up",
|
||||
"move-note-down": "Move note down",
|
||||
"move-note-up-in-hierarchy": "Move note up in hierarchy",
|
||||
"move-note-down-in-hierarchy": "Move note down in hierarchy",
|
||||
"edit-note-title": "Jump from tree to the note detail and edit title",
|
||||
"edit-branch-prefix": "Show \"Edit branch prefix\" dialog",
|
||||
"clone-notes-to": "Clone selected notes",
|
||||
"move-notes-to": "Move selected notes",
|
||||
"note-clipboard": "Note clipboard",
|
||||
"copy-notes-to-clipboard": "Copy selected notes to the clipboard",
|
||||
"paste-notes-from-clipboard": "Paste notes from the clipboard into active note",
|
||||
"cut-notes-to-clipboard": "Cut selected notes to the clipboard",
|
||||
"select-all-notes-in-parent": "Select all notes from the current note level",
|
||||
"add-note-above-to-the-selection": "Add note above to the selection",
|
||||
"add-note-below-to-selection": "Add note below to the selection",
|
||||
"duplicate-subtree": "Duplicate subtree",
|
||||
"tabs-and-windows": "Tabs & Windows",
|
||||
"open-new-tab": "Open new tab",
|
||||
"close-active-tab": "Close active tab",
|
||||
"reopen-last-tab": "Reopen the last closed tab",
|
||||
"activate-next-tab": "Activate tab on the right",
|
||||
"activate-previous-tab": "Activate tab on the left",
|
||||
"open-new-window": "Open new empty window",
|
||||
"toggle-tray": "Show/hide the application from the system tray",
|
||||
"first-tab": "Activate the first tab in the list",
|
||||
"second-tab": "Activate the second tab in the list",
|
||||
"third-tab": "Activate the third tab in the list",
|
||||
"fourth-tab": "Activate the fourth tab in the list",
|
||||
"fifth-tab": "Activate the fifth tab in the list",
|
||||
"sixth-tab": "Activate the sixth tab in the list",
|
||||
"seventh-tab": "Activate the seventh tab in the list",
|
||||
"eight-tab": "Activate the eighth tab in the list",
|
||||
"ninth-tab": "Activate the ninth tab in the list",
|
||||
"last-tab": "Activate the last tab in the list",
|
||||
"dialogs": "Dialogs",
|
||||
"show-note-source": "Show \"Note Source\" dialog",
|
||||
"show-options": "Open \"Options\" page",
|
||||
"show-revisions": "Show \"Note Revisions\" dialog",
|
||||
"show-recent-changes": "Show \"Recent Changes\" dialog",
|
||||
"show-sql-console": "Open \"SQL Console\" page",
|
||||
"show-backend-log": "Open \"Backend Log\" page",
|
||||
"show-help": "Open the built-in User Guide",
|
||||
"show-cheatsheet": "Show a modal with common keyboard operations",
|
||||
"text-note-operations": "Text note operations",
|
||||
"add-link-to-text": "Open dialog to add link to the text",
|
||||
"follow-link-under-cursor": "Follow link within which the caret is placed",
|
||||
"insert-date-and-time-to-text": "Insert current date & time into text",
|
||||
"paste-markdown-into-text": "Pastes Markdown from clipboard into text note",
|
||||
"cut-into-note": "Cuts the selection from the current note and creates subnote with the selected text",
|
||||
"add-include-note-to-text": "Opens the dialog to include a note",
|
||||
"edit-readonly-note": "Edit a read-only note",
|
||||
"attributes-labels-and-relations": "Attributes (labels & relations)",
|
||||
"add-new-label": "Create new label",
|
||||
"create-new-relation": "Create new relation",
|
||||
"ribbon-tabs": "Ribbon tabs",
|
||||
"toggle-basic-properties": "Toggle Basic Properties",
|
||||
"toggle-file-properties": "Toggle File Properties",
|
||||
"toggle-image-properties": "Toggle Image Properties",
|
||||
"toggle-owned-attributes": "Toggle Owned Attributes",
|
||||
"toggle-inherited-attributes": "Toggle Inherited Attributes",
|
||||
"toggle-promoted-attributes": "Toggle Promoted Attributes",
|
||||
"toggle-link-map": "Toggle Link Map",
|
||||
"toggle-note-info": "Toggle Note Info",
|
||||
"toggle-note-paths": "Toggle Note Paths",
|
||||
"toggle-similar-notes": "Toggle Similar Notes",
|
||||
"other": "Other",
|
||||
"toggle-right-pane": "Toggle the display of the right pane, which includes Table of Contents and Highlights",
|
||||
"print-active-note": "Print active note",
|
||||
"open-note-externally": "Open note as a file with default application",
|
||||
"render-active-note": "Render (re-render) active note",
|
||||
"run-active-note": "Run active JavaScript (frontend/backend) code note",
|
||||
"toggle-note-hoisting": "Toggle note hoisting of active note",
|
||||
"unhoist": "Unhoist from anywhere",
|
||||
"reload-frontend-app": "Reload frontend",
|
||||
"open-dev-tools": "Open developer tools",
|
||||
"find-in-text": "Toggle search panel",
|
||||
"toggle-left-note-tree-panel": "Toggle left (note tree) panel",
|
||||
"toggle-full-screen": "Toggle full screen",
|
||||
"zoom-out": "Zoom Out",
|
||||
"zoom-in": "Zoom In",
|
||||
"note-navigation": "Note navigation",
|
||||
"reset-zoom-level": "Reset zoom level",
|
||||
"copy-without-formatting": "Copy selected text without formatting",
|
||||
"force-save-revision": "Force creating / saving new note revision of the active note",
|
||||
"toggle-book-properties": "Toggle Collection Properties",
|
||||
"toggle-classic-editor-toolbar": "Toggle the Formatting tab for the editor with fixed toolbar",
|
||||
"export-as-pdf": "Export the current note as a PDF",
|
||||
"toggle-zen-mode": "Enables/disables the zen mode (minimal UI for more focused editing)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Back in Note History",
|
||||
"forward-in-note-history": "Forward in Note History",
|
||||
"jump-to-note": "Jump to...",
|
||||
"command-palette": "Command Palette",
|
||||
"scroll-to-active-note": "Scroll to Active Note",
|
||||
"quick-search": "Quick Search",
|
||||
"search-in-subtree": "Search in Subtree",
|
||||
"expand-subtree": "Expand Subtree",
|
||||
"collapse-tree": "Collapse Tree",
|
||||
"collapse-subtree": "Collapse Subtree",
|
||||
"sort-child-notes": "Sort Child Notes",
|
||||
"create-note-after": "Create Note After",
|
||||
"create-note-into": "Create Note Into",
|
||||
"create-note-into-inbox": "Create Note Into Inbox",
|
||||
"delete-notes": "Delete Notes",
|
||||
"move-note-up": "Move Note Up",
|
||||
"move-note-down": "Move Note Down",
|
||||
"move-note-up-in-hierarchy": "Move Note Up in Hierarchy",
|
||||
"move-note-down-in-hierarchy": "Move Note Down in Hierarchy",
|
||||
"edit-note-title": "Edit Note Title",
|
||||
"edit-branch-prefix": "Edit Branch Prefix",
|
||||
"clone-notes-to": "Clone Notes To",
|
||||
"move-notes-to": "Move Notes To",
|
||||
"copy-notes-to-clipboard": "Copy Notes to Clipboard",
|
||||
"paste-notes-from-clipboard": "Paste Notes from Clipboard",
|
||||
"cut-notes-to-clipboard": "Cut Notes to Clipboard",
|
||||
"select-all-notes-in-parent": "Select All Notes in Parent",
|
||||
"add-note-above-to-selection": "Add Note Above to Selection",
|
||||
"add-note-below-to-selection": "Add Note Below to Selection",
|
||||
"duplicate-subtree": "Duplicate Subtree",
|
||||
"open-new-tab": "Open New Tab",
|
||||
"close-active-tab": "Close Active Tab",
|
||||
"reopen-last-tab": "Reopen Last Tab",
|
||||
"activate-next-tab": "Activate Next Tab",
|
||||
"activate-previous-tab": "Activate Previous Tab",
|
||||
"open-new-window": "Open New Window",
|
||||
"toggle-system-tray-icon": "Toggle System Tray Icon",
|
||||
"toggle-zen-mode": "Toggle Zen Mode",
|
||||
"switch-to-first-tab": "Switch to First Tab",
|
||||
"switch-to-second-tab": "Switch to Second Tab",
|
||||
"switch-to-third-tab": "Switch to Third Tab",
|
||||
"switch-to-fourth-tab": "Switch to Fourth Tab",
|
||||
"switch-to-fifth-tab": "Switch to Fifth Tab",
|
||||
"switch-to-sixth-tab": "Switch to Sixth Tab",
|
||||
"switch-to-seventh-tab": "Switch to Seventh Tab",
|
||||
"switch-to-eighth-tab": "Switch to Eighth Tab",
|
||||
"switch-to-ninth-tab": "Switch to Ninth Tab",
|
||||
"switch-to-last-tab": "Switch to Last Tab",
|
||||
"show-note-source": "Show Note Source",
|
||||
"show-options": "Show Options",
|
||||
"show-revisions": "Show Revisions",
|
||||
"show-recent-changes": "Show Recent Changes",
|
||||
"show-sql-console": "Show SQL Console",
|
||||
"show-backend-log": "Show Backend Log",
|
||||
"show-help": "Show Help",
|
||||
"show-cheatsheet": "Show Cheatsheet",
|
||||
"add-link-to-text": "Add Link to Text",
|
||||
"follow-link-under-cursor": "Follow Link Under Cursor",
|
||||
"insert-date-and-time-to-text": "Insert Date and Time to Text",
|
||||
"paste-markdown-into-text": "Paste Markdown into Text",
|
||||
"cut-into-note": "Cut into Note",
|
||||
"add-include-note-to-text": "Add Include Note to Text",
|
||||
"edit-read-only-note": "Edit Read-Only Note",
|
||||
"add-new-label": "Add New Label",
|
||||
"add-new-relation": "Add New Relation",
|
||||
"toggle-ribbon-tab-classic-editor": "Toggle Ribbon Tab Classic Editor",
|
||||
"toggle-ribbon-tab-basic-properties": "Toggle Ribbon Tab Basic Properties",
|
||||
"toggle-ribbon-tab-book-properties": "Toggle Ribbon Tab Book Properties",
|
||||
"toggle-ribbon-tab-file-properties": "Toggle Ribbon Tab File Properties",
|
||||
"toggle-ribbon-tab-image-properties": "Toggle Ribbon Tab Image Properties",
|
||||
"toggle-ribbon-tab-owned-attributes": "Toggle Ribbon Tab Owned Attributes",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Toggle Ribbon Tab Inherited Attributes",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Toggle Ribbon Tab Promoted Attributes",
|
||||
"toggle-ribbon-tab-note-map": "Toggle Ribbon Tab Note Map",
|
||||
"toggle-ribbon-tab-note-info": "Toggle Ribbon Tab Note Info",
|
||||
"toggle-ribbon-tab-note-paths": "Toggle Ribbon Tab Note Paths",
|
||||
"toggle-ribbon-tab-similar-notes": "Toggle Ribbon Tab Similar Notes",
|
||||
"toggle-right-pane": "Toggle Right Pane",
|
||||
"print-active-note": "Print Active Note",
|
||||
"export-active-note-as-pdf": "Export Active Note as PDF",
|
||||
"open-note-externally": "Open Note Externally",
|
||||
"render-active-note": "Render Active Note",
|
||||
"run-active-note": "Run Active Note",
|
||||
"toggle-note-hoisting": "Toggle Note Hoisting",
|
||||
"unhoist-note": "Unhoist Note",
|
||||
"reload-frontend-app": "Reload Frontend App",
|
||||
"open-developer-tools": "Open Developer Tools",
|
||||
"find-in-text": "Find In Text",
|
||||
"toggle-left-pane": "Toggle Left Pane",
|
||||
"toggle-full-screen": "Toggle Full Screen",
|
||||
"zoom-out": "Zoom Out",
|
||||
"zoom-in": "Zoom In",
|
||||
"reset-zoom-level": "Reset Zoom Level",
|
||||
"copy-without-formatting": "Copy Without Formatting",
|
||||
"force-save-revision": "Force Save Revision"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"heading": "Trilium Login",
|
||||
"incorrect-totp": "TOTP is incorrect. Please try again.",
|
||||
"incorrect-password": "Password is incorrect. Please try again.",
|
||||
"password": "Password",
|
||||
"remember-me": "Remember me",
|
||||
"button": "Login",
|
||||
"sign_in_with_sso": "Sign in with {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Set Password",
|
||||
"heading": "Set password",
|
||||
"description": "Before you can start using Trilium from web, you need to set a password first. You will then use this password to login.",
|
||||
"password": "Password",
|
||||
"password-confirmation": "Password confirmation",
|
||||
"button": "Set password"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes setup",
|
||||
"new-document": "I'm a new user, and I want to create a new Trilium document for my notes",
|
||||
"sync-from-desktop": "I have a desktop instance already, and I want to set up sync with it",
|
||||
"sync-from-server": "I have a server instance already, and I want to set up sync with it",
|
||||
"next": "Next",
|
||||
"init-in-progress": "Document initialization in progress",
|
||||
"redirecting": "You will be shortly redirected to the application.",
|
||||
"title": "Setup"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sync from Desktop",
|
||||
"description": "This setup needs to be initiated from the desktop instance:",
|
||||
"step1": "Open your desktop instance of Trilium Notes.",
|
||||
"step2": "From the Trilium Menu, click Options.",
|
||||
"step3": "Click on Sync category.",
|
||||
"step4": "Change server instance address to: {{- host}} and click Save.",
|
||||
"step5": "Click \"Test sync\" button to verify connection is successful.",
|
||||
"step6": "Once you've completed these steps, click {{- link}}.",
|
||||
"step6-here": "here"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sync from Server",
|
||||
"instructions": "Please enter Trilium server address and credentials below. This will download the whole Trilium document from server and setup sync to it. Depending on the document size and your connection speed, this may take a while.",
|
||||
"server-host": "Trilium server address",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Proxy server (optional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Note:",
|
||||
"proxy-instruction": "If you leave proxy setting blank, system proxy will be used (applies to the desktop application only)",
|
||||
"password": "Password",
|
||||
"password-placeholder": "Password",
|
||||
"back": "Back",
|
||||
"finish-setup": "Finish setup"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sync in progress",
|
||||
"successful": "Sync has been correctly set up. It will take some time for the initial sync to finish. Once it's done, you'll be redirected to the login page.",
|
||||
"outstanding-items": "Outstanding sync items:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Not found",
|
||||
"heading": "Not found"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "parent:",
|
||||
"clipped-from": "This note was originally clipped from {{- url}}",
|
||||
"child-notes": "Child notes:",
|
||||
"no-content": "This note has no content."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Monday",
|
||||
"tuesday": "Tuesday",
|
||||
"wednesday": "Wednesday",
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
},
|
||||
"weekdayNumber": "Week {weekNumber}",
|
||||
"months": {
|
||||
"january": "January",
|
||||
"february": "February",
|
||||
"march": "March",
|
||||
"april": "April",
|
||||
"may": "May",
|
||||
"june": "June",
|
||||
"july": "July",
|
||||
"august": "August",
|
||||
"september": "September",
|
||||
"october": "October",
|
||||
"november": "November",
|
||||
"december": "December"
|
||||
},
|
||||
"quarterNumber": "Quarter {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Search:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Sync server host is not configured. Please configure sync first.",
|
||||
"successful": "Sync server handshake has been successful, sync has been started."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Hidden Notes",
|
||||
"search-history-title": "Search History",
|
||||
"note-map-title": "Note Map",
|
||||
"sql-console-history-title": "SQL Console History",
|
||||
"shared-notes-title": "Shared Notes",
|
||||
"bulk-action-title": "Bulk Action",
|
||||
"backend-log-title": "Backend Log",
|
||||
"user-hidden-title": "User Hidden",
|
||||
"launch-bar-templates-title": "Launch Bar Templates",
|
||||
"base-abstract-launcher-title": "Base Abstract Launcher",
|
||||
"command-launcher-title": "Command Launcher",
|
||||
"note-launcher-title": "Note Launcher",
|
||||
"script-launcher-title": "Script Launcher",
|
||||
"built-in-widget-title": "Built-in Widget",
|
||||
"spacer-title": "Spacer",
|
||||
"custom-widget-title": "Custom Widget",
|
||||
"launch-bar-title": "Launch Bar",
|
||||
"available-launchers-title": "Available Launchers",
|
||||
"go-to-previous-note-title": "Go to Previous Note",
|
||||
"go-to-next-note-title": "Go to Next Note",
|
||||
"new-note-title": "New Note",
|
||||
"search-notes-title": "Search Notes",
|
||||
"jump-to-note-title": "Jump to...",
|
||||
"calendar-title": "Calendar",
|
||||
"recent-changes-title": "Recent Changes",
|
||||
"bookmarks-title": "Bookmarks",
|
||||
"command-palette": "Open Command Palette",
|
||||
"zen-mode": "Zen Mode",
|
||||
"open-today-journal-note-title": "Open Today's Journal Note",
|
||||
"quick-search-title": "Quick Search",
|
||||
"protected-session-title": "Protected Session",
|
||||
"sync-status-title": "Sync Status",
|
||||
"settings-title": "Settings",
|
||||
"options-title": "Options",
|
||||
"appearance-title": "Appearance",
|
||||
"shortcuts-title": "Shortcuts",
|
||||
"text-notes": "Text Notes",
|
||||
"code-notes-title": "Code Notes",
|
||||
"images-title": "Images",
|
||||
"spellcheck-title": "Spellcheck",
|
||||
"password-title": "Password",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Backup",
|
||||
"sync-title": "Sync",
|
||||
"other": "Other",
|
||||
"advanced-title": "Advanced",
|
||||
"visible-launchers-title": "Visible Launchers",
|
||||
"user-guide": "User Guide",
|
||||
"localization": "Language & Region",
|
||||
"inbox-title": "Inbox",
|
||||
"tab-switcher-title": "Tab Switcher"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "New note",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "The backend log file '{{ fileName }}' does not exist (yet).",
|
||||
"reading-log-failed": "Reading the backend log file '{{ fileName }}' failed."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "This note type cannot be displayed."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF Document (*.pdf)",
|
||||
"unable-to-export-message": "The current note could not be exported as a PDF.",
|
||||
"unable-to-export-title": "Unable to export as PDF",
|
||||
"unable-to-save-message": "The selected file could not be written to. Try again or select another destination.",
|
||||
"unable-to-print": "Unable to print the note"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Quit Trilium",
|
||||
"recents": "Recent notes",
|
||||
"bookmarks": "Bookmarks",
|
||||
"today": "Open today's journal note",
|
||||
"new-note": "New note",
|
||||
"show-windows": "Show windows",
|
||||
"open_new_window": "Open new window"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "Direct migration from your current version is not supported. Please upgrade to the latest v0.60.4 first and only then to this version.",
|
||||
"error_message": "Error during migration to version {{version}}: {{stack}}",
|
||||
"wrong_db_version": "The version of the database ({{version}}) is newer than what the application expects ({{targetVersion}}), which means that it was created by a newer and incompatible version of Trilium. Upgrade to the latest version of Trilium to resolve this issue."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Error"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Site Theme",
|
||||
"search_placeholder": "Search...",
|
||||
"image_alt": "Article Image",
|
||||
"last-updated": "Last updated on {{- date}}",
|
||||
"subpages": "Subpages:",
|
||||
"on-this-page": "On This Page",
|
||||
"expand": "Expand"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Text Snippet",
|
||||
"description": "Description",
|
||||
"list-view": "List View",
|
||||
"grid-view": "Grid View",
|
||||
"calendar": "Calendar",
|
||||
"table": "Table",
|
||||
"geo-map": "Geo Map",
|
||||
"start-date": "Start Date",
|
||||
"end-date": "End Date",
|
||||
"start-time": "Start Time",
|
||||
"end-time": "End Time",
|
||||
"geolocation": "Geolocation",
|
||||
"built-in-templates": "Built-in templates",
|
||||
"board": "Kanban Board",
|
||||
"status": "Status",
|
||||
"board_note_first": "First note",
|
||||
"board_note_second": "Second note",
|
||||
"board_note_third": "Third note",
|
||||
"board_status_todo": "To Do",
|
||||
"board_status_progress": "In Progress",
|
||||
"board_status_done": "Done",
|
||||
"presentation": "Presentation",
|
||||
"presentation_slide": "Presentation slide",
|
||||
"presentation_slide_first": "First slide",
|
||||
"presentation_slide_second": "Second slide",
|
||||
"background": "Background"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "DB not initialized, please follow on-screen instructions.",
|
||||
"db_not_initialized_server": "DB not initialized, please visit setup page - http://[your-server-host]:{{port}} to see instructions on how to initialize Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "There's already an instance running, focusing that instance instead."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,441 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"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": "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",
|
||||
"collapse-tree": "Colapsa el árbol de notas completo",
|
||||
"collapse-subtree": "Colapsa el subárbol de la nota actual",
|
||||
"sort-child-notes": "Ordenar subnotas",
|
||||
"creating-and-moving-notes": "Creando y moviendo notas",
|
||||
"create-note-after": "Crear nota después de la nota activa",
|
||||
"create-note-into": "Crear nota como subnota de la nota activa",
|
||||
"create-note-into-inbox": "Crear una nota en la bandeja de entrada (si está definida) o nota del día",
|
||||
"delete-note": "Eliminar nota",
|
||||
"move-note-up": "Subir nota",
|
||||
"move-note-down": "Bajar nota",
|
||||
"move-note-up-in-hierarchy": "Subir nota en la jerarquía",
|
||||
"move-note-down-in-hierarchy": "Bajar nota en la jerarquía",
|
||||
"edit-note-title": "Saltar del árbol al detalle de la nota y editar el título",
|
||||
"edit-branch-prefix": "Mostrar cuadro de diálogo Editar prefijo de rama",
|
||||
"note-clipboard": "Portapapeles de notas",
|
||||
"copy-notes-to-clipboard": "Copiar las notas seleccionadas al portapapeles",
|
||||
"paste-notes-from-clipboard": "Pegar las notas del portapapeles en una nota activa",
|
||||
"cut-notes-to-clipboard": "Cortar las notas seleccionadas al portapapeles",
|
||||
"select-all-notes-in-parent": "Seleccionar todas las notas del nivel de la nota actual",
|
||||
"add-note-above-to-the-selection": "Agregar nota arriba de la selección",
|
||||
"add-note-below-to-selection": "Agregar nota arriba de la selección",
|
||||
"duplicate-subtree": "Duplicar subárbol",
|
||||
"tabs-and-windows": "Pestañas y ventanas",
|
||||
"open-new-tab": "Abre una nueva pestaña",
|
||||
"close-active-tab": "Cierra la pestaña activa",
|
||||
"reopen-last-tab": "Vuelve a abrir la última pestaña cerrada",
|
||||
"activate-next-tab": "Activa la pestaña de la derecha",
|
||||
"activate-previous-tab": "Activa la pestaña de la izquierda",
|
||||
"open-new-window": "Abrir nueva ventana vacía",
|
||||
"toggle-tray": "Muestra/Oculta la aplicación en la bandeja del sistema",
|
||||
"first-tab": "Activa la primera pestaña de la lista",
|
||||
"second-tab": "Activa la segunda pestaña de la lista",
|
||||
"third-tab": "Activa la tercera pestaña de la lista",
|
||||
"fourth-tab": "Activa la cuarta pestaña de la lista",
|
||||
"fifth-tab": "Activa la quinta pestaña de la lista",
|
||||
"sixth-tab": "Activa la sexta pestaña de la lista",
|
||||
"seventh-tab": "Activa la séptima pestaña de la lista",
|
||||
"eight-tab": "Activa la octava pestaña de la lista",
|
||||
"ninth-tab": "Activa la novena pestaña de la lista",
|
||||
"last-tab": "Activa la última pestaña de la lista",
|
||||
"dialogs": "Diálogos",
|
||||
"show-note-source": "Muestra el cuadro de diálogo Fuente de nota",
|
||||
"show-options": "Muestra el cuadro de diálogo Opciones",
|
||||
"show-revisions": "Muestra el cuadro de diálogo Revisiones de notas",
|
||||
"show-recent-changes": "Muestra el cuadro de diálogo Cambios recientes",
|
||||
"show-sql-console": "Muestra el cuadro de diálogo Consola SQL",
|
||||
"show-backend-log": "Muestra el cuadro de diálogo Registro de backend",
|
||||
"show-help": "Muestra ayuda/hoja de referencia integrada",
|
||||
"show-cheatsheet": "Muestra un modal con operaciones de teclado comunes",
|
||||
"text-note-operations": "Operaciones de notas de texto",
|
||||
"add-link-to-text": "Abrir cuadro de diálogo para agregar un enlace al texto",
|
||||
"follow-link-under-cursor": "Seguir el enlace dentro del cual se coloca el cursor",
|
||||
"insert-date-and-time-to-text": "Insertar fecha y hora actuales en el texto",
|
||||
"paste-markdown-into-text": "Pega Markdown del portapapeles en la nota de texto",
|
||||
"cut-into-note": "Corta la selección de la nota actual y crea una subnota con el texto seleccionado",
|
||||
"add-include-note-to-text": "Abre el cuadro de diálogo para incluir una nota",
|
||||
"edit-readonly-note": "Editar una nota de sólo lectura",
|
||||
"attributes-labels-and-relations": "Atributos (etiquetas y relaciones)",
|
||||
"add-new-label": "Crear nueva etiqueta",
|
||||
"create-new-relation": "Crear nueva relación",
|
||||
"ribbon-tabs": "Pestañas de cinta",
|
||||
"toggle-basic-properties": "Alternar propiedades básicas",
|
||||
"toggle-file-properties": "Alternar propiedades de archivo",
|
||||
"toggle-image-properties": "Alternar propiedades de imagen",
|
||||
"toggle-owned-attributes": "Alternar atributos de propiedad",
|
||||
"toggle-inherited-attributes": "Alternar atributos heredados",
|
||||
"toggle-promoted-attributes": "Alternar atributos destacados",
|
||||
"toggle-link-map": "Alternar mapa de enlaces",
|
||||
"toggle-note-info": "Alternar información de nota",
|
||||
"toggle-note-paths": "Alternar rutas de notas",
|
||||
"toggle-similar-notes": "Alternar notas similares",
|
||||
"other": "Otro",
|
||||
"toggle-right-pane": "Alternar la visualización del panel derecho, que incluye la tabla de contenidos y aspectos destacados",
|
||||
"print-active-note": "Imprimir nota activa",
|
||||
"open-note-externally": "Abrir nota como un archivo con la aplicación predeterminada",
|
||||
"render-active-note": "Renderizar (volver a renderizar) nota activa",
|
||||
"run-active-note": "Ejecutar nota de código JavaScript activa (frontend/backend)",
|
||||
"toggle-note-hoisting": "Alterna la elevación de la nota activa",
|
||||
"unhoist": "Bajar desde cualquier lugar",
|
||||
"reload-frontend-app": "Recargar frontend de la aplicación",
|
||||
"open-dev-tools": "Abrir herramientas de desarrollo",
|
||||
"find-in-text": "Alternar panel de búsqueda",
|
||||
"toggle-left-note-tree-panel": "Alternar panel izquierdo (árbol de notas)",
|
||||
"toggle-full-screen": "Alternar pantalla completa",
|
||||
"zoom-out": "Alejar",
|
||||
"zoom-in": "Acercar",
|
||||
"note-navigation": "Navegación de notas",
|
||||
"reset-zoom-level": "Restablecer nivel de zoom",
|
||||
"copy-without-formatting": "Copiar el texto seleccionado sin formatear",
|
||||
"force-save-revision": "Forzar la creación/guardado de una nueva revisión de nota de la nota activa",
|
||||
"toggle-book-properties": "Alternar propiedades del libro",
|
||||
"toggle-classic-editor-toolbar": "Alternar la pestaña de formato por el editor con barra de herramientas fija",
|
||||
"export-as-pdf": "Exporta la nota actual como un PDF",
|
||||
"toggle-zen-mode": "Habilita/Deshabilita el modo Zen (IU mínima para edición sin distracciones)",
|
||||
"open-command-palette": "Abrir paleta de comandos",
|
||||
"clone-notes-to": "Clonar notas seleccionadas",
|
||||
"move-notes-to": "Mover notas seleccionadas"
|
||||
},
|
||||
"login": {
|
||||
"title": "Iniciar sesión",
|
||||
"heading": "Iniciar sesión en Trilium",
|
||||
"incorrect-totp": "El TOTP es incorrecto. Por favor, intente de nuevo.",
|
||||
"incorrect-password": "La contraseña es incorrecta. Por favor inténtalo de nuevo.",
|
||||
"password": "Contraseña",
|
||||
"remember-me": "Recordarme",
|
||||
"button": "Iniciar sesión",
|
||||
"sign_in_with_sso": "Iniciar sesión con {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Establecer contraseña",
|
||||
"heading": "Establecer contraseña",
|
||||
"description": "Antes de poder comenzar a usar Trilium desde la web, primero debe establecer una contraseña. Luego utilizará esta contraseña para iniciar sesión.",
|
||||
"password": "Contraseña",
|
||||
"password-confirmation": "Confirmación de contraseña",
|
||||
"button": "Establecer contraseña"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Configuración de Trilium Notes",
|
||||
"new-document": "Soy un usuario nuevo y quiero crear un nuevo documento de Trilium para mis notas",
|
||||
"sync-from-desktop": "Ya tengo una instancia de escritorio y quiero configurar la sincronización con ella",
|
||||
"sync-from-server": "Ya tengo una instancia de servidor y quiero configurar la sincronización con ella",
|
||||
"next": "Siguiente",
|
||||
"init-in-progress": "Inicialización del documento en curso",
|
||||
"redirecting": "En breve será redirigido a la aplicación.",
|
||||
"title": "Configuración"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sincronizar desde el escritorio",
|
||||
"description": "Esta configuración debe iniciarse desde la instancia de escritorio:",
|
||||
"step1": "Abra su instancia de escritorio de Trilium Notes.",
|
||||
"step2": "En el menú Trilium, dé clic en Opciones.",
|
||||
"step3": "Dé clic en la categoría Sincronizar.",
|
||||
"step4": "Cambie la dirección de la instancia del servidor a: {{- host}} y dé clic en Guardar.",
|
||||
"step5": "Dé clic en el botón \"Probar sincronización\" para verificar que la conexión fue exitosa.",
|
||||
"step6": "Una vez que haya completado estos pasos, dé clic en {{- link}}.",
|
||||
"step6-here": "aquí"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sincronización desde el servidor",
|
||||
"instructions": "Por favor, ingrese la dirección y las credenciales del servidor Trilium a continuación. Esto descargará todo el documento de Trilium desde el servidor y configurará la sincronización. Dependiendo del tamaño del documento y de la velocidad de su conexión, esto puede tardar un poco.",
|
||||
"server-host": "Dirección del servidor Trilium",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Servidor proxy (opcional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Nota:",
|
||||
"proxy-instruction": "Si deja la configuración de proxy en blanco, se utilizará el proxy del sistema (aplica únicamente a la aplicación de escritorio)",
|
||||
"password": "Contraseña",
|
||||
"password-placeholder": "Contraseña",
|
||||
"back": "Atrás",
|
||||
"finish-setup": "Finalizar la configuración"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sincronización en progreso",
|
||||
"successful": "La sincronización se ha configurado correctamente. La sincronización inicial tardará algún tiempo en finalizar. Una vez hecho esto, será redirigido a la página de inicio de sesión.",
|
||||
"outstanding-items": "Elementos de sincronización destacados:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "No encontrado",
|
||||
"heading": "No encontrado"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "padre:",
|
||||
"clipped-from": "Esta nota fue recortada originalmente de {{- url}}",
|
||||
"child-notes": "Subnotas:",
|
||||
"no-content": "Esta nota no tiene contenido."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Lunes",
|
||||
"tuesday": "Martes",
|
||||
"wednesday": "Miércoles",
|
||||
"thursday": "Jueves",
|
||||
"friday": "Viernes",
|
||||
"saturday": "Sábado",
|
||||
"sunday": "Domingo"
|
||||
},
|
||||
"weekdayNumber": "Semana {weekNumber}",
|
||||
"months": {
|
||||
"january": "Enero",
|
||||
"february": "Febrero",
|
||||
"march": "Marzo",
|
||||
"april": "Abril",
|
||||
"may": "Mayo",
|
||||
"june": "Junio",
|
||||
"july": "Julio",
|
||||
"august": "Agosto",
|
||||
"september": "Septiembre",
|
||||
"october": "Octubre",
|
||||
"november": "Noviembre",
|
||||
"december": "Diciembre"
|
||||
},
|
||||
"quarterNumber": "Cuarto {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Buscar:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "El servidor de sincronización no está configurado. Por favor configure primero la sincronización.",
|
||||
"successful": "El protocolo de enlace del servidor de sincronización ha sido exitoso, la sincronización ha comenzado."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Notas ocultas",
|
||||
"search-history-title": "Buscar historial",
|
||||
"note-map-title": "Mapa de nota",
|
||||
"sql-console-history-title": "Historial de consola SQL",
|
||||
"shared-notes-title": "Notas compartidas",
|
||||
"bulk-action-title": "Acción en lote",
|
||||
"backend-log-title": "Registro de Backend",
|
||||
"user-hidden-title": "Usuario oculto",
|
||||
"launch-bar-templates-title": "Plantillas de barra de lanzamiento",
|
||||
"base-abstract-launcher-title": "Lanzador abstracto base",
|
||||
"command-launcher-title": "Lanzador de comando",
|
||||
"note-launcher-title": "Lanzador de nota",
|
||||
"script-launcher-title": "Lanzador de script",
|
||||
"built-in-widget-title": "Widget integrado",
|
||||
"spacer-title": "Espaciador",
|
||||
"custom-widget-title": "Widget personalizado",
|
||||
"launch-bar-title": "Barra de lanzamiento",
|
||||
"available-launchers-title": "Lanzadores disponibles",
|
||||
"go-to-previous-note-title": "Ir a nota previa",
|
||||
"go-to-next-note-title": "Ir a nota siguiente",
|
||||
"new-note-title": "Nueva nota",
|
||||
"search-notes-title": "Buscar notas",
|
||||
"calendar-title": "Calendario",
|
||||
"recent-changes-title": "Cambios recientes",
|
||||
"bookmarks-title": "Marcadores",
|
||||
"open-today-journal-note-title": "Abrir nota del diario de hoy",
|
||||
"quick-search-title": "Búsqueda rápida",
|
||||
"protected-session-title": "Sesión protegida",
|
||||
"sync-status-title": "Sincronizar estado",
|
||||
"settings-title": "Ajustes",
|
||||
"llm-chat-title": "Chat con notas",
|
||||
"options-title": "Opciones",
|
||||
"appearance-title": "Apariencia",
|
||||
"shortcuts-title": "Atajos",
|
||||
"text-notes": "Notas de texto",
|
||||
"code-notes-title": "Notas de código",
|
||||
"images-title": "Imágenes",
|
||||
"spellcheck-title": "Corrección ortográfica",
|
||||
"password-title": "Contraseña",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Respaldo",
|
||||
"sync-title": "Sincronizar",
|
||||
"ai-llm-title": "IA/LLM",
|
||||
"other": "Otros",
|
||||
"advanced-title": "Avanzado",
|
||||
"visible-launchers-title": "Lanzadores visibles",
|
||||
"user-guide": "Guía de Usuario",
|
||||
"localization": "Idioma y Región",
|
||||
"inbox-title": "Bandeja",
|
||||
"jump-to-note-title": "Saltar a...",
|
||||
"command-palette": "Abrir paleta de comandos",
|
||||
"zen-mode": "Modo Zen",
|
||||
"tab-switcher-title": "Conmutador de pestañas"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nueva nota",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle}} {{duplicateNoteSuffix}}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "El archivo de registro del backend '{{fileName}}' no existe (aún).",
|
||||
"reading-log-failed": "Leer el archivo de registro del backend '{{fileName}}' falló."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Este tipo de nota no puede ser mostrado."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Documento PDF (*.pdf)",
|
||||
"unable-to-export-message": "La nota actual no pudo ser exportada como PDF.",
|
||||
"unable-to-export-title": "No es posible exportar como PDF",
|
||||
"unable-to-save-message": "No se pudo escribir en el archivo seleccionado. Intente de nuevo o seleccione otro destino.",
|
||||
"unable-to-print": "No se puede imprimir la nota"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Cerrar Trilium",
|
||||
"recents": "Notas recientes",
|
||||
"bookmarks": "Marcadores",
|
||||
"today": "Abrir nota del diario de hoy",
|
||||
"new-note": "Nueva nota",
|
||||
"show-windows": "Mostrar ventanas",
|
||||
"open_new_window": "Abrir nueva ventana"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "La migración directa desde tu versión actual no está soportada. Por favor actualice a v0.60.4 primero y solo después a esta versión.",
|
||||
"error_message": "Error durante la migración a la versión {{version}}: {{stack}}",
|
||||
"wrong_db_version": "La versión de la base de datos {{version}} es más nueva de lo que la aplicación espera {{targetVersion}}, lo que significa que fue creada por una versión más reciente e incompatible de Trilium. Actualice a la última versión de Trilium para resolver este problema."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Error"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Tema de sitio",
|
||||
"search_placeholder": "Búsqueda...",
|
||||
"image_alt": "Imagen de artículo",
|
||||
"last-updated": "Última actualización en {{-date}}",
|
||||
"subpages": "Subpáginas:",
|
||||
"on-this-page": "En esta página",
|
||||
"expand": "Expandir"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"jump-to-note": "Saltar a...",
|
||||
"command-palette": "Paleta de comandos",
|
||||
"scroll-to-active-note": "Desplazarse a la nota activa",
|
||||
"quick-search": "Búsqueda rápida",
|
||||
"search-in-subtree": "Buscar en subárbol",
|
||||
"expand-subtree": "Expandir subárbol",
|
||||
"collapse-tree": "Colapsar árbol",
|
||||
"collapse-subtree": "Colapsar subárbol",
|
||||
"sort-child-notes": "Ordenar nodos hijos",
|
||||
"create-note-after": "Crear nota tras",
|
||||
"create-note-into": "Crear nota en",
|
||||
"create-note-into-inbox": "Crear nota en bandeja de entrada",
|
||||
"delete-notes": "Eliminar notas",
|
||||
"move-note-up": "Subir nota",
|
||||
"move-note-down": "Bajar nota",
|
||||
"move-note-up-in-hierarchy": "Subir nota en la jerarquía",
|
||||
"move-note-down-in-hierarchy": "Bajar nota en la jerarquía",
|
||||
"edit-note-title": "Editar título de nota",
|
||||
"edit-branch-prefix": "Editar prefijo de rama",
|
||||
"clone-notes-to": "Clonar notas a",
|
||||
"move-notes-to": "Mover notas a",
|
||||
"copy-notes-to-clipboard": "Copiar notas al portapapeles",
|
||||
"paste-notes-from-clipboard": "Pegar notas del portapapeles",
|
||||
"add-note-above-to-selection": "Añadir nota superior a la selección",
|
||||
"add-note-below-to-selection": "Añadir nota inferior a la selección",
|
||||
"duplicate-subtree": "Duplicar subárbol",
|
||||
"open-new-tab": "Abrir nueva pestaña",
|
||||
"close-active-tab": "Cerrar pestaña activa",
|
||||
"reopen-last-tab": "Reabrir última pestaña",
|
||||
"activate-next-tab": "Activar siguiente pestaña",
|
||||
"activate-previous-tab": "Activar pestaña anterior",
|
||||
"open-new-window": "Abrir nueva ventana",
|
||||
"show-options": "Mostrar opciones",
|
||||
"show-revisions": "Mostrar revisiones",
|
||||
"show-recent-changes": "Mostrar cambios recientes",
|
||||
"show-sql-console": "Mostrar consola SQL",
|
||||
"switch-to-first-tab": "Ir a la primera pestaña",
|
||||
"switch-to-second-tab": "Ir a la segunda pestaña",
|
||||
"switch-to-third-tab": "Ir a la tercera pestaña",
|
||||
"switch-to-fourth-tab": "Ir a la cuarta pestaña",
|
||||
"switch-to-fifth-tab": "Ir a la quinta pestaña",
|
||||
"switch-to-sixth-tab": "Ir a la sexta pestaña",
|
||||
"switch-to-seventh-tab": "Ir a la séptima pestaña",
|
||||
"switch-to-eighth-tab": "Ir a la octava pestaña",
|
||||
"switch-to-ninth-tab": "Ir a la novena pestaña",
|
||||
"switch-to-last-tab": "Ir a la última pestaña",
|
||||
"show-note-source": "Mostrar nota fuente",
|
||||
"show-help": "Mostrar ayuda",
|
||||
"add-new-label": "Añadir nueva etiqueta",
|
||||
"add-new-relation": "Añadir nueva relación",
|
||||
"print-active-note": "Imprimir nota activa",
|
||||
"export-active-note-as-pdf": "Exportar nota activa como PDF",
|
||||
"open-note-externally": "Abrir nota externamente",
|
||||
"find-in-text": "Encontrar en texto",
|
||||
"copy-without-formatting": "Copiar sin formato",
|
||||
"reset-zoom-level": "Restablecer el nivel de zoom",
|
||||
"open-developer-tools": "Abrir herramientas de desarrollo",
|
||||
"insert-date-and-time-to-text": "Insertar fecha y hora al texto",
|
||||
"edit-read-only-note": "Editar nota de solo lectura",
|
||||
"toggle-system-tray-icon": "Mostrar/ocultar icono en la bandeja del sistema",
|
||||
"toggle-zen-mode": "Activar/desactivar modo Zen",
|
||||
"add-link-to-text": "Añadir enlace al texto",
|
||||
"zoom-in": "Acercar",
|
||||
"zoom-out": "Alejar",
|
||||
"toggle-full-screen": "Activar/desactivar pantalla completa",
|
||||
"toggle-left-pane": "Abrir/cerrar panel izquierdo",
|
||||
"toggle-right-pane": "Mostrar/ocultar panel derecho",
|
||||
"unhoist-note": "Desanclar nota",
|
||||
"toggle-note-hoisting": "Activar/desactivar anclaje de nota",
|
||||
"show-cheatsheet": "Mostrar hoja de referencia",
|
||||
"follow-link-under-cursor": "Seguir enlace bajo cursor",
|
||||
"reload-frontend-app": "Recargar aplicación del cliente",
|
||||
"run-active-note": "Ejecutar nota activa",
|
||||
"render-active-note": "Generar nota activa",
|
||||
"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",
|
||||
"paste-markdown-into-text": "Pegar Markdown en el texto",
|
||||
"cut-into-note": "Cortar en la nota",
|
||||
"add-include-note-to-text": "Agregar nota incluida al texto",
|
||||
"force-save-revision": "Forzar guardado de revisión",
|
||||
"toggle-ribbon-tab-classic-editor": "Mostrar pestaña de la cinta de opciones: Editor clásico",
|
||||
"toggle-ribbon-tab-basic-properties": "Mostrar pestaña de la cinta de opciones: Propiedades básicas",
|
||||
"toggle-ribbon-tab-book-properties": "Mostrar pestaña de la cinta de opciones: Propiedades de libro",
|
||||
"toggle-ribbon-tab-file-properties": "Mostrar pestaña de la cinta de opciones: Propiedades de archivo",
|
||||
"toggle-ribbon-tab-image-properties": "Mostrar pestaña de la cinta de opciones: Propiedades de imagen",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Mostrar pestaña de la cinta de opciones: Atributos heredados",
|
||||
"toggle-ribbon-tab-note-map": "Mostrar pestaña de la cinta de opciones: Mapa de notas",
|
||||
"toggle-ribbon-tab-note-info": "Mostrar pestaña de la cinta de opciones: Información de nota",
|
||||
"toggle-ribbon-tab-note-paths": "Mostrar pestaña de la cinta de opciones: Rutas de nota",
|
||||
"toggle-ribbon-tab-similar-notes": "Mostrar pestaña de la cinta de opciones: Notas similares",
|
||||
"toggle-ribbon-tab-owned-attributes": "Mostrar pestaña de la cinta de opciones: Propiedades asignadas",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Mostrar pestaña de la cinta de opciones: Atributos destacados"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"board_note_first": "Primera nota",
|
||||
"board_note_second": "Segunda nota",
|
||||
"board_note_third": "Tercera nota",
|
||||
"board_status_progress": "En progreso",
|
||||
"calendar": "Calendario",
|
||||
"description": "Descripción",
|
||||
"list-view": "Vista de lista",
|
||||
"grid-view": "Vista de cuadrícula",
|
||||
"status": "Estado",
|
||||
"table": "Tabla",
|
||||
"text-snippet": "Fragmento de texto",
|
||||
"geo-map": "Mapa Geo",
|
||||
"start-date": "Fecha de inicio",
|
||||
"end-date": "Fecha de finalización",
|
||||
"start-time": "Hora de inicio",
|
||||
"end-time": "Hora de finalización",
|
||||
"geolocation": "Geolocalización",
|
||||
"built-in-templates": "Plantillas predefinidas",
|
||||
"board_status_todo": "Por hacer",
|
||||
"board_status_done": "Hecho",
|
||||
"board": "Tablero Kanban",
|
||||
"presentation": "Presentación",
|
||||
"presentation_slide": "Slide de presentación",
|
||||
"presentation_slide_first": "Primer slide",
|
||||
"presentation_slide_second": "Segundo slide",
|
||||
"background": "Fondo"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Base de datos no inicializada, por favor, siga las instrucciones en pantalla.",
|
||||
"db_not_initialized_server": "Base de datos no inicializada, por favor, visite la página de configuración - http://[your-server-host]:{{port}} para ver instrucciones sobre cómo inicializar Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Ya hay una instancia en ejecución, enfocando esa instancia en su lugar."
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"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": "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",
|
||||
"collapse-tree": "Colapsa el árbol de notas completo",
|
||||
"collapse-subtree": "Colapsa el subárbol de la nota actual",
|
||||
"sort-child-notes": "Ordenar subnotas",
|
||||
"creating-and-moving-notes": "Creando y moviendo notas",
|
||||
"create-note-after": "Crear nota después de la nota activa",
|
||||
"create-note-into": "Crear nota como subnota de la nota activa",
|
||||
"create-note-into-inbox": "Crear una nota en la bandeja de entrada (si está definida) o nota del día",
|
||||
"delete-note": "Eliminar nota",
|
||||
"move-note-up": "Subir nota",
|
||||
"move-note-down": "Bajar nota",
|
||||
"move-note-up-in-hierarchy": "Subir nota en la jerarquía",
|
||||
"move-note-down-in-hierarchy": "Bajar nota en la jerarquía",
|
||||
"edit-note-title": "Saltar del árbol al detalle de la nota y editar el título",
|
||||
"edit-branch-prefix": "Mostrar cuadro de diálogo Editar prefijo de rama",
|
||||
"note-clipboard": "Portapapeles de notas",
|
||||
"copy-notes-to-clipboard": "Copiar las notas seleccionadas al portapapeles",
|
||||
"paste-notes-from-clipboard": "Pegar las notas del portapapeles en una nota activa",
|
||||
"cut-notes-to-clipboard": "Cortar las notas seleccionadas al portapapeles",
|
||||
"select-all-notes-in-parent": "Seleccionar todas las notas del nivel de la nota actual",
|
||||
"add-note-above-to-the-selection": "Agregar nota arriba de la selección",
|
||||
"add-note-below-to-selection": "Agregar nota arriba de la selección",
|
||||
"duplicate-subtree": "Duplicar subárbol",
|
||||
"tabs-and-windows": "Pestañas y ventanas",
|
||||
"open-new-tab": "Abre una nueva pestaña",
|
||||
"close-active-tab": "Cierra la pestaña activa",
|
||||
"reopen-last-tab": "Vuelve a abrir la última pestaña cerrada",
|
||||
"activate-next-tab": "Activa la pestaña de la derecha",
|
||||
"activate-previous-tab": "Activa la pestaña de la izquierda",
|
||||
"open-new-window": "Abrir nueva ventana vacía",
|
||||
"toggle-tray": "Muestra/Oculta la aplicación en la bandeja del sistema",
|
||||
"first-tab": "Activa la primera pestaña de la lista",
|
||||
"second-tab": "Activa la segunda pestaña de la lista",
|
||||
"third-tab": "Activa la tercera pestaña de la lista",
|
||||
"fourth-tab": "Activa la cuarta pestaña de la lista",
|
||||
"fifth-tab": "Activa la quinta pestaña de la lista",
|
||||
"sixth-tab": "Activa la sexta pestaña de la lista",
|
||||
"seventh-tab": "Activa la séptima pestaña de la lista",
|
||||
"eight-tab": "Activa la octava pestaña de la lista",
|
||||
"ninth-tab": "Activa la novena pestaña de la lista",
|
||||
"last-tab": "Activa la última pestaña de la lista",
|
||||
"dialogs": "Diálogos",
|
||||
"show-note-source": "Muestra el cuadro de diálogo Fuente de nota",
|
||||
"show-options": "Muestra el cuadro de diálogo Opciones",
|
||||
"show-revisions": "Muestra el cuadro de diálogo Revisiones de notas",
|
||||
"show-recent-changes": "Muestra el cuadro de diálogo Cambios recientes",
|
||||
"show-sql-console": "Muestra el cuadro de diálogo Consola SQL",
|
||||
"show-backend-log": "Muestra el cuadro de diálogo Registro de backend",
|
||||
"show-help": "Muestra ayuda/hoja de referencia integrada",
|
||||
"show-cheatsheet": "Muestra un modal con operaciones de teclado comunes",
|
||||
"text-note-operations": "Operaciones de notas de texto",
|
||||
"add-link-to-text": "Abrir cuadro de diálogo para agregar un enlace al texto",
|
||||
"follow-link-under-cursor": "Seguir el enlace dentro del cual se coloca el cursor",
|
||||
"insert-date-and-time-to-text": "Insertar fecha y hora actuales en el texto",
|
||||
"paste-markdown-into-text": "Pega Markdown del portapapeles en la nota de texto",
|
||||
"cut-into-note": "Corta la selección de la nota actual y crea una subnota con el texto seleccionado",
|
||||
"add-include-note-to-text": "Abre el cuadro de diálogo para incluir una nota",
|
||||
"edit-readonly-note": "Editar una nota de sólo lectura",
|
||||
"attributes-labels-and-relations": "Atributos (etiquetas y relaciones)",
|
||||
"add-new-label": "Crear nueva etiqueta",
|
||||
"create-new-relation": "Crear nueva relación",
|
||||
"ribbon-tabs": "Pestañas de cinta",
|
||||
"toggle-basic-properties": "Alternar propiedades básicas",
|
||||
"toggle-file-properties": "Alternar propiedades de archivo",
|
||||
"toggle-image-properties": "Alternar propiedades de imagen",
|
||||
"toggle-owned-attributes": "Alternar atributos de propiedad",
|
||||
"toggle-inherited-attributes": "Alternar atributos heredados",
|
||||
"toggle-promoted-attributes": "Alternar atributos destacados",
|
||||
"toggle-link-map": "Alternar mapa de enlaces",
|
||||
"toggle-note-info": "Alternar información de nota",
|
||||
"toggle-note-paths": "Alternar rutas de notas",
|
||||
"toggle-similar-notes": "Alternar notas similares",
|
||||
"other": "Otro",
|
||||
"toggle-right-pane": "Alternar la visualización del panel derecho, que incluye la tabla de contenidos y aspectos destacados",
|
||||
"print-active-note": "Imprimir nota activa",
|
||||
"open-note-externally": "Abrir nota como un archivo con la aplicación predeterminada",
|
||||
"render-active-note": "Renderizar (volver a renderizar) nota activa",
|
||||
"run-active-note": "Ejecutar nota de código JavaScript activa (frontend/backend)",
|
||||
"toggle-note-hoisting": "Alterna la elevación de la nota activa",
|
||||
"unhoist": "Bajar desde cualquier lugar",
|
||||
"reload-frontend-app": "Recargar frontend de la aplicación",
|
||||
"open-dev-tools": "Abrir herramientas de desarrollo",
|
||||
"find-in-text": "Alternar panel de búsqueda",
|
||||
"toggle-left-note-tree-panel": "Alternar panel izquierdo (árbol de notas)",
|
||||
"toggle-full-screen": "Alternar pantalla completa",
|
||||
"zoom-out": "Alejar",
|
||||
"zoom-in": "Acercar",
|
||||
"note-navigation": "Navegación de notas",
|
||||
"reset-zoom-level": "Restablecer nivel de zoom",
|
||||
"copy-without-formatting": "Copiar el texto seleccionado sin formatear",
|
||||
"force-save-revision": "Forzar la creación/guardado de una nueva revisión de nota de la nota activa",
|
||||
"toggle-book-properties": "Alternar propiedades del libro",
|
||||
"toggle-classic-editor-toolbar": "Alternar la pestaña de formato por el editor con barra de herramientas fija",
|
||||
"export-as-pdf": "Exporta la nota actual como un PDF",
|
||||
"toggle-zen-mode": "Habilita/Deshabilita el modo Zen (IU mínima para edición sin distracciones)",
|
||||
"open-command-palette": "Abrir paleta de comandos",
|
||||
"clone-notes-to": "Clonar notas seleccionadas",
|
||||
"move-notes-to": "Mover notas seleccionadas"
|
||||
},
|
||||
"login": {
|
||||
"title": "Iniciar sesión",
|
||||
"heading": "Iniciar sesión en Trilium",
|
||||
"incorrect-totp": "El TOTP es incorrecto. Por favor, intente de nuevo.",
|
||||
"incorrect-password": "La contraseña es incorrecta. Por favor inténtalo de nuevo.",
|
||||
"password": "Contraseña",
|
||||
"remember-me": "Recordarme",
|
||||
"button": "Iniciar sesión",
|
||||
"sign_in_with_sso": "Iniciar sesión con {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Establecer contraseña",
|
||||
"heading": "Establecer contraseña",
|
||||
"description": "Antes de poder comenzar a usar Trilium desde la web, primero debe establecer una contraseña. Luego utilizará esta contraseña para iniciar sesión.",
|
||||
"password": "Contraseña",
|
||||
"password-confirmation": "Confirmación de contraseña",
|
||||
"button": "Establecer contraseña"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Configuración de Trilium Notes",
|
||||
"new-document": "Soy un usuario nuevo y quiero crear un nuevo documento de Trilium para mis notas",
|
||||
"sync-from-desktop": "Ya tengo una instancia de escritorio y quiero configurar la sincronización con ella",
|
||||
"sync-from-server": "Ya tengo una instancia de servidor y quiero configurar la sincronización con ella",
|
||||
"next": "Siguiente",
|
||||
"init-in-progress": "Inicialización del documento en curso",
|
||||
"redirecting": "En breve será redirigido a la aplicación.",
|
||||
"title": "Configuración"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sincronizar desde el escritorio",
|
||||
"description": "Esta configuración debe iniciarse desde la instancia de escritorio:",
|
||||
"step1": "Abra su instancia de escritorio de Trilium Notes.",
|
||||
"step2": "En el menú Trilium, dé clic en Opciones.",
|
||||
"step3": "Dé clic en la categoría Sincronizar.",
|
||||
"step4": "Cambie la dirección de la instancia del servidor a: {{- host}} y dé clic en Guardar.",
|
||||
"step5": "Dé clic en el botón \"Probar sincronización\" para verificar que la conexión fue exitosa.",
|
||||
"step6": "Una vez que haya completado estos pasos, dé clic en {{- link}}.",
|
||||
"step6-here": "aquí"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sincronización desde el servidor",
|
||||
"instructions": "Por favor, ingrese la dirección y las credenciales del servidor Trilium a continuación. Esto descargará todo el documento de Trilium desde el servidor y configurará la sincronización. Dependiendo del tamaño del documento y de la velocidad de su conexión, esto puede tardar un poco.",
|
||||
"server-host": "Dirección del servidor Trilium",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Servidor proxy (opcional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Nota:",
|
||||
"proxy-instruction": "Si deja la configuración de proxy en blanco, se utilizará el proxy del sistema (aplica únicamente a la aplicación de escritorio)",
|
||||
"password": "Contraseña",
|
||||
"password-placeholder": "Contraseña",
|
||||
"back": "Atrás",
|
||||
"finish-setup": "Finalizar la configuración"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sincronización en progreso",
|
||||
"successful": "La sincronización se ha configurado correctamente. La sincronización inicial tardará algún tiempo en finalizar. Una vez hecho esto, será redirigido a la página de inicio de sesión.",
|
||||
"outstanding-items": "Elementos de sincronización destacados:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "No encontrado",
|
||||
"heading": "No encontrado"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "padre:",
|
||||
"clipped-from": "Esta nota fue recortada originalmente de {{- url}}",
|
||||
"child-notes": "Subnotas:",
|
||||
"no-content": "Esta nota no tiene contenido."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Lunes",
|
||||
"tuesday": "Martes",
|
||||
"wednesday": "Miércoles",
|
||||
"thursday": "Jueves",
|
||||
"friday": "Viernes",
|
||||
"saturday": "Sábado",
|
||||
"sunday": "Domingo"
|
||||
},
|
||||
"weekdayNumber": "Semana {weekNumber}",
|
||||
"months": {
|
||||
"january": "Enero",
|
||||
"february": "Febrero",
|
||||
"march": "Marzo",
|
||||
"april": "Abril",
|
||||
"may": "Mayo",
|
||||
"june": "Junio",
|
||||
"july": "Julio",
|
||||
"august": "Agosto",
|
||||
"september": "Septiembre",
|
||||
"october": "Octubre",
|
||||
"november": "Noviembre",
|
||||
"december": "Diciembre"
|
||||
},
|
||||
"quarterNumber": "Cuarto {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Buscar:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "El servidor de sincronización no está configurado. Por favor configure primero la sincronización.",
|
||||
"successful": "El protocolo de enlace del servidor de sincronización ha sido exitoso, la sincronización ha comenzado."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Notas ocultas",
|
||||
"search-history-title": "Buscar historial",
|
||||
"note-map-title": "Mapa de nota",
|
||||
"sql-console-history-title": "Historial de consola SQL",
|
||||
"shared-notes-title": "Notas compartidas",
|
||||
"bulk-action-title": "Acción en lote",
|
||||
"backend-log-title": "Registro de Backend",
|
||||
"user-hidden-title": "Usuario oculto",
|
||||
"launch-bar-templates-title": "Plantillas de barra de lanzamiento",
|
||||
"base-abstract-launcher-title": "Lanzador abstracto base",
|
||||
"command-launcher-title": "Lanzador de comando",
|
||||
"note-launcher-title": "Lanzador de nota",
|
||||
"script-launcher-title": "Lanzador de script",
|
||||
"built-in-widget-title": "Widget integrado",
|
||||
"spacer-title": "Espaciador",
|
||||
"custom-widget-title": "Widget personalizado",
|
||||
"launch-bar-title": "Barra de lanzamiento",
|
||||
"available-launchers-title": "Lanzadores disponibles",
|
||||
"go-to-previous-note-title": "Ir a nota previa",
|
||||
"go-to-next-note-title": "Ir a nota siguiente",
|
||||
"new-note-title": "Nueva nota",
|
||||
"search-notes-title": "Buscar notas",
|
||||
"calendar-title": "Calendario",
|
||||
"recent-changes-title": "Cambios recientes",
|
||||
"bookmarks-title": "Marcadores",
|
||||
"open-today-journal-note-title": "Abrir nota del diario de hoy",
|
||||
"quick-search-title": "Búsqueda rápida",
|
||||
"protected-session-title": "Sesión protegida",
|
||||
"sync-status-title": "Sincronizar estado",
|
||||
"settings-title": "Ajustes",
|
||||
"options-title": "Opciones",
|
||||
"appearance-title": "Apariencia",
|
||||
"shortcuts-title": "Atajos",
|
||||
"text-notes": "Notas de texto",
|
||||
"code-notes-title": "Notas de código",
|
||||
"images-title": "Imágenes",
|
||||
"spellcheck-title": "Corrección ortográfica",
|
||||
"password-title": "Contraseña",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Respaldo",
|
||||
"sync-title": "Sincronizar",
|
||||
"other": "Otros",
|
||||
"advanced-title": "Avanzado",
|
||||
"visible-launchers-title": "Lanzadores visibles",
|
||||
"user-guide": "Guía de Usuario",
|
||||
"localization": "Idioma y Región",
|
||||
"inbox-title": "Bandeja",
|
||||
"jump-to-note-title": "Saltar a...",
|
||||
"command-palette": "Abrir paleta de comandos",
|
||||
"zen-mode": "Modo Zen",
|
||||
"tab-switcher-title": "Conmutador de pestañas"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nueva nota",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle}} {{duplicateNoteSuffix}}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "El archivo de registro del backend '{{fileName}}' no existe (aún).",
|
||||
"reading-log-failed": "Leer el archivo de registro del backend '{{fileName}}' falló."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Este tipo de nota no puede ser mostrado."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Documento PDF (*.pdf)",
|
||||
"unable-to-export-message": "La nota actual no pudo ser exportada como PDF.",
|
||||
"unable-to-export-title": "No es posible exportar como PDF",
|
||||
"unable-to-save-message": "No se pudo escribir en el archivo seleccionado. Intente de nuevo o seleccione otro destino.",
|
||||
"unable-to-print": "No se puede imprimir la nota"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Cerrar Trilium",
|
||||
"recents": "Notas recientes",
|
||||
"bookmarks": "Marcadores",
|
||||
"today": "Abrir nota del diario de hoy",
|
||||
"new-note": "Nueva nota",
|
||||
"show-windows": "Mostrar ventanas",
|
||||
"open_new_window": "Abrir nueva ventana"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "La migración directa desde tu versión actual no está soportada. Por favor actualice a v0.60.4 primero y solo después a esta versión.",
|
||||
"error_message": "Error durante la migración a la versión {{version}}: {{stack}}",
|
||||
"wrong_db_version": "La versión de la base de datos {{version}} es más nueva de lo que la aplicación espera {{targetVersion}}, lo que significa que fue creada por una versión más reciente e incompatible de Trilium. Actualice a la última versión de Trilium para resolver este problema."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Error"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Tema de sitio",
|
||||
"search_placeholder": "Búsqueda...",
|
||||
"image_alt": "Imagen de artículo",
|
||||
"last-updated": "Última actualización en {{-date}}",
|
||||
"subpages": "Subpáginas:",
|
||||
"on-this-page": "En esta página",
|
||||
"expand": "Expandir"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"jump-to-note": "Saltar a...",
|
||||
"command-palette": "Paleta de comandos",
|
||||
"scroll-to-active-note": "Desplazarse a la nota activa",
|
||||
"quick-search": "Búsqueda rápida",
|
||||
"search-in-subtree": "Buscar en subárbol",
|
||||
"expand-subtree": "Expandir subárbol",
|
||||
"collapse-tree": "Colapsar árbol",
|
||||
"collapse-subtree": "Colapsar subárbol",
|
||||
"sort-child-notes": "Ordenar nodos hijos",
|
||||
"create-note-after": "Crear nota tras",
|
||||
"create-note-into": "Crear nota en",
|
||||
"create-note-into-inbox": "Crear nota en bandeja de entrada",
|
||||
"delete-notes": "Eliminar notas",
|
||||
"move-note-up": "Subir nota",
|
||||
"move-note-down": "Bajar nota",
|
||||
"move-note-up-in-hierarchy": "Subir nota en la jerarquía",
|
||||
"move-note-down-in-hierarchy": "Bajar nota en la jerarquía",
|
||||
"edit-note-title": "Editar título de nota",
|
||||
"edit-branch-prefix": "Editar prefijo de rama",
|
||||
"clone-notes-to": "Clonar notas a",
|
||||
"move-notes-to": "Mover notas a",
|
||||
"copy-notes-to-clipboard": "Copiar notas al portapapeles",
|
||||
"paste-notes-from-clipboard": "Pegar notas del portapapeles",
|
||||
"add-note-above-to-selection": "Añadir nota superior a la selección",
|
||||
"add-note-below-to-selection": "Añadir nota inferior a la selección",
|
||||
"duplicate-subtree": "Duplicar subárbol",
|
||||
"open-new-tab": "Abrir nueva pestaña",
|
||||
"close-active-tab": "Cerrar pestaña activa",
|
||||
"reopen-last-tab": "Reabrir última pestaña",
|
||||
"activate-next-tab": "Activar siguiente pestaña",
|
||||
"activate-previous-tab": "Activar pestaña anterior",
|
||||
"open-new-window": "Abrir nueva ventana",
|
||||
"show-options": "Mostrar opciones",
|
||||
"show-revisions": "Mostrar revisiones",
|
||||
"show-recent-changes": "Mostrar cambios recientes",
|
||||
"show-sql-console": "Mostrar consola SQL",
|
||||
"switch-to-first-tab": "Ir a la primera pestaña",
|
||||
"switch-to-second-tab": "Ir a la segunda pestaña",
|
||||
"switch-to-third-tab": "Ir a la tercera pestaña",
|
||||
"switch-to-fourth-tab": "Ir a la cuarta pestaña",
|
||||
"switch-to-fifth-tab": "Ir a la quinta pestaña",
|
||||
"switch-to-sixth-tab": "Ir a la sexta pestaña",
|
||||
"switch-to-seventh-tab": "Ir a la séptima pestaña",
|
||||
"switch-to-eighth-tab": "Ir a la octava pestaña",
|
||||
"switch-to-ninth-tab": "Ir a la novena pestaña",
|
||||
"switch-to-last-tab": "Ir a la última pestaña",
|
||||
"show-note-source": "Mostrar nota fuente",
|
||||
"show-help": "Mostrar ayuda",
|
||||
"add-new-label": "Añadir nueva etiqueta",
|
||||
"add-new-relation": "Añadir nueva relación",
|
||||
"print-active-note": "Imprimir nota activa",
|
||||
"export-active-note-as-pdf": "Exportar nota activa como PDF",
|
||||
"open-note-externally": "Abrir nota externamente",
|
||||
"find-in-text": "Encontrar en texto",
|
||||
"copy-without-formatting": "Copiar sin formato",
|
||||
"reset-zoom-level": "Restablecer el nivel de zoom",
|
||||
"open-developer-tools": "Abrir herramientas de desarrollo",
|
||||
"insert-date-and-time-to-text": "Insertar fecha y hora al texto",
|
||||
"edit-read-only-note": "Editar nota de solo lectura",
|
||||
"toggle-system-tray-icon": "Mostrar/ocultar icono en la bandeja del sistema",
|
||||
"toggle-zen-mode": "Activar/desactivar modo Zen",
|
||||
"add-link-to-text": "Añadir enlace al texto",
|
||||
"zoom-in": "Acercar",
|
||||
"zoom-out": "Alejar",
|
||||
"toggle-full-screen": "Activar/desactivar pantalla completa",
|
||||
"toggle-left-pane": "Abrir/cerrar panel izquierdo",
|
||||
"toggle-right-pane": "Mostrar/ocultar panel derecho",
|
||||
"unhoist-note": "Desanclar nota",
|
||||
"toggle-note-hoisting": "Activar/desactivar anclaje de nota",
|
||||
"show-cheatsheet": "Mostrar hoja de referencia",
|
||||
"follow-link-under-cursor": "Seguir enlace bajo cursor",
|
||||
"reload-frontend-app": "Recargar aplicación del cliente",
|
||||
"run-active-note": "Ejecutar nota activa",
|
||||
"render-active-note": "Generar nota activa",
|
||||
"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",
|
||||
"paste-markdown-into-text": "Pegar Markdown en el texto",
|
||||
"cut-into-note": "Cortar en la nota",
|
||||
"add-include-note-to-text": "Agregar nota incluida al texto",
|
||||
"force-save-revision": "Forzar guardado de revisión",
|
||||
"toggle-ribbon-tab-classic-editor": "Mostrar pestaña de la cinta de opciones: Editor clásico",
|
||||
"toggle-ribbon-tab-basic-properties": "Mostrar pestaña de la cinta de opciones: Propiedades básicas",
|
||||
"toggle-ribbon-tab-book-properties": "Mostrar pestaña de la cinta de opciones: Propiedades de libro",
|
||||
"toggle-ribbon-tab-file-properties": "Mostrar pestaña de la cinta de opciones: Propiedades de archivo",
|
||||
"toggle-ribbon-tab-image-properties": "Mostrar pestaña de la cinta de opciones: Propiedades de imagen",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Mostrar pestaña de la cinta de opciones: Atributos heredados",
|
||||
"toggle-ribbon-tab-note-map": "Mostrar pestaña de la cinta de opciones: Mapa de notas",
|
||||
"toggle-ribbon-tab-note-info": "Mostrar pestaña de la cinta de opciones: Información de nota",
|
||||
"toggle-ribbon-tab-note-paths": "Mostrar pestaña de la cinta de opciones: Rutas de nota",
|
||||
"toggle-ribbon-tab-similar-notes": "Mostrar pestaña de la cinta de opciones: Notas similares",
|
||||
"toggle-ribbon-tab-owned-attributes": "Mostrar pestaña de la cinta de opciones: Propiedades asignadas",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Mostrar pestaña de la cinta de opciones: Atributos destacados"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"board_note_first": "Primera nota",
|
||||
"board_note_second": "Segunda nota",
|
||||
"board_note_third": "Tercera nota",
|
||||
"board_status_progress": "En progreso",
|
||||
"calendar": "Calendario",
|
||||
"description": "Descripción",
|
||||
"list-view": "Vista de lista",
|
||||
"grid-view": "Vista de cuadrícula",
|
||||
"status": "Estado",
|
||||
"table": "Tabla",
|
||||
"text-snippet": "Fragmento de texto",
|
||||
"geo-map": "Mapa Geo",
|
||||
"start-date": "Fecha de inicio",
|
||||
"end-date": "Fecha de finalización",
|
||||
"start-time": "Hora de inicio",
|
||||
"end-time": "Hora de finalización",
|
||||
"geolocation": "Geolocalización",
|
||||
"built-in-templates": "Plantillas predefinidas",
|
||||
"board_status_todo": "Por hacer",
|
||||
"board_status_done": "Hecho",
|
||||
"board": "Tablero Kanban",
|
||||
"presentation": "Presentación",
|
||||
"presentation_slide": "Slide de presentación",
|
||||
"presentation_slide_first": "Primer slide",
|
||||
"presentation_slide_second": "Segundo slide",
|
||||
"background": "Fondo"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Base de datos no inicializada, por favor, siga las instrucciones en pantalla.",
|
||||
"db_not_initialized_server": "Base de datos no inicializada, por favor, visite la página de configuración - http://[your-server-host]:{{port}} para ver instrucciones sobre cómo inicializar Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Ya hay una instancia en ejecución, enfocando esa instancia en su lugar."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,442 +1,440 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "Ouvrir la boîte de dialogue \"Aller à la note\"",
|
||||
"search-in-subtree": "Rechercher des notes dans les sous-arbres de la note active",
|
||||
"expand-subtree": "Développer le sous-arbre de la note actuelle",
|
||||
"collapse-tree": "Réduire toute l'arborescence des notes",
|
||||
"collapse-subtree": "Réduire le sous-arbre de la note actuelle",
|
||||
"sort-child-notes": "Trier les notes enfants",
|
||||
"creating-and-moving-notes": "Créer et déplacer des notes",
|
||||
"create-note-into-inbox": "Créer une note dans l'emplacement par défaut (si défini) ou une note journalière",
|
||||
"delete-note": "Supprimer la note",
|
||||
"move-note-up": "Déplacer la note vers le haut",
|
||||
"move-note-down": "Déplacer la note vers le bas",
|
||||
"move-note-up-in-hierarchy": "Déplacer la note vers le haut dans la hiérarchie",
|
||||
"move-note-down-in-hierarchy": "Déplacer la note vers le bas dans la hiérarchie",
|
||||
"edit-note-title": "Passer de l'arborescence aux détails d'une note et éditer le titre",
|
||||
"edit-branch-prefix": "Afficher la fenêtre Éditer le préfixe de branche",
|
||||
"note-clipboard": "Note presse-papiers",
|
||||
"copy-notes-to-clipboard": "Copier les notes sélectionnées dans le presse-papiers",
|
||||
"paste-notes-from-clipboard": "Coller les notes depuis le presse-papiers dans la note active",
|
||||
"cut-notes-to-clipboard": "Couper les notes sélectionnées dans le presse-papiers",
|
||||
"select-all-notes-in-parent": "Sélectionner toutes les notes du niveau de la note active",
|
||||
"add-note-above-to-the-selection": "Ajouter la note au-dessus de la sélection",
|
||||
"add-note-below-to-selection": "Ajouter la note en dessous de la sélection",
|
||||
"duplicate-subtree": "Dupliquer le sous-arbre",
|
||||
"tabs-and-windows": "Onglets et fenêtres",
|
||||
"open-new-tab": "Ouvrir un nouvel onglet",
|
||||
"close-active-tab": "Fermer l'onglet actif",
|
||||
"reopen-last-tab": "Rouvrir le dernier onglet fermé",
|
||||
"activate-next-tab": "Basculer vers l'onglet à droite de l'onglet actif",
|
||||
"activate-previous-tab": "Basculer vers l'onglet à gauche de l'onglet actif",
|
||||
"open-new-window": "Ouvrir une nouvelle fenêtre vide",
|
||||
"toggle-tray": "Afficher/masquer l'application dans la barre des tâches",
|
||||
"first-tab": "Basculer vers le premier onglet dans la liste",
|
||||
"second-tab": "Basculer vers le deuxième onglet dans la liste",
|
||||
"third-tab": "Basculer vers le troisième onglet dans la liste",
|
||||
"fourth-tab": "Basculer vers le quatrième onglet dans la liste",
|
||||
"fifth-tab": "Basculer vers le cinquième onglet dans la liste",
|
||||
"sixth-tab": "Basculer vers le sixième onglet dans la liste",
|
||||
"seventh-tab": "Basculer vers le septième onglet dans la liste",
|
||||
"eight-tab": "Basculer vers le huitième onglet dans la liste",
|
||||
"ninth-tab": "Basculer vers le neuvième onglet dans la liste",
|
||||
"last-tab": "Basculer vers le dernier onglet dans la liste",
|
||||
"dialogs": "Boîtes de dialogue",
|
||||
"show-note-source": "Affiche la boîte de dialogue Source de la note",
|
||||
"show-options": "Afficher les Options",
|
||||
"show-revisions": "Afficher la boîte de dialogue Versions de la note",
|
||||
"show-recent-changes": "Afficher la boîte de dialogue Modifications récentes",
|
||||
"show-sql-console": "Afficher la boîte de dialogue Console SQL",
|
||||
"show-backend-log": "Afficher la boîte de dialogue Journal du backend",
|
||||
"text-note-operations": "Opérations sur les notes textuelles",
|
||||
"add-link-to-text": "Ouvrir la boîte de dialogue pour ajouter un lien dans le texte",
|
||||
"follow-link-under-cursor": "Suivre le lien sous le curseur",
|
||||
"insert-date-and-time-to-text": "Insérer la date et l'heure dans le texte",
|
||||
"paste-markdown-into-text": "Coller du texte au format Markdown dans la note depuis le presse-papiers",
|
||||
"cut-into-note": "Couper la sélection depuis la note actuelle et créer une sous-note avec le texte sélectionné",
|
||||
"add-include-note-to-text": "Ouvrir la boîte de dialogue pour Inclure une note",
|
||||
"edit-readonly-note": "Éditer une note en lecture seule",
|
||||
"attributes-labels-and-relations": "Attributs (labels et relations)",
|
||||
"add-new-label": "Créer un nouveau label",
|
||||
"create-new-relation": "Créer une nouvelle relation",
|
||||
"ribbon-tabs": "Onglets du ruban",
|
||||
"toggle-basic-properties": "Afficher/masquer les Propriétés de base de la note",
|
||||
"toggle-file-properties": "Afficher/masquer les Propriétés du fichier",
|
||||
"toggle-image-properties": "Afficher/masquer les Propriétés de l'image",
|
||||
"toggle-owned-attributes": "Afficher/masquer les Attributs propres",
|
||||
"toggle-inherited-attributes": "Afficher/masquer les Attributs hérités",
|
||||
"toggle-promoted-attributes": "Afficher/masquer les Attributs promus",
|
||||
"toggle-link-map": "Afficher/masquer la Carte de la note",
|
||||
"toggle-note-info": "Afficher/masquer les Informations de la note",
|
||||
"toggle-note-paths": "Afficher/masquer les Emplacements de la note",
|
||||
"toggle-similar-notes": "Afficher/masquer les Notes similaires",
|
||||
"other": "Autre",
|
||||
"toggle-right-pane": "Afficher/masquer le volet droit, qui inclut la Table des matières et les Accentuations",
|
||||
"print-active-note": "Imprimer la note active",
|
||||
"open-note-externally": "Ouvrir la note comme fichier avec l'application par défaut",
|
||||
"render-active-note": "Rendre (ou re-rendre) la note active",
|
||||
"run-active-note": "Exécuter le code JavaScript (frontend/backend) de la note active",
|
||||
"toggle-note-hoisting": "Activer le focus sur la note active",
|
||||
"unhoist": "Désactiver tout focus",
|
||||
"reload-frontend-app": "Recharger l'application",
|
||||
"open-dev-tools": "Ouvrir les outils de développement",
|
||||
"toggle-left-note-tree-panel": "Basculer le panneau gauche (arborescence des notes)",
|
||||
"toggle-full-screen": "Basculer en plein écran",
|
||||
"zoom-out": "Dézoomer",
|
||||
"zoom-in": "Zoomer",
|
||||
"note-navigation": "Navigation dans les notes",
|
||||
"reset-zoom-level": "Réinitialiser le niveau de zoom",
|
||||
"copy-without-formatting": "Copier le texte sélectionné sans mise en forme",
|
||||
"force-save-revision": "Forcer la création / sauvegarde d'une nouvelle version de la note active",
|
||||
"show-help": "Affiche le guide de l'utilisateur intégré",
|
||||
"toggle-book-properties": "Afficher/masquer les Propriétés du Livre",
|
||||
"toggle-classic-editor-toolbar": "Activer/désactiver l'onglet Mise en forme de l'éditeur avec la barre d'outils fixe",
|
||||
"export-as-pdf": "Exporte la note actuelle en PDF",
|
||||
"show-cheatsheet": "Affiche une fenêtre modale avec des opérations de clavier courantes",
|
||||
"toggle-zen-mode": "Active/désactive le mode zen (interface réduite pour favoriser la concentration)",
|
||||
"back-in-note-history": "Naviguer à la note précédente dans l'historique",
|
||||
"forward-in-note-history": "Naviguer a la note suivante dans l'historique",
|
||||
"open-command-palette": "Ouvrir la palette de commandes",
|
||||
"clone-notes-to": "Cloner les nœuds sélectionnés",
|
||||
"move-notes-to": "Déplacer les nœuds sélectionnés",
|
||||
"scroll-to-active-note": "Faire défiler l’arborescence des notes jusqu’à la note active",
|
||||
"quick-search": "Activer la barre de recherche rapide",
|
||||
"create-note-after": "Créer une note après la note active",
|
||||
"create-note-into": "Créer une note enfant de la note active",
|
||||
"find-in-text": "Afficher/Masquer le panneau de recherche"
|
||||
},
|
||||
"login": {
|
||||
"title": "Connexion",
|
||||
"heading": "Connexion à Trilium",
|
||||
"incorrect-password": "Le mot de passe est incorrect. Veuillez réessayer.",
|
||||
"password": "Mot de passe",
|
||||
"remember-me": "Se souvenir de moi",
|
||||
"button": "Connexion",
|
||||
"sign_in_with_sso": "Se connecter avec {{ ssoIssuerName }}",
|
||||
"incorrect-totp": "TOTP incorrect. Veuillez réessayer."
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Définir un mot de passe",
|
||||
"heading": "Définir un mot de passe",
|
||||
"description": "Avant de pouvoir commencer à utiliser Trilium depuis le web, vous devez d'abord définir un mot de passe. Vous utiliserez ensuite ce mot de passe pour vous connecter.",
|
||||
"password": "Mot de passe",
|
||||
"password-confirmation": "Confirmation du mot de passe",
|
||||
"button": "Définir le mot de passe"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Configuration de Trilium Notes",
|
||||
"new-document": "Je suis un nouvel utilisateur et je souhaite créer un nouveau document Trilium pour mes notes",
|
||||
"sync-from-desktop": "J'ai déjà l'application de bureau et je souhaite configurer la synchronisation avec celle-ci",
|
||||
"sync-from-server": "J'ai déjà un serveur et je souhaite configurer la synchronisation avec celui-ci",
|
||||
"next": "Suivant",
|
||||
"init-in-progress": "Initialisation du document en cours",
|
||||
"redirecting": "Vous serez bientôt redirigé vers l'application.",
|
||||
"title": "Configuration"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Synchroniser depuis une application de bureau",
|
||||
"description": "Cette procédure doit être réalisée depuis l'application de bureau :",
|
||||
"step1": "Ouvrez l'application Trilium Notes.",
|
||||
"step2": "Dans le menu Trilium, cliquez sur Options.",
|
||||
"step3": "Cliquez sur la catégorie Synchroniser.",
|
||||
"step4": "Remplacez l'adresse de l'instance de serveur par : {{- host}} et cliquez sur Enregistrer.",
|
||||
"step5": "Cliquez sur le bouton 'Tester la synchronisation' pour vérifier que la connexion fonctionne.",
|
||||
"step6": "Une fois que vous avez terminé ces étapes, cliquez sur {{- link}}.",
|
||||
"step6-here": "ici"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Synchroniser depuis le serveur",
|
||||
"instructions": "Veuillez saisir l'adresse du serveur Trilium et les informations d'identification ci-dessous. Cela téléchargera l'intégralité du document Trilium à partir du serveur et configurera la synchronisation avec celui-ci. En fonction de la taille du document et de votre vitesse de connexion, cela peut prendre un plusieurs minutes.",
|
||||
"server-host": "Adresse du serveur Trilium",
|
||||
"server-host-placeholder": "https://<nom d'hôte>:<port>",
|
||||
"proxy-server": "Serveur proxy (facultatif)",
|
||||
"proxy-server-placeholder": "https://<nom d'hôte>:<port>",
|
||||
"note": "Note :",
|
||||
"proxy-instruction": "Si vous laissez le paramètre de proxy vide, le proxy du système sera utilisé (s'applique uniquement à l'application de bureau)",
|
||||
"password": "Mot de passe",
|
||||
"password-placeholder": "Mot de passe",
|
||||
"back": "Retour",
|
||||
"finish-setup": "Terminer"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Synchronisation en cours",
|
||||
"successful": "La synchronisation a été correctement configurée. La synchronisation initiale prendra un certain temps. Une fois terminée, vous serez redirigé vers la page de connexion.",
|
||||
"outstanding-items": "Éléments de synchronisation exceptionnels :",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Page non trouvée",
|
||||
"heading": "Page non trouvée"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "parent :",
|
||||
"clipped-from": "Cette note a été initialement extraite de {{- url}}",
|
||||
"child-notes": "Notes enfants :",
|
||||
"no-content": "Cette note n'a aucun contenu."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Lundi",
|
||||
"tuesday": "Mardi",
|
||||
"wednesday": "Mercredi",
|
||||
"thursday": "Jeudi",
|
||||
"friday": "Vendredi",
|
||||
"saturday": "Samedi",
|
||||
"sunday": "Dimanche"
|
||||
},
|
||||
"months": {
|
||||
"january": "Janvier",
|
||||
"february": "Février",
|
||||
"march": "Mars",
|
||||
"april": "Avril",
|
||||
"may": "Mai",
|
||||
"june": "Juin",
|
||||
"july": "Juillet",
|
||||
"august": "Août",
|
||||
"september": "Septembre",
|
||||
"october": "Octobre",
|
||||
"november": "Novembre",
|
||||
"december": "Décembre"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Recherche :"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "L'hôte du serveur de synchronisation n'est pas configuré. Veuillez d'abord configurer la synchronisation.",
|
||||
"successful": "L'établissement de liaison du serveur de synchronisation a été réussi, la synchronisation a été démarrée."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Notes cachées",
|
||||
"search-history-title": "Historique de recherche",
|
||||
"note-map-title": "Carte de la Note",
|
||||
"sql-console-history-title": "Historique de la console SQL",
|
||||
"shared-notes-title": "Notes partagées",
|
||||
"bulk-action-title": "Action groupée",
|
||||
"backend-log-title": "Journal Backend",
|
||||
"user-hidden-title": "Utilisateur masqué",
|
||||
"launch-bar-templates-title": "Modèles de barre de raccourcis",
|
||||
"base-abstract-launcher-title": "Raccourci Base abstraite",
|
||||
"command-launcher-title": "Raccourci Commande",
|
||||
"note-launcher-title": "Raccourci Note",
|
||||
"script-launcher-title": "Raccourci Script",
|
||||
"built-in-widget-title": "Widget intégré",
|
||||
"spacer-title": "Séparateur",
|
||||
"custom-widget-title": "Widget personnalisé",
|
||||
"launch-bar-title": "Barre de lancement",
|
||||
"available-launchers-title": "Raccourcis disponibles",
|
||||
"go-to-previous-note-title": "Aller à la note précédente",
|
||||
"go-to-next-note-title": "Aller à la note suivante",
|
||||
"new-note-title": "Nouvelle note",
|
||||
"search-notes-title": "Rechercher des notes",
|
||||
"calendar-title": "Calendrier",
|
||||
"recent-changes-title": "Modifications récentes",
|
||||
"bookmarks-title": "Signets",
|
||||
"open-today-journal-note-title": "Ouvrir la note du journal du jour",
|
||||
"quick-search-title": "Recherche rapide",
|
||||
"protected-session-title": "Session protégée",
|
||||
"sync-status-title": "État de la synchronisation",
|
||||
"settings-title": "Réglages",
|
||||
"options-title": "Options",
|
||||
"appearance-title": "Apparence",
|
||||
"shortcuts-title": "Raccourcis",
|
||||
"text-notes": "Notes de texte",
|
||||
"code-notes-title": "Notes de code",
|
||||
"images-title": "Images",
|
||||
"spellcheck-title": "Correcteur orthographique",
|
||||
"password-title": "Mot de passe",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Sauvegarde",
|
||||
"sync-title": "Synchronisation",
|
||||
"other": "Autre",
|
||||
"advanced-title": "Avancé",
|
||||
"visible-launchers-title": "Raccourcis visibles",
|
||||
"user-guide": "Guide de l'utilisateur",
|
||||
"jump-to-note-title": "Aller à...",
|
||||
"llm-chat-title": "Discuter avec Notes",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"localization": "Langue et région",
|
||||
"inbox-title": "Boîte de réception",
|
||||
"command-palette": "Ouvrir la palette de commandes",
|
||||
"zen-mode": "Mode Zen"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nouvelle note",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Le fichier journal '{{ fileName }}' n'existe pas (encore).",
|
||||
"reading-log-failed": "La lecture du fichier journal d'administration '{{ fileName }}' a échoué."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Ce type de note ne peut pas être affiché."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Document PDF (*.pdf)",
|
||||
"unable-to-export-message": "La note actuelle n'a pas pu être exportée en format PDF.",
|
||||
"unable-to-export-title": "Impossible d'exporter au format PDF",
|
||||
"unable-to-save-message": "Le fichier sélectionné n'a pas pu être écrit. Réessayez ou sélectionnez une autre destination.",
|
||||
"unable-to-print": "Impossible d'imprimer la note"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Quitter Trilium",
|
||||
"recents": "Notes récentes",
|
||||
"bookmarks": "Signets",
|
||||
"today": "Ouvrir la note du journal du jour",
|
||||
"new-note": "Nouvelle note",
|
||||
"show-windows": "Afficher les fenêtres",
|
||||
"open_new_window": "Ouvrir une nouvelle fenêtre"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "La migration directe à partir de votre version actuelle n'est pas prise en charge. Veuillez d'abord mettre à jour vers la version v0.60.4, puis vers cette nouvelle version.",
|
||||
"error_message": "Erreur lors de la migration vers la version {{version}}: {{stack}}",
|
||||
"wrong_db_version": "La version de la base de données ({{version}}) est plus récente que ce que l'application supporte actuellement ({{targetVersion}}), ce qui signifie qu'elle a été créée par une version plus récente et incompatible de Trilium. Mettez à jour vers la dernière version de Trilium pour résoudre ce problème."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Erreur"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"command-palette": "Palette de commandes",
|
||||
"quick-search": "Recherche rapide",
|
||||
"back-in-note-history": "Revenir dans l’historique des notes",
|
||||
"forward-in-note-history": "Suivant dans l’historique des notes",
|
||||
"jump-to-note": "Aller à…",
|
||||
"scroll-to-active-note": "Faire défiler jusqu’à la note active",
|
||||
"search-in-subtree": "Rechercher dans la sous-arborescence",
|
||||
"expand-subtree": "Développer la sous-arborescence",
|
||||
"collapse-tree": "Réduire l’arborescence",
|
||||
"collapse-subtree": "Réduire la sous-arborescence",
|
||||
"sort-child-notes": "Trier les notes enfants",
|
||||
"create-note-after": "Créer une note après",
|
||||
"create-note-into": "Créer une note dans",
|
||||
"create-note-into-inbox": "Créer une note dans Inbox",
|
||||
"delete-notes": "Supprimer les notes",
|
||||
"move-note-up": "Remonter la note",
|
||||
"move-note-down": "Descendre la note",
|
||||
"move-note-up-in-hierarchy": "Monter la note dans la hiérarchie",
|
||||
"move-note-down-in-hierarchy": "Descendre la note dans la hiérarchie",
|
||||
"edit-note-title": "Modifier le titre de la note",
|
||||
"edit-branch-prefix": "Modifier le préfixe de la branche",
|
||||
"clone-notes-to": "Cloner les notes vers",
|
||||
"move-notes-to": "Déplacer les notes vers",
|
||||
"copy-notes-to-clipboard": "Copier les notes dans le presse-papiers",
|
||||
"paste-notes-from-clipboard": "Coller les notes depuis le presse-papiers",
|
||||
"cut-notes-to-clipboard": "Couper les notes vers le presse-papier",
|
||||
"select-all-notes-in-parent": "Selectionner toutes les notes dans le parent",
|
||||
"add-note-above-to-selection": "Ajouter la note au-dessus à la selection",
|
||||
"add-note-below-to-selection": "Ajouter la note dessous à la selection",
|
||||
"duplicate-subtree": "Dupliquer la sous-arborescence",
|
||||
"open-new-tab": "Ouvrir un nouvel onglet",
|
||||
"close-active-tab": "Fermer l'onglet actif",
|
||||
"reopen-last-tab": "Réouvrir le dernier onglet",
|
||||
"activate-next-tab": "Activer l'onglet suivant",
|
||||
"activate-previous-tab": "Activer l'onglet précédent",
|
||||
"open-new-window": "Ouvrir une nouvelle fenêtre",
|
||||
"toggle-system-tray-icon": "Activer/Désactiver l'icone de la barre d'état",
|
||||
"toggle-zen-mode": "Activer/Désactiver le mode Zen",
|
||||
"switch-to-first-tab": "Aller au premier onglet",
|
||||
"switch-to-second-tab": "Aller au second onglet",
|
||||
"switch-to-third-tab": "Aller au troisième onglet",
|
||||
"switch-to-fourth-tab": "Aller au quatrième onglet",
|
||||
"switch-to-fifth-tab": "Aller au cinquième onglet",
|
||||
"switch-to-sixth-tab": "Aller au sixième onglet",
|
||||
"switch-to-seventh-tab": "Aller au septième onglet",
|
||||
"switch-to-eighth-tab": "Aller au huitième onglet",
|
||||
"switch-to-ninth-tab": "Aller au neuvième onglet",
|
||||
"switch-to-last-tab": "Aller au dernier onglet",
|
||||
"show-note-source": "Afficher la source de la note",
|
||||
"show-options": "Afficher les options",
|
||||
"show-revisions": "Afficher les révisions",
|
||||
"show-recent-changes": "Afficher les changements récents",
|
||||
"show-sql-console": "Afficher la console SQL",
|
||||
"show-backend-log": "Afficher le journal du backend",
|
||||
"show-help": "Afficher l'aide",
|
||||
"show-cheatsheet": "Afficher la fiche de triche",
|
||||
"add-link-to-text": "Ajouter un lien au texte",
|
||||
"follow-link-under-cursor": "Suivre le lien en dessous du curseur",
|
||||
"insert-date-and-time-to-text": "Insérer la date et l'heure dans le texte",
|
||||
"paste-markdown-into-text": "Coller du Markdown dans le texte",
|
||||
"cut-into-note": "Couper dans une note",
|
||||
"add-include-note-to-text": "Ajouter une note inclusion au texte",
|
||||
"edit-read-only-note": "Modifier une note en lecture seule",
|
||||
"add-new-label": "Ajouter une nouvelle étiquette",
|
||||
"add-new-relation": "Ajouter une nouvelle relation",
|
||||
"toggle-ribbon-tab-classic-editor": "Basculer l'onglet Mise en forme de l'éditeur avec la barre d'outils fixe",
|
||||
"toggle-ribbon-tab-basic-properties": "Afficher/masquer les Propriétés de base de la note",
|
||||
"toggle-ribbon-tab-book-properties": "Afficher/masquer les Propriétés du Livre",
|
||||
"toggle-ribbon-tab-file-properties": "Afficher/masquer les Propriétés du fichier",
|
||||
"toggle-ribbon-tab-image-properties": "Afficher/masquer les Propriétés de l'image",
|
||||
"toggle-ribbon-tab-owned-attributes": "Afficher/masquer les Attributs propres",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Afficher/masquer les Attributs hérités",
|
||||
"toggle-right-pane": "Afficher le panneau de droite",
|
||||
"print-active-note": "Imprimer la note active",
|
||||
"export-active-note-as-pdf": "Exporter la note active en PDF",
|
||||
"open-note-externally": "Ouvrir la note à l'extérieur",
|
||||
"render-active-note": "Faire un rendu de la note active",
|
||||
"run-active-note": "Lancer la note active",
|
||||
"reload-frontend-app": "Recharger l'application Frontend",
|
||||
"open-developer-tools": "Ouvrir les outils développeur",
|
||||
"find-in-text": "Chercher un texte",
|
||||
"toggle-left-pane": "Afficher le panneau de gauche",
|
||||
"toggle-full-screen": "Passer en mode plein écran",
|
||||
"zoom-out": "Dézoomer",
|
||||
"zoom-in": "Zoomer",
|
||||
"reset-zoom-level": "Réinitilaliser le zoom",
|
||||
"copy-without-formatting": "Copier sans mise en forme",
|
||||
"force-save-revision": "Forcer la sauvegarde de la révision",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Basculer les attributs promus de l'onglet du ruban",
|
||||
"toggle-ribbon-tab-note-map": "Basculer l'onglet du ruban Note Map",
|
||||
"toggle-ribbon-tab-note-info": "Basculer l'onglet du ruban Note Info",
|
||||
"toggle-ribbon-tab-note-paths": "Basculer les chemins de notes de l'onglet du ruban",
|
||||
"toggle-ribbon-tab-similar-notes": "Basculer l'onglet du ruban Notes similaires",
|
||||
"toggle-note-hoisting": "Activer la focalisation sur la note",
|
||||
"unhoist-note": "Désactiver la focalisation sur la note"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Base de données non initialisée, merci de suivre les instructions à l'écran.",
|
||||
"db_not_initialized_server": "Base de données non initialisée, veuillez visitez - http://[your-server-host]:{{port}} pour consulter les instructions d'initialisation de Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Une instance est déjà en cours d'execution, ouverture de cette instance à la place."
|
||||
},
|
||||
"weekdayNumber": "Semaine {weekNumber}",
|
||||
"quarterNumber": "Trimestre {quarterNumber}",
|
||||
"share_theme": {
|
||||
"site-theme": "Thème du site",
|
||||
"search_placeholder": "Recherche...",
|
||||
"image_alt": "Image de l'article",
|
||||
"last-updated": "Dernière mise à jour le {{- date}}",
|
||||
"subpages": "Sous-pages:",
|
||||
"on-this-page": "Sur cette page",
|
||||
"expand": "Développer"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Extrait de texte",
|
||||
"description": "Description",
|
||||
"list-view": "Vue en liste",
|
||||
"grid-view": "Vue en grille",
|
||||
"calendar": "Calendrier",
|
||||
"table": "Tableau",
|
||||
"geo-map": "Carte géographique",
|
||||
"start-date": "Date de début",
|
||||
"end-date": "Date de fin",
|
||||
"start-time": "Heure de début",
|
||||
"end-time": "Heure de fin",
|
||||
"geolocation": "Géolocalisation",
|
||||
"built-in-templates": "Modèles intégrés",
|
||||
"board": "Tableau de bord",
|
||||
"status": "État",
|
||||
"board_note_first": "Première note",
|
||||
"board_note_second": "Deuxième note",
|
||||
"board_note_third": "Troisième note",
|
||||
"board_status_todo": "A faire",
|
||||
"board_status_progress": "En cours",
|
||||
"board_status_done": "Terminé",
|
||||
"presentation": "Présentation",
|
||||
"presentation_slide": "Diapositive de présentation",
|
||||
"presentation_slide_first": "Première diapositive",
|
||||
"presentation_slide_second": "Deuxième diapositive",
|
||||
"background": "Arrière-plan"
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "Ouvrir la boîte de dialogue \"Aller à la note\"",
|
||||
"search-in-subtree": "Rechercher des notes dans les sous-arbres de la note active",
|
||||
"expand-subtree": "Développer le sous-arbre de la note actuelle",
|
||||
"collapse-tree": "Réduire toute l'arborescence des notes",
|
||||
"collapse-subtree": "Réduire le sous-arbre de la note actuelle",
|
||||
"sort-child-notes": "Trier les notes enfants",
|
||||
"creating-and-moving-notes": "Créer et déplacer des notes",
|
||||
"create-note-into-inbox": "Créer une note dans l'emplacement par défaut (si défini) ou une note journalière",
|
||||
"delete-note": "Supprimer la note",
|
||||
"move-note-up": "Déplacer la note vers le haut",
|
||||
"move-note-down": "Déplacer la note vers le bas",
|
||||
"move-note-up-in-hierarchy": "Déplacer la note vers le haut dans la hiérarchie",
|
||||
"move-note-down-in-hierarchy": "Déplacer la note vers le bas dans la hiérarchie",
|
||||
"edit-note-title": "Passer de l'arborescence aux détails d'une note et éditer le titre",
|
||||
"edit-branch-prefix": "Afficher la fenêtre Éditer le préfixe de branche",
|
||||
"note-clipboard": "Note presse-papiers",
|
||||
"copy-notes-to-clipboard": "Copier les notes sélectionnées dans le presse-papiers",
|
||||
"paste-notes-from-clipboard": "Coller les notes depuis le presse-papiers dans la note active",
|
||||
"cut-notes-to-clipboard": "Couper les notes sélectionnées dans le presse-papiers",
|
||||
"select-all-notes-in-parent": "Sélectionner toutes les notes du niveau de la note active",
|
||||
"add-note-above-to-the-selection": "Ajouter la note au-dessus de la sélection",
|
||||
"add-note-below-to-selection": "Ajouter la note en dessous de la sélection",
|
||||
"duplicate-subtree": "Dupliquer le sous-arbre",
|
||||
"tabs-and-windows": "Onglets et fenêtres",
|
||||
"open-new-tab": "Ouvrir un nouvel onglet",
|
||||
"close-active-tab": "Fermer l'onglet actif",
|
||||
"reopen-last-tab": "Rouvrir le dernier onglet fermé",
|
||||
"activate-next-tab": "Basculer vers l'onglet à droite de l'onglet actif",
|
||||
"activate-previous-tab": "Basculer vers l'onglet à gauche de l'onglet actif",
|
||||
"open-new-window": "Ouvrir une nouvelle fenêtre vide",
|
||||
"toggle-tray": "Afficher/masquer l'application dans la barre des tâches",
|
||||
"first-tab": "Basculer vers le premier onglet dans la liste",
|
||||
"second-tab": "Basculer vers le deuxième onglet dans la liste",
|
||||
"third-tab": "Basculer vers le troisième onglet dans la liste",
|
||||
"fourth-tab": "Basculer vers le quatrième onglet dans la liste",
|
||||
"fifth-tab": "Basculer vers le cinquième onglet dans la liste",
|
||||
"sixth-tab": "Basculer vers le sixième onglet dans la liste",
|
||||
"seventh-tab": "Basculer vers le septième onglet dans la liste",
|
||||
"eight-tab": "Basculer vers le huitième onglet dans la liste",
|
||||
"ninth-tab": "Basculer vers le neuvième onglet dans la liste",
|
||||
"last-tab": "Basculer vers le dernier onglet dans la liste",
|
||||
"dialogs": "Boîtes de dialogue",
|
||||
"show-note-source": "Affiche la boîte de dialogue Source de la note",
|
||||
"show-options": "Afficher les Options",
|
||||
"show-revisions": "Afficher la boîte de dialogue Versions de la note",
|
||||
"show-recent-changes": "Afficher la boîte de dialogue Modifications récentes",
|
||||
"show-sql-console": "Afficher la boîte de dialogue Console SQL",
|
||||
"show-backend-log": "Afficher la boîte de dialogue Journal du backend",
|
||||
"text-note-operations": "Opérations sur les notes textuelles",
|
||||
"add-link-to-text": "Ouvrir la boîte de dialogue pour ajouter un lien dans le texte",
|
||||
"follow-link-under-cursor": "Suivre le lien sous le curseur",
|
||||
"insert-date-and-time-to-text": "Insérer la date et l'heure dans le texte",
|
||||
"paste-markdown-into-text": "Coller du texte au format Markdown dans la note depuis le presse-papiers",
|
||||
"cut-into-note": "Couper la sélection depuis la note actuelle et créer une sous-note avec le texte sélectionné",
|
||||
"add-include-note-to-text": "Ouvrir la boîte de dialogue pour Inclure une note",
|
||||
"edit-readonly-note": "Éditer une note en lecture seule",
|
||||
"attributes-labels-and-relations": "Attributs (labels et relations)",
|
||||
"add-new-label": "Créer un nouveau label",
|
||||
"create-new-relation": "Créer une nouvelle relation",
|
||||
"ribbon-tabs": "Onglets du ruban",
|
||||
"toggle-basic-properties": "Afficher/masquer les Propriétés de base de la note",
|
||||
"toggle-file-properties": "Afficher/masquer les Propriétés du fichier",
|
||||
"toggle-image-properties": "Afficher/masquer les Propriétés de l'image",
|
||||
"toggle-owned-attributes": "Afficher/masquer les Attributs propres",
|
||||
"toggle-inherited-attributes": "Afficher/masquer les Attributs hérités",
|
||||
"toggle-promoted-attributes": "Afficher/masquer les Attributs promus",
|
||||
"toggle-link-map": "Afficher/masquer la Carte de la note",
|
||||
"toggle-note-info": "Afficher/masquer les Informations de la note",
|
||||
"toggle-note-paths": "Afficher/masquer les Emplacements de la note",
|
||||
"toggle-similar-notes": "Afficher/masquer les Notes similaires",
|
||||
"other": "Autre",
|
||||
"toggle-right-pane": "Afficher/masquer le volet droit, qui inclut la Table des matières et les Accentuations",
|
||||
"print-active-note": "Imprimer la note active",
|
||||
"open-note-externally": "Ouvrir la note comme fichier avec l'application par défaut",
|
||||
"render-active-note": "Rendre (ou re-rendre) la note active",
|
||||
"run-active-note": "Exécuter le code JavaScript (frontend/backend) de la note active",
|
||||
"toggle-note-hoisting": "Activer le focus sur la note active",
|
||||
"unhoist": "Désactiver tout focus",
|
||||
"reload-frontend-app": "Recharger l'application",
|
||||
"open-dev-tools": "Ouvrir les outils de développement",
|
||||
"toggle-left-note-tree-panel": "Basculer le panneau gauche (arborescence des notes)",
|
||||
"toggle-full-screen": "Basculer en plein écran",
|
||||
"zoom-out": "Dézoomer",
|
||||
"zoom-in": "Zoomer",
|
||||
"note-navigation": "Navigation dans les notes",
|
||||
"reset-zoom-level": "Réinitialiser le niveau de zoom",
|
||||
"copy-without-formatting": "Copier le texte sélectionné sans mise en forme",
|
||||
"force-save-revision": "Forcer la création / sauvegarde d'une nouvelle version de la note active",
|
||||
"show-help": "Affiche le guide de l'utilisateur intégré",
|
||||
"toggle-book-properties": "Afficher/masquer les Propriétés du Livre",
|
||||
"toggle-classic-editor-toolbar": "Activer/désactiver l'onglet Mise en forme de l'éditeur avec la barre d'outils fixe",
|
||||
"export-as-pdf": "Exporte la note actuelle en PDF",
|
||||
"show-cheatsheet": "Affiche une fenêtre modale avec des opérations de clavier courantes",
|
||||
"toggle-zen-mode": "Active/désactive le mode zen (interface réduite pour favoriser la concentration)",
|
||||
"back-in-note-history": "Naviguer à la note précédente dans l'historique",
|
||||
"forward-in-note-history": "Naviguer a la note suivante dans l'historique",
|
||||
"open-command-palette": "Ouvrir la palette de commandes",
|
||||
"clone-notes-to": "Cloner les nœuds sélectionnés",
|
||||
"move-notes-to": "Déplacer les nœuds sélectionnés",
|
||||
"scroll-to-active-note": "Faire défiler l’arborescence des notes jusqu’à la note active",
|
||||
"quick-search": "Activer la barre de recherche rapide",
|
||||
"create-note-after": "Créer une note après la note active",
|
||||
"create-note-into": "Créer une note enfant de la note active",
|
||||
"find-in-text": "Afficher/Masquer le panneau de recherche"
|
||||
},
|
||||
"login": {
|
||||
"title": "Connexion",
|
||||
"heading": "Connexion à Trilium",
|
||||
"incorrect-password": "Le mot de passe est incorrect. Veuillez réessayer.",
|
||||
"password": "Mot de passe",
|
||||
"remember-me": "Se souvenir de moi",
|
||||
"button": "Connexion",
|
||||
"sign_in_with_sso": "Se connecter avec {{ ssoIssuerName }}",
|
||||
"incorrect-totp": "TOTP incorrect. Veuillez réessayer."
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Définir un mot de passe",
|
||||
"heading": "Définir un mot de passe",
|
||||
"description": "Avant de pouvoir commencer à utiliser Trilium depuis le web, vous devez d'abord définir un mot de passe. Vous utiliserez ensuite ce mot de passe pour vous connecter.",
|
||||
"password": "Mot de passe",
|
||||
"password-confirmation": "Confirmation du mot de passe",
|
||||
"button": "Définir le mot de passe"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Configuration de Trilium Notes",
|
||||
"new-document": "Je suis un nouvel utilisateur et je souhaite créer un nouveau document Trilium pour mes notes",
|
||||
"sync-from-desktop": "J'ai déjà l'application de bureau et je souhaite configurer la synchronisation avec celle-ci",
|
||||
"sync-from-server": "J'ai déjà un serveur et je souhaite configurer la synchronisation avec celui-ci",
|
||||
"next": "Suivant",
|
||||
"init-in-progress": "Initialisation du document en cours",
|
||||
"redirecting": "Vous serez bientôt redirigé vers l'application.",
|
||||
"title": "Configuration"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Synchroniser depuis une application de bureau",
|
||||
"description": "Cette procédure doit être réalisée depuis l'application de bureau :",
|
||||
"step1": "Ouvrez l'application Trilium Notes.",
|
||||
"step2": "Dans le menu Trilium, cliquez sur Options.",
|
||||
"step3": "Cliquez sur la catégorie Synchroniser.",
|
||||
"step4": "Remplacez l'adresse de l'instance de serveur par : {{- host}} et cliquez sur Enregistrer.",
|
||||
"step5": "Cliquez sur le bouton 'Tester la synchronisation' pour vérifier que la connexion fonctionne.",
|
||||
"step6": "Une fois que vous avez terminé ces étapes, cliquez sur {{- link}}.",
|
||||
"step6-here": "ici"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Synchroniser depuis le serveur",
|
||||
"instructions": "Veuillez saisir l'adresse du serveur Trilium et les informations d'identification ci-dessous. Cela téléchargera l'intégralité du document Trilium à partir du serveur et configurera la synchronisation avec celui-ci. En fonction de la taille du document et de votre vitesse de connexion, cela peut prendre un plusieurs minutes.",
|
||||
"server-host": "Adresse du serveur Trilium",
|
||||
"server-host-placeholder": "https://<nom d'hôte>:<port>",
|
||||
"proxy-server": "Serveur proxy (facultatif)",
|
||||
"proxy-server-placeholder": "https://<nom d'hôte>:<port>",
|
||||
"note": "Note :",
|
||||
"proxy-instruction": "Si vous laissez le paramètre de proxy vide, le proxy du système sera utilisé (s'applique uniquement à l'application de bureau)",
|
||||
"password": "Mot de passe",
|
||||
"password-placeholder": "Mot de passe",
|
||||
"back": "Retour",
|
||||
"finish-setup": "Terminer"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Synchronisation en cours",
|
||||
"successful": "La synchronisation a été correctement configurée. La synchronisation initiale prendra un certain temps. Une fois terminée, vous serez redirigé vers la page de connexion.",
|
||||
"outstanding-items": "Éléments de synchronisation exceptionnels :",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Page non trouvée",
|
||||
"heading": "Page non trouvée"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "parent :",
|
||||
"clipped-from": "Cette note a été initialement extraite de {{- url}}",
|
||||
"child-notes": "Notes enfants :",
|
||||
"no-content": "Cette note n'a aucun contenu."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Lundi",
|
||||
"tuesday": "Mardi",
|
||||
"wednesday": "Mercredi",
|
||||
"thursday": "Jeudi",
|
||||
"friday": "Vendredi",
|
||||
"saturday": "Samedi",
|
||||
"sunday": "Dimanche"
|
||||
},
|
||||
"months": {
|
||||
"january": "Janvier",
|
||||
"february": "Février",
|
||||
"march": "Mars",
|
||||
"april": "Avril",
|
||||
"may": "Mai",
|
||||
"june": "Juin",
|
||||
"july": "Juillet",
|
||||
"august": "Août",
|
||||
"september": "Septembre",
|
||||
"october": "Octobre",
|
||||
"november": "Novembre",
|
||||
"december": "Décembre"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Recherche :"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "L'hôte du serveur de synchronisation n'est pas configuré. Veuillez d'abord configurer la synchronisation.",
|
||||
"successful": "L'établissement de liaison du serveur de synchronisation a été réussi, la synchronisation a été démarrée."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Notes cachées",
|
||||
"search-history-title": "Historique de recherche",
|
||||
"note-map-title": "Carte de la Note",
|
||||
"sql-console-history-title": "Historique de la console SQL",
|
||||
"shared-notes-title": "Notes partagées",
|
||||
"bulk-action-title": "Action groupée",
|
||||
"backend-log-title": "Journal Backend",
|
||||
"user-hidden-title": "Utilisateur masqué",
|
||||
"launch-bar-templates-title": "Modèles de barre de raccourcis",
|
||||
"base-abstract-launcher-title": "Raccourci Base abstraite",
|
||||
"command-launcher-title": "Raccourci Commande",
|
||||
"note-launcher-title": "Raccourci Note",
|
||||
"script-launcher-title": "Raccourci Script",
|
||||
"built-in-widget-title": "Widget intégré",
|
||||
"spacer-title": "Séparateur",
|
||||
"custom-widget-title": "Widget personnalisé",
|
||||
"launch-bar-title": "Barre de lancement",
|
||||
"available-launchers-title": "Raccourcis disponibles",
|
||||
"go-to-previous-note-title": "Aller à la note précédente",
|
||||
"go-to-next-note-title": "Aller à la note suivante",
|
||||
"new-note-title": "Nouvelle note",
|
||||
"search-notes-title": "Rechercher des notes",
|
||||
"calendar-title": "Calendrier",
|
||||
"recent-changes-title": "Modifications récentes",
|
||||
"bookmarks-title": "Signets",
|
||||
"open-today-journal-note-title": "Ouvrir la note du journal du jour",
|
||||
"quick-search-title": "Recherche rapide",
|
||||
"protected-session-title": "Session protégée",
|
||||
"sync-status-title": "État de la synchronisation",
|
||||
"settings-title": "Réglages",
|
||||
"options-title": "Options",
|
||||
"appearance-title": "Apparence",
|
||||
"shortcuts-title": "Raccourcis",
|
||||
"text-notes": "Notes de texte",
|
||||
"code-notes-title": "Notes de code",
|
||||
"images-title": "Images",
|
||||
"spellcheck-title": "Correcteur orthographique",
|
||||
"password-title": "Mot de passe",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Sauvegarde",
|
||||
"sync-title": "Synchronisation",
|
||||
"other": "Autre",
|
||||
"advanced-title": "Avancé",
|
||||
"visible-launchers-title": "Raccourcis visibles",
|
||||
"user-guide": "Guide de l'utilisateur",
|
||||
"jump-to-note-title": "Aller à...",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"localization": "Langue et région",
|
||||
"inbox-title": "Boîte de réception",
|
||||
"command-palette": "Ouvrir la palette de commandes",
|
||||
"zen-mode": "Mode Zen"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nouvelle note",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Le fichier journal '{{ fileName }}' n'existe pas (encore).",
|
||||
"reading-log-failed": "La lecture du fichier journal d'administration '{{ fileName }}' a échoué."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Ce type de note ne peut pas être affiché."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Document PDF (*.pdf)",
|
||||
"unable-to-export-message": "La note actuelle n'a pas pu être exportée en format PDF.",
|
||||
"unable-to-export-title": "Impossible d'exporter au format PDF",
|
||||
"unable-to-save-message": "Le fichier sélectionné n'a pas pu être écrit. Réessayez ou sélectionnez une autre destination.",
|
||||
"unable-to-print": "Impossible d'imprimer la note"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Quitter Trilium",
|
||||
"recents": "Notes récentes",
|
||||
"bookmarks": "Signets",
|
||||
"today": "Ouvrir la note du journal du jour",
|
||||
"new-note": "Nouvelle note",
|
||||
"show-windows": "Afficher les fenêtres",
|
||||
"open_new_window": "Ouvrir une nouvelle fenêtre"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "La migration directe à partir de votre version actuelle n'est pas prise en charge. Veuillez d'abord mettre à jour vers la version v0.60.4, puis vers cette nouvelle version.",
|
||||
"error_message": "Erreur lors de la migration vers la version {{version}}: {{stack}}",
|
||||
"wrong_db_version": "La version de la base de données ({{version}}) est plus récente que ce que l'application supporte actuellement ({{targetVersion}}), ce qui signifie qu'elle a été créée par une version plus récente et incompatible de Trilium. Mettez à jour vers la dernière version de Trilium pour résoudre ce problème."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Erreur"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"command-palette": "Palette de commandes",
|
||||
"quick-search": "Recherche rapide",
|
||||
"back-in-note-history": "Revenir dans l’historique des notes",
|
||||
"forward-in-note-history": "Suivant dans l’historique des notes",
|
||||
"jump-to-note": "Aller à…",
|
||||
"scroll-to-active-note": "Faire défiler jusqu’à la note active",
|
||||
"search-in-subtree": "Rechercher dans la sous-arborescence",
|
||||
"expand-subtree": "Développer la sous-arborescence",
|
||||
"collapse-tree": "Réduire l’arborescence",
|
||||
"collapse-subtree": "Réduire la sous-arborescence",
|
||||
"sort-child-notes": "Trier les notes enfants",
|
||||
"create-note-after": "Créer une note après",
|
||||
"create-note-into": "Créer une note dans",
|
||||
"create-note-into-inbox": "Créer une note dans Inbox",
|
||||
"delete-notes": "Supprimer les notes",
|
||||
"move-note-up": "Remonter la note",
|
||||
"move-note-down": "Descendre la note",
|
||||
"move-note-up-in-hierarchy": "Monter la note dans la hiérarchie",
|
||||
"move-note-down-in-hierarchy": "Descendre la note dans la hiérarchie",
|
||||
"edit-note-title": "Modifier le titre de la note",
|
||||
"edit-branch-prefix": "Modifier le préfixe de la branche",
|
||||
"clone-notes-to": "Cloner les notes vers",
|
||||
"move-notes-to": "Déplacer les notes vers",
|
||||
"copy-notes-to-clipboard": "Copier les notes dans le presse-papiers",
|
||||
"paste-notes-from-clipboard": "Coller les notes depuis le presse-papiers",
|
||||
"cut-notes-to-clipboard": "Couper les notes vers le presse-papier",
|
||||
"select-all-notes-in-parent": "Selectionner toutes les notes dans le parent",
|
||||
"add-note-above-to-selection": "Ajouter la note au-dessus à la selection",
|
||||
"add-note-below-to-selection": "Ajouter la note dessous à la selection",
|
||||
"duplicate-subtree": "Dupliquer la sous-arborescence",
|
||||
"open-new-tab": "Ouvrir un nouvel onglet",
|
||||
"close-active-tab": "Fermer l'onglet actif",
|
||||
"reopen-last-tab": "Réouvrir le dernier onglet",
|
||||
"activate-next-tab": "Activer l'onglet suivant",
|
||||
"activate-previous-tab": "Activer l'onglet précédent",
|
||||
"open-new-window": "Ouvrir une nouvelle fenêtre",
|
||||
"toggle-system-tray-icon": "Activer/Désactiver l'icone de la barre d'état",
|
||||
"toggle-zen-mode": "Activer/Désactiver le mode Zen",
|
||||
"switch-to-first-tab": "Aller au premier onglet",
|
||||
"switch-to-second-tab": "Aller au second onglet",
|
||||
"switch-to-third-tab": "Aller au troisième onglet",
|
||||
"switch-to-fourth-tab": "Aller au quatrième onglet",
|
||||
"switch-to-fifth-tab": "Aller au cinquième onglet",
|
||||
"switch-to-sixth-tab": "Aller au sixième onglet",
|
||||
"switch-to-seventh-tab": "Aller au septième onglet",
|
||||
"switch-to-eighth-tab": "Aller au huitième onglet",
|
||||
"switch-to-ninth-tab": "Aller au neuvième onglet",
|
||||
"switch-to-last-tab": "Aller au dernier onglet",
|
||||
"show-note-source": "Afficher la source de la note",
|
||||
"show-options": "Afficher les options",
|
||||
"show-revisions": "Afficher les révisions",
|
||||
"show-recent-changes": "Afficher les changements récents",
|
||||
"show-sql-console": "Afficher la console SQL",
|
||||
"show-backend-log": "Afficher le journal du backend",
|
||||
"show-help": "Afficher l'aide",
|
||||
"show-cheatsheet": "Afficher la fiche de triche",
|
||||
"add-link-to-text": "Ajouter un lien au texte",
|
||||
"follow-link-under-cursor": "Suivre le lien en dessous du curseur",
|
||||
"insert-date-and-time-to-text": "Insérer la date et l'heure dans le texte",
|
||||
"paste-markdown-into-text": "Coller du Markdown dans le texte",
|
||||
"cut-into-note": "Couper dans une note",
|
||||
"add-include-note-to-text": "Ajouter une note inclusion au texte",
|
||||
"edit-read-only-note": "Modifier une note en lecture seule",
|
||||
"add-new-label": "Ajouter une nouvelle étiquette",
|
||||
"add-new-relation": "Ajouter une nouvelle relation",
|
||||
"toggle-ribbon-tab-classic-editor": "Basculer l'onglet Mise en forme de l'éditeur avec la barre d'outils fixe",
|
||||
"toggle-ribbon-tab-basic-properties": "Afficher/masquer les Propriétés de base de la note",
|
||||
"toggle-ribbon-tab-book-properties": "Afficher/masquer les Propriétés du Livre",
|
||||
"toggle-ribbon-tab-file-properties": "Afficher/masquer les Propriétés du fichier",
|
||||
"toggle-ribbon-tab-image-properties": "Afficher/masquer les Propriétés de l'image",
|
||||
"toggle-ribbon-tab-owned-attributes": "Afficher/masquer les Attributs propres",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Afficher/masquer les Attributs hérités",
|
||||
"toggle-right-pane": "Afficher le panneau de droite",
|
||||
"print-active-note": "Imprimer la note active",
|
||||
"export-active-note-as-pdf": "Exporter la note active en PDF",
|
||||
"open-note-externally": "Ouvrir la note à l'extérieur",
|
||||
"render-active-note": "Faire un rendu de la note active",
|
||||
"run-active-note": "Lancer la note active",
|
||||
"reload-frontend-app": "Recharger l'application Frontend",
|
||||
"open-developer-tools": "Ouvrir les outils développeur",
|
||||
"find-in-text": "Chercher un texte",
|
||||
"toggle-left-pane": "Afficher le panneau de gauche",
|
||||
"toggle-full-screen": "Passer en mode plein écran",
|
||||
"zoom-out": "Dézoomer",
|
||||
"zoom-in": "Zoomer",
|
||||
"reset-zoom-level": "Réinitilaliser le zoom",
|
||||
"copy-without-formatting": "Copier sans mise en forme",
|
||||
"force-save-revision": "Forcer la sauvegarde de la révision",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Basculer les attributs promus de l'onglet du ruban",
|
||||
"toggle-ribbon-tab-note-map": "Basculer l'onglet du ruban Note Map",
|
||||
"toggle-ribbon-tab-note-info": "Basculer l'onglet du ruban Note Info",
|
||||
"toggle-ribbon-tab-note-paths": "Basculer les chemins de notes de l'onglet du ruban",
|
||||
"toggle-ribbon-tab-similar-notes": "Basculer l'onglet du ruban Notes similaires",
|
||||
"toggle-note-hoisting": "Activer la focalisation sur la note",
|
||||
"unhoist-note": "Désactiver la focalisation sur la note"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Base de données non initialisée, merci de suivre les instructions à l'écran.",
|
||||
"db_not_initialized_server": "Base de données non initialisée, veuillez visitez - http://[your-server-host]:{{port}} pour consulter les instructions d'initialisation de Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Une instance est déjà en cours d'execution, ouverture de cette instance à la place."
|
||||
},
|
||||
"weekdayNumber": "Semaine {weekNumber}",
|
||||
"quarterNumber": "Trimestre {quarterNumber}",
|
||||
"share_theme": {
|
||||
"site-theme": "Thème du site",
|
||||
"search_placeholder": "Recherche...",
|
||||
"image_alt": "Image de l'article",
|
||||
"last-updated": "Dernière mise à jour le {{- date}}",
|
||||
"subpages": "Sous-pages:",
|
||||
"on-this-page": "Sur cette page",
|
||||
"expand": "Développer"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Extrait de texte",
|
||||
"description": "Description",
|
||||
"list-view": "Vue en liste",
|
||||
"grid-view": "Vue en grille",
|
||||
"calendar": "Calendrier",
|
||||
"table": "Tableau",
|
||||
"geo-map": "Carte géographique",
|
||||
"start-date": "Date de début",
|
||||
"end-date": "Date de fin",
|
||||
"start-time": "Heure de début",
|
||||
"end-time": "Heure de fin",
|
||||
"geolocation": "Géolocalisation",
|
||||
"built-in-templates": "Modèles intégrés",
|
||||
"board": "Tableau de bord",
|
||||
"status": "État",
|
||||
"board_note_first": "Première note",
|
||||
"board_note_second": "Deuxième note",
|
||||
"board_note_third": "Troisième note",
|
||||
"board_status_todo": "A faire",
|
||||
"board_status_progress": "En cours",
|
||||
"board_status_done": "Terminé",
|
||||
"presentation": "Présentation",
|
||||
"presentation_slide": "Diapositive de présentation",
|
||||
"presentation_slide_first": "Première diapositive",
|
||||
"presentation_slide_second": "Deuxième diapositive",
|
||||
"background": "Arrière-plan"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,441 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Téigh go dtí an nóta roimhe seo sa stair",
|
||||
"forward-in-note-history": "Téigh go dtí an chéad nóta eile sa stair",
|
||||
"open-jump-to-note-dialog": "Oscail an dialóg \"Léim go dtí an nóta\"",
|
||||
"open-command-palette": "Oscail pailéad orduithe",
|
||||
"scroll-to-active-note": "Scrollaigh crann na nótaí go dtí an nóta gníomhach",
|
||||
"quick-search": "Gníomhachtaigh an barra cuardaigh thapa",
|
||||
"search-in-subtree": "Cuardaigh nótaí i bhfo-chrann an nóta ghníomhaigh",
|
||||
"expand-subtree": "Leathnaigh fo-chrann an nóta reatha",
|
||||
"collapse-tree": "Laghdaíonn sé an crann nótaí iomlán",
|
||||
"collapse-subtree": "Laghdaíonn sé fo-chrann an nóta reatha",
|
||||
"sort-child-notes": "Sórtáil nótaí leanaí",
|
||||
"creating-and-moving-notes": "Nótaí a chruthú agus a bhogadh",
|
||||
"create-note-after": "Cruthaigh nóta i ndiaidh nóta gníomhach",
|
||||
"create-note-into": "Cruthaigh nóta mar leanbh den nóta gníomhach",
|
||||
"create-note-into-inbox": "Cruthaigh nóta sa bhosca isteach (más sainithe) nó nóta lae",
|
||||
"delete-note": "Scrios nóta",
|
||||
"move-note-up": "Bog nóta suas",
|
||||
"move-note-down": "Bog nóta síos",
|
||||
"move-note-up-in-hierarchy": "Bog nóta suas san ordlathas",
|
||||
"move-note-down-in-hierarchy": "Bog nóta síos san ordlathas",
|
||||
"edit-note-title": "Léim ón gcrann go dtí sonraí an nóta agus cuir an teideal in eagar",
|
||||
"edit-branch-prefix": "Taispeáin an dialóg \"Cuir réimír na brainse in eagar\"",
|
||||
"clone-notes-to": "Clónáil nótaí roghnaithe",
|
||||
"move-notes-to": "Bog nótaí roghnaithe",
|
||||
"note-clipboard": "Gearrthaisce nótaí",
|
||||
"copy-notes-to-clipboard": "Cóipeáil na nótaí roghnaithe chuig an ghearrthaisce",
|
||||
"paste-notes-from-clipboard": "Greamaigh nótaí ón ghearrthaisce isteach sa nóta gníomhach",
|
||||
"cut-notes-to-clipboard": "Gearr nótaí roghnaithe chuig an ghearrthaisce",
|
||||
"select-all-notes-in-parent": "Roghnaigh na nótaí go léir ón leibhéal nóta reatha",
|
||||
"add-note-above-to-the-selection": "Cuir nóta thuas leis an rogha",
|
||||
"add-note-below-to-selection": "Cuir nóta leis an rogha thíos",
|
||||
"duplicate-subtree": "Fo-chrann dúblach",
|
||||
"tabs-and-windows": "Cluaisíní agus Fuinneoga",
|
||||
"open-new-tab": "Oscail cluaisín nua",
|
||||
"close-active-tab": "Dún an cluaisín gníomhach",
|
||||
"reopen-last-tab": "Athoscail an cluaisín deireanach a dúnadh",
|
||||
"activate-next-tab": "Gníomhachtaigh an cluaisín ar dheis",
|
||||
"activate-previous-tab": "Gníomhachtaigh an cluaisín ar chlé",
|
||||
"open-new-window": "Oscail fuinneog nua folamh",
|
||||
"toggle-tray": "Taispeáin/folaigh an feidhmchlár ón tráidire córais",
|
||||
"first-tab": "Gníomhachtaigh an chéad chluaisín sa liosta",
|
||||
"second-tab": "Gníomhachtaigh an dara cluaisín sa liosta",
|
||||
"third-tab": "Gníomhachtaigh an tríú cluaisín sa liosta",
|
||||
"fourth-tab": "Gníomhachtaigh an ceathrú cluaisín sa liosta",
|
||||
"fifth-tab": "Gníomhachtaigh an cúigiú cluaisín sa liosta",
|
||||
"sixth-tab": "Gníomhachtaigh an séú cluaisín sa liosta",
|
||||
"seventh-tab": "Gníomhachtaigh an seachtú cluaisín sa liosta",
|
||||
"eight-tab": "Gníomhachtaigh an t-ochtú cluaisín sa liosta",
|
||||
"ninth-tab": "Gníomhachtaigh an naoú cluaisín sa liosta",
|
||||
"last-tab": "Gníomhachtaigh an cluaisín deireanach sa liosta",
|
||||
"dialogs": "Dialóga",
|
||||
"show-note-source": "Taispeáin an dialóg \"Foinse an Nóta\"",
|
||||
"show-options": "Oscail an leathanach \"Roghanna\"",
|
||||
"show-revisions": "Taispeáin an dialóg \"Athbhreithnithe Nóta\"",
|
||||
"show-recent-changes": "Taispeáin an dialóg \"Athruithe Le Déanaí\"",
|
||||
"show-sql-console": "Oscail an leathanach \"Consól SQL\"",
|
||||
"show-backend-log": "Oscail an leathanach \"Log Backend\"",
|
||||
"show-help": "Oscail an Treoir Úsáideora ionsuite",
|
||||
"show-cheatsheet": "Taispeáin modal le hoibríochtaí coitianta méarchláir",
|
||||
"text-note-operations": "Oibríochtaí nótaí téacs",
|
||||
"add-link-to-text": "Oscail an dialóg chun nasc a chur leis an téacs",
|
||||
"follow-link-under-cursor": "Lean an nasc ina bhfuil an caret curtha",
|
||||
"insert-date-and-time-to-text": "Cuir an dáta agus an t-am reatha isteach sa téacs",
|
||||
"paste-markdown-into-text": "Greamaigh Markdown ón ghearrthaisce isteach i nóta téacs",
|
||||
"cut-into-note": "Gearrann sé an rogha ón nóta reatha agus cruthaíonn sé fo-nóta leis an téacs roghnaithe",
|
||||
"add-include-note-to-text": "Osclaíonn an dialóg chun nóta a chur san áireamh",
|
||||
"edit-readonly-note": "Cuir nóta inléite amháin in eagar",
|
||||
"attributes-labels-and-relations": "Tréithe (lipéid & caidrimh)",
|
||||
"add-new-label": "Cruthaigh lipéad nua",
|
||||
"create-new-relation": "Cruthaigh caidreamh nua",
|
||||
"ribbon-tabs": "Cluaisíní ribín",
|
||||
"toggle-basic-properties": "Airíonna Bunúsacha a Athrú",
|
||||
"toggle-file-properties": "Airíonna Comhaid a Athrú",
|
||||
"toggle-image-properties": "Airíonna Íomhá a Athrú",
|
||||
"toggle-owned-attributes": "Tréithe faoi Úinéireacht a Athrú",
|
||||
"toggle-inherited-attributes": "Tréithe Oidhreachta a Athrú",
|
||||
"toggle-promoted-attributes": "Tréithe Curtha Chun Cinn a Athrú",
|
||||
"toggle-link-map": "Léarscáil Nasc a Athsholáthar",
|
||||
"toggle-note-info": "Eolas Nóta a Athrú",
|
||||
"toggle-note-paths": "Cosáin Nótaí a Athrú",
|
||||
"toggle-similar-notes": "Nótaí Cosúla a Athsholáthar",
|
||||
"other": "Eile",
|
||||
"toggle-right-pane": "Athraigh taispeáint an phainéil dheis, lena n-áirítear Clár Ábhair agus Buaicphointí",
|
||||
"print-active-note": "Priontáil nóta gníomhach",
|
||||
"open-note-externally": "Oscail nóta mar chomhad leis an bhfeidhmchlár réamhshocraithe",
|
||||
"render-active-note": "Rindreáil (ath-rindreáil) nóta gníomhach",
|
||||
"run-active-note": "Rith nóta cóid JavaScript gníomhach (frontend/backend)",
|
||||
"toggle-note-hoisting": "Scoránaigh ardú nóta an nóta ghníomhaigh",
|
||||
"unhoist": "Dí-ardaigh ó áit ar bith",
|
||||
"reload-frontend-app": "Athlódáil an tosaigh",
|
||||
"open-dev-tools": "Uirlisí forbróra oscailte",
|
||||
"find-in-text": "Painéal cuardaigh a scoránaigh",
|
||||
"toggle-left-note-tree-panel": "Scoránaigh an painéal ar chlé (crann nótaí)",
|
||||
"toggle-full-screen": "Scoraigh an scáileán iomlán",
|
||||
"zoom-out": "Zúmáil Amach",
|
||||
"zoom-in": "Zúmáil Isteach",
|
||||
"note-navigation": "Nascleanúint nótaí",
|
||||
"reset-zoom-level": "Athshocraigh leibhéal súmála",
|
||||
"copy-without-formatting": "Cóipeáil téacs roghnaithe gan fhormáidiú",
|
||||
"force-save-revision": "Cruthú/sábháil nóta nua den nóta gníomhach i bhfeidhm",
|
||||
"toggle-book-properties": "Airíonna an Bhailiúcháin a Athrú",
|
||||
"toggle-classic-editor-toolbar": "Athraigh an cluaisín Formáidithe don eagarthóir leis an mbarra uirlisí socraithe",
|
||||
"export-as-pdf": "Easpórtáil an nóta reatha mar PDF",
|
||||
"toggle-zen-mode": "Cumasaíonn/díchumasaíonn sé an mód zen (comhad úsáideora íosta le haghaidh eagarthóireacht níos dírithe)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Ar ais i Stair na Nótaí",
|
||||
"forward-in-note-history": "Ar Aghaidh i Stair na Nótaí",
|
||||
"jump-to-note": "Léim go...",
|
||||
"command-palette": "Pailéad Ordú",
|
||||
"scroll-to-active-note": "Scrollaigh go dtí an Nóta Gníomhach",
|
||||
"quick-search": "Cuardach Tapa",
|
||||
"search-in-subtree": "Cuardaigh i bhFo-chrann",
|
||||
"expand-subtree": "Leathnaigh an Fo-Chrann",
|
||||
"collapse-tree": "Laghdaigh Crann",
|
||||
"collapse-subtree": "Laghdaigh Fo-chrann",
|
||||
"sort-child-notes": "Sórtáil Nótaí Leanaí",
|
||||
"create-note-after": "Cruthaigh Nóta Tar éis",
|
||||
"create-note-into": "Cruthaigh Nóta Isteach",
|
||||
"create-note-into-inbox": "Cruthaigh Nóta sa Bhosca Isteach",
|
||||
"delete-notes": "Scrios Nótaí",
|
||||
"move-note-up": "Bog Nóta Suas",
|
||||
"move-note-down": "Bog Nóta Síos",
|
||||
"move-note-up-in-hierarchy": "Bog Nóta Suas san Ordlathas",
|
||||
"move-note-down-in-hierarchy": "Bog Nóta Síos san Ordlathas",
|
||||
"edit-note-title": "Cuir Teideal an Nóta in Eagar",
|
||||
"edit-branch-prefix": "Cuir Réimír na Brainse in Eagar",
|
||||
"clone-notes-to": "Nótaí Clónála Chuig",
|
||||
"move-notes-to": "Bog Nótaí Chuig",
|
||||
"copy-notes-to-clipboard": "Cóipeáil Nótaí chuig an nGearrthaisce",
|
||||
"paste-notes-from-clipboard": "Greamaigh Nótaí ón nGearrthaisce",
|
||||
"cut-notes-to-clipboard": "Gearr Nótaí chuig an nGearrthaisce",
|
||||
"select-all-notes-in-parent": "Roghnaigh Gach Nóta sa Tuismitheoir",
|
||||
"add-note-above-to-selection": "Cuir Nóta Thuas leis an Roghnú",
|
||||
"add-note-below-to-selection": "Cuir Nóta Thíos leis an Roghnú",
|
||||
"duplicate-subtree": "Fo-chrann Dúblach",
|
||||
"open-new-tab": "Oscail Cluaisín Nua",
|
||||
"close-active-tab": "Dún an Cluaisín Gníomhach",
|
||||
"reopen-last-tab": "Athoscail an Cluaisín Deireanach",
|
||||
"activate-next-tab": "Gníomhachtaigh an Chluaisín Eile",
|
||||
"activate-previous-tab": "Gníomhachtaigh an Cluaisín Roimhe Seo",
|
||||
"open-new-window": "Oscail Fuinneog Nua",
|
||||
"toggle-system-tray-icon": "Deilbhín Tráidire an Chórais a Athrú",
|
||||
"toggle-zen-mode": "Mód Zen a athrú",
|
||||
"switch-to-first-tab": "Athraigh go dtí an Chéad Chluaisín",
|
||||
"switch-to-second-tab": "Athraigh go dtí an Dara Cluaisín",
|
||||
"switch-to-third-tab": "Athraigh go dtí an Tríú Cluaisín",
|
||||
"switch-to-fourth-tab": "Athraigh go dtí an Ceathrú Cluaisín",
|
||||
"switch-to-fifth-tab": "Athraigh go dtí an Cúigiú Cluaisín",
|
||||
"switch-to-sixth-tab": "Athraigh go dtí an Séú Cluaisín",
|
||||
"switch-to-seventh-tab": "Athraigh go dtí an Seachtú Cluaisín",
|
||||
"switch-to-eighth-tab": "Athraigh go dtí an tOchtú Cluaisín",
|
||||
"switch-to-ninth-tab": "Athraigh go dtí an Naoú Cluaisín",
|
||||
"switch-to-last-tab": "Athraigh go dtí an Cluaisín Deireanach",
|
||||
"show-note-source": "Taispeáin Foinse an Nóta",
|
||||
"show-options": "Taispeáin Roghanna",
|
||||
"show-revisions": "Taispeáin Athbhreithnithe",
|
||||
"show-recent-changes": "Taispeáin Athruithe Le Déanaí",
|
||||
"show-sql-console": "Taispeáin Consól SQL",
|
||||
"show-backend-log": "Taispeáin Logáil an Chúil",
|
||||
"show-help": "Taispeáin Cabhair",
|
||||
"show-cheatsheet": "Taispeáin Bileog Leideanna",
|
||||
"add-link-to-text": "Cuir Nasc leis an Téacs",
|
||||
"follow-link-under-cursor": "Lean an Nasc Faoin gCúrsóir",
|
||||
"insert-date-and-time-to-text": "Cuir Dáta agus Am isteach sa Téacs",
|
||||
"paste-markdown-into-text": "Greamaigh Markdown isteach sa Téacs",
|
||||
"cut-into-note": "Gearr isteach i Nóta",
|
||||
"add-include-note-to-text": "Cuir Nóta le Téacs",
|
||||
"edit-read-only-note": "Cuir Nóta Léite Amháin in Eagar",
|
||||
"add-new-label": "Cuir Lipéad Nua leis",
|
||||
"add-new-relation": "Cuir Gaol Nua leis",
|
||||
"toggle-ribbon-tab-classic-editor": "Eagarthóir Clasaiceach Cluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-basic-properties": "Airíonna Bunúsacha an Chluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-book-properties": "Airíonna Leabhar an Chluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-file-properties": "Airíonna Comhaid Tab Ribín a Athrú",
|
||||
"toggle-ribbon-tab-image-properties": "Airíonna Íomhá an Chluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-owned-attributes": "Tréithe atá faoi úinéireacht ag an gcluaisín ribín",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Tréithe Oidhreachta Cluaisín Ribín a Scor",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Tréithe Curtha Chun Cinn sa Chluaisín Ribín",
|
||||
"toggle-ribbon-tab-note-map": "Léarscáil Nótaí Tab Ribín a Athrú",
|
||||
"toggle-ribbon-tab-note-info": "Eolas Nóta Cluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-note-paths": "Cosáin Nóta Cluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-similar-notes": "Nótaí Cosúla a Athraigh an Cluaisín Ribín",
|
||||
"toggle-right-pane": "Scoránaigh an Phána Ar Dheis",
|
||||
"print-active-note": "Priontáil Nóta Gníomhach",
|
||||
"export-active-note-as-pdf": "Easpórtáil Nóta Gníomhach mar PDF",
|
||||
"open-note-externally": "Oscail Nóta go Seachtrach",
|
||||
"render-active-note": "Rindreáil Nóta Gníomhach",
|
||||
"run-active-note": "Rith Nóta Gníomhach",
|
||||
"toggle-note-hoisting": "Ardú Nótaí a Athrú",
|
||||
"unhoist-note": "Nóta Dí-Ardaithe",
|
||||
"reload-frontend-app": "Athlódáil an Aip Tosaigh",
|
||||
"open-developer-tools": "Oscail Uirlisí Forbróra",
|
||||
"find-in-text": "Aimsigh sa Téacs",
|
||||
"toggle-left-pane": "Scoránaigh an Phána Chlé",
|
||||
"toggle-full-screen": "Athraigh an Scáileán Lán",
|
||||
"zoom-out": "Zúmáil Amach",
|
||||
"zoom-in": "Zúmáil Isteach",
|
||||
"reset-zoom-level": "Athshocraigh Leibhéal Súmála",
|
||||
"copy-without-formatting": "Cóipeáil Gan Formáidiú",
|
||||
"force-save-revision": "Athbhreithniú Sábháilte Fórsála"
|
||||
},
|
||||
"login": {
|
||||
"title": "Logáil Isteach",
|
||||
"heading": "Logáil Isteach Trilium",
|
||||
"incorrect-totp": "Tá an TOTP mícheart. Déan iarracht arís.",
|
||||
"incorrect-password": "Tá an focal faire mícheart. Déan iarracht arís.",
|
||||
"password": "Pasfhocal",
|
||||
"remember-me": "Cuimhnigh orm",
|
||||
"button": "Logáil Isteach",
|
||||
"sign_in_with_sso": "Sínigh isteach le {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Socraigh Pasfhocal",
|
||||
"heading": "Socraigh pasfhocal",
|
||||
"description": "Sula dtosaíonn tú ag úsáid Trilium ón ngréasán, ní mór duit pasfhocal a shocrú ar dtús. Úsáidfidh tú an pasfhocal seo ansin chun logáil isteach.",
|
||||
"password": "Pasfhocal",
|
||||
"password-confirmation": "Deimhniú pasfhocail",
|
||||
"button": "Socraigh pasfhocal"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Socrú Trilium Notes",
|
||||
"new-document": "Is úsáideoir nua mé, agus ba mhaith liom doiciméad Trilium nua a chruthú do mo nótaí",
|
||||
"sync-from-desktop": "Tá cás deisce agam cheana féin, agus ba mhaith liom sioncrónú a shocrú leis",
|
||||
"sync-from-server": "Tá sampla freastalaí agam cheana féin, agus ba mhaith liom sioncrónú a shocrú leis",
|
||||
"next": "Ar Aghaidh",
|
||||
"init-in-progress": "Túsú doiciméad ar siúl",
|
||||
"redirecting": "Atreorófar chuig an bhfeidhmchlár thú go luath.",
|
||||
"title": "Socrú"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sioncrónaigh ón Deasc",
|
||||
"description": "Ní mór an socrú seo a thionscnamh ón deasc:",
|
||||
"step1": "Oscail sampla de Trilium Notes ar do dheasc.",
|
||||
"step2": "Ón Roghchlár Trilium, cliceáil Roghanna.",
|
||||
"step3": "Cliceáil ar an gcatagóir Sioncrónaigh.",
|
||||
"step4": "Athraigh seoladh an fhreastalaí go: {{- host}} agus cliceáil Sábháil.",
|
||||
"step5": "Cliceáil an cnaipe \"Tástáil sioncrónaithe\" chun a fhíorú go bhfuil an nasc rathúil.",
|
||||
"step6": "Nuair a bheidh na céimeanna seo críochnaithe agat, cliceáil {{- link}}.",
|
||||
"step6-here": "anseo"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sioncrónaigh ón bhFreastalaí",
|
||||
"instructions": "Cuir isteach seoladh agus dintiúir freastalaí Trilium thíos le do thoil. Íoslódálfaidh sé seo an doiciméad Trilium iomlán ón bhfreastalaí agus socróidh sé sioncrónú leis. Ag brath ar mhéid an doiciméid agus luas do nasc, d'fhéadfadh sé seo tamall a thógáil.",
|
||||
"server-host": "Seoladh freastalaí Trilium",
|
||||
"server-host-placeholder": "https://<ainm óstach>:<port>",
|
||||
"proxy-server": "Freastalaí seachfhreastalaí (roghnach)",
|
||||
"proxy-server-placeholder": "https://<ainm óstach>:<port>",
|
||||
"note": "Nóta:",
|
||||
"proxy-instruction": "Má fhágann tú an socrú seachfhreastalaí bán, úsáidfear seachfhreastalaí an chórais (baineann sé leis an bhfeidhmchlár deisce amháin)",
|
||||
"password": "Pasfhocal",
|
||||
"password-placeholder": "Pasfhocal",
|
||||
"back": "Ar ais",
|
||||
"finish-setup": "Críochnaigh an socrú"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sioncrónú ar siúl",
|
||||
"successful": "Tá an sioncrónú socraithe i gceart. Tógfaidh sé tamall go mbeidh an sioncrónú tosaigh críochnaithe. Nuair a bheidh sé déanta, atreorófar chuig an leathanach logála isteach thú.",
|
||||
"outstanding-items": "Míreanna sioncrónaithe gan réiteach:",
|
||||
"outstanding-items-default": "N/B"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Níor aimsíodh",
|
||||
"heading": "Níor aimsíodh"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "tuismitheoir:",
|
||||
"clipped-from": "Gearradh an nóta seo ó {{- url}} ar dtús",
|
||||
"child-notes": "Nótaí leanaí:",
|
||||
"no-content": "Níl aon ábhar sa nóta seo."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Dé Luain",
|
||||
"tuesday": "Dé Máirt",
|
||||
"wednesday": "Dé Céadaoin",
|
||||
"thursday": "Déardaoin",
|
||||
"friday": "Dé hAoine",
|
||||
"saturday": "Dé Sathairn",
|
||||
"sunday": "Dé Domhnaigh"
|
||||
},
|
||||
"weekdayNumber": "Seachtain {weekNumber}",
|
||||
"months": {
|
||||
"january": "Eanáir",
|
||||
"february": "Feabhra",
|
||||
"march": "Márta",
|
||||
"april": "Aibreán",
|
||||
"may": "Bealtaine",
|
||||
"june": "Meitheamh",
|
||||
"july": "Iúil",
|
||||
"august": "Lúnasa",
|
||||
"september": "Meán Fómhair",
|
||||
"october": "Deireadh Fómhair",
|
||||
"november": "Samhain",
|
||||
"december": "Nollaig"
|
||||
},
|
||||
"quarterNumber": "Ráithe {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Cuardaigh:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Níl an freastalaí sioncrónaithe cumraithe. Cumraigh an sioncrónú ar dtús.",
|
||||
"successful": "Tá croitheadh láimhe an fhreastalaí sioncrónaithe tar éis a bheith rathúil, tá tús curtha leis an sioncrónú."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Nótaí Folaithe",
|
||||
"search-history-title": "Stair Chuardaigh",
|
||||
"note-map-title": "Léarscáil Nótaí",
|
||||
"sql-console-history-title": "Stair Chonsól SQL",
|
||||
"shared-notes-title": "Nótaí Comhroinnte",
|
||||
"bulk-action-title": "Gníomh Bulc",
|
||||
"backend-log-title": "Logáil Cúil",
|
||||
"user-hidden-title": "Úsáideoir i bhfolach",
|
||||
"launch-bar-templates-title": "Teimpléid Barra Seolta",
|
||||
"base-abstract-launcher-title": "Tosaitheoir Bunúsach Teibí",
|
||||
"command-launcher-title": "Tosaitheoir Ordú",
|
||||
"note-launcher-title": "Tosaitheoir Nótaí",
|
||||
"script-launcher-title": "Tosaitheoir Scripte",
|
||||
"built-in-widget-title": "Giuirléid Tógtha isteach",
|
||||
"spacer-title": "Spásaire",
|
||||
"custom-widget-title": "Giuirléid Saincheaptha",
|
||||
"launch-bar-title": "Barra Lainseáil",
|
||||
"available-launchers-title": "Lainseálaithe atá ar Fáil",
|
||||
"go-to-previous-note-title": "Téigh go dtí an Nóta Roimhe Seo",
|
||||
"go-to-next-note-title": "Téigh go dtí an chéad Nóta Eile",
|
||||
"new-note-title": "Nóta Nua",
|
||||
"search-notes-title": "Cuardaigh Nótaí",
|
||||
"jump-to-note-title": "Léim go...",
|
||||
"calendar-title": "Féilire",
|
||||
"recent-changes-title": "Athruithe Le Déanaí",
|
||||
"bookmarks-title": "Leabharmharcanna",
|
||||
"command-palette": "Oscail an Pailéad Ordaithe",
|
||||
"zen-mode": "Mód Zen",
|
||||
"open-today-journal-note-title": "Oscail Nóta Dialainne an Lae Inniu",
|
||||
"quick-search-title": "Cuardach Tapa",
|
||||
"protected-session-title": "Seisiún faoi Chosaint",
|
||||
"sync-status-title": "Stádas Sioncrónaithe",
|
||||
"settings-title": "Socruithe",
|
||||
"llm-chat-title": "Comhrá le Nótaí",
|
||||
"options-title": "Roghanna",
|
||||
"appearance-title": "Dealramh",
|
||||
"shortcuts-title": "Aicearraí",
|
||||
"text-notes": "Nótaí Téacs",
|
||||
"code-notes-title": "Nótaí Cód",
|
||||
"images-title": "Íomhánna",
|
||||
"spellcheck-title": "Seiceáil litrithe",
|
||||
"password-title": "Pasfhocal",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Cúltaca",
|
||||
"sync-title": "Sioncrónaigh",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "Eile",
|
||||
"advanced-title": "Ardleibhéil",
|
||||
"visible-launchers-title": "Lainseálaithe Infheicthe",
|
||||
"user-guide": "Treoir Úsáideora",
|
||||
"localization": "Teanga & Réigiún",
|
||||
"inbox-title": "Bosca isteach",
|
||||
"tab-switcher-title": "Athraitheoir Cluaisíní"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nóta nua",
|
||||
"duplicate-note-suffix": "(dúpáil)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Níl an comhad loga cúil '{{ fileName }}' ann (go fóill).",
|
||||
"reading-log-failed": "Theip ar an gcomhad loga cúil '{{ fileName }}' a léamh."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Ní féidir an cineál nóta seo a thaispeáint."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Doiciméad PDF (*.pdf)",
|
||||
"unable-to-export-message": "Níorbh fhéidir an nóta reatha a easpórtáil mar PDF.",
|
||||
"unable-to-export-title": "Ní féidir a onnmhairiú mar PDF",
|
||||
"unable-to-save-message": "Níorbh fhéidir scríobh chuig an gcomhad roghnaithe. Déan iarracht eile nó roghnaigh ceann scríbe eile.",
|
||||
"unable-to-print": "Ní féidir an nóta a phriontáil"
|
||||
},
|
||||
"tray": {
|
||||
"close": "Scoir de Trilium",
|
||||
"recents": "Nótaí le déanaí",
|
||||
"bookmarks": "Leabharmharcanna",
|
||||
"today": "Oscail nóta dialainne an lae inniu",
|
||||
"new-note": "Nóta nua",
|
||||
"show-windows": "Taispeáin fuinneoga",
|
||||
"open_new_window": "Oscail fuinneog nua",
|
||||
"tooltip": "Trilium Notes"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "Ní thacaítear le haistriú díreach ó do leagan reatha. Uasghrádaigh go dtí an leagan is déanaí v0.60.4 ar dtús agus ansin go dtí an leagan seo amháin.",
|
||||
"error_message": "Earráid le linn imirce go leagan {{version}}: {{stack}}",
|
||||
"wrong_db_version": "Tá leagan an bhunachair shonraí ({{version}}) níos nuaí ná mar a bhfuil súil ag an bhfeidhmchlár leis ({{targetVersion}}), rud a chiallaíonn gur cruthaíodh é le leagan níos nuaí agus neamh-chomhoiriúnach de Trilium. Uasghrádaigh go dtí an leagan is déanaí de Trilium chun an fhadhb seo a réiteach."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Earráid"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Téama an tSuímh",
|
||||
"search_placeholder": "Cuardaigh...",
|
||||
"image_alt": "Íomhá an Airteagail",
|
||||
"last-updated": "Nuashonraithe go deireanach ar {{- date}}",
|
||||
"subpages": "Fo-leathanaigh:",
|
||||
"on-this-page": "Ar an Leathanach seo",
|
||||
"expand": "Leathnaigh"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Sleachta Téacs",
|
||||
"description": "Cur síos",
|
||||
"list-view": "Amharc Liosta",
|
||||
"grid-view": "Radharc Eangaí",
|
||||
"calendar": "Féilire",
|
||||
"table": "Tábla",
|
||||
"geo-map": "Léarscáil Gheografach",
|
||||
"start-date": "Dáta Tosaigh",
|
||||
"end-date": "Dáta Deiridh",
|
||||
"start-time": "Am Tosaigh",
|
||||
"end-time": "Am Deiridh",
|
||||
"geolocation": "Geoshuíomh",
|
||||
"built-in-templates": "Teimpléid ionsuite",
|
||||
"board": "Bord Kanban",
|
||||
"status": "Stádas",
|
||||
"board_note_first": "An chéad nóta",
|
||||
"board_note_second": "An dara nóta",
|
||||
"board_note_third": "An tríú nóta",
|
||||
"board_status_todo": "Le Déanamh",
|
||||
"board_status_progress": "Ar Siúl",
|
||||
"board_status_done": "Déanta",
|
||||
"presentation": "Cur i Láthair",
|
||||
"presentation_slide": "Sleamhnán cur i láthair",
|
||||
"presentation_slide_first": "An chéad sleamhnán",
|
||||
"presentation_slide_second": "An dara sleamhnán",
|
||||
"background": "Cúlra"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Níl an bunachar sonraí tosaithe, lean na treoracha ar an scáileán le do thoil.",
|
||||
"db_not_initialized_server": "Níl an bunachar sonraí tosaithe, tabhair cuairt ar an leathanach socraithe - http://[your-server-host]:{{port}} le treoracha a fheiceáil maidir le conas Trilium a thosú."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Tá sampla ag rith cheana féin, agus tá fócas á chur ar an sampla sin ina ionad."
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Téigh go dtí an nóta roimhe seo sa stair",
|
||||
"forward-in-note-history": "Téigh go dtí an chéad nóta eile sa stair",
|
||||
"open-jump-to-note-dialog": "Oscail an dialóg \"Léim go dtí an nóta\"",
|
||||
"open-command-palette": "Oscail pailéad orduithe",
|
||||
"scroll-to-active-note": "Scrollaigh crann na nótaí go dtí an nóta gníomhach",
|
||||
"quick-search": "Gníomhachtaigh an barra cuardaigh thapa",
|
||||
"search-in-subtree": "Cuardaigh nótaí i bhfo-chrann an nóta ghníomhaigh",
|
||||
"expand-subtree": "Leathnaigh fo-chrann an nóta reatha",
|
||||
"collapse-tree": "Laghdaíonn sé an crann nótaí iomlán",
|
||||
"collapse-subtree": "Laghdaíonn sé fo-chrann an nóta reatha",
|
||||
"sort-child-notes": "Sórtáil nótaí leanaí",
|
||||
"creating-and-moving-notes": "Nótaí a chruthú agus a bhogadh",
|
||||
"create-note-after": "Cruthaigh nóta i ndiaidh nóta gníomhach",
|
||||
"create-note-into": "Cruthaigh nóta mar leanbh den nóta gníomhach",
|
||||
"create-note-into-inbox": "Cruthaigh nóta sa bhosca isteach (más sainithe) nó nóta lae",
|
||||
"delete-note": "Scrios nóta",
|
||||
"move-note-up": "Bog nóta suas",
|
||||
"move-note-down": "Bog nóta síos",
|
||||
"move-note-up-in-hierarchy": "Bog nóta suas san ordlathas",
|
||||
"move-note-down-in-hierarchy": "Bog nóta síos san ordlathas",
|
||||
"edit-note-title": "Léim ón gcrann go dtí sonraí an nóta agus cuir an teideal in eagar",
|
||||
"edit-branch-prefix": "Taispeáin an dialóg \"Cuir réimír na brainse in eagar\"",
|
||||
"clone-notes-to": "Clónáil nótaí roghnaithe",
|
||||
"move-notes-to": "Bog nótaí roghnaithe",
|
||||
"note-clipboard": "Gearrthaisce nótaí",
|
||||
"copy-notes-to-clipboard": "Cóipeáil na nótaí roghnaithe chuig an ghearrthaisce",
|
||||
"paste-notes-from-clipboard": "Greamaigh nótaí ón ghearrthaisce isteach sa nóta gníomhach",
|
||||
"cut-notes-to-clipboard": "Gearr nótaí roghnaithe chuig an ghearrthaisce",
|
||||
"select-all-notes-in-parent": "Roghnaigh na nótaí go léir ón leibhéal nóta reatha",
|
||||
"add-note-above-to-the-selection": "Cuir nóta thuas leis an rogha",
|
||||
"add-note-below-to-selection": "Cuir nóta leis an rogha thíos",
|
||||
"duplicate-subtree": "Fo-chrann dúblach",
|
||||
"tabs-and-windows": "Cluaisíní agus Fuinneoga",
|
||||
"open-new-tab": "Oscail cluaisín nua",
|
||||
"close-active-tab": "Dún an cluaisín gníomhach",
|
||||
"reopen-last-tab": "Athoscail an cluaisín deireanach a dúnadh",
|
||||
"activate-next-tab": "Gníomhachtaigh an cluaisín ar dheis",
|
||||
"activate-previous-tab": "Gníomhachtaigh an cluaisín ar chlé",
|
||||
"open-new-window": "Oscail fuinneog nua folamh",
|
||||
"toggle-tray": "Taispeáin/folaigh an feidhmchlár ón tráidire córais",
|
||||
"first-tab": "Gníomhachtaigh an chéad chluaisín sa liosta",
|
||||
"second-tab": "Gníomhachtaigh an dara cluaisín sa liosta",
|
||||
"third-tab": "Gníomhachtaigh an tríú cluaisín sa liosta",
|
||||
"fourth-tab": "Gníomhachtaigh an ceathrú cluaisín sa liosta",
|
||||
"fifth-tab": "Gníomhachtaigh an cúigiú cluaisín sa liosta",
|
||||
"sixth-tab": "Gníomhachtaigh an séú cluaisín sa liosta",
|
||||
"seventh-tab": "Gníomhachtaigh an seachtú cluaisín sa liosta",
|
||||
"eight-tab": "Gníomhachtaigh an t-ochtú cluaisín sa liosta",
|
||||
"ninth-tab": "Gníomhachtaigh an naoú cluaisín sa liosta",
|
||||
"last-tab": "Gníomhachtaigh an cluaisín deireanach sa liosta",
|
||||
"dialogs": "Dialóga",
|
||||
"show-note-source": "Taispeáin an dialóg \"Foinse an Nóta\"",
|
||||
"show-options": "Oscail an leathanach \"Roghanna\"",
|
||||
"show-revisions": "Taispeáin an dialóg \"Athbhreithnithe Nóta\"",
|
||||
"show-recent-changes": "Taispeáin an dialóg \"Athruithe Le Déanaí\"",
|
||||
"show-sql-console": "Oscail an leathanach \"Consól SQL\"",
|
||||
"show-backend-log": "Oscail an leathanach \"Log Backend\"",
|
||||
"show-help": "Oscail an Treoir Úsáideora ionsuite",
|
||||
"show-cheatsheet": "Taispeáin modal le hoibríochtaí coitianta méarchláir",
|
||||
"text-note-operations": "Oibríochtaí nótaí téacs",
|
||||
"add-link-to-text": "Oscail an dialóg chun nasc a chur leis an téacs",
|
||||
"follow-link-under-cursor": "Lean an nasc ina bhfuil an caret curtha",
|
||||
"insert-date-and-time-to-text": "Cuir an dáta agus an t-am reatha isteach sa téacs",
|
||||
"paste-markdown-into-text": "Greamaigh Markdown ón ghearrthaisce isteach i nóta téacs",
|
||||
"cut-into-note": "Gearrann sé an rogha ón nóta reatha agus cruthaíonn sé fo-nóta leis an téacs roghnaithe",
|
||||
"add-include-note-to-text": "Osclaíonn an dialóg chun nóta a chur san áireamh",
|
||||
"edit-readonly-note": "Cuir nóta inléite amháin in eagar",
|
||||
"attributes-labels-and-relations": "Tréithe (lipéid & caidrimh)",
|
||||
"add-new-label": "Cruthaigh lipéad nua",
|
||||
"create-new-relation": "Cruthaigh caidreamh nua",
|
||||
"ribbon-tabs": "Cluaisíní ribín",
|
||||
"toggle-basic-properties": "Airíonna Bunúsacha a Athrú",
|
||||
"toggle-file-properties": "Airíonna Comhaid a Athrú",
|
||||
"toggle-image-properties": "Airíonna Íomhá a Athrú",
|
||||
"toggle-owned-attributes": "Tréithe faoi Úinéireacht a Athrú",
|
||||
"toggle-inherited-attributes": "Tréithe Oidhreachta a Athrú",
|
||||
"toggle-promoted-attributes": "Tréithe Curtha Chun Cinn a Athrú",
|
||||
"toggle-link-map": "Léarscáil Nasc a Athsholáthar",
|
||||
"toggle-note-info": "Eolas Nóta a Athrú",
|
||||
"toggle-note-paths": "Cosáin Nótaí a Athrú",
|
||||
"toggle-similar-notes": "Nótaí Cosúla a Athsholáthar",
|
||||
"other": "Eile",
|
||||
"toggle-right-pane": "Athraigh taispeáint an phainéil dheis, lena n-áirítear Clár Ábhair agus Buaicphointí",
|
||||
"print-active-note": "Priontáil nóta gníomhach",
|
||||
"open-note-externally": "Oscail nóta mar chomhad leis an bhfeidhmchlár réamhshocraithe",
|
||||
"render-active-note": "Rindreáil (ath-rindreáil) nóta gníomhach",
|
||||
"run-active-note": "Rith nóta cóid JavaScript gníomhach (frontend/backend)",
|
||||
"toggle-note-hoisting": "Scoránaigh ardú nóta an nóta ghníomhaigh",
|
||||
"unhoist": "Dí-ardaigh ó áit ar bith",
|
||||
"reload-frontend-app": "Athlódáil an tosaigh",
|
||||
"open-dev-tools": "Uirlisí forbróra oscailte",
|
||||
"find-in-text": "Painéal cuardaigh a scoránaigh",
|
||||
"toggle-left-note-tree-panel": "Scoránaigh an painéal ar chlé (crann nótaí)",
|
||||
"toggle-full-screen": "Scoraigh an scáileán iomlán",
|
||||
"zoom-out": "Zúmáil Amach",
|
||||
"zoom-in": "Zúmáil Isteach",
|
||||
"note-navigation": "Nascleanúint nótaí",
|
||||
"reset-zoom-level": "Athshocraigh leibhéal súmála",
|
||||
"copy-without-formatting": "Cóipeáil téacs roghnaithe gan fhormáidiú",
|
||||
"force-save-revision": "Cruthú/sábháil nóta nua den nóta gníomhach i bhfeidhm",
|
||||
"toggle-book-properties": "Airíonna an Bhailiúcháin a Athrú",
|
||||
"toggle-classic-editor-toolbar": "Athraigh an cluaisín Formáidithe don eagarthóir leis an mbarra uirlisí socraithe",
|
||||
"export-as-pdf": "Easpórtáil an nóta reatha mar PDF",
|
||||
"toggle-zen-mode": "Cumasaíonn/díchumasaíonn sé an mód zen (comhad úsáideora íosta le haghaidh eagarthóireacht níos dírithe)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Ar ais i Stair na Nótaí",
|
||||
"forward-in-note-history": "Ar Aghaidh i Stair na Nótaí",
|
||||
"jump-to-note": "Léim go...",
|
||||
"command-palette": "Pailéad Ordú",
|
||||
"scroll-to-active-note": "Scrollaigh go dtí an Nóta Gníomhach",
|
||||
"quick-search": "Cuardach Tapa",
|
||||
"search-in-subtree": "Cuardaigh i bhFo-chrann",
|
||||
"expand-subtree": "Leathnaigh an Fo-Chrann",
|
||||
"collapse-tree": "Laghdaigh Crann",
|
||||
"collapse-subtree": "Laghdaigh Fo-chrann",
|
||||
"sort-child-notes": "Sórtáil Nótaí Leanaí",
|
||||
"create-note-after": "Cruthaigh Nóta Tar éis",
|
||||
"create-note-into": "Cruthaigh Nóta Isteach",
|
||||
"create-note-into-inbox": "Cruthaigh Nóta sa Bhosca Isteach",
|
||||
"delete-notes": "Scrios Nótaí",
|
||||
"move-note-up": "Bog Nóta Suas",
|
||||
"move-note-down": "Bog Nóta Síos",
|
||||
"move-note-up-in-hierarchy": "Bog Nóta Suas san Ordlathas",
|
||||
"move-note-down-in-hierarchy": "Bog Nóta Síos san Ordlathas",
|
||||
"edit-note-title": "Cuir Teideal an Nóta in Eagar",
|
||||
"edit-branch-prefix": "Cuir Réimír na Brainse in Eagar",
|
||||
"clone-notes-to": "Nótaí Clónála Chuig",
|
||||
"move-notes-to": "Bog Nótaí Chuig",
|
||||
"copy-notes-to-clipboard": "Cóipeáil Nótaí chuig an nGearrthaisce",
|
||||
"paste-notes-from-clipboard": "Greamaigh Nótaí ón nGearrthaisce",
|
||||
"cut-notes-to-clipboard": "Gearr Nótaí chuig an nGearrthaisce",
|
||||
"select-all-notes-in-parent": "Roghnaigh Gach Nóta sa Tuismitheoir",
|
||||
"add-note-above-to-selection": "Cuir Nóta Thuas leis an Roghnú",
|
||||
"add-note-below-to-selection": "Cuir Nóta Thíos leis an Roghnú",
|
||||
"duplicate-subtree": "Fo-chrann Dúblach",
|
||||
"open-new-tab": "Oscail Cluaisín Nua",
|
||||
"close-active-tab": "Dún an Cluaisín Gníomhach",
|
||||
"reopen-last-tab": "Athoscail an Cluaisín Deireanach",
|
||||
"activate-next-tab": "Gníomhachtaigh an Chluaisín Eile",
|
||||
"activate-previous-tab": "Gníomhachtaigh an Cluaisín Roimhe Seo",
|
||||
"open-new-window": "Oscail Fuinneog Nua",
|
||||
"toggle-system-tray-icon": "Deilbhín Tráidire an Chórais a Athrú",
|
||||
"toggle-zen-mode": "Mód Zen a athrú",
|
||||
"switch-to-first-tab": "Athraigh go dtí an Chéad Chluaisín",
|
||||
"switch-to-second-tab": "Athraigh go dtí an Dara Cluaisín",
|
||||
"switch-to-third-tab": "Athraigh go dtí an Tríú Cluaisín",
|
||||
"switch-to-fourth-tab": "Athraigh go dtí an Ceathrú Cluaisín",
|
||||
"switch-to-fifth-tab": "Athraigh go dtí an Cúigiú Cluaisín",
|
||||
"switch-to-sixth-tab": "Athraigh go dtí an Séú Cluaisín",
|
||||
"switch-to-seventh-tab": "Athraigh go dtí an Seachtú Cluaisín",
|
||||
"switch-to-eighth-tab": "Athraigh go dtí an tOchtú Cluaisín",
|
||||
"switch-to-ninth-tab": "Athraigh go dtí an Naoú Cluaisín",
|
||||
"switch-to-last-tab": "Athraigh go dtí an Cluaisín Deireanach",
|
||||
"show-note-source": "Taispeáin Foinse an Nóta",
|
||||
"show-options": "Taispeáin Roghanna",
|
||||
"show-revisions": "Taispeáin Athbhreithnithe",
|
||||
"show-recent-changes": "Taispeáin Athruithe Le Déanaí",
|
||||
"show-sql-console": "Taispeáin Consól SQL",
|
||||
"show-backend-log": "Taispeáin Logáil an Chúil",
|
||||
"show-help": "Taispeáin Cabhair",
|
||||
"show-cheatsheet": "Taispeáin Bileog Leideanna",
|
||||
"add-link-to-text": "Cuir Nasc leis an Téacs",
|
||||
"follow-link-under-cursor": "Lean an Nasc Faoin gCúrsóir",
|
||||
"insert-date-and-time-to-text": "Cuir Dáta agus Am isteach sa Téacs",
|
||||
"paste-markdown-into-text": "Greamaigh Markdown isteach sa Téacs",
|
||||
"cut-into-note": "Gearr isteach i Nóta",
|
||||
"add-include-note-to-text": "Cuir Nóta le Téacs",
|
||||
"edit-read-only-note": "Cuir Nóta Léite Amháin in Eagar",
|
||||
"add-new-label": "Cuir Lipéad Nua leis",
|
||||
"add-new-relation": "Cuir Gaol Nua leis",
|
||||
"toggle-ribbon-tab-classic-editor": "Eagarthóir Clasaiceach Cluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-basic-properties": "Airíonna Bunúsacha an Chluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-book-properties": "Airíonna Leabhar an Chluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-file-properties": "Airíonna Comhaid Tab Ribín a Athrú",
|
||||
"toggle-ribbon-tab-image-properties": "Airíonna Íomhá an Chluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-owned-attributes": "Tréithe atá faoi úinéireacht ag an gcluaisín ribín",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Tréithe Oidhreachta Cluaisín Ribín a Scor",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Tréithe Curtha Chun Cinn sa Chluaisín Ribín",
|
||||
"toggle-ribbon-tab-note-map": "Léarscáil Nótaí Tab Ribín a Athrú",
|
||||
"toggle-ribbon-tab-note-info": "Eolas Nóta Cluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-note-paths": "Cosáin Nóta Cluaisín Ribín a Athrú",
|
||||
"toggle-ribbon-tab-similar-notes": "Nótaí Cosúla a Athraigh an Cluaisín Ribín",
|
||||
"toggle-right-pane": "Scoránaigh an Phána Ar Dheis",
|
||||
"print-active-note": "Priontáil Nóta Gníomhach",
|
||||
"export-active-note-as-pdf": "Easpórtáil Nóta Gníomhach mar PDF",
|
||||
"open-note-externally": "Oscail Nóta go Seachtrach",
|
||||
"render-active-note": "Rindreáil Nóta Gníomhach",
|
||||
"run-active-note": "Rith Nóta Gníomhach",
|
||||
"toggle-note-hoisting": "Ardú Nótaí a Athrú",
|
||||
"unhoist-note": "Nóta Dí-Ardaithe",
|
||||
"reload-frontend-app": "Athlódáil an Aip Tosaigh",
|
||||
"open-developer-tools": "Oscail Uirlisí Forbróra",
|
||||
"find-in-text": "Aimsigh sa Téacs",
|
||||
"toggle-left-pane": "Scoránaigh an Phána Chlé",
|
||||
"toggle-full-screen": "Athraigh an Scáileán Lán",
|
||||
"zoom-out": "Zúmáil Amach",
|
||||
"zoom-in": "Zúmáil Isteach",
|
||||
"reset-zoom-level": "Athshocraigh Leibhéal Súmála",
|
||||
"copy-without-formatting": "Cóipeáil Gan Formáidiú",
|
||||
"force-save-revision": "Athbhreithniú Sábháilte Fórsála"
|
||||
},
|
||||
"login": {
|
||||
"title": "Logáil Isteach",
|
||||
"heading": "Logáil Isteach Trilium",
|
||||
"incorrect-totp": "Tá an TOTP mícheart. Déan iarracht arís.",
|
||||
"incorrect-password": "Tá an focal faire mícheart. Déan iarracht arís.",
|
||||
"password": "Pasfhocal",
|
||||
"remember-me": "Cuimhnigh orm",
|
||||
"button": "Logáil Isteach",
|
||||
"sign_in_with_sso": "Sínigh isteach le {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Socraigh Pasfhocal",
|
||||
"heading": "Socraigh pasfhocal",
|
||||
"description": "Sula dtosaíonn tú ag úsáid Trilium ón ngréasán, ní mór duit pasfhocal a shocrú ar dtús. Úsáidfidh tú an pasfhocal seo ansin chun logáil isteach.",
|
||||
"password": "Pasfhocal",
|
||||
"password-confirmation": "Deimhniú pasfhocail",
|
||||
"button": "Socraigh pasfhocal"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Socrú Trilium Notes",
|
||||
"new-document": "Is úsáideoir nua mé, agus ba mhaith liom doiciméad Trilium nua a chruthú do mo nótaí",
|
||||
"sync-from-desktop": "Tá cás deisce agam cheana féin, agus ba mhaith liom sioncrónú a shocrú leis",
|
||||
"sync-from-server": "Tá sampla freastalaí agam cheana féin, agus ba mhaith liom sioncrónú a shocrú leis",
|
||||
"next": "Ar Aghaidh",
|
||||
"init-in-progress": "Túsú doiciméad ar siúl",
|
||||
"redirecting": "Atreorófar chuig an bhfeidhmchlár thú go luath.",
|
||||
"title": "Socrú"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sioncrónaigh ón Deasc",
|
||||
"description": "Ní mór an socrú seo a thionscnamh ón deasc:",
|
||||
"step1": "Oscail sampla de Trilium Notes ar do dheasc.",
|
||||
"step2": "Ón Roghchlár Trilium, cliceáil Roghanna.",
|
||||
"step3": "Cliceáil ar an gcatagóir Sioncrónaigh.",
|
||||
"step4": "Athraigh seoladh an fhreastalaí go: {{- host}} agus cliceáil Sábháil.",
|
||||
"step5": "Cliceáil an cnaipe \"Tástáil sioncrónaithe\" chun a fhíorú go bhfuil an nasc rathúil.",
|
||||
"step6": "Nuair a bheidh na céimeanna seo críochnaithe agat, cliceáil {{- link}}.",
|
||||
"step6-here": "anseo"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sioncrónaigh ón bhFreastalaí",
|
||||
"instructions": "Cuir isteach seoladh agus dintiúir freastalaí Trilium thíos le do thoil. Íoslódálfaidh sé seo an doiciméad Trilium iomlán ón bhfreastalaí agus socróidh sé sioncrónú leis. Ag brath ar mhéid an doiciméid agus luas do nasc, d'fhéadfadh sé seo tamall a thógáil.",
|
||||
"server-host": "Seoladh freastalaí Trilium",
|
||||
"server-host-placeholder": "https://<ainm óstach>:<port>",
|
||||
"proxy-server": "Freastalaí seachfhreastalaí (roghnach)",
|
||||
"proxy-server-placeholder": "https://<ainm óstach>:<port>",
|
||||
"note": "Nóta:",
|
||||
"proxy-instruction": "Má fhágann tú an socrú seachfhreastalaí bán, úsáidfear seachfhreastalaí an chórais (baineann sé leis an bhfeidhmchlár deisce amháin)",
|
||||
"password": "Pasfhocal",
|
||||
"password-placeholder": "Pasfhocal",
|
||||
"back": "Ar ais",
|
||||
"finish-setup": "Críochnaigh an socrú"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sioncrónú ar siúl",
|
||||
"successful": "Tá an sioncrónú socraithe i gceart. Tógfaidh sé tamall go mbeidh an sioncrónú tosaigh críochnaithe. Nuair a bheidh sé déanta, atreorófar chuig an leathanach logála isteach thú.",
|
||||
"outstanding-items": "Míreanna sioncrónaithe gan réiteach:",
|
||||
"outstanding-items-default": "N/B"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Níor aimsíodh",
|
||||
"heading": "Níor aimsíodh"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "tuismitheoir:",
|
||||
"clipped-from": "Gearradh an nóta seo ó {{- url}} ar dtús",
|
||||
"child-notes": "Nótaí leanaí:",
|
||||
"no-content": "Níl aon ábhar sa nóta seo."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Dé Luain",
|
||||
"tuesday": "Dé Máirt",
|
||||
"wednesday": "Dé Céadaoin",
|
||||
"thursday": "Déardaoin",
|
||||
"friday": "Dé hAoine",
|
||||
"saturday": "Dé Sathairn",
|
||||
"sunday": "Dé Domhnaigh"
|
||||
},
|
||||
"weekdayNumber": "Seachtain {weekNumber}",
|
||||
"months": {
|
||||
"january": "Eanáir",
|
||||
"february": "Feabhra",
|
||||
"march": "Márta",
|
||||
"april": "Aibreán",
|
||||
"may": "Bealtaine",
|
||||
"june": "Meitheamh",
|
||||
"july": "Iúil",
|
||||
"august": "Lúnasa",
|
||||
"september": "Meán Fómhair",
|
||||
"october": "Deireadh Fómhair",
|
||||
"november": "Samhain",
|
||||
"december": "Nollaig"
|
||||
},
|
||||
"quarterNumber": "Ráithe {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Cuardaigh:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Níl an freastalaí sioncrónaithe cumraithe. Cumraigh an sioncrónú ar dtús.",
|
||||
"successful": "Tá croitheadh láimhe an fhreastalaí sioncrónaithe tar éis a bheith rathúil, tá tús curtha leis an sioncrónú."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Nótaí Folaithe",
|
||||
"search-history-title": "Stair Chuardaigh",
|
||||
"note-map-title": "Léarscáil Nótaí",
|
||||
"sql-console-history-title": "Stair Chonsól SQL",
|
||||
"shared-notes-title": "Nótaí Comhroinnte",
|
||||
"bulk-action-title": "Gníomh Bulc",
|
||||
"backend-log-title": "Logáil Cúil",
|
||||
"user-hidden-title": "Úsáideoir i bhfolach",
|
||||
"launch-bar-templates-title": "Teimpléid Barra Seolta",
|
||||
"base-abstract-launcher-title": "Tosaitheoir Bunúsach Teibí",
|
||||
"command-launcher-title": "Tosaitheoir Ordú",
|
||||
"note-launcher-title": "Tosaitheoir Nótaí",
|
||||
"script-launcher-title": "Tosaitheoir Scripte",
|
||||
"built-in-widget-title": "Giuirléid Tógtha isteach",
|
||||
"spacer-title": "Spásaire",
|
||||
"custom-widget-title": "Giuirléid Saincheaptha",
|
||||
"launch-bar-title": "Barra Lainseáil",
|
||||
"available-launchers-title": "Lainseálaithe atá ar Fáil",
|
||||
"go-to-previous-note-title": "Téigh go dtí an Nóta Roimhe Seo",
|
||||
"go-to-next-note-title": "Téigh go dtí an chéad Nóta Eile",
|
||||
"new-note-title": "Nóta Nua",
|
||||
"search-notes-title": "Cuardaigh Nótaí",
|
||||
"jump-to-note-title": "Léim go...",
|
||||
"calendar-title": "Féilire",
|
||||
"recent-changes-title": "Athruithe Le Déanaí",
|
||||
"bookmarks-title": "Leabharmharcanna",
|
||||
"command-palette": "Oscail an Pailéad Ordaithe",
|
||||
"zen-mode": "Mód Zen",
|
||||
"open-today-journal-note-title": "Oscail Nóta Dialainne an Lae Inniu",
|
||||
"quick-search-title": "Cuardach Tapa",
|
||||
"protected-session-title": "Seisiún faoi Chosaint",
|
||||
"sync-status-title": "Stádas Sioncrónaithe",
|
||||
"settings-title": "Socruithe",
|
||||
"options-title": "Roghanna",
|
||||
"appearance-title": "Dealramh",
|
||||
"shortcuts-title": "Aicearraí",
|
||||
"text-notes": "Nótaí Téacs",
|
||||
"code-notes-title": "Nótaí Cód",
|
||||
"images-title": "Íomhánna",
|
||||
"spellcheck-title": "Seiceáil litrithe",
|
||||
"password-title": "Pasfhocal",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Cúltaca",
|
||||
"sync-title": "Sioncrónaigh",
|
||||
"other": "Eile",
|
||||
"advanced-title": "Ardleibhéil",
|
||||
"visible-launchers-title": "Lainseálaithe Infheicthe",
|
||||
"user-guide": "Treoir Úsáideora",
|
||||
"localization": "Teanga & Réigiún",
|
||||
"inbox-title": "Bosca isteach",
|
||||
"tab-switcher-title": "Athraitheoir Cluaisíní"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nóta nua",
|
||||
"duplicate-note-suffix": "(dúpáil)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Níl an comhad loga cúil '{{ fileName }}' ann (go fóill).",
|
||||
"reading-log-failed": "Theip ar an gcomhad loga cúil '{{ fileName }}' a léamh."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Ní féidir an cineál nóta seo a thaispeáint."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Doiciméad PDF (*.pdf)",
|
||||
"unable-to-export-message": "Níorbh fhéidir an nóta reatha a easpórtáil mar PDF.",
|
||||
"unable-to-export-title": "Ní féidir a onnmhairiú mar PDF",
|
||||
"unable-to-save-message": "Níorbh fhéidir scríobh chuig an gcomhad roghnaithe. Déan iarracht eile nó roghnaigh ceann scríbe eile.",
|
||||
"unable-to-print": "Ní féidir an nóta a phriontáil"
|
||||
},
|
||||
"tray": {
|
||||
"close": "Scoir de Trilium",
|
||||
"recents": "Nótaí le déanaí",
|
||||
"bookmarks": "Leabharmharcanna",
|
||||
"today": "Oscail nóta dialainne an lae inniu",
|
||||
"new-note": "Nóta nua",
|
||||
"show-windows": "Taispeáin fuinneoga",
|
||||
"open_new_window": "Oscail fuinneog nua",
|
||||
"tooltip": "Trilium Notes"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "Ní thacaítear le haistriú díreach ó do leagan reatha. Uasghrádaigh go dtí an leagan is déanaí v0.60.4 ar dtús agus ansin go dtí an leagan seo amháin.",
|
||||
"error_message": "Earráid le linn imirce go leagan {{version}}: {{stack}}",
|
||||
"wrong_db_version": "Tá leagan an bhunachair shonraí ({{version}}) níos nuaí ná mar a bhfuil súil ag an bhfeidhmchlár leis ({{targetVersion}}), rud a chiallaíonn gur cruthaíodh é le leagan níos nuaí agus neamh-chomhoiriúnach de Trilium. Uasghrádaigh go dtí an leagan is déanaí de Trilium chun an fhadhb seo a réiteach."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Earráid"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Téama an tSuímh",
|
||||
"search_placeholder": "Cuardaigh...",
|
||||
"image_alt": "Íomhá an Airteagail",
|
||||
"last-updated": "Nuashonraithe go deireanach ar {{- date}}",
|
||||
"subpages": "Fo-leathanaigh:",
|
||||
"on-this-page": "Ar an Leathanach seo",
|
||||
"expand": "Leathnaigh"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Sleachta Téacs",
|
||||
"description": "Cur síos",
|
||||
"list-view": "Amharc Liosta",
|
||||
"grid-view": "Radharc Eangaí",
|
||||
"calendar": "Féilire",
|
||||
"table": "Tábla",
|
||||
"geo-map": "Léarscáil Gheografach",
|
||||
"start-date": "Dáta Tosaigh",
|
||||
"end-date": "Dáta Deiridh",
|
||||
"start-time": "Am Tosaigh",
|
||||
"end-time": "Am Deiridh",
|
||||
"geolocation": "Geoshuíomh",
|
||||
"built-in-templates": "Teimpléid ionsuite",
|
||||
"board": "Bord Kanban",
|
||||
"status": "Stádas",
|
||||
"board_note_first": "An chéad nóta",
|
||||
"board_note_second": "An dara nóta",
|
||||
"board_note_third": "An tríú nóta",
|
||||
"board_status_todo": "Le Déanamh",
|
||||
"board_status_progress": "Ar Siúl",
|
||||
"board_status_done": "Déanta",
|
||||
"presentation": "Cur i Láthair",
|
||||
"presentation_slide": "Sleamhnán cur i láthair",
|
||||
"presentation_slide_first": "An chéad sleamhnán",
|
||||
"presentation_slide_second": "An dara sleamhnán",
|
||||
"background": "Cúlra"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Níl an bunachar sonraí tosaithe, lean na treoracha ar an scáileán le do thoil.",
|
||||
"db_not_initialized_server": "Níl an bunachar sonraí tosaithe, tabhair cuairt ar an leathanach socraithe - http://[your-server-host]:{{port}} le treoracha a fheiceáil maidir le conas Trilium a thosú."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Tá sampla ag rith cheana féin, agus tá fócas á chur ar an sampla sin ina ionad."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,440 @@
|
||||
{
|
||||
"keyboard_action_names": {
|
||||
"zoom-in": "Ingrandisci",
|
||||
"reset-zoom-level": "Ripristina il livello di ingrandimento",
|
||||
"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 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 la nota esternamente",
|
||||
"run-active-note": "Esegui la 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",
|
||||
"images-title": "Immagini",
|
||||
"spellcheck-title": "Controllo ortografico",
|
||||
"password-title": "Password",
|
||||
"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": "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",
|
||||
"command-palette": "Apri tavolozza comandi",
|
||||
"zen-mode": "Modalità Zen",
|
||||
"tab-switcher-title": "Selettore scheda"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nuova nota",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Il file di log del backend '{{ fileName }}' non esiste (ancora).",
|
||||
"reading-log-failed": "La lettura del file di log del backend '{{ fileName }}' è fallita."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Questo tipo di nota non può essere visualizzato."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Documento PDF (*.pdf)",
|
||||
"unable-to-export-message": "La nota corrente non può essere esportata come PDF.",
|
||||
"unable-to-export-title": "Impossibile esportare come PDF",
|
||||
"unable-to-save-message": "Il file selezionato non può essere salvato. Prova di nuovo o seleziona un'altra destinazione.",
|
||||
"unable-to-print": "Impossibile stampare la nota"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Esci da Trilium",
|
||||
"recents": "Note recenti",
|
||||
"bookmarks": "Segnalibri",
|
||||
"today": "Apri la nota di oggi",
|
||||
"new-note": "Nuova nota",
|
||||
"show-windows": "Mostra le finestre",
|
||||
"open_new_window": "Aprire una nuova finestra"
|
||||
},
|
||||
"migration": {
|
||||
"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."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Errore"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Tema del sito",
|
||||
"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": "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 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": "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": "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ù 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",
|
||||
"move-notes-to": "Sposta le note selezionate",
|
||||
"note-clipboard": "Appunti delle Note",
|
||||
"copy-notes-to-clipboard": "Copia le note selezionate negli appunti",
|
||||
"paste-notes-from-clipboard": "Incolla le note dagli appunti nella nota attiva",
|
||||
"cut-notes-to-clipboard": "Tagliare le note selezionate negli appunti",
|
||||
"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",
|
||||
"tabs-and-windows": "Schede e Finestre",
|
||||
"open-new-tab": "Apri una nuova scheda",
|
||||
"close-active-tab": "Chiudi la scheda attiva",
|
||||
"reopen-last-tab": "Riapri l'ultima scheda chiusa",
|
||||
"activate-next-tab": "Attiva la scheda sulla destra",
|
||||
"activate-previous-tab": "Attiva la scheda a sinistra",
|
||||
"open-new-window": "Apri una nuova finestra vuota",
|
||||
"toggle-tray": "Mostra/nascondi l'applicazione dal vassoio di sistema",
|
||||
"first-tab": "Attiva la prima scheda nell'elenco",
|
||||
"second-tab": "Attiva la seconda scheda nell'elenco",
|
||||
"third-tab": "Attiva la terza scheda nell'elenco",
|
||||
"fourth-tab": "Attiva la quarta scheda nella lista",
|
||||
"fifth-tab": "Attiva la quinta scheda nell'elenco",
|
||||
"sixth-tab": "Attiva la sesta scheda nell'elenco",
|
||||
"seventh-tab": "Attiva la settima scheda nella lista",
|
||||
"eight-tab": "Attiva l'ottava scheda nell'elenco",
|
||||
"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-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-sql-console": "Apri la pagina \"Console SQL\"",
|
||||
"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",
|
||||
"follow-link-under-cursor": "Segui il collegamento all'interno del quale è il cursore",
|
||||
"insert-date-and-time-to-text": "Inserisci la data e l'ora corrente nel testo",
|
||||
"paste-markdown-into-text": "Incolla il Markdown dagli appunti nella nota di testo",
|
||||
"cut-into-note": "Taglia la selezione dalla nota corrente e crea una sotto nota col testo selezionato",
|
||||
"add-include-note-to-text": "Apre la finestra di dialogo per includere una nota",
|
||||
"edit-readonly-note": "Modifica una nota in sola lettura",
|
||||
"attributes-labels-and-relations": "Attributi (etichette e relazioni)",
|
||||
"add-new-label": "Crea una nuova etichetta",
|
||||
"create-new-relation": "Crea una nuova relazione",
|
||||
"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",
|
||||
"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"
|
||||
},
|
||||
"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": "Kanban Board",
|
||||
"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",
|
||||
"presentation": "Presentazione",
|
||||
"presentation_slide": "Diapositiva di presentazione",
|
||||
"presentation_slide_first": "Prima diapositiva",
|
||||
"presentation_slide_second": "Seconda diapositiva",
|
||||
"background": "Contesto"
|
||||
},
|
||||
"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."
|
||||
}
|
||||
"keyboard_action_names": {
|
||||
"zoom-in": "Ingrandisci",
|
||||
"reset-zoom-level": "Ripristina il livello di ingrandimento",
|
||||
"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 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 la nota esternamente",
|
||||
"run-active-note": "Esegui la 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",
|
||||
"images-title": "Immagini",
|
||||
"spellcheck-title": "Controllo ortografico",
|
||||
"password-title": "Password",
|
||||
"multi-factor-authentication-title": "Autenticazione a più fattori",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Backup",
|
||||
"sync-title": "Sincronizza",
|
||||
"other": "Altro",
|
||||
"advanced-title": "Avanzato",
|
||||
"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",
|
||||
"note-launcher-title": "Scorciatoie delle note",
|
||||
"script-launcher-title": "Scorciatoie degli script",
|
||||
"command-palette": "Apri tavolozza comandi",
|
||||
"zen-mode": "Modalità Zen"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nuova nota",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Il file di log del backend '{{ fileName }}' non esiste (ancora).",
|
||||
"reading-log-failed": "La lettura del file di log del backend '{{ fileName }}' è fallita."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Questo tipo di nota non può essere visualizzato."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Documento PDF (*.pdf)",
|
||||
"unable-to-export-message": "La nota corrente non può essere esportata come PDF.",
|
||||
"unable-to-export-title": "Impossibile esportare come PDF",
|
||||
"unable-to-save-message": "Il file selezionato non può essere salvato. Prova di nuovo o seleziona un'altra destinazione.",
|
||||
"unable-to-print": "Impossibile stampare la nota"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Esci da Trilium",
|
||||
"recents": "Note recenti",
|
||||
"bookmarks": "Segnalibri",
|
||||
"today": "Apri la nota di oggi",
|
||||
"new-note": "Nuova nota",
|
||||
"show-windows": "Mostra le finestre",
|
||||
"open_new_window": "Aprire una nuova finestra"
|
||||
},
|
||||
"migration": {
|
||||
"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."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Errore"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Tema del sito",
|
||||
"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": "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 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": "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": "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ù 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",
|
||||
"move-notes-to": "Sposta le note selezionate",
|
||||
"note-clipboard": "Appunti delle Note",
|
||||
"copy-notes-to-clipboard": "Copia le note selezionate negli appunti",
|
||||
"paste-notes-from-clipboard": "Incolla le note dagli appunti nella nota attiva",
|
||||
"cut-notes-to-clipboard": "Tagliare le note selezionate negli appunti",
|
||||
"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",
|
||||
"tabs-and-windows": "Schede e Finestre",
|
||||
"open-new-tab": "Apri una nuova scheda",
|
||||
"close-active-tab": "Chiudi la scheda attiva",
|
||||
"reopen-last-tab": "Riapri l'ultima scheda chiusa",
|
||||
"activate-next-tab": "Attiva la scheda sulla destra",
|
||||
"activate-previous-tab": "Attiva la scheda a sinistra",
|
||||
"open-new-window": "Apri una nuova finestra vuota",
|
||||
"toggle-tray": "Mostra/nascondi l'applicazione dal vassoio di sistema",
|
||||
"first-tab": "Attiva la prima scheda nell'elenco",
|
||||
"second-tab": "Attiva la seconda scheda nell'elenco",
|
||||
"third-tab": "Attiva la terza scheda nell'elenco",
|
||||
"fourth-tab": "Attiva la quarta scheda nella lista",
|
||||
"fifth-tab": "Attiva la quinta scheda nell'elenco",
|
||||
"sixth-tab": "Attiva la sesta scheda nell'elenco",
|
||||
"seventh-tab": "Attiva la settima scheda nella lista",
|
||||
"eight-tab": "Attiva l'ottava scheda nell'elenco",
|
||||
"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-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-sql-console": "Apri la pagina \"Console SQL\"",
|
||||
"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",
|
||||
"follow-link-under-cursor": "Segui il collegamento all'interno del quale è il cursore",
|
||||
"insert-date-and-time-to-text": "Inserisci la data e l'ora corrente nel testo",
|
||||
"paste-markdown-into-text": "Incolla il Markdown dagli appunti nella nota di testo",
|
||||
"cut-into-note": "Taglia la selezione dalla nota corrente e crea una sotto nota col testo selezionato",
|
||||
"add-include-note-to-text": "Apre la finestra di dialogo per includere una nota",
|
||||
"edit-readonly-note": "Modifica una nota in sola lettura",
|
||||
"attributes-labels-and-relations": "Attributi (etichette e relazioni)",
|
||||
"add-new-label": "Crea una nuova etichetta",
|
||||
"create-new-relation": "Crea una nuova relazione",
|
||||
"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",
|
||||
"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"
|
||||
},
|
||||
"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": "Kanban Board",
|
||||
"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",
|
||||
"presentation": "Presentazione",
|
||||
"presentation_slide": "Diapositiva di presentazione",
|
||||
"presentation_slide_first": "Prima diapositiva",
|
||||
"presentation_slide_second": "Seconda diapositiva",
|
||||
"background": "Contesto"
|
||||
},
|
||||
"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."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,441 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "履歴内の前のノートに移動",
|
||||
"forward-in-note-history": "履歴内の次のノートに移動",
|
||||
"open-jump-to-note-dialog": "「ノートへ移動」 ダイアログを開く",
|
||||
"open-command-palette": "コマンドパレットを開く",
|
||||
"scroll-to-active-note": "ノートツリーをアクティブなノートまでスクロールする",
|
||||
"search-in-subtree": "アクティブなノートのサブツリー内でノートを検索する",
|
||||
"expand-subtree": "現在のノートのサブツリーを展開",
|
||||
"collapse-tree": "ノートツリー全体を折りたたむ",
|
||||
"collapse-subtree": "現在のノートのサブツリーを折りたたむ",
|
||||
"creating-and-moving-notes": "ノートの作成と移動",
|
||||
"create-note-after": "アクティブなノートの後にノートを作成する",
|
||||
"create-note-into": "アクティブなノートの子ノートを作成する",
|
||||
"delete-note": "ノートを削除",
|
||||
"move-note-up": "ノートを上に移動",
|
||||
"move-note-down": "ノートを下に移動",
|
||||
"move-note-up-in-hierarchy": "ノートを上の階層に移動",
|
||||
"move-note-down-in-hierarchy": "ノートを下の階層に移動",
|
||||
"edit-note-title": "ツリーからノートの詳細にジャンプして、タイトルを編集",
|
||||
"clone-notes-to": "選択したノートを複製",
|
||||
"move-notes-to": "選択したノートを移動",
|
||||
"copy-notes-to-clipboard": "選択したノートをクリップボードにコピー",
|
||||
"paste-notes-from-clipboard": "クリップボードからアクティブなノートにノートを貼り付け",
|
||||
"cut-notes-to-clipboard": "選択したノートをクリップボードに切り取り",
|
||||
"select-all-notes-in-parent": "現在のノートレベルと同じノートをすべて選択する",
|
||||
"add-note-above-to-the-selection": "上のノートを選択範囲に追加",
|
||||
"add-note-below-to-selection": "下のノートを選択範囲に追加",
|
||||
"tabs-and-windows": "タブとウィンドウ",
|
||||
"open-new-tab": "新しいタブを開く",
|
||||
"close-active-tab": "アクティブなタブを閉じる",
|
||||
"reopen-last-tab": "最後に閉じたタブを開く",
|
||||
"activate-next-tab": "右のタブをアクティブにする",
|
||||
"activate-previous-tab": "左のタブをアクティブにする",
|
||||
"open-new-window": "新しい空のウィンドウを開く",
|
||||
"toggle-tray": "システムトレイアイコンの表示/非表示",
|
||||
"first-tab": "最初のタブをアクティブにする",
|
||||
"second-tab": "2番目のタブをアクティブにする",
|
||||
"third-tab": "3番目のタブをアクティブにする",
|
||||
"fourth-tab": "4番目のタブをアクティブにする",
|
||||
"fifth-tab": "5番目のタブをアクティブにする",
|
||||
"sixth-tab": "6番目のタブをアクティブにする",
|
||||
"seventh-tab": "7番目のタブをアクティブにする",
|
||||
"eight-tab": "8番目のタブをアクティブにする",
|
||||
"ninth-tab": "9番目のタブをアクティブにする",
|
||||
"last-tab": "最後のタブをアクティブにする",
|
||||
"dialogs": "ダイアログ",
|
||||
"show-note-source": "「ノートのソース」ダイアログを表示",
|
||||
"show-options": "「設定」ページを開く",
|
||||
"show-recent-changes": "「最近の変更」ダイアログを表示",
|
||||
"show-sql-console": "「SQLコンソール」ページを開く",
|
||||
"show-backend-log": "「バックエンドログ」ページを開く",
|
||||
"show-help": "内蔵のユーザーガイドを開く",
|
||||
"show-cheatsheet": "よく使うキーボードショートカットをモーダルで表示する",
|
||||
"text-note-operations": "テキストノート操作",
|
||||
"add-link-to-text": "テキストにリンクを追加ダイアログを開く",
|
||||
"follow-link-under-cursor": "カーソル下のリンク先へ移動",
|
||||
"insert-date-and-time-to-text": "現在の日時を挿入する",
|
||||
"paste-markdown-into-text": "クリップボードからMarkdownをテキストノートに貼り付けます",
|
||||
"cut-into-note": "現在のノートから選択範囲を切り取り、サブノートを作成",
|
||||
"edit-readonly-note": "読み取り専用ノートの編集",
|
||||
"ribbon-tabs": "リボンタブ",
|
||||
"toggle-link-map": "リンクマップ切り替え",
|
||||
"toggle-note-info": "ノート情報切り替え",
|
||||
"toggle-note-paths": "ノートパス切り替え",
|
||||
"toggle-similar-notes": "類似ノート切り替え",
|
||||
"other": "その他",
|
||||
"toggle-right-pane": "目次とハイライトを含む右ペインの表示を切り替え",
|
||||
"print-active-note": "アクティブノートを印刷",
|
||||
"open-note-externally": "デフォルトのアプリケーションでノートをファイルとして開く",
|
||||
"render-active-note": "アクティブなノートを再描画(再レンダリング)する",
|
||||
"run-active-note": "アクティブなJavaScript(フロントエンド/バックエンド)のコードノートを実行する",
|
||||
"reload-frontend-app": "フロントエンドをリロード",
|
||||
"open-dev-tools": "開発者ツールを開く",
|
||||
"find-in-text": "検索パネルの切り替え",
|
||||
"toggle-left-note-tree-panel": "左パネルの切り替え (ノートツリー)",
|
||||
"toggle-full-screen": "フルスクリーンの切り替え",
|
||||
"note-navigation": "ノートナビゲーション",
|
||||
"copy-without-formatting": "選択したテキストを書式なしでコピーする",
|
||||
"export-as-pdf": "現在のノートをPDFとしてエクスポートする",
|
||||
"zoom-out": "ズームアウト",
|
||||
"zoom-in": "ズームイン",
|
||||
"reset-zoom-level": "ズームレベルのリセット",
|
||||
"quick-search": "クイック検索バーを有効にする",
|
||||
"sort-child-notes": "子ノートを並べ替える",
|
||||
"create-note-into-inbox": "inbox(定義されている場合)またはデイノートにノートを作成する",
|
||||
"note-clipboard": "ノートクリップボード",
|
||||
"duplicate-subtree": "サブツリーの複製",
|
||||
"edit-branch-prefix": "「ブランチ接頭辞の編集」ダイアログを表示",
|
||||
"show-revisions": "「ノートの変更履歴」ダイアログを表示",
|
||||
"attributes-labels-and-relations": "属性(ラベルとリレーション)",
|
||||
"add-new-label": "新しいラベルを作成する",
|
||||
"create-new-relation": "新しいリレーションを作成する",
|
||||
"toggle-basic-properties": "基本属性切り替え",
|
||||
"toggle-file-properties": "ファイル属性切り替え",
|
||||
"toggle-image-properties": "画像属性切り替え",
|
||||
"toggle-owned-attributes": "所有属性切り替え",
|
||||
"toggle-inherited-attributes": "継承属性切り替え",
|
||||
"toggle-note-hoisting": "ノートホイスト切り替え",
|
||||
"unhoist": "すべてのホイストを無効にする",
|
||||
"toggle-book-properties": "コレクションプロパティ切り替え",
|
||||
"toggle-zen-mode": "禅モード(集中した編集のための最小限のUI)を有効/無効にする",
|
||||
"add-include-note-to-text": "ノートを埋め込むダイアログを開く",
|
||||
"toggle-promoted-attributes": "プロモート属性切り替え",
|
||||
"force-save-revision": "アクティブノートの新しいノートリヴィジョンを強制する",
|
||||
"toggle-classic-editor-toolbar": "固定ツールバーエディターの書式設定タブ切り替え"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "ノートの履歴を戻る",
|
||||
"forward-in-note-history": "ノートの履歴を進む",
|
||||
"command-palette": "コマンドパレット",
|
||||
"scroll-to-active-note": "アクティブノートまでスクロール",
|
||||
"quick-search": "クイック検索",
|
||||
"search-in-subtree": "サブツリー内を検索",
|
||||
"expand-subtree": "サブツリーを展開",
|
||||
"collapse-subtree": "サブツリーを折りたたむ",
|
||||
"collapse-tree": "ツリーを折りたたむ",
|
||||
"sort-child-notes": "子ノートを並べ替え",
|
||||
"create-note-after": "後ろにノートを作成",
|
||||
"create-note-into": "子ノートを作成",
|
||||
"delete-notes": "ノートを削除",
|
||||
"move-note-up": "ノートを上に移動",
|
||||
"move-note-down": "ノートを下に移動",
|
||||
"move-note-up-in-hierarchy": "ノートの階層を上に移動",
|
||||
"move-note-down-in-hierarchy": "ノートの階層を下に移動",
|
||||
"edit-note-title": "ノートのタイトルを編集",
|
||||
"clone-notes-to": "ノートを複製",
|
||||
"move-notes-to": "ノートを移動",
|
||||
"copy-notes-to-clipboard": "ノートをクリップボードにコピー",
|
||||
"paste-notes-from-clipboard": "クリップボードからノートを貼り付け",
|
||||
"cut-notes-to-clipboard": "ノートをクリップボードに切り取り",
|
||||
"select-all-notes-in-parent": "親ノート内のすべてのノートを選択",
|
||||
"add-note-above-to-selection": "選択範囲に上のノートを追加",
|
||||
"add-note-below-to-selection": "選択範囲に下のノートを追加",
|
||||
"open-new-tab": "新しいタブを開く",
|
||||
"close-active-tab": "アクティブなタブを閉じる",
|
||||
"reopen-last-tab": "最後のタブを開き直す",
|
||||
"activate-next-tab": "次のタブに移動",
|
||||
"activate-previous-tab": "前のタブに移動",
|
||||
"open-new-window": "新しいウィンドウを開く",
|
||||
"toggle-system-tray-icon": "システムトレイアイコンの切り替え",
|
||||
"switch-to-first-tab": "最初のタブに切り替え",
|
||||
"switch-to-second-tab": "2番目のタブに切り替え",
|
||||
"switch-to-third-tab": "3番目のタブに切り替え",
|
||||
"switch-to-fourth-tab": "4番目のタブに切り替え",
|
||||
"switch-to-fifth-tab": "5番目のタブに切り替え",
|
||||
"switch-to-sixth-tab": "6番目のタブに切り替え",
|
||||
"switch-to-seventh-tab": "7番目のタブに切り替え",
|
||||
"switch-to-eighth-tab": "8番目のタブに切り替え",
|
||||
"switch-to-ninth-tab": "9番目のタブに切り替え",
|
||||
"switch-to-last-tab": "最後のタブに切り替え",
|
||||
"show-note-source": "ノートのソースを表示",
|
||||
"show-options": "設定を表示",
|
||||
"show-recent-changes": "最近の変更を表示",
|
||||
"show-sql-console": "SQLコンソールを表示",
|
||||
"show-backend-log": "バックエンドログを表示",
|
||||
"show-help": "ヘルプを表示",
|
||||
"show-cheatsheet": "チートシートを表示",
|
||||
"add-link-to-text": "テキストにリンクを追加",
|
||||
"follow-link-under-cursor": "カーソル下のリンクをたどる",
|
||||
"insert-date-and-time-to-text": "日時を挿入",
|
||||
"paste-markdown-into-text": "Markdownをテキストに貼り付け",
|
||||
"cut-into-note": "ノートから切り取り",
|
||||
"edit-read-only-note": "読み取り専用ノートの編集",
|
||||
"toggle-right-pane": "右ペイン切り替え",
|
||||
"print-active-note": "アクティブノートを印刷",
|
||||
"export-active-note-as-pdf": "ノートをPDFとしてエクスポート",
|
||||
"open-note-externally": "外部でノートを開く",
|
||||
"render-active-note": "アクティブノートを描画",
|
||||
"run-active-note": "アクティブノートを実行",
|
||||
"reload-frontend-app": "フロントエンドアプリのリロード",
|
||||
"open-developer-tools": "開発者ツールを開く",
|
||||
"find-in-text": "テキスト内検索",
|
||||
"toggle-left-pane": "左ペイン切り替え",
|
||||
"toggle-full-screen": "フルスクリーンの切り替え",
|
||||
"copy-without-formatting": "書式なしでコピー",
|
||||
"duplicate-subtree": "サブツリーの複製",
|
||||
"create-note-into-inbox": "Inboxにノートを作成",
|
||||
"toggle-zen-mode": "禅モードの切り替え",
|
||||
"reset-zoom-level": "ズームレベルのリセット",
|
||||
"zoom-out": "ズームアウト",
|
||||
"zoom-in": "ズームイン",
|
||||
"jump-to-note": "ジャンプ先…",
|
||||
"edit-branch-prefix": "ブランチ接頭辞の編集",
|
||||
"show-revisions": "変更履歴を表示",
|
||||
"add-new-label": "ラベルを追加",
|
||||
"add-new-relation": "リレーションを追加",
|
||||
"toggle-ribbon-tab-basic-properties": "リボンタブ切り替え:基本属性",
|
||||
"toggle-ribbon-tab-book-properties": "リボンタブ切り替え:書籍属性",
|
||||
"toggle-ribbon-tab-file-properties": "リボンタブ切り替え:ファイル属性",
|
||||
"toggle-ribbon-tab-image-properties": "リボンタブ切り替え:画像属性",
|
||||
"toggle-ribbon-tab-owned-attributes": "リボンタブ切り替え:所有属性",
|
||||
"toggle-ribbon-tab-inherited-attributes": "リボンタブ切り替え:継承属性",
|
||||
"toggle-ribbon-tab-note-map": "リボンタブ切り替え:ノートマップ",
|
||||
"toggle-ribbon-tab-note-info": "リボンタブ切り替え:ノート情報",
|
||||
"toggle-ribbon-tab-note-paths": "リボンタブ切り替え:ノートパス",
|
||||
"toggle-ribbon-tab-similar-notes": "リボンタブ切り替え:類似ノート",
|
||||
"toggle-note-hoisting": "ノートホイスト切り替え",
|
||||
"unhoist-note": "ノートホイストを無効にする",
|
||||
"force-save-revision": "強制保存リビジョン",
|
||||
"add-include-note-to-text": "埋め込みノートを追加",
|
||||
"toggle-ribbon-tab-classic-editor": "リボンタブのクラシックエディターに切り替える",
|
||||
"toggle-ribbon-tab-promoted-attributes": "リボンタブ切り替え:プロモート属性"
|
||||
},
|
||||
"login": {
|
||||
"title": "ログイン",
|
||||
"heading": "Trilium ログイン",
|
||||
"incorrect-totp": "TOTPが正しくありません。もう一度お試しください。",
|
||||
"incorrect-password": "パスワードが正しくありません。もう一度お試しください。",
|
||||
"password": "パスワード",
|
||||
"button": "ログイン",
|
||||
"remember-me": "ログイン情報を記憶する",
|
||||
"sign_in_with_sso": "{{ ssoIssuerName }}でログイン"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "パスワードの設定",
|
||||
"heading": "パスワードの設定",
|
||||
"description": "web から Trilium を始めるには、パスワードを設定する必要があります。設定したパスワードを使ってログインします。",
|
||||
"password": "パスワード",
|
||||
"button": "パスワードの設定",
|
||||
"password-confirmation": "パスワードの再入力"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes セットアップ",
|
||||
"new-document": "私は新しいユーザーで、ノートを取るために新しいTriliumドキュメントを作成したい",
|
||||
"sync-from-desktop": "すでにデスクトップ版のインスタンスがあり、同期を設定したい",
|
||||
"sync-from-server": "すでにサーバー版のインスタンスがあり、同期を設定したい",
|
||||
"init-in-progress": "ドキュメントの初期化処理を実行中",
|
||||
"redirecting": "まもなくアプリケーションにリダイレクトされます。",
|
||||
"next": "次へ",
|
||||
"title": "セットアップ"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "デスクトップから同期",
|
||||
"description": "このセットアップはデスクトップインスタンスから開始する必要があります:",
|
||||
"step1": "Trilium Notes のデスクトップインスタンスを開きます。",
|
||||
"step2": "Triliumメニューから、設定をクリックします。",
|
||||
"step3": "同期をクリックします。",
|
||||
"step4": "サーバーインスタンスアドレスを {{- host}} に変更し、保存をクリックします。",
|
||||
"step5": "「同期テスト」をクリックして、接続が成功したか確認してください。",
|
||||
"step6": "これらのステップを完了したら、{{- link}} をクリックしてください。",
|
||||
"step6-here": "ここ"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "サーバーから同期",
|
||||
"instructions": "Triliumサーバーのアドレスと認証情報を下記に入力してください。これにより、Triliumドキュメント全体がサーバーからダウンロードされ、同期が設定されます。ドキュメントのサイズと接続速度によっては、時間がかかる場合があります。",
|
||||
"server-host": "Triliumサーバーのアドレス",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "プロキシサーバー(オプション)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-instruction": "プロキシ設定を空欄にすると、システムプロキシが使用されます(デスクトップアプリケーションにのみ適用されます)",
|
||||
"password": "パスワード",
|
||||
"password-placeholder": "パスワード",
|
||||
"finish-setup": "セットアップ完了",
|
||||
"back": "戻る",
|
||||
"note": "ノート:"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "同期中",
|
||||
"successful": "同期が正しく設定されました。最初の同期が完了するまでしばらく時間がかかります。完了すると、ログインページにリダイレクトされます。",
|
||||
"outstanding-items": "同期が未完了のアイテム:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "月曜日",
|
||||
"tuesday": "火曜日",
|
||||
"wednesday": "水曜日",
|
||||
"thursday": "木曜日",
|
||||
"friday": "金曜日",
|
||||
"saturday": "土曜日",
|
||||
"sunday": "日曜日"
|
||||
},
|
||||
"months": {
|
||||
"january": "1月",
|
||||
"february": "2月",
|
||||
"march": "3月",
|
||||
"april": "4月",
|
||||
"may": "5月",
|
||||
"june": "6月",
|
||||
"july": "7月",
|
||||
"august": "8月",
|
||||
"september": "9月",
|
||||
"october": "10月",
|
||||
"november": "11月",
|
||||
"december": "12月"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "検索:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "同期サーバーホストが設定されていません。最初に同期を設定してください。",
|
||||
"successful": "同期サーバーとのハンドシェイクが成功しました。同期が開始されました。"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"search-history-title": "検索履歴",
|
||||
"sync-title": "同期",
|
||||
"appearance-title": "外観",
|
||||
"shortcuts-title": "ショートカット",
|
||||
"text-notes": "テキストノート",
|
||||
"code-notes-title": "コードノート",
|
||||
"images-title": "画像",
|
||||
"spellcheck-title": "スペルチェック",
|
||||
"password-title": "パスワード",
|
||||
"backup-title": "バックアップ",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "その他",
|
||||
"advanced-title": "高度",
|
||||
"user-guide": "ユーザーガイド",
|
||||
"localization": "言語と地域",
|
||||
"sql-console-history-title": "SQLコンソール履歴",
|
||||
"new-note-title": "新しいノート",
|
||||
"bookmarks-title": "ブックマーク",
|
||||
"open-today-journal-note-title": "今日の日記を開く",
|
||||
"quick-search-title": "クイック検索",
|
||||
"recent-changes-title": "最近の変更",
|
||||
"root-title": "隠されたノート",
|
||||
"note-map-title": "ノートマップ",
|
||||
"shared-notes-title": "共有ノート",
|
||||
"bulk-action-title": "一括操作",
|
||||
"backend-log-title": "バックエンドログ",
|
||||
"user-hidden-title": "非表示のユーザー",
|
||||
"launch-bar-templates-title": "ランチャーバーテンプレート",
|
||||
"command-launcher-title": "コマンドランチャー",
|
||||
"note-launcher-title": "ノートランチャー",
|
||||
"script-launcher-title": "スクリプトランチャー",
|
||||
"built-in-widget-title": "内蔵のウィジェット",
|
||||
"spacer-title": "スペーサー",
|
||||
"custom-widget-title": "カスタムウィジェット",
|
||||
"launch-bar-title": "ランチャーバー",
|
||||
"available-launchers-title": "利用可能なランチャー",
|
||||
"go-to-previous-note-title": "前のノートに移動",
|
||||
"go-to-next-note-title": "次のノートに移動",
|
||||
"search-notes-title": "検索ノート",
|
||||
"jump-to-note-title": "ジャンプ先…",
|
||||
"calendar-title": "カレンダー",
|
||||
"protected-session-title": "保護されたセッション",
|
||||
"sync-status-title": "同期状態",
|
||||
"settings-title": "設定",
|
||||
"llm-chat-title": "ノートとチャット",
|
||||
"options-title": "設定",
|
||||
"multi-factor-authentication-title": "多要素認証",
|
||||
"etapi-title": "ETAPI",
|
||||
"visible-launchers-title": "可視化されたランチャー",
|
||||
"inbox-title": "Inbox",
|
||||
"base-abstract-launcher-title": "ベース アブストラクトランチャー",
|
||||
"command-palette": "コマンドパレットを開く",
|
||||
"zen-mode": "禅モード",
|
||||
"tab-switcher-title": "タブ切り替え"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "新しいノート",
|
||||
"duplicate-note-suffix": "(複製)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "バックエンドのログファイル '{{ fileName }}' は(まだ)存在しません。",
|
||||
"reading-log-failed": "バックエンドのログファイル '{{ fileName }}' の読み込みに失敗しました。"
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "このノートタイプは表示できません。"
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDFドキュメント (*.pdf)",
|
||||
"unable-to-export-message": "現在のノートをPDFとしてエクスポートできませんでした。",
|
||||
"unable-to-export-title": "PDFとしてエクスポートできません",
|
||||
"unable-to-save-message": "選択されたファイルに書き込めませんでした。もう一度試すか、別の保存先を選択してください。",
|
||||
"unable-to-print": "ノートを印刷できません"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Triliumを終了",
|
||||
"recents": "最近のノート",
|
||||
"bookmarks": "ブックマーク",
|
||||
"today": "今日の日記を開く",
|
||||
"new-note": "新しいノート",
|
||||
"show-windows": "ウィンドウを表示",
|
||||
"open_new_window": "新しいウィンドウを開く"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "現在のバージョンからの直接的な移行はサポートされていません。まず最新のv0.60.4にアップグレードしてから、このバージョンにアップグレードしてください。",
|
||||
"error_message": "バージョン {{version}} への移行中にエラーが発生しました: {{stack}}",
|
||||
"wrong_db_version": "データベースのバージョン({{version}})は、アプリケーションが想定しているバージョン({{targetVersion}})よりも新しく、互換性のないバージョンによって作成された可能性があります。この問題を解決するには、Triliumを最新バージョンにアップグレードしてください。"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "エラー"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "サイトのテーマ",
|
||||
"search_placeholder": "検索...",
|
||||
"last-updated": "最終更新日 {{- date}}",
|
||||
"subpages": "サブページ:",
|
||||
"image_alt": "記事画像",
|
||||
"on-this-page": "このページの内容",
|
||||
"expand": "展開"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "テキストスニペット",
|
||||
"description": "説明",
|
||||
"list-view": "リストビュー",
|
||||
"grid-view": "グリッドビュー",
|
||||
"calendar": "カレンダー",
|
||||
"table": "テーブル",
|
||||
"start-date": "開始日",
|
||||
"end-date": "終了日",
|
||||
"start-time": "開始時刻",
|
||||
"end-time": "終了時間",
|
||||
"board": "カンバンボード",
|
||||
"status": "ステータス",
|
||||
"board_note_first": "最初のノート",
|
||||
"board_note_second": "2番目のノート",
|
||||
"board_note_third": "3番目のノート",
|
||||
"board_status_progress": "進行中",
|
||||
"board_status_done": "完了",
|
||||
"geo-map": "ジオマップ",
|
||||
"geolocation": "ジオロケーション",
|
||||
"built-in-templates": "内蔵のテンプレート",
|
||||
"board_status_todo": "未完了",
|
||||
"presentation": "プレゼンテーション",
|
||||
"presentation_slide": "プレゼンテーションスライド",
|
||||
"presentation_slide_first": "最初のスライド",
|
||||
"presentation_slide_second": "2番目のスライド",
|
||||
"background": "背景"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "該当なし",
|
||||
"heading": "該当なし"
|
||||
},
|
||||
"share_page": {
|
||||
"clipped-from": "このノートは元々{{- url}}から切り取られたものです",
|
||||
"no-content": "このノートには内容がありません。",
|
||||
"parent": "親:",
|
||||
"child-notes": "子ノート:"
|
||||
},
|
||||
"weekdayNumber": "第{weekNumber}週",
|
||||
"quarterNumber": "四半期 {quarterNumber}",
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "DB が初期化されていません。画面の指示に従ってください。",
|
||||
"db_not_initialized_server": "DB が初期化されていません。セットアップ ページ 「http://[your-server-host]:{{port}}」 にアクセスして、Trilium を初期化する方法の説明を確認してください。"
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "すでにインスタンスが実行されているので、代わりにそのインスタンスにフォーカスします。"
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "履歴内の前のノートに移動",
|
||||
"forward-in-note-history": "履歴内の次のノートに移動",
|
||||
"open-jump-to-note-dialog": "「ノートへ移動」 ダイアログを開く",
|
||||
"open-command-palette": "コマンドパレットを開く",
|
||||
"scroll-to-active-note": "ノートツリーをアクティブなノートまでスクロールする",
|
||||
"search-in-subtree": "アクティブなノートのサブツリー内でノートを検索する",
|
||||
"expand-subtree": "現在のノートのサブツリーを展開",
|
||||
"collapse-tree": "ノートツリー全体を折りたたむ",
|
||||
"collapse-subtree": "現在のノートのサブツリーを折りたたむ",
|
||||
"creating-and-moving-notes": "ノートの作成と移動",
|
||||
"create-note-after": "アクティブなノートの後にノートを作成する",
|
||||
"create-note-into": "アクティブなノートの子ノートを作成する",
|
||||
"delete-note": "ノートを削除",
|
||||
"move-note-up": "ノートを上に移動",
|
||||
"move-note-down": "ノートを下に移動",
|
||||
"move-note-up-in-hierarchy": "ノートを上の階層に移動",
|
||||
"move-note-down-in-hierarchy": "ノートを下の階層に移動",
|
||||
"edit-note-title": "ツリーからノートの詳細にジャンプして、タイトルを編集",
|
||||
"clone-notes-to": "選択したノートを複製",
|
||||
"move-notes-to": "選択したノートを移動",
|
||||
"copy-notes-to-clipboard": "選択したノートをクリップボードにコピー",
|
||||
"paste-notes-from-clipboard": "クリップボードからアクティブなノートにノートを貼り付け",
|
||||
"cut-notes-to-clipboard": "選択したノートをクリップボードに切り取り",
|
||||
"select-all-notes-in-parent": "現在のノートレベルと同じノートをすべて選択する",
|
||||
"add-note-above-to-the-selection": "上のノートを選択範囲に追加",
|
||||
"add-note-below-to-selection": "下のノートを選択範囲に追加",
|
||||
"tabs-and-windows": "タブとウィンドウ",
|
||||
"open-new-tab": "新しいタブを開く",
|
||||
"close-active-tab": "アクティブなタブを閉じる",
|
||||
"reopen-last-tab": "最後に閉じたタブを開く",
|
||||
"activate-next-tab": "右のタブをアクティブにする",
|
||||
"activate-previous-tab": "左のタブをアクティブにする",
|
||||
"open-new-window": "新しい空のウィンドウを開く",
|
||||
"toggle-tray": "システムトレイアイコンの表示/非表示",
|
||||
"first-tab": "最初のタブをアクティブにする",
|
||||
"second-tab": "2番目のタブをアクティブにする",
|
||||
"third-tab": "3番目のタブをアクティブにする",
|
||||
"fourth-tab": "4番目のタブをアクティブにする",
|
||||
"fifth-tab": "5番目のタブをアクティブにする",
|
||||
"sixth-tab": "6番目のタブをアクティブにする",
|
||||
"seventh-tab": "7番目のタブをアクティブにする",
|
||||
"eight-tab": "8番目のタブをアクティブにする",
|
||||
"ninth-tab": "9番目のタブをアクティブにする",
|
||||
"last-tab": "最後のタブをアクティブにする",
|
||||
"dialogs": "ダイアログ",
|
||||
"show-note-source": "「ノートのソース」ダイアログを表示",
|
||||
"show-options": "「設定」ページを開く",
|
||||
"show-recent-changes": "「最近の変更」ダイアログを表示",
|
||||
"show-sql-console": "「SQLコンソール」ページを開く",
|
||||
"show-backend-log": "「バックエンドログ」ページを開く",
|
||||
"show-help": "内蔵のユーザーガイドを開く",
|
||||
"show-cheatsheet": "よく使うキーボードショートカットをモーダルで表示する",
|
||||
"text-note-operations": "テキストノート操作",
|
||||
"add-link-to-text": "テキストにリンクを追加ダイアログを開く",
|
||||
"follow-link-under-cursor": "カーソル下のリンク先へ移動",
|
||||
"insert-date-and-time-to-text": "現在の日時を挿入する",
|
||||
"paste-markdown-into-text": "クリップボードからMarkdownをテキストノートに貼り付けます",
|
||||
"cut-into-note": "現在のノートから選択範囲を切り取り、サブノートを作成",
|
||||
"edit-readonly-note": "読み取り専用ノートの編集",
|
||||
"ribbon-tabs": "リボンタブ",
|
||||
"toggle-link-map": "リンクマップ切り替え",
|
||||
"toggle-note-info": "ノート情報切り替え",
|
||||
"toggle-note-paths": "ノートパス切り替え",
|
||||
"toggle-similar-notes": "類似ノート切り替え",
|
||||
"other": "その他",
|
||||
"toggle-right-pane": "目次とハイライトを含む右ペインの表示を切り替え",
|
||||
"print-active-note": "アクティブノートを印刷",
|
||||
"open-note-externally": "デフォルトのアプリケーションでノートをファイルとして開く",
|
||||
"render-active-note": "アクティブなノートを再描画(再レンダリング)する",
|
||||
"run-active-note": "アクティブなJavaScript(フロントエンド/バックエンド)のコードノートを実行する",
|
||||
"reload-frontend-app": "フロントエンドをリロード",
|
||||
"open-dev-tools": "開発者ツールを開く",
|
||||
"find-in-text": "検索パネルの切り替え",
|
||||
"toggle-left-note-tree-panel": "左パネルの切り替え (ノートツリー)",
|
||||
"toggle-full-screen": "フルスクリーンの切り替え",
|
||||
"note-navigation": "ノートナビゲーション",
|
||||
"copy-without-formatting": "選択したテキストを書式なしでコピーする",
|
||||
"export-as-pdf": "現在のノートをPDFとしてエクスポートする",
|
||||
"zoom-out": "ズームアウト",
|
||||
"zoom-in": "ズームイン",
|
||||
"reset-zoom-level": "ズームレベルのリセット",
|
||||
"quick-search": "クイック検索バーを有効にする",
|
||||
"sort-child-notes": "子ノートを並べ替える",
|
||||
"create-note-into-inbox": "inbox(定義されている場合)またはデイノートにノートを作成する",
|
||||
"note-clipboard": "ノートクリップボード",
|
||||
"duplicate-subtree": "サブツリーの複製",
|
||||
"edit-branch-prefix": "「ブランチ接頭辞の編集」ダイアログを表示",
|
||||
"show-revisions": "「ノートの変更履歴」ダイアログを表示",
|
||||
"attributes-labels-and-relations": "属性(ラベルとリレーション)",
|
||||
"add-new-label": "新しいラベルを作成する",
|
||||
"create-new-relation": "新しいリレーションを作成する",
|
||||
"toggle-basic-properties": "基本属性切り替え",
|
||||
"toggle-file-properties": "ファイル属性切り替え",
|
||||
"toggle-image-properties": "画像属性切り替え",
|
||||
"toggle-owned-attributes": "所有属性切り替え",
|
||||
"toggle-inherited-attributes": "継承属性切り替え",
|
||||
"toggle-note-hoisting": "ノートホイスト切り替え",
|
||||
"unhoist": "すべてのホイストを無効にする",
|
||||
"toggle-book-properties": "コレクションプロパティ切り替え",
|
||||
"toggle-zen-mode": "禅モード(集中した編集のための最小限のUI)を有効/無効にする",
|
||||
"add-include-note-to-text": "ノートを埋め込むダイアログを開く",
|
||||
"toggle-promoted-attributes": "プロモート属性切り替え",
|
||||
"force-save-revision": "アクティブノートの新しいノートリヴィジョンを強制する",
|
||||
"toggle-classic-editor-toolbar": "固定ツールバーエディターの書式設定タブ切り替え"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "ノートの履歴を戻る",
|
||||
"forward-in-note-history": "ノートの履歴を進む",
|
||||
"command-palette": "コマンドパレット",
|
||||
"scroll-to-active-note": "アクティブノートまでスクロール",
|
||||
"quick-search": "クイック検索",
|
||||
"search-in-subtree": "サブツリー内を検索",
|
||||
"expand-subtree": "サブツリーを展開",
|
||||
"collapse-subtree": "サブツリーを折りたたむ",
|
||||
"collapse-tree": "ツリーを折りたたむ",
|
||||
"sort-child-notes": "子ノートを並べ替え",
|
||||
"create-note-after": "後ろにノートを作成",
|
||||
"create-note-into": "子ノートを作成",
|
||||
"delete-notes": "ノートを削除",
|
||||
"move-note-up": "ノートを上に移動",
|
||||
"move-note-down": "ノートを下に移動",
|
||||
"move-note-up-in-hierarchy": "ノートの階層を上に移動",
|
||||
"move-note-down-in-hierarchy": "ノートの階層を下に移動",
|
||||
"edit-note-title": "ノートのタイトルを編集",
|
||||
"clone-notes-to": "ノートを複製",
|
||||
"move-notes-to": "ノートを移動",
|
||||
"copy-notes-to-clipboard": "ノートをクリップボードにコピー",
|
||||
"paste-notes-from-clipboard": "クリップボードからノートを貼り付け",
|
||||
"cut-notes-to-clipboard": "ノートをクリップボードに切り取り",
|
||||
"select-all-notes-in-parent": "親ノート内のすべてのノートを選択",
|
||||
"add-note-above-to-selection": "選択範囲に上のノートを追加",
|
||||
"add-note-below-to-selection": "選択範囲に下のノートを追加",
|
||||
"open-new-tab": "新しいタブを開く",
|
||||
"close-active-tab": "アクティブなタブを閉じる",
|
||||
"reopen-last-tab": "最後のタブを開き直す",
|
||||
"activate-next-tab": "次のタブに移動",
|
||||
"activate-previous-tab": "前のタブに移動",
|
||||
"open-new-window": "新しいウィンドウを開く",
|
||||
"toggle-system-tray-icon": "システムトレイアイコンの切り替え",
|
||||
"switch-to-first-tab": "最初のタブに切り替え",
|
||||
"switch-to-second-tab": "2番目のタブに切り替え",
|
||||
"switch-to-third-tab": "3番目のタブに切り替え",
|
||||
"switch-to-fourth-tab": "4番目のタブに切り替え",
|
||||
"switch-to-fifth-tab": "5番目のタブに切り替え",
|
||||
"switch-to-sixth-tab": "6番目のタブに切り替え",
|
||||
"switch-to-seventh-tab": "7番目のタブに切り替え",
|
||||
"switch-to-eighth-tab": "8番目のタブに切り替え",
|
||||
"switch-to-ninth-tab": "9番目のタブに切り替え",
|
||||
"switch-to-last-tab": "最後のタブに切り替え",
|
||||
"show-note-source": "ノートのソースを表示",
|
||||
"show-options": "設定を表示",
|
||||
"show-recent-changes": "最近の変更を表示",
|
||||
"show-sql-console": "SQLコンソールを表示",
|
||||
"show-backend-log": "バックエンドログを表示",
|
||||
"show-help": "ヘルプを表示",
|
||||
"show-cheatsheet": "チートシートを表示",
|
||||
"add-link-to-text": "テキストにリンクを追加",
|
||||
"follow-link-under-cursor": "カーソル下のリンクをたどる",
|
||||
"insert-date-and-time-to-text": "日時を挿入",
|
||||
"paste-markdown-into-text": "Markdownをテキストに貼り付け",
|
||||
"cut-into-note": "ノートから切り取り",
|
||||
"edit-read-only-note": "読み取り専用ノートの編集",
|
||||
"toggle-right-pane": "右ペイン切り替え",
|
||||
"print-active-note": "アクティブノートを印刷",
|
||||
"export-active-note-as-pdf": "ノートをPDFとしてエクスポート",
|
||||
"open-note-externally": "外部でノートを開く",
|
||||
"render-active-note": "アクティブノートを描画",
|
||||
"run-active-note": "アクティブノートを実行",
|
||||
"reload-frontend-app": "フロントエンドアプリのリロード",
|
||||
"open-developer-tools": "開発者ツールを開く",
|
||||
"find-in-text": "テキスト内検索",
|
||||
"toggle-left-pane": "左ペイン切り替え",
|
||||
"toggle-full-screen": "フルスクリーンの切り替え",
|
||||
"copy-without-formatting": "書式なしでコピー",
|
||||
"duplicate-subtree": "サブツリーの複製",
|
||||
"create-note-into-inbox": "Inboxにノートを作成",
|
||||
"toggle-zen-mode": "禅モードの切り替え",
|
||||
"reset-zoom-level": "ズームレベルのリセット",
|
||||
"zoom-out": "ズームアウト",
|
||||
"zoom-in": "ズームイン",
|
||||
"jump-to-note": "ジャンプ先…",
|
||||
"edit-branch-prefix": "ブランチ接頭辞の編集",
|
||||
"show-revisions": "変更履歴を表示",
|
||||
"add-new-label": "ラベルを追加",
|
||||
"add-new-relation": "リレーションを追加",
|
||||
"toggle-ribbon-tab-basic-properties": "リボンタブ切り替え:基本属性",
|
||||
"toggle-ribbon-tab-book-properties": "リボンタブ切り替え:書籍属性",
|
||||
"toggle-ribbon-tab-file-properties": "リボンタブ切り替え:ファイル属性",
|
||||
"toggle-ribbon-tab-image-properties": "リボンタブ切り替え:画像属性",
|
||||
"toggle-ribbon-tab-owned-attributes": "リボンタブ切り替え:所有属性",
|
||||
"toggle-ribbon-tab-inherited-attributes": "リボンタブ切り替え:継承属性",
|
||||
"toggle-ribbon-tab-note-map": "リボンタブ切り替え:ノートマップ",
|
||||
"toggle-ribbon-tab-note-info": "リボンタブ切り替え:ノート情報",
|
||||
"toggle-ribbon-tab-note-paths": "リボンタブ切り替え:ノートパス",
|
||||
"toggle-ribbon-tab-similar-notes": "リボンタブ切り替え:類似ノート",
|
||||
"toggle-note-hoisting": "ノートホイスト切り替え",
|
||||
"unhoist-note": "ノートホイストを無効にする",
|
||||
"force-save-revision": "強制保存リビジョン",
|
||||
"add-include-note-to-text": "埋め込みノートを追加",
|
||||
"toggle-ribbon-tab-classic-editor": "リボンタブのクラシックエディターに切り替える",
|
||||
"toggle-ribbon-tab-promoted-attributes": "リボンタブ切り替え:プロモート属性"
|
||||
},
|
||||
"login": {
|
||||
"title": "ログイン",
|
||||
"heading": "Trilium ログイン",
|
||||
"incorrect-totp": "TOTPが正しくありません。もう一度お試しください。",
|
||||
"incorrect-password": "パスワードが正しくありません。もう一度お試しください。",
|
||||
"password": "パスワード",
|
||||
"button": "ログイン",
|
||||
"remember-me": "ログイン情報を記憶する",
|
||||
"sign_in_with_sso": "{{ ssoIssuerName }}でログイン"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "パスワードの設定",
|
||||
"heading": "パスワードの設定",
|
||||
"description": "web から Trilium を始めるには、パスワードを設定する必要があります。設定したパスワードを使ってログインします。",
|
||||
"password": "パスワード",
|
||||
"button": "パスワードの設定",
|
||||
"password-confirmation": "パスワードの再入力"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes セットアップ",
|
||||
"new-document": "私は新しいユーザーで、ノートを取るために新しいTriliumドキュメントを作成したい",
|
||||
"sync-from-desktop": "すでにデスクトップ版のインスタンスがあり、同期を設定したい",
|
||||
"sync-from-server": "すでにサーバー版のインスタンスがあり、同期を設定したい",
|
||||
"init-in-progress": "ドキュメントの初期化処理を実行中",
|
||||
"redirecting": "まもなくアプリケーションにリダイレクトされます。",
|
||||
"next": "次へ",
|
||||
"title": "セットアップ"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "デスクトップから同期",
|
||||
"description": "このセットアップはデスクトップインスタンスから開始する必要があります:",
|
||||
"step1": "Trilium Notes のデスクトップインスタンスを開きます。",
|
||||
"step2": "Triliumメニューから、設定をクリックします。",
|
||||
"step3": "同期をクリックします。",
|
||||
"step4": "サーバーインスタンスアドレスを {{- host}} に変更し、保存をクリックします。",
|
||||
"step5": "「同期テスト」をクリックして、接続が成功したか確認してください。",
|
||||
"step6": "これらのステップを完了したら、{{- link}} をクリックしてください。",
|
||||
"step6-here": "ここ"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "サーバーから同期",
|
||||
"instructions": "Triliumサーバーのアドレスと認証情報を下記に入力してください。これにより、Triliumドキュメント全体がサーバーからダウンロードされ、同期が設定されます。ドキュメントのサイズと接続速度によっては、時間がかかる場合があります。",
|
||||
"server-host": "Triliumサーバーのアドレス",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "プロキシサーバー(オプション)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-instruction": "プロキシ設定を空欄にすると、システムプロキシが使用されます(デスクトップアプリケーションにのみ適用されます)",
|
||||
"password": "パスワード",
|
||||
"password-placeholder": "パスワード",
|
||||
"finish-setup": "セットアップ完了",
|
||||
"back": "戻る",
|
||||
"note": "ノート:"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "同期中",
|
||||
"successful": "同期が正しく設定されました。最初の同期が完了するまでしばらく時間がかかります。完了すると、ログインページにリダイレクトされます。",
|
||||
"outstanding-items": "同期が未完了のアイテム:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "月曜日",
|
||||
"tuesday": "火曜日",
|
||||
"wednesday": "水曜日",
|
||||
"thursday": "木曜日",
|
||||
"friday": "金曜日",
|
||||
"saturday": "土曜日",
|
||||
"sunday": "日曜日"
|
||||
},
|
||||
"months": {
|
||||
"january": "1月",
|
||||
"february": "2月",
|
||||
"march": "3月",
|
||||
"april": "4月",
|
||||
"may": "5月",
|
||||
"june": "6月",
|
||||
"july": "7月",
|
||||
"august": "8月",
|
||||
"september": "9月",
|
||||
"october": "10月",
|
||||
"november": "11月",
|
||||
"december": "12月"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "検索:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "同期サーバーホストが設定されていません。最初に同期を設定してください。",
|
||||
"successful": "同期サーバーとのハンドシェイクが成功しました。同期が開始されました。"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"search-history-title": "検索履歴",
|
||||
"sync-title": "同期",
|
||||
"appearance-title": "外観",
|
||||
"shortcuts-title": "ショートカット",
|
||||
"text-notes": "テキストノート",
|
||||
"code-notes-title": "コードノート",
|
||||
"images-title": "画像",
|
||||
"spellcheck-title": "スペルチェック",
|
||||
"password-title": "パスワード",
|
||||
"backup-title": "バックアップ",
|
||||
"other": "その他",
|
||||
"advanced-title": "高度",
|
||||
"user-guide": "ユーザーガイド",
|
||||
"localization": "言語と地域",
|
||||
"sql-console-history-title": "SQLコンソール履歴",
|
||||
"new-note-title": "新しいノート",
|
||||
"bookmarks-title": "ブックマーク",
|
||||
"open-today-journal-note-title": "今日の日記を開く",
|
||||
"quick-search-title": "クイック検索",
|
||||
"recent-changes-title": "最近の変更",
|
||||
"root-title": "隠されたノート",
|
||||
"note-map-title": "ノートマップ",
|
||||
"shared-notes-title": "共有ノート",
|
||||
"bulk-action-title": "一括操作",
|
||||
"backend-log-title": "バックエンドログ",
|
||||
"user-hidden-title": "非表示のユーザー",
|
||||
"launch-bar-templates-title": "ランチャーバーテンプレート",
|
||||
"command-launcher-title": "コマンドランチャー",
|
||||
"note-launcher-title": "ノートランチャー",
|
||||
"script-launcher-title": "スクリプトランチャー",
|
||||
"built-in-widget-title": "内蔵のウィジェット",
|
||||
"spacer-title": "スペーサー",
|
||||
"custom-widget-title": "カスタムウィジェット",
|
||||
"launch-bar-title": "ランチャーバー",
|
||||
"available-launchers-title": "利用可能なランチャー",
|
||||
"go-to-previous-note-title": "前のノートに移動",
|
||||
"go-to-next-note-title": "次のノートに移動",
|
||||
"search-notes-title": "検索ノート",
|
||||
"jump-to-note-title": "ジャンプ先…",
|
||||
"calendar-title": "カレンダー",
|
||||
"protected-session-title": "保護されたセッション",
|
||||
"sync-status-title": "同期状態",
|
||||
"settings-title": "設定",
|
||||
"options-title": "設定",
|
||||
"multi-factor-authentication-title": "多要素認証",
|
||||
"etapi-title": "ETAPI",
|
||||
"visible-launchers-title": "可視化されたランチャー",
|
||||
"inbox-title": "Inbox",
|
||||
"base-abstract-launcher-title": "ベース アブストラクトランチャー",
|
||||
"command-palette": "コマンドパレットを開く",
|
||||
"zen-mode": "禅モード",
|
||||
"tab-switcher-title": "タブ切り替え"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "新しいノート",
|
||||
"duplicate-note-suffix": "(複製)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "バックエンドのログファイル '{{ fileName }}' は(まだ)存在しません。",
|
||||
"reading-log-failed": "バックエンドのログファイル '{{ fileName }}' の読み込みに失敗しました。"
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "このノートタイプは表示できません。"
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDFドキュメント (*.pdf)",
|
||||
"unable-to-export-message": "現在のノートをPDFとしてエクスポートできませんでした。",
|
||||
"unable-to-export-title": "PDFとしてエクスポートできません",
|
||||
"unable-to-save-message": "選択されたファイルに書き込めませんでした。もう一度試すか、別の保存先を選択してください。",
|
||||
"unable-to-print": "ノートを印刷できません"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Triliumを終了",
|
||||
"recents": "最近のノート",
|
||||
"bookmarks": "ブックマーク",
|
||||
"today": "今日の日記を開く",
|
||||
"new-note": "新しいノート",
|
||||
"show-windows": "ウィンドウを表示",
|
||||
"open_new_window": "新しいウィンドウを開く"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "現在のバージョンからの直接的な移行はサポートされていません。まず最新のv0.60.4にアップグレードしてから、このバージョンにアップグレードしてください。",
|
||||
"error_message": "バージョン {{version}} への移行中にエラーが発生しました: {{stack}}",
|
||||
"wrong_db_version": "データベースのバージョン({{version}})は、アプリケーションが想定しているバージョン({{targetVersion}})よりも新しく、互換性のないバージョンによって作成された可能性があります。この問題を解決するには、Triliumを最新バージョンにアップグレードしてください。"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "エラー"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "サイトのテーマ",
|
||||
"search_placeholder": "検索...",
|
||||
"last-updated": "最終更新日 {{- date}}",
|
||||
"subpages": "サブページ:",
|
||||
"image_alt": "記事画像",
|
||||
"on-this-page": "このページの内容",
|
||||
"expand": "展開"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "テキストスニペット",
|
||||
"description": "説明",
|
||||
"list-view": "リストビュー",
|
||||
"grid-view": "グリッドビュー",
|
||||
"calendar": "カレンダー",
|
||||
"table": "テーブル",
|
||||
"start-date": "開始日",
|
||||
"end-date": "終了日",
|
||||
"start-time": "開始時刻",
|
||||
"end-time": "終了時間",
|
||||
"board": "カンバンボード",
|
||||
"status": "ステータス",
|
||||
"board_note_first": "最初のノート",
|
||||
"board_note_second": "2番目のノート",
|
||||
"board_note_third": "3番目のノート",
|
||||
"board_status_progress": "進行中",
|
||||
"board_status_done": "完了",
|
||||
"geo-map": "ジオマップ",
|
||||
"geolocation": "ジオロケーション",
|
||||
"built-in-templates": "内蔵のテンプレート",
|
||||
"board_status_todo": "未完了",
|
||||
"presentation": "プレゼンテーション",
|
||||
"presentation_slide": "プレゼンテーションスライド",
|
||||
"presentation_slide_first": "最初のスライド",
|
||||
"presentation_slide_second": "2番目のスライド",
|
||||
"background": "背景"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "該当なし",
|
||||
"heading": "該当なし"
|
||||
},
|
||||
"share_page": {
|
||||
"clipped-from": "このノートは元々{{- url}}から切り取られたものです",
|
||||
"no-content": "このノートには内容がありません。",
|
||||
"parent": "親:",
|
||||
"child-notes": "子ノート:"
|
||||
},
|
||||
"weekdayNumber": "第{weekNumber}週",
|
||||
"quarterNumber": "四半期 {quarterNumber}",
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "DB が初期化されていません。画面の指示に従ってください。",
|
||||
"db_not_initialized_server": "DB が初期化されていません。セットアップ ページ 「http://[your-server-host]:{{port}}」 にアクセスして、Trilium を初期化する方法の説明を確認してください。"
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "すでにインスタンスが実行されているので、代わりにそのインスタンスにフォーカスします。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,89 +1,87 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "기록 내 이전 노트로 이동하기",
|
||||
"open-command-palette": "명령어 팔레트 열기",
|
||||
"delete-note": "노트 삭제",
|
||||
"quick-search": "빠른 검색바 활성화",
|
||||
"move-note-up": "노트를 위로 이동",
|
||||
"move-note-down": "노트를 아래로 이동",
|
||||
"move-note-up-in-hierarchy": "노트를 상위 계층으로 이동",
|
||||
"move-note-down-in-hierarchy": "노트를 하위 계층으로 이동",
|
||||
"sort-child-notes": "자식 노트 정렬",
|
||||
"forward-in-note-history": "기록 내 다음 노트로 이동하기",
|
||||
"open-jump-to-note-dialog": "\"노트로 이동하기\" 대화창 열기",
|
||||
"scroll-to-active-note": "노트 트리를 활성화된 노트로 스크롤하기",
|
||||
"search-in-subtree": "활성화된 노트 하위에서 노트 찾기",
|
||||
"expand-subtree": "현재 노트의 서브트리 펼치기",
|
||||
"collapse-tree": "전체 노트 트리 접기",
|
||||
"collapse-subtree": "현재 노트의 서브트리 접기",
|
||||
"creating-and-moving-notes": "노트 만들기 및 이동하기",
|
||||
"create-note-after": "노트 활성화 후 노트 만들기",
|
||||
"create-note-into": "활성화된 노트 하위에 노트 만들기",
|
||||
"create-note-into-inbox": "받은 편지함(정의된 경우) 또는 당일 노트에 노트 만들기",
|
||||
"edit-note-title": "트리에서 노트 세부 사항으로 이동하고 제목 편집하기",
|
||||
"edit-branch-prefix": "\"브랜치 접두사 편집\" 대화창 표시하기",
|
||||
"clone-notes-to": "선택된 노트들을 복사하기",
|
||||
"move-notes-to": "선택된 노트들을 이동하기",
|
||||
"note-clipboard": "노트 클립보드",
|
||||
"copy-notes-to-clipboard": "선택된 노트들을 클립보드에 복사하기",
|
||||
"paste-notes-from-clipboard": "클립보드 내 노트를 활성화된 노트에 붙여넣기",
|
||||
"cut-notes-to-clipboard": "선택된 노트들을 클립보드에 잘라내기",
|
||||
"select-all-notes-in-parent": "현재 노트 레벨에서 모든 노트 선택하기",
|
||||
"add-note-above-to-the-selection": "선택한 영역 위에 노트 추가하기",
|
||||
"add-note-below-to-selection": "선택한 영역 아래에 노트 추가하기",
|
||||
"duplicate-subtree": "서브트리 복사하기",
|
||||
"open-new-tab": "새 탭 열기",
|
||||
"close-active-tab": "활성화된 탭 닫기",
|
||||
"reopen-last-tab": "마지막으로 닫은 탭 열기",
|
||||
"activate-next-tab": "우측 탭 활성화",
|
||||
"activate-previous-tab": "좌측 탭 활성화",
|
||||
"open-new-window": "새 비어있는 창 열기",
|
||||
"toggle-tray": "시스템 트레이에서 애플리케이션 보여주기/숨기기",
|
||||
"tabs-and-windows": "탭 & 창",
|
||||
"first-tab": "목록의 첫 번째 탭 활성화",
|
||||
"second-tab": "목록의 두 번째 탭 활성화",
|
||||
"third-tab": "목록의 세 번째 탭 활성화",
|
||||
"fourth-tab": "목록의 네 번째 탭 활성화",
|
||||
"fifth-tab": "목록의 다섯 번째 탭 활성화",
|
||||
"sixth-tab": "목록의 여섯 번째 탭 활성화",
|
||||
"seventh-tab": "목록의 일곱 번째 탭 활성화",
|
||||
"eight-tab": "목록의 여덟 번째 탭 활성화",
|
||||
"ninth-tab": "목록의 아홉 번째 탭 활성화",
|
||||
"last-tab": "목록의 마지막 탭 활성화",
|
||||
"dialogs": "대화 상자",
|
||||
"show-note-source": "\"노트 소스\" 대화 상자 표시",
|
||||
"show-options": "\"옵션\" 페이지 열기",
|
||||
"show-revisions": "\"노트 리비젼\" 대화 상자 표시",
|
||||
"show-recent-changes": "\"최근 변경 사항\" 대화 상자 표시",
|
||||
"show-sql-console": "\"SQL 콘솔\" 페이지 열기",
|
||||
"show-backend-log": "\"백엔드 로그\" 페이지 열기",
|
||||
"show-help": "내장 사용자 설명서 열기",
|
||||
"show-cheatsheet": "일반적인 키보드 형식의 팝업 표시",
|
||||
"text-note-operations": "텍스트 노트 작업",
|
||||
"add-link-to-text": "텍스트에 링크 추가를 위한 대화 상자 열기"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"zen-mode": "젠 모드",
|
||||
"open-today-journal-note-title": "오늘의 일지 기록 열기",
|
||||
"quick-search-title": "빠른 검색",
|
||||
"protected-session-title": "보호된 세션",
|
||||
"sync-status-title": "동기화 상태",
|
||||
"settings-title": "설정",
|
||||
"llm-chat-title": "기록과 대화하기",
|
||||
"options-title": "옵션",
|
||||
"appearance-title": "모양",
|
||||
"shortcuts-title": "바로가기",
|
||||
"text-notes": "텍스트 노트",
|
||||
"code-notes-title": "코드 노트",
|
||||
"images-title": "그림",
|
||||
"spellcheck-title": "맞춤법 검사",
|
||||
"password-title": "암호",
|
||||
"multi-factor-authentication-title": "다중 인증",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "백업",
|
||||
"sync-title": "동기화",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "기타",
|
||||
"advanced-title": "고급"
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "기록 내 이전 노트로 이동하기",
|
||||
"open-command-palette": "명령어 팔레트 열기",
|
||||
"delete-note": "노트 삭제",
|
||||
"quick-search": "빠른 검색바 활성화",
|
||||
"move-note-up": "노트를 위로 이동",
|
||||
"move-note-down": "노트를 아래로 이동",
|
||||
"move-note-up-in-hierarchy": "노트를 상위 계층으로 이동",
|
||||
"move-note-down-in-hierarchy": "노트를 하위 계층으로 이동",
|
||||
"sort-child-notes": "자식 노트 정렬",
|
||||
"forward-in-note-history": "기록 내 다음 노트로 이동하기",
|
||||
"open-jump-to-note-dialog": "\"노트로 이동하기\" 대화창 열기",
|
||||
"scroll-to-active-note": "노트 트리를 활성화된 노트로 스크롤하기",
|
||||
"search-in-subtree": "활성화된 노트 하위에서 노트 찾기",
|
||||
"expand-subtree": "현재 노트의 서브트리 펼치기",
|
||||
"collapse-tree": "전체 노트 트리 접기",
|
||||
"collapse-subtree": "현재 노트의 서브트리 접기",
|
||||
"creating-and-moving-notes": "노트 만들기 및 이동하기",
|
||||
"create-note-after": "노트 활성화 후 노트 만들기",
|
||||
"create-note-into": "활성화된 노트 하위에 노트 만들기",
|
||||
"create-note-into-inbox": "받은 편지함(정의된 경우) 또는 당일 노트에 노트 만들기",
|
||||
"edit-note-title": "트리에서 노트 세부 사항으로 이동하고 제목 편집하기",
|
||||
"edit-branch-prefix": "\"브랜치 접두사 편집\" 대화창 표시하기",
|
||||
"clone-notes-to": "선택된 노트들을 복사하기",
|
||||
"move-notes-to": "선택된 노트들을 이동하기",
|
||||
"note-clipboard": "노트 클립보드",
|
||||
"copy-notes-to-clipboard": "선택된 노트들을 클립보드에 복사하기",
|
||||
"paste-notes-from-clipboard": "클립보드 내 노트를 활성화된 노트에 붙여넣기",
|
||||
"cut-notes-to-clipboard": "선택된 노트들을 클립보드에 잘라내기",
|
||||
"select-all-notes-in-parent": "현재 노트 레벨에서 모든 노트 선택하기",
|
||||
"add-note-above-to-the-selection": "선택한 영역 위에 노트 추가하기",
|
||||
"add-note-below-to-selection": "선택한 영역 아래에 노트 추가하기",
|
||||
"duplicate-subtree": "서브트리 복사하기",
|
||||
"open-new-tab": "새 탭 열기",
|
||||
"close-active-tab": "활성화된 탭 닫기",
|
||||
"reopen-last-tab": "마지막으로 닫은 탭 열기",
|
||||
"activate-next-tab": "우측 탭 활성화",
|
||||
"activate-previous-tab": "좌측 탭 활성화",
|
||||
"open-new-window": "새 비어있는 창 열기",
|
||||
"toggle-tray": "시스템 트레이에서 애플리케이션 보여주기/숨기기",
|
||||
"tabs-and-windows": "탭 & 창",
|
||||
"first-tab": "목록의 첫 번째 탭 활성화",
|
||||
"second-tab": "목록의 두 번째 탭 활성화",
|
||||
"third-tab": "목록의 세 번째 탭 활성화",
|
||||
"fourth-tab": "목록의 네 번째 탭 활성화",
|
||||
"fifth-tab": "목록의 다섯 번째 탭 활성화",
|
||||
"sixth-tab": "목록의 여섯 번째 탭 활성화",
|
||||
"seventh-tab": "목록의 일곱 번째 탭 활성화",
|
||||
"eight-tab": "목록의 여덟 번째 탭 활성화",
|
||||
"ninth-tab": "목록의 아홉 번째 탭 활성화",
|
||||
"last-tab": "목록의 마지막 탭 활성화",
|
||||
"dialogs": "대화 상자",
|
||||
"show-note-source": "\"노트 소스\" 대화 상자 표시",
|
||||
"show-options": "\"옵션\" 페이지 열기",
|
||||
"show-revisions": "\"노트 리비젼\" 대화 상자 표시",
|
||||
"show-recent-changes": "\"최근 변경 사항\" 대화 상자 표시",
|
||||
"show-sql-console": "\"SQL 콘솔\" 페이지 열기",
|
||||
"show-backend-log": "\"백엔드 로그\" 페이지 열기",
|
||||
"show-help": "내장 사용자 설명서 열기",
|
||||
"show-cheatsheet": "일반적인 키보드 형식의 팝업 표시",
|
||||
"text-note-operations": "텍스트 노트 작업",
|
||||
"add-link-to-text": "텍스트에 링크 추가를 위한 대화 상자 열기"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"zen-mode": "젠 모드",
|
||||
"open-today-journal-note-title": "오늘의 일지 기록 열기",
|
||||
"quick-search-title": "빠른 검색",
|
||||
"protected-session-title": "보호된 세션",
|
||||
"sync-status-title": "동기화 상태",
|
||||
"settings-title": "설정",
|
||||
"options-title": "옵션",
|
||||
"appearance-title": "모양",
|
||||
"shortcuts-title": "바로가기",
|
||||
"text-notes": "텍스트 노트",
|
||||
"code-notes-title": "코드 노트",
|
||||
"images-title": "그림",
|
||||
"spellcheck-title": "맞춤법 검사",
|
||||
"password-title": "암호",
|
||||
"multi-factor-authentication-title": "다중 인증",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "백업",
|
||||
"sync-title": "동기화",
|
||||
"other": "기타",
|
||||
"advanced-title": "고급"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,443 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Nawigacja do poprzedniej notatki w historii",
|
||||
"forward-in-note-history": "Nawigacja do następnej notatki w historii",
|
||||
"open-jump-to-note-dialog": "Otwórz okno \"Przejdź do notatki\"",
|
||||
"open-command-palette": "Otwórz paletę komend",
|
||||
"scroll-to-active-note": "Przewiń drzewo do aktywnej notatki",
|
||||
"quick-search": "Aktywuj szybki pasek wyszukiwania",
|
||||
"search-in-subtree": "Szukaj notatek w poddrzewie aktywnej notatki",
|
||||
"expand-subtree": "Rozwiń sub-drzewo obecnej notatki",
|
||||
"collapse-tree": "Zwiń całe drzewo notatek",
|
||||
"collapse-subtree": "Zwiń poddrzewo aktualnej notatki",
|
||||
"sort-child-notes": "Sortuj notatki podrzędne",
|
||||
"creating-and-moving-notes": "Tworzenie i przenoszenie notatek",
|
||||
"create-note-after": "Utwórz notatkę po aktywnej notatce",
|
||||
"create-note-into": "Utwórz notatkę jako podrzędną aktywnej notatki",
|
||||
"create-note-into-inbox": "Utwórz notatkę w skrzynce odbiorczej (jeśli zdefiniowana) lub notatkę dnia",
|
||||
"delete-note": "Usuń notatkę",
|
||||
"move-note-up": "Przenieś notatkę w górę",
|
||||
"move-note-down": "Przenieś notatkę w dół",
|
||||
"move-note-up-in-hierarchy": "Przenieś notatkę wyżej w hierarchii",
|
||||
"move-note-down-in-hierarchy": "Przenieś notatkę niżej w hierarchii",
|
||||
"edit-note-title": "Przejdź z drzewa do edycji tytułu notatki",
|
||||
"edit-branch-prefix": "Pokaż okno \"Edytuj prefiks gałęzi\"",
|
||||
"clone-notes-to": "Sklonuj zaznaczone notatki",
|
||||
"move-notes-to": "Przenieś zaznaczone notatki",
|
||||
"note-clipboard": "Schowek notatek",
|
||||
"copy-notes-to-clipboard": "Skopiuj zaznaczone notatki do schowka",
|
||||
"paste-notes-from-clipboard": "Wklej notatki ze schowka do aktywnej notatki",
|
||||
"cut-notes-to-clipboard": "Wytnij zaznaczone notatki do schowka",
|
||||
"select-all-notes-in-parent": "Zaznacz wszystkie notatki na tym samym poziomie",
|
||||
"add-note-above-to-the-selection": "Dodaj notatkę powyżej do zaznaczenia",
|
||||
"add-note-below-to-selection": "Dodaj notatkę poniżej do zaznaczenia",
|
||||
"duplicate-subtree": "Duplikuj poddrzewo",
|
||||
"tabs-and-windows": "Karty i okna",
|
||||
"open-new-tab": "Otwórz nową kartę",
|
||||
"close-active-tab": "Zamknij aktywną kartę",
|
||||
"reopen-last-tab": "Otwórz ponownie ostatnio zamkniętą kartę",
|
||||
"activate-next-tab": "Aktywuj kartę po prawej",
|
||||
"activate-previous-tab": "Aktywuj kartę po lewej",
|
||||
"open-new-window": "Otwórz nowe puste okno",
|
||||
"toggle-tray": "Pokaż/ukryj aplikację w zasobniku systemowym",
|
||||
"first-tab": "Aktywuj pierwszą kartę na liście",
|
||||
"second-tab": "Aktywuj drugą kartę na liście",
|
||||
"third-tab": "Aktywuj trzecią kartę na liście",
|
||||
"fourth-tab": "Aktywuj czwartą kartę na liście",
|
||||
"fifth-tab": "Aktywuj piątą kartę na liście",
|
||||
"sixth-tab": "Aktywuj szóstą kartę na liście",
|
||||
"seventh-tab": "Aktywuj siódmą kartę na liście",
|
||||
"eight-tab": "Aktywuj ósmą kartę na liście",
|
||||
"ninth-tab": "Aktywuj dziewiątą kartę na liście",
|
||||
"last-tab": "Aktywuj ostatnią kartę na liście",
|
||||
"dialogs": "Okna dialogowe",
|
||||
"show-note-source": "Pokaż okno \"Źródło notatki\"",
|
||||
"show-options": "Otwórz stronę \"Opcje\"",
|
||||
"show-revisions": "Pokaż okno \"Rewizje notatki\"",
|
||||
"show-recent-changes": "Pokaż okno \"Ostatnie zmiany\"",
|
||||
"show-sql-console": "Otwórz stronę \"Konsola SQL\"",
|
||||
"show-backend-log": "Otwórz stronę \"Logi backendu\"",
|
||||
"show-help": "Otwórz wbudowany Poradnik Użytkownika",
|
||||
"show-cheatsheet": "Pokaż listę skrótów klawiszowych",
|
||||
"text-note-operations": "Operacje na notatkach tekstowych",
|
||||
"add-link-to-text": "Otwórz okno dodawania linku do tekstu",
|
||||
"follow-link-under-cursor": "Podążaj za linkiem pod kursorem",
|
||||
"insert-date-and-time-to-text": "Wstaw aktualną datę i czas",
|
||||
"paste-markdown-into-text": "Wklej Markdown ze schowka jako tekst",
|
||||
"add-new-label": "Utwórz nową etykietę",
|
||||
"create-new-relation": "Utwórz nową relację",
|
||||
"attributes-labels-and-relations": "Atrybuty (etykiety i relacje)",
|
||||
"open-note-externally": "Otwórz notatkę w domyślnej aplikacji zewnętrznej",
|
||||
"reset-zoom-level": "Zresetuj poziom powiększenia",
|
||||
"reload-frontend-app": "Przeładuj interfejs (frontend)",
|
||||
"open-dev-tools": "Otwórz narzędzia deweloperskie",
|
||||
"zoom-out": "Pomniejsz",
|
||||
"zoom-in": "Powiększ",
|
||||
"print-active-note": "Drukuj aktywną notatkę",
|
||||
"toggle-full-screen": "Przełącz pełny ekran",
|
||||
"cut-into-note": "Wytnij zaznaczenie i utwórz z niego podnotatkę",
|
||||
"edit-readonly-note": "Edytuj notatkę tylko do odczytu",
|
||||
"other": "Inne",
|
||||
"toggle-basic-properties": "Przełącz właściwości podstawowe",
|
||||
"toggle-file-properties": "Przełącz właściwości pliku",
|
||||
"toggle-image-properties": "Przełącz właściwości obrazu",
|
||||
"toggle-owned-attributes": "Przełącz atrybuty własne",
|
||||
"toggle-inherited-attributes": "Przełącz atrybuty odziedziczone",
|
||||
"toggle-promoted-attributes": "Przełącz atrybuty promowane",
|
||||
"render-active-note": "Renderuj (ponownie) aktywną notatkę",
|
||||
"find-in-text": "Przełącz panel wyszukiwania w tekście",
|
||||
"note-navigation": "Nawigacja notatek",
|
||||
"export-as-pdf": "Eksportuj aktywną notatkę jako PDF",
|
||||
"copy-without-formatting": "Kopiuj bez formatowania",
|
||||
"force-save-revision": "Wymuś utworzenie/zapisanie nowej rewizji aktywnej notatki",
|
||||
"toggle-book-properties": "Przełącz właściwości kolekcji",
|
||||
"toggle-left-note-tree-panel": "Przełącz lewy panel (drzewo notatek)",
|
||||
"toggle-classic-editor-toolbar": "Przełącz pasek narzędzi formatowania edytora",
|
||||
"add-include-note-to-text": "Otwórz okno dołączania (include) notatki",
|
||||
"ribbon-tabs": "Karty wstążki",
|
||||
"toggle-link-map": "Przełącz mapę linków",
|
||||
"toggle-note-info": "Przełącz informacje o notatce",
|
||||
"toggle-note-paths": "Przełącz ścieżki notatki",
|
||||
"toggle-similar-notes": "Przełącz podobne notatki",
|
||||
"toggle-right-pane": "Przełącz prawy panel (spis treści i wyróżnienia)",
|
||||
"run-active-note": "Uruchom aktywny kod JavaScript (frontend/backend)",
|
||||
"toggle-note-hoisting": "Włącz/wyłącz skupienie na bieżącej notatce",
|
||||
"unhoist": "Wyłącz skupienie z dowolnego miejsca",
|
||||
"toggle-zen-mode": "Włącz/wyłącz tryb Zen (minimalistyczny interfejs)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"zoom-in": "Powiększ",
|
||||
"zoom-out": "Pomniejsz",
|
||||
"copy-without-formatting": "Kopiuj bez formatowania",
|
||||
"jump-to-note": "Skocz do...",
|
||||
"scroll-to-active-note": "Przewiń do aktywnej notatki",
|
||||
"expand-subtree": "Rozwiń poddrzewo",
|
||||
"collapse-tree": "Zwiń drzewo",
|
||||
"search-in-subtree": "Szukaj w poddrzewie",
|
||||
"collapse-subtree": "Zwiń poddrzewo",
|
||||
"sort-child-notes": "Sortuj notatki podrzędne",
|
||||
"delete-notes": "Usuń notatki",
|
||||
"move-note-up": "Przesuń notatkę w górę",
|
||||
"move-note-down": "Przesuń notatkę w dół",
|
||||
"move-note-up-in-hierarchy": "Przenieś wyżej w hierarchii",
|
||||
"move-note-down-in-hierarchy": "Przenieś niżej w hierarchii",
|
||||
"open-new-tab": "Otwórz nową kartę",
|
||||
"close-active-tab": "Zamknij aktywną kartę",
|
||||
"reopen-last-tab": "Przywróć ostatnią kartę",
|
||||
"open-new-window": "Otwórz nowe okno",
|
||||
"find-in-text": "Znajdź w tekście",
|
||||
"quick-search": "Szybkie wyszukiwanie",
|
||||
"edit-note-title": "Edytuj tytuł notatki",
|
||||
"copy-notes-to-clipboard": "Kopiuj notatki do schowka",
|
||||
"paste-notes-from-clipboard": "Wklej notatki ze schowka",
|
||||
"cut-notes-to-clipboard": "Wytnij notatki do schowka",
|
||||
"clone-notes-to": "Sklonuj notatki do",
|
||||
"move-notes-to": "Przenieś notatki do",
|
||||
"duplicate-subtree": "Duplikuj poddrzewo",
|
||||
"open-developer-tools": "Otwórz narzędzia deweloperskie",
|
||||
"export-active-note-as-pdf": "Eksportuj aktywną notatkę jako PDF",
|
||||
"open-note-externally": "Otwórz notatkę zewnętrznie",
|
||||
"render-active-note": "Renderuj aktywną notatkę",
|
||||
"run-active-note": "Uruchom aktywną notatkę",
|
||||
"show-revisions": "Pokaż rewizje",
|
||||
"show-recent-changes": "Pokaż ostatnie zmiany",
|
||||
"show-sql-console": "Pokaż konsolę SQL",
|
||||
"reset-zoom-level": "Resetuj poziom powiększenia",
|
||||
"add-link-to-text": "Dodaj link do tekstu",
|
||||
"force-save-revision": "Wymuś zapis rewizji",
|
||||
"create-note-after": "Utwórz notatkę po",
|
||||
"create-note-into": "Utwórz notatkę wewnątrz",
|
||||
"create-note-into-inbox": "Utwórz notatkę w skrzynce odbiorczej",
|
||||
"select-all-notes-in-parent": "Zaznacz wszystko w nadrzędnej",
|
||||
"add-note-above-to-selection": "Dodaj notatkę powyżej do zaznaczenia",
|
||||
"add-note-below-to-selection": "Dodaj notatkę poniżej do zaznaczenia",
|
||||
"activate-next-tab": "Aktywuj następną kartę",
|
||||
"activate-previous-tab": "Aktywuj poprzednią kartę",
|
||||
"toggle-system-tray-icon": "Przełącz ikonę w zasobniku",
|
||||
"toggle-zen-mode": "Przełącz tryb Zen",
|
||||
"switch-to-first-tab": "Przełącz na 1. kartę",
|
||||
"switch-to-second-tab": "Przełącz na 2. kartę",
|
||||
"switch-to-third-tab": "Przełącz na 3. kartę",
|
||||
"switch-to-fourth-tab": "Przełącz na 4. kartę",
|
||||
"switch-to-fifth-tab": "Przełącz na 5. kartę",
|
||||
"switch-to-sixth-tab": "Przełącz na 6. kartę",
|
||||
"switch-to-seventh-tab": "Przełącz na 7. kartę",
|
||||
"switch-to-eighth-tab": "Przełącz na 8. kartę",
|
||||
"switch-to-ninth-tab": "Przełącz na 9. kartę",
|
||||
"switch-to-last-tab": "Przełącz na ostatnią kartę",
|
||||
"show-note-source": "Pokaż źródło notatki",
|
||||
"show-options": "Pokaż opcje",
|
||||
"show-backend-log": "Pokaż logi backendu",
|
||||
"show-help": "Pokaż pomoc",
|
||||
"show-cheatsheet": "Pokaż listę skrótów",
|
||||
"back-in-note-history": "Wstecz w historii notatek",
|
||||
"forward-in-note-history": "Dalej w historii notatek",
|
||||
"command-palette": "Paleta komend",
|
||||
"edit-branch-prefix": "Edytuj prefiks gałęzi",
|
||||
"paste-markdown-into-text": "Wklej Markdown do tekstu",
|
||||
"cut-into-note": "Wytnij do nowej notatki",
|
||||
"edit-read-only-note": "Edytuj notatkę tylko do odczytu",
|
||||
"add-new-label": "Dodaj nową etykietę",
|
||||
"add-new-relation": "Dodaj nową relację",
|
||||
"print-active-note": "Drukuj aktywną notatkę",
|
||||
"toggle-left-pane": "Przełącz lewy panel",
|
||||
"toggle-full-screen": "Przełącz pełny ekran",
|
||||
"follow-link-under-cursor": "Podążaj za linkiem",
|
||||
"insert-date-and-time-to-text": "Wstaw datę i czas",
|
||||
"add-include-note-to-text": "Dołącz notatkę do tekstu",
|
||||
"toggle-ribbon-tab-classic-editor": "Przełącz kartę edytora klasycznego",
|
||||
"toggle-ribbon-tab-basic-properties": "Przełącz kartę właściwości podstawowych",
|
||||
"toggle-ribbon-tab-book-properties": "Przełącz kartę właściwości kolekcji",
|
||||
"toggle-ribbon-tab-file-properties": "Przełącz kartę właściwości pliku",
|
||||
"toggle-ribbon-tab-image-properties": "Przełącz kartę właściwości obrazu",
|
||||
"toggle-ribbon-tab-owned-attributes": "Przełącz kartę atrybutów własnych",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Przełącz kartę atrybutów odziedziczonych",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Przełącz kartę atrybutów promowanych",
|
||||
"toggle-ribbon-tab-note-map": "Przełącz kartę mapy notatek",
|
||||
"toggle-ribbon-tab-note-info": "Przełącz kartę informacji o notatce",
|
||||
"toggle-ribbon-tab-note-paths": "Przełącz kartę ścieżek notatki",
|
||||
"toggle-ribbon-tab-similar-notes": "Przełącz kartę podobnych notatek",
|
||||
"toggle-right-pane": "Przełącz prawy panel",
|
||||
"toggle-note-hoisting": "Przełącz windowanie notatki",
|
||||
"unhoist-note": "Cofnij windowanie",
|
||||
"reload-frontend-app": "Przeładuj aplikację"
|
||||
},
|
||||
"login": {
|
||||
"password": "Hasło",
|
||||
"remember-me": "Zapamiętaj mnie",
|
||||
"title": "Logowanie",
|
||||
"heading": "Logowanie Trilium",
|
||||
"incorrect-totp": "Kod TOTP jest nieprawidłowy. Spróbuj ponownie.",
|
||||
"incorrect-password": "Hasło jest nieprawidłowe. Spróbuj ponownie.",
|
||||
"button": "Zaloguj",
|
||||
"sign_in_with_sso": "Zaloguj przez {{ ssoIssuerName }}"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"server-host": "Adres serwera Trilium",
|
||||
"proxy-server": "Serwer proxy (opcjonalnie)",
|
||||
"back": "Wstecz",
|
||||
"finish-setup": "Zakończ konfigurację",
|
||||
"heading": "Synchronizacja z serwera",
|
||||
"note": "Uwaga:",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"password": "Hasło",
|
||||
"password-placeholder": "Hasło",
|
||||
"instructions": "Wprowadź poniżej adres serwera Trilium i dane logowania. Spowoduje to pobranie całej bazy danych z serwera i skonfigurowanie synchronizacji. Może to chwilę potrwać w zależności od rozmiaru danych i prędkości łącza.",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-instruction": "Jeśli pozostawisz pole proxy puste, zostanie użyte proxy systemowe (dotyczy tylko aplikacji desktopowej)"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Synchronizacja w toku",
|
||||
"outstanding-items": "Pozostałe elementy do synchronizacji:",
|
||||
"outstanding-items-default": "N/A",
|
||||
"successful": "Synchronizacja została poprawnie skonfigurowana. Wstępne pobieranie danych może zająć trochę czasu. Po zakończeniu zostaniesz przekierowany do strony logowania."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Poniedziałek",
|
||||
"tuesday": "Wtorek",
|
||||
"wednesday": "Środa",
|
||||
"thursday": "Czwartek",
|
||||
"friday": "Piątek",
|
||||
"saturday": "Sobota",
|
||||
"sunday": "Niedziela"
|
||||
},
|
||||
"weekdayNumber": "Tydzień {weekNumber}",
|
||||
"months": {
|
||||
"january": "Styczeń",
|
||||
"february": "Luty",
|
||||
"march": "Marzec",
|
||||
"april": "Kwiecień",
|
||||
"may": "Maj",
|
||||
"june": "Czerwiec",
|
||||
"july": "Lipiec",
|
||||
"august": "Sierpień",
|
||||
"september": "Wrzesień",
|
||||
"october": "Październik",
|
||||
"november": "Listopad",
|
||||
"december": "Grudzień"
|
||||
},
|
||||
"quarterNumber": "Kwartał {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Szukaj:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Adres serwera synchronizacji nie jest skonfigurowany. Skonfiguruj najpierw synchronizację.",
|
||||
"successful": "Połączenie z serwerem powiodło się, synchronizacja została rozpoczęta."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Ukryte notatki",
|
||||
"settings-title": "Ustawienia",
|
||||
"options-title": "Opcje",
|
||||
"shortcuts-title": "Skróty",
|
||||
"appearance-title": "Wygląd",
|
||||
"spellcheck-title": "Sprawdzanie pisowni",
|
||||
"password-title": "Hasło",
|
||||
"backup-title": "Kopia zapasowa",
|
||||
"sync-title": "Synchronizacja",
|
||||
"advanced-title": "Zaawansowane",
|
||||
"localization": "Język i Region",
|
||||
"search-history-title": "Historia wyszukiwania",
|
||||
"note-map-title": "Mapa notatek",
|
||||
"sql-console-history-title": "Historia konsoli SQL",
|
||||
"shared-notes-title": "Udostępnione notatki",
|
||||
"bulk-action-title": "Akcja masowa",
|
||||
"backend-log-title": "Logi backendu",
|
||||
"user-hidden-title": "Ukryte przez użytkownika",
|
||||
"launch-bar-templates-title": "Szablony paska uruchamiania",
|
||||
"base-abstract-launcher-title": "Bazowy launcher abstrakcyjny",
|
||||
"command-launcher-title": "Launcher poleceń",
|
||||
"note-launcher-title": "Launcher notatek",
|
||||
"script-launcher-title": "Launcher skryptów",
|
||||
"built-in-widget-title": "Wbudowany widżet",
|
||||
"spacer-title": "Separator",
|
||||
"custom-widget-title": "Niestandardowy widżet",
|
||||
"launch-bar-title": "Pasek uruchamiania",
|
||||
"available-launchers-title": "Dostępne launchery",
|
||||
"go-to-previous-note-title": "Idź do poprzedniej notatki",
|
||||
"go-to-next-note-title": "Idź do następnej notatki",
|
||||
"new-note-title": "Nowa notatka",
|
||||
"search-notes-title": "Szukaj notatek",
|
||||
"jump-to-note-title": "Skocz do...",
|
||||
"calendar-title": "Kalendarz",
|
||||
"recent-changes-title": "Ostatnie zmiany",
|
||||
"bookmarks-title": "Zakładki",
|
||||
"command-palette": "Otwórz paletę komend",
|
||||
"zen-mode": "Tryb Zen",
|
||||
"open-today-journal-note-title": "Otwórz dzisiejszy dziennik",
|
||||
"quick-search-title": "Szybkie wyszukiwanie",
|
||||
"protected-session-title": "Chroniona sesja",
|
||||
"sync-status-title": "Status synchronizacji",
|
||||
"llm-chat-title": "Czat z notatkami",
|
||||
"text-notes": "Notatki tekstowe",
|
||||
"code-notes-title": "Notatki kodowe",
|
||||
"images-title": "Obrazy",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "Inne",
|
||||
"visible-launchers-title": "Widoczne launchery",
|
||||
"user-guide": "Podręcznik użytkownika",
|
||||
"inbox-title": "Skrzynka odbiorcza",
|
||||
"tab-switcher-title": "Przełącznik kart"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nowa notatka",
|
||||
"duplicate-note-suffix": "(kopia)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Ustaw hasło",
|
||||
"heading": "Ustaw hasło",
|
||||
"description": "Zanim zaczniesz korzystać z wersji webowej Trilium, musisz ustawić hasło. Będziesz go używać do logowania.",
|
||||
"password": "Hasło",
|
||||
"password-confirmation": "Potwierdź hasło",
|
||||
"button": "Ustaw hasło"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Instalacja Trilium Notes",
|
||||
"new-document": "Jestem nowym użytkownikiem i chcę stworzyć nową bazę danych dla moich notatek",
|
||||
"sync-from-desktop": "Mam już aplikację desktopową i chcę skonfigurować z nią synchronizację",
|
||||
"sync-from-server": "Mam już serwer i chcę skonfigurować z nim synchronizację",
|
||||
"next": "Dalej",
|
||||
"init-in-progress": "Trwa inicjalizacja dokumentu",
|
||||
"redirecting": "Zaraz zostaniesz przekierowany do aplikacji.",
|
||||
"title": "Instalacja"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Synchronizacja z aplikacji desktopowej",
|
||||
"description": "Tę konfigurację należy rozpocząć w aplikacji desktopowej:",
|
||||
"step1": "Otwórz aplikację desktopową Trilium Notes.",
|
||||
"step2": "Z menu Trilium wybierz Opcje.",
|
||||
"step3": "Przejdź do kategorii Synchronizacja.",
|
||||
"step4": "Zmień adres serwera na: {{- host}} i kliknij Zapisz.",
|
||||
"step5": "Kliknij przycisk \"Testuj synchronizację\", aby zweryfikować połączenie.",
|
||||
"step6": "Po wykonaniu tych kroków kliknij {{- link}}.",
|
||||
"step6-here": "tutaj"
|
||||
},
|
||||
"share_page": {
|
||||
"no-content": "Ta notatka nie posiada treści.",
|
||||
"parent": "nadrzędna:",
|
||||
"clipped-from": "Ta notatka została pierwotnie wycięta z {{- url}}",
|
||||
"child-notes": "Notatki podrzędne:"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Nie znaleziono",
|
||||
"heading": "Nie znaleziono"
|
||||
},
|
||||
"share_theme": {
|
||||
"image_alt": "Obraz artykułu",
|
||||
"last-updated": "Ostatnia aktualizacja: {{- date}}",
|
||||
"subpages": "Podstrony:",
|
||||
"on-this-page": "Na tej stronie",
|
||||
"site-theme": "Motyw strony",
|
||||
"search_placeholder": "Szukaj...",
|
||||
"expand": "Rozwiń"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"table": "Tabela",
|
||||
"geo-map": "Mapa",
|
||||
"start-date": "Data rozpoczęcia",
|
||||
"end-date": "Data zakończenia",
|
||||
"start-time": "Czas rozpoczęcia",
|
||||
"end-time": "Czas zakończenia",
|
||||
"geolocation": "Geolokalizacja",
|
||||
"built-in-templates": "Wbudowane szablony",
|
||||
"board": "Tablica Kanban",
|
||||
"status": "Status",
|
||||
"board_note_first": "Pierwsza notatka",
|
||||
"board_note_second": "Druga notatka",
|
||||
"board_note_third": "Trzecia notatka",
|
||||
"board_status_todo": "Do zrobienia",
|
||||
"board_status_progress": "W toku",
|
||||
"board_status_done": "Zrobione",
|
||||
"text-snippet": "Fragment tekstu",
|
||||
"description": "Opis",
|
||||
"list-view": "Widok listy",
|
||||
"grid-view": "Widok siatki",
|
||||
"calendar": "Kalendarz",
|
||||
"presentation": "Prezentacja",
|
||||
"presentation_slide": "Slajd prezentacji",
|
||||
"presentation_slide_first": "Pierwszy slajd",
|
||||
"presentation_slide_second": "Drugi slajd",
|
||||
"background": "Tło"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Baza danych nie jest zainicjowana, postępuj zgodnie z instrukcjami na ekranie.",
|
||||
"db_not_initialized_server": "Baza danych nie jest zainicjowana, odwiedź stronę konfiguracji - http://[adres-serwera]:{{port}}, aby dowiedzieć się, jak zainicjować Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Inna instancja jest już uruchomiona, przełączam się na nią."
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Plik logów backendu '{{ fileName }}' (jeszcze) nie istnieje.",
|
||||
"reading-log-failed": "Błąd odczytu pliku logów backendu '{{ fileName }}'."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Ten typ notatki nie może zostać wyświetlony."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Dokument PDF (*.pdf)",
|
||||
"unable-to-export-message": "Aktualna notatka nie mogła zostać wyeksportowana jako PDF.",
|
||||
"unable-to-export-title": "Błąd eksportu do PDF",
|
||||
"unable-to-save-message": "Nie można zapisać wybranego pliku. Spróbuj ponownie lub wybierz inną lokalizację.",
|
||||
"unable-to-print": "Nie można wydrukować notatki"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Zamknij Trilium",
|
||||
"recents": "Ostatnie notatki",
|
||||
"bookmarks": "Zakładki",
|
||||
"today": "Otwórz dzisiejszą notatkę dziennika",
|
||||
"new-note": "Nowa notatka",
|
||||
"show-windows": "Pokaż okna",
|
||||
"open_new_window": "Otwórz nowe okno"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "Bezpośrednia migracja z obecnej wersji nie jest obsługiwana. Najpierw zaktualizuj do v0.60.4, a dopiero potem do tej wersji.",
|
||||
"error_message": "Błąd podczas migracji do wersji {{version}}: {{stack}}",
|
||||
"wrong_db_version": "Wersja bazy danych ({{version}}) jest nowsza niż obsługiwana przez aplikację ({{targetVersion}}). Oznacza to, że została utworzona przez nowszą i niekompatybilną wersję Trilium. Zaktualizuj Trilium do najnowszej wersji."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Błąd"
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Nawigacja do poprzedniej notatki w historii",
|
||||
"forward-in-note-history": "Nawigacja do następnej notatki w historii",
|
||||
"open-jump-to-note-dialog": "Otwórz okno \"Przejdź do notatki\"",
|
||||
"open-command-palette": "Otwórz paletę komend",
|
||||
"scroll-to-active-note": "Przewiń drzewo do aktywnej notatki",
|
||||
"quick-search": "Aktywuj szybki pasek wyszukiwania",
|
||||
"search-in-subtree": "Szukaj notatek w poddrzewie aktywnej notatki",
|
||||
"expand-subtree": "Rozwiń sub-drzewo obecnej notatki",
|
||||
"collapse-tree": "Zwiń całe drzewo notatek",
|
||||
"collapse-subtree": "Zwiń poddrzewo aktualnej notatki",
|
||||
"sort-child-notes": "Sortuj notatki podrzędne",
|
||||
"creating-and-moving-notes": "Tworzenie i przenoszenie notatek",
|
||||
"create-note-after": "Utwórz notatkę po aktywnej notatce",
|
||||
"create-note-into": "Utwórz notatkę jako podrzędną aktywnej notatki",
|
||||
"create-note-into-inbox": "Utwórz notatkę w skrzynce odbiorczej (jeśli zdefiniowana) lub notatkę dnia",
|
||||
"delete-note": "Usuń notatkę",
|
||||
"move-note-up": "Przenieś notatkę w górę",
|
||||
"move-note-down": "Przenieś notatkę w dół",
|
||||
"move-note-up-in-hierarchy": "Przenieś notatkę wyżej w hierarchii",
|
||||
"move-note-down-in-hierarchy": "Przenieś notatkę niżej w hierarchii",
|
||||
"edit-note-title": "Przejdź z drzewa do edycji tytułu notatki",
|
||||
"edit-branch-prefix": "Pokaż okno \"Edytuj prefiks gałęzi\"",
|
||||
"clone-notes-to": "Sklonuj zaznaczone notatki",
|
||||
"move-notes-to": "Przenieś zaznaczone notatki",
|
||||
"note-clipboard": "Schowek notatek",
|
||||
"copy-notes-to-clipboard": "Skopiuj zaznaczone notatki do schowka",
|
||||
"paste-notes-from-clipboard": "Wklej notatki ze schowka do aktywnej notatki",
|
||||
"cut-notes-to-clipboard": "Wytnij zaznaczone notatki do schowka",
|
||||
"select-all-notes-in-parent": "Zaznacz wszystkie notatki na tym samym poziomie",
|
||||
"add-note-above-to-the-selection": "Dodaj notatkę powyżej do zaznaczenia",
|
||||
"add-note-below-to-selection": "Dodaj notatkę poniżej do zaznaczenia",
|
||||
"duplicate-subtree": "Duplikuj poddrzewo",
|
||||
"tabs-and-windows": "Karty i okna",
|
||||
"open-new-tab": "Otwórz nową kartę",
|
||||
"close-active-tab": "Zamknij aktywną kartę",
|
||||
"reopen-last-tab": "Otwórz ponownie ostatnio zamkniętą kartę",
|
||||
"activate-next-tab": "Aktywuj kartę po prawej",
|
||||
"activate-previous-tab": "Aktywuj kartę po lewej",
|
||||
"open-new-window": "Otwórz nowe puste okno",
|
||||
"toggle-tray": "Pokaż/ukryj aplikację w zasobniku systemowym",
|
||||
"first-tab": "Aktywuj pierwszą kartę na liście",
|
||||
"second-tab": "Aktywuj drugą kartę na liście",
|
||||
"third-tab": "Aktywuj trzecią kartę na liście",
|
||||
"fourth-tab": "Aktywuj czwartą kartę na liście",
|
||||
"fifth-tab": "Aktywuj piątą kartę na liście",
|
||||
"sixth-tab": "Aktywuj szóstą kartę na liście",
|
||||
"seventh-tab": "Aktywuj siódmą kartę na liście",
|
||||
"eight-tab": "Aktywuj ósmą kartę na liście",
|
||||
"ninth-tab": "Aktywuj dziewiątą kartę na liście",
|
||||
"last-tab": "Aktywuj ostatnią kartę na liście",
|
||||
"dialogs": "Okna dialogowe",
|
||||
"show-note-source": "Pokaż okno \"Źródło notatki\"",
|
||||
"show-options": "Otwórz stronę \"Opcje\"",
|
||||
"show-revisions": "Pokaż okno \"Rewizje notatki\"",
|
||||
"show-recent-changes": "Pokaż okno \"Ostatnie zmiany\"",
|
||||
"show-sql-console": "Otwórz stronę \"Konsola SQL\"",
|
||||
"show-backend-log": "Otwórz stronę \"Logi backendu\"",
|
||||
"show-help": "Otwórz wbudowany Poradnik Użytkownika",
|
||||
"show-cheatsheet": "Pokaż listę skrótów klawiszowych",
|
||||
"text-note-operations": "Operacje na notatkach tekstowych",
|
||||
"add-link-to-text": "Otwórz okno dodawania linku do tekstu",
|
||||
"follow-link-under-cursor": "Podążaj za linkiem pod kursorem",
|
||||
"insert-date-and-time-to-text": "Wstaw aktualną datę i czas",
|
||||
"paste-markdown-into-text": "Wklej Markdown ze schowka jako tekst",
|
||||
"add-new-label": "Utwórz nową etykietę",
|
||||
"create-new-relation": "Utwórz nową relację",
|
||||
"attributes-labels-and-relations": "Atrybuty (etykiety i relacje)",
|
||||
"open-note-externally": "Otwórz notatkę w domyślnej aplikacji zewnętrznej",
|
||||
"reset-zoom-level": "Zresetuj poziom powiększenia",
|
||||
"reload-frontend-app": "Przeładuj interfejs (frontend)",
|
||||
"open-dev-tools": "Otwórz narzędzia deweloperskie",
|
||||
"zoom-out": "Pomniejsz",
|
||||
"zoom-in": "Powiększ",
|
||||
"print-active-note": "Drukuj aktywną notatkę",
|
||||
"toggle-full-screen": "Przełącz pełny ekran",
|
||||
"cut-into-note": "Wytnij zaznaczenie i utwórz z niego podnotatkę",
|
||||
"edit-readonly-note": "Edytuj notatkę tylko do odczytu",
|
||||
"other": "Inne",
|
||||
"toggle-basic-properties": "Przełącz właściwości podstawowe",
|
||||
"toggle-file-properties": "Przełącz właściwości pliku",
|
||||
"toggle-image-properties": "Przełącz właściwości obrazu",
|
||||
"toggle-owned-attributes": "Przełącz atrybuty własne",
|
||||
"toggle-inherited-attributes": "Przełącz atrybuty odziedziczone",
|
||||
"toggle-promoted-attributes": "Przełącz atrybuty promowane",
|
||||
"render-active-note": "Renderuj (ponownie) aktywną notatkę",
|
||||
"find-in-text": "Przełącz panel wyszukiwania w tekście",
|
||||
"note-navigation": "Nawigacja notatek",
|
||||
"export-as-pdf": "Eksportuj aktywną notatkę jako PDF",
|
||||
"copy-without-formatting": "Kopiuj bez formatowania",
|
||||
"force-save-revision": "Wymuś utworzenie/zapisanie nowej rewizji aktywnej notatki",
|
||||
"toggle-book-properties": "Przełącz właściwości kolekcji",
|
||||
"toggle-left-note-tree-panel": "Przełącz lewy panel (drzewo notatek)",
|
||||
"toggle-classic-editor-toolbar": "Przełącz pasek narzędzi formatowania edytora",
|
||||
"add-include-note-to-text": "Otwórz okno dołączania (include) notatki",
|
||||
"ribbon-tabs": "Karty wstążki",
|
||||
"toggle-link-map": "Przełącz mapę linków",
|
||||
"toggle-note-info": "Przełącz informacje o notatce",
|
||||
"toggle-note-paths": "Przełącz ścieżki notatki",
|
||||
"toggle-similar-notes": "Przełącz podobne notatki",
|
||||
"toggle-right-pane": "Przełącz prawy panel (spis treści i wyróżnienia)",
|
||||
"run-active-note": "Uruchom aktywny kod JavaScript (frontend/backend)",
|
||||
"toggle-note-hoisting": "Włącz/wyłącz skupienie na bieżącej notatce",
|
||||
"unhoist": "Wyłącz skupienie z dowolnego miejsca",
|
||||
"toggle-zen-mode": "Włącz/wyłącz tryb Zen (minimalistyczny interfejs)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"zoom-in": "Powiększ",
|
||||
"zoom-out": "Pomniejsz",
|
||||
"copy-without-formatting": "Kopiuj bez formatowania",
|
||||
"jump-to-note": "Skocz do...",
|
||||
"scroll-to-active-note": "Przewiń do aktywnej notatki",
|
||||
"expand-subtree": "Rozwiń poddrzewo",
|
||||
"collapse-tree": "Zwiń drzewo",
|
||||
"search-in-subtree": "Szukaj w poddrzewie",
|
||||
"collapse-subtree": "Zwiń poddrzewo",
|
||||
"sort-child-notes": "Sortuj notatki podrzędne",
|
||||
"delete-notes": "Usuń notatki",
|
||||
"move-note-up": "Przesuń notatkę w górę",
|
||||
"move-note-down": "Przesuń notatkę w dół",
|
||||
"move-note-up-in-hierarchy": "Przenieś wyżej w hierarchii",
|
||||
"move-note-down-in-hierarchy": "Przenieś niżej w hierarchii",
|
||||
"open-new-tab": "Otwórz nową kartę",
|
||||
"close-active-tab": "Zamknij aktywną kartę",
|
||||
"reopen-last-tab": "Przywróć ostatnią kartę",
|
||||
"open-new-window": "Otwórz nowe okno",
|
||||
"find-in-text": "Znajdź w tekście",
|
||||
"quick-search": "Szybkie wyszukiwanie",
|
||||
"edit-note-title": "Edytuj tytuł notatki",
|
||||
"copy-notes-to-clipboard": "Kopiuj notatki do schowka",
|
||||
"paste-notes-from-clipboard": "Wklej notatki ze schowka",
|
||||
"cut-notes-to-clipboard": "Wytnij notatki do schowka",
|
||||
"clone-notes-to": "Sklonuj notatki do",
|
||||
"move-notes-to": "Przenieś notatki do",
|
||||
"duplicate-subtree": "Duplikuj poddrzewo",
|
||||
"open-developer-tools": "Otwórz narzędzia deweloperskie",
|
||||
"export-active-note-as-pdf": "Eksportuj aktywną notatkę jako PDF",
|
||||
"open-note-externally": "Otwórz notatkę zewnętrznie",
|
||||
"render-active-note": "Renderuj aktywną notatkę",
|
||||
"run-active-note": "Uruchom aktywną notatkę",
|
||||
"show-revisions": "Pokaż rewizje",
|
||||
"show-recent-changes": "Pokaż ostatnie zmiany",
|
||||
"show-sql-console": "Pokaż konsolę SQL",
|
||||
"reset-zoom-level": "Resetuj poziom powiększenia",
|
||||
"add-link-to-text": "Dodaj link do tekstu",
|
||||
"force-save-revision": "Wymuś zapis rewizji",
|
||||
"create-note-after": "Utwórz notatkę po",
|
||||
"create-note-into": "Utwórz notatkę wewnątrz",
|
||||
"create-note-into-inbox": "Utwórz notatkę w skrzynce odbiorczej",
|
||||
"select-all-notes-in-parent": "Zaznacz wszystko w nadrzędnej",
|
||||
"add-note-above-to-selection": "Dodaj notatkę powyżej do zaznaczenia",
|
||||
"add-note-below-to-selection": "Dodaj notatkę poniżej do zaznaczenia",
|
||||
"activate-next-tab": "Aktywuj następną kartę",
|
||||
"activate-previous-tab": "Aktywuj poprzednią kartę",
|
||||
"toggle-system-tray-icon": "Przełącz ikonę w zasobniku",
|
||||
"toggle-zen-mode": "Przełącz tryb Zen",
|
||||
"switch-to-first-tab": "Przełącz na 1. kartę",
|
||||
"switch-to-second-tab": "Przełącz na 2. kartę",
|
||||
"switch-to-third-tab": "Przełącz na 3. kartę",
|
||||
"switch-to-fourth-tab": "Przełącz na 4. kartę",
|
||||
"switch-to-fifth-tab": "Przełącz na 5. kartę",
|
||||
"switch-to-sixth-tab": "Przełącz na 6. kartę",
|
||||
"switch-to-seventh-tab": "Przełącz na 7. kartę",
|
||||
"switch-to-eighth-tab": "Przełącz na 8. kartę",
|
||||
"switch-to-ninth-tab": "Przełącz na 9. kartę",
|
||||
"switch-to-last-tab": "Przełącz na ostatnią kartę",
|
||||
"show-note-source": "Pokaż źródło notatki",
|
||||
"show-options": "Pokaż opcje",
|
||||
"show-backend-log": "Pokaż logi backendu",
|
||||
"show-help": "Pokaż pomoc",
|
||||
"show-cheatsheet": "Pokaż listę skrótów",
|
||||
"back-in-note-history": "Wstecz w historii notatek",
|
||||
"forward-in-note-history": "Dalej w historii notatek",
|
||||
"command-palette": "Paleta komend",
|
||||
"edit-branch-prefix": "Edytuj prefiks gałęzi",
|
||||
"paste-markdown-into-text": "Wklej Markdown do tekstu",
|
||||
"cut-into-note": "Wytnij do nowej notatki",
|
||||
"edit-read-only-note": "Edytuj notatkę tylko do odczytu",
|
||||
"add-new-label": "Dodaj nową etykietę",
|
||||
"add-new-relation": "Dodaj nową relację",
|
||||
"print-active-note": "Drukuj aktywną notatkę",
|
||||
"toggle-left-pane": "Przełącz lewy panel",
|
||||
"toggle-full-screen": "Przełącz pełny ekran",
|
||||
"follow-link-under-cursor": "Podążaj za linkiem",
|
||||
"insert-date-and-time-to-text": "Wstaw datę i czas",
|
||||
"add-include-note-to-text": "Dołącz notatkę do tekstu",
|
||||
"toggle-ribbon-tab-classic-editor": "Przełącz kartę edytora klasycznego",
|
||||
"toggle-ribbon-tab-basic-properties": "Przełącz kartę właściwości podstawowych",
|
||||
"toggle-ribbon-tab-book-properties": "Przełącz kartę właściwości kolekcji",
|
||||
"toggle-ribbon-tab-file-properties": "Przełącz kartę właściwości pliku",
|
||||
"toggle-ribbon-tab-image-properties": "Przełącz kartę właściwości obrazu",
|
||||
"toggle-ribbon-tab-owned-attributes": "Przełącz kartę atrybutów własnych",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Przełącz kartę atrybutów odziedziczonych",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Przełącz kartę atrybutów promowanych",
|
||||
"toggle-ribbon-tab-note-map": "Przełącz kartę mapy notatek",
|
||||
"toggle-ribbon-tab-note-info": "Przełącz kartę informacji o notatce",
|
||||
"toggle-ribbon-tab-note-paths": "Przełącz kartę ścieżek notatki",
|
||||
"toggle-ribbon-tab-similar-notes": "Przełącz kartę podobnych notatek",
|
||||
"toggle-right-pane": "Przełącz prawy panel",
|
||||
"toggle-note-hoisting": "Przełącz windowanie notatki",
|
||||
"unhoist-note": "Cofnij windowanie",
|
||||
"reload-frontend-app": "Przeładuj aplikację"
|
||||
},
|
||||
"login": {
|
||||
"password": "Hasło",
|
||||
"remember-me": "Zapamiętaj mnie",
|
||||
"title": "Logowanie",
|
||||
"heading": "Logowanie Trilium",
|
||||
"incorrect-totp": "Kod TOTP jest nieprawidłowy. Spróbuj ponownie.",
|
||||
"incorrect-password": "Hasło jest nieprawidłowe. Spróbuj ponownie.",
|
||||
"button": "Zaloguj",
|
||||
"sign_in_with_sso": "Zaloguj przez {{ ssoIssuerName }}"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"server-host": "Adres serwera Trilium",
|
||||
"proxy-server": "Serwer proxy (opcjonalnie)",
|
||||
"back": "Wstecz",
|
||||
"finish-setup": "Zakończ konfigurację",
|
||||
"heading": "Synchronizacja z serwera",
|
||||
"note": "Uwaga:",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"password": "Hasło",
|
||||
"password-placeholder": "Hasło",
|
||||
"instructions": "Wprowadź poniżej adres serwera Trilium i dane logowania. Spowoduje to pobranie całej bazy danych z serwera i skonfigurowanie synchronizacji. Może to chwilę potrwać w zależności od rozmiaru danych i prędkości łącza.",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-instruction": "Jeśli pozostawisz pole proxy puste, zostanie użyte proxy systemowe (dotyczy tylko aplikacji desktopowej)"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Synchronizacja w toku",
|
||||
"outstanding-items": "Pozostałe elementy do synchronizacji:",
|
||||
"outstanding-items-default": "N/A",
|
||||
"successful": "Synchronizacja została poprawnie skonfigurowana. Wstępne pobieranie danych może zająć trochę czasu. Po zakończeniu zostaniesz przekierowany do strony logowania."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Poniedziałek",
|
||||
"tuesday": "Wtorek",
|
||||
"wednesday": "Środa",
|
||||
"thursday": "Czwartek",
|
||||
"friday": "Piątek",
|
||||
"saturday": "Sobota",
|
||||
"sunday": "Niedziela"
|
||||
},
|
||||
"weekdayNumber": "Tydzień {weekNumber}",
|
||||
"months": {
|
||||
"january": "Styczeń",
|
||||
"february": "Luty",
|
||||
"march": "Marzec",
|
||||
"april": "Kwiecień",
|
||||
"may": "Maj",
|
||||
"june": "Czerwiec",
|
||||
"july": "Lipiec",
|
||||
"august": "Sierpień",
|
||||
"september": "Wrzesień",
|
||||
"october": "Październik",
|
||||
"november": "Listopad",
|
||||
"december": "Grudzień"
|
||||
},
|
||||
"quarterNumber": "Kwartał {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Szukaj:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Adres serwera synchronizacji nie jest skonfigurowany. Skonfiguruj najpierw synchronizację.",
|
||||
"successful": "Połączenie z serwerem powiodło się, synchronizacja została rozpoczęta."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Ukryte notatki",
|
||||
"settings-title": "Ustawienia",
|
||||
"options-title": "Opcje",
|
||||
"shortcuts-title": "Skróty",
|
||||
"appearance-title": "Wygląd",
|
||||
"spellcheck-title": "Sprawdzanie pisowni",
|
||||
"password-title": "Hasło",
|
||||
"backup-title": "Kopia zapasowa",
|
||||
"sync-title": "Synchronizacja",
|
||||
"advanced-title": "Zaawansowane",
|
||||
"localization": "Język i Region",
|
||||
"search-history-title": "Historia wyszukiwania",
|
||||
"note-map-title": "Mapa notatek",
|
||||
"sql-console-history-title": "Historia konsoli SQL",
|
||||
"shared-notes-title": "Udostępnione notatki",
|
||||
"bulk-action-title": "Akcja masowa",
|
||||
"backend-log-title": "Logi backendu",
|
||||
"user-hidden-title": "Ukryte przez użytkownika",
|
||||
"launch-bar-templates-title": "Szablony paska uruchamiania",
|
||||
"base-abstract-launcher-title": "Bazowy launcher abstrakcyjny",
|
||||
"command-launcher-title": "Launcher poleceń",
|
||||
"note-launcher-title": "Launcher notatek",
|
||||
"script-launcher-title": "Launcher skryptów",
|
||||
"built-in-widget-title": "Wbudowany widżet",
|
||||
"spacer-title": "Separator",
|
||||
"custom-widget-title": "Niestandardowy widżet",
|
||||
"launch-bar-title": "Pasek uruchamiania",
|
||||
"available-launchers-title": "Dostępne launchery",
|
||||
"go-to-previous-note-title": "Idź do poprzedniej notatki",
|
||||
"go-to-next-note-title": "Idź do następnej notatki",
|
||||
"new-note-title": "Nowa notatka",
|
||||
"search-notes-title": "Szukaj notatek",
|
||||
"jump-to-note-title": "Skocz do...",
|
||||
"calendar-title": "Kalendarz",
|
||||
"recent-changes-title": "Ostatnie zmiany",
|
||||
"bookmarks-title": "Zakładki",
|
||||
"command-palette": "Otwórz paletę komend",
|
||||
"zen-mode": "Tryb Zen",
|
||||
"open-today-journal-note-title": "Otwórz dzisiejszy dziennik",
|
||||
"quick-search-title": "Szybkie wyszukiwanie",
|
||||
"protected-session-title": "Chroniona sesja",
|
||||
"sync-status-title": "Status synchronizacji",
|
||||
"llm-chat-title": "Czat z notatkami",
|
||||
"text-notes": "Notatki tekstowe",
|
||||
"code-notes-title": "Notatki kodowe",
|
||||
"images-title": "Obrazy",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "Inne",
|
||||
"visible-launchers-title": "Widoczne launchery",
|
||||
"user-guide": "Podręcznik użytkownika",
|
||||
"inbox-title": "Skrzynka odbiorcza",
|
||||
"tab-switcher-title": "Przełącznik kart"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nowa notatka",
|
||||
"duplicate-note-suffix": "(kopia)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Ustaw hasło",
|
||||
"heading": "Ustaw hasło",
|
||||
"description": "Zanim zaczniesz korzystać z wersji webowej Trilium, musisz ustawić hasło. Będziesz go używać do logowania.",
|
||||
"password": "Hasło",
|
||||
"password-confirmation": "Potwierdź hasło",
|
||||
"button": "Ustaw hasło"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Instalacja Trilium Notes",
|
||||
"new-document": "Jestem nowym użytkownikiem i chcę stworzyć nową bazę danych dla moich notatek",
|
||||
"sync-from-desktop": "Mam już aplikację desktopową i chcę skonfigurować z nią synchronizację",
|
||||
"sync-from-server": "Mam już serwer i chcę skonfigurować z nim synchronizację",
|
||||
"next": "Dalej",
|
||||
"init-in-progress": "Trwa inicjalizacja dokumentu",
|
||||
"redirecting": "Zaraz zostaniesz przekierowany do aplikacji.",
|
||||
"title": "Instalacja"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Synchronizacja z aplikacji desktopowej",
|
||||
"description": "Tę konfigurację należy rozpocząć w aplikacji desktopowej:",
|
||||
"step1": "Otwórz aplikację desktopową Trilium Notes.",
|
||||
"step2": "Z menu Trilium wybierz Opcje.",
|
||||
"step3": "Przejdź do kategorii Synchronizacja.",
|
||||
"step4": "Zmień adres serwera na: {{- host}} i kliknij Zapisz.",
|
||||
"step5": "Kliknij przycisk \"Testuj synchronizację\", aby zweryfikować połączenie.",
|
||||
"step6": "Po wykonaniu tych kroków kliknij {{- link}}.",
|
||||
"step6-here": "tutaj"
|
||||
},
|
||||
"share_page": {
|
||||
"no-content": "Ta notatka nie posiada treści.",
|
||||
"parent": "nadrzędna:",
|
||||
"clipped-from": "Ta notatka została pierwotnie wycięta z {{- url}}",
|
||||
"child-notes": "Notatki podrzędne:"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Nie znaleziono",
|
||||
"heading": "Nie znaleziono"
|
||||
},
|
||||
"share_theme": {
|
||||
"image_alt": "Obraz artykułu",
|
||||
"last-updated": "Ostatnia aktualizacja: {{- date}}",
|
||||
"subpages": "Podstrony:",
|
||||
"on-this-page": "Na tej stronie",
|
||||
"site-theme": "Motyw strony",
|
||||
"search_placeholder": "Szukaj...",
|
||||
"expand": "Rozwiń"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"table": "Tabela",
|
||||
"geo-map": "Mapa",
|
||||
"start-date": "Data rozpoczęcia",
|
||||
"end-date": "Data zakończenia",
|
||||
"start-time": "Czas rozpoczęcia",
|
||||
"end-time": "Czas zakończenia",
|
||||
"geolocation": "Geolokalizacja",
|
||||
"built-in-templates": "Wbudowane szablony",
|
||||
"board": "Tablica Kanban",
|
||||
"status": "Status",
|
||||
"board_note_first": "Pierwsza notatka",
|
||||
"board_note_second": "Druga notatka",
|
||||
"board_note_third": "Trzecia notatka",
|
||||
"board_status_todo": "Do zrobienia",
|
||||
"board_status_progress": "W toku",
|
||||
"board_status_done": "Zrobione",
|
||||
"text-snippet": "Fragment tekstu",
|
||||
"description": "Opis",
|
||||
"list-view": "Widok listy",
|
||||
"grid-view": "Widok siatki",
|
||||
"calendar": "Kalendarz",
|
||||
"presentation": "Prezentacja",
|
||||
"presentation_slide": "Slajd prezentacji",
|
||||
"presentation_slide_first": "Pierwszy slajd",
|
||||
"presentation_slide_second": "Drugi slajd",
|
||||
"background": "Tło"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Baza danych nie jest zainicjowana, postępuj zgodnie z instrukcjami na ekranie.",
|
||||
"db_not_initialized_server": "Baza danych nie jest zainicjowana, odwiedź stronę konfiguracji - http://[adres-serwera]:{{port}}, aby dowiedzieć się, jak zainicjować Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Inna instancja jest już uruchomiona, przełączam się na nią."
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Plik logów backendu '{{ fileName }}' (jeszcze) nie istnieje.",
|
||||
"reading-log-failed": "Błąd odczytu pliku logów backendu '{{ fileName }}'."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Ten typ notatki nie może zostać wyświetlony."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Dokument PDF (*.pdf)",
|
||||
"unable-to-export-message": "Aktualna notatka nie mogła zostać wyeksportowana jako PDF.",
|
||||
"unable-to-export-title": "Błąd eksportu do PDF",
|
||||
"unable-to-save-message": "Nie można zapisać wybranego pliku. Spróbuj ponownie lub wybierz inną lokalizację.",
|
||||
"unable-to-print": "Nie można wydrukować notatki"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Zamknij Trilium",
|
||||
"recents": "Ostatnie notatki",
|
||||
"bookmarks": "Zakładki",
|
||||
"today": "Otwórz dzisiejszą notatkę dziennika",
|
||||
"new-note": "Nowa notatka",
|
||||
"show-windows": "Pokaż okna",
|
||||
"open_new_window": "Otwórz nowe okno"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "Bezpośrednia migracja z obecnej wersji nie jest obsługiwana. Najpierw zaktualizuj do v0.60.4, a dopiero potem do tej wersji.",
|
||||
"error_message": "Błąd podczas migracji do wersji {{version}}: {{stack}}",
|
||||
"wrong_db_version": "Wersja bazy danych ({{version}}) jest nowsza niż obsługiwana przez aplikację ({{targetVersion}}). Oznacza to, że została utworzona przez nowszą i niekompatybilną wersję Trilium. Zaktualizuj Trilium do najnowszej wersji."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Błąd"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,434 +1,432 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Navegar para a nota anterior no histórico",
|
||||
"forward-in-note-history": "Navegar para a nota seguinte no histórico",
|
||||
"open-jump-to-note-dialog": "Abrir diálogo \"Ir para nota\"",
|
||||
"open-command-palette": "Abrir paleta de comandos",
|
||||
"scroll-to-active-note": "Rolar a árvore de notas até a nota atual",
|
||||
"quick-search": "Ativar barra de pesquisa rápida",
|
||||
"search-in-subtree": "Pesquisar notas na sub-árvore da nota atual",
|
||||
"expand-subtree": "Expandir sub-árvore da nota atual",
|
||||
"collapse-tree": "Colapsar a árvore de notas completa",
|
||||
"collapse-subtree": "Colapsar sub-árvore da nota atual",
|
||||
"sort-child-notes": "Ordenar notas filhas",
|
||||
"creating-and-moving-notes": "A criar e mover notas",
|
||||
"create-note-after": "Criar nota após nota atual",
|
||||
"create-note-into": "Criar nota como sub-nota da nota atual",
|
||||
"create-note-into-inbox": "Criar uma nota na caixa de entrada (se definida) ou na nota do dia",
|
||||
"delete-note": "Apagar nota",
|
||||
"move-note-up": "Mover nota para cima",
|
||||
"move-note-down": "Mover nota para baixo",
|
||||
"move-note-up-in-hierarchy": "Mover nota para cima na hierarquia",
|
||||
"move-note-down-in-hierarchy": "Mover nota para baixo na hierarquia",
|
||||
"edit-note-title": "Saltar da árvore para os pormenores da nota e editar o título",
|
||||
"edit-branch-prefix": "Exibir o diálogo \"Editar prefixo da ramificação\"",
|
||||
"clone-notes-to": "Clonar notas selecionadas",
|
||||
"move-notes-to": "Mover notas selecionadas",
|
||||
"note-clipboard": "Área de transferência de notas",
|
||||
"copy-notes-to-clipboard": "Copiar notas selecionadas para Área de transferência",
|
||||
"paste-notes-from-clipboard": "Colar notas da área de transferência na nota atual",
|
||||
"cut-notes-to-clipboard": "Recortar as notas selecionadas para a área de transferência",
|
||||
"select-all-notes-in-parent": "Selecionar todas as notas do nível atual da nota",
|
||||
"add-note-above-to-the-selection": "Adicionar nota acima à seleção",
|
||||
"add-note-below-to-selection": "Adicionar nota abaixo à seleção",
|
||||
"duplicate-subtree": "Duplicar subárvore",
|
||||
"tabs-and-windows": "Separadores & Janelas",
|
||||
"open-new-tab": "Abre novo separador",
|
||||
"close-active-tab": "Fechar separador ativo",
|
||||
"reopen-last-tab": "Reabre o último separador fechado",
|
||||
"activate-next-tab": "Ativa separador à direita",
|
||||
"activate-previous-tab": "Ativa separador à esquerda",
|
||||
"open-new-window": "Abre nova janela vazia",
|
||||
"toggle-tray": "Mostrar/ocultar a aplicação na bandeja do sistema",
|
||||
"first-tab": "Ativar o primeiro separador na lista",
|
||||
"second-tab": "Ativa o segundo separador na lista",
|
||||
"third-tab": "Ativar o terceiro separador na lista",
|
||||
"fourth-tab": "Ativar o quarto separador na lista",
|
||||
"fifth-tab": "Ativar o quinto separador na lista",
|
||||
"sixth-tab": "Ativar o sexto separador na lista",
|
||||
"seventh-tab": "Ativar o sétimo separador na lista",
|
||||
"eight-tab": "Ativar o oitavo separador na lista",
|
||||
"ninth-tab": "Ativar o novo separador na lista",
|
||||
"last-tab": "Ativar o último separador na lista",
|
||||
"dialogs": "Diálogos",
|
||||
"show-note-source": "Exibe o diálogo \"origem da nota\"",
|
||||
"show-options": "Abrir página de configurações",
|
||||
"show-revisions": "Exibe diálogo \"revisões de nota\"",
|
||||
"show-recent-changes": "Exibe o diálogo \"alterações recentes\"",
|
||||
"show-sql-console": "Exibe a página \"consola SQL\"",
|
||||
"show-backend-log": "Exibe a página \"registo do backend\"",
|
||||
"show-help": "Exibir o guia de utilizador integrado",
|
||||
"show-cheatsheet": "Exibir um modal com atalhos de teclado",
|
||||
"text-note-operations": "Operações de nota de texto",
|
||||
"add-link-to-text": "Abrir diálogo para adicionar ligação ao texto",
|
||||
"follow-link-under-cursor": "Seguir a ligação sob o cursor",
|
||||
"insert-date-and-time-to-text": "Inserir data e hora atual no texto",
|
||||
"paste-markdown-into-text": "Colar Markdown da área de transferência na nota de texto",
|
||||
"cut-into-note": "Corta a seleção da nota atual e cria uma subnota com o texto selecionado",
|
||||
"add-include-note-to-text": "Abre o log para incluir uma nota",
|
||||
"edit-readonly-note": "Editar uma nota somente leitura",
|
||||
"attributes-labels-and-relations": "Atributos (rótulos e relações)",
|
||||
"add-new-label": "Criar rótulo",
|
||||
"create-new-relation": "Criar relação",
|
||||
"ribbon-tabs": "Guias da faixa",
|
||||
"toggle-basic-properties": "Alterar Propriedades Básicas",
|
||||
"toggle-file-properties": "Alterar Propriedades do Ficheiro",
|
||||
"toggle-image-properties": "Alterar Propriedades da Imagem",
|
||||
"toggle-owned-attributes": "Alterar Atributos Próprios",
|
||||
"toggle-inherited-attributes": "Alterar Atributos Herdados",
|
||||
"toggle-promoted-attributes": "Alternar Atributos Promovidos",
|
||||
"toggle-link-map": "Alternar Mapa de Ligações",
|
||||
"toggle-note-info": "Alternar Informações da Nota",
|
||||
"toggle-note-paths": "Alternar Caminhos da Nota",
|
||||
"toggle-similar-notes": "Alternar Notas Similares",
|
||||
"other": "Outros",
|
||||
"toggle-right-pane": "Alternar a exibição do painel direito, que inclui Sumário e Destaques",
|
||||
"print-active-note": "Imprimir nota atual",
|
||||
"open-note-externally": "Abrir nota como ficheiro na aplicação predefiinida",
|
||||
"render-active-note": "Renderizar (re-renderizar) nota atual",
|
||||
"run-active-note": "Executar código JavaScript (frontend/backend) da nota",
|
||||
"toggle-note-hoisting": "Alternar a elevação da nota atual",
|
||||
"unhoist": "Desfazer elevação de tudo",
|
||||
"reload-frontend-app": "Recarregar Interface",
|
||||
"open-dev-tools": "Abrir ferramentas de programador",
|
||||
"find-in-text": "Alternar painel de pesquisa",
|
||||
"toggle-left-note-tree-panel": "Alternar painel esquerdo (árvore de notas)",
|
||||
"toggle-full-screen": "Alternar para ecrã cheio",
|
||||
"zoom-out": "Diminuir zoom",
|
||||
"zoom-in": "Aumentar zoom",
|
||||
"note-navigation": "Navegação de notas",
|
||||
"reset-zoom-level": "Redefinir nível de zoom",
|
||||
"copy-without-formatting": "Copiar texto selecionado sem formatação",
|
||||
"force-save-revision": "Forçar a criação/gravação de uma nova revisão da nota atual",
|
||||
"toggle-book-properties": "Alternar propriedades do book",
|
||||
"toggle-classic-editor-toolbar": "Alternar a guia de Formatação no editor com barra de ferramentas fixa",
|
||||
"export-as-pdf": "Exportar a nota atual como PDF",
|
||||
"toggle-zen-mode": "Ativa/desativa o modo zen (interface mínima para uma edição mais focada)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Voltar no histórico da nota",
|
||||
"forward-in-note-history": "Avançar no histórico da nota",
|
||||
"jump-to-note": "Ir para...",
|
||||
"command-palette": "Paleta de Comandos",
|
||||
"scroll-to-active-note": "Rolar até a nota atual",
|
||||
"quick-search": "Pesquisa Rápida",
|
||||
"search-in-subtree": "Pesquisar na subárvore",
|
||||
"expand-subtree": "Expandir Subárvore",
|
||||
"collapse-tree": "Recolher Árvore",
|
||||
"collapse-subtree": "Recolher Subárvore",
|
||||
"sort-child-notes": "Ordenar Notas Filhas",
|
||||
"create-note-after": "Criar Nota Após",
|
||||
"create-note-into": "Criar Nota Dentro",
|
||||
"create-note-into-inbox": "Criar Nota na Caixa de Entrada",
|
||||
"delete-notes": "Apagar Notas",
|
||||
"move-note-up": "Mover Nota Para Cima",
|
||||
"move-note-down": "Mover Nota Para Baixo",
|
||||
"move-note-up-in-hierarchy": "Mover Nota Para Cima na Hierarquia",
|
||||
"move-note-down-in-hierarchy": "Mover Nota Para Baixo na Hierarquia",
|
||||
"edit-note-title": "Editar Título da Nota",
|
||||
"edit-branch-prefix": "Editar Prefixo da Ramificação",
|
||||
"clone-notes-to": "Clonar Notas Para",
|
||||
"move-notes-to": "Mover Notas Para",
|
||||
"copy-notes-to-clipboard": "Copiar Notas para a Área de Transferência",
|
||||
"paste-notes-from-clipboard": "Colar Notas da Área de Transferência",
|
||||
"cut-notes-to-clipboard": "Recortar Notas para a Área de Transferência",
|
||||
"select-all-notes-in-parent": "Selecionar Todas as Notas no Pai",
|
||||
"add-note-above-to-selection": "Adicionar Nota Acima à Seleção",
|
||||
"add-note-below-to-selection": "Adicionar Nota Abaixo à Seleção",
|
||||
"duplicate-subtree": "Duplicar Subárvore",
|
||||
"open-new-tab": "Abrir Nova Guia",
|
||||
"close-active-tab": "Fechar Guia Ativa",
|
||||
"reopen-last-tab": "Reabrir Última Guia",
|
||||
"activate-next-tab": "Ativar Próxima Guia",
|
||||
"activate-previous-tab": "Ativar Guia Anterior",
|
||||
"open-new-window": "Abrir Nova Janela",
|
||||
"toggle-system-tray-icon": "Alternar Ícone da Bandeja do Sistema",
|
||||
"toggle-zen-mode": "Alternar Modo Zen",
|
||||
"switch-to-first-tab": "Alternar para a Primeira Guia",
|
||||
"switch-to-second-tab": "Alternar para a Segunda Guia",
|
||||
"switch-to-third-tab": "Alternar para a Terceira Guia",
|
||||
"switch-to-fourth-tab": "Alternar para a Quarta Guia",
|
||||
"switch-to-fifth-tab": "Alternar para a Quinta Guia",
|
||||
"switch-to-sixth-tab": "Alternar para a Sexta Guia",
|
||||
"switch-to-seventh-tab": "Alternar para a Sétima Guia",
|
||||
"switch-to-eighth-tab": "Alternar para a Oitava Guia",
|
||||
"switch-to-ninth-tab": "Alternar para a Nona Guia",
|
||||
"switch-to-last-tab": "Alternar para a Última Guia",
|
||||
"show-note-source": "Exibir Fonte da Nota",
|
||||
"show-options": "Exibir Opções",
|
||||
"show-revisions": "Exibir Revisões",
|
||||
"show-recent-changes": "Exibir Alterações Recentes",
|
||||
"show-sql-console": "Exibir Console SQL",
|
||||
"show-backend-log": "Exibir Log do Backend",
|
||||
"show-help": "Exibir Ajuda",
|
||||
"show-cheatsheet": "Exibir Cheatsheet",
|
||||
"add-link-to-text": "Adicionar Ligação ao Texto",
|
||||
"follow-link-under-cursor": "Seguir Ligação sob o Cursor",
|
||||
"insert-date-and-time-to-text": "Inserir Data e Hora ao Texto",
|
||||
"paste-markdown-into-text": "Colar Markdown no Texto",
|
||||
"cut-into-note": "Recortar em Nota",
|
||||
"add-include-note-to-text": "Adicionar Nota de Inclusão ao Texto",
|
||||
"edit-read-only-note": "Editar Nota Somente-Leitura",
|
||||
"add-new-label": "Adicionar Nova Etiqueta",
|
||||
"add-new-relation": "Adicionar Nova Relação",
|
||||
"toggle-ribbon-tab-classic-editor": "Alternar Guia da Faixa de Opções Editor Clássico",
|
||||
"toggle-ribbon-tab-basic-properties": "Alternar Guia da Faixa de Opções Propriedades Básicas",
|
||||
"toggle-ribbon-tab-book-properties": "Alternar Guia da Faixa de Opções Propriedades do Livro",
|
||||
"toggle-ribbon-tab-file-properties": "Alternar Guia da Faixa de Opções Propriedades do Ficheiro",
|
||||
"toggle-ribbon-tab-image-properties": "Alternar Guia da Faixa de Opções Propriedades da Imagem",
|
||||
"toggle-ribbon-tab-owned-attributes": "Alternar Guia da Faixa de Opções Atributos Possuídos",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Alternar Guia da Faixa de Opções Atributos Herdados",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Alternar Guia da Faixa de Opções Atributos Promovidos",
|
||||
"toggle-ribbon-tab-note-map": "Alternar Guia da Faixa de Opções Mapa de Notas",
|
||||
"toggle-ribbon-tab-note-info": "Alternar Guia da Faixa de Opções Informações da Nota",
|
||||
"toggle-ribbon-tab-note-paths": "Alternar Guia da Faixa de Opções Caminhos de Nota",
|
||||
"toggle-ribbon-tab-similar-notes": "Alternar Guia da Faixa de Opções Notas Semelhantes",
|
||||
"toggle-right-pane": "Alternar Painel Direito",
|
||||
"print-active-note": "Imprimir Nota Atual",
|
||||
"export-active-note-as-pdf": "Exportar Nota Atual como PDF",
|
||||
"open-note-externally": "Abrir Nota Externamente",
|
||||
"render-active-note": "Renderizar Nota Atual",
|
||||
"run-active-note": "Executar Nota Atual",
|
||||
"toggle-note-hoisting": "Alternar Elevação de Nota",
|
||||
"unhoist-note": "Desfazer Elevação de Nota",
|
||||
"reload-frontend-app": "Recarregar Frontend",
|
||||
"open-developer-tools": "Abrir Ferramentas de Programador",
|
||||
"find-in-text": "Localizar no Texto",
|
||||
"toggle-left-pane": "Alternar Painel Esquerdo",
|
||||
"toggle-full-screen": "Alternar Ecrã Cheio",
|
||||
"zoom-out": "Reduzir Zoom",
|
||||
"zoom-in": "Aumentar Zoom",
|
||||
"reset-zoom-level": "Redefinir Nível de Zoom",
|
||||
"copy-without-formatting": "Copiar Sem Formatação",
|
||||
"force-save-revision": "Forçar Gravação da Revisão"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"heading": "Trilium login",
|
||||
"incorrect-totp": "O código TOTP está incorreto. Por favor, tente novamente.",
|
||||
"incorrect-password": "Palavra-passe incorreta. Tente novamente.",
|
||||
"password": "Palavra-passe",
|
||||
"remember-me": "Lembrar-me",
|
||||
"button": "Login",
|
||||
"sign_in_with_sso": "Fazer login com {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Definir palavra-passe",
|
||||
"heading": "Definir palavra-passe",
|
||||
"description": "Antes de começar a usar o Trilium web, precisa definir uma palavra-passe. Usará esta palavra-passe para fazer login.",
|
||||
"password": "Palavra-passe",
|
||||
"password-confirmation": "Confirmar Palavra-passe",
|
||||
"button": "Definir palavra-passe"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes setup",
|
||||
"new-document": "Sou um novo utilizador e quero criar um documento Trilium para as minhas notas",
|
||||
"sync-from-desktop": "Já tenho uma instância no desktop e quero configurar a sincronização com ela",
|
||||
"sync-from-server": "Já tenho uma instância no servidor e quero configurar a sincronização com ela",
|
||||
"next": "Avançar",
|
||||
"init-in-progress": "Inicialização do documento em andamento",
|
||||
"redirecting": "Será redirecionado para a aplicação brevemente.",
|
||||
"title": "Configuração"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sincronizar com Desktop",
|
||||
"description": "Esta configuração deve ser iniciada a partir da instância do desktop:",
|
||||
"step1": "Abra a sua instância do Trilium Notes no desktop.",
|
||||
"step2": "No menu do Trilium, clique em Opções.",
|
||||
"step3": "Clique na categoria Sincronização.",
|
||||
"step4": "Altere o endereço da instância do servidor para: {{- host}} e clique em Gravar.",
|
||||
"step5": "Clique no botão \"Testar sincronização\" para verificar se a conexão foi bem-sucedida.",
|
||||
"step6": "Depois de concluir estas etapas, clique em {{- link}}.",
|
||||
"step6-here": "aqui"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sincronizar do Servidor",
|
||||
"instructions": "Por favor, insira abaixo o endereço e as credenciais do servidor Trilium. Isto descarragará de todo o documento Trilium do servidor e configurará a sincronização com ele. Dependendo do tamanho do documento e da velocidade da conexão, isto pode levar algum tempo.",
|
||||
"server-host": "Endereço do servidor Trilium",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Servidor proxy (opcional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Nota:",
|
||||
"proxy-instruction": "Se deixar o campo de proxy em branco, o proxy do sistema será usado (aplicável apenas à aplicação desktop)",
|
||||
"password": "Palavra-passe",
|
||||
"password-placeholder": "Palavra-passe",
|
||||
"back": "Voltar",
|
||||
"finish-setup": "Terminar configuração"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sincronização em andamento",
|
||||
"successful": "A sincronização foi configurada corretamente. Levará algum tempo para que a sincronização inicial seja concluída. Quando terminar, será redirecionado para a página de login.",
|
||||
"outstanding-items": "Elementos de sincronização pendentes:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Não encontrado",
|
||||
"heading": "Não encontrado"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "pai:",
|
||||
"clipped-from": "Esta nota foi originalmente extraída de {{- url}}",
|
||||
"child-notes": "Notas filhas:",
|
||||
"no-content": "Esta nota não possui conteúdo."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Segunda-feira",
|
||||
"tuesday": "Terça-feira",
|
||||
"wednesday": "Quarta-feira",
|
||||
"thursday": "Quinta-feira",
|
||||
"friday": "Sexta-feira",
|
||||
"saturday": "Sábado",
|
||||
"sunday": "Domingo"
|
||||
},
|
||||
"weekdayNumber": "Semana {weekNumber}",
|
||||
"months": {
|
||||
"january": "Janeiro",
|
||||
"february": "Fevereiro",
|
||||
"march": "Março",
|
||||
"april": "Abril",
|
||||
"may": "Maio",
|
||||
"june": "Junho",
|
||||
"july": "Julho",
|
||||
"august": "Agosto",
|
||||
"september": "Setembro",
|
||||
"october": "Outubro",
|
||||
"november": "Novembro",
|
||||
"december": "Dezembro"
|
||||
},
|
||||
"quarterNumber": "Trimestre {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Pesquisar:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "O host do servidor de sincronização não está configurado. Por favor, configure a sincronização primeiro.",
|
||||
"successful": "A comunicação com o servidor de sincronização foi bem-sucedida, a sincronização foi iniciada."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Notas Ocultas",
|
||||
"search-history-title": "Histórico de Pesquisa",
|
||||
"note-map-title": "Mapa de Notas",
|
||||
"sql-console-history-title": "Histórico do Console SQL",
|
||||
"shared-notes-title": "Notas Partilhadas",
|
||||
"bulk-action-title": "Ação em Massa",
|
||||
"backend-log-title": "Log do Backend",
|
||||
"user-hidden-title": "Utilizador Oculto",
|
||||
"launch-bar-templates-title": "Modelos da Barra de Atalhos",
|
||||
"base-abstract-launcher-title": "Atalho Abstrato Base",
|
||||
"command-launcher-title": "Atalho de Comando",
|
||||
"note-launcher-title": "Atalho de Notas",
|
||||
"script-launcher-title": "Atalho de Script",
|
||||
"built-in-widget-title": "Widget Incorporado",
|
||||
"spacer-title": "Espaçador",
|
||||
"custom-widget-title": "Widget Personalizado",
|
||||
"launch-bar-title": "Barra de Atalhos",
|
||||
"available-launchers-title": "Atalhos disponíveis",
|
||||
"go-to-previous-note-title": "Ir para Nota Anterior",
|
||||
"go-to-next-note-title": "Ir para Próxima Nota",
|
||||
"new-note-title": "Nova Nota",
|
||||
"search-notes-title": "Pesquisar Notas",
|
||||
"jump-to-note-title": "Ir para...",
|
||||
"calendar-title": "Calendário",
|
||||
"recent-changes-title": "Alterações Recentes",
|
||||
"bookmarks-title": "Favoritos",
|
||||
"open-today-journal-note-title": "Abrir Nota do Diário de Hoje",
|
||||
"quick-search-title": "Pesquisa Rápida",
|
||||
"protected-session-title": "Sessão Protegida",
|
||||
"sync-status-title": "Estado de Sincronização",
|
||||
"settings-title": "Configurações",
|
||||
"llm-chat-title": "Conversar com as Notas",
|
||||
"options-title": "Opções",
|
||||
"appearance-title": "Aparência",
|
||||
"shortcuts-title": "Atalhos",
|
||||
"text-notes": "Notas de Texto",
|
||||
"code-notes-title": "Notas de Código",
|
||||
"images-title": "Imagens",
|
||||
"spellcheck-title": "Verificação Ortográfica",
|
||||
"password-title": "Palavra-passe",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Backup",
|
||||
"sync-title": "Sincronizar",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "Outros",
|
||||
"advanced-title": "Avançado",
|
||||
"visible-launchers-title": "Atalhos Visíveis",
|
||||
"user-guide": "Guia do Utilizador",
|
||||
"localization": "Idioma e Região",
|
||||
"inbox-title": "Caixa de Entrada"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nova nota",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "O ficheiro de log do backend '{{ fileName }}' ainda não existe.",
|
||||
"reading-log-failed": "Falha ao ler o ficheiro de log do backend '{{ fileName }}'."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Esta nota não pode ser exibida."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Documento PDF (*.pdf)",
|
||||
"unable-to-export-message": "A nota atual não pôde ser exportada como PDF.",
|
||||
"unable-to-export-title": "Não foi possível exportar como PDF",
|
||||
"unable-to-save-message": "O ficheiro selecionado não pôde ser gravado. Tente novamente ou selecione outro destino."
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Sair do Trilium",
|
||||
"recents": "Notas recentes",
|
||||
"bookmarks": "Favoritos",
|
||||
"today": "Abrir a nota do diário de hoje",
|
||||
"new-note": "Nova nota",
|
||||
"show-windows": "Exibir janelas",
|
||||
"open_new_window": "Abrir nova janela"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "A migração direta da sua versão atual não é suportada. Por favor, atualize primeiro para a versão mais recente v0.60.4 e somente depois para esta versão.",
|
||||
"error_message": "Erro durante a migração para a versão {{version}}: {{stack}}",
|
||||
"wrong_db_version": "A versão da base de dados ({{version}}) é mais recente do que a esperada pela aplicação ({{targetVersion}}), o que significa que ele foi criado por uma versão mais nova e incompatível do Trilium. Atualize para a versão mais recente do Trilium para resolver este problema."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Erro"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Tema do site",
|
||||
"search_placeholder": "Pesquisar...",
|
||||
"image_alt": "Imagem do artigo",
|
||||
"last-updated": "Atualizado pela última vez em {{- date}}",
|
||||
"subpages": "Subpáginas:",
|
||||
"on-this-page": "Nesta página",
|
||||
"expand": "Expandir"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Trecho de texto",
|
||||
"description": "Descrição",
|
||||
"list-view": "Visualização em lista",
|
||||
"grid-view": "Visualização em grade",
|
||||
"calendar": "Calendário",
|
||||
"table": "Tabela",
|
||||
"geo-map": "Mapa geográfico",
|
||||
"start-date": "Data de início",
|
||||
"end-date": "Data de término",
|
||||
"start-time": "Hora de início",
|
||||
"end-time": "Hora de término",
|
||||
"geolocation": "Geolocalização",
|
||||
"built-in-templates": "Modelos integrados",
|
||||
"board": "Quadro",
|
||||
"status": "Estado",
|
||||
"board_note_first": "Primeira nota",
|
||||
"board_note_second": "Segunda nota",
|
||||
"board_note_third": "Terceira nota",
|
||||
"board_status_todo": "A fazer",
|
||||
"board_status_progress": "Em andamento",
|
||||
"board_status_done": "Concluído"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "BD não inicializada, siga as instruções no ecrã.",
|
||||
"db_not_initialized_server": "BD não inicializada, visite a página de configuração - http://[anfitrião-do-servidor]:{{port}} para ver instruções sobre como inicializar o Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Já há uma instância em execução, a focar essa instância."
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Navegar para a nota anterior no histórico",
|
||||
"forward-in-note-history": "Navegar para a nota seguinte no histórico",
|
||||
"open-jump-to-note-dialog": "Abrir diálogo \"Ir para nota\"",
|
||||
"open-command-palette": "Abrir paleta de comandos",
|
||||
"scroll-to-active-note": "Rolar a árvore de notas até a nota atual",
|
||||
"quick-search": "Ativar barra de pesquisa rápida",
|
||||
"search-in-subtree": "Pesquisar notas na sub-árvore da nota atual",
|
||||
"expand-subtree": "Expandir sub-árvore da nota atual",
|
||||
"collapse-tree": "Colapsar a árvore de notas completa",
|
||||
"collapse-subtree": "Colapsar sub-árvore da nota atual",
|
||||
"sort-child-notes": "Ordenar notas filhas",
|
||||
"creating-and-moving-notes": "A criar e mover notas",
|
||||
"create-note-after": "Criar nota após nota atual",
|
||||
"create-note-into": "Criar nota como sub-nota da nota atual",
|
||||
"create-note-into-inbox": "Criar uma nota na caixa de entrada (se definida) ou na nota do dia",
|
||||
"delete-note": "Apagar nota",
|
||||
"move-note-up": "Mover nota para cima",
|
||||
"move-note-down": "Mover nota para baixo",
|
||||
"move-note-up-in-hierarchy": "Mover nota para cima na hierarquia",
|
||||
"move-note-down-in-hierarchy": "Mover nota para baixo na hierarquia",
|
||||
"edit-note-title": "Saltar da árvore para os pormenores da nota e editar o título",
|
||||
"edit-branch-prefix": "Exibir o diálogo \"Editar prefixo da ramificação\"",
|
||||
"clone-notes-to": "Clonar notas selecionadas",
|
||||
"move-notes-to": "Mover notas selecionadas",
|
||||
"note-clipboard": "Área de transferência de notas",
|
||||
"copy-notes-to-clipboard": "Copiar notas selecionadas para Área de transferência",
|
||||
"paste-notes-from-clipboard": "Colar notas da área de transferência na nota atual",
|
||||
"cut-notes-to-clipboard": "Recortar as notas selecionadas para a área de transferência",
|
||||
"select-all-notes-in-parent": "Selecionar todas as notas do nível atual da nota",
|
||||
"add-note-above-to-the-selection": "Adicionar nota acima à seleção",
|
||||
"add-note-below-to-selection": "Adicionar nota abaixo à seleção",
|
||||
"duplicate-subtree": "Duplicar subárvore",
|
||||
"tabs-and-windows": "Separadores & Janelas",
|
||||
"open-new-tab": "Abre novo separador",
|
||||
"close-active-tab": "Fechar separador ativo",
|
||||
"reopen-last-tab": "Reabre o último separador fechado",
|
||||
"activate-next-tab": "Ativa separador à direita",
|
||||
"activate-previous-tab": "Ativa separador à esquerda",
|
||||
"open-new-window": "Abre nova janela vazia",
|
||||
"toggle-tray": "Mostrar/ocultar a aplicação na bandeja do sistema",
|
||||
"first-tab": "Ativar o primeiro separador na lista",
|
||||
"second-tab": "Ativa o segundo separador na lista",
|
||||
"third-tab": "Ativar o terceiro separador na lista",
|
||||
"fourth-tab": "Ativar o quarto separador na lista",
|
||||
"fifth-tab": "Ativar o quinto separador na lista",
|
||||
"sixth-tab": "Ativar o sexto separador na lista",
|
||||
"seventh-tab": "Ativar o sétimo separador na lista",
|
||||
"eight-tab": "Ativar o oitavo separador na lista",
|
||||
"ninth-tab": "Ativar o novo separador na lista",
|
||||
"last-tab": "Ativar o último separador na lista",
|
||||
"dialogs": "Diálogos",
|
||||
"show-note-source": "Exibe o diálogo \"origem da nota\"",
|
||||
"show-options": "Abrir página de configurações",
|
||||
"show-revisions": "Exibe diálogo \"revisões de nota\"",
|
||||
"show-recent-changes": "Exibe o diálogo \"alterações recentes\"",
|
||||
"show-sql-console": "Exibe a página \"consola SQL\"",
|
||||
"show-backend-log": "Exibe a página \"registo do backend\"",
|
||||
"show-help": "Exibir o guia de utilizador integrado",
|
||||
"show-cheatsheet": "Exibir um modal com atalhos de teclado",
|
||||
"text-note-operations": "Operações de nota de texto",
|
||||
"add-link-to-text": "Abrir diálogo para adicionar ligação ao texto",
|
||||
"follow-link-under-cursor": "Seguir a ligação sob o cursor",
|
||||
"insert-date-and-time-to-text": "Inserir data e hora atual no texto",
|
||||
"paste-markdown-into-text": "Colar Markdown da área de transferência na nota de texto",
|
||||
"cut-into-note": "Corta a seleção da nota atual e cria uma subnota com o texto selecionado",
|
||||
"add-include-note-to-text": "Abre o log para incluir uma nota",
|
||||
"edit-readonly-note": "Editar uma nota somente leitura",
|
||||
"attributes-labels-and-relations": "Atributos (rótulos e relações)",
|
||||
"add-new-label": "Criar rótulo",
|
||||
"create-new-relation": "Criar relação",
|
||||
"ribbon-tabs": "Guias da faixa",
|
||||
"toggle-basic-properties": "Alterar Propriedades Básicas",
|
||||
"toggle-file-properties": "Alterar Propriedades do Ficheiro",
|
||||
"toggle-image-properties": "Alterar Propriedades da Imagem",
|
||||
"toggle-owned-attributes": "Alterar Atributos Próprios",
|
||||
"toggle-inherited-attributes": "Alterar Atributos Herdados",
|
||||
"toggle-promoted-attributes": "Alternar Atributos Promovidos",
|
||||
"toggle-link-map": "Alternar Mapa de Ligações",
|
||||
"toggle-note-info": "Alternar Informações da Nota",
|
||||
"toggle-note-paths": "Alternar Caminhos da Nota",
|
||||
"toggle-similar-notes": "Alternar Notas Similares",
|
||||
"other": "Outros",
|
||||
"toggle-right-pane": "Alternar a exibição do painel direito, que inclui Sumário e Destaques",
|
||||
"print-active-note": "Imprimir nota atual",
|
||||
"open-note-externally": "Abrir nota como ficheiro na aplicação predefiinida",
|
||||
"render-active-note": "Renderizar (re-renderizar) nota atual",
|
||||
"run-active-note": "Executar código JavaScript (frontend/backend) da nota",
|
||||
"toggle-note-hoisting": "Alternar a elevação da nota atual",
|
||||
"unhoist": "Desfazer elevação de tudo",
|
||||
"reload-frontend-app": "Recarregar Interface",
|
||||
"open-dev-tools": "Abrir ferramentas de programador",
|
||||
"find-in-text": "Alternar painel de pesquisa",
|
||||
"toggle-left-note-tree-panel": "Alternar painel esquerdo (árvore de notas)",
|
||||
"toggle-full-screen": "Alternar para ecrã cheio",
|
||||
"zoom-out": "Diminuir zoom",
|
||||
"zoom-in": "Aumentar zoom",
|
||||
"note-navigation": "Navegação de notas",
|
||||
"reset-zoom-level": "Redefinir nível de zoom",
|
||||
"copy-without-formatting": "Copiar texto selecionado sem formatação",
|
||||
"force-save-revision": "Forçar a criação/gravação de uma nova revisão da nota atual",
|
||||
"toggle-book-properties": "Alternar propriedades do book",
|
||||
"toggle-classic-editor-toolbar": "Alternar a guia de Formatação no editor com barra de ferramentas fixa",
|
||||
"export-as-pdf": "Exportar a nota atual como PDF",
|
||||
"toggle-zen-mode": "Ativa/desativa o modo zen (interface mínima para uma edição mais focada)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Voltar no histórico da nota",
|
||||
"forward-in-note-history": "Avançar no histórico da nota",
|
||||
"jump-to-note": "Ir para...",
|
||||
"command-palette": "Paleta de Comandos",
|
||||
"scroll-to-active-note": "Rolar até a nota atual",
|
||||
"quick-search": "Pesquisa Rápida",
|
||||
"search-in-subtree": "Pesquisar na subárvore",
|
||||
"expand-subtree": "Expandir Subárvore",
|
||||
"collapse-tree": "Recolher Árvore",
|
||||
"collapse-subtree": "Recolher Subárvore",
|
||||
"sort-child-notes": "Ordenar Notas Filhas",
|
||||
"create-note-after": "Criar Nota Após",
|
||||
"create-note-into": "Criar Nota Dentro",
|
||||
"create-note-into-inbox": "Criar Nota na Caixa de Entrada",
|
||||
"delete-notes": "Apagar Notas",
|
||||
"move-note-up": "Mover Nota Para Cima",
|
||||
"move-note-down": "Mover Nota Para Baixo",
|
||||
"move-note-up-in-hierarchy": "Mover Nota Para Cima na Hierarquia",
|
||||
"move-note-down-in-hierarchy": "Mover Nota Para Baixo na Hierarquia",
|
||||
"edit-note-title": "Editar Título da Nota",
|
||||
"edit-branch-prefix": "Editar Prefixo da Ramificação",
|
||||
"clone-notes-to": "Clonar Notas Para",
|
||||
"move-notes-to": "Mover Notas Para",
|
||||
"copy-notes-to-clipboard": "Copiar Notas para a Área de Transferência",
|
||||
"paste-notes-from-clipboard": "Colar Notas da Área de Transferência",
|
||||
"cut-notes-to-clipboard": "Recortar Notas para a Área de Transferência",
|
||||
"select-all-notes-in-parent": "Selecionar Todas as Notas no Pai",
|
||||
"add-note-above-to-selection": "Adicionar Nota Acima à Seleção",
|
||||
"add-note-below-to-selection": "Adicionar Nota Abaixo à Seleção",
|
||||
"duplicate-subtree": "Duplicar Subárvore",
|
||||
"open-new-tab": "Abrir Nova Guia",
|
||||
"close-active-tab": "Fechar Guia Ativa",
|
||||
"reopen-last-tab": "Reabrir Última Guia",
|
||||
"activate-next-tab": "Ativar Próxima Guia",
|
||||
"activate-previous-tab": "Ativar Guia Anterior",
|
||||
"open-new-window": "Abrir Nova Janela",
|
||||
"toggle-system-tray-icon": "Alternar Ícone da Bandeja do Sistema",
|
||||
"toggle-zen-mode": "Alternar Modo Zen",
|
||||
"switch-to-first-tab": "Alternar para a Primeira Guia",
|
||||
"switch-to-second-tab": "Alternar para a Segunda Guia",
|
||||
"switch-to-third-tab": "Alternar para a Terceira Guia",
|
||||
"switch-to-fourth-tab": "Alternar para a Quarta Guia",
|
||||
"switch-to-fifth-tab": "Alternar para a Quinta Guia",
|
||||
"switch-to-sixth-tab": "Alternar para a Sexta Guia",
|
||||
"switch-to-seventh-tab": "Alternar para a Sétima Guia",
|
||||
"switch-to-eighth-tab": "Alternar para a Oitava Guia",
|
||||
"switch-to-ninth-tab": "Alternar para a Nona Guia",
|
||||
"switch-to-last-tab": "Alternar para a Última Guia",
|
||||
"show-note-source": "Exibir Fonte da Nota",
|
||||
"show-options": "Exibir Opções",
|
||||
"show-revisions": "Exibir Revisões",
|
||||
"show-recent-changes": "Exibir Alterações Recentes",
|
||||
"show-sql-console": "Exibir Console SQL",
|
||||
"show-backend-log": "Exibir Log do Backend",
|
||||
"show-help": "Exibir Ajuda",
|
||||
"show-cheatsheet": "Exibir Cheatsheet",
|
||||
"add-link-to-text": "Adicionar Ligação ao Texto",
|
||||
"follow-link-under-cursor": "Seguir Ligação sob o Cursor",
|
||||
"insert-date-and-time-to-text": "Inserir Data e Hora ao Texto",
|
||||
"paste-markdown-into-text": "Colar Markdown no Texto",
|
||||
"cut-into-note": "Recortar em Nota",
|
||||
"add-include-note-to-text": "Adicionar Nota de Inclusão ao Texto",
|
||||
"edit-read-only-note": "Editar Nota Somente-Leitura",
|
||||
"add-new-label": "Adicionar Nova Etiqueta",
|
||||
"add-new-relation": "Adicionar Nova Relação",
|
||||
"toggle-ribbon-tab-classic-editor": "Alternar Guia da Faixa de Opções Editor Clássico",
|
||||
"toggle-ribbon-tab-basic-properties": "Alternar Guia da Faixa de Opções Propriedades Básicas",
|
||||
"toggle-ribbon-tab-book-properties": "Alternar Guia da Faixa de Opções Propriedades do Livro",
|
||||
"toggle-ribbon-tab-file-properties": "Alternar Guia da Faixa de Opções Propriedades do Ficheiro",
|
||||
"toggle-ribbon-tab-image-properties": "Alternar Guia da Faixa de Opções Propriedades da Imagem",
|
||||
"toggle-ribbon-tab-owned-attributes": "Alternar Guia da Faixa de Opções Atributos Possuídos",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Alternar Guia da Faixa de Opções Atributos Herdados",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Alternar Guia da Faixa de Opções Atributos Promovidos",
|
||||
"toggle-ribbon-tab-note-map": "Alternar Guia da Faixa de Opções Mapa de Notas",
|
||||
"toggle-ribbon-tab-note-info": "Alternar Guia da Faixa de Opções Informações da Nota",
|
||||
"toggle-ribbon-tab-note-paths": "Alternar Guia da Faixa de Opções Caminhos de Nota",
|
||||
"toggle-ribbon-tab-similar-notes": "Alternar Guia da Faixa de Opções Notas Semelhantes",
|
||||
"toggle-right-pane": "Alternar Painel Direito",
|
||||
"print-active-note": "Imprimir Nota Atual",
|
||||
"export-active-note-as-pdf": "Exportar Nota Atual como PDF",
|
||||
"open-note-externally": "Abrir Nota Externamente",
|
||||
"render-active-note": "Renderizar Nota Atual",
|
||||
"run-active-note": "Executar Nota Atual",
|
||||
"toggle-note-hoisting": "Alternar Elevação de Nota",
|
||||
"unhoist-note": "Desfazer Elevação de Nota",
|
||||
"reload-frontend-app": "Recarregar Frontend",
|
||||
"open-developer-tools": "Abrir Ferramentas de Programador",
|
||||
"find-in-text": "Localizar no Texto",
|
||||
"toggle-left-pane": "Alternar Painel Esquerdo",
|
||||
"toggle-full-screen": "Alternar Ecrã Cheio",
|
||||
"zoom-out": "Reduzir Zoom",
|
||||
"zoom-in": "Aumentar Zoom",
|
||||
"reset-zoom-level": "Redefinir Nível de Zoom",
|
||||
"copy-without-formatting": "Copiar Sem Formatação",
|
||||
"force-save-revision": "Forçar Gravação da Revisão"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"heading": "Trilium login",
|
||||
"incorrect-totp": "O código TOTP está incorreto. Por favor, tente novamente.",
|
||||
"incorrect-password": "Palavra-passe incorreta. Tente novamente.",
|
||||
"password": "Palavra-passe",
|
||||
"remember-me": "Lembrar-me",
|
||||
"button": "Login",
|
||||
"sign_in_with_sso": "Fazer login com {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Definir palavra-passe",
|
||||
"heading": "Definir palavra-passe",
|
||||
"description": "Antes de começar a usar o Trilium web, precisa definir uma palavra-passe. Usará esta palavra-passe para fazer login.",
|
||||
"password": "Palavra-passe",
|
||||
"password-confirmation": "Confirmar Palavra-passe",
|
||||
"button": "Definir palavra-passe"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes setup",
|
||||
"new-document": "Sou um novo utilizador e quero criar um documento Trilium para as minhas notas",
|
||||
"sync-from-desktop": "Já tenho uma instância no desktop e quero configurar a sincronização com ela",
|
||||
"sync-from-server": "Já tenho uma instância no servidor e quero configurar a sincronização com ela",
|
||||
"next": "Avançar",
|
||||
"init-in-progress": "Inicialização do documento em andamento",
|
||||
"redirecting": "Será redirecionado para a aplicação brevemente.",
|
||||
"title": "Configuração"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sincronizar com Desktop",
|
||||
"description": "Esta configuração deve ser iniciada a partir da instância do desktop:",
|
||||
"step1": "Abra a sua instância do Trilium Notes no desktop.",
|
||||
"step2": "No menu do Trilium, clique em Opções.",
|
||||
"step3": "Clique na categoria Sincronização.",
|
||||
"step4": "Altere o endereço da instância do servidor para: {{- host}} e clique em Gravar.",
|
||||
"step5": "Clique no botão \"Testar sincronização\" para verificar se a conexão foi bem-sucedida.",
|
||||
"step6": "Depois de concluir estas etapas, clique em {{- link}}.",
|
||||
"step6-here": "aqui"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sincronizar do Servidor",
|
||||
"instructions": "Por favor, insira abaixo o endereço e as credenciais do servidor Trilium. Isto descarragará de todo o documento Trilium do servidor e configurará a sincronização com ele. Dependendo do tamanho do documento e da velocidade da conexão, isto pode levar algum tempo.",
|
||||
"server-host": "Endereço do servidor Trilium",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Servidor proxy (opcional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Nota:",
|
||||
"proxy-instruction": "Se deixar o campo de proxy em branco, o proxy do sistema será usado (aplicável apenas à aplicação desktop)",
|
||||
"password": "Palavra-passe",
|
||||
"password-placeholder": "Palavra-passe",
|
||||
"back": "Voltar",
|
||||
"finish-setup": "Terminar configuração"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sincronização em andamento",
|
||||
"successful": "A sincronização foi configurada corretamente. Levará algum tempo para que a sincronização inicial seja concluída. Quando terminar, será redirecionado para a página de login.",
|
||||
"outstanding-items": "Elementos de sincronização pendentes:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Não encontrado",
|
||||
"heading": "Não encontrado"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "pai:",
|
||||
"clipped-from": "Esta nota foi originalmente extraída de {{- url}}",
|
||||
"child-notes": "Notas filhas:",
|
||||
"no-content": "Esta nota não possui conteúdo."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Segunda-feira",
|
||||
"tuesday": "Terça-feira",
|
||||
"wednesday": "Quarta-feira",
|
||||
"thursday": "Quinta-feira",
|
||||
"friday": "Sexta-feira",
|
||||
"saturday": "Sábado",
|
||||
"sunday": "Domingo"
|
||||
},
|
||||
"weekdayNumber": "Semana {weekNumber}",
|
||||
"months": {
|
||||
"january": "Janeiro",
|
||||
"february": "Fevereiro",
|
||||
"march": "Março",
|
||||
"april": "Abril",
|
||||
"may": "Maio",
|
||||
"june": "Junho",
|
||||
"july": "Julho",
|
||||
"august": "Agosto",
|
||||
"september": "Setembro",
|
||||
"october": "Outubro",
|
||||
"november": "Novembro",
|
||||
"december": "Dezembro"
|
||||
},
|
||||
"quarterNumber": "Trimestre {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Pesquisar:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "O host do servidor de sincronização não está configurado. Por favor, configure a sincronização primeiro.",
|
||||
"successful": "A comunicação com o servidor de sincronização foi bem-sucedida, a sincronização foi iniciada."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Notas Ocultas",
|
||||
"search-history-title": "Histórico de Pesquisa",
|
||||
"note-map-title": "Mapa de Notas",
|
||||
"sql-console-history-title": "Histórico do Console SQL",
|
||||
"shared-notes-title": "Notas Partilhadas",
|
||||
"bulk-action-title": "Ação em Massa",
|
||||
"backend-log-title": "Log do Backend",
|
||||
"user-hidden-title": "Utilizador Oculto",
|
||||
"launch-bar-templates-title": "Modelos da Barra de Atalhos",
|
||||
"base-abstract-launcher-title": "Atalho Abstrato Base",
|
||||
"command-launcher-title": "Atalho de Comando",
|
||||
"note-launcher-title": "Atalho de Notas",
|
||||
"script-launcher-title": "Atalho de Script",
|
||||
"built-in-widget-title": "Widget Incorporado",
|
||||
"spacer-title": "Espaçador",
|
||||
"custom-widget-title": "Widget Personalizado",
|
||||
"launch-bar-title": "Barra de Atalhos",
|
||||
"available-launchers-title": "Atalhos disponíveis",
|
||||
"go-to-previous-note-title": "Ir para Nota Anterior",
|
||||
"go-to-next-note-title": "Ir para Próxima Nota",
|
||||
"new-note-title": "Nova Nota",
|
||||
"search-notes-title": "Pesquisar Notas",
|
||||
"jump-to-note-title": "Ir para...",
|
||||
"calendar-title": "Calendário",
|
||||
"recent-changes-title": "Alterações Recentes",
|
||||
"bookmarks-title": "Favoritos",
|
||||
"open-today-journal-note-title": "Abrir Nota do Diário de Hoje",
|
||||
"quick-search-title": "Pesquisa Rápida",
|
||||
"protected-session-title": "Sessão Protegida",
|
||||
"sync-status-title": "Estado de Sincronização",
|
||||
"settings-title": "Configurações",
|
||||
"options-title": "Opções",
|
||||
"appearance-title": "Aparência",
|
||||
"shortcuts-title": "Atalhos",
|
||||
"text-notes": "Notas de Texto",
|
||||
"code-notes-title": "Notas de Código",
|
||||
"images-title": "Imagens",
|
||||
"spellcheck-title": "Verificação Ortográfica",
|
||||
"password-title": "Palavra-passe",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Backup",
|
||||
"sync-title": "Sincronizar",
|
||||
"other": "Outros",
|
||||
"advanced-title": "Avançado",
|
||||
"visible-launchers-title": "Atalhos Visíveis",
|
||||
"user-guide": "Guia do Utilizador",
|
||||
"localization": "Idioma e Região",
|
||||
"inbox-title": "Caixa de Entrada"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nova nota",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "O ficheiro de log do backend '{{ fileName }}' ainda não existe.",
|
||||
"reading-log-failed": "Falha ao ler o ficheiro de log do backend '{{ fileName }}'."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Esta nota não pode ser exibida."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Documento PDF (*.pdf)",
|
||||
"unable-to-export-message": "A nota atual não pôde ser exportada como PDF.",
|
||||
"unable-to-export-title": "Não foi possível exportar como PDF",
|
||||
"unable-to-save-message": "O ficheiro selecionado não pôde ser gravado. Tente novamente ou selecione outro destino."
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Sair do Trilium",
|
||||
"recents": "Notas recentes",
|
||||
"bookmarks": "Favoritos",
|
||||
"today": "Abrir a nota do diário de hoje",
|
||||
"new-note": "Nova nota",
|
||||
"show-windows": "Exibir janelas",
|
||||
"open_new_window": "Abrir nova janela"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "A migração direta da sua versão atual não é suportada. Por favor, atualize primeiro para a versão mais recente v0.60.4 e somente depois para esta versão.",
|
||||
"error_message": "Erro durante a migração para a versão {{version}}: {{stack}}",
|
||||
"wrong_db_version": "A versão da base de dados ({{version}}) é mais recente do que a esperada pela aplicação ({{targetVersion}}), o que significa que ele foi criado por uma versão mais nova e incompatível do Trilium. Atualize para a versão mais recente do Trilium para resolver este problema."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Erro"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Tema do site",
|
||||
"search_placeholder": "Pesquisar...",
|
||||
"image_alt": "Imagem do artigo",
|
||||
"last-updated": "Atualizado pela última vez em {{- date}}",
|
||||
"subpages": "Subpáginas:",
|
||||
"on-this-page": "Nesta página",
|
||||
"expand": "Expandir"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Trecho de texto",
|
||||
"description": "Descrição",
|
||||
"list-view": "Visualização em lista",
|
||||
"grid-view": "Visualização em grade",
|
||||
"calendar": "Calendário",
|
||||
"table": "Tabela",
|
||||
"geo-map": "Mapa geográfico",
|
||||
"start-date": "Data de início",
|
||||
"end-date": "Data de término",
|
||||
"start-time": "Hora de início",
|
||||
"end-time": "Hora de término",
|
||||
"geolocation": "Geolocalização",
|
||||
"built-in-templates": "Modelos integrados",
|
||||
"board": "Quadro",
|
||||
"status": "Estado",
|
||||
"board_note_first": "Primeira nota",
|
||||
"board_note_second": "Segunda nota",
|
||||
"board_note_third": "Terceira nota",
|
||||
"board_status_todo": "A fazer",
|
||||
"board_status_progress": "Em andamento",
|
||||
"board_status_done": "Concluído"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "BD não inicializada, siga as instruções no ecrã.",
|
||||
"db_not_initialized_server": "BD não inicializada, visite a página de configuração - http://[anfitrião-do-servidor]:{{port}} para ver instruções sobre como inicializar o Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Já há uma instância em execução, a focar essa instância."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,442 +1,440 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "Abrir diálogo \"Ir para nota\"",
|
||||
"search-in-subtree": "Buscar notas na subárvore da nota atual",
|
||||
"expand-subtree": "Expandir subárvore da nota atual",
|
||||
"collapse-tree": "Colapsar a árvore completa de notas",
|
||||
"collapse-subtree": "Colapsar subárvore da nota atual",
|
||||
"sort-child-notes": "Ordenar notas filhas",
|
||||
"creating-and-moving-notes": "Criando e movendo notas",
|
||||
"create-note-into-inbox": "Crie uma nota na caixa de entrada (se definida) ou na nota do dia",
|
||||
"delete-note": "Deletar nota",
|
||||
"move-note-up": "Mover nota para cima",
|
||||
"move-note-down": "Mover nota para baixo",
|
||||
"move-note-up-in-hierarchy": "Mover nota para cima em hierarquia",
|
||||
"move-note-down-in-hierarchy": "Mover nota para baixo em hierarquia",
|
||||
"edit-note-title": "Pule da árvore para os detalhes da nota e edite o título",
|
||||
"edit-branch-prefix": "Exibir o diálogo \"Editar prefixo da ramificação\"",
|
||||
"note-clipboard": "Área de transferência de notas",
|
||||
"copy-notes-to-clipboard": "Copiar notas selecionadas para Área de transferência",
|
||||
"paste-notes-from-clipboard": "Colar notas da área de transferência na nota atual",
|
||||
"cut-notes-to-clipboard": "Recortar as notas selecionadas para a área de transferência",
|
||||
"select-all-notes-in-parent": "Selecionar todas as notas do nível atual da nota",
|
||||
"add-note-above-to-the-selection": "Adicionar nota acima à seleção",
|
||||
"add-note-below-to-selection": "Adicionar nota abaixo à seleção",
|
||||
"duplicate-subtree": "Duplicar subárvores",
|
||||
"tabs-and-windows": "Abas & Janelas",
|
||||
"open-new-tab": "Abre nova aba",
|
||||
"close-active-tab": "Fecha aba ativa",
|
||||
"reopen-last-tab": "Reabre a última aba fechada",
|
||||
"activate-next-tab": "Ativa aba à direita",
|
||||
"activate-previous-tab": "Ativa aba à esquerda",
|
||||
"open-new-window": "Abre nova janela vazia",
|
||||
"toggle-tray": "Mostrar/ocultar o aplicativo da bandeja do sistema",
|
||||
"first-tab": "Ativa a primeira aba na lista",
|
||||
"second-tab": "Ativa a segunda aba na lista",
|
||||
"third-tab": "Ativa a terceira aba na lista",
|
||||
"fourth-tab": "Ativa a quarta aba na lista",
|
||||
"fifth-tab": "Ativa a quinta aba na lista",
|
||||
"sixth-tab": "Ativa a sexta aba na lista",
|
||||
"seventh-tab": "Ativa a sétima aba na lista",
|
||||
"eight-tab": "Ativa a oitava aba na lista",
|
||||
"ninth-tab": "Ativa a nona aba na lista",
|
||||
"last-tab": "Ativa a última aba na lista",
|
||||
"dialogs": "Diálogos",
|
||||
"show-note-source": "Exibe o log de origem da nota",
|
||||
"show-options": "Mostrar log de configurações",
|
||||
"show-revisions": "Exibe log de revisões de nota",
|
||||
"show-recent-changes": "Exibe o log de alterações recentes",
|
||||
"show-sql-console": "Exibe o log do console SQL",
|
||||
"show-backend-log": "Exibe o log do backend",
|
||||
"text-note-operations": "Operações de nota de texto",
|
||||
"add-link-to-text": "Abrir log e adcionar link ao texto",
|
||||
"follow-link-under-cursor": "Seguir o link sob o cursor",
|
||||
"insert-date-and-time-to-text": "Inserir data e hora atuais no texto",
|
||||
"paste-markdown-into-text": "Colar Markdown da área de transferência em nota de texto",
|
||||
"cut-into-note": "Corta a seleção da nota atual e cria uma subnota com o texto selecionado",
|
||||
"add-include-note-to-text": "Abre o log para incluir uma nota",
|
||||
"edit-readonly-note": "Editar uma nota somente leitura",
|
||||
"attributes-labels-and-relations": "Atributos (rótulos e relações)",
|
||||
"add-new-label": "Criar novo rótulo",
|
||||
"create-new-relation": "Criar nova relação",
|
||||
"ribbon-tabs": "Abas da faixa",
|
||||
"toggle-basic-properties": "Alterar Propriedades Básicas",
|
||||
"toggle-file-properties": "Alterar Propriedades do Arquivo",
|
||||
"toggle-image-properties": "Alterar Propriedades da Imagem",
|
||||
"toggle-owned-attributes": "Alterar Atributos Próprios",
|
||||
"toggle-inherited-attributes": "Alterar Atributos Herdados",
|
||||
"toggle-promoted-attributes": "Alternar Atributos Promovidos",
|
||||
"toggle-link-map": "Alternar Mapa de Links",
|
||||
"toggle-note-info": "Alternar Informações da Nota",
|
||||
"toggle-note-paths": "Alternar Caminhos da Nota",
|
||||
"toggle-similar-notes": "Alternar Notas Similares",
|
||||
"other": "Outros",
|
||||
"toggle-right-pane": "Alternar a exibição do painel direito, que inclui Sumário e Destaques",
|
||||
"print-active-note": "Imprimir nota atual",
|
||||
"open-note-externally": "Abrir nota como arquivo no aplicativo padrão",
|
||||
"render-active-note": "Renderizar (re-renderizar) nota atual",
|
||||
"run-active-note": "Executar código JavaScript (frontend/backend) da nota",
|
||||
"toggle-note-hoisting": "Alternar a elevação da nota atual",
|
||||
"unhoist": "Desfazer elevação de tudo",
|
||||
"reload-frontend-app": "Recarregar Interface",
|
||||
"open-dev-tools": "Abrir ferramentas de desenvolvedor",
|
||||
"toggle-left-note-tree-panel": "Alternar painel esquerdo (árvore de notas)",
|
||||
"toggle-full-screen": "Alternar para tela cheia",
|
||||
"zoom-out": "Diminuir zoom",
|
||||
"zoom-in": "Aumentar zoom",
|
||||
"note-navigation": "Navegação de notas",
|
||||
"reset-zoom-level": "Redefinir nível de zoom",
|
||||
"copy-without-formatting": "Copiar texto selecionado sem formatação",
|
||||
"force-save-revision": "Forçar a criação/salvamento de uma nova revisão da nota atual",
|
||||
"show-help": "Exibir Ajuda integrada / colinha",
|
||||
"toggle-book-properties": "Alternar propriedades do book",
|
||||
"toggle-classic-editor-toolbar": "Alternar a aba de Formatação no editor com barra de ferramentas fixa",
|
||||
"back-in-note-history": "Navegar para a nota anterior no histórico",
|
||||
"forward-in-note-history": "Navegar para a próxima nota no histórico",
|
||||
"open-command-palette": "Abrir paleta de comandos",
|
||||
"scroll-to-active-note": "Rolar a árvore de notas até a nota atual",
|
||||
"quick-search": "Ativar barra de busca rápida",
|
||||
"create-note-after": "Criar nota após nota atual",
|
||||
"create-note-into": "Criar nota como subnota da nota atual",
|
||||
"clone-notes-to": "Clonar notas selecionadas",
|
||||
"move-notes-to": "Mover notas selecionadas",
|
||||
"find-in-text": "Alternar painel de busca",
|
||||
"export-as-pdf": "Exportar a nota atual como PDF",
|
||||
"toggle-zen-mode": "Ativa/desativa o modo zen (interface mínima para uma edição mais focada)",
|
||||
"show-cheatsheet": "Exibir um modal com operações comuns de teclado"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"heading": "Trilium login",
|
||||
"incorrect-password": "Senha incorreta. Tente novamente.",
|
||||
"password": "Senha",
|
||||
"remember-me": "Lembrar",
|
||||
"button": "Login",
|
||||
"incorrect-totp": "O código TOTP está incorreto. Por favor, tente novamente.",
|
||||
"sign_in_with_sso": "Fazer login com {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Definir senha",
|
||||
"heading": "Definir senha",
|
||||
"description": "Antes de começar a usar o Trilium web, você precisa definir uma senha. Você usará essa senha para fazer login.",
|
||||
"password": "Senha",
|
||||
"password-confirmation": "Confirmar Senha",
|
||||
"button": "Definir senha"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes setup",
|
||||
"new-document": "Sou um novo usuário e quero criar um novo documento Trilium para minhas notas",
|
||||
"sync-from-desktop": "Já tenho uma instância no desktop e quero configurar a sincronização com ela",
|
||||
"sync-from-server": "Já tenho uma instância no servidor e quero configurar a sincronização com ela",
|
||||
"next": "Avançar",
|
||||
"init-in-progress": "Inicialização do documento em andamento",
|
||||
"redirecting": "Você será redirecionado para o aplicativo em breve.",
|
||||
"title": "Setup"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sincronizar com Desktop",
|
||||
"description": "Esta configuração deve ser iniciada a partir da instância do desktop:",
|
||||
"step1": "Abra sua instância do Trilium Notes no desktop.",
|
||||
"step2": "No menu do Trilium, clique em Opções.",
|
||||
"step3": "Clique na categoria Sincronização.",
|
||||
"step4": "Altere o endereço da instância do servidor para: {{- host}} e clique em Salvar.",
|
||||
"step5": "Clique no botão \"Testar sincronização\" para verificar se a conexão foi bem-sucedida.",
|
||||
"step6": "Depois de concluir essas etapas, clique em {{- link}}.",
|
||||
"step6-here": "Aqui"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sincronizar do Servidor",
|
||||
"instructions": "Por favor, insira abaixo o endereço e as credenciais do servidor Trilium. Isso fará o download de todo o documento Trilium do servidor e configurará a sincronização com ele. Dependendo do tamanho do documento e da velocidade da conexão, isso pode levar algum tempo.",
|
||||
"server-host": "Endereço do servidor Trilium",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Servidor proxy (opcional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Nota:",
|
||||
"proxy-instruction": "Se você deixar o campo de proxy em branco, o proxy do sistema será usado (aplicável apenas ao aplicativo desktop)",
|
||||
"password": "Senha",
|
||||
"password-placeholder": "Senha",
|
||||
"back": "Voltar",
|
||||
"finish-setup": "Terminar configuração"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sincronização em andamento",
|
||||
"successful": "A sincronização foi configurada corretamente. Levará algum tempo para que a sincronização inicial seja concluída. Quando terminar, você será redirecionado para a página de login.",
|
||||
"outstanding-items": "Itens de sincronização pendentes:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Não encontrado",
|
||||
"heading": "Não encontrado"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "pai:",
|
||||
"clipped-from": "Esta nota foi originalmente extraída de {{- url}}",
|
||||
"child-notes": "Notas filhas:",
|
||||
"no-content": "Esta nota não possui conteúdo."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Segunda-feira",
|
||||
"tuesday": "Terça-feira",
|
||||
"wednesday": "Quarta-feira",
|
||||
"thursday": "Quinta-feira",
|
||||
"friday": "Sexta-feira",
|
||||
"saturday": "Sábado",
|
||||
"sunday": "Domingo"
|
||||
},
|
||||
"months": {
|
||||
"january": "Janeiro",
|
||||
"february": "Fevereiro",
|
||||
"march": "Março",
|
||||
"april": "Abril",
|
||||
"may": "Maio",
|
||||
"june": "Junho",
|
||||
"july": "Julho",
|
||||
"august": "Agosto",
|
||||
"september": "Setembro",
|
||||
"october": "Outubro",
|
||||
"november": "Novembro",
|
||||
"december": "Dezembro"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Pesquisar:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "O host do servidor de sincronização não está configurado. Por favor, configure a sincronização primeiro.",
|
||||
"successful": "A comunicação com o servidor de sincronização foi bem-sucedida, a sincronização foi iniciada."
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Voltar no histórico da nota",
|
||||
"forward-in-note-history": "Avançar no histórico da nota",
|
||||
"jump-to-note": "Ir para...",
|
||||
"command-palette": "Paleta de Comandos",
|
||||
"scroll-to-active-note": "Rolar até a nota atual",
|
||||
"quick-search": "Busca Rápida",
|
||||
"search-in-subtree": "Buscar na subárvore",
|
||||
"expand-subtree": "Expandir Subárvore",
|
||||
"collapse-tree": "Recolher Árvore",
|
||||
"collapse-subtree": "Recolher Subárvore",
|
||||
"sort-child-notes": "Ordenar Notas Filhas",
|
||||
"create-note-after": "Criar Nota Após",
|
||||
"create-note-into": "Criar Nota Dentro",
|
||||
"create-note-into-inbox": "Criar Nota na Caixa de Entrada",
|
||||
"delete-notes": "Excluir Notas",
|
||||
"move-note-up": "Mover Nota Para Cima",
|
||||
"move-note-down": "Mover Nota Para Baixo",
|
||||
"move-note-up-in-hierarchy": "Mover Nota Para Cima na Hierarquia",
|
||||
"move-note-down-in-hierarchy": "Mover Nota Para Baixo na Hierarquia",
|
||||
"edit-note-title": "Editar Título da Nota",
|
||||
"edit-branch-prefix": "Editar Prefixo da Ramificação",
|
||||
"clone-notes-to": "Clonar Notas Para",
|
||||
"move-notes-to": "Mover Notas Para",
|
||||
"copy-notes-to-clipboard": "Copiar Notas para a Área de Transferência",
|
||||
"paste-notes-from-clipboard": "Colar Notas da Área de Transferência",
|
||||
"cut-notes-to-clipboard": "Recortar Notas para a Área de Transferência",
|
||||
"select-all-notes-in-parent": "Selecionar Todas as Notas no Pai",
|
||||
"add-note-above-to-selection": "Adicionar Nota Acima à Seleção",
|
||||
"add-note-below-to-selection": "Adicionar Nota Abaixo à Seleção",
|
||||
"duplicate-subtree": "Duplicar Subárvore",
|
||||
"open-new-tab": "Abrir Nova Guia",
|
||||
"close-active-tab": "Fechar Guia Ativa",
|
||||
"reopen-last-tab": "Reabrir Última Guia",
|
||||
"activate-next-tab": "Ativar Próxima Guia",
|
||||
"activate-previous-tab": "Ativar Guia Anterior",
|
||||
"open-new-window": "Abrir Nova Janela",
|
||||
"toggle-system-tray-icon": "Alternar Ícone da Bandeja do Sistema",
|
||||
"toggle-zen-mode": "Alternar Modo Zen",
|
||||
"switch-to-first-tab": "Alternar para a Primeira Guia",
|
||||
"switch-to-second-tab": "Alternar para a Segunda Guia",
|
||||
"switch-to-third-tab": "Alternar para a Terceira Guia",
|
||||
"switch-to-fourth-tab": "Alternar para a Quarta Guia",
|
||||
"switch-to-fifth-tab": "Alternar para a Quinta Guia",
|
||||
"switch-to-sixth-tab": "Alternar para a Sexta Guia",
|
||||
"switch-to-seventh-tab": "Alternar para a Sétima Guia",
|
||||
"switch-to-eighth-tab": "Alternar para a Oitava Guia",
|
||||
"switch-to-ninth-tab": "Alternar para a Nona Guia",
|
||||
"switch-to-last-tab": "Alternar para a Última Guia",
|
||||
"show-note-source": "Exibir Fonte da Nota",
|
||||
"show-options": "Exibir Opções",
|
||||
"show-revisions": "Exibir Revisões",
|
||||
"show-recent-changes": "Exibir Alterações Recentes",
|
||||
"show-sql-console": "Exibir Console SQL",
|
||||
"show-backend-log": "Exibir Log do Backend",
|
||||
"show-help": "Exibir Ajuda",
|
||||
"show-cheatsheet": "Exibir Cheatsheet",
|
||||
"add-link-to-text": "Adicionar Link ao Texto",
|
||||
"follow-link-under-cursor": "Seguir Link sob o Cursor",
|
||||
"insert-date-and-time-to-text": "Inserir Data e Hora ao Texto",
|
||||
"paste-markdown-into-text": "Colar Markdown no Texto",
|
||||
"cut-into-note": "Recortar em Nota",
|
||||
"add-include-note-to-text": "Adicionar Nota de Inclusão ao Texto",
|
||||
"edit-read-only-note": "Editar Nota Somente-Leitura",
|
||||
"add-new-label": "Adicionar Nova Etiqueta",
|
||||
"add-new-relation": "Adicionar Nova Relação",
|
||||
"toggle-ribbon-tab-classic-editor": "Alternar Guia da Faixa de Opções Editor Clássico",
|
||||
"toggle-ribbon-tab-basic-properties": "Alternar Guia da Faixa de Opções Propriedades Básicas",
|
||||
"toggle-ribbon-tab-book-properties": "Alternar Guia da Faixa de Opções Propriedades do Livro",
|
||||
"toggle-ribbon-tab-file-properties": "Alternar Guia da Faixa de Opções Propriedades do Arquivo",
|
||||
"toggle-ribbon-tab-image-properties": "Alternar Guia da Faixa de Opções Propriedades da Imagem",
|
||||
"toggle-ribbon-tab-owned-attributes": "Alternar Guia da Faixa de Opções Atributos Possuídos",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Alternar Guia da Faixa de Opções Atributos Herdados",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Alternar Guia da Faixa de Opções Atributos Promovidos",
|
||||
"toggle-ribbon-tab-note-map": "Alternar Guia da Faixa de Opções Mapa de Notas",
|
||||
"toggle-ribbon-tab-note-info": "Alternar Guia da Faixa de Opções Informações da Nota",
|
||||
"toggle-ribbon-tab-note-paths": "Alternar Guia da Faixa de Opções Caminhos de Nota",
|
||||
"toggle-ribbon-tab-similar-notes": "Alternar Guia da Faixa de Opções Notas Semelhantes",
|
||||
"toggle-right-pane": "Alternar Painel Direito",
|
||||
"print-active-note": "Imprimir Nota Atual",
|
||||
"export-active-note-as-pdf": "Exportar Nota Atual como PDF",
|
||||
"open-note-externally": "Abrir Nota Externamente",
|
||||
"render-active-note": "Renderizar Nota Atual",
|
||||
"run-active-note": "Executar Nota Atual",
|
||||
"toggle-note-hoisting": "Alternar Elevação de Nota",
|
||||
"unhoist-note": "Desfazer Elevação de Nota",
|
||||
"reload-frontend-app": "Recarregar Frontend",
|
||||
"open-developer-tools": "Abrir Ferramentas de Desenvolvedor",
|
||||
"find-in-text": "Localizar no Texto",
|
||||
"toggle-left-pane": "Alternar Painel Esquerdo",
|
||||
"toggle-full-screen": "Alternar Tela Cheia",
|
||||
"zoom-out": "Reduzir Zoom",
|
||||
"zoom-in": "Aumentar Zoom",
|
||||
"reset-zoom-level": "Redefinir Nível de Zoom",
|
||||
"copy-without-formatting": "Copiar Sem Formatação",
|
||||
"force-save-revision": "Forçar Salvamento da Revisão"
|
||||
},
|
||||
"weekdayNumber": "Semana {weekNumber}",
|
||||
"quarterNumber": "Trimestre {quarterNumber}",
|
||||
"hidden-subtree": {
|
||||
"root-title": "Notas Ocultas",
|
||||
"search-history-title": "Histórico de Pesquisa",
|
||||
"note-map-title": "Mapa de Notas",
|
||||
"sql-console-history-title": "Histórico do Console SQL",
|
||||
"shared-notes-title": "Notas Compartilhadas",
|
||||
"bulk-action-title": "Ação em Massa",
|
||||
"backend-log-title": "Log do Backend",
|
||||
"user-hidden-title": "Usuário Oculto",
|
||||
"launch-bar-templates-title": "Modelos da Barra de Atalhos",
|
||||
"built-in-widget-title": "Widget Incorporado",
|
||||
"spacer-title": "Espaçador",
|
||||
"custom-widget-title": "Widget Personalizado",
|
||||
"go-to-previous-note-title": "Ir para Nota Anterior",
|
||||
"go-to-next-note-title": "Ir para Próxima Nota",
|
||||
"new-note-title": "Nova Nota",
|
||||
"search-notes-title": "Pesquisar Notas",
|
||||
"jump-to-note-title": "Ir para...",
|
||||
"calendar-title": "Calendário",
|
||||
"recent-changes-title": "Alterações Recentes",
|
||||
"bookmarks-title": "Favoritos",
|
||||
"open-today-journal-note-title": "Abrir Nota do Diário de Hoje",
|
||||
"quick-search-title": "Pesquisa Rápida",
|
||||
"protected-session-title": "Sessão Protegida",
|
||||
"sync-status-title": "Status de Sincronização",
|
||||
"settings-title": "Configurações",
|
||||
"llm-chat-title": "Conversar com as Notas",
|
||||
"options-title": "Opções",
|
||||
"appearance-title": "Aparência",
|
||||
"shortcuts-title": "Atalhos",
|
||||
"text-notes": "Notas de Texto",
|
||||
"code-notes-title": "Notas de Código",
|
||||
"images-title": "Imagens",
|
||||
"spellcheck-title": "Verificação Ortográfica",
|
||||
"password-title": "Senha",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Backup",
|
||||
"sync-title": "Sincronizar",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "Outros",
|
||||
"advanced-title": "Avançado",
|
||||
"user-guide": "Guia do Usuário",
|
||||
"localization": "Idioma e Região",
|
||||
"inbox-title": "Caixa de Entrada",
|
||||
"base-abstract-launcher-title": "Atalho Abstrato Base",
|
||||
"command-launcher-title": "Atalho de Comando",
|
||||
"note-launcher-title": "Atalho de Notas",
|
||||
"script-launcher-title": "Atalho de Script",
|
||||
"launch-bar-title": "Barra de Atalhos",
|
||||
"available-launchers-title": "Atalhos disponíveis",
|
||||
"visible-launchers-title": "Atalhos Visíveis",
|
||||
"command-palette": "Abrir a Paleta de Comandos",
|
||||
"zen-mode": "Modo Zen"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nova nota",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "O arquivo de log do backend '{{ fileName }}' ainda não existe.",
|
||||
"reading-log-failed": "Falha ao ler o arquivo de log do backend '{{ fileName }}'."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Esta nota não pode ser exibida."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Documento PDF (*.pdf)",
|
||||
"unable-to-export-message": "A nota atual não pôde ser exportada como PDF.",
|
||||
"unable-to-export-title": "Não foi possível exportar como PDF",
|
||||
"unable-to-save-message": "O arquivo selecionado não pôde ser salvo. Tente novamente ou selecione outro destino.",
|
||||
"unable-to-print": "Não foi possível imprimir a nota"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Sair do Trilium",
|
||||
"recents": "Notas recentes",
|
||||
"bookmarks": "Favoritos",
|
||||
"today": "Abrir a nota do diário de hoje",
|
||||
"new-note": "Nova nota",
|
||||
"show-windows": "Exibir janelas",
|
||||
"open_new_window": "Abrir nova janela"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "A migração direta da sua versão atual não é suportada. Por favor, atualize primeiro para a versão mais recente v0.60.4 e somente depois para esta versão.",
|
||||
"error_message": "Erro durante a migração para a versão {{version}}: {{stack}}",
|
||||
"wrong_db_version": "A versão do banco de dados ({{version}}) é mais recente do que a esperada pelo aplicativo ({{targetVersion}}), o que significa que ele foi criado por uma versão mais nova e incompatível do Trilium. Atualize para a versão mais recente do Trilium para resolver esse problema."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Erro"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Tema do site",
|
||||
"search_placeholder": "Pesquisar...",
|
||||
"image_alt": "Imagem do artigo",
|
||||
"last-updated": "Atualizado pela última vez em {{- date}}",
|
||||
"subpages": "Subpáginas:",
|
||||
"on-this-page": "Nesta página",
|
||||
"expand": "Expandir"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Trecho de texto",
|
||||
"description": "Descrição",
|
||||
"list-view": "Visualização em lista",
|
||||
"grid-view": "Visualização em grade",
|
||||
"calendar": "Calendário",
|
||||
"table": "Tabela",
|
||||
"geo-map": "Mapa geográfico",
|
||||
"start-date": "Data de início",
|
||||
"end-date": "Data de término",
|
||||
"start-time": "Hora de início",
|
||||
"end-time": "Hora de término",
|
||||
"geolocation": "Geolocalização",
|
||||
"built-in-templates": "Modelos integrados",
|
||||
"board": "Quadro Kanban",
|
||||
"status": "Status",
|
||||
"board_note_first": "Primeira nota",
|
||||
"board_note_second": "Segunda nota",
|
||||
"board_note_third": "Terceira nota",
|
||||
"board_status_todo": "A fazer",
|
||||
"board_status_progress": "Em andamento",
|
||||
"board_status_done": "Concluído",
|
||||
"presentation": "Apresentação",
|
||||
"presentation_slide": "Slide de apresentação",
|
||||
"presentation_slide_first": "Primeiro slide",
|
||||
"presentation_slide_second": "Segundo slide",
|
||||
"background": "Plano de fundo"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "DB não inicializada, por favor siga as instruções na tela.",
|
||||
"db_not_initialized_server": "DB não inicializada, por favor visite a página de configuração - http://[your-server-host]:{{port}} para ver instruções de como inicializar o Trillium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Já existe uma instância sendo executada, em vez disso focando nesta."
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "Abrir diálogo \"Ir para nota\"",
|
||||
"search-in-subtree": "Buscar notas na subárvore da nota atual",
|
||||
"expand-subtree": "Expandir subárvore da nota atual",
|
||||
"collapse-tree": "Colapsar a árvore completa de notas",
|
||||
"collapse-subtree": "Colapsar subárvore da nota atual",
|
||||
"sort-child-notes": "Ordenar notas filhas",
|
||||
"creating-and-moving-notes": "Criando e movendo notas",
|
||||
"create-note-into-inbox": "Crie uma nota na caixa de entrada (se definida) ou na nota do dia",
|
||||
"delete-note": "Deletar nota",
|
||||
"move-note-up": "Mover nota para cima",
|
||||
"move-note-down": "Mover nota para baixo",
|
||||
"move-note-up-in-hierarchy": "Mover nota para cima em hierarquia",
|
||||
"move-note-down-in-hierarchy": "Mover nota para baixo em hierarquia",
|
||||
"edit-note-title": "Pule da árvore para os detalhes da nota e edite o título",
|
||||
"edit-branch-prefix": "Exibir o diálogo \"Editar prefixo da ramificação\"",
|
||||
"note-clipboard": "Área de transferência de notas",
|
||||
"copy-notes-to-clipboard": "Copiar notas selecionadas para Área de transferência",
|
||||
"paste-notes-from-clipboard": "Colar notas da área de transferência na nota atual",
|
||||
"cut-notes-to-clipboard": "Recortar as notas selecionadas para a área de transferência",
|
||||
"select-all-notes-in-parent": "Selecionar todas as notas do nível atual da nota",
|
||||
"add-note-above-to-the-selection": "Adicionar nota acima à seleção",
|
||||
"add-note-below-to-selection": "Adicionar nota abaixo à seleção",
|
||||
"duplicate-subtree": "Duplicar subárvores",
|
||||
"tabs-and-windows": "Abas & Janelas",
|
||||
"open-new-tab": "Abre nova aba",
|
||||
"close-active-tab": "Fecha aba ativa",
|
||||
"reopen-last-tab": "Reabre a última aba fechada",
|
||||
"activate-next-tab": "Ativa aba à direita",
|
||||
"activate-previous-tab": "Ativa aba à esquerda",
|
||||
"open-new-window": "Abre nova janela vazia",
|
||||
"toggle-tray": "Mostrar/ocultar o aplicativo da bandeja do sistema",
|
||||
"first-tab": "Ativa a primeira aba na lista",
|
||||
"second-tab": "Ativa a segunda aba na lista",
|
||||
"third-tab": "Ativa a terceira aba na lista",
|
||||
"fourth-tab": "Ativa a quarta aba na lista",
|
||||
"fifth-tab": "Ativa a quinta aba na lista",
|
||||
"sixth-tab": "Ativa a sexta aba na lista",
|
||||
"seventh-tab": "Ativa a sétima aba na lista",
|
||||
"eight-tab": "Ativa a oitava aba na lista",
|
||||
"ninth-tab": "Ativa a nona aba na lista",
|
||||
"last-tab": "Ativa a última aba na lista",
|
||||
"dialogs": "Diálogos",
|
||||
"show-note-source": "Exibe o log de origem da nota",
|
||||
"show-options": "Mostrar log de configurações",
|
||||
"show-revisions": "Exibe log de revisões de nota",
|
||||
"show-recent-changes": "Exibe o log de alterações recentes",
|
||||
"show-sql-console": "Exibe o log do console SQL",
|
||||
"show-backend-log": "Exibe o log do backend",
|
||||
"text-note-operations": "Operações de nota de texto",
|
||||
"add-link-to-text": "Abrir log e adcionar link ao texto",
|
||||
"follow-link-under-cursor": "Seguir o link sob o cursor",
|
||||
"insert-date-and-time-to-text": "Inserir data e hora atuais no texto",
|
||||
"paste-markdown-into-text": "Colar Markdown da área de transferência em nota de texto",
|
||||
"cut-into-note": "Corta a seleção da nota atual e cria uma subnota com o texto selecionado",
|
||||
"add-include-note-to-text": "Abre o log para incluir uma nota",
|
||||
"edit-readonly-note": "Editar uma nota somente leitura",
|
||||
"attributes-labels-and-relations": "Atributos (rótulos e relações)",
|
||||
"add-new-label": "Criar novo rótulo",
|
||||
"create-new-relation": "Criar nova relação",
|
||||
"ribbon-tabs": "Abas da faixa",
|
||||
"toggle-basic-properties": "Alterar Propriedades Básicas",
|
||||
"toggle-file-properties": "Alterar Propriedades do Arquivo",
|
||||
"toggle-image-properties": "Alterar Propriedades da Imagem",
|
||||
"toggle-owned-attributes": "Alterar Atributos Próprios",
|
||||
"toggle-inherited-attributes": "Alterar Atributos Herdados",
|
||||
"toggle-promoted-attributes": "Alternar Atributos Promovidos",
|
||||
"toggle-link-map": "Alternar Mapa de Links",
|
||||
"toggle-note-info": "Alternar Informações da Nota",
|
||||
"toggle-note-paths": "Alternar Caminhos da Nota",
|
||||
"toggle-similar-notes": "Alternar Notas Similares",
|
||||
"other": "Outros",
|
||||
"toggle-right-pane": "Alternar a exibição do painel direito, que inclui Sumário e Destaques",
|
||||
"print-active-note": "Imprimir nota atual",
|
||||
"open-note-externally": "Abrir nota como arquivo no aplicativo padrão",
|
||||
"render-active-note": "Renderizar (re-renderizar) nota atual",
|
||||
"run-active-note": "Executar código JavaScript (frontend/backend) da nota",
|
||||
"toggle-note-hoisting": "Alternar a elevação da nota atual",
|
||||
"unhoist": "Desfazer elevação de tudo",
|
||||
"reload-frontend-app": "Recarregar Interface",
|
||||
"open-dev-tools": "Abrir ferramentas de desenvolvedor",
|
||||
"toggle-left-note-tree-panel": "Alternar painel esquerdo (árvore de notas)",
|
||||
"toggle-full-screen": "Alternar para tela cheia",
|
||||
"zoom-out": "Diminuir zoom",
|
||||
"zoom-in": "Aumentar zoom",
|
||||
"note-navigation": "Navegação de notas",
|
||||
"reset-zoom-level": "Redefinir nível de zoom",
|
||||
"copy-without-formatting": "Copiar texto selecionado sem formatação",
|
||||
"force-save-revision": "Forçar a criação/salvamento de uma nova revisão da nota atual",
|
||||
"show-help": "Exibir Ajuda integrada / colinha",
|
||||
"toggle-book-properties": "Alternar propriedades do book",
|
||||
"toggle-classic-editor-toolbar": "Alternar a aba de Formatação no editor com barra de ferramentas fixa",
|
||||
"back-in-note-history": "Navegar para a nota anterior no histórico",
|
||||
"forward-in-note-history": "Navegar para a próxima nota no histórico",
|
||||
"open-command-palette": "Abrir paleta de comandos",
|
||||
"scroll-to-active-note": "Rolar a árvore de notas até a nota atual",
|
||||
"quick-search": "Ativar barra de busca rápida",
|
||||
"create-note-after": "Criar nota após nota atual",
|
||||
"create-note-into": "Criar nota como subnota da nota atual",
|
||||
"clone-notes-to": "Clonar notas selecionadas",
|
||||
"move-notes-to": "Mover notas selecionadas",
|
||||
"find-in-text": "Alternar painel de busca",
|
||||
"export-as-pdf": "Exportar a nota atual como PDF",
|
||||
"toggle-zen-mode": "Ativa/desativa o modo zen (interface mínima para uma edição mais focada)",
|
||||
"show-cheatsheet": "Exibir um modal com operações comuns de teclado"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"heading": "Trilium login",
|
||||
"incorrect-password": "Senha incorreta. Tente novamente.",
|
||||
"password": "Senha",
|
||||
"remember-me": "Lembrar",
|
||||
"button": "Login",
|
||||
"incorrect-totp": "O código TOTP está incorreto. Por favor, tente novamente.",
|
||||
"sign_in_with_sso": "Fazer login com {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Definir senha",
|
||||
"heading": "Definir senha",
|
||||
"description": "Antes de começar a usar o Trilium web, você precisa definir uma senha. Você usará essa senha para fazer login.",
|
||||
"password": "Senha",
|
||||
"password-confirmation": "Confirmar Senha",
|
||||
"button": "Definir senha"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium Notes setup",
|
||||
"new-document": "Sou um novo usuário e quero criar um novo documento Trilium para minhas notas",
|
||||
"sync-from-desktop": "Já tenho uma instância no desktop e quero configurar a sincronização com ela",
|
||||
"sync-from-server": "Já tenho uma instância no servidor e quero configurar a sincronização com ela",
|
||||
"next": "Avançar",
|
||||
"init-in-progress": "Inicialização do documento em andamento",
|
||||
"redirecting": "Você será redirecionado para o aplicativo em breve.",
|
||||
"title": "Setup"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Sincronizar com Desktop",
|
||||
"description": "Esta configuração deve ser iniciada a partir da instância do desktop:",
|
||||
"step1": "Abra sua instância do Trilium Notes no desktop.",
|
||||
"step2": "No menu do Trilium, clique em Opções.",
|
||||
"step3": "Clique na categoria Sincronização.",
|
||||
"step4": "Altere o endereço da instância do servidor para: {{- host}} e clique em Salvar.",
|
||||
"step5": "Clique no botão \"Testar sincronização\" para verificar se a conexão foi bem-sucedida.",
|
||||
"step6": "Depois de concluir essas etapas, clique em {{- link}}.",
|
||||
"step6-here": "Aqui"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Sincronizar do Servidor",
|
||||
"instructions": "Por favor, insira abaixo o endereço e as credenciais do servidor Trilium. Isso fará o download de todo o documento Trilium do servidor e configurará a sincronização com ele. Dependendo do tamanho do documento e da velocidade da conexão, isso pode levar algum tempo.",
|
||||
"server-host": "Endereço do servidor Trilium",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Servidor proxy (opcional)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Nota:",
|
||||
"proxy-instruction": "Se você deixar o campo de proxy em branco, o proxy do sistema será usado (aplicável apenas ao aplicativo desktop)",
|
||||
"password": "Senha",
|
||||
"password-placeholder": "Senha",
|
||||
"back": "Voltar",
|
||||
"finish-setup": "Terminar configuração"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sincronização em andamento",
|
||||
"successful": "A sincronização foi configurada corretamente. Levará algum tempo para que a sincronização inicial seja concluída. Quando terminar, você será redirecionado para a página de login.",
|
||||
"outstanding-items": "Itens de sincronização pendentes:",
|
||||
"outstanding-items-default": "N/A"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Não encontrado",
|
||||
"heading": "Não encontrado"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "pai:",
|
||||
"clipped-from": "Esta nota foi originalmente extraída de {{- url}}",
|
||||
"child-notes": "Notas filhas:",
|
||||
"no-content": "Esta nota não possui conteúdo."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Segunda-feira",
|
||||
"tuesday": "Terça-feira",
|
||||
"wednesday": "Quarta-feira",
|
||||
"thursday": "Quinta-feira",
|
||||
"friday": "Sexta-feira",
|
||||
"saturday": "Sábado",
|
||||
"sunday": "Domingo"
|
||||
},
|
||||
"months": {
|
||||
"january": "Janeiro",
|
||||
"february": "Fevereiro",
|
||||
"march": "Março",
|
||||
"april": "Abril",
|
||||
"may": "Maio",
|
||||
"june": "Junho",
|
||||
"july": "Julho",
|
||||
"august": "Agosto",
|
||||
"september": "Setembro",
|
||||
"october": "Outubro",
|
||||
"november": "Novembro",
|
||||
"december": "Dezembro"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Pesquisar:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "O host do servidor de sincronização não está configurado. Por favor, configure a sincronização primeiro.",
|
||||
"successful": "A comunicação com o servidor de sincronização foi bem-sucedida, a sincronização foi iniciada."
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Voltar no histórico da nota",
|
||||
"forward-in-note-history": "Avançar no histórico da nota",
|
||||
"jump-to-note": "Ir para...",
|
||||
"command-palette": "Paleta de Comandos",
|
||||
"scroll-to-active-note": "Rolar até a nota atual",
|
||||
"quick-search": "Busca Rápida",
|
||||
"search-in-subtree": "Buscar na subárvore",
|
||||
"expand-subtree": "Expandir Subárvore",
|
||||
"collapse-tree": "Recolher Árvore",
|
||||
"collapse-subtree": "Recolher Subárvore",
|
||||
"sort-child-notes": "Ordenar Notas Filhas",
|
||||
"create-note-after": "Criar Nota Após",
|
||||
"create-note-into": "Criar Nota Dentro",
|
||||
"create-note-into-inbox": "Criar Nota na Caixa de Entrada",
|
||||
"delete-notes": "Excluir Notas",
|
||||
"move-note-up": "Mover Nota Para Cima",
|
||||
"move-note-down": "Mover Nota Para Baixo",
|
||||
"move-note-up-in-hierarchy": "Mover Nota Para Cima na Hierarquia",
|
||||
"move-note-down-in-hierarchy": "Mover Nota Para Baixo na Hierarquia",
|
||||
"edit-note-title": "Editar Título da Nota",
|
||||
"edit-branch-prefix": "Editar Prefixo da Ramificação",
|
||||
"clone-notes-to": "Clonar Notas Para",
|
||||
"move-notes-to": "Mover Notas Para",
|
||||
"copy-notes-to-clipboard": "Copiar Notas para a Área de Transferência",
|
||||
"paste-notes-from-clipboard": "Colar Notas da Área de Transferência",
|
||||
"cut-notes-to-clipboard": "Recortar Notas para a Área de Transferência",
|
||||
"select-all-notes-in-parent": "Selecionar Todas as Notas no Pai",
|
||||
"add-note-above-to-selection": "Adicionar Nota Acima à Seleção",
|
||||
"add-note-below-to-selection": "Adicionar Nota Abaixo à Seleção",
|
||||
"duplicate-subtree": "Duplicar Subárvore",
|
||||
"open-new-tab": "Abrir Nova Guia",
|
||||
"close-active-tab": "Fechar Guia Ativa",
|
||||
"reopen-last-tab": "Reabrir Última Guia",
|
||||
"activate-next-tab": "Ativar Próxima Guia",
|
||||
"activate-previous-tab": "Ativar Guia Anterior",
|
||||
"open-new-window": "Abrir Nova Janela",
|
||||
"toggle-system-tray-icon": "Alternar Ícone da Bandeja do Sistema",
|
||||
"toggle-zen-mode": "Alternar Modo Zen",
|
||||
"switch-to-first-tab": "Alternar para a Primeira Guia",
|
||||
"switch-to-second-tab": "Alternar para a Segunda Guia",
|
||||
"switch-to-third-tab": "Alternar para a Terceira Guia",
|
||||
"switch-to-fourth-tab": "Alternar para a Quarta Guia",
|
||||
"switch-to-fifth-tab": "Alternar para a Quinta Guia",
|
||||
"switch-to-sixth-tab": "Alternar para a Sexta Guia",
|
||||
"switch-to-seventh-tab": "Alternar para a Sétima Guia",
|
||||
"switch-to-eighth-tab": "Alternar para a Oitava Guia",
|
||||
"switch-to-ninth-tab": "Alternar para a Nona Guia",
|
||||
"switch-to-last-tab": "Alternar para a Última Guia",
|
||||
"show-note-source": "Exibir Fonte da Nota",
|
||||
"show-options": "Exibir Opções",
|
||||
"show-revisions": "Exibir Revisões",
|
||||
"show-recent-changes": "Exibir Alterações Recentes",
|
||||
"show-sql-console": "Exibir Console SQL",
|
||||
"show-backend-log": "Exibir Log do Backend",
|
||||
"show-help": "Exibir Ajuda",
|
||||
"show-cheatsheet": "Exibir Cheatsheet",
|
||||
"add-link-to-text": "Adicionar Link ao Texto",
|
||||
"follow-link-under-cursor": "Seguir Link sob o Cursor",
|
||||
"insert-date-and-time-to-text": "Inserir Data e Hora ao Texto",
|
||||
"paste-markdown-into-text": "Colar Markdown no Texto",
|
||||
"cut-into-note": "Recortar em Nota",
|
||||
"add-include-note-to-text": "Adicionar Nota de Inclusão ao Texto",
|
||||
"edit-read-only-note": "Editar Nota Somente-Leitura",
|
||||
"add-new-label": "Adicionar Nova Etiqueta",
|
||||
"add-new-relation": "Adicionar Nova Relação",
|
||||
"toggle-ribbon-tab-classic-editor": "Alternar Guia da Faixa de Opções Editor Clássico",
|
||||
"toggle-ribbon-tab-basic-properties": "Alternar Guia da Faixa de Opções Propriedades Básicas",
|
||||
"toggle-ribbon-tab-book-properties": "Alternar Guia da Faixa de Opções Propriedades do Livro",
|
||||
"toggle-ribbon-tab-file-properties": "Alternar Guia da Faixa de Opções Propriedades do Arquivo",
|
||||
"toggle-ribbon-tab-image-properties": "Alternar Guia da Faixa de Opções Propriedades da Imagem",
|
||||
"toggle-ribbon-tab-owned-attributes": "Alternar Guia da Faixa de Opções Atributos Possuídos",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Alternar Guia da Faixa de Opções Atributos Herdados",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Alternar Guia da Faixa de Opções Atributos Promovidos",
|
||||
"toggle-ribbon-tab-note-map": "Alternar Guia da Faixa de Opções Mapa de Notas",
|
||||
"toggle-ribbon-tab-note-info": "Alternar Guia da Faixa de Opções Informações da Nota",
|
||||
"toggle-ribbon-tab-note-paths": "Alternar Guia da Faixa de Opções Caminhos de Nota",
|
||||
"toggle-ribbon-tab-similar-notes": "Alternar Guia da Faixa de Opções Notas Semelhantes",
|
||||
"toggle-right-pane": "Alternar Painel Direito",
|
||||
"print-active-note": "Imprimir Nota Atual",
|
||||
"export-active-note-as-pdf": "Exportar Nota Atual como PDF",
|
||||
"open-note-externally": "Abrir Nota Externamente",
|
||||
"render-active-note": "Renderizar Nota Atual",
|
||||
"run-active-note": "Executar Nota Atual",
|
||||
"toggle-note-hoisting": "Alternar Elevação de Nota",
|
||||
"unhoist-note": "Desfazer Elevação de Nota",
|
||||
"reload-frontend-app": "Recarregar Frontend",
|
||||
"open-developer-tools": "Abrir Ferramentas de Desenvolvedor",
|
||||
"find-in-text": "Localizar no Texto",
|
||||
"toggle-left-pane": "Alternar Painel Esquerdo",
|
||||
"toggle-full-screen": "Alternar Tela Cheia",
|
||||
"zoom-out": "Reduzir Zoom",
|
||||
"zoom-in": "Aumentar Zoom",
|
||||
"reset-zoom-level": "Redefinir Nível de Zoom",
|
||||
"copy-without-formatting": "Copiar Sem Formatação",
|
||||
"force-save-revision": "Forçar Salvamento da Revisão"
|
||||
},
|
||||
"weekdayNumber": "Semana {weekNumber}",
|
||||
"quarterNumber": "Trimestre {quarterNumber}",
|
||||
"hidden-subtree": {
|
||||
"root-title": "Notas Ocultas",
|
||||
"search-history-title": "Histórico de Pesquisa",
|
||||
"note-map-title": "Mapa de Notas",
|
||||
"sql-console-history-title": "Histórico do Console SQL",
|
||||
"shared-notes-title": "Notas Compartilhadas",
|
||||
"bulk-action-title": "Ação em Massa",
|
||||
"backend-log-title": "Log do Backend",
|
||||
"user-hidden-title": "Usuário Oculto",
|
||||
"launch-bar-templates-title": "Modelos da Barra de Atalhos",
|
||||
"built-in-widget-title": "Widget Incorporado",
|
||||
"spacer-title": "Espaçador",
|
||||
"custom-widget-title": "Widget Personalizado",
|
||||
"go-to-previous-note-title": "Ir para Nota Anterior",
|
||||
"go-to-next-note-title": "Ir para Próxima Nota",
|
||||
"new-note-title": "Nova Nota",
|
||||
"search-notes-title": "Pesquisar Notas",
|
||||
"jump-to-note-title": "Ir para...",
|
||||
"calendar-title": "Calendário",
|
||||
"recent-changes-title": "Alterações Recentes",
|
||||
"bookmarks-title": "Favoritos",
|
||||
"open-today-journal-note-title": "Abrir Nota do Diário de Hoje",
|
||||
"quick-search-title": "Pesquisa Rápida",
|
||||
"protected-session-title": "Sessão Protegida",
|
||||
"sync-status-title": "Status de Sincronização",
|
||||
"settings-title": "Configurações",
|
||||
"options-title": "Opções",
|
||||
"appearance-title": "Aparência",
|
||||
"shortcuts-title": "Atalhos",
|
||||
"text-notes": "Notas de Texto",
|
||||
"code-notes-title": "Notas de Código",
|
||||
"images-title": "Imagens",
|
||||
"spellcheck-title": "Verificação Ortográfica",
|
||||
"password-title": "Senha",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Backup",
|
||||
"sync-title": "Sincronizar",
|
||||
"other": "Outros",
|
||||
"advanced-title": "Avançado",
|
||||
"user-guide": "Guia do Usuário",
|
||||
"localization": "Idioma e Região",
|
||||
"inbox-title": "Caixa de Entrada",
|
||||
"base-abstract-launcher-title": "Atalho Abstrato Base",
|
||||
"command-launcher-title": "Atalho de Comando",
|
||||
"note-launcher-title": "Atalho de Notas",
|
||||
"script-launcher-title": "Atalho de Script",
|
||||
"launch-bar-title": "Barra de Atalhos",
|
||||
"available-launchers-title": "Atalhos disponíveis",
|
||||
"visible-launchers-title": "Atalhos Visíveis",
|
||||
"command-palette": "Abrir a Paleta de Comandos",
|
||||
"zen-mode": "Modo Zen"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Nova nota",
|
||||
"duplicate-note-suffix": "(dup)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "O arquivo de log do backend '{{ fileName }}' ainda não existe.",
|
||||
"reading-log-failed": "Falha ao ler o arquivo de log do backend '{{ fileName }}'."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Esta nota não pode ser exibida."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Documento PDF (*.pdf)",
|
||||
"unable-to-export-message": "A nota atual não pôde ser exportada como PDF.",
|
||||
"unable-to-export-title": "Não foi possível exportar como PDF",
|
||||
"unable-to-save-message": "O arquivo selecionado não pôde ser salvo. Tente novamente ou selecione outro destino.",
|
||||
"unable-to-print": "Não foi possível imprimir a nota"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Sair do Trilium",
|
||||
"recents": "Notas recentes",
|
||||
"bookmarks": "Favoritos",
|
||||
"today": "Abrir a nota do diário de hoje",
|
||||
"new-note": "Nova nota",
|
||||
"show-windows": "Exibir janelas",
|
||||
"open_new_window": "Abrir nova janela"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "A migração direta da sua versão atual não é suportada. Por favor, atualize primeiro para a versão mais recente v0.60.4 e somente depois para esta versão.",
|
||||
"error_message": "Erro durante a migração para a versão {{version}}: {{stack}}",
|
||||
"wrong_db_version": "A versão do banco de dados ({{version}}) é mais recente do que a esperada pelo aplicativo ({{targetVersion}}), o que significa que ele foi criado por uma versão mais nova e incompatível do Trilium. Atualize para a versão mais recente do Trilium para resolver esse problema."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Erro"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Tema do site",
|
||||
"search_placeholder": "Pesquisar...",
|
||||
"image_alt": "Imagem do artigo",
|
||||
"last-updated": "Atualizado pela última vez em {{- date}}",
|
||||
"subpages": "Subpáginas:",
|
||||
"on-this-page": "Nesta página",
|
||||
"expand": "Expandir"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Trecho de texto",
|
||||
"description": "Descrição",
|
||||
"list-view": "Visualização em lista",
|
||||
"grid-view": "Visualização em grade",
|
||||
"calendar": "Calendário",
|
||||
"table": "Tabela",
|
||||
"geo-map": "Mapa geográfico",
|
||||
"start-date": "Data de início",
|
||||
"end-date": "Data de término",
|
||||
"start-time": "Hora de início",
|
||||
"end-time": "Hora de término",
|
||||
"geolocation": "Geolocalização",
|
||||
"built-in-templates": "Modelos integrados",
|
||||
"board": "Quadro Kanban",
|
||||
"status": "Status",
|
||||
"board_note_first": "Primeira nota",
|
||||
"board_note_second": "Segunda nota",
|
||||
"board_note_third": "Terceira nota",
|
||||
"board_status_todo": "A fazer",
|
||||
"board_status_progress": "Em andamento",
|
||||
"board_status_done": "Concluído",
|
||||
"presentation": "Apresentação",
|
||||
"presentation_slide": "Slide de apresentação",
|
||||
"presentation_slide_first": "Primeiro slide",
|
||||
"presentation_slide_second": "Segundo slide",
|
||||
"background": "Plano de fundo"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "DB não inicializada, por favor siga as instruções na tela.",
|
||||
"db_not_initialized_server": "DB não inicializada, por favor visite a página de configuração - http://[your-server-host]:{{port}} para ver instruções de como inicializar o Trillium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Já existe uma instância sendo executada, em vez disso focando nesta."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,441 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"activate-next-tab": "Activează tab-ul din dreapta",
|
||||
"activate-previous-tab": "Activează tab-ul din stânga",
|
||||
"add-include-note-to-text": "Deschide fereastra de includere notițe",
|
||||
"add-link-to-text": "Deschide fereastra de adaugă legături în text",
|
||||
"add-new-label": "Crează o nouă etichetă",
|
||||
"add-note-above-to-the-selection": "Adaugă notița deasupra selecției",
|
||||
"add-note-below-to-selection": "Adaugă notița deasupra selecției",
|
||||
"attributes-labels-and-relations": "Atribute (etichete și relații)",
|
||||
"close-active-tab": "Închide tab-ul activ",
|
||||
"collapse-subtree": "Minimizează ierarhia notiței curente",
|
||||
"collapse-tree": "Minimizează întreaga ierarhie de notițe",
|
||||
"copy-notes-to-clipboard": "Copiază notițele selectate în clipboard",
|
||||
"copy-without-formatting": "Copiază textul selectat fără formatare",
|
||||
"create-new-relation": "Crează o nouă relație",
|
||||
"create-note-into-inbox": "Crează o notiță și o deschide în inbox (dacă este definit) sau notița zilnică",
|
||||
"cut-notes-to-clipboard": "Decupează notițele selectate în clipboard",
|
||||
"creating-and-moving-notes": "Crearea și mutarea notițelor",
|
||||
"cut-into-note": "Decupează selecția din notița curentă și crează o subnotiță cu textul selectat",
|
||||
"delete-note": "Șterge notița",
|
||||
"dialogs": "Ferestre",
|
||||
"duplicate-subtree": "Dublifică subnotițele",
|
||||
"edit-branch-prefix": "Afișează ecranul „Editează prefixul ramurii”",
|
||||
"edit-note-title": "Sare de la arborele notițelor la detaliile notiței și editează titlul",
|
||||
"edit-readonly-note": "Editează o notiță care este în modul doar în citire",
|
||||
"eight-tab": "Activează cel de-al optelea tab din listă",
|
||||
"expand-subtree": "Expandează ierarhia notiței curente",
|
||||
"fifth-tab": "Activează cel de-al cincelea tab din listă",
|
||||
"first-tab": "Activează cel primul tab din listă",
|
||||
"follow-link-under-cursor": "Urmărește legătura de sub poziția cursorului",
|
||||
"force-save-revision": "Forțează crearea/salvarea unei noi revizii ale notiției curente",
|
||||
"fourth-tab": "Activează cel de-al patrulea tab din listă",
|
||||
"insert-date-and-time-to-text": "Inserează data curentă și timpul în text",
|
||||
"last-tab": "Activează ultimul tab din listă",
|
||||
"move-note-down": "Mută notița mai jos",
|
||||
"move-note-down-in-hierarchy": "Mută notița mai jos în ierarhie",
|
||||
"move-note-up": "Mută notița mai sus",
|
||||
"move-note-up-in-hierarchy": "Mută notița mai sus în ierarhie",
|
||||
"ninth-tab": "Activează cel de-al nouălea tab din listă",
|
||||
"note-clipboard": "Clipboard-ul notițelor",
|
||||
"note-navigation": "Navigarea printre notițe",
|
||||
"open-dev-tools": "Deschide uneltele de dezvoltator",
|
||||
"open-jump-to-note-dialog": "Deschide ecranul „Sari la notiță”",
|
||||
"open-new-tab": "Deschide un tab nou",
|
||||
"open-new-window": "Deschide o nouă fereastră goală",
|
||||
"open-note-externally": "Deschide notița ca un fișier utilizând aplicația implicită",
|
||||
"other": "Altele",
|
||||
"paste-markdown-into-text": "Lipește text Markdown din clipboard în notița de tip text",
|
||||
"paste-notes-from-clipboard": "Lipește notițele din clipboard în notița activă",
|
||||
"print-active-note": "Imprimă notița activă",
|
||||
"reload-frontend-app": "Reîncarcă interfața grafică",
|
||||
"render-active-note": "Reîmprospătează notița activă",
|
||||
"reopen-last-tab": "Deschide din nou ultimul tab închis",
|
||||
"reset-zoom-level": "Resetează nivelul de magnificare",
|
||||
"ribbon-tabs": "Tab-urile din panglică",
|
||||
"run-active-note": "Rulează notița curentă de tip JavaScript (frontend sau backend)",
|
||||
"search-in-subtree": "Caută notițe în ierarhia notiței active",
|
||||
"second-tab": "Activează cel de-al doilea tab din listă",
|
||||
"select-all-notes-in-parent": "Selectează toate notițele din nivelul notiței curente",
|
||||
"seventh-tab": "Activează cel de-al șaptelea tab din listă",
|
||||
"show-backend-log": "Afișează fereastra „Log-uri din backend”",
|
||||
"show-help": "Afișează informații utile",
|
||||
"show-note-source": "Afișează fereastra „Sursa notiței”",
|
||||
"show-options": "Afișează fereastra de opțiuni",
|
||||
"show-recent-changes": "Afișează fereastra „Schimbări recente”",
|
||||
"show-revisions": "Afișează fereastra „Revizii ale notiței”",
|
||||
"show-sql-console": "Afișează ecranul „Consolă SQL”",
|
||||
"sixth-tab": "Activează cel de-al șaselea tab din listă",
|
||||
"sort-child-notes": "Ordonează subnotițele",
|
||||
"tabs-and-windows": "Tab-uri și ferestre",
|
||||
"text-note-operations": "Operații asupra notițelor text",
|
||||
"third-tab": "Activează cel de-al treilea tab din listă",
|
||||
"toggle-basic-properties": "Comută tab-ul „Proprietăți de bază”",
|
||||
"toggle-book-properties": "Comută tab-ul „Proprietăți ale cărții”",
|
||||
"toggle-file-properties": "Comută tab-ul „Proprietăți fișier”",
|
||||
"toggle-full-screen": "Comută modul ecran complet",
|
||||
"toggle-image-properties": "Comută tab-ul „Proprietăți imagini”",
|
||||
"toggle-inherited-attributes": "Comută tab-ul „Atribute moștenite”",
|
||||
"toggle-left-note-tree-panel": "Comută panoul din stânga (arborele notițelor)",
|
||||
"toggle-link-map": "Comută harta legăturilor",
|
||||
"toggle-note-hoisting": "Comută focalizarea pe notița curentă",
|
||||
"toggle-note-info": "Comută tab-ul „Informații despre notiță”",
|
||||
"toggle-note-paths": "Comută tab-ul „Căile notiței”",
|
||||
"toggle-owned-attributes": "Comută tab-ul „Atribute proprii”",
|
||||
"toggle-promoted-attributes": "Comută tab-ul „Atribute promovate”",
|
||||
"toggle-right-pane": "Comută afișarea panoului din dreapta, ce include tabela de conținut și evidențieri",
|
||||
"toggle-similar-notes": "Comută tab-ul „Notițe similare”",
|
||||
"toggle-tray": "Afișează/ascunde aplicația din tray-ul de sistem",
|
||||
"unhoist": "Defocalizează complet",
|
||||
"zoom-in": "Mărește zoom-ul",
|
||||
"zoom-out": "Micșorează zoom-ul",
|
||||
"toggle-classic-editor-toolbar": "Comută tab-ul „Formatare” pentru editorul cu bară fixă",
|
||||
"export-as-pdf": "Exportă notița curentă ca PDF",
|
||||
"show-cheatsheet": "Afișează o fereastră cu scurtături de la tastatură comune",
|
||||
"toggle-zen-mode": "Activează/dezactivează modul zen (o interfață minimală, fără distrageri)",
|
||||
"back-in-note-history": "Mergi la notița anterioară din istoric",
|
||||
"forward-in-note-history": "Mergi la următoarea notiță din istoric",
|
||||
"scroll-to-active-note": "Derulează la notița activă în lista de notițe",
|
||||
"quick-search": "Mergi la bara de căutare rapidă",
|
||||
"create-note-after": "Crează o notiță după cea activă",
|
||||
"create-note-into": "Crează notiță ca subnotiță a notiței active",
|
||||
"clone-notes-to": "Clonează notițele selectate",
|
||||
"move-notes-to": "Mută notițele selectate",
|
||||
"find-in-text": "Afișează/ascunde panoul de căutare",
|
||||
"open-command-palette": "Deschide paleta de comenzi"
|
||||
},
|
||||
"login": {
|
||||
"button": "Autentifică",
|
||||
"heading": "Autentificare în Trilium",
|
||||
"incorrect-password": "Parola nu este corectă. Încercați din nou.",
|
||||
"password": "Parolă",
|
||||
"remember-me": "Ține-mă minte",
|
||||
"title": "Autentificare",
|
||||
"incorrect-totp": "TOTP-ul este incorect. Încercați din nou.",
|
||||
"sign_in_with_sso": "Autentificare cu {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Setare parolă",
|
||||
"heading": "Setare parolă",
|
||||
"button": "Setează parola",
|
||||
"description": "Înainte de a putea utiliza Trilium din navigator, trebuie mai întâi setată o parolă. Ulterior această parolă va fi folosită la autentificare.",
|
||||
"password": "Parolă",
|
||||
"password-confirmation": "Confirmarea parolei"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Instalarea Trilium Notes",
|
||||
"init-in-progress": "Se inițializează documentul",
|
||||
"new-document": "Sunt un utilizator nou și doresc să creez un document Trilium pentru notițele mele",
|
||||
"next": "Mai departe",
|
||||
"redirecting": "În scurt timp veți fi redirecționat la aplicație.",
|
||||
"sync-from-desktop": "Am deja o instanță de desktop și aș dori o sincronizare cu aceasta",
|
||||
"sync-from-server": "Am deja o instanță de server și doresc o sincronizare cu aceasta",
|
||||
"title": "Inițializare"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"description": "Acești pași trebuie urmați de pe aplicația de desktop:",
|
||||
"heading": "Sincronizare cu aplicația desktop",
|
||||
"step1": "Deschideți aplicația Trilium Notes pentru desktop.",
|
||||
"step2": "Din meniul Trilium, dați clic pe Opțiuni.",
|
||||
"step3": "Clic pe categoria „Sincronizare”.",
|
||||
"step4": "Schimbați adresa server-ului către: {{- host}} și apăsați „Salvează”.",
|
||||
"step5": "Clic pe butonul „Testează sincronizarea” pentru a verifica dacă conexiunea a fost făcută cu succes.",
|
||||
"step6": "După ce ați completat pașii, dați click {{- link}}.",
|
||||
"step6-here": "aici"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"back": "Înapoi",
|
||||
"finish-setup": "Finalizează inițializarea",
|
||||
"heading": "Sincronizare cu server-ul",
|
||||
"instructions": "Introduceți adresa server-ului Trilium și credențialele în secțiunea de jos. Astfel se va descărca întregul document Trilium de pe server și se va configura sincronizarea cu acesta. În funcție de dimensiunea documentului și viteza rețelei, acest proces poate dura.",
|
||||
"note": "De remarcat:",
|
||||
"password": "Parolă",
|
||||
"proxy-instruction": "Dacă lăsați câmpul de proxy nesetat, proxy-ul de sistem va fi folosit (valabil doar pentru aplicația de desktop)",
|
||||
"proxy-server": "Server-ul proxy (opțional)",
|
||||
"proxy-server-placeholder": "https://<sistem>:<port>",
|
||||
"server-host": "Adresa server-ului Trilium",
|
||||
"server-host-placeholder": "https://<sistem>:<port>",
|
||||
"password-placeholder": "Parolă"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sincronizare în curs",
|
||||
"outstanding-items": "Elemente de sincronizat:",
|
||||
"outstanding-items-default": "-",
|
||||
"successful": "Sincronizarea a fost configurată cu succes. Poate dura ceva timp pentru a finaliza sincronizarea inițială. După efectuarea ei se va redirecționa către pagina de autentificare."
|
||||
},
|
||||
"share_404": {
|
||||
"heading": "Pagină negăsită",
|
||||
"title": "Pagină negăsită"
|
||||
},
|
||||
"share_page": {
|
||||
"child-notes": "Subnotițe:",
|
||||
"clipped-from": "Această notiță a fost decupată inițial de pe {{- url}}",
|
||||
"no-content": "Această notiță nu are conținut.",
|
||||
"parent": "părinte:"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Luni",
|
||||
"tuesday": "Marți",
|
||||
"wednesday": "Miercuri",
|
||||
"thursday": "Joi",
|
||||
"friday": "Vineri",
|
||||
"saturday": "Sâmbătă",
|
||||
"sunday": "Duminică"
|
||||
},
|
||||
"months": {
|
||||
"january": "Ianuarie",
|
||||
"february": "Februarie",
|
||||
"march": "Martie",
|
||||
"april": "Aprilie",
|
||||
"may": "Mai",
|
||||
"june": "Iunie",
|
||||
"july": "Iulie",
|
||||
"august": "August",
|
||||
"september": "Septembrie",
|
||||
"october": "Octombrie",
|
||||
"november": "Noiembrie",
|
||||
"december": "Decembrie"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Căutare:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Calea către serverul de sincronizare nu este configurată. Configurați sincronizarea înainte.",
|
||||
"successful": "Comunicarea cu serverul de sincronizare a avut loc cu succes, s-a început sincronizarea."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"advanced-title": "Setări avansate",
|
||||
"appearance-title": "Aspect",
|
||||
"available-launchers-title": "Lansatoare disponibile",
|
||||
"backup-title": "Copii de siguranță",
|
||||
"base-abstract-launcher-title": "Lansator abstract de bază",
|
||||
"bookmarks-title": "Semne de carte",
|
||||
"built-in-widget-title": "Widget predefinit",
|
||||
"bulk-action-title": "Acțiuni în masă",
|
||||
"calendar-title": "Calendar",
|
||||
"code-notes-title": "Notițe de cod",
|
||||
"command-launcher-title": "Lansator de comenzi",
|
||||
"custom-widget-title": "Widget personalizat",
|
||||
"etapi-title": "ETAPI",
|
||||
"go-to-previous-note-title": "Mergi la notița anterioară",
|
||||
"images-title": "Imagini",
|
||||
"launch-bar-title": "Bară de lansare",
|
||||
"new-note-title": "Notiță nouă",
|
||||
"note-launcher-title": "Lansator de notițe",
|
||||
"note-map-title": "Harta notițelor",
|
||||
"open-today-journal-note-title": "Deschide notița de astăzi",
|
||||
"options-title": "Opțiuni",
|
||||
"other": "Diverse",
|
||||
"password-title": "Parolă",
|
||||
"protected-session-title": "Sesiune protejată",
|
||||
"recent-changes-title": "Schimbări recente",
|
||||
"script-launcher-title": "Lansator de script-uri",
|
||||
"search-history-title": "Istoric de căutare",
|
||||
"settings-title": "Setări",
|
||||
"shared-notes-title": "Notițe partajate",
|
||||
"quick-search-title": "Căutare rapidă",
|
||||
"root-title": "Notițe ascunse",
|
||||
"search-notes-title": "Căutare notițe",
|
||||
"shortcuts-title": "Scurtături",
|
||||
"spellcheck-title": "Corectare gramaticală",
|
||||
"sync-status-title": "Starea sincronizării",
|
||||
"sync-title": "Sincronizare",
|
||||
"text-notes": "Notițe text",
|
||||
"user-hidden-title": "Definite de utilizator",
|
||||
"backend-log-title": "Log backend",
|
||||
"spacer-title": "Separator",
|
||||
"sql-console-history-title": "Istoricul consolei SQL",
|
||||
"go-to-next-note-title": "Mergi la notița următoare",
|
||||
"launch-bar-templates-title": "Șabloane bară de lansare",
|
||||
"visible-launchers-title": "Lansatoare vizibile",
|
||||
"user-guide": "Ghidul de utilizare",
|
||||
"jump-to-note-title": "Sari la...",
|
||||
"llm-chat-title": "Întreabă Notes",
|
||||
"multi-factor-authentication-title": "Autentificare multi-factor",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"localization": "Limbă și regiune",
|
||||
"inbox-title": "Inbox",
|
||||
"command-palette": "Deschide paleta de comenzi",
|
||||
"zen-mode": "Mod zen",
|
||||
"tab-switcher-title": "Schimbător de taburi"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Notiță nouă",
|
||||
"duplicate-note-suffix": "(dupl.)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Fișierul de loguri de backend „{{ fileName }}” nu există (încă).",
|
||||
"reading-log-failed": "Nu s-a putut citi fișierul de loguri de backend „{{fileName}}”."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Acest tip de notiță nu poate fi afișat."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Document PDF (*.pdf)",
|
||||
"unable-to-export-message": "Notița curentă nu a putut fi exportată ca PDF.",
|
||||
"unable-to-export-title": "Nu s-a putut exporta ca PDF",
|
||||
"unable-to-save-message": "Nu s-a putut scrie fișierul selectat. Încercați din nou sau selectați altă destinație.",
|
||||
"unable-to-print": "Nu s-a putut imprima notița"
|
||||
},
|
||||
"tray": {
|
||||
"bookmarks": "Semne de carte",
|
||||
"close": "Închide Trilium",
|
||||
"new-note": "Notiță nouă",
|
||||
"recents": "Notițe recente",
|
||||
"today": "Mergi la notița de astăzi",
|
||||
"tooltip": "Trilium Notes",
|
||||
"show-windows": "Afișează ferestrele",
|
||||
"open_new_window": "Deschide fereastră nouă"
|
||||
},
|
||||
"migration": {
|
||||
"error_message": "Eroare la migrarea către versiunea {{version}}: {{stack}}",
|
||||
"old_version": "Nu se poate migra la ultima versiune direct de la versiunea dvs. Actualizați mai întâi la versiunea v0.60.4 și ulterior la această versiune.",
|
||||
"wrong_db_version": "Versiunea actuală a bazei de date ({{version}}) este mai nouă decât versiunea de bază de date suportată de aplicație ({{targetVersion}}), ceea ce înseamnă că a fost creată de către o versiune mai nouă de Trilium. Actualizați aplicația la ultima versiune pentru a putea continua."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Eroare"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"quick-search": "Căutare rapidă",
|
||||
"back-in-note-history": "Înapoi în istoricul notițelor",
|
||||
"forward-in-note-history": "Înainte în istoricul notițelor",
|
||||
"jump-to-note": "Mergi la...",
|
||||
"scroll-to-active-note": "Derulează la notița activă",
|
||||
"search-in-subtree": "Caută în subnotițe",
|
||||
"expand-subtree": "Expandează subnotițele",
|
||||
"collapse-tree": "Minimizează arborele de notițe",
|
||||
"collapse-subtree": "Ascunde subnotițele",
|
||||
"sort-child-notes": "Ordonează subnotițele",
|
||||
"create-note-after": "Crează notiță după",
|
||||
"create-note-into": "Crează subnotiță în",
|
||||
"create-note-into-inbox": "Crează notiță în inbox",
|
||||
"delete-notes": "Șterge notițe",
|
||||
"move-note-up": "Mută notița deasupra",
|
||||
"move-note-down": "Mută notița dedesubt",
|
||||
"move-note-up-in-hierarchy": "Mută notița mai sus în ierarhie",
|
||||
"move-note-down-in-hierarchy": "Mută notița mai jos în ierarhie",
|
||||
"edit-note-title": "Editează titlul notiței",
|
||||
"edit-branch-prefix": "Editează prefixul ramurii",
|
||||
"clone-notes-to": "Clonează notițele în",
|
||||
"move-notes-to": "Mută notițele în",
|
||||
"copy-notes-to-clipboard": "Copiază notițele în clipboard",
|
||||
"paste-notes-from-clipboard": "Lipește notițele din clipboard",
|
||||
"cut-notes-to-clipboard": "Decupează notițele în clipboard",
|
||||
"select-all-notes-in-parent": "Selectează toate notițele din părinte",
|
||||
"add-note-above-to-selection": "Adaugă notița de deasupra la selecție",
|
||||
"add-note-below-to-selection": "Adaugă notița de dedesubt la selecție",
|
||||
"duplicate-subtree": "Dublifică ierarhia",
|
||||
"open-new-tab": "Deschide în tab nou",
|
||||
"close-active-tab": "Închide tab-ul activ",
|
||||
"reopen-last-tab": "Redeschide ultimul tab",
|
||||
"activate-next-tab": "Activează tab-ul următorul",
|
||||
"activate-previous-tab": "Activează tab-ul anterior",
|
||||
"open-new-window": "Deschide în fereastră nouă",
|
||||
"toggle-system-tray-icon": "Afișează/ascunde iconița din bara de sistem",
|
||||
"toggle-zen-mode": "Activează/dezactivează modul zen",
|
||||
"switch-to-first-tab": "Mergi la primul tab",
|
||||
"switch-to-second-tab": "Mergi la al doilea tab",
|
||||
"switch-to-third-tab": "Mergi la al treilea tab",
|
||||
"switch-to-fourth-tab": "Mergi la al patrulea tab",
|
||||
"switch-to-fifth-tab": "Mergi la al cincelea tab",
|
||||
"switch-to-sixth-tab": "Mergi la al șaselea tab",
|
||||
"switch-to-seventh-tab": "Mergi la al șaptelea tab",
|
||||
"switch-to-eighth-tab": "Mergi la al optelea tab",
|
||||
"switch-to-ninth-tab": "Mergi la al nouălea tab",
|
||||
"switch-to-last-tab": "Mergi la ultimul tab",
|
||||
"show-note-source": "Afișează sursa notiței",
|
||||
"show-options": "Afișează opțiunile",
|
||||
"show-revisions": "Afișează reviziile",
|
||||
"show-recent-changes": "Afișează modificările recente",
|
||||
"show-sql-console": "Afișează consola SQL",
|
||||
"show-backend-log": "Afișează log-urile din backend",
|
||||
"show-help": "Afișează ghidul",
|
||||
"show-cheatsheet": "Afișează ghidul rapid",
|
||||
"add-link-to-text": "Inserează o legătură în text",
|
||||
"follow-link-under-cursor": "Urmează legătura de la poziția curentă",
|
||||
"insert-date-and-time-to-text": "Inserează data și timpul în text",
|
||||
"paste-markdown-into-text": "Lipește Markdown în text",
|
||||
"cut-into-note": "Decupează în subnotiță",
|
||||
"add-include-note-to-text": "Adaugă o includere de notiță în text",
|
||||
"edit-read-only-note": "Editează notiță ce este în modul citire",
|
||||
"add-new-label": "Adaugă o nouă etichetă",
|
||||
"add-new-relation": "Adaugă o nouă relație",
|
||||
"toggle-ribbon-tab-classic-editor": "Comută la tab-ul de panglică pentru formatare text",
|
||||
"toggle-ribbon-tab-basic-properties": "Comută la tab-ul de panglică pentru proprietăți de bază",
|
||||
"toggle-ribbon-tab-book-properties": "Comută la tab-ul de panglică pentru proprietăți colecție",
|
||||
"toggle-ribbon-tab-file-properties": "Comută la tab-ul de panglică pentru proprietăți fișier",
|
||||
"toggle-ribbon-tab-image-properties": "Comută la tab-ul de panglică pentru proprietăți imagini",
|
||||
"toggle-ribbon-tab-owned-attributes": "Comută la tab-ul de panglică pentru atribute proprii",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Comută la tab-ul de panglică pentru atribute moștenite",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Comută la tab-ul de panglică pentru atribute promovate",
|
||||
"toggle-ribbon-tab-note-map": "Comută la tab-ul de panglică pentru harta notiței",
|
||||
"toggle-ribbon-tab-note-info": "Comută la tab-ul de panglică pentru informații despre notiță",
|
||||
"toggle-ribbon-tab-note-paths": "Comută la tab-ul de panglică pentru căile notiței",
|
||||
"toggle-ribbon-tab-similar-notes": "Comută la tab-ul de panglică pentru notițe similare",
|
||||
"toggle-right-pane": "Comută panoul din dreapta",
|
||||
"print-active-note": "Imprimă notița activă",
|
||||
"export-active-note-as-pdf": "Exportă notița activă ca PDF",
|
||||
"open-note-externally": "Deschide notița într-o aplicație externă",
|
||||
"render-active-note": "Randează notița activă",
|
||||
"run-active-note": "Rulează notița activă",
|
||||
"toggle-note-hoisting": "Comută focalizarea notiței",
|
||||
"unhoist-note": "Defocalizează notița",
|
||||
"reload-frontend-app": "Reîmprospătează aplicația",
|
||||
"open-developer-tools": "Deschide unelete de dezvoltare",
|
||||
"find-in-text": "Caută în text",
|
||||
"toggle-left-pane": "Comută panoul din stânga",
|
||||
"toggle-full-screen": "Comută mod pe tot ecranul",
|
||||
"zoom-out": "Micșorare",
|
||||
"zoom-in": "Mărire",
|
||||
"reset-zoom-level": "Resetează nivelul de zoom",
|
||||
"copy-without-formatting": "Copiază fără formatare",
|
||||
"force-save-revision": "Forțează salvarea unei revizii",
|
||||
"command-palette": "Paleta de comenzi"
|
||||
},
|
||||
"weekdayNumber": "Săptămâna {weekNumber}",
|
||||
"quarterNumber": "Trimestrul {quarterNumber}",
|
||||
"share_theme": {
|
||||
"site-theme": "Tema site-ului",
|
||||
"search_placeholder": "Caută...",
|
||||
"image_alt": "Imaginea articolului",
|
||||
"last-updated": "Ultima actualizare: {{- date}}",
|
||||
"subpages": "Subpagini:",
|
||||
"on-this-page": "Pe această pagină",
|
||||
"expand": "Expandează"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Fragment de text",
|
||||
"description": "Descriere",
|
||||
"list-view": "Mod listă",
|
||||
"grid-view": "Mod grilă",
|
||||
"calendar": "Calendar",
|
||||
"table": "Tabel",
|
||||
"geo-map": "Hartă geografică",
|
||||
"start-date": "Dată de început",
|
||||
"end-date": "Dată de sfârșit",
|
||||
"start-time": "Timp de început",
|
||||
"end-time": "Timp de sfârșit",
|
||||
"geolocation": "Geolocație",
|
||||
"built-in-templates": "Șabloane predefinite",
|
||||
"board": "Tablă Kanban",
|
||||
"status": "Stare",
|
||||
"board_note_first": "Prima notiță",
|
||||
"board_note_second": "A doua notiță",
|
||||
"board_note_third": "A treia notiță",
|
||||
"board_status_todo": "De făcut",
|
||||
"board_status_progress": "În lucru",
|
||||
"board_status_done": "Finalizat",
|
||||
"presentation": "Prezentare",
|
||||
"presentation_slide": "Slide de prezentare",
|
||||
"presentation_slide_first": "Primul slide",
|
||||
"presentation_slide_second": "Al doilea slide",
|
||||
"background": "Fundal"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Baza de date nu este inițializată, urmați instrucțiunile de pe ecran.",
|
||||
"db_not_initialized_server": "Baza de date nu este inițializată, vizitați pagina de inițializare la http://[your-server-host]:{{port}}, ce conține instrucțiuni despre inițializarea aplicației."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Se focalizează o instanță a aplicației deja existentă."
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"activate-next-tab": "Activează tab-ul din dreapta",
|
||||
"activate-previous-tab": "Activează tab-ul din stânga",
|
||||
"add-include-note-to-text": "Deschide fereastra de includere notițe",
|
||||
"add-link-to-text": "Deschide fereastra de adaugă legături în text",
|
||||
"add-new-label": "Crează o nouă etichetă",
|
||||
"add-note-above-to-the-selection": "Adaugă notița deasupra selecției",
|
||||
"add-note-below-to-selection": "Adaugă notița deasupra selecției",
|
||||
"attributes-labels-and-relations": "Atribute (etichete și relații)",
|
||||
"close-active-tab": "Închide tab-ul activ",
|
||||
"collapse-subtree": "Minimizează ierarhia notiței curente",
|
||||
"collapse-tree": "Minimizează întreaga ierarhie de notițe",
|
||||
"copy-notes-to-clipboard": "Copiază notițele selectate în clipboard",
|
||||
"copy-without-formatting": "Copiază textul selectat fără formatare",
|
||||
"create-new-relation": "Crează o nouă relație",
|
||||
"create-note-into-inbox": "Crează o notiță și o deschide în inbox (dacă este definit) sau notița zilnică",
|
||||
"cut-notes-to-clipboard": "Decupează notițele selectate în clipboard",
|
||||
"creating-and-moving-notes": "Crearea și mutarea notițelor",
|
||||
"cut-into-note": "Decupează selecția din notița curentă și crează o subnotiță cu textul selectat",
|
||||
"delete-note": "Șterge notița",
|
||||
"dialogs": "Ferestre",
|
||||
"duplicate-subtree": "Dublifică subnotițele",
|
||||
"edit-branch-prefix": "Afișează ecranul „Editează prefixul ramurii”",
|
||||
"edit-note-title": "Sare de la arborele notițelor la detaliile notiței și editează titlul",
|
||||
"edit-readonly-note": "Editează o notiță care este în modul doar în citire",
|
||||
"eight-tab": "Activează cel de-al optelea tab din listă",
|
||||
"expand-subtree": "Expandează ierarhia notiței curente",
|
||||
"fifth-tab": "Activează cel de-al cincelea tab din listă",
|
||||
"first-tab": "Activează cel primul tab din listă",
|
||||
"follow-link-under-cursor": "Urmărește legătura de sub poziția cursorului",
|
||||
"force-save-revision": "Forțează crearea/salvarea unei noi revizii ale notiției curente",
|
||||
"fourth-tab": "Activează cel de-al patrulea tab din listă",
|
||||
"insert-date-and-time-to-text": "Inserează data curentă și timpul în text",
|
||||
"last-tab": "Activează ultimul tab din listă",
|
||||
"move-note-down": "Mută notița mai jos",
|
||||
"move-note-down-in-hierarchy": "Mută notița mai jos în ierarhie",
|
||||
"move-note-up": "Mută notița mai sus",
|
||||
"move-note-up-in-hierarchy": "Mută notița mai sus în ierarhie",
|
||||
"ninth-tab": "Activează cel de-al nouălea tab din listă",
|
||||
"note-clipboard": "Clipboard-ul notițelor",
|
||||
"note-navigation": "Navigarea printre notițe",
|
||||
"open-dev-tools": "Deschide uneltele de dezvoltator",
|
||||
"open-jump-to-note-dialog": "Deschide ecranul „Sari la notiță”",
|
||||
"open-new-tab": "Deschide un tab nou",
|
||||
"open-new-window": "Deschide o nouă fereastră goală",
|
||||
"open-note-externally": "Deschide notița ca un fișier utilizând aplicația implicită",
|
||||
"other": "Altele",
|
||||
"paste-markdown-into-text": "Lipește text Markdown din clipboard în notița de tip text",
|
||||
"paste-notes-from-clipboard": "Lipește notițele din clipboard în notița activă",
|
||||
"print-active-note": "Imprimă notița activă",
|
||||
"reload-frontend-app": "Reîncarcă interfața grafică",
|
||||
"render-active-note": "Reîmprospătează notița activă",
|
||||
"reopen-last-tab": "Deschide din nou ultimul tab închis",
|
||||
"reset-zoom-level": "Resetează nivelul de magnificare",
|
||||
"ribbon-tabs": "Tab-urile din panglică",
|
||||
"run-active-note": "Rulează notița curentă de tip JavaScript (frontend sau backend)",
|
||||
"search-in-subtree": "Caută notițe în ierarhia notiței active",
|
||||
"second-tab": "Activează cel de-al doilea tab din listă",
|
||||
"select-all-notes-in-parent": "Selectează toate notițele din nivelul notiței curente",
|
||||
"seventh-tab": "Activează cel de-al șaptelea tab din listă",
|
||||
"show-backend-log": "Afișează fereastra „Log-uri din backend”",
|
||||
"show-help": "Afișează informații utile",
|
||||
"show-note-source": "Afișează fereastra „Sursa notiței”",
|
||||
"show-options": "Afișează fereastra de opțiuni",
|
||||
"show-recent-changes": "Afișează fereastra „Schimbări recente”",
|
||||
"show-revisions": "Afișează fereastra „Revizii ale notiței”",
|
||||
"show-sql-console": "Afișează ecranul „Consolă SQL”",
|
||||
"sixth-tab": "Activează cel de-al șaselea tab din listă",
|
||||
"sort-child-notes": "Ordonează subnotițele",
|
||||
"tabs-and-windows": "Tab-uri și ferestre",
|
||||
"text-note-operations": "Operații asupra notițelor text",
|
||||
"third-tab": "Activează cel de-al treilea tab din listă",
|
||||
"toggle-basic-properties": "Comută tab-ul „Proprietăți de bază”",
|
||||
"toggle-book-properties": "Comută tab-ul „Proprietăți ale cărții”",
|
||||
"toggle-file-properties": "Comută tab-ul „Proprietăți fișier”",
|
||||
"toggle-full-screen": "Comută modul ecran complet",
|
||||
"toggle-image-properties": "Comută tab-ul „Proprietăți imagini”",
|
||||
"toggle-inherited-attributes": "Comută tab-ul „Atribute moștenite”",
|
||||
"toggle-left-note-tree-panel": "Comută panoul din stânga (arborele notițelor)",
|
||||
"toggle-link-map": "Comută harta legăturilor",
|
||||
"toggle-note-hoisting": "Comută focalizarea pe notița curentă",
|
||||
"toggle-note-info": "Comută tab-ul „Informații despre notiță”",
|
||||
"toggle-note-paths": "Comută tab-ul „Căile notiței”",
|
||||
"toggle-owned-attributes": "Comută tab-ul „Atribute proprii”",
|
||||
"toggle-promoted-attributes": "Comută tab-ul „Atribute promovate”",
|
||||
"toggle-right-pane": "Comută afișarea panoului din dreapta, ce include tabela de conținut și evidențieri",
|
||||
"toggle-similar-notes": "Comută tab-ul „Notițe similare”",
|
||||
"toggle-tray": "Afișează/ascunde aplicația din tray-ul de sistem",
|
||||
"unhoist": "Defocalizează complet",
|
||||
"zoom-in": "Mărește zoom-ul",
|
||||
"zoom-out": "Micșorează zoom-ul",
|
||||
"toggle-classic-editor-toolbar": "Comută tab-ul „Formatare” pentru editorul cu bară fixă",
|
||||
"export-as-pdf": "Exportă notița curentă ca PDF",
|
||||
"show-cheatsheet": "Afișează o fereastră cu scurtături de la tastatură comune",
|
||||
"toggle-zen-mode": "Activează/dezactivează modul zen (o interfață minimală, fără distrageri)",
|
||||
"back-in-note-history": "Mergi la notița anterioară din istoric",
|
||||
"forward-in-note-history": "Mergi la următoarea notiță din istoric",
|
||||
"scroll-to-active-note": "Derulează la notița activă în lista de notițe",
|
||||
"quick-search": "Mergi la bara de căutare rapidă",
|
||||
"create-note-after": "Crează o notiță după cea activă",
|
||||
"create-note-into": "Crează notiță ca subnotiță a notiței active",
|
||||
"clone-notes-to": "Clonează notițele selectate",
|
||||
"move-notes-to": "Mută notițele selectate",
|
||||
"find-in-text": "Afișează/ascunde panoul de căutare",
|
||||
"open-command-palette": "Deschide paleta de comenzi"
|
||||
},
|
||||
"login": {
|
||||
"button": "Autentifică",
|
||||
"heading": "Autentificare în Trilium",
|
||||
"incorrect-password": "Parola nu este corectă. Încercați din nou.",
|
||||
"password": "Parolă",
|
||||
"remember-me": "Ține-mă minte",
|
||||
"title": "Autentificare",
|
||||
"incorrect-totp": "TOTP-ul este incorect. Încercați din nou.",
|
||||
"sign_in_with_sso": "Autentificare cu {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Setare parolă",
|
||||
"heading": "Setare parolă",
|
||||
"button": "Setează parola",
|
||||
"description": "Înainte de a putea utiliza Trilium din navigator, trebuie mai întâi setată o parolă. Ulterior această parolă va fi folosită la autentificare.",
|
||||
"password": "Parolă",
|
||||
"password-confirmation": "Confirmarea parolei"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Instalarea Trilium Notes",
|
||||
"init-in-progress": "Se inițializează documentul",
|
||||
"new-document": "Sunt un utilizator nou și doresc să creez un document Trilium pentru notițele mele",
|
||||
"next": "Mai departe",
|
||||
"redirecting": "În scurt timp veți fi redirecționat la aplicație.",
|
||||
"sync-from-desktop": "Am deja o instanță de desktop și aș dori o sincronizare cu aceasta",
|
||||
"sync-from-server": "Am deja o instanță de server și doresc o sincronizare cu aceasta",
|
||||
"title": "Inițializare"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"description": "Acești pași trebuie urmați de pe aplicația de desktop:",
|
||||
"heading": "Sincronizare cu aplicația desktop",
|
||||
"step1": "Deschideți aplicația Trilium Notes pentru desktop.",
|
||||
"step2": "Din meniul Trilium, dați clic pe Opțiuni.",
|
||||
"step3": "Clic pe categoria „Sincronizare”.",
|
||||
"step4": "Schimbați adresa server-ului către: {{- host}} și apăsați „Salvează”.",
|
||||
"step5": "Clic pe butonul „Testează sincronizarea” pentru a verifica dacă conexiunea a fost făcută cu succes.",
|
||||
"step6": "După ce ați completat pașii, dați click {{- link}}.",
|
||||
"step6-here": "aici"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"back": "Înapoi",
|
||||
"finish-setup": "Finalizează inițializarea",
|
||||
"heading": "Sincronizare cu server-ul",
|
||||
"instructions": "Introduceți adresa server-ului Trilium și credențialele în secțiunea de jos. Astfel se va descărca întregul document Trilium de pe server și se va configura sincronizarea cu acesta. În funcție de dimensiunea documentului și viteza rețelei, acest proces poate dura.",
|
||||
"note": "De remarcat:",
|
||||
"password": "Parolă",
|
||||
"proxy-instruction": "Dacă lăsați câmpul de proxy nesetat, proxy-ul de sistem va fi folosit (valabil doar pentru aplicația de desktop)",
|
||||
"proxy-server": "Server-ul proxy (opțional)",
|
||||
"proxy-server-placeholder": "https://<sistem>:<port>",
|
||||
"server-host": "Adresa server-ului Trilium",
|
||||
"server-host-placeholder": "https://<sistem>:<port>",
|
||||
"password-placeholder": "Parolă"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Sincronizare în curs",
|
||||
"outstanding-items": "Elemente de sincronizat:",
|
||||
"outstanding-items-default": "-",
|
||||
"successful": "Sincronizarea a fost configurată cu succes. Poate dura ceva timp pentru a finaliza sincronizarea inițială. După efectuarea ei se va redirecționa către pagina de autentificare."
|
||||
},
|
||||
"share_404": {
|
||||
"heading": "Pagină negăsită",
|
||||
"title": "Pagină negăsită"
|
||||
},
|
||||
"share_page": {
|
||||
"child-notes": "Subnotițe:",
|
||||
"clipped-from": "Această notiță a fost decupată inițial de pe {{- url}}",
|
||||
"no-content": "Această notiță nu are conținut.",
|
||||
"parent": "părinte:"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Luni",
|
||||
"tuesday": "Marți",
|
||||
"wednesday": "Miercuri",
|
||||
"thursday": "Joi",
|
||||
"friday": "Vineri",
|
||||
"saturday": "Sâmbătă",
|
||||
"sunday": "Duminică"
|
||||
},
|
||||
"months": {
|
||||
"january": "Ianuarie",
|
||||
"february": "Februarie",
|
||||
"march": "Martie",
|
||||
"april": "Aprilie",
|
||||
"may": "Mai",
|
||||
"june": "Iunie",
|
||||
"july": "Iulie",
|
||||
"august": "August",
|
||||
"september": "Septembrie",
|
||||
"october": "Octombrie",
|
||||
"november": "Noiembrie",
|
||||
"december": "Decembrie"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Căutare:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Calea către serverul de sincronizare nu este configurată. Configurați sincronizarea înainte.",
|
||||
"successful": "Comunicarea cu serverul de sincronizare a avut loc cu succes, s-a început sincronizarea."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"advanced-title": "Setări avansate",
|
||||
"appearance-title": "Aspect",
|
||||
"available-launchers-title": "Lansatoare disponibile",
|
||||
"backup-title": "Copii de siguranță",
|
||||
"base-abstract-launcher-title": "Lansator abstract de bază",
|
||||
"bookmarks-title": "Semne de carte",
|
||||
"built-in-widget-title": "Widget predefinit",
|
||||
"bulk-action-title": "Acțiuni în masă",
|
||||
"calendar-title": "Calendar",
|
||||
"code-notes-title": "Notițe de cod",
|
||||
"command-launcher-title": "Lansator de comenzi",
|
||||
"custom-widget-title": "Widget personalizat",
|
||||
"etapi-title": "ETAPI",
|
||||
"go-to-previous-note-title": "Mergi la notița anterioară",
|
||||
"images-title": "Imagini",
|
||||
"launch-bar-title": "Bară de lansare",
|
||||
"new-note-title": "Notiță nouă",
|
||||
"note-launcher-title": "Lansator de notițe",
|
||||
"note-map-title": "Harta notițelor",
|
||||
"open-today-journal-note-title": "Deschide notița de astăzi",
|
||||
"options-title": "Opțiuni",
|
||||
"other": "Diverse",
|
||||
"password-title": "Parolă",
|
||||
"protected-session-title": "Sesiune protejată",
|
||||
"recent-changes-title": "Schimbări recente",
|
||||
"script-launcher-title": "Lansator de script-uri",
|
||||
"search-history-title": "Istoric de căutare",
|
||||
"settings-title": "Setări",
|
||||
"shared-notes-title": "Notițe partajate",
|
||||
"quick-search-title": "Căutare rapidă",
|
||||
"root-title": "Notițe ascunse",
|
||||
"search-notes-title": "Căutare notițe",
|
||||
"shortcuts-title": "Scurtături",
|
||||
"spellcheck-title": "Corectare gramaticală",
|
||||
"sync-status-title": "Starea sincronizării",
|
||||
"sync-title": "Sincronizare",
|
||||
"text-notes": "Notițe text",
|
||||
"user-hidden-title": "Definite de utilizator",
|
||||
"backend-log-title": "Log backend",
|
||||
"spacer-title": "Separator",
|
||||
"sql-console-history-title": "Istoricul consolei SQL",
|
||||
"go-to-next-note-title": "Mergi la notița următoare",
|
||||
"launch-bar-templates-title": "Șabloane bară de lansare",
|
||||
"visible-launchers-title": "Lansatoare vizibile",
|
||||
"user-guide": "Ghidul de utilizare",
|
||||
"jump-to-note-title": "Sari la...",
|
||||
"multi-factor-authentication-title": "Autentificare multi-factor",
|
||||
"localization": "Limbă și regiune",
|
||||
"inbox-title": "Inbox",
|
||||
"command-palette": "Deschide paleta de comenzi",
|
||||
"zen-mode": "Mod zen",
|
||||
"tab-switcher-title": "Schimbător de taburi"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Notiță nouă",
|
||||
"duplicate-note-suffix": "(dupl.)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Fișierul de loguri de backend „{{ fileName }}” nu există (încă).",
|
||||
"reading-log-failed": "Nu s-a putut citi fișierul de loguri de backend „{{fileName}}”."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Acest tip de notiță nu poate fi afișat."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Document PDF (*.pdf)",
|
||||
"unable-to-export-message": "Notița curentă nu a putut fi exportată ca PDF.",
|
||||
"unable-to-export-title": "Nu s-a putut exporta ca PDF",
|
||||
"unable-to-save-message": "Nu s-a putut scrie fișierul selectat. Încercați din nou sau selectați altă destinație.",
|
||||
"unable-to-print": "Nu s-a putut imprima notița"
|
||||
},
|
||||
"tray": {
|
||||
"bookmarks": "Semne de carte",
|
||||
"close": "Închide Trilium",
|
||||
"new-note": "Notiță nouă",
|
||||
"recents": "Notițe recente",
|
||||
"today": "Mergi la notița de astăzi",
|
||||
"tooltip": "Trilium Notes",
|
||||
"show-windows": "Afișează ferestrele",
|
||||
"open_new_window": "Deschide fereastră nouă"
|
||||
},
|
||||
"migration": {
|
||||
"error_message": "Eroare la migrarea către versiunea {{version}}: {{stack}}",
|
||||
"old_version": "Nu se poate migra la ultima versiune direct de la versiunea dvs. Actualizați mai întâi la versiunea v0.60.4 și ulterior la această versiune.",
|
||||
"wrong_db_version": "Versiunea actuală a bazei de date ({{version}}) este mai nouă decât versiunea de bază de date suportată de aplicație ({{targetVersion}}), ceea ce înseamnă că a fost creată de către o versiune mai nouă de Trilium. Actualizați aplicația la ultima versiune pentru a putea continua."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Eroare"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"quick-search": "Căutare rapidă",
|
||||
"back-in-note-history": "Înapoi în istoricul notițelor",
|
||||
"forward-in-note-history": "Înainte în istoricul notițelor",
|
||||
"jump-to-note": "Mergi la...",
|
||||
"scroll-to-active-note": "Derulează la notița activă",
|
||||
"search-in-subtree": "Caută în subnotițe",
|
||||
"expand-subtree": "Expandează subnotițele",
|
||||
"collapse-tree": "Minimizează arborele de notițe",
|
||||
"collapse-subtree": "Ascunde subnotițele",
|
||||
"sort-child-notes": "Ordonează subnotițele",
|
||||
"create-note-after": "Crează notiță după",
|
||||
"create-note-into": "Crează subnotiță în",
|
||||
"create-note-into-inbox": "Crează notiță în inbox",
|
||||
"delete-notes": "Șterge notițe",
|
||||
"move-note-up": "Mută notița deasupra",
|
||||
"move-note-down": "Mută notița dedesubt",
|
||||
"move-note-up-in-hierarchy": "Mută notița mai sus în ierarhie",
|
||||
"move-note-down-in-hierarchy": "Mută notița mai jos în ierarhie",
|
||||
"edit-note-title": "Editează titlul notiței",
|
||||
"edit-branch-prefix": "Editează prefixul ramurii",
|
||||
"clone-notes-to": "Clonează notițele în",
|
||||
"move-notes-to": "Mută notițele în",
|
||||
"copy-notes-to-clipboard": "Copiază notițele în clipboard",
|
||||
"paste-notes-from-clipboard": "Lipește notițele din clipboard",
|
||||
"cut-notes-to-clipboard": "Decupează notițele în clipboard",
|
||||
"select-all-notes-in-parent": "Selectează toate notițele din părinte",
|
||||
"add-note-above-to-selection": "Adaugă notița de deasupra la selecție",
|
||||
"add-note-below-to-selection": "Adaugă notița de dedesubt la selecție",
|
||||
"duplicate-subtree": "Dublifică ierarhia",
|
||||
"open-new-tab": "Deschide în tab nou",
|
||||
"close-active-tab": "Închide tab-ul activ",
|
||||
"reopen-last-tab": "Redeschide ultimul tab",
|
||||
"activate-next-tab": "Activează tab-ul următorul",
|
||||
"activate-previous-tab": "Activează tab-ul anterior",
|
||||
"open-new-window": "Deschide în fereastră nouă",
|
||||
"toggle-system-tray-icon": "Afișează/ascunde iconița din bara de sistem",
|
||||
"toggle-zen-mode": "Activează/dezactivează modul zen",
|
||||
"switch-to-first-tab": "Mergi la primul tab",
|
||||
"switch-to-second-tab": "Mergi la al doilea tab",
|
||||
"switch-to-third-tab": "Mergi la al treilea tab",
|
||||
"switch-to-fourth-tab": "Mergi la al patrulea tab",
|
||||
"switch-to-fifth-tab": "Mergi la al cincelea tab",
|
||||
"switch-to-sixth-tab": "Mergi la al șaselea tab",
|
||||
"switch-to-seventh-tab": "Mergi la al șaptelea tab",
|
||||
"switch-to-eighth-tab": "Mergi la al optelea tab",
|
||||
"switch-to-ninth-tab": "Mergi la al nouălea tab",
|
||||
"switch-to-last-tab": "Mergi la ultimul tab",
|
||||
"show-note-source": "Afișează sursa notiței",
|
||||
"show-options": "Afișează opțiunile",
|
||||
"show-revisions": "Afișează reviziile",
|
||||
"show-recent-changes": "Afișează modificările recente",
|
||||
"show-sql-console": "Afișează consola SQL",
|
||||
"show-backend-log": "Afișează log-urile din backend",
|
||||
"show-help": "Afișează ghidul",
|
||||
"show-cheatsheet": "Afișează ghidul rapid",
|
||||
"add-link-to-text": "Inserează o legătură în text",
|
||||
"follow-link-under-cursor": "Urmează legătura de la poziția curentă",
|
||||
"insert-date-and-time-to-text": "Inserează data și timpul în text",
|
||||
"paste-markdown-into-text": "Lipește Markdown în text",
|
||||
"cut-into-note": "Decupează în subnotiță",
|
||||
"add-include-note-to-text": "Adaugă o includere de notiță în text",
|
||||
"edit-read-only-note": "Editează notiță ce este în modul citire",
|
||||
"add-new-label": "Adaugă o nouă etichetă",
|
||||
"add-new-relation": "Adaugă o nouă relație",
|
||||
"toggle-ribbon-tab-classic-editor": "Comută la tab-ul de panglică pentru formatare text",
|
||||
"toggle-ribbon-tab-basic-properties": "Comută la tab-ul de panglică pentru proprietăți de bază",
|
||||
"toggle-ribbon-tab-book-properties": "Comută la tab-ul de panglică pentru proprietăți colecție",
|
||||
"toggle-ribbon-tab-file-properties": "Comută la tab-ul de panglică pentru proprietăți fișier",
|
||||
"toggle-ribbon-tab-image-properties": "Comută la tab-ul de panglică pentru proprietăți imagini",
|
||||
"toggle-ribbon-tab-owned-attributes": "Comută la tab-ul de panglică pentru atribute proprii",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Comută la tab-ul de panglică pentru atribute moștenite",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Comută la tab-ul de panglică pentru atribute promovate",
|
||||
"toggle-ribbon-tab-note-map": "Comută la tab-ul de panglică pentru harta notiței",
|
||||
"toggle-ribbon-tab-note-info": "Comută la tab-ul de panglică pentru informații despre notiță",
|
||||
"toggle-ribbon-tab-note-paths": "Comută la tab-ul de panglică pentru căile notiței",
|
||||
"toggle-ribbon-tab-similar-notes": "Comută la tab-ul de panglică pentru notițe similare",
|
||||
"toggle-right-pane": "Comută panoul din dreapta",
|
||||
"print-active-note": "Imprimă notița activă",
|
||||
"export-active-note-as-pdf": "Exportă notița activă ca PDF",
|
||||
"open-note-externally": "Deschide notița într-o aplicație externă",
|
||||
"render-active-note": "Randează notița activă",
|
||||
"run-active-note": "Rulează notița activă",
|
||||
"toggle-note-hoisting": "Comută focalizarea notiței",
|
||||
"unhoist-note": "Defocalizează notița",
|
||||
"reload-frontend-app": "Reîmprospătează aplicația",
|
||||
"open-developer-tools": "Deschide unelete de dezvoltare",
|
||||
"find-in-text": "Caută în text",
|
||||
"toggle-left-pane": "Comută panoul din stânga",
|
||||
"toggle-full-screen": "Comută mod pe tot ecranul",
|
||||
"zoom-out": "Micșorare",
|
||||
"zoom-in": "Mărire",
|
||||
"reset-zoom-level": "Resetează nivelul de zoom",
|
||||
"copy-without-formatting": "Copiază fără formatare",
|
||||
"force-save-revision": "Forțează salvarea unei revizii",
|
||||
"command-palette": "Paleta de comenzi"
|
||||
},
|
||||
"weekdayNumber": "Săptămâna {weekNumber}",
|
||||
"quarterNumber": "Trimestrul {quarterNumber}",
|
||||
"share_theme": {
|
||||
"site-theme": "Tema site-ului",
|
||||
"search_placeholder": "Caută...",
|
||||
"image_alt": "Imaginea articolului",
|
||||
"last-updated": "Ultima actualizare: {{- date}}",
|
||||
"subpages": "Subpagini:",
|
||||
"on-this-page": "Pe această pagină",
|
||||
"expand": "Expandează"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Fragment de text",
|
||||
"description": "Descriere",
|
||||
"list-view": "Mod listă",
|
||||
"grid-view": "Mod grilă",
|
||||
"calendar": "Calendar",
|
||||
"table": "Tabel",
|
||||
"geo-map": "Hartă geografică",
|
||||
"start-date": "Dată de început",
|
||||
"end-date": "Dată de sfârșit",
|
||||
"start-time": "Timp de început",
|
||||
"end-time": "Timp de sfârșit",
|
||||
"geolocation": "Geolocație",
|
||||
"built-in-templates": "Șabloane predefinite",
|
||||
"board": "Tablă Kanban",
|
||||
"status": "Stare",
|
||||
"board_note_first": "Prima notiță",
|
||||
"board_note_second": "A doua notiță",
|
||||
"board_note_third": "A treia notiță",
|
||||
"board_status_todo": "De făcut",
|
||||
"board_status_progress": "În lucru",
|
||||
"board_status_done": "Finalizat",
|
||||
"presentation": "Prezentare",
|
||||
"presentation_slide": "Slide de prezentare",
|
||||
"presentation_slide_first": "Primul slide",
|
||||
"presentation_slide_second": "Al doilea slide",
|
||||
"background": "Fundal"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "Baza de date nu este inițializată, urmați instrucțiunile de pe ecran.",
|
||||
"db_not_initialized_server": "Baza de date nu este inițializată, vizitați pagina de inițializare la http://[your-server-host]:{{port}}, ce conține instrucțiuni despre inițializarea aplicației."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Se focalizează o instanță a aplicației deja existentă."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,442 +1,440 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"open-command-palette": "Открыть палитру команд",
|
||||
"quick-search": "Активировать панель быстрого поиска",
|
||||
"move-note-up": "Переместить заметку вверх",
|
||||
"move-note-down": "Переместить заметку вниз",
|
||||
"move-note-up-in-hierarchy": "Переместить заметку вверх в иерархии",
|
||||
"move-note-down-in-hierarchy": "Переместить заметку вниз в иерархии",
|
||||
"delete-note": "Удалить заметку",
|
||||
"back-in-note-history": "Перейти к предыдущей заметке в истории",
|
||||
"forward-in-note-history": "Перейти к следующей заметке в истории",
|
||||
"scroll-to-active-note": "Прокрутить дерево заметок до активной заметки",
|
||||
"search-in-subtree": "Искать заметки в поддереве активной заметки",
|
||||
"expand-subtree": "Развернуть поддерево текущей заметки",
|
||||
"collapse-tree": "Свернуть дерево заметок полностью",
|
||||
"collapse-subtree": "Свернуть поддерево текущей заметки",
|
||||
"sort-child-notes": "Сортировка дочерних заметок",
|
||||
"creating-and-moving-notes": "Создание и перемещение заметок",
|
||||
"create-note-after": "Создать заметку после активной заметки",
|
||||
"create-note-into": "Создать заметку как дочернюю для активной заметки",
|
||||
"edit-note-title": "Перейти от дерева к деталям заметки и отредактировать заголовок",
|
||||
"clone-notes-to": "Клонировать выбранные заметки",
|
||||
"move-notes-to": "Переместить выбранные заметки",
|
||||
"note-clipboard": "Буфер обмена заметок",
|
||||
"copy-notes-to-clipboard": "Скопировать выбранные заметки в буфер обмена",
|
||||
"paste-notes-from-clipboard": "Вставить заметки из буфера обмена в активную заметку",
|
||||
"cut-notes-to-clipboard": "Вырезать выбранные заметки в буфер обмена",
|
||||
"duplicate-subtree": "Дублировать поддерево",
|
||||
"tabs-and-windows": "Вкладки и окна",
|
||||
"open-new-tab": "Открыть новую вкладку",
|
||||
"close-active-tab": "Закрыть активную вкладку",
|
||||
"reopen-last-tab": "Повторно открыть последнюю закрытую вкладку",
|
||||
"open-jump-to-note-dialog": "Открыть диалоговое окно «Перейти к заметке»",
|
||||
"create-note-into-inbox": "Создать заметку в папке «Входящие» (если определено) или заметку дня",
|
||||
"edit-branch-prefix": "Показать диалоговое окно «Изменить префикс ветки»",
|
||||
"select-all-notes-in-parent": "Выбрать все заметки на текущем уровне заметок",
|
||||
"add-note-above-to-the-selection": "Добавить заметку выше к выделению",
|
||||
"add-note-below-to-selection": "Добавить заметку ниже к выделению",
|
||||
"activate-next-tab": "Активировать вкладку справа",
|
||||
"activate-previous-tab": "Активировать вкладку слева",
|
||||
"open-new-window": "Открыть новое пустое окно",
|
||||
"toggle-tray": "Показать/скрыть приложение из системного трея",
|
||||
"first-tab": "Активировать первую вкладку в списке",
|
||||
"second-tab": "Активировать вторую вкладку в списке",
|
||||
"third-tab": "Активировать третью вкладку в списке",
|
||||
"fourth-tab": "Активировать четвертую вкладку в списке",
|
||||
"fifth-tab": "Активировать пятую вкладку в списке",
|
||||
"sixth-tab": "Активировать шестую вкладку в списке",
|
||||
"seventh-tab": "Активировать седьмую вкладку в списке",
|
||||
"eight-tab": "Активировать восьмую вкладку в списке",
|
||||
"ninth-tab": "Активировать девятую вкладку в списке",
|
||||
"last-tab": "Активировать последнюю вкладку в списке",
|
||||
"dialogs": "Диалоговые окна",
|
||||
"show-note-source": "Показать диалоговое окно \"Исходный код заметки\"",
|
||||
"show-options": "Открыть страницу «Параметры»",
|
||||
"show-revisions": "Показать диалоговое окно «Версии заметки»",
|
||||
"show-recent-changes": "Показать диалоговое окно «Последние изменения»",
|
||||
"show-sql-console": "Открыть страницу «Консоль SQL»",
|
||||
"show-backend-log": "Открыть страницу «Лог бэкенда»",
|
||||
"show-help": "Откройте встроенное руководство пользователя",
|
||||
"show-cheatsheet": "Показать модальное окно с общими операциями на клавиатуре",
|
||||
"text-note-operations": "Операции с текстовыми заметками",
|
||||
"add-link-to-text": "Открыть диалоговое окно для добавления ссылки в текст",
|
||||
"follow-link-under-cursor": "Перейти по ссылке, на которой находится курсор",
|
||||
"insert-date-and-time-to-text": "Вставить текущую дату и время в текст",
|
||||
"paste-markdown-into-text": "Вставляет Markdown из буфера обмена в текстовую заметку",
|
||||
"cut-into-note": "Вырезает выделенный фрагмент из текущей заметки и создает подзаметку с выбранным текстом",
|
||||
"add-include-note-to-text": "Открывает диалоговое окно для добавления заметки",
|
||||
"edit-readonly-note": "Редактировать заметку, доступную только для чтения",
|
||||
"attributes-labels-and-relations": "Атрибуты (метки и отношения)",
|
||||
"add-new-label": "Создать новую заметку",
|
||||
"create-new-relation": "Создать новое отношение",
|
||||
"ribbon-tabs": "Вкладки ленты",
|
||||
"toggle-basic-properties": "Перейти к общим параметрам",
|
||||
"toggle-file-properties": "Перейти к свойствам файла",
|
||||
"toggle-image-properties": "Перейти к свойствам изображения",
|
||||
"toggle-owned-attributes": "Перейти к атрибутам",
|
||||
"toggle-inherited-attributes": "Перейти к унаследованным атрибутам",
|
||||
"toggle-promoted-attributes": "Перейти к продвигаемым атрибутам",
|
||||
"toggle-link-map": "Перейти к картуессылок",
|
||||
"toggle-note-info": "Перейти к информации о заметке",
|
||||
"toggle-note-paths": "Перейти к путям заметки",
|
||||
"toggle-similar-notes": "Перейти к похожим заметкам",
|
||||
"other": "Прочее",
|
||||
"toggle-right-pane": "Включить/выключить отображение правой панели, которая включает оглавление и акценты",
|
||||
"print-active-note": "Распечатать активную заметку",
|
||||
"open-note-externally": "Открыть заметку как файл с помощью приложения по умолчанию",
|
||||
"render-active-note": "Отрендерить (повторно отрендерить) активную заметку",
|
||||
"run-active-note": "Запуск JavaScript (фронтенд/бэкенд) из заметки с кодом",
|
||||
"reload-frontend-app": "Перезагрузить фронтенд",
|
||||
"open-dev-tools": "Открыть инструменты разработчика",
|
||||
"find-in-text": "Отобразить панель поиска",
|
||||
"toggle-left-note-tree-panel": "Отобразить левую панель (дерево)",
|
||||
"toggle-full-screen": "Переключить на полный экран",
|
||||
"zoom-out": "Уменьшить масштаб",
|
||||
"zoom-in": "Увеличить масштаб",
|
||||
"note-navigation": "Навигация по заметке",
|
||||
"reset-zoom-level": "Сбросить уровень масштабирования",
|
||||
"copy-without-formatting": "Скопировать выделенный текст без форматирования",
|
||||
"toggle-book-properties": "Перейти к свойствам коллекции",
|
||||
"toggle-classic-editor-toolbar": "Перейти на вкладку «Форматирование» для редактора с фиксированной панелью инструментов",
|
||||
"export-as-pdf": "Экспортировать текущую заметку в формате PDF",
|
||||
"toggle-zen-mode": "Включает/отключает режим дзен (минимальный пользовательский интерфейс для фокусирования)",
|
||||
"toggle-note-hoisting": "Переключить фокус активной заметки",
|
||||
"unhoist": "Убрать фокус с любой заметки",
|
||||
"force-save-revision": "Принудительное создать/сохранить снимок версии активной заметки"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"localization": "Язык и регион",
|
||||
"settings-title": "Настройки",
|
||||
"spacer-title": "Разделитель",
|
||||
"calendar-title": "Календарь",
|
||||
"bookmarks-title": "Закладки",
|
||||
"options-title": "Опции",
|
||||
"appearance-title": "Оформление",
|
||||
"shortcuts-title": "Сочетания клавиш",
|
||||
"images-title": "Изображения",
|
||||
"spellcheck-title": "Проверка орфографии",
|
||||
"password-title": "Пароль",
|
||||
"etapi-title": "ETAPI",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"backup-title": "Резервное копирование",
|
||||
"sync-title": "Синхронизация",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "Прочее",
|
||||
"advanced-title": "Расширенные настройки",
|
||||
"inbox-title": "Входящие",
|
||||
"root-title": "Скрытые заметки",
|
||||
"search-history-title": "История поиска",
|
||||
"note-map-title": "Карта заметок",
|
||||
"shared-notes-title": "Общедоступные заметки",
|
||||
"bulk-action-title": "Множественные действия",
|
||||
"backend-log-title": "Лог бэкенда",
|
||||
"command-launcher-title": "Лаунчер команд",
|
||||
"note-launcher-title": "Лаунчер заметки",
|
||||
"script-launcher-title": "Лаунчер скрипта",
|
||||
"built-in-widget-title": "Встроенный виджет",
|
||||
"custom-widget-title": "Пользовательский виджет",
|
||||
"launch-bar-title": "Панель запуска",
|
||||
"available-launchers-title": "Доступные лаунчеры",
|
||||
"new-note-title": "Новая заметка",
|
||||
"search-notes-title": "Поиск заметок",
|
||||
"jump-to-note-title": "Перейти к...",
|
||||
"recent-changes-title": "Последние изменения",
|
||||
"quick-search-title": "Быстрый поиск",
|
||||
"protected-session-title": "Защищенная сессия",
|
||||
"sync-status-title": "Статус синхронизации",
|
||||
"text-notes": "Текстовые заметки",
|
||||
"code-notes-title": "Заметки с кодом",
|
||||
"visible-launchers-title": "Видимые лаунчеры",
|
||||
"user-guide": "Руководство пользователя",
|
||||
"sql-console-history-title": "История консоли SQL",
|
||||
"user-hidden-title": "Скрытый пользователь",
|
||||
"launch-bar-templates-title": "Шаблоны панели запуска",
|
||||
"base-abstract-launcher-title": "Базовый абстрактный лаунчер",
|
||||
"go-to-previous-note-title": "К предыдущей заметке",
|
||||
"go-to-next-note-title": "К следующей заметке",
|
||||
"open-today-journal-note-title": "Открыть сегодняшнюю заметку в журнале",
|
||||
"llm-chat-title": "ИИ чат с заметками",
|
||||
"zen-mode": "Режим \"Дзен\"",
|
||||
"command-palette": "Открыть панель команд"
|
||||
},
|
||||
"tray": {
|
||||
"bookmarks": "Закладки",
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Выйти из Trilium",
|
||||
"recents": "Последние заметки",
|
||||
"new-note": "Новая заметка",
|
||||
"show-windows": "Показать окна",
|
||||
"open_new_window": "Открыть новое окно",
|
||||
"today": "Открыть заметку дня"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"scroll-to-active-note": "Прокрутить к активной заметке",
|
||||
"quick-search": "Быстрый поиск",
|
||||
"back-in-note-history": "Назад в истории заметок",
|
||||
"forward-in-note-history": "Вперед в истории заметок",
|
||||
"jump-to-note": "Перейти к...",
|
||||
"command-palette": "Палитра команд",
|
||||
"search-in-subtree": "Поиск в поддереве",
|
||||
"expand-subtree": "Развернуть поддерево",
|
||||
"collapse-tree": "Свернуть дерево",
|
||||
"collapse-subtree": "Свернуть поддерево",
|
||||
"sort-child-notes": "Сортировка дочерних заметок",
|
||||
"create-note-after": "Создать заметку после",
|
||||
"create-note-into": "Создать заметку в",
|
||||
"create-note-into-inbox": "Создать заметку в «Входящих»",
|
||||
"delete-notes": "Удалить заметки",
|
||||
"move-note-up": "Переместить заметку вверх",
|
||||
"move-note-down": "Переместить заметку вниз",
|
||||
"move-note-up-in-hierarchy": "Переместить заметку вверх в иерархии",
|
||||
"move-note-down-in-hierarchy": "Переместить заметку вниз в иерархии",
|
||||
"edit-note-title": "Изменить заголовок заметки",
|
||||
"edit-branch-prefix": "Изменить префикс ветки",
|
||||
"clone-notes-to": "Клонировать заметки в",
|
||||
"move-notes-to": "Переместить заметки в",
|
||||
"copy-notes-to-clipboard": "Копировать заметки в буфер обмена",
|
||||
"paste-notes-from-clipboard": "Вставить заметки из буфера обмена",
|
||||
"cut-notes-to-clipboard": "Вырезать заметки в буфер обмена",
|
||||
"select-all-notes-in-parent": "Выбрать все заметки в родителе",
|
||||
"add-note-above-to-selection": "Добавить заметку выше к выделению",
|
||||
"add-note-below-to-selection": "Добавить заметку ниже к выделению",
|
||||
"duplicate-subtree": "Дублировать поддерево",
|
||||
"open-new-tab": "Открыть новую вкладку",
|
||||
"close-active-tab": "Закрыть активную вкладку",
|
||||
"reopen-last-tab": "Открыть последнюю закрытую вкладку",
|
||||
"activate-next-tab": "Активировать следующую вкладку",
|
||||
"activate-previous-tab": "Активировать предыдущую вкладку",
|
||||
"open-new-window": "Открыть новое окно",
|
||||
"toggle-system-tray-icon": "Переключить значок на панели задач",
|
||||
"toggle-zen-mode": "Переключить режим дзен",
|
||||
"switch-to-first-tab": "Переключиться на первую вкладку",
|
||||
"switch-to-second-tab": "Переключиться на вторую вкладку",
|
||||
"switch-to-third-tab": "Переключиться на третью вкладку",
|
||||
"switch-to-fourth-tab": "Переключиться на четвертую вкладку",
|
||||
"switch-to-fifth-tab": "Переключиться на пятую вкладку",
|
||||
"switch-to-sixth-tab": "Переключиться на шестую вкладку",
|
||||
"switch-to-seventh-tab": "Переключиться на седьмую вкладку",
|
||||
"switch-to-eighth-tab": "Переключиться на восьмую вкладку",
|
||||
"switch-to-ninth-tab": "Переключиться на девятую вкладку",
|
||||
"switch-to-last-tab": "Переключиться на последнюю вкладку",
|
||||
"show-note-source": "Показать исходный код заметки",
|
||||
"show-options": "Показать параметры",
|
||||
"show-revisions": "Показать версии",
|
||||
"show-recent-changes": "Показать последние изменения",
|
||||
"show-sql-console": "Показать консоль SQL",
|
||||
"show-backend-log": "Показать лог бэкенда",
|
||||
"show-help": "Показать руководство",
|
||||
"show-cheatsheet": "Показать справку",
|
||||
"add-link-to-text": "Добавить ссылку в текст",
|
||||
"follow-link-under-cursor": "Перейти по ссылке под курсором",
|
||||
"insert-date-and-time-to-text": "Вставить дату и время в текст",
|
||||
"paste-markdown-into-text": "Вставить Markdown в текст",
|
||||
"cut-into-note": "Вырезать в заметку",
|
||||
"edit-read-only-note": "Редактировать заметку только для чтения",
|
||||
"add-new-label": "Добавить новую метку",
|
||||
"add-new-relation": "Добавить новое отношение",
|
||||
"toggle-ribbon-tab-classic-editor": "Переключить Классический редактор",
|
||||
"zoom-out": "Уменьшить масштаб",
|
||||
"zoom-in": "Увеличить масштаб",
|
||||
"open-note-externally": "Открыть заметку вне приложения",
|
||||
"reload-frontend-app": "Перезагрузить приложение",
|
||||
"open-developer-tools": "Открытые инструменты разработчика",
|
||||
"find-in-text": "Найти в тексте",
|
||||
"toggle-left-pane": "Переключить левую панель",
|
||||
"toggle-full-screen": "Переключить на полный экран",
|
||||
"reset-zoom-level": "Сбросить уровень масштабирования",
|
||||
"copy-without-formatting": "Копировать без форматирования",
|
||||
"force-save-revision": "Принудительное сохранение версии",
|
||||
"unhoist-note": "Снять фокус с заметки",
|
||||
"toggle-right-pane": "Переключить правую панель",
|
||||
"print-active-note": "Печать активной заметки",
|
||||
"render-active-note": "Рендеринг активной заметки",
|
||||
"run-active-note": "Запуск активной заметки",
|
||||
"add-include-note-to-text": "Добавить включение другой заметки в текст",
|
||||
"toggle-ribbon-tab-basic-properties": "Переключить на вкладку \"Общее\"",
|
||||
"toggle-ribbon-tab-book-properties": "Переключить на вкладку \"Свойства книги\"",
|
||||
"toggle-ribbon-tab-file-properties": "Переключить на вкладку \"Свойства файла\"",
|
||||
"toggle-ribbon-tab-image-properties": "Переключить на вкладку \"Свойства изображения\"",
|
||||
"toggle-ribbon-tab-owned-attributes": "Переключить на вкладку \"Атрибуты\"",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Переключить на вкладку \"Унаследованные атрибуты\"",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Переключить на вкладку \"Продвигаемые атрибуты\"",
|
||||
"toggle-ribbon-tab-note-map": "Переключить на вкладку \"Карта заметок\"",
|
||||
"toggle-ribbon-tab-note-info": "Переключить на вкладку \"Информация о заметке\"",
|
||||
"toggle-ribbon-tab-note-paths": "Переключить на вкладку \"Пути к заметке\"",
|
||||
"toggle-ribbon-tab-similar-notes": "Переключить на вкладку \"Похожие заметки\"",
|
||||
"export-active-note-as-pdf": "Экспортировать активную заметку в формате PDF",
|
||||
"toggle-note-hoisting": "Переключить закрепление заметки"
|
||||
},
|
||||
"months": {
|
||||
"august": "Август",
|
||||
"september": "Сентябрь",
|
||||
"october": "Октябрь",
|
||||
"november": "Ноябрь",
|
||||
"december": "Декабрь",
|
||||
"july": "Июль",
|
||||
"january": "Январь",
|
||||
"february": "Февраль",
|
||||
"march": "Март",
|
||||
"april": "Апрель",
|
||||
"may": "Май",
|
||||
"june": "Июнь"
|
||||
},
|
||||
"quarterNumber": "Квартал {quarterNumber}",
|
||||
"weekdays": {
|
||||
"monday": "Понедельник",
|
||||
"tuesday": "Вторник",
|
||||
"wednesday": "Среда",
|
||||
"thursday": "Четверг",
|
||||
"friday": "Пятница",
|
||||
"saturday": "Суббота",
|
||||
"sunday": "Воскресенье"
|
||||
},
|
||||
"weekdayNumber": "Неделя {weekNumber}",
|
||||
"login": {
|
||||
"title": "Вход",
|
||||
"password": "Пароль",
|
||||
"button": "Войти",
|
||||
"heading": "Вход в Trilium",
|
||||
"remember-me": "Запомнить меня",
|
||||
"sign_in_with_sso": "Войти с помощью {{ ssoIssuerName }}",
|
||||
"incorrect-totp": "TOTP неверен. Попробуйте ещё раз.",
|
||||
"incorrect-password": "Пароль неверный. Попробуйте ещё раз."
|
||||
},
|
||||
"set_password": {
|
||||
"password": "Пароль",
|
||||
"title": "Установка пароля",
|
||||
"heading": "Установка пароля",
|
||||
"password-confirmation": "Подтверждение пароля",
|
||||
"button": "Установить пароль",
|
||||
"description": "Прежде чем начать использовать Trilium через веб-браузер, вам необходимо установить пароль. Этот пароль будет использоваться для входа."
|
||||
},
|
||||
"setup": {
|
||||
"next": "Далее",
|
||||
"title": "Настройка",
|
||||
"heading": "Настройка Trilium",
|
||||
"new-document": "Я новый пользователь и хочу создать новый документ Trilium для своих заметок",
|
||||
"sync-from-desktop": "У меня уже есть приложение ПК, и я хочу настроить синхронизацию с ним",
|
||||
"sync-from-server": "У меня уже есть сервер, и я хочу настроить синхронизацию с ним",
|
||||
"init-in-progress": "Идет инициализация документа",
|
||||
"redirecting": "Вскоре вы будете перенаправлены на страницу приложения."
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"password": "Пароль",
|
||||
"password-placeholder": "Пароль",
|
||||
"back": "Назад",
|
||||
"finish-setup": "Завершение настройки",
|
||||
"heading": "Синхронизация с сервера",
|
||||
"instructions": "Введите адрес сервера Trilium и учётные данные ниже. Документ Trilium будет полностью загружен с сервера и синхронизирован с ним. В зависимости от размера документа и скорости вашего соединения, это может занять некоторое время.",
|
||||
"server-host": "Адрес сервера Trilium",
|
||||
"proxy-server": "Прокси-сервер (необязательно)",
|
||||
"note": "Заметка:",
|
||||
"proxy-instruction": "Если оставить настройки прокси-сервера пустыми, будет использоваться системный прокси-сервер (применимо только к настольному приложению)"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"outstanding-items-default": "Н/Д",
|
||||
"heading": "Синхронизация в процессе",
|
||||
"successful": "Синхронизация настроена. Первоначальная синхронизация займёт некоторое время. После её завершения вы будете перенаправлены на страницу входа.",
|
||||
"outstanding-items": "Оставшиеся элементы синхронизации:"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Поиск:"
|
||||
},
|
||||
"notes": {
|
||||
"duplicate-note-suffix": "(дубликат)",
|
||||
"new-note": "Новая заметка",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Ошибка"
|
||||
},
|
||||
"share_theme": {
|
||||
"search_placeholder": "Поиск...",
|
||||
"subpages": "Подстраницы:",
|
||||
"expand": "Развернуть",
|
||||
"site-theme": "Тема оформления сайта",
|
||||
"image_alt": "Изображение статьи",
|
||||
"on-this-page": "На текущей странице",
|
||||
"last-updated": "Последнее обновление: {{- date}}"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"description": "Описание",
|
||||
"calendar": "Календарь",
|
||||
"table": "Таблица",
|
||||
"geolocation": "Геолокация",
|
||||
"board": "Канбан-доска",
|
||||
"status": "Статус",
|
||||
"board_status_done": "Готово",
|
||||
"text-snippet": "Фрагмент текста",
|
||||
"list-view": "Список",
|
||||
"grid-view": "Сетка",
|
||||
"geo-map": "Карта",
|
||||
"start-date": "Дата начала",
|
||||
"end-date": "Дата окончания",
|
||||
"start-time": "Дата начала",
|
||||
"end-time": "Дата окончания",
|
||||
"built-in-templates": "Встроенные шаблоны",
|
||||
"board_note_first": "Первая заметка",
|
||||
"board_note_second": "Вторая заметка",
|
||||
"board_note_third": "Третья заметка",
|
||||
"board_status_todo": "Сделать",
|
||||
"board_status_progress": "В процессе",
|
||||
"background": "Фон",
|
||||
"presentation_slide_second": "Второй слайд",
|
||||
"presentation_slide_first": "Первый слайд",
|
||||
"presentation": "Презентация",
|
||||
"presentation_slide": "Слайд презентации"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Не найдено",
|
||||
"heading": "Не найдено"
|
||||
},
|
||||
"share_page": {
|
||||
"child-notes": "Дочерние заметки:",
|
||||
"no-content": "Эта заметка пуста.",
|
||||
"parent": "родитель:",
|
||||
"clipped-from": "Эта заметка изначально была вырезана из {{- url}}"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Синхронизация с приложения ПК",
|
||||
"description": "Эту настройку необходимо инициировать из приложения для ПК:",
|
||||
"step1": "Откройте приложение Trilium Notes на ПК.",
|
||||
"step2": "В меню Trilium выберите «Параметры».",
|
||||
"step3": "Нажмите на категорию «Синхронизация».",
|
||||
"step4": "Измените адрес экземпляра сервера на: {{- host}} и нажмите «Сохранить».",
|
||||
"step5": "Нажмите кнопку «Проверить синхронизацию», чтобы убедиться в успешности подключения.",
|
||||
"step6": "Выполнив эти шаги, нажмите {{- link}}.",
|
||||
"step6-here": "здесь"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Адрес сервера синхронизации не установлен. Сначала настройте синхронизацию.",
|
||||
"successful": "Установление связи с сервером синхронизации прошло успешно, синхронизация начата."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Документ PDF (*.pdf)",
|
||||
"unable-to-save-message": "Не удалось записать выбранный файл. Попробуйте ещё раз или выберите другой путь.",
|
||||
"unable-to-export-message": "Текущую заметку невозможно экспортировать в формате PDF.",
|
||||
"unable-to-export-title": "Невозможно экспортировать в PDF",
|
||||
"unable-to-print": "Не удается распечатать заметку"
|
||||
},
|
||||
"migration": {
|
||||
"wrong_db_version": "Версия базы данных ({{version}}) новее, чем та, которую ожидает приложение ({{targetVersion}}). Это означает, что она была создана более новой и несовместимой версией Trilium. Для решения этой проблемы обновите Trilium до последней версии.",
|
||||
"old_version": "Прямая миграция с текущей версии не поддерживается. Сначала обновитесь до последней версии 0.60.4, а затем — до этой.",
|
||||
"error_message": "Ошибка при миграции на версию {{version}}: {{stack}}"
|
||||
},
|
||||
"backend_log": {
|
||||
"reading-log-failed": "Не удалось прочитать файл лога бэкенда '{{ fileName }}'.",
|
||||
"log-does-not-exist": "Файл лога бэкенда '{{ fileName }}' (пока) не существует."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Этот тип заметки не может быть отображен."
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "База данных не инициализирована, следуйте инструкциям на экране.",
|
||||
"db_not_initialized_server": "База данных не инициализирована, пожалуйста, посетите страницу настройки - http://[your-server-host]:{{port}}, чтобы увидеть инструкции по инициализации Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Приложение уже запущено, фокус переключен на него."
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"open-command-palette": "Открыть палитру команд",
|
||||
"quick-search": "Активировать панель быстрого поиска",
|
||||
"move-note-up": "Переместить заметку вверх",
|
||||
"move-note-down": "Переместить заметку вниз",
|
||||
"move-note-up-in-hierarchy": "Переместить заметку вверх в иерархии",
|
||||
"move-note-down-in-hierarchy": "Переместить заметку вниз в иерархии",
|
||||
"delete-note": "Удалить заметку",
|
||||
"back-in-note-history": "Перейти к предыдущей заметке в истории",
|
||||
"forward-in-note-history": "Перейти к следующей заметке в истории",
|
||||
"scroll-to-active-note": "Прокрутить дерево заметок до активной заметки",
|
||||
"search-in-subtree": "Искать заметки в поддереве активной заметки",
|
||||
"expand-subtree": "Развернуть поддерево текущей заметки",
|
||||
"collapse-tree": "Свернуть дерево заметок полностью",
|
||||
"collapse-subtree": "Свернуть поддерево текущей заметки",
|
||||
"sort-child-notes": "Сортировка дочерних заметок",
|
||||
"creating-and-moving-notes": "Создание и перемещение заметок",
|
||||
"create-note-after": "Создать заметку после активной заметки",
|
||||
"create-note-into": "Создать заметку как дочернюю для активной заметки",
|
||||
"edit-note-title": "Перейти от дерева к деталям заметки и отредактировать заголовок",
|
||||
"clone-notes-to": "Клонировать выбранные заметки",
|
||||
"move-notes-to": "Переместить выбранные заметки",
|
||||
"note-clipboard": "Буфер обмена заметок",
|
||||
"copy-notes-to-clipboard": "Скопировать выбранные заметки в буфер обмена",
|
||||
"paste-notes-from-clipboard": "Вставить заметки из буфера обмена в активную заметку",
|
||||
"cut-notes-to-clipboard": "Вырезать выбранные заметки в буфер обмена",
|
||||
"duplicate-subtree": "Дублировать поддерево",
|
||||
"tabs-and-windows": "Вкладки и окна",
|
||||
"open-new-tab": "Открыть новую вкладку",
|
||||
"close-active-tab": "Закрыть активную вкладку",
|
||||
"reopen-last-tab": "Повторно открыть последнюю закрытую вкладку",
|
||||
"open-jump-to-note-dialog": "Открыть диалоговое окно «Перейти к заметке»",
|
||||
"create-note-into-inbox": "Создать заметку в папке «Входящие» (если определено) или заметку дня",
|
||||
"edit-branch-prefix": "Показать диалоговое окно «Изменить префикс ветки»",
|
||||
"select-all-notes-in-parent": "Выбрать все заметки на текущем уровне заметок",
|
||||
"add-note-above-to-the-selection": "Добавить заметку выше к выделению",
|
||||
"add-note-below-to-selection": "Добавить заметку ниже к выделению",
|
||||
"activate-next-tab": "Активировать вкладку справа",
|
||||
"activate-previous-tab": "Активировать вкладку слева",
|
||||
"open-new-window": "Открыть новое пустое окно",
|
||||
"toggle-tray": "Показать/скрыть приложение из системного трея",
|
||||
"first-tab": "Активировать первую вкладку в списке",
|
||||
"second-tab": "Активировать вторую вкладку в списке",
|
||||
"third-tab": "Активировать третью вкладку в списке",
|
||||
"fourth-tab": "Активировать четвертую вкладку в списке",
|
||||
"fifth-tab": "Активировать пятую вкладку в списке",
|
||||
"sixth-tab": "Активировать шестую вкладку в списке",
|
||||
"seventh-tab": "Активировать седьмую вкладку в списке",
|
||||
"eight-tab": "Активировать восьмую вкладку в списке",
|
||||
"ninth-tab": "Активировать девятую вкладку в списке",
|
||||
"last-tab": "Активировать последнюю вкладку в списке",
|
||||
"dialogs": "Диалоговые окна",
|
||||
"show-note-source": "Показать диалоговое окно \"Исходный код заметки\"",
|
||||
"show-options": "Открыть страницу «Параметры»",
|
||||
"show-revisions": "Показать диалоговое окно «Версии заметки»",
|
||||
"show-recent-changes": "Показать диалоговое окно «Последние изменения»",
|
||||
"show-sql-console": "Открыть страницу «Консоль SQL»",
|
||||
"show-backend-log": "Открыть страницу «Лог бэкенда»",
|
||||
"show-help": "Откройте встроенное руководство пользователя",
|
||||
"show-cheatsheet": "Показать модальное окно с общими операциями на клавиатуре",
|
||||
"text-note-operations": "Операции с текстовыми заметками",
|
||||
"add-link-to-text": "Открыть диалоговое окно для добавления ссылки в текст",
|
||||
"follow-link-under-cursor": "Перейти по ссылке, на которой находится курсор",
|
||||
"insert-date-and-time-to-text": "Вставить текущую дату и время в текст",
|
||||
"paste-markdown-into-text": "Вставляет Markdown из буфера обмена в текстовую заметку",
|
||||
"cut-into-note": "Вырезает выделенный фрагмент из текущей заметки и создает подзаметку с выбранным текстом",
|
||||
"add-include-note-to-text": "Открывает диалоговое окно для добавления заметки",
|
||||
"edit-readonly-note": "Редактировать заметку, доступную только для чтения",
|
||||
"attributes-labels-and-relations": "Атрибуты (метки и отношения)",
|
||||
"add-new-label": "Создать новую заметку",
|
||||
"create-new-relation": "Создать новое отношение",
|
||||
"ribbon-tabs": "Вкладки ленты",
|
||||
"toggle-basic-properties": "Перейти к общим параметрам",
|
||||
"toggle-file-properties": "Перейти к свойствам файла",
|
||||
"toggle-image-properties": "Перейти к свойствам изображения",
|
||||
"toggle-owned-attributes": "Перейти к атрибутам",
|
||||
"toggle-inherited-attributes": "Перейти к унаследованным атрибутам",
|
||||
"toggle-promoted-attributes": "Перейти к продвигаемым атрибутам",
|
||||
"toggle-link-map": "Перейти к картуессылок",
|
||||
"toggle-note-info": "Перейти к информации о заметке",
|
||||
"toggle-note-paths": "Перейти к путям заметки",
|
||||
"toggle-similar-notes": "Перейти к похожим заметкам",
|
||||
"other": "Прочее",
|
||||
"toggle-right-pane": "Включить/выключить отображение правой панели, которая включает оглавление и акценты",
|
||||
"print-active-note": "Распечатать активную заметку",
|
||||
"open-note-externally": "Открыть заметку как файл с помощью приложения по умолчанию",
|
||||
"render-active-note": "Отрендерить (повторно отрендерить) активную заметку",
|
||||
"run-active-note": "Запуск JavaScript (фронтенд/бэкенд) из заметки с кодом",
|
||||
"reload-frontend-app": "Перезагрузить фронтенд",
|
||||
"open-dev-tools": "Открыть инструменты разработчика",
|
||||
"find-in-text": "Отобразить панель поиска",
|
||||
"toggle-left-note-tree-panel": "Отобразить левую панель (дерево)",
|
||||
"toggle-full-screen": "Переключить на полный экран",
|
||||
"zoom-out": "Уменьшить масштаб",
|
||||
"zoom-in": "Увеличить масштаб",
|
||||
"note-navigation": "Навигация по заметке",
|
||||
"reset-zoom-level": "Сбросить уровень масштабирования",
|
||||
"copy-without-formatting": "Скопировать выделенный текст без форматирования",
|
||||
"toggle-book-properties": "Перейти к свойствам коллекции",
|
||||
"toggle-classic-editor-toolbar": "Перейти на вкладку «Форматирование» для редактора с фиксированной панелью инструментов",
|
||||
"export-as-pdf": "Экспортировать текущую заметку в формате PDF",
|
||||
"toggle-zen-mode": "Включает/отключает режим дзен (минимальный пользовательский интерфейс для фокусирования)",
|
||||
"toggle-note-hoisting": "Переключить фокус активной заметки",
|
||||
"unhoist": "Убрать фокус с любой заметки",
|
||||
"force-save-revision": "Принудительное создать/сохранить снимок версии активной заметки"
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"localization": "Язык и регион",
|
||||
"settings-title": "Настройки",
|
||||
"spacer-title": "Разделитель",
|
||||
"calendar-title": "Календарь",
|
||||
"bookmarks-title": "Закладки",
|
||||
"options-title": "Опции",
|
||||
"appearance-title": "Оформление",
|
||||
"shortcuts-title": "Сочетания клавиш",
|
||||
"images-title": "Изображения",
|
||||
"spellcheck-title": "Проверка орфографии",
|
||||
"password-title": "Пароль",
|
||||
"etapi-title": "ETAPI",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"backup-title": "Резервное копирование",
|
||||
"sync-title": "Синхронизация",
|
||||
"other": "Прочее",
|
||||
"advanced-title": "Расширенные настройки",
|
||||
"inbox-title": "Входящие",
|
||||
"root-title": "Скрытые заметки",
|
||||
"search-history-title": "История поиска",
|
||||
"note-map-title": "Карта заметок",
|
||||
"shared-notes-title": "Общедоступные заметки",
|
||||
"bulk-action-title": "Множественные действия",
|
||||
"backend-log-title": "Лог бэкенда",
|
||||
"command-launcher-title": "Лаунчер команд",
|
||||
"note-launcher-title": "Лаунчер заметки",
|
||||
"script-launcher-title": "Лаунчер скрипта",
|
||||
"built-in-widget-title": "Встроенный виджет",
|
||||
"custom-widget-title": "Пользовательский виджет",
|
||||
"launch-bar-title": "Панель запуска",
|
||||
"available-launchers-title": "Доступные лаунчеры",
|
||||
"new-note-title": "Новая заметка",
|
||||
"search-notes-title": "Поиск заметок",
|
||||
"jump-to-note-title": "Перейти к...",
|
||||
"recent-changes-title": "Последние изменения",
|
||||
"quick-search-title": "Быстрый поиск",
|
||||
"protected-session-title": "Защищенная сессия",
|
||||
"sync-status-title": "Статус синхронизации",
|
||||
"text-notes": "Текстовые заметки",
|
||||
"code-notes-title": "Заметки с кодом",
|
||||
"visible-launchers-title": "Видимые лаунчеры",
|
||||
"user-guide": "Руководство пользователя",
|
||||
"sql-console-history-title": "История консоли SQL",
|
||||
"user-hidden-title": "Скрытый пользователь",
|
||||
"launch-bar-templates-title": "Шаблоны панели запуска",
|
||||
"base-abstract-launcher-title": "Базовый абстрактный лаунчер",
|
||||
"go-to-previous-note-title": "К предыдущей заметке",
|
||||
"go-to-next-note-title": "К следующей заметке",
|
||||
"open-today-journal-note-title": "Открыть сегодняшнюю заметку в журнале",
|
||||
"zen-mode": "Режим \"Дзен\"",
|
||||
"command-palette": "Открыть панель команд"
|
||||
},
|
||||
"tray": {
|
||||
"bookmarks": "Закладки",
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Выйти из Trilium",
|
||||
"recents": "Последние заметки",
|
||||
"new-note": "Новая заметка",
|
||||
"show-windows": "Показать окна",
|
||||
"open_new_window": "Открыть новое окно",
|
||||
"today": "Открыть заметку дня"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"scroll-to-active-note": "Прокрутить к активной заметке",
|
||||
"quick-search": "Быстрый поиск",
|
||||
"back-in-note-history": "Назад в истории заметок",
|
||||
"forward-in-note-history": "Вперед в истории заметок",
|
||||
"jump-to-note": "Перейти к...",
|
||||
"command-palette": "Палитра команд",
|
||||
"search-in-subtree": "Поиск в поддереве",
|
||||
"expand-subtree": "Развернуть поддерево",
|
||||
"collapse-tree": "Свернуть дерево",
|
||||
"collapse-subtree": "Свернуть поддерево",
|
||||
"sort-child-notes": "Сортировка дочерних заметок",
|
||||
"create-note-after": "Создать заметку после",
|
||||
"create-note-into": "Создать заметку в",
|
||||
"create-note-into-inbox": "Создать заметку в «Входящих»",
|
||||
"delete-notes": "Удалить заметки",
|
||||
"move-note-up": "Переместить заметку вверх",
|
||||
"move-note-down": "Переместить заметку вниз",
|
||||
"move-note-up-in-hierarchy": "Переместить заметку вверх в иерархии",
|
||||
"move-note-down-in-hierarchy": "Переместить заметку вниз в иерархии",
|
||||
"edit-note-title": "Изменить заголовок заметки",
|
||||
"edit-branch-prefix": "Изменить префикс ветки",
|
||||
"clone-notes-to": "Клонировать заметки в",
|
||||
"move-notes-to": "Переместить заметки в",
|
||||
"copy-notes-to-clipboard": "Копировать заметки в буфер обмена",
|
||||
"paste-notes-from-clipboard": "Вставить заметки из буфера обмена",
|
||||
"cut-notes-to-clipboard": "Вырезать заметки в буфер обмена",
|
||||
"select-all-notes-in-parent": "Выбрать все заметки в родителе",
|
||||
"add-note-above-to-selection": "Добавить заметку выше к выделению",
|
||||
"add-note-below-to-selection": "Добавить заметку ниже к выделению",
|
||||
"duplicate-subtree": "Дублировать поддерево",
|
||||
"open-new-tab": "Открыть новую вкладку",
|
||||
"close-active-tab": "Закрыть активную вкладку",
|
||||
"reopen-last-tab": "Открыть последнюю закрытую вкладку",
|
||||
"activate-next-tab": "Активировать следующую вкладку",
|
||||
"activate-previous-tab": "Активировать предыдущую вкладку",
|
||||
"open-new-window": "Открыть новое окно",
|
||||
"toggle-system-tray-icon": "Переключить значок на панели задач",
|
||||
"toggle-zen-mode": "Переключить режим дзен",
|
||||
"switch-to-first-tab": "Переключиться на первую вкладку",
|
||||
"switch-to-second-tab": "Переключиться на вторую вкладку",
|
||||
"switch-to-third-tab": "Переключиться на третью вкладку",
|
||||
"switch-to-fourth-tab": "Переключиться на четвертую вкладку",
|
||||
"switch-to-fifth-tab": "Переключиться на пятую вкладку",
|
||||
"switch-to-sixth-tab": "Переключиться на шестую вкладку",
|
||||
"switch-to-seventh-tab": "Переключиться на седьмую вкладку",
|
||||
"switch-to-eighth-tab": "Переключиться на восьмую вкладку",
|
||||
"switch-to-ninth-tab": "Переключиться на девятую вкладку",
|
||||
"switch-to-last-tab": "Переключиться на последнюю вкладку",
|
||||
"show-note-source": "Показать исходный код заметки",
|
||||
"show-options": "Показать параметры",
|
||||
"show-revisions": "Показать версии",
|
||||
"show-recent-changes": "Показать последние изменения",
|
||||
"show-sql-console": "Показать консоль SQL",
|
||||
"show-backend-log": "Показать лог бэкенда",
|
||||
"show-help": "Показать руководство",
|
||||
"show-cheatsheet": "Показать справку",
|
||||
"add-link-to-text": "Добавить ссылку в текст",
|
||||
"follow-link-under-cursor": "Перейти по ссылке под курсором",
|
||||
"insert-date-and-time-to-text": "Вставить дату и время в текст",
|
||||
"paste-markdown-into-text": "Вставить Markdown в текст",
|
||||
"cut-into-note": "Вырезать в заметку",
|
||||
"edit-read-only-note": "Редактировать заметку только для чтения",
|
||||
"add-new-label": "Добавить новую метку",
|
||||
"add-new-relation": "Добавить новое отношение",
|
||||
"toggle-ribbon-tab-classic-editor": "Переключить Классический редактор",
|
||||
"zoom-out": "Уменьшить масштаб",
|
||||
"zoom-in": "Увеличить масштаб",
|
||||
"open-note-externally": "Открыть заметку вне приложения",
|
||||
"reload-frontend-app": "Перезагрузить приложение",
|
||||
"open-developer-tools": "Открытые инструменты разработчика",
|
||||
"find-in-text": "Найти в тексте",
|
||||
"toggle-left-pane": "Переключить левую панель",
|
||||
"toggle-full-screen": "Переключить на полный экран",
|
||||
"reset-zoom-level": "Сбросить уровень масштабирования",
|
||||
"copy-without-formatting": "Копировать без форматирования",
|
||||
"force-save-revision": "Принудительное сохранение версии",
|
||||
"unhoist-note": "Снять фокус с заметки",
|
||||
"toggle-right-pane": "Переключить правую панель",
|
||||
"print-active-note": "Печать активной заметки",
|
||||
"render-active-note": "Рендеринг активной заметки",
|
||||
"run-active-note": "Запуск активной заметки",
|
||||
"add-include-note-to-text": "Добавить включение другой заметки в текст",
|
||||
"toggle-ribbon-tab-basic-properties": "Переключить на вкладку \"Общее\"",
|
||||
"toggle-ribbon-tab-book-properties": "Переключить на вкладку \"Свойства книги\"",
|
||||
"toggle-ribbon-tab-file-properties": "Переключить на вкладку \"Свойства файла\"",
|
||||
"toggle-ribbon-tab-image-properties": "Переключить на вкладку \"Свойства изображения\"",
|
||||
"toggle-ribbon-tab-owned-attributes": "Переключить на вкладку \"Атрибуты\"",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Переключить на вкладку \"Унаследованные атрибуты\"",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Переключить на вкладку \"Продвигаемые атрибуты\"",
|
||||
"toggle-ribbon-tab-note-map": "Переключить на вкладку \"Карта заметок\"",
|
||||
"toggle-ribbon-tab-note-info": "Переключить на вкладку \"Информация о заметке\"",
|
||||
"toggle-ribbon-tab-note-paths": "Переключить на вкладку \"Пути к заметке\"",
|
||||
"toggle-ribbon-tab-similar-notes": "Переключить на вкладку \"Похожие заметки\"",
|
||||
"export-active-note-as-pdf": "Экспортировать активную заметку в формате PDF",
|
||||
"toggle-note-hoisting": "Переключить закрепление заметки"
|
||||
},
|
||||
"months": {
|
||||
"august": "Август",
|
||||
"september": "Сентябрь",
|
||||
"october": "Октябрь",
|
||||
"november": "Ноябрь",
|
||||
"december": "Декабрь",
|
||||
"july": "Июль",
|
||||
"january": "Январь",
|
||||
"february": "Февраль",
|
||||
"march": "Март",
|
||||
"april": "Апрель",
|
||||
"may": "Май",
|
||||
"june": "Июнь"
|
||||
},
|
||||
"quarterNumber": "Квартал {quarterNumber}",
|
||||
"weekdays": {
|
||||
"monday": "Понедельник",
|
||||
"tuesday": "Вторник",
|
||||
"wednesday": "Среда",
|
||||
"thursday": "Четверг",
|
||||
"friday": "Пятница",
|
||||
"saturday": "Суббота",
|
||||
"sunday": "Воскресенье"
|
||||
},
|
||||
"weekdayNumber": "Неделя {weekNumber}",
|
||||
"login": {
|
||||
"title": "Вход",
|
||||
"password": "Пароль",
|
||||
"button": "Войти",
|
||||
"heading": "Вход в Trilium",
|
||||
"remember-me": "Запомнить меня",
|
||||
"sign_in_with_sso": "Войти с помощью {{ ssoIssuerName }}",
|
||||
"incorrect-totp": "TOTP неверен. Попробуйте ещё раз.",
|
||||
"incorrect-password": "Пароль неверный. Попробуйте ещё раз."
|
||||
},
|
||||
"set_password": {
|
||||
"password": "Пароль",
|
||||
"title": "Установка пароля",
|
||||
"heading": "Установка пароля",
|
||||
"password-confirmation": "Подтверждение пароля",
|
||||
"button": "Установить пароль",
|
||||
"description": "Прежде чем начать использовать Trilium через веб-браузер, вам необходимо установить пароль. Этот пароль будет использоваться для входа."
|
||||
},
|
||||
"setup": {
|
||||
"next": "Далее",
|
||||
"title": "Настройка",
|
||||
"heading": "Настройка Trilium",
|
||||
"new-document": "Я новый пользователь и хочу создать новый документ Trilium для своих заметок",
|
||||
"sync-from-desktop": "У меня уже есть приложение ПК, и я хочу настроить синхронизацию с ним",
|
||||
"sync-from-server": "У меня уже есть сервер, и я хочу настроить синхронизацию с ним",
|
||||
"init-in-progress": "Идет инициализация документа",
|
||||
"redirecting": "Вскоре вы будете перенаправлены на страницу приложения."
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"password": "Пароль",
|
||||
"password-placeholder": "Пароль",
|
||||
"back": "Назад",
|
||||
"finish-setup": "Завершение настройки",
|
||||
"heading": "Синхронизация с сервера",
|
||||
"instructions": "Введите адрес сервера Trilium и учётные данные ниже. Документ Trilium будет полностью загружен с сервера и синхронизирован с ним. В зависимости от размера документа и скорости вашего соединения, это может занять некоторое время.",
|
||||
"server-host": "Адрес сервера Trilium",
|
||||
"proxy-server": "Прокси-сервер (необязательно)",
|
||||
"note": "Заметка:",
|
||||
"proxy-instruction": "Если оставить настройки прокси-сервера пустыми, будет использоваться системный прокси-сервер (применимо только к настольному приложению)"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"outstanding-items-default": "Н/Д",
|
||||
"heading": "Синхронизация в процессе",
|
||||
"successful": "Синхронизация настроена. Первоначальная синхронизация займёт некоторое время. После её завершения вы будете перенаправлены на страницу входа.",
|
||||
"outstanding-items": "Оставшиеся элементы синхронизации:"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "Поиск:"
|
||||
},
|
||||
"notes": {
|
||||
"duplicate-note-suffix": "(дубликат)",
|
||||
"new-note": "Новая заметка",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Ошибка"
|
||||
},
|
||||
"share_theme": {
|
||||
"search_placeholder": "Поиск...",
|
||||
"subpages": "Подстраницы:",
|
||||
"expand": "Развернуть",
|
||||
"site-theme": "Тема оформления сайта",
|
||||
"image_alt": "Изображение статьи",
|
||||
"on-this-page": "На текущей странице",
|
||||
"last-updated": "Последнее обновление: {{- date}}"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"description": "Описание",
|
||||
"calendar": "Календарь",
|
||||
"table": "Таблица",
|
||||
"geolocation": "Геолокация",
|
||||
"board": "Канбан-доска",
|
||||
"status": "Статус",
|
||||
"board_status_done": "Готово",
|
||||
"text-snippet": "Фрагмент текста",
|
||||
"list-view": "Список",
|
||||
"grid-view": "Сетка",
|
||||
"geo-map": "Карта",
|
||||
"start-date": "Дата начала",
|
||||
"end-date": "Дата окончания",
|
||||
"start-time": "Дата начала",
|
||||
"end-time": "Дата окончания",
|
||||
"built-in-templates": "Встроенные шаблоны",
|
||||
"board_note_first": "Первая заметка",
|
||||
"board_note_second": "Вторая заметка",
|
||||
"board_note_third": "Третья заметка",
|
||||
"board_status_todo": "Сделать",
|
||||
"board_status_progress": "В процессе",
|
||||
"background": "Фон",
|
||||
"presentation_slide_second": "Второй слайд",
|
||||
"presentation_slide_first": "Первый слайд",
|
||||
"presentation": "Презентация",
|
||||
"presentation_slide": "Слайд презентации"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Не найдено",
|
||||
"heading": "Не найдено"
|
||||
},
|
||||
"share_page": {
|
||||
"child-notes": "Дочерние заметки:",
|
||||
"no-content": "Эта заметка пуста.",
|
||||
"parent": "родитель:",
|
||||
"clipped-from": "Эта заметка изначально была вырезана из {{- url}}"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Синхронизация с приложения ПК",
|
||||
"description": "Эту настройку необходимо инициировать из приложения для ПК:",
|
||||
"step1": "Откройте приложение Trilium Notes на ПК.",
|
||||
"step2": "В меню Trilium выберите «Параметры».",
|
||||
"step3": "Нажмите на категорию «Синхронизация».",
|
||||
"step4": "Измените адрес экземпляра сервера на: {{- host}} и нажмите «Сохранить».",
|
||||
"step5": "Нажмите кнопку «Проверить синхронизацию», чтобы убедиться в успешности подключения.",
|
||||
"step6": "Выполнив эти шаги, нажмите {{- link}}.",
|
||||
"step6-here": "здесь"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Адрес сервера синхронизации не установлен. Сначала настройте синхронизацию.",
|
||||
"successful": "Установление связи с сервером синхронизации прошло успешно, синхронизация начата."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "Документ PDF (*.pdf)",
|
||||
"unable-to-save-message": "Не удалось записать выбранный файл. Попробуйте ещё раз или выберите другой путь.",
|
||||
"unable-to-export-message": "Текущую заметку невозможно экспортировать в формате PDF.",
|
||||
"unable-to-export-title": "Невозможно экспортировать в PDF",
|
||||
"unable-to-print": "Не удается распечатать заметку"
|
||||
},
|
||||
"migration": {
|
||||
"wrong_db_version": "Версия базы данных ({{version}}) новее, чем та, которую ожидает приложение ({{targetVersion}}). Это означает, что она была создана более новой и несовместимой версией Trilium. Для решения этой проблемы обновите Trilium до последней версии.",
|
||||
"old_version": "Прямая миграция с текущей версии не поддерживается. Сначала обновитесь до последней версии 0.60.4, а затем — до этой.",
|
||||
"error_message": "Ошибка при миграции на версию {{version}}: {{stack}}"
|
||||
},
|
||||
"backend_log": {
|
||||
"reading-log-failed": "Не удалось прочитать файл лога бэкенда '{{ fileName }}'.",
|
||||
"log-does-not-exist": "Файл лога бэкенда '{{ fileName }}' (пока) не существует."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Этот тип заметки не может быть отображен."
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "База данных не инициализирована, следуйте инструкциям на экране.",
|
||||
"db_not_initialized_server": "База данных не инициализирована, пожалуйста, посетите страницу настройки - http://[your-server-host]:{{port}}, чтобы увидеть инструкции по инициализации Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Приложение уже запущено, фокус переключен на него."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,443 +1,441 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "打開「跳轉至筆記」對話方塊",
|
||||
"search-in-subtree": "在目前筆記的子階層中搜尋筆記",
|
||||
"expand-subtree": "展開目前筆記的子階層",
|
||||
"collapse-tree": "收摺全部的筆記樹",
|
||||
"collapse-subtree": "收摺目前筆記的子階層",
|
||||
"sort-child-notes": "排序子筆記",
|
||||
"creating-and-moving-notes": "新增和移動筆記",
|
||||
"create-note-into-inbox": "在收件匣(如果已定義)或日記中新增筆記",
|
||||
"delete-note": "刪除筆記",
|
||||
"move-note-up": "上移筆記",
|
||||
"move-note-down": "下移筆記",
|
||||
"move-note-up-in-hierarchy": "將筆記層級上移",
|
||||
"move-note-down-in-hierarchy": "將筆記層級下移",
|
||||
"edit-note-title": "從筆記樹跳轉至筆記內容並編輯標題",
|
||||
"edit-branch-prefix": "顯示編輯分支前綴對話方塊",
|
||||
"note-clipboard": "筆記剪貼簿",
|
||||
"copy-notes-to-clipboard": "複製所選的筆記至剪貼簿",
|
||||
"paste-notes-from-clipboard": "從剪貼簿貼上筆記至目前筆記中",
|
||||
"cut-notes-to-clipboard": "剪下所選的筆記至剪貼簿",
|
||||
"select-all-notes-in-parent": "選擇目前筆記級別的所有筆記",
|
||||
"add-note-above-to-the-selection": "加入上方筆記至選擇中",
|
||||
"add-note-below-to-selection": "加入下方筆記至選擇中",
|
||||
"duplicate-subtree": "複製子階層",
|
||||
"tabs-and-windows": "分頁和視窗",
|
||||
"open-new-tab": "打開新分頁",
|
||||
"close-active-tab": "關閉使用中分頁",
|
||||
"reopen-last-tab": "重新打開最後關閉的分頁",
|
||||
"activate-next-tab": "切換至右側分頁",
|
||||
"activate-previous-tab": "切換至左側分頁",
|
||||
"open-new-window": "打開新空白視窗",
|
||||
"toggle-tray": "從系統匣顯示 / 隱藏應用程式",
|
||||
"first-tab": "切換至列表中第一個分頁",
|
||||
"second-tab": "切換至列表中第二個分頁",
|
||||
"third-tab": "切換至列表中第三個分頁",
|
||||
"fourth-tab": "切換至列表中第四個分頁",
|
||||
"fifth-tab": "切換至列表中第五個分頁",
|
||||
"sixth-tab": "切換至列表中第六個分頁",
|
||||
"seventh-tab": "切換至列表中第七個分頁",
|
||||
"eight-tab": "切換至列表中第八個分頁",
|
||||
"ninth-tab": "切換至列表中第九個分頁",
|
||||
"last-tab": "切換至列表中最後一個分頁",
|
||||
"dialogs": "對話方塊",
|
||||
"show-note-source": "顯示筆記來源對話方塊",
|
||||
"show-options": "打開選項頁面",
|
||||
"show-revisions": "顯示筆記歷史版本對話方塊",
|
||||
"show-recent-changes": "顯示最近更改對話方塊",
|
||||
"show-sql-console": "打開 SQL 控制台頁面",
|
||||
"show-backend-log": "打開後端日誌頁面",
|
||||
"text-note-operations": "文字筆記操作",
|
||||
"add-link-to-text": "打開對話方塊以插入連結",
|
||||
"follow-link-under-cursor": "開啟游標處的連結",
|
||||
"insert-date-and-time-to-text": "插入目前日期和時間",
|
||||
"paste-markdown-into-text": "將剪貼簿中的 Markdown 文字貼上",
|
||||
"cut-into-note": "從目前筆記剪下選擇的部分並新增至子筆記",
|
||||
"add-include-note-to-text": "打開對話方塊以內嵌筆記",
|
||||
"edit-readonly-note": "編輯唯讀筆記",
|
||||
"attributes-labels-and-relations": "屬性(標籤和關聯)",
|
||||
"add-new-label": "新增新標籤",
|
||||
"create-new-relation": "新增新關聯",
|
||||
"ribbon-tabs": "功能區分頁",
|
||||
"toggle-basic-properties": "切換基本屬性",
|
||||
"toggle-file-properties": "切換檔案屬性",
|
||||
"toggle-image-properties": "切換圖像屬性",
|
||||
"toggle-owned-attributes": "切換自有屬性",
|
||||
"toggle-inherited-attributes": "切換繼承屬性",
|
||||
"toggle-promoted-attributes": "切換升級的屬性",
|
||||
"toggle-link-map": "切換連結地圖",
|
||||
"toggle-note-info": "切換筆記資訊",
|
||||
"toggle-note-paths": "切換筆記路徑",
|
||||
"toggle-similar-notes": "切換相似筆記",
|
||||
"other": "其他",
|
||||
"toggle-right-pane": "切換右側面板的顯示,包括目錄和高亮",
|
||||
"print-active-note": "列印目前筆記",
|
||||
"open-note-externally": "以預設應用程式打開筆記檔案",
|
||||
"render-active-note": "渲染(重新渲染)目前筆記",
|
||||
"run-active-note": "執行目前的 JavaScript(前端 / 後端)程式碼筆記",
|
||||
"toggle-note-hoisting": "聚焦目前筆記",
|
||||
"unhoist": "取消任何聚焦",
|
||||
"reload-frontend-app": "重新載入前端應用",
|
||||
"open-dev-tools": "打開開發者工具",
|
||||
"toggle-left-note-tree-panel": "切換左側(筆記樹)面板",
|
||||
"toggle-full-screen": "切換全螢幕",
|
||||
"zoom-out": "縮小",
|
||||
"zoom-in": "放大",
|
||||
"note-navigation": "筆記導航",
|
||||
"reset-zoom-level": "重設縮放比例",
|
||||
"copy-without-formatting": "以純文字複製所選文字",
|
||||
"force-save-revision": "強制新增 / 儲存目前筆記的新版本",
|
||||
"show-help": "顯示用戶說明",
|
||||
"toggle-book-properties": "切換集合屬性",
|
||||
"back-in-note-history": "跳轉至歷史記錄中的上一個筆記",
|
||||
"forward-in-note-history": "跳轉至歷史記錄中的下一個筆記",
|
||||
"open-command-palette": "打開命令面板",
|
||||
"scroll-to-active-note": "捲動筆記樹至目前筆記",
|
||||
"quick-search": "開啟快速搜尋列",
|
||||
"create-note-after": "新增筆記於目前筆記之後",
|
||||
"create-note-into": "新增目前筆記的子筆記",
|
||||
"clone-notes-to": "克隆所選的筆記至",
|
||||
"move-notes-to": "移動所選的筆記至",
|
||||
"show-cheatsheet": "顯示常用鍵盤快捷鍵",
|
||||
"find-in-text": "切換搜尋面板",
|
||||
"toggle-classic-editor-toolbar": "切換固定工具列編輯器的格式分頁",
|
||||
"export-as-pdf": "匯出目前筆記為 PDF",
|
||||
"toggle-zen-mode": "啟用 / 禁用禪模式(極簡界面以專注編輯)"
|
||||
},
|
||||
"login": {
|
||||
"title": "登入",
|
||||
"heading": "Trilium 登入",
|
||||
"incorrect-password": "密碼不正確。請再試一次。",
|
||||
"password": "密碼",
|
||||
"remember-me": "記住我",
|
||||
"button": "登入",
|
||||
"incorrect-totp": "TOTP 不正確。請再試一次。",
|
||||
"sign_in_with_sso": "用 {{ ssoIssuerName }} 登入"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "設定密碼",
|
||||
"heading": "設定密碼",
|
||||
"description": "在由網頁開始使用 Trilium 之前,您需要先設定一個密碼並用此密碼登入。",
|
||||
"password": "密碼",
|
||||
"password-confirmation": "確認密碼",
|
||||
"button": "設定密碼"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium 筆記設定",
|
||||
"new-document": "我是新用戶,我想為我的筆記建立一個新的 Trilium 文件",
|
||||
"sync-from-desktop": "我已經擁有桌面版本,想設定與它進行同步",
|
||||
"sync-from-server": "我已經擁有伺服器版本,想設定與它進行同步",
|
||||
"next": "下一步",
|
||||
"init-in-progress": "文件正在初始化",
|
||||
"redirecting": "您即將被重新導向至應用程式。",
|
||||
"title": "設定"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "從桌面版同步",
|
||||
"description": "此設定需要從桌面版本啟動:",
|
||||
"step1": "打開您的桌面版 Trilium 筆記。",
|
||||
"step2": "從 Trilium 選單中,點擊「選項」。",
|
||||
"step3": "點擊「同步」類別。",
|
||||
"step4": "將伺服器版網址更改為:{{- host}} 並點擊儲存。",
|
||||
"step5": "點擊「測試同步」以驗證連接是否成功。",
|
||||
"step6": "完成這些步驟後,點擊 {{- link}}。",
|
||||
"step6-here": "這裡"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "從伺服器同步",
|
||||
"instructions": "請在下方輸入 Trilium 伺服器網址和密碼。這將從伺服器下載整個 Trilium 數據庫檔案並同步。取決於數據庫大小和您的連接速度,這可能需要一段時間。",
|
||||
"server-host": "Trilium 伺服器網址",
|
||||
"server-host-placeholder": "https://<主機名稱>:<端口>",
|
||||
"proxy-server": "代理伺服器(可選)",
|
||||
"proxy-server-placeholder": "https://<主機名稱>:<端口>",
|
||||
"note": "注意:",
|
||||
"proxy-instruction": "如果您將代理設定留空,將使用系統代理(僅適用於桌面版)",
|
||||
"password": "密碼",
|
||||
"password-placeholder": "密碼",
|
||||
"back": "返回",
|
||||
"finish-setup": "完成設定"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "正在同步",
|
||||
"successful": "已正確設定同步。初次同步可能需要一些時間。完成後,您將被重新導向至登入頁面。",
|
||||
"outstanding-items": "未完成的同步項目:",
|
||||
"outstanding-items-default": "無"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "未找到",
|
||||
"heading": "未找到"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "父級:",
|
||||
"clipped-from": "此筆記最初自 {{- url}} 剪下",
|
||||
"child-notes": "子筆記:",
|
||||
"no-content": "此筆記沒有內容。"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "週一",
|
||||
"tuesday": "週二",
|
||||
"wednesday": "週三",
|
||||
"thursday": "週四",
|
||||
"friday": "週五",
|
||||
"saturday": "週六",
|
||||
"sunday": "週日"
|
||||
},
|
||||
"months": {
|
||||
"january": "一月",
|
||||
"february": "二月",
|
||||
"march": "三月",
|
||||
"april": "四月",
|
||||
"may": "五月",
|
||||
"june": "六月",
|
||||
"july": "七月",
|
||||
"august": "八月",
|
||||
"september": "九月",
|
||||
"october": "十月",
|
||||
"november": "十一月",
|
||||
"december": "十二月"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "搜尋:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "尚未設定同步伺服器主機,請先設定同步。",
|
||||
"successful": "成功與同步伺服器握手,已開始同步。"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"zoom-in": "放大",
|
||||
"reset-zoom-level": "重設縮放比例",
|
||||
"zoom-out": "縮小",
|
||||
"copy-without-formatting": "以純文字複製",
|
||||
"force-save-revision": "強制儲存修改版本",
|
||||
"back-in-note-history": "返回筆記歷史",
|
||||
"forward-in-note-history": "前進筆記歷史",
|
||||
"jump-to-note": "跳轉至…",
|
||||
"scroll-to-active-note": "捲動至目前筆記",
|
||||
"quick-search": "快速搜尋",
|
||||
"search-in-subtree": "在子階層中搜尋",
|
||||
"expand-subtree": "展開子階層",
|
||||
"collapse-tree": "收摺筆記樹",
|
||||
"collapse-subtree": "收摺子階層",
|
||||
"sort-child-notes": "排序子筆記",
|
||||
"create-note-after": "於後面新建筆記",
|
||||
"create-note-into": "新建筆記至",
|
||||
"create-note-into-inbox": "新建筆記至收件匣",
|
||||
"delete-notes": "刪除筆記",
|
||||
"move-note-up": "上移筆記",
|
||||
"move-note-down": "下移筆記",
|
||||
"move-note-up-in-hierarchy": "上移筆記階層",
|
||||
"move-note-down-in-hierarchy": "下移筆記階層",
|
||||
"edit-note-title": "編輯筆記標題",
|
||||
"edit-branch-prefix": "編輯分支前綴",
|
||||
"clone-notes-to": "克隆筆記至",
|
||||
"move-notes-to": "移動筆記至",
|
||||
"copy-notes-to-clipboard": "複製筆記至剪貼簿",
|
||||
"paste-notes-from-clipboard": "從剪貼簿貼上筆記",
|
||||
"cut-notes-to-clipboard": "剪下筆記至剪貼簿",
|
||||
"select-all-notes-in-parent": "選擇父階層所有筆記",
|
||||
"add-note-above-to-selection": "加入上方筆記至選擇中",
|
||||
"add-note-below-to-selection": "加入下方筆記至選擇中",
|
||||
"duplicate-subtree": "複製子階層",
|
||||
"open-new-tab": "打開新分頁",
|
||||
"close-active-tab": "關閉目前分頁",
|
||||
"reopen-last-tab": "重新打開最後關閉的分頁",
|
||||
"activate-next-tab": "切換至下一分頁",
|
||||
"activate-previous-tab": "切換至上一分頁",
|
||||
"open-new-window": "打開新視窗",
|
||||
"toggle-system-tray-icon": "顯示 / 隱藏系統匣圖示",
|
||||
"toggle-zen-mode": "啟用 / 禁用禪模式",
|
||||
"switch-to-first-tab": "切換至第一個分頁",
|
||||
"switch-to-second-tab": "切換至第二個分頁",
|
||||
"switch-to-third-tab": "切換至第三個分頁",
|
||||
"switch-to-fourth-tab": "切換至第四個分頁",
|
||||
"switch-to-fifth-tab": "切換至第五個分頁",
|
||||
"switch-to-sixth-tab": "切換至第六個分頁",
|
||||
"switch-to-seventh-tab": "切換至第七個分頁",
|
||||
"switch-to-eighth-tab": "切換至第八個分頁",
|
||||
"switch-to-ninth-tab": "切換至第九個分頁",
|
||||
"switch-to-last-tab": "切換至第最後一個分頁",
|
||||
"show-note-source": "顯示筆記原始碼",
|
||||
"show-options": "顯示選項",
|
||||
"show-revisions": "顯示歷史版本",
|
||||
"show-recent-changes": "顯示最近更改",
|
||||
"show-sql-console": "顯示 SQL 控制台",
|
||||
"show-backend-log": "顯示後端日誌",
|
||||
"show-help": "顯示說明",
|
||||
"show-cheatsheet": "顯示快捷鍵指南",
|
||||
"add-link-to-text": "插入連結",
|
||||
"follow-link-under-cursor": "開啟游標處的連結",
|
||||
"insert-date-and-time-to-text": "插入日期和時間",
|
||||
"paste-markdown-into-text": "貼上 Markdown 文字",
|
||||
"cut-into-note": "剪下至筆記",
|
||||
"add-include-note-to-text": "新增內嵌筆記",
|
||||
"edit-read-only-note": "編輯唯讀筆記",
|
||||
"add-new-label": "新增標籤",
|
||||
"add-new-relation": "新增關聯",
|
||||
"toggle-ribbon-tab-classic-editor": "切換功能區分頁:經典編輯器",
|
||||
"toggle-ribbon-tab-basic-properties": "切換功能區分頁:基本屬性",
|
||||
"toggle-ribbon-tab-book-properties": "切換功能區分頁:書籍屬性",
|
||||
"toggle-ribbon-tab-file-properties": "切換功能區分頁:檔案屬性",
|
||||
"toggle-ribbon-tab-image-properties": "切換功能區分頁:圖片屬性",
|
||||
"toggle-ribbon-tab-owned-attributes": "切換功能區分頁:自有屬性",
|
||||
"toggle-ribbon-tab-inherited-attributes": "切換功能區分頁:繼承屬性",
|
||||
"toggle-ribbon-tab-promoted-attributes": "切換功能區分頁:升級屬性",
|
||||
"toggle-ribbon-tab-note-map": "切換功能區分頁:筆記地圖",
|
||||
"toggle-ribbon-tab-note-info": "切換功能區分頁:筆記資訊",
|
||||
"toggle-ribbon-tab-note-paths": "切換功能區分頁:筆記路徑",
|
||||
"toggle-ribbon-tab-similar-notes": "切換功能區分頁:相似筆記",
|
||||
"toggle-right-pane": "切換右側面板",
|
||||
"print-active-note": "列印目前筆記",
|
||||
"export-active-note-as-pdf": "匯出目前筆記為 PDF",
|
||||
"open-note-externally": "於外部打開筆記",
|
||||
"render-active-note": "渲染目前筆記",
|
||||
"run-active-note": "執行目前筆記",
|
||||
"toggle-note-hoisting": "切換聚焦筆記",
|
||||
"unhoist-note": "取消聚焦筆記",
|
||||
"reload-frontend-app": "重新載入前端程式",
|
||||
"open-developer-tools": "打開開發者工具",
|
||||
"find-in-text": "在文字中尋找",
|
||||
"toggle-left-pane": "切換左側面板",
|
||||
"toggle-full-screen": "切換全螢幕",
|
||||
"command-palette": "命令面板"
|
||||
},
|
||||
"weekdayNumber": "第 {weekNumber} 週",
|
||||
"quarterNumber": "第 {quarterNumber} 季度",
|
||||
"hidden-subtree": {
|
||||
"root-title": "隱藏的筆記",
|
||||
"search-history-title": "搜尋歷史",
|
||||
"note-map-title": "筆記地圖",
|
||||
"sql-console-history-title": "SQL 控制台歷史",
|
||||
"shared-notes-title": "分享筆記",
|
||||
"bulk-action-title": "批次操作",
|
||||
"backend-log-title": "後端日誌",
|
||||
"user-hidden-title": "隱藏的用戶",
|
||||
"launch-bar-templates-title": "啟動欄模版",
|
||||
"base-abstract-launcher-title": "基礎摘要啟動器",
|
||||
"command-launcher-title": "命令啟動器",
|
||||
"note-launcher-title": "筆記啟動器",
|
||||
"script-launcher-title": "腳本啟動器",
|
||||
"built-in-widget-title": "內建元件",
|
||||
"spacer-title": "分隔元件",
|
||||
"custom-widget-title": "自訂元件",
|
||||
"launch-bar-title": "啟動欄",
|
||||
"available-launchers-title": "可用啟動器",
|
||||
"go-to-previous-note-title": "跳轉至前一筆記",
|
||||
"go-to-next-note-title": "跳轉至後一筆記",
|
||||
"new-note-title": "新增筆記",
|
||||
"search-notes-title": "搜尋筆記",
|
||||
"jump-to-note-title": "跳轉至…",
|
||||
"calendar-title": "日曆",
|
||||
"recent-changes-title": "最近修改",
|
||||
"bookmarks-title": "書籤",
|
||||
"open-today-journal-note-title": "打開今日日記筆記",
|
||||
"quick-search-title": "快速搜尋",
|
||||
"protected-session-title": "受保護的作業階段",
|
||||
"sync-status-title": "同步狀態",
|
||||
"settings-title": "設定",
|
||||
"llm-chat-title": "與筆記聊天",
|
||||
"options-title": "選項",
|
||||
"appearance-title": "外觀",
|
||||
"shortcuts-title": "快捷鍵",
|
||||
"text-notes": "文字筆記",
|
||||
"code-notes-title": "程式碼筆記",
|
||||
"images-title": "圖片",
|
||||
"spellcheck-title": "拼寫檢查",
|
||||
"password-title": "密碼",
|
||||
"multi-factor-authentication-title": "多重身份驗證",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "備份",
|
||||
"sync-title": "同步",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "其他",
|
||||
"advanced-title": "進階",
|
||||
"visible-launchers-title": "可見啟動器",
|
||||
"user-guide": "用戶說明",
|
||||
"localization": "語言和區域",
|
||||
"inbox-title": "收件匣",
|
||||
"command-palette": "打開命令面板",
|
||||
"zen-mode": "禪模式",
|
||||
"tab-switcher-title": "切換分頁"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "新增筆記",
|
||||
"duplicate-note-suffix": "(重複)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "後端日誌文件 '{{ fileName }}' 暫不存在。",
|
||||
"reading-log-failed": "讀取後端日誌文件 '{{ fileName }}' 失敗。"
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "無法顯示此類型筆記。"
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF 文件 (*.pdf)",
|
||||
"unable-to-export-message": "目前筆記無法被匯出為 PDF 。",
|
||||
"unable-to-export-title": "無法匯出為 PDF",
|
||||
"unable-to-save-message": "所選檔案無法被寫入。請重試或選擇其他路徑。",
|
||||
"unable-to-print": "無法列印筆記"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium 筆記",
|
||||
"close": "退出 Trilium",
|
||||
"recents": "最近筆記",
|
||||
"bookmarks": "書籤",
|
||||
"today": "打開今日日記筆記",
|
||||
"new-note": "新增筆記",
|
||||
"show-windows": "顯示視窗",
|
||||
"open_new_window": "打開新視窗"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "您目前的版本不支援直接遷移。請先更新至最新的 v0.60.4 然後再到此版本。",
|
||||
"error_message": "遷移至版本 {{version}} 時發生錯誤:{{stack}}",
|
||||
"wrong_db_version": "資料庫版本({{version}})比程式預期({{targetVersion}})新,這意味著它由一個更新且不相容的 Trilium 版本所創建。升級至最新版的 Trilium 以解決此問題。"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "錯誤"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "網站主題",
|
||||
"search_placeholder": "搜尋…",
|
||||
"image_alt": "文章圖片",
|
||||
"last-updated": "最近於 {{- date}} 更新",
|
||||
"subpages": "子頁面:",
|
||||
"on-this-page": "本頁內容",
|
||||
"expand": "展開"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "文字片段",
|
||||
"description": "描述",
|
||||
"list-view": "列表顯示",
|
||||
"grid-view": "網格顯示",
|
||||
"calendar": "日曆",
|
||||
"table": "表格",
|
||||
"geo-map": "地理地圖",
|
||||
"start-date": "開始日期",
|
||||
"end-date": "結束日期",
|
||||
"start-time": "開始時間",
|
||||
"end-time": "結束時間",
|
||||
"geolocation": "地理位置",
|
||||
"built-in-templates": "內建模版",
|
||||
"board": "看板",
|
||||
"status": "狀態",
|
||||
"board_note_first": "第一個筆記",
|
||||
"board_note_second": "第二個筆記",
|
||||
"board_note_third": "第三個筆記",
|
||||
"board_status_todo": "待辦",
|
||||
"board_status_progress": "進行中",
|
||||
"board_status_done": "已完成",
|
||||
"presentation": "簡報",
|
||||
"presentation_slide": "簡報投影片",
|
||||
"presentation_slide_first": "第一張投影片",
|
||||
"presentation_slide_second": "第二張投影片",
|
||||
"background": "背景"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "資料庫尚未初始化,請依螢幕指示操作。",
|
||||
"db_not_initialized_server": "資料庫尚未初始化,請前往設定頁面 http://[your-server-host]:{{port}} 查看如何初始化 Trilium。"
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "已經有一個執行中的實例,正在將焦點切換到該實例。"
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"open-jump-to-note-dialog": "打開「跳轉至筆記」對話方塊",
|
||||
"search-in-subtree": "在目前筆記的子階層中搜尋筆記",
|
||||
"expand-subtree": "展開目前筆記的子階層",
|
||||
"collapse-tree": "收摺全部的筆記樹",
|
||||
"collapse-subtree": "收摺目前筆記的子階層",
|
||||
"sort-child-notes": "排序子筆記",
|
||||
"creating-and-moving-notes": "新增和移動筆記",
|
||||
"create-note-into-inbox": "在收件匣(如果已定義)或日記中新增筆記",
|
||||
"delete-note": "刪除筆記",
|
||||
"move-note-up": "上移筆記",
|
||||
"move-note-down": "下移筆記",
|
||||
"move-note-up-in-hierarchy": "將筆記層級上移",
|
||||
"move-note-down-in-hierarchy": "將筆記層級下移",
|
||||
"edit-note-title": "從筆記樹跳轉至筆記內容並編輯標題",
|
||||
"edit-branch-prefix": "顯示編輯分支前綴對話方塊",
|
||||
"note-clipboard": "筆記剪貼簿",
|
||||
"copy-notes-to-clipboard": "複製所選的筆記至剪貼簿",
|
||||
"paste-notes-from-clipboard": "從剪貼簿貼上筆記至目前筆記中",
|
||||
"cut-notes-to-clipboard": "剪下所選的筆記至剪貼簿",
|
||||
"select-all-notes-in-parent": "選擇目前筆記級別的所有筆記",
|
||||
"add-note-above-to-the-selection": "加入上方筆記至選擇中",
|
||||
"add-note-below-to-selection": "加入下方筆記至選擇中",
|
||||
"duplicate-subtree": "複製子階層",
|
||||
"tabs-and-windows": "分頁和視窗",
|
||||
"open-new-tab": "打開新分頁",
|
||||
"close-active-tab": "關閉使用中分頁",
|
||||
"reopen-last-tab": "重新打開最後關閉的分頁",
|
||||
"activate-next-tab": "切換至右側分頁",
|
||||
"activate-previous-tab": "切換至左側分頁",
|
||||
"open-new-window": "打開新空白視窗",
|
||||
"toggle-tray": "從系統匣顯示 / 隱藏應用程式",
|
||||
"first-tab": "切換至列表中第一個分頁",
|
||||
"second-tab": "切換至列表中第二個分頁",
|
||||
"third-tab": "切換至列表中第三個分頁",
|
||||
"fourth-tab": "切換至列表中第四個分頁",
|
||||
"fifth-tab": "切換至列表中第五個分頁",
|
||||
"sixth-tab": "切換至列表中第六個分頁",
|
||||
"seventh-tab": "切換至列表中第七個分頁",
|
||||
"eight-tab": "切換至列表中第八個分頁",
|
||||
"ninth-tab": "切換至列表中第九個分頁",
|
||||
"last-tab": "切換至列表中最後一個分頁",
|
||||
"dialogs": "對話方塊",
|
||||
"show-note-source": "顯示筆記來源對話方塊",
|
||||
"show-options": "打開選項頁面",
|
||||
"show-revisions": "顯示筆記歷史版本對話方塊",
|
||||
"show-recent-changes": "顯示最近更改對話方塊",
|
||||
"show-sql-console": "打開 SQL 控制台頁面",
|
||||
"show-backend-log": "打開後端日誌頁面",
|
||||
"text-note-operations": "文字筆記操作",
|
||||
"add-link-to-text": "打開對話方塊以插入連結",
|
||||
"follow-link-under-cursor": "開啟游標處的連結",
|
||||
"insert-date-and-time-to-text": "插入目前日期和時間",
|
||||
"paste-markdown-into-text": "將剪貼簿中的 Markdown 文字貼上",
|
||||
"cut-into-note": "從目前筆記剪下選擇的部分並新增至子筆記",
|
||||
"add-include-note-to-text": "打開對話方塊以內嵌筆記",
|
||||
"edit-readonly-note": "編輯唯讀筆記",
|
||||
"attributes-labels-and-relations": "屬性(標籤和關聯)",
|
||||
"add-new-label": "新增新標籤",
|
||||
"create-new-relation": "新增新關聯",
|
||||
"ribbon-tabs": "功能區分頁",
|
||||
"toggle-basic-properties": "切換基本屬性",
|
||||
"toggle-file-properties": "切換檔案屬性",
|
||||
"toggle-image-properties": "切換圖像屬性",
|
||||
"toggle-owned-attributes": "切換自有屬性",
|
||||
"toggle-inherited-attributes": "切換繼承屬性",
|
||||
"toggle-promoted-attributes": "切換升級的屬性",
|
||||
"toggle-link-map": "切換連結地圖",
|
||||
"toggle-note-info": "切換筆記資訊",
|
||||
"toggle-note-paths": "切換筆記路徑",
|
||||
"toggle-similar-notes": "切換相似筆記",
|
||||
"other": "其他",
|
||||
"toggle-right-pane": "切換右側面板的顯示,包括目錄和高亮",
|
||||
"print-active-note": "列印目前筆記",
|
||||
"open-note-externally": "以預設應用程式打開筆記檔案",
|
||||
"render-active-note": "渲染(重新渲染)目前筆記",
|
||||
"run-active-note": "執行目前的 JavaScript(前端 / 後端)程式碼筆記",
|
||||
"toggle-note-hoisting": "聚焦目前筆記",
|
||||
"unhoist": "取消任何聚焦",
|
||||
"reload-frontend-app": "重新載入前端應用",
|
||||
"open-dev-tools": "打開開發者工具",
|
||||
"toggle-left-note-tree-panel": "切換左側(筆記樹)面板",
|
||||
"toggle-full-screen": "切換全螢幕",
|
||||
"zoom-out": "縮小",
|
||||
"zoom-in": "放大",
|
||||
"note-navigation": "筆記導航",
|
||||
"reset-zoom-level": "重設縮放比例",
|
||||
"copy-without-formatting": "以純文字複製所選文字",
|
||||
"force-save-revision": "強制新增 / 儲存目前筆記的新版本",
|
||||
"show-help": "顯示用戶說明",
|
||||
"toggle-book-properties": "切換集合屬性",
|
||||
"back-in-note-history": "跳轉至歷史記錄中的上一個筆記",
|
||||
"forward-in-note-history": "跳轉至歷史記錄中的下一個筆記",
|
||||
"open-command-palette": "打開命令面板",
|
||||
"scroll-to-active-note": "捲動筆記樹至目前筆記",
|
||||
"quick-search": "開啟快速搜尋列",
|
||||
"create-note-after": "新增筆記於目前筆記之後",
|
||||
"create-note-into": "新增目前筆記的子筆記",
|
||||
"clone-notes-to": "克隆所選的筆記至",
|
||||
"move-notes-to": "移動所選的筆記至",
|
||||
"show-cheatsheet": "顯示常用鍵盤快捷鍵",
|
||||
"find-in-text": "切換搜尋面板",
|
||||
"toggle-classic-editor-toolbar": "切換固定工具列編輯器的格式分頁",
|
||||
"export-as-pdf": "匯出目前筆記為 PDF",
|
||||
"toggle-zen-mode": "啟用 / 禁用禪模式(極簡界面以專注編輯)"
|
||||
},
|
||||
"login": {
|
||||
"title": "登入",
|
||||
"heading": "Trilium 登入",
|
||||
"incorrect-password": "密碼不正確。請再試一次。",
|
||||
"password": "密碼",
|
||||
"remember-me": "記住我",
|
||||
"button": "登入",
|
||||
"incorrect-totp": "TOTP 不正確。請再試一次。",
|
||||
"sign_in_with_sso": "用 {{ ssoIssuerName }} 登入"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "設定密碼",
|
||||
"heading": "設定密碼",
|
||||
"description": "在由網頁開始使用 Trilium 之前,您需要先設定一個密碼並用此密碼登入。",
|
||||
"password": "密碼",
|
||||
"password-confirmation": "確認密碼",
|
||||
"button": "設定密碼"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Trilium 筆記設定",
|
||||
"new-document": "我是新用戶,我想為我的筆記建立一個新的 Trilium 文件",
|
||||
"sync-from-desktop": "我已經擁有桌面版本,想設定與它進行同步",
|
||||
"sync-from-server": "我已經擁有伺服器版本,想設定與它進行同步",
|
||||
"next": "下一步",
|
||||
"init-in-progress": "文件正在初始化",
|
||||
"redirecting": "您即將被重新導向至應用程式。",
|
||||
"title": "設定"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "從桌面版同步",
|
||||
"description": "此設定需要從桌面版本啟動:",
|
||||
"step1": "打開您的桌面版 Trilium 筆記。",
|
||||
"step2": "從 Trilium 選單中,點擊「選項」。",
|
||||
"step3": "點擊「同步」類別。",
|
||||
"step4": "將伺服器版網址更改為:{{- host}} 並點擊儲存。",
|
||||
"step5": "點擊「測試同步」以驗證連接是否成功。",
|
||||
"step6": "完成這些步驟後,點擊 {{- link}}。",
|
||||
"step6-here": "這裡"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "從伺服器同步",
|
||||
"instructions": "請在下方輸入 Trilium 伺服器網址和密碼。這將從伺服器下載整個 Trilium 數據庫檔案並同步。取決於數據庫大小和您的連接速度,這可能需要一段時間。",
|
||||
"server-host": "Trilium 伺服器網址",
|
||||
"server-host-placeholder": "https://<主機名稱>:<端口>",
|
||||
"proxy-server": "代理伺服器(可選)",
|
||||
"proxy-server-placeholder": "https://<主機名稱>:<端口>",
|
||||
"note": "注意:",
|
||||
"proxy-instruction": "如果您將代理設定留空,將使用系統代理(僅適用於桌面版)",
|
||||
"password": "密碼",
|
||||
"password-placeholder": "密碼",
|
||||
"back": "返回",
|
||||
"finish-setup": "完成設定"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "正在同步",
|
||||
"successful": "已正確設定同步。初次同步可能需要一些時間。完成後,您將被重新導向至登入頁面。",
|
||||
"outstanding-items": "未完成的同步項目:",
|
||||
"outstanding-items-default": "無"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "未找到",
|
||||
"heading": "未找到"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "父級:",
|
||||
"clipped-from": "此筆記最初自 {{- url}} 剪下",
|
||||
"child-notes": "子筆記:",
|
||||
"no-content": "此筆記沒有內容。"
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "週一",
|
||||
"tuesday": "週二",
|
||||
"wednesday": "週三",
|
||||
"thursday": "週四",
|
||||
"friday": "週五",
|
||||
"saturday": "週六",
|
||||
"sunday": "週日"
|
||||
},
|
||||
"months": {
|
||||
"january": "一月",
|
||||
"february": "二月",
|
||||
"march": "三月",
|
||||
"april": "四月",
|
||||
"may": "五月",
|
||||
"june": "六月",
|
||||
"july": "七月",
|
||||
"august": "八月",
|
||||
"september": "九月",
|
||||
"october": "十月",
|
||||
"november": "十一月",
|
||||
"december": "十二月"
|
||||
},
|
||||
"special_notes": {
|
||||
"search_prefix": "搜尋:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "尚未設定同步伺服器主機,請先設定同步。",
|
||||
"successful": "成功與同步伺服器握手,已開始同步。"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"zoom-in": "放大",
|
||||
"reset-zoom-level": "重設縮放比例",
|
||||
"zoom-out": "縮小",
|
||||
"copy-without-formatting": "以純文字複製",
|
||||
"force-save-revision": "強制儲存修改版本",
|
||||
"back-in-note-history": "返回筆記歷史",
|
||||
"forward-in-note-history": "前進筆記歷史",
|
||||
"jump-to-note": "跳轉至…",
|
||||
"scroll-to-active-note": "捲動至目前筆記",
|
||||
"quick-search": "快速搜尋",
|
||||
"search-in-subtree": "在子階層中搜尋",
|
||||
"expand-subtree": "展開子階層",
|
||||
"collapse-tree": "收摺筆記樹",
|
||||
"collapse-subtree": "收摺子階層",
|
||||
"sort-child-notes": "排序子筆記",
|
||||
"create-note-after": "於後面新建筆記",
|
||||
"create-note-into": "新建筆記至",
|
||||
"create-note-into-inbox": "新建筆記至收件匣",
|
||||
"delete-notes": "刪除筆記",
|
||||
"move-note-up": "上移筆記",
|
||||
"move-note-down": "下移筆記",
|
||||
"move-note-up-in-hierarchy": "上移筆記階層",
|
||||
"move-note-down-in-hierarchy": "下移筆記階層",
|
||||
"edit-note-title": "編輯筆記標題",
|
||||
"edit-branch-prefix": "編輯分支前綴",
|
||||
"clone-notes-to": "克隆筆記至",
|
||||
"move-notes-to": "移動筆記至",
|
||||
"copy-notes-to-clipboard": "複製筆記至剪貼簿",
|
||||
"paste-notes-from-clipboard": "從剪貼簿貼上筆記",
|
||||
"cut-notes-to-clipboard": "剪下筆記至剪貼簿",
|
||||
"select-all-notes-in-parent": "選擇父階層所有筆記",
|
||||
"add-note-above-to-selection": "加入上方筆記至選擇中",
|
||||
"add-note-below-to-selection": "加入下方筆記至選擇中",
|
||||
"duplicate-subtree": "複製子階層",
|
||||
"open-new-tab": "打開新分頁",
|
||||
"close-active-tab": "關閉目前分頁",
|
||||
"reopen-last-tab": "重新打開最後關閉的分頁",
|
||||
"activate-next-tab": "切換至下一分頁",
|
||||
"activate-previous-tab": "切換至上一分頁",
|
||||
"open-new-window": "打開新視窗",
|
||||
"toggle-system-tray-icon": "顯示 / 隱藏系統匣圖示",
|
||||
"toggle-zen-mode": "啟用 / 禁用禪模式",
|
||||
"switch-to-first-tab": "切換至第一個分頁",
|
||||
"switch-to-second-tab": "切換至第二個分頁",
|
||||
"switch-to-third-tab": "切換至第三個分頁",
|
||||
"switch-to-fourth-tab": "切換至第四個分頁",
|
||||
"switch-to-fifth-tab": "切換至第五個分頁",
|
||||
"switch-to-sixth-tab": "切換至第六個分頁",
|
||||
"switch-to-seventh-tab": "切換至第七個分頁",
|
||||
"switch-to-eighth-tab": "切換至第八個分頁",
|
||||
"switch-to-ninth-tab": "切換至第九個分頁",
|
||||
"switch-to-last-tab": "切換至第最後一個分頁",
|
||||
"show-note-source": "顯示筆記原始碼",
|
||||
"show-options": "顯示選項",
|
||||
"show-revisions": "顯示歷史版本",
|
||||
"show-recent-changes": "顯示最近更改",
|
||||
"show-sql-console": "顯示 SQL 控制台",
|
||||
"show-backend-log": "顯示後端日誌",
|
||||
"show-help": "顯示說明",
|
||||
"show-cheatsheet": "顯示快捷鍵指南",
|
||||
"add-link-to-text": "插入連結",
|
||||
"follow-link-under-cursor": "開啟游標處的連結",
|
||||
"insert-date-and-time-to-text": "插入日期和時間",
|
||||
"paste-markdown-into-text": "貼上 Markdown 文字",
|
||||
"cut-into-note": "剪下至筆記",
|
||||
"add-include-note-to-text": "新增內嵌筆記",
|
||||
"edit-read-only-note": "編輯唯讀筆記",
|
||||
"add-new-label": "新增標籤",
|
||||
"add-new-relation": "新增關聯",
|
||||
"toggle-ribbon-tab-classic-editor": "切換功能區分頁:經典編輯器",
|
||||
"toggle-ribbon-tab-basic-properties": "切換功能區分頁:基本屬性",
|
||||
"toggle-ribbon-tab-book-properties": "切換功能區分頁:書籍屬性",
|
||||
"toggle-ribbon-tab-file-properties": "切換功能區分頁:檔案屬性",
|
||||
"toggle-ribbon-tab-image-properties": "切換功能區分頁:圖片屬性",
|
||||
"toggle-ribbon-tab-owned-attributes": "切換功能區分頁:自有屬性",
|
||||
"toggle-ribbon-tab-inherited-attributes": "切換功能區分頁:繼承屬性",
|
||||
"toggle-ribbon-tab-promoted-attributes": "切換功能區分頁:升級屬性",
|
||||
"toggle-ribbon-tab-note-map": "切換功能區分頁:筆記地圖",
|
||||
"toggle-ribbon-tab-note-info": "切換功能區分頁:筆記資訊",
|
||||
"toggle-ribbon-tab-note-paths": "切換功能區分頁:筆記路徑",
|
||||
"toggle-ribbon-tab-similar-notes": "切換功能區分頁:相似筆記",
|
||||
"toggle-right-pane": "切換右側面板",
|
||||
"print-active-note": "列印目前筆記",
|
||||
"export-active-note-as-pdf": "匯出目前筆記為 PDF",
|
||||
"open-note-externally": "於外部打開筆記",
|
||||
"render-active-note": "渲染目前筆記",
|
||||
"run-active-note": "執行目前筆記",
|
||||
"toggle-note-hoisting": "切換聚焦筆記",
|
||||
"unhoist-note": "取消聚焦筆記",
|
||||
"reload-frontend-app": "重新載入前端程式",
|
||||
"open-developer-tools": "打開開發者工具",
|
||||
"find-in-text": "在文字中尋找",
|
||||
"toggle-left-pane": "切換左側面板",
|
||||
"toggle-full-screen": "切換全螢幕",
|
||||
"command-palette": "命令面板"
|
||||
},
|
||||
"weekdayNumber": "第 {weekNumber} 週",
|
||||
"quarterNumber": "第 {quarterNumber} 季度",
|
||||
"hidden-subtree": {
|
||||
"root-title": "隱藏的筆記",
|
||||
"search-history-title": "搜尋歷史",
|
||||
"note-map-title": "筆記地圖",
|
||||
"sql-console-history-title": "SQL 控制台歷史",
|
||||
"shared-notes-title": "分享筆記",
|
||||
"bulk-action-title": "批次操作",
|
||||
"backend-log-title": "後端日誌",
|
||||
"user-hidden-title": "隱藏的用戶",
|
||||
"launch-bar-templates-title": "啟動欄模版",
|
||||
"base-abstract-launcher-title": "基礎摘要啟動器",
|
||||
"command-launcher-title": "命令啟動器",
|
||||
"note-launcher-title": "筆記啟動器",
|
||||
"script-launcher-title": "腳本啟動器",
|
||||
"built-in-widget-title": "內建元件",
|
||||
"spacer-title": "分隔元件",
|
||||
"custom-widget-title": "自訂元件",
|
||||
"launch-bar-title": "啟動欄",
|
||||
"available-launchers-title": "可用啟動器",
|
||||
"go-to-previous-note-title": "跳轉至前一筆記",
|
||||
"go-to-next-note-title": "跳轉至後一筆記",
|
||||
"new-note-title": "新增筆記",
|
||||
"search-notes-title": "搜尋筆記",
|
||||
"jump-to-note-title": "跳轉至…",
|
||||
"calendar-title": "日曆",
|
||||
"recent-changes-title": "最近修改",
|
||||
"bookmarks-title": "書籤",
|
||||
"open-today-journal-note-title": "打開今日日記筆記",
|
||||
"quick-search-title": "快速搜尋",
|
||||
"protected-session-title": "受保護的作業階段",
|
||||
"sync-status-title": "同步狀態",
|
||||
"settings-title": "設定",
|
||||
"options-title": "選項",
|
||||
"appearance-title": "外觀",
|
||||
"shortcuts-title": "快捷鍵",
|
||||
"text-notes": "文字筆記",
|
||||
"code-notes-title": "程式碼筆記",
|
||||
"images-title": "圖片",
|
||||
"spellcheck-title": "拼寫檢查",
|
||||
"password-title": "密碼",
|
||||
"multi-factor-authentication-title": "多重身份驗證",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "備份",
|
||||
"sync-title": "同步",
|
||||
"other": "其他",
|
||||
"advanced-title": "進階",
|
||||
"visible-launchers-title": "可見啟動器",
|
||||
"user-guide": "用戶說明",
|
||||
"localization": "語言和區域",
|
||||
"inbox-title": "收件匣",
|
||||
"command-palette": "打開命令面板",
|
||||
"zen-mode": "禪模式",
|
||||
"tab-switcher-title": "切換分頁"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "新增筆記",
|
||||
"duplicate-note-suffix": "(重複)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "後端日誌文件 '{{ fileName }}' 暫不存在。",
|
||||
"reading-log-failed": "讀取後端日誌文件 '{{ fileName }}' 失敗。"
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "無法顯示此類型筆記。"
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF 文件 (*.pdf)",
|
||||
"unable-to-export-message": "目前筆記無法被匯出為 PDF 。",
|
||||
"unable-to-export-title": "無法匯出為 PDF",
|
||||
"unable-to-save-message": "所選檔案無法被寫入。請重試或選擇其他路徑。",
|
||||
"unable-to-print": "無法列印筆記"
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium 筆記",
|
||||
"close": "退出 Trilium",
|
||||
"recents": "最近筆記",
|
||||
"bookmarks": "書籤",
|
||||
"today": "打開今日日記筆記",
|
||||
"new-note": "新增筆記",
|
||||
"show-windows": "顯示視窗",
|
||||
"open_new_window": "打開新視窗"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "您目前的版本不支援直接遷移。請先更新至最新的 v0.60.4 然後再到此版本。",
|
||||
"error_message": "遷移至版本 {{version}} 時發生錯誤:{{stack}}",
|
||||
"wrong_db_version": "資料庫版本({{version}})比程式預期({{targetVersion}})新,這意味著它由一個更新且不相容的 Trilium 版本所創建。升級至最新版的 Trilium 以解決此問題。"
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "錯誤"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "網站主題",
|
||||
"search_placeholder": "搜尋…",
|
||||
"image_alt": "文章圖片",
|
||||
"last-updated": "最近於 {{- date}} 更新",
|
||||
"subpages": "子頁面:",
|
||||
"on-this-page": "本頁內容",
|
||||
"expand": "展開"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "文字片段",
|
||||
"description": "描述",
|
||||
"list-view": "列表顯示",
|
||||
"grid-view": "網格顯示",
|
||||
"calendar": "日曆",
|
||||
"table": "表格",
|
||||
"geo-map": "地理地圖",
|
||||
"start-date": "開始日期",
|
||||
"end-date": "結束日期",
|
||||
"start-time": "開始時間",
|
||||
"end-time": "結束時間",
|
||||
"geolocation": "地理位置",
|
||||
"built-in-templates": "內建模版",
|
||||
"board": "看板",
|
||||
"status": "狀態",
|
||||
"board_note_first": "第一個筆記",
|
||||
"board_note_second": "第二個筆記",
|
||||
"board_note_third": "第三個筆記",
|
||||
"board_status_todo": "待辦",
|
||||
"board_status_progress": "進行中",
|
||||
"board_status_done": "已完成",
|
||||
"presentation": "簡報",
|
||||
"presentation_slide": "簡報投影片",
|
||||
"presentation_slide_first": "第一張投影片",
|
||||
"presentation_slide_second": "第二張投影片",
|
||||
"background": "背景"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "資料庫尚未初始化,請依螢幕指示操作。",
|
||||
"db_not_initialized_server": "資料庫尚未初始化,請前往設定頁面 http://[your-server-host]:{{port}} 查看如何初始化 Trilium。"
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "已經有一個執行中的實例,正在將焦點切換到該實例。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,434 +1,432 @@
|
||||
{
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Перейти до попередньої нотатки в історії",
|
||||
"forward-in-note-history": "Перейти до наступної нотатки в історії",
|
||||
"open-command-palette": "Відкрити палітру команд",
|
||||
"scroll-to-active-note": "Прокрутити дерево до активної нотатки",
|
||||
"quick-search": "Активувати панель швидкого пошуку",
|
||||
"search-in-subtree": "Пошук нотаток в піддереві активної нотатки",
|
||||
"expand-subtree": "Розгорнути піддерево поточної нотатки",
|
||||
"collapse-tree": "Згорнути все дерево нотаток",
|
||||
"open-jump-to-note-dialog": "Відкрити діалог \"Перейти до нотатки\"",
|
||||
"collapse-subtree": "Згорнути піддерево поточної нотатки",
|
||||
"sort-child-notes": "Сортувати дочірні нотатки",
|
||||
"creating-and-moving-notes": "Створення та переміщення нотаток",
|
||||
"create-note-after": "Створити нотатку після активної нотатки",
|
||||
"create-note-into": "Створити нотатку як дочірню до активної нотатки",
|
||||
"create-note-into-inbox": "Створити нотатку у вхідні (якщо визначено) або денну нотатку",
|
||||
"delete-note": "Видалити нотатку",
|
||||
"move-note-up": "Перемістити нотатку вгору",
|
||||
"move-note-down": "Перемістити нотатку вниз",
|
||||
"move-note-up-in-hierarchy": "Перемістити нотатку вище в ієрархії",
|
||||
"move-note-down-in-hierarchy": "Перемістити нотатку вниз в ієрархії",
|
||||
"edit-note-title": "Перейти від дерева до деталей нотатки та редагувати заголовок",
|
||||
"edit-branch-prefix": "Показати діалог \"Редагувати префікс гілки\"",
|
||||
"clone-notes-to": "Клонувати вибрані нотатки",
|
||||
"move-notes-to": "Перемістити вибрані нотатки",
|
||||
"note-clipboard": "Буфер обміну нотатки",
|
||||
"copy-notes-to-clipboard": "Копіювати вибрані нотатки в буфер обміну",
|
||||
"paste-notes-from-clipboard": "Вставити нотатки з буферу обміну в активну нотатку",
|
||||
"cut-notes-to-clipboard": "Вирізати вибрані нотатки в буфер обміну",
|
||||
"select-all-notes-in-parent": "Вибрати всі нотатки з поточного рівня нотаток",
|
||||
"add-note-above-to-the-selection": "Додати нотатку вище до вибраного",
|
||||
"add-note-below-to-selection": "Додати нотатку нижче до вибраного",
|
||||
"duplicate-subtree": "Дублювання піддерева",
|
||||
"tabs-and-windows": "Вкладки & Вікна",
|
||||
"open-new-tab": "Відкрити нову вкладку",
|
||||
"close-active-tab": "Закрити активну вкладку",
|
||||
"reopen-last-tab": "Відкрити останню закриту вкладку",
|
||||
"activate-next-tab": "Активувати вкладку праворуч",
|
||||
"activate-previous-tab": "Активувати вкладку ліворуч",
|
||||
"open-new-window": "Відкрити нове порожнє вікно",
|
||||
"toggle-tray": "Показати/приховати програму в системному треї",
|
||||
"first-tab": "Активувати першу вкладку у списку",
|
||||
"second-tab": "Активувати другу вкладку у списку",
|
||||
"third-tab": "Активувати третю вкладку у списку",
|
||||
"fourth-tab": "Активувати четверту вкладку у списку",
|
||||
"fifth-tab": "Активувати п'яту вкладку у списку",
|
||||
"sixth-tab": "Активувати шосту вкладку у списку",
|
||||
"seventh-tab": "Активувати сьому вкладку у списку",
|
||||
"eight-tab": "Активувати восьму вкладку у списку",
|
||||
"ninth-tab": "Активувати дев'яту вкладку у списку",
|
||||
"last-tab": "Активувати останню вкладку у списку",
|
||||
"dialogs": "Діалоги",
|
||||
"show-note-source": "Показати діалог \"Джерело нотатки\"",
|
||||
"show-options": "Відкрити сторінку \"Параметри\"",
|
||||
"show-revisions": "Показати діалог \"Версії нотаток\"",
|
||||
"show-recent-changes": "Показати діалог \"Останні зміни\"",
|
||||
"show-sql-console": "Відкрити сторінку \"Консоль SQL\"",
|
||||
"show-backend-log": "Відкрити сторінку \"Backend Log\"",
|
||||
"show-help": "Відкрити вбудований Посібник користувача",
|
||||
"show-cheatsheet": "Показати вікно зі стандартними діями клавіатури",
|
||||
"text-note-operations": "Дії з текстовими нотатками",
|
||||
"add-link-to-text": "Відкрити діалог для додавання посилання до тексту",
|
||||
"follow-link-under-cursor": "Перехід за посиланням, на якому знаходиться курсор",
|
||||
"insert-date-and-time-to-text": "Вставити поточну дату & час у текст",
|
||||
"paste-markdown-into-text": "Вставити Markdown з буфера обміну в текстову нотатку",
|
||||
"cut-into-note": "Вирізати виділений фрагмент із поточної нотатки та створити піднотатку з виділеним текстом",
|
||||
"add-include-note-to-text": "Відкрити діалог для додавання нотатки",
|
||||
"edit-readonly-note": "Редагувати нотатку, доступну тільки для читання",
|
||||
"attributes-labels-and-relations": "Атрибути (мітки & зв'язки)",
|
||||
"add-new-label": "Створити нову мітку",
|
||||
"create-new-relation": "Створити новий зв'язок",
|
||||
"ribbon-tabs": "Вкладки стрічки",
|
||||
"toggle-basic-properties": "Увімкнути Основні Властивості",
|
||||
"toggle-file-properties": "Увімкнути Властивості Файлу",
|
||||
"toggle-image-properties": "Увімкнути Властивості Зображення",
|
||||
"toggle-owned-attributes": "Увімкнути Власні Атрибути",
|
||||
"toggle-inherited-attributes": "Увімкнути Успадковані Атрибути",
|
||||
"toggle-promoted-attributes": "Увімкнути Просунуті Атрибути",
|
||||
"toggle-link-map": "Увімкнути Карта Посилань",
|
||||
"toggle-note-info": "Увімкнути Інформація про Нотатку",
|
||||
"toggle-note-paths": "Увімкнути Шляхи Нотатки",
|
||||
"toggle-similar-notes": "Увімкнути Схожі Нотатки",
|
||||
"other": "Інше",
|
||||
"toggle-right-pane": "Увімкнути відображення правої панелі, яка містить Зміст та Основні моменти",
|
||||
"print-active-note": "Друк активної нотатки",
|
||||
"open-note-externally": "Відкрити нотатку як файл у програмі за замовчуванням",
|
||||
"render-active-note": "Рендеринг (перерендерінг) активної нотатки",
|
||||
"run-active-note": "Виконати активний код JavaScript (frontend/backend) нотатки з кодом",
|
||||
"toggle-note-hoisting": "Увімкнути хостинг активної нотатки",
|
||||
"unhoist": "Відкріпити з будь-якого місця",
|
||||
"reload-frontend-app": "Перезавантажити інтерфейс",
|
||||
"open-dev-tools": "Відкрити інструменти розробника",
|
||||
"find-in-text": "Увімкнути панель пошуку",
|
||||
"toggle-left-note-tree-panel": "Увімкнути ліву панель (дерево нотатки)",
|
||||
"toggle-full-screen": "Увімкнути повноекранний режим",
|
||||
"zoom-out": "Зменшити масштаб",
|
||||
"zoom-in": "Збільшити масштаб",
|
||||
"note-navigation": "Навігація по нотатках",
|
||||
"reset-zoom-level": "Скинути рівень масштабування",
|
||||
"copy-without-formatting": "Копіювати виділений текст без форматування",
|
||||
"force-save-revision": "Примусове створення/збереження нової версії активної нотатки",
|
||||
"toggle-book-properties": "Увімкнути Властивості Колекції",
|
||||
"toggle-classic-editor-toolbar": "Увімкнути вкладку Форматування для редактора з фіксованою панеллю інструментів",
|
||||
"export-as-pdf": "Експортувати поточну нотатку в PDF",
|
||||
"toggle-zen-mode": "Вмикає/вимикає Дзен-режим (мінімальний інтерфейс сфокусованого редагування)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Назад в Історії нотаток",
|
||||
"forward-in-note-history": "Вперед в Історії нотаток",
|
||||
"jump-to-note": "Перейти до...",
|
||||
"command-palette": "Палітра Команд",
|
||||
"scroll-to-active-note": "Прокрутити до Активної нотатки",
|
||||
"quick-search": "Швидкий Пошук",
|
||||
"search-in-subtree": "Пошук у Піддереві",
|
||||
"expand-subtree": "Розгорнути Піддерево",
|
||||
"collapse-tree": "Згорнути Дерево",
|
||||
"collapse-subtree": "Згорнути Піддерево",
|
||||
"sort-child-notes": "Сортувати Дочірні нотатки",
|
||||
"create-note-after": "Створити Нотатку після",
|
||||
"create-note-into": "Створити Нотатку в",
|
||||
"create-note-into-inbox": "Створити Нотатку у Вхідні",
|
||||
"delete-notes": "Видалити Нотатки",
|
||||
"move-note-up": "Перемістити Нотатку вгору",
|
||||
"move-note-down": "Перемістити Нотатку вниз",
|
||||
"move-note-up-in-hierarchy": "Перемістити Нотатку вгору в Ієрархії",
|
||||
"move-note-down-in-hierarchy": "Перемістити Нотатку вниз в Ієрархії",
|
||||
"edit-note-title": "Редагувати Заголовок нотатки",
|
||||
"edit-branch-prefix": "Редагувати префікс Гілки",
|
||||
"clone-notes-to": "Клонувати нотатки до",
|
||||
"move-notes-to": "Перемістити нотатки до",
|
||||
"copy-notes-to-clipboard": "Копіювати нотатки в Буфер обміну",
|
||||
"paste-notes-from-clipboard": "Вставити нотатки з Буфера обміну",
|
||||
"cut-notes-to-clipboard": "Вирізати нотатки в Буфер обміну",
|
||||
"select-all-notes-in-parent": "Вибрати всі нотатки в Батьківські",
|
||||
"add-note-above-to-selection": "Додати Нотатку вище до вибраного",
|
||||
"add-note-below-to-selection": "Додати Нотатку нижче до вибраного",
|
||||
"duplicate-subtree": "Дублікат Піддерева",
|
||||
"open-new-tab": "Відкрити Нову вкладку",
|
||||
"close-active-tab": "Закрити активну вкладку",
|
||||
"reopen-last-tab": "Відкрити останню вкладку",
|
||||
"activate-next-tab": "Активувати наступну вкладку",
|
||||
"activate-previous-tab": "Активувати попередню вкладку",
|
||||
"open-new-window": "Відкрити Нове вікно",
|
||||
"toggle-system-tray-icon": "Увімкнути Значок системного трея",
|
||||
"toggle-zen-mode": "Увімкнути Дзен-режим",
|
||||
"switch-to-first-tab": "Перейти до першої вкладки",
|
||||
"switch-to-second-tab": "Перейти до другої вкладки",
|
||||
"switch-to-third-tab": "Перейти до третьої вкладки",
|
||||
"switch-to-fourth-tab": "Перейти до четвертої вкладки",
|
||||
"switch-to-fifth-tab": "Перейти до п'ятої вкладки",
|
||||
"switch-to-sixth-tab": "Перейти до шостої вкладки",
|
||||
"switch-to-seventh-tab": "Перейти до сьомої вкладки",
|
||||
"switch-to-eighth-tab": "Перейти до восьмої вкладки",
|
||||
"find-in-text": "Знайти в тексті",
|
||||
"toggle-left-pane": "Увімкнути Ліву панель",
|
||||
"toggle-full-screen": "Увімкнути Повноекранний режим",
|
||||
"zoom-out": "Зменшити масштаб",
|
||||
"zoom-in": "Збільшити масштаб",
|
||||
"reset-zoom-level": "Скинути Масштабування",
|
||||
"copy-without-formatting": "Копіювати без форматування",
|
||||
"force-save-revision": "Примусове збереження версії",
|
||||
"switch-to-ninth-tab": "Перейти до дев'ятої вкладки",
|
||||
"switch-to-last-tab": "Перейти до останньої вкладки",
|
||||
"show-note-source": "Показати Джерело нотатки",
|
||||
"show-options": "Показати Параметри",
|
||||
"show-revisions": "Показати Версії",
|
||||
"show-recent-changes": "Показати Останні зміни",
|
||||
"show-sql-console": "Показати Консоль SQL",
|
||||
"show-backend-log": "Показати Backend Log",
|
||||
"show-help": "Показати Допомогу",
|
||||
"show-cheatsheet": "Показати Шпаргалку",
|
||||
"add-link-to-text": "Додати Посилання до тексту",
|
||||
"follow-link-under-cursor": "Перейти за Посиланням під курсором",
|
||||
"insert-date-and-time-to-text": "Вставити Дату та Час у текст",
|
||||
"paste-markdown-into-text": "Вставити Markdown у текст",
|
||||
"cut-into-note": "Вирізати у нотатку",
|
||||
"add-include-note-to-text": "Додати включену нотатку до тексту",
|
||||
"edit-read-only-note": "Редагувати нотатку лише для читання",
|
||||
"add-new-label": "Додати Нову мітку",
|
||||
"add-new-relation": "Додати Новий зв'язок",
|
||||
"toggle-ribbon-tab-classic-editor": "Включити Вкладку стрічки Класичний Редактор",
|
||||
"toggle-ribbon-tab-basic-properties": "Включити Вкладку стрічки Основні властивості",
|
||||
"toggle-ribbon-tab-book-properties": "Включити вкладку стрічки Властивості книги",
|
||||
"toggle-ribbon-tab-file-properties": "Включити вкладку стрічки Властивості Файлу",
|
||||
"toggle-ribbon-tab-image-properties": "Включити вкладку стрічки Властивості Зображення",
|
||||
"toggle-ribbon-tab-owned-attributes": "Включити вкладку стрічки Власні Атрибути",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Включити вкладку стрічки Успадковані Атрибути",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Включити вкладку стрічки Просунуті Атрибути",
|
||||
"toggle-ribbon-tab-note-map": "Включити вкладку стрічки Карта Нотатки",
|
||||
"toggle-ribbon-tab-note-info": "Включити вкладку стрічки Інформація про Нотатку",
|
||||
"toggle-ribbon-tab-note-paths": "Включити вкладку стрічки Шляхи Нотатки",
|
||||
"toggle-ribbon-tab-similar-notes": "Включити вкладку стрічки Схожі Нотатки",
|
||||
"toggle-right-pane": "Включити Праву панель",
|
||||
"print-active-note": "Друк Активної Нотатки",
|
||||
"export-active-note-as-pdf": "Експорт Активної нотатки у PDF",
|
||||
"open-note-externally": "Відкрити Нотатку зовнішньою програмою",
|
||||
"render-active-note": "Рендеринг Активної Нотатки",
|
||||
"run-active-note": "Запустити Активну Нотатку",
|
||||
"toggle-note-hoisting": "Включити хостинг нотатки",
|
||||
"reload-frontend-app": "Перезавантажити Інтерфейс програми",
|
||||
"open-developer-tools": "Відкрити Інструменти розробника",
|
||||
"unhoist-note": "Відкріпити Нотатку"
|
||||
},
|
||||
"login": {
|
||||
"title": "Увійти",
|
||||
"heading": "Вхід до Trilium",
|
||||
"incorrect-totp": "TOTP неправильний. Спробуйте ще раз.",
|
||||
"incorrect-password": "Пароль неправильний. Спробуйте ще раз.",
|
||||
"password": "Пароль",
|
||||
"remember-me": "Запам'ятати мене",
|
||||
"button": "Вхід",
|
||||
"sign_in_with_sso": "Увійти за допомогою {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Встановити Пароль",
|
||||
"heading": "Встановити пароль",
|
||||
"description": "Перш ніж почати користуватися Trilium з веб-сайту, вам потрібно спочатку встановити пароль. Потім ви будете використовувати цей пароль для входу в систему.",
|
||||
"password": "Пароль",
|
||||
"password-confirmation": "Підтвердження пароля",
|
||||
"button": "Встановити пароль"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Налаштування Trilium Notes",
|
||||
"new-document": "Я новий користувач і хочу створити новий документ Trilium для своїх нотаток",
|
||||
"sync-from-desktop": "У мене вже є екземпляр для ПК і я хочу налаштувати синхронізацію з ним",
|
||||
"sync-from-server": "У мене вже є екземпляр сервера, і я хочу налаштувати синхронізацію з ним",
|
||||
"next": "Наступна",
|
||||
"init-in-progress": "Триває ініціалізація документа",
|
||||
"redirecting": "Невдовзі вас буде перенаправлено до програми.",
|
||||
"title": "Налаштування"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Синхронізація з ПК",
|
||||
"description": "Це налаштування потрібно ініціювати з екземпляра ПК:",
|
||||
"step1": "Відкрийте свій екземпляр Trilium Notes на ПК.",
|
||||
"step2": "У меню Trilium натисніть Параметри.",
|
||||
"step3": "Натисніть на Категорія Синхронізації.",
|
||||
"step4": "Змініть адресу екземпляра сервера на: {{- host}} та натисніть кнопку Зберегти.",
|
||||
"step5": "Натисніть \"Тест синхронізації\", щоб перевірити успішність підключення.",
|
||||
"step6": "Після виконання цих кроків натисніть {{- link}}.",
|
||||
"step6-here": "тут"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Синхронізація з сервера",
|
||||
"instructions": "Будь ласка, введіть адресу сервера Trilium та облікові дані нижче. Це завантажить весь документ Trilium із сервера та налаштує синхронізацію з ним. Залежно від розміру документа та швидкості вашого з’єднання, це може зайняти деякий час.",
|
||||
"server-host": "Адреса сервера Trilium",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Проксі-сервер (необов'язково)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Нотатка:",
|
||||
"proxy-instruction": "Якщо залишити налаштування проксі-сервера порожнім, використовуватиметься системний проксі-сервер (стосується лише програми на ПК)",
|
||||
"password": "Пароль",
|
||||
"password-placeholder": "Пароль",
|
||||
"back": "Назад",
|
||||
"finish-setup": "Завершити налаштування"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Триває синхронізація",
|
||||
"successful": "Синхронізацію налаштовано правильно. Початкова синхронізація завершиться через деякий час. Після її завершення вас буде перенаправлено на сторінку входу.",
|
||||
"outstanding-items": "Незавершені елементи синхронізації:",
|
||||
"outstanding-items-default": "Недоступно"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Не знайдено",
|
||||
"heading": "Не знайдено"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "батьківська:",
|
||||
"clipped-from": "Цю нотатку було спочатку вирізано з {{- url}}",
|
||||
"child-notes": "Дочірні нотатки:",
|
||||
"no-content": "Ця нотатка не має вмісту."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Понеділок",
|
||||
"tuesday": "Вівторок",
|
||||
"wednesday": "Середа",
|
||||
"thursday": "Четвер",
|
||||
"friday": "П'ятниця",
|
||||
"saturday": "Субота",
|
||||
"sunday": "Неділя"
|
||||
},
|
||||
"weekdayNumber": "Тиждень {weekNumber}",
|
||||
"months": {
|
||||
"january": "Січень",
|
||||
"february": "Лютий",
|
||||
"march": "Березень",
|
||||
"april": "Квітень",
|
||||
"may": "Травень",
|
||||
"june": "Червень",
|
||||
"july": "Липень",
|
||||
"august": "Серпень",
|
||||
"september": "Вересень",
|
||||
"october": "Жовтень",
|
||||
"november": "Листопад",
|
||||
"december": "Грудень"
|
||||
},
|
||||
"quarterNumber": "Квартал {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Пошук:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Хост сервера синхронізації не налаштовано. Спочатку налаштуйте синхронізацію.",
|
||||
"successful": "Установлення зв'язку з сервером синхронізації пройшло успішно, синхронізація розпочалася."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Приховані Нотатки",
|
||||
"search-history-title": "Історія пошуку",
|
||||
"note-map-title": "Карта Нотатки",
|
||||
"sql-console-history-title": "Історія консолі SQL",
|
||||
"shared-notes-title": "Спільні Нотатки",
|
||||
"bulk-action-title": "Масова дія",
|
||||
"backend-log-title": "Backend Log",
|
||||
"user-hidden-title": "Прихований користувач",
|
||||
"launch-bar-templates-title": "Запуск Шаблони панелей",
|
||||
"base-abstract-launcher-title": "Базовий Лаунчер Abstract",
|
||||
"command-launcher-title": "Лаунчер Command",
|
||||
"note-launcher-title": "Лаунчер Note",
|
||||
"script-launcher-title": "Лаунчер Script",
|
||||
"built-in-widget-title": "Вбудований віджет",
|
||||
"custom-widget-title": "Користувацький віджет",
|
||||
"launch-bar-title": "Панель запуску",
|
||||
"available-launchers-title": "Доступні Лаунчери",
|
||||
"go-to-previous-note-title": "Перейти до попередньої нотатки",
|
||||
"go-to-next-note-title": "Перейти до наступної нотатки",
|
||||
"new-note-title": "Нова Нотатка",
|
||||
"search-notes-title": "Пошук нотаток",
|
||||
"jump-to-note-title": "Перейти до...",
|
||||
"calendar-title": "Календар",
|
||||
"recent-changes-title": "Останні Зміни",
|
||||
"bookmarks-title": "Закладки",
|
||||
"open-today-journal-note-title": "Відкрити Щоденник за Сьогодні",
|
||||
"quick-search-title": "Швидкий Пошук",
|
||||
"protected-session-title": "Захищений Сеанс",
|
||||
"sync-status-title": "Статус синхронізації",
|
||||
"settings-title": "Налаштування",
|
||||
"llm-chat-title": "Чат з Нотатками",
|
||||
"options-title": "Параметри",
|
||||
"appearance-title": "Зовнішній вигляд",
|
||||
"shortcuts-title": "Комбінації клавіші",
|
||||
"text-notes": "Текстові Нотатки",
|
||||
"code-notes-title": "Нотатка з кодом",
|
||||
"images-title": "Зображення",
|
||||
"spellcheck-title": "Перевірка Орфографії",
|
||||
"password-title": "Пароль",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Резервне копіювання",
|
||||
"sync-title": "Синхронізація",
|
||||
"ai-llm-title": "AI/LLM",
|
||||
"other": "Інше",
|
||||
"advanced-title": "Розширені",
|
||||
"visible-launchers-title": "Видимі Лаунчери",
|
||||
"user-guide": "Посібник користувача",
|
||||
"localization": "Мова & Регіон",
|
||||
"inbox-title": "Вхідні",
|
||||
"spacer-title": "Роздільник"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Нова нотатка",
|
||||
"duplicate-note-suffix": "(дублікат)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Файл backend log '{{ fileName }}' не існує.",
|
||||
"reading-log-failed": "Не вдалося прочитати backend log file {{fileName}}."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Цей тип нотатки не може бути відображений."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF Document (*.pdf)",
|
||||
"unable-to-export-message": "Поточну нотатку не вдалося експортувати у PDF.",
|
||||
"unable-to-export-title": "Не вдається експортувати у PDF",
|
||||
"unable-to-save-message": "Не вдалося записати вибраний файл. Спробуйте ще раз або виберіть інше місце призначення."
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Вихід з Trilium",
|
||||
"recents": "Останні нотатки",
|
||||
"bookmarks": "Закладки",
|
||||
"today": "Відкрити щоденник за сьогодні",
|
||||
"new-note": "Нова нотатка",
|
||||
"show-windows": "Показати вікна",
|
||||
"open_new_window": "Відкрити нове вікно"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "Пряма міграція з вашої поточної версії не підтримується. Будь ласка, спочатку оновіть систему до останньої версії v0.60.4, а потім лише потім до цієї.",
|
||||
"error_message": "Помилка під час міграції до версії {{version}}: {{stack}}",
|
||||
"wrong_db_version": "Версія бази даних ({{version}}) новіша за ту, яку очікує програма ({{targetVersion}}), це означає, що її було створено новішою та несумісною версією Trilium. Оновіть Trilium до останньої версії, щоб вирішити цю проблему."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Помилка"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Тема сайту",
|
||||
"search_placeholder": "Пошук...",
|
||||
"image_alt": "Зображення до статті",
|
||||
"last-updated": "Останнє оновлення: {{- date}}",
|
||||
"subpages": "Підсторінки:",
|
||||
"on-this-page": "На цій сторінці",
|
||||
"expand": "Розгорнути"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Фрагмент тексту",
|
||||
"description": "Опис",
|
||||
"list-view": "Список",
|
||||
"grid-view": "Сітка",
|
||||
"calendar": "Календар",
|
||||
"table": "Таблиця",
|
||||
"geo-map": "Географічна карта",
|
||||
"start-date": "Дата початку",
|
||||
"end-date": "Дата завершення",
|
||||
"start-time": "Час початку",
|
||||
"end-time": "Час завершення",
|
||||
"geolocation": "Геолокація",
|
||||
"built-in-templates": "Вбудовані шаблони",
|
||||
"board": "Kanban Дошка",
|
||||
"status": "Статус",
|
||||
"board_note_first": "Перша нотатка",
|
||||
"board_note_second": "Друга нотатка",
|
||||
"board_note_third": "Третя нотатка",
|
||||
"board_status_todo": "Зробити",
|
||||
"board_status_progress": "У процесі",
|
||||
"board_status_done": "Готово"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "DB не ініціалізовано, будь ласка, дотримуйтесь інструкцій на екрані.",
|
||||
"db_not_initialized_server": "DB не ініціалізовано, будь ласка, відвідайте сторінку налаштування - http://[your-server-host]:{{port}} , щоб переглянути інструкції щодо ініціалізації Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Екземпляр вже запущено, фокусування буде на ньому."
|
||||
}
|
||||
"keyboard_actions": {
|
||||
"back-in-note-history": "Перейти до попередньої нотатки в історії",
|
||||
"forward-in-note-history": "Перейти до наступної нотатки в історії",
|
||||
"open-command-palette": "Відкрити палітру команд",
|
||||
"scroll-to-active-note": "Прокрутити дерево до активної нотатки",
|
||||
"quick-search": "Активувати панель швидкого пошуку",
|
||||
"search-in-subtree": "Пошук нотаток в піддереві активної нотатки",
|
||||
"expand-subtree": "Розгорнути піддерево поточної нотатки",
|
||||
"collapse-tree": "Згорнути все дерево нотаток",
|
||||
"open-jump-to-note-dialog": "Відкрити діалог \"Перейти до нотатки\"",
|
||||
"collapse-subtree": "Згорнути піддерево поточної нотатки",
|
||||
"sort-child-notes": "Сортувати дочірні нотатки",
|
||||
"creating-and-moving-notes": "Створення та переміщення нотаток",
|
||||
"create-note-after": "Створити нотатку після активної нотатки",
|
||||
"create-note-into": "Створити нотатку як дочірню до активної нотатки",
|
||||
"create-note-into-inbox": "Створити нотатку у вхідні (якщо визначено) або денну нотатку",
|
||||
"delete-note": "Видалити нотатку",
|
||||
"move-note-up": "Перемістити нотатку вгору",
|
||||
"move-note-down": "Перемістити нотатку вниз",
|
||||
"move-note-up-in-hierarchy": "Перемістити нотатку вище в ієрархії",
|
||||
"move-note-down-in-hierarchy": "Перемістити нотатку вниз в ієрархії",
|
||||
"edit-note-title": "Перейти від дерева до деталей нотатки та редагувати заголовок",
|
||||
"edit-branch-prefix": "Показати діалог \"Редагувати префікс гілки\"",
|
||||
"clone-notes-to": "Клонувати вибрані нотатки",
|
||||
"move-notes-to": "Перемістити вибрані нотатки",
|
||||
"note-clipboard": "Буфер обміну нотатки",
|
||||
"copy-notes-to-clipboard": "Копіювати вибрані нотатки в буфер обміну",
|
||||
"paste-notes-from-clipboard": "Вставити нотатки з буферу обміну в активну нотатку",
|
||||
"cut-notes-to-clipboard": "Вирізати вибрані нотатки в буфер обміну",
|
||||
"select-all-notes-in-parent": "Вибрати всі нотатки з поточного рівня нотаток",
|
||||
"add-note-above-to-the-selection": "Додати нотатку вище до вибраного",
|
||||
"add-note-below-to-selection": "Додати нотатку нижче до вибраного",
|
||||
"duplicate-subtree": "Дублювання піддерева",
|
||||
"tabs-and-windows": "Вкладки & Вікна",
|
||||
"open-new-tab": "Відкрити нову вкладку",
|
||||
"close-active-tab": "Закрити активну вкладку",
|
||||
"reopen-last-tab": "Відкрити останню закриту вкладку",
|
||||
"activate-next-tab": "Активувати вкладку праворуч",
|
||||
"activate-previous-tab": "Активувати вкладку ліворуч",
|
||||
"open-new-window": "Відкрити нове порожнє вікно",
|
||||
"toggle-tray": "Показати/приховати програму в системному треї",
|
||||
"first-tab": "Активувати першу вкладку у списку",
|
||||
"second-tab": "Активувати другу вкладку у списку",
|
||||
"third-tab": "Активувати третю вкладку у списку",
|
||||
"fourth-tab": "Активувати четверту вкладку у списку",
|
||||
"fifth-tab": "Активувати п'яту вкладку у списку",
|
||||
"sixth-tab": "Активувати шосту вкладку у списку",
|
||||
"seventh-tab": "Активувати сьому вкладку у списку",
|
||||
"eight-tab": "Активувати восьму вкладку у списку",
|
||||
"ninth-tab": "Активувати дев'яту вкладку у списку",
|
||||
"last-tab": "Активувати останню вкладку у списку",
|
||||
"dialogs": "Діалоги",
|
||||
"show-note-source": "Показати діалог \"Джерело нотатки\"",
|
||||
"show-options": "Відкрити сторінку \"Параметри\"",
|
||||
"show-revisions": "Показати діалог \"Версії нотаток\"",
|
||||
"show-recent-changes": "Показати діалог \"Останні зміни\"",
|
||||
"show-sql-console": "Відкрити сторінку \"Консоль SQL\"",
|
||||
"show-backend-log": "Відкрити сторінку \"Backend Log\"",
|
||||
"show-help": "Відкрити вбудований Посібник користувача",
|
||||
"show-cheatsheet": "Показати вікно зі стандартними діями клавіатури",
|
||||
"text-note-operations": "Дії з текстовими нотатками",
|
||||
"add-link-to-text": "Відкрити діалог для додавання посилання до тексту",
|
||||
"follow-link-under-cursor": "Перехід за посиланням, на якому знаходиться курсор",
|
||||
"insert-date-and-time-to-text": "Вставити поточну дату & час у текст",
|
||||
"paste-markdown-into-text": "Вставити Markdown з буфера обміну в текстову нотатку",
|
||||
"cut-into-note": "Вирізати виділений фрагмент із поточної нотатки та створити піднотатку з виділеним текстом",
|
||||
"add-include-note-to-text": "Відкрити діалог для додавання нотатки",
|
||||
"edit-readonly-note": "Редагувати нотатку, доступну тільки для читання",
|
||||
"attributes-labels-and-relations": "Атрибути (мітки & зв'язки)",
|
||||
"add-new-label": "Створити нову мітку",
|
||||
"create-new-relation": "Створити новий зв'язок",
|
||||
"ribbon-tabs": "Вкладки стрічки",
|
||||
"toggle-basic-properties": "Увімкнути Основні Властивості",
|
||||
"toggle-file-properties": "Увімкнути Властивості Файлу",
|
||||
"toggle-image-properties": "Увімкнути Властивості Зображення",
|
||||
"toggle-owned-attributes": "Увімкнути Власні Атрибути",
|
||||
"toggle-inherited-attributes": "Увімкнути Успадковані Атрибути",
|
||||
"toggle-promoted-attributes": "Увімкнути Просунуті Атрибути",
|
||||
"toggle-link-map": "Увімкнути Карта Посилань",
|
||||
"toggle-note-info": "Увімкнути Інформація про Нотатку",
|
||||
"toggle-note-paths": "Увімкнути Шляхи Нотатки",
|
||||
"toggle-similar-notes": "Увімкнути Схожі Нотатки",
|
||||
"other": "Інше",
|
||||
"toggle-right-pane": "Увімкнути відображення правої панелі, яка містить Зміст та Основні моменти",
|
||||
"print-active-note": "Друк активної нотатки",
|
||||
"open-note-externally": "Відкрити нотатку як файл у програмі за замовчуванням",
|
||||
"render-active-note": "Рендеринг (перерендерінг) активної нотатки",
|
||||
"run-active-note": "Виконати активний код JavaScript (frontend/backend) нотатки з кодом",
|
||||
"toggle-note-hoisting": "Увімкнути хостинг активної нотатки",
|
||||
"unhoist": "Відкріпити з будь-якого місця",
|
||||
"reload-frontend-app": "Перезавантажити інтерфейс",
|
||||
"open-dev-tools": "Відкрити інструменти розробника",
|
||||
"find-in-text": "Увімкнути панель пошуку",
|
||||
"toggle-left-note-tree-panel": "Увімкнути ліву панель (дерево нотатки)",
|
||||
"toggle-full-screen": "Увімкнути повноекранний режим",
|
||||
"zoom-out": "Зменшити масштаб",
|
||||
"zoom-in": "Збільшити масштаб",
|
||||
"note-navigation": "Навігація по нотатках",
|
||||
"reset-zoom-level": "Скинути рівень масштабування",
|
||||
"copy-without-formatting": "Копіювати виділений текст без форматування",
|
||||
"force-save-revision": "Примусове створення/збереження нової версії активної нотатки",
|
||||
"toggle-book-properties": "Увімкнути Властивості Колекції",
|
||||
"toggle-classic-editor-toolbar": "Увімкнути вкладку Форматування для редактора з фіксованою панеллю інструментів",
|
||||
"export-as-pdf": "Експортувати поточну нотатку в PDF",
|
||||
"toggle-zen-mode": "Вмикає/вимикає Дзен-режим (мінімальний інтерфейс сфокусованого редагування)"
|
||||
},
|
||||
"keyboard_action_names": {
|
||||
"back-in-note-history": "Назад в Історії нотаток",
|
||||
"forward-in-note-history": "Вперед в Історії нотаток",
|
||||
"jump-to-note": "Перейти до...",
|
||||
"command-palette": "Палітра Команд",
|
||||
"scroll-to-active-note": "Прокрутити до Активної нотатки",
|
||||
"quick-search": "Швидкий Пошук",
|
||||
"search-in-subtree": "Пошук у Піддереві",
|
||||
"expand-subtree": "Розгорнути Піддерево",
|
||||
"collapse-tree": "Згорнути Дерево",
|
||||
"collapse-subtree": "Згорнути Піддерево",
|
||||
"sort-child-notes": "Сортувати Дочірні нотатки",
|
||||
"create-note-after": "Створити Нотатку після",
|
||||
"create-note-into": "Створити Нотатку в",
|
||||
"create-note-into-inbox": "Створити Нотатку у Вхідні",
|
||||
"delete-notes": "Видалити Нотатки",
|
||||
"move-note-up": "Перемістити Нотатку вгору",
|
||||
"move-note-down": "Перемістити Нотатку вниз",
|
||||
"move-note-up-in-hierarchy": "Перемістити Нотатку вгору в Ієрархії",
|
||||
"move-note-down-in-hierarchy": "Перемістити Нотатку вниз в Ієрархії",
|
||||
"edit-note-title": "Редагувати Заголовок нотатки",
|
||||
"edit-branch-prefix": "Редагувати префікс Гілки",
|
||||
"clone-notes-to": "Клонувати нотатки до",
|
||||
"move-notes-to": "Перемістити нотатки до",
|
||||
"copy-notes-to-clipboard": "Копіювати нотатки в Буфер обміну",
|
||||
"paste-notes-from-clipboard": "Вставити нотатки з Буфера обміну",
|
||||
"cut-notes-to-clipboard": "Вирізати нотатки в Буфер обміну",
|
||||
"select-all-notes-in-parent": "Вибрати всі нотатки в Батьківські",
|
||||
"add-note-above-to-selection": "Додати Нотатку вище до вибраного",
|
||||
"add-note-below-to-selection": "Додати Нотатку нижче до вибраного",
|
||||
"duplicate-subtree": "Дублікат Піддерева",
|
||||
"open-new-tab": "Відкрити Нову вкладку",
|
||||
"close-active-tab": "Закрити активну вкладку",
|
||||
"reopen-last-tab": "Відкрити останню вкладку",
|
||||
"activate-next-tab": "Активувати наступну вкладку",
|
||||
"activate-previous-tab": "Активувати попередню вкладку",
|
||||
"open-new-window": "Відкрити Нове вікно",
|
||||
"toggle-system-tray-icon": "Увімкнути Значок системного трея",
|
||||
"toggle-zen-mode": "Увімкнути Дзен-режим",
|
||||
"switch-to-first-tab": "Перейти до першої вкладки",
|
||||
"switch-to-second-tab": "Перейти до другої вкладки",
|
||||
"switch-to-third-tab": "Перейти до третьої вкладки",
|
||||
"switch-to-fourth-tab": "Перейти до четвертої вкладки",
|
||||
"switch-to-fifth-tab": "Перейти до п'ятої вкладки",
|
||||
"switch-to-sixth-tab": "Перейти до шостої вкладки",
|
||||
"switch-to-seventh-tab": "Перейти до сьомої вкладки",
|
||||
"switch-to-eighth-tab": "Перейти до восьмої вкладки",
|
||||
"find-in-text": "Знайти в тексті",
|
||||
"toggle-left-pane": "Увімкнути Ліву панель",
|
||||
"toggle-full-screen": "Увімкнути Повноекранний режим",
|
||||
"zoom-out": "Зменшити масштаб",
|
||||
"zoom-in": "Збільшити масштаб",
|
||||
"reset-zoom-level": "Скинути Масштабування",
|
||||
"copy-without-formatting": "Копіювати без форматування",
|
||||
"force-save-revision": "Примусове збереження версії",
|
||||
"switch-to-ninth-tab": "Перейти до дев'ятої вкладки",
|
||||
"switch-to-last-tab": "Перейти до останньої вкладки",
|
||||
"show-note-source": "Показати Джерело нотатки",
|
||||
"show-options": "Показати Параметри",
|
||||
"show-revisions": "Показати Версії",
|
||||
"show-recent-changes": "Показати Останні зміни",
|
||||
"show-sql-console": "Показати Консоль SQL",
|
||||
"show-backend-log": "Показати Backend Log",
|
||||
"show-help": "Показати Допомогу",
|
||||
"show-cheatsheet": "Показати Шпаргалку",
|
||||
"add-link-to-text": "Додати Посилання до тексту",
|
||||
"follow-link-under-cursor": "Перейти за Посиланням під курсором",
|
||||
"insert-date-and-time-to-text": "Вставити Дату та Час у текст",
|
||||
"paste-markdown-into-text": "Вставити Markdown у текст",
|
||||
"cut-into-note": "Вирізати у нотатку",
|
||||
"add-include-note-to-text": "Додати включену нотатку до тексту",
|
||||
"edit-read-only-note": "Редагувати нотатку лише для читання",
|
||||
"add-new-label": "Додати Нову мітку",
|
||||
"add-new-relation": "Додати Новий зв'язок",
|
||||
"toggle-ribbon-tab-classic-editor": "Включити Вкладку стрічки Класичний Редактор",
|
||||
"toggle-ribbon-tab-basic-properties": "Включити Вкладку стрічки Основні властивості",
|
||||
"toggle-ribbon-tab-book-properties": "Включити вкладку стрічки Властивості книги",
|
||||
"toggle-ribbon-tab-file-properties": "Включити вкладку стрічки Властивості Файлу",
|
||||
"toggle-ribbon-tab-image-properties": "Включити вкладку стрічки Властивості Зображення",
|
||||
"toggle-ribbon-tab-owned-attributes": "Включити вкладку стрічки Власні Атрибути",
|
||||
"toggle-ribbon-tab-inherited-attributes": "Включити вкладку стрічки Успадковані Атрибути",
|
||||
"toggle-ribbon-tab-promoted-attributes": "Включити вкладку стрічки Просунуті Атрибути",
|
||||
"toggle-ribbon-tab-note-map": "Включити вкладку стрічки Карта Нотатки",
|
||||
"toggle-ribbon-tab-note-info": "Включити вкладку стрічки Інформація про Нотатку",
|
||||
"toggle-ribbon-tab-note-paths": "Включити вкладку стрічки Шляхи Нотатки",
|
||||
"toggle-ribbon-tab-similar-notes": "Включити вкладку стрічки Схожі Нотатки",
|
||||
"toggle-right-pane": "Включити Праву панель",
|
||||
"print-active-note": "Друк Активної Нотатки",
|
||||
"export-active-note-as-pdf": "Експорт Активної нотатки у PDF",
|
||||
"open-note-externally": "Відкрити Нотатку зовнішньою програмою",
|
||||
"render-active-note": "Рендеринг Активної Нотатки",
|
||||
"run-active-note": "Запустити Активну Нотатку",
|
||||
"toggle-note-hoisting": "Включити хостинг нотатки",
|
||||
"reload-frontend-app": "Перезавантажити Інтерфейс програми",
|
||||
"open-developer-tools": "Відкрити Інструменти розробника",
|
||||
"unhoist-note": "Відкріпити Нотатку"
|
||||
},
|
||||
"login": {
|
||||
"title": "Увійти",
|
||||
"heading": "Вхід до Trilium",
|
||||
"incorrect-totp": "TOTP неправильний. Спробуйте ще раз.",
|
||||
"incorrect-password": "Пароль неправильний. Спробуйте ще раз.",
|
||||
"password": "Пароль",
|
||||
"remember-me": "Запам'ятати мене",
|
||||
"button": "Вхід",
|
||||
"sign_in_with_sso": "Увійти за допомогою {{ ssoIssuerName }}"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Встановити Пароль",
|
||||
"heading": "Встановити пароль",
|
||||
"description": "Перш ніж почати користуватися Trilium з веб-сайту, вам потрібно спочатку встановити пароль. Потім ви будете використовувати цей пароль для входу в систему.",
|
||||
"password": "Пароль",
|
||||
"password-confirmation": "Підтвердження пароля",
|
||||
"button": "Встановити пароль"
|
||||
},
|
||||
"setup": {
|
||||
"heading": "Налаштування Trilium Notes",
|
||||
"new-document": "Я новий користувач і хочу створити новий документ Trilium для своїх нотаток",
|
||||
"sync-from-desktop": "У мене вже є екземпляр для ПК і я хочу налаштувати синхронізацію з ним",
|
||||
"sync-from-server": "У мене вже є екземпляр сервера, і я хочу налаштувати синхронізацію з ним",
|
||||
"next": "Наступна",
|
||||
"init-in-progress": "Триває ініціалізація документа",
|
||||
"redirecting": "Невдовзі вас буде перенаправлено до програми.",
|
||||
"title": "Налаштування"
|
||||
},
|
||||
"setup_sync-from-desktop": {
|
||||
"heading": "Синхронізація з ПК",
|
||||
"description": "Це налаштування потрібно ініціювати з екземпляра ПК:",
|
||||
"step1": "Відкрийте свій екземпляр Trilium Notes на ПК.",
|
||||
"step2": "У меню Trilium натисніть Параметри.",
|
||||
"step3": "Натисніть на Категорія Синхронізації.",
|
||||
"step4": "Змініть адресу екземпляра сервера на: {{- host}} та натисніть кнопку Зберегти.",
|
||||
"step5": "Натисніть \"Тест синхронізації\", щоб перевірити успішність підключення.",
|
||||
"step6": "Після виконання цих кроків натисніть {{- link}}.",
|
||||
"step6-here": "тут"
|
||||
},
|
||||
"setup_sync-from-server": {
|
||||
"heading": "Синхронізація з сервера",
|
||||
"instructions": "Будь ласка, введіть адресу сервера Trilium та облікові дані нижче. Це завантажить весь документ Trilium із сервера та налаштує синхронізацію з ним. Залежно від розміру документа та швидкості вашого з’єднання, це може зайняти деякий час.",
|
||||
"server-host": "Адреса сервера Trilium",
|
||||
"server-host-placeholder": "https://<hostname>:<port>",
|
||||
"proxy-server": "Проксі-сервер (необов'язково)",
|
||||
"proxy-server-placeholder": "https://<hostname>:<port>",
|
||||
"note": "Нотатка:",
|
||||
"proxy-instruction": "Якщо залишити налаштування проксі-сервера порожнім, використовуватиметься системний проксі-сервер (стосується лише програми на ПК)",
|
||||
"password": "Пароль",
|
||||
"password-placeholder": "Пароль",
|
||||
"back": "Назад",
|
||||
"finish-setup": "Завершити налаштування"
|
||||
},
|
||||
"setup_sync-in-progress": {
|
||||
"heading": "Триває синхронізація",
|
||||
"successful": "Синхронізацію налаштовано правильно. Початкова синхронізація завершиться через деякий час. Після її завершення вас буде перенаправлено на сторінку входу.",
|
||||
"outstanding-items": "Незавершені елементи синхронізації:",
|
||||
"outstanding-items-default": "Недоступно"
|
||||
},
|
||||
"share_404": {
|
||||
"title": "Не знайдено",
|
||||
"heading": "Не знайдено"
|
||||
},
|
||||
"share_page": {
|
||||
"parent": "батьківська:",
|
||||
"clipped-from": "Цю нотатку було спочатку вирізано з {{- url}}",
|
||||
"child-notes": "Дочірні нотатки:",
|
||||
"no-content": "Ця нотатка не має вмісту."
|
||||
},
|
||||
"weekdays": {
|
||||
"monday": "Понеділок",
|
||||
"tuesday": "Вівторок",
|
||||
"wednesday": "Середа",
|
||||
"thursday": "Четвер",
|
||||
"friday": "П'ятниця",
|
||||
"saturday": "Субота",
|
||||
"sunday": "Неділя"
|
||||
},
|
||||
"weekdayNumber": "Тиждень {weekNumber}",
|
||||
"months": {
|
||||
"january": "Січень",
|
||||
"february": "Лютий",
|
||||
"march": "Березень",
|
||||
"april": "Квітень",
|
||||
"may": "Травень",
|
||||
"june": "Червень",
|
||||
"july": "Липень",
|
||||
"august": "Серпень",
|
||||
"september": "Вересень",
|
||||
"october": "Жовтень",
|
||||
"november": "Листопад",
|
||||
"december": "Грудень"
|
||||
},
|
||||
"quarterNumber": "Квартал {quarterNumber}",
|
||||
"special_notes": {
|
||||
"search_prefix": "Пошук:"
|
||||
},
|
||||
"test_sync": {
|
||||
"not-configured": "Хост сервера синхронізації не налаштовано. Спочатку налаштуйте синхронізацію.",
|
||||
"successful": "Установлення зв'язку з сервером синхронізації пройшло успішно, синхронізація розпочалася."
|
||||
},
|
||||
"hidden-subtree": {
|
||||
"root-title": "Приховані Нотатки",
|
||||
"search-history-title": "Історія пошуку",
|
||||
"note-map-title": "Карта Нотатки",
|
||||
"sql-console-history-title": "Історія консолі SQL",
|
||||
"shared-notes-title": "Спільні Нотатки",
|
||||
"bulk-action-title": "Масова дія",
|
||||
"backend-log-title": "Backend Log",
|
||||
"user-hidden-title": "Прихований користувач",
|
||||
"launch-bar-templates-title": "Запуск Шаблони панелей",
|
||||
"base-abstract-launcher-title": "Базовий Лаунчер Abstract",
|
||||
"command-launcher-title": "Лаунчер Command",
|
||||
"note-launcher-title": "Лаунчер Note",
|
||||
"script-launcher-title": "Лаунчер Script",
|
||||
"built-in-widget-title": "Вбудований віджет",
|
||||
"custom-widget-title": "Користувацький віджет",
|
||||
"launch-bar-title": "Панель запуску",
|
||||
"available-launchers-title": "Доступні Лаунчери",
|
||||
"go-to-previous-note-title": "Перейти до попередньої нотатки",
|
||||
"go-to-next-note-title": "Перейти до наступної нотатки",
|
||||
"new-note-title": "Нова Нотатка",
|
||||
"search-notes-title": "Пошук нотаток",
|
||||
"jump-to-note-title": "Перейти до...",
|
||||
"calendar-title": "Календар",
|
||||
"recent-changes-title": "Останні Зміни",
|
||||
"bookmarks-title": "Закладки",
|
||||
"open-today-journal-note-title": "Відкрити Щоденник за Сьогодні",
|
||||
"quick-search-title": "Швидкий Пошук",
|
||||
"protected-session-title": "Захищений Сеанс",
|
||||
"sync-status-title": "Статус синхронізації",
|
||||
"settings-title": "Налаштування",
|
||||
"options-title": "Параметри",
|
||||
"appearance-title": "Зовнішній вигляд",
|
||||
"shortcuts-title": "Комбінації клавіші",
|
||||
"text-notes": "Текстові Нотатки",
|
||||
"code-notes-title": "Нотатка з кодом",
|
||||
"images-title": "Зображення",
|
||||
"spellcheck-title": "Перевірка Орфографії",
|
||||
"password-title": "Пароль",
|
||||
"multi-factor-authentication-title": "MFA",
|
||||
"etapi-title": "ETAPI",
|
||||
"backup-title": "Резервне копіювання",
|
||||
"sync-title": "Синхронізація",
|
||||
"other": "Інше",
|
||||
"advanced-title": "Розширені",
|
||||
"visible-launchers-title": "Видимі Лаунчери",
|
||||
"user-guide": "Посібник користувача",
|
||||
"localization": "Мова & Регіон",
|
||||
"inbox-title": "Вхідні",
|
||||
"spacer-title": "Роздільник"
|
||||
},
|
||||
"notes": {
|
||||
"new-note": "Нова нотатка",
|
||||
"duplicate-note-suffix": "(дублікат)",
|
||||
"duplicate-note-title": "{{- noteTitle }} {{ duplicateNoteSuffix }}"
|
||||
},
|
||||
"backend_log": {
|
||||
"log-does-not-exist": "Файл backend log '{{ fileName }}' не існує.",
|
||||
"reading-log-failed": "Не вдалося прочитати backend log file {{fileName}}."
|
||||
},
|
||||
"content_renderer": {
|
||||
"note-cannot-be-displayed": "Цей тип нотатки не може бути відображений."
|
||||
},
|
||||
"pdf": {
|
||||
"export_filter": "PDF Document (*.pdf)",
|
||||
"unable-to-export-message": "Поточну нотатку не вдалося експортувати у PDF.",
|
||||
"unable-to-export-title": "Не вдається експортувати у PDF",
|
||||
"unable-to-save-message": "Не вдалося записати вибраний файл. Спробуйте ще раз або виберіть інше місце призначення."
|
||||
},
|
||||
"tray": {
|
||||
"tooltip": "Trilium Notes",
|
||||
"close": "Вихід з Trilium",
|
||||
"recents": "Останні нотатки",
|
||||
"bookmarks": "Закладки",
|
||||
"today": "Відкрити щоденник за сьогодні",
|
||||
"new-note": "Нова нотатка",
|
||||
"show-windows": "Показати вікна",
|
||||
"open_new_window": "Відкрити нове вікно"
|
||||
},
|
||||
"migration": {
|
||||
"old_version": "Пряма міграція з вашої поточної версії не підтримується. Будь ласка, спочатку оновіть систему до останньої версії v0.60.4, а потім лише потім до цієї.",
|
||||
"error_message": "Помилка під час міграції до версії {{version}}: {{stack}}",
|
||||
"wrong_db_version": "Версія бази даних ({{version}}) новіша за ту, яку очікує програма ({{targetVersion}}), це означає, що її було створено новішою та несумісною версією Trilium. Оновіть Trilium до останньої версії, щоб вирішити цю проблему."
|
||||
},
|
||||
"modals": {
|
||||
"error_title": "Помилка"
|
||||
},
|
||||
"share_theme": {
|
||||
"site-theme": "Тема сайту",
|
||||
"search_placeholder": "Пошук...",
|
||||
"image_alt": "Зображення до статті",
|
||||
"last-updated": "Останнє оновлення: {{- date}}",
|
||||
"subpages": "Підсторінки:",
|
||||
"on-this-page": "На цій сторінці",
|
||||
"expand": "Розгорнути"
|
||||
},
|
||||
"hidden_subtree_templates": {
|
||||
"text-snippet": "Фрагмент тексту",
|
||||
"description": "Опис",
|
||||
"list-view": "Список",
|
||||
"grid-view": "Сітка",
|
||||
"calendar": "Календар",
|
||||
"table": "Таблиця",
|
||||
"geo-map": "Географічна карта",
|
||||
"start-date": "Дата початку",
|
||||
"end-date": "Дата завершення",
|
||||
"start-time": "Час початку",
|
||||
"end-time": "Час завершення",
|
||||
"geolocation": "Геолокація",
|
||||
"built-in-templates": "Вбудовані шаблони",
|
||||
"board": "Kanban Дошка",
|
||||
"status": "Статус",
|
||||
"board_note_first": "Перша нотатка",
|
||||
"board_note_second": "Друга нотатка",
|
||||
"board_note_third": "Третя нотатка",
|
||||
"board_status_todo": "Зробити",
|
||||
"board_status_progress": "У процесі",
|
||||
"board_status_done": "Готово"
|
||||
},
|
||||
"sql_init": {
|
||||
"db_not_initialized_desktop": "DB не ініціалізовано, будь ласка, дотримуйтесь інструкцій на екрані.",
|
||||
"db_not_initialized_server": "DB не ініціалізовано, будь ласка, відвідайте сторінку налаштування - http://[your-server-host]:{{port}} , щоб переглянути інструкції щодо ініціалізації Trilium."
|
||||
},
|
||||
"desktop": {
|
||||
"instance_already_running": "Екземпляр вже запущено, фокусування буде на ньому."
|
||||
}
|
||||
}
|
||||
|
||||
21
apps/server/src/migrations/0234__migrate_ai_chat_to_code.ts
Normal file
21
apps/server/src/migrations/0234__migrate_ai_chat_to_code.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import becca from "../becca/becca";
|
||||
import becca_loader from "../becca/becca_loader";
|
||||
import cls from "../services/cls.js";
|
||||
|
||||
export default () => {
|
||||
cls.init(() => {
|
||||
becca_loader.load();
|
||||
|
||||
for (const note of Object.values(becca.notes)) {
|
||||
if (note.type as string !== "aiChat") {
|
||||
continue;
|
||||
}
|
||||
|
||||
console.log(`Migrating note '${note.noteId}' from aiChat to code type...`);
|
||||
|
||||
note.type = "code";
|
||||
note.mime = "application/json";
|
||||
note.save();
|
||||
}
|
||||
});
|
||||
};
|
||||
@@ -6,6 +6,11 @@
|
||||
|
||||
// Migrations should be kept in descending order, so the latest migration is first.
|
||||
const MIGRATIONS: (SqlMigration | JsMigration)[] = [
|
||||
// Migrate aiChat notes to code notes since LLM integration has been removed
|
||||
{
|
||||
version: 234,
|
||||
module: async () => import("./0234__migrate_ai_chat_to_code.js")
|
||||
},
|
||||
// Migrate geo map to collection
|
||||
{
|
||||
version: 233,
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
import options from "../../services/options.js";
|
||||
import log from "../../services/log.js";
|
||||
import type { Request, Response } from "express";
|
||||
import { PROVIDER_CONSTANTS } from '../../services/llm/constants/provider_constants.js';
|
||||
import Anthropic from '@anthropic-ai/sdk';
|
||||
|
||||
// Interface for Anthropic model entries
|
||||
interface AnthropicModel {
|
||||
id: string;
|
||||
name: string;
|
||||
type: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/anthropic/models:
|
||||
* post:
|
||||
* summary: List available models from Anthropic
|
||||
* operationId: anthropic-list-models
|
||||
* requestBody:
|
||||
* required: false
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* baseUrl:
|
||||
* type: string
|
||||
* description: Optional custom Anthropic API base URL
|
||||
* responses:
|
||||
* '200':
|
||||
* description: List of available Anthropic models
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* success:
|
||||
* type: boolean
|
||||
* chatModels:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* id:
|
||||
* type: string
|
||||
* name:
|
||||
* type: string
|
||||
* type:
|
||||
* type: string
|
||||
* '500':
|
||||
* description: Error listing models
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function listModels(req: Request, res: Response) {
|
||||
try {
|
||||
const { baseUrl } = req.body;
|
||||
|
||||
// Use provided base URL or default from options
|
||||
const anthropicBaseUrl = baseUrl ||
|
||||
await options.getOption('anthropicBaseUrl') ||
|
||||
PROVIDER_CONSTANTS.ANTHROPIC.BASE_URL;
|
||||
|
||||
const apiKey = await options.getOption('anthropicApiKey');
|
||||
|
||||
if (!apiKey) {
|
||||
throw new Error('Anthropic API key is not configured');
|
||||
}
|
||||
|
||||
log.info(`Using predefined Anthropic models list (avoiding direct API call)`);
|
||||
|
||||
// Instead of using the SDK's built-in models listing which might not work,
|
||||
// directly use the predefined available models
|
||||
const chatModels = PROVIDER_CONSTANTS.ANTHROPIC.AVAILABLE_MODELS.map(model => ({
|
||||
id: model.id,
|
||||
name: model.name,
|
||||
type: 'chat'
|
||||
}));
|
||||
|
||||
// Return the models list
|
||||
return {
|
||||
success: true,
|
||||
chatModels
|
||||
};
|
||||
} catch (error: any) {
|
||||
log.error(`Error listing Anthropic models: ${error.message || 'Unknown error'}`);
|
||||
|
||||
// Properly throw the error to be handled by the global error handler
|
||||
throw new Error(`Failed to list Anthropic models: ${error.message || 'Unknown error'}`);
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
listModels
|
||||
};
|
||||
@@ -1,851 +0,0 @@
|
||||
import { sleepFor } from "@triliumnext/commons";
|
||||
import { Application } from "express";
|
||||
import supertest from "supertest";
|
||||
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
import { refreshAuth } from "../../services/auth.js";
|
||||
import config from "../../services/config.js";
|
||||
|
||||
// Mock the CSRF protection middleware to allow tests to pass
|
||||
vi.mock("../csrf_protection.js", () => ({
|
||||
doubleCsrfProtection: (req: any, res: any, next: any) => next(), // No-op middleware
|
||||
generateToken: () => "mock-csrf-token"
|
||||
}));
|
||||
|
||||
// Mock WebSocket service
|
||||
vi.mock("../../services/ws.js", () => ({
|
||||
default: {
|
||||
sendMessageToAllClients: vi.fn(),
|
||||
sendTransactionEntityChangesToAllClients: vi.fn(),
|
||||
setLastSyncedPush: vi.fn(),
|
||||
syncFailed() {}
|
||||
}
|
||||
}));
|
||||
|
||||
// Mock log service
|
||||
vi.mock("../../services/log.js", () => ({
|
||||
default: {
|
||||
info: vi.fn(),
|
||||
error: vi.fn(),
|
||||
warn: vi.fn()
|
||||
}
|
||||
}));
|
||||
|
||||
// Mock chat storage service
|
||||
const mockChatStorage = {
|
||||
createChat: vi.fn(),
|
||||
getChat: vi.fn(),
|
||||
updateChat: vi.fn(),
|
||||
getAllChats: vi.fn(),
|
||||
deleteChat: vi.fn()
|
||||
};
|
||||
vi.mock("../../services/llm/storage/chat_storage_service.js", () => ({
|
||||
default: mockChatStorage
|
||||
}));
|
||||
|
||||
// Mock AI service manager
|
||||
const mockAiServiceManager = {
|
||||
getOrCreateAnyService: vi.fn()
|
||||
};
|
||||
vi.mock("../../services/llm/ai_service_manager.js", () => ({
|
||||
default: mockAiServiceManager
|
||||
}));
|
||||
|
||||
// Mock chat pipeline
|
||||
const mockChatPipelineExecute = vi.fn();
|
||||
class MockChatPipeline {
|
||||
execute = mockChatPipelineExecute;
|
||||
}
|
||||
vi.mock("../../services/llm/pipeline/chat_pipeline.js", () => ({
|
||||
ChatPipeline: MockChatPipeline
|
||||
}));
|
||||
|
||||
// Mock configuration helpers
|
||||
const mockGetSelectedModelConfig = vi.fn();
|
||||
vi.mock("../../services/llm/config/configuration_helpers.js", () => ({
|
||||
getSelectedModelConfig: mockGetSelectedModelConfig
|
||||
}));
|
||||
|
||||
// Mock options service
|
||||
vi.mock("../../services/options.js", () => ({
|
||||
default: {
|
||||
getOptionBool: vi.fn(() => false),
|
||||
getOptionMap: vi.fn(() => new Map()),
|
||||
createOption: vi.fn(),
|
||||
getOption: vi.fn(() => '0'),
|
||||
getOptionOrNull: vi.fn(() => null),
|
||||
getOptionInt: vi.fn(name => {
|
||||
if (name === "protectedSessionTimeout") return Number.MAX_SAFE_INTEGER;
|
||||
return 0;
|
||||
})
|
||||
}
|
||||
}));
|
||||
|
||||
// Session-based login that properly establishes req.session.loggedIn
|
||||
async function loginWithSession(app: Application) {
|
||||
const response = await supertest(app)
|
||||
.post("/login")
|
||||
.send({ password: "demo1234" })
|
||||
.expect(302);
|
||||
|
||||
const setCookieHeader = response.headers["set-cookie"][0];
|
||||
expect(setCookieHeader).toBeTruthy();
|
||||
return setCookieHeader;
|
||||
}
|
||||
|
||||
// Get CSRF token from the main page
|
||||
async function getCsrfToken(app: Application, sessionCookie: string) {
|
||||
const response = await supertest(app)
|
||||
.get("/")
|
||||
|
||||
.expect(200);
|
||||
|
||||
const csrfTokenMatch = response.text.match(/csrfToken: '([^']+)'/);
|
||||
if (csrfTokenMatch) {
|
||||
return csrfTokenMatch[1];
|
||||
}
|
||||
|
||||
throw new Error("CSRF token not found in response");
|
||||
}
|
||||
|
||||
let app: Application;
|
||||
|
||||
describe("LLM API Tests", () => {
|
||||
let sessionCookie: string;
|
||||
let csrfToken: string;
|
||||
let createdChatId: string;
|
||||
|
||||
beforeAll(async () => {
|
||||
// Use no authentication for testing to avoid complex session/CSRF setup
|
||||
config.General.noAuthentication = true;
|
||||
refreshAuth();
|
||||
const buildApp = (await import("../../app.js")).default;
|
||||
app = await buildApp();
|
||||
// No need for session cookie or CSRF token when authentication is disabled
|
||||
sessionCookie = "";
|
||||
csrfToken = "mock-csrf-token";
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
describe("Chat Session Management", () => {
|
||||
it("should create a new chat session", async () => {
|
||||
const response = await supertest(app)
|
||||
.post("/api/llm/chat")
|
||||
.send({
|
||||
title: "Test Chat Session",
|
||||
systemPrompt: "You are a helpful assistant for testing.",
|
||||
temperature: 0.7,
|
||||
maxTokens: 1000,
|
||||
model: "gpt-3.5-turbo",
|
||||
provider: "openai"
|
||||
})
|
||||
.expect(200);
|
||||
|
||||
expect(response.body).toMatchObject({
|
||||
id: expect.any(String),
|
||||
title: "Test Chat Session",
|
||||
createdAt: expect.any(String)
|
||||
});
|
||||
|
||||
createdChatId = response.body.id;
|
||||
});
|
||||
|
||||
it("should list all chat sessions", async () => {
|
||||
const response = await supertest(app)
|
||||
.get("/api/llm/chat")
|
||||
.expect(200);
|
||||
|
||||
expect(response.body).toHaveProperty('sessions');
|
||||
expect(Array.isArray(response.body.sessions)).toBe(true);
|
||||
|
||||
if (response.body.sessions.length > 0) {
|
||||
expect(response.body.sessions[0]).toMatchObject({
|
||||
id: expect.any(String),
|
||||
title: expect.any(String),
|
||||
createdAt: expect.any(String),
|
||||
lastActive: expect.any(String),
|
||||
messageCount: expect.any(Number)
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
it("should retrieve a specific chat session", async () => {
|
||||
if (!createdChatId) {
|
||||
// Create a chat first if we don't have one
|
||||
const createResponse = await supertest(app)
|
||||
.post("/api/llm/chat")
|
||||
|
||||
.send({
|
||||
title: "Test Retrieval Chat"
|
||||
})
|
||||
.expect(200);
|
||||
|
||||
createdChatId = createResponse.body.id;
|
||||
}
|
||||
|
||||
const response = await supertest(app)
|
||||
.get(`/api/llm/chat/${createdChatId}`)
|
||||
|
||||
.expect(200);
|
||||
|
||||
expect(response.body).toMatchObject({
|
||||
id: createdChatId,
|
||||
title: expect.any(String),
|
||||
messages: expect.any(Array),
|
||||
createdAt: expect.any(String)
|
||||
});
|
||||
});
|
||||
|
||||
it("should update a chat session", async () => {
|
||||
if (!createdChatId) {
|
||||
// Create a chat first if we don't have one
|
||||
const createResponse = await supertest(app)
|
||||
.post("/api/llm/chat")
|
||||
.send({
|
||||
title: "Test Update Chat"
|
||||
})
|
||||
.expect(200);
|
||||
|
||||
createdChatId = createResponse.body.id;
|
||||
}
|
||||
|
||||
const response = await supertest(app)
|
||||
.patch(`/api/llm/chat/${createdChatId}`)
|
||||
.send({
|
||||
title: "Updated Chat Title",
|
||||
temperature: 0.8
|
||||
})
|
||||
.expect(200);
|
||||
|
||||
expect(response.body).toMatchObject({
|
||||
id: createdChatId,
|
||||
title: "Updated Chat Title",
|
||||
updatedAt: expect.any(String)
|
||||
});
|
||||
});
|
||||
|
||||
it("should return 404 for non-existent chat session", async () => {
|
||||
await supertest(app)
|
||||
.get("/api/llm/chat/nonexistent-chat-id")
|
||||
|
||||
.expect(404);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Chat Messaging", () => {
|
||||
let testChatId: string;
|
||||
|
||||
beforeEach(async () => {
|
||||
// Create a fresh chat for each test
|
||||
const createResponse = await supertest(app)
|
||||
.post("/api/llm/chat")
|
||||
.send({
|
||||
title: "Message Test Chat"
|
||||
})
|
||||
.expect(200);
|
||||
|
||||
testChatId = createResponse.body.id;
|
||||
});
|
||||
|
||||
it("should handle sending a message to a chat", async () => {
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages`)
|
||||
.send({
|
||||
message: "Hello, how are you?",
|
||||
options: {
|
||||
temperature: 0.7,
|
||||
maxTokens: 100
|
||||
},
|
||||
includeContext: false,
|
||||
useNoteContext: false
|
||||
});
|
||||
|
||||
// The response depends on whether AI is actually configured
|
||||
// We should get either a successful response or an error about AI not being configured
|
||||
expect([200, 400, 500]).toContain(response.status);
|
||||
|
||||
// All responses should have some body
|
||||
expect(response.body).toBeDefined();
|
||||
|
||||
// Either success with response or error
|
||||
if (response.body.response) {
|
||||
expect(response.body).toMatchObject({
|
||||
response: expect.any(String),
|
||||
sessionId: testChatId
|
||||
});
|
||||
} else {
|
||||
// AI not configured is expected in test environment
|
||||
expect(response.body).toHaveProperty('error');
|
||||
}
|
||||
});
|
||||
|
||||
it("should handle empty message content", async () => {
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages`)
|
||||
.send({
|
||||
message: "",
|
||||
options: {}
|
||||
});
|
||||
|
||||
expect([200, 400, 500]).toContain(response.status);
|
||||
expect(response.body).toHaveProperty('error');
|
||||
});
|
||||
|
||||
it("should handle invalid chat ID for messaging", async () => {
|
||||
const response = await supertest(app)
|
||||
.post("/api/llm/chat/invalid-chat-id/messages")
|
||||
.send({
|
||||
message: "Hello",
|
||||
options: {}
|
||||
});
|
||||
|
||||
// API returns 200 with error message instead of error status
|
||||
expect([200, 404, 500]).toContain(response.status);
|
||||
if (response.status === 200) {
|
||||
expect(response.body).toHaveProperty('error');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe("Chat Streaming", () => {
|
||||
let testChatId: string;
|
||||
|
||||
beforeEach(async () => {
|
||||
// Reset all mocks
|
||||
vi.clearAllMocks();
|
||||
|
||||
// Import options service to access mock
|
||||
const options = (await import("../../services/options.js")).default;
|
||||
|
||||
// Setup default mock behaviors
|
||||
(options.getOptionBool as any).mockReturnValue(true); // AI enabled
|
||||
mockAiServiceManager.getOrCreateAnyService.mockResolvedValue({});
|
||||
mockGetSelectedModelConfig.mockResolvedValue({
|
||||
model: 'test-model',
|
||||
provider: 'test-provider'
|
||||
});
|
||||
|
||||
// Create a fresh chat for each test
|
||||
// Return a new object each time to avoid shared state issues with concurrent requests
|
||||
const mockChat = {
|
||||
id: 'streaming-test-chat',
|
||||
title: 'Streaming Test Chat',
|
||||
messages: [],
|
||||
createdAt: new Date().toISOString()
|
||||
};
|
||||
mockChatStorage.createChat.mockResolvedValue(mockChat);
|
||||
mockChatStorage.getChat.mockImplementation(() => Promise.resolve({
|
||||
...mockChat,
|
||||
messages: [...mockChat.messages]
|
||||
}));
|
||||
|
||||
const createResponse = await supertest(app)
|
||||
.post("/api/llm/chat")
|
||||
|
||||
.send({
|
||||
title: "Streaming Test Chat"
|
||||
})
|
||||
.expect(200);
|
||||
|
||||
testChatId = createResponse.body.id;
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
it("should initiate streaming for a chat message", async () => {
|
||||
// Setup streaming simulation
|
||||
mockChatPipelineExecute.mockImplementation(async (input) => {
|
||||
const callback = input.streamCallback;
|
||||
// Simulate streaming chunks
|
||||
await callback('Hello', false, {});
|
||||
await callback(' world!', true, {});
|
||||
});
|
||||
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: "Tell me a short story",
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
});
|
||||
|
||||
// The streaming endpoint should immediately return success
|
||||
// indicating that streaming has been initiated
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body).toMatchObject({
|
||||
success: true,
|
||||
message: "Streaming initiated successfully"
|
||||
});
|
||||
|
||||
// Import ws service to access mock
|
||||
const ws = (await import("../../services/ws.js")).default;
|
||||
|
||||
// Wait for async streaming operations to complete
|
||||
await vi.waitFor(() => {
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
content: ' world!',
|
||||
done: true
|
||||
});
|
||||
}, { timeout: 1000, interval: 50 });
|
||||
|
||||
// Verify WebSocket messages were sent
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
thinking: undefined
|
||||
});
|
||||
|
||||
// Verify streaming chunks were sent
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
content: 'Hello',
|
||||
done: false
|
||||
});
|
||||
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
content: ' world!',
|
||||
done: true
|
||||
});
|
||||
});
|
||||
|
||||
it("should handle empty content for streaming", async () => {
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: "",
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
});
|
||||
|
||||
expect(response.status).toBe(400);
|
||||
expect(response.body).toMatchObject({
|
||||
success: false,
|
||||
error: "Content cannot be empty"
|
||||
});
|
||||
});
|
||||
|
||||
it("should handle whitespace-only content for streaming", async () => {
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: " \n\t ",
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
});
|
||||
|
||||
expect(response.status).toBe(400);
|
||||
expect(response.body).toMatchObject({
|
||||
success: false,
|
||||
error: "Content cannot be empty"
|
||||
});
|
||||
});
|
||||
|
||||
it("should handle invalid chat ID for streaming", async () => {
|
||||
const response = await supertest(app)
|
||||
.post("/api/llm/chat/invalid-chat-id/messages/stream")
|
||||
|
||||
.send({
|
||||
content: "Hello",
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
});
|
||||
|
||||
// Should still return 200 for streaming initiation
|
||||
// Errors would be communicated via WebSocket
|
||||
expect(response.status).toBe(200);
|
||||
});
|
||||
|
||||
it("should handle streaming with note mentions", async () => {
|
||||
// Mock becca for note content retrieval
|
||||
vi.doMock('../../becca/becca.js', () => ({
|
||||
default: {
|
||||
getNote: vi.fn().mockReturnValue({
|
||||
noteId: 'root',
|
||||
title: 'Root Note',
|
||||
getBlob: () => ({
|
||||
getContent: () => 'Root note content for testing'
|
||||
})
|
||||
})
|
||||
}
|
||||
}));
|
||||
|
||||
// Setup streaming with mention context
|
||||
mockChatPipelineExecute.mockImplementation(async (input) => {
|
||||
// Verify mention content is included
|
||||
expect(input.query).toContain('Tell me about this note');
|
||||
expect(input.query).toContain('Root note content for testing');
|
||||
|
||||
const callback = input.streamCallback;
|
||||
await callback('The root note contains', false, {});
|
||||
await callback(' important information.', true, {});
|
||||
});
|
||||
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: "Tell me about this note",
|
||||
useAdvancedContext: true,
|
||||
showThinking: true,
|
||||
mentions: [
|
||||
{
|
||||
noteId: "root",
|
||||
title: "Root Note"
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body).toMatchObject({
|
||||
success: true,
|
||||
message: "Streaming initiated successfully"
|
||||
});
|
||||
|
||||
// Import ws service to access mock
|
||||
const ws = (await import("../../services/ws.js")).default;
|
||||
|
||||
// Verify thinking message was sent
|
||||
await sleepFor(1_000);
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
thinking: 'Initializing streaming LLM response...'
|
||||
});
|
||||
});
|
||||
|
||||
it("should handle streaming with thinking states", async () => {
|
||||
mockChatPipelineExecute.mockImplementation(async (input) => {
|
||||
const callback = input.streamCallback;
|
||||
// Simulate thinking states
|
||||
await callback('', false, { thinking: 'Analyzing the question...' });
|
||||
await callback('', false, { thinking: 'Formulating response...' });
|
||||
await callback('The answer is', false, {});
|
||||
await callback(' 42.', true, {});
|
||||
});
|
||||
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: "What is the meaning of life?",
|
||||
useAdvancedContext: false,
|
||||
showThinking: true
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
// Import ws service to access mock
|
||||
const ws = (await import("../../services/ws.js")).default;
|
||||
|
||||
// Wait for async streaming operations to complete
|
||||
await vi.waitFor(() => {
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
thinking: 'Formulating response...',
|
||||
done: false
|
||||
});
|
||||
}, { timeout: 1000, interval: 50 });
|
||||
|
||||
// Verify thinking messages
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
thinking: 'Analyzing the question...',
|
||||
done: false
|
||||
});
|
||||
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
thinking: 'Formulating response...',
|
||||
done: false
|
||||
});
|
||||
});
|
||||
|
||||
it("should handle streaming with tool executions", async () => {
|
||||
mockChatPipelineExecute.mockImplementation(async (input) => {
|
||||
const callback = input.streamCallback;
|
||||
// Simulate tool execution
|
||||
await callback('Let me calculate that', false, {});
|
||||
await callback('', false, {
|
||||
toolExecution: {
|
||||
tool: 'calculator',
|
||||
arguments: { expression: '2 + 2' },
|
||||
result: '4',
|
||||
toolCallId: 'call_123',
|
||||
action: 'execute'
|
||||
}
|
||||
});
|
||||
await callback('The result is 4', true, {});
|
||||
});
|
||||
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: "What is 2 + 2?",
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
// Import ws service to access mock
|
||||
const ws = (await import("../../services/ws.js")).default;
|
||||
|
||||
// Wait for async streaming operations to complete
|
||||
await vi.waitFor(() => {
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
toolExecution: {
|
||||
tool: 'calculator',
|
||||
args: { expression: '2 + 2' },
|
||||
result: '4',
|
||||
toolCallId: 'call_123',
|
||||
action: 'execute',
|
||||
error: undefined
|
||||
},
|
||||
done: false
|
||||
});
|
||||
}, { timeout: 1000, interval: 50 });
|
||||
|
||||
// Verify tool execution message
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
toolExecution: {
|
||||
tool: 'calculator',
|
||||
args: { expression: '2 + 2' },
|
||||
result: '4',
|
||||
toolCallId: 'call_123',
|
||||
action: 'execute',
|
||||
error: undefined
|
||||
},
|
||||
done: false
|
||||
});
|
||||
});
|
||||
|
||||
it("should handle streaming errors gracefully", async () => {
|
||||
mockChatPipelineExecute.mockRejectedValue(new Error('Pipeline error'));
|
||||
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: "This will fail",
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200); // Still returns 200
|
||||
|
||||
// Import ws service to access mock
|
||||
const ws = (await import("../../services/ws.js")).default;
|
||||
|
||||
// Wait for async streaming operations to complete
|
||||
await vi.waitFor(() => {
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
error: 'Error during streaming: Pipeline error',
|
||||
done: true
|
||||
});
|
||||
}, { timeout: 1000, interval: 50 });
|
||||
});
|
||||
|
||||
it("should handle AI disabled state", async () => {
|
||||
// Import options service to access mock
|
||||
const options = (await import("../../services/options.js")).default;
|
||||
(options.getOptionBool as any).mockReturnValue(false); // AI disabled
|
||||
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: "Hello AI",
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
// Import ws service to access mock
|
||||
const ws = (await import("../../services/ws.js")).default;
|
||||
|
||||
// Wait for async streaming operations to complete
|
||||
await vi.waitFor(() => {
|
||||
expect(ws.sendMessageToAllClients).toHaveBeenCalledWith({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: testChatId,
|
||||
error: 'Error during streaming: AI features are disabled. Please enable them in the settings.',
|
||||
done: true
|
||||
});
|
||||
}, { timeout: 1000, interval: 50 });
|
||||
});
|
||||
|
||||
it("should save chat messages after streaming completion", async () => {
|
||||
const completeResponse = 'This is the complete response';
|
||||
mockChatPipelineExecute.mockImplementation(async (input) => {
|
||||
const callback = input.streamCallback;
|
||||
await callback(completeResponse, true, {});
|
||||
});
|
||||
|
||||
await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: "Save this response",
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
});
|
||||
|
||||
// Wait for async operations to complete
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
// Note: Due to the mocked environment, the actual chat storage might not be called
|
||||
// This test verifies the streaming endpoint works correctly
|
||||
// The actual chat storage behavior is tested in the service layer tests
|
||||
expect(mockChatPipelineExecute).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should handle rapid consecutive streaming requests", async () => {
|
||||
let callCount = 0;
|
||||
mockChatPipelineExecute.mockImplementation(async (input) => {
|
||||
callCount++;
|
||||
const callback = input.streamCallback;
|
||||
await callback(`Response ${callCount}`, true, {});
|
||||
});
|
||||
|
||||
// Ensure chatStorage.updateChat doesn't cause issues with concurrent access
|
||||
mockChatStorage.updateChat.mockResolvedValue(undefined);
|
||||
|
||||
// Send multiple requests rapidly (reduced to 2 for reliability with Vite's async timing)
|
||||
const promises = Array.from({ length: 2 }, (_, i) =>
|
||||
supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: `Request ${i + 1}`,
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
})
|
||||
);
|
||||
|
||||
const responses = await Promise.all(promises);
|
||||
|
||||
// All should succeed
|
||||
responses.forEach(response => {
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.success).toBe(true);
|
||||
});
|
||||
|
||||
// Wait for async streaming operations to complete
|
||||
await vi.waitFor(() => {
|
||||
expect(mockChatPipelineExecute).toHaveBeenCalledTimes(2);
|
||||
}, {
|
||||
timeout: 2000,
|
||||
interval: 50
|
||||
});
|
||||
});
|
||||
|
||||
it("should handle large streaming responses", async () => {
|
||||
const largeContent = 'x'.repeat(10000); // 10KB of content
|
||||
mockChatPipelineExecute.mockImplementation(async (input) => {
|
||||
const callback = input.streamCallback;
|
||||
// Simulate chunked delivery of large content
|
||||
for (let i = 0; i < 10; i++) {
|
||||
await callback(largeContent.slice(i * 1000, (i + 1) * 1000), false, {});
|
||||
}
|
||||
await callback('', true, {});
|
||||
});
|
||||
|
||||
const response = await supertest(app)
|
||||
.post(`/api/llm/chat/${testChatId}/messages/stream`)
|
||||
|
||||
.send({
|
||||
content: "Generate large response",
|
||||
useAdvancedContext: false,
|
||||
showThinking: false
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
// Import ws service to access mock
|
||||
const ws = (await import("../../services/ws.js")).default;
|
||||
|
||||
// Wait for async streaming operations to complete and verify multiple chunks were sent
|
||||
await vi.waitFor(() => {
|
||||
const streamCalls = (ws.sendMessageToAllClients as any).mock.calls.filter(
|
||||
call => call[0].type === 'llm-stream' && call[0].content
|
||||
);
|
||||
expect(streamCalls.length).toBeGreaterThan(5);
|
||||
}, { timeout: 1000, interval: 50 });
|
||||
});
|
||||
});
|
||||
|
||||
describe("Error Handling", () => {
|
||||
it("should handle malformed JSON in request body", async () => {
|
||||
const response = await supertest(app)
|
||||
.post("/api/llm/chat")
|
||||
.set('Content-Type', 'application/json')
|
||||
|
||||
.send('{ invalid json }');
|
||||
|
||||
expect([400, 500]).toContain(response.status);
|
||||
});
|
||||
|
||||
it("should handle missing required fields", async () => {
|
||||
const response = await supertest(app)
|
||||
.post("/api/llm/chat")
|
||||
|
||||
.send({
|
||||
// Missing required fields
|
||||
});
|
||||
|
||||
// Should still work as title can be auto-generated
|
||||
expect([200, 400, 500]).toContain(response.status);
|
||||
});
|
||||
|
||||
it("should handle invalid parameter types", async () => {
|
||||
const response = await supertest(app)
|
||||
.post("/api/llm/chat")
|
||||
|
||||
.send({
|
||||
title: "Test Chat",
|
||||
temperature: "invalid", // Should be number
|
||||
maxTokens: "also-invalid" // Should be number
|
||||
});
|
||||
|
||||
// API should handle type conversion or validation
|
||||
expect([200, 400, 500]).toContain(response.status);
|
||||
});
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
// Clean up: delete any created chats
|
||||
if (createdChatId) {
|
||||
try {
|
||||
await supertest(app)
|
||||
.delete(`/api/llm/chat/${createdChatId}`)
|
||||
;
|
||||
} catch (error) {
|
||||
// Ignore cleanup errors
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -1,649 +0,0 @@
|
||||
import type { Request, Response } from "express";
|
||||
import log from "../../services/log.js";
|
||||
|
||||
import restChatService from "../../services/llm/rest_chat_service.js";
|
||||
import chatStorageService from '../../services/llm/chat_storage_service.js';
|
||||
import { WebSocketMessage } from "@triliumnext/commons";
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/llm/sessions:
|
||||
* post:
|
||||
* summary: Create a new LLM chat session
|
||||
* operationId: llm-create-session
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* title:
|
||||
* type: string
|
||||
* description: Title for the chat session
|
||||
* systemPrompt:
|
||||
* type: string
|
||||
* description: System message to set the behavior of the assistant
|
||||
* temperature:
|
||||
* type: number
|
||||
* description: Temperature parameter for the LLM (0.0-1.0)
|
||||
* maxTokens:
|
||||
* type: integer
|
||||
* description: Maximum tokens to generate in responses
|
||||
* model:
|
||||
* type: string
|
||||
* description: Specific model to use (depends on provider)
|
||||
* provider:
|
||||
* type: string
|
||||
* description: LLM provider to use (e.g., 'openai', 'anthropic', 'ollama')
|
||||
* contextNoteId:
|
||||
* type: string
|
||||
* description: Note ID to use as context for the session
|
||||
* responses:
|
||||
* '200':
|
||||
* description: Successfully created session
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* sessionId:
|
||||
* type: string
|
||||
* title:
|
||||
* type: string
|
||||
* createdAt:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function createSession(req: Request, res: Response) {
|
||||
return restChatService.createSession(req, res);
|
||||
}
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/llm/sessions/{sessionId}:
|
||||
* get:
|
||||
* summary: Retrieve a specific chat session
|
||||
* operationId: llm-get-session
|
||||
* parameters:
|
||||
* - name: sessionId
|
||||
* in: path
|
||||
* required: true
|
||||
* schema:
|
||||
* type: string
|
||||
* responses:
|
||||
* '200':
|
||||
* description: Chat session details
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* id:
|
||||
* type: string
|
||||
* title:
|
||||
* type: string
|
||||
* messages:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* role:
|
||||
* type: string
|
||||
* enum: [user, assistant, system]
|
||||
* content:
|
||||
* type: string
|
||||
* timestamp:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* createdAt:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* lastActive:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* '404':
|
||||
* description: Session not found
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function getSession(req: Request, res: Response) {
|
||||
return restChatService.getSession(req, res);
|
||||
}
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/llm/chat/{chatNoteId}:
|
||||
* patch:
|
||||
* summary: Update a chat's settings
|
||||
* operationId: llm-update-chat
|
||||
* parameters:
|
||||
* - name: chatNoteId
|
||||
* in: path
|
||||
* required: true
|
||||
* schema:
|
||||
* type: string
|
||||
* description: The ID of the chat note (formerly sessionId)
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* title:
|
||||
* type: string
|
||||
* description: Updated title for the session
|
||||
* systemPrompt:
|
||||
* type: string
|
||||
* description: Updated system prompt
|
||||
* temperature:
|
||||
* type: number
|
||||
* description: Updated temperature setting
|
||||
* maxTokens:
|
||||
* type: integer
|
||||
* description: Updated maximum tokens setting
|
||||
* model:
|
||||
* type: string
|
||||
* description: Updated model selection
|
||||
* provider:
|
||||
* type: string
|
||||
* description: Updated provider selection
|
||||
* contextNoteId:
|
||||
* type: string
|
||||
* description: Updated note ID for context
|
||||
* responses:
|
||||
* '200':
|
||||
* description: Session successfully updated
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* id:
|
||||
* type: string
|
||||
* title:
|
||||
* type: string
|
||||
* updatedAt:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* '404':
|
||||
* description: Session not found
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function updateSession(req: Request, res: Response) {
|
||||
// Get the chat using chatStorageService directly
|
||||
const chatNoteId = req.params.sessionId;
|
||||
const updates = req.body;
|
||||
|
||||
try {
|
||||
// Get the chat
|
||||
const chat = await chatStorageService.getChat(chatNoteId);
|
||||
if (!chat) {
|
||||
return [404, { error: `Chat with ID ${chatNoteId} not found` }];
|
||||
}
|
||||
|
||||
// Update title if provided
|
||||
if (updates.title) {
|
||||
await chatStorageService.updateChat(chatNoteId, chat.messages, updates.title);
|
||||
}
|
||||
|
||||
// Return the updated chat
|
||||
return {
|
||||
id: chatNoteId,
|
||||
title: updates.title || chat.title,
|
||||
updatedAt: new Date()
|
||||
};
|
||||
} catch (error) {
|
||||
log.error(`Error updating chat: ${error}`);
|
||||
return [500, { error: `Failed to update chat: ${error}` }];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/llm/sessions:
|
||||
* get:
|
||||
* summary: List all chat sessions
|
||||
* operationId: llm-list-sessions
|
||||
* responses:
|
||||
* '200':
|
||||
* description: List of chat sessions
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* id:
|
||||
* type: string
|
||||
* title:
|
||||
* type: string
|
||||
* createdAt:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* lastActive:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* messageCount:
|
||||
* type: integer
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function listSessions(req: Request, res: Response) {
|
||||
// Get all sessions using chatStorageService directly
|
||||
try {
|
||||
const chats = await chatStorageService.getAllChats();
|
||||
|
||||
// Format the response
|
||||
return {
|
||||
sessions: chats.map(chat => ({
|
||||
id: chat.id,
|
||||
title: chat.title,
|
||||
createdAt: chat.createdAt || new Date(),
|
||||
lastActive: chat.updatedAt || new Date(),
|
||||
messageCount: chat.messages.length
|
||||
}))
|
||||
};
|
||||
} catch (error) {
|
||||
log.error(`Error listing sessions: ${error}`);
|
||||
return [500, { error: `Failed to list sessions: ${error}` }];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/llm/sessions/{sessionId}:
|
||||
* delete:
|
||||
* summary: Delete a chat session
|
||||
* operationId: llm-delete-session
|
||||
* parameters:
|
||||
* - name: sessionId
|
||||
* in: path
|
||||
* required: true
|
||||
* schema:
|
||||
* type: string
|
||||
* responses:
|
||||
* '200':
|
||||
* description: Session successfully deleted
|
||||
* '404':
|
||||
* description: Session not found
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function deleteSession(req: Request, res: Response) {
|
||||
return restChatService.deleteSession(req, res);
|
||||
}
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/llm/chat/{chatNoteId}/messages:
|
||||
* post:
|
||||
* summary: Send a message to an LLM and get a response
|
||||
* operationId: llm-send-message
|
||||
* parameters:
|
||||
* - name: chatNoteId
|
||||
* in: path
|
||||
* required: true
|
||||
* schema:
|
||||
* type: string
|
||||
* description: The ID of the chat note (formerly sessionId)
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* message:
|
||||
* type: string
|
||||
* description: The user message to send to the LLM
|
||||
* options:
|
||||
* type: object
|
||||
* description: Optional parameters for this specific message
|
||||
* properties:
|
||||
* temperature:
|
||||
* type: number
|
||||
* maxTokens:
|
||||
* type: integer
|
||||
* model:
|
||||
* type: string
|
||||
* provider:
|
||||
* type: string
|
||||
* includeContext:
|
||||
* type: boolean
|
||||
* description: Whether to include relevant notes as context
|
||||
* useNoteContext:
|
||||
* type: boolean
|
||||
* description: Whether to use the session's context note
|
||||
* responses:
|
||||
* '200':
|
||||
* description: LLM response
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* response:
|
||||
* type: string
|
||||
* sources:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* noteId:
|
||||
* type: string
|
||||
* title:
|
||||
* type: string
|
||||
* similarity:
|
||||
* type: number
|
||||
* sessionId:
|
||||
* type: string
|
||||
* '404':
|
||||
* description: Session not found
|
||||
* '500':
|
||||
* description: Error processing request
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function sendMessage(req: Request, res: Response) {
|
||||
return restChatService.handleSendMessage(req, res);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/llm/chat/{chatNoteId}/messages/stream:
|
||||
* post:
|
||||
* summary: Stream a message to an LLM via WebSocket
|
||||
* operationId: llm-stream-message
|
||||
* parameters:
|
||||
* - name: chatNoteId
|
||||
* in: path
|
||||
* required: true
|
||||
* schema:
|
||||
* type: string
|
||||
* description: The ID of the chat note to stream messages to (formerly sessionId)
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* content:
|
||||
* type: string
|
||||
* description: The user message to send to the LLM
|
||||
* useAdvancedContext:
|
||||
* type: boolean
|
||||
* description: Whether to use advanced context extraction
|
||||
* showThinking:
|
||||
* type: boolean
|
||||
* description: Whether to show thinking process in the response
|
||||
* responses:
|
||||
* '200':
|
||||
* description: Streaming started successfully
|
||||
* '404':
|
||||
* description: Session not found
|
||||
* '500':
|
||||
* description: Error processing request
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function streamMessage(req: Request, res: Response) {
|
||||
log.info("=== Starting streamMessage ===");
|
||||
|
||||
try {
|
||||
const chatNoteId = req.params.chatNoteId;
|
||||
const { content, useAdvancedContext, showThinking, mentions } = req.body;
|
||||
|
||||
// Input validation
|
||||
if (!content || typeof content !== 'string' || content.trim().length === 0) {
|
||||
res.status(400).json({
|
||||
success: false,
|
||||
error: 'Content cannot be empty'
|
||||
});
|
||||
// Mark response as handled to prevent further processing
|
||||
(res as any).triliumResponseHandled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Send immediate success response
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
message: 'Streaming initiated successfully'
|
||||
});
|
||||
// Mark response as handled to prevent further processing
|
||||
(res as any).triliumResponseHandled = true;
|
||||
|
||||
// Start background streaming process after sending response
|
||||
handleStreamingProcess(chatNoteId, content, useAdvancedContext, showThinking, mentions)
|
||||
.catch(error => {
|
||||
log.error(`Background streaming error: ${error.message}`);
|
||||
|
||||
// Send error via WebSocket since HTTP response was already sent
|
||||
import('../../services/ws.js').then(wsModule => {
|
||||
wsModule.default.sendMessageToAllClients({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: chatNoteId,
|
||||
error: `Error during streaming: ${error.message}`,
|
||||
done: true
|
||||
});
|
||||
}).catch(wsError => {
|
||||
log.error(`Could not send WebSocket error: ${wsError}`);
|
||||
});
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
// Handle any synchronous errors
|
||||
log.error(`Synchronous error in streamMessage: ${error}`);
|
||||
|
||||
if (!res.headersSent) {
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: 'Internal server error'
|
||||
});
|
||||
}
|
||||
// Mark response as handled to prevent further processing
|
||||
(res as any).triliumResponseHandled = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the streaming process in the background
|
||||
* This is separate from the HTTP request/response cycle
|
||||
*/
|
||||
async function handleStreamingProcess(
|
||||
chatNoteId: string,
|
||||
content: string,
|
||||
useAdvancedContext: boolean,
|
||||
showThinking: boolean,
|
||||
mentions: any[]
|
||||
) {
|
||||
log.info("=== Starting background streaming process ===");
|
||||
|
||||
// Get or create chat directly from storage
|
||||
let chat = await chatStorageService.getChat(chatNoteId);
|
||||
if (!chat) {
|
||||
chat = await chatStorageService.createChat('New Chat');
|
||||
log.info(`Created new chat with ID: ${chat.id} for stream request`);
|
||||
}
|
||||
|
||||
// Add the user message to the chat immediately
|
||||
chat.messages.push({
|
||||
role: 'user',
|
||||
content
|
||||
});
|
||||
await chatStorageService.updateChat(chat.id, chat.messages, chat.title);
|
||||
|
||||
// Process mentions if provided
|
||||
let enhancedContent = content;
|
||||
if (mentions && Array.isArray(mentions) && mentions.length > 0) {
|
||||
log.info(`Processing ${mentions.length} note mentions`);
|
||||
|
||||
const becca = (await import('../../becca/becca.js')).default;
|
||||
const mentionContexts: string[] = [];
|
||||
|
||||
for (const mention of mentions) {
|
||||
try {
|
||||
const note = becca.getNote(mention.noteId);
|
||||
if (note && !note.isDeleted) {
|
||||
const noteContent = note.getContent();
|
||||
if (noteContent && typeof noteContent === 'string' && noteContent.trim()) {
|
||||
mentionContexts.push(`\n\n--- Content from "${mention.title}" (${mention.noteId}) ---\n${noteContent}\n--- End of "${mention.title}" ---`);
|
||||
log.info(`Added content from note "${mention.title}" (${mention.noteId})`);
|
||||
}
|
||||
} else {
|
||||
log.info(`Referenced note not found or deleted: ${mention.noteId}`);
|
||||
}
|
||||
} catch (error) {
|
||||
log.error(`Error retrieving content for note ${mention.noteId}: ${error}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (mentionContexts.length > 0) {
|
||||
enhancedContent = `${content}\n\n=== Referenced Notes ===\n${mentionContexts.join('\n')}`;
|
||||
log.info(`Enhanced content with ${mentionContexts.length} note references`);
|
||||
}
|
||||
}
|
||||
|
||||
// Import WebSocket service for streaming
|
||||
const wsService = (await import('../../services/ws.js')).default;
|
||||
|
||||
// Let the client know streaming has started
|
||||
wsService.sendMessageToAllClients({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: chatNoteId,
|
||||
thinking: showThinking ? 'Initializing streaming LLM response...' : undefined
|
||||
});
|
||||
|
||||
// Instead of calling the complex handleSendMessage service,
|
||||
// let's implement streaming directly to avoid response conflicts
|
||||
|
||||
try {
|
||||
// Check if AI is enabled
|
||||
const optionsModule = await import('../../services/options.js');
|
||||
const aiEnabled = optionsModule.default.getOptionBool('aiEnabled');
|
||||
if (!aiEnabled) {
|
||||
throw new Error("AI features are disabled. Please enable them in the settings.");
|
||||
}
|
||||
|
||||
// Get AI service
|
||||
const aiServiceManager = await import('../../services/llm/ai_service_manager.js');
|
||||
await aiServiceManager.default.getOrCreateAnyService();
|
||||
|
||||
// Use the chat pipeline directly for streaming
|
||||
const { ChatPipeline } = await import('../../services/llm/pipeline/chat_pipeline.js');
|
||||
const pipeline = new ChatPipeline({
|
||||
enableStreaming: true,
|
||||
enableMetrics: true,
|
||||
maxToolCallIterations: 5
|
||||
});
|
||||
|
||||
// Get selected model
|
||||
const { getSelectedModelConfig } = await import('../../services/llm/config/configuration_helpers.js');
|
||||
const modelConfig = await getSelectedModelConfig();
|
||||
|
||||
if (!modelConfig) {
|
||||
throw new Error("No valid AI model configuration found");
|
||||
}
|
||||
|
||||
const pipelineInput = {
|
||||
messages: chat.messages.map(msg => ({
|
||||
role: msg.role as 'user' | 'assistant' | 'system',
|
||||
content: msg.content
|
||||
})),
|
||||
query: enhancedContent,
|
||||
noteId: undefined,
|
||||
showThinking: showThinking,
|
||||
options: {
|
||||
useAdvancedContext: useAdvancedContext === true,
|
||||
model: modelConfig.model,
|
||||
stream: true,
|
||||
chatNoteId: chatNoteId
|
||||
},
|
||||
streamCallback: (data, done, rawChunk) => {
|
||||
const message: WebSocketMessage = {
|
||||
type: 'llm-stream' as const,
|
||||
chatNoteId: chatNoteId,
|
||||
done: done
|
||||
};
|
||||
|
||||
if (data) {
|
||||
(message as any).content = data;
|
||||
}
|
||||
|
||||
if (rawChunk && 'thinking' in rawChunk && rawChunk.thinking) {
|
||||
(message as any).thinking = rawChunk.thinking as string;
|
||||
}
|
||||
|
||||
if (rawChunk && 'toolExecution' in rawChunk && rawChunk.toolExecution) {
|
||||
const toolExec = rawChunk.toolExecution;
|
||||
(message as any).toolExecution = {
|
||||
tool: typeof toolExec.tool === 'string' ? toolExec.tool : toolExec.tool?.name,
|
||||
result: toolExec.result,
|
||||
args: 'arguments' in toolExec ?
|
||||
(typeof toolExec.arguments === 'object' ? toolExec.arguments as Record<string, unknown> : {}) : {},
|
||||
action: 'action' in toolExec ? toolExec.action as string : undefined,
|
||||
toolCallId: 'toolCallId' in toolExec ? toolExec.toolCallId as string : undefined,
|
||||
error: 'error' in toolExec ? toolExec.error as string : undefined
|
||||
};
|
||||
}
|
||||
|
||||
wsService.sendMessageToAllClients(message);
|
||||
|
||||
// Save final response when done
|
||||
if (done && data) {
|
||||
chat.messages.push({
|
||||
role: 'assistant',
|
||||
content: data
|
||||
});
|
||||
chatStorageService.updateChat(chat.id, chat.messages, chat.title).catch(err => {
|
||||
log.error(`Error saving streamed response: ${err}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Execute the pipeline
|
||||
await pipeline.execute(pipelineInput);
|
||||
|
||||
} catch (error: any) {
|
||||
log.error(`Error in direct streaming: ${error.message}`);
|
||||
wsService.sendMessageToAllClients({
|
||||
type: 'llm-stream',
|
||||
chatNoteId: chatNoteId,
|
||||
error: `Error during streaming: ${error.message}`,
|
||||
done: true
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
// Chat session management
|
||||
createSession,
|
||||
getSession,
|
||||
updateSession,
|
||||
listSessions,
|
||||
deleteSession,
|
||||
sendMessage,
|
||||
streamMessage
|
||||
};
|
||||
@@ -1,64 +0,0 @@
|
||||
import options from "../../services/options.js";
|
||||
import log from "../../services/log.js";
|
||||
import type { Request, Response } from "express";
|
||||
import { Ollama } from "ollama";
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/llm/providers/ollama/models:
|
||||
* get:
|
||||
* summary: List available models from Ollama
|
||||
* operationId: ollama-list-models
|
||||
* parameters:
|
||||
* - name: baseUrl
|
||||
* in: query
|
||||
* required: false
|
||||
* schema:
|
||||
* type: string
|
||||
* description: Optional custom Ollama API base URL
|
||||
* responses:
|
||||
* '200':
|
||||
* description: List of available Ollama models
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* success:
|
||||
* type: boolean
|
||||
* models:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* '500':
|
||||
* description: Error listing models
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function listModels(req: Request, res: Response) {
|
||||
try {
|
||||
const baseUrl = req.query.baseUrl as string || await options.getOption('ollamaBaseUrl') || 'http://localhost:11434';
|
||||
|
||||
// Create Ollama client
|
||||
const ollama = new Ollama({ host: baseUrl });
|
||||
|
||||
// Call Ollama API to get models using the official client
|
||||
const response = await ollama.list();
|
||||
|
||||
// Return the models list
|
||||
return {
|
||||
success: true,
|
||||
models: response.models || []
|
||||
};
|
||||
} catch (error: any) {
|
||||
log.error(`Error listing Ollama models: ${error.message || 'Unknown error'}`);
|
||||
|
||||
// Properly throw the error to be handled by the global error handler
|
||||
throw new Error(`Failed to list Ollama models: ${error.message || 'Unknown error'}`);
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
listModels
|
||||
};
|
||||
@@ -1,103 +0,0 @@
|
||||
import options from "../../services/options.js";
|
||||
import log from "../../services/log.js";
|
||||
import type { Request, Response } from "express";
|
||||
import OpenAI from "openai";
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/openai/models:
|
||||
* post:
|
||||
* summary: List available models from OpenAI
|
||||
* operationId: openai-list-models
|
||||
* requestBody:
|
||||
* required: false
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* baseUrl:
|
||||
* type: string
|
||||
* description: Optional custom OpenAI API base URL
|
||||
* responses:
|
||||
* '200':
|
||||
* description: List of available OpenAI models
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* success:
|
||||
* type: boolean
|
||||
* chatModels:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* id:
|
||||
* type: string
|
||||
* name:
|
||||
* type: string
|
||||
* type:
|
||||
* type: string
|
||||
* '500':
|
||||
* description: Error listing models
|
||||
* security:
|
||||
* - session: []
|
||||
* tags: ["llm"]
|
||||
*/
|
||||
async function listModels(req: Request, res: Response) {
|
||||
try {
|
||||
const { baseUrl } = req.body ?? {};
|
||||
|
||||
// Use provided base URL or default from options
|
||||
const openaiBaseUrl = baseUrl || await options.getOption('openaiBaseUrl') || 'https://api.openai.com/v1';
|
||||
const apiKey = await options.getOption('openaiApiKey');
|
||||
|
||||
if (!apiKey) {
|
||||
// Log warning but don't throw - some OpenAI-compatible endpoints don't require API keys
|
||||
log.info('OpenAI API key is not configured when listing models. This may cause issues with official OpenAI endpoints.');
|
||||
}
|
||||
|
||||
// Initialize OpenAI client with the API key (or empty string) and base URL
|
||||
const openai = new OpenAI({
|
||||
apiKey: apiKey || '', // Default to empty string if no API key
|
||||
baseURL: openaiBaseUrl
|
||||
});
|
||||
|
||||
// Call OpenAI API to get models using the SDK
|
||||
const response = await openai.models.list();
|
||||
|
||||
// Filter and categorize models
|
||||
const allModels = response.data || [];
|
||||
|
||||
// Include all models as chat models, excluding embedding models
|
||||
const chatModels = allModels
|
||||
.filter((model) =>
|
||||
// Exclude models that are explicitly for embeddings
|
||||
!model.id.includes('embedding') &&
|
||||
!model.id.includes('embed')
|
||||
)
|
||||
.map((model) => ({
|
||||
id: model.id,
|
||||
name: model.id,
|
||||
type: 'chat'
|
||||
}));
|
||||
|
||||
// Return the models list
|
||||
return {
|
||||
success: true,
|
||||
chatModels
|
||||
};
|
||||
} catch (error: any) {
|
||||
log.error(`Error listing OpenAI models: ${error.message || 'Unknown error'}`);
|
||||
|
||||
// Properly throw the error to be handled by the global error handler
|
||||
throw new Error(`Failed to list OpenAI models: ${error.message || 'Unknown error'}`);
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
listModels
|
||||
};
|
||||
|
||||
@@ -103,20 +103,6 @@ const ALLOWED_OPTIONS = new Set<OptionNames>([
|
||||
"seenCallToActions",
|
||||
"experimentalFeatures",
|
||||
"newLayout",
|
||||
|
||||
// AI/LLM integration options
|
||||
"aiEnabled",
|
||||
"aiTemperature",
|
||||
"aiSystemPrompt",
|
||||
"aiSelectedProvider",
|
||||
"openaiApiKey",
|
||||
"openaiBaseUrl",
|
||||
"openaiDefaultModel",
|
||||
"anthropicApiKey",
|
||||
"anthropicBaseUrl",
|
||||
"anthropicDefaultModel",
|
||||
"ollamaBaseUrl",
|
||||
"ollamaDefaultModel",
|
||||
"mfaEnabled",
|
||||
"mfaMethod"
|
||||
]);
|
||||
|
||||
@@ -17,7 +17,7 @@ import auth from "../services/auth.js";
|
||||
import openID from '../services/open_id.js';
|
||||
import { isElectron } from "../services/utils.js";
|
||||
import shareRoutes from "../share/routes.js";
|
||||
import anthropicRoute from "./api/anthropic.js";
|
||||
|
||||
import appInfoRoute from "./api/app_info.js";
|
||||
import attachmentsApiRoute from "./api/attachments.js";
|
||||
import attributesRoute from "./api/attributes.js";
|
||||
@@ -35,13 +35,12 @@ import fontsRoute from "./api/fonts.js";
|
||||
import imageRoute from "./api/image.js";
|
||||
import importRoute from "./api/import.js";
|
||||
import keysRoute from "./api/keys.js";
|
||||
import llmRoute from "./api/llm.js";
|
||||
|
||||
import loginApiRoute from "./api/login.js";
|
||||
import metricsRoute from "./api/metrics.js";
|
||||
import noteMapRoute from "./api/note_map.js";
|
||||
import notesApiRoute from "./api/notes.js";
|
||||
import ollamaRoute from "./api/ollama.js";
|
||||
import openaiRoute from "./api/openai.js";
|
||||
|
||||
import optionsApiRoute from "./api/options.js";
|
||||
import otherRoute from "./api/other.js";
|
||||
import passwordApiRoute from "./api/password.js";
|
||||
@@ -370,20 +369,6 @@ function register(app: express.Application) {
|
||||
etapiBackupRoute.register(router);
|
||||
etapiMetricsRoute.register(router);
|
||||
|
||||
// LLM Chat API
|
||||
asyncApiRoute(PST, "/api/llm/chat", llmRoute.createSession);
|
||||
asyncApiRoute(GET, "/api/llm/chat", llmRoute.listSessions);
|
||||
asyncApiRoute(GET, "/api/llm/chat/:sessionId", llmRoute.getSession);
|
||||
asyncApiRoute(PATCH, "/api/llm/chat/:sessionId", llmRoute.updateSession);
|
||||
asyncApiRoute(DEL, "/api/llm/chat/:chatNoteId", llmRoute.deleteSession);
|
||||
asyncApiRoute(PST, "/api/llm/chat/:chatNoteId/messages", llmRoute.sendMessage);
|
||||
asyncApiRoute(PST, "/api/llm/chat/:chatNoteId/messages/stream", llmRoute.streamMessage);
|
||||
|
||||
// LLM provider endpoints - moved under /api/llm/providers hierarchy
|
||||
asyncApiRoute(GET, "/api/llm/providers/ollama/models", ollamaRoute.listModels);
|
||||
asyncApiRoute(GET, "/api/llm/providers/openai/models", openaiRoute.listModels);
|
||||
asyncApiRoute(GET, "/api/llm/providers/anthropic/models", anthropicRoute.listModels);
|
||||
|
||||
app.use("", router);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import packageJson from "../../package.json" with { type: "json" };
|
||||
import dataDir from "./data_dir.js";
|
||||
import { AppInfo } from "@triliumnext/commons";
|
||||
|
||||
const APP_DB_VERSION = 233;
|
||||
const APP_DB_VERSION = 234;
|
||||
const SYNC_VERSION = 36;
|
||||
const CLIPPER_PROTOCOL_VERSION = "1.0";
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ describe("Hidden Subtree", () => {
|
||||
});
|
||||
|
||||
it("maintains launchers hidden, if they were shown by default but moved by the user", () => {
|
||||
const launcher = becca.getNote("_lbLlmChat");
|
||||
const launcher = becca.getNote("_lbCalendar");
|
||||
const branch = launcher?.getParentBranches()[0];
|
||||
expect(branch).toBeDefined();
|
||||
expect(branch!.parentNoteId).toBe("_lbVisibleLaunchers");
|
||||
|
||||
@@ -246,7 +246,7 @@ function buildHiddenSubtreeDefinition(helpSubtree: HiddenSubtreeItem[]): HiddenS
|
||||
{ id: "_optionsEtapi", title: t("hidden-subtree.etapi-title"), type: "contentWidget", icon: "bx-extension" },
|
||||
{ id: "_optionsBackup", title: t("hidden-subtree.backup-title"), type: "contentWidget", icon: "bx-data" },
|
||||
{ id: "_optionsSync", title: t("hidden-subtree.sync-title"), type: "contentWidget", icon: "bx-wifi" },
|
||||
{ id: "_optionsAi", title: t("hidden-subtree.ai-llm-title"), type: "contentWidget", icon: "bx-bot" },
|
||||
|
||||
{ id: "_optionsOther", title: t("hidden-subtree.other"), type: "contentWidget", icon: "bx-dots-horizontal" },
|
||||
{ id: "_optionsLocalization", title: t("hidden-subtree.localization"), type: "contentWidget", icon: "bx-world" },
|
||||
{ id: "_optionsAdvanced", title: t("hidden-subtree.advanced-title"), type: "contentWidget" }
|
||||
|
||||
@@ -104,16 +104,6 @@ export default function buildLaunchBarConfig() {
|
||||
targetNoteId: "_globalNoteMap",
|
||||
icon: "bx bxs-network-chart"
|
||||
},
|
||||
{
|
||||
id: "_lbLlmChat",
|
||||
title: t("hidden-subtree.llm-chat-title"),
|
||||
type: "launcher",
|
||||
builtinWidget: "aiChatLauncher",
|
||||
icon: "bx bx-bot",
|
||||
attributes: [
|
||||
{ type: "label", name: "desktopOnly" }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "_lbCalendar",
|
||||
...sharedLaunchers.calendar
|
||||
|
||||
@@ -1,144 +0,0 @@
|
||||
# Trilium Context Service
|
||||
|
||||
This directory contains Trilium's context management services, which are responsible for providing relevant context to LLM models when generating responses.
|
||||
|
||||
## Structure
|
||||
|
||||
The context system has been refactored into a modular architecture:
|
||||
|
||||
```
|
||||
context/
|
||||
├── index.ts - Base context extractor
|
||||
├── semantic_context.ts - Semantic context utilities
|
||||
├── hierarchy.ts - Note hierarchy context utilities
|
||||
├── code_handlers.ts - Code-specific context handling
|
||||
├── content_chunking.ts - Content chunking utilities
|
||||
├── note_content.ts - Note content processing
|
||||
├── summarization.ts - Content summarization utilities
|
||||
├── modules/ - Modular context services
|
||||
│ ├── provider_manager.ts - Embedding provider management
|
||||
│ ├── cache_manager.ts - Caching system
|
||||
│ ├── semantic_search.ts - Semantic search functionality
|
||||
│ ├── query_enhancer.ts - Query enhancement
|
||||
│ ├── context_formatter.ts - Context formatting
|
||||
│ └── context_service.ts - Main context service
|
||||
└── README.md - This documentation
|
||||
```
|
||||
|
||||
## Main Entry Points
|
||||
|
||||
- `context_service.ts` - Main entry point for modern code
|
||||
- `semantic_context_service.ts` - Compatibility wrapper for old code (deprecated)
|
||||
- `trilium_context_service.ts` - Compatibility wrapper for old code (deprecated)
|
||||
|
||||
## Usage
|
||||
|
||||
### For new code:
|
||||
|
||||
```typescript
|
||||
import aiServiceManager from '../services/llm/ai_service_manager.js';
|
||||
|
||||
// Get the context service
|
||||
const contextService = aiServiceManager.getContextService();
|
||||
|
||||
// Process a query to get relevant context
|
||||
const result = await contextService.processQuery(
|
||||
"What are my notes about programming?",
|
||||
llmService,
|
||||
currentNoteId,
|
||||
false // showThinking
|
||||
);
|
||||
|
||||
// Get semantic context
|
||||
const context = await contextService.getSemanticContext(noteId, userQuery);
|
||||
|
||||
// Get context that adapts to query complexity
|
||||
const smartContext = await contextService.getSmartContext(noteId, userQuery);
|
||||
```
|
||||
|
||||
### For legacy code (deprecated):
|
||||
|
||||
```typescript
|
||||
import aiServiceManager from '../services/llm/ai_service_manager.js';
|
||||
|
||||
// Get the semantic context service (deprecated)
|
||||
const semanticContext = aiServiceManager.getSemanticContextService();
|
||||
|
||||
// Get context
|
||||
const context = await semanticContext.getSemanticContext(noteId, userQuery);
|
||||
```
|
||||
|
||||
## Modules
|
||||
|
||||
### Provider Manager
|
||||
|
||||
Handles embedding provider selection and management:
|
||||
|
||||
```typescript
|
||||
import providerManager from './context/modules/provider_manager.js';
|
||||
|
||||
// Get the preferred embedding provider
|
||||
const provider = await providerManager.getPreferredEmbeddingProvider();
|
||||
|
||||
// Generate embeddings for a query
|
||||
const embedding = await providerManager.generateQueryEmbedding(query);
|
||||
```
|
||||
|
||||
### Cache Manager
|
||||
|
||||
Provides caching for context data:
|
||||
|
||||
```typescript
|
||||
import cacheManager from './context/modules/cache_manager.js';
|
||||
|
||||
// Get cached data
|
||||
const cached = cacheManager.getNoteData(noteId, 'content');
|
||||
|
||||
// Store data in cache
|
||||
cacheManager.storeNoteData(noteId, 'content', data);
|
||||
|
||||
// Clear caches
|
||||
cacheManager.clearAllCaches();
|
||||
```
|
||||
|
||||
### Semantic Search
|
||||
|
||||
Handles semantic search functionality:
|
||||
|
||||
```typescript
|
||||
import semanticSearch from './context/modules/semantic_search.js';
|
||||
|
||||
// Find relevant notes
|
||||
const notes = await semanticSearch.findRelevantNotes(query, contextNoteId);
|
||||
|
||||
// Rank notes by relevance
|
||||
const ranked = await semanticSearch.rankNotesByRelevance(notes, query);
|
||||
```
|
||||
|
||||
### Query Enhancer
|
||||
|
||||
Provides query enhancement:
|
||||
|
||||
```typescript
|
||||
import queryEnhancer from './context/modules/query_enhancer.js';
|
||||
|
||||
// Generate multiple search queries from a user question
|
||||
const queries = await queryEnhancer.generateSearchQueries(question, llmService);
|
||||
|
||||
// Estimate query complexity
|
||||
const complexity = queryEnhancer.estimateQueryComplexity(query);
|
||||
```
|
||||
|
||||
### Context Formatter
|
||||
|
||||
Formats context for LLM consumption:
|
||||
|
||||
```typescript
|
||||
import contextFormatter from './context/modules/context_formatter.js';
|
||||
|
||||
// Build formatted context from notes
|
||||
const context = await contextFormatter.buildContextFromNotes(notes, query, providerId);
|
||||
|
||||
// Sanitize note content
|
||||
const clean = contextFormatter.sanitizeNoteContent(content, type, mime);
|
||||
```
|
||||
@@ -1,262 +0,0 @@
|
||||
import type { ToolCall } from './tools/tool_interfaces.js';
|
||||
import type { ModelMetadata } from './providers/provider_options.js';
|
||||
|
||||
/**
|
||||
* Interface for chat messages between client and LLM models
|
||||
*/
|
||||
export interface Message {
|
||||
role: 'user' | 'assistant' | 'system' | 'tool';
|
||||
content: string;
|
||||
name?: string;
|
||||
tool_call_id?: string;
|
||||
tool_calls?: ToolCall[] | null;
|
||||
sessionId?: string; // Optional session ID for WebSocket communication
|
||||
}
|
||||
|
||||
// Define additional interfaces for tool-related types
|
||||
export interface ToolChoice {
|
||||
type: 'none' | 'auto' | 'function';
|
||||
function?: {
|
||||
name: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface ToolData {
|
||||
type: 'function';
|
||||
function: {
|
||||
name: string;
|
||||
description: string;
|
||||
parameters: Record<string, unknown>;
|
||||
};
|
||||
}
|
||||
|
||||
export interface ToolExecutionInfo {
|
||||
type: 'start' | 'update' | 'complete' | 'error';
|
||||
tool: {
|
||||
name: string;
|
||||
arguments: Record<string, unknown>;
|
||||
};
|
||||
result?: string | Record<string, unknown>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface for streaming response chunks
|
||||
*
|
||||
* This is the standardized format for all streaming chunks across
|
||||
* different providers (OpenAI, Anthropic, Ollama, etc.).
|
||||
* The original provider-specific chunks are available through
|
||||
* the extended interface in the stream_manager.
|
||||
*
|
||||
* See STREAMING.md for complete documentation on streaming usage.
|
||||
*/
|
||||
export interface StreamChunk {
|
||||
/** The text content in this chunk (may be empty for status updates) */
|
||||
text: string;
|
||||
|
||||
/** Whether this is the final chunk in the stream */
|
||||
done: boolean;
|
||||
|
||||
/** Optional token usage statistics (rarely available in streaming mode) */
|
||||
usage?: {
|
||||
promptTokens?: number;
|
||||
completionTokens?: number;
|
||||
totalTokens?: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* Raw provider-specific data from the original response chunk
|
||||
* This can include thinking state, tool execution info, etc.
|
||||
*/
|
||||
raw?: Record<string, unknown>;
|
||||
|
||||
/**
|
||||
* Tool calls from the LLM (if any)
|
||||
* These may be accumulated over multiple chunks during streaming
|
||||
*/
|
||||
tool_calls?: ToolCall[];
|
||||
|
||||
/**
|
||||
* Tool execution information during streaming
|
||||
* Includes tool name, args, and execution status
|
||||
*/
|
||||
toolExecution?: ToolExecutionInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tool execution status for feedback to models
|
||||
*/
|
||||
export interface ToolExecutionStatus {
|
||||
toolCallId: string;
|
||||
name: string;
|
||||
success: boolean;
|
||||
result: string;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Options for chat completion requests
|
||||
*
|
||||
* Key properties:
|
||||
* - stream: If true, the response will be streamed
|
||||
* - model: Model name to use
|
||||
* - provider: Provider to use (openai, anthropic, ollama, etc.)
|
||||
* - enableTools: If true, enables tool support
|
||||
*
|
||||
* The stream option is particularly important and should be consistently handled
|
||||
* throughout the pipeline. It should be explicitly set to true or false.
|
||||
*
|
||||
* Streaming supports two approaches:
|
||||
* 1. Callback-based: Provide a streamCallback to receive chunks directly
|
||||
* 2. API-based: Use the stream property in the response to process chunks
|
||||
*
|
||||
* See STREAMING.md for complete documentation on streaming usage.
|
||||
*/
|
||||
export interface ChatCompletionOptions {
|
||||
model?: string;
|
||||
temperature?: number;
|
||||
maxTokens?: number;
|
||||
topP?: number;
|
||||
frequencyPenalty?: number;
|
||||
presencePenalty?: number;
|
||||
showThinking?: boolean;
|
||||
systemPrompt?: string;
|
||||
preserveSystemPrompt?: boolean; // Whether to preserve existing system message
|
||||
bypassFormatter?: boolean; // Whether to bypass the message formatter entirely
|
||||
expectsJsonResponse?: boolean; // Whether this request expects a JSON response
|
||||
|
||||
/**
|
||||
* Whether to stream the response
|
||||
* When true, response will be delivered incrementally via either:
|
||||
* - The streamCallback if provided
|
||||
* - The stream property in the response object
|
||||
*/
|
||||
stream?: boolean;
|
||||
|
||||
/**
|
||||
* Optional callback function for streaming responses
|
||||
* When provided along with stream:true, this function will be called
|
||||
* for each chunk of the response.
|
||||
*
|
||||
* @param text The text content in this chunk
|
||||
* @param isDone Whether this is the final chunk
|
||||
* @param originalChunk Optional original provider-specific chunk for advanced usage
|
||||
*/
|
||||
streamCallback?: (text: string, isDone: boolean, originalChunk?: Record<string, unknown>) => Promise<void> | void;
|
||||
|
||||
enableTools?: boolean; // Whether to enable tool calling
|
||||
tools?: ToolData[]; // Tools to provide to the LLM
|
||||
tool_choice?: ToolChoice; // Tool choice parameter for the LLM
|
||||
useAdvancedContext?: boolean; // Whether to use advanced context enrichment
|
||||
toolExecutionStatus?: ToolExecutionStatus[]; // Status information about executed tools for feedback
|
||||
providerMetadata?: ModelMetadata; // Metadata about the provider and model capabilities
|
||||
sessionId?: string; // Session ID for storing tool execution results
|
||||
|
||||
/**
|
||||
* Maximum number of tool execution iterations
|
||||
* Used to prevent infinite loops in tool execution
|
||||
*/
|
||||
maxToolIterations?: number;
|
||||
|
||||
/**
|
||||
* Current tool execution iteration counter
|
||||
* Internal use for tracking nested tool executions
|
||||
*/
|
||||
currentToolIteration?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Response from a chat completion request
|
||||
*
|
||||
* When streaming is used, the behavior depends on how streaming was requested:
|
||||
*
|
||||
* 1. With streamCallback: The text field contains the complete response
|
||||
* collected from all chunks, and the stream property is not present.
|
||||
*
|
||||
* 2. Without streamCallback: The text field is initially empty, and the
|
||||
* stream property provides a function to process chunks and collect
|
||||
* the complete response.
|
||||
*
|
||||
* See STREAMING.md for complete documentation on streaming usage.
|
||||
*/
|
||||
export interface ChatResponse {
|
||||
/**
|
||||
* The complete text response.
|
||||
* If streaming was used with streamCallback, this contains the collected response.
|
||||
* If streaming was used without streamCallback, this is initially empty.
|
||||
*/
|
||||
text: string;
|
||||
|
||||
/** The model that generated the response */
|
||||
model: string;
|
||||
|
||||
/** The provider that served the request (openai, anthropic, ollama, etc.) */
|
||||
provider: string;
|
||||
|
||||
/** Token usage statistics (may not be available when streaming) */
|
||||
usage?: {
|
||||
promptTokens?: number;
|
||||
completionTokens?: number;
|
||||
totalTokens?: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* Stream processor function - only present when streaming is enabled
|
||||
* without a streamCallback. When called with a chunk processor function,
|
||||
* it returns a Promise that resolves to the complete response text.
|
||||
*
|
||||
* @param callback Function to process each chunk of the stream
|
||||
* @returns Promise resolving to the complete text after stream processing
|
||||
*/
|
||||
stream?: (callback: (chunk: StreamChunk) => Promise<void> | void) => Promise<string>;
|
||||
|
||||
/** Tool calls from the LLM (if tools were used and the model supports them) */
|
||||
tool_calls?: ToolCall[] | null;
|
||||
}
|
||||
|
||||
export interface AIService {
|
||||
/**
|
||||
* Generate a chat completion response
|
||||
*/
|
||||
generateChatCompletion(messages: Message[], options?: ChatCompletionOptions): Promise<ChatResponse>;
|
||||
|
||||
/**
|
||||
* Check if the service can be used (API key is set, etc.)
|
||||
*/
|
||||
isAvailable(): boolean;
|
||||
|
||||
/**
|
||||
* Get the name of the service
|
||||
*/
|
||||
getName(): string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface for the semantic context service, which provides enhanced context retrieval
|
||||
* for AI conversations based on semantic similarity.
|
||||
*/
|
||||
export interface SemanticContextService {
|
||||
/**
|
||||
* Initialize the semantic context service
|
||||
*/
|
||||
initialize(): Promise<void>;
|
||||
|
||||
/**
|
||||
* Retrieve semantic context based on relevance to user query
|
||||
*/
|
||||
getSemanticContext(noteId: string, userQuery: string, maxResults?: number, messages?: Message[]): Promise<string>;
|
||||
|
||||
/**
|
||||
* Get progressive context based on depth
|
||||
*/
|
||||
getProgressiveContext?(noteId: string, depth?: number): Promise<string>;
|
||||
|
||||
/**
|
||||
* Get smart context selection that adapts to query complexity
|
||||
*/
|
||||
getSmartContext?(noteId: string, userQuery: string): Promise<string>;
|
||||
|
||||
/**
|
||||
* Enhance LLM context with agent tools
|
||||
*/
|
||||
getAgentToolsContext(noteId: string, query: string, showThinking?: boolean): Promise<string>;
|
||||
}
|
||||
@@ -1,499 +0,0 @@
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
||||
import { AIServiceManager } from './ai_service_manager.js';
|
||||
import options from '../options.js';
|
||||
import eventService from '../events.js';
|
||||
import { AnthropicService } from './providers/anthropic_service.js';
|
||||
import { OpenAIService } from './providers/openai_service.js';
|
||||
import { OllamaService } from './providers/ollama_service.js';
|
||||
import * as configHelpers from './config/configuration_helpers.js';
|
||||
import type { AIService, ChatCompletionOptions, Message } from './ai_interface.js';
|
||||
|
||||
// Mock dependencies
|
||||
vi.mock('../options.js', () => ({
|
||||
default: {
|
||||
getOption: vi.fn(),
|
||||
getOptionBool: vi.fn(),
|
||||
getOptionInt: vi.fn(name => {
|
||||
if (name === "protectedSessionTimeout") return Number.MAX_SAFE_INTEGER;
|
||||
return 0;
|
||||
})
|
||||
}
|
||||
}));
|
||||
|
||||
vi.mock('../events.js', () => ({
|
||||
default: {
|
||||
subscribe: vi.fn()
|
||||
}
|
||||
}));
|
||||
|
||||
vi.mock('../log.js', () => ({
|
||||
default: {
|
||||
info: vi.fn(),
|
||||
error: vi.fn(),
|
||||
warn: vi.fn()
|
||||
}
|
||||
}));
|
||||
|
||||
vi.mock('./providers/anthropic_service.js', () => ({
|
||||
AnthropicService: vi.fn()
|
||||
}));
|
||||
|
||||
vi.mock('./providers/openai_service.js', () => ({
|
||||
OpenAIService: vi.fn()
|
||||
}));
|
||||
|
||||
vi.mock('./providers/ollama_service.js', () => ({
|
||||
OllamaService: vi.fn()
|
||||
}));
|
||||
|
||||
vi.mock('./config/configuration_helpers.js', () => ({
|
||||
getSelectedProvider: vi.fn(),
|
||||
parseModelIdentifier: vi.fn(),
|
||||
isAIEnabled: vi.fn(),
|
||||
getDefaultModelForProvider: vi.fn(),
|
||||
clearConfigurationCache: vi.fn(),
|
||||
validateConfiguration: vi.fn()
|
||||
}));
|
||||
|
||||
vi.mock('./context/index.js', () => ({
|
||||
ContextExtractor: vi.fn().mockImplementation(function () {})
|
||||
}));
|
||||
|
||||
vi.mock('./context_extractors/index.js', () => ({
|
||||
default: {
|
||||
getTools: vi.fn().mockReturnValue({
|
||||
noteNavigator: {},
|
||||
queryDecomposition: {},
|
||||
contextualThinking: {}
|
||||
}),
|
||||
getAllTools: vi.fn().mockReturnValue([])
|
||||
}
|
||||
}));
|
||||
|
||||
vi.mock('./context/services/context_service.js', () => ({
|
||||
default: {
|
||||
findRelevantNotes: vi.fn().mockResolvedValue([])
|
||||
}
|
||||
}));
|
||||
|
||||
vi.mock('./tools/tool_initializer.js', () => ({
|
||||
default: {
|
||||
initializeTools: vi.fn().mockResolvedValue(undefined)
|
||||
}
|
||||
}));
|
||||
|
||||
describe('AIServiceManager', () => {
|
||||
let manager: AIServiceManager;
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
|
||||
// Set up default mock implementations for service constructors
|
||||
(AnthropicService as any).mockImplementation(function(this: any) {
|
||||
this.isAvailable = vi.fn().mockReturnValue(true);
|
||||
this.generateChatCompletion = vi.fn();
|
||||
});
|
||||
|
||||
(OpenAIService as any).mockImplementation(function(this: any) {
|
||||
this.isAvailable = vi.fn().mockReturnValue(true);
|
||||
this.generateChatCompletion = vi.fn();
|
||||
});
|
||||
|
||||
(OllamaService as any).mockImplementation(function(this: any) {
|
||||
this.isAvailable = vi.fn().mockReturnValue(true);
|
||||
this.generateChatCompletion = vi.fn();
|
||||
});
|
||||
|
||||
manager = new AIServiceManager();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
describe('constructor', () => {
|
||||
it('should initialize tools and set up event listeners', () => {
|
||||
// The constructor initializes tools but doesn't set up event listeners anymore
|
||||
// Just verify the manager was created
|
||||
expect(manager).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe('getSelectedProviderAsync', () => {
|
||||
it('should return the selected provider', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce('openai');
|
||||
|
||||
const result = await manager.getSelectedProviderAsync();
|
||||
|
||||
expect(result).toBe('openai');
|
||||
expect(configHelpers.getSelectedProvider).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should return null if no provider is selected', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce(null);
|
||||
|
||||
const result = await manager.getSelectedProviderAsync();
|
||||
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
|
||||
it('should handle errors and return null', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockRejectedValueOnce(new Error('Config error'));
|
||||
|
||||
const result = await manager.getSelectedProviderAsync();
|
||||
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('validateConfiguration', () => {
|
||||
it('should return null for valid configuration', async () => {
|
||||
vi.mocked(configHelpers.validateConfiguration).mockResolvedValueOnce({
|
||||
isValid: true,
|
||||
errors: [],
|
||||
warnings: []
|
||||
});
|
||||
|
||||
const result = await manager.validateConfiguration();
|
||||
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
|
||||
it('should return error message for invalid configuration', async () => {
|
||||
vi.mocked(configHelpers.validateConfiguration).mockResolvedValueOnce({
|
||||
isValid: false,
|
||||
errors: ['Missing API key', 'Invalid model'],
|
||||
warnings: []
|
||||
});
|
||||
|
||||
const result = await manager.validateConfiguration();
|
||||
|
||||
expect(result).toContain('There are issues with your AI configuration');
|
||||
expect(result).toContain('Missing API key');
|
||||
expect(result).toContain('Invalid model');
|
||||
});
|
||||
|
||||
it('should include warnings in valid configuration', async () => {
|
||||
vi.mocked(configHelpers.validateConfiguration).mockResolvedValueOnce({
|
||||
isValid: true,
|
||||
errors: [],
|
||||
warnings: ['Model not optimal']
|
||||
});
|
||||
|
||||
const result = await manager.validateConfiguration();
|
||||
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('getOrCreateAnyService', () => {
|
||||
it('should create and return the selected provider service', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce('openai');
|
||||
vi.mocked(options.getOption).mockReturnValueOnce('test-api-key');
|
||||
|
||||
(OpenAIService as any).mockImplementationOnce(function(this: any) {
|
||||
this.isAvailable = vi.fn().mockReturnValue(true);
|
||||
this.generateChatCompletion = vi.fn();
|
||||
});
|
||||
|
||||
const result = await manager.getOrCreateAnyService();
|
||||
|
||||
expect(result).toBeDefined();
|
||||
expect(result.isAvailable()).toBe(true);
|
||||
});
|
||||
|
||||
it('should throw error if no provider is selected', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce(null);
|
||||
|
||||
await expect(manager.getOrCreateAnyService()).rejects.toThrow(
|
||||
'No AI provider is selected'
|
||||
);
|
||||
});
|
||||
|
||||
it('should throw error if selected provider is not available', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce('openai');
|
||||
vi.mocked(options.getOption).mockReturnValueOnce(''); // No API key
|
||||
|
||||
await expect(manager.getOrCreateAnyService()).rejects.toThrow(
|
||||
'Selected AI provider (openai) is not available'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isAnyServiceAvailable', () => {
|
||||
it('should return true if any provider is available', () => {
|
||||
vi.mocked(options.getOption).mockReturnValueOnce('test-api-key');
|
||||
|
||||
const result = manager.isAnyServiceAvailable();
|
||||
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false if no providers are available', () => {
|
||||
vi.mocked(options.getOption).mockReturnValue('');
|
||||
|
||||
const result = manager.isAnyServiceAvailable();
|
||||
|
||||
expect(result).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getAvailableProviders', () => {
|
||||
it('should return list of available providers', () => {
|
||||
vi.mocked(options.getOption)
|
||||
.mockReturnValueOnce('openai-key')
|
||||
.mockReturnValueOnce('anthropic-key')
|
||||
.mockReturnValueOnce(''); // No Ollama URL
|
||||
|
||||
const result = manager.getAvailableProviders();
|
||||
|
||||
expect(result).toEqual(['openai', 'anthropic']);
|
||||
});
|
||||
|
||||
it('should include already created services', () => {
|
||||
// Mock that OpenAI has API key configured
|
||||
vi.mocked(options.getOption).mockReturnValueOnce('test-api-key');
|
||||
|
||||
const result = manager.getAvailableProviders();
|
||||
|
||||
expect(result).toContain('openai');
|
||||
});
|
||||
});
|
||||
|
||||
describe('generateChatCompletion', () => {
|
||||
const messages: Message[] = [
|
||||
{ role: 'user', content: 'Hello' }
|
||||
];
|
||||
|
||||
it('should generate completion with selected provider', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce('openai');
|
||||
|
||||
// Mock the getAvailableProviders to include openai
|
||||
vi.mocked(options.getOption)
|
||||
.mockReturnValueOnce('test-api-key') // for availability check
|
||||
.mockReturnValueOnce('') // for anthropic
|
||||
.mockReturnValueOnce('') // for ollama
|
||||
.mockReturnValueOnce('test-api-key'); // for service creation
|
||||
|
||||
const mockResponse = { content: 'Hello response' };
|
||||
(OpenAIService as any).mockImplementationOnce(function(this: any) {
|
||||
this.isAvailable = vi.fn().mockReturnValue(true);
|
||||
this.generateChatCompletion = vi.fn().mockResolvedValueOnce(mockResponse);
|
||||
});
|
||||
|
||||
const result = await manager.getOrCreateAnyService();
|
||||
|
||||
expect(result).toBeDefined();
|
||||
expect(result.isAvailable()).toBe(true);
|
||||
});
|
||||
|
||||
it('should handle provider prefix in model', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce('openai');
|
||||
vi.mocked(configHelpers.parseModelIdentifier).mockReturnValueOnce({
|
||||
provider: 'openai',
|
||||
modelId: 'gpt-4',
|
||||
fullIdentifier: 'openai:gpt-4'
|
||||
});
|
||||
|
||||
// Mock the getAvailableProviders to include openai
|
||||
vi.mocked(options.getOption)
|
||||
.mockReturnValueOnce('test-api-key') // for availability check
|
||||
.mockReturnValueOnce('') // for anthropic
|
||||
.mockReturnValueOnce('') // for ollama
|
||||
.mockReturnValueOnce('test-api-key'); // for service creation
|
||||
|
||||
const mockResponse = { content: 'Hello response' };
|
||||
const mockGenerate = vi.fn().mockResolvedValueOnce(mockResponse);
|
||||
(OpenAIService as any).mockImplementationOnce(function(this: any) {
|
||||
this.isAvailable = vi.fn().mockReturnValue(true);
|
||||
this.generateChatCompletion = mockGenerate;
|
||||
});
|
||||
|
||||
const result = await manager.generateChatCompletion(messages, {
|
||||
model: 'openai:gpt-4'
|
||||
});
|
||||
|
||||
expect(result).toBe(mockResponse);
|
||||
expect(mockGenerate).toHaveBeenCalledWith(
|
||||
messages,
|
||||
{ model: 'gpt-4' }
|
||||
);
|
||||
});
|
||||
|
||||
it('should throw error if no messages provided', async () => {
|
||||
await expect(manager.generateChatCompletion([])).rejects.toThrow(
|
||||
'No messages provided'
|
||||
);
|
||||
});
|
||||
|
||||
it('should throw error if no provider selected', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce(null);
|
||||
|
||||
await expect(manager.generateChatCompletion(messages)).rejects.toThrow(
|
||||
'No AI provider is selected'
|
||||
);
|
||||
});
|
||||
|
||||
it('should throw error if model specifies different provider', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce('openai');
|
||||
vi.mocked(configHelpers.parseModelIdentifier).mockReturnValueOnce({
|
||||
provider: 'anthropic',
|
||||
modelId: 'claude-3',
|
||||
fullIdentifier: 'anthropic:claude-3'
|
||||
});
|
||||
|
||||
// Mock that openai is available
|
||||
vi.mocked(options.getOption)
|
||||
.mockReturnValueOnce('test-api-key') // for availability check
|
||||
.mockReturnValueOnce('') // for anthropic
|
||||
.mockReturnValueOnce(''); // for ollama
|
||||
|
||||
await expect(
|
||||
manager.generateChatCompletion(messages, { model: 'anthropic:claude-3' })
|
||||
).rejects.toThrow(
|
||||
"Model specifies provider 'anthropic' but selected provider is 'openai'"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getAIEnabledAsync', () => {
|
||||
it('should return AI enabled status', async () => {
|
||||
vi.mocked(configHelpers.isAIEnabled).mockResolvedValueOnce(true);
|
||||
|
||||
const result = await manager.getAIEnabledAsync();
|
||||
|
||||
expect(result).toBe(true);
|
||||
expect(configHelpers.isAIEnabled).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('getAIEnabled', () => {
|
||||
it('should return AI enabled status synchronously', () => {
|
||||
vi.mocked(options.getOptionBool).mockReturnValueOnce(true);
|
||||
|
||||
const result = manager.getAIEnabled();
|
||||
|
||||
expect(result).toBe(true);
|
||||
expect(options.getOptionBool).toHaveBeenCalledWith('aiEnabled');
|
||||
});
|
||||
});
|
||||
|
||||
describe('initialize', () => {
|
||||
it('should initialize if AI is enabled', async () => {
|
||||
vi.mocked(configHelpers.isAIEnabled).mockResolvedValueOnce(true);
|
||||
|
||||
await manager.initialize();
|
||||
|
||||
expect(configHelpers.isAIEnabled).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not initialize if AI is disabled', async () => {
|
||||
vi.mocked(configHelpers.isAIEnabled).mockResolvedValueOnce(false);
|
||||
|
||||
await manager.initialize();
|
||||
|
||||
expect(configHelpers.isAIEnabled).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('getService', () => {
|
||||
it('should return service for specified provider', async () => {
|
||||
vi.mocked(options.getOption).mockReturnValueOnce('test-api-key');
|
||||
|
||||
(OpenAIService as any).mockImplementationOnce(function(this: any) {
|
||||
this.isAvailable = vi.fn().mockReturnValue(true);
|
||||
this.generateChatCompletion = vi.fn();
|
||||
});
|
||||
|
||||
const result = await manager.getService('openai');
|
||||
|
||||
expect(result).toBeDefined();
|
||||
expect(result.isAvailable()).toBe(true);
|
||||
});
|
||||
|
||||
it('should return selected provider service if no provider specified', async () => {
|
||||
vi.mocked(configHelpers.getSelectedProvider).mockResolvedValueOnce('anthropic');
|
||||
vi.mocked(options.getOption).mockReturnValueOnce('test-api-key');
|
||||
|
||||
(AnthropicService as any).mockImplementationOnce(function(this: any) {
|
||||
this.isAvailable = vi.fn().mockReturnValue(true);
|
||||
this.generateChatCompletion = vi.fn();
|
||||
});
|
||||
|
||||
const result = await manager.getService();
|
||||
|
||||
expect(result).toBeDefined();
|
||||
expect(result.isAvailable()).toBe(true);
|
||||
});
|
||||
|
||||
it('should throw error if specified provider not available', async () => {
|
||||
vi.mocked(options.getOption).mockReturnValueOnce(''); // No API key
|
||||
|
||||
await expect(manager.getService('openai')).rejects.toThrow(
|
||||
'Specified provider openai is not available'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getSelectedProvider', () => {
|
||||
it('should return selected provider synchronously', () => {
|
||||
vi.mocked(options.getOption).mockReturnValueOnce('anthropic');
|
||||
|
||||
const result = manager.getSelectedProvider();
|
||||
|
||||
expect(result).toBe('anthropic');
|
||||
});
|
||||
|
||||
it('should return default provider if none selected', () => {
|
||||
vi.mocked(options.getOption).mockReturnValueOnce('');
|
||||
|
||||
const result = manager.getSelectedProvider();
|
||||
|
||||
expect(result).toBe('openai');
|
||||
});
|
||||
});
|
||||
|
||||
describe('isProviderAvailable', () => {
|
||||
it('should return true if provider service is available', () => {
|
||||
// Mock that OpenAI has API key configured
|
||||
vi.mocked(options.getOption).mockReturnValueOnce('test-api-key');
|
||||
|
||||
const result = manager.isProviderAvailable('openai');
|
||||
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false if provider service not created', () => {
|
||||
// Mock that OpenAI has no API key configured
|
||||
vi.mocked(options.getOption).mockReturnValueOnce('');
|
||||
|
||||
const result = manager.isProviderAvailable('openai');
|
||||
|
||||
expect(result).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getProviderMetadata', () => {
|
||||
it('should return metadata for existing provider', () => {
|
||||
// Since getProviderMetadata only returns metadata for the current active provider,
|
||||
// and we don't have a current provider set, it should return null
|
||||
const result = manager.getProviderMetadata('openai');
|
||||
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
|
||||
it('should return null for non-existing provider', () => {
|
||||
const result = manager.getProviderMetadata('openai');
|
||||
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('simplified architecture', () => {
|
||||
it('should have a simplified event handling approach', () => {
|
||||
// The AIServiceManager now uses a simplified approach without complex event handling
|
||||
// Services are created fresh when needed by reading current options
|
||||
expect(manager).toBeDefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,793 +0,0 @@
|
||||
import options from '../options.js';
|
||||
import eventService from '../events.js';
|
||||
import type { AIService, ChatCompletionOptions, ChatResponse, Message } from './ai_interface.js';
|
||||
import { AnthropicService } from './providers/anthropic_service.js';
|
||||
import { ContextExtractor } from './context/index.js';
|
||||
import agentTools from './context_extractors/index.js';
|
||||
import contextService from './context/services/context_service.js';
|
||||
import log from '../log.js';
|
||||
import { OllamaService } from './providers/ollama_service.js';
|
||||
import { OpenAIService } from './providers/openai_service.js';
|
||||
|
||||
// Import interfaces
|
||||
import type {
|
||||
ServiceProviders,
|
||||
IAIServiceManager,
|
||||
ProviderMetadata
|
||||
} from './interfaces/ai_service_interfaces.js';
|
||||
import type { NoteSearchResult } from './interfaces/context_interfaces.js';
|
||||
|
||||
// Import new configuration system
|
||||
import {
|
||||
getSelectedProvider,
|
||||
parseModelIdentifier,
|
||||
isAIEnabled,
|
||||
getDefaultModelForProvider,
|
||||
clearConfigurationCache,
|
||||
validateConfiguration
|
||||
} from './config/configuration_helpers.js';
|
||||
import type { ProviderType } from './interfaces/configuration_interfaces.js';
|
||||
|
||||
/**
|
||||
* Interface representing relevant note context
|
||||
*/
|
||||
interface NoteContext {
|
||||
title: string;
|
||||
content?: string;
|
||||
noteId?: string;
|
||||
summary?: string;
|
||||
score?: number;
|
||||
}
|
||||
|
||||
export class AIServiceManager implements IAIServiceManager {
|
||||
private currentService: AIService | null = null;
|
||||
private currentProvider: ServiceProviders | null = null;
|
||||
private initialized = false;
|
||||
|
||||
constructor() {
|
||||
// Initialize tools immediately
|
||||
this.initializeTools().catch(error => {
|
||||
log.error(`Error initializing LLM tools during AIServiceManager construction: ${error.message || String(error)}`);
|
||||
});
|
||||
|
||||
// Removed complex provider change listener - we'll read options fresh each time
|
||||
|
||||
this.initialized = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize all LLM tools in one place
|
||||
*/
|
||||
private async initializeTools(): Promise<void> {
|
||||
try {
|
||||
log.info('Initializing LLM tools during AIServiceManager construction...');
|
||||
|
||||
// Initialize agent tools
|
||||
await this.initializeAgentTools();
|
||||
log.info("Agent tools initialized successfully");
|
||||
|
||||
// Initialize LLM tools
|
||||
const toolInitializer = await import('./tools/tool_initializer.js');
|
||||
await toolInitializer.default.initializeTools();
|
||||
log.info("LLM tools initialized successfully");
|
||||
} catch (error: unknown) {
|
||||
log.error(`Error initializing tools: ${this.handleError(error)}`);
|
||||
// Don't throw, just log the error to prevent breaking construction
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the currently selected provider using the new configuration system
|
||||
*/
|
||||
async getSelectedProviderAsync(): Promise<ServiceProviders | null> {
|
||||
try {
|
||||
const selectedProvider = await getSelectedProvider();
|
||||
return selectedProvider as ServiceProviders || null;
|
||||
} catch (error) {
|
||||
log.error(`Failed to get selected provider: ${error}`);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate AI configuration using the new configuration system
|
||||
*/
|
||||
async validateConfiguration(): Promise<string | null> {
|
||||
try {
|
||||
const result = await validateConfiguration();
|
||||
|
||||
if (!result.isValid) {
|
||||
let message = 'There are issues with your AI configuration:';
|
||||
for (const error of result.errors) {
|
||||
message += `\n• ${error}`;
|
||||
}
|
||||
if (result.warnings.length > 0) {
|
||||
message += '\n\nWarnings:';
|
||||
for (const warning of result.warnings) {
|
||||
message += `\n• ${warning}`;
|
||||
}
|
||||
}
|
||||
message += '\n\nPlease check your AI settings.';
|
||||
return message;
|
||||
}
|
||||
|
||||
if (result.warnings.length > 0) {
|
||||
let message = 'AI configuration warnings:';
|
||||
for (const warning of result.warnings) {
|
||||
message += `\n• ${warning}`;
|
||||
}
|
||||
log.info(message);
|
||||
}
|
||||
|
||||
return null;
|
||||
} catch (error) {
|
||||
log.error(`Error validating AI configuration: ${error}`);
|
||||
return `Configuration validation failed: ${error}`;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure manager is initialized before using
|
||||
*/
|
||||
private ensureInitialized() {
|
||||
// No longer needed with simplified approach
|
||||
}
|
||||
|
||||
/**
|
||||
* Get or create any available AI service following the simplified pattern
|
||||
* Returns a service or throws a meaningful error
|
||||
*/
|
||||
async getOrCreateAnyService(): Promise<AIService> {
|
||||
this.ensureInitialized();
|
||||
|
||||
// Get the selected provider using the new configuration system
|
||||
const selectedProvider = await this.getSelectedProviderAsync();
|
||||
|
||||
|
||||
if (!selectedProvider) {
|
||||
throw new Error('No AI provider is selected. Please select a provider (OpenAI, Anthropic, or Ollama) in your AI settings.');
|
||||
}
|
||||
|
||||
try {
|
||||
const service = await this.getOrCreateChatProvider(selectedProvider);
|
||||
if (service) {
|
||||
return service;
|
||||
}
|
||||
throw new Error(`Failed to create ${selectedProvider} service`);
|
||||
} catch (error) {
|
||||
log.error(`Provider ${selectedProvider} not available: ${error}`);
|
||||
throw new Error(`Selected AI provider (${selectedProvider}) is not available. Please check your configuration: ${error}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if any AI service is available (legacy method for backward compatibility)
|
||||
*/
|
||||
isAnyServiceAvailable(): boolean {
|
||||
this.ensureInitialized();
|
||||
|
||||
// Check if we have the selected provider available
|
||||
return this.getAvailableProviders().length > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get list of available providers
|
||||
*/
|
||||
getAvailableProviders(): ServiceProviders[] {
|
||||
this.ensureInitialized();
|
||||
|
||||
const allProviders: ServiceProviders[] = ['openai', 'anthropic', 'ollama'];
|
||||
const availableProviders: ServiceProviders[] = [];
|
||||
|
||||
for (const providerName of allProviders) {
|
||||
// Check configuration to see if provider would be available
|
||||
try {
|
||||
switch (providerName) {
|
||||
case 'openai':
|
||||
if (options.getOption('openaiApiKey') || options.getOption('openaiBaseUrl')) {
|
||||
availableProviders.push(providerName);
|
||||
}
|
||||
break;
|
||||
case 'anthropic':
|
||||
if (options.getOption('anthropicApiKey')) {
|
||||
availableProviders.push(providerName);
|
||||
}
|
||||
break;
|
||||
case 'ollama':
|
||||
if (options.getOption('ollamaBaseUrl')) {
|
||||
availableProviders.push(providerName);
|
||||
}
|
||||
break;
|
||||
}
|
||||
} catch (error) {
|
||||
// Ignore configuration errors, provider just won't be available
|
||||
}
|
||||
}
|
||||
|
||||
return availableProviders;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a chat completion response using the first available AI service
|
||||
* based on the configured precedence order
|
||||
*/
|
||||
async generateChatCompletion(messages: Message[], options: ChatCompletionOptions = {}): Promise<ChatResponse> {
|
||||
this.ensureInitialized();
|
||||
|
||||
log.info(`[AIServiceManager] generateChatCompletion called with options: ${JSON.stringify({
|
||||
model: options.model,
|
||||
stream: options.stream,
|
||||
enableTools: options.enableTools
|
||||
})}`);
|
||||
log.info(`[AIServiceManager] Stream option type: ${typeof options.stream}`);
|
||||
|
||||
if (!messages || messages.length === 0) {
|
||||
throw new Error('No messages provided for chat completion');
|
||||
}
|
||||
|
||||
// Get the selected provider
|
||||
const selectedProvider = await this.getSelectedProviderAsync();
|
||||
|
||||
if (!selectedProvider) {
|
||||
throw new Error('No AI provider is selected. Please select a provider in your AI settings.');
|
||||
}
|
||||
|
||||
// Check if the selected provider is available
|
||||
const availableProviders = this.getAvailableProviders();
|
||||
if (!availableProviders.includes(selectedProvider)) {
|
||||
throw new Error(`Selected AI provider (${selectedProvider}) is not available. Please check your configuration.`);
|
||||
}
|
||||
|
||||
// If a specific provider is requested and available, use it
|
||||
if (options.model && options.model.includes(':')) {
|
||||
// Use the new configuration system to parse model identifier
|
||||
const modelIdentifier = parseModelIdentifier(options.model);
|
||||
|
||||
if (modelIdentifier.provider && modelIdentifier.provider === selectedProvider) {
|
||||
try {
|
||||
const service = await this.getOrCreateChatProvider(modelIdentifier.provider as ServiceProviders);
|
||||
if (service) {
|
||||
const modifiedOptions = { ...options, model: modelIdentifier.modelId };
|
||||
log.info(`[AIServiceManager] Using provider ${modelIdentifier.provider} from model prefix with modifiedOptions.stream: ${modifiedOptions.stream}`);
|
||||
return await service.generateChatCompletion(messages, modifiedOptions);
|
||||
}
|
||||
} catch (error) {
|
||||
log.error(`Error with specified provider ${modelIdentifier.provider}: ${error}`);
|
||||
throw new Error(`Failed to use specified provider ${modelIdentifier.provider}: ${error}`);
|
||||
}
|
||||
} else if (modelIdentifier.provider && modelIdentifier.provider !== selectedProvider) {
|
||||
throw new Error(`Model specifies provider '${modelIdentifier.provider}' but selected provider is '${selectedProvider}'. Please select the correct provider or use a model without provider prefix.`);
|
||||
}
|
||||
// If not a provider prefix, treat the entire string as a model name and continue with normal provider selection
|
||||
}
|
||||
|
||||
// Use the selected provider
|
||||
try {
|
||||
const service = await this.getOrCreateChatProvider(selectedProvider);
|
||||
if (!service) {
|
||||
throw new Error(`Failed to create selected chat provider: ${selectedProvider}. Please check your configuration.`);
|
||||
}
|
||||
log.info(`[AIServiceManager] Using selected provider ${selectedProvider} with options.stream: ${options.stream}`);
|
||||
return await service.generateChatCompletion(messages, options);
|
||||
} catch (error) {
|
||||
log.error(`Error with selected provider ${selectedProvider}: ${error}`);
|
||||
throw new Error(`Selected AI provider (${selectedProvider}) failed: ${error}`);
|
||||
}
|
||||
}
|
||||
|
||||
setupEventListeners() {
|
||||
// Setup event listeners for AI services
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the context extractor service
|
||||
* @returns The context extractor instance
|
||||
*/
|
||||
getContextExtractor() {
|
||||
return contextExtractor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the context service for advanced context management
|
||||
* @returns The context service instance
|
||||
*/
|
||||
getContextService() {
|
||||
return contextService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the index service for managing knowledge base indexing
|
||||
* @returns null since index service has been removed
|
||||
*/
|
||||
getIndexService() {
|
||||
log.info('Index service has been removed - returning null');
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure agent tools are initialized (no-op as they're initialized in constructor)
|
||||
* Kept for backward compatibility with existing API
|
||||
*/
|
||||
async initializeAgentTools(): Promise<void> {
|
||||
// Agent tools are already initialized in the constructor
|
||||
// This method is kept for backward compatibility
|
||||
log.info("initializeAgentTools called, but tools are already initialized in constructor");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the agent tools manager
|
||||
* This provides access to all agent tools
|
||||
*/
|
||||
getAgentTools() {
|
||||
return agentTools;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the vector search tool for semantic similarity search
|
||||
* Returns null since vector search has been removed
|
||||
*/
|
||||
getVectorSearchTool() {
|
||||
log.info('Vector search has been removed - getVectorSearchTool returning null');
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the note navigator tool for hierarchical exploration
|
||||
*/
|
||||
getNoteNavigatorTool() {
|
||||
const tools = agentTools.getTools();
|
||||
return tools.noteNavigator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the query decomposition tool for complex queries
|
||||
*/
|
||||
getQueryDecompositionTool() {
|
||||
const tools = agentTools.getTools();
|
||||
return tools.queryDecomposition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the contextual thinking tool for transparent reasoning
|
||||
*/
|
||||
getContextualThinkingTool() {
|
||||
const tools = agentTools.getTools();
|
||||
return tools.contextualThinking;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether AI features are enabled using the new configuration system
|
||||
*/
|
||||
async getAIEnabledAsync(): Promise<boolean> {
|
||||
return isAIEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether AI features are enabled (sync version for compatibility)
|
||||
*/
|
||||
getAIEnabled(): boolean {
|
||||
// For synchronous compatibility, use the old method
|
||||
// In a full refactor, this should be async
|
||||
return options.getOptionBool('aiEnabled');
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear the current provider (forces recreation on next access)
|
||||
*/
|
||||
public clearCurrentProvider(): void {
|
||||
this.currentService = null;
|
||||
this.currentProvider = null;
|
||||
log.info('Cleared current provider - will be recreated on next access');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get or create the current provider instance - only one instance total
|
||||
*/
|
||||
private async getOrCreateChatProvider(providerName: ServiceProviders): Promise<AIService | null> {
|
||||
// If provider type changed, clear the old one
|
||||
if (this.currentProvider && this.currentProvider !== providerName) {
|
||||
log.info(`Provider changed from ${this.currentProvider} to ${providerName}, clearing old service`);
|
||||
this.currentService = null;
|
||||
this.currentProvider = null;
|
||||
}
|
||||
|
||||
// Return existing service if it matches and is available
|
||||
if (this.currentService && this.currentProvider === providerName && this.currentService.isAvailable()) {
|
||||
return this.currentService;
|
||||
}
|
||||
|
||||
// Clear invalid service
|
||||
if (this.currentService) {
|
||||
this.currentService = null;
|
||||
this.currentProvider = null;
|
||||
}
|
||||
|
||||
// Create new service for the requested provider
|
||||
try {
|
||||
let service: AIService | null = null;
|
||||
|
||||
switch (providerName) {
|
||||
case 'openai': {
|
||||
const apiKey = options.getOption('openaiApiKey');
|
||||
const baseUrl = options.getOption('openaiBaseUrl');
|
||||
if (!apiKey && !baseUrl) return null;
|
||||
|
||||
service = new OpenAIService();
|
||||
if (!service.isAvailable()) {
|
||||
throw new Error('OpenAI service not available');
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'anthropic': {
|
||||
const apiKey = options.getOption('anthropicApiKey');
|
||||
if (!apiKey) return null;
|
||||
|
||||
service = new AnthropicService();
|
||||
if (!service.isAvailable()) {
|
||||
throw new Error('Anthropic service not available');
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'ollama': {
|
||||
const baseUrl = options.getOption('ollamaBaseUrl');
|
||||
if (!baseUrl) return null;
|
||||
|
||||
service = new OllamaService();
|
||||
if (!service.isAvailable()) {
|
||||
throw new Error('Ollama service not available');
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (service) {
|
||||
// Cache the new service
|
||||
this.currentService = service;
|
||||
this.currentProvider = providerName;
|
||||
log.info(`Created and cached new ${providerName} service`);
|
||||
return service;
|
||||
}
|
||||
} catch (error: any) {
|
||||
log.error(`Failed to create ${providerName} chat provider: ${error.message || 'Unknown error'}`);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the AI Service using the new configuration system
|
||||
*/
|
||||
async initialize(): Promise<void> {
|
||||
try {
|
||||
log.info("Initializing AI service...");
|
||||
|
||||
// Check if AI is enabled using the new helper
|
||||
const aiEnabled = await isAIEnabled();
|
||||
|
||||
if (!aiEnabled) {
|
||||
log.info("AI features are disabled in options");
|
||||
return;
|
||||
}
|
||||
|
||||
// Index service has been removed - no initialization needed
|
||||
|
||||
// Tools are already initialized in the constructor
|
||||
// No need to initialize them again
|
||||
|
||||
this.initialized = true;
|
||||
log.info("AI service initialized successfully");
|
||||
} catch (error: any) {
|
||||
log.error(`Error initializing AI service: ${error.message}`);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get description of available agent tools
|
||||
*/
|
||||
async getAgentToolsDescription(): Promise<string> {
|
||||
try {
|
||||
// Get all available tools
|
||||
const tools = agentTools.getAllTools();
|
||||
|
||||
if (!tools || tools.length === 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// Format tool descriptions
|
||||
const toolDescriptions = tools.map(tool =>
|
||||
`- ${tool.name}: ${tool.description}`
|
||||
).join('\n');
|
||||
|
||||
return `Available tools:\n${toolDescriptions}`;
|
||||
} catch (error) {
|
||||
log.error(`Error getting agent tools description: ${error}`);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get enhanced context with available agent tools
|
||||
* @param noteId - The ID of the note
|
||||
* @param query - The user's query
|
||||
* @param showThinking - Whether to show LLM's thinking process
|
||||
* @param relevantNotes - Optional notes already found to be relevant
|
||||
* @returns Enhanced context with agent tools information
|
||||
*/
|
||||
async getAgentToolsContext(
|
||||
noteId: string,
|
||||
query: string,
|
||||
showThinking: boolean = false,
|
||||
relevantNotes: NoteSearchResult[] = []
|
||||
): Promise<string> {
|
||||
try {
|
||||
// Create agent tools message
|
||||
const toolsMessage = await this.getAgentToolsDescription();
|
||||
|
||||
// Agent tools are already initialized in the constructor
|
||||
// No need to initialize them again
|
||||
|
||||
// If we have notes that were already found to be relevant, use them directly
|
||||
let contextNotes = relevantNotes;
|
||||
|
||||
// If no notes provided, find relevant ones
|
||||
if (!contextNotes || contextNotes.length === 0) {
|
||||
try {
|
||||
// Get the default LLM service for context enhancement
|
||||
const provider = this.getSelectedProvider();
|
||||
const llmService = await this.getService(provider);
|
||||
|
||||
// Find relevant notes
|
||||
contextNotes = await contextService.findRelevantNotes(
|
||||
query,
|
||||
noteId,
|
||||
{
|
||||
maxResults: 5,
|
||||
summarize: true,
|
||||
llmService
|
||||
}
|
||||
);
|
||||
|
||||
log.info(`Found ${contextNotes.length} relevant notes for context`);
|
||||
} catch (error) {
|
||||
log.error(`Failed to find relevant notes: ${this.handleError(error)}`);
|
||||
// Continue without context notes
|
||||
contextNotes = [];
|
||||
}
|
||||
}
|
||||
|
||||
// Format notes into context string if we have any
|
||||
let contextStr = "";
|
||||
if (contextNotes && contextNotes.length > 0) {
|
||||
contextStr = "\n\nRelevant context:\n";
|
||||
contextNotes.forEach((note, index) => {
|
||||
contextStr += `[${index + 1}] "${note.title}"\n${note.content || 'No content available'}\n\n`;
|
||||
});
|
||||
}
|
||||
|
||||
// Combine tool message with context
|
||||
return toolsMessage + contextStr;
|
||||
} catch (error) {
|
||||
log.error(`Error getting agent tools context: ${this.handleError(error)}`);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get AI service for the given provider
|
||||
*/
|
||||
async getService(provider?: string): Promise<AIService> {
|
||||
this.ensureInitialized();
|
||||
|
||||
// If provider is specified, try to get or create it
|
||||
if (provider) {
|
||||
const service = await this.getOrCreateChatProvider(provider as ServiceProviders);
|
||||
if (service && service.isAvailable()) {
|
||||
return service;
|
||||
}
|
||||
throw new Error(`Specified provider ${provider} is not available`);
|
||||
}
|
||||
|
||||
// Otherwise, use the selected provider
|
||||
const selectedProvider = await this.getSelectedProviderAsync();
|
||||
if (!selectedProvider) {
|
||||
throw new Error('No AI provider is selected. Please select a provider in your AI settings.');
|
||||
}
|
||||
|
||||
const service = await this.getOrCreateChatProvider(selectedProvider);
|
||||
if (service && service.isAvailable()) {
|
||||
return service;
|
||||
}
|
||||
|
||||
// If no provider is available, throw a clear error
|
||||
throw new Error(`Selected AI provider (${selectedProvider}) is not available. Please check your AI settings.`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the preferred provider based on configuration using the new system
|
||||
*/
|
||||
async getPreferredProviderAsync(): Promise<string> {
|
||||
try {
|
||||
const selectedProvider = await getSelectedProvider();
|
||||
if (selectedProvider === null) {
|
||||
// No provider selected, fallback to default
|
||||
log.info('No provider selected, using default provider');
|
||||
return 'openai';
|
||||
}
|
||||
return selectedProvider;
|
||||
} catch (error) {
|
||||
log.error(`Error getting preferred provider: ${error}`);
|
||||
return 'openai';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the selected provider based on configuration (sync version for compatibility)
|
||||
*/
|
||||
getSelectedProvider(): string {
|
||||
this.ensureInitialized();
|
||||
|
||||
// Try to get the selected provider synchronously
|
||||
try {
|
||||
const selectedProvider = options.getOption('aiSelectedProvider');
|
||||
if (selectedProvider) {
|
||||
return selectedProvider;
|
||||
}
|
||||
} catch (error) {
|
||||
log.error(`Error getting selected provider: ${error}`);
|
||||
}
|
||||
|
||||
// Return a default if nothing is selected (for backward compatibility)
|
||||
return 'openai';
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a specific provider is available
|
||||
*/
|
||||
isProviderAvailable(provider: string): boolean {
|
||||
// Check if this is the current provider and if it's available
|
||||
if (this.currentProvider === provider && this.currentService) {
|
||||
return this.currentService.isAvailable();
|
||||
}
|
||||
|
||||
// For other providers, check configuration
|
||||
try {
|
||||
switch (provider) {
|
||||
case 'openai':
|
||||
return !!(options.getOption('openaiApiKey') || options.getOption('openaiBaseUrl'));
|
||||
case 'anthropic':
|
||||
return !!options.getOption('anthropicApiKey');
|
||||
case 'ollama':
|
||||
return !!options.getOption('ollamaBaseUrl');
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get metadata about a provider
|
||||
*/
|
||||
getProviderMetadata(provider: string): ProviderMetadata | null {
|
||||
// Only return metadata if this is the current active provider
|
||||
if (this.currentProvider === provider && this.currentService) {
|
||||
return {
|
||||
name: provider,
|
||||
capabilities: {
|
||||
chat: true,
|
||||
streaming: true,
|
||||
functionCalling: provider === 'openai' // Only OpenAI has function calling
|
||||
},
|
||||
models: ['default'], // Placeholder, could be populated from the service
|
||||
defaultModel: 'default'
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Error handler that properly types the error object
|
||||
*/
|
||||
private handleError(error: unknown): string {
|
||||
if (error instanceof Error) {
|
||||
return error.message || String(error);
|
||||
}
|
||||
return String(error);
|
||||
}
|
||||
|
||||
// Removed complex event listener and cache invalidation logic
|
||||
// Services will be created fresh when needed by reading current options
|
||||
|
||||
}
|
||||
|
||||
// Don't create singleton immediately, use a lazy-loading pattern
|
||||
let instance: AIServiceManager | null = null;
|
||||
|
||||
/**
|
||||
* Get the AIServiceManager instance (creates it if not already created)
|
||||
*/
|
||||
function getInstance(): AIServiceManager {
|
||||
if (!instance) {
|
||||
instance = new AIServiceManager();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
export default {
|
||||
getInstance,
|
||||
// Also export methods directly for convenience
|
||||
isAnyServiceAvailable(): boolean {
|
||||
return getInstance().isAnyServiceAvailable();
|
||||
},
|
||||
async getOrCreateAnyService(): Promise<AIService> {
|
||||
return getInstance().getOrCreateAnyService();
|
||||
},
|
||||
getAvailableProviders() {
|
||||
return getInstance().getAvailableProviders();
|
||||
},
|
||||
async generateChatCompletion(messages: Message[], options: ChatCompletionOptions = {}): Promise<ChatResponse> {
|
||||
return getInstance().generateChatCompletion(messages, options);
|
||||
},
|
||||
// Context and index related methods
|
||||
getContextExtractor() {
|
||||
return getInstance().getContextExtractor();
|
||||
},
|
||||
getContextService() {
|
||||
return getInstance().getContextService();
|
||||
},
|
||||
getIndexService() {
|
||||
return getInstance().getIndexService();
|
||||
},
|
||||
// Agent tools related methods
|
||||
// Tools are now initialized in the constructor
|
||||
getAgentTools() {
|
||||
return getInstance().getAgentTools();
|
||||
},
|
||||
getVectorSearchTool() {
|
||||
return getInstance().getVectorSearchTool();
|
||||
},
|
||||
getNoteNavigatorTool() {
|
||||
return getInstance().getNoteNavigatorTool();
|
||||
},
|
||||
getQueryDecompositionTool() {
|
||||
return getInstance().getQueryDecompositionTool();
|
||||
},
|
||||
getContextualThinkingTool() {
|
||||
return getInstance().getContextualThinkingTool();
|
||||
},
|
||||
async getAgentToolsContext(
|
||||
noteId: string,
|
||||
query: string,
|
||||
showThinking: boolean = false,
|
||||
relevantNotes: NoteSearchResult[] = []
|
||||
): Promise<string> {
|
||||
return getInstance().getAgentToolsContext(
|
||||
noteId,
|
||||
query,
|
||||
showThinking,
|
||||
relevantNotes
|
||||
);
|
||||
},
|
||||
// New methods
|
||||
async getService(provider?: string): Promise<AIService> {
|
||||
return getInstance().getService(provider);
|
||||
},
|
||||
getSelectedProvider(): string {
|
||||
return getInstance().getSelectedProvider();
|
||||
},
|
||||
isProviderAvailable(provider: string): boolean {
|
||||
return getInstance().isProviderAvailable(provider);
|
||||
},
|
||||
getProviderMetadata(provider: string): ProviderMetadata | null {
|
||||
return getInstance().getProviderMetadata(provider);
|
||||
}
|
||||
};
|
||||
|
||||
// Create an instance of ContextExtractor for backward compatibility
|
||||
const contextExtractor = new ContextExtractor();
|
||||
@@ -1,26 +0,0 @@
|
||||
import options from '../options.js';
|
||||
import type { AIService, ChatCompletionOptions, ChatResponse, Message } from './ai_interface.js';
|
||||
import { DEFAULT_SYSTEM_PROMPT } from './constants/llm_prompt_constants.js';
|
||||
|
||||
export abstract class BaseAIService implements AIService {
|
||||
protected name: string;
|
||||
|
||||
constructor(name: string) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
abstract generateChatCompletion(messages: Message[], options?: ChatCompletionOptions): Promise<ChatResponse>;
|
||||
|
||||
isAvailable(): boolean {
|
||||
return options.getOptionBool('aiEnabled'); // Base check if AI is enabled globally
|
||||
}
|
||||
|
||||
getName(): string {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
protected getSystemPrompt(customPrompt?: string): string {
|
||||
// Use prompt from constants file if no custom prompt is provided
|
||||
return customPrompt || DEFAULT_SYSTEM_PROMPT;
|
||||
}
|
||||
}
|
||||
@@ -1,243 +0,0 @@
|
||||
/**
|
||||
* Handler for LLM context management
|
||||
* Uses TriliumNext's native search service for powerful note discovery
|
||||
*/
|
||||
import log from "../../../log.js";
|
||||
import becca from "../../../../becca/becca.js";
|
||||
import contextService from "../../context/services/context_service.js";
|
||||
import searchService from "../../../search/services/search.js";
|
||||
import type { NoteSource } from "../../interfaces/chat_session.js";
|
||||
|
||||
/**
|
||||
* Handles context management for LLM chat
|
||||
*/
|
||||
export class ContextHandler {
|
||||
/**
|
||||
* Find relevant notes based on search query using TriliumNext's search service
|
||||
* @param content The search content
|
||||
* @param contextNoteId Optional note ID for context
|
||||
* @param limit Maximum number of results to return
|
||||
* @returns Array of relevant note sources
|
||||
*/
|
||||
static async findRelevantNotes(content: string, contextNoteId: string | null = null, limit = 5): Promise<NoteSource[]> {
|
||||
try {
|
||||
// If content is too short, don't bother
|
||||
if (content.length < 3) {
|
||||
return [];
|
||||
}
|
||||
|
||||
log.info(`Finding relevant notes for query: "${content.substring(0, 50)}..." using TriliumNext search`);
|
||||
|
||||
const sources: NoteSource[] = [];
|
||||
|
||||
if (contextNoteId) {
|
||||
// For branch context, get notes specifically from that branch and related notes
|
||||
const contextNote = becca.notes[contextNoteId];
|
||||
if (!contextNote) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const relevantNotes = this.findNotesInContext(contextNote, content, limit);
|
||||
sources.push(...relevantNotes);
|
||||
} else {
|
||||
// General search across all notes using TriliumNext's search service
|
||||
const relevantNotes = this.findNotesBySearch(content, limit);
|
||||
sources.push(...relevantNotes);
|
||||
}
|
||||
|
||||
log.info(`Found ${sources.length} relevant notes using TriliumNext search`);
|
||||
return sources.slice(0, limit);
|
||||
} catch (error: any) {
|
||||
log.error(`Error finding relevant notes: ${error.message}`);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find notes in the context of a specific note (children, siblings, linked notes)
|
||||
*/
|
||||
private static findNotesInContext(contextNote: any, searchQuery: string, limit: number): NoteSource[] {
|
||||
const sources: NoteSource[] = [];
|
||||
const processedNoteIds = new Set<string>();
|
||||
|
||||
// Add the context note itself (high priority)
|
||||
sources.push(this.createNoteSource(contextNote, 1.0));
|
||||
processedNoteIds.add(contextNote.noteId);
|
||||
|
||||
// Get child notes (search within children)
|
||||
try {
|
||||
const childQuery = `note.childOf.noteId = "${contextNote.noteId}" ${searchQuery}`;
|
||||
const childSearchResults = searchService.searchNotes(childQuery, { includeArchivedNotes: false });
|
||||
|
||||
for (const childNote of childSearchResults.slice(0, Math.floor(limit / 2))) {
|
||||
if (!processedNoteIds.has(childNote.noteId)) {
|
||||
sources.push(this.createNoteSource(childNote, 0.8));
|
||||
processedNoteIds.add(childNote.noteId);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
log.info(`Child search failed, falling back to direct children: ${error}`);
|
||||
// Fallback to direct child enumeration
|
||||
const childNotes = contextNote.getChildNotes();
|
||||
for (const child of childNotes.slice(0, Math.floor(limit / 2))) {
|
||||
if (!processedNoteIds.has(child.noteId) && !child.isDeleted) {
|
||||
sources.push(this.createNoteSource(child, 0.8));
|
||||
processedNoteIds.add(child.noteId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get related notes (through relations)
|
||||
const relatedNotes = this.getRelatedNotes(contextNote);
|
||||
for (const related of relatedNotes.slice(0, Math.floor(limit / 2))) {
|
||||
if (!processedNoteIds.has(related.noteId) && !related.isDeleted) {
|
||||
sources.push(this.createNoteSource(related, 0.6));
|
||||
processedNoteIds.add(related.noteId);
|
||||
}
|
||||
}
|
||||
|
||||
// Fill remaining slots with broader search if needed
|
||||
if (sources.length < limit) {
|
||||
try {
|
||||
const remainingSlots = limit - sources.length;
|
||||
const broadSearchResults = searchService.searchNotes(searchQuery, {
|
||||
includeArchivedNotes: false,
|
||||
limit: remainingSlots * 2 // Get more to filter out duplicates
|
||||
});
|
||||
|
||||
for (const note of broadSearchResults.slice(0, remainingSlots)) {
|
||||
if (!processedNoteIds.has(note.noteId)) {
|
||||
sources.push(this.createNoteSource(note, 0.5));
|
||||
processedNoteIds.add(note.noteId);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
log.error(`Broad search failed: ${error}`);
|
||||
}
|
||||
}
|
||||
|
||||
return sources.slice(0, limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find notes by search across all notes using TriliumNext's search service
|
||||
*/
|
||||
private static findNotesBySearch(searchQuery: string, limit: number): NoteSource[] {
|
||||
try {
|
||||
log.info(`Performing global search for: "${searchQuery}"`);
|
||||
|
||||
// Use TriliumNext's search service for powerful note discovery
|
||||
const searchResults = searchService.searchNotes(searchQuery, {
|
||||
includeArchivedNotes: false,
|
||||
fastSearch: false // Use full search for better results
|
||||
});
|
||||
|
||||
log.info(`Global search found ${searchResults.length} notes`);
|
||||
|
||||
// Convert search results to NoteSource format
|
||||
const sources: NoteSource[] = [];
|
||||
const limitedResults = searchResults.slice(0, limit);
|
||||
|
||||
for (let i = 0; i < limitedResults.length; i++) {
|
||||
const note = limitedResults[i];
|
||||
// Calculate similarity score based on position (first results are more relevant)
|
||||
const similarity = Math.max(0.1, 1.0 - (i / limitedResults.length) * 0.8);
|
||||
sources.push(this.createNoteSource(note, similarity));
|
||||
}
|
||||
|
||||
return sources;
|
||||
} catch (error) {
|
||||
log.error(`Error in global search: ${error}`);
|
||||
// Fallback to empty results rather than crashing
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get notes related through attributes/relations
|
||||
*/
|
||||
private static getRelatedNotes(note: any): any[] {
|
||||
const relatedNotes: any[] = [];
|
||||
|
||||
// Get notes this note points to via relations
|
||||
const outgoingRelations = note.getOwnedAttributes().filter((attr: any) => attr.type === 'relation');
|
||||
for (const relation of outgoingRelations) {
|
||||
const targetNote = becca.notes[relation.value];
|
||||
if (targetNote && !targetNote.isDeleted) {
|
||||
relatedNotes.push(targetNote);
|
||||
}
|
||||
}
|
||||
|
||||
// Get notes that point to this note via relations
|
||||
const incomingRelations = note.getTargetRelations();
|
||||
for (const relation of incomingRelations) {
|
||||
const sourceNote = relation.getNote();
|
||||
if (sourceNote && !sourceNote.isDeleted) {
|
||||
relatedNotes.push(sourceNote);
|
||||
}
|
||||
}
|
||||
|
||||
return relatedNotes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a NoteSource object from a note
|
||||
*/
|
||||
private static createNoteSource(note: any, similarity: number): NoteSource {
|
||||
let noteContent: string | undefined = undefined;
|
||||
if (note.type === 'text') {
|
||||
const content = note.getContent();
|
||||
// Handle both string and Buffer types
|
||||
noteContent = typeof content === 'string' ? content :
|
||||
content instanceof Buffer ? content.toString('utf8') : undefined;
|
||||
}
|
||||
|
||||
return {
|
||||
noteId: note.noteId,
|
||||
title: note.title,
|
||||
content: noteContent,
|
||||
similarity: similarity,
|
||||
branchId: note.getBranches()[0]?.branchId
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Process enhanced context using the context service
|
||||
* @param query Query to process
|
||||
* @param contextNoteId Optional note ID for context
|
||||
* @param showThinking Whether to show thinking process
|
||||
*/
|
||||
static async processEnhancedContext(query: string, llmService: any, options: {
|
||||
contextNoteId?: string,
|
||||
showThinking?: boolean
|
||||
}) {
|
||||
// Use the Trilium-specific approach
|
||||
const contextNoteId = options.contextNoteId || null;
|
||||
const showThinking = options.showThinking || false;
|
||||
|
||||
// Log that we're calling contextService with the parameters
|
||||
log.info(`Using enhanced context with: noteId=${contextNoteId}, showThinking=${showThinking}`);
|
||||
|
||||
// Call context service for processing
|
||||
const results = await contextService.processQuery(
|
||||
query,
|
||||
llmService,
|
||||
{
|
||||
contextNoteId,
|
||||
showThinking
|
||||
}
|
||||
);
|
||||
|
||||
// Return the generated context and sources
|
||||
return {
|
||||
context: results.context,
|
||||
sources: results.sources.map(source => ({
|
||||
noteId: source.noteId,
|
||||
title: source.title,
|
||||
content: source.content || undefined, // Convert null to undefined
|
||||
similarity: source.similarity
|
||||
}))
|
||||
};
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user