diff --git a/apps/client/src/translations/es/translation.json b/apps/client/src/translations/es/translation.json index 4cd042a42..560456c32 100644 --- a/apps/client/src/translations/es/translation.json +++ b/apps/client/src/translations/es/translation.json @@ -157,7 +157,8 @@ "showSQLConsole": "mostrar consola SQL", "other": "Otro", "quickSearch": "centrarse en la entrada de búsqueda rápida", - "inPageSearch": "búsqueda en la página" + "inPageSearch": "búsqueda en la página", + "title": "Hoja de ayuda" }, "import": { "importIntoNote": "Importar a nota", @@ -224,11 +225,14 @@ "search_placeholder": "ruta de búsqueda por nombre (por defecto si está vacío)", "modal_title": "Elija el tipo de nota", "modal_body": "Elija el tipo de nota/plantilla de la nueva nota:", - "templates": "Plantillas" + "templates": "Plantillas", + "builtin_templates": "Plantillas incluidas" }, "password_not_set": { "title": "La contraseña no está establecida", - "body1": "Las notas protegidas se cifran mediante una contraseña de usuario, pero la contraseña aún no se ha establecido." + "body1": "Las notas protegidas se cifran mediante una contraseña de usuario, pero la contraseña aún no se ha establecido.", + "go_to_password_options": "Ir a opciones de contraseña", + "body2": "Para poder proteger las notas, haz click en el botón inferior para abrir la pantalla de Opciones y establecer tu contraseña." }, "prompt": { "title": "Aviso", @@ -1104,7 +1108,10 @@ "layout-vertical-title": "Vertical", "layout-horizontal-title": "Horizontal", "layout-vertical-description": "la barra del lanzador está en la izquierda (por defecto)", - "layout-horizontal-description": "la barra de lanzamiento está debajo de la barra de pestañas, la barra de pestañas ahora tiene ancho completo." + "layout-horizontal-description": "la barra de lanzamiento está debajo de la barra de pestañas, la barra de pestañas ahora tiene ancho completo.", + "auto_theme": "Heredado (Sigue el esquema de colores del sistema)", + "light_theme": "Heredado (Claro)", + "dark_theme": "Heredado (Oscuro)" }, "ai_llm": { "not_started": "No iniciado", @@ -1151,7 +1158,7 @@ "ollama_model_description": "Modelo de Ollama a usar para el completado de chat", "anthropic_configuration": "Configuración de Anthropic", "voyage_configuration": "Configuración de Voyage AI", - "voyage_url_description": "Por defecto: https://api.voyageai.com/v1", + "voyage_url_description": "Por defecto: https://api.voyageai.com/v1", "ollama_configuration": "Configuración de Ollama", "enable_ollama": "Habilitar Ollama", "enable_ollama_description": "Habilitar Ollama para uso de modelo de IA local", @@ -1983,6 +1990,16 @@ "configure_launch_bar_description": "Abrir la configuración de la barra de inicio, para agregar o quitar elementos." }, "modal": { - "close": "Cerrar" + "close": "Cerrar", + "help_title": "Mostrar más información sobre esta pantalla" + }, + "call_to_action": { + "next_theme_title": "Prueba el nuevo tema de Trilium", + "next_theme_message": "Estas usando actualmente el tema heredado, ¿Te gustaría probar el nuevo tema?", + "next_theme_button": "Prueba el nuevo tema", + "background_effects_title": "Los efectos de fondo son ahora estables", + "background_effects_message": "En los dispositivos Windows, los efectos de fondo ya son totalmente estables. Los efectos de fondo añaden un toque de color a la interfaz de usuario difuminando el fondo que hay detrás. Esta técnica también se utiliza en otras aplicaciones como el Explorador de Windows.", + "background_effects_button": "Activar efectos de fondo", + "dismiss": "Desestimar" } } diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json index 9fceccf73..566631f4d 100644 --- a/apps/client/src/translations/ja/translation.json +++ b/apps/client/src/translations/ja/translation.json @@ -97,7 +97,9 @@ "cancel": "キャンセル", "ok": "OK", "close": "閉じる", - "delete_notes_preview": "ノートのプレビューを削除" + "delete_notes_preview": "ノートのプレビューを削除", + "broken_relations_to_be_deleted": "次のリレーション ({{relationCount}})は壊れているので消去されます", + "deleted_relation_text": "削除予定のノート{{- note}}は{{- source}}からリレーション{{- relation}}によって参照されています." }, "calendar": { "mon": "月", @@ -208,7 +210,9 @@ "confirmation": "確認", "cancel": "キャンセル", "ok": "OK", - "also_delete_note": "同時にノートを削除" + "also_delete_note": "同時にノートを削除", + "are_you_sure_remove_note": "本当に\"{{title}}\"をリレーションマップから除きたいですか? ", + "if_you_dont_check": "これをチェックしないと、このノートはリレーションマップからのみ除かれます。" }, "export": { "export_note_title": "ノートをエクスポート", @@ -278,7 +282,9 @@ "inPageSearch": "ページ内検索", "showJumpToNoteDialog": "「ジャンプ先」ダイアログを表示", "moveNoteUpDown": "ノートリストでノートを上/下に移動", - "notSet": "未設定" + "notSet": "未設定", + "goUpDown": "ノートのリストで上下する", + "editBranchPrefix": "アクティブノートのクローンの プレフィックス を編集する" }, "import": { "importIntoNote": "ノートにインポート", @@ -1007,7 +1013,8 @@ "labels": "ラベル", "relations": "関係", "notes": "ノート", - "other": "その他" + "other": "その他", + "none_yet": "アクションを上のリストからクリックして追加。" }, "note_title": { "placeholder": "ここにノートのタイトルを入力..." diff --git a/apps/client/src/translations/ru/translation.json b/apps/client/src/translations/ru/translation.json index dd817b0f2..ca6bfe880 100644 --- a/apps/client/src/translations/ru/translation.json +++ b/apps/client/src/translations/ru/translation.json @@ -327,7 +327,8 @@ "password_not_set": { "title": "Пароль не установлен", "body1": "Защищенные заметки шифруются с помощью пароля пользователя, но пароль еще не установлен.", - "body2": "Чтобы иметь возможность защищать заметки, нажмите здесь, чтобы установить пароль." + "body2": "Чтобы иметь возможность защищать заметки, нажмите здесь, чтобы установить пароль.", + "go_to_password_options": "Перейти к параметрам пароля" }, "protected_session_password": { "modal_title": "Защищенный сеанс", @@ -462,7 +463,8 @@ "workspace_calendar_root": "Определяет корень календаря для каждого рабочего пространства", "hide_highlight_widget": "Скрыть виджет «Список выделенного»", "is_owned_by_note": "принадлежит записке", - "and_more": "... и ещё {{count}}." + "and_more": "... и ещё {{count}}.", + "app_theme": "отмечает заметки CSS, которые являются полноценными темами Trilium и, таким образом, доступны в опциях Trilium." }, "command_palette": { "configure_launch_bar_description": "Откройте конфигурацию панели запуска, чтобы добавить или удалить элементы.", @@ -576,7 +578,7 @@ }, "electron_integration": { "zoom-factor": "Коэффициент масштабирования", - "restart-app-button": "Перезапустите приложение, чтобы увидеть изменения", + "restart-app-button": "Применить изменения и перезапустить приложение", "background-effects-description": "Эффект Mica добавляет размытый, стильный фон окнам приложений, создавая глубину и современный вид.", "background-effects": "Включить фоновые эффекты (только Windows 11)", "native-title-bar-description": "В Windows и macOS отключение нативной строки заголовка делает приложение более компактным. В Linux включение нативной строки заголовка улучшает интеграцию с остальной частью системы.", diff --git a/apps/client/src/translations/uk/translation.json b/apps/client/src/translations/uk/translation.json index d0976b08b..d0ad640df 100644 --- a/apps/client/src/translations/uk/translation.json +++ b/apps/client/src/translations/uk/translation.json @@ -3,9 +3,9 @@ "add_link": "Додати посилання", "help_on_links": "Довідка щодо посилань", "note": "Нотатка", - "search_note": "Знайти нотатку за ім'ям", - "link_title_mirrors": "заголовок посилання відображає назву нотатки", - "link_title_arbitrary": "свій заголовок посилання", + "search_note": "пошук нотатки за її назвою", + "link_title_mirrors": "заголовок посилання відображає поточний заголовок нотатки", + "link_title_arbitrary": "заголовок посилання можна змінювати довільно", "link_title": "Заголовок посилання", "button_add_link": "Додати посилання" }, @@ -21,9 +21,10 @@ "db_version": "Версія БД:", "build_date": "Дата збірки:", "build_revision": "Ревізія збірки:", - "data_directory": "Директорія даних:", + "data_directory": "Каталог даних:", "homepage": "Домашня сторінка:", - "title": "Про Trilium Notes" + "title": "Про Trilium Notes", + "sync_version": "Версія синхронізації:" }, "global_menu": { "about": "Про Trilium Notes" @@ -33,22 +34,44 @@ }, "toast": { "critical-error": { - "title": "Критична помилка" + "title": "Критична помилка", + "message": "Сталася критична помилка, яка перешкоджає запуску клієнтської програми:\n\n{{message}}\n\nНайімовірніше, це спричинено несподіваною помилкою скрипту. Спробуйте запустити програму в безпечному режимі та вирішити проблему." + }, + "widget-error": { + "title": "Помилка ініціалізації віджета", + "message-custom": "Не вдалося ініціалізувати користувацький віджет із нотатки з ID \"{{id}}\" під назвою \"{{title}}\" через:\n\n{{message}}", + "message-unknown": "Невідомий віджет не вдалося ініціалізувати через:\n\n{{message}}" + }, + "bundle-error": { + "title": "Не вдалося завантажити власний скрипт", + "message": "Скрипт із нотатки з ID \"{{id}}\" під назвою \"{{title}}\" не вдалося виконати через:\n\n{{message}}" } }, "bulk_actions": { "bulk_actions": "Масові дії", - "affected_notes": "Зачеплені нотатки", + "affected_notes": "Застосовані нотатки", "available_actions": "Доступні дії", "chosen_actions": "Обрані дії", - "execute_bulk_actions": "Виконати масові дії", + "execute_bulk_actions": "Виконання масових дій", "bulk_actions_executed": "Масові дії успішно виконано.", - "none_yet": "Поки ніяких.. Додайте дію натиснувши на одну з наданих вище." + "none_yet": "Поки що немає... додайте дію, натиснувши одну з доступних вище.", + "include_descendants": "Включити нащадків вибраних нотаток", + "labels": "Мітки", + "relations": "Відносини", + "notes": "Нотатки", + "other": "Інше" }, "clone_to": { "clone_notes_to": "Клонувати нотатки до...", "target_parent_note": "Цільова батьківська нотатка", - "search_for_note_by_its_name": "Знайти нотатку за ім'ям" + "search_for_note_by_its_name": "Знайти нотатку за назвою", + "help_on_links": "Допомога з посиланнями", + "notes_to_clone": "Нотатки для клонування", + "cloned_note_prefix_title": "Клонована нотатка буде відображатися в дереві нотаток із заданим префіксом", + "prefix_optional": "Префікс (необов'язково)", + "clone_to_selected_note": "Клонувати до вибраної нотатки", + "no_path_to_clone_to": "Немає шляху для клонування.", + "note_cloned": "Нотатку \"{{clonedTitle}}\" було клоновано в \"{{targetTitle}}\"" }, "clipboard": { "copied": "Нотатку(-и) було скопійовано в буфер.", @@ -87,5 +110,115 @@ "editor_type": { "label": "Панель інструментів форматування" } + }, + "confirm": { + "confirmation": "Підтвердження", + "cancel": "Скасувати", + "ok": "ОК", + "are_you_sure_remove_note": "Ви впевнені, що хочете видалити нотатку \"{{title}}\" з карти зв'язків? ", + "if_you_dont_check": "Якщо ви не позначите цей пункт, нотатку буде видалено лише з карти зв'язків.", + "also_delete_note": "Також видалити нотатку" + }, + "delete_notes": { + "delete_notes_preview": "Видалити попередній перегляд нотаток", + "close": "Закрити", + "delete_all_clones_description": "Видалити також усі клони (можна скасувати в останніх змінах)", + "erase_notes_description": "Звичайне (м’яке) видалення лише позначає нотатки як видалені, і їх можна відновити (у діалоговому вікні останніх змін) протягом певного періоду часу. Якщо позначити цю опцію, нотатки будуть видалені негайно, і їх неможливо буде відновити.", + "erase_notes_warning": "Стерти нотатки назавжди (скасувати не можна), включаючи всі клони. Це призведе до перезавантаження програми.", + "notes_to_be_deleted": "Наступні нотатки будуть видалені ({{notesCount}})", + "no_note_to_delete": "Жодну нотатку не буде видалено (лише клони).", + "broken_relations_to_be_deleted": "Наступні зв'язки будуть розірвані та видалені ({{ relationCount}})", + "cancel": "Скасувати", + "ok": "ОК", + "deleted_relation_text": "Нотатка {{- note}} (буде видалена) посилається на зв'язок {{- relation}}, що походить з {{- source}}." + }, + "export": { + "export_note_title": "Експорт нотатки", + "close": "Закрити", + "export_type_subtree": "Ця нотатка та всі її нащадки", + "format_html": "HTML – рекомендовано, оскільки він зберігає всі формати", + "format_html_zip": "HTML у ZIP-архіві – це рекомендовано, оскільки це зберігає все форматування.", + "format_markdown": "Markdown – це зберігає більшу частину форматування.", + "format_opml": "OPML – формат обміну структурами лише для тексту. Форматування, зображення та файли не включено.", + "opml_version_1": "OPML версії 1.0 – лише звичайний текст", + "opml_version_2": "OPML v2.0 - також дозволяє HTML", + "export_type_single": "Тільки ця нотатка без її нащадків", + "export": "Експорт", + "choose_export_type": "Спочатку виберіть тип експорту", + "export_status": "Стан експорту", + "export_in_progress": "Триває експорт: {{progressCount}}", + "export_finished_successfully": "Експорт успішно завершено.", + "format_pdf": "PDF – для друку або спільного використання." + }, + "help": { + "title": "Шпаргалка", + "noteNavigation": "Навігація по нотатках", + "goUpDown": "переміститись вгору/вниз у списку нотаток", + "collapseExpand": "згорнути/розгорнути вузол", + "notSet": "не встановлено", + "goBackForwards": "повернутися назад / вперед в історії", + "showJumpToNoteDialog": "показати діалогове вікно \"Перейти до\"", + "scrollToActiveNote": "прокрутити до активної нотатки", + "jumpToParentNote": "перейти до батьківської нотатки", + "collapseWholeTree": "згорнути все дерево нотаток", + "collapseSubTree": "згорнути піддерево", + "tabShortcuts": "Швидкі клавіші вкладки", + "newTabNoteLink": "посилання на нотатку відкриває нотатку в новій вкладці", + "newTabWithActivationNoteLink": "посилання на нотатку відкривається та активує нотатку в новій вкладці", + "onlyInDesktop": "Тільки для ПК (збірка Electron)", + "openEmptyTab": "відкрити порожню вкладку", + "closeActiveTab": "закрити активну вкладку", + "activateNextTab": "активувати наступну вкладку", + "activatePreviousTab": "активувати попередню вкладку", + "creatingNotes": "Створення нотаток", + "createNoteAfter": "створити нову нотатку після активної нотатки", + "createNoteInto": "створити нову піднотатку в активній нотатці", + "editBranchPrefix": "редагувати префікс активного клону нотатки", + "movingCloningNotes": "Переміщення / клонування нотаток", + "moveNoteUpDown": "переміщення нотатки вгору/вниз у списку нотаток", + "moveNoteUpHierarchy": "перемістити нотатку вище в ієрархії", + "multiSelectNote": "множинний вибір нотатки вище/нижче", + "selectAllNotes": "вибрати всі нотатки на поточному рівні", + "selectNote": "вибрати нотатку", + "copyNotes": "копіювати активну нотатку (або поточний вибір) у буфер обміну (використовується для клонування)", + "cutNotes": "вирізати поточну нотатку (або поточний вибір) у буфер обміну (використовується для переміщення нотаток)", + "pasteNotes": "вставити нотатку(и) як піднотатку в активну нотатку (яка або переміщується, або клонується залежно від того, чи була вона скопійована, чи вирізана в буфер обміну)", + "deleteNotes": "видалити нотатку / піддерево", + "editingNotes": "Редагування нотаток", + "editNoteTitle": "На панелі дерева перемкнеться з панелі дерева на назву нотатки. Введення з назви нотатки перемкне фокус на текстовий редактор. Ctrl+. перемкнеться назад з редактора на панель дерева.", + "createEditLink": "створити / редагувати зовнішнє посилання", + "createInternalLink": "створити внутрішнє посилання", + "followLink": "перейти за посиланням під курсором", + "insertDateTime": "вставити поточну дату та час у позицію курсору", + "jumpToTreePane": "перейти до панелі дерева та прокрутити до активної нотатки", + "markdownAutoformat": "Автоформатування, подібне до Markdown", + "headings": "##, ###, #### тощо, а потім пробіл для заголовків", + "bulletList": "* або - з пробілом для маркованого списку", + "numberedList": "1. або 1), а потім пробіл для нумерованого списку", + "blockQuote": "починайте рядок з >, а потім пробіл для цитування блоку", + "troubleshooting": "Усунення несправностей", + "reloadFrontend": "перезавантажити інтерфейс Trilium", + "showDevTools": "показати інструменти розробника", + "showSQLConsole": "показати консоль SQL", + "other": "Інше", + "quickSearch": "зосередження на швидкому введенні пошукового запиту", + "inPageSearch": "пошук на сторінці" + }, + "import": { + "importIntoNote": "Імпортувати в нотатку", + "chooseImportFile": "Вибрати файл імпорту", + "importDescription": "Вміст вибраного(их) файлу(ів) буде імпортовано як дочірню(і) нотатку(и) до", + "options": "Опції", + "safeImportTooltip": "Експортовані файли Trilium .zip можуть містити виконувані скрипти, які можуть мати шкідливу поведінку. Безпечний імпорт деактивує автоматичне виконання всіх імпортованих скриптів. Зніміть позначку \"Безпечний імпорт\", лише якщо імпортований архів має містити виконувані скрипти, і ви повністю довіряєте вмісту файлу імпорту.", + "safeImport": "Безпечний імпорт", + "explodeArchivesTooltip": "Якщо цей прапорець позначено, Trilium читатиме файли .zip, .enex та .opml і створюватиме нотатки з файлів усередині цих архівів. Якщо прапорець знято, Trilium додаватиме самі архіви до нотатки.", + "explodeArchives": "Зчитати вміст архівів .zip, .enex та .opml.", + "shrinkImagesTooltip": "

Якщо ви позначите цей параметр, Trilium спробує зменшити імпортовані зображення шляхом масштабування та оптимізації, що може вплинути на сприйняту якість зображення. Якщо не позначити, зображення будуть імпортовані без змін.

Це не стосується імпорту .zip з метаданими, оскільки передбачається, що ці файли вже оптимізовані.

", + "shrinkImages": "Зменшити зображення", + "textImportedAsText": "Імпортувати HTML, Markdown та TXT як текстові нотатки, якщо це незрозуміло з метаданих", + "codeImportedAsCode": "Імпортувати розпізнані файли коду (наприклад, .json) як нотатки до коду, якщо це незрозуміло з метаданих", + "replaceUnderscoresWithSpaces": "Замінити підкреслення пробілами в назвах імпортованих нотаток", + "import": "Імпорт", + "failed": "Помилка імпорту: {{message}}." } } diff --git a/apps/client/src/translations/vi/translation.json b/apps/client/src/translations/vi/translation.json index b5845b7ee..a8eeaedb9 100644 --- a/apps/client/src/translations/vi/translation.json +++ b/apps/client/src/translations/vi/translation.json @@ -73,5 +73,8 @@ }, "rename_label": { "rename_label": "Đặt lại tên nhãn" + }, + "call_to_action": { + "dismiss": "Bỏ qua" } } diff --git a/apps/server-e2e/src/i18n.spec.ts b/apps/server-e2e/src/i18n.spec.ts index 7523747f0..bda21026c 100644 --- a/apps/server-e2e/src/i18n.spec.ts +++ b/apps/server-e2e/src/i18n.spec.ts @@ -54,7 +54,7 @@ test("User can change language from settings", async ({ page, context }) => { // Select English again. await languageCombobox.selectOption("en"); - await app.currentNoteSplit.locator("button.restart-app-button").click(); + await app.currentNoteSplit.locator("button[name=restart-app-button]").click(); await expect(app.currentNoteSplit).toContainText("Language", { timeout: 15000 }); await expect(languageCombobox).toHaveValue("en"); }); diff --git a/apps/server/src/assets/translations/ja/server.json b/apps/server/src/assets/translations/ja/server.json index 85623c7cb..4bd4c089f 100644 --- a/apps/server/src/assets/translations/ja/server.json +++ b/apps/server/src/assets/translations/ja/server.json @@ -100,7 +100,10 @@ "unhoist": "すべてのホイストを無効にする", "toggle-book-properties": "コレクションプロパティ切り替え", "toggle-zen-mode": "禅モード(集中した編集のための最小限のUI)を有効/無効にする", - "add-include-note-to-text": "ノートを埋め込むダイアログを開く" + "add-include-note-to-text": "ノートを埋め込むダイアログを開く", + "toggle-promoted-attributes": "プロモートされた属性をトグルする", + "force-save-revision": "アクティブノートの新しいノートリヴィジョンを強制する", + "toggle-classic-editor-toolbar": "固定ツールバーを持ったエディターのフォーマットタブをトグルする" }, "keyboard_action_names": { "back-in-note-history": "ノートの履歴を戻る", diff --git a/apps/server/src/assets/translations/ru/server.json b/apps/server/src/assets/translations/ru/server.json index b2c447dec..ebcf5f9a7 100644 --- a/apps/server/src/assets/translations/ru/server.json +++ b/apps/server/src/assets/translations/ru/server.json @@ -104,10 +104,63 @@ }, "hidden-subtree": { "localization": "Язык и регион", - "settings-title": "Настройки" + "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": "Открыть сегодняшнюю заметку в журнале" }, "tray": { - "bookmarks": "Закладки" + "bookmarks": "Закладки", + "tooltip": "Trilium Notes", + "close": "Выйти из Trilium", + "recents": "Последние заметки", + "new-note": "Новая заметка", + "show-windows": "Показать окна" }, "keyboard_action_names": { "scroll-to-active-note": "Прокрутить к активной заметке", @@ -174,7 +227,18 @@ "edit-read-only-note": "Редактировать заметку только для чтения", "add-new-label": "Добавить новую метку", "add-new-relation": "Добавить новое отношение", - "toggle-ribbon-tab-classic-editor": "Переключить Классический редактор" + "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": "Принудительное сохранение версии" }, "months": { "august": "Август", @@ -200,5 +264,117 @@ "saturday": "Суббота", "sunday": "Воскресенье" }, - "weekdayNumber": "Неделя {weekNumber}" + "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://:", + "proxy-server-placeholder": "https://:", + "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": "Новая заметка" + }, + "modals": { + "error_title": "Ошибка" + }, + "share_theme": { + "search_placeholder": "Поиск...", + "subpages": "Подстраницы:", + "expand": "Развернуть", + "site-theme": "Тема оформления сайта", + "image_alt": "Изображение статьи" + }, + "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": "В процессе" + }, + "share_404": { + "title": "Не найдено", + "heading": "Не найдено" + }, + "share_page": { + "child-notes": "Дочерние заметки:", + "no-content": "Эта заметка пуста." + }, + "javascript-required": "Для работы Trilium требуется JavaScript.", + "setup_sync-from-desktop": { + "heading": "Синхронизация с приложения ПК", + "description": "Эту настройку необходимо инициировать из приложения для ПК.", + "step1": "Откройте приложение Trilium Notes на ПК.", + "step2": "В меню Trilium выберите «Параметры».", + "step3": "Нажмите на категорию «Синхронизация».", + "step4": "Измените адрес экземпляра сервера на: {{- host}} и нажмите «Сохранить».", + "step5": "Нажмите кнопку «Проверить синхронизацию», чтобы убедиться в успешности подключения.", + "step6": "Выполнив эти шаги, нажмите {{- link}}.", + "step6-here": "здесь" + }, + "test_sync": { + "not-configured": "Адрес сервера синхронизации не установлен. Сначала настройте синхронизацию.", + "successful": "Установление связи с сервером синхронизации прошло успешно, синхронизация начата." + } } diff --git a/apps/server/src/assets/translations/uk/server.json b/apps/server/src/assets/translations/uk/server.json index 10f7d946b..e2fbe29cf 100644 --- a/apps/server/src/assets/translations/uk/server.json +++ b/apps/server/src/assets/translations/uk/server.json @@ -1,12 +1,156 @@ { "keyboard_actions": { - "back-in-note-history": "Перейти до минулої нотатки в історії", + "back-in-note-history": "Перейти до попередньої нотатки в історії", "forward-in-note-history": "Перейти до наступної нотатки в історії", - "open-command-palette": "Відкрити палітру команд", + "open-command-palette": "Відкрити панель команд", "scroll-to-active-note": "Прокрутити дерево нотаток до активної нотатки", "quick-search": "Показати панель швидкого пошуку", "search-in-subtree": "Пошук нотаток в піддереві активної нотатки", "expand-subtree": "Розкрити піддерево поточної нотатки", - "collapse-tree": "Згорнути все дерево нотаток" + "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 (фронтенд/бекенд) нотатки", + "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": "Перейти до восьмої вкладки" } } diff --git a/apps/server/src/services/log.ts b/apps/server/src/services/log.ts index 542b16ad2..3d8cdd6b7 100644 --- a/apps/server/src/services/log.ts +++ b/apps/server/src/services/log.ts @@ -12,7 +12,7 @@ if (!fs.existsSync(dataDir.LOG_DIR)) { fs.mkdirSync(dataDir.LOG_DIR, 0o700); } -let logFile!: fs.WriteStream; +let logFile: fs.WriteStream | undefined; const SECOND = 1000; const MINUTE = 60 * SECOND; @@ -107,17 +107,20 @@ function initLogFile() { todaysMidnight = getTodaysMidnight(); const logPath = `${dataDir.LOG_DIR}/trilium-${formatDate()}.log`; + const isRotating = !!logFile; - if (logFile) { - logFile.end(); + if (isRotating) { + logFile!.end(); + } - // Clean up old log files when rotating to a new file + logFile = fs.createWriteStream(logPath, { flags: "a" }); + + // Clean up old log files when rotating to a new file + if (isRotating) { cleanupOldLogFiles().catch(() => { // Ignore cleanup errors }); } - - logFile = fs.createWriteStream(logPath, { flags: "a" }); } function checkDate(millisSinceMidnight: number) { @@ -141,7 +144,7 @@ function log(str: string | Error) { millisSinceMidnight = checkDate(millisSinceMidnight); - logFile.write(`${formatTime(millisSinceMidnight)} ${str}${EOL}`); + logFile!.write(`${formatTime(millisSinceMidnight)} ${str}${EOL}`); console.log(str); }