mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 18:08:33 +02:00
add translation for backend_log.js and
5 advanced options
This commit is contained in:
parent
9885abc626
commit
fcf4b57838
@ -1,5 +1,6 @@
|
||||
import NoteContextAwareWidget from "../../note_context_aware_widget.js";
|
||||
import server from "../../../services/server.js";
|
||||
import { t } from "../../../services/i18n.js";
|
||||
|
||||
const TPL = `<div style="height: 100%; display: flex; flex-direction: column;">
|
||||
<style>
|
||||
@ -13,7 +14,7 @@ const TPL = `<div style="height: 100%; display: flex; flex-direction: column;">
|
||||
<textarea class="backend-log-textarea" readonly="readonly"></textarea>
|
||||
|
||||
<div style="display: flex; justify-content: space-around; margin-top: 10px;">
|
||||
<button class="refresh-backend-log-button btn btn-primary">Refresh</button>
|
||||
<button class="refresh-backend-log-button btn btn-primary">${t("backend_log.refresh")}</button>
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
import OptionsWidget from "../options_widget.js";
|
||||
import toastService from "../../../../services/toast.js";
|
||||
import server from "../../../../services/server.js";
|
||||
import { t } from "../../../../services/i18n.js";
|
||||
|
||||
const TPL = `
|
||||
<div class="options-section">
|
||||
<h4>Consistency Checks</h4>
|
||||
<h4>${t("consistency_checks.title")}</h4>
|
||||
|
||||
<button class="find-and-fix-consistency-issues-button btn">Find and fix consistency issues</button>
|
||||
<button class="find-and-fix-consistency-issues-button btn">${t("consistency_checks.find_and_fix_button")}</button>
|
||||
</div>`;
|
||||
|
||||
export default class ConsistencyChecksOptions extends OptionsWidget {
|
||||
@ -14,11 +15,11 @@ export default class ConsistencyChecksOptions extends OptionsWidget {
|
||||
this.$widget = $(TPL);
|
||||
this.$findAndFixConsistencyIssuesButton = this.$widget.find(".find-and-fix-consistency-issues-button");
|
||||
this.$findAndFixConsistencyIssuesButton.on('click', async () => {
|
||||
toastService.showMessage("Finding and fixing consistency issues...");
|
||||
toastService.showMessage(t("consistency_checks.finding_and_fixing_message"));
|
||||
|
||||
await server.post('database/find-and-fix-consistency-issues');
|
||||
|
||||
toastService.showMessage("Consistency issues should be fixed.");
|
||||
toastService.showMessage(t("consistency_checks.issues_fixed_message"));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1,27 +1,27 @@
|
||||
import OptionsWidget from "../options_widget.js";
|
||||
import toastService from "../../../../services/toast.js";
|
||||
import server from "../../../../services/server.js";
|
||||
import { t } from "../../../../services/i18n.js";
|
||||
|
||||
const TPL = `
|
||||
<div class="options-section">
|
||||
<h4>Database Anonymization</h4>
|
||||
<h4>${t("database_anonymization.title")}</h4>
|
||||
|
||||
<h5>Full Anonymization</h5>
|
||||
<h5>${t("database_anonymization.full_anonymization")}</h5>
|
||||
|
||||
<p>This action will create a new copy of the database and anonymize it (remove all note content and leave only structure and some non-sensitive metadata)
|
||||
for sharing online for debugging purposes without fear of leaking your personal data.</p>
|
||||
<p>${t("database_anonymization.full_anonymization_description")}</p>
|
||||
|
||||
<button class="anonymize-full-button btn">Save fully anonymized database</button>
|
||||
<button class="anonymize-full-button btn">${t("database_anonymization.save_fully_anonymized_database")}</button>
|
||||
|
||||
<h5>Light Anonymization</h5>
|
||||
<h5>${t("database_anonymization.light_anonymization")}</h5>
|
||||
|
||||
<p>This action will create a new copy of the database and do a light anonymization on it — specifically only content of all notes will be removed, but titles and attributes will remain. Additionally, custom JS frontend/backend script notes and custom widgets will remain. This provides more context to debug the issues.</p>
|
||||
<p>${t("database_anonymization.light_anonymization_description")}</p>
|
||||
|
||||
<p>You can decide yourself if you want to provide a fully or lightly anonymized database. Even fully anonymized DB is very useful, however in some cases lightly anonymized database can speed up the process of bug identification and fixing.</p>
|
||||
<p>${t("database_anonymization.choose_anonymization")}</p>
|
||||
|
||||
<button class="anonymize-light-button btn">Save lightly anonymized database</button>
|
||||
<button class="anonymize-light-button btn">${t("database_anonymization.save_lightly_anonymized_database")}</button>
|
||||
|
||||
<h5>Existing anonymized databases</h5>
|
||||
<h5>${t("database_anonymization.existing_anonymized_databases")}</h5>
|
||||
|
||||
<ul class="existing-anonymized-databases"></ul>
|
||||
</div>`;
|
||||
@ -32,30 +32,30 @@ export default class DatabaseAnonymizationOptions extends OptionsWidget {
|
||||
this.$anonymizeFullButton = this.$widget.find(".anonymize-full-button");
|
||||
this.$anonymizeLightButton = this.$widget.find(".anonymize-light-button");
|
||||
this.$anonymizeFullButton.on('click', async () => {
|
||||
toastService.showMessage("Creating fully anonymized database...");
|
||||
toastService.showMessage(t("database_anonymization.creating_fully_anonymized_database"));
|
||||
|
||||
const resp = await server.post('database/anonymize/full');
|
||||
|
||||
if (!resp.success) {
|
||||
toastService.showError("Could not create anonymized database, check backend logs for details");
|
||||
toastService.showError(t("database_anonymization.error_creating_anonymized_database"));
|
||||
}
|
||||
else {
|
||||
toastService.showMessage(`Created fully anonymized database in ${resp.anonymizedFilePath}`, 10000);
|
||||
toastService.showMessage(t("database_anonymization.successfully_created_fully_anonymized_database", { anonymizedFilePath: resp.anonymizedFilePath }), 10000);
|
||||
}
|
||||
|
||||
this.refresh();
|
||||
});
|
||||
|
||||
this.$anonymizeLightButton.on('click', async () => {
|
||||
toastService.showMessage("Creating lightly anonymized database...");
|
||||
toastService.showMessage(t("database_anonymization.creating_lightly_anonymized_database"));
|
||||
|
||||
const resp = await server.post('database/anonymize/light');
|
||||
|
||||
if (!resp.success) {
|
||||
toastService.showError("Could not create anonymized database, check backend logs for details");
|
||||
toastService.showError(t("database_anonymization.error_creating_anonymized_database"));
|
||||
}
|
||||
else {
|
||||
toastService.showMessage(`Created lightly anonymized database in ${resp.anonymizedFilePath}`, 10000);
|
||||
toastService.showMessage(t("database_anonymization.successfully_created_lightly_anonymized_database", { anonymizedFilePath: resp.anonymizedFilePath }), 10000);
|
||||
}
|
||||
|
||||
this.refresh();
|
||||
@ -69,7 +69,7 @@ export default class DatabaseAnonymizationOptions extends OptionsWidget {
|
||||
this.$existingAnonymizedDatabases.empty();
|
||||
|
||||
if (!anonymizedDatabases.length) {
|
||||
anonymizedDatabases = [{filePath: "no anonymized database yet"}];
|
||||
anonymizedDatabases = [{filePath: t("database_anonymization.no_anonymized_database_yet")}];
|
||||
}
|
||||
|
||||
for (const {filePath} of anonymizedDatabases) {
|
||||
|
@ -1,14 +1,15 @@
|
||||
import OptionsWidget from "../options_widget.js";
|
||||
import toastService from "../../../../services/toast.js";
|
||||
import server from "../../../../services/server.js";
|
||||
import { t } from "../../../../services/i18n.js";
|
||||
|
||||
const TPL = `
|
||||
<div class="options-section">
|
||||
<h4>Database Integrity Check</h4>
|
||||
<h4>${t("database_integrity_check.title")}</h4>
|
||||
|
||||
<p>This will check that the database is not corrupted on the SQLite level. It might take some time, depending on the DB size.</p>
|
||||
<p>${t("database_integrity_check.description")}</p>
|
||||
|
||||
<button class="check-integrity-button btn">Check database integrity</button>
|
||||
<button class="check-integrity-button btn">${t("database_integrity_check.check_button")}</button>
|
||||
</div>`;
|
||||
|
||||
export default class DatabaseIntegrityCheckOptions extends OptionsWidget {
|
||||
@ -16,15 +17,15 @@ export default class DatabaseIntegrityCheckOptions extends OptionsWidget {
|
||||
this.$widget = $(TPL);
|
||||
this.$checkIntegrityButton = this.$widget.find(".check-integrity-button");
|
||||
this.$checkIntegrityButton.on('click', async () => {
|
||||
toastService.showMessage("Checking database integrity...");
|
||||
toastService.showMessage(t("database_integrity_check.checking_integrity"));
|
||||
|
||||
const {results} = await server.get('database/check-integrity');
|
||||
|
||||
if (results.length === 1 && results[0].integrity_check === "ok") {
|
||||
toastService.showMessage("Integrity check succeeded - no problems found.");
|
||||
toastService.showMessage(t("database_integrity_check.integrity_check_succeeded"));
|
||||
}
|
||||
else {
|
||||
toastService.showMessage(`Integrity check failed: ${JSON.stringify(results, null, 2)}`, 15000);
|
||||
toastService.showMessage(t("database_integrity_check.integrity_check_failed", { results: JSON.stringify(results, null, 2) }), 15000);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,13 +1,14 @@
|
||||
import OptionsWidget from "../options_widget.js";
|
||||
import server from "../../../../services/server.js";
|
||||
import toastService from "../../../../services/toast.js";
|
||||
import { t } from "../../../../services/i18n.js";
|
||||
|
||||
const TPL = `
|
||||
<div class="options-section">
|
||||
<h4>Sync</h4>
|
||||
<button class="force-full-sync-button btn">Force full sync</button>
|
||||
<h4>${t("sync.title")}</h4>
|
||||
<button class="force-full-sync-button btn">${t("sync.force_full_sync_button")}</button>
|
||||
|
||||
<button class="fill-entity-changes-button btn">Fill entity changes records</button>
|
||||
<button class="fill-entity-changes-button btn">${t("sync.fill_entity_changes_button")}</button>
|
||||
</div>`;
|
||||
|
||||
export default class AdvancedSyncOptions extends OptionsWidget {
|
||||
@ -18,15 +19,15 @@ export default class AdvancedSyncOptions extends OptionsWidget {
|
||||
this.$forceFullSyncButton.on('click', async () => {
|
||||
await server.post('sync/force-full-sync');
|
||||
|
||||
toastService.showMessage("Full sync triggered");
|
||||
toastService.showMessage(t("sync.full_sync_triggered"));
|
||||
});
|
||||
|
||||
this.$fillEntityChangesButton.on('click', async () => {
|
||||
toastService.showMessage("Filling entity changes rows...");
|
||||
toastService.showMessage(t("sync.filling_entity_changes"));
|
||||
|
||||
await server.post('sync/fill-entity-changes');
|
||||
|
||||
toastService.showMessage("Sync rows filled successfully");
|
||||
toastService.showMessage(t("sync.sync_rows_filled_successfully"));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1,14 +1,15 @@
|
||||
import OptionsWidget from "../options_widget.js";
|
||||
import toastService from "../../../../services/toast.js";
|
||||
import server from "../../../../services/server.js";
|
||||
import { t } from "../../../../services/i18n.js";
|
||||
|
||||
const TPL = `
|
||||
<div class="options-section">
|
||||
<h4>Vacuum Database</h4>
|
||||
<h4>${t("vacuum_database.title")}</h4>
|
||||
|
||||
<p>This will rebuild the database which will typically result in a smaller database file. No data will be actually changed.</p>
|
||||
<p>${t("vacuum_database.description")}</p>
|
||||
|
||||
<button class="vacuum-database-button btn">Vacuum database</button>
|
||||
<button class="vacuum-database-button btn">${t("vacuum_database.button_text")}</button>
|
||||
</div>`;
|
||||
|
||||
export default class VacuumDatabaseOptions extends OptionsWidget {
|
||||
@ -16,11 +17,11 @@ export default class VacuumDatabaseOptions extends OptionsWidget {
|
||||
this.$widget = $(TPL);
|
||||
this.$vacuumDatabaseButton = this.$widget.find(".vacuum-database-button");
|
||||
this.$vacuumDatabaseButton.on('click', async () => {
|
||||
toastService.showMessage("Vacuuming database...");
|
||||
toastService.showMessage(t("vacuum_database.vacuuming_database"));
|
||||
|
||||
await server.post('database/vacuum-database');
|
||||
|
||||
toastService.showMessage("Database has been vacuumed");
|
||||
toastService.showMessage(t("vacuum_database.database_vacuumed"));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -926,5 +926,54 @@
|
||||
"create_label": "首先,请创建一个带有您要嵌入的 URL 地址的标签,例如 #webViewSrc=\"https://www.bing.com\"",
|
||||
"disclaimer": "实验性功能免责声明",
|
||||
"experimental_note": "网页视图是一种实验性的笔记类型,将来可能会被移除或大幅更改。网页视图只在桌面端有效。"
|
||||
},
|
||||
"backend_log": {
|
||||
"refresh": "刷新"
|
||||
},
|
||||
"consistency_checks": {
|
||||
"title": "检查一致性",
|
||||
"find_and_fix_button": "查找并修复一致性问题",
|
||||
"finding_and_fixing_message": "正在查找并修复一致性问题...",
|
||||
"issues_fixed_message": "一致性问题应该已被修复。"
|
||||
},
|
||||
"database_anonymization": {
|
||||
"title": "数据库匿名化",
|
||||
"full_anonymization": "完全匿名化",
|
||||
"full_anonymization_description": "此操作将创建一个新的数据库副本并进行匿名化处理(删除所有笔记内容,仅保留结构和一些非敏感元数据),用来分享到网上做调试而不用担心泄漏你的个人资料。",
|
||||
"save_fully_anonymized_database": "保存完全匿名化的数据库",
|
||||
"light_anonymization": "轻度匿名化",
|
||||
"light_anonymization_description": "此操作将创建一个新的数据库副本,并对其进行轻度匿名化处理——仅删除所有笔记的内容,但保留标题和属性。此外,自定义JS前端/后端脚本笔记和自定义小部件将保留。这提供了更多上下文以调试问题。",
|
||||
"choose_anonymization": "您可以自行决定是提供完全匿名化还是轻度匿名化的数据库。即使是完全匿名化的数据库也非常有用,但在某些情况下,轻度匿名化的数据库可以加快错误识别和修复的过程。",
|
||||
"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数据库是否损坏。根据数据库的大小,可能会需要一些时间。",
|
||||
"check_button": "检查数据库完整性",
|
||||
"checking_integrity": "正在检查数据库完整性...",
|
||||
"integrity_check_succeeded": "完整性检查成功 - 未发现问题。",
|
||||
"integrity_check_failed": "完整性检查失败: {{results}}"
|
||||
},
|
||||
"sync": {
|
||||
"title": "同步",
|
||||
"force_full_sync_button": "强制全量同步",
|
||||
"fill_entity_changes_button": "填充实体变更记录",
|
||||
"full_sync_triggered": "全量同步已触发",
|
||||
"filling_entity_changes": "正在填充实体变更行...",
|
||||
"sync_rows_filled_successfully": "同步行填充成功"
|
||||
},
|
||||
"vacuum_database": {
|
||||
"title": "数据库清理",
|
||||
"description": "这会重建数据库,通常会减少占用空间,不会删除数据。",
|
||||
"button_text": "清理数据库",
|
||||
"vacuuming_database": "正在清理数据库...",
|
||||
"database_vacuumed": "数据库已清理"
|
||||
}
|
||||
}
|
||||
|
@ -927,5 +927,54 @@
|
||||
"create_label": "To start, please create a label with a URL address you want to embed, e.g. #webViewSrc=\"https://www.google.com\"",
|
||||
"disclaimer": "Disclaimer on the experimental status",
|
||||
"experimental_note": "Web View is an experimental note type, and it might be removed or substantially changed in the future. Web View works also only in the desktop build."
|
||||
},
|
||||
"backend_log": {
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"consistency_checks": {
|
||||
"title": "Consistency Checks",
|
||||
"find_and_fix_button": "Find and fix consistency issues",
|
||||
"finding_and_fixing_message": "Finding and fixing consistency issues...",
|
||||
"issues_fixed_message": "Consistency issues should be fixed."
|
||||
},
|
||||
"database_anonymization": {
|
||||
"title": "Database Anonymization",
|
||||
"full_anonymization": "Full Anonymization",
|
||||
"full_anonymization_description": "This action will create a new copy of the database and anonymize it (remove all note content and leave only structure and some non-sensitive metadata) for sharing online for debugging purposes without fear of leaking your personal data.",
|
||||
"save_fully_anonymized_database": "Save fully anonymized database",
|
||||
"light_anonymization": "Light Anonymization",
|
||||
"light_anonymization_description": "This action will create a new copy of the database and do a light anonymization on it — specifically only content of all notes will be removed, but titles and attributes will remain. Additionally, custom JS frontend/backend script notes and custom widgets will remain. This provides more context to debug the issues.",
|
||||
"choose_anonymization": "You can decide yourself if you want to provide a fully or lightly anonymized database. Even fully anonymized DB is very useful, however in some cases lightly anonymized database can speed up the process of bug identification and fixing.",
|
||||
"save_lightly_anonymized_database": "Save lightly anonymized database",
|
||||
"existing_anonymized_databases": "Existing anonymized databases",
|
||||
"creating_fully_anonymized_database": "Creating fully anonymized database...",
|
||||
"creating_lightly_anonymized_database": "Creating lightly anonymized database...",
|
||||
"error_creating_anonymized_database": "Could not create anonymized database, check backend logs for details",
|
||||
"successfully_created_fully_anonymized_database": "Created fully anonymized database in {{anonymizedFilePath}}",
|
||||
"successfully_created_lightly_anonymized_database": "Created lightly anonymized database in {{anonymizedFilePath}}",
|
||||
"no_anonymized_database_yet": "no anonymized database yet"
|
||||
},
|
||||
"database_integrity_check": {
|
||||
"title": "Database Integrity Check",
|
||||
"description": "This will check that the database is not corrupted on the SQLite level. It might take some time, depending on the DB size.",
|
||||
"check_button": "Check database integrity",
|
||||
"checking_integrity": "Checking database integrity...",
|
||||
"integrity_check_succeeded": "Integrity check succeeded - no problems found.",
|
||||
"integrity_check_failed": "Integrity check failed: {{results}}"
|
||||
},
|
||||
"sync": {
|
||||
"title": "Sync",
|
||||
"force_full_sync_button": "Force full sync",
|
||||
"fill_entity_changes_button": "Fill entity changes records",
|
||||
"full_sync_triggered": "Full sync triggered",
|
||||
"filling_entity_changes": "Filling entity changes rows...",
|
||||
"sync_rows_filled_successfully": "Sync rows filled successfully"
|
||||
},
|
||||
"vacuum_database": {
|
||||
"title": "Vacuum Database",
|
||||
"description": "This will rebuild the database which will typically result in a smaller database file. No data will be actually changed.",
|
||||
"button_text": "Vacuum database",
|
||||
"vacuuming_database": "Vacuuming database...",
|
||||
"database_vacuumed": "Database has been vacuumed"
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user