diff --git a/apps/client/package.json b/apps/client/package.json index ed78eb5d8..a45f9d306 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -1,6 +1,6 @@ { "name": "@triliumnext/client", - "version": "0.97.2", + "version": "0.98.0", "description": "JQuery-based client for TriliumNext, used for both web and desktop (via Electron)", "private": true, "license": "AGPL-3.0-only", diff --git a/apps/client/src/translations/cn/translation.json b/apps/client/src/translations/cn/translation.json index 4550eab19..8e6cfc8df 100644 --- a/apps/client/src/translations/cn/translation.json +++ b/apps/client/src/translations/cn/translation.json @@ -1992,9 +1992,6 @@ "help_title": "显示关于此画面的更多信息" }, "call_to_action": { - "next_theme_title": "新的 Trilium 主题已进入稳定版", - "next_theme_message": "有一段时间,我们一直在设计新的主题,为了让应用程序看起来更加现代。", - "next_theme_button": "切换至新的 Trilium 主题", "background_effects_title": "背景效果现已推出稳定版本", "background_effects_message": "在 Windows 装置上,背景效果现在已完全稳定。背景效果通过模糊背后的背景,为使用者界面增添一抹色彩。此技术也用于其他应用程序,例如 Windows 资源管理器。", "background_effects_button": "启用背景效果" diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 37b8436f5..ae627342f 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -1994,11 +1994,12 @@ "help_title": "Display more information about this screen" }, "call_to_action": { - "next_theme_title": "The new Trilium theme is now stable", - "next_theme_message": "For a while now, we've been working on a new theme to give the application a more modern look.", - "next_theme_button": "Switch to the new Trilium theme", + "next_theme_title": "Try the new Trilium theme", + "next_theme_message": "You are currently using the legacy theme, would you like to try the new theme?", + "next_theme_button": "Try the new theme", "background_effects_title": "Background effects are now stable", "background_effects_message": "On Windows devices, background effects are now fully stable. The background effects adds a touch of color to the user interface by blurring the background behind it. This technique is also used in other applications such as Windows Explorer.", - "background_effects_button": "Enable background effects" + "background_effects_button": "Enable background effects", + "dismiss": "Dismiss" } } diff --git a/apps/client/src/translations/fa/translation.json b/apps/client/src/translations/fa/translation.json index 0967ef424..b2638de6b 100644 --- a/apps/client/src/translations/fa/translation.json +++ b/apps/client/src/translations/fa/translation.json @@ -1 +1,22 @@ -{} +{ + "about": { + "title": "درباره Trilium Notes", + "homepage": "صفحه اصلی:", + "app_version": "نسخه برنامه:", + "db_version": "نسخه پایگاه داده:", + "sync_version": "نسخه منطبق:", + "build_date": "تاریخ ساخت:", + "build_revision": "نسخه بازنگری شده:", + "data_directory": "دایرکتوری داده:" + }, + "toast": { + "critical-error": { + "title": "خطای بحرانی", + "message": "خطای بحرانی رخ داده که مانع از اجرای برنامه می شود\n\n {{message}}\n\nبه احتمال زیاد ناشی از خطای غیرمنتظره در اجرای ناموفق یک اسکریپت است. برنامه را در مد ایمن اجرا کنید و خطا را بررسی نمایید." + } + }, + "add_link": { + "add_link": "افزودن لینک", + "note": "یادداشت" + } +} diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json index 0a746a9de..a04a7fc6b 100644 --- a/apps/client/src/translations/ja/translation.json +++ b/apps/client/src/translations/ja/translation.json @@ -277,7 +277,8 @@ "quickSearch": "クイックサーチにフォーカス", "inPageSearch": "ページ内検索", "showJumpToNoteDialog": "「ジャンプ先」ダイアログを表示", - "moveNoteUpDown": "ノートリストでノートを上/下に移動" + "moveNoteUpDown": "ノートリストでノートを上/下に移動", + "notSet": "未設定" }, "import": { "importIntoNote": "ノートにインポート", @@ -352,7 +353,9 @@ }, "relation_map_buttons": { "zoom_out_title": "ズームアウト", - "zoom_in_title": "ズームイン" + "zoom_in_title": "ズームイン", + "create_child_note_title": "新しい子ノートを作成し、関連マップに追加", + "reset_pan_zoom_title": "パンとズームを初期座標と倍率にリセット" }, "tree-context-menu": { "advanced": "高度", @@ -513,7 +516,8 @@ "file_size": "ファイルサイズ", "download": "ダウンロード", "open": "開く", - "title": "ファイル" + "title": "ファイル", + "upload_new_revision": "編集履歴をアップロード" }, "note_info_widget": { "note_id": "ノート ID", @@ -523,14 +527,16 @@ "note_size": "ノートサイズ", "calculate": "計算", "subtree_size": "(サブツリーサイズ: {{size}}、ノード数: {{count}})", - "title": "ノート情報" + "title": "ノート情報", + "note_size_info": "ノートのサイズは、このノートに必要なストレージの概算を示します。これは、ノートの内容とそのノートの編集履歴の内容を考慮したものです。" }, "image_properties": { "file_type": "ファイルタイプ", "file_size": "ファイルサイズ", "download": "ダウンロード", "open": "開く", - "title": "画像" + "title": "画像", + "upload_new_revision": "編集履歴をアップロード" }, "revisions": { "download_button": "ダウンロード", @@ -567,7 +573,8 @@ "open_custom_client_only": "添付ファイルをプログラムから開くは、デスクトップクライアントからのみ可能です。", "delete_confirm": "本当に添付ファイル '{{title}}' を削除しますか?", "delete_success": "添付ファイル '{{title}}' は削除されました。", - "enter_new_name": "新しい添付ファイルの名前を入力してください" + "enter_new_name": "新しい添付ファイルの名前を入力してください", + "upload_new_revision": "編集履歴をアップロード" }, "etapi": { "created": "作成日時", @@ -639,7 +646,12 @@ "parent_count": "クローンの数", "random": "ランダムな順番", "asc": "昇順(デフォルト)", - "desc": "降順" + "desc": "降順", + "content_and_attachments_size": "添付ファイルを含むノート内容のサイズ", + "content_and_attachments_and_revisions_size": "添付ファイルと編集履歴を含むノート内容のサイズ", + "revision_count": "編集履歴の回数", + "owned_label_count": "ラベルの数", + "owned_relation_count": "関係の数" }, "table_view": { "sort-column-descending": "降順", @@ -663,7 +675,11 @@ }, "search_script": { "title": "検索スクリプト:", - "placeholder": "ノート名で検索" + "placeholder": "ノート名で検索", + "description1": "検索スクリプトは、スクリプトを実行することによって検索結果を定義することができます。標準の検索では不十分な場合に、最大限の柔軟性を提供します。", + "description2": "検索スクリプトはノートタイプが \"code\" かつ \"JavaScript backend\" でなければならない。スクリプトは、 noteIds または note の配列を返す必要があります。", + "example_title": "例は以下です:", + "example_code": "// 1. 標準検索によるプレフィルタリング\nconst candidateNotes = api.searchForNotes(\"#journal\"); \n\n// 2. カスタム検索条件の適用\nconst matchedNotes = candidateNotes\n .filter(note => note.title.match(/[0-9]{1,2}\\. ?[0-9]{1,2}\\. ?[0-9]{4}/));\n\nreturn matchedNotes;" }, "include_note": { "placeholder_search": "ノート名で検索", @@ -802,7 +818,8 @@ "code_auto_read_only_size": { "title": "自動読み取り専用のサイズ", "description": "自動読み取り専用のノートサイズは、ノートが読み取り専用モード(パフォーマンス上の理由)で表示されるようになるサイズです。", - "unit": "文字" + "unit": "文字", + "label": "自動読み取り専用のサイズ(コードノート)" }, "custom_date_time_format": { "title": "日付/時刻フォーマットのカスタム", @@ -1243,5 +1260,83 @@ "update_relation": "関係の更新", "relation_name": "関係の名前", "allowed_characters": "英数字、アンダーバー、コロンが使用可能な文字です。" + }, + "revisions_button": { + "note_revisions": "ノートの変更履歴" + }, + "note_launcher": { + "this_launcher_doesnt_define_target_note": "このランチャーはターゲットノートを定義していません。" + }, + "zpetne_odkazy": { + "backlink": "{{count}} バックリンク", + "backlinks": "{{count}} バックリンク", + "relation": "関係" + }, + "mobile_detail_menu": { + "delete_this_note": "このノートを削除", + "error_unrecognized_command": "認識されないコマンド {{command}}" + }, + "inherited_attribute_list": { + "title": "継承属性", + "no_inherited_attributes": "継承属性ではありません。" + }, + "note_map": { + "open_full": "拡大表示", + "collapse": "通常サイズに折りたたむ", + "title": "ノートマップ", + "link-distance": "リンク距離" + }, + "owned_attribute_list": { + "owned_attributes": "所有属性" + }, + "promoted_attributes": { + "unset-field-placeholder": "未設定", + "open_external_link": "外部でリンクを開く", + "unknown_label_type": "不明なラベルタイプ '{{type}}'", + "unknown_attribute_type": "不明な属性タイプ '{{type}}'", + "add_new_attribute": "新しい属性を追加", + "remove_this_attribute": "この属性を削除", + "remove_color": "このカラーラベルを削除" + }, + "relation_map": { + "open_in_new_tab": "新しいタブで開く", + "remove_note": "ノートを削除", + "edit_title": "タイトルを編集", + "rename_note": "ノート名を変更", + "enter_new_title": "新しいノート名を入力:", + "remove_relation": "関係を削除", + "confirm_remove_relation": "本当にこの関係を削除しますか?", + "specify_new_relation_name": "新しい関係の名前(使用可能な文字: 英数字、コロン、アンダースコア)を指定:", + "note_not_found": "ノート {{noteId}} が見つかりません!", + "enter_title_of_new_note": "新しいノートのタイトルを入力", + "default_new_note_title": "新しいノート" + }, + "database_anonymization": { + "title": "データベースの匿名化", + "full_anonymization": "完全匿名化", + "full_anonymization_description": "この操作により、データベースの新しいコピーが作成され、匿名化されます(すべてのノートの内容を削除し、構造と一部の非機密メタデータのみを残します)。これにより、個人データが漏洩する心配なく、デバッグ目的でオンライン共有できます。", + "save_fully_anonymized_database": "完全に匿名化されたデータベースを保存", + "light_anonymization": "軽い匿名化", + "light_anonymization_description": "この操作により、データベースの新しいコピーが作成され、軽い匿名化が適用されます。具体的には、すべてのノートの内容のみが削除され、タイトルと属性はそのまま残ります。さらに、カスタムJSフロントエンド/バックエンドスクリプトノートとカスタムウィジェットもそのまま残ります。これにより、問題のデバッグのためのコンテキストがより多く提供されます。", + "choose_anonymization": "完全に匿名化したデータベースを提供するか、軽く匿名化したデータベースを提供するかは、あなた自身が決めることができます。完全に匿名化されたDBであっても非常に有用ですが、場合によっては軽く匿名化されたDBの方がバグの特定と修正のプロセスを速めることができます。", + "save_lightly_anonymized_database": "軽く匿名化されたデータベースを保存", + "existing_anonymized_databases": "既存の匿名化データベース", + "creating_fully_anonymized_database": "完全に匿名化されたデータベースを作成中...", + "creating_lightly_anonymized_database": "軽く匿名化されたデータベースを作成中...", + "error_creating_anonymized_database": "匿名化データベースの作成に失敗しました。詳細はバックエンドログを確認してください", + "successfully_created_fully_anonymized_database": "完全に匿名化されたデータベースを {{anonymizedFilePath}} に作成", + "successfully_created_lightly_anonymized_database": "軽く匿名化されたデータベースを {{anonymizedFilePath}} に作成", + "no_anonymized_database_yet": "匿名化されたデータベースはまだありません。" + }, + "database_integrity_check": { + "title": "データベースの整合性チェック", + "description": "これは、データベースがSQLiteレベルで破損がないかをチェックします。DBのサイズによっては時間がかかる場合があります。", + "check_button": "データベースの整合性をチェック", + "checking_integrity": "データベースの整合性をチェックしています...", + "integrity_check_succeeded": "整合性チェックに成功 - 問題は見つかりませんでした。", + "integrity_check_failed": "整合性チェックに失敗: {{results}}" + }, + "code-editor-options": { + "title": "エディター" } } diff --git a/apps/client/src/translations/ro/translation.json b/apps/client/src/translations/ro/translation.json index c8bdea804..58c64e3a2 100644 --- a/apps/client/src/translations/ro/translation.json +++ b/apps/client/src/translations/ro/translation.json @@ -1996,9 +1996,6 @@ "help_title": "Afișează mai multe informații despre acest ecran" }, "call_to_action": { - "next_theme_title": "Noua tema Trilium este stabilă", - "next_theme_message": "Lucrăm de ceva timp la o nouă temă, cu un aspect modern.", - "next_theme_button": "Testează noua temă Trilium", "background_effects_title": "Efectele de fundal sunt acum stabile", "background_effects_message": "Pe dispozitive cu Windows, efectele de fundal sunt complet stabile. Acestea adaugă un strop de culoare interfeței grafice prin estomparea fundalului din spatele ferestrei. Această tehnică este folosită și în alte aplicații precum Windows Explorer.", "background_effects_button": "Activează efectele de fundal" diff --git a/apps/client/src/translations/tw/translation.json b/apps/client/src/translations/tw/translation.json index 332e94028..4d034080a 100644 --- a/apps/client/src/translations/tw/translation.json +++ b/apps/client/src/translations/tw/translation.json @@ -1992,9 +1992,6 @@ "help_title": "顯示關於此畫面的更多資訊" }, "call_to_action": { - "next_theme_title": "新的 Trilium 主題已推出穩定版本", - "next_theme_message": "有一段時間,我們一直在設計新的主題,為了讓應用程式看起來更現代。", - "next_theme_button": "切換至新的 Trilium 主題", "background_effects_title": "背景特效已推出穩定版本", "background_effects_message": "在 Windows 裝置上,背景特效現在已完全穩定。背景特效透過模糊背後的背景,為使用者介面增添一抹色彩。此技術也用於其他應用程式,例如 Windows 檔案總管。", "background_effects_button": "啟用背景特效" diff --git a/apps/client/src/translations/uk/translation.json b/apps/client/src/translations/uk/translation.json index c743ac20d..d0976b08b 100644 --- a/apps/client/src/translations/uk/translation.json +++ b/apps/client/src/translations/uk/translation.json @@ -10,6 +10,82 @@ "button_add_link": "Додати посилання" }, "branch_prefix": { - "save": "Зберегти" + "save": "Зберегти", + "edit_branch_prefix": "Редагувати префікс гілки", + "help_on_tree_prefix": "Довідка щодо префіксів гілок", + "prefix": "Префікс: ", + "branch_prefix_saved": "Префікс гілки збережено." + }, + "about": { + "app_version": "Версія програми:", + "db_version": "Версія БД:", + "build_date": "Дата збірки:", + "build_revision": "Ревізія збірки:", + "data_directory": "Директорія даних:", + "homepage": "Домашня сторінка:", + "title": "Про Trilium Notes" + }, + "global_menu": { + "about": "Про Trilium Notes" + }, + "modal": { + "help_title": "Показати більше інформації про це вікно" + }, + "toast": { + "critical-error": { + "title": "Критична помилка" + } + }, + "bulk_actions": { + "bulk_actions": "Масові дії", + "affected_notes": "Зачеплені нотатки", + "available_actions": "Доступні дії", + "chosen_actions": "Обрані дії", + "execute_bulk_actions": "Виконати масові дії", + "bulk_actions_executed": "Масові дії успішно виконано.", + "none_yet": "Поки ніяких.. Додайте дію натиснувши на одну з наданих вище." + }, + "clone_to": { + "clone_notes_to": "Клонувати нотатки до...", + "target_parent_note": "Цільова батьківська нотатка", + "search_for_note_by_its_name": "Знайти нотатку за ім'ям" + }, + "clipboard": { + "copied": "Нотатку(-и) було скопійовано в буфер.", + "copy_failed": "Не вдалося скопіювати в буфер через проблеми з дозволами.", + "copy_success": "Скопійовано в буфер." + }, + "entrypoints": { + "sql-error": "Виникла помилка при виконанні запиту SQL: {{message}}" + }, + "branches": { + "undeleting-notes-finished-successfully": "Нотатки вдало відновлено.", + "undeleting-notes-in-progress": "Відновлюємо нотатки: {{count}}", + "delete-notes-in-progress": "Видаляємо нотатки: {{count}}", + "delete-finished-successfully": "Нотатки вдало видалено." + }, + "launcher_context_menu": { + "add-spacer": "Додати розділювач", + "reset": "Скинути" + }, + "editable-text": { + "auto-detect-language": "Автовизначена" + }, + "highlighting": { + "color-scheme": "Схема кольорів" + }, + "code_block": { + "copy_title": "Скопіювати в буфер" + }, + "classic_editor_toolbar": { + "title": "Форматування" + }, + "editor": { + "title": "Редактор" + }, + "editing": { + "editor_type": { + "label": "Панель інструментів форматування" + } } } diff --git a/apps/client/src/widgets/dialogs/call_to_action.tsx b/apps/client/src/widgets/dialogs/call_to_action.tsx index 2bdb97866..d493611e3 100644 --- a/apps/client/src/widgets/dialogs/call_to_action.tsx +++ b/apps/client/src/widgets/dialogs/call_to_action.tsx @@ -3,6 +3,7 @@ import Button from "../react/Button"; import Modal from "../react/Modal"; import ReactBasicWidget from "../react/ReactBasicWidget"; import { CallToAction, dismissCallToAction, getCallToActions } from "./call_to_action_definitions"; +import { t } from "../../services/i18n"; function CallToActionDialogComponent({ activeCallToActions }: { activeCallToActions: CallToAction[] }) { if (!activeCallToActions.length) { @@ -25,12 +26,12 @@ function CallToActionDialogComponent({ activeCallToActions }: { activeCallToActi setShown(false)} footerAlignment="between" footer={<> -